@naylence/runtime 0.3.5-test.3 → 0.3.5-test.4
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/dist/browser/index.cjs +6219 -0
- package/dist/browser/index.cjs.map +1 -0
- package/dist/browser/index.mjs +6082 -0
- package/dist/browser/index.mjs.map +1 -0
- package/dist/cjs/browser.js +1 -72
- package/dist/cjs/browser.js.map +1 -1
- package/dist/cjs/index.js +1 -66
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/naylence/fame/fabric/in-process-fame-fabric.js +23 -0
- package/dist/cjs/naylence/fame/fabric/in-process-fame-fabric.js.map +1 -1
- package/dist/cjs/naylence/fame/node/node-context-stack.js +2 -1
- package/dist/cjs/naylence/fame/node/node-context-stack.js.map +1 -1
- package/dist/cjs/naylence/fame/util/register-runtime-factories.js +145 -8
- package/dist/cjs/naylence/fame/util/register-runtime-factories.js.map +1 -1
- package/dist/cjs/node.js +42 -0
- package/dist/cjs/node.js.map +1 -0
- package/dist/cjs/runtime-isomorphic.js +95 -0
- package/dist/cjs/runtime-isomorphic.js.map +1 -0
- package/dist/esm/browser.js +1 -48
- package/dist/esm/browser.js.map +1 -1
- package/dist/esm/index.js +1 -42
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/naylence/fame/fabric/in-process-fame-fabric.js +23 -0
- package/dist/esm/naylence/fame/fabric/in-process-fame-fabric.js.map +1 -1
- package/dist/esm/naylence/fame/node/node-context-stack.js +2 -1
- package/dist/esm/naylence/fame/node/node-context-stack.js.map +1 -1
- package/dist/esm/naylence/fame/util/register-runtime-factories.js +145 -8
- package/dist/esm/naylence/fame/util/register-runtime-factories.js.map +1 -1
- package/dist/esm/node.js +20 -0
- package/dist/esm/node.js.map +1 -0
- package/dist/esm/runtime-isomorphic.js +68 -0
- package/dist/esm/runtime-isomorphic.js.map +1 -0
- package/dist/node/index.cjs +6219 -0
- package/dist/node/index.cjs.map +1 -0
- package/dist/node/index.mjs +6082 -0
- package/dist/node/index.mjs.map +1 -0
- package/dist/node/node.cjs +30351 -0
- package/dist/node/node.cjs.map +1 -0
- package/dist/node/node.mjs +30030 -0
- package/dist/node/node.mjs.map +1 -0
- package/dist/types/browser.d.ts +1 -25
- package/dist/types/browser.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -26
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/naylence/fame/fabric/in-process-fame-fabric.d.ts +3 -0
- package/dist/types/naylence/fame/fabric/in-process-fame-fabric.d.ts.map +1 -1
- package/dist/types/naylence/fame/node/node-context-stack.d.ts.map +1 -1
- package/dist/types/naylence/fame/util/register-runtime-factories.d.ts.map +1 -1
- package/dist/types/node.d.ts +20 -0
- package/dist/types/node.d.ts.map +1 -0
- package/dist/types/runtime-isomorphic.d.ts +28 -0
- package/dist/types/runtime-isomorphic.d.ts.map +1 -0
- package/package.json +21 -8
- package/dist/browser/index.js +0 -13979
- package/dist/browser/index.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../node_modules/zod/v4/core/core.js","../../node_modules/zod/v4/core/util.js","../../node_modules/zod/v4/core/errors.js","../../node_modules/zod/v4/core/parse.js","../../node_modules/zod/v4/core/regexes.js","../../node_modules/zod/v4/core/checks.js","../../node_modules/zod/v4/core/doc.js","../../node_modules/zod/v4/core/versions.js","../../node_modules/zod/v4/core/schemas.js","../../node_modules/zod/v4/core/registries.js","../../node_modules/zod/v4/core/api.js","../../node_modules/zod/v4/classic/iso.js","../../node_modules/zod/v4/classic/errors.js","../../node_modules/zod/v4/classic/parse.js","../../node_modules/zod/v4/classic/schemas.js","../../node_modules/zod/v4/classic/compat.js","../../node_modules/@naylence/core/dist/esm/naylence/fame/core/address/address.js","../../node_modules/@naylence/core/dist/esm/naylence/fame/core/util/constants.js","../../node_modules/@naylence/core/dist/esm/naylence/fame/core/util/id-generator.shared.js","../../node_modules/@naylence/core/dist/esm/naylence/fame/core/util/id-generator.browser.js","../../node_modules/@naylence/core/dist/esm/naylence/fame/core/util/case-conversion.js","../../node_modules/@naylence/factory/dist/esm/factory.js","../../node_modules/@naylence/factory/dist/esm/extension-manager.js","../../node_modules/@naylence/factory/dist/esm/expression-policy.js","../../node_modules/@naylence/factory/dist/esm/expression-evaluator.js","../../node_modules/@naylence/factory/dist/esm/resource-config.js","../../node_modules/@naylence/factory/dist/esm/factory-registry.js","../../node_modules/@naylence/factory/dist/esm/plugins.js","../../node_modules/@naylence/factory/dist/esm/manifest.js","../../node_modules/@naylence/core/dist/esm/naylence/fame/core/plugins/bootstrap.js","../../node_modules/@naylence/core/dist/esm/naylence/fame/core/fame-config.js","../../node_modules/@naylence/core/dist/esm/naylence/fame/core/default-fame-config-resolver.js","../../node_modules/@naylence/core/dist/esm/naylence/fame/core/fame-fabric-config.js","../../node_modules/@naylence/core/dist/esm/naylence/fame/core/fame-fabric-factory.js","../../node_modules/@naylence/core/dist/esm/naylence/fame/core/protocol/flow.js","../../node_modules/@naylence/core/dist/esm/naylence/fame/core/protocol/origin-type.js","../../node_modules/@naylence/core/dist/esm/naylence/fame/core/protocol/security-settings.js","../../node_modules/@naylence/core/dist/esm/naylence/fame/core/protocol/frames.js","../../node_modules/@naylence/core/dist/esm/naylence/fame/core/protocol/response-type.js","../../node_modules/@naylence/core/dist/esm/naylence/fame/core/protocol/security-header.js","../../node_modules/@naylence/core/dist/esm/naylence/fame/core/protocol/envelope.js","../../node_modules/@naylence/core/dist/esm/naylence/fame/core/fame-fabric.js","../../node_modules/@naylence/core/dist/esm/naylence/fame/core/protocol/delivery-context.js","../../node_modules/@naylence/core/dist/esm/naylence/fame/core/protocol/channel-message.js","../../node_modules/@naylence/core/dist/esm/naylence/fame/core/handlers/handlers.js","../../node_modules/@naylence/core/dist/esm/naylence/fame/core/service/capabilities.js","../../node_modules/@naylence/core/dist/esm/naylence/fame/core/service/subscription.js","../../node_modules/@naylence/core/dist/esm/naylence/fame/core/service/fame-service.js","../../node_modules/@naylence/core/dist/esm/naylence/fame/core/rpc/types.js","../../node_modules/@naylence/core/dist/esm/naylence/fame/core/rpc/jsonrpc.js","../../node_modules/@naylence/core/dist/esm/naylence/fame/core/channel/channel.js","../../node_modules/@naylence/core/dist/esm/naylence/fame/core/channel/binding.js","../../node_modules/@naylence/core/dist/esm/naylence/fame/core/connector/connector-state.js","../../node_modules/@naylence/core/dist/esm/naylence/fame/core/connector/connector.js","../esm/naylence/fame/errors/errors.js","../esm/naylence/fame/util/logging-types.js","../esm/naylence/fame/util/envelope-context.js","../esm/naylence/fame/util/logging.js","../esm/naylence/fame/util/task-types.js","../esm/naylence/fame/util/task-spawner.js","../esm/naylence/fame/util/lock.js","../esm/naylence/fame/util/task-utils.js","../esm/naylence/fame/util/formatter.js","../esm/naylence/fame/util/metrics-emitter.js","../../node_modules/@noble/hashes/utils.js","../../node_modules/@noble/hashes/_md.js","../../node_modules/@noble/hashes/sha2.js","../esm/naylence/fame/util/util.js","../esm/naylence/fame/util/logicals.js","../esm/naylence/fame/constants/ttl-constants.js","../esm/naylence/fame/util/ttl-validation.js","../esm/naylence/fame/channel/flow-controller.js","../esm/naylence/fame/channel/in-memory/in-memory-channel.js","../esm/naylence/fame/channel/in-memory/in-memory-binding.js","../esm/naylence/fame/channel/in-memory/in-memory-fanout-broker.js","../esm/naylence/fame/storage/in-memory-storage.js","../esm/naylence/fame/storage/storage-provider-factory.js","../esm/naylence/fame/security/credential/browser-auto-key-credential-provider.js","../esm/naylence/fame/storage/encrypted-storage-provider-base.js","../esm/naylence/fame/storage/indexeddb-key-value-store.js","../esm/naylence/fame/storage/indexeddb-storage-provider.js","../esm/naylence/fame/node/node-context-stack.js","../esm/naylence/fame/connector/noop-flow-controller.js","../esm/naylence/fame/connector/base-async-connector.js","../esm/naylence/fame/connector/connector-config.js","../esm/naylence/fame/connector/connector-factory.js","../esm/naylence/fame/connector/websocket-connector.js","../esm/naylence/fame/service/rpc.js","../esm/naylence/fame/factory-manifest.js","../esm/naylence/fame/util/register-runtime-factories.js","../esm/naylence/fame/security/crypto/crypto-dependencies.js","../esm/naylence/fame/security/credential/browser-wrapped-key-credential-provider.js","../esm/browser.js","../esm/plugin.js","../esm/naylence/fame/grants/grant.js","../esm/naylence/fame/grants/connection-grant.js","../esm/naylence/fame/grants/websocket-connection-grant.js","../esm/naylence/fame/transport/transport-provisioner.js","../esm/naylence/fame/transport/websocket-transport-provisioner.js"],"sourcesContent":["/** A special constant with type `never` */\nexport const NEVER = Object.freeze({\n status: \"aborted\",\n});\nexport /*@__NO_SIDE_EFFECTS__*/ function $constructor(name, initializer, params) {\n function init(inst, def) {\n var _a;\n Object.defineProperty(inst, \"_zod\", {\n value: inst._zod ?? {},\n enumerable: false,\n });\n (_a = inst._zod).traits ?? (_a.traits = new Set());\n inst._zod.traits.add(name);\n initializer(inst, def);\n // support prototype modifications\n for (const k in _.prototype) {\n if (!(k in inst))\n Object.defineProperty(inst, k, { value: _.prototype[k].bind(inst) });\n }\n inst._zod.constr = _;\n inst._zod.def = def;\n }\n // doesn't work if Parent has a constructor with arguments\n const Parent = params?.Parent ?? Object;\n class Definition extends Parent {\n }\n Object.defineProperty(Definition, \"name\", { value: name });\n function _(def) {\n var _a;\n const inst = params?.Parent ? new Definition() : this;\n init(inst, def);\n (_a = inst._zod).deferred ?? (_a.deferred = []);\n for (const fn of inst._zod.deferred) {\n fn();\n }\n return inst;\n }\n Object.defineProperty(_, \"init\", { value: init });\n Object.defineProperty(_, Symbol.hasInstance, {\n value: (inst) => {\n if (params?.Parent && inst instanceof params.Parent)\n return true;\n return inst?._zod?.traits?.has(name);\n },\n });\n Object.defineProperty(_, \"name\", { value: name });\n return _;\n}\n////////////////////////////// UTILITIES ///////////////////////////////////////\nexport const $brand = Symbol(\"zod_brand\");\nexport class $ZodAsyncError extends Error {\n constructor() {\n super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`);\n }\n}\nexport class $ZodEncodeError extends Error {\n constructor(name) {\n super(`Encountered unidirectional transform during encode: ${name}`);\n this.name = \"ZodEncodeError\";\n }\n}\nexport const globalConfig = {};\nexport function config(newConfig) {\n if (newConfig)\n Object.assign(globalConfig, newConfig);\n return globalConfig;\n}\n","// functions\nexport function assertEqual(val) {\n return val;\n}\nexport function assertNotEqual(val) {\n return val;\n}\nexport function assertIs(_arg) { }\nexport function assertNever(_x) {\n throw new Error();\n}\nexport function assert(_) { }\nexport function getEnumValues(entries) {\n const numericValues = Object.values(entries).filter((v) => typeof v === \"number\");\n const values = Object.entries(entries)\n .filter(([k, _]) => numericValues.indexOf(+k) === -1)\n .map(([_, v]) => v);\n return values;\n}\nexport function joinValues(array, separator = \"|\") {\n return array.map((val) => stringifyPrimitive(val)).join(separator);\n}\nexport function jsonStringifyReplacer(_, value) {\n if (typeof value === \"bigint\")\n return value.toString();\n return value;\n}\nexport function cached(getter) {\n const set = false;\n return {\n get value() {\n if (!set) {\n const value = getter();\n Object.defineProperty(this, \"value\", { value });\n return value;\n }\n throw new Error(\"cached value already set\");\n },\n };\n}\nexport function nullish(input) {\n return input === null || input === undefined;\n}\nexport function cleanRegex(source) {\n const start = source.startsWith(\"^\") ? 1 : 0;\n const end = source.endsWith(\"$\") ? source.length - 1 : source.length;\n return source.slice(start, end);\n}\nexport function floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepString = step.toString();\n let stepDecCount = (stepString.split(\".\")[1] || \"\").length;\n if (stepDecCount === 0 && /\\d?e-\\d?/.test(stepString)) {\n const match = stepString.match(/\\d?e-(\\d?)/);\n if (match?.[1]) {\n stepDecCount = Number.parseInt(match[1]);\n }\n }\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = Number.parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = Number.parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / 10 ** decCount;\n}\nconst EVALUATING = Symbol(\"evaluating\");\nexport function defineLazy(object, key, getter) {\n let value = undefined;\n Object.defineProperty(object, key, {\n get() {\n if (value === EVALUATING) {\n // Circular reference detected, return undefined to break the cycle\n return undefined;\n }\n if (value === undefined) {\n value = EVALUATING;\n value = getter();\n }\n return value;\n },\n set(v) {\n Object.defineProperty(object, key, {\n value: v,\n // configurable: true,\n });\n // object[key] = v;\n },\n configurable: true,\n });\n}\nexport function objectClone(obj) {\n return Object.create(Object.getPrototypeOf(obj), Object.getOwnPropertyDescriptors(obj));\n}\nexport function assignProp(target, prop, value) {\n Object.defineProperty(target, prop, {\n value,\n writable: true,\n enumerable: true,\n configurable: true,\n });\n}\nexport function mergeDefs(...defs) {\n const mergedDescriptors = {};\n for (const def of defs) {\n const descriptors = Object.getOwnPropertyDescriptors(def);\n Object.assign(mergedDescriptors, descriptors);\n }\n return Object.defineProperties({}, mergedDescriptors);\n}\nexport function cloneDef(schema) {\n return mergeDefs(schema._zod.def);\n}\nexport function getElementAtPath(obj, path) {\n if (!path)\n return obj;\n return path.reduce((acc, key) => acc?.[key], obj);\n}\nexport function promiseAllObject(promisesObj) {\n const keys = Object.keys(promisesObj);\n const promises = keys.map((key) => promisesObj[key]);\n return Promise.all(promises).then((results) => {\n const resolvedObj = {};\n for (let i = 0; i < keys.length; i++) {\n resolvedObj[keys[i]] = results[i];\n }\n return resolvedObj;\n });\n}\nexport function randomString(length = 10) {\n const chars = \"abcdefghijklmnopqrstuvwxyz\";\n let str = \"\";\n for (let i = 0; i < length; i++) {\n str += chars[Math.floor(Math.random() * chars.length)];\n }\n return str;\n}\nexport function esc(str) {\n return JSON.stringify(str);\n}\nexport const captureStackTrace = (\"captureStackTrace\" in Error ? Error.captureStackTrace : (..._args) => { });\nexport function isObject(data) {\n return typeof data === \"object\" && data !== null && !Array.isArray(data);\n}\nexport const allowsEval = cached(() => {\n // @ts-ignore\n if (typeof navigator !== \"undefined\" && navigator?.userAgent?.includes(\"Cloudflare\")) {\n return false;\n }\n try {\n const F = Function;\n new F(\"\");\n return true;\n }\n catch (_) {\n return false;\n }\n});\nexport function isPlainObject(o) {\n if (isObject(o) === false)\n return false;\n // modified constructor\n const ctor = o.constructor;\n if (ctor === undefined)\n return true;\n // modified prototype\n const prot = ctor.prototype;\n if (isObject(prot) === false)\n return false;\n // ctor doesn't have static `isPrototypeOf`\n if (Object.prototype.hasOwnProperty.call(prot, \"isPrototypeOf\") === false) {\n return false;\n }\n return true;\n}\nexport function shallowClone(o) {\n if (isPlainObject(o))\n return { ...o };\n if (Array.isArray(o))\n return [...o];\n return o;\n}\nexport function numKeys(data) {\n let keyCount = 0;\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n keyCount++;\n }\n }\n return keyCount;\n}\nexport const getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return \"undefined\";\n case \"string\":\n return \"string\";\n case \"number\":\n return Number.isNaN(data) ? \"nan\" : \"number\";\n case \"boolean\":\n return \"boolean\";\n case \"function\":\n return \"function\";\n case \"bigint\":\n return \"bigint\";\n case \"symbol\":\n return \"symbol\";\n case \"object\":\n if (Array.isArray(data)) {\n return \"array\";\n }\n if (data === null) {\n return \"null\";\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return \"promise\";\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return \"map\";\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return \"set\";\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return \"date\";\n }\n // @ts-ignore\n if (typeof File !== \"undefined\" && data instanceof File) {\n return \"file\";\n }\n return \"object\";\n default:\n throw new Error(`Unknown data type: ${t}`);\n }\n};\nexport const propertyKeyTypes = new Set([\"string\", \"number\", \"symbol\"]);\nexport const primitiveTypes = new Set([\"string\", \"number\", \"bigint\", \"boolean\", \"symbol\", \"undefined\"]);\nexport function escapeRegex(str) {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n// zod-specific utils\nexport function clone(inst, def, params) {\n const cl = new inst._zod.constr(def ?? inst._zod.def);\n if (!def || params?.parent)\n cl._zod.parent = inst;\n return cl;\n}\nexport function normalizeParams(_params) {\n const params = _params;\n if (!params)\n return {};\n if (typeof params === \"string\")\n return { error: () => params };\n if (params?.message !== undefined) {\n if (params?.error !== undefined)\n throw new Error(\"Cannot specify both `message` and `error` params\");\n params.error = params.message;\n }\n delete params.message;\n if (typeof params.error === \"string\")\n return { ...params, error: () => params.error };\n return params;\n}\nexport function createTransparentProxy(getter) {\n let target;\n return new Proxy({}, {\n get(_, prop, receiver) {\n target ?? (target = getter());\n return Reflect.get(target, prop, receiver);\n },\n set(_, prop, value, receiver) {\n target ?? (target = getter());\n return Reflect.set(target, prop, value, receiver);\n },\n has(_, prop) {\n target ?? (target = getter());\n return Reflect.has(target, prop);\n },\n deleteProperty(_, prop) {\n target ?? (target = getter());\n return Reflect.deleteProperty(target, prop);\n },\n ownKeys(_) {\n target ?? (target = getter());\n return Reflect.ownKeys(target);\n },\n getOwnPropertyDescriptor(_, prop) {\n target ?? (target = getter());\n return Reflect.getOwnPropertyDescriptor(target, prop);\n },\n defineProperty(_, prop, descriptor) {\n target ?? (target = getter());\n return Reflect.defineProperty(target, prop, descriptor);\n },\n });\n}\nexport function stringifyPrimitive(value) {\n if (typeof value === \"bigint\")\n return value.toString() + \"n\";\n if (typeof value === \"string\")\n return `\"${value}\"`;\n return `${value}`;\n}\nexport function optionalKeys(shape) {\n return Object.keys(shape).filter((k) => {\n return shape[k]._zod.optin === \"optional\" && shape[k]._zod.optout === \"optional\";\n });\n}\nexport const NUMBER_FORMAT_RANGES = {\n safeint: [Number.MIN_SAFE_INTEGER, Number.MAX_SAFE_INTEGER],\n int32: [-2147483648, 2147483647],\n uint32: [0, 4294967295],\n float32: [-3.4028234663852886e38, 3.4028234663852886e38],\n float64: [-Number.MAX_VALUE, Number.MAX_VALUE],\n};\nexport const BIGINT_FORMAT_RANGES = {\n int64: [/* @__PURE__*/ BigInt(\"-9223372036854775808\"), /* @__PURE__*/ BigInt(\"9223372036854775807\")],\n uint64: [/* @__PURE__*/ BigInt(0), /* @__PURE__*/ BigInt(\"18446744073709551615\")],\n};\nexport function pick(schema, mask) {\n const currDef = schema._zod.def;\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const newShape = {};\n for (const key in mask) {\n if (!(key in currDef.shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n newShape[key] = currDef.shape[key];\n }\n assignProp(this, \"shape\", newShape); // self-caching\n return newShape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nexport function omit(schema, mask) {\n const currDef = schema._zod.def;\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const newShape = { ...schema._zod.def.shape };\n for (const key in mask) {\n if (!(key in currDef.shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n delete newShape[key];\n }\n assignProp(this, \"shape\", newShape); // self-caching\n return newShape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nexport function extend(schema, shape) {\n if (!isPlainObject(shape)) {\n throw new Error(\"Invalid input to extend: expected a plain object\");\n }\n const checks = schema._zod.def.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n throw new Error(\"Object schemas containing refinements cannot be extended. Use `.safeExtend()` instead.\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const _shape = { ...schema._zod.def.shape, ...shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nexport function safeExtend(schema, shape) {\n if (!isPlainObject(shape)) {\n throw new Error(\"Invalid input to safeExtend: expected a plain object\");\n }\n const def = {\n ...schema._zod.def,\n get shape() {\n const _shape = { ...schema._zod.def.shape, ...shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n checks: schema._zod.def.checks,\n };\n return clone(schema, def);\n}\nexport function merge(a, b) {\n const def = mergeDefs(a._zod.def, {\n get shape() {\n const _shape = { ...a._zod.def.shape, ...b._zod.def.shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n get catchall() {\n return b._zod.def.catchall;\n },\n checks: [], // delete existing checks\n });\n return clone(a, def);\n}\nexport function partial(Class, schema, mask) {\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const oldShape = schema._zod.def.shape;\n const shape = { ...oldShape };\n if (mask) {\n for (const key in mask) {\n if (!(key in oldShape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n // if (oldShape[key]!._zod.optin === \"optional\") continue;\n shape[key] = Class\n ? new Class({\n type: \"optional\",\n innerType: oldShape[key],\n })\n : oldShape[key];\n }\n }\n else {\n for (const key in oldShape) {\n // if (oldShape[key]!._zod.optin === \"optional\") continue;\n shape[key] = Class\n ? new Class({\n type: \"optional\",\n innerType: oldShape[key],\n })\n : oldShape[key];\n }\n }\n assignProp(this, \"shape\", shape); // self-caching\n return shape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nexport function required(Class, schema, mask) {\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const oldShape = schema._zod.def.shape;\n const shape = { ...oldShape };\n if (mask) {\n for (const key in mask) {\n if (!(key in shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n // overwrite with non-optional\n shape[key] = new Class({\n type: \"nonoptional\",\n innerType: oldShape[key],\n });\n }\n }\n else {\n for (const key in oldShape) {\n // overwrite with non-optional\n shape[key] = new Class({\n type: \"nonoptional\",\n innerType: oldShape[key],\n });\n }\n }\n assignProp(this, \"shape\", shape); // self-caching\n return shape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\n// invalid_type | too_big | too_small | invalid_format | not_multiple_of | unrecognized_keys | invalid_union | invalid_key | invalid_element | invalid_value | custom\nexport function aborted(x, startIndex = 0) {\n if (x.aborted === true)\n return true;\n for (let i = startIndex; i < x.issues.length; i++) {\n if (x.issues[i]?.continue !== true) {\n return true;\n }\n }\n return false;\n}\nexport function prefixIssues(path, issues) {\n return issues.map((iss) => {\n var _a;\n (_a = iss).path ?? (_a.path = []);\n iss.path.unshift(path);\n return iss;\n });\n}\nexport function unwrapMessage(message) {\n return typeof message === \"string\" ? message : message?.message;\n}\nexport function finalizeIssue(iss, ctx, config) {\n const full = { ...iss, path: iss.path ?? [] };\n // for backwards compatibility\n if (!iss.message) {\n const message = unwrapMessage(iss.inst?._zod.def?.error?.(iss)) ??\n unwrapMessage(ctx?.error?.(iss)) ??\n unwrapMessage(config.customError?.(iss)) ??\n unwrapMessage(config.localeError?.(iss)) ??\n \"Invalid input\";\n full.message = message;\n }\n // delete (full as any).def;\n delete full.inst;\n delete full.continue;\n if (!ctx?.reportInput) {\n delete full.input;\n }\n return full;\n}\nexport function getSizableOrigin(input) {\n if (input instanceof Set)\n return \"set\";\n if (input instanceof Map)\n return \"map\";\n // @ts-ignore\n if (input instanceof File)\n return \"file\";\n return \"unknown\";\n}\nexport function getLengthableOrigin(input) {\n if (Array.isArray(input))\n return \"array\";\n if (typeof input === \"string\")\n return \"string\";\n return \"unknown\";\n}\nexport function issue(...args) {\n const [iss, input, inst] = args;\n if (typeof iss === \"string\") {\n return {\n message: iss,\n code: \"custom\",\n input,\n inst,\n };\n }\n return { ...iss };\n}\nexport function cleanEnum(obj) {\n return Object.entries(obj)\n .filter(([k, _]) => {\n // return true if NaN, meaning it's not a number, thus a string key\n return Number.isNaN(Number.parseInt(k, 10));\n })\n .map((el) => el[1]);\n}\n// Codec utility functions\nexport function base64ToUint8Array(base64) {\n const binaryString = atob(base64);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return bytes;\n}\nexport function uint8ArrayToBase64(bytes) {\n let binaryString = \"\";\n for (let i = 0; i < bytes.length; i++) {\n binaryString += String.fromCharCode(bytes[i]);\n }\n return btoa(binaryString);\n}\nexport function base64urlToUint8Array(base64url) {\n const base64 = base64url.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const padding = \"=\".repeat((4 - (base64.length % 4)) % 4);\n return base64ToUint8Array(base64 + padding);\n}\nexport function uint8ArrayToBase64url(bytes) {\n return uint8ArrayToBase64(bytes).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=/g, \"\");\n}\nexport function hexToUint8Array(hex) {\n const cleanHex = hex.replace(/^0x/, \"\");\n if (cleanHex.length % 2 !== 0) {\n throw new Error(\"Invalid hex string length\");\n }\n const bytes = new Uint8Array(cleanHex.length / 2);\n for (let i = 0; i < cleanHex.length; i += 2) {\n bytes[i / 2] = Number.parseInt(cleanHex.slice(i, i + 2), 16);\n }\n return bytes;\n}\nexport function uint8ArrayToHex(bytes) {\n return Array.from(bytes)\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\");\n}\n// instanceof\nexport class Class {\n constructor(..._args) { }\n}\n","import { $constructor } from \"./core.js\";\nimport * as util from \"./util.js\";\nconst initializer = (inst, def) => {\n inst.name = \"$ZodError\";\n Object.defineProperty(inst, \"_zod\", {\n value: inst._zod,\n enumerable: false,\n });\n Object.defineProperty(inst, \"issues\", {\n value: def,\n enumerable: false,\n });\n inst.message = JSON.stringify(def, util.jsonStringifyReplacer, 2);\n Object.defineProperty(inst, \"toString\", {\n value: () => inst.message,\n enumerable: false,\n });\n};\nexport const $ZodError = $constructor(\"$ZodError\", initializer);\nexport const $ZodRealError = $constructor(\"$ZodError\", initializer, { Parent: Error });\nexport function flattenError(error, mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of error.issues) {\n if (sub.path.length > 0) {\n fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || [];\n fieldErrors[sub.path[0]].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n}\nexport function formatError(error, mapper = (issue) => issue.message) {\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\" && issue.errors.length) {\n issue.errors.map((issues) => processError({ issues }));\n }\n else if (issue.code === \"invalid_key\") {\n processError({ issues: issue.issues });\n }\n else if (issue.code === \"invalid_element\") {\n processError({ issues: issue.issues });\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(error);\n return fieldErrors;\n}\nexport function treeifyError(error, mapper = (issue) => issue.message) {\n const result = { errors: [] };\n const processError = (error, path = []) => {\n var _a, _b;\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\" && issue.errors.length) {\n // regular union error\n issue.errors.map((issues) => processError({ issues }, issue.path));\n }\n else if (issue.code === \"invalid_key\") {\n processError({ issues: issue.issues }, issue.path);\n }\n else if (issue.code === \"invalid_element\") {\n processError({ issues: issue.issues }, issue.path);\n }\n else {\n const fullpath = [...path, ...issue.path];\n if (fullpath.length === 0) {\n result.errors.push(mapper(issue));\n continue;\n }\n let curr = result;\n let i = 0;\n while (i < fullpath.length) {\n const el = fullpath[i];\n const terminal = i === fullpath.length - 1;\n if (typeof el === \"string\") {\n curr.properties ?? (curr.properties = {});\n (_a = curr.properties)[el] ?? (_a[el] = { errors: [] });\n curr = curr.properties[el];\n }\n else {\n curr.items ?? (curr.items = []);\n (_b = curr.items)[el] ?? (_b[el] = { errors: [] });\n curr = curr.items[el];\n }\n if (terminal) {\n curr.errors.push(mapper(issue));\n }\n i++;\n }\n }\n }\n };\n processError(error);\n return result;\n}\n/** Format a ZodError as a human-readable string in the following form.\n *\n * From\n *\n * ```ts\n * ZodError {\n * issues: [\n * {\n * expected: 'string',\n * code: 'invalid_type',\n * path: [ 'username' ],\n * message: 'Invalid input: expected string'\n * },\n * {\n * expected: 'number',\n * code: 'invalid_type',\n * path: [ 'favoriteNumbers', 1 ],\n * message: 'Invalid input: expected number'\n * }\n * ];\n * }\n * ```\n *\n * to\n *\n * ```\n * username\n * ✖ Expected number, received string at \"username\n * favoriteNumbers[0]\n * ✖ Invalid input: expected number\n * ```\n */\nexport function toDotPath(_path) {\n const segs = [];\n const path = _path.map((seg) => (typeof seg === \"object\" ? seg.key : seg));\n for (const seg of path) {\n if (typeof seg === \"number\")\n segs.push(`[${seg}]`);\n else if (typeof seg === \"symbol\")\n segs.push(`[${JSON.stringify(String(seg))}]`);\n else if (/[^\\w$]/.test(seg))\n segs.push(`[${JSON.stringify(seg)}]`);\n else {\n if (segs.length)\n segs.push(\".\");\n segs.push(seg);\n }\n }\n return segs.join(\"\");\n}\nexport function prettifyError(error) {\n const lines = [];\n // sort by path length\n const issues = [...error.issues].sort((a, b) => (a.path ?? []).length - (b.path ?? []).length);\n // Process each issue\n for (const issue of issues) {\n lines.push(`✖ ${issue.message}`);\n if (issue.path?.length)\n lines.push(` → at ${toDotPath(issue.path)}`);\n }\n // Convert Map to formatted string\n return lines.join(\"\\n\");\n}\n","import * as core from \"./core.js\";\nimport * as errors from \"./errors.js\";\nimport * as util from \"./util.js\";\nexport const _parse = (_Err) => (schema, value, _ctx, _params) => {\n const ctx = _ctx ? Object.assign(_ctx, { async: false }) : { async: false };\n const result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise) {\n throw new core.$ZodAsyncError();\n }\n if (result.issues.length) {\n const e = new (_params?.Err ?? _Err)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())));\n util.captureStackTrace(e, _params?.callee);\n throw e;\n }\n return result.value;\n};\nexport const parse = /* @__PURE__*/ _parse(errors.$ZodRealError);\nexport const _parseAsync = (_Err) => async (schema, value, _ctx, params) => {\n const ctx = _ctx ? Object.assign(_ctx, { async: true }) : { async: true };\n let result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise)\n result = await result;\n if (result.issues.length) {\n const e = new (params?.Err ?? _Err)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())));\n util.captureStackTrace(e, params?.callee);\n throw e;\n }\n return result.value;\n};\nexport const parseAsync = /* @__PURE__*/ _parseAsync(errors.$ZodRealError);\nexport const _safeParse = (_Err) => (schema, value, _ctx) => {\n const ctx = _ctx ? { ..._ctx, async: false } : { async: false };\n const result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise) {\n throw new core.$ZodAsyncError();\n }\n return result.issues.length\n ? {\n success: false,\n error: new (_Err ?? errors.$ZodError)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n }\n : { success: true, data: result.value };\n};\nexport const safeParse = /* @__PURE__*/ _safeParse(errors.$ZodRealError);\nexport const _safeParseAsync = (_Err) => async (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { async: true }) : { async: true };\n let result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise)\n result = await result;\n return result.issues.length\n ? {\n success: false,\n error: new _Err(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n }\n : { success: true, data: result.value };\n};\nexport const safeParseAsync = /* @__PURE__*/ _safeParseAsync(errors.$ZodRealError);\nexport const _encode = (_Err) => (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { direction: \"backward\" }) : { direction: \"backward\" };\n return _parse(_Err)(schema, value, ctx);\n};\nexport const encode = /* @__PURE__*/ _encode(errors.$ZodRealError);\nexport const _decode = (_Err) => (schema, value, _ctx) => {\n return _parse(_Err)(schema, value, _ctx);\n};\nexport const decode = /* @__PURE__*/ _decode(errors.$ZodRealError);\nexport const _encodeAsync = (_Err) => async (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { direction: \"backward\" }) : { direction: \"backward\" };\n return _parseAsync(_Err)(schema, value, ctx);\n};\nexport const encodeAsync = /* @__PURE__*/ _encodeAsync(errors.$ZodRealError);\nexport const _decodeAsync = (_Err) => async (schema, value, _ctx) => {\n return _parseAsync(_Err)(schema, value, _ctx);\n};\nexport const decodeAsync = /* @__PURE__*/ _decodeAsync(errors.$ZodRealError);\nexport const _safeEncode = (_Err) => (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { direction: \"backward\" }) : { direction: \"backward\" };\n return _safeParse(_Err)(schema, value, ctx);\n};\nexport const safeEncode = /* @__PURE__*/ _safeEncode(errors.$ZodRealError);\nexport const _safeDecode = (_Err) => (schema, value, _ctx) => {\n return _safeParse(_Err)(schema, value, _ctx);\n};\nexport const safeDecode = /* @__PURE__*/ _safeDecode(errors.$ZodRealError);\nexport const _safeEncodeAsync = (_Err) => async (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { direction: \"backward\" }) : { direction: \"backward\" };\n return _safeParseAsync(_Err)(schema, value, ctx);\n};\nexport const safeEncodeAsync = /* @__PURE__*/ _safeEncodeAsync(errors.$ZodRealError);\nexport const _safeDecodeAsync = (_Err) => async (schema, value, _ctx) => {\n return _safeParseAsync(_Err)(schema, value, _ctx);\n};\nexport const safeDecodeAsync = /* @__PURE__*/ _safeDecodeAsync(errors.$ZodRealError);\n","export const cuid = /^[cC][^\\s-]{8,}$/;\nexport const cuid2 = /^[0-9a-z]+$/;\nexport const ulid = /^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/;\nexport const xid = /^[0-9a-vA-V]{20}$/;\nexport const ksuid = /^[A-Za-z0-9]{27}$/;\nexport const nanoid = /^[a-zA-Z0-9_-]{21}$/;\n/** ISO 8601-1 duration regex. Does not support the 8601-2 extensions like negative durations or fractional/negative components. */\nexport const duration = /^P(?:(\\d+W)|(?!.*W)(?=\\d|T\\d)(\\d+Y)?(\\d+M)?(\\d+D)?(T(?=\\d)(\\d+H)?(\\d+M)?(\\d+([.,]\\d+)?S)?)?)$/;\n/** Implements ISO 8601-2 extensions like explicit +- prefixes, mixing weeks with other units, and fractional/negative components. */\nexport const extendedDuration = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n/** A regex for any UUID-like identifier: 8-4-4-4-12 hex pattern */\nexport const guid = /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/;\n/** Returns a regex for validating an RFC 9562/4122 UUID.\n *\n * @param version Optionally specify a version 1-8. If no version is specified, all versions are supported. */\nexport const uuid = (version) => {\n if (!version)\n return /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/;\n return new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${version}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`);\n};\nexport const uuid4 = /*@__PURE__*/ uuid(4);\nexport const uuid6 = /*@__PURE__*/ uuid(6);\nexport const uuid7 = /*@__PURE__*/ uuid(7);\n/** Practical email validation */\nexport const email = /^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$/;\n/** Equivalent to the HTML5 input[type=email] validation implemented by browsers. Source: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/email */\nexport const html5Email = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n/** The classic emailregex.com regex for RFC 5322-compliant emails */\nexport const rfc5322Email = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n/** A loose regex that allows Unicode characters, enforces length limits, and that's about it. */\nexport const unicodeEmail = /^[^\\s@\"]{1,64}@[^\\s@]{1,255}$/u;\nexport const idnEmail = unicodeEmail;\nexport const browserEmail = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emoji = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nexport function emoji() {\n return new RegExp(_emoji, \"u\");\n}\nexport const ipv4 = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nexport const ipv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/;\nexport const cidrv4 = /^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/([0-9]|[1-2][0-9]|3[0-2])$/;\nexport const cidrv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nexport const base64 = /^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/;\nexport const base64url = /^[A-Za-z0-9_-]*$/;\n// based on https://stackoverflow.com/questions/106179/regular-expression-to-match-dns-hostname-or-ip-address\n// export const hostname: RegExp = /^([a-zA-Z0-9-]+\\.)*[a-zA-Z0-9-]+$/;\nexport const hostname = /^(?=.{1,253}\\.?$)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[-0-9a-zA-Z]{0,61}[0-9a-zA-Z])?)*\\.?$/;\nexport const domain = /^([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\\.)+[a-zA-Z]{2,}$/;\n// https://blog.stevenlevithan.com/archives/validate-phone-number#r4-3 (regex sans spaces)\nexport const e164 = /^\\+(?:[0-9]){6,14}[0-9]$/;\n// const dateSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateSource = `(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))`;\nexport const date = /*@__PURE__*/ new RegExp(`^${dateSource}$`);\nfunction timeSource(args) {\n const hhmm = `(?:[01]\\\\d|2[0-3]):[0-5]\\\\d`;\n const regex = typeof args.precision === \"number\"\n ? args.precision === -1\n ? `${hhmm}`\n : args.precision === 0\n ? `${hhmm}:[0-5]\\\\d`\n : `${hhmm}:[0-5]\\\\d\\\\.\\\\d{${args.precision}}`\n : `${hhmm}(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?`;\n return regex;\n}\nexport function time(args) {\n return new RegExp(`^${timeSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nexport function datetime(args) {\n const time = timeSource({ precision: args.precision });\n const opts = [\"Z\"];\n if (args.local)\n opts.push(\"\");\n // if (args.offset) opts.push(`([+-]\\\\d{2}:\\\\d{2})`);\n if (args.offset)\n opts.push(`([+-](?:[01]\\\\d|2[0-3]):[0-5]\\\\d)`);\n const timeRegex = `${time}(?:${opts.join(\"|\")})`;\n return new RegExp(`^${dateSource}T(?:${timeRegex})$`);\n}\nexport const string = (params) => {\n const regex = params ? `[\\\\s\\\\S]{${params?.minimum ?? 0},${params?.maximum ?? \"\"}}` : `[\\\\s\\\\S]*`;\n return new RegExp(`^${regex}$`);\n};\nexport const bigint = /^-?\\d+n?$/;\nexport const integer = /^-?\\d+$/;\nexport const number = /^-?\\d+(?:\\.\\d+)?/;\nexport const boolean = /^(?:true|false)$/i;\nconst _null = /^null$/i;\nexport { _null as null };\nconst _undefined = /^undefined$/i;\nexport { _undefined as undefined };\n// regex for string with no uppercase letters\nexport const lowercase = /^[^A-Z]*$/;\n// regex for string with no lowercase letters\nexport const uppercase = /^[^a-z]*$/;\n// regex for hexadecimal strings (any length)\nexport const hex = /^[0-9a-fA-F]*$/;\n// Hash regexes for different algorithms and encodings\n// Helper function to create base64 regex with exact length and padding\nfunction fixedBase64(bodyLength, padding) {\n return new RegExp(`^[A-Za-z0-9+/]{${bodyLength}}${padding}$`);\n}\n// Helper function to create base64url regex with exact length (no padding)\nfunction fixedBase64url(length) {\n return new RegExp(`^[A-Za-z0-9_-]{${length}}$`);\n}\n// MD5 (16 bytes): base64 = 24 chars total (22 + \"==\")\nexport const md5_hex = /^[0-9a-fA-F]{32}$/;\nexport const md5_base64 = /*@__PURE__*/ fixedBase64(22, \"==\");\nexport const md5_base64url = /*@__PURE__*/ fixedBase64url(22);\n// SHA1 (20 bytes): base64 = 28 chars total (27 + \"=\")\nexport const sha1_hex = /^[0-9a-fA-F]{40}$/;\nexport const sha1_base64 = /*@__PURE__*/ fixedBase64(27, \"=\");\nexport const sha1_base64url = /*@__PURE__*/ fixedBase64url(27);\n// SHA256 (32 bytes): base64 = 44 chars total (43 + \"=\")\nexport const sha256_hex = /^[0-9a-fA-F]{64}$/;\nexport const sha256_base64 = /*@__PURE__*/ fixedBase64(43, \"=\");\nexport const sha256_base64url = /*@__PURE__*/ fixedBase64url(43);\n// SHA384 (48 bytes): base64 = 64 chars total (no padding)\nexport const sha384_hex = /^[0-9a-fA-F]{96}$/;\nexport const sha384_base64 = /*@__PURE__*/ fixedBase64(64, \"\");\nexport const sha384_base64url = /*@__PURE__*/ fixedBase64url(64);\n// SHA512 (64 bytes): base64 = 88 chars total (86 + \"==\")\nexport const sha512_hex = /^[0-9a-fA-F]{128}$/;\nexport const sha512_base64 = /*@__PURE__*/ fixedBase64(86, \"==\");\nexport const sha512_base64url = /*@__PURE__*/ fixedBase64url(86);\n","// import { $ZodType } from \"./schemas.js\";\nimport * as core from \"./core.js\";\nimport * as regexes from \"./regexes.js\";\nimport * as util from \"./util.js\";\nexport const $ZodCheck = /*@__PURE__*/ core.$constructor(\"$ZodCheck\", (inst, def) => {\n var _a;\n inst._zod ?? (inst._zod = {});\n inst._zod.def = def;\n (_a = inst._zod).onattach ?? (_a.onattach = []);\n});\nconst numericOriginMap = {\n number: \"number\",\n bigint: \"bigint\",\n object: \"date\",\n};\nexport const $ZodCheckLessThan = /*@__PURE__*/ core.$constructor(\"$ZodCheckLessThan\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const origin = numericOriginMap[typeof def.value];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n const curr = (def.inclusive ? bag.maximum : bag.exclusiveMaximum) ?? Number.POSITIVE_INFINITY;\n if (def.value < curr) {\n if (def.inclusive)\n bag.maximum = def.value;\n else\n bag.exclusiveMaximum = def.value;\n }\n });\n inst._zod.check = (payload) => {\n if (def.inclusive ? payload.value <= def.value : payload.value < def.value) {\n return;\n }\n payload.issues.push({\n origin,\n code: \"too_big\",\n maximum: def.value,\n input: payload.value,\n inclusive: def.inclusive,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckGreaterThan = /*@__PURE__*/ core.$constructor(\"$ZodCheckGreaterThan\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const origin = numericOriginMap[typeof def.value];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n const curr = (def.inclusive ? bag.minimum : bag.exclusiveMinimum) ?? Number.NEGATIVE_INFINITY;\n if (def.value > curr) {\n if (def.inclusive)\n bag.minimum = def.value;\n else\n bag.exclusiveMinimum = def.value;\n }\n });\n inst._zod.check = (payload) => {\n if (def.inclusive ? payload.value >= def.value : payload.value > def.value) {\n return;\n }\n payload.issues.push({\n origin,\n code: \"too_small\",\n minimum: def.value,\n input: payload.value,\n inclusive: def.inclusive,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMultipleOf = \n/*@__PURE__*/ core.$constructor(\"$ZodCheckMultipleOf\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.onattach.push((inst) => {\n var _a;\n (_a = inst._zod.bag).multipleOf ?? (_a.multipleOf = def.value);\n });\n inst._zod.check = (payload) => {\n if (typeof payload.value !== typeof def.value)\n throw new Error(\"Cannot mix number and bigint in multiple_of check.\");\n const isMultiple = typeof payload.value === \"bigint\"\n ? payload.value % def.value === BigInt(0)\n : util.floatSafeRemainder(payload.value, def.value) === 0;\n if (isMultiple)\n return;\n payload.issues.push({\n origin: typeof payload.value,\n code: \"not_multiple_of\",\n divisor: def.value,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckNumberFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckNumberFormat\", (inst, def) => {\n $ZodCheck.init(inst, def); // no format checks\n def.format = def.format || \"float64\";\n const isInt = def.format?.includes(\"int\");\n const origin = isInt ? \"int\" : \"number\";\n const [minimum, maximum] = util.NUMBER_FORMAT_RANGES[def.format];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = def.format;\n bag.minimum = minimum;\n bag.maximum = maximum;\n if (isInt)\n bag.pattern = regexes.integer;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n if (isInt) {\n if (!Number.isInteger(input)) {\n // invalid_format issue\n // payload.issues.push({\n // expected: def.format,\n // format: def.format,\n // code: \"invalid_format\",\n // input,\n // inst,\n // });\n // invalid_type issue\n payload.issues.push({\n expected: origin,\n format: def.format,\n code: \"invalid_type\",\n continue: false,\n input,\n inst,\n });\n return;\n // not_multiple_of issue\n // payload.issues.push({\n // code: \"not_multiple_of\",\n // origin: \"number\",\n // input,\n // inst,\n // divisor: 1,\n // });\n }\n if (!Number.isSafeInteger(input)) {\n if (input > 0) {\n // too_big\n payload.issues.push({\n input,\n code: \"too_big\",\n maximum: Number.MAX_SAFE_INTEGER,\n note: \"Integers must be within the safe integer range.\",\n inst,\n origin,\n continue: !def.abort,\n });\n }\n else {\n // too_small\n payload.issues.push({\n input,\n code: \"too_small\",\n minimum: Number.MIN_SAFE_INTEGER,\n note: \"Integers must be within the safe integer range.\",\n inst,\n origin,\n continue: !def.abort,\n });\n }\n return;\n }\n }\n if (input < minimum) {\n payload.issues.push({\n origin: \"number\",\n input,\n code: \"too_small\",\n minimum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n if (input > maximum) {\n payload.issues.push({\n origin: \"number\",\n input,\n code: \"too_big\",\n maximum,\n inst,\n });\n }\n };\n});\nexport const $ZodCheckBigIntFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckBigIntFormat\", (inst, def) => {\n $ZodCheck.init(inst, def); // no format checks\n const [minimum, maximum] = util.BIGINT_FORMAT_RANGES[def.format];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = def.format;\n bag.minimum = minimum;\n bag.maximum = maximum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n if (input < minimum) {\n payload.issues.push({\n origin: \"bigint\",\n input,\n code: \"too_small\",\n minimum: minimum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n if (input > maximum) {\n payload.issues.push({\n origin: \"bigint\",\n input,\n code: \"too_big\",\n maximum,\n inst,\n });\n }\n };\n});\nexport const $ZodCheckMaxSize = /*@__PURE__*/ core.$constructor(\"$ZodCheckMaxSize\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.size !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.maximum ?? Number.POSITIVE_INFINITY);\n if (def.maximum < curr)\n inst._zod.bag.maximum = def.maximum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const size = input.size;\n if (size <= def.maximum)\n return;\n payload.issues.push({\n origin: util.getSizableOrigin(input),\n code: \"too_big\",\n maximum: def.maximum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMinSize = /*@__PURE__*/ core.$constructor(\"$ZodCheckMinSize\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.size !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.minimum ?? Number.NEGATIVE_INFINITY);\n if (def.minimum > curr)\n inst._zod.bag.minimum = def.minimum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const size = input.size;\n if (size >= def.minimum)\n return;\n payload.issues.push({\n origin: util.getSizableOrigin(input),\n code: \"too_small\",\n minimum: def.minimum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckSizeEquals = /*@__PURE__*/ core.$constructor(\"$ZodCheckSizeEquals\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.size !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.minimum = def.size;\n bag.maximum = def.size;\n bag.size = def.size;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const size = input.size;\n if (size === def.size)\n return;\n const tooBig = size > def.size;\n payload.issues.push({\n origin: util.getSizableOrigin(input),\n ...(tooBig ? { code: \"too_big\", maximum: def.size } : { code: \"too_small\", minimum: def.size }),\n inclusive: true,\n exact: true,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMaxLength = /*@__PURE__*/ core.$constructor(\"$ZodCheckMaxLength\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.length !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.maximum ?? Number.POSITIVE_INFINITY);\n if (def.maximum < curr)\n inst._zod.bag.maximum = def.maximum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const length = input.length;\n if (length <= def.maximum)\n return;\n const origin = util.getLengthableOrigin(input);\n payload.issues.push({\n origin,\n code: \"too_big\",\n maximum: def.maximum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMinLength = /*@__PURE__*/ core.$constructor(\"$ZodCheckMinLength\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.length !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.minimum ?? Number.NEGATIVE_INFINITY);\n if (def.minimum > curr)\n inst._zod.bag.minimum = def.minimum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const length = input.length;\n if (length >= def.minimum)\n return;\n const origin = util.getLengthableOrigin(input);\n payload.issues.push({\n origin,\n code: \"too_small\",\n minimum: def.minimum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckLengthEquals = /*@__PURE__*/ core.$constructor(\"$ZodCheckLengthEquals\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.length !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.minimum = def.length;\n bag.maximum = def.length;\n bag.length = def.length;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const length = input.length;\n if (length === def.length)\n return;\n const origin = util.getLengthableOrigin(input);\n const tooBig = length > def.length;\n payload.issues.push({\n origin,\n ...(tooBig ? { code: \"too_big\", maximum: def.length } : { code: \"too_small\", minimum: def.length }),\n inclusive: true,\n exact: true,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckStringFormat\", (inst, def) => {\n var _a, _b;\n $ZodCheck.init(inst, def);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = def.format;\n if (def.pattern) {\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(def.pattern);\n }\n });\n if (def.pattern)\n (_a = inst._zod).check ?? (_a.check = (payload) => {\n def.pattern.lastIndex = 0;\n if (def.pattern.test(payload.value))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: def.format,\n input: payload.value,\n ...(def.pattern ? { pattern: def.pattern.toString() } : {}),\n inst,\n continue: !def.abort,\n });\n });\n else\n (_b = inst._zod).check ?? (_b.check = () => { });\n});\nexport const $ZodCheckRegex = /*@__PURE__*/ core.$constructor(\"$ZodCheckRegex\", (inst, def) => {\n $ZodCheckStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n def.pattern.lastIndex = 0;\n if (def.pattern.test(payload.value))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"regex\",\n input: payload.value,\n pattern: def.pattern.toString(),\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckLowerCase = /*@__PURE__*/ core.$constructor(\"$ZodCheckLowerCase\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.lowercase);\n $ZodCheckStringFormat.init(inst, def);\n});\nexport const $ZodCheckUpperCase = /*@__PURE__*/ core.$constructor(\"$ZodCheckUpperCase\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.uppercase);\n $ZodCheckStringFormat.init(inst, def);\n});\nexport const $ZodCheckIncludes = /*@__PURE__*/ core.$constructor(\"$ZodCheckIncludes\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const escapedRegex = util.escapeRegex(def.includes);\n const pattern = new RegExp(typeof def.position === \"number\" ? `^.{${def.position}}${escapedRegex}` : escapedRegex);\n def.pattern = pattern;\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(pattern);\n });\n inst._zod.check = (payload) => {\n if (payload.value.includes(def.includes, def.position))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"includes\",\n includes: def.includes,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckStartsWith = /*@__PURE__*/ core.$constructor(\"$ZodCheckStartsWith\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const pattern = new RegExp(`^${util.escapeRegex(def.prefix)}.*`);\n def.pattern ?? (def.pattern = pattern);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(pattern);\n });\n inst._zod.check = (payload) => {\n if (payload.value.startsWith(def.prefix))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"starts_with\",\n prefix: def.prefix,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckEndsWith = /*@__PURE__*/ core.$constructor(\"$ZodCheckEndsWith\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const pattern = new RegExp(`.*${util.escapeRegex(def.suffix)}$`);\n def.pattern ?? (def.pattern = pattern);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(pattern);\n });\n inst._zod.check = (payload) => {\n if (payload.value.endsWith(def.suffix))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"ends_with\",\n suffix: def.suffix,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\n///////////////////////////////////\n///// $ZodCheckProperty /////\n///////////////////////////////////\nfunction handleCheckPropertyResult(result, payload, property) {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(property, result.issues));\n }\n}\nexport const $ZodCheckProperty = /*@__PURE__*/ core.$constructor(\"$ZodCheckProperty\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.check = (payload) => {\n const result = def.schema._zod.run({\n value: payload.value[def.property],\n issues: [],\n }, {});\n if (result instanceof Promise) {\n return result.then((result) => handleCheckPropertyResult(result, payload, def.property));\n }\n handleCheckPropertyResult(result, payload, def.property);\n return;\n };\n});\nexport const $ZodCheckMimeType = /*@__PURE__*/ core.$constructor(\"$ZodCheckMimeType\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const mimeSet = new Set(def.mime);\n inst._zod.onattach.push((inst) => {\n inst._zod.bag.mime = def.mime;\n });\n inst._zod.check = (payload) => {\n if (mimeSet.has(payload.value.type))\n return;\n payload.issues.push({\n code: \"invalid_value\",\n values: def.mime,\n input: payload.value.type,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckOverwrite = /*@__PURE__*/ core.$constructor(\"$ZodCheckOverwrite\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.check = (payload) => {\n payload.value = def.tx(payload.value);\n };\n});\n","export class Doc {\n constructor(args = []) {\n this.content = [];\n this.indent = 0;\n if (this)\n this.args = args;\n }\n indented(fn) {\n this.indent += 1;\n fn(this);\n this.indent -= 1;\n }\n write(arg) {\n if (typeof arg === \"function\") {\n arg(this, { execution: \"sync\" });\n arg(this, { execution: \"async\" });\n return;\n }\n const content = arg;\n const lines = content.split(\"\\n\").filter((x) => x);\n const minIndent = Math.min(...lines.map((x) => x.length - x.trimStart().length));\n const dedented = lines.map((x) => x.slice(minIndent)).map((x) => \" \".repeat(this.indent * 2) + x);\n for (const line of dedented) {\n this.content.push(line);\n }\n }\n compile() {\n const F = Function;\n const args = this?.args;\n const content = this?.content ?? [``];\n const lines = [...content.map((x) => ` ${x}`)];\n // console.log(lines.join(\"\\n\"));\n return new F(...args, lines.join(\"\\n\"));\n }\n}\n","export const version = {\n major: 4,\n minor: 1,\n patch: 12,\n};\n","import * as checks from \"./checks.js\";\nimport * as core from \"./core.js\";\nimport { Doc } from \"./doc.js\";\nimport { parse, parseAsync, safeParse, safeParseAsync } from \"./parse.js\";\nimport * as regexes from \"./regexes.js\";\nimport * as util from \"./util.js\";\nimport { version } from \"./versions.js\";\nexport const $ZodType = /*@__PURE__*/ core.$constructor(\"$ZodType\", (inst, def) => {\n var _a;\n inst ?? (inst = {});\n inst._zod.def = def; // set _def property\n inst._zod.bag = inst._zod.bag || {}; // initialize _bag object\n inst._zod.version = version;\n const checks = [...(inst._zod.def.checks ?? [])];\n // if inst is itself a checks.$ZodCheck, run it as a check\n if (inst._zod.traits.has(\"$ZodCheck\")) {\n checks.unshift(inst);\n }\n for (const ch of checks) {\n for (const fn of ch._zod.onattach) {\n fn(inst);\n }\n }\n if (checks.length === 0) {\n // deferred initializer\n // inst._zod.parse is not yet defined\n (_a = inst._zod).deferred ?? (_a.deferred = []);\n inst._zod.deferred?.push(() => {\n inst._zod.run = inst._zod.parse;\n });\n }\n else {\n const runChecks = (payload, checks, ctx) => {\n let isAborted = util.aborted(payload);\n let asyncResult;\n for (const ch of checks) {\n if (ch._zod.def.when) {\n const shouldRun = ch._zod.def.when(payload);\n if (!shouldRun)\n continue;\n }\n else if (isAborted) {\n continue;\n }\n const currLen = payload.issues.length;\n const _ = ch._zod.check(payload);\n if (_ instanceof Promise && ctx?.async === false) {\n throw new core.$ZodAsyncError();\n }\n if (asyncResult || _ instanceof Promise) {\n asyncResult = (asyncResult ?? Promise.resolve()).then(async () => {\n await _;\n const nextLen = payload.issues.length;\n if (nextLen === currLen)\n return;\n if (!isAborted)\n isAborted = util.aborted(payload, currLen);\n });\n }\n else {\n const nextLen = payload.issues.length;\n if (nextLen === currLen)\n continue;\n if (!isAborted)\n isAborted = util.aborted(payload, currLen);\n }\n }\n if (asyncResult) {\n return asyncResult.then(() => {\n return payload;\n });\n }\n return payload;\n };\n // const handleChecksResult = (\n // checkResult: ParsePayload,\n // originalResult: ParsePayload,\n // ctx: ParseContextInternal\n // ): util.MaybeAsync<ParsePayload> => {\n // // if the checks mutated the value && there are no issues, re-parse the result\n // if (checkResult.value !== originalResult.value && !checkResult.issues.length)\n // return inst._zod.parse(checkResult, ctx);\n // return originalResult;\n // };\n const handleCanaryResult = (canary, payload, ctx) => {\n // abort if the canary is aborted\n if (util.aborted(canary)) {\n canary.aborted = true;\n return canary;\n }\n // run checks first, then\n const checkResult = runChecks(payload, checks, ctx);\n if (checkResult instanceof Promise) {\n if (ctx.async === false)\n throw new core.$ZodAsyncError();\n return checkResult.then((checkResult) => inst._zod.parse(checkResult, ctx));\n }\n return inst._zod.parse(checkResult, ctx);\n };\n inst._zod.run = (payload, ctx) => {\n if (ctx.skipChecks) {\n return inst._zod.parse(payload, ctx);\n }\n if (ctx.direction === \"backward\") {\n // run canary\n // initial pass (no checks)\n const canary = inst._zod.parse({ value: payload.value, issues: [] }, { ...ctx, skipChecks: true });\n if (canary instanceof Promise) {\n return canary.then((canary) => {\n return handleCanaryResult(canary, payload, ctx);\n });\n }\n return handleCanaryResult(canary, payload, ctx);\n }\n // forward\n const result = inst._zod.parse(payload, ctx);\n if (result instanceof Promise) {\n if (ctx.async === false)\n throw new core.$ZodAsyncError();\n return result.then((result) => runChecks(result, checks, ctx));\n }\n return runChecks(result, checks, ctx);\n };\n }\n inst[\"~standard\"] = {\n validate: (value) => {\n try {\n const r = safeParse(inst, value);\n return r.success ? { value: r.data } : { issues: r.error?.issues };\n }\n catch (_) {\n return safeParseAsync(inst, value).then((r) => (r.success ? { value: r.data } : { issues: r.error?.issues }));\n }\n },\n vendor: \"zod\",\n version: 1,\n };\n});\nexport { clone } from \"./util.js\";\nexport const $ZodString = /*@__PURE__*/ core.$constructor(\"$ZodString\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = [...(inst?._zod.bag?.patterns ?? [])].pop() ?? regexes.string(inst._zod.bag);\n inst._zod.parse = (payload, _) => {\n if (def.coerce)\n try {\n payload.value = String(payload.value);\n }\n catch (_) { }\n if (typeof payload.value === \"string\")\n return payload;\n payload.issues.push({\n expected: \"string\",\n code: \"invalid_type\",\n input: payload.value,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodStringFormat\", (inst, def) => {\n // check initialization must come first\n checks.$ZodCheckStringFormat.init(inst, def);\n $ZodString.init(inst, def);\n});\nexport const $ZodGUID = /*@__PURE__*/ core.$constructor(\"$ZodGUID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.guid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodUUID = /*@__PURE__*/ core.$constructor(\"$ZodUUID\", (inst, def) => {\n if (def.version) {\n const versionMap = {\n v1: 1,\n v2: 2,\n v3: 3,\n v4: 4,\n v5: 5,\n v6: 6,\n v7: 7,\n v8: 8,\n };\n const v = versionMap[def.version];\n if (v === undefined)\n throw new Error(`Invalid UUID version: \"${def.version}\"`);\n def.pattern ?? (def.pattern = regexes.uuid(v));\n }\n else\n def.pattern ?? (def.pattern = regexes.uuid());\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodEmail = /*@__PURE__*/ core.$constructor(\"$ZodEmail\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.email);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodURL = /*@__PURE__*/ core.$constructor(\"$ZodURL\", (inst, def) => {\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n try {\n // Trim whitespace from input\n const trimmed = payload.value.trim();\n // @ts-ignore\n const url = new URL(trimmed);\n if (def.hostname) {\n def.hostname.lastIndex = 0;\n if (!def.hostname.test(url.hostname)) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n note: \"Invalid hostname\",\n pattern: regexes.hostname.source,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n }\n if (def.protocol) {\n def.protocol.lastIndex = 0;\n if (!def.protocol.test(url.protocol.endsWith(\":\") ? url.protocol.slice(0, -1) : url.protocol)) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n note: \"Invalid protocol\",\n pattern: def.protocol.source,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n }\n // Set the output value based on normalize flag\n if (def.normalize) {\n // Use normalized URL\n payload.value = url.href;\n }\n else {\n // Preserve the original input (trimmed)\n payload.value = trimmed;\n }\n return;\n }\n catch (_) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodEmoji = /*@__PURE__*/ core.$constructor(\"$ZodEmoji\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.emoji());\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodNanoID = /*@__PURE__*/ core.$constructor(\"$ZodNanoID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.nanoid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodCUID = /*@__PURE__*/ core.$constructor(\"$ZodCUID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cuid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodCUID2 = /*@__PURE__*/ core.$constructor(\"$ZodCUID2\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cuid2);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodULID = /*@__PURE__*/ core.$constructor(\"$ZodULID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ulid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodXID = /*@__PURE__*/ core.$constructor(\"$ZodXID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.xid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodKSUID = /*@__PURE__*/ core.$constructor(\"$ZodKSUID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ksuid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODateTime = /*@__PURE__*/ core.$constructor(\"$ZodISODateTime\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.datetime(def));\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODate = /*@__PURE__*/ core.$constructor(\"$ZodISODate\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.date);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISOTime = /*@__PURE__*/ core.$constructor(\"$ZodISOTime\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.time(def));\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODuration = /*@__PURE__*/ core.$constructor(\"$ZodISODuration\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.duration);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodIPv4 = /*@__PURE__*/ core.$constructor(\"$ZodIPv4\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ipv4);\n $ZodStringFormat.init(inst, def);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = `ipv4`;\n });\n});\nexport const $ZodIPv6 = /*@__PURE__*/ core.$constructor(\"$ZodIPv6\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ipv6);\n $ZodStringFormat.init(inst, def);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = `ipv6`;\n });\n inst._zod.check = (payload) => {\n try {\n // @ts-ignore\n new URL(`http://[${payload.value}]`);\n // return;\n }\n catch {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"ipv6\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodCIDRv4 = /*@__PURE__*/ core.$constructor(\"$ZodCIDRv4\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cidrv4);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodCIDRv6 = /*@__PURE__*/ core.$constructor(\"$ZodCIDRv6\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cidrv6); // not used for validation\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n const parts = payload.value.split(\"/\");\n try {\n if (parts.length !== 2)\n throw new Error();\n const [address, prefix] = parts;\n if (!prefix)\n throw new Error();\n const prefixNum = Number(prefix);\n if (`${prefixNum}` !== prefix)\n throw new Error();\n if (prefixNum < 0 || prefixNum > 128)\n throw new Error();\n // @ts-ignore\n new URL(`http://[${address}]`);\n }\n catch {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"cidrv6\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\n////////////////////////////// ZodBase64 //////////////////////////////\nexport function isValidBase64(data) {\n if (data === \"\")\n return true;\n if (data.length % 4 !== 0)\n return false;\n try {\n // @ts-ignore\n atob(data);\n return true;\n }\n catch {\n return false;\n }\n}\nexport const $ZodBase64 = /*@__PURE__*/ core.$constructor(\"$ZodBase64\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.base64);\n $ZodStringFormat.init(inst, def);\n inst._zod.onattach.push((inst) => {\n inst._zod.bag.contentEncoding = \"base64\";\n });\n inst._zod.check = (payload) => {\n if (isValidBase64(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"base64\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\n////////////////////////////// ZodBase64 //////////////////////////////\nexport function isValidBase64URL(data) {\n if (!regexes.base64url.test(data))\n return false;\n const base64 = data.replace(/[-_]/g, (c) => (c === \"-\" ? \"+\" : \"/\"));\n const padded = base64.padEnd(Math.ceil(base64.length / 4) * 4, \"=\");\n return isValidBase64(padded);\n}\nexport const $ZodBase64URL = /*@__PURE__*/ core.$constructor(\"$ZodBase64URL\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.base64url);\n $ZodStringFormat.init(inst, def);\n inst._zod.onattach.push((inst) => {\n inst._zod.bag.contentEncoding = \"base64url\";\n });\n inst._zod.check = (payload) => {\n if (isValidBase64URL(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"base64url\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodE164 = /*@__PURE__*/ core.$constructor(\"$ZodE164\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.e164);\n $ZodStringFormat.init(inst, def);\n});\n////////////////////////////// ZodJWT //////////////////////////////\nexport function isValidJWT(token, algorithm = null) {\n try {\n const tokensParts = token.split(\".\");\n if (tokensParts.length !== 3)\n return false;\n const [header] = tokensParts;\n if (!header)\n return false;\n // @ts-ignore\n const parsedHeader = JSON.parse(atob(header));\n if (\"typ\" in parsedHeader && parsedHeader?.typ !== \"JWT\")\n return false;\n if (!parsedHeader.alg)\n return false;\n if (algorithm && (!(\"alg\" in parsedHeader) || parsedHeader.alg !== algorithm))\n return false;\n return true;\n }\n catch {\n return false;\n }\n}\nexport const $ZodJWT = /*@__PURE__*/ core.$constructor(\"$ZodJWT\", (inst, def) => {\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n if (isValidJWT(payload.value, def.alg))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"jwt\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCustomStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodCustomStringFormat\", (inst, def) => {\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n if (def.fn(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: def.format,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodNumber = /*@__PURE__*/ core.$constructor(\"$ZodNumber\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = inst._zod.bag.pattern ?? regexes.number;\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce)\n try {\n payload.value = Number(payload.value);\n }\n catch (_) { }\n const input = payload.value;\n if (typeof input === \"number\" && !Number.isNaN(input) && Number.isFinite(input)) {\n return payload;\n }\n const received = typeof input === \"number\"\n ? Number.isNaN(input)\n ? \"NaN\"\n : !Number.isFinite(input)\n ? \"Infinity\"\n : undefined\n : undefined;\n payload.issues.push({\n expected: \"number\",\n code: \"invalid_type\",\n input,\n inst,\n ...(received ? { received } : {}),\n });\n return payload;\n };\n});\nexport const $ZodNumberFormat = /*@__PURE__*/ core.$constructor(\"$ZodNumber\", (inst, def) => {\n checks.$ZodCheckNumberFormat.init(inst, def);\n $ZodNumber.init(inst, def); // no format checksp\n});\nexport const $ZodBoolean = /*@__PURE__*/ core.$constructor(\"$ZodBoolean\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.boolean;\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce)\n try {\n payload.value = Boolean(payload.value);\n }\n catch (_) { }\n const input = payload.value;\n if (typeof input === \"boolean\")\n return payload;\n payload.issues.push({\n expected: \"boolean\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodBigInt = /*@__PURE__*/ core.$constructor(\"$ZodBigInt\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.bigint;\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce)\n try {\n payload.value = BigInt(payload.value);\n }\n catch (_) { }\n if (typeof payload.value === \"bigint\")\n return payload;\n payload.issues.push({\n expected: \"bigint\",\n code: \"invalid_type\",\n input: payload.value,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodBigIntFormat = /*@__PURE__*/ core.$constructor(\"$ZodBigInt\", (inst, def) => {\n checks.$ZodCheckBigIntFormat.init(inst, def);\n $ZodBigInt.init(inst, def); // no format checks\n});\nexport const $ZodSymbol = /*@__PURE__*/ core.$constructor(\"$ZodSymbol\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (typeof input === \"symbol\")\n return payload;\n payload.issues.push({\n expected: \"symbol\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodUndefined = /*@__PURE__*/ core.$constructor(\"$ZodUndefined\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.undefined;\n inst._zod.values = new Set([undefined]);\n inst._zod.optin = \"optional\";\n inst._zod.optout = \"optional\";\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (typeof input === \"undefined\")\n return payload;\n payload.issues.push({\n expected: \"undefined\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodNull = /*@__PURE__*/ core.$constructor(\"$ZodNull\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.null;\n inst._zod.values = new Set([null]);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (input === null)\n return payload;\n payload.issues.push({\n expected: \"null\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodAny = /*@__PURE__*/ core.$constructor(\"$ZodAny\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload) => payload;\n});\nexport const $ZodUnknown = /*@__PURE__*/ core.$constructor(\"$ZodUnknown\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload) => payload;\n});\nexport const $ZodNever = /*@__PURE__*/ core.$constructor(\"$ZodNever\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n payload.issues.push({\n expected: \"never\",\n code: \"invalid_type\",\n input: payload.value,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodVoid = /*@__PURE__*/ core.$constructor(\"$ZodVoid\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (typeof input === \"undefined\")\n return payload;\n payload.issues.push({\n expected: \"void\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodDate = /*@__PURE__*/ core.$constructor(\"$ZodDate\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce) {\n try {\n payload.value = new Date(payload.value);\n }\n catch (_err) { }\n }\n const input = payload.value;\n const isDate = input instanceof Date;\n const isValidDate = isDate && !Number.isNaN(input.getTime());\n if (isValidDate)\n return payload;\n payload.issues.push({\n expected: \"date\",\n code: \"invalid_type\",\n input,\n ...(isDate ? { received: \"Invalid Date\" } : {}),\n inst,\n });\n return payload;\n };\n});\nfunction handleArrayResult(result, final, index) {\n if (result.issues.length) {\n final.issues.push(...util.prefixIssues(index, result.issues));\n }\n final.value[index] = result.value;\n}\nexport const $ZodArray = /*@__PURE__*/ core.$constructor(\"$ZodArray\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!Array.isArray(input)) {\n payload.issues.push({\n expected: \"array\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n payload.value = Array(input.length);\n const proms = [];\n for (let i = 0; i < input.length; i++) {\n const item = input[i];\n const result = def.element._zod.run({\n value: item,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleArrayResult(result, payload, i)));\n }\n else {\n handleArrayResult(result, payload, i);\n }\n }\n if (proms.length) {\n return Promise.all(proms).then(() => payload);\n }\n return payload; //handleArrayResultsAsync(parseResults, final);\n };\n});\nfunction handlePropertyResult(result, final, key, input) {\n if (result.issues.length) {\n final.issues.push(...util.prefixIssues(key, result.issues));\n }\n if (result.value === undefined) {\n if (key in input) {\n final.value[key] = undefined;\n }\n }\n else {\n final.value[key] = result.value;\n }\n}\nfunction normalizeDef(def) {\n const keys = Object.keys(def.shape);\n for (const k of keys) {\n if (!def.shape?.[k]?._zod?.traits?.has(\"$ZodType\")) {\n throw new Error(`Invalid element at key \"${k}\": expected a Zod schema`);\n }\n }\n const okeys = util.optionalKeys(def.shape);\n return {\n ...def,\n keys,\n keySet: new Set(keys),\n numKeys: keys.length,\n optionalKeys: new Set(okeys),\n };\n}\nfunction handleCatchall(proms, input, payload, ctx, def, inst) {\n const unrecognized = [];\n // iterate over input keys\n const keySet = def.keySet;\n const _catchall = def.catchall._zod;\n const t = _catchall.def.type;\n for (const key of Object.keys(input)) {\n if (keySet.has(key))\n continue;\n if (t === \"never\") {\n unrecognized.push(key);\n continue;\n }\n const r = _catchall.run({ value: input[key], issues: [] }, ctx);\n if (r instanceof Promise) {\n proms.push(r.then((r) => handlePropertyResult(r, payload, key, input)));\n }\n else {\n handlePropertyResult(r, payload, key, input);\n }\n }\n if (unrecognized.length) {\n payload.issues.push({\n code: \"unrecognized_keys\",\n keys: unrecognized,\n input,\n inst,\n });\n }\n if (!proms.length)\n return payload;\n return Promise.all(proms).then(() => {\n return payload;\n });\n}\nexport const $ZodObject = /*@__PURE__*/ core.$constructor(\"$ZodObject\", (inst, def) => {\n // requires cast because technically $ZodObject doesn't extend\n $ZodType.init(inst, def);\n // const sh = def.shape;\n const desc = Object.getOwnPropertyDescriptor(def, \"shape\");\n if (!desc?.get) {\n const sh = def.shape;\n Object.defineProperty(def, \"shape\", {\n get: () => {\n const newSh = { ...sh };\n Object.defineProperty(def, \"shape\", {\n value: newSh,\n });\n return newSh;\n },\n });\n }\n const _normalized = util.cached(() => normalizeDef(def));\n util.defineLazy(inst._zod, \"propValues\", () => {\n const shape = def.shape;\n const propValues = {};\n for (const key in shape) {\n const field = shape[key]._zod;\n if (field.values) {\n propValues[key] ?? (propValues[key] = new Set());\n for (const v of field.values)\n propValues[key].add(v);\n }\n }\n return propValues;\n });\n const isObject = util.isObject;\n const catchall = def.catchall;\n let value;\n inst._zod.parse = (payload, ctx) => {\n value ?? (value = _normalized.value);\n const input = payload.value;\n if (!isObject(input)) {\n payload.issues.push({\n expected: \"object\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n payload.value = {};\n const proms = [];\n const shape = value.shape;\n for (const key of value.keys) {\n const el = shape[key];\n const r = el._zod.run({ value: input[key], issues: [] }, ctx);\n if (r instanceof Promise) {\n proms.push(r.then((r) => handlePropertyResult(r, payload, key, input)));\n }\n else {\n handlePropertyResult(r, payload, key, input);\n }\n }\n if (!catchall) {\n return proms.length ? Promise.all(proms).then(() => payload) : payload;\n }\n return handleCatchall(proms, input, payload, ctx, _normalized.value, inst);\n };\n});\nexport const $ZodObjectJIT = /*@__PURE__*/ core.$constructor(\"$ZodObjectJIT\", (inst, def) => {\n // requires cast because technically $ZodObject doesn't extend\n $ZodObject.init(inst, def);\n const superParse = inst._zod.parse;\n const _normalized = util.cached(() => normalizeDef(def));\n const generateFastpass = (shape) => {\n const doc = new Doc([\"shape\", \"payload\", \"ctx\"]);\n const normalized = _normalized.value;\n const parseStr = (key) => {\n const k = util.esc(key);\n return `shape[${k}]._zod.run({ value: input[${k}], issues: [] }, ctx)`;\n };\n doc.write(`const input = payload.value;`);\n const ids = Object.create(null);\n let counter = 0;\n for (const key of normalized.keys) {\n ids[key] = `key_${counter++}`;\n }\n // A: preserve key order {\n doc.write(`const newResult = {};`);\n for (const key of normalized.keys) {\n const id = ids[key];\n const k = util.esc(key);\n doc.write(`const ${id} = ${parseStr(key)};`);\n doc.write(`\n if (${id}.issues.length) {\n payload.issues = payload.issues.concat(${id}.issues.map(iss => ({\n ...iss,\n path: iss.path ? [${k}, ...iss.path] : [${k}]\n })));\n }\n \n \n if (${id}.value === undefined) {\n if (${k} in input) {\n newResult[${k}] = undefined;\n }\n } else {\n newResult[${k}] = ${id}.value;\n }\n \n `);\n }\n doc.write(`payload.value = newResult;`);\n doc.write(`return payload;`);\n const fn = doc.compile();\n return (payload, ctx) => fn(shape, payload, ctx);\n };\n let fastpass;\n const isObject = util.isObject;\n const jit = !core.globalConfig.jitless;\n const allowsEval = util.allowsEval;\n const fastEnabled = jit && allowsEval.value; // && !def.catchall;\n const catchall = def.catchall;\n let value;\n inst._zod.parse = (payload, ctx) => {\n value ?? (value = _normalized.value);\n const input = payload.value;\n if (!isObject(input)) {\n payload.issues.push({\n expected: \"object\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n if (jit && fastEnabled && ctx?.async === false && ctx.jitless !== true) {\n // always synchronous\n if (!fastpass)\n fastpass = generateFastpass(def.shape);\n payload = fastpass(payload, ctx);\n if (!catchall)\n return payload;\n return handleCatchall([], input, payload, ctx, value, inst);\n }\n return superParse(payload, ctx);\n };\n});\nfunction handleUnionResults(results, final, inst, ctx) {\n for (const result of results) {\n if (result.issues.length === 0) {\n final.value = result.value;\n return final;\n }\n }\n const nonaborted = results.filter((r) => !util.aborted(r));\n if (nonaborted.length === 1) {\n final.value = nonaborted[0].value;\n return nonaborted[0];\n }\n final.issues.push({\n code: \"invalid_union\",\n input: final.value,\n inst,\n errors: results.map((result) => result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n });\n return final;\n}\nexport const $ZodUnion = /*@__PURE__*/ core.$constructor(\"$ZodUnion\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"optin\", () => def.options.some((o) => o._zod.optin === \"optional\") ? \"optional\" : undefined);\n util.defineLazy(inst._zod, \"optout\", () => def.options.some((o) => o._zod.optout === \"optional\") ? \"optional\" : undefined);\n util.defineLazy(inst._zod, \"values\", () => {\n if (def.options.every((o) => o._zod.values)) {\n return new Set(def.options.flatMap((option) => Array.from(option._zod.values)));\n }\n return undefined;\n });\n util.defineLazy(inst._zod, \"pattern\", () => {\n if (def.options.every((o) => o._zod.pattern)) {\n const patterns = def.options.map((o) => o._zod.pattern);\n return new RegExp(`^(${patterns.map((p) => util.cleanRegex(p.source)).join(\"|\")})$`);\n }\n return undefined;\n });\n const single = def.options.length === 1;\n const first = def.options[0]._zod.run;\n inst._zod.parse = (payload, ctx) => {\n if (single) {\n return first(payload, ctx);\n }\n let async = false;\n const results = [];\n for (const option of def.options) {\n const result = option._zod.run({\n value: payload.value,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n results.push(result);\n async = true;\n }\n else {\n if (result.issues.length === 0)\n return result;\n results.push(result);\n }\n }\n if (!async)\n return handleUnionResults(results, payload, inst, ctx);\n return Promise.all(results).then((results) => {\n return handleUnionResults(results, payload, inst, ctx);\n });\n };\n});\nexport const $ZodDiscriminatedUnion = \n/*@__PURE__*/\ncore.$constructor(\"$ZodDiscriminatedUnion\", (inst, def) => {\n $ZodUnion.init(inst, def);\n const _super = inst._zod.parse;\n util.defineLazy(inst._zod, \"propValues\", () => {\n const propValues = {};\n for (const option of def.options) {\n const pv = option._zod.propValues;\n if (!pv || Object.keys(pv).length === 0)\n throw new Error(`Invalid discriminated union option at index \"${def.options.indexOf(option)}\"`);\n for (const [k, v] of Object.entries(pv)) {\n if (!propValues[k])\n propValues[k] = new Set();\n for (const val of v) {\n propValues[k].add(val);\n }\n }\n }\n return propValues;\n });\n const disc = util.cached(() => {\n const opts = def.options;\n const map = new Map();\n for (const o of opts) {\n const values = o._zod.propValues?.[def.discriminator];\n if (!values || values.size === 0)\n throw new Error(`Invalid discriminated union option at index \"${def.options.indexOf(o)}\"`);\n for (const v of values) {\n if (map.has(v)) {\n throw new Error(`Duplicate discriminator value \"${String(v)}\"`);\n }\n map.set(v, o);\n }\n }\n return map;\n });\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!util.isObject(input)) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"object\",\n input,\n inst,\n });\n return payload;\n }\n const opt = disc.value.get(input?.[def.discriminator]);\n if (opt) {\n return opt._zod.run(payload, ctx);\n }\n if (def.unionFallback) {\n return _super(payload, ctx);\n }\n // no matching discriminator\n payload.issues.push({\n code: \"invalid_union\",\n errors: [],\n note: \"No matching discriminator\",\n discriminator: def.discriminator,\n input,\n path: [def.discriminator],\n inst,\n });\n return payload;\n };\n});\nexport const $ZodIntersection = /*@__PURE__*/ core.$constructor(\"$ZodIntersection\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n const left = def.left._zod.run({ value: input, issues: [] }, ctx);\n const right = def.right._zod.run({ value: input, issues: [] }, ctx);\n const async = left instanceof Promise || right instanceof Promise;\n if (async) {\n return Promise.all([left, right]).then(([left, right]) => {\n return handleIntersectionResults(payload, left, right);\n });\n }\n return handleIntersectionResults(payload, left, right);\n };\n});\nfunction mergeValues(a, b) {\n // const aType = parse.t(a);\n // const bType = parse.t(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n if (a instanceof Date && b instanceof Date && +a === +b) {\n return { valid: true, data: a };\n }\n if (util.isPlainObject(a) && util.isPlainObject(b)) {\n const bKeys = Object.keys(b);\n const sharedKeys = Object.keys(a).filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return {\n valid: false,\n mergeErrorPath: [key, ...sharedValue.mergeErrorPath],\n };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) {\n return { valid: false, mergeErrorPath: [] };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return {\n valid: false,\n mergeErrorPath: [index, ...sharedValue.mergeErrorPath],\n };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n return { valid: false, mergeErrorPath: [] };\n}\nfunction handleIntersectionResults(result, left, right) {\n if (left.issues.length) {\n result.issues.push(...left.issues);\n }\n if (right.issues.length) {\n result.issues.push(...right.issues);\n }\n if (util.aborted(result))\n return result;\n const merged = mergeValues(left.value, right.value);\n if (!merged.valid) {\n throw new Error(`Unmergable intersection. Error path: ` + `${JSON.stringify(merged.mergeErrorPath)}`);\n }\n result.value = merged.data;\n return result;\n}\nexport const $ZodTuple = /*@__PURE__*/ core.$constructor(\"$ZodTuple\", (inst, def) => {\n $ZodType.init(inst, def);\n const items = def.items;\n const optStart = items.length - [...items].reverse().findIndex((item) => item._zod.optin !== \"optional\");\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!Array.isArray(input)) {\n payload.issues.push({\n input,\n inst,\n expected: \"tuple\",\n code: \"invalid_type\",\n });\n return payload;\n }\n payload.value = [];\n const proms = [];\n if (!def.rest) {\n const tooBig = input.length > items.length;\n const tooSmall = input.length < optStart - 1;\n if (tooBig || tooSmall) {\n payload.issues.push({\n ...(tooBig ? { code: \"too_big\", maximum: items.length } : { code: \"too_small\", minimum: items.length }),\n input,\n inst,\n origin: \"array\",\n });\n return payload;\n }\n }\n let i = -1;\n for (const item of items) {\n i++;\n if (i >= input.length)\n if (i >= optStart)\n continue;\n const result = item._zod.run({\n value: input[i],\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleTupleResult(result, payload, i)));\n }\n else {\n handleTupleResult(result, payload, i);\n }\n }\n if (def.rest) {\n const rest = input.slice(items.length);\n for (const el of rest) {\n i++;\n const result = def.rest._zod.run({\n value: el,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleTupleResult(result, payload, i)));\n }\n else {\n handleTupleResult(result, payload, i);\n }\n }\n }\n if (proms.length)\n return Promise.all(proms).then(() => payload);\n return payload;\n };\n});\nfunction handleTupleResult(result, final, index) {\n if (result.issues.length) {\n final.issues.push(...util.prefixIssues(index, result.issues));\n }\n final.value[index] = result.value;\n}\nexport const $ZodRecord = /*@__PURE__*/ core.$constructor(\"$ZodRecord\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!util.isPlainObject(input)) {\n payload.issues.push({\n expected: \"record\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n const proms = [];\n if (def.keyType._zod.values) {\n const values = def.keyType._zod.values;\n payload.value = {};\n for (const key of values) {\n if (typeof key === \"string\" || typeof key === \"number\" || typeof key === \"symbol\") {\n const result = def.valueType._zod.run({ value: input[key], issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[key] = result.value;\n }));\n }\n else {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[key] = result.value;\n }\n }\n }\n let unrecognized;\n for (const key in input) {\n if (!values.has(key)) {\n unrecognized = unrecognized ?? [];\n unrecognized.push(key);\n }\n }\n if (unrecognized && unrecognized.length > 0) {\n payload.issues.push({\n code: \"unrecognized_keys\",\n input,\n inst,\n keys: unrecognized,\n });\n }\n }\n else {\n payload.value = {};\n for (const key of Reflect.ownKeys(input)) {\n if (key === \"__proto__\")\n continue;\n const keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx);\n if (keyResult instanceof Promise) {\n throw new Error(\"Async schemas not supported in object keys currently\");\n }\n if (keyResult.issues.length) {\n payload.issues.push({\n code: \"invalid_key\",\n origin: \"record\",\n issues: keyResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n input: key,\n path: [key],\n inst,\n });\n payload.value[keyResult.value] = keyResult.value;\n continue;\n }\n const result = def.valueType._zod.run({ value: input[key], issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[keyResult.value] = result.value;\n }));\n }\n else {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[keyResult.value] = result.value;\n }\n }\n }\n if (proms.length) {\n return Promise.all(proms).then(() => payload);\n }\n return payload;\n };\n});\nexport const $ZodMap = /*@__PURE__*/ core.$constructor(\"$ZodMap\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!(input instanceof Map)) {\n payload.issues.push({\n expected: \"map\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n const proms = [];\n payload.value = new Map();\n for (const [key, value] of input) {\n const keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx);\n const valueResult = def.valueType._zod.run({ value: value, issues: [] }, ctx);\n if (keyResult instanceof Promise || valueResult instanceof Promise) {\n proms.push(Promise.all([keyResult, valueResult]).then(([keyResult, valueResult]) => {\n handleMapResult(keyResult, valueResult, payload, key, input, inst, ctx);\n }));\n }\n else {\n handleMapResult(keyResult, valueResult, payload, key, input, inst, ctx);\n }\n }\n if (proms.length)\n return Promise.all(proms).then(() => payload);\n return payload;\n };\n});\nfunction handleMapResult(keyResult, valueResult, final, key, input, inst, ctx) {\n if (keyResult.issues.length) {\n if (util.propertyKeyTypes.has(typeof key)) {\n final.issues.push(...util.prefixIssues(key, keyResult.issues));\n }\n else {\n final.issues.push({\n code: \"invalid_key\",\n origin: \"map\",\n input,\n inst,\n issues: keyResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n });\n }\n }\n if (valueResult.issues.length) {\n if (util.propertyKeyTypes.has(typeof key)) {\n final.issues.push(...util.prefixIssues(key, valueResult.issues));\n }\n else {\n final.issues.push({\n origin: \"map\",\n code: \"invalid_element\",\n input,\n inst,\n key: key,\n issues: valueResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n });\n }\n }\n final.value.set(keyResult.value, valueResult.value);\n}\nexport const $ZodSet = /*@__PURE__*/ core.$constructor(\"$ZodSet\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!(input instanceof Set)) {\n payload.issues.push({\n input,\n inst,\n expected: \"set\",\n code: \"invalid_type\",\n });\n return payload;\n }\n const proms = [];\n payload.value = new Set();\n for (const item of input) {\n const result = def.valueType._zod.run({ value: item, issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleSetResult(result, payload)));\n }\n else\n handleSetResult(result, payload);\n }\n if (proms.length)\n return Promise.all(proms).then(() => payload);\n return payload;\n };\n});\nfunction handleSetResult(result, final) {\n if (result.issues.length) {\n final.issues.push(...result.issues);\n }\n final.value.add(result.value);\n}\nexport const $ZodEnum = /*@__PURE__*/ core.$constructor(\"$ZodEnum\", (inst, def) => {\n $ZodType.init(inst, def);\n const values = util.getEnumValues(def.entries);\n const valuesSet = new Set(values);\n inst._zod.values = valuesSet;\n inst._zod.pattern = new RegExp(`^(${values\n .filter((k) => util.propertyKeyTypes.has(typeof k))\n .map((o) => (typeof o === \"string\" ? util.escapeRegex(o) : o.toString()))\n .join(\"|\")})$`);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (valuesSet.has(input)) {\n return payload;\n }\n payload.issues.push({\n code: \"invalid_value\",\n values,\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodLiteral = /*@__PURE__*/ core.$constructor(\"$ZodLiteral\", (inst, def) => {\n $ZodType.init(inst, def);\n if (def.values.length === 0) {\n throw new Error(\"Cannot create literal schema with no valid values\");\n }\n inst._zod.values = new Set(def.values);\n inst._zod.pattern = new RegExp(`^(${def.values\n .map((o) => (typeof o === \"string\" ? util.escapeRegex(o) : o ? util.escapeRegex(o.toString()) : String(o)))\n .join(\"|\")})$`);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (inst._zod.values.has(input)) {\n return payload;\n }\n payload.issues.push({\n code: \"invalid_value\",\n values: def.values,\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodFile = /*@__PURE__*/ core.$constructor(\"$ZodFile\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n // @ts-ignore\n if (input instanceof File)\n return payload;\n payload.issues.push({\n expected: \"file\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodTransform = /*@__PURE__*/ core.$constructor(\"$ZodTransform\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n throw new core.$ZodEncodeError(inst.constructor.name);\n }\n const _out = def.transform(payload.value, payload);\n if (ctx.async) {\n const output = _out instanceof Promise ? _out : Promise.resolve(_out);\n return output.then((output) => {\n payload.value = output;\n return payload;\n });\n }\n if (_out instanceof Promise) {\n throw new core.$ZodAsyncError();\n }\n payload.value = _out;\n return payload;\n };\n});\nfunction handleOptionalResult(result, input) {\n if (result.issues.length && input === undefined) {\n return { issues: [], value: undefined };\n }\n return result;\n}\nexport const $ZodOptional = /*@__PURE__*/ core.$constructor(\"$ZodOptional\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.optin = \"optional\";\n inst._zod.optout = \"optional\";\n util.defineLazy(inst._zod, \"values\", () => {\n return def.innerType._zod.values ? new Set([...def.innerType._zod.values, undefined]) : undefined;\n });\n util.defineLazy(inst._zod, \"pattern\", () => {\n const pattern = def.innerType._zod.pattern;\n return pattern ? new RegExp(`^(${util.cleanRegex(pattern.source)})?$`) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n if (def.innerType._zod.optin === \"optional\") {\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise)\n return result.then((r) => handleOptionalResult(r, payload.value));\n return handleOptionalResult(result, payload.value);\n }\n if (payload.value === undefined) {\n return payload;\n }\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodNullable = /*@__PURE__*/ core.$constructor(\"$ZodNullable\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"optin\", () => def.innerType._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.innerType._zod.optout);\n util.defineLazy(inst._zod, \"pattern\", () => {\n const pattern = def.innerType._zod.pattern;\n return pattern ? new RegExp(`^(${util.cleanRegex(pattern.source)}|null)$`) : undefined;\n });\n util.defineLazy(inst._zod, \"values\", () => {\n return def.innerType._zod.values ? new Set([...def.innerType._zod.values, null]) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n // Forward direction (decode): allow null to pass through\n if (payload.value === null)\n return payload;\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodDefault = /*@__PURE__*/ core.$constructor(\"$ZodDefault\", (inst, def) => {\n $ZodType.init(inst, def);\n // inst._zod.qin = \"true\";\n inst._zod.optin = \"optional\";\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n // Forward direction (decode): apply defaults for undefined input\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n /**\n * $ZodDefault returns the default value immediately in forward direction.\n * It doesn't pass the default value into the validator (\"prefault\"). There's no reason to pass the default value through validation. The validity of the default is enforced by TypeScript statically. Otherwise, it's the responsibility of the user to ensure the default is valid. In the case of pipes with divergent in/out types, you can specify the default on the `in` schema of your ZodPipe to set a \"prefault\" for the pipe. */\n return payload;\n }\n // Forward direction: continue with default handling\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => handleDefaultResult(result, def));\n }\n return handleDefaultResult(result, def);\n };\n});\nfunction handleDefaultResult(payload, def) {\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n }\n return payload;\n}\nexport const $ZodPrefault = /*@__PURE__*/ core.$constructor(\"$ZodPrefault\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.optin = \"optional\";\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n // Forward direction (decode): apply prefault for undefined input\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n }\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodNonOptional = /*@__PURE__*/ core.$constructor(\"$ZodNonOptional\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"values\", () => {\n const v = def.innerType._zod.values;\n return v ? new Set([...v].filter((x) => x !== undefined)) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => handleNonOptionalResult(result, inst));\n }\n return handleNonOptionalResult(result, inst);\n };\n});\nfunction handleNonOptionalResult(payload, inst) {\n if (!payload.issues.length && payload.value === undefined) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"nonoptional\",\n input: payload.value,\n inst,\n });\n }\n return payload;\n}\nexport const $ZodSuccess = /*@__PURE__*/ core.$constructor(\"$ZodSuccess\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n throw new core.$ZodEncodeError(\"ZodSuccess\");\n }\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => {\n payload.value = result.issues.length === 0;\n return payload;\n });\n }\n payload.value = result.issues.length === 0;\n return payload;\n };\n});\nexport const $ZodCatch = /*@__PURE__*/ core.$constructor(\"$ZodCatch\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"optin\", () => def.innerType._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.innerType._zod.optout);\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n // Forward direction (decode): apply catch logic\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => {\n payload.value = result.value;\n if (result.issues.length) {\n payload.value = def.catchValue({\n ...payload,\n error: {\n issues: result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n },\n input: payload.value,\n });\n payload.issues = [];\n }\n return payload;\n });\n }\n payload.value = result.value;\n if (result.issues.length) {\n payload.value = def.catchValue({\n ...payload,\n error: {\n issues: result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n },\n input: payload.value,\n });\n payload.issues = [];\n }\n return payload;\n };\n});\nexport const $ZodNaN = /*@__PURE__*/ core.$constructor(\"$ZodNaN\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n if (typeof payload.value !== \"number\" || !Number.isNaN(payload.value)) {\n payload.issues.push({\n input: payload.value,\n inst,\n expected: \"nan\",\n code: \"invalid_type\",\n });\n return payload;\n }\n return payload;\n };\n});\nexport const $ZodPipe = /*@__PURE__*/ core.$constructor(\"$ZodPipe\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"values\", () => def.in._zod.values);\n util.defineLazy(inst._zod, \"optin\", () => def.in._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.out._zod.optout);\n util.defineLazy(inst._zod, \"propValues\", () => def.in._zod.propValues);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n const right = def.out._zod.run(payload, ctx);\n if (right instanceof Promise) {\n return right.then((right) => handlePipeResult(right, def.in, ctx));\n }\n return handlePipeResult(right, def.in, ctx);\n }\n const left = def.in._zod.run(payload, ctx);\n if (left instanceof Promise) {\n return left.then((left) => handlePipeResult(left, def.out, ctx));\n }\n return handlePipeResult(left, def.out, ctx);\n };\n});\nfunction handlePipeResult(left, next, ctx) {\n if (left.issues.length) {\n // prevent further checks\n left.aborted = true;\n return left;\n }\n return next._zod.run({ value: left.value, issues: left.issues }, ctx);\n}\nexport const $ZodCodec = /*@__PURE__*/ core.$constructor(\"$ZodCodec\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"values\", () => def.in._zod.values);\n util.defineLazy(inst._zod, \"optin\", () => def.in._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.out._zod.optout);\n util.defineLazy(inst._zod, \"propValues\", () => def.in._zod.propValues);\n inst._zod.parse = (payload, ctx) => {\n const direction = ctx.direction || \"forward\";\n if (direction === \"forward\") {\n const left = def.in._zod.run(payload, ctx);\n if (left instanceof Promise) {\n return left.then((left) => handleCodecAResult(left, def, ctx));\n }\n return handleCodecAResult(left, def, ctx);\n }\n else {\n const right = def.out._zod.run(payload, ctx);\n if (right instanceof Promise) {\n return right.then((right) => handleCodecAResult(right, def, ctx));\n }\n return handleCodecAResult(right, def, ctx);\n }\n };\n});\nfunction handleCodecAResult(result, def, ctx) {\n if (result.issues.length) {\n // prevent further checks\n result.aborted = true;\n return result;\n }\n const direction = ctx.direction || \"forward\";\n if (direction === \"forward\") {\n const transformed = def.transform(result.value, result);\n if (transformed instanceof Promise) {\n return transformed.then((value) => handleCodecTxResult(result, value, def.out, ctx));\n }\n return handleCodecTxResult(result, transformed, def.out, ctx);\n }\n else {\n const transformed = def.reverseTransform(result.value, result);\n if (transformed instanceof Promise) {\n return transformed.then((value) => handleCodecTxResult(result, value, def.in, ctx));\n }\n return handleCodecTxResult(result, transformed, def.in, ctx);\n }\n}\nfunction handleCodecTxResult(left, value, nextSchema, ctx) {\n // Check if transform added any issues\n if (left.issues.length) {\n left.aborted = true;\n return left;\n }\n return nextSchema._zod.run({ value, issues: left.issues }, ctx);\n}\nexport const $ZodReadonly = /*@__PURE__*/ core.$constructor(\"$ZodReadonly\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"propValues\", () => def.innerType._zod.propValues);\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n util.defineLazy(inst._zod, \"optin\", () => def.innerType._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.innerType._zod.optout);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then(handleReadonlyResult);\n }\n return handleReadonlyResult(result);\n };\n});\nfunction handleReadonlyResult(payload) {\n payload.value = Object.freeze(payload.value);\n return payload;\n}\nexport const $ZodTemplateLiteral = /*@__PURE__*/ core.$constructor(\"$ZodTemplateLiteral\", (inst, def) => {\n $ZodType.init(inst, def);\n const regexParts = [];\n for (const part of def.parts) {\n if (typeof part === \"object\" && part !== null) {\n // is Zod schema\n if (!part._zod.pattern) {\n // if (!source)\n throw new Error(`Invalid template literal part, no pattern found: ${[...part._zod.traits].shift()}`);\n }\n const source = part._zod.pattern instanceof RegExp ? part._zod.pattern.source : part._zod.pattern;\n if (!source)\n throw new Error(`Invalid template literal part: ${part._zod.traits}`);\n const start = source.startsWith(\"^\") ? 1 : 0;\n const end = source.endsWith(\"$\") ? source.length - 1 : source.length;\n regexParts.push(source.slice(start, end));\n }\n else if (part === null || util.primitiveTypes.has(typeof part)) {\n regexParts.push(util.escapeRegex(`${part}`));\n }\n else {\n throw new Error(`Invalid template literal part: ${part}`);\n }\n }\n inst._zod.pattern = new RegExp(`^${regexParts.join(\"\")}$`);\n inst._zod.parse = (payload, _ctx) => {\n if (typeof payload.value !== \"string\") {\n payload.issues.push({\n input: payload.value,\n inst,\n expected: \"template_literal\",\n code: \"invalid_type\",\n });\n return payload;\n }\n inst._zod.pattern.lastIndex = 0;\n if (!inst._zod.pattern.test(payload.value)) {\n payload.issues.push({\n input: payload.value,\n inst,\n code: \"invalid_format\",\n format: def.format ?? \"template_literal\",\n pattern: inst._zod.pattern.source,\n });\n return payload;\n }\n return payload;\n };\n});\nexport const $ZodFunction = /*@__PURE__*/ core.$constructor(\"$ZodFunction\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._def = def;\n inst._zod.def = def;\n inst.implement = (func) => {\n if (typeof func !== \"function\") {\n throw new Error(\"implement() must be called with a function\");\n }\n return function (...args) {\n const parsedArgs = inst._def.input ? parse(inst._def.input, args) : args;\n const result = Reflect.apply(func, this, parsedArgs);\n if (inst._def.output) {\n return parse(inst._def.output, result);\n }\n return result;\n };\n };\n inst.implementAsync = (func) => {\n if (typeof func !== \"function\") {\n throw new Error(\"implementAsync() must be called with a function\");\n }\n return async function (...args) {\n const parsedArgs = inst._def.input ? await parseAsync(inst._def.input, args) : args;\n const result = await Reflect.apply(func, this, parsedArgs);\n if (inst._def.output) {\n return await parseAsync(inst._def.output, result);\n }\n return result;\n };\n };\n inst._zod.parse = (payload, _ctx) => {\n if (typeof payload.value !== \"function\") {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"function\",\n input: payload.value,\n inst,\n });\n return payload;\n }\n // Check if output is a promise type to determine if we should use async implementation\n const hasPromiseOutput = inst._def.output && inst._def.output._zod.def.type === \"promise\";\n if (hasPromiseOutput) {\n payload.value = inst.implementAsync(payload.value);\n }\n else {\n payload.value = inst.implement(payload.value);\n }\n return payload;\n };\n inst.input = (...args) => {\n const F = inst.constructor;\n if (Array.isArray(args[0])) {\n return new F({\n type: \"function\",\n input: new $ZodTuple({\n type: \"tuple\",\n items: args[0],\n rest: args[1],\n }),\n output: inst._def.output,\n });\n }\n return new F({\n type: \"function\",\n input: args[0],\n output: inst._def.output,\n });\n };\n inst.output = (output) => {\n const F = inst.constructor;\n return new F({\n type: \"function\",\n input: inst._def.input,\n output,\n });\n };\n return inst;\n});\nexport const $ZodPromise = /*@__PURE__*/ core.$constructor(\"$ZodPromise\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n return Promise.resolve(payload.value).then((inner) => def.innerType._zod.run({ value: inner, issues: [] }, ctx));\n };\n});\nexport const $ZodLazy = /*@__PURE__*/ core.$constructor(\"$ZodLazy\", (inst, def) => {\n $ZodType.init(inst, def);\n // let _innerType!: any;\n // util.defineLazy(def, \"getter\", () => {\n // if (!_innerType) {\n // _innerType = def.getter();\n // }\n // return () => _innerType;\n // });\n util.defineLazy(inst._zod, \"innerType\", () => def.getter());\n util.defineLazy(inst._zod, \"pattern\", () => inst._zod.innerType._zod.pattern);\n util.defineLazy(inst._zod, \"propValues\", () => inst._zod.innerType._zod.propValues);\n util.defineLazy(inst._zod, \"optin\", () => inst._zod.innerType._zod.optin ?? undefined);\n util.defineLazy(inst._zod, \"optout\", () => inst._zod.innerType._zod.optout ?? undefined);\n inst._zod.parse = (payload, ctx) => {\n const inner = inst._zod.innerType;\n return inner._zod.run(payload, ctx);\n };\n});\nexport const $ZodCustom = /*@__PURE__*/ core.$constructor(\"$ZodCustom\", (inst, def) => {\n checks.$ZodCheck.init(inst, def);\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _) => {\n return payload;\n };\n inst._zod.check = (payload) => {\n const input = payload.value;\n const r = def.fn(input);\n if (r instanceof Promise) {\n return r.then((r) => handleRefineResult(r, payload, input, inst));\n }\n handleRefineResult(r, payload, input, inst);\n return;\n };\n});\nfunction handleRefineResult(result, payload, input, inst) {\n if (!result) {\n const _iss = {\n code: \"custom\",\n input,\n inst, // incorporates params.error into issue reporting\n path: [...(inst._zod.def.path ?? [])], // incorporates params.error into issue reporting\n continue: !inst._zod.def.abort,\n // params: inst._zod.def.params,\n };\n if (inst._zod.def.params)\n _iss.params = inst._zod.def.params;\n payload.issues.push(util.issue(_iss));\n }\n}\n","export const $output = Symbol(\"ZodOutput\");\nexport const $input = Symbol(\"ZodInput\");\nexport class $ZodRegistry {\n constructor() {\n this._map = new WeakMap();\n this._idmap = new Map();\n }\n add(schema, ..._meta) {\n const meta = _meta[0];\n this._map.set(schema, meta);\n if (meta && typeof meta === \"object\" && \"id\" in meta) {\n if (this._idmap.has(meta.id)) {\n throw new Error(`ID ${meta.id} already exists in the registry`);\n }\n this._idmap.set(meta.id, schema);\n }\n return this;\n }\n clear() {\n this._map = new WeakMap();\n this._idmap = new Map();\n return this;\n }\n remove(schema) {\n const meta = this._map.get(schema);\n if (meta && typeof meta === \"object\" && \"id\" in meta) {\n this._idmap.delete(meta.id);\n }\n this._map.delete(schema);\n return this;\n }\n get(schema) {\n // return this._map.get(schema) as any;\n // inherit metadata\n const p = schema._zod.parent;\n if (p) {\n const pm = { ...(this.get(p) ?? {}) };\n delete pm.id; // do not inherit id\n const f = { ...pm, ...this._map.get(schema) };\n return Object.keys(f).length ? f : undefined;\n }\n return this._map.get(schema);\n }\n has(schema) {\n return this._map.has(schema);\n }\n}\n// registries\nexport function registry() {\n return new $ZodRegistry();\n}\nexport const globalRegistry = /*@__PURE__*/ registry();\n","import * as checks from \"./checks.js\";\nimport * as schemas from \"./schemas.js\";\nimport * as util from \"./util.js\";\nexport function _string(Class, params) {\n return new Class({\n type: \"string\",\n ...util.normalizeParams(params),\n });\n}\nexport function _coercedString(Class, params) {\n return new Class({\n type: \"string\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\nexport function _email(Class, params) {\n return new Class({\n type: \"string\",\n format: \"email\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _guid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"guid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _uuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _uuidv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v4\",\n ...util.normalizeParams(params),\n });\n}\nexport function _uuidv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v6\",\n ...util.normalizeParams(params),\n });\n}\nexport function _uuidv7(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v7\",\n ...util.normalizeParams(params),\n });\n}\nexport function _url(Class, params) {\n return new Class({\n type: \"string\",\n format: \"url\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _emoji(Class, params) {\n return new Class({\n type: \"string\",\n format: \"emoji\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _nanoid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"nanoid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _cuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cuid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _cuid2(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cuid2\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _ulid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ulid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _xid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"xid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _ksuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ksuid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _ipv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ipv4\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _ipv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ipv6\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _cidrv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cidrv4\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _cidrv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cidrv6\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _base64(Class, params) {\n return new Class({\n type: \"string\",\n format: \"base64\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _base64url(Class, params) {\n return new Class({\n type: \"string\",\n format: \"base64url\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _e164(Class, params) {\n return new Class({\n type: \"string\",\n format: \"e164\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _jwt(Class, params) {\n return new Class({\n type: \"string\",\n format: \"jwt\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport const TimePrecision = {\n Any: null,\n Minute: -1,\n Second: 0,\n Millisecond: 3,\n Microsecond: 6,\n};\nexport function _isoDateTime(Class, params) {\n return new Class({\n type: \"string\",\n format: \"datetime\",\n check: \"string_format\",\n offset: false,\n local: false,\n precision: null,\n ...util.normalizeParams(params),\n });\n}\nexport function _isoDate(Class, params) {\n return new Class({\n type: \"string\",\n format: \"date\",\n check: \"string_format\",\n ...util.normalizeParams(params),\n });\n}\nexport function _isoTime(Class, params) {\n return new Class({\n type: \"string\",\n format: \"time\",\n check: \"string_format\",\n precision: null,\n ...util.normalizeParams(params),\n });\n}\nexport function _isoDuration(Class, params) {\n return new Class({\n type: \"string\",\n format: \"duration\",\n check: \"string_format\",\n ...util.normalizeParams(params),\n });\n}\nexport function _number(Class, params) {\n return new Class({\n type: \"number\",\n checks: [],\n ...util.normalizeParams(params),\n });\n}\nexport function _coercedNumber(Class, params) {\n return new Class({\n type: \"number\",\n coerce: true,\n checks: [],\n ...util.normalizeParams(params),\n });\n}\nexport function _int(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"safeint\",\n ...util.normalizeParams(params),\n });\n}\nexport function _float32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"float32\",\n ...util.normalizeParams(params),\n });\n}\nexport function _float64(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"float64\",\n ...util.normalizeParams(params),\n });\n}\nexport function _int32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"int32\",\n ...util.normalizeParams(params),\n });\n}\nexport function _uint32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"uint32\",\n ...util.normalizeParams(params),\n });\n}\nexport function _boolean(Class, params) {\n return new Class({\n type: \"boolean\",\n ...util.normalizeParams(params),\n });\n}\nexport function _coercedBoolean(Class, params) {\n return new Class({\n type: \"boolean\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\nexport function _bigint(Class, params) {\n return new Class({\n type: \"bigint\",\n ...util.normalizeParams(params),\n });\n}\nexport function _coercedBigint(Class, params) {\n return new Class({\n type: \"bigint\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\nexport function _int64(Class, params) {\n return new Class({\n type: \"bigint\",\n check: \"bigint_format\",\n abort: false,\n format: \"int64\",\n ...util.normalizeParams(params),\n });\n}\nexport function _uint64(Class, params) {\n return new Class({\n type: \"bigint\",\n check: \"bigint_format\",\n abort: false,\n format: \"uint64\",\n ...util.normalizeParams(params),\n });\n}\nexport function _symbol(Class, params) {\n return new Class({\n type: \"symbol\",\n ...util.normalizeParams(params),\n });\n}\nexport function _undefined(Class, params) {\n return new Class({\n type: \"undefined\",\n ...util.normalizeParams(params),\n });\n}\nexport function _null(Class, params) {\n return new Class({\n type: \"null\",\n ...util.normalizeParams(params),\n });\n}\nexport function _any(Class) {\n return new Class({\n type: \"any\",\n });\n}\nexport function _unknown(Class) {\n return new Class({\n type: \"unknown\",\n });\n}\nexport function _never(Class, params) {\n return new Class({\n type: \"never\",\n ...util.normalizeParams(params),\n });\n}\nexport function _void(Class, params) {\n return new Class({\n type: \"void\",\n ...util.normalizeParams(params),\n });\n}\nexport function _date(Class, params) {\n return new Class({\n type: \"date\",\n ...util.normalizeParams(params),\n });\n}\nexport function _coercedDate(Class, params) {\n return new Class({\n type: \"date\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\nexport function _nan(Class, params) {\n return new Class({\n type: \"nan\",\n ...util.normalizeParams(params),\n });\n}\nexport function _lt(value, params) {\n return new checks.$ZodCheckLessThan({\n check: \"less_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: false,\n });\n}\nexport function _lte(value, params) {\n return new checks.$ZodCheckLessThan({\n check: \"less_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: true,\n });\n}\nexport { \n/** @deprecated Use `z.lte()` instead. */\n_lte as _max, };\nexport function _gt(value, params) {\n return new checks.$ZodCheckGreaterThan({\n check: \"greater_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: false,\n });\n}\nexport function _gte(value, params) {\n return new checks.$ZodCheckGreaterThan({\n check: \"greater_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: true,\n });\n}\nexport { \n/** @deprecated Use `z.gte()` instead. */\n_gte as _min, };\nexport function _positive(params) {\n return _gt(0, params);\n}\n// negative\nexport function _negative(params) {\n return _lt(0, params);\n}\n// nonpositive\nexport function _nonpositive(params) {\n return _lte(0, params);\n}\n// nonnegative\nexport function _nonnegative(params) {\n return _gte(0, params);\n}\nexport function _multipleOf(value, params) {\n return new checks.$ZodCheckMultipleOf({\n check: \"multiple_of\",\n ...util.normalizeParams(params),\n value,\n });\n}\nexport function _maxSize(maximum, params) {\n return new checks.$ZodCheckMaxSize({\n check: \"max_size\",\n ...util.normalizeParams(params),\n maximum,\n });\n}\nexport function _minSize(minimum, params) {\n return new checks.$ZodCheckMinSize({\n check: \"min_size\",\n ...util.normalizeParams(params),\n minimum,\n });\n}\nexport function _size(size, params) {\n return new checks.$ZodCheckSizeEquals({\n check: \"size_equals\",\n ...util.normalizeParams(params),\n size,\n });\n}\nexport function _maxLength(maximum, params) {\n const ch = new checks.$ZodCheckMaxLength({\n check: \"max_length\",\n ...util.normalizeParams(params),\n maximum,\n });\n return ch;\n}\nexport function _minLength(minimum, params) {\n return new checks.$ZodCheckMinLength({\n check: \"min_length\",\n ...util.normalizeParams(params),\n minimum,\n });\n}\nexport function _length(length, params) {\n return new checks.$ZodCheckLengthEquals({\n check: \"length_equals\",\n ...util.normalizeParams(params),\n length,\n });\n}\nexport function _regex(pattern, params) {\n return new checks.$ZodCheckRegex({\n check: \"string_format\",\n format: \"regex\",\n ...util.normalizeParams(params),\n pattern,\n });\n}\nexport function _lowercase(params) {\n return new checks.$ZodCheckLowerCase({\n check: \"string_format\",\n format: \"lowercase\",\n ...util.normalizeParams(params),\n });\n}\nexport function _uppercase(params) {\n return new checks.$ZodCheckUpperCase({\n check: \"string_format\",\n format: \"uppercase\",\n ...util.normalizeParams(params),\n });\n}\nexport function _includes(includes, params) {\n return new checks.$ZodCheckIncludes({\n check: \"string_format\",\n format: \"includes\",\n ...util.normalizeParams(params),\n includes,\n });\n}\nexport function _startsWith(prefix, params) {\n return new checks.$ZodCheckStartsWith({\n check: \"string_format\",\n format: \"starts_with\",\n ...util.normalizeParams(params),\n prefix,\n });\n}\nexport function _endsWith(suffix, params) {\n return new checks.$ZodCheckEndsWith({\n check: \"string_format\",\n format: \"ends_with\",\n ...util.normalizeParams(params),\n suffix,\n });\n}\nexport function _property(property, schema, params) {\n return new checks.$ZodCheckProperty({\n check: \"property\",\n property,\n schema,\n ...util.normalizeParams(params),\n });\n}\nexport function _mime(types, params) {\n return new checks.$ZodCheckMimeType({\n check: \"mime_type\",\n mime: types,\n ...util.normalizeParams(params),\n });\n}\nexport function _overwrite(tx) {\n return new checks.$ZodCheckOverwrite({\n check: \"overwrite\",\n tx,\n });\n}\n// normalize\nexport function _normalize(form) {\n return _overwrite((input) => input.normalize(form));\n}\n// trim\nexport function _trim() {\n return _overwrite((input) => input.trim());\n}\n// toLowerCase\nexport function _toLowerCase() {\n return _overwrite((input) => input.toLowerCase());\n}\n// toUpperCase\nexport function _toUpperCase() {\n return _overwrite((input) => input.toUpperCase());\n}\nexport function _array(Class, element, params) {\n return new Class({\n type: \"array\",\n element,\n // get element() {\n // return element;\n // },\n ...util.normalizeParams(params),\n });\n}\nexport function _union(Class, options, params) {\n return new Class({\n type: \"union\",\n options,\n ...util.normalizeParams(params),\n });\n}\nexport function _discriminatedUnion(Class, discriminator, options, params) {\n return new Class({\n type: \"union\",\n options,\n discriminator,\n ...util.normalizeParams(params),\n });\n}\nexport function _intersection(Class, left, right) {\n return new Class({\n type: \"intersection\",\n left,\n right,\n });\n}\n// export function _tuple(\n// Class: util.SchemaClass<schemas.$ZodTuple>,\n// items: [],\n// params?: string | $ZodTupleParams\n// ): schemas.$ZodTuple<[], null>;\nexport function _tuple(Class, items, _paramsOrRest, _params) {\n const hasRest = _paramsOrRest instanceof schemas.$ZodType;\n const params = hasRest ? _params : _paramsOrRest;\n const rest = hasRest ? _paramsOrRest : null;\n return new Class({\n type: \"tuple\",\n items,\n rest,\n ...util.normalizeParams(params),\n });\n}\nexport function _record(Class, keyType, valueType, params) {\n return new Class({\n type: \"record\",\n keyType,\n valueType,\n ...util.normalizeParams(params),\n });\n}\nexport function _map(Class, keyType, valueType, params) {\n return new Class({\n type: \"map\",\n keyType,\n valueType,\n ...util.normalizeParams(params),\n });\n}\nexport function _set(Class, valueType, params) {\n return new Class({\n type: \"set\",\n valueType,\n ...util.normalizeParams(params),\n });\n}\nexport function _enum(Class, values, params) {\n const entries = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values;\n // if (Array.isArray(values)) {\n // for (const value of values) {\n // entries[value] = value;\n // }\n // } else {\n // Object.assign(entries, values);\n // }\n // const entries: util.EnumLike = {};\n // for (const val of values) {\n // entries[val] = val;\n // }\n return new Class({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\n/** @deprecated This API has been merged into `z.enum()`. Use `z.enum()` instead.\n *\n * ```ts\n * enum Colors { red, green, blue }\n * z.enum(Colors);\n * ```\n */\nexport function _nativeEnum(Class, entries, params) {\n return new Class({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\nexport function _literal(Class, value, params) {\n return new Class({\n type: \"literal\",\n values: Array.isArray(value) ? value : [value],\n ...util.normalizeParams(params),\n });\n}\nexport function _file(Class, params) {\n return new Class({\n type: \"file\",\n ...util.normalizeParams(params),\n });\n}\nexport function _transform(Class, fn) {\n return new Class({\n type: \"transform\",\n transform: fn,\n });\n}\nexport function _optional(Class, innerType) {\n return new Class({\n type: \"optional\",\n innerType,\n });\n}\nexport function _nullable(Class, innerType) {\n return new Class({\n type: \"nullable\",\n innerType,\n });\n}\nexport function _default(Class, innerType, defaultValue) {\n return new Class({\n type: \"default\",\n innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n },\n });\n}\nexport function _nonoptional(Class, innerType, params) {\n return new Class({\n type: \"nonoptional\",\n innerType,\n ...util.normalizeParams(params),\n });\n}\nexport function _success(Class, innerType) {\n return new Class({\n type: \"success\",\n innerType,\n });\n}\nexport function _catch(Class, innerType, catchValue) {\n return new Class({\n type: \"catch\",\n innerType,\n catchValue: (typeof catchValue === \"function\" ? catchValue : () => catchValue),\n });\n}\nexport function _pipe(Class, in_, out) {\n return new Class({\n type: \"pipe\",\n in: in_,\n out,\n });\n}\nexport function _readonly(Class, innerType) {\n return new Class({\n type: \"readonly\",\n innerType,\n });\n}\nexport function _templateLiteral(Class, parts, params) {\n return new Class({\n type: \"template_literal\",\n parts,\n ...util.normalizeParams(params),\n });\n}\nexport function _lazy(Class, getter) {\n return new Class({\n type: \"lazy\",\n getter,\n });\n}\nexport function _promise(Class, innerType) {\n return new Class({\n type: \"promise\",\n innerType,\n });\n}\nexport function _custom(Class, fn, _params) {\n const norm = util.normalizeParams(_params);\n norm.abort ?? (norm.abort = true); // default to abort:false\n const schema = new Class({\n type: \"custom\",\n check: \"custom\",\n fn: fn,\n ...norm,\n });\n return schema;\n}\n// same as _custom but defaults to abort:false\nexport function _refine(Class, fn, _params) {\n const schema = new Class({\n type: \"custom\",\n check: \"custom\",\n fn: fn,\n ...util.normalizeParams(_params),\n });\n return schema;\n}\nexport function _superRefine(fn) {\n const ch = _check((payload) => {\n payload.addIssue = (issue) => {\n if (typeof issue === \"string\") {\n payload.issues.push(util.issue(issue, payload.value, ch._zod.def));\n }\n else {\n // for Zod 3 backwards compatibility\n const _issue = issue;\n if (_issue.fatal)\n _issue.continue = false;\n _issue.code ?? (_issue.code = \"custom\");\n _issue.input ?? (_issue.input = payload.value);\n _issue.inst ?? (_issue.inst = ch);\n _issue.continue ?? (_issue.continue = !ch._zod.def.abort); // abort is always undefined, so this is always true...\n payload.issues.push(util.issue(_issue));\n }\n };\n return fn(payload.value, payload);\n });\n return ch;\n}\nexport function _check(fn, params) {\n const ch = new checks.$ZodCheck({\n check: \"custom\",\n ...util.normalizeParams(params),\n });\n ch._zod.check = fn;\n return ch;\n}\nexport function _stringbool(Classes, _params) {\n const params = util.normalizeParams(_params);\n let truthyArray = params.truthy ?? [\"true\", \"1\", \"yes\", \"on\", \"y\", \"enabled\"];\n let falsyArray = params.falsy ?? [\"false\", \"0\", \"no\", \"off\", \"n\", \"disabled\"];\n if (params.case !== \"sensitive\") {\n truthyArray = truthyArray.map((v) => (typeof v === \"string\" ? v.toLowerCase() : v));\n falsyArray = falsyArray.map((v) => (typeof v === \"string\" ? v.toLowerCase() : v));\n }\n const truthySet = new Set(truthyArray);\n const falsySet = new Set(falsyArray);\n const _Codec = Classes.Codec ?? schemas.$ZodCodec;\n const _Boolean = Classes.Boolean ?? schemas.$ZodBoolean;\n const _String = Classes.String ?? schemas.$ZodString;\n const stringSchema = new _String({ type: \"string\", error: params.error });\n const booleanSchema = new _Boolean({ type: \"boolean\", error: params.error });\n const codec = new _Codec({\n type: \"pipe\",\n in: stringSchema,\n out: booleanSchema,\n transform: ((input, payload) => {\n let data = input;\n if (params.case !== \"sensitive\")\n data = data.toLowerCase();\n if (truthySet.has(data)) {\n return true;\n }\n else if (falsySet.has(data)) {\n return false;\n }\n else {\n payload.issues.push({\n code: \"invalid_value\",\n expected: \"stringbool\",\n values: [...truthySet, ...falsySet],\n input: payload.value,\n inst: codec,\n continue: false,\n });\n return {};\n }\n }),\n reverseTransform: ((input, _payload) => {\n if (input === true) {\n return truthyArray[0] || \"true\";\n }\n else {\n return falsyArray[0] || \"false\";\n }\n }),\n error: params.error,\n });\n return codec;\n}\nexport function _stringFormat(Class, format, fnOrRegex, _params = {}) {\n const params = util.normalizeParams(_params);\n const def = {\n ...util.normalizeParams(_params),\n check: \"string_format\",\n type: \"string\",\n format,\n fn: typeof fnOrRegex === \"function\" ? fnOrRegex : (val) => fnOrRegex.test(val),\n ...params,\n };\n if (fnOrRegex instanceof RegExp) {\n def.pattern = fnOrRegex;\n }\n const inst = new Class(def);\n return inst;\n}\n","import * as core from \"../core/index.js\";\nimport * as schemas from \"./schemas.js\";\nexport const ZodISODateTime = /*@__PURE__*/ core.$constructor(\"ZodISODateTime\", (inst, def) => {\n core.$ZodISODateTime.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function datetime(params) {\n return core._isoDateTime(ZodISODateTime, params);\n}\nexport const ZodISODate = /*@__PURE__*/ core.$constructor(\"ZodISODate\", (inst, def) => {\n core.$ZodISODate.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function date(params) {\n return core._isoDate(ZodISODate, params);\n}\nexport const ZodISOTime = /*@__PURE__*/ core.$constructor(\"ZodISOTime\", (inst, def) => {\n core.$ZodISOTime.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function time(params) {\n return core._isoTime(ZodISOTime, params);\n}\nexport const ZodISODuration = /*@__PURE__*/ core.$constructor(\"ZodISODuration\", (inst, def) => {\n core.$ZodISODuration.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function duration(params) {\n return core._isoDuration(ZodISODuration, params);\n}\n","import * as core from \"../core/index.js\";\nimport { $ZodError } from \"../core/index.js\";\nimport * as util from \"../core/util.js\";\nconst initializer = (inst, issues) => {\n $ZodError.init(inst, issues);\n inst.name = \"ZodError\";\n Object.defineProperties(inst, {\n format: {\n value: (mapper) => core.formatError(inst, mapper),\n // enumerable: false,\n },\n flatten: {\n value: (mapper) => core.flattenError(inst, mapper),\n // enumerable: false,\n },\n addIssue: {\n value: (issue) => {\n inst.issues.push(issue);\n inst.message = JSON.stringify(inst.issues, util.jsonStringifyReplacer, 2);\n },\n // enumerable: false,\n },\n addIssues: {\n value: (issues) => {\n inst.issues.push(...issues);\n inst.message = JSON.stringify(inst.issues, util.jsonStringifyReplacer, 2);\n },\n // enumerable: false,\n },\n isEmpty: {\n get() {\n return inst.issues.length === 0;\n },\n // enumerable: false,\n },\n });\n // Object.defineProperty(inst, \"isEmpty\", {\n // get() {\n // return inst.issues.length === 0;\n // },\n // });\n};\nexport const ZodError = core.$constructor(\"ZodError\", initializer);\nexport const ZodRealError = core.$constructor(\"ZodError\", initializer, {\n Parent: Error,\n});\n// /** @deprecated Use `z.core.$ZodErrorMapCtx` instead. */\n// export type ErrorMapCtx = core.$ZodErrorMapCtx;\n","import * as core from \"../core/index.js\";\nimport { ZodRealError } from \"./errors.js\";\nexport const parse = /* @__PURE__ */ core._parse(ZodRealError);\nexport const parseAsync = /* @__PURE__ */ core._parseAsync(ZodRealError);\nexport const safeParse = /* @__PURE__ */ core._safeParse(ZodRealError);\nexport const safeParseAsync = /* @__PURE__ */ core._safeParseAsync(ZodRealError);\n// Codec functions\nexport const encode = /* @__PURE__ */ core._encode(ZodRealError);\nexport const decode = /* @__PURE__ */ core._decode(ZodRealError);\nexport const encodeAsync = /* @__PURE__ */ core._encodeAsync(ZodRealError);\nexport const decodeAsync = /* @__PURE__ */ core._decodeAsync(ZodRealError);\nexport const safeEncode = /* @__PURE__ */ core._safeEncode(ZodRealError);\nexport const safeDecode = /* @__PURE__ */ core._safeDecode(ZodRealError);\nexport const safeEncodeAsync = /* @__PURE__ */ core._safeEncodeAsync(ZodRealError);\nexport const safeDecodeAsync = /* @__PURE__ */ core._safeDecodeAsync(ZodRealError);\n","import * as core from \"../core/index.js\";\nimport { util } from \"../core/index.js\";\nimport * as checks from \"./checks.js\";\nimport * as iso from \"./iso.js\";\nimport * as parse from \"./parse.js\";\nexport const ZodType = /*@__PURE__*/ core.$constructor(\"ZodType\", (inst, def) => {\n core.$ZodType.init(inst, def);\n inst.def = def;\n inst.type = def.type;\n Object.defineProperty(inst, \"_def\", { value: def });\n // base methods\n inst.check = (...checks) => {\n return inst.clone(util.mergeDefs(def, {\n checks: [\n ...(def.checks ?? []),\n ...checks.map((ch) => typeof ch === \"function\" ? { _zod: { check: ch, def: { check: \"custom\" }, onattach: [] } } : ch),\n ],\n }));\n };\n inst.clone = (def, params) => core.clone(inst, def, params);\n inst.brand = () => inst;\n inst.register = ((reg, meta) => {\n reg.add(inst, meta);\n return inst;\n });\n // parsing\n inst.parse = (data, params) => parse.parse(inst, data, params, { callee: inst.parse });\n inst.safeParse = (data, params) => parse.safeParse(inst, data, params);\n inst.parseAsync = async (data, params) => parse.parseAsync(inst, data, params, { callee: inst.parseAsync });\n inst.safeParseAsync = async (data, params) => parse.safeParseAsync(inst, data, params);\n inst.spa = inst.safeParseAsync;\n // encoding/decoding\n inst.encode = (data, params) => parse.encode(inst, data, params);\n inst.decode = (data, params) => parse.decode(inst, data, params);\n inst.encodeAsync = async (data, params) => parse.encodeAsync(inst, data, params);\n inst.decodeAsync = async (data, params) => parse.decodeAsync(inst, data, params);\n inst.safeEncode = (data, params) => parse.safeEncode(inst, data, params);\n inst.safeDecode = (data, params) => parse.safeDecode(inst, data, params);\n inst.safeEncodeAsync = async (data, params) => parse.safeEncodeAsync(inst, data, params);\n inst.safeDecodeAsync = async (data, params) => parse.safeDecodeAsync(inst, data, params);\n // refinements\n inst.refine = (check, params) => inst.check(refine(check, params));\n inst.superRefine = (refinement) => inst.check(superRefine(refinement));\n inst.overwrite = (fn) => inst.check(checks.overwrite(fn));\n // wrappers\n inst.optional = () => optional(inst);\n inst.nullable = () => nullable(inst);\n inst.nullish = () => optional(nullable(inst));\n inst.nonoptional = (params) => nonoptional(inst, params);\n inst.array = () => array(inst);\n inst.or = (arg) => union([inst, arg]);\n inst.and = (arg) => intersection(inst, arg);\n inst.transform = (tx) => pipe(inst, transform(tx));\n inst.default = (def) => _default(inst, def);\n inst.prefault = (def) => prefault(inst, def);\n // inst.coalesce = (def, params) => coalesce(inst, def, params);\n inst.catch = (params) => _catch(inst, params);\n inst.pipe = (target) => pipe(inst, target);\n inst.readonly = () => readonly(inst);\n // meta\n inst.describe = (description) => {\n const cl = inst.clone();\n core.globalRegistry.add(cl, { description });\n return cl;\n };\n Object.defineProperty(inst, \"description\", {\n get() {\n return core.globalRegistry.get(inst)?.description;\n },\n configurable: true,\n });\n inst.meta = (...args) => {\n if (args.length === 0) {\n return core.globalRegistry.get(inst);\n }\n const cl = inst.clone();\n core.globalRegistry.add(cl, args[0]);\n return cl;\n };\n // helpers\n inst.isOptional = () => inst.safeParse(undefined).success;\n inst.isNullable = () => inst.safeParse(null).success;\n return inst;\n});\n/** @internal */\nexport const _ZodString = /*@__PURE__*/ core.$constructor(\"_ZodString\", (inst, def) => {\n core.$ZodString.init(inst, def);\n ZodType.init(inst, def);\n const bag = inst._zod.bag;\n inst.format = bag.format ?? null;\n inst.minLength = bag.minimum ?? null;\n inst.maxLength = bag.maximum ?? null;\n // validations\n inst.regex = (...args) => inst.check(checks.regex(...args));\n inst.includes = (...args) => inst.check(checks.includes(...args));\n inst.startsWith = (...args) => inst.check(checks.startsWith(...args));\n inst.endsWith = (...args) => inst.check(checks.endsWith(...args));\n inst.min = (...args) => inst.check(checks.minLength(...args));\n inst.max = (...args) => inst.check(checks.maxLength(...args));\n inst.length = (...args) => inst.check(checks.length(...args));\n inst.nonempty = (...args) => inst.check(checks.minLength(1, ...args));\n inst.lowercase = (params) => inst.check(checks.lowercase(params));\n inst.uppercase = (params) => inst.check(checks.uppercase(params));\n // transforms\n inst.trim = () => inst.check(checks.trim());\n inst.normalize = (...args) => inst.check(checks.normalize(...args));\n inst.toLowerCase = () => inst.check(checks.toLowerCase());\n inst.toUpperCase = () => inst.check(checks.toUpperCase());\n});\nexport const ZodString = /*@__PURE__*/ core.$constructor(\"ZodString\", (inst, def) => {\n core.$ZodString.init(inst, def);\n _ZodString.init(inst, def);\n inst.email = (params) => inst.check(core._email(ZodEmail, params));\n inst.url = (params) => inst.check(core._url(ZodURL, params));\n inst.jwt = (params) => inst.check(core._jwt(ZodJWT, params));\n inst.emoji = (params) => inst.check(core._emoji(ZodEmoji, params));\n inst.guid = (params) => inst.check(core._guid(ZodGUID, params));\n inst.uuid = (params) => inst.check(core._uuid(ZodUUID, params));\n inst.uuidv4 = (params) => inst.check(core._uuidv4(ZodUUID, params));\n inst.uuidv6 = (params) => inst.check(core._uuidv6(ZodUUID, params));\n inst.uuidv7 = (params) => inst.check(core._uuidv7(ZodUUID, params));\n inst.nanoid = (params) => inst.check(core._nanoid(ZodNanoID, params));\n inst.guid = (params) => inst.check(core._guid(ZodGUID, params));\n inst.cuid = (params) => inst.check(core._cuid(ZodCUID, params));\n inst.cuid2 = (params) => inst.check(core._cuid2(ZodCUID2, params));\n inst.ulid = (params) => inst.check(core._ulid(ZodULID, params));\n inst.base64 = (params) => inst.check(core._base64(ZodBase64, params));\n inst.base64url = (params) => inst.check(core._base64url(ZodBase64URL, params));\n inst.xid = (params) => inst.check(core._xid(ZodXID, params));\n inst.ksuid = (params) => inst.check(core._ksuid(ZodKSUID, params));\n inst.ipv4 = (params) => inst.check(core._ipv4(ZodIPv4, params));\n inst.ipv6 = (params) => inst.check(core._ipv6(ZodIPv6, params));\n inst.cidrv4 = (params) => inst.check(core._cidrv4(ZodCIDRv4, params));\n inst.cidrv6 = (params) => inst.check(core._cidrv6(ZodCIDRv6, params));\n inst.e164 = (params) => inst.check(core._e164(ZodE164, params));\n // iso\n inst.datetime = (params) => inst.check(iso.datetime(params));\n inst.date = (params) => inst.check(iso.date(params));\n inst.time = (params) => inst.check(iso.time(params));\n inst.duration = (params) => inst.check(iso.duration(params));\n});\nexport function string(params) {\n return core._string(ZodString, params);\n}\nexport const ZodStringFormat = /*@__PURE__*/ core.$constructor(\"ZodStringFormat\", (inst, def) => {\n core.$ZodStringFormat.init(inst, def);\n _ZodString.init(inst, def);\n});\nexport const ZodEmail = /*@__PURE__*/ core.$constructor(\"ZodEmail\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodEmail.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function email(params) {\n return core._email(ZodEmail, params);\n}\nexport const ZodGUID = /*@__PURE__*/ core.$constructor(\"ZodGUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodGUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function guid(params) {\n return core._guid(ZodGUID, params);\n}\nexport const ZodUUID = /*@__PURE__*/ core.$constructor(\"ZodUUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodUUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function uuid(params) {\n return core._uuid(ZodUUID, params);\n}\nexport function uuidv4(params) {\n return core._uuidv4(ZodUUID, params);\n}\n// ZodUUIDv6\nexport function uuidv6(params) {\n return core._uuidv6(ZodUUID, params);\n}\n// ZodUUIDv7\nexport function uuidv7(params) {\n return core._uuidv7(ZodUUID, params);\n}\nexport const ZodURL = /*@__PURE__*/ core.$constructor(\"ZodURL\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodURL.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function url(params) {\n return core._url(ZodURL, params);\n}\nexport function httpUrl(params) {\n return core._url(ZodURL, {\n protocol: /^https?$/,\n hostname: core.regexes.domain,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodEmoji = /*@__PURE__*/ core.$constructor(\"ZodEmoji\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodEmoji.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function emoji(params) {\n return core._emoji(ZodEmoji, params);\n}\nexport const ZodNanoID = /*@__PURE__*/ core.$constructor(\"ZodNanoID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodNanoID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function nanoid(params) {\n return core._nanoid(ZodNanoID, params);\n}\nexport const ZodCUID = /*@__PURE__*/ core.$constructor(\"ZodCUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodCUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cuid(params) {\n return core._cuid(ZodCUID, params);\n}\nexport const ZodCUID2 = /*@__PURE__*/ core.$constructor(\"ZodCUID2\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodCUID2.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cuid2(params) {\n return core._cuid2(ZodCUID2, params);\n}\nexport const ZodULID = /*@__PURE__*/ core.$constructor(\"ZodULID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodULID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ulid(params) {\n return core._ulid(ZodULID, params);\n}\nexport const ZodXID = /*@__PURE__*/ core.$constructor(\"ZodXID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodXID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function xid(params) {\n return core._xid(ZodXID, params);\n}\nexport const ZodKSUID = /*@__PURE__*/ core.$constructor(\"ZodKSUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodKSUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ksuid(params) {\n return core._ksuid(ZodKSUID, params);\n}\nexport const ZodIPv4 = /*@__PURE__*/ core.$constructor(\"ZodIPv4\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodIPv4.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ipv4(params) {\n return core._ipv4(ZodIPv4, params);\n}\nexport const ZodIPv6 = /*@__PURE__*/ core.$constructor(\"ZodIPv6\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodIPv6.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ipv6(params) {\n return core._ipv6(ZodIPv6, params);\n}\nexport const ZodCIDRv4 = /*@__PURE__*/ core.$constructor(\"ZodCIDRv4\", (inst, def) => {\n core.$ZodCIDRv4.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cidrv4(params) {\n return core._cidrv4(ZodCIDRv4, params);\n}\nexport const ZodCIDRv6 = /*@__PURE__*/ core.$constructor(\"ZodCIDRv6\", (inst, def) => {\n core.$ZodCIDRv6.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cidrv6(params) {\n return core._cidrv6(ZodCIDRv6, params);\n}\nexport const ZodBase64 = /*@__PURE__*/ core.$constructor(\"ZodBase64\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodBase64.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function base64(params) {\n return core._base64(ZodBase64, params);\n}\nexport const ZodBase64URL = /*@__PURE__*/ core.$constructor(\"ZodBase64URL\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodBase64URL.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function base64url(params) {\n return core._base64url(ZodBase64URL, params);\n}\nexport const ZodE164 = /*@__PURE__*/ core.$constructor(\"ZodE164\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodE164.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function e164(params) {\n return core._e164(ZodE164, params);\n}\nexport const ZodJWT = /*@__PURE__*/ core.$constructor(\"ZodJWT\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodJWT.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function jwt(params) {\n return core._jwt(ZodJWT, params);\n}\nexport const ZodCustomStringFormat = /*@__PURE__*/ core.$constructor(\"ZodCustomStringFormat\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodCustomStringFormat.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function stringFormat(format, fnOrRegex, _params = {}) {\n return core._stringFormat(ZodCustomStringFormat, format, fnOrRegex, _params);\n}\nexport function hostname(_params) {\n return core._stringFormat(ZodCustomStringFormat, \"hostname\", core.regexes.hostname, _params);\n}\nexport function hex(_params) {\n return core._stringFormat(ZodCustomStringFormat, \"hex\", core.regexes.hex, _params);\n}\nexport function hash(alg, params) {\n const enc = params?.enc ?? \"hex\";\n const format = `${alg}_${enc}`;\n const regex = core.regexes[format];\n if (!regex)\n throw new Error(`Unrecognized hash format: ${format}`);\n return core._stringFormat(ZodCustomStringFormat, format, regex, params);\n}\nexport const ZodNumber = /*@__PURE__*/ core.$constructor(\"ZodNumber\", (inst, def) => {\n core.$ZodNumber.init(inst, def);\n ZodType.init(inst, def);\n inst.gt = (value, params) => inst.check(checks.gt(value, params));\n inst.gte = (value, params) => inst.check(checks.gte(value, params));\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.lt = (value, params) => inst.check(checks.lt(value, params));\n inst.lte = (value, params) => inst.check(checks.lte(value, params));\n inst.max = (value, params) => inst.check(checks.lte(value, params));\n inst.int = (params) => inst.check(int(params));\n inst.safe = (params) => inst.check(int(params));\n inst.positive = (params) => inst.check(checks.gt(0, params));\n inst.nonnegative = (params) => inst.check(checks.gte(0, params));\n inst.negative = (params) => inst.check(checks.lt(0, params));\n inst.nonpositive = (params) => inst.check(checks.lte(0, params));\n inst.multipleOf = (value, params) => inst.check(checks.multipleOf(value, params));\n inst.step = (value, params) => inst.check(checks.multipleOf(value, params));\n // inst.finite = (params) => inst.check(core.finite(params));\n inst.finite = () => inst;\n const bag = inst._zod.bag;\n inst.minValue =\n Math.max(bag.minimum ?? Number.NEGATIVE_INFINITY, bag.exclusiveMinimum ?? Number.NEGATIVE_INFINITY) ?? null;\n inst.maxValue =\n Math.min(bag.maximum ?? Number.POSITIVE_INFINITY, bag.exclusiveMaximum ?? Number.POSITIVE_INFINITY) ?? null;\n inst.isInt = (bag.format ?? \"\").includes(\"int\") || Number.isSafeInteger(bag.multipleOf ?? 0.5);\n inst.isFinite = true;\n inst.format = bag.format ?? null;\n});\nexport function number(params) {\n return core._number(ZodNumber, params);\n}\nexport const ZodNumberFormat = /*@__PURE__*/ core.$constructor(\"ZodNumberFormat\", (inst, def) => {\n core.$ZodNumberFormat.init(inst, def);\n ZodNumber.init(inst, def);\n});\nexport function int(params) {\n return core._int(ZodNumberFormat, params);\n}\nexport function float32(params) {\n return core._float32(ZodNumberFormat, params);\n}\nexport function float64(params) {\n return core._float64(ZodNumberFormat, params);\n}\nexport function int32(params) {\n return core._int32(ZodNumberFormat, params);\n}\nexport function uint32(params) {\n return core._uint32(ZodNumberFormat, params);\n}\nexport const ZodBoolean = /*@__PURE__*/ core.$constructor(\"ZodBoolean\", (inst, def) => {\n core.$ZodBoolean.init(inst, def);\n ZodType.init(inst, def);\n});\nexport function boolean(params) {\n return core._boolean(ZodBoolean, params);\n}\nexport const ZodBigInt = /*@__PURE__*/ core.$constructor(\"ZodBigInt\", (inst, def) => {\n core.$ZodBigInt.init(inst, def);\n ZodType.init(inst, def);\n inst.gte = (value, params) => inst.check(checks.gte(value, params));\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.gt = (value, params) => inst.check(checks.gt(value, params));\n inst.gte = (value, params) => inst.check(checks.gte(value, params));\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.lt = (value, params) => inst.check(checks.lt(value, params));\n inst.lte = (value, params) => inst.check(checks.lte(value, params));\n inst.max = (value, params) => inst.check(checks.lte(value, params));\n inst.positive = (params) => inst.check(checks.gt(BigInt(0), params));\n inst.negative = (params) => inst.check(checks.lt(BigInt(0), params));\n inst.nonpositive = (params) => inst.check(checks.lte(BigInt(0), params));\n inst.nonnegative = (params) => inst.check(checks.gte(BigInt(0), params));\n inst.multipleOf = (value, params) => inst.check(checks.multipleOf(value, params));\n const bag = inst._zod.bag;\n inst.minValue = bag.minimum ?? null;\n inst.maxValue = bag.maximum ?? null;\n inst.format = bag.format ?? null;\n});\nexport function bigint(params) {\n return core._bigint(ZodBigInt, params);\n}\nexport const ZodBigIntFormat = /*@__PURE__*/ core.$constructor(\"ZodBigIntFormat\", (inst, def) => {\n core.$ZodBigIntFormat.init(inst, def);\n ZodBigInt.init(inst, def);\n});\n// int64\nexport function int64(params) {\n return core._int64(ZodBigIntFormat, params);\n}\n// uint64\nexport function uint64(params) {\n return core._uint64(ZodBigIntFormat, params);\n}\nexport const ZodSymbol = /*@__PURE__*/ core.$constructor(\"ZodSymbol\", (inst, def) => {\n core.$ZodSymbol.init(inst, def);\n ZodType.init(inst, def);\n});\nexport function symbol(params) {\n return core._symbol(ZodSymbol, params);\n}\nexport const ZodUndefined = /*@__PURE__*/ core.$constructor(\"ZodUndefined\", (inst, def) => {\n core.$ZodUndefined.init(inst, def);\n ZodType.init(inst, def);\n});\nfunction _undefined(params) {\n return core._undefined(ZodUndefined, params);\n}\nexport { _undefined as undefined };\nexport const ZodNull = /*@__PURE__*/ core.$constructor(\"ZodNull\", (inst, def) => {\n core.$ZodNull.init(inst, def);\n ZodType.init(inst, def);\n});\nfunction _null(params) {\n return core._null(ZodNull, params);\n}\nexport { _null as null };\nexport const ZodAny = /*@__PURE__*/ core.$constructor(\"ZodAny\", (inst, def) => {\n core.$ZodAny.init(inst, def);\n ZodType.init(inst, def);\n});\nexport function any() {\n return core._any(ZodAny);\n}\nexport const ZodUnknown = /*@__PURE__*/ core.$constructor(\"ZodUnknown\", (inst, def) => {\n core.$ZodUnknown.init(inst, def);\n ZodType.init(inst, def);\n});\nexport function unknown() {\n return core._unknown(ZodUnknown);\n}\nexport const ZodNever = /*@__PURE__*/ core.$constructor(\"ZodNever\", (inst, def) => {\n core.$ZodNever.init(inst, def);\n ZodType.init(inst, def);\n});\nexport function never(params) {\n return core._never(ZodNever, params);\n}\nexport const ZodVoid = /*@__PURE__*/ core.$constructor(\"ZodVoid\", (inst, def) => {\n core.$ZodVoid.init(inst, def);\n ZodType.init(inst, def);\n});\nfunction _void(params) {\n return core._void(ZodVoid, params);\n}\nexport { _void as void };\nexport const ZodDate = /*@__PURE__*/ core.$constructor(\"ZodDate\", (inst, def) => {\n core.$ZodDate.init(inst, def);\n ZodType.init(inst, def);\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.max = (value, params) => inst.check(checks.lte(value, params));\n const c = inst._zod.bag;\n inst.minDate = c.minimum ? new Date(c.minimum) : null;\n inst.maxDate = c.maximum ? new Date(c.maximum) : null;\n});\nexport function date(params) {\n return core._date(ZodDate, params);\n}\nexport const ZodArray = /*@__PURE__*/ core.$constructor(\"ZodArray\", (inst, def) => {\n core.$ZodArray.init(inst, def);\n ZodType.init(inst, def);\n inst.element = def.element;\n inst.min = (minLength, params) => inst.check(checks.minLength(minLength, params));\n inst.nonempty = (params) => inst.check(checks.minLength(1, params));\n inst.max = (maxLength, params) => inst.check(checks.maxLength(maxLength, params));\n inst.length = (len, params) => inst.check(checks.length(len, params));\n inst.unwrap = () => inst.element;\n});\nexport function array(element, params) {\n return core._array(ZodArray, element, params);\n}\n// .keyof\nexport function keyof(schema) {\n const shape = schema._zod.def.shape;\n return _enum(Object.keys(shape));\n}\nexport const ZodObject = /*@__PURE__*/ core.$constructor(\"ZodObject\", (inst, def) => {\n core.$ZodObjectJIT.init(inst, def);\n ZodType.init(inst, def);\n util.defineLazy(inst, \"shape\", () => {\n return def.shape;\n });\n inst.keyof = () => _enum(Object.keys(inst._zod.def.shape));\n inst.catchall = (catchall) => inst.clone({ ...inst._zod.def, catchall: catchall });\n inst.passthrough = () => inst.clone({ ...inst._zod.def, catchall: unknown() });\n inst.loose = () => inst.clone({ ...inst._zod.def, catchall: unknown() });\n inst.strict = () => inst.clone({ ...inst._zod.def, catchall: never() });\n inst.strip = () => inst.clone({ ...inst._zod.def, catchall: undefined });\n inst.extend = (incoming) => {\n return util.extend(inst, incoming);\n };\n inst.safeExtend = (incoming) => {\n return util.safeExtend(inst, incoming);\n };\n inst.merge = (other) => util.merge(inst, other);\n inst.pick = (mask) => util.pick(inst, mask);\n inst.omit = (mask) => util.omit(inst, mask);\n inst.partial = (...args) => util.partial(ZodOptional, inst, args[0]);\n inst.required = (...args) => util.required(ZodNonOptional, inst, args[0]);\n});\nexport function object(shape, params) {\n const def = {\n type: \"object\",\n shape: shape ?? {},\n ...util.normalizeParams(params),\n };\n return new ZodObject(def);\n}\n// strictObject\nexport function strictObject(shape, params) {\n return new ZodObject({\n type: \"object\",\n shape,\n catchall: never(),\n ...util.normalizeParams(params),\n });\n}\n// looseObject\nexport function looseObject(shape, params) {\n return new ZodObject({\n type: \"object\",\n shape,\n catchall: unknown(),\n ...util.normalizeParams(params),\n });\n}\nexport const ZodUnion = /*@__PURE__*/ core.$constructor(\"ZodUnion\", (inst, def) => {\n core.$ZodUnion.init(inst, def);\n ZodType.init(inst, def);\n inst.options = def.options;\n});\nexport function union(options, params) {\n return new ZodUnion({\n type: \"union\",\n options: options,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodDiscriminatedUnion = /*@__PURE__*/ core.$constructor(\"ZodDiscriminatedUnion\", (inst, def) => {\n ZodUnion.init(inst, def);\n core.$ZodDiscriminatedUnion.init(inst, def);\n});\nexport function discriminatedUnion(discriminator, options, params) {\n // const [options, params] = args;\n return new ZodDiscriminatedUnion({\n type: \"union\",\n options,\n discriminator,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodIntersection = /*@__PURE__*/ core.$constructor(\"ZodIntersection\", (inst, def) => {\n core.$ZodIntersection.init(inst, def);\n ZodType.init(inst, def);\n});\nexport function intersection(left, right) {\n return new ZodIntersection({\n type: \"intersection\",\n left: left,\n right: right,\n });\n}\nexport const ZodTuple = /*@__PURE__*/ core.$constructor(\"ZodTuple\", (inst, def) => {\n core.$ZodTuple.init(inst, def);\n ZodType.init(inst, def);\n inst.rest = (rest) => inst.clone({\n ...inst._zod.def,\n rest: rest,\n });\n});\nexport function tuple(items, _paramsOrRest, _params) {\n const hasRest = _paramsOrRest instanceof core.$ZodType;\n const params = hasRest ? _params : _paramsOrRest;\n const rest = hasRest ? _paramsOrRest : null;\n return new ZodTuple({\n type: \"tuple\",\n items: items,\n rest,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodRecord = /*@__PURE__*/ core.$constructor(\"ZodRecord\", (inst, def) => {\n core.$ZodRecord.init(inst, def);\n ZodType.init(inst, def);\n inst.keyType = def.keyType;\n inst.valueType = def.valueType;\n});\nexport function record(keyType, valueType, params) {\n return new ZodRecord({\n type: \"record\",\n keyType,\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\n// type alksjf = core.output<core.$ZodRecordKey>;\nexport function partialRecord(keyType, valueType, params) {\n const k = core.clone(keyType);\n k._zod.values = undefined;\n return new ZodRecord({\n type: \"record\",\n keyType: k,\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodMap = /*@__PURE__*/ core.$constructor(\"ZodMap\", (inst, def) => {\n core.$ZodMap.init(inst, def);\n ZodType.init(inst, def);\n inst.keyType = def.keyType;\n inst.valueType = def.valueType;\n});\nexport function map(keyType, valueType, params) {\n return new ZodMap({\n type: \"map\",\n keyType: keyType,\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodSet = /*@__PURE__*/ core.$constructor(\"ZodSet\", (inst, def) => {\n core.$ZodSet.init(inst, def);\n ZodType.init(inst, def);\n inst.min = (...args) => inst.check(core._minSize(...args));\n inst.nonempty = (params) => inst.check(core._minSize(1, params));\n inst.max = (...args) => inst.check(core._maxSize(...args));\n inst.size = (...args) => inst.check(core._size(...args));\n});\nexport function set(valueType, params) {\n return new ZodSet({\n type: \"set\",\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodEnum = /*@__PURE__*/ core.$constructor(\"ZodEnum\", (inst, def) => {\n core.$ZodEnum.init(inst, def);\n ZodType.init(inst, def);\n inst.enum = def.entries;\n inst.options = Object.values(def.entries);\n const keys = new Set(Object.keys(def.entries));\n inst.extract = (values, params) => {\n const newEntries = {};\n for (const value of values) {\n if (keys.has(value)) {\n newEntries[value] = def.entries[value];\n }\n else\n throw new Error(`Key ${value} not found in enum`);\n }\n return new ZodEnum({\n ...def,\n checks: [],\n ...util.normalizeParams(params),\n entries: newEntries,\n });\n };\n inst.exclude = (values, params) => {\n const newEntries = { ...def.entries };\n for (const value of values) {\n if (keys.has(value)) {\n delete newEntries[value];\n }\n else\n throw new Error(`Key ${value} not found in enum`);\n }\n return new ZodEnum({\n ...def,\n checks: [],\n ...util.normalizeParams(params),\n entries: newEntries,\n });\n };\n});\nfunction _enum(values, params) {\n const entries = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values;\n return new ZodEnum({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\nexport { _enum as enum };\n/** @deprecated This API has been merged into `z.enum()`. Use `z.enum()` instead.\n *\n * ```ts\n * enum Colors { red, green, blue }\n * z.enum(Colors);\n * ```\n */\nexport function nativeEnum(entries, params) {\n return new ZodEnum({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodLiteral = /*@__PURE__*/ core.$constructor(\"ZodLiteral\", (inst, def) => {\n core.$ZodLiteral.init(inst, def);\n ZodType.init(inst, def);\n inst.values = new Set(def.values);\n Object.defineProperty(inst, \"value\", {\n get() {\n if (def.values.length > 1) {\n throw new Error(\"This schema contains multiple valid literal values. Use `.values` instead.\");\n }\n return def.values[0];\n },\n });\n});\nexport function literal(value, params) {\n return new ZodLiteral({\n type: \"literal\",\n values: Array.isArray(value) ? value : [value],\n ...util.normalizeParams(params),\n });\n}\nexport const ZodFile = /*@__PURE__*/ core.$constructor(\"ZodFile\", (inst, def) => {\n core.$ZodFile.init(inst, def);\n ZodType.init(inst, def);\n inst.min = (size, params) => inst.check(core._minSize(size, params));\n inst.max = (size, params) => inst.check(core._maxSize(size, params));\n inst.mime = (types, params) => inst.check(core._mime(Array.isArray(types) ? types : [types], params));\n});\nexport function file(params) {\n return core._file(ZodFile, params);\n}\nexport const ZodTransform = /*@__PURE__*/ core.$constructor(\"ZodTransform\", (inst, def) => {\n core.$ZodTransform.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n if (_ctx.direction === \"backward\") {\n throw new core.$ZodEncodeError(inst.constructor.name);\n }\n payload.addIssue = (issue) => {\n if (typeof issue === \"string\") {\n payload.issues.push(util.issue(issue, payload.value, def));\n }\n else {\n // for Zod 3 backwards compatibility\n const _issue = issue;\n if (_issue.fatal)\n _issue.continue = false;\n _issue.code ?? (_issue.code = \"custom\");\n _issue.input ?? (_issue.input = payload.value);\n _issue.inst ?? (_issue.inst = inst);\n // _issue.continue ??= true;\n payload.issues.push(util.issue(_issue));\n }\n };\n const output = def.transform(payload.value, payload);\n if (output instanceof Promise) {\n return output.then((output) => {\n payload.value = output;\n return payload;\n });\n }\n payload.value = output;\n return payload;\n };\n});\nexport function transform(fn) {\n return new ZodTransform({\n type: \"transform\",\n transform: fn,\n });\n}\nexport const ZodOptional = /*@__PURE__*/ core.$constructor(\"ZodOptional\", (inst, def) => {\n core.$ZodOptional.init(inst, def);\n ZodType.init(inst, def);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function optional(innerType) {\n return new ZodOptional({\n type: \"optional\",\n innerType: innerType,\n });\n}\nexport const ZodNullable = /*@__PURE__*/ core.$constructor(\"ZodNullable\", (inst, def) => {\n core.$ZodNullable.init(inst, def);\n ZodType.init(inst, def);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function nullable(innerType) {\n return new ZodNullable({\n type: \"nullable\",\n innerType: innerType,\n });\n}\n// nullish\nexport function nullish(innerType) {\n return optional(nullable(innerType));\n}\nexport const ZodDefault = /*@__PURE__*/ core.$constructor(\"ZodDefault\", (inst, def) => {\n core.$ZodDefault.init(inst, def);\n ZodType.init(inst, def);\n inst.unwrap = () => inst._zod.def.innerType;\n inst.removeDefault = inst.unwrap;\n});\nexport function _default(innerType, defaultValue) {\n return new ZodDefault({\n type: \"default\",\n innerType: innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n },\n });\n}\nexport const ZodPrefault = /*@__PURE__*/ core.$constructor(\"ZodPrefault\", (inst, def) => {\n core.$ZodPrefault.init(inst, def);\n ZodType.init(inst, def);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function prefault(innerType, defaultValue) {\n return new ZodPrefault({\n type: \"prefault\",\n innerType: innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n },\n });\n}\nexport const ZodNonOptional = /*@__PURE__*/ core.$constructor(\"ZodNonOptional\", (inst, def) => {\n core.$ZodNonOptional.init(inst, def);\n ZodType.init(inst, def);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function nonoptional(innerType, params) {\n return new ZodNonOptional({\n type: \"nonoptional\",\n innerType: innerType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodSuccess = /*@__PURE__*/ core.$constructor(\"ZodSuccess\", (inst, def) => {\n core.$ZodSuccess.init(inst, def);\n ZodType.init(inst, def);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function success(innerType) {\n return new ZodSuccess({\n type: \"success\",\n innerType: innerType,\n });\n}\nexport const ZodCatch = /*@__PURE__*/ core.$constructor(\"ZodCatch\", (inst, def) => {\n core.$ZodCatch.init(inst, def);\n ZodType.init(inst, def);\n inst.unwrap = () => inst._zod.def.innerType;\n inst.removeCatch = inst.unwrap;\n});\nfunction _catch(innerType, catchValue) {\n return new ZodCatch({\n type: \"catch\",\n innerType: innerType,\n catchValue: (typeof catchValue === \"function\" ? catchValue : () => catchValue),\n });\n}\nexport { _catch as catch };\nexport const ZodNaN = /*@__PURE__*/ core.$constructor(\"ZodNaN\", (inst, def) => {\n core.$ZodNaN.init(inst, def);\n ZodType.init(inst, def);\n});\nexport function nan(params) {\n return core._nan(ZodNaN, params);\n}\nexport const ZodPipe = /*@__PURE__*/ core.$constructor(\"ZodPipe\", (inst, def) => {\n core.$ZodPipe.init(inst, def);\n ZodType.init(inst, def);\n inst.in = def.in;\n inst.out = def.out;\n});\nexport function pipe(in_, out) {\n return new ZodPipe({\n type: \"pipe\",\n in: in_,\n out: out,\n // ...util.normalizeParams(params),\n });\n}\nexport const ZodCodec = /*@__PURE__*/ core.$constructor(\"ZodCodec\", (inst, def) => {\n ZodPipe.init(inst, def);\n core.$ZodCodec.init(inst, def);\n});\nexport function codec(in_, out, params) {\n return new ZodCodec({\n type: \"pipe\",\n in: in_,\n out: out,\n transform: params.decode,\n reverseTransform: params.encode,\n });\n}\nexport const ZodReadonly = /*@__PURE__*/ core.$constructor(\"ZodReadonly\", (inst, def) => {\n core.$ZodReadonly.init(inst, def);\n ZodType.init(inst, def);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function readonly(innerType) {\n return new ZodReadonly({\n type: \"readonly\",\n innerType: innerType,\n });\n}\nexport const ZodTemplateLiteral = /*@__PURE__*/ core.$constructor(\"ZodTemplateLiteral\", (inst, def) => {\n core.$ZodTemplateLiteral.init(inst, def);\n ZodType.init(inst, def);\n});\nexport function templateLiteral(parts, params) {\n return new ZodTemplateLiteral({\n type: \"template_literal\",\n parts,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodLazy = /*@__PURE__*/ core.$constructor(\"ZodLazy\", (inst, def) => {\n core.$ZodLazy.init(inst, def);\n ZodType.init(inst, def);\n inst.unwrap = () => inst._zod.def.getter();\n});\nexport function lazy(getter) {\n return new ZodLazy({\n type: \"lazy\",\n getter: getter,\n });\n}\nexport const ZodPromise = /*@__PURE__*/ core.$constructor(\"ZodPromise\", (inst, def) => {\n core.$ZodPromise.init(inst, def);\n ZodType.init(inst, def);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function promise(innerType) {\n return new ZodPromise({\n type: \"promise\",\n innerType: innerType,\n });\n}\nexport const ZodFunction = /*@__PURE__*/ core.$constructor(\"ZodFunction\", (inst, def) => {\n core.$ZodFunction.init(inst, def);\n ZodType.init(inst, def);\n});\nexport function _function(params) {\n return new ZodFunction({\n type: \"function\",\n input: Array.isArray(params?.input) ? tuple(params?.input) : (params?.input ?? array(unknown())),\n output: params?.output ?? unknown(),\n });\n}\nexport { _function as function };\nexport const ZodCustom = /*@__PURE__*/ core.$constructor(\"ZodCustom\", (inst, def) => {\n core.$ZodCustom.init(inst, def);\n ZodType.init(inst, def);\n});\n// custom checks\nexport function check(fn) {\n const ch = new core.$ZodCheck({\n check: \"custom\",\n // ...util.normalizeParams(params),\n });\n ch._zod.check = fn;\n return ch;\n}\nexport function custom(fn, _params) {\n return core._custom(ZodCustom, fn ?? (() => true), _params);\n}\nexport function refine(fn, _params = {}) {\n return core._refine(ZodCustom, fn, _params);\n}\n// superRefine\nexport function superRefine(fn) {\n return core._superRefine(fn);\n}\nfunction _instanceof(cls, params = {\n error: `Input not instance of ${cls.name}`,\n}) {\n const inst = new ZodCustom({\n type: \"custom\",\n check: \"custom\",\n fn: (data) => data instanceof cls,\n abort: true,\n ...util.normalizeParams(params),\n });\n inst._zod.bag.Class = cls;\n return inst;\n}\nexport { _instanceof as instanceof };\n// stringbool\nexport const stringbool = (...args) => core._stringbool({\n Codec: ZodCodec,\n Boolean: ZodBoolean,\n String: ZodString,\n}, ...args);\nexport function json(params) {\n const jsonSchema = lazy(() => {\n return union([string(params), number(), boolean(), _null(), array(jsonSchema), record(string(), jsonSchema)]);\n });\n return jsonSchema;\n}\n// preprocess\n// /** @deprecated Use `z.pipe()` and `z.transform()` instead. */\nexport function preprocess(fn, schema) {\n return pipe(transform(fn), schema);\n}\n","// Zod 3 compat layer\nimport * as core from \"../core/index.js\";\n/** @deprecated Use the raw string literal codes instead, e.g. \"invalid_type\". */\nexport const ZodIssueCode = {\n invalid_type: \"invalid_type\",\n too_big: \"too_big\",\n too_small: \"too_small\",\n invalid_format: \"invalid_format\",\n not_multiple_of: \"not_multiple_of\",\n unrecognized_keys: \"unrecognized_keys\",\n invalid_union: \"invalid_union\",\n invalid_key: \"invalid_key\",\n invalid_element: \"invalid_element\",\n invalid_value: \"invalid_value\",\n custom: \"custom\",\n};\nexport { $brand, config } from \"../core/index.js\";\n/** @deprecated Use `z.config(params)` instead. */\nexport function setErrorMap(map) {\n core.config({\n customError: map,\n });\n}\n/** @deprecated Use `z.config()` instead. */\nexport function getErrorMap() {\n return core.config().customError;\n}\n/** @deprecated Do not use. Stub definition, only included for zod-to-json-schema compatibility. */\nexport var ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\n","import { z } from 'zod';\nconst PARTICIPANT_RE = /^[A-Za-z0-9_-]+$/;\nconst SEGMENT_RE = /^[A-Za-z0-9._-]+$/;\nconst HOST_SEGMENT_RE = /^[A-Za-z0-9.-]+$/; // Allow dots for host parts\nconst POOL_WILDCARD = '*'; // Only * allowed for pool definitions\n/**\n * A validated Fame address string.\n */\nexport class FameAddress extends String {\n constructor(value) {\n // Validate the address format by parsing it (this will raise if invalid)\n parseAddress(value);\n super(value);\n }\n toString() {\n return super.toString();\n }\n valueOf() {\n return super.valueOf();\n }\n static create(value) {\n return new FameAddress(value);\n }\n}\n/**\n * Zod schema for FameAddress validation\n */\nexport const FameAddressSchema = z.string().transform((val, ctx) => {\n try {\n return new FameAddress(val);\n }\n catch (error) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: error instanceof Error ? error.message : 'Invalid FameAddress',\n });\n return z.NEVER;\n }\n});\nfunction validateParticipant(name) {\n if (!PARTICIPANT_RE.test(name)) {\n throw new Error(`Participant must match [A-Z a-z 0-9 _ -]+ : ${JSON.stringify(name)}`);\n }\n}\nfunction validateHost(host, allowWildcards = false) {\n if (!host) {\n return;\n }\n // Split host into segments separated by dots\n const segments = host.split('.');\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n if (!segment) {\n // Empty segment\n throw new Error(`Empty host segment in ${JSON.stringify(host)}`);\n }\n // Check wildcards\n if (segment === POOL_WILDCARD) {\n if (!allowWildcards) {\n throw new Error(`Wildcards not allowed in host: ${JSON.stringify(host)}`);\n }\n // Allow wildcards in leftmost position for pool addresses like math@*.fame.fabric\n if (i !== 0) {\n throw new Error(`Wildcard '*' must be leftmost segment in: ${JSON.stringify(host)}`);\n }\n continue;\n }\n if (!HOST_SEGMENT_RE.test(segment)) {\n throw new Error(`Bad host segment ${JSON.stringify(segment)} - use A-Za-z0-9.-`);\n }\n }\n}\nfunction validatePath(path) {\n if (!path) {\n return;\n }\n if (path === '/') {\n return;\n }\n let normalizedPath = path;\n if (!normalizedPath.startsWith('/')) {\n normalizedPath = '/' + normalizedPath;\n }\n const stripped = normalizedPath.substring(1);\n const parts = stripped ? stripped.split('/') : [];\n // Check segments - no wildcards allowed in paths\n for (const seg of parts) {\n if (seg === POOL_WILDCARD) {\n throw new Error(`Wildcards not allowed in path segments: ${JSON.stringify(path)}`);\n }\n if (!SEGMENT_RE.test(seg)) {\n throw new Error(`Bad segment ${JSON.stringify(seg)} - use A-Za-z0-9._-`);\n }\n }\n}\n/**\n * Parse a FAME address supporting both host-like and path-like notation.\n *\n * Formats supported:\n * - 'participant@/path' (traditional path-only)\n * - 'participant@host.name' (host-only)\n * - 'participant@host.name/path' (host with path)\n * - 'participant@*.host.name' (pool address with leftmost wildcard)\n *\n * Rules:\n * - participant: [A-Z a-z 0-9 _ -]+\n * - host: dot-separated segments [A-Za-z0-9.-]+, wildcards (*) allowed in leftmost position only\n * - path: '/' seg ('/' seg)*, NO wildcards allowed in path segments\n * - At least one of host or path must be present\n *\n * Returns:\n * Tuple of [participant, combined_location] where combined_location\n * preserves the original format for backward compatibility.\n */\nexport function parseAddress(address) {\n const atIndex = address.lastIndexOf('@');\n if (atIndex === -1) {\n throw new Error(`Missing '@' in address: ${JSON.stringify(address)}`);\n }\n const name = address.substring(0, atIndex);\n const location = address.substring(atIndex + 1);\n validateParticipant(name);\n if (!location) {\n throw new Error('Location part cannot be empty');\n }\n // Determine if this is host-only, path-only, or host+path\n if (location.startsWith('/')) {\n // Traditional path-only format: participant@/path\n validatePath(location);\n }\n else if (location.includes('/')) {\n // Host with path format: participant@host.name/path\n const slashIndex = location.indexOf('/');\n const hostPart = location.substring(0, slashIndex);\n const pathPart = location.substring(slashIndex);\n validateHost(hostPart, true);\n validatePath(pathPart);\n }\n else {\n // Host-only format: participant@host.name or participant@*.host.name\n validateHost(location, true);\n }\n return [name, location];\n}\n/**\n * Parse a FAME address into its constituent components.\n *\n * Returns:\n * Tuple of [participant, host, path] where:\n * - participant: always present\n * - host: present if host-like notation used\n * - path: present if path-like notation used\n * - At least one of host or path will be non-null\n */\nexport function parseAddressComponents(address) {\n const atIndex = address.lastIndexOf('@');\n if (atIndex === -1) {\n throw new Error(`Missing '@' in address: ${JSON.stringify(address)}`);\n }\n const name = address.substring(0, atIndex);\n const location = address.substring(atIndex + 1);\n validateParticipant(name);\n if (!location) {\n throw new Error('Location part cannot be empty');\n }\n // Determine format and extract components\n if (location.startsWith('/')) {\n // Traditional path-only format: participant@/path\n validatePath(location);\n return [name, null, location];\n }\n else if (location.includes('/')) {\n // Host with path format: participant@host.name/path\n const slashIndex = location.indexOf('/');\n const hostPart = location.substring(0, slashIndex);\n let pathPart = location.substring(slashIndex);\n if (!pathPart.startsWith('/')) {\n pathPart = '/' + pathPart; // Restore leading slash\n }\n validateHost(hostPart, true);\n validatePath(pathPart);\n return [name, hostPart, pathPart];\n }\n else {\n // Host-only format: participant@host.name or participant@*.host.name\n validateHost(location, true);\n return [name, location, null];\n }\n}\n/**\n * Create a FAME address from participant and location.\n *\n * Args:\n * name: participant name\n * location: either path (/path), host (host.name), or host/path (host.name/path)\n * Wildcards allowed in host part only (*.host.name)\n */\nexport function formatAddress(name, location) {\n validateParticipant(name);\n // Validate the location part based on its format\n if (location.startsWith('/')) {\n // Path-only format\n validatePath(location);\n }\n else if (location.includes('/')) {\n // Host with path format\n const slashIndex = location.indexOf('/');\n const hostPart = location.substring(0, slashIndex);\n const pathPart = location.substring(slashIndex);\n validateHost(hostPart, true);\n validatePath(pathPart);\n }\n else {\n // Host-only format\n validateHost(location, true);\n }\n return new FameAddress(`${name}@${location}`);\n}\n/**\n * Create a FAME address from separate components.\n *\n * Args:\n * name: participant name\n * host: optional host part (e.g., \"fame.fabric\", \"child.fame.fabric\", \"*.fame.fabric\")\n * path: optional path part (e.g., \"/\", \"/api/v1\") - NO wildcards allowed in paths\n *\n * At least one of host or path must be provided.\n */\nexport function formatAddressFromComponents(name, host, path) {\n validateParticipant(name);\n if (!host && !path) {\n throw new Error('At least one of host or path must be provided');\n }\n if (host) {\n validateHost(host, true);\n }\n if (path) {\n validatePath(path);\n }\n let location;\n if (host && path) {\n // Both present: host/path format\n location = `${host}${path}`;\n }\n else if (host) {\n // Host only\n location = host;\n }\n else {\n // Path only\n location = path;\n }\n return new FameAddress(`${name}@${location}`);\n}\n/**\n * Create a FameAddress instance with validation\n */\nexport function makeFameAddress(raw) {\n // validation happens inside\n const [name, location] = parseAddress(raw);\n return new FameAddress(`${name}@${location}`);\n}\n//# sourceMappingURL=address.js.map","export const DEFAULT_INVOKE_TIMEOUT_MILLIS = 30000;\nexport const DEFAULT_POLLING_TIMEOUT_MS = 3000;\n//# sourceMappingURL=constants.js.map","const ALPHABET = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\n// Base64-encoded blacklist of forbidden substrings\nconst BLACKLIST_ID_WORDS_B64 = [\n 'c2hpdA==',\n 'ZnVj',\n 'ZnVr',\n 'ZGFtbg==',\n 'Yml0Y2g=',\n 'YmFzdGFy',\n 'YXNzaG9s',\n 'Y3JhcA==',\n 'ZGljaw==',\n 'cGlzcw==',\n 'Ym9sbG9jaw==',\n 'cHVzcw==',\n 'YnVnZ2Vy',\n 'Ymxvb2Q=',\n 'ZmFnZw==',\n 'Y3VudA==',\n 'Y3Vt',\n];\n/**\n * Fallback base64 decoder for environments without Buffer or atob\n */\nexport function decodeBase64Fallback(str) {\n const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n let result = '';\n let i = 0;\n let sanitized = str.replace(/[^A-Za-z0-9+/]/g, '');\n while (i < sanitized.length) {\n const encoded1 = chars.indexOf(sanitized.charAt(i++));\n const encoded2 = chars.indexOf(sanitized.charAt(i++));\n const encoded3 = chars.indexOf(sanitized.charAt(i++));\n const encoded4 = chars.indexOf(sanitized.charAt(i++));\n const bitmap = (encoded1 << 18) | (encoded2 << 12) | (encoded3 << 6) | encoded4;\n result += String.fromCharCode((bitmap >> 16) & 255);\n if (encoded3 !== 64)\n result += String.fromCharCode((bitmap >> 8) & 255);\n if (encoded4 !== 64)\n result += String.fromCharCode(bitmap & 255);\n }\n return result;\n}\nexport function createBlacklist(decoder) {\n return new Set(BLACKLIST_ID_WORDS_B64.map((value) => decoder(value).toLowerCase()));\n}\nexport function base62(n) {\n if (n === 0n) {\n return '0';\n }\n const chars = [];\n let current = n;\n while (current > 0n) {\n const remainder = Number(current % 62n);\n current = current / 62n;\n const char = ALPHABET[remainder];\n if (char === undefined) {\n throw new Error(`Invalid remainder ${remainder} for base62 encoding`);\n }\n chars.push(char);\n }\n return chars.reverse().join('');\n}\nexport function encodeDigest(digest, length) {\n let value = 0n;\n for (let i = 0; i < digest.length; i++) {\n const byte = digest[i];\n if (byte === undefined) {\n throw new Error(`Invalid digest byte at index ${i}`);\n }\n value = (value << 8n) + BigInt(byte);\n }\n const base62Value = base62(value);\n if (base62Value.length >= length) {\n return base62Value.slice(0, length);\n }\n return base62Value.padStart(length, ALPHABET[0]);\n}\nexport function normalizeHashAlgorithmNames(algorithm) {\n const trimmed = algorithm.trim();\n const lower = trimmed.toLowerCase();\n const shaMatch = lower.match(/^(sha)([-_]?(\\d{1,3}))$/);\n if (shaMatch) {\n const digits = shaMatch[3];\n return {\n subtle: `SHA-${digits}`,\n node: `sha${digits}`,\n };\n }\n return {\n subtle: trimmed.toUpperCase(),\n node: lower,\n };\n}\nexport function materialToBytes(material, encoder) {\n if (Array.isArray(material)) {\n const parts = material.map((value, index) => {\n if (value === undefined || value === null) {\n throw new Error(`Invalid material part at index ${index}`);\n }\n if (typeof value === 'string') {\n return encoder.encode(value);\n }\n return new Uint8Array(value);\n });\n const totalLength = parts.reduce((sum, part) => sum + part.length + 1, 0) - 1;\n const combined = new Uint8Array(totalLength > 0 ? totalLength : 0);\n let offset = 0;\n for (let i = 0; i < parts.length; i++) {\n if (i > 0) {\n combined[offset++] = 124; // '|' separator\n }\n const part = parts[i];\n combined.set(part, offset);\n offset += part.length;\n }\n return combined;\n }\n if (typeof material === 'string') {\n return encoder.encode(material);\n }\n return new Uint8Array(material);\n}\nexport function candidateContainsBlacklist(candidate, blacklist) {\n const lowered = candidate.toLowerCase();\n for (const forbidden of blacklist) {\n if (lowered.includes(forbidden)) {\n return true;\n }\n }\n return false;\n}\nexport function generateRandomCandidate(length, getRandomBytes, blacklist) {\n while (true) {\n const randomBytes = getRandomBytes(length);\n let candidate = '';\n for (let i = 0; i < length; i++) {\n const byte = randomBytes[i];\n if (byte === undefined) {\n throw new Error(`Invalid random byte at index ${i}`);\n }\n candidate += ALPHABET[byte % ALPHABET.length];\n }\n if (!candidateContainsBlacklist(candidate, blacklist)) {\n return candidate;\n }\n }\n}\nexport function rehashUntilCleanSync(digest, length, hash, blacklist) {\n let currentDigest = digest;\n let candidate = encodeDigest(currentDigest, length);\n while (candidateContainsBlacklist(candidate, blacklist)) {\n currentDigest = hash(currentDigest);\n candidate = encodeDigest(currentDigest, length);\n }\n return candidate;\n}\nexport async function rehashUntilCleanAsync(digest, length, hash, blacklist) {\n let currentDigest = digest;\n let candidate = encodeDigest(currentDigest, length);\n while (candidateContainsBlacklist(candidate, blacklist)) {\n currentDigest = await hash(currentDigest);\n candidate = encodeDigest(currentDigest, length);\n }\n return candidate;\n}\nexport function fallbackHash(data) {\n let hashValue = 0;\n for (let i = 0; i < data.length; i++) {\n const byte = data[i];\n if (byte === undefined) {\n throw new Error(`Invalid data byte at index ${i}`);\n }\n hashValue = ((hashValue << 5) - hashValue + byte) & 0xffffffff;\n }\n const bytes = new Uint8Array(4);\n bytes[0] = (hashValue >>> 24) & 0xff;\n bytes[1] = (hashValue >>> 16) & 0xff;\n bytes[2] = (hashValue >>> 8) & 0xff;\n bytes[3] = hashValue & 0xff;\n return bytes;\n}\nexport { ALPHABET, BLACKLIST_ID_WORDS_B64 };\n//# sourceMappingURL=id-generator.shared.js.map","import { decodeBase64Fallback, createBlacklist, generateRandomCandidate, normalizeHashAlgorithmNames, materialToBytes, rehashUntilCleanAsync, fallbackHash, } from './id-generator.shared.js';\nconst textEncoder = ensureEncoder();\nconst textDecoder = ensureDecoder();\nconst STORAGE_SEED_KEY = 'naylence:fame:seed';\nlet cachedBrowserSeed = null;\nfunction ensureEncoder() {\n if (typeof TextEncoder !== 'undefined') {\n return new TextEncoder();\n }\n const util = globalThis.util;\n if (util?.TextEncoder) {\n return new util.TextEncoder();\n }\n const { TextEncoder: ImportedTextEncoder } = require('util');\n return new ImportedTextEncoder();\n}\nfunction ensureDecoder() {\n if (typeof TextDecoder !== 'undefined') {\n return new TextDecoder();\n }\n const util = globalThis.util;\n if (util?.TextDecoder) {\n return new util.TextDecoder();\n }\n const { TextDecoder: ImportedTextDecoder } = require('util');\n return new ImportedTextDecoder();\n}\nfunction decodeBase64(str) {\n if (typeof atob === 'function') {\n return atob(str);\n }\n const bufferLike = globalThis.Buffer;\n if (bufferLike) {\n return bufferLike.from(str, 'base64').toString('utf8');\n }\n return decodeBase64Fallback(str);\n}\nconst BLACKLIST_ID_WORDS = createBlacklist(decodeBase64);\nfunction getRandomBytes(length) {\n const cryptoRef = globalThis.crypto;\n if (cryptoRef?.getRandomValues) {\n const bytes = new Uint8Array(length);\n cryptoRef.getRandomValues(bytes);\n return bytes;\n }\n const bytes = new Uint8Array(length);\n for (let i = 0; i < length; i++) {\n bytes[i] = Math.floor(Math.random() * 256);\n }\n return bytes;\n}\nasync function hashAsync(data, algorithm = 'sha256') {\n const { subtle } = normalizeHashAlgorithmNames(algorithm);\n const cryptoRef = globalThis.crypto;\n if (cryptoRef?.subtle) {\n try {\n const buffer = new ArrayBuffer(data.length);\n const view = new Uint8Array(buffer);\n view.set(data);\n const digest = await cryptoRef.subtle.digest(subtle, buffer);\n return new Uint8Array(digest);\n }\n catch {\n // ignore\n }\n }\n return fallbackHash(data);\n}\nfunction getCanonicalArgv() {\n return 'browser';\n}\nasync function getDefaultBrowserFingerprint(extraMaterial) {\n const hostFingerprint = `seed:${getStableBrowserSeed()}`;\n const codeFingerprint = getCanonicalArgv();\n const parts = [`${hostFingerprint}`, `${codeFingerprint}`];\n if (extraMaterial !== undefined && extraMaterial !== null) {\n let salt;\n if (typeof extraMaterial === 'string') {\n salt = extraMaterial;\n }\n else if (extraMaterial instanceof Uint8Array) {\n salt = textDecoder.decode(extraMaterial);\n }\n else {\n salt = String(extraMaterial);\n }\n parts.push(`salt:${salt}`);\n }\n const payload = parts.join('|');\n return textEncoder.encode(payload);\n}\nfunction getStableBrowserSeed() {\n if (cachedBrowserSeed) {\n return cachedBrowserSeed;\n }\n const storages = getWritableStorages();\n for (const storage of storages) {\n const stored = readSeed(storage);\n if (stored) {\n cachedBrowserSeed = stored;\n return stored;\n }\n }\n const seed = generateSeed();\n for (const storage of storages) {\n if (writeSeed(storage, seed)) {\n cachedBrowserSeed = seed;\n return seed;\n }\n }\n cachedBrowserSeed = seed;\n return seed;\n}\nfunction readSeed(storage) {\n try {\n return storage.getItem(STORAGE_SEED_KEY);\n }\n catch {\n return null;\n }\n}\nfunction writeSeed(storage, seed) {\n try {\n storage.setItem(STORAGE_SEED_KEY, seed);\n return true;\n }\n catch {\n return false;\n }\n}\nfunction getWritableStorages() {\n const storages = [];\n const storageNames = [\n 'localStorage',\n 'sessionStorage',\n ];\n for (const name of storageNames) {\n const storage = resolveStorage(name);\n if (storage) {\n storages.push(storage);\n }\n }\n return storages;\n}\nfunction resolveStorage(name) {\n try {\n const storage = globalThis[name];\n if (!storage) {\n return null;\n }\n const probeKey = `${STORAGE_SEED_KEY}:probe`;\n storage.setItem(probeKey, '1');\n storage.removeItem(probeKey);\n return storage;\n }\n catch {\n return null;\n }\n}\nfunction generateSeed() {\n const bytes = getRandomBytes(16);\n return Array.from(bytes, (byte) => byte.toString(16).padStart(2, '0')).join('');\n}\nexport function generateId(options = {}) {\n const { length = 16, mode = 'random', blacklist = BLACKLIST_ID_WORDS, } = options;\n if (mode !== 'random' && mode !== 'fingerprint') {\n throw new Error(\"mode must be 'random' or 'fingerprint'\");\n }\n if (mode === 'random') {\n return generateRandomCandidate(length, getRandomBytes, blacklist);\n }\n throw new Error('Browser environment requires async ID generation - use generateIdAsync instead');\n}\nexport async function generateIdAsync(options = {}) {\n const { length = 16, mode = 'random', material, blacklist = BLACKLIST_ID_WORDS, hashAlg = 'sha256', } = options;\n if (mode !== 'random' && mode !== 'fingerprint') {\n throw new Error(\"mode must be 'random' or 'fingerprint'\");\n }\n if (mode === 'random') {\n return generateRandomCandidate(length, getRandomBytes, blacklist);\n }\n let materialBytes;\n if (material === undefined || material === null) {\n const envSalt = globalThis.process?.env?.FAME_NODE_ID_SALT;\n materialBytes = await getDefaultBrowserFingerprint(envSalt ?? '');\n }\n else {\n materialBytes = materialToBytes(material, textEncoder);\n }\n const initialDigest = await hashAsync(materialBytes, hashAlg);\n return rehashUntilCleanAsync(initialDigest, length, (input) => hashAsync(input, hashAlg), blacklist);\n}\nexport { decodeBase64Fallback };\n//# sourceMappingURL=id-generator.browser.js.map","/**\n * Converts a camelCase or PascalCase string to snake_case.\n *\n * @param name - The string to convert\n * @returns The snake_case version of the input string\n *\n * @example\n * camelToSnake('camelCase') // 'camel_case'\n * camelToSnake('PascalCase') // 'pascal_case'\n * camelToSnake('IOError') // 'io_error'\n */\nexport function camelToSnake(name) {\n return name\n .replace(/([a-z0-9])([A-Z])/g, '$1_$2')\n .replace(/([A-Z])([A-Z][a-z])/g, '$1_$2')\n .toLowerCase();\n}\n/**\n * Converts a snake_case string to camelCase.\n *\n * @param name - The string to convert\n * @returns The camelCase version of the input string\n *\n * @example\n * snakeToCamel('snake_case') // 'snakeCase'\n * snakeToCamel('hello_world') // 'helloWorld'\n */\nexport function snakeToCamel(name) {\n return name.replace(/_([a-z])/g, (_match, char) => char.toUpperCase());\n}\n/**\n * Recursively converts all keys in an object from snake_case to camelCase.\n *\n * @param obj - The object to convert (can be any value)\n * @returns A new object with all keys converted to camelCase\n *\n * @example\n * snakeToCamelObject({ hello_world: 'test' }) // { helloWorld: 'test' }\n * snakeToCamelObject({ nested_obj: { inner_key: 'value' } }) // { nestedObj: { innerKey: 'value' } }\n */\nexport function snakeToCamelObject(obj) {\n if (obj === null || typeof obj !== 'object')\n return obj;\n if (Array.isArray(obj))\n return obj.map(snakeToCamelObject);\n return Object.entries(obj).reduce((acc, [key, value]) => {\n const camelKey = snakeToCamel(key);\n acc[camelKey] = snakeToCamelObject(value);\n return acc;\n }, {});\n}\n/**\n * Recursively converts all keys in an object from camelCase to snake_case.\n *\n * @param obj - The object to convert (can be any value)\n * @returns A new object with all keys converted to snake_case\n *\n * @example\n * camelToSnakeObject({ helloWorld: 'test' }) // { hello_world: 'test' }\n * camelToSnakeObject({ nestedObj: { innerKey: 'value' } }) // { nested_obj: { inner_key: 'value' } }\n */\nexport function camelToSnakeObject(obj) {\n if (obj === null || typeof obj !== 'object')\n return obj;\n if (Array.isArray(obj))\n return obj.map(camelToSnakeObject);\n return Object.entries(obj).reduce((acc, [key, value]) => {\n const snakeKey = camelToSnake(key);\n acc[snakeKey] = camelToSnakeObject(value);\n return acc;\n }, {});\n}\n//# sourceMappingURL=case-conversion.js.map","/**\n * Abstract base class for implementing ResourceFactory.\n * Provides default implementations for common properties.\n */\nexport class AbstractResourceFactory {\n constructor() {\n this.isDefault = false;\n this.priority = 0;\n }\n}\n//# sourceMappingURL=factory.js.map","/**\n * TypeScript Extension Manager - replaces Python entry points with manual registration.\n *\n * In Python, entry points allow automatic discovery of plugins. In TypeScript/JavaScript,\n * we use explicit registration instead. This provides better tree-shaking and bundle optimization.\n */\nexport class ExtensionManager {\n constructor(group) {\n // private readonly baseType: string;\n this.registry = new Map();\n this.instanceCache = new Map();\n this.group = group;\n // this.baseType = baseType;\n }\n /**\n * Register a factory constructor for a given type name.\n *\n * @param typeName The type identifier for this factory\n * @param factoryConstructor The factory constructor function\n * @param metadata Optional metadata about the factory\n */\n registerFactory(typeName, factoryConstructor, metadata) {\n const factoryInfo = {\n type: typeName,\n constructor: factoryConstructor,\n };\n if (metadata) {\n factoryInfo.metadata = metadata;\n }\n this.registry.set(typeName, factoryInfo);\n // Clear instance cache for this type\n this.instanceCache.delete(typeName);\n }\n /**\n * Unregister a factory constructor for a given type name. If no type name is provided,\n * the entire registry and cache for this manager are cleared.\n *\n * @param typeName Optional factory type name to remove\n */\n unregisterFactory(typeName) {\n if (typeName === undefined) {\n this.registry.clear();\n this.instanceCache.clear();\n return;\n }\n this.registry.delete(typeName);\n this.instanceCache.delete(typeName);\n }\n /**\n * Register a factory instance directly.\n *\n * @param factory The factory instance to register\n */\n registerFactoryInstance(factory) {\n const metadata = {};\n if (factory.isDefault !== undefined) {\n metadata.isDefault = factory.isDefault;\n }\n if (factory.priority !== undefined) {\n metadata.priority = factory.priority;\n }\n const info = {\n type: factory.type,\n constructor: factory.constructor,\n instance: factory,\n metadata,\n };\n this.registry.set(factory.type, info);\n this.instanceCache.set(factory.type, factory);\n }\n /**\n * Get available factory type names.\n */\n getAvailableNames() {\n return Array.from(this.registry.keys());\n }\n /**\n * Get a factory instance by type name.\n *\n * @param typeName The factory type name\n * @param args Arguments to pass to the factory constructor (only used on first creation)\n * @returns The factory instance\n */\n getFactory(typeName, ...args) {\n const cached = this.instanceCache.get(typeName);\n if (cached) {\n return cached;\n }\n const info = this.registry.get(typeName);\n if (!info) {\n throw new Error(`Unknown factory type '${typeName}' in group '${this.group}'. ` +\n `Available types: [${this.getAvailableNames().join(', ')}]`);\n }\n // Create new instance\n const instance = new info.constructor(...args);\n this.instanceCache.set(typeName, instance);\n // Update the registry info with the instance\n info.instance = instance;\n return instance;\n }\n /**\n * Get all factories marked as default implementations.\n *\n * @returns Array of [factory instance, type name] pairs\n */\n getDefaultFactories() {\n const defaults = [];\n for (const [typeName, info] of this.registry) {\n const instance = info.instance ?? this.getFactory(typeName);\n if (instance.isDefault) {\n defaults.push([instance, typeName]);\n }\n }\n return defaults;\n }\n /**\n * Get the best default factory by priority.\n *\n * @returns The best default factory and its type name, or null if no defaults\n */\n getBestDefaultFactory() {\n const defaults = this.getDefaultFactories();\n if (defaults.length === 0) {\n return null;\n }\n if (defaults.length === 1) {\n return defaults[0] ?? null;\n }\n // Sort by priority (highest first)\n defaults.sort(([a], [b]) => (b.priority ?? 0) - (a.priority ?? 0));\n const bestEntry = defaults[0];\n if (!bestEntry) {\n return null;\n }\n const [bestFactory, bestType] = bestEntry;\n // const bestPriority = bestFactory.priority ?? 0;\n // Log selection since multiple candidates exist (defaults.length > 1 is guaranteed here)\n // console.debug(\n // `Selected best default for ${this.baseType}: '${bestType}' ` +\n // `(priority=${bestPriority}) among [${defaults.map(([f, t]) => `${t}(p=${f.priority ?? 0})`).join(', ')}]`\n // );\n return [bestFactory, bestType];\n }\n /**\n * Clear the instance cache for a specific type or all types.\n *\n * @param typeName Optional specific type to clear, or undefined to clear all\n */\n clearInstanceCache(typeName) {\n if (typeName === undefined) {\n this.instanceCache.clear();\n }\n else {\n this.instanceCache.delete(typeName);\n }\n }\n /**\n * Get information about a registered factory.\n *\n * @param typeName The factory type name\n * @returns Factory information or undefined if not found\n */\n getFactoryInfo(typeName) {\n return this.registry.get(typeName);\n }\n /**\n * Get all registered factory information.\n *\n * @returns Map of type names to factory information\n */\n getAllFactoryInfo() {\n return new Map(this.registry);\n }\n // ═══ Static methods for global registry management ═══\n /**\n * Get or create an extension manager for a specific group and base type.\n *\n * @param group The extension group name (e.g., \"naylence.ConnectorFactory\")\n * @param baseType The base type name for type checking\n * @returns The extension manager instance\n */\n static getExtensionManager(group, baseType) {\n const key = `${group}:${baseType}`;\n let manager = this.globalRegistry.get(key);\n if (!manager) {\n manager = new ExtensionManager(group); //, baseType);\n this.globalRegistry.set(key, manager);\n }\n return manager;\n }\n /**\n * Get all registered factories for a given base type name.\n *\n * @param baseTypeName The base type name (e.g., \"ConnectorFactory\")\n * @returns A new map of type names to factory information\n */\n static getExtensionsByType(baseTypeName) {\n const group = `naylence.${baseTypeName}`;\n const manager = this.getExtensionManager(group, baseTypeName);\n return manager.getAllFactoryInfo();\n }\n /**\n * Register a factory globally using the base type as the group.\n *\n * @param baseTypeName The base type name (e.g., \"ConnectorFactory\")\n * @param typeName The specific factory type name\n * @param factoryConstructor The factory constructor\n * @param metadata Optional factory metadata\n */\n static registerGlobalFactory(baseTypeName, typeName, factoryConstructor, metadata) {\n const group = `naylence.${baseTypeName}`;\n const manager = this.getExtensionManager(group, baseTypeName);\n manager.registerFactory(typeName, factoryConstructor, metadata);\n }\n /**\n * Register a factory instance globally.\n *\n * @param baseTypeName The base type name (e.g., \"ConnectorFactory\")\n * @param factory The factory instance\n */\n static registerGlobalFactoryInstance(baseTypeName, factory) {\n const group = `naylence.${baseTypeName}`;\n const manager = this.getExtensionManager(group, baseTypeName);\n manager.registerFactoryInstance(factory);\n }\n /**\n * Unregister a factory globally. If no type name is provided, all factories for the base type\n * are removed.\n *\n * @param baseTypeName The base factory type name\n * @param typeName Optional specific factory type to remove\n */\n static unregisterGlobalFactory(baseTypeName, typeName) {\n const group = `naylence.${baseTypeName}`;\n const manager = this.getExtensionManager(group, baseTypeName);\n manager.unregisterFactory(typeName);\n }\n /**\n * Get a factory by base type and factory type name.\n *\n * @param baseTypeName The base type name\n * @param typeName The factory type name\n * @param args Arguments to pass to factory constructor\n * @returns The factory instance\n */\n static getGlobalFactory(baseTypeName, typeName, ...args) {\n const group = `naylence.${baseTypeName}`;\n const manager = this.getExtensionManager(group, baseTypeName);\n return manager.getFactory(typeName, ...args);\n }\n /**\n * Get the best default factory for a base type.\n *\n * @param baseTypeName The base type name\n * @returns The best default factory and its type name, or null\n */\n static getBestGlobalDefaultFactory(baseTypeName) {\n const group = `naylence.${baseTypeName}`;\n const manager = this.getExtensionManager(group, baseTypeName);\n return manager.getBestDefaultFactory();\n }\n /**\n * Get all extension managers.\n *\n * @returns Map of group:baseType keys to extension manager instances\n */\n static getAllExtensionManagers() {\n return new Map(this.globalRegistry);\n }\n}\n// Global registry for all extension managers\nExtensionManager.globalRegistry = new Map();\n//# sourceMappingURL=extension-manager.js.map","/**\n * Policy for handling expression evaluation in resource configurations.\n */\nexport var ExpressionEvaluationPolicy;\n(function (ExpressionEvaluationPolicy) {\n /** Evaluate expressions and replace with resolved values */\n ExpressionEvaluationPolicy[\"EVALUATE\"] = \"evaluate\";\n /** Keep expressions as literal strings */\n ExpressionEvaluationPolicy[\"LITERAL\"] = \"literal\";\n /** Raise an error when expressions are encountered */\n ExpressionEvaluationPolicy[\"ERROR\"] = \"error\";\n})(ExpressionEvaluationPolicy || (ExpressionEvaluationPolicy = {}));\n//# sourceMappingURL=expression-policy.js.map","import { ExpressionEvaluationPolicy, } from './expression-policy.js';\n/**\n * Error thrown when a required environment variable is missing\n */\nexport class MissingEnvironmentVariableError extends Error {\n constructor(variableName) {\n super(`Environment variable '${variableName}' is required but not defined. ` +\n `Either set the environment variable or provide a default value in the expression.`);\n this.name = 'MissingEnvironmentVariableError';\n }\n}\n/**\n * Error thrown when expression evaluation is disabled but expressions are found\n */\nexport class ExpressionNotAllowedError extends Error {\n constructor(expression) {\n super(`Expression found but evaluation is not allowed: ${expression}`);\n this.name = 'ExpressionNotAllowedError';\n }\n}\n/**\n * Pure expression evaluator with no external dependencies.\n *\n * Supports expressions like:\n * - ${env:VAR:default} - Environment variable with optional default\n * - ${config:key:default} - Configuration value with optional default\n *\n * Can handle both full-string expressions and partial substitutions within strings.\n */\nexport class ExpressionEvaluator {\n /**\n * Check if a value contains any expressions that can be evaluated.\n */\n static isExpression(value) {\n if (typeof value !== 'string') {\n return false;\n }\n return this.ANY_EXPRESSION_PATTERN.test(value);\n }\n /**\n * Evaluate expressions in the given value.\n *\n * @param value The value to evaluate (only strings are processed)\n * @param context The evaluation context\n * @param targetType Optional target type for scalar conversion\n * @returns The evaluated value\n */\n static evaluate(value, context = {}, targetType) {\n // Only process string values\n if (typeof value !== 'string') {\n return value;\n }\n // Get policy from context\n const policy = context.policy ?? ExpressionEvaluationPolicy.EVALUATE;\n // Handle policy\n if (policy === ExpressionEvaluationPolicy.LITERAL) {\n return value;\n }\n if (policy === ExpressionEvaluationPolicy.ERROR &&\n this.isExpression(value)) {\n throw new ExpressionNotAllowedError(value);\n }\n // Evaluate the string\n const evaluated = this.evaluateString(value, context);\n // Convert to target type if specified\n if (targetType) {\n return this.convertToScalar(evaluated, targetType);\n }\n return evaluated;\n }\n /**\n * Evaluate all expressions in a string value using substitution.\n */\n static evaluateString(value, context) {\n let result = value;\n // Substitute environment variable expressions\n result = result.replace(this.ENV_PATTERN, (_match, varName, defaultValue) => {\n return this.resolveEnvironmentVariable(varName, defaultValue, context);\n });\n // Substitute configuration expressions\n result = result.replace(this.CONFIG_PATTERN, (_match, key, defaultValue) => {\n return this.resolveConfigurationValue(key, defaultValue, context);\n });\n return result;\n }\n /**\n * Resolve an environment variable expression\n */\n static resolveEnvironmentVariable(varName, defaultValue, context) {\n // Check context environment first, then global process.env (Node.js)\n let envValue;\n if (context.env?.[varName] !== undefined) {\n envValue = context.env[varName];\n }\n else if (typeof globalThis !== 'undefined' &&\n 'process' in globalThis) {\n const nodeProcess = globalThis.process;\n if (nodeProcess?.env?.[varName] !== undefined) {\n envValue = nodeProcess.env[varName];\n }\n }\n if (envValue !== undefined) {\n return envValue;\n }\n else if (defaultValue !== undefined) {\n return defaultValue;\n }\n else {\n throw new MissingEnvironmentVariableError(varName);\n }\n }\n /**\n * Resolve a configuration value expression\n */\n static resolveConfigurationValue(key, defaultValue, context) {\n const configValue = this.getNestedValue(context.config ?? {}, key);\n if (configValue !== undefined) {\n return String(configValue);\n }\n else if (defaultValue !== undefined) {\n return defaultValue;\n }\n else {\n throw new Error(`Configuration key '${key}' is required but not defined`);\n }\n }\n /**\n * Get a nested value from an object using dot notation\n */\n static getNestedValue(obj, path) {\n return path.split('.').reduce((current, key) => {\n return current && typeof current === 'object' && key in current\n ? current[key]\n : undefined;\n }, obj);\n }\n /**\n * Convert a string value to the target scalar type if possible.\n */\n static convertToScalar(value, targetType) {\n try {\n switch (targetType) {\n case 'boolean': {\n const lower = value.toLowerCase();\n if (['true', '1', 'yes', 'on'].includes(lower)) {\n return true;\n }\n else if (['false', '0', 'no', 'off'].includes(lower)) {\n return false;\n }\n return value; // Keep as string if not clearly boolean\n }\n case 'number': {\n const num = Number(value);\n return isNaN(num) ? value : num;\n }\n case 'string':\n default:\n return value;\n }\n }\n catch {\n return value; // Return original if conversion fails\n }\n }\n}\n/** Regex pattern for environment variable expressions */\nExpressionEvaluator.ENV_PATTERN = /\\$\\{env:([^:}]+)(?::([^}]*))?\\}/g;\n/** Regex pattern for configuration expressions */\nExpressionEvaluator.CONFIG_PATTERN = /\\$\\{config:([^:}]+)(?::([^}]*))?\\}/g;\n/** Combined pattern for any expression */\nExpressionEvaluator.ANY_EXPRESSION_PATTERN = /\\$\\{(?:env|config):([^:}]+)(?::([^}]*))?\\}/;\n//# sourceMappingURL=expression-evaluator.js.map","import { ExpressionEvaluator } from './expression-evaluator.js';\n/**\n * Resource configuration validator and processor.\n *\n * Provides validation, expression evaluation, and type coercion for resource configurations.\n * This replaces Pydantic's validation in the Python version.\n */\nexport class ResourceConfigValidator {\n constructor() {\n this.schemas = new Map();\n }\n /**\n * Register a configuration schema for a specific type.\n *\n * @param schema The schema to register\n */\n registerSchema(schema) {\n this.schemas.set(schema.type, schema);\n }\n /**\n * Get a registered schema by type.\n *\n * @param type The configuration type\n * @returns The schema or undefined if not found\n */\n getSchema(type) {\n return this.schemas.get(type);\n }\n /**\n * Validate and process a resource configuration.\n *\n * @param config The configuration to validate\n * @param context The validation context\n * @returns The validation result\n */\n validate(config, context = {}) {\n const errors = [];\n // Basic type check\n if (!config || typeof config !== 'object' || Array.isArray(config)) {\n return {\n valid: false,\n errors: [\n {\n path: '',\n message: 'Configuration must be an object',\n value: config,\n expected: 'object',\n },\n ],\n };\n }\n const configObj = config;\n // Check for type field\n if (!('type' in configObj) || typeof configObj.type !== 'string') {\n return {\n valid: false,\n errors: [\n {\n path: 'type',\n message: 'Configuration must have a string \"type\" field',\n value: configObj.type,\n expected: 'string',\n },\n ],\n };\n }\n const configType = configObj.type;\n const schema = this.schemas.get(configType);\n // If no schema is registered, do basic validation\n if (!schema) {\n const processedConfig = this.processExpressions(configObj, context);\n return {\n valid: true,\n errors: [],\n config: processedConfig,\n };\n }\n // Validate against schema\n const processedConfig = { ...configObj };\n this.validateObject(processedConfig, schema, '', errors, context);\n // Process expressions if validation passed\n if (errors.length === 0) {\n const finalConfig = this.processExpressions(processedConfig, context);\n return {\n valid: true,\n errors: [],\n config: finalConfig,\n };\n }\n return {\n valid: false,\n errors,\n };\n }\n /**\n * Validate an object against a schema.\n */\n validateObject(obj, schema, basePath, errors, context) {\n // Check required properties and validate existing ones\n for (const [propName, propSchema] of Object.entries(schema.properties)) {\n const propPath = basePath ? `${basePath}.${propName}` : propName;\n const value = obj[propName];\n if (value === undefined || value === null) {\n if (propSchema.required) {\n errors.push({\n path: propPath,\n message: `Required property '${propName}' is missing`,\n value,\n expected: propSchema.type,\n });\n }\n else if (propSchema.defaultValue !== undefined) {\n obj[propName] = propSchema.defaultValue;\n }\n continue;\n }\n // Validate property\n this.validateProperty(value, propSchema, propPath, errors, context);\n }\n // Check for unknown properties\n const allowUnknown = schema.allowUnknownProperties ??\n context.allowUnknownProperties ??\n false;\n if (!allowUnknown) {\n for (const propName of Object.keys(obj)) {\n if (!(propName in schema.properties)) {\n const propPath = basePath\n ? `${basePath}.${propName}`\n : propName;\n errors.push({\n path: propPath,\n message: `Unknown property '${propName}'`,\n value: obj[propName],\n });\n }\n }\n }\n }\n /**\n * Validate a single property value.\n */\n validateProperty(value, schema, path, errors, context) {\n // Type validation\n const actualType = this.getValueType(value);\n if (actualType !== schema.type) {\n // Try type coercion for primitive types\n const coerced = this.coerceType(value, schema.type);\n if (coerced.success) {\n // Note: Type coercion would update the value in place\n // For now, we'll accept the coerced value\n // In a full implementation, you'd need to update the parent object\n }\n else {\n errors.push({\n path,\n message: `Expected ${schema.type} but got ${actualType}`,\n value,\n expected: schema.type,\n });\n return;\n }\n }\n // Custom validation\n if (schema.validator) {\n const result = schema.validator(value);\n if (typeof result === 'string') {\n errors.push({\n path,\n message: result,\n value,\n });\n }\n else if (!result) {\n errors.push({\n path,\n message: `Custom validation failed for property '${path}'`,\n value,\n });\n }\n }\n // Nested validation for objects\n if (schema.type === 'object' &&\n schema.properties &&\n typeof value === 'object' &&\n value !== null) {\n const nestedSchema = {\n type: 'nested',\n properties: schema.properties,\n };\n if (context.allowUnknownProperties !== undefined) {\n nestedSchema.allowUnknownProperties =\n context.allowUnknownProperties;\n }\n this.validateObject(value, nestedSchema, path, errors, context);\n }\n // Array validation\n if (schema.type === 'array' && schema.items && Array.isArray(value)) {\n value.forEach((item, index) => {\n this.validateProperty(item, schema.items, `${path}[${index}]`, errors, context);\n });\n }\n }\n /**\n * Get the type of a value as a string.\n */\n getValueType(value) {\n if (value === null)\n return 'null';\n if (Array.isArray(value))\n return 'array';\n return typeof value;\n }\n /**\n * Attempt to coerce a value to the target type.\n */\n coerceType(value, targetType) {\n try {\n switch (targetType) {\n case 'string':\n return { success: true, value: String(value) };\n case 'number': {\n const num = Number(value);\n return { success: !isNaN(num), value: num };\n }\n case 'boolean': {\n if (typeof value === 'boolean')\n return { success: true, value };\n if (typeof value === 'string') {\n const lower = value.toLowerCase();\n if (['true', '1', 'yes', 'on'].includes(lower)) {\n return { success: true, value: true };\n }\n if (['false', '0', 'no', 'off'].includes(lower)) {\n return { success: true, value: false };\n }\n }\n return { success: false };\n }\n default:\n return { success: false };\n }\n }\n catch {\n return { success: false };\n }\n }\n /**\n * Process expressions in a configuration object.\n */\n processExpressions(config, context) {\n const result = {};\n for (const [key, value] of Object.entries(config)) {\n result[key] = this.processValue(value, context);\n }\n return result;\n }\n /**\n * Process expressions in a single value recursively.\n */\n processValue(value, context) {\n if (typeof value === 'string') {\n // Process string expressions\n const evaluated = ExpressionEvaluator.evaluate(value, context);\n if (typeof evaluated === 'string') {\n return this.coerceEvaluatedScalar(evaluated);\n }\n return evaluated;\n }\n else if (Array.isArray(value)) {\n // Process array elements\n return value.map((item) => this.processValue(item, context));\n }\n else if (value && typeof value === 'object') {\n const prototype = Object.getPrototypeOf(value);\n const isPlainObject = !prototype || prototype === Object.prototype;\n if (!isPlainObject) {\n return value;\n }\n const processedObj = {};\n for (const [key, val] of Object.entries(value)) {\n processedObj[key] = this.processValue(val, context);\n }\n return processedObj;\n }\n return value;\n }\n coerceEvaluatedScalar(value) {\n const trimmed = value.trim();\n if (!trimmed) {\n return value;\n }\n const lower = trimmed.toLowerCase();\n if (lower === 'true') {\n return true;\n }\n if (lower === 'false') {\n return false;\n }\n if (/^[+-]?\\d+(?:\\.\\d+)?$/.test(trimmed)) {\n const numeric = Number(trimmed);\n if (!Number.isNaN(numeric)) {\n return numeric;\n }\n }\n return value;\n }\n}\n/**\n * Global configuration validator instance\n */\nexport const configValidator = new ResourceConfigValidator();\n//# sourceMappingURL=resource-config.js.map","import { ExtensionManager } from './extension-manager.js';\nimport { configValidator, } from './resource-config.js';\n/**\n * Central registry for resource factories with type-based dispatch.\n *\n * This is the main entry point for creating resources and replaces the\n * Python ResourceFactoryRegistry functionality.\n */\nexport class ResourceFactoryRegistry {\n /**\n * Create a resource from configuration using registered factories.\n *\n * @param baseTypeName The base factory type (e.g., \"ConnectorFactory\")\n * @param config The resource configuration\n * @param options Creation options\n * @returns Promise resolving to the created resource\n */\n static async createResource(baseTypeName, config, options = {}) {\n if (!config) {\n return null;\n }\n // Ensure config has a type field\n const configObj = config;\n const resourceType = configObj.type;\n if (!resourceType || typeof resourceType !== 'string') {\n throw new Error(`Configuration must have a 'type' field, got: ${JSON.stringify(config)}`);\n }\n // Validate configuration if requested\n let validatedConfig = config;\n if (options.validate !== false) {\n const validator = options.validator ?? configValidator;\n const validationResult = validator.validate(config, options);\n if (!validationResult.valid) {\n const errorMessages = validationResult.errors\n .map((error) => `${error.path}: ${error.message}`)\n .join('; ');\n throw new Error(`Configuration validation failed: ${errorMessages}`);\n }\n if (validationResult.config) {\n validatedConfig = validationResult.config;\n }\n }\n const factory = ExtensionManager.getGlobalFactory(baseTypeName, resourceType, ...(options.factoryArgs ?? []));\n const forwardedOptions = {};\n if (options.env) {\n forwardedOptions.env = { ...options.env };\n }\n if (options.config) {\n forwardedOptions.config = { ...options.config };\n }\n if (options.variables) {\n forwardedOptions.variables = { ...options.variables };\n }\n if (options.validate !== undefined) {\n forwardedOptions.validate = options.validate;\n }\n if (options.validator) {\n forwardedOptions.validator = options.validator;\n }\n const factoryArgs = [...(options.factoryArgs ?? [])];\n if (Object.keys(forwardedOptions).length > 0) {\n factoryArgs.push(forwardedOptions);\n }\n // Create the resource\n return await factory.create(validatedConfig, ...factoryArgs);\n }\n /**\n * Create a resource using the best available default implementation.\n *\n * @param baseTypeName The base factory type\n * @param config Optional configuration (without 'type' field)\n * @param options Creation options\n * @returns Promise resolving to the created resource\n */\n static async createDefaultResource(baseTypeName, config = null, options = {}) {\n // Get the best default factory\n const defaultResult = ExtensionManager.getBestGlobalDefaultFactory(baseTypeName);\n if (!defaultResult) {\n console.warn(`No default factory found for base type: ${baseTypeName}`);\n return null;\n }\n const [defaultFactory, factoryType] = defaultResult;\n // Merge config with default type\n const finalConfig = {\n type: factoryType,\n ...(config ?? {}),\n };\n // Validate configuration if requested\n let validatedConfig = finalConfig;\n if (options.validate !== false) {\n const validator = options.validator ?? configValidator;\n const validationResult = validator.validate(finalConfig, options);\n if (!validationResult.valid) {\n const errorMessages = validationResult.errors\n .map((error) => `${error.path}: ${error.message}`)\n .join('; ');\n throw new Error(`Configuration validation failed: ${errorMessages}`);\n }\n if (validationResult.config) {\n validatedConfig = validationResult.config;\n }\n }\n const forwardedOptions = {};\n if (options.env) {\n forwardedOptions.env = { ...options.env };\n }\n if (options.config) {\n forwardedOptions.config = { ...options.config };\n }\n if (options.variables) {\n forwardedOptions.variables = { ...options.variables };\n }\n if (options.validate !== undefined) {\n forwardedOptions.validate = options.validate;\n }\n if (options.validator) {\n forwardedOptions.validator = options.validator;\n }\n const factoryArgs = [...(options.factoryArgs ?? [])];\n if (Object.keys(forwardedOptions).length > 0) {\n factoryArgs.push(forwardedOptions);\n }\n // Create the resource\n return await defaultFactory.create(validatedConfig, ...factoryArgs);\n }\n /**\n * Register a factory for a specific base type and resource type.\n *\n * @param baseTypeName The base factory type (e.g., \"ConnectorFactory\")\n * @param resourceTypeName The specific resource type (e.g., \"HttpConnector\")\n * @param factoryConstructor The factory constructor\n * @param metadata Optional factory metadata\n */\n static registerFactory(baseTypeName, resourceTypeName, factoryConstructor, metadata) {\n ExtensionManager.registerGlobalFactory(baseTypeName, resourceTypeName, factoryConstructor, metadata);\n }\n /**\n * Unregister factories for a base type. When a resource type name is provided, only that factory\n * is removed. Otherwise all factories registered under the base type are cleared.\n *\n * @param baseTypeName The base factory type name\n * @param resourceTypeName Optional specific resource type to remove\n */\n static unregisterFactory(baseTypeName, resourceTypeName) {\n ExtensionManager.unregisterGlobalFactory(baseTypeName, resourceTypeName);\n }\n /**\n * Register a factory instance directly.\n *\n * @param baseTypeName The base factory type\n * @param factory The factory instance\n */\n static registerFactoryInstance(baseTypeName, factory) {\n ExtensionManager.registerGlobalFactoryInstance(baseTypeName, factory);\n }\n /**\n * Get a factory by base type and resource type.\n *\n * @param baseTypeName The base factory type\n * @param resourceTypeName The resource type\n * @param args Arguments to pass to factory constructor\n * @returns The factory instance\n */\n static getFactory(baseTypeName, resourceTypeName, ...args) {\n return ExtensionManager.getGlobalFactory(baseTypeName, resourceTypeName, ...args);\n }\n /**\n * Get all available resource types for a base factory type.\n *\n * @param baseTypeName The base factory type\n * @returns Array of available resource type names\n */\n static getAvailableTypes(baseTypeName) {\n const group = `naylence.${baseTypeName}`;\n const manager = ExtensionManager.getExtensionManager(group, baseTypeName);\n return manager.getAvailableNames();\n }\n /**\n * Get default resource types for a base factory type.\n *\n * @param baseTypeName The base factory type\n * @returns Array of [factory, type name] pairs that are marked as defaults\n */\n static getDefaultTypes(baseTypeName) {\n const group = `naylence.${baseTypeName}`;\n const manager = ExtensionManager.getExtensionManager(group, baseTypeName);\n return manager.getDefaultFactories();\n }\n /**\n * Clear factory instance caches.\n *\n * @param baseTypeName Optional base type to clear, or undefined to clear all\n * @param resourceTypeName Optional resource type to clear within the base type\n */\n static clearCache(baseTypeName, resourceTypeName) {\n if (baseTypeName) {\n const group = `naylence.${baseTypeName}`;\n const manager = ExtensionManager.getExtensionManager(group, baseTypeName);\n manager.clearInstanceCache(resourceTypeName);\n }\n else {\n // Clear all caches\n const allManagers = ExtensionManager.getAllExtensionManagers();\n for (const manager of allManagers.values()) {\n manager.clearInstanceCache();\n }\n }\n }\n}\n// Convenience functions that mirror the class methods\nexport async function createResource(baseTypeName, config, options = {}) {\n return ResourceFactoryRegistry.createResource(baseTypeName, config, options);\n}\nexport async function createDefaultResource(baseTypeName, config = null, options = {}) {\n return ResourceFactoryRegistry.createDefaultResource(baseTypeName, config, options);\n}\nexport function registerFactory(baseTypeName, resourceTypeName, factoryConstructor, metadata) {\n ResourceFactoryRegistry.registerFactory(baseTypeName, resourceTypeName, factoryConstructor, metadata);\n}\nexport function unregisterFactory(baseTypeName, resourceTypeName) {\n ResourceFactoryRegistry.unregisterFactory(baseTypeName, resourceTypeName);\n}\nexport function getFactory(baseTypeName, resourceTypeName, ...args) {\n return ResourceFactoryRegistry.getFactory(baseTypeName, resourceTypeName, ...args);\n}\n//# sourceMappingURL=factory-registry.js.map","const isNodeEnvironment = typeof process !== 'undefined' && Boolean(process?.versions?.node);\nlet customDynamicImporter = null;\nlet customResolveFromCwd = null;\nlet cachedNodeRequire = null;\nlet cachedPathToFileURL = null;\nfunction getGlobalDynamicImporter() {\n try {\n const candidate = globalThis;\n const override = candidate?.__naylenceFactoryDynamicImporter;\n if (typeof override === 'function') {\n return override;\n }\n }\n catch {\n // Ignore access errors (e.g., globalThis not defined)\n }\n return null;\n}\nfunction getDynamicImporter() {\n if (customDynamicImporter) {\n return customDynamicImporter;\n }\n const globalImporter = getGlobalDynamicImporter();\n if (globalImporter) {\n return globalImporter;\n }\n return (specifier) => import(specifier);\n}\nfunction shouldAttemptNodeFallback(error) {\n if (!isNodeEnvironment || !error || typeof error !== 'object') {\n return false;\n }\n const candidate = error;\n const code = candidate.code ?? '';\n const message = candidate.message ?? '';\n if (code === 'ERR_MODULE_NOT_FOUND' || code === 'MODULE_NOT_FOUND') {\n return true;\n }\n return (message.includes('Cannot find package') ||\n message.includes('Cannot find module'));\n}\nfunction isBarePackageSpecifier(value) {\n if (!value) {\n return false;\n }\n if (value.startsWith('.') ||\n value.startsWith('/') ||\n value.startsWith('node:') ||\n value.startsWith('file:') ||\n value.startsWith('data:')) {\n return false;\n }\n if (value.startsWith('@')) {\n const parts = value.split('/');\n return parts.length === 2;\n }\n return !value.includes('/');\n}\nfunction deriveDefaultModuleSpecifier(spec) {\n const exportName = spec.export ?? 'default';\n if (exportName !== 'default') {\n return null;\n }\n if (!isBarePackageSpecifier(spec.name)) {\n return null;\n }\n const trimmed = spec.name.replace(/\\/+$/u, '');\n return `${trimmed}/plugin`;\n}\nasync function resolveFromProcessCwd(specifier) {\n if (customResolveFromCwd) {\n return customResolveFromCwd(specifier);\n }\n if (!isNodeEnvironment) {\n return null;\n }\n if (!cachedNodeRequire) {\n try {\n const [{ createRequire }, urlModule] = await Promise.all([\n import('node:module'),\n import('node:url'),\n ]);\n cachedPathToFileURL = urlModule.pathToFileURL;\n const baseUrl = cachedPathToFileURL(`${process.cwd()}/`);\n const virtualEntry = new URL('./__naylence_plugin_resolver__.js', baseUrl);\n cachedNodeRequire = createRequire(virtualEntry);\n }\n catch (error) {\n if (process?.env?.FAME_PLUGINS_DEBUG) {\n console.warn('[plugins] unable to create require from cwd', error);\n }\n cachedNodeRequire = null;\n }\n }\n if (!cachedNodeRequire) {\n return null;\n }\n try {\n const resolved = cachedNodeRequire.resolve(specifier);\n if (!cachedPathToFileURL) {\n const { pathToFileURL } = (await import('node:url'));\n cachedPathToFileURL = pathToFileURL;\n }\n let candidatePath = resolved;\n if (/dist[\\\\/]+cjs[\\\\/]+/u.test(resolved)) {\n const esmPath = resolved.replace(/dist[\\\\/]+cjs[\\\\/]+/u, 'dist/esm/');\n try {\n const { access } = (await import('node:fs/promises'));\n await access(esmPath);\n candidatePath = esmPath;\n }\n catch {\n // Ignore missing ESM build and fall back to the original resolved path.\n }\n }\n return cachedPathToFileURL(candidatePath).href;\n }\n catch (error) {\n if (process?.env?.FAME_PLUGINS_DEBUG) {\n console.debug('[plugins] cwd resolution failed', {\n specifier,\n error,\n });\n }\n return null;\n }\n}\nasync function importPluginModule(spec) {\n const importer = getDynamicImporter();\n const attempted = new Set();\n const defaultSpecifier = deriveDefaultModuleSpecifier(spec);\n const queue = [];\n if (defaultSpecifier && defaultSpecifier !== spec.name) {\n queue.push(defaultSpecifier);\n }\n queue.push(spec.name);\n let lastError;\n while (queue.length > 0) {\n const target = queue.shift();\n if (!target || attempted.has(target)) {\n continue;\n }\n attempted.add(target);\n try {\n return await importer(target);\n }\n catch (error) {\n lastError = error;\n if (!shouldAttemptNodeFallback(error)) {\n continue;\n }\n const resolved = await resolveFromProcessCwd(target);\n if (resolved && !attempted.has(resolved)) {\n queue.push(resolved);\n }\n }\n }\n if (lastError) {\n throw lastError;\n }\n throw new Error(`Unable to import plugin spec '${spec.name}'`);\n}\nfunction toArray(input) {\n if (Array.isArray(input)) {\n return input;\n }\n if (typeof input === 'string') {\n return input.split(/[,\\s]+/);\n }\n return String(input ?? '').split(/[\\s,]+/);\n}\nfunction parsePluginSpecs(input) {\n const values = toArray(input)\n .map((value) => value.trim())\n .filter(Boolean);\n return Array.from(new Set(values));\n}\nasync function getDefaultResolver() {\n const module = await import('./plugin-resolver.js');\n const resolverCtor = module.ConventionPluginResolver;\n if (typeof resolverCtor !== 'function') {\n throw new Error('ConventionPluginResolver is not available');\n }\n return new resolverCtor();\n}\nexport async function loadPlugins(specs, resolver) {\n const parsed = parsePluginSpecs(specs);\n if (parsed.length === 0) {\n return;\n }\n const activeResolver = resolver ?? (await getDefaultResolver());\n for (const spec of parsed) {\n const plugin = await activeResolver.resolve(spec);\n if (plugin) {\n await plugin.register();\n }\n }\n}\nfunction readEnv(key) {\n if (typeof process === 'undefined' || typeof process.env === 'undefined') {\n return '';\n }\n return process.env[key] ?? '';\n}\nexport async function loadPluginsFromEnv(envKey = 'FAME_PLUGINS') {\n const value = readEnv(envKey);\n await loadPlugins(value);\n}\nfunction ensurePlugin(candidate, spec) {\n if (!candidate || typeof candidate !== 'object') {\n throw new Error(`Plugin '${spec.name}' export '${spec.export ?? 'default'}' is not an object`);\n }\n const plugin = candidate;\n if (typeof plugin.register !== 'function') {\n throw new Error(`Plugin '${spec.name}' export '${spec.export ?? 'default'}' does not expose a register() function`);\n }\n return plugin;\n}\nexport async function loadPluginsFromSpecs(specs) {\n const entries = Array.from(specs);\n if (entries.length === 0) {\n return;\n }\n for (const spec of entries) {\n if (!spec?.name) {\n throw new Error('Plugin spec missing name');\n }\n const module = await importPluginModule(spec);\n const exportName = spec.export ?? 'default';\n const candidate = module[exportName];\n const plugin = ensurePlugin(candidate, spec);\n await plugin.register();\n }\n}\n// Exported for testing purposes\nexport const _internal = {\n parsePluginSpecs,\n importPluginModule,\n resolveFromProcessCwd,\n setDynamicImporter(importer) {\n customDynamicImporter = importer;\n },\n setResolveFromCwd(resolver) {\n customResolveFromCwd = resolver;\n },\n resetImportOverrides() {\n customDynamicImporter = null;\n customResolveFromCwd = null;\n cachedNodeRequire = null;\n cachedPathToFileURL = null;\n },\n};\n//# sourceMappingURL=plugins.js.map","let manifest = null;\nexport function registerFactoryManifest(data) {\n manifest = data ? { ...data } : null;\n}\nexport function readFactoryManifestIfAny() {\n return manifest;\n}\nexport const _internal = {\n reset() {\n manifest = null;\n },\n};\n//# sourceMappingURL=manifest.js.map","import { loadPluginsFromSpecs, readFactoryManifestIfAny, } from '@naylence/factory';\nlet bootstrapped = false;\nexport async function ensurePluginsLoadedFromConfig(cfg) {\n if (bootstrapped || cfg?.autoLoadPlugins === false) {\n return;\n }\n const specs = resolvePluginList(cfg);\n const logger = createLogger(cfg?.pluginLogLevel ?? 'warn');\n let loadedCount = 0;\n let source = 'auto';\n try {\n if (specs.length > 0) {\n await loadPluginsFromSpecs(specs);\n loadedCount = specs.length;\n source = 'config';\n }\n else {\n const manifest = readFactoryManifestIfAny();\n const manifestSpecs = manifest?.plugins ?? [];\n if (manifestSpecs.length) {\n await loadPluginsFromSpecs(manifestSpecs);\n loadedCount = manifestSpecs.length;\n source = 'manifest';\n }\n }\n bootstrapped = true;\n logger.info?.(`[plugins] loaded (${loadedCount}) via ${source}.`);\n }\n catch (error) {\n logger.error?.(`[plugins] bootstrap error: ${error?.message ?? error}`);\n bootstrapped = true;\n }\n}\nfunction resolvePluginList(cfg) {\n const fromCfg = normalizeSpecs(cfg?.plugins ?? []);\n const fromEnv = readEnvPlugins();\n return dedupe([...fromCfg, ...fromEnv]);\n}\nfunction readEnvPlugins() {\n if (typeof process === 'undefined' || !process?.env?.FAME_PLUGINS) {\n return [];\n }\n const raw = String(process.env.FAME_PLUGINS);\n const parts = raw.split(/[\\s,]+/).map((part) => part.trim()).filter(Boolean);\n return normalizeSpecs(parts);\n}\nfunction normalizeSpecs(list) {\n const out = [];\n for (const entry of list) {\n let spec;\n if (typeof entry === 'string') {\n const [name, exp] = entry.split(':');\n if (!name) {\n continue;\n }\n spec = { name, export: exp || 'default' };\n }\n else {\n if (!entry?.name) {\n continue;\n }\n spec = {\n name: entry.name,\n export: entry.export ?? 'default',\n };\n }\n out.push(spec);\n }\n return out;\n}\nfunction dedupe(list) {\n const seen = new Set();\n const out = [];\n for (const spec of list) {\n const key = `${spec.name}:${spec.export ?? 'default'}`;\n if (!seen.has(key)) {\n seen.add(key);\n out.push(spec);\n }\n }\n return out;\n}\nfunction createLogger(level) {\n const allow = (severity) => {\n if (level === 'silent') {\n return false;\n }\n if (severity === 'error') {\n return true;\n }\n if (severity === 'warn') {\n return level === 'warn' || level === 'info' || level === 'debug';\n }\n if (severity === 'info') {\n return level === 'info' || level === 'debug';\n }\n if (severity === 'debug') {\n return level === 'debug';\n }\n return false;\n };\n return {\n error: allow('error') ? console.error.bind(console) : undefined,\n warn: allow('warn') ? console.warn.bind(console) : undefined,\n info: allow('info') ? console.info.bind(console) : undefined,\n debug: allow('debug') ? console.debug.bind(console) : undefined,\n };\n}\nexport function _resetBootstrapStateForTests() {\n bootstrapped = false;\n}\n//# sourceMappingURL=bootstrap.js.map","import { z } from 'zod';\nimport { ensurePluginsLoadedFromConfig } from './plugins/bootstrap.js';\nimport { snakeToCamelObject } from './util/case-conversion.js';\nconst PluginEntrySchema = z.union([\n z.string(),\n z.object({\n name: z.string(),\n export: z.string().optional(),\n }),\n]);\n// Export the base schema for extension\nexport const FameConfigBaseSchema = z\n .object({\n fabric: z.any().optional().describe('Fame fabric config'),\n plugins: z.array(PluginEntrySchema).optional().default([]),\n autoLoadPlugins: z.boolean().optional().default(true),\n pluginLogLevel: z\n .enum(['silent', 'error', 'warn', 'info', 'debug'])\n .optional()\n .default('warn'),\n})\n .loose();\n// Apply preprocessing to the base schema for snake_case support\nexport const FameConfigSchema = z.preprocess(snakeToCamelObject, FameConfigBaseSchema);\nexport async function normalizeFameConfig(input) {\n const prepared = prepareConfigInput(input);\n const parsed = FameConfigSchema.parse(prepared);\n await ensurePluginsLoadedFromConfig(parsed);\n return parsed;\n}\nfunction prepareConfigInput(input) {\n const base = {};\n if (input && typeof input === 'object') {\n Object.assign(base, input);\n }\n const plugins = base.plugins;\n if (plugins === undefined || plugins === null) {\n delete base.plugins;\n }\n else if (!Array.isArray(plugins)) {\n base.plugins = [plugins];\n }\n return base;\n}\n//# sourceMappingURL=fame-config.js.map","let currentResolver = null;\nexport function setDefaultFameConfigResolver(resolver) {\n currentResolver = resolver ?? null;\n}\nexport function getDefaultFameConfigResolver() {\n return currentResolver;\n}\nexport async function resolveDefaultFameConfig() {\n if (!currentResolver) {\n return null;\n }\n const result = await currentResolver();\n if (result == null) {\n return null;\n }\n if (typeof result !== 'object' || Array.isArray(result)) {\n throw new Error('Default Fame config resolver must return an object, null, or undefined');\n }\n return result;\n}\n//# sourceMappingURL=default-fame-config-resolver.js.map","import { z } from 'zod';\nexport const FameFabricConfigSchema = z.object({\n type: z.string().default('FameFabric'),\n opts: z.record(z.string(), z.any()).optional().default({}).describe('Arbitrary kwargs forwarded to the fabric factory'),\n});\n//# sourceMappingURL=fame-fabric-config.js.map","/**\n * Entry-point base-class for concrete fabric factories.\n */\nexport class FameFabricFactory {\n constructor() {\n this.isDefault = false;\n this.priority = 0;\n }\n}\n//# sourceMappingURL=fame-fabric-factory.js.map","import { z } from 'zod';\nexport const CreditUpdateFrameSchema = z.object({\n type: z.literal('CreditUpdate').default('CreditUpdate'),\n flowId: z.string().describe('Which flow to refill'),\n credits: z.number().int().describe('Number of new credits granted'),\n});\nexport var FlowFlags;\n(function (FlowFlags) {\n FlowFlags[FlowFlags[\"NONE\"] = 0] = \"NONE\";\n FlowFlags[FlowFlags[\"SYN\"] = 1] = \"SYN\";\n FlowFlags[FlowFlags[\"ACK\"] = 2] = \"ACK\";\n FlowFlags[FlowFlags[\"RESET\"] = 4] = \"RESET\";\n})(FlowFlags || (FlowFlags = {}));\n//# sourceMappingURL=flow.js.map","export var DeliveryOriginType;\n(function (DeliveryOriginType) {\n DeliveryOriginType[\"DOWNSTREAM\"] = \"downstream\";\n DeliveryOriginType[\"UPSTREAM\"] = \"upstream\";\n DeliveryOriginType[\"PEER\"] = \"peer\";\n DeliveryOriginType[\"LOCAL\"] = \"local\";\n})(DeliveryOriginType || (DeliveryOriginType = {}));\n//# sourceMappingURL=origin-type.js.map","/**\n * Security profile definitions for negotiating cryptographic settings between nodes.\n */\nimport { z } from 'zod';\n/**\n * Types of cryptographic evidence used for signing envelopes.\n */\nexport var SigningMaterial;\n(function (SigningMaterial) {\n SigningMaterial[\"RAW_KEY\"] = \"raw-key\";\n SigningMaterial[\"X509_CHAIN\"] = \"x509-chain\";\n})(SigningMaterial || (SigningMaterial = {}));\n/**\n * Negotiated security settings for node signing material.\n * This model is extensible - new fields can be added without breaking compatibility.\n */\nexport const SecuritySettingsSchema = z.object({\n signingMaterial: z.nativeEnum(SigningMaterial)\n .default(SigningMaterial.RAW_KEY)\n .describe('Type of cryptographic evidence used for signing envelopes'),\n}).passthrough(); // Allow additional properties for future extensions\n//# sourceMappingURL=security-settings.js.map","import { z } from 'zod';\nimport { FameAddressSchema } from '../address/address.js';\nimport { DeliveryOriginType } from './origin-type.js';\nimport { SecuritySettingsSchema } from './security-settings.js';\n// Base frame schema\nexport const FameFrameSchema = z.object({\n type: z.string(),\n});\n// Delivery acknowledgment frame\nexport const DeliveryAckFrameSchema = z.object({\n type: z.literal('DeliveryAck').default('DeliveryAck'),\n ok: z.boolean().default(true), // True ⇒ ACK, False ⇒ NACK\n code: z.string().optional(),\n reason: z.string().optional(),\n refId: z.string().optional(), // Optional reference id, typically envelope id being acked\n});\n// Stickiness negotiation payload\nexport const StickinessSchema = z.object({\n // Preferred mechanism or negotiated mode: 'aft' (advanced) or 'attr' (simple)\n mode: z.enum(['aft', 'attr']).optional(),\n // Optional multi-mode advertisement from child; if present, 'mode' is the preferred one\n supportedModes: z.array(z.enum(['aft', 'attr'])).optional(),\n // Parent-side toggle when replying; ignored by child when advertising\n enabled: z.boolean().optional(),\n // TTL hint for AFT-based stickiness; ignored for attribute mode\n ttlSec: z.number().optional(),\n // Schema version for forward-compat negotiation\n version: z.number().default(1),\n});\n// Address bind frame\nexport const AddressBindFrameSchema = z.object({\n type: z.literal('AddressBind').default('AddressBind'),\n address: FameAddressSchema,\n encryptionKeyId: z.string().optional(),\n physicalPath: z.string().optional(),\n});\n// Address bind acknowledgment frame\nexport const AddressBindAckFrameSchema = DeliveryAckFrameSchema.extend({\n type: z.literal('AddressBindAck').default('AddressBindAck'),\n address: FameAddressSchema,\n});\n// Address unbind frame\nexport const AddressUnbindFrameSchema = z.object({\n type: z.literal('AddressUnbind').default('AddressUnbind'),\n address: FameAddressSchema,\n});\n// Address unbind acknowledgment frame\nexport const AddressUnbindAckFrameSchema = DeliveryAckFrameSchema.extend({\n type: z.literal('AddressUnbindAck').default('AddressUnbindAck'),\n address: FameAddressSchema,\n});\n// Node heartbeat frame\nexport const NodeHeartbeatFrameSchema = z.object({\n type: z.literal('NodeHeartbeat').default('NodeHeartbeat'),\n address: FameAddressSchema.optional(),\n systemId: z.string().optional(),\n payload: z.any().optional(),\n});\n// Node heartbeat acknowledgment frame\nexport const NodeHeartbeatAckFrameSchema = DeliveryAckFrameSchema.extend({\n type: z.literal('NodeHeartbeatAck').default('NodeHeartbeatAck'),\n address: FameAddressSchema.optional(),\n routingEpoch: z.string().optional(),\n payload: z.any().optional(),\n});\n// Data frame with optional encryption\nexport const DataFrameSchema = z.object({\n type: z.literal('Data').default('Data'),\n fid: z.string().optional(),\n codec: z.enum(['json', 'b64']).optional(),\n payload: z.any(),\n pd: z.string().optional(), // Payload digest only for encrypted data frames\n // Channel encryption fields\n cid: z.string().optional().describe('Channel ID for encrypted data frames'),\n nonce: z.string().optional().describe('Base64-encoded nonce for encrypted frames (12 bytes)'),\n}).transform((data) => {\n // Validate nonce length if provided\n if (data.nonce) {\n try {\n const decoded = atob(data.nonce);\n if (decoded.length !== 12) {\n throw new Error(`Nonce must be exactly 12 bytes, got ${decoded.length}`);\n }\n }\n catch (e) {\n throw new Error(`Invalid base64 nonce: ${e}`);\n }\n }\n return data;\n});\n// Node hello frame\nexport const NodeHelloFrameSchema = z.object({\n type: z.literal('NodeHello').default('NodeHello'),\n systemId: z.string(), // Final system_id for this node (might be newly assigned)\n logicals: z.array(z.string()).optional(),\n capabilities: z.array(z.string()).optional(),\n supportedTransports: z.array(z.string()).optional(),\n regionHint: z.string().optional(),\n instanceId: z.string(),\n securitySettings: SecuritySettingsSchema.optional()\n .describe('Desired security settings for the child node'),\n});\n// Node welcome frame\nexport const NodeWelcomeFrameSchema = z.object({\n type: z.literal('NodeWelcome').default('NodeWelcome'),\n systemId: z.string(),\n targetSystemId: z.string().optional(),\n targetPhysicalPath: z.string().optional(),\n instanceId: z.string(),\n assignedPath: z.string().optional(),\n acceptedCapabilities: z.array(z.string()).optional(),\n acceptedLogicals: z.array(z.string()).optional(),\n rejectedLogicals: z.array(z.string()).optional(),\n connectionGrants: z.array(z.any()).optional(),\n expiresAt: z.string().datetime().optional(), // ISO string\n metadata: z.record(z.string(), z.any()).optional(),\n reason: z.string().optional(),\n securitySettings: SecuritySettingsSchema.optional()\n .describe('Security settings the parent expects the child to follow'),\n});\n// Node attach frame\nexport const NodeAttachFrameSchema = z.object({\n type: z.literal('NodeAttach').default('NodeAttach'),\n originType: z.nativeEnum(DeliveryOriginType).default(DeliveryOriginType.DOWNSTREAM),\n systemId: z.string(),\n instanceId: z.string(),\n assignedPath: z.string().optional(),\n capabilities: z.array(z.string()).optional(),\n acceptedLogicals: z.array(z.string()).optional(),\n keys: z.array(z.record(z.string(), z.any())).optional(),\n callbackGrants: z.array(z.record(z.string(), z.any())).optional()\n .describe('List of inbound callback connection grants the child or peer supports for reverse connections initiated by the parent'),\n stickiness: StickinessSchema.optional()\n .describe('Stickiness negotiation payload (advertisement when sent by child)'),\n});\n// Node attach acknowledgment frame\nexport const NodeAttachAckFrameSchema = DeliveryAckFrameSchema.extend({\n type: z.literal('NodeAttachAck').default('NodeAttachAck'),\n targetSystemId: z.string().optional(),\n assignedPath: z.string().optional(),\n targetPhysicalPath: z.string().optional(),\n routingEpoch: z.string().optional(),\n keys: z.array(z.record(z.string(), z.any())).optional(),\n expiresAt: z.string().datetime().optional(), // RFC 3339; optional lease time\n stickiness: StickinessSchema.optional()\n .describe('Stickiness negotiation payload (policy when sent by parent)'),\n});\n// Capability advertise frame\nexport const CapabilityAdvertiseFrameSchema = z.object({\n type: z.literal('CapabilityAdvertise').default('CapabilityAdvertise'),\n capabilities: z.array(z.string()),\n address: FameAddressSchema,\n});\n// Capability advertise acknowledgment frame\nexport const CapabilityAdvertiseAckFrameSchema = DeliveryAckFrameSchema.extend({\n type: z.literal('CapabilityAdvertiseAck').default('CapabilityAdvertiseAck'),\n capabilities: z.array(z.string()),\n address: FameAddressSchema,\n});\n// Capability withdraw frame\nexport const CapabilityWithdrawFrameSchema = z.object({\n type: z.literal('CapabilityWithdraw').default('CapabilityWithdraw'),\n capabilities: z.array(z.string()),\n address: FameAddressSchema,\n});\n// Capability withdraw acknowledgment frame\nexport const CapabilityWithdrawAckFrameSchema = DeliveryAckFrameSchema.extend({\n type: z.literal('CapabilityWithdrawAck').default('CapabilityWithdrawAck'),\n capabilities: z.array(z.string()),\n address: FameAddressSchema,\n});\n// Key announce frame\nexport const KeyAnnounceFrameSchema = z.object({\n type: z.literal('KeyAnnounce').default('KeyAnnounce'),\n address: FameAddressSchema.optional(),\n physicalPath: z.string(),\n keys: z.array(z.record(z.string(), z.any())),\n created: z.string().datetime().default(() => new Date().toISOString())\n .describe('Key creation timestamp'),\n expires: z.string().datetime().optional()\n .describe('Key expiration timestamp'),\n});\n// Key request frame\nexport const KeyRequestFrameSchema = z.object({\n type: z.literal('KeyRequest').default('KeyRequest'),\n kid: z.string().optional(),\n address: FameAddressSchema.optional(),\n physicalPath: z.string().optional(),\n});\n// Secure open frame\nexport const SecureOpenFrameSchema = z.object({\n type: z.literal('SecureOpen').default('SecureOpen'),\n cid: z.string().describe('Client-chosen str for the new channel'),\n ephPub: z.string().describe('Base64-encoded 32-byte X25519 public key'),\n alg: z.string().default('CHACHA20P1305').describe('Channel encryption algorithm'),\n opts: z.number().default(0).describe('Bitfield for cipher-suite, PQ-hybrid flags, etc.'),\n}).transform((data) => {\n // Validate ephemeral public key length\n try {\n const decoded = atob(data.ephPub);\n if (decoded.length !== 32) {\n throw new Error(`Ephemeral public key must be exactly 32 bytes, got ${decoded.length}`);\n }\n }\n catch (e) {\n throw new Error(`Invalid base64 ephemeral public key: ${e}`);\n }\n return data;\n});\n// Secure accept frame\nexport const SecureAcceptFrameSchema = DeliveryAckFrameSchema.extend({\n type: z.literal('SecureAccept').default('SecureAccept'),\n cid: z.string(), // Channel id, same as in SecureOpen\n ephPub: z.string().describe('Base64-encoded server\\'s 32-byte X25519 public key'),\n alg: z.string().default('CHACHA20P1305').describe('Channel encryption algorithm'),\n}).transform((data) => {\n // Validate ephemeral public key length\n try {\n const decoded = atob(data.ephPub);\n if (decoded.length !== 32) {\n throw new Error(`Ephemeral public key must be exactly 32 bytes, got ${decoded.length}`);\n }\n }\n catch (e) {\n throw new Error(`Invalid base64 ephemeral public key: ${e}`);\n }\n return data;\n});\n// Secure close frame\nexport const SecureCloseFrameSchema = z.object({\n type: z.literal('SecureClose').default('SecureClose'),\n cid: z.string(), // Channel id, same as in SecureOpen\n reason: z.string().optional().describe('Human-friendly reason code'),\n});\n// Union type for all frame types\nexport const FameFrameUnionSchema = z.discriminatedUnion('type', [\n DeliveryAckFrameSchema,\n AddressBindFrameSchema,\n AddressBindAckFrameSchema,\n AddressUnbindFrameSchema,\n AddressUnbindAckFrameSchema,\n NodeHeartbeatFrameSchema,\n NodeHeartbeatAckFrameSchema,\n DataFrameSchema,\n NodeHelloFrameSchema,\n NodeWelcomeFrameSchema,\n NodeAttachFrameSchema,\n NodeAttachAckFrameSchema,\n CapabilityAdvertiseFrameSchema,\n CapabilityAdvertiseAckFrameSchema,\n CapabilityWithdrawFrameSchema,\n CapabilityWithdrawAckFrameSchema,\n KeyAnnounceFrameSchema,\n KeyRequestFrameSchema,\n SecureOpenFrameSchema,\n SecureAcceptFrameSchema,\n SecureCloseFrameSchema,\n]);\n//# sourceMappingURL=frames.js.map","export var FameResponseType;\n(function (FameResponseType) {\n FameResponseType[FameResponseType[\"NONE\"] = 0] = \"NONE\";\n FameResponseType[FameResponseType[\"ACK\"] = 1] = \"ACK\";\n FameResponseType[FameResponseType[\"REPLY\"] = 2] = \"REPLY\";\n FameResponseType[FameResponseType[\"STREAM\"] = 4] = \"STREAM\";\n})(FameResponseType || (FameResponseType = {}));\n//# sourceMappingURL=response-type.js.map","import { z } from 'zod';\nexport const DEFAULT_SIGNATURE_ALGORITHM = 'EdDSA';\nexport const DEFAULT_ENC_ALG = 'ECDH-ES+A256GCM';\nexport const SignatureHeaderSchema = z.object({\n alg: z.string().optional(),\n kid: z.string().optional().describe('Key id'),\n val: z.string(),\n});\nexport const EncryptionHeaderSchema = z.object({\n alg: z.string().default(DEFAULT_ENC_ALG),\n kid: z.string().optional().describe('Key id'),\n val: z.string(),\n});\nexport const SecurityHeaderSchema = z.object({\n sig: SignatureHeaderSchema.optional().describe('Signature header'),\n enc: EncryptionHeaderSchema.optional().describe('Encryption header'),\n});\n//# sourceMappingURL=security-header.js.map","import { z } from 'zod';\nimport { FameAddress, FameAddressSchema } from '../address/address.js';\nimport { FlowFlags, CreditUpdateFrameSchema } from './flow.js';\nimport { FameFrameUnionSchema } from './frames.js';\nimport { FameResponseType } from './response-type.js';\nimport { SecurityHeaderSchema } from './security-header.js';\nimport { generateId } from '../util/id-generator.js';\n// Define priority enum\nexport var Priority;\n(function (Priority) {\n Priority[\"LOW\"] = \"low\";\n Priority[\"NORMAL\"] = \"normal\";\n Priority[\"HIGH\"] = \"high\";\n Priority[\"SPECULATIVE\"] = \"speculative\";\n})(Priority || (Priority = {}));\n// Version constant\nexport const ENVELOPE_VERSION = '1.0';\n// Meta value types - restricted for extension metadata\nconst MetaValueSchema = z.union([\n z.string(),\n z.number(),\n z.boolean(),\n z.array(z.union([z.string(), z.number(), z.boolean()])),\n z.record(z.string(), z.union([z.string(), z.number(), z.boolean()])),\n]);\n// All frames union (includes credit update frames)\nconst AllFramesUnionSchema = z.union([\n FameFrameUnionSchema,\n CreditUpdateFrameSchema,\n]);\nconst TimestampSchema = z\n .preprocess((value) => {\n if (value instanceof Date) {\n return value;\n }\n if (typeof value === 'string') {\n const parsed = new Date(value);\n if (!Number.isNaN(parsed.getTime())) {\n return parsed;\n }\n }\n return value;\n}, z.date())\n .describe('UTC timestamp when the envelope was created');\nconst FLOW_FLAG_MASK = FlowFlags.SYN | FlowFlags.ACK | FlowFlags.RESET;\nconst FlowFlagsSchema = z\n .number()\n .int()\n .min(0)\n .refine((value) => (value & ~FLOW_FLAG_MASK) === 0, {\n message: 'FlowFlags contains unsupported bits',\n})\n .transform((value) => value);\n// Fame envelope schema\nexport const FameEnvelopeSchema = z.object({\n version: z.string().default(ENVELOPE_VERSION).optional(),\n id: z.string().default(() => generateId())\n .describe('Unique envelope identifier for de-duplication and tracing'),\n sid: z.string().optional()\n .describe('Source system id, hash of the sender\\'s physical path'),\n traceId: z.string().optional()\n .describe('Logical trace id for correlating related envelopes'),\n to: FameAddressSchema.optional()\n .describe('Destination address; if unset, uses capability routing'),\n replyTo: FameAddressSchema.optional()\n .describe('Address where receivers should send their response'),\n capabilities: z.array(z.string()).optional()\n .describe('List of capability names this envelope is intended for'),\n rtype: z.nativeEnum(FameResponseType).optional()\n .describe('Expected response type for the envelope'),\n corrId: z.string().optional()\n .describe('Correlation ID for tracking related envelopes'),\n flowId: z.string().optional()\n .describe('Logical stream identifier for handling backpressure'),\n seqId: z.number().default(0).optional()\n .describe('Monotonic counter per-sender to order envelopes if needed'),\n flowFlags: FlowFlagsSchema.default(FlowFlags.NONE).optional()\n .describe('Flags controlling flow behavior (e.g., start/end of window)'),\n ttl: z.number().optional()\n .describe('Time-to-live (in hops) after which the envelope is dropped'),\n priority: z.nativeEnum(Priority).optional()\n .describe('Delivery priority hint (e.g., low, normal, high)'),\n frame: AllFramesUnionSchema\n .describe('The actual payload frame (e.g. DataFrame, NodeHeartbeatFrame)'),\n ts: TimestampSchema.default(() => new Date()),\n sec: SecurityHeaderSchema.optional()\n .describe('Optional security header'),\n aft: z.string().optional()\n .describe('Node-signed affinity tag. JWS compact format. ' +\n 'Sentinel verifies signature & expiry; routes accordingly.'),\n meta: z.record(z.string(), MetaValueSchema).optional()\n .describe('Extension metadata: kebab-case or dotted keys; values must be ' +\n 'str, int, float, bool or small list thereof.'),\n}).transform((data) => {\n // Ensure ts is a Date object\n if (typeof data.ts === 'string') {\n data.ts = new Date(data.ts);\n }\n return data;\n});\nexport function createFameEnvelope(options) {\n // Convert string to FameAddress if needed\n let toAddress;\n if (options.to) {\n toAddress = typeof options.to === 'string' ? new FameAddress(options.to) : options.to;\n }\n const envelope = FameEnvelopeSchema.parse({\n id: options.id || generateId(),\n sid: options.sid,\n traceId: options.traceId || generateId(),\n to: toAddress?.toString(), // Convert to string for schema validation\n capabilities: options.capabilities,\n rtype: options.responseType,\n replyTo: options.replyTo?.toString(), // Convert to string for schema validation\n frame: options.frame,\n flowId: options.flowId,\n seqId: options.windowId || 0,\n flowFlags: options.flags || FlowFlags.NONE,\n corrId: options.corrId,\n ts: options.timestamp || new Date(),\n });\n return envelope;\n}\n// Create envelope from dictionary/object\nexport function envelopeFromDict(data) {\n return FameEnvelopeSchema.parse(data);\n}\n// Utility functions for envelope serialization\nexport function serializeEnvelope(envelope, options) {\n const serialized = { ...envelope };\n // Convert timestamp to ISO string with milliseconds precision\n if (serialized.ts instanceof Date) {\n serialized.ts = serialized.ts.toISOString();\n }\n // Convert camelCase to snake_case for compatibility with Python\n const converted = {};\n for (const [key, value] of Object.entries(serialized)) {\n let convertedKey = key;\n if (key === 'traceId')\n convertedKey = 'trace_id';\n else if (key === 'replyTo')\n convertedKey = 'reply_to';\n else if (key === 'corrId')\n convertedKey = 'corr_id';\n else if (key === 'flowId')\n convertedKey = 'flow_id';\n else if (key === 'seqId')\n convertedKey = 'seq_id';\n else if (key === 'flowFlags')\n convertedKey = 'flow_flags';\n converted[convertedKey] = value;\n }\n // Mask security header if safe logging is enabled\n if (options?.safeLog && converted.sec) {\n converted.sec = '<hidden>';\n }\n return converted;\n}\nexport function deserializeEnvelope(data) {\n // Convert snake_case to camelCase for TypeScript\n const converted = {};\n for (const [key, value] of Object.entries(data)) {\n let convertedKey = key;\n if (key === 'trace_id')\n convertedKey = 'traceId';\n else if (key === 'reply_to')\n convertedKey = 'replyTo';\n else if (key === 'corr_id')\n convertedKey = 'corrId';\n else if (key === 'flow_id')\n convertedKey = 'flowId';\n else if (key === 'seq_id')\n convertedKey = 'seqId';\n else if (key === 'flow_flags')\n convertedKey = 'flowFlags';\n converted[convertedKey] = value;\n }\n return FameEnvelopeSchema.parse(converted);\n}\n//# sourceMappingURL=envelope.js.map","import { FameAddress } from './address/address.js';\nimport { normalizeFameConfig } from './fame-config.js';\nimport { createFameEnvelope } from './protocol/envelope.js';\nimport { ExtensionManager, createDefaultResource, createResource, } from '@naylence/factory';\nimport { resolveDefaultFameConfig } from './default-fame-config-resolver.js';\n// Context variable stack for fabric instances\nlet fabricStack = [];\n/**\n * Testing utility: clear the stack for the current task.\n */\nexport function resetFabricStack() {\n fabricStack = [];\n}\n/**\n * Abstract base class for Fame Fabric implementations\n */\nexport class FameFabric {\n constructor() {\n // ----- abstract interface --------------------------------------------------\n // ----- internal state ------------------------------------------------------\n this._started = false;\n this._stopped = false;\n this._ctxToken = null; // Stack index\n }\n async sendMessage(address, message) {\n const target = typeof address === 'string' ? new FameAddress(address) : address;\n const frame = {\n type: 'Data',\n payload: message,\n };\n return await this.send(createFameEnvelope({\n to: target,\n frame,\n }));\n }\n // ----- optional lifecycle hooks -------------------------------------------\n async start() {\n // Default implementation does nothing\n }\n async stop() {\n // Default implementation does nothing\n }\n // ----- async-context-manager ----------------------------------------------\n async enter() {\n if (this._ctxToken !== null) {\n throw new Error('Cannot re-enter the same FameFabric instance');\n }\n // push-on-stack\n const currentLength = fabricStack.length;\n fabricStack.push(this);\n this._ctxToken = currentLength;\n // start (idempotent)\n if (!this._started) {\n await this.start();\n this._started = true;\n }\n return this;\n }\n async exit(error) {\n const originalError = error; // preserve body exception, if any\n try {\n if (!this._stopped) {\n await this.stop();\n this._stopped = true;\n }\n }\n catch (error) {\n // Chain shutdown failure onto the original body error if both exist\n if (originalError) {\n const stopError = new Error(`Stop failed: ${error}`);\n stopError.cause = originalError;\n throw stopError;\n }\n throw error;\n }\n finally {\n if (this._ctxToken !== null) {\n // Remove from stack\n fabricStack.splice(this._ctxToken, 1);\n this._ctxToken = null;\n }\n }\n // Re-throw original error if it exists\n if (originalError) {\n throw originalError;\n }\n }\n /**\n * Return the FameFabric at the top of the task-local stack, or throw.\n */\n static current() {\n if (fabricStack.length === 0) {\n throw new Error('No FameFabric active in this context');\n }\n const fabric = fabricStack[fabricStack.length - 1];\n if (!fabric) {\n throw new Error('No FameFabric active in this context');\n }\n return fabric;\n }\n // ----- async factory -------------------------------------------------------\n /**\n * Create a FameFabric instance from configuration\n */\n static async create(options = {}) {\n const { rootConfig: rootConfigInput, ...rest } = options;\n const candidate = rootConfigInput && typeof rootConfigInput === 'object' && !Array.isArray(rootConfigInput)\n ? rootConfigInput\n : undefined;\n let resolvedRootConfig = candidate ?? null;\n if (!resolvedRootConfig) {\n const defaultConfig = await resolveDefaultFameConfig();\n if (defaultConfig) {\n resolvedRootConfig = defaultConfig;\n }\n }\n const normalized = await normalizeFameConfig(resolvedRootConfig ?? undefined);\n const nextOptions = {\n ...rest,\n rootConfig: normalized,\n rawRootConfig: resolvedRootConfig ?? null,\n };\n return FameFabric.fromConfig(normalized.fabric, nextOptions);\n }\n static async fromConfig(_cfg, _kwargs = {}) {\n /**\n * Build and manage a FameFabric using the `ResourceFactory` registry\n * (see `createResource`).\n */\n const kwargs = { ..._kwargs };\n const configInput = _cfg;\n const rootConfig = kwargs.rootConfig ?? null;\n if ('rootConfig' in kwargs) {\n delete kwargs.rootConfig;\n }\n const rawRootConfig = kwargs.rawRootConfig ?? null;\n if ('rawRootConfig' in kwargs) {\n delete kwargs.rawRootConfig;\n }\n if (rootConfig !== null && rootConfig !== undefined) {\n const existingArgs = Array.isArray(kwargs.factoryArgs) ? [...kwargs.factoryArgs] : [];\n existingArgs.push(rootConfig);\n if (rawRootConfig !== null && rawRootConfig !== undefined) {\n existingArgs.push(rawRootConfig);\n }\n kwargs.factoryArgs = existingArgs;\n }\n else if (rawRootConfig !== null && rawRootConfig !== undefined) {\n const existingArgs = Array.isArray(kwargs.factoryArgs) ? [...kwargs.factoryArgs] : [];\n existingArgs.push(rawRootConfig);\n kwargs.factoryArgs = existingArgs;\n }\n if (configInput !== undefined &&\n configInput !== null &&\n (typeof configInput !== 'object' || Array.isArray(configInput))) {\n throw new Error('FameFabric.fromConfig expects configuration to be an object');\n }\n const baseTypeName = 'FameFabricFactory';\n // Ensure the extension manager for fabrics is initialised so manual registrations are honoured.\n ExtensionManager.getExtensionManager('naylence.fabric', baseTypeName);\n const config = configInput && typeof configInput === 'object' && !Array.isArray(configInput)\n ? configInput\n : null;\n const fabric = config\n ? await createResource(baseTypeName, config, kwargs)\n : await createDefaultResource(baseTypeName, null, kwargs);\n if (!fabric) {\n throw new Error('No default FameFabricFactory registered');\n }\n return fabric;\n }\n /**\n * Get or create a fabric instance.\n * If there's already a Fabric on the stack, return it without starting or stopping.\n * Otherwise, delegate to create() as before.\n */\n static async getOrCreate(options = {}) {\n if (fabricStack.length > 0) {\n // Return the existing fabric\n const fabric = fabricStack[fabricStack.length - 1];\n if (!fabric) {\n throw new Error('No FameFabric active in this context');\n }\n return fabric;\n }\n return FameFabric.create(options);\n }\n /**\n * Async context manager pattern\n */\n async use(fn) {\n await this.enter();\n try {\n return await fn(this);\n }\n finally {\n await this.exit();\n }\n }\n}\nexport async function withFabric(optsOrFn, maybeFn) {\n const fn = (typeof optsOrFn === \"function\" ? optsOrFn : maybeFn);\n const opts = typeof optsOrFn === \"function\" ? undefined : optsOrFn;\n // If create() has no params, the extra arg is ignored at compile time\n // because FabricOpts will be never|undefined and opts will be undefined.\n const fabric = await (opts === undefined\n ? FameFabric.create()\n : FameFabric.create(opts));\n await fabric.enter();\n try {\n return await fn(fabric);\n }\n finally {\n await fabric.exit?.();\n }\n}\n// Export the fabric stack for testing\nexport { fabricStack };\nexport { createFameEnvelope };\n//# sourceMappingURL=fame-fabric.js.map","import { z } from 'zod';\nimport { DeliveryOriginType } from './origin-type.js';\nimport { FameResponseType } from './response-type.js';\n// Authorization context schema\nexport const AuthorizationContextSchema = z.object({\n // Authentication results\n authenticated: z.boolean().default(false)\n .describe('Whether authentication succeeded'),\n authorized: z.boolean().default(false)\n .describe('Whether authorization succeeded'),\n principal: z.string().optional()\n .describe('Authenticated principal/user ID'),\n claims: z.record(z.string(), z.any()).default({})\n .describe('Token claims'),\n // Authorization results\n grantedScopes: z.array(z.string()).default([])\n .describe('Granted permission scopes'),\n restrictions: z.record(z.string(), z.any()).default({})\n .describe('Authorization restrictions'),\n // Context metadata\n authMethod: z.string().optional()\n .describe('Authentication method used'),\n expiresAt: z.date().optional()\n .describe('When authorization expires'),\n}).transform((data) => {\n // Convert string dates to Date objects if needed\n if (typeof data.expiresAt === 'string') {\n data.expiresAt = new Date(data.expiresAt);\n }\n return data;\n});\n// Helper methods for AuthorizationContext\nexport class AuthorizationContextHelper {\n constructor(context) {\n this.context = context;\n }\n /**\n * Check if a specific scope is granted\n */\n hasScope(scope) {\n return this.context.grantedScopes.includes(scope);\n }\n /**\n * Check if any of the specified scopes are granted\n */\n hasAnyScope(scopes) {\n return scopes.some(scope => this.context.grantedScopes.includes(scope));\n }\n /**\n * Check if authorization context is still valid\n */\n isValid() {\n if (!this.context.authenticated) {\n return false;\n }\n if (this.context.expiresAt && new Date() > this.context.expiresAt) {\n return false;\n }\n return true;\n }\n}\n// Security context schema\nexport const SecurityContextSchema = z.object({\n // Crypto level classification for inbound messages\n inboundCryptoLevel: z.any().optional()\n .describe('Classified crypto level of the inbound message (CryptoLevel enum)'),\n // Signature tracking for inbound messages\n inboundWasSigned: z.boolean().optional()\n .describe('Whether the inbound message was signed (for signature mirroring)'),\n // Channel encryption tracking\n cryptoChannelId: z.string().optional()\n .describe('ID of the virtual secure channel used for message delivery'),\n authorization: AuthorizationContextSchema.optional()\n .describe('Authorization context containing claims and permissions'),\n});\n// Fame delivery context schema\nexport const FameDeliveryContextSchema = z.object({\n fromSystemId: z.string().optional()\n .describe('Delivery source system id'),\n fromConnector: z.any().optional()\n .describe('Delivery connector'),\n originType: z.nativeEnum(DeliveryOriginType).optional()\n .describe('Where this envelope came from: downstream, upstream, or local'),\n // Security context for cryptographic and channel information\n security: SecurityContextSchema.optional()\n .describe('Security-related context including crypto level and channel information'),\n meta: z.record(z.string(), z.any()).optional()\n .describe('Ad-hoc metadata for the delivery'),\n stickinessRequired: z.boolean().optional()\n .describe('Whether this delivery requires stickiness. When True, the delivery should use sticky routing even if not explicitly configured'),\n stickySid: z.string().optional()\n .describe('Original client session ID for sticky routing. Set when stickiness is requested to preserve the client\\'s session identifier for AFT token generation'),\n expectedResponseType: z.nativeEnum(FameResponseType).default(FameResponseType.NONE)\n .describe('Expected response type for the delivery'),\n});\n/**\n * Create a local delivery context\n */\nexport function localDeliveryContext(systemId) {\n return FameDeliveryContextSchema.parse({\n fromSystemId: systemId,\n originType: DeliveryOriginType.LOCAL,\n });\n}\n// Helper function to create authorization context with methods\nexport function createAuthorizationContext(data) {\n const context = AuthorizationContextSchema.parse(data);\n return Object.assign(context, {\n helper: new AuthorizationContextHelper(context)\n });\n}\n//# sourceMappingURL=delivery-context.js.map","/**\n * Message containers for binding channels that preserve delivery context.\n */\nimport { z } from 'zod';\nimport { FameEnvelopeSchema } from './envelope.js';\nimport { FameDeliveryContextSchema } from './delivery-context.js';\n// Fame channel message schema\nexport const FameChannelMessageSchema = z.object({\n envelope: FameEnvelopeSchema,\n context: FameDeliveryContextSchema.optional(),\n});\n/**\n * Container for messages sent through binding channels.\n *\n * This allows us to preserve delivery context while maintaining\n * backward compatibility with direct envelope messages.\n */\nexport class FameChannelMessage {\n constructor(envelope, context) {\n this.envelope = envelope;\n this.context = context;\n }\n static fromObject(obj) {\n return new FameChannelMessage(obj.envelope, obj.context);\n }\n toObject() {\n return {\n envelope: this.envelope,\n ...(this.context !== undefined && { context: this.context }),\n };\n }\n}\n/**\n * Create a channel message, using the wrapped form only when context is present.\n *\n * This preserves backward compatibility by sending raw envelopes when no context\n * is provided, but wraps them when context needs to be preserved.\n */\nexport function createChannelMessage(envelope, context) {\n if (context !== undefined) {\n return new FameChannelMessage(envelope, context);\n }\n else {\n return envelope;\n }\n}\n/**\n * Extract envelope and context from a binding channel message.\n *\n * @returns tuple of [envelope, context] where context may be undefined\n */\nexport function extractEnvelopeAndContext(message) {\n if (message instanceof FameChannelMessage) {\n return [message.envelope, message.context];\n }\n else if (message && typeof message === 'object' && 'frame' in message) {\n // It's a FameEnvelope\n return [message, undefined];\n }\n else {\n throw new TypeError(`Unexpected message type in binding channel: ${typeof message}`);\n }\n}\n/**\n * Type guard to check if a message is a FameChannelMessage\n */\nexport function isFameChannelMessage(message) {\n return message instanceof FameChannelMessage;\n}\n/**\n * Type guard to check if a message is a FameEnvelope\n */\nexport function isFameEnvelope(message) {\n return !isFameChannelMessage(message) && typeof message === 'object' && 'frame' in message;\n}\n//# sourceMappingURL=channel-message.js.map","/**\n * Helper function to create a message response\n */\nexport function createMessageResponse(envelope, context) {\n return context !== undefined ? { envelope, context } : { envelope };\n}\n/**\n * Type guard to check if a response is a FameMessageResponse\n */\nexport function isFameMessageResponse(response) {\n return (response &&\n typeof response === 'object' &&\n 'envelope' in response &&\n response.envelope &&\n typeof response.envelope === 'object' &&\n 'frame' in response.envelope);\n}\n/**\n * Utility function to normalize handler responses\n */\nexport function normalizeHandlerResponse(response) {\n if (response === null || response === undefined) {\n return null;\n }\n if (isFameMessageResponse(response)) {\n return response;\n }\n // For any other response, we can't automatically convert it to a FameMessageResponse\n // This would need to be handled by the calling code\n return null;\n}\n//# sourceMappingURL=handlers.js.map","/**\n * Standard Fame capability constants\n */\nexport const SINK_CAPABILITY = 'fame.capability.sink';\nexport const AGENT_CAPABILITY = 'fame.capability.agent';\nexport const MCP_HOST_CAPABILITY = 'fame.capability.mcp-host';\n/**\n * All standard Fame capabilities\n */\nexport const STANDARD_CAPABILITIES = [\n SINK_CAPABILITY,\n AGENT_CAPABILITY,\n MCP_HOST_CAPABILITY,\n];\n//# sourceMappingURL=capabilities.js.map","/**\n * Subscription class representing a binding between a channel and an address\n */\nexport class Subscription {\n constructor(channel, address) {\n this.channel = channel;\n this.address = address;\n }\n /**\n * Create a subscription from an object\n */\n static fromObject(obj) {\n return new Subscription(obj.channel, obj.address);\n }\n /**\n * Convert subscription to a plain object\n */\n toObject() {\n return {\n channel: this.channel,\n address: this.address,\n };\n }\n /**\n * Get a string representation of the subscription\n */\n toString() {\n return `Subscription(channel=${this.channel}, address=${this.address})`;\n }\n}\n//# sourceMappingURL=subscription.js.map","import { DEFAULT_INVOKE_TIMEOUT_MILLIS } from '../util/constants.js';\n/**\n * Generic service proxy that enables typed remote method calls\n */\nexport class FameServiceProxy {\n constructor(options = {}) {\n this._invoke = options.invoke || this._invokeDefault.bind(this);\n this._invokeByCapability = options.invokeByCapability || this._invokeByCapabilityDefault.bind(this);\n this._fabric = options.fabric;\n if (options.address !== undefined)\n this._address = options.address;\n if (options.capabilities !== undefined)\n this._capabilities = options.capabilities;\n this._timeout = options.timeout || DEFAULT_INVOKE_TIMEOUT_MILLIS;\n }\n get capabilities() {\n return this._capabilities;\n }\n /**\n * Create a proxy bound to a specific address\n */\n static remoteByAddress(address, options = {}) {\n return new FameServiceProxy({ ...options, address });\n }\n /**\n * Create a proxy bound to capabilities\n */\n static remoteByCapabilities(capabilities, options = {}) {\n return new FameServiceProxy({ ...options, capabilities });\n }\n async _invokeDefault(targetAddr, method, params, timeoutMs = this._timeout) {\n // Import here to avoid circular dependency\n const { FameFabric } = await import('../fame-fabric.js');\n const fabric = this._fabric || FameFabric.current();\n try {\n return await fabric.invoke(targetAddr, method, params, timeoutMs);\n }\n catch (error) {\n // Fallback to capability-based invoke if direct invoke fails\n if (this._invokeByCapability && this._capabilities?.length) {\n return this._invokeByCapability(this._capabilities, method, params, timeoutMs);\n }\n throw error;\n }\n }\n async _invokeByCapabilityDefault(capabilities, method, params, timeoutMs = this._timeout) {\n // Import here to avoid circular dependency\n const { FameFabric } = await import('../fame-fabric.js');\n const fabric = this._fabric || FameFabric.current();\n return fabric.invokeByCapability(capabilities, method, params, timeoutMs);\n }\n /**\n * Dynamic method invocation using Proxy - this would be implemented in a subclass\n * or used through createServiceProxy function\n */\n /**\n * Generic RPC-by-name: invokes the special \"__call__\" RPC on the service\n */\n async call(name, kwargs = {}) {\n if (!this._address) {\n throw new Error('call() method requires an address-bound proxy');\n }\n const params = { name, args: kwargs };\n return this._invoke(this._address, '__call__', params, this._timeout);\n }\n}\n/**\n * Type guards for service interfaces\n */\nexport function isFameMessageService(service) {\n return service && typeof service.handleMessage === 'function';\n}\nexport function isFameRPCService(service) {\n return service && typeof service.handleRpcRequest === 'function';\n}\n/**\n * Helper function to create a service proxy with dynamic method support\n */\nexport function createServiceProxy(options) {\n const proxy = new FameServiceProxy(options);\n return new Proxy(proxy, {\n get: (target, prop) => {\n if (typeof prop === 'string' && !prop.startsWith('_') && !(prop in target)) {\n return async (...args) => {\n let params;\n // If you passed exactly one dict, treat it as the full params\n if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && !Array.isArray(args[0])) {\n params = args[0];\n }\n else {\n // Otherwise, wrap posargs + kwargs in a single object\n params = { args };\n }\n if (target._address) {\n return target._invoke(target._address, prop, params, target._timeout);\n }\n else if (target._capabilities) {\n return target._invokeByCapabilityDefault(target._capabilities, prop, params, target._timeout);\n }\n else {\n throw new Error('Proxy must be bound to either an address or capabilities');\n }\n };\n }\n return target[prop];\n },\n });\n}\n//# sourceMappingURL=fame-service.js.map","import { z } from 'zod';\nimport { generateId } from '../util/id-generator.js';\n// JSON-RPC Error schema\nexport const JSONRPCErrorSchema = z.object({\n code: z.number().int(),\n message: z.string(),\n data: z.any().optional(),\n});\n// Base JSON-RPC Message schema\nexport const JSONRPCMessageSchema = z.object({\n jsonrpc: z.literal('2.0').default('2.0'),\n id: z.union([z.number(), z.string(), z.null()]).default(() => generateId()),\n});\n// JSON-RPC Request schema (generic)\nexport const JSONRPCRequestSchema = JSONRPCMessageSchema.extend({\n method: z.any(),\n params: z.any().default({}),\n});\n// JSON-RPC Response schema\nexport const JSONRPCResponseSchema = JSONRPCMessageSchema.extend({\n result: z.any().optional(),\n error: JSONRPCErrorSchema.optional(),\n});\n/**\n * Create a JSON-RPC request with typed parameters\n */\nexport function createJSONRPCRequest(method, params, id) {\n return {\n jsonrpc: '2.0',\n id: id ?? generateId(),\n method,\n params: params ?? {},\n };\n}\n/**\n * Create a JSON-RPC response\n */\nexport function createJSONRPCResponse(id, result, error) {\n return {\n jsonrpc: '2.0',\n id,\n result,\n error,\n };\n}\n/**\n * Create a JSON-RPC error response\n */\nexport function createJSONRPCErrorResponse(id, code, message, data) {\n return {\n jsonrpc: '2.0',\n id,\n error: {\n code,\n message,\n data,\n },\n };\n}\n/**\n * Standard JSON-RPC error codes\n */\nexport const JSONRPCErrorCodes = {\n PARSE_ERROR: -32700,\n INVALID_REQUEST: -32600,\n METHOD_NOT_FOUND: -32601,\n INVALID_PARAMS: -32602,\n INTERNAL_ERROR: -32603,\n SERVER_ERROR_START: -32099,\n SERVER_ERROR_END: -32000,\n};\n/**\n * Type guard to check if a message is a JSON-RPC request\n */\nexport function isJSONRPCRequest(message) {\n return (message &&\n typeof message === 'object' &&\n message.jsonrpc === '2.0' &&\n typeof message.method !== 'undefined' &&\n 'id' in message);\n}\n/**\n * Type guard to check if a message is a JSON-RPC response\n */\nexport function isJSONRPCResponse(message) {\n return (message &&\n typeof message === 'object' &&\n message.jsonrpc === '2.0' &&\n 'id' in message &&\n ('result' in message || 'error' in message));\n}\n/**\n * Type guard to check if a response contains an error\n */\nexport function isJSONRPCErrorResponse(response) {\n return response.error !== undefined;\n}\n/**\n * Type guard to check if a response contains a result\n */\nexport function isJSONRPCSuccessResponse(response) {\n return response.error === undefined && response.result !== undefined;\n}\n//# sourceMappingURL=types.js.map","/**\n * Helper functions for JSON-RPC 2.0 request/response framing, parsing, and serialization.\n */\nimport { JSONRPCRequestSchema, JSONRPCResponseSchema, createJSONRPCRequest, createJSONRPCResponse, createJSONRPCErrorResponse, } from './types.js';\nimport { generateId } from '../util/id-generator.js';\n/**\n * Construct a JSON-RPC 2.0 request payload.\n */\nexport function makeRequest(method, params, id) {\n const requestId = id ?? generateId();\n const req = createJSONRPCRequest(method, params, requestId);\n // Convert to plain object for serialization\n return {\n jsonrpc: req.jsonrpc,\n id: req.id,\n method: req.method,\n params: req.params,\n };\n}\n/**\n * Validate and parse a JSON-RPC 2.0 request payload into a typed object.\n */\nexport function parseRequest(payload) {\n const validated = JSONRPCRequestSchema.parse(payload);\n return validated;\n}\n/**\n * Construct a JSON-RPC 2.0 response payload, either successful or error.\n */\nexport function makeResponse(id, result, error) {\n let response;\n if (error) {\n // Accept either a JSONRPCError instance or a raw object\n const errorObj = 'code' in error && 'message' in error\n ? error\n : error;\n response = createJSONRPCErrorResponse(id, errorObj.code, errorObj.message, errorObj.data);\n }\n else {\n response = createJSONRPCResponse(id, result);\n }\n // Convert to plain object for serialization\n const result_obj = {\n jsonrpc: response.jsonrpc,\n id: response.id,\n };\n if (response.result !== undefined) {\n result_obj.result = response.result;\n }\n if (response.error !== undefined) {\n result_obj.error = response.error;\n }\n return result_obj;\n}\n/**\n * Validate and parse a JSON-RPC 2.0 response payload into a typed object.\n */\nexport function parseResponse(payload) {\n return JSONRPCResponseSchema.parse(payload);\n}\n/**\n * Helper function to create a method not found error response\n */\nexport function makeMethodNotFoundError(id, method) {\n return makeResponse(id, undefined, {\n code: -32601,\n message: 'Method not found',\n data: { method },\n });\n}\n/**\n * Helper function to create an invalid params error response\n */\nexport function makeInvalidParamsError(id, details) {\n return makeResponse(id, undefined, {\n code: -32602,\n message: 'Invalid params',\n data: details ? { details } : undefined,\n });\n}\n/**\n * Helper function to create an internal error response\n */\nexport function makeInternalError(id, message) {\n return makeResponse(id, undefined, {\n code: -32603,\n message: message || 'Internal error',\n });\n}\n/**\n * Helper function to create a parse error response\n */\nexport function makeParseError() {\n return makeResponse(null, undefined, {\n code: -32700,\n message: 'Parse error',\n });\n}\n/**\n * Helper function to create an invalid request error response\n */\nexport function makeInvalidRequestError(id = null) {\n return makeResponse(id, undefined, {\n code: -32600,\n message: 'Invalid Request',\n });\n}\n//# sourceMappingURL=jsonrpc.js.map","/**\n * Type guards for channel interfaces\n */\nexport function isReadChannel(channel) {\n return typeof channel.receive === 'function';\n}\nexport function isWriteChannel(channel) {\n return typeof channel.send === 'function';\n}\nexport function isReadWriteChannel(channel) {\n return isReadChannel(channel) && isWriteChannel(channel);\n}\n/**\n * Base implementation of a simple channel\n */\nexport class BaseChannel {\n constructor() {\n this._closed = false;\n }\n get closed() {\n return this._closed;\n }\n async close() {\n this._closed = true;\n }\n checkNotClosed() {\n if (this._closed) {\n throw new Error('Channel is closed');\n }\n }\n}\n/**\n * Default timeout for channel operations\n */\nexport const DEFAULT_CHANNEL_TIMEOUT = 5000;\n//# sourceMappingURL=channel.js.map","/**\n * Binding class representing a connection between a channel and an address\n */\nexport class Binding {\n constructor(channel, address) {\n this.channel = channel;\n this.address = address;\n }\n /**\n * Create a binding from an object\n */\n static fromObject(obj) {\n return new Binding(obj.channel, obj.address);\n }\n /**\n * Convert binding to a plain object\n */\n toObject() {\n return {\n channel: this.channel,\n address: this.address,\n };\n }\n /**\n * Get a string representation of the binding\n */\n toString() {\n return `Binding(channel=${this.channel}, address=${this.address})`;\n }\n /**\n * Close the binding and its channel\n */\n async close() {\n if ('close' in this.channel && typeof this.channel.close === 'function') {\n await this.channel.close();\n }\n }\n}\n//# sourceMappingURL=binding.js.map","/**\n * Connector state management for Fame connectors.\n *\n * This module defines the states that connectors can be in throughout their lifecycle.\n */\n/**\n * Enumeration of possible connector states.\n *\n * Represents the lifecycle states that a Fame connector can be in:\n * - UNKNOWN: Initial or indeterminate state\n * - INITIALIZED: Connector has been created and configured\n * - STARTED: Connector is actively running and processing messages\n * - STOPPED: Connector has been stopped but may be restartable\n * - CLOSED: Connector has been permanently closed and cannot be restarted\n */\nexport var ConnectorState;\n(function (ConnectorState) {\n ConnectorState[\"UNKNOWN\"] = \"unknown\";\n ConnectorState[\"INITIALIZED\"] = \"initialized\";\n ConnectorState[\"STARTED\"] = \"started\";\n ConnectorState[\"STOPPED\"] = \"stopped\";\n ConnectorState[\"CLOSED\"] = \"closed\";\n})(ConnectorState || (ConnectorState = {}));\n/**\n * Helper class for connector state operations\n */\nexport class ConnectorStateHelper {\n constructor(state) {\n this.state = state;\n }\n /**\n * Return true if the connector is in an active state\n */\n get isActive() {\n return this.state === ConnectorState.STARTED;\n }\n /**\n * Return true if the connector is in an inactive state\n */\n get isInactive() {\n return this.state === ConnectorState.STOPPED || this.state === ConnectorState.CLOSED;\n }\n /**\n * Return true if the connector can be started from this state\n */\n get canStart() {\n return this.state === ConnectorState.INITIALIZED || this.state === ConnectorState.STOPPED;\n }\n /**\n * Return true if the connector can be stopped from this state\n */\n get canStop() {\n return this.state === ConnectorState.STARTED;\n }\n /**\n * Return true if the connector can be closed from this state\n */\n get canClose() {\n return (this.state === ConnectorState.INITIALIZED ||\n this.state === ConnectorState.STARTED ||\n this.state === ConnectorState.STOPPED);\n }\n /**\n * Get a string representation of the state\n */\n toString() {\n return this.state;\n }\n /**\n * Get the current state\n */\n get value() {\n return this.state;\n }\n}\n/**\n * Utility functions for connector states\n */\nexport const ConnectorStateUtils = {\n /**\n * Check if a state is active\n */\n isActive(state) {\n return new ConnectorStateHelper(state).isActive;\n },\n /**\n * Check if a state is inactive\n */\n isInactive(state) {\n return new ConnectorStateHelper(state).isInactive;\n },\n /**\n * Check if a connector can be started from the given state\n */\n canStart(state) {\n return new ConnectorStateHelper(state).canStart;\n },\n /**\n * Check if a connector can be stopped from the given state\n */\n canStop(state) {\n return new ConnectorStateHelper(state).canStop;\n },\n /**\n * Check if a connector can be closed from the given state\n */\n canClose(state) {\n return new ConnectorStateHelper(state).canClose;\n },\n /**\n * Get all possible states\n */\n getAllStates() {\n return Object.values(ConnectorState);\n },\n /**\n * Parse a string into a ConnectorState\n */\n fromString(value) {\n const state = Object.values(ConnectorState).find(s => s === value);\n return state || null;\n },\n};\n//# sourceMappingURL=connector-state.js.map","import { ConnectorState } from './connector-state.js';\n/**\n * Base implementation of a Fame connector\n */\nexport class BaseFameConnector {\n constructor() {\n this._state = ConnectorState.UNKNOWN;\n }\n get state() {\n return this._state;\n }\n get closeCode() {\n return this._closeCode;\n }\n get closeReason() {\n return this._closeReason;\n }\n get lastError() {\n return this._lastError;\n }\n get authorizationContext() {\n return this._authorizationContext;\n }\n set authorizationContext(context) {\n if (context !== undefined) {\n this._authorizationContext = context;\n }\n else {\n this._authorizationContext = undefined;\n }\n }\n /**\n * Start the connector\n */\n async start(inboundHandler) {\n if (this._state !== ConnectorState.INITIALIZED && this._state !== ConnectorState.STOPPED) {\n throw new Error(`Cannot start connector from state: ${this._state}`);\n }\n this._handler = inboundHandler;\n this._state = ConnectorState.STARTED;\n await this.onStart();\n }\n /**\n * Stop the connector\n */\n async stop() {\n if (this._state !== ConnectorState.STARTED) {\n throw new Error(`Cannot stop connector from state: ${this._state}`);\n }\n this._state = ConnectorState.STOPPED;\n await this.onStop();\n }\n /**\n * Replace the handler\n */\n async replaceHandler(handler) {\n this._handler = handler;\n await this.onHandlerReplaced(handler);\n }\n /**\n * Close the connector\n */\n async close(code, reason) {\n if (this._state === ConnectorState.CLOSED) {\n return; // Already closed\n }\n if (code !== undefined)\n this._closeCode = code;\n if (reason !== undefined)\n this._closeReason = reason;\n this._state = ConnectorState.CLOSED;\n await this.onClose();\n }\n /**\n * Handle errors\n */\n handleError(error) {\n this._lastError = error;\n this.onError(error);\n }\n}\n/**\n * Type guard to check if an object is a Fame connector\n */\nexport function isFameConnector(obj) {\n return obj &&\n typeof obj.start === 'function' &&\n typeof obj.stop === 'function' &&\n typeof obj.send === 'function' &&\n typeof obj.close === 'function' &&\n 'state' in obj;\n}\n//# sourceMappingURL=connector.js.map","/**\n * Fame protocol specific error classes with WebSocket close codes and proper inheritance.\n */\n/**\n * Base class for all Fame-related errors.\n */\nexport class FameError extends Error {\n constructor(message, code) {\n super(message);\n this.code = code;\n this.name = this.constructor.name;\n // Maintain proper prototype chain for instanceof checks\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n/**\n * Raised when the Fame transport is closed.\n * Maps to WebSocket close event codes.\n */\nexport class FameTransportClose extends FameError {\n constructor(message = 'Fame transport closed', code) {\n super(message, code);\n }\n}\n/**\n * Raised when a Fame connection cannot be established.\n */\nexport class FameConnectError extends FameError {\n constructor(message = 'Failed to connect to Fame service', code) {\n super(message, code);\n }\n}\n/**\n * Raised when a Fame message exceeds the maximum allowed size.\n */\nexport class FameMessageTooLarge extends FameError {\n constructor(message = 'Fame message too large', code) {\n super(message, code);\n }\n}\n/**\n * Raised when a Fame protocol violation occurs.\n */\nexport class FameProtocolError extends FameError {\n constructor(message = 'Fame protocol error', code) {\n super(message, code);\n }\n}\n/**\n * Raised when the Fame back pressure buffer is full.\n */\nexport class BackPressureFull extends FameError {\n constructor(message = 'Back pressure buffer full', code) {\n super(message, code);\n }\n}\n/**\n * Raised when a Fame operation is not authorized.\n */\nexport class NotAuthorized extends FameError {\n constructor(message = 'Not authorized', code) {\n super(message, code);\n }\n}\n/**\n * WebSocket close codes used by Fame protocol.\n * @see https://tools.ietf.org/html/rfc6455#section-7.4.1\n */\nexport const WebSocketCloseCode = {\n /** Normal closure; the connection successfully completed whatever purpose for which it was created. */\n NORMAL_CLOSURE: 1000,\n /** The endpoint is going away, either because of a server failure or because the browser is navigating away. */\n GOING_AWAY: 1001,\n /** The endpoint is terminating the connection due to a protocol error. */\n PROTOCOL_ERROR: 1002,\n /** The connection is being terminated because the endpoint received data of a type it cannot accept. */\n UNSUPPORTED_DATA: 1003,\n /** The endpoint is terminating the connection because a message was received that is too big to process. */\n MESSAGE_TOO_BIG: 1009,\n /** The client is terminating the connection because it expected the server to negotiate one or more extension. */\n MANDATORY_EXTENSION: 1010,\n /** The server is terminating the connection because it encountered an unexpected condition. */\n INTERNAL_ERROR: 1011,\n /** The service is restarting. A client may reconnect, and if it chooses to do so, should reconnect using a randomized delay. */\n SERVICE_RESTART: 1012,\n /** The service is experiencing overload. A client should only connect to a different IP (when there are multiple for the target) or reconnect to the same IP upon user action. */\n TRY_AGAIN_LATER: 1013,\n /** The server was acting as a gateway or proxy and received an invalid response from the upstream server. */\n BAD_GATEWAY: 1014,\n};\n/**\n * Check if an error is a Fame-related error.\n */\nexport function isFameError(error) {\n return error instanceof FameError;\n}\n/**\n * Check if an error is a specific Fame error type.\n */\nexport function isFameErrorType(error, errorClass) {\n return error instanceof errorClass;\n}\n/**\n * Create a FameTransportClose error from a WebSocket close event.\n */\nexport function createTransportCloseError(code, reason) {\n const message = reason || `Transport closed with code ${code}`;\n return new FameTransportClose(message, code);\n}\n//# sourceMappingURL=errors.js.map","/**\n * Cross-platform logging utilities for Naylence Fame\n *\n * This module provides structured logging that works in both Node.js and browser environments.\n * It mimics the functionality of the Python structlog-based logging system.\n */\n// Log levels matching Python logging\nexport var LogLevel;\n(function (LogLevel) {\n LogLevel[LogLevel[\"TRACE\"] = 5] = \"TRACE\";\n LogLevel[LogLevel[\"DEBUG\"] = 10] = \"DEBUG\";\n LogLevel[LogLevel[\"INFO\"] = 20] = \"INFO\";\n LogLevel[LogLevel[\"WARNING\"] = 30] = \"WARNING\";\n LogLevel[LogLevel[\"ERROR\"] = 40] = \"ERROR\";\n LogLevel[LogLevel[\"CRITICAL\"] = 50] = \"CRITICAL\";\n LogLevel[LogLevel[\"OFF\"] = 100] = \"OFF\";\n})(LogLevel || (LogLevel = {}));\nexport const LogLevelNames = {\n [LogLevel.TRACE]: 'TRACE',\n [LogLevel.DEBUG]: 'DEBUG',\n [LogLevel.INFO]: 'INFO',\n [LogLevel.WARNING]: 'WARNING',\n [LogLevel.ERROR]: 'ERROR',\n [LogLevel.CRITICAL]: 'CRITICAL',\n [LogLevel.OFF]: 'OFF',\n};\n// Environment detection\nexport const isNode = (() => {\n try {\n return (typeof globalThis !== 'undefined' &&\n typeof globalThis.process !== 'undefined' &&\n globalThis.process.versions?.node);\n }\n catch {\n return false;\n }\n})();\nexport const isBrowser = !isNode;\nfunction resolveSnapshotValue(snapshot, camelKey, snakeKey) {\n if (snapshot[camelKey] !== undefined) {\n return snapshot[camelKey];\n }\n if (snapshot[snakeKey] !== undefined) {\n return snapshot[snakeKey];\n }\n return undefined;\n}\nexport function normalizeEnvelopeSnapshot(snapshot) {\n if (!snapshot) {\n return {};\n }\n const normalized = {};\n const traceId = resolveSnapshotValue(snapshot, 'traceId', 'trace_id');\n if (traceId !== undefined) {\n normalized.trace_id = traceId;\n }\n if (snapshot.id !== undefined) {\n normalized.id = snapshot.id;\n }\n const flowId = resolveSnapshotValue(snapshot, 'flowId', 'flow_id');\n if (flowId !== undefined) {\n normalized.flow_id = flowId;\n }\n return normalized;\n}\n//# sourceMappingURL=logging-types.js.map","/**\n * Envelope context management for cross-platform environments\n *\n * This provides similar functionality to Python's envelope_context using AsyncLocalStorage in Node.js\n * and a simple context stack in browsers.\n */\nimport { normalizeEnvelopeSnapshot, } from './logging-types.js';\n// Cross-platform context storage\nclass EnvelopeContextManager {\n constructor() {\n this.nodeStorage = null;\n this.browserStack = [];\n // Try to use AsyncLocalStorage in Node.js environments\n this.initializeStorage();\n }\n initializeStorage() {\n // Only try to load AsyncLocalStorage in Node.js environments\n if (typeof globalThis !== 'undefined' &&\n globalThis.process?.versions?.node) {\n try {\n // Try to require async_hooks synchronously - this will only work in Node.js\n // The bundler will handle this gracefully for browser builds\n if (typeof require !== 'undefined') {\n const { AsyncLocalStorage } = require('async_hooks');\n this.nodeStorage = new AsyncLocalStorage();\n }\n }\n catch {\n // Fall back to browser-style stack if AsyncLocalStorage isn't available\n this.nodeStorage = null;\n }\n }\n }\n /**\n * Get the current envelope context\n */\n getCurrentContext() {\n if (this.nodeStorage) {\n return this.nodeStorage.getStore();\n }\n // Browser fallback - return the top of the stack\n return this.browserStack[this.browserStack.length - 1];\n }\n /**\n * Run a function with envelope context\n */\n runWithContext(context, fn) {\n if (this.nodeStorage) {\n return this.nodeStorage.run(context, fn);\n }\n // Browser fallback - use a simple stack\n this.browserStack.push(context);\n try {\n return fn();\n }\n finally {\n this.browserStack.pop();\n }\n }\n /**\n * Run an async function with envelope context\n */\n async runWithContextAsync(context, fn) {\n if (this.nodeStorage) {\n return this.nodeStorage.run(context, fn);\n }\n // Browser fallback - use a simple stack\n this.browserStack.push(context);\n try {\n return await fn();\n }\n finally {\n this.browserStack.pop();\n }\n }\n}\n// Global instance\nconst envelopeContextManager = new EnvelopeContextManager();\n/**\n * Get the current envelope context\n */\nexport function getCurrentEnvelope() {\n return envelopeContextManager.getCurrentContext();\n}\nexport function currentTraceId() {\n return envelopeContextManager.getCurrentContext()?.trace_id;\n}\n/**\n * Context manager function (similar to Python's envelope_context)\n */\nexport function withEnvelopeContext(envelope, fn) {\n const context = normalizeEnvelopeSnapshot(envelope);\n return envelopeContextManager.runWithContext(context, fn);\n}\n/**\n * Async context manager function\n */\nexport async function withEnvelopeContextAsync(envelope, fn) {\n const context = normalizeEnvelopeSnapshot(envelope);\n return envelopeContextManager.runWithContextAsync(context, fn);\n}\n/**\n * Class-based context manager (similar to Python's context manager protocol)\n */\nexport class EnvelopeContext {\n constructor(envelope) {\n this.envelope = envelope;\n }\n run(fn) {\n return withEnvelopeContext(this.envelope, fn);\n }\n async runAsync(fn) {\n return withEnvelopeContextAsync(this.envelope, fn);\n }\n}\n//# sourceMappingURL=envelope-context.js.map","/**\n * Cross-platform structured logging implementation\n *\n * This module provides a unified logging interface that works in both Node.js and browser environments.\n * It includes structured logging with processors similar to Python's structlog.\n *\n * Environment Variables:\n * - FAME_LOG_LEVEL: Set the initial log level at framework initialization (Node.js only)\n * Valid values: TRACE, DEBUG, INFO, WARNING, WARN, ERROR, CRITICAL\n * Default: INFO (balanced verbosity), OFF during tests\n *\n * Usage:\n * ```typescript\n * // Automatic - just set the environment variable\n * // FAME_LOG_LEVEL=INFO node my-app.js\n *\n * // Or call enableLogging() to override at runtime\n * import { enableLogging, getLogger } from '@naylence/runtime';\n * enableLogging('DEBUG');\n *\n * const logger = getLogger('my.app');\n * logger.info('Application started');\n * ```\n */\nimport { LogLevel, LogLevelNames, isNode, } from './logging-types.js';\nimport { getCurrentEnvelope } from './envelope-context.js';\n// Default processors (similar to structlog processors)\nexport const addTimestamp = (entry) => {\n return {\n ...entry,\n timestamp: new Date().toISOString(),\n };\n};\nexport const addLogLevel = (entry) => {\n return {\n ...entry,\n level_name: LogLevelNames[entry.level],\n };\n};\nexport const addEnvelopeFields = (entry) => {\n const envelope = getCurrentEnvelope();\n if (!envelope)\n return entry;\n const updates = {};\n if (envelope.trace_id)\n updates.trace_id = envelope.trace_id;\n if (envelope.id)\n updates.ctx_envp_id = envelope.id;\n if (envelope.flow_id)\n updates.ctx_flow_id = envelope.flow_id;\n return { ...entry, ...updates };\n};\nexport const dropEmpty = (entry) => {\n const result = { ...entry };\n // Remove empty values\n for (const [key, value] of Object.entries(result)) {\n if (value === null ||\n value === undefined ||\n value === '' ||\n (Array.isArray(value) && value.length === 0) ||\n (typeof value === 'object' &&\n value !== null &&\n Object.keys(value).length === 0)) {\n delete result[key];\n }\n }\n return result;\n};\nexport const stringifyNonPrimitives = (entry) => {\n const result = { ...entry };\n const primitives = ['string', 'number', 'boolean', 'undefined'];\n for (const [key, value] of Object.entries(result)) {\n if (value !== null &&\n !primitives.includes(typeof value) &&\n !Array.isArray(value)) {\n result[key] = String(value);\n }\n }\n return result;\n};\nconst CORE_LOG_FIELDS = new Set([\n 'timestamp',\n 'level',\n 'logger',\n 'event',\n 'level_name',\n]);\nconst ANSI_RESET = '\\u001B[0m';\nfunction formatValueForConsole(value) {\n if (value === null)\n return 'null';\n if (value === undefined)\n return 'undefined';\n if (typeof value === 'string') {\n return /[\\s\"=]/.test(value) ? JSON.stringify(value) : value;\n }\n if (typeof value === 'number' ||\n typeof value === 'bigint' ||\n typeof value === 'boolean') {\n return String(value);\n }\n try {\n return JSON.stringify(value);\n }\n catch {\n return String(value);\n }\n}\nfunction buildConsoleParts(entry) {\n const timestamp = entry.timestamp ?? new Date().toISOString();\n const levelName = entry.level_name ?? LogLevelNames[entry.level] ?? String(entry.level);\n const loggerName = entry.logger ?? 'root';\n const event = entry.event ?? '';\n const extras = [];\n for (const [key, value] of Object.entries(entry)) {\n if (CORE_LOG_FIELDS.has(key))\n continue;\n extras.push(`${key}=${formatValueForConsole(value)}`);\n }\n extras.sort((a, b) => a.localeCompare(b));\n return { timestamp, levelName, loggerName, event, extras };\n}\nfunction supportsAnsiColors() {\n if (!isNode)\n return false;\n if (typeof process === 'undefined')\n return false;\n const stdout = process.stdout;\n return Boolean(stdout && typeof stdout.isTTY === 'boolean' && stdout.isTTY);\n}\nfunction getAnsiColor(level) {\n switch (level) {\n case LogLevel.TRACE:\n return '\\u001B[90m';\n case LogLevel.DEBUG:\n return '\\u001B[36m';\n case LogLevel.INFO:\n return '\\u001B[32m';\n case LogLevel.WARNING:\n return '\\u001B[33m';\n case LogLevel.ERROR:\n return '\\u001B[31m';\n case LogLevel.CRITICAL:\n return '\\u001B[31m';\n default:\n return null;\n }\n}\nfunction formatNodeConsoleLine(entry) {\n const { timestamp, levelName, loggerName, event, extras } = buildConsoleParts(entry);\n const shouldColorize = supportsAnsiColors() && !isTest;\n const paddedLevel = levelName.toUpperCase().padEnd(7, ' ');\n const color = shouldColorize ? getAnsiColor(entry.level) : null;\n const levelSegment = color\n ? `${color}${paddedLevel}${ANSI_RESET}`\n : paddedLevel;\n const extrasJoined = extras.join(' ');\n const eventSegment = event ? ` | ${event}` : '';\n const extrasSegment = extrasJoined\n ? event\n ? ` ${extrasJoined}`\n : ` | ${extrasJoined}`\n : '';\n return `${timestamp} | ${levelSegment} | ${loggerName}${eventSegment}${extrasSegment}`.trimEnd();\n}\nfunction formatBrowserConsoleLine(entry) {\n const { timestamp, levelName, loggerName, event, extras } = buildConsoleParts(entry);\n const color = getConsoleColor(entry.level);\n const extrasJoined = extras.join(' ');\n const eventSegment = event ? ` | ${event}` : '';\n const extrasSegment = extrasJoined\n ? event\n ? ` ${extrasJoined}`\n : ` | ${extrasJoined}`\n : '';\n const message = `%c${timestamp} | ${levelName.toUpperCase()} | ${loggerName}${eventSegment}${extrasSegment}`;\n return { message, styles: [color] };\n}\n// Default transports\nexport const consoleTransport = (entry) => {\n if (isNode) {\n console.log(formatNodeConsoleLine(entry));\n }\n else {\n const { message, styles } = formatBrowserConsoleLine(entry);\n console.log(message, ...styles);\n }\n};\nfunction getConsoleColor(level) {\n switch (level) {\n case LogLevel.TRACE:\n return 'color: #9AA0A6';\n case LogLevel.DEBUG:\n return 'color: #50B5FF';\n case LogLevel.INFO:\n return 'color: #2E7D32; font-weight: 600';\n case LogLevel.WARNING:\n return 'color: #F9AB00; font-weight: 600';\n case LogLevel.ERROR:\n return 'color: #E53935; font-weight: 600';\n case LogLevel.CRITICAL:\n return 'color: #B71C1C; font-weight: 700; text-decoration: underline';\n default:\n return 'color: #37474F';\n }\n}\n// Node.js-specific Pino transport (when available)\nlet pinoLogger = null;\nexport const pinoTransport = (entry) => {\n if (!isNode || !pinoLogger) {\n // Fall back to console if Pino isn't available\n consoleTransport(entry);\n return;\n }\n const { level, event, ...extra } = entry;\n const pinoLevel = getPinoLevel(level);\n pinoLogger[pinoLevel](extra, event);\n};\nfunction getPinoLevel(level) {\n switch (level) {\n case LogLevel.TRACE:\n return 'trace';\n case LogLevel.DEBUG:\n return 'debug';\n case LogLevel.INFO:\n return 'info';\n case LogLevel.WARNING:\n return 'warn';\n case LogLevel.ERROR:\n return 'error';\n case LogLevel.CRITICAL:\n return 'fatal';\n default:\n return 'info';\n }\n}\n// Initialize Pino if available (Node.js only)\nfunction initializePino() {\n if (!isNode || pinoLogger)\n return;\n if (isTest) {\n // Don't initialize Pino in tests to avoid worker threads\n return;\n }\n try {\n // Try to require pino synchronously - this will only work in Node.js\n if (typeof require !== 'undefined') {\n const pino = require('pino');\n // Use pretty transport for development\n pinoLogger = pino({\n level: 'trace',\n customLevels: { trace: 5 },\n transport: {\n target: 'pino-pretty',\n options: {\n colorize: true,\n translateTime: 'yyyy-mm-dd HH:MM:ss',\n ignore: 'pid,hostname',\n },\n },\n });\n // Switch default transport to Pino now that it's available\n defaultConfig.transports = [pinoTransport];\n }\n }\n catch {\n // Pino not available, fall back to console\n pinoLogger = null;\n }\n}\n// Detect test environment for quieter logging\nconst isTest = typeof process !== 'undefined' &&\n (process.env.NODE_ENV === 'test' ||\n process.env.JEST_WORKER_ID !== undefined ||\n (typeof global !== 'undefined' && global.expect !== undefined));\n// Initialize Pino immediately in Node.js environments\nif (isNode) {\n initializePino();\n}\n/**\n * Get initial log level from environment variable or defaults\n */\nfunction getInitialLogLevel() {\n // Tests should be silent\n if (isTest) {\n return LogLevel.OFF;\n }\n // Check FAME_LOG_LEVEL environment variable\n if (isNode && typeof process !== 'undefined' && process.env.FAME_LOG_LEVEL) {\n try {\n const envLevel = process.env.FAME_LOG_LEVEL.trim().toUpperCase();\n // Direct enum name match (e.g., \"DEBUG\", \"INFO\")\n if (envLevel in LogLevel) {\n return LogLevel[envLevel];\n }\n // Try alternative mappings\n if (envLevel === 'WARN')\n return LogLevel.WARNING;\n }\n catch {\n // Fall through to default\n }\n }\n // Default to INFO - balanced verbosity for most use cases\n return LogLevel.INFO;\n}\nconst defaultConfig = {\n level: getInitialLogLevel(),\n processors: [\n addTimestamp,\n addEnvelopeFields,\n dropEmpty,\n stringifyNonPrimitives,\n addLogLevel,\n ],\n transports: [consoleTransport], // Start with console, switch to Pino when available\n};\nconst logLevelValues = new Set();\nconst logLevelNameLookup = new Map();\nfor (const value of Object.values(LogLevel)) {\n if (typeof value === 'number') {\n logLevelValues.add(value);\n const name = LogLevelNames[value];\n if (name) {\n logLevelNameLookup.set(name.toUpperCase(), value);\n }\n }\n}\n// Logger implementation\nclass FameLogger {\n constructor(name, config = {}, bindings = {}) {\n this.name = name;\n this.config = { ...defaultConfig, ...config };\n this.bindings = bindings;\n }\n log(level, event, extra = {}) {\n if (level < this.config.level)\n return;\n let entry = {\n timestamp: '',\n level,\n logger: this.name,\n event,\n ...this.bindings,\n ...extra,\n };\n // Apply processors\n for (const processor of this.config.processors) {\n const processed = processor(entry);\n if (processed === null)\n return; // Processor filtered out the entry\n entry = processed;\n }\n // Send to transports\n for (const transport of this.config.transports) {\n transport(entry);\n }\n }\n trace(event, ...args) {\n const extra = this.parseArgs(args);\n this.log(LogLevel.TRACE, event, extra);\n }\n debug(event, ...args) {\n const extra = this.parseArgs(args);\n this.log(LogLevel.DEBUG, event, extra);\n }\n info(event, ...args) {\n const extra = this.parseArgs(args);\n this.log(LogLevel.INFO, event, extra);\n }\n warning(event, ...args) {\n const extra = this.parseArgs(args);\n this.log(LogLevel.WARNING, event, extra);\n }\n error(event, ...args) {\n const extra = this.parseArgs(args);\n this.log(LogLevel.ERROR, event, extra);\n }\n critical(event, ...args) {\n const extra = this.parseArgs(args);\n this.log(LogLevel.CRITICAL, event, extra);\n }\n child(bindings) {\n return new FameLogger(this.name, this.config, {\n ...this.bindings,\n ...bindings,\n });\n }\n setLevel(level) {\n this.config.level = level;\n }\n parseArgs(args) {\n if (args.length === 0)\n return {};\n if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null) {\n return args[0];\n }\n // Convert positional args to numbered keys\n const result = {};\n args.forEach((arg, index) => {\n result[`arg${index}`] = arg;\n });\n return result;\n }\n}\n// Global logger registry\nconst loggers = new Map();\nlet naylenceLogLevelOverride = null;\nfunction isNaylenceLogger(name) {\n return name === 'naylence' || name.startsWith('naylence.');\n}\nfunction normalizeLogLevel(level) {\n if (typeof level === 'number') {\n if (logLevelValues.has(level)) {\n return level;\n }\n }\n else {\n const key = level.toString().toUpperCase();\n const resolved = logLevelNameLookup.get(key);\n if (resolved !== undefined) {\n return resolved;\n }\n }\n throw new Error(`Unknown log level: ${level}`);\n}\n/**\n * Get a logger instance (similar to Python's getLogger)\n */\nexport function getLogger(name) {\n if (!loggers.has(name)) {\n const config = {};\n if (naylenceLogLevelOverride !== null && isNaylenceLogger(name)) {\n config.level = naylenceLogLevelOverride;\n }\n loggers.set(name, new FameLogger(name, config));\n }\n return loggers.get(name);\n}\n/**\n * Configure basic logging (similar to Python's basicConfig)\n */\nexport function basicConfig(options = {}) {\n const level = options.level ?? LogLevel.TRACE;\n const useJson = options.format === 'json';\n const transport = useJson\n ? (entry) => console.log(JSON.stringify(entry))\n : consoleTransport;\n // Update default config\n defaultConfig.level = level;\n defaultConfig.transports = [transport];\n // Update existing loggers\n for (const logger of loggers.values()) {\n logger.setLevel(level);\n }\n}\nexport function enableLogging(level) {\n const resolvedLevel = normalizeLogLevel(level);\n basicConfig({ level: LogLevel.WARNING });\n naylenceLogLevelOverride = resolvedLevel;\n for (const [name, logger] of loggers.entries()) {\n if (isNaylenceLogger(name)) {\n logger.setLevel(resolvedLevel);\n }\n }\n}\nexport function summarizeEnvelope(envelope, prefix = 'child_') {\n if (!envelope) {\n return {};\n }\n const safePrefix = prefix ?? '';\n return {\n [`${safePrefix}envp_id`]: envelope.id ?? null,\n [`${safePrefix}sid`]: envelope.sid ? `${String(envelope.sid)}…` : null,\n [`${safePrefix}to`]: envelope.to ? String(envelope.to) : null,\n [`${safePrefix}trace_id`]: envelope.traceId ?? null,\n [`${safePrefix}frame`]: envelope.frame && typeof envelope.frame === 'object'\n ? (envelope.frame.type ??\n envelope.frame.constructor?.name ??\n 'Unknown')\n : null,\n [`${safePrefix}corr_id`]: envelope.corrId ?? null,\n };\n}\n// Re-export log levels and types\nexport { LogLevel, LogLevelNames } from './logging-types.js';\n//# sourceMappingURL=logging.js.map","/**\n * Cross-platform task spawning and management utilities\n *\n * This module provides functionality similar to Python's asyncio.Task and TaskSpawner,\n * adapted for JavaScript/TypeScript environments.\n */\n// Task states\nexport var TaskState;\n(function (TaskState) {\n TaskState[\"RUNNING\"] = \"running\";\n TaskState[\"COMPLETED\"] = \"completed\";\n TaskState[\"FAILED\"] = \"failed\";\n TaskState[\"CANCELLED\"] = \"cancelled\";\n})(TaskState || (TaskState = {}));\n// Errors that can be thrown by tasks\nexport class TaskTimeoutError extends Error {\n constructor(taskName, timeout) {\n super(`Task ${taskName || 'unknown'} timed out after ${timeout}ms`);\n this.name = 'TaskTimeoutError';\n }\n}\nexport class TaskCancelledError extends Error {\n constructor(taskName) {\n super(`Task ${taskName || 'unknown'} was cancelled`);\n this.name = 'TaskCancelledError';\n }\n}\n//# sourceMappingURL=task-types.js.map","/**\n * TaskSpawner - Cross-platform async task management\n *\n * Provides functionality similar to Python's asyncio TaskSpawner with proper\n * error handling, cancellation, and graceful shutdown capabilities.\n */\nimport { getLogger } from './logging.js';\nimport { withEnvelopeContextAsync, getCurrentEnvelope, } from './envelope-context.js';\nimport { TaskState, TaskTimeoutError, TaskCancelledError, } from './task-types.js';\nconst logger = getLogger('naylence.fame.util.task_spawner');\nfunction firstDefined(source, keys) {\n for (const key of keys) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n const value = source[key];\n if (value !== undefined) {\n return value;\n }\n }\n }\n return undefined;\n}\nfunction coerceNumber(value) {\n if (typeof value === 'number' && Number.isFinite(value)) {\n return value;\n }\n if (typeof value === 'string') {\n const trimmed = value.trim();\n if (trimmed.length === 0) {\n return undefined;\n }\n const parsed = Number(trimmed);\n if (!Number.isNaN(parsed) && Number.isFinite(parsed)) {\n return parsed;\n }\n }\n return undefined;\n}\nfunction coerceBoolean(value) {\n if (typeof value === 'boolean') {\n return value;\n }\n if (typeof value === 'string') {\n const normalized = value.trim().toLowerCase();\n if (normalized.length === 0) {\n return undefined;\n }\n if (['true', '1', 'yes', 'on'].includes(normalized)) {\n return true;\n }\n if (['false', '0', 'no', 'off'].includes(normalized)) {\n return false;\n }\n }\n return undefined;\n}\nfunction normalizeTaskSpawnerConfig(config = {}) {\n const source = config;\n const maxConcurrent = coerceNumber(firstDefined(source, ['maxConcurrent', 'max_concurrent'])) ??\n 0;\n const defaultTimeout = coerceNumber(firstDefined(source, ['defaultTimeout', 'default_timeout'])) ??\n 0;\n const autoCleanup = coerceBoolean(firstDefined(source, ['autoCleanup', 'auto_cleanup'])) ??\n true;\n return {\n maxConcurrent,\n defaultTimeout,\n autoCleanup,\n };\n}\nfunction normalizeSpawnOptions(options = {}) {\n const source = options;\n const nameRaw = firstDefined(source, ['name', 'task_name', 'taskName']);\n const timeoutRaw = firstDefined(source, [\n 'timeout',\n 'task_timeout',\n 'taskTimeout',\n ]);\n const name = typeof nameRaw === 'string' ? nameRaw : undefined;\n const timeout = coerceNumber(timeoutRaw);\n return { name, timeout };\n}\nfunction normalizeShutdownOptions(options = {}) {\n const source = options;\n const gracePeriod = coerceNumber(firstDefined(source, ['gracePeriod', 'grace_period'])) ?? 2000;\n const cancelHanging = coerceBoolean(firstDefined(source, ['cancelHanging', 'cancel_hanging'])) ??\n true;\n const joinTimeout = coerceNumber(firstDefined(source, ['joinTimeout', 'join_timeout'])) ?? 1000;\n return {\n gracePeriod,\n cancelHanging,\n joinTimeout,\n };\n}\n// Internal task implementation\nclass TaskImpl {\n constructor(id, name, promise, abortController) {\n this._state = TaskState.RUNNING;\n this.id = id;\n this.name = name || `task-${id}`;\n this.abortController = abortController;\n this.startTime = Date.now();\n // Wrap the promise to track state changes\n this.promise = promise\n .then((result) => {\n this._state = TaskState.COMPLETED;\n this._result = result;\n return result;\n })\n .catch((error) => {\n if (error.name === 'AbortError' ||\n this.abortController.signal.aborted) {\n this._state = TaskState.CANCELLED;\n throw new TaskCancelledError(this.name);\n }\n else {\n this._state = TaskState.FAILED;\n this._error = error;\n throw error;\n }\n });\n }\n cancel() {\n if (this._state === TaskState.RUNNING) {\n this.abortController.abort();\n }\n }\n isCancelled() {\n return this._state === TaskState.CANCELLED;\n }\n isCompleted() {\n return this._state === TaskState.COMPLETED;\n }\n isFailed() {\n return this._state === TaskState.FAILED;\n }\n getState() {\n return this._state;\n }\n getResult() {\n return this._result;\n }\n getError() {\n return this._error;\n }\n}\nexport class TaskSpawner {\n constructor(config = {}) {\n this._tasks = new Map();\n this._taskCounter = 0;\n this._lastSpawnerError = null;\n this._suppressCompletionLogging = false;\n this._config = normalizeTaskSpawnerConfig(config);\n }\n /**\n * Spawn a new async task with proper error handling and context propagation\n */\n spawn(taskFn, options = {}) {\n const normalizedOptions = normalizeSpawnOptions(options);\n // Reset logging suppression when new work is spawned. Any lingering\n // completion events from a previous shutdown will remain suppressed\n // until the corresponding tasks finish.\n this._suppressCompletionLogging = false;\n // Check concurrency limits\n if (this._config.maxConcurrent > 0 &&\n this._tasks.size >= this._config.maxConcurrent) {\n throw new Error(`Task limit reached: ${this._config.maxConcurrent} concurrent tasks`);\n }\n const taskId = `task-${++this._taskCounter}`;\n const taskName = normalizedOptions.name || `unnamed-${taskId}`;\n const timeout = normalizedOptions.timeout ?? this._config.defaultTimeout;\n logger.debug('starting_background_task', {\n task_name: taskName,\n task_id: taskId,\n });\n // Create abort controller for cancellation\n const abortController = new AbortController();\n // Capture current envelope context\n const currentEnvelope = getCurrentEnvelope();\n // Create the task promise with context propagation\n const taskPromise = this._createTaskPromise(taskFn, abortController.signal, timeout, taskName, currentEnvelope);\n // Create task wrapper\n const task = new TaskImpl(taskId, taskName, taskPromise, abortController);\n this._tasks.set(taskId, task);\n // Set up completion handling\n task.promise\n .then(() => {\n if (!this._suppressCompletionLogging) {\n logger.debug('task_completed_successfully', {\n task_name: taskName,\n task_id: taskId,\n duration_ms: Date.now() - task.startTime,\n });\n }\n })\n .catch((error) => {\n this._handleTaskError(task, error);\n })\n .finally(() => {\n if (this._config.autoCleanup) {\n this._tasks.delete(taskId);\n }\n });\n return task;\n }\n /**\n * Create the actual task promise with all the wrapping logic\n */\n async _createTaskPromise(taskFn, signal, timeout, taskName, envelopeContext) {\n // Run the task with envelope context if available\n const runTask = envelopeContext\n ? () => withEnvelopeContextAsync(envelopeContext, () => taskFn(signal))\n : () => taskFn(signal);\n // Handle timeout if specified\n if (timeout > 0) {\n return Promise.race([\n runTask(),\n this._createTimeoutPromise(timeout, taskName),\n ]);\n }\n return runTask();\n }\n /**\n * Create a timeout promise that rejects after the specified time\n */\n _createTimeoutPromise(timeout, taskName) {\n return new Promise((_, reject) => {\n setTimeout(() => {\n reject(new TaskTimeoutError(taskName, timeout));\n }, timeout);\n });\n }\n /**\n * Handle task errors with proper logging and classification\n */\n _handleTaskError(task, error) {\n const taskName = task.name || task.id;\n // Handle cancellation (including AbortError from AbortSignal)\n if (error instanceof TaskCancelledError ||\n error.name === 'AbortError' ||\n error.message === 'Task cancelled' ||\n error.message === 'Aborted') {\n logger.debug('task_cancelled', {\n task_name: taskName,\n note: 'Task cancelled as requested',\n });\n return;\n }\n // Handle timeout\n if (error instanceof TaskTimeoutError) {\n logger.warning('task_timed_out', {\n task_name: taskName,\n error: error.message,\n });\n if (this._lastSpawnerError === null) {\n this._lastSpawnerError = error;\n }\n return;\n }\n // Handle known WebSocket shutdown race condition (similar to Python version)\n if (error.message.includes(\"await wasn't used with future\") ||\n error.message.includes('WebSocket closed during receive')) {\n logger.debug('task_shutdown_race_condition_handled', {\n task_name: taskName,\n note: 'Normal WebSocket close timing during shutdown - not an error',\n });\n return;\n }\n // Handle transport close errors (similar to Python FameTransportClose)\n if (error.name === 'FameTransportClose' ||\n error.message.includes('normal closure') ||\n error.message.includes('Connection closed')) {\n logger.debug('task_shutdown_completed_normally', {\n task_name: taskName,\n note: 'Task closed normally during shutdown',\n });\n return;\n }\n // All other exceptions are considered real failures\n logger.error('background_task_failed', {\n task_name: taskName,\n error: error.message,\n stack: error.stack,\n });\n if (this._lastSpawnerError === null) {\n this._lastSpawnerError = error;\n }\n }\n /**\n * Gracefully shutdown all spawned tasks\n *\n * This implementation mimics Python's asyncio.wait() behavior more closely\n * for better shutdown performance and responsiveness.\n */\n async shutdownTasks(options = {}) {\n const { gracePeriod, cancelHanging, joinTimeout } = normalizeShutdownOptions(options);\n if (this._tasks.size === 0) {\n logger.debug('shutdown_tasks_no_tasks_to_shutdown');\n return;\n }\n this._suppressCompletionLogging = true;\n logger.debug('shutting_down_tasks', {\n task_count: this._tasks.size,\n task_names: Array.from(this._tasks.values()).map((t) => t.name),\n grace_period_ms: gracePeriod,\n });\n const tasks = Array.from(this._tasks.values());\n // 1. Python-style wait with immediate timeout check\n const completed = await this._waitWithGracePeriod(tasks, gracePeriod);\n // 2. Cancel stragglers if requested\n if (cancelHanging) {\n const stillRunning = tasks.filter((task) => task.getState() === TaskState.RUNNING && !completed.has(task));\n if (stillRunning.length > 0) {\n logger.debug('cancelling_hanging_tasks', {\n hanging_count: stillRunning.length,\n });\n // Cancel all hanging tasks\n stillRunning.forEach((task) => task.cancel());\n // Wait for them to finish with individual timeouts\n await Promise.allSettled(stillRunning.map(async (task) => {\n try {\n await this._waitWithTimeout(task.promise, joinTimeout);\n }\n catch (error) {\n if (error instanceof TaskTimeoutError) {\n logger.warning('task_did_not_shutdown', {\n task_name: task.name || task.id,\n join_timeout_ms: joinTimeout,\n });\n // NOTE: This branch is defensively coded but effectively unreachable with the current\n // TaskImpl implementation. Any rejection after abort() is mapped to TaskCancelledError\n // because the catch wrapper checks the abort signal. We keep this logic in case that\n // implementation changes in future refactors.\n }\n else if (!(error instanceof TaskCancelledError)) {\n /* istanbul ignore next - unreachable defensive branch */\n logger.error('task_raised_during_cancellation', {\n task_name: task.name || task.id,\n error: error instanceof Error ? error.message : String(error),\n });\n /* istanbul ignore next */\n if (this._lastSpawnerError === null && error instanceof Error) {\n this._lastSpawnerError = error;\n }\n }\n }\n }));\n }\n }\n // Clear all tasks after shutdown\n this._tasks.clear();\n }\n /**\n * Wait for tasks with grace period - similar to Python's asyncio.wait()\n * Returns immediately when grace period expires, unlike Promise.allSettled()\n */\n async _waitWithGracePeriod(tasks, gracePeriod) {\n const completed = new Set();\n const promises = tasks.map(async (task) => {\n try {\n await task.promise;\n completed.add(task);\n }\n catch {\n // Task failed or was cancelled - still consider it \"completed\"\n completed.add(task);\n }\n });\n // Race all tasks against the timeout\n let timeoutId;\n const timeoutPromise = new Promise((resolve) => {\n timeoutId = setTimeout(resolve, gracePeriod);\n });\n try {\n await Promise.race([Promise.allSettled(promises), timeoutPromise]);\n }\n finally {\n if (timeoutId !== undefined) {\n clearTimeout(timeoutId);\n }\n }\n return completed;\n }\n /**\n * Wait for a promise with a timeout\n */\n async _waitWithTimeout(promise, timeout) {\n let timeoutId;\n const timeoutPromise = new Promise((_, reject) => {\n timeoutId = setTimeout(() => reject(new TaskTimeoutError('shutdown-wait', timeout)), timeout);\n });\n try {\n return await Promise.race([promise, timeoutPromise]);\n }\n finally {\n if (timeoutId !== undefined) {\n clearTimeout(timeoutId);\n }\n }\n }\n /**\n * Get the last spawner error (helper for callers that want to bubble the error)\n */\n get lastSpawnerError() {\n return this._lastSpawnerError;\n }\n /**\n * Get current task count\n */\n get taskCount() {\n return this._tasks.size;\n }\n /**\n * Get all active tasks\n */\n get activeTasks() {\n return Array.from(this._tasks.values());\n }\n /**\n * Get task by ID\n */\n getTask(id) {\n return this._tasks.get(id);\n }\n /**\n * Cancel all tasks\n */\n cancelAllTasks() {\n this._tasks.forEach((task) => task.cancel());\n }\n}\n//# sourceMappingURL=task-spawner.js.map","export class AsyncLock {\n constructor() {\n this.tail = Promise.resolve();\n }\n async runExclusive(operation) {\n let release;\n const next = new Promise((resolve) => {\n release = resolve;\n });\n const previous = this.tail;\n this.tail = previous.then(() => next, () => next);\n await previous;\n try {\n return await operation();\n }\n finally {\n release();\n }\n }\n}\nexport async function withLock(lock, operation) {\n return await lock.runExclusive(operation);\n}\n//# sourceMappingURL=lock.js.map","/**\n * Task utility functions and helpers\n */\n/**\n * Wait for any task to complete (first to finish wins)\n */\nexport async function waitForAny(tasks) {\n if (tasks.length === 0) {\n throw new Error('Cannot wait for any of zero tasks');\n }\n return Promise.race(tasks.map((task) => task.promise));\n}\n/**\n * Wait for all tasks to complete\n */\nexport async function waitForAll(tasks) {\n return Promise.all(tasks.map((task) => task.promise));\n}\n/**\n * Wait for all tasks to settle (complete or fail)\n */\nexport async function waitForAllSettled(tasks) {\n return Promise.allSettled(tasks.map((task) => task.promise));\n}\n/**\n * Create a delay task (similar to asyncio.sleep)\n */\nexport function delay(ms, signal) {\n return new Promise((resolve, reject) => {\n if (signal?.aborted) {\n reject(new Error('Aborted'));\n return;\n }\n const timeoutId = setTimeout(() => {\n resolve();\n }, ms);\n signal?.addEventListener('abort', () => {\n clearTimeout(timeoutId);\n reject(new Error('Aborted'));\n });\n });\n}\n/**\n * Create a task that times out after specified duration\n */\nexport function withTimeout(promise, timeoutMs, timeoutMessage) {\n return Promise.race([\n promise,\n new Promise((_, reject) => {\n setTimeout(() => {\n reject(new Error(timeoutMessage || `Operation timed out after ${timeoutMs}ms`));\n }, timeoutMs);\n }),\n ]);\n}\n/**\n * Retry a task with exponential backoff\n */\nexport async function retryWithBackoff(taskFn, options = {}) {\n const { maxRetries = 3, baseDelayMs = 100, maxDelayMs = 5000, backoffMultiplier = 2, signal, } = options;\n let lastError;\n for (let attempt = 0; attempt <= maxRetries; attempt++) {\n if (signal?.aborted) {\n throw new Error('Aborted');\n }\n try {\n return await taskFn();\n }\n catch (error) {\n lastError = error instanceof Error ? error : new Error(String(error));\n if (attempt === maxRetries) {\n throw lastError;\n }\n // Calculate delay with exponential backoff\n const delayMs = Math.min(baseDelayMs * Math.pow(backoffMultiplier, attempt), maxDelayMs);\n await delay(delayMs, signal);\n }\n }\n throw lastError;\n}\n/**\n * Create a debounced task function\n */\nexport function debounce(fn, delayMs) {\n let timeoutId;\n let resolve;\n let reject;\n return (...args) => {\n return new Promise((res, rej) => {\n // Clear previous timeout\n if (timeoutId !== undefined) {\n clearTimeout(timeoutId);\n }\n resolve = res;\n reject = rej;\n timeoutId = setTimeout(async () => {\n try {\n const result = await fn(...args);\n resolve?.(result);\n }\n catch (error) {\n reject?.(error);\n }\n }, delayMs);\n });\n };\n}\n/**\n * Create a throttled task function\n */\nexport function throttle(fn, intervalMs) {\n let lastExecuted = 0;\n let pendingPromise = null;\n return (...args) => {\n const now = Date.now();\n const timeSinceLastExecution = now - lastExecuted;\n if (timeSinceLastExecution >= intervalMs && !pendingPromise) {\n lastExecuted = now;\n pendingPromise = fn(...args).finally(() => {\n pendingPromise = null;\n });\n return pendingPromise;\n }\n // Return existing promise if one is pending\n if (pendingPromise) {\n return pendingPromise;\n }\n // Schedule execution\n const delayMs = intervalMs - timeSinceLastExecution;\n return new Promise((resolve, reject) => {\n setTimeout(async () => {\n try {\n lastExecuted = Date.now();\n const result = await fn(...args);\n resolve(result);\n }\n catch (error) {\n reject(error);\n }\n }, delayMs);\n });\n };\n}\n//# sourceMappingURL=task-utils.js.map","/**\n * Formatting utilities for terminal output and timestamps.\n */\n/**\n * ANSI color codes for terminal output.\n */\nexport var AnsiColor;\n(function (AnsiColor) {\n AnsiColor[\"RESET\"] = \"\\u001B[0m\";\n AnsiColor[\"BLACK\"] = \"\\u001B[30m\";\n AnsiColor[\"RED\"] = \"\\u001B[31m\";\n AnsiColor[\"GREEN\"] = \"\\u001B[32m\";\n AnsiColor[\"YELLOW\"] = \"\\u001B[33m\";\n AnsiColor[\"BLUE\"] = \"\\u001B[34m\";\n AnsiColor[\"MAGENTA\"] = \"\\u001B[35m\";\n AnsiColor[\"CYAN\"] = \"\\u001B[36m\";\n AnsiColor[\"WHITE\"] = \"\\u001B[37m\";\n AnsiColor[\"GRAY\"] = \"\\u001B[90m\";\n AnsiColor[\"BRIGHT_RED\"] = \"\\u001B[91m\";\n AnsiColor[\"BRIGHT_GREEN\"] = \"\\u001B[92m\";\n AnsiColor[\"BRIGHT_YELLOW\"] = \"\\u001B[93m\";\n AnsiColor[\"BRIGHT_BLUE\"] = \"\\u001B[94m\";\n AnsiColor[\"BRIGHT_MAGENTA\"] = \"\\u001B[95m\";\n AnsiColor[\"BRIGHT_CYAN\"] = \"\\u001B[96m\";\n AnsiColor[\"BRIGHT_WHITE\"] = \"\\u001B[97m\";\n})(AnsiColor || (AnsiColor = {}));\n/**\n * Get current timestamp in ISO format with microseconds and Z suffix.\n * @returns ISO timestamp string with microsecond precision and UTC timezone\n */\nexport function formatTimestamp() {\n const now = new Date();\n const isoString = now.toISOString();\n // JavaScript Date.toISOString() already provides millisecond precision\n // and Z suffix, which matches the Python implementation\n return isoString;\n}\n/**\n * Colorize text with the given ANSI color code.\n * @param text The text to colorize\n * @param color The ANSI color code to apply\n * @returns The colorized text with reset code appended\n */\nexport function color(text, color) {\n return `${color}${text}${AnsiColor.RESET}`;\n}\n/**\n * Internal function to check color support (for testing purposes)\n */\nfunction _supportsColor() {\n // Check if we're in a Node.js environment\n if (typeof process !== 'undefined' && process.env) {\n // Check for NO_COLOR environment variable (takes precedence)\n if (process.env.NO_COLOR) {\n return false;\n }\n // Check for FORCE_COLOR environment variable (takes precedence)\n if (process.env.FORCE_COLOR) {\n return true;\n }\n // Check for CI environments that support colors\n if (process.env.CI && ['true', '1'].includes(process.env.CI)) {\n return true;\n }\n // Check if stdout is a TTY (terminal)\n if (process.stdout && process.stdout.isTTY) {\n return true;\n }\n }\n // In browser environments, assume no color support by default\n return false;\n}\n/**\n * Check if the current environment supports ANSI colors.\n * @returns true if ANSI colors are supported, false otherwise\n */\nexport function supportsColor() {\n return _supportsColor();\n}\n/**\n * Conditionally colorize text based on environment support.\n * @param text The text to colorize\n * @param color The ANSI color code to apply\n * @returns The colorized text if colors are supported, plain text otherwise\n */\nexport function safeColor(text, color) {\n return supportsColor() ? `${color}${text}${AnsiColor.RESET}` : text;\n}\n//# sourceMappingURL=formatter.js.map","/**\n * Protocol and implementation for emitting metrics such as counters, gauges, and histograms.\n * Implementations should be thread-safe and non-blocking.\n */\n/**\n * A no-op implementation of MetricsEmitter that discards all metrics.\n * Useful for testing or when metrics are disabled.\n */\nexport class NoOpMetricsEmitter {\n counter(_name, _value, _tags) {\n // Intentionally empty - discards all metrics\n }\n gauge(_name, _value, _tags) {\n // Intentionally empty - discards all metrics\n }\n histogram(_name, _value, _tags) {\n // Intentionally empty - discards all metrics\n }\n}\n/**\n * A console-based implementation of MetricsEmitter for debugging.\n * Logs all metrics to the console in a structured format.\n */\nexport class ConsoleMetricsEmitter {\n constructor(prefix = '[METRICS]') {\n this.prefix = prefix;\n }\n counter(name, value, tags) {\n this.logMetric('COUNTER', name, value, tags);\n }\n gauge(name, value, tags) {\n this.logMetric('GAUGE', name, value, tags);\n }\n histogram(name, value, tags) {\n this.logMetric('HISTOGRAM', name, value, tags);\n }\n logMetric(type, name, value, tags) {\n const timestamp = new Date().toISOString();\n const tagsStr = tags ? ` tags=${JSON.stringify(tags)}` : '';\n console.log(`${this.prefix} ${timestamp} ${type} ${name}=${value}${tagsStr}`);\n }\n}\n/**\n * A memory-based implementation of MetricsEmitter for testing.\n * Stores all emitted metrics in memory for inspection.\n */\nexport class MemoryMetricsEmitter {\n constructor() {\n this.metrics = [];\n }\n counter(name, value, tags) {\n this.recordMetric('counter', name, value, tags);\n }\n gauge(name, value, tags) {\n this.recordMetric('gauge', name, value, tags);\n }\n histogram(name, value, tags) {\n this.recordMetric('histogram', name, value, tags);\n }\n recordMetric(type, name, value, tags) {\n this.metrics.push({\n type,\n name,\n value,\n ...(tags && { tags }),\n timestamp: new Date(),\n });\n }\n /**\n * Get all recorded metrics.\n */\n getMetrics() {\n return [...this.metrics];\n }\n /**\n * Get metrics filtered by type.\n */\n getMetricsByType(type) {\n return this.metrics.filter((m) => m.type === type);\n }\n /**\n * Get metrics filtered by name.\n */\n getMetricsByName(name) {\n return this.metrics.filter((m) => m.name === name);\n }\n /**\n * Clear all recorded metrics.\n */\n clear() {\n this.metrics.length = 0;\n }\n /**\n * Get the count of recorded metrics.\n */\n count() {\n return this.metrics.length;\n }\n}\n//# sourceMappingURL=metrics-emitter.js.map","/**\n * Utilities for hex, bytes, CSPRNG.\n * @module\n */\n/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n/** Checks if something is Uint8Array. Be careful: nodejs Buffer will return true. */\nexport function isBytes(a) {\n return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\n/** Asserts something is positive integer. */\nexport function anumber(n, title = '') {\n if (!Number.isSafeInteger(n) || n < 0) {\n const prefix = title && `\"${title}\" `;\n throw new Error(`${prefix}expected integer >= 0, got ${n}`);\n }\n}\n/** Asserts something is Uint8Array. */\nexport function abytes(value, length, title = '') {\n const bytes = isBytes(value);\n const len = value?.length;\n const needsLen = length !== undefined;\n if (!bytes || (needsLen && len !== length)) {\n const prefix = title && `\"${title}\" `;\n const ofLen = needsLen ? ` of length ${length}` : '';\n const got = bytes ? `length=${len}` : `type=${typeof value}`;\n throw new Error(prefix + 'expected Uint8Array' + ofLen + ', got ' + got);\n }\n return value;\n}\n/** Asserts something is hash */\nexport function ahash(h) {\n if (typeof h !== 'function' || typeof h.create !== 'function')\n throw new Error('Hash must wrapped by utils.createHasher');\n anumber(h.outputLen);\n anumber(h.blockLen);\n}\n/** Asserts a hash instance has not been destroyed / finished */\nexport function aexists(instance, checkFinished = true) {\n if (instance.destroyed)\n throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished)\n throw new Error('Hash#digest() has already been called');\n}\n/** Asserts output is properly-sized byte array */\nexport function aoutput(out, instance) {\n abytes(out, undefined, 'digestInto() output');\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error('\"digestInto() output\" expected to be of length >=' + min);\n }\n}\n/** Cast u8 / u16 / u32 to u8. */\nexport function u8(arr) {\n return new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n/** Cast u8 / u16 / u32 to u32. */\nexport function u32(arr) {\n return new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n}\n/** Zeroize a byte array. Warning: JS provides no guarantees. */\nexport function clean(...arrays) {\n for (let i = 0; i < arrays.length; i++) {\n arrays[i].fill(0);\n }\n}\n/** Create DataView of an array for easy byte-level manipulation. */\nexport function createView(arr) {\n return new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n/** The rotate right (circular right shift) operation for uint32 */\nexport function rotr(word, shift) {\n return (word << (32 - shift)) | (word >>> shift);\n}\n/** The rotate left (circular left shift) operation for uint32 */\nexport function rotl(word, shift) {\n return (word << shift) | ((word >>> (32 - shift)) >>> 0);\n}\n/** Is current platform little-endian? Most are. Big-Endian platform: IBM */\nexport const isLE = /* @__PURE__ */ (() => new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44)();\n/** The byte swap operation for uint32 */\nexport function byteSwap(word) {\n return (((word << 24) & 0xff000000) |\n ((word << 8) & 0xff0000) |\n ((word >>> 8) & 0xff00) |\n ((word >>> 24) & 0xff));\n}\n/** Conditionally byte swap if on a big-endian platform */\nexport const swap8IfBE = isLE\n ? (n) => n\n : (n) => byteSwap(n);\n/** In place byte swap for Uint32Array */\nexport function byteSwap32(arr) {\n for (let i = 0; i < arr.length; i++) {\n arr[i] = byteSwap(arr[i]);\n }\n return arr;\n}\nexport const swap32IfBE = isLE\n ? (u) => u\n : byteSwap32;\n// Built-in hex conversion https://caniuse.com/mdn-javascript_builtins_uint8array_fromhex\nconst hasHexBuiltin = /* @__PURE__ */ (() => \n// @ts-ignore\ntypeof Uint8Array.from([]).toHex === 'function' && typeof Uint8Array.fromHex === 'function')();\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n/**\n * Convert byte array to hex string. Uses built-in function, when available.\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes) {\n abytes(bytes);\n // @ts-ignore\n if (hasHexBuiltin)\n return bytes.toHex();\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, A: 65, F: 70, a: 97, f: 102 };\nfunction asciiToBase16(ch) {\n if (ch >= asciis._0 && ch <= asciis._9)\n return ch - asciis._0; // '2' => 50-48\n if (ch >= asciis.A && ch <= asciis.F)\n return ch - (asciis.A - 10); // 'B' => 66-(65-10)\n if (ch >= asciis.a && ch <= asciis.f)\n return ch - (asciis.a - 10); // 'b' => 98-(97-10)\n return;\n}\n/**\n * Convert hex string to byte array. Uses built-in function, when available.\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n // @ts-ignore\n if (hasHexBuiltin)\n return Uint8Array.fromHex(hex);\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2)\n throw new Error('hex string expected, got unpadded hex of length ' + hl);\n const array = new Uint8Array(al);\n for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n const n1 = asciiToBase16(hex.charCodeAt(hi));\n const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n if (n1 === undefined || n2 === undefined) {\n const char = hex[hi] + hex[hi + 1];\n throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n }\n array[ai] = n1 * 16 + n2; // multiply first octet, e.g. 'a3' => 10*16+3 => 160 + 3 => 163\n }\n return array;\n}\n/**\n * There is no setImmediate in browser and setTimeout is slow.\n * Call of async fn will return Promise, which will be fullfiled only on\n * next scheduler queue processing step and this is exactly what we need.\n */\nexport const nextTick = async () => { };\n/** Returns control to thread each 'tick' ms to avoid blocking. */\nexport async function asyncLoop(iters, tick, cb) {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick)\n continue;\n await nextTick();\n ts += diff;\n }\n}\n/**\n * Converts string to bytes using UTF8 encoding.\n * Built-in doesn't validate input to be string: we do the check.\n * @example utf8ToBytes('abc') // Uint8Array.from([97, 98, 99])\n */\nexport function utf8ToBytes(str) {\n if (typeof str !== 'string')\n throw new Error('string expected');\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n/**\n * Helper for KDFs: consumes uint8array or string.\n * When string is passed, does utf8 decoding, using TextDecoder.\n */\nexport function kdfInputToBytes(data, errorTitle = '') {\n if (typeof data === 'string')\n return utf8ToBytes(data);\n return abytes(data, undefined, errorTitle);\n}\n/** Copies several Uint8Arrays into one. */\nexport function concatBytes(...arrays) {\n let sum = 0;\n for (let i = 0; i < arrays.length; i++) {\n const a = arrays[i];\n abytes(a);\n sum += a.length;\n }\n const res = new Uint8Array(sum);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const a = arrays[i];\n res.set(a, pad);\n pad += a.length;\n }\n return res;\n}\n/** Merges default options and passed options. */\nexport function checkOpts(defaults, opts) {\n if (opts !== undefined && {}.toString.call(opts) !== '[object Object]')\n throw new Error('options must be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged;\n}\n/** Creates function with outputLen, blockLen, create properties from a class constructor. */\nexport function createHasher(hashCons, info = {}) {\n const hashC = (msg, opts) => hashCons(opts).update(msg).digest();\n const tmp = hashCons(undefined);\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n Object.assign(hashC, info);\n return Object.freeze(hashC);\n}\n/** Cryptographically secure PRNG. Uses internal OS-level `crypto.getRandomValues`. */\nexport function randomBytes(bytesLength = 32) {\n const cr = typeof globalThis === 'object' ? globalThis.crypto : null;\n if (typeof cr?.getRandomValues !== 'function')\n throw new Error('crypto.getRandomValues must be defined');\n return cr.getRandomValues(new Uint8Array(bytesLength));\n}\n/** Creates OID opts for NIST hashes, with prefix 06 09 60 86 48 01 65 03 04 02. */\nexport const oidNist = (suffix) => ({\n oid: Uint8Array.from([0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, suffix]),\n});\n//# sourceMappingURL=utils.js.map","/**\n * Internal Merkle-Damgard hash utils.\n * @module\n */\nimport { abytes, aexists, aoutput, clean, createView } from \"./utils.js\";\n/** Choice: a ? b : c */\nexport function Chi(a, b, c) {\n return (a & b) ^ (~a & c);\n}\n/** Majority function, true if any two inputs is true. */\nexport function Maj(a, b, c) {\n return (a & b) ^ (a & c) ^ (b & c);\n}\n/**\n * Merkle-Damgard hash construction base class.\n * Could be used to create MD5, RIPEMD, SHA1, SHA2.\n */\nexport class HashMD {\n blockLen;\n outputLen;\n padOffset;\n isLE;\n // For partial updates less than block size\n buffer;\n view;\n finished = false;\n length = 0;\n pos = 0;\n destroyed = false;\n constructor(blockLen, outputLen, padOffset, isLE) {\n this.blockLen = blockLen;\n this.outputLen = outputLen;\n this.padOffset = padOffset;\n this.isLE = isLE;\n this.buffer = new Uint8Array(blockLen);\n this.view = createView(this.buffer);\n }\n update(data) {\n aexists(this);\n abytes(data);\n const { view, buffer, blockLen } = this;\n const len = data.length;\n for (let pos = 0; pos < len;) {\n const take = Math.min(blockLen - this.pos, len - pos);\n // Fast path: we have at least one block in input, cast it to view and process\n if (take === blockLen) {\n const dataView = createView(data);\n for (; blockLen <= len - pos; pos += blockLen)\n this.process(dataView, pos);\n continue;\n }\n buffer.set(data.subarray(pos, pos + take), this.pos);\n this.pos += take;\n pos += take;\n if (this.pos === blockLen) {\n this.process(view, 0);\n this.pos = 0;\n }\n }\n this.length += data.length;\n this.roundClean();\n return this;\n }\n digestInto(out) {\n aexists(this);\n aoutput(out, this);\n this.finished = true;\n // Padding\n // We can avoid allocation of buffer for padding completely if it\n // was previously not allocated here. But it won't change performance.\n const { buffer, view, blockLen, isLE } = this;\n let { pos } = this;\n // append the bit '1' to the message\n buffer[pos++] = 0b10000000;\n clean(this.buffer.subarray(pos));\n // we have less than padOffset left in buffer, so we cannot put length in\n // current block, need process it and pad again\n if (this.padOffset > blockLen - pos) {\n this.process(view, 0);\n pos = 0;\n }\n // Pad until full block byte with zeros\n for (let i = pos; i < blockLen; i++)\n buffer[i] = 0;\n // Note: sha512 requires length to be 128bit integer, but length in JS will overflow before that\n // You need to write around 2 exabytes (u64_max / 8 / (1024**6)) for this to happen.\n // So we just write lowest 64 bits of that value.\n view.setBigUint64(blockLen - 8, BigInt(this.length * 8), isLE);\n this.process(view, 0);\n const oview = createView(out);\n const len = this.outputLen;\n // NOTE: we do division by 4 later, which must be fused in single op with modulo by JIT\n if (len % 4)\n throw new Error('_sha2: outputLen must be aligned to 32bit');\n const outLen = len / 4;\n const state = this.get();\n if (outLen > state.length)\n throw new Error('_sha2: outputLen bigger than state');\n for (let i = 0; i < outLen; i++)\n oview.setUint32(4 * i, state[i], isLE);\n }\n digest() {\n const { buffer, outputLen } = this;\n this.digestInto(buffer);\n const res = buffer.slice(0, outputLen);\n this.destroy();\n return res;\n }\n _cloneInto(to) {\n to ||= new this.constructor();\n to.set(...this.get());\n const { blockLen, buffer, length, finished, destroyed, pos } = this;\n to.destroyed = destroyed;\n to.finished = finished;\n to.length = length;\n to.pos = pos;\n if (length % blockLen)\n to.buffer.set(buffer);\n return to;\n }\n clone() {\n return this._cloneInto();\n }\n}\n/**\n * Initial SHA-2 state: fractional parts of square roots of first 16 primes 2..53.\n * Check out `test/misc/sha2-gen-iv.js` for recomputation guide.\n */\n/** Initial SHA256 state. Bits 0..32 of frac part of sqrt of primes 2..19 */\nexport const SHA256_IV = /* @__PURE__ */ Uint32Array.from([\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19,\n]);\n/** Initial SHA224 state. Bits 32..64 of frac part of sqrt of primes 23..53 */\nexport const SHA224_IV = /* @__PURE__ */ Uint32Array.from([\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939, 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4,\n]);\n/** Initial SHA384 state. Bits 0..64 of frac part of sqrt of primes 23..53 */\nexport const SHA384_IV = /* @__PURE__ */ Uint32Array.from([\n 0xcbbb9d5d, 0xc1059ed8, 0x629a292a, 0x367cd507, 0x9159015a, 0x3070dd17, 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31, 0x8eb44a87, 0x68581511, 0xdb0c2e0d, 0x64f98fa7, 0x47b5481d, 0xbefa4fa4,\n]);\n/** Initial SHA512 state. Bits 0..64 of frac part of sqrt of primes 2..19 */\nexport const SHA512_IV = /* @__PURE__ */ Uint32Array.from([\n 0x6a09e667, 0xf3bcc908, 0xbb67ae85, 0x84caa73b, 0x3c6ef372, 0xfe94f82b, 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1, 0x9b05688c, 0x2b3e6c1f, 0x1f83d9ab, 0xfb41bd6b, 0x5be0cd19, 0x137e2179,\n]);\n//# sourceMappingURL=_md.js.map","/**\n * SHA2 hash function. A.k.a. sha256, sha384, sha512, sha512_224, sha512_256.\n * SHA256 is the fastest hash implementable in JS, even faster than Blake3.\n * Check out [RFC 4634](https://www.rfc-editor.org/rfc/rfc4634) and\n * [FIPS 180-4](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf).\n * @module\n */\nimport { Chi, HashMD, Maj, SHA224_IV, SHA256_IV, SHA384_IV, SHA512_IV } from \"./_md.js\";\nimport * as u64 from \"./_u64.js\";\nimport { clean, createHasher, oidNist, rotr } from \"./utils.js\";\n/**\n * Round constants:\n * First 32 bits of fractional parts of the cube roots of the first 64 primes 2..311)\n */\n// prettier-ignore\nconst SHA256_K = /* @__PURE__ */ Uint32Array.from([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\n/** Reusable temporary buffer. \"W\" comes straight from spec. */\nconst SHA256_W = /* @__PURE__ */ new Uint32Array(64);\n/** Internal 32-byte base SHA2 hash class. */\nclass SHA2_32B extends HashMD {\n constructor(outputLen) {\n super(64, outputLen, 8, false);\n }\n get() {\n const { A, B, C, D, E, F, G, H } = this;\n return [A, B, C, D, E, F, G, H];\n }\n // prettier-ignore\n set(A, B, C, D, E, F, G, H) {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n this.E = E | 0;\n this.F = F | 0;\n this.G = G | 0;\n this.H = H | 0;\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 48 words w[16..63] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4)\n SHA256_W[i] = view.getUint32(offset, false);\n for (let i = 16; i < 64; i++) {\n const W15 = SHA256_W[i - 15];\n const W2 = SHA256_W[i - 2];\n const s0 = rotr(W15, 7) ^ rotr(W15, 18) ^ (W15 >>> 3);\n const s1 = rotr(W2, 17) ^ rotr(W2, 19) ^ (W2 >>> 10);\n SHA256_W[i] = (s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16]) | 0;\n }\n // Compression function main loop, 64 rounds\n let { A, B, C, D, E, F, G, H } = this;\n for (let i = 0; i < 64; i++) {\n const sigma1 = rotr(E, 6) ^ rotr(E, 11) ^ rotr(E, 25);\n const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const sigma0 = rotr(A, 2) ^ rotr(A, 13) ^ rotr(A, 22);\n const T2 = (sigma0 + Maj(A, B, C)) | 0;\n H = G;\n G = F;\n F = E;\n E = (D + T1) | 0;\n D = C;\n C = B;\n B = A;\n A = (T1 + T2) | 0;\n }\n // Add the compressed chunk to the current hash value\n A = (A + this.A) | 0;\n B = (B + this.B) | 0;\n C = (C + this.C) | 0;\n D = (D + this.D) | 0;\n E = (E + this.E) | 0;\n F = (F + this.F) | 0;\n G = (G + this.G) | 0;\n H = (H + this.H) | 0;\n this.set(A, B, C, D, E, F, G, H);\n }\n roundClean() {\n clean(SHA256_W);\n }\n destroy() {\n this.set(0, 0, 0, 0, 0, 0, 0, 0);\n clean(this.buffer);\n }\n}\n/** Internal SHA2-256 hash class. */\nexport class _SHA256 extends SHA2_32B {\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n A = SHA256_IV[0] | 0;\n B = SHA256_IV[1] | 0;\n C = SHA256_IV[2] | 0;\n D = SHA256_IV[3] | 0;\n E = SHA256_IV[4] | 0;\n F = SHA256_IV[5] | 0;\n G = SHA256_IV[6] | 0;\n H = SHA256_IV[7] | 0;\n constructor() {\n super(32);\n }\n}\n/** Internal SHA2-224 hash class. */\nexport class _SHA224 extends SHA2_32B {\n A = SHA224_IV[0] | 0;\n B = SHA224_IV[1] | 0;\n C = SHA224_IV[2] | 0;\n D = SHA224_IV[3] | 0;\n E = SHA224_IV[4] | 0;\n F = SHA224_IV[5] | 0;\n G = SHA224_IV[6] | 0;\n H = SHA224_IV[7] | 0;\n constructor() {\n super(28);\n }\n}\n// SHA2-512 is slower than sha256 in js because u64 operations are slow.\n// Round contants\n// First 32 bits of the fractional parts of the cube roots of the first 80 primes 2..409\n// prettier-ignore\nconst K512 = /* @__PURE__ */ (() => u64.split([\n '0x428a2f98d728ae22', '0x7137449123ef65cd', '0xb5c0fbcfec4d3b2f', '0xe9b5dba58189dbbc',\n '0x3956c25bf348b538', '0x59f111f1b605d019', '0x923f82a4af194f9b', '0xab1c5ed5da6d8118',\n '0xd807aa98a3030242', '0x12835b0145706fbe', '0x243185be4ee4b28c', '0x550c7dc3d5ffb4e2',\n '0x72be5d74f27b896f', '0x80deb1fe3b1696b1', '0x9bdc06a725c71235', '0xc19bf174cf692694',\n '0xe49b69c19ef14ad2', '0xefbe4786384f25e3', '0x0fc19dc68b8cd5b5', '0x240ca1cc77ac9c65',\n '0x2de92c6f592b0275', '0x4a7484aa6ea6e483', '0x5cb0a9dcbd41fbd4', '0x76f988da831153b5',\n '0x983e5152ee66dfab', '0xa831c66d2db43210', '0xb00327c898fb213f', '0xbf597fc7beef0ee4',\n '0xc6e00bf33da88fc2', '0xd5a79147930aa725', '0x06ca6351e003826f', '0x142929670a0e6e70',\n '0x27b70a8546d22ffc', '0x2e1b21385c26c926', '0x4d2c6dfc5ac42aed', '0x53380d139d95b3df',\n '0x650a73548baf63de', '0x766a0abb3c77b2a8', '0x81c2c92e47edaee6', '0x92722c851482353b',\n '0xa2bfe8a14cf10364', '0xa81a664bbc423001', '0xc24b8b70d0f89791', '0xc76c51a30654be30',\n '0xd192e819d6ef5218', '0xd69906245565a910', '0xf40e35855771202a', '0x106aa07032bbd1b8',\n '0x19a4c116b8d2d0c8', '0x1e376c085141ab53', '0x2748774cdf8eeb99', '0x34b0bcb5e19b48a8',\n '0x391c0cb3c5c95a63', '0x4ed8aa4ae3418acb', '0x5b9cca4f7763e373', '0x682e6ff3d6b2b8a3',\n '0x748f82ee5defb2fc', '0x78a5636f43172f60', '0x84c87814a1f0ab72', '0x8cc702081a6439ec',\n '0x90befffa23631e28', '0xa4506cebde82bde9', '0xbef9a3f7b2c67915', '0xc67178f2e372532b',\n '0xca273eceea26619c', '0xd186b8c721c0c207', '0xeada7dd6cde0eb1e', '0xf57d4f7fee6ed178',\n '0x06f067aa72176fba', '0x0a637dc5a2c898a6', '0x113f9804bef90dae', '0x1b710b35131c471b',\n '0x28db77f523047d84', '0x32caab7b40c72493', '0x3c9ebe0a15c9bebc', '0x431d67c49c100d4c',\n '0x4cc5d4becb3e42b6', '0x597f299cfc657e2a', '0x5fcb6fab3ad6faec', '0x6c44198c4a475817'\n].map(n => BigInt(n))))();\nconst SHA512_Kh = /* @__PURE__ */ (() => K512[0])();\nconst SHA512_Kl = /* @__PURE__ */ (() => K512[1])();\n// Reusable temporary buffers\nconst SHA512_W_H = /* @__PURE__ */ new Uint32Array(80);\nconst SHA512_W_L = /* @__PURE__ */ new Uint32Array(80);\n/** Internal 64-byte base SHA2 hash class. */\nclass SHA2_64B extends HashMD {\n constructor(outputLen) {\n super(128, outputLen, 16, false);\n }\n // prettier-ignore\n get() {\n const { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n return [Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl];\n }\n // prettier-ignore\n set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl) {\n this.Ah = Ah | 0;\n this.Al = Al | 0;\n this.Bh = Bh | 0;\n this.Bl = Bl | 0;\n this.Ch = Ch | 0;\n this.Cl = Cl | 0;\n this.Dh = Dh | 0;\n this.Dl = Dl | 0;\n this.Eh = Eh | 0;\n this.El = El | 0;\n this.Fh = Fh | 0;\n this.Fl = Fl | 0;\n this.Gh = Gh | 0;\n this.Gl = Gl | 0;\n this.Hh = Hh | 0;\n this.Hl = Hl | 0;\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 64 words w[16..79] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4) {\n SHA512_W_H[i] = view.getUint32(offset);\n SHA512_W_L[i] = view.getUint32((offset += 4));\n }\n for (let i = 16; i < 80; i++) {\n // s0 := (w[i-15] rightrotate 1) xor (w[i-15] rightrotate 8) xor (w[i-15] rightshift 7)\n const W15h = SHA512_W_H[i - 15] | 0;\n const W15l = SHA512_W_L[i - 15] | 0;\n const s0h = u64.rotrSH(W15h, W15l, 1) ^ u64.rotrSH(W15h, W15l, 8) ^ u64.shrSH(W15h, W15l, 7);\n const s0l = u64.rotrSL(W15h, W15l, 1) ^ u64.rotrSL(W15h, W15l, 8) ^ u64.shrSL(W15h, W15l, 7);\n // s1 := (w[i-2] rightrotate 19) xor (w[i-2] rightrotate 61) xor (w[i-2] rightshift 6)\n const W2h = SHA512_W_H[i - 2] | 0;\n const W2l = SHA512_W_L[i - 2] | 0;\n const s1h = u64.rotrSH(W2h, W2l, 19) ^ u64.rotrBH(W2h, W2l, 61) ^ u64.shrSH(W2h, W2l, 6);\n const s1l = u64.rotrSL(W2h, W2l, 19) ^ u64.rotrBL(W2h, W2l, 61) ^ u64.shrSL(W2h, W2l, 6);\n // SHA256_W[i] = s0 + s1 + SHA256_W[i - 7] + SHA256_W[i - 16];\n const SUMl = u64.add4L(s0l, s1l, SHA512_W_L[i - 7], SHA512_W_L[i - 16]);\n const SUMh = u64.add4H(SUMl, s0h, s1h, SHA512_W_H[i - 7], SHA512_W_H[i - 16]);\n SHA512_W_H[i] = SUMh | 0;\n SHA512_W_L[i] = SUMl | 0;\n }\n let { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n // Compression function main loop, 80 rounds\n for (let i = 0; i < 80; i++) {\n // S1 := (e rightrotate 14) xor (e rightrotate 18) xor (e rightrotate 41)\n const sigma1h = u64.rotrSH(Eh, El, 14) ^ u64.rotrSH(Eh, El, 18) ^ u64.rotrBH(Eh, El, 41);\n const sigma1l = u64.rotrSL(Eh, El, 14) ^ u64.rotrSL(Eh, El, 18) ^ u64.rotrBL(Eh, El, 41);\n //const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const CHIh = (Eh & Fh) ^ (~Eh & Gh);\n const CHIl = (El & Fl) ^ (~El & Gl);\n // T1 = H + sigma1 + Chi(E, F, G) + SHA512_K[i] + SHA512_W[i]\n // prettier-ignore\n const T1ll = u64.add5L(Hl, sigma1l, CHIl, SHA512_Kl[i], SHA512_W_L[i]);\n const T1h = u64.add5H(T1ll, Hh, sigma1h, CHIh, SHA512_Kh[i], SHA512_W_H[i]);\n const T1l = T1ll | 0;\n // S0 := (a rightrotate 28) xor (a rightrotate 34) xor (a rightrotate 39)\n const sigma0h = u64.rotrSH(Ah, Al, 28) ^ u64.rotrBH(Ah, Al, 34) ^ u64.rotrBH(Ah, Al, 39);\n const sigma0l = u64.rotrSL(Ah, Al, 28) ^ u64.rotrBL(Ah, Al, 34) ^ u64.rotrBL(Ah, Al, 39);\n const MAJh = (Ah & Bh) ^ (Ah & Ch) ^ (Bh & Ch);\n const MAJl = (Al & Bl) ^ (Al & Cl) ^ (Bl & Cl);\n Hh = Gh | 0;\n Hl = Gl | 0;\n Gh = Fh | 0;\n Gl = Fl | 0;\n Fh = Eh | 0;\n Fl = El | 0;\n ({ h: Eh, l: El } = u64.add(Dh | 0, Dl | 0, T1h | 0, T1l | 0));\n Dh = Ch | 0;\n Dl = Cl | 0;\n Ch = Bh | 0;\n Cl = Bl | 0;\n Bh = Ah | 0;\n Bl = Al | 0;\n const All = u64.add3L(T1l, sigma0l, MAJl);\n Ah = u64.add3H(All, T1h, sigma0h, MAJh);\n Al = All | 0;\n }\n // Add the compressed chunk to the current hash value\n ({ h: Ah, l: Al } = u64.add(this.Ah | 0, this.Al | 0, Ah | 0, Al | 0));\n ({ h: Bh, l: Bl } = u64.add(this.Bh | 0, this.Bl | 0, Bh | 0, Bl | 0));\n ({ h: Ch, l: Cl } = u64.add(this.Ch | 0, this.Cl | 0, Ch | 0, Cl | 0));\n ({ h: Dh, l: Dl } = u64.add(this.Dh | 0, this.Dl | 0, Dh | 0, Dl | 0));\n ({ h: Eh, l: El } = u64.add(this.Eh | 0, this.El | 0, Eh | 0, El | 0));\n ({ h: Fh, l: Fl } = u64.add(this.Fh | 0, this.Fl | 0, Fh | 0, Fl | 0));\n ({ h: Gh, l: Gl } = u64.add(this.Gh | 0, this.Gl | 0, Gh | 0, Gl | 0));\n ({ h: Hh, l: Hl } = u64.add(this.Hh | 0, this.Hl | 0, Hh | 0, Hl | 0));\n this.set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl);\n }\n roundClean() {\n clean(SHA512_W_H, SHA512_W_L);\n }\n destroy() {\n clean(this.buffer);\n this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n }\n}\n/** Internal SHA2-512 hash class. */\nexport class _SHA512 extends SHA2_64B {\n Ah = SHA512_IV[0] | 0;\n Al = SHA512_IV[1] | 0;\n Bh = SHA512_IV[2] | 0;\n Bl = SHA512_IV[3] | 0;\n Ch = SHA512_IV[4] | 0;\n Cl = SHA512_IV[5] | 0;\n Dh = SHA512_IV[6] | 0;\n Dl = SHA512_IV[7] | 0;\n Eh = SHA512_IV[8] | 0;\n El = SHA512_IV[9] | 0;\n Fh = SHA512_IV[10] | 0;\n Fl = SHA512_IV[11] | 0;\n Gh = SHA512_IV[12] | 0;\n Gl = SHA512_IV[13] | 0;\n Hh = SHA512_IV[14] | 0;\n Hl = SHA512_IV[15] | 0;\n constructor() {\n super(64);\n }\n}\n/** Internal SHA2-384 hash class. */\nexport class _SHA384 extends SHA2_64B {\n Ah = SHA384_IV[0] | 0;\n Al = SHA384_IV[1] | 0;\n Bh = SHA384_IV[2] | 0;\n Bl = SHA384_IV[3] | 0;\n Ch = SHA384_IV[4] | 0;\n Cl = SHA384_IV[5] | 0;\n Dh = SHA384_IV[6] | 0;\n Dl = SHA384_IV[7] | 0;\n Eh = SHA384_IV[8] | 0;\n El = SHA384_IV[9] | 0;\n Fh = SHA384_IV[10] | 0;\n Fl = SHA384_IV[11] | 0;\n Gh = SHA384_IV[12] | 0;\n Gl = SHA384_IV[13] | 0;\n Hh = SHA384_IV[14] | 0;\n Hl = SHA384_IV[15] | 0;\n constructor() {\n super(48);\n }\n}\n/**\n * Truncated SHA512/256 and SHA512/224.\n * SHA512_IV is XORed with 0xa5a5a5a5a5a5a5a5, then used as \"intermediary\" IV of SHA512/t.\n * Then t hashes string to produce result IV.\n * See `test/misc/sha2-gen-iv.js`.\n */\n/** SHA512/224 IV */\nconst T224_IV = /* @__PURE__ */ Uint32Array.from([\n 0x8c3d37c8, 0x19544da2, 0x73e19966, 0x89dcd4d6, 0x1dfab7ae, 0x32ff9c82, 0x679dd514, 0x582f9fcf,\n 0x0f6d2b69, 0x7bd44da8, 0x77e36f73, 0x04c48942, 0x3f9d85a8, 0x6a1d36c8, 0x1112e6ad, 0x91d692a1,\n]);\n/** SHA512/256 IV */\nconst T256_IV = /* @__PURE__ */ Uint32Array.from([\n 0x22312194, 0xfc2bf72c, 0x9f555fa3, 0xc84c64c2, 0x2393b86b, 0x6f53b151, 0x96387719, 0x5940eabd,\n 0x96283ee2, 0xa88effe3, 0xbe5e1e25, 0x53863992, 0x2b0199fc, 0x2c85b8aa, 0x0eb72ddc, 0x81c52ca2,\n]);\n/** Internal SHA2-512/224 hash class. */\nexport class _SHA512_224 extends SHA2_64B {\n Ah = T224_IV[0] | 0;\n Al = T224_IV[1] | 0;\n Bh = T224_IV[2] | 0;\n Bl = T224_IV[3] | 0;\n Ch = T224_IV[4] | 0;\n Cl = T224_IV[5] | 0;\n Dh = T224_IV[6] | 0;\n Dl = T224_IV[7] | 0;\n Eh = T224_IV[8] | 0;\n El = T224_IV[9] | 0;\n Fh = T224_IV[10] | 0;\n Fl = T224_IV[11] | 0;\n Gh = T224_IV[12] | 0;\n Gl = T224_IV[13] | 0;\n Hh = T224_IV[14] | 0;\n Hl = T224_IV[15] | 0;\n constructor() {\n super(28);\n }\n}\n/** Internal SHA2-512/256 hash class. */\nexport class _SHA512_256 extends SHA2_64B {\n Ah = T256_IV[0] | 0;\n Al = T256_IV[1] | 0;\n Bh = T256_IV[2] | 0;\n Bl = T256_IV[3] | 0;\n Ch = T256_IV[4] | 0;\n Cl = T256_IV[5] | 0;\n Dh = T256_IV[6] | 0;\n Dl = T256_IV[7] | 0;\n Eh = T256_IV[8] | 0;\n El = T256_IV[9] | 0;\n Fh = T256_IV[10] | 0;\n Fl = T256_IV[11] | 0;\n Gh = T256_IV[12] | 0;\n Gl = T256_IV[13] | 0;\n Hh = T256_IV[14] | 0;\n Hl = T256_IV[15] | 0;\n constructor() {\n super(32);\n }\n}\n/**\n * SHA2-256 hash function from RFC 4634. In JS it's the fastest: even faster than Blake3. Some info:\n *\n * - Trying 2^128 hashes would get 50% chance of collision, using birthday attack.\n * - BTC network is doing 2^70 hashes/sec (2^95 hashes/year) as per 2025.\n * - Each sha256 hash is executing 2^18 bit operations.\n * - Good 2024 ASICs can do 200Th/sec with 3500 watts of power, corresponding to 2^36 hashes/joule.\n */\nexport const sha256 = /* @__PURE__ */ createHasher(() => new _SHA256(), \n/* @__PURE__ */ oidNist(0x01));\n/** SHA2-224 hash function from RFC 4634 */\nexport const sha224 = /* @__PURE__ */ createHasher(() => new _SHA224(), \n/* @__PURE__ */ oidNist(0x04));\n/** SHA2-512 hash function from RFC 4634. */\nexport const sha512 = /* @__PURE__ */ createHasher(() => new _SHA512(), \n/* @__PURE__ */ oidNist(0x03));\n/** SHA2-384 hash function from RFC 4634. */\nexport const sha384 = /* @__PURE__ */ createHasher(() => new _SHA384(), \n/* @__PURE__ */ oidNist(0x02));\n/**\n * SHA2-512/256 \"truncated\" hash function, with improved resistance to length extension attacks.\n * See the paper on [truncated SHA512](https://eprint.iacr.org/2010/548.pdf).\n */\nexport const sha512_256 = /* @__PURE__ */ createHasher(() => new _SHA512_256(), \n/* @__PURE__ */ oidNist(0x06));\n/**\n * SHA2-512/224 \"truncated\" hash function, with improved resistance to length extension attacks.\n * See the paper on [truncated SHA512](https://eprint.iacr.org/2010/548.pdf).\n */\nexport const sha512_224 = /* @__PURE__ */ createHasher(() => new _SHA512_224(), \n/* @__PURE__ */ oidNist(0x05));\n//# sourceMappingURL=sha2.js.map","/**\n * General utility functions for JSON handling, string manipulation,\n * path normalization, base64 encoding, hashing, and more.\n */\nimport { sha256 } from '@noble/hashes/sha2.js';\nimport { color, AnsiColor, formatTimestamp } from './formatter.js';\nexport const ENV_VAR_SHOW_ENVELOPES = 'FAME_SHOW_ENVELOPES';\nexport function isEnvelopeLoggingEnabled() {\n return (typeof process !== 'undefined' &&\n process.env?.[ENV_VAR_SHOW_ENVELOPES] === 'true');\n}\nexport const showEnvelopes = isEnvelopeLoggingEnabled();\nexport function formatTimestampForConsole() {\n return color(formatTimestamp(), AnsiColor.GRAY);\n}\nexport function prettyModel(value) {\n try {\n return jsonDumps(value);\n }\n catch (error) {\n return String(error);\n }\n}\n/**\n * Default JSON encoder for non-standard types.\n */\nexport function defaultJsonEncoder(obj) {\n if (obj instanceof Date) {\n return obj.toISOString().replace(/\\.\\d{3}Z$/, 'Z'); // Remove milliseconds for Python compatibility\n }\n throw new TypeError(`Object of type ${typeof obj} is not JSON serializable`);\n}\n/**\n * Capitalize the first letter of a string.\n */\nexport function capitalizeFirstLetter(text) {\n if (!text) {\n return text;\n }\n return text[0].toUpperCase() + text.slice(1);\n}\n/**\n * Convert a value to pretty-printed JSON string.\n */\nexport function jsonDumps(value) {\n const seen = new WeakSet();\n const replacer = (_key, val) => {\n try {\n return defaultJsonEncoder(val);\n }\n catch {\n // ignore – fall through to default handling below\n }\n if (typeof val === 'bigint') {\n return val.toString();\n }\n if (typeof val === 'object' && val !== null) {\n if (seen.has(val)) {\n return '[Circular]';\n }\n seen.add(val);\n }\n return val;\n };\n return JSON.stringify(value, replacer, 2);\n}\n/**\n * Extract an ID from an object (either from object property or 'id' key).\n */\nexport function extractId(obj) {\n if (typeof obj === 'object' && obj !== null) {\n if ('id' in obj) {\n return obj.id;\n }\n }\n return null;\n}\n/**\n * Maybe await a value that could be a Promise or regular value.\n */\nexport async function maybeAwait(valueOrPromise) {\n if (valueOrPromise instanceof Promise) {\n return await valueOrPromise;\n }\n return valueOrPromise;\n}\n/**\n * Convert an object to JSON bytes.\n */\nexport function objectToBytes(obj) {\n const jsonString = JSON.stringify(obj);\n return new TextEncoder().encode(jsonString);\n}\n/**\n * Decode Fame data payload based on codec.\n */\nexport function decodeFameDataPayload(frame) {\n if (frame.codec === 'b64') {\n // Decode base64 to bytes\n const base64 = frame.payload;\n const binaryString = atob(base64);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return bytes;\n }\n return frame.payload;\n}\n/**\n * Normalize a path by removing leading slashes.\n */\nexport function normalizePath(path) {\n return path.replace(/^\\/+/, '');\n}\n/**\n * Cache for compiled path patterns.\n */\nconst pathPatternCache = new Map();\n/**\n * Translate a shell-style wildcard pattern into a compiled regex\n * and cache the result for speed.\n */\nexport function compiledPathPattern(pattern) {\n let compiled = pathPatternCache.get(pattern);\n if (!compiled) {\n // Convert shell wildcard to regex\n const regexPattern = pattern\n .replace(/[.+^${}()|[\\]\\\\]/g, '\\\\$&') // Escape regex special chars\n .replace(/\\*/g, '.*') // * becomes .*\n .replace(/\\?/g, '.'); // ? becomes .\n compiled = new RegExp(`^${regexPattern}$`);\n // Limit cache size to prevent memory leaks\n if (pathPatternCache.size > 256) {\n pathPatternCache.clear();\n }\n pathPatternCache.set(pattern, compiled);\n }\n return compiled;\n}\n// Base62 characters: 0–9, a–z, A–Z\nconst BASE62_CHARS = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\nconst BASE62_BASE = BigInt(BASE62_CHARS.length);\n/**\n * Convert a number to base62 string.\n */\nfunction toBase62(num) {\n if (num === 0n) {\n return BASE62_CHARS[0];\n }\n const result = [];\n let value = num;\n while (value > 0n) {\n const remainder = value % BASE62_BASE;\n result.push(BASE62_CHARS[Number(remainder)]);\n value = value / BASE62_BASE;\n }\n return result.reverse().join('');\n}\n/**\n * Create a secure digest of a string.\n * @param s Input string\n * @param bits Number of bits to include in digest (default: 128)\n * @returns Base62-encoded digest\n */\nexport function secureDigest(s, bits = 128) {\n try {\n const digest = sha256(new TextEncoder().encode(s));\n const desiredBytes = Math.min(digest.length, Math.max(1, Math.ceil(bits / 8)));\n let value = 0n;\n for (let i = 0; i < desiredBytes; i += 1) {\n value = (value << 8n) | BigInt(digest[i]);\n }\n return toBase62(value);\n }\n catch {\n // Fallback for environments without TextEncoder support\n let hash = 0;\n for (let i = 0; i < s.length; i += 1) {\n const char = s.charCodeAt(i);\n hash = (hash << 5) - hash + char;\n hash = hash & hash; // Convert to 32bit integer\n }\n return toBase62(BigInt(Math.abs(hash)));\n }\n}\n/**\n * URL-safe base64 encode (without padding).\n */\nexport function urlsafeBase64Encode(data) {\n // Convert Uint8Array to string for btoa\n let binaryString = '';\n for (let i = 0; i < data.length; i++) {\n binaryString += String.fromCharCode(data[i]);\n }\n return btoa(binaryString)\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_')\n .replace(/=+$/, '');\n}\nexport function urlsafeBase64Decode(value) {\n const normalized = value.replace(/-/g, '+').replace(/_/g, '/');\n const padded = normalized.padEnd(Math.ceil(normalized.length / 4) * 4, '=');\n if (typeof atob === 'function') {\n const binary = atob(padded);\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n return bytes;\n }\n if (typeof Buffer !== 'undefined') {\n return new Uint8Array(Buffer.from(padded, 'base64'));\n }\n throw new Error('Base64 decoding is not available in this environment');\n}\n/**\n * Convert CamelCase string to snake_case.\n */\nexport function camelToSnakeCase(name) {\n // Insert underscore before uppercase letters that follow lowercase letters or digits\n let result = name.replace(/([a-z0-9])([A-Z])/g, '$1_$2');\n // Insert underscore before uppercase letters that are followed by lowercase letters\n result = result.replace(/([A-Z])([A-Z][a-z])/g, '$1_$2');\n return result.toLowerCase();\n}\n/**\n * Create a shallow copy of an object's top-level properties and add\n * snake_case aliases for any camelCase keys while also adding camelCase\n * aliases for snake_case keys when missing. Existing keys always win.\n */\nexport function withLegacySnakeCaseKeys(descriptor) {\n const augmented = { ...descriptor };\n for (const [key, value] of Object.entries(descriptor)) {\n const snakeCaseKey = key.includes('_') ? key : camelToSnakeCase(key);\n const camelCaseKey = key.includes('_') ? snakeToCamelCase(key) : key;\n if (snakeCaseKey !== key && !(snakeCaseKey in augmented)) {\n augmented[snakeCaseKey] = value;\n }\n if (camelCaseKey !== key && !(camelCaseKey in augmented)) {\n augmented[camelCaseKey] = value;\n }\n }\n return augmented;\n}\n/**\n * Convert snake_case string to CamelCase.\n */\nexport function snakeToCamelCase(name) {\n return name.replace(/_([a-z])/g, (_, letter) => letter.toUpperCase());\n}\n/**\n * Check if a value is a plain object (not an array, Date, etc.).\n */\nexport function isPlainObject(value) {\n return (typeof value === 'object' &&\n value !== null &&\n value.constructor === Object &&\n Object.prototype.toString.call(value) === '[object Object]');\n}\n/**\n * Deep merge two objects.\n */\nexport function deepMerge(target, source) {\n const result = { ...target };\n for (const key in source) {\n if (source.hasOwnProperty(key)) {\n const sourceValue = source[key];\n const targetValue = result[key];\n if (isPlainObject(sourceValue) && isPlainObject(targetValue)) {\n result[key] = deepMerge(targetValue, sourceValue);\n }\n else {\n result[key] = sourceValue;\n }\n }\n }\n return result;\n}\n/**\n * Create a debounced version of a function.\n */\nexport function debounce(func, wait) {\n let timeout;\n return function (...args) {\n const later = () => {\n timeout = undefined;\n func.apply(this, args);\n };\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n };\n}\n/**\n * Create a throttled version of a function.\n */\nexport function throttle(func, wait) {\n let timeout;\n let previous = 0;\n return function (...args) {\n const now = Date.now();\n const remaining = wait - (now - previous);\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = undefined;\n }\n previous = now;\n func.apply(this, args);\n }\n else if (!timeout) {\n timeout = setTimeout(() => {\n previous = Date.now();\n timeout = undefined;\n func.apply(this, args);\n }, remaining);\n }\n };\n}\n/**\n * Sleep for a specified number of milliseconds.\n */\nexport function sleep(ms) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n/**\n * Retry a function with exponential backoff.\n */\nexport async function retryWithBackoff(fn, maxRetries = 3, baseDelay = 1000, maxDelay = 10000) {\n let lastError;\n for (let attempt = 0; attempt <= maxRetries; attempt++) {\n try {\n return await fn();\n }\n catch (error) {\n lastError = error instanceof Error ? error : new Error(String(error));\n if (attempt === maxRetries) {\n throw lastError;\n }\n const delay = Math.min(baseDelay * Math.pow(2, attempt), maxDelay);\n await sleep(delay);\n }\n }\n throw lastError;\n}\n//# sourceMappingURL=util.js.map","import { parseAddressComponents } from '@naylence/core';\nconst POOL_WILDCARD_PREFIX = '*.';\nfunction readEnvValue(aliases) {\n const processRef = globalThis?.process;\n const env = processRef?.env;\n if (!env) {\n return undefined;\n }\n for (const alias of aliases) {\n const value = env[alias];\n if (typeof value === 'string') {\n return value;\n }\n }\n return undefined;\n}\nconst DNS_HOSTNAME_PATTERN = /^(?=.{1,253}$)(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\\.?)+$/;\nconst DNS_LABEL_PATTERN = /^[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$/;\nexport function getFameRoot() {\n return (readEnvValue(['FAME_ROOT', 'fame_root', 'fameRoot', 'FameRoot']) ??\n 'fame.fabric');\n}\nexport function isPoolLogical(logical) {\n return Boolean(logical?.startsWith(POOL_WILDCARD_PREFIX));\n}\nexport function matchesPoolLogical(logical, poolPattern) {\n if (!isPoolLogical(poolPattern)) {\n return false;\n }\n const suffix = poolPattern.slice(POOL_WILDCARD_PREFIX.length);\n if (!suffix) {\n return false;\n }\n return ((logical.endsWith(`.${suffix}`) && logical !== suffix) || logical === suffix);\n}\nexport function validateLogicalSegment(segment) {\n if (!segment) {\n return [false, 'Empty path segment'];\n }\n if (segment.length > 63) {\n return [false, `Path segment '${segment}' exceeds 63 characters`];\n }\n if (!/^[a-zA-Z0-9-]+$/.test(segment)) {\n return [\n false,\n `Path segment '${segment}' must contain only alphanumeric characters and hyphens`,\n ];\n }\n if (segment.startsWith('-') || segment.endsWith('-')) {\n return [false, `Path segment '${segment}' cannot start or end with hyphen`];\n }\n if (segment.includes('--')) {\n return [\n false,\n `Path segment '${segment}' cannot contain consecutive hyphens`,\n ];\n }\n return [true, null];\n}\nexport function validateLogical(logical) {\n if (!logical) {\n return [false, 'Empty logical'];\n }\n if (!logical.startsWith('/')) {\n return [false, `Logical '${logical}' must start with '/'`];\n }\n const segments = logical.split('/').filter(Boolean);\n if (segments.length === 0) {\n return logical === '/'\n ? [true, null]\n : [false, 'Logical must contain at least one non-empty segment'];\n }\n for (const segment of segments) {\n const [valid, error] = validateLogicalSegment(segment);\n if (!valid) {\n return [false, `Invalid logical '${logical}': ${error}`];\n }\n }\n const hostname = logicalToHostname(logical);\n if (hostname.length > 253) {\n return [\n false,\n `Logical '${logical}' converts to hostname exceeding 253 characters`,\n ];\n }\n return [true, null];\n}\nexport function logicalToHostname(logical) {\n if (!logical) {\n throw new Error('Empty logical');\n }\n if (!logical.startsWith('/')) {\n throw new Error(`Logical '${logical}' cannot start without '/'`);\n }\n const segments = logical.split('/').filter(Boolean);\n if (segments.length === 0) {\n if (logical === '/') {\n return getFameRoot();\n }\n throw new Error('Logical must contain at least one non-empty segment');\n }\n return segments.reverse().join('.');\n}\nexport function hostnameToLogical(hostname) {\n if (!hostname) {\n throw new Error('Empty hostname');\n }\n if (hostname === getFameRoot()) {\n return '/';\n }\n const segments = hostname.split('.');\n if (segments.some((segment) => !segment)) {\n throw new Error(`Invalid hostname '${hostname}' contains empty segments`);\n }\n return `/${segments.reverse().join('/')}`;\n}\nexport function logicalsToHostnames(logicals) {\n return logicals.map(logicalToHostname);\n}\nexport function hostnamesToLogicals(hostnames) {\n return hostnames.map(hostnameToLogical);\n}\nexport function validateHostLogical(hostLogical) {\n if (!hostLogical) {\n return [false, 'Empty host logical'];\n }\n if (hostLogical.includes('*')) {\n if (!hostLogical.startsWith('*.')) {\n return [\n false,\n `Host logical '${hostLogical}' contains wildcard not in leftmost position`,\n ];\n }\n const baseDomain = hostLogical.slice(2);\n if (!baseDomain) {\n return [\n false,\n `Host logical '${hostLogical}' has wildcard but no base domain`,\n ];\n }\n if (!DNS_HOSTNAME_PATTERN.test(baseDomain)) {\n return [\n false,\n `Host logical '${hostLogical}' base domain '${baseDomain}' is not a valid DNS hostname`,\n ];\n }\n if (hostLogical.length > 253) {\n return [false, `Host logical '${hostLogical}' exceeds 253 characters`];\n }\n const labels = baseDomain.split('.');\n for (const label of labels) {\n if (!DNS_LABEL_PATTERN.test(label)) {\n return [\n false,\n `Host logical '${hostLogical}' contains invalid label '${label}' in base domain`,\n ];\n }\n }\n return [true, null];\n }\n if (!DNS_HOSTNAME_PATTERN.test(hostLogical)) {\n return [false, `Host logical '${hostLogical}' is not a valid DNS hostname`];\n }\n if (hostLogical.length > 253) {\n return [false, `Host logical '${hostLogical}' exceeds 253 characters`];\n }\n const labels = hostLogical.split('.');\n for (const label of labels) {\n if (!DNS_LABEL_PATTERN.test(label)) {\n return [\n false,\n `Host logical '${hostLogical}' contains invalid label '${label}'`,\n ];\n }\n }\n return [true, null];\n}\nexport function validateHostLogicals(hostLogicals) {\n if (!hostLogicals || hostLogicals.length === 0) {\n return [true, null];\n }\n for (const hostLogical of hostLogicals) {\n const [valid, error] = validateHostLogical(hostLogical);\n if (!valid) {\n return [false, error];\n }\n }\n return [true, null];\n}\nexport function createLogicalUri(logical, useHostnameNotation = false) {\n if (useHostnameNotation) {\n const hostname = logicalToHostname(logical);\n return `naylence://${hostname}/`;\n }\n return `naylence://${logical}`;\n}\nexport function createHostLogicalUri(hostLogical) {\n return `naylence://${hostLogical}/`;\n}\nexport function convertWildcardLogicalToDnsConstraint(logicalPattern) {\n return logicalPattern.startsWith('*.')\n ? logicalPattern.slice(1)\n : logicalPattern;\n}\nexport function logicalPatternsToDnsConstraints(logicalPatterns) {\n return logicalPatterns.map(convertWildcardLogicalToDnsConstraint);\n}\nexport function matchesPoolAddress(address, poolAddress) {\n try {\n const [addrParticipant, addrHost, addrPath] = parseAddressComponents(address);\n const [poolParticipant, poolHost, poolPath] = parseAddressComponents(poolAddress);\n if (addrParticipant !== poolParticipant) {\n return false;\n }\n if (addrHost && poolHost) {\n if (!matchesPoolLogical(addrHost, poolHost)) {\n return false;\n }\n if (addrPath && poolPath) {\n return addrPath === poolPath;\n }\n return addrPath === poolPath;\n }\n if (!addrHost && !poolHost && addrPath && poolPath) {\n return addrPath === poolPath;\n }\n return false;\n }\n catch (error) {\n if (readEnvValue(['NODE_ENV', 'node_env', 'nodeEnv', 'NodeEnv']) !==\n 'production') {\n // eslint-disable-next-line no-console\n console.debug('matchesPoolAddress failed', error);\n }\n return false;\n }\n}\nexport function extractPoolBase(poolPattern) {\n if (!isPoolLogical(poolPattern)) {\n return null;\n }\n return poolPattern.slice(POOL_WILDCARD_PREFIX.length);\n}\nexport function extractPoolAddressBase(poolAddress) {\n try {\n const [participant, host, path] = parseAddressComponents(poolAddress);\n if (host && isPoolLogical(host)) {\n const base = extractPoolBase(host);\n if (!base) {\n return null;\n }\n return path ? `${participant}@${base}${path}` : `${participant}@${base}`;\n }\n return null;\n }\n catch {\n return null;\n }\n}\nexport function isPoolAddress(address) {\n try {\n const [, host] = parseAddressComponents(address);\n return Boolean(host && isPoolLogical(host));\n }\n catch {\n return false;\n }\n}\n//# sourceMappingURL=logicals.js.map","export const DEFAULT_NODE_ATTACH_TTL_SEC = 3600;\nexport const MAX_NODE_ATTACH_TTL_SEC = 86400;\nexport const DEFAULT_KEY_CORRELATION_TTL_SEC = 30;\nexport const DEFAULT_JWKS_CACHE_TTL_SEC = 300;\nexport const DEFAULT_JWT_TOKEN_TTL_SEC = 3600;\nexport const DEFAULT_OAUTH2_TTL_SEC = 3600;\nexport const MAX_OAUTH2_TTL_SEC = 86400;\nexport const DEFAULT_REVERSE_AUTH_TTL_SEC = 86400;\nexport const DEFAULT_ADMISSION_TTL_SEC = 3600;\nexport const DEFAULT_DIRECT_ADMISSION_TTL_SEC = 86400;\nexport const DEFAULT_TRANSPORT_TTL_SEC = 3600;\nexport const DEFAULT_WELCOME_TTL_SEC = 3600;\nexport const DEFAULT_CRYPTO_PROVIDER_TTL_SEC = 3600;\nexport const TTL_NEVER_EXPIRES = 0;\nexport const TTL_IMMEDIATE_EXPIRY = -1;\nexport const TEST_SHORT_TTL_SEC = 2;\nexport const TEST_MEDIUM_TTL_SEC = 10;\nexport const TEST_LONG_TTL_SEC = 600;\n//# sourceMappingURL=ttl-constants.js.map","import { MAX_OAUTH2_TTL_SEC, TTL_NEVER_EXPIRES, } from '../constants/ttl-constants.js';\nexport class TtlValidationError extends Error {\n}\nexport function validateTtlSec(ttlSec, { min, max, allowNeverExpires, context, }) {\n if (ttlSec == null) {\n return ttlSec;\n }\n if (ttlSec === TTL_NEVER_EXPIRES) {\n if (allowNeverExpires) {\n return ttlSec;\n }\n throw new TtlValidationError(`${context} cannot be set to never expire (0)`);\n }\n if (ttlSec < 0) {\n throw new TtlValidationError(`${context} cannot be negative: ${ttlSec}`);\n }\n if (ttlSec < min) {\n throw new TtlValidationError(`${context} is too small: ${ttlSec} seconds (minimum: ${min} seconds)`);\n }\n if (max !== undefined && ttlSec > max) {\n throw new TtlValidationError(`${context} is too large: ${ttlSec} seconds (maximum: ${max} seconds)`);\n }\n return ttlSec;\n}\nexport function validateJwtTokenTtlSec(ttlSec) {\n return validateTtlSec(ttlSec, {\n min: 60,\n max: MAX_OAUTH2_TTL_SEC,\n allowNeverExpires: false,\n context: 'JWT token TTL',\n });\n}\nexport function validateOAuth2TtlSec(ttlSec) {\n return validateTtlSec(ttlSec, {\n min: 60,\n max: MAX_OAUTH2_TTL_SEC,\n allowNeverExpires: false,\n context: 'OAuth2 authorization TTL',\n });\n}\nexport function validateCacheTtlSec(ttlSec) {\n return validateTtlSec(ttlSec, {\n min: 1,\n max: 3600,\n allowNeverExpires: true,\n context: 'Cache TTL',\n });\n}\nexport function validateKeyCorrelationTtlSec(ttlSec) {\n return validateTtlSec(ttlSec, {\n min: 0.1,\n max: 300,\n allowNeverExpires: false,\n context: 'Key correlation TTL',\n });\n}\n//# sourceMappingURL=ttl-validation.js.map","/**\n * flow_controller.ts - credit window management with cooperative back-pressure.\n *\n * This version restores the *original* test-driven semantics while still\n * preventing notifier task spam:\n *\n * * **addCredits**\n * * accepts *any* integer `delta` (positive or negative) and clamps the\n * resulting balance between 0 and `initialWindow`.\n * * When called outside an event-loop (e.g. synchronous unit-tests), the\n * credit balance is updated but waiter notification is skipped instead of\n * raising *RuntimeError*.\n * * **consume**\n * * clamps at zero rather than raising on under-flow, matching historical\n * behaviour.\n * * **_wakeWaiters**\n * * debounces the `notifyAll()` coroutine as before *but* quietly returns\n * when no running loop is active.\n *\n * The race-safety we introduced earlier is preserved - we still use a per-flow\n * condition/promise and ensure at most one notifier coroutine exists for a\n * flow at any time.\n */\nimport { FlowFlags } from '@naylence/core';\n/**\n * Simple condition variable implementation for TypeScript/Node.js\n * Similar to Python's asyncio.Condition\n */\nclass Condition {\n constructor() {\n this.waiters = [];\n }\n /**\n * Wait for a notification\n */\n async wait() {\n return new Promise((resolve, reject) => {\n this.waiters.push({ resolve, reject });\n });\n }\n /**\n * Notify all waiting coroutines\n */\n notifyAll() {\n const waiters = this.waiters.splice(0);\n for (const waiter of waiters) {\n waiter.resolve();\n }\n }\n}\n/**\n * Sliding-window flow/credit accounting for *one* local endpoint.\n *\n * A *flow* is identified by a caller-chosen string `flowId`. Each flow\n * starts with `initialWindow` credits. Sending an envelope *consumes*\n * one credit; the peer replenishes credits via an \"ACK/CreditUpdate\"\n * envelope. When credits reach 0 local senders block in\n * `acquire` until more arrive.\n *\n * The controller is **event-loop safe** - multiple coroutines can call\n * `addCredits`, `consume`, and `acquire` without additional locks - but it is\n * **not** thread-safe.\n */\nexport class FlowController {\n constructor(initialWindow, lowWatermarkRatio = 0.25) {\n // flowId → remaining credit count\n this.credits = new Map();\n // flowId → per-flow Condition (created lazily)\n this.conditions = new Map();\n // flowId → outbound window counter\n this.windowIds = new Map();\n // flows that must emit RESET|SYN on next envelope\n this.resetRequested = new Set();\n // track active notifier tasks to prevent spam\n this.activeNotifiers = new Map();\n if (initialWindow <= 0) {\n throw new Error('initialWindow must be > 0');\n }\n this.initialWindow = initialWindow;\n this.lowWatermark = Math.floor(initialWindow * lowWatermarkRatio);\n }\n // ---------------------------------------------------------------------\n // helpers\n // ---------------------------------------------------------------------\n /**\n * Lazily create bookkeeping structures for *flowId*.\n */\n ensureFlow(flowId) {\n if (!this.credits.has(flowId)) {\n this.credits.set(flowId, this.initialWindow);\n }\n if (!this.conditions.has(flowId)) {\n this.conditions.set(flowId, new Condition());\n }\n }\n /**\n * Wake every coroutine blocked in `acquire` for *flowId*.\n *\n * We debounce - at most **one** notifier coroutine per flow can be alive.\n * If `FlowController` is used in synchronous code with no running loop\n * we silently skip the wake-up because nothing could be awaiting anyway.\n */\n wakeWaiters(flowId) {\n const condition = this.conditions.get(flowId);\n if (!condition) {\n return;\n }\n // Check if there's already an active notifier for this flow\n const existingNotifier = this.activeNotifiers.get(flowId);\n if (existingNotifier) {\n return; // Already scheduled\n }\n // Create a notifier promise\n const notifierPromise = (async () => {\n try {\n // Use setImmediate to defer to next tick (similar to asyncio scheduling)\n await new Promise((resolve) => setImmediate(resolve));\n condition.notifyAll();\n }\n finally {\n // Always clear the reference, even on error\n this.activeNotifiers.delete(flowId);\n }\n })();\n this.activeNotifiers.set(flowId, notifierPromise);\n }\n // ------------------------------------------------------------------\n // public API\n // ------------------------------------------------------------------\n /**\n * Return the current credit balance for *flowId*.\n */\n getCredits(flowId) {\n this.ensureFlow(flowId);\n return this.credits.get(flowId);\n }\n /**\n * Add `delta` credits (positive *or* negative) to *flowId*.\n *\n * The balance is bounded between 0 and `initialWindow`. Returns the new balance.\n * If the balance transitions from `<=0` to `>0` we wake blocked\n * acquirers.\n */\n addCredits(flowId, delta) {\n this.ensureFlow(flowId);\n const prev = this.credits.get(flowId);\n // clamp into [0, initialWindow]\n const newBalance = Math.max(0, Math.min(this.initialWindow, prev + delta));\n this.credits.set(flowId, newBalance);\n // wake waiters only if we crossed the zero boundary\n if (prev <= 0 && newBalance > 0) {\n this.wakeWaiters(flowId);\n }\n return newBalance;\n }\n /**\n * Block until at least one credit is available, then consume it.\n */\n async acquire(flowId) {\n this.ensureFlow(flowId);\n const condition = this.conditions.get(flowId);\n while (this.credits.get(flowId) <= 0) {\n await condition.wait();\n }\n const current = this.credits.get(flowId);\n this.credits.set(flowId, current - 1);\n }\n /**\n * Consume *credits* immediately (non-blocking).\n *\n * If *credits* exceeds the current balance we clamp to **zero** (legacy\n * behaviour retained for existing tests).\n * Returns the remaining balance.\n */\n consume(flowId, credits = 1) {\n if (credits < 0) {\n throw new Error('credits must be positive');\n }\n if (credits === 0) {\n return this.credits.get(flowId) ?? this.initialWindow;\n }\n this.ensureFlow(flowId);\n const current = this.credits.get(flowId);\n const remaining = Math.max(current - credits, 0);\n this.credits.set(flowId, remaining);\n return remaining;\n }\n /**\n * Return `true` if balance is at or below low-watermark.\n */\n needsRefill(flowId) {\n return this.getCredits(flowId) <= this.lowWatermark;\n }\n // ---------------------------------------------------------------\n // flow-state (RESET / sequence) helpers\n // ---------------------------------------------------------------\n /**\n * Prepare a *RESET|SYN* flag for the next outbound envelope.\n */\n resetFlow(flowId) {\n this.ensureFlow(flowId);\n this.resetRequested.add(flowId);\n this.windowIds.delete(flowId);\n this.credits.set(flowId, this.initialWindow);\n this.wakeWaiters(flowId);\n }\n /**\n * Return `[windowId, flags]` for the next outbound envelope.\n */\n nextWindow(flowId) {\n // RESET requested - emit RESET|SYN (window 0)\n if (this.resetRequested.has(flowId)) {\n this.resetRequested.delete(flowId);\n this.windowIds.set(flowId, 0);\n return [0, FlowFlags.RESET | FlowFlags.SYN];\n }\n // brand-new flow - start at window 0, emit SYN\n if (!this.windowIds.has(flowId)) {\n this.windowIds.set(flowId, 0);\n return [0, FlowFlags.SYN];\n }\n // subsequent envelope - increment window id\n const currentId = this.windowIds.get(flowId);\n const nextId = currentId + 1;\n this.windowIds.set(flowId, nextId);\n return [nextId, FlowFlags.NONE];\n }\n}\n//# sourceMappingURL=flow-controller.js.map","/**\n * in-memory-channel.ts - In-memory ReadWriteChannel implementation.\n *\n * Maintains an in-memory queue for async read/write operations with optional\n * size limits and operation timeouts.\n */\nimport { TaskTimeoutError } from '../../util/task-types.js';\nimport { getLogger } from '../../util/logging.js';\n/**\n * In-memory implementation of ReadWriteChannel using a Promise-based queue.\n * This is the TypeScript equivalent of Python's asyncio.Queue-based implementation.\n */\nexport class InMemoryReadWriteChannel {\n constructor(config = {}) {\n this._queue = [];\n this._waitingReaders = [];\n this._closed = false;\n this.logger = getLogger('naylence.fame.channel.in_memory.in_memory_channel');\n const legacyMaxSize = config.maxsize;\n const configuredMaxSize = typeof config.maxSize === 'number' ? config.maxSize : legacyMaxSize;\n this._maxSize = configuredMaxSize || 0; // 0 = unlimited\n this._defaultTimeoutMs = config.defaultTimeoutMs || 0; // 0 = no timeout\n }\n /**\n * Receive a message from the channel.\n * Returns a promise that resolves when a message is available.\n * This implements the ReadChannel.receive method.\n */\n async receive(timeout) {\n if (this._closed) {\n throw new Error('Channel is closed');\n }\n // If there's a message in the queue, return it immediately\n if (this._queue.length > 0) {\n const message = this._queue.shift();\n this.logger.debug('receive_returning_buffered_message', {\n queue_length: this._queue.length,\n waiting_readers: this._waitingReaders.length,\n });\n return message;\n }\n // No message available, wait for one\n return new Promise((resolve, reject) => {\n const waiter = { resolve, reject };\n // Set up timeout if specified\n const timeoutMs = timeout ?? this._defaultTimeoutMs;\n if (timeoutMs > 0) {\n waiter.timeoutId = setTimeout(() => {\n // Remove this waiter from the list\n const index = this._waitingReaders.indexOf(waiter);\n if (index !== -1) {\n this._waitingReaders.splice(index, 1);\n }\n reject(new TaskTimeoutError('Channel receive operation', timeoutMs));\n }, timeoutMs);\n }\n this._waitingReaders.push(waiter);\n // this.logger.debug(\"receive_waiting_for_message\", {\n // queue_length: this._queue.length,\n // waiting_readers: this._waitingReaders.length,\n // timeout_ms: timeoutMs,\n // });\n });\n }\n /**\n * Acknowledge a received message by its ID.\n * This implements the ReadChannel.acknowledge method.\n * For in-memory channels, this is typically a no-op.\n */\n async acknowledge(_messageId) {\n // In-memory channels don't need acknowledgment tracking\n // This is a no-op but satisfies the interface requirement\n if (this._closed) {\n throw new Error('Channel is closed');\n }\n // No-op - acknowledgment is not meaningful for in-memory channels\n }\n /**\n * Send a message to the channel.\n * If there are waiting readers, delivers directly to the first one.\n * Otherwise, adds to the queue (if there's space).\n * This implements the WriteChannel.send method.\n */\n async send(message) {\n if (this._closed) {\n throw new Error('Channel is closed');\n }\n // If there are waiting readers, deliver directly to the first one\n if (this._waitingReaders.length > 0) {\n const waiter = this._waitingReaders.shift();\n if (waiter.timeoutId) {\n clearTimeout(waiter.timeoutId);\n }\n this.logger.debug('send_delivering_to_waiter', {\n queue_length: this._queue.length,\n waiting_readers: this._waitingReaders.length,\n });\n waiter.resolve(message);\n return;\n }\n // No waiting readers, add to queue if there's space\n if (this._maxSize === 0 || this._queue.length < this._maxSize) {\n this._queue.push(message);\n this.logger.debug('send_enqueued_message', {\n queue_length: this._queue.length,\n waiting_readers: this._waitingReaders.length,\n max_size: this._maxSize,\n });\n return;\n }\n // Queue is full - in Python implementation, this would block\n // For simplicity in this TypeScript version, we'll reject immediately\n // In a full implementation, we'd want to wait for space to become available\n this.logger.error('send_queue_full', {\n queue_length: this._queue.length,\n max_size: this._maxSize,\n });\n throw new Error(`Channel queue is full (maxSize: ${this._maxSize})`);\n }\n /**\n * Close the channel. All pending reads will be rejected.\n * Future read/write operations will throw an error.\n */\n async close() {\n if (this._closed) {\n return;\n }\n this._closed = true;\n // Reject all waiting readers\n const error = new Error('Channel is closed');\n for (const waiter of this._waitingReaders) {\n if (waiter.timeoutId) {\n clearTimeout(waiter.timeoutId);\n }\n waiter.reject(error);\n }\n this.logger.debug('channel_closed', {\n discarded_waiters: this._waitingReaders.length,\n discarded_messages: this._queue.length,\n });\n this._waitingReaders.length = 0;\n // Clear the queue\n this._queue.length = 0;\n }\n /**\n * Check if the channel is closed\n */\n get isClosed() {\n return this._closed;\n }\n /**\n * Get the current queue size\n */\n get queueSize() {\n return this._queue.length;\n }\n /**\n * Get the number of waiting readers\n */\n get waitingReaders() {\n return this._waitingReaders.length;\n }\n /**\n * Check if the queue is full\n */\n get isFull() {\n return this._maxSize > 0 && this._queue.length >= this._maxSize;\n }\n /**\n * Check if the queue is empty\n */\n get isEmpty() {\n return this._queue.length === 0;\n }\n}\n//# sourceMappingURL=in-memory-channel.js.map","/**\n * in-memory-binding.ts - In-memory binding implementation\n *\n * TypeScript port of Python's InMemoryBinding that connects a FameAddress\n * to an InMemoryReadWriteChannel, managing the binding lifecycle.\n */\nimport { FameAddress } from '@naylence/core';\nimport { InMemoryReadWriteChannel, } from './in-memory-channel.js';\n/**\n * Represents a binding between a FameAddress and an InMemoryReadWriteChannel.\n * This is the TypeScript equivalent of Python's InMemoryBinding.\n */\nexport class InMemoryBinding {\n constructor(address, config = {}) {\n // Convert string address to FameAddress if needed\n this.address =\n typeof address === 'string' ? new FameAddress(address) : address;\n // Use provided channel or create a new one\n this.channel = config.channel || new InMemoryReadWriteChannel(config);\n }\n /**\n * Create a binding from an address string\n */\n static fromAddress(address, config = {}) {\n return new InMemoryBinding(address, config);\n }\n /**\n * Create a binding with a custom channel\n */\n static withChannel(address, channel) {\n return new InMemoryBinding(address, { channel });\n }\n /**\n * Close the binding and its associated channel\n */\n async close() {\n await this.channel.close();\n }\n /**\n * Check if the binding is closed\n */\n get isClosed() {\n return this.channel.isClosed;\n }\n /**\n * Get a string representation of the binding\n */\n toString() {\n return `InMemoryBinding(address=${this.address.toString()}, channel=${this.channel})`;\n }\n /**\n * Convert the binding to a plain object for serialization\n */\n toObject() {\n return {\n address: this.address.toString(),\n channelState: {\n queueSize: this.channel.queueSize,\n isClosed: this.channel.isClosed,\n },\n };\n }\n /**\n * Send a message through the binding's channel\n */\n async send(message) {\n return this.channel.send(message);\n }\n /**\n * Receive a message from the binding's channel\n */\n async receive(timeout) {\n return this.channel.receive(timeout);\n }\n /**\n * Acknowledge a message through the binding's channel\n */\n async acknowledge(messageId) {\n return this.channel.acknowledge(messageId);\n }\n}\n//# sourceMappingURL=in-memory-binding.js.map","/**\n * in-memory-fanout-broker.ts - In-memory fanout broker implementation\n *\n * TypeScript port of Python's InMemoryFanoutBroker that extends TaskSpawner\n * to manage multiple WriteChannel subscribers with concurrent message distribution.\n */\nimport { DEFAULT_POLLING_TIMEOUT_MS, extractEnvelopeAndContext, createChannelMessage, } from '@naylence/core';\nimport { TaskSpawner } from '../../util/task-spawner.js';\nimport { withEnvelopeContextAsync } from '../../util/envelope-context.js';\nimport { getLogger } from '../../util/logging.js';\nconst logger = getLogger('naylence.fame.channel.in_memory.in_memory_fanout_broker');\n// Sentinel object for shutdown signaling\nconst SENTINEL = Symbol('fanout-broker-sentinel');\nfunction isCloseable(obj) {\n return obj && typeof obj.close === 'function';\n}\n/**\n * In-memory fanout broker that receives messages from a sink channel and\n * distributes them to multiple subscriber channels.\n *\n * This is the TypeScript equivalent of Python's InMemoryFanoutBroker.\n */\nexport class InMemoryFanoutBroker extends TaskSpawner {\n constructor(sink, config = {}) {\n super();\n this._subscribers = new Set();\n this._running = false;\n this._sink = sink;\n const legacyPollTimeoutMs = config\n .poll_timeout_ms;\n const configuredPollTimeoutMs = typeof config.pollTimeoutMs === 'number'\n ? config.pollTimeoutMs\n : legacyPollTimeoutMs;\n this._pollTimeoutMs =\n typeof configuredPollTimeoutMs === 'number'\n ? configuredPollTimeoutMs\n : DEFAULT_POLLING_TIMEOUT_MS;\n this._pollTimeoutSec = this._pollTimeoutMs / 1000.0;\n }\n /**\n * Start the broker's listen loop\n */\n async start() {\n if (this._running) {\n return;\n }\n this._running = true;\n this.spawn(async () => await this._listenLoop(), {\n name: 'fanout-broker-listen-loop',\n });\n }\n /**\n * Stop the broker and clean up resources\n */\n async stop() {\n // 1) Prevent new iterations\n this._running = false;\n // Send sentinel to wake up any blocked receive\n try {\n await this._sink.send(SENTINEL);\n }\n catch (error) {\n // Ignore errors when sending sentinel (sink might be closed)\n logger.debug('error_sending_sentinel', {\n error: error.message,\n });\n }\n // 2) Shutdown spawned tasks with grace period\n await this.shutdownTasks({ gracePeriod: 3000 });\n // 3) Clean up subscribers\n const subscribersToClose = Array.from(this._subscribers);\n for (const sub of subscribersToClose) {\n if (isCloseable(sub)) {\n try {\n await sub.close();\n }\n catch (error) {\n logger.error('error_closing_subscriber', {\n subscriber: sub.toString(),\n error: error.message,\n });\n }\n }\n }\n this._subscribers.clear();\n }\n /**\n * Main listen loop that receives messages and distributes them to subscribers\n */\n async _listenLoop() {\n while (this._running) {\n try {\n // Non-blocking receive with timeout\n let msg;\n try {\n // Convert timeout from seconds to milliseconds for TypeScript timeout\n const timeoutMs = this._pollTimeoutSec * 1000;\n msg = await this._sink.receive(timeoutMs);\n }\n catch (error) {\n // Timeout or other receive error - continue loop\n continue;\n }\n if (msg === null || msg === undefined) {\n continue;\n }\n // Check for sentinel (shutdown signal)\n if (msg === SENTINEL) {\n this._running = false;\n break;\n }\n // Extract envelope from channel message or use direct envelope\n let envelope, context;\n try {\n [envelope, context] = extractEnvelopeAndContext(msg);\n }\n catch (error) {\n logger.debug('failed_to_extract_envelope', {\n error: error.message,\n });\n continue;\n }\n if (!envelope) {\n continue;\n }\n // Deliver to each subscriber individually\n // Send the original message (with context preserved) if it's a FameChannelMessage,\n // otherwise send the envelope directly\n const messageToSend = context !== undefined\n ? createChannelMessage(envelope, context)\n : envelope;\n const badSubs = [];\n const subscribersSnapshot = Array.from(this._subscribers);\n for (const sub of subscribersSnapshot) {\n await withEnvelopeContextAsync(envelope, async () => {\n try {\n await sub.send(messageToSend);\n }\n catch (error) {\n logger.error('error_sending_to_subscriber', {\n subscriber: sub.toString(),\n error: error.message,\n action: 'unsubscribing',\n });\n badSubs.push(sub);\n }\n });\n }\n // Remove any subscribers that failed\n for (const sub of badSubs) {\n this._subscribers.delete(sub);\n }\n }\n catch (error) {\n // Critical broker-level error: log and back off, but keep the loop running\n logger.critical('receive_loop_failed_unexpectedly', {\n error: error.message,\n stack: error.stack,\n });\n // Back off for 500ms before retrying\n await new Promise((resolve) => setTimeout(resolve, 500));\n }\n }\n }\n /**\n * Add a subscriber channel\n */\n addSubscriber(channel) {\n this._subscribers.add(channel);\n }\n /**\n * Remove a subscriber channel\n */\n removeSubscriber(channel) {\n this._subscribers.delete(channel);\n }\n /**\n * Get the current number of subscribers\n */\n get subscriberCount() {\n return this._subscribers.size;\n }\n /**\n * Check if the broker is running\n */\n get isRunning() {\n return this._running;\n }\n /**\n * Get a copy of the current subscribers\n */\n get subscribers() {\n return new Set(this._subscribers);\n }\n /** Poll timeout applied to the broker's sink channel in milliseconds */\n get pollTimeoutMs() {\n return this._pollTimeoutMs;\n }\n}\n//# sourceMappingURL=in-memory-fanout-broker.js.map","class InMemoryKeyValueStore {\n constructor() {\n this.store = new Map();\n }\n async set(key, value) {\n this.store.set(key, value);\n }\n async update(key, value) {\n if (!this.store.has(key)) {\n throw new Error(`Key '${key}' not found for update.`);\n }\n this.store.set(key, value);\n }\n async get(key) {\n return this.store.get(key);\n }\n async delete(key) {\n this.store.delete(key);\n }\n async list() {\n const result = {};\n for (const [key, value] of this.store.entries()) {\n result[key] = value;\n }\n return result;\n }\n}\nexport class InMemoryStorageProvider {\n constructor() {\n this.stores = new Map();\n }\n async getKeyValueStore(modelCtor, namespace) {\n let namespaceStores = this.stores.get(namespace);\n if (!namespaceStores) {\n namespaceStores = new Map();\n this.stores.set(namespace, namespaceStores);\n }\n const existing = namespaceStores.get(modelCtor);\n if (existing) {\n return existing;\n }\n const store = new InMemoryKeyValueStore();\n namespaceStores.set(modelCtor, store);\n return store;\n }\n}\nexport { InMemoryKeyValueStore };\n//# sourceMappingURL=in-memory-storage.js.map","import { AbstractResourceFactory, createDefaultResource, createResource, registerFactory, } from '@naylence/factory';\nexport const STORAGE_PROVIDER_FACTORY_BASE_TYPE = 'StorageProviderFactory';\nexport class StorageProviderFactory extends AbstractResourceFactory {\n static async createStorageProvider(config, options = {}) {\n const instance = config\n ? await createResource(STORAGE_PROVIDER_FACTORY_BASE_TYPE, config, options)\n : await createDefaultResource(STORAGE_PROVIDER_FACTORY_BASE_TYPE, null, options);\n if (!instance) {\n throw new Error('Failed to create storage provider from configuration');\n }\n return instance;\n }\n}\nexport function registerStorageProviderFactory(type, factory) {\n registerFactory(STORAGE_PROVIDER_FACTORY_BASE_TYPE, type, factory);\n}\n//# sourceMappingURL=storage-provider-factory.js.map","const DEFAULT_DB_NAME = 'naylence-secrets';\nconst DEFAULT_STORE_NAME = 'auto-master-key';\nconst DEFAULT_KEY_ID = 'master';\nconst MASTER_KEY_LENGTH = 32;\nfunction isArrayBufferView(value) {\n return Boolean(value) && ArrayBuffer.isView(value);\n}\nfunction toUint8Array(value) {\n if (!value) {\n return null;\n }\n if (value instanceof Uint8Array) {\n return new Uint8Array(value);\n }\n if (value instanceof ArrayBuffer) {\n return new Uint8Array(value);\n }\n if (isArrayBufferView(value)) {\n const view = value;\n return new Uint8Array(view.buffer.slice(view.byteOffset, view.byteOffset + view.byteLength));\n }\n return null;\n}\nasync function openDatabase(factory, dbName, storeName) {\n return new Promise((resolve, reject) => {\n const request = factory.open(dbName, 1);\n request.onerror = () => {\n reject(request.error ?? new Error('Failed to open IndexedDB'));\n };\n request.onupgradeneeded = () => {\n const db = request.result;\n if (!db.objectStoreNames.contains(storeName)) {\n db.createObjectStore(storeName);\n }\n };\n request.onsuccess = () => {\n resolve(request.result);\n };\n });\n}\nasync function readPersistedKey(db, storeName, keyId) {\n return new Promise((resolve, reject) => {\n const tx = db.transaction(storeName, 'readonly');\n const store = tx.objectStore(storeName);\n const request = store.get(keyId);\n request.onerror = () => {\n reject(request.error ?? new Error('Failed to read master key from IndexedDB'));\n };\n request.onsuccess = () => {\n resolve(toUint8Array(request.result));\n };\n });\n}\nasync function persistKey(db, storeName, keyId, key) {\n return new Promise((resolve, reject) => {\n const tx = db.transaction(storeName, 'readwrite');\n const store = tx.objectStore(storeName);\n const buffer = key.buffer.slice(key.byteOffset, key.byteOffset + key.byteLength);\n const request = store.put(buffer, keyId);\n request.onerror = () => {\n reject(request.error ?? new Error('Failed to persist master key to IndexedDB'));\n };\n tx.oncomplete = () => resolve();\n tx.onerror = () => {\n reject(tx.error ?? new Error('Failed to persist master key to IndexedDB'));\n };\n });\n}\nfunction getRandomBytes(length) {\n if (!globalThis.crypto?.getRandomValues) {\n throw new Error('crypto.getRandomValues is not available in this environment');\n }\n const buffer = new Uint8Array(length);\n globalThis.crypto.getRandomValues(buffer);\n return buffer;\n}\nexport class BrowserAutoKeyCredentialProvider {\n constructor(options = {}) {\n this.cachedKey = null;\n this.inflight = null;\n this.dbName = options.dbName ?? DEFAULT_DB_NAME;\n this.storeName = options.storeName ?? DEFAULT_STORE_NAME;\n this.keyId = options.keyId ?? DEFAULT_KEY_ID;\n if (options.idbFactory) {\n this.idbFactory = options.idbFactory;\n }\n else if (typeof indexedDB !== 'undefined') {\n this.idbFactory = indexedDB;\n }\n else {\n throw new Error('IndexedDB is not available in this environment');\n }\n }\n async get() {\n if (this.cachedKey) {\n return this.cachedKey;\n }\n if (this.inflight) {\n return this.inflight;\n }\n this.inflight = this.loadOrCreateKey();\n try {\n const key = await this.inflight;\n this.cachedKey = key;\n return key;\n }\n finally {\n this.inflight = null;\n }\n }\n async loadOrCreateKey() {\n const db = await openDatabase(this.idbFactory, this.dbName, this.storeName);\n try {\n const existing = await readPersistedKey(db, this.storeName, this.keyId);\n if (existing) {\n return existing;\n }\n const masterKey = getRandomBytes(MASTER_KEY_LENGTH);\n await persistKey(db, this.storeName, this.keyId, masterKey);\n return masterKey;\n }\n finally {\n db.close();\n }\n }\n}\n//# sourceMappingURL=browser-auto-key-credential-provider.js.map","import { BrowserAutoKeyCredentialProvider } from '../security/credential/browser-auto-key-credential-provider.js';\nconst DEFAULT_KEY_ID = 'default';\nconst DEFAULT_ALGORITHM = 'AES-GCM';\nconst GCM_IV_LENGTH = 12;\nfunction isBrowserEnvironment() {\n return (typeof indexedDB !== 'undefined' && typeof globalThis.crypto !== 'undefined');\n}\nfunction tryCreateBrowserAutoKeyCredentialProvider() {\n if (!isBrowserEnvironment()) {\n return null;\n }\n try {\n return new BrowserAutoKeyCredentialProvider();\n }\n catch {\n return null;\n }\n}\nlet cachedNodeCrypto;\nlet cachedSubtle;\nasync function loadNodeCrypto() {\n if (cachedNodeCrypto !== undefined) {\n return cachedNodeCrypto;\n }\n try {\n cachedNodeCrypto = await import('node:crypto');\n return cachedNodeCrypto;\n }\n catch {\n cachedNodeCrypto = null;\n return null;\n }\n}\nasync function getSubtleCrypto() {\n if (cachedSubtle) {\n return cachedSubtle;\n }\n if (typeof globalThis.crypto !== 'undefined' && globalThis.crypto.subtle) {\n cachedSubtle = globalThis.crypto.subtle;\n return cachedSubtle;\n }\n const nodeCrypto = await loadNodeCrypto();\n if (nodeCrypto?.webcrypto?.subtle) {\n cachedSubtle = nodeCrypto.webcrypto.subtle;\n return cachedSubtle;\n }\n throw new Error('Web Crypto API is not available in this environment');\n}\nasync function getRandomBytes(length) {\n if (typeof globalThis.crypto !== 'undefined' &&\n typeof globalThis.crypto.getRandomValues === 'function') {\n const buffer = new Uint8Array(length);\n globalThis.crypto.getRandomValues(buffer);\n return buffer;\n }\n const nodeCrypto = await loadNodeCrypto();\n if (nodeCrypto) {\n const buffer = nodeCrypto.randomBytes(length);\n return new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n }\n throw new Error('Unable to generate secure random bytes in this environment');\n}\nfunction normalizeKey(key) {\n if (key.length === 32) {\n return key;\n }\n if (key.length > 32) {\n return key.slice(0, 32);\n }\n const normalized = new Uint8Array(32);\n normalized.set(key);\n return normalized;\n}\nconst textEncoder = new TextEncoder();\nconst textDecoder = new TextDecoder();\nfunction utf8Encode(value) {\n return textEncoder.encode(value);\n}\nfunction utf8Decode(buffer) {\n return textDecoder.decode(buffer);\n}\nfunction toHex(data) {\n return Array.from(data)\n .map((byte) => byte.toString(16).padStart(2, '0'))\n .join('');\n}\nfunction toArrayBuffer(view) {\n const slice = view.buffer.slice(view.byteOffset, view.byteOffset + view.byteLength);\n return slice;\n}\nfunction fromHex(hex) {\n if (hex.length % 2 !== 0) {\n throw new Error('Invalid hex string');\n }\n const result = new Uint8Array(hex.length / 2);\n for (let i = 0; i < hex.length; i += 2) {\n result[i / 2] = parseInt(hex.slice(i, i + 2), 16);\n }\n return result;\n}\nfunction fromBase64Url(base64url) {\n // Convert base64url to base64\n let base64 = base64url.replace(/-/g, '+').replace(/_/g, '/');\n // Add padding if needed\n const padding = base64.length % 4;\n if (padding === 2) {\n base64 += '==';\n }\n else if (padding === 3) {\n base64 += '=';\n }\n else if (padding === 1) {\n throw new Error('Invalid base64url string: length % 4 === 1');\n }\n // Prefer Node.js Buffer for consistency\n if (typeof Buffer !== 'undefined') {\n return new Uint8Array(Buffer.from(base64, 'base64'));\n }\n // Browser fallback using atob\n if (typeof atob !== 'undefined') {\n const binaryString = atob(base64);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return bytes;\n }\n throw new Error('No base64 decoding available in this environment');\n}\nfunction isEncryptedValue(candidate) {\n if (!candidate || typeof candidate !== 'object') {\n return false;\n }\n const record = candidate;\n return (typeof record.keyId === 'string' &&\n typeof record.ciphertext === 'string' &&\n typeof record.algorithm === 'string');\n}\nexport class StorageAESEncryptionManager {\n async encrypt(plaintext, key) {\n const subtle = await getSubtleCrypto();\n const normalizedKey = normalizeKey(key);\n const keyBuffer = toArrayBuffer(normalizedKey);\n const cryptoKey = await subtle.importKey('raw', keyBuffer, { name: 'AES-GCM' }, false, ['encrypt']);\n const iv = await getRandomBytes(GCM_IV_LENGTH);\n const ivBuffer = toArrayBuffer(iv);\n const ciphertextBuffer = await subtle.encrypt({ name: 'AES-GCM', iv: ivBuffer }, cryptoKey, toArrayBuffer(plaintext));\n const ciphertext = new Uint8Array(ciphertextBuffer);\n const result = new Uint8Array(iv.length + ciphertext.length);\n result.set(iv, 0);\n result.set(ciphertext, iv.length);\n return result;\n }\n async decrypt(ciphertext, key) {\n if (ciphertext.length <= GCM_IV_LENGTH) {\n throw new Error('Ciphertext too short to contain IV');\n }\n const subtle = await getSubtleCrypto();\n const normalizedKey = normalizeKey(key);\n const keyBuffer = toArrayBuffer(normalizedKey);\n const cryptoKey = await subtle.importKey('raw', keyBuffer, { name: 'AES-GCM' }, false, ['decrypt']);\n const iv = ciphertext.slice(0, GCM_IV_LENGTH);\n const actualCiphertext = ciphertext.slice(GCM_IV_LENGTH);\n const ivBuffer = toArrayBuffer(iv);\n const cipherBuffer = toArrayBuffer(actualCiphertext);\n const plaintextBuffer = await subtle.decrypt({ name: 'AES-GCM', iv: ivBuffer }, cryptoKey, cipherBuffer);\n return new Uint8Array(plaintextBuffer);\n }\n}\nexport class EncryptedValue {\n constructor(params) {\n this.keyId = params.keyId;\n this.ciphertext = params.ciphertext;\n this.algorithm = params.algorithm;\n }\n}\nexport class EncryptedKeyValueStore {\n constructor(options) {\n this.underlyingStore = options.underlyingStore;\n this.masterKeyProvider = options.masterKeyProvider;\n this.encryptionManager = options.encryptionManager;\n this.modelCtor = options.modelCtor;\n this.cache = options.enableCaching ? new Map() : null;\n this.keyId = options.keyId ?? DEFAULT_KEY_ID;\n this.algorithm = options.algorithm ?? DEFAULT_ALGORITHM;\n }\n async getRawMasterKey() {\n const key = await this.masterKeyProvider.get();\n if (!key) {\n throw new Error('Master key provider must return a valid key');\n }\n if (key instanceof Uint8Array) {\n return key;\n }\n // Check if the key looks like base64url (alphanumeric, -, _, and typically 43 chars for 32 bytes)\n // Base64url pattern: only contains [A-Za-z0-9_-]\n const base64UrlPattern = /^[A-Za-z0-9_-]+$/;\n const matchesPattern = base64UrlPattern.test(key);\n if (matchesPattern && key.length >= 16) {\n try {\n // Try to decode as base64url\n const decoded = fromBase64Url(key);\n // Verify it's a reasonable key length (16, 24, or 32 bytes for AES)\n if (decoded.length === 16 ||\n decoded.length === 24 ||\n decoded.length === 32) {\n return decoded;\n }\n // If wrong length after decoding, treat as UTF-8 passphrase\n console.warn(`[EncryptedStorage] Master key decoded from base64url but has unexpected length ${decoded.length}. Treating as UTF-8 passphrase.`);\n }\n catch (error) {\n // If decoding fails, treat as UTF-8 passphrase\n console.warn(`[EncryptedStorage] Master key looks like base64url but failed to decode: ${error instanceof Error ? error.message : String(error)}. Treating as UTF-8 passphrase.`);\n }\n }\n // Treat as UTF-8 passphrase\n const utf8Key = utf8Encode(key);\n // console.log('[EncryptedStorage] Using UTF-8 encoded key, length:', utf8Key.length, 'hex:', toHex(utf8Key.slice(0, 8)) + '...');\n return utf8Key;\n }\n serialize(value) {\n const candidate = value;\n if (candidate && typeof candidate.toJSON === 'function') {\n return JSON.stringify(candidate.toJSON());\n }\n return JSON.stringify(value);\n }\n deserialize(json) {\n const data = JSON.parse(json);\n const ctorAsAny = this.modelCtor;\n // Prefer static factory methods for custom deserialization logic\n if (typeof ctorAsAny.fromJSON === 'function') {\n return ctorAsAny.fromJSON(data);\n }\n if (typeof ctorAsAny.fromJson === 'function') {\n return ctorAsAny.fromJson(data);\n }\n if (typeof ctorAsAny.deserialize === 'function') {\n return ctorAsAny.deserialize(data);\n }\n // Default: Use Object.assign (standard approach for JSON deserialization)\n // This creates an instance with the correct prototype and copies all properties\n return Object.assign(Object.create(this.modelCtor.prototype), data);\n }\n cacheGet(key) {\n return this.cache?.get(key);\n }\n cacheSet(key, value) {\n this.cache?.set(key, value);\n }\n cacheDelete(key) {\n this.cache?.delete(key);\n }\n async set(key, value) {\n const serialized = this.serialize(value);\n const plaintext = utf8Encode(serialized);\n const masterKey = await this.getRawMasterKey();\n const ciphertext = await this.encryptionManager.encrypt(plaintext, masterKey);\n const encryptedValue = new EncryptedValue({\n keyId: this.keyId,\n ciphertext: toHex(ciphertext),\n algorithm: this.algorithm,\n });\n await this.underlyingStore.set(key, encryptedValue);\n this.cacheSet(key, value);\n }\n async update(key, value) {\n const serialized = this.serialize(value);\n const plaintext = utf8Encode(serialized);\n const masterKey = await this.getRawMasterKey();\n const ciphertext = await this.encryptionManager.encrypt(plaintext, masterKey);\n const encryptedValue = new EncryptedValue({\n keyId: this.keyId,\n ciphertext: toHex(ciphertext),\n algorithm: this.algorithm,\n });\n await this.underlyingStore.update(key, encryptedValue);\n this.cacheSet(key, value);\n }\n async get(key) {\n const cached = this.cacheGet(key);\n if (cached !== undefined) {\n return cached;\n }\n const encryptedValue = await this.underlyingStore.get(key);\n if (!encryptedValue) {\n return undefined;\n }\n if (!isEncryptedValue(encryptedValue)) {\n throw new Error(`Expected EncryptedValue, got ${typeof encryptedValue}`);\n }\n try {\n const masterKey = await this.getRawMasterKey();\n const ciphertext = fromHex(encryptedValue.ciphertext);\n const plaintext = await this.encryptionManager.decrypt(ciphertext, masterKey);\n const json = utf8Decode(plaintext);\n const value = this.deserialize(json);\n this.cacheSet(key, value);\n return value;\n }\n catch (error) {\n console.error(`[EncryptedStorage] ERROR decrypting key \"${key}\":`, error);\n console.error(`[EncryptedStorage] Encrypted value:`, JSON.stringify(encryptedValue));\n throw error;\n }\n }\n async delete(key) {\n await this.underlyingStore.delete(key);\n this.cacheDelete(key);\n }\n async list() {\n const encryptedItems = await this.underlyingStore.list();\n const masterKey = await this.getRawMasterKey();\n const result = {};\n for (const [key, encrypted] of Object.entries(encryptedItems)) {\n if (!isEncryptedValue(encrypted)) {\n continue;\n }\n const cached = this.cacheGet(key);\n if (cached !== undefined) {\n result[key] = cached;\n continue;\n }\n try {\n const ciphertext = fromHex(encrypted.ciphertext);\n const plaintext = await this.encryptionManager.decrypt(ciphertext, masterKey);\n const json = utf8Decode(plaintext);\n const value = this.deserialize(json);\n result[key] = value;\n this.cacheSet(key, value);\n }\n catch (error) {\n console.error('[EncryptedStorage] ERROR decrypting list item, key:', key, 'error:', error);\n console.error('[EncryptedStorage] Encrypted value:', JSON.stringify(encrypted));\n }\n }\n return result;\n }\n async clearCache() {\n this.cache?.clear();\n }\n}\nexport class EncryptedStorageProviderBase {\n constructor(options = {}) {\n const { isEncrypted = true, masterKeyProvider = null, encryptionManager = null, enableCaching = false, } = options;\n this.isEncrypted = isEncrypted;\n this.enableCaching = enableCaching;\n if (isEncrypted) {\n const resolvedProvider = masterKeyProvider ?? tryCreateBrowserAutoKeyCredentialProvider();\n if (!resolvedProvider) {\n throw new Error('masterKeyProvider is required when encryption is enabled');\n }\n this.masterKeyProvider = resolvedProvider;\n this.encryptionManager =\n encryptionManager ?? new StorageAESEncryptionManager();\n }\n else {\n this.masterKeyProvider = null;\n this.encryptionManager = null;\n }\n }\n async getKeyValueStore(modelCtor, namespace) {\n if (!this.isEncrypted) {\n return this.getUnderlyingKeyValueStore(modelCtor, namespace);\n }\n if (!this.masterKeyProvider || !this.encryptionManager) {\n throw new Error('Encryption is enabled but master key provider or encryption manager is missing');\n }\n const underlyingStore = await this.getUnderlyingKeyValueStore(EncryptedValue, namespace);\n return new EncryptedKeyValueStore({\n underlyingStore,\n masterKeyProvider: this.masterKeyProvider,\n encryptionManager: this.encryptionManager,\n modelCtor,\n enableCaching: this.enableCaching,\n });\n }\n}\n//# sourceMappingURL=encrypted-storage-provider-base.js.map","const DEFAULT_DB_NAME = 'naylence';\nconst DEFAULT_DB_VERSION = 1;\nfunction ensureIndexedDB(factory) {\n if (factory) {\n return factory;\n }\n if (typeof indexedDB === 'undefined') {\n throw new Error('IndexedDBKeyValueStore requires a browser environment with IndexedDB support');\n }\n return indexedDB;\n}\nfunction toError(error, fallback) {\n if (error instanceof Error) {\n return error;\n }\n return new Error(fallback);\n}\nfunction requestToPromise(request, description) {\n return new Promise((resolve, reject) => {\n request.onsuccess = () => resolve(request.result);\n request.onerror = () => reject(toError(request.error, description));\n });\n}\nexport class IndexedDBKeyValueStore {\n constructor(options) {\n this.dbPromise = null;\n if (!options?.storeName) {\n throw new Error('storeName is required');\n }\n this.dbName = options.dbName ?? DEFAULT_DB_NAME;\n this.storeName = options.storeName;\n this.version = options.version ?? DEFAULT_DB_VERSION;\n this.factory = ensureIndexedDB(options.idbFactory);\n }\n async set(key, value) {\n await this.withStore('readwrite', async (store) => {\n await requestToPromise(store.put(value, key), 'Failed to set value in IndexedDB');\n });\n }\n async update(key, value) {\n await this.withStore('readwrite', async (store) => {\n const existing = await requestToPromise(store.get(key), 'Failed to read value from IndexedDB');\n if (existing === undefined) {\n throw new Error(`Key '${key}' does not exist`);\n }\n await requestToPromise(store.put(value, key), 'Failed to update value in IndexedDB');\n });\n }\n async get(key) {\n return this.withStore('readonly', (store) => requestToPromise(store.get(key), 'Failed to read value from IndexedDB'));\n }\n async delete(key) {\n await this.withStore('readwrite', async (store) => {\n await requestToPromise(store.delete(key), 'Failed to delete value from IndexedDB');\n });\n }\n async list() {\n return this.withStore('readonly', (store) => new Promise((resolve, reject) => {\n const result = {};\n const request = store.openCursor();\n request.onerror = () => reject(toError(request.error, 'Failed to iterate IndexedDB store'));\n request.onsuccess = (event) => {\n const cursor = event.target.result;\n if (!cursor) {\n resolve(result);\n return;\n }\n const key = cursor.key;\n if (typeof key === 'string') {\n result[key] = cursor.value;\n }\n cursor.continue();\n };\n }));\n }\n async withStore(mode, fn) {\n const db = await this.ensureDatabase();\n return new Promise((resolve, reject) => {\n let settled = false;\n const transaction = db.transaction(this.storeName, mode);\n const store = transaction.objectStore(this.storeName);\n const finalize = (value) => {\n if (!settled) {\n settled = true;\n resolve(value);\n }\n };\n transaction.onabort = () => {\n if (!settled) {\n settled = true;\n reject(toError(transaction.error, 'IndexedDB transaction was aborted'));\n }\n };\n transaction.onerror = () => {\n if (!settled) {\n settled = true;\n reject(toError(transaction.error, 'IndexedDB transaction failed'));\n }\n };\n transaction.oncomplete = () => {\n if (!settled) {\n settled = true;\n resolve(undefined);\n }\n };\n try {\n Promise.resolve(fn(store))\n .then((result) => {\n if (mode === 'readonly') {\n finalize(result);\n }\n else {\n transaction.oncomplete = () => finalize(result);\n }\n })\n .catch((error) => {\n transaction.abort();\n reject(toError(error, 'IndexedDB operation failed'));\n });\n }\n catch (error) {\n transaction.abort();\n reject(toError(error, 'IndexedDB operation failed'));\n }\n });\n }\n async ensureDatabase() {\n if (!this.dbPromise) {\n this.dbPromise = this.openDatabase();\n }\n const db = await this.dbPromise;\n if (db.objectStoreNames.contains(this.storeName)) {\n return db;\n }\n db.close();\n this.dbPromise = this.upgradeDatabase(db.version + 1);\n return this.dbPromise;\n }\n openDatabase() {\n return this.createDatabase(this.version, true);\n }\n upgradeDatabase(version) {\n return this.createDatabase(version, false);\n }\n createDatabase(version, allowFallback) {\n return new Promise((resolve, reject) => {\n const request = this.factory.open(this.dbName, version);\n let resolved = false;\n request.onupgradeneeded = () => {\n const db = request.result;\n if (!db.objectStoreNames.contains(this.storeName)) {\n db.createObjectStore(this.storeName);\n }\n };\n request.onerror = () => {\n if (!resolved) {\n resolved = true;\n reject(toError(request.error, 'Failed to open IndexedDB'));\n }\n };\n request.onsuccess = () => {\n if (!resolved) {\n resolved = true;\n const db = request.result;\n if (!db.objectStoreNames.contains(this.storeName) && allowFallback) {\n db.close();\n this.createDatabase(version + 1, false)\n .then(resolve)\n .catch(reject);\n return;\n }\n resolve(db);\n }\n };\n });\n }\n}\n//# sourceMappingURL=indexeddb-key-value-store.js.map","import { EncryptedStorageProviderBase } from './encrypted-storage-provider-base.js';\nimport { IndexedDBKeyValueStore } from './indexeddb-key-value-store.js';\nconst DEFAULT_DB_NAME = 'naylence';\nconst DEFAULT_NAMESPACE_PREFIX = 'kv';\nfunction sanitizeSegment(segment, fallback) {\n const trimmed = segment.trim();\n const replaced = trimmed.replace(/[^A-Za-z0-9._-]+/g, '_');\n const cleaned = replaced.replace(/^[._-]+|[._-]+$/g, '');\n if (!cleaned) {\n return fallback;\n }\n return cleaned.slice(0, 120);\n}\nfunction buildStoreName(prefix, namespace, modelName) {\n const safePrefix = sanitizeSegment(prefix, DEFAULT_NAMESPACE_PREFIX);\n const safeNamespace = sanitizeSegment(namespace, 'namespace');\n const safeModel = sanitizeSegment(modelName || 'model', 'model');\n return `${safePrefix}:${safeNamespace}:${safeModel}`;\n}\nexport class IndexedDBStorageProvider extends EncryptedStorageProviderBase {\n constructor(options = {}) {\n const mode = options.mode ?? 'dx';\n if (!IndexedDBStorageProvider.supportedModes.has(mode)) {\n throw new Error(`Unsupported IndexedDB storage provider mode: ${mode}. Supported modes: ${Array.from(IndexedDBStorageProvider.supportedModes).join(', ')}`);\n }\n const enableCaching = options.enableCaching ?? mode === 'dx';\n const isEncrypted = options.isEncrypted ?? true;\n const masterKeyProvider = options.masterKeyProvider ?? null;\n if (mode === 'hardened' && !masterKeyProvider) {\n throw new Error('IndexedDBStorageProvider in hardened mode requires an explicit masterKeyProvider');\n }\n super({\n isEncrypted,\n masterKeyProvider,\n enableCaching,\n });\n this.stores = new Map();\n this.mode = mode;\n this.dbName = options.dbName ?? DEFAULT_DB_NAME;\n this.version = options.version ?? 1;\n this.namespacePrefix = options.namespacePrefix ?? DEFAULT_NAMESPACE_PREFIX;\n this.idbFactory = options.idbFactory ?? undefined;\n }\n get isBrowserOnly() {\n return true;\n }\n async getUnderlyingKeyValueStore(modelCtor, namespace) {\n const modelName = modelCtor?.name ?? 'model';\n const storeKey = `${namespace}:${modelName}`;\n const existing = this.stores.get(storeKey);\n if (existing) {\n return existing;\n }\n const storeName = buildStoreName(this.namespacePrefix, namespace, modelName);\n const store = new IndexedDBKeyValueStore({\n dbName: this.dbName,\n version: this.version,\n storeName,\n ...(this.idbFactory ? { idbFactory: this.idbFactory } : {}),\n });\n this.stores.set(storeKey, store);\n return store;\n }\n}\nIndexedDBStorageProvider.supportedModes = new Set(['dx', 'hardened']);\n//# sourceMappingURL=indexeddb-storage-provider.js.map","const nodeStack = [];\nexport function getCurrentNode() {\n return nodeStack.length > 0 ? nodeStack[nodeStack.length - 1] : null;\n}\nexport function getNode() {\n const current = getCurrentNode();\n if (!current) {\n throw new Error('No Fame node is currently bound to the context');\n }\n return current;\n}\nexport function pushNode(node) {\n nodeStack.push(node);\n let popped = false;\n return () => {\n if (popped) {\n return;\n }\n popped = true;\n const current = nodeStack[nodeStack.length - 1];\n if (current === node) {\n nodeStack.pop();\n return;\n }\n const index = nodeStack.lastIndexOf(node);\n if (index >= 0) {\n nodeStack.splice(index, 1);\n }\n };\n}\nexport async function withNodeContextAsync(node, fn) {\n const pop = pushNode(node);\n try {\n return await fn();\n }\n finally {\n pop();\n }\n}\nexport function runWithNodeContext(node, fn) {\n const pop = pushNode(node);\n try {\n return fn();\n }\n finally {\n pop();\n }\n}\n//# sourceMappingURL=node-context-stack.js.map","/**\n * NoopFlowController - Flow control stub that provides infinite credits\n *\n * Used when flow control is disabled. Behaves as if infinite credits exist\n * for all flow IDs, so operations never block on credit availability.\n */\n/**\n * Internal flow controller that provides infinite credits for all flows.\n * Used when BaseAsyncConnector is configured without flow control.\n */\nexport class _NoopFlowController {\n constructor() {\n this._infiniteCredits = 1000000;\n }\n /**\n * Always resolves immediately - infinite credits available.\n */\n async acquire(_flowId) {\n return Promise.resolve();\n }\n /**\n * Returns infinite credits (delta ignored).\n */\n addCredits(_flowId, _delta) {\n return this._infiniteCredits;\n }\n /**\n * Always returns infinite credits.\n */\n getCredits(_flowId) {\n return this._infiniteCredits;\n }\n /**\n * Always returns infinite credits (credits consumed ignored).\n */\n consume(_flowId, _credits = 1) {\n return this._infiniteCredits;\n }\n /**\n * Never needs refill - infinite credits available.\n */\n needsRefill(_flowId) {\n return false;\n }\n}\n//# sourceMappingURL=noop-flow-controller.js.map","/**\n * BaseAsyncConnector - Abstract async transport adapter with optional flow control\n *\n * Enhanced connector with cleaner shutdown, better back-pressure reporting,\n * and richer metrics/logging. Maintains backwards compatibility with subclasses.\n */\n/**\n * Error thrown when a task is cancelled during shutdown - not a critical error\n */\nexport class TaskCancellationError extends Error {\n constructor(message = 'Task cancelled') {\n super(message);\n this.name = 'TaskCancellationError';\n }\n}\nimport { TaskSpawner } from '../util/task-spawner.js';\nimport { FlowController } from '../channel/flow-controller.js';\nimport { _NoopFlowController } from './noop-flow-controller.js';\nimport { getLogger } from '../util/logging.js';\nimport { color, AnsiColor } from '../util/formatter.js';\nimport { withEnvelopeContextAsync } from '../util/envelope-context.js';\nimport { formatTimestampForConsole, isEnvelopeLoggingEnabled, prettyModel, } from '../util/util.js';\nimport { ConnectorState, ConnectorStateUtils, createFameEnvelope, generateId, FlowFlags, FameResponseType, } from '@naylence/core';\nimport { FameMessageTooLarge, FameTransportClose, BackPressureFull, } from '../errors/errors.js';\nconst logger = getLogger('naylence.fame.connector.base_async_connector');\n// Environment variables\nconst ENV_VAR_FAME_FLOW_CONTROL = 'FAME_FLOW_CONTROL';\nconst FLOW_CONTROL_ENABLED = typeof process !== 'undefined' && process?.env\n ? process.env[ENV_VAR_FAME_FLOW_CONTROL] !== '0'\n : true;\nconst FAME_MAX_MESSAGE_SIZE = 1024 * 256;\n/**\n * Abstract base class for async transport adapters with optional flow control.\n *\n * Provides:\n * - Async send/receive loops with proper error handling\n * - Optional credit-based flow control\n * - Graceful shutdown with task cleanup\n * - Back-pressure management\n * - Metrics and logging integration\n */\nexport class BaseAsyncConnector extends TaskSpawner {\n constructor(config = {}) {\n super(config.taskSpawner);\n // Send queue for outbound messages\n this._sendQueue = [];\n this._sendLoopShutdown = false; // Flag to indicate send loop should stop\n this._closed = false;\n // Connector state management\n this._state = ConnectorState.INITIALIZED;\n this._maxQueueSize = config.maxQueueSize ?? 1000;\n this._metrics = config.metricsEmitter;\n this._initialWindow = config.initialWindow ?? 32;\n this._connectorFlowId = generateId();\n this._authorizationContext = config.authorizationContext;\n // Initialize shutdown timeouts\n this._shutdownGracePeriod = config.shutdownTimeouts?.gracePeriod ?? 2.0;\n this._shutdownJoinTimeout = config.shutdownTimeouts?.joinTimeout ?? 1000;\n // Initialize flow control\n const useFlowControl = config.flowControl ?? FLOW_CONTROL_ENABLED;\n if (useFlowControl) {\n this._flowCtrl = new FlowController(this._initialWindow);\n this._fcEnabled = true;\n }\n else {\n this._flowCtrl = new _NoopFlowController();\n this._fcEnabled = false;\n }\n }\n // ---------------------------------------------------------------------\n // State Management Properties\n // ---------------------------------------------------------------------\n /** Get the current connector state */\n get state() {\n return this._state;\n }\n /** Get the current connector state (alias for compatibility) */\n get connectorState() {\n return this._state;\n }\n /** Get the close code if connector was closed */\n get closeCode() {\n return this._closeCode;\n }\n /** Get the close reason if connector was closed */\n get closeReason() {\n return this._closeReason;\n }\n /** Get the last error that occurred */\n get lastError() {\n return this._lastError;\n }\n /** Get the current authorization context */\n get authorizationContext() {\n return this._authorizationContext;\n }\n /** Set the authorization context */\n set authorizationContext(context) {\n this._authorizationContext = context;\n }\n /**\n * Update the connector state and log the transition\n */\n _setState(newState) {\n if (this._state !== newState) {\n const oldState = this._state;\n this._state = newState;\n logger.debug('connector_state_transition', {\n connector_id: this._connectorFlowId,\n old_state: oldState,\n new_state: newState,\n });\n }\n }\n // ---------------------------------------------------------------------\n // Lifecycle Methods\n // ---------------------------------------------------------------------\n /**\n * Start the connector with an inbound message handler\n */\n async start(inboundHandler) {\n if (!ConnectorStateUtils.canStart(this._state)) {\n if (this._state === ConnectorState.STARTED) {\n throw new Error('Connector already started');\n }\n throw new Error(`Cannot start connector in state: ${this._state}`);\n }\n if (this._handler !== undefined) {\n throw new Error('Connector already started');\n }\n this._handler = inboundHandler;\n // Start background tasks\n this.spawn((signal) => this._sendLoop(signal), { name: 'send-loop' });\n this.spawn((signal) => this._receiveLoop(signal), { name: 'receive-loop' });\n this._setState(ConnectorState.STARTED);\n }\n /**\n * Replace the current message handler\n */\n async replaceHandler(handler) {\n this._handler = handler;\n }\n /**\n * Stop the connector gracefully\n */\n async stop() {\n if (!ConnectorStateUtils.canStop(this._state)) {\n logger.debug('connector_stop_already_stopped', {\n current_state: this._state,\n connector_id: this._connectorFlowId,\n });\n return;\n }\n this._setState(ConnectorState.STOPPED);\n await this._shutdown(1000, 'normal closure');\n if (this._lastError) {\n throw this._lastError;\n }\n }\n /**\n * Close the connector with optional code and reason\n */\n async close(code = 1000, reason = 'normal closure') {\n if (!ConnectorStateUtils.canClose(this._state)) {\n logger.warning('connector_close_invalid_state', {\n current_state: this._state,\n connector_id: this._connectorFlowId,\n });\n return;\n }\n this._setState(ConnectorState.CLOSED);\n await this._shutdown(code, reason);\n if (this._lastError) {\n throw this._lastError;\n }\n }\n /**\n * Wait until the connector is closed\n */\n async waitUntilClosed() {\n if (!this._closePromise) {\n this._closePromise = new Promise((resolve) => {\n this._closeResolver = resolve;\n });\n }\n await this._closePromise;\n }\n /**\n * Push data to the receive queue for processing.\n * Subclasses should implement this to handle incoming data.\n */\n async pushToReceive(_rawOrEnvelope) {\n throw new Error('Subclasses must implement pushToReceive()');\n }\n // Backwards compatibility alias\n async _receiveLoop(signal) {\n return this._recvLoop(signal);\n }\n // ---------------------------------------------------------------------\n // Public Send Method\n // ---------------------------------------------------------------------\n /**\n * Send a FAME envelope through the transport\n */\n async send(envelope) {\n if (this._closed) {\n throw new FameTransportClose('Connection closed', 1006);\n }\n // Apply flow control if enabled and not a credit update\n if (this._fcEnabled &&\n !(envelope.frame &&\n 'flow_id' in envelope.frame &&\n 'credits' in envelope.frame)) {\n const flowId = envelope.flowId || this._connectorFlowId;\n envelope.flowId = flowId;\n const t0 = this._metrics ? performance.now() : 0;\n await this._flowCtrl.acquire(flowId);\n if (this._metrics) {\n this._metrics.histogram('connector.acquire_latency', performance.now() - t0, {\n flow_id: flowId,\n });\n }\n // Set sequence ID and flow flags if using real flow controller\n if (this._flowCtrl instanceof FlowController) {\n const [wnd, flags] = this._flowCtrl.nextWindow(flowId);\n envelope.seqId = wnd;\n envelope.flowFlags = (envelope.flowFlags || FlowFlags.NONE) | flags;\n }\n }\n // Serialize envelope\n const raw = new TextEncoder().encode(JSON.stringify(envelope));\n const rawSize = raw.length;\n if (rawSize > FAME_MAX_MESSAGE_SIZE) {\n throw new FameMessageTooLarge(`Message size ${rawSize} exceeds maximum ${FAME_MAX_MESSAGE_SIZE}`);\n }\n // Check queue capacity before adding for backpressure\n if (this._sendQueue.length >= this._maxQueueSize) {\n const depth = this._sendQueue.length;\n throw new BackPressureFull(`send-queue full (${depth}/${this._maxQueueSize})`);\n }\n // Add to queue and notify send loop\n this._sendQueue.push(raw);\n // Log for debugging\n logger.debug('send_envelope_queued', {\n queue_length: this._sendQueue.length,\n max_queue_size: this._maxQueueSize,\n });\n this._wakeUpSendLoop();\n if (this._metrics) {\n this._metrics.gauge('connector.send_queue_depth', this._sendQueue.length, {\n connector: this.constructor.name,\n });\n }\n }\n /**\n * Wake up the send loop to process queued items\n */\n _wakeUpSendLoop() {\n if (this._sendPromiseResolve) {\n this._sendPromiseResolve();\n this._sendPromiseResolve = undefined;\n }\n }\n /**\n * Internal send loop that processes the send queue\n */\n async _sendLoop(signal) {\n try {\n while (!this._closed && !this._sendLoopShutdown && !signal?.aborted) {\n // Wait for data in queue with cancellation support\n while (this._sendQueue.length === 0 &&\n !this._closed &&\n !this._sendLoopShutdown &&\n !signal?.aborted) {\n await new Promise((resolve, reject) => {\n // Remove redundant signal check - the event listener handles it\n this._sendPromiseResolve = resolve;\n const timeoutId = setTimeout(resolve, 100); // Fallback timeout\n // Listen for cancellation\n const abortHandler = () => {\n clearTimeout(timeoutId);\n reject(new TaskCancellationError());\n };\n signal?.addEventListener('abort', abortHandler, { once: true });\n });\n }\n if (this._closed || signal?.aborted)\n break;\n // Look at the first item without removing it yet\n const item = this._sendQueue[0];\n if (!item)\n continue;\n logger.debug('send_loop_processing_item', {\n queue_length_before_send: this._sendQueue.length,\n });\n // Send through transport (this may block)\n await this._transportSendBytes(item);\n // Only remove from queue after successful send\n this._sendQueue.shift();\n logger.debug('send_loop_item_sent', {\n queue_length_after_send: this._sendQueue.length,\n });\n }\n }\n catch (error) {\n if (error instanceof FameTransportClose) {\n const code = error.code ?? 1006;\n const reason = error.message;\n await this._shutdown(code, reason, undefined, error);\n }\n else if (error instanceof TaskCancellationError) {\n // Task cancellation is expected during shutdown - log as debug, not critical\n logger.debug('send loop cancelled', {\n connector: this.constructor.name,\n reason: error.message,\n });\n // Don't re-throw - this is normal during shutdown\n }\n else {\n logger.critical('unexpected exception in send loop', {\n connector: this.constructor.name,\n error: error instanceof Error ? error.message : String(error),\n });\n throw error;\n }\n }\n }\n /**\n * Internal receive loop that processes incoming messages\n */\n async _recvLoop(signal) {\n if (!this._handler) {\n throw new Error('Handler not set');\n }\n try {\n while (!this._closed && !signal?.aborted) {\n // Remove redundant signal check - loop condition handles it\n const message = await this._transportReceive();\n let messageContext;\n let env;\n // Parse the incoming message\n if (message && typeof message === 'object' && 'envelope' in message) {\n // FameChannelMessage\n const channelMsg = message;\n env = channelMsg.envelope;\n messageContext = channelMsg.context;\n }\n else if (message &&\n typeof message === 'object' &&\n 'frame' in message) {\n // FameEnvelope\n env = message;\n }\n else if (message instanceof Uint8Array) {\n // Raw bytes - parse as JSON\n try {\n const jsonStr = new TextDecoder().decode(message);\n env = JSON.parse(jsonStr);\n }\n catch (error) {\n logger.error('Invalid envelope', {\n message: message.toString(),\n error: error instanceof Error ? error.message : String(error),\n });\n continue;\n }\n }\n else if (message instanceof FameTransportClose) {\n // Transport close - initiate shutdown\n const code = message.code ?? 1006;\n const reason = message.message;\n await this._shutdownWithError(message, code, reason);\n return;\n }\n else {\n throw new Error(`Expected FameEnvelope, Uint8Array, or FameTransportClose, got ${typeof message}`);\n }\n // Process the envelope\n const envelopeContext = {\n ...(env.traceId && { trace_id: env.traceId }),\n ...(env.flowId && { flow_id: env.flowId }),\n };\n await withEnvelopeContextAsync(envelopeContext, async () => {\n const prettyEnvelope = prettyModel(env);\n logger.trace('connector_received_envelope', {\n envelope: env,\n pretty: prettyEnvelope,\n });\n if (isEnvelopeLoggingEnabled()) {\n console.log(`\\n${formatTimestampForConsole()} - ${color('Received envelope 📨', AnsiColor.BLUE)}\\n${prettyEnvelope}`);\n }\n // Handle credit updates\n if (env.frame && env.frame.type === 'CreditUpdate') {\n const creditFrame = env.frame;\n this._flowCtrl.addCredits(creditFrame.flowId, creditFrame.credits);\n return;\n }\n // Deliver to handler\n const context = messageContext || {\n fromConnector: this,\n expectedResponseType: FameResponseType.NONE,\n };\n await this._handler(env, context);\n // Consume credit and emit refill if needed\n const flowId = env.flowId || this._connectorFlowId;\n this._flowCtrl.consume(flowId);\n await this._maybeEmitCredit(flowId, env.traceId);\n });\n }\n }\n catch (error) {\n if (error instanceof FameTransportClose) {\n const code = error.code ?? 1006;\n const reason = error.message;\n await this._shutdown(code, reason, undefined, error);\n }\n else if (error instanceof TaskCancellationError) {\n // Task cancellation is expected during shutdown - log as debug, not critical\n logger.debug('receive loop cancelled', {\n connector: this.constructor.name,\n reason: error.message,\n });\n // Don't re-throw - this is normal during shutdown\n }\n else {\n logger.critical('unexpected_error_in recv_loop', {\n error: error instanceof Error ? error.message : String(error),\n });\n throw error;\n }\n }\n }\n // ---------------------------------------------------------------------\n // Credit Management\n // ---------------------------------------------------------------------\n /**\n * Emit credit update if flow control needs refill\n */\n async _maybeEmitCredit(flowId, traceId) {\n if (!this._flowCtrl.needsRefill(flowId)) {\n return;\n }\n const delta = this._initialWindow;\n this._flowCtrl.addCredits(flowId, delta);\n const ackEnv = createFameEnvelope({\n ...(traceId && { traceId }),\n flowId,\n windowId: 0,\n frame: {\n type: 'CreditUpdate',\n flowId: flowId,\n credits: delta,\n },\n flags: FlowFlags.ACK,\n });\n await this.send(ackEnv);\n }\n // ---------------------------------------------------------------------\n // Shutdown Management\n // ---------------------------------------------------------------------\n /**\n * Shutdown the connector due to an error\n */\n async _shutdownWithError(exc, code = 1006, reason) {\n const errorReason = reason || `${exc.constructor.name}: ${exc.message}`;\n await this._shutdown(code, errorReason, undefined, exc);\n }\n /**\n * Internal shutdown implementation\n */\n async _shutdown(code, reason, gracePeriod, exc) {\n if (this._closed) {\n return;\n }\n this._closed = true;\n this._closeCode = code;\n this._closeReason = reason;\n // Use provided gracePeriod or fall back to configured value\n const effectiveGracePeriod = gracePeriod ?? this._shutdownGracePeriod;\n if (exc) {\n this._lastError = exc;\n }\n // Set final state if not already stopped/closed\n if (this._state !== ConnectorState.STOPPED &&\n this._state !== ConnectorState.CLOSED) {\n this._setState(ConnectorState.CLOSED);\n }\n // Stop send loop using shutdown flag\n this._sendLoopShutdown = true;\n // Wake up the send loop if it's waiting\n if (this._sendPromiseResolve) {\n this._sendPromiseResolve();\n this._sendPromiseResolve = undefined;\n }\n // Close transport\n await this._transportClose(code, reason);\n // Shutdown spawned tasks\n try {\n await this.shutdownTasks({\n gracePeriod: effectiveGracePeriod * 1000, // Convert to milliseconds\n joinTimeout: this._shutdownJoinTimeout,\n });\n }\n catch (error) {\n logger.warning('task_shutdown_error', {\n error: error instanceof Error ? error.message : String(error),\n });\n }\n // Handle last spawner error\n if (this.lastSpawnerError) {\n this._lastError = this._lastError || this.lastSpawnerError;\n }\n // Resolve close promise\n if (this._closeResolver) {\n this._closeResolver();\n }\n }\n /**\n * Close the underlying transport\n */\n async _transportClose(_code, _reason) {\n // Default implementation does nothing - subclasses can override\n }\n}\n//# sourceMappingURL=base-async-connector.js.map","/**\n * Base class for connector settings.\n *\n * • Never serialized to the wire\n * • Contains runtime knobs (queue sizes, timeouts, TLS flags, etc.)\n * • Used by connector factories to configure connectors in this process\n */\n/**\n * Default values for connector configuration\n */\nexport const ConnectorConfigDefaults = {\n durable: false,\n};\n/**\n * Type guard to check if an object is a valid ConnectorConfig\n */\nexport function isConnectorConfig(obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n const config = obj;\n return typeof config.type === 'string';\n}\n/**\n * Utility function to create a connector config with defaults applied\n */\nexport function createConnectorConfig(config) {\n return {\n ...ConnectorConfigDefaults,\n ...config,\n };\n}\n//# sourceMappingURL=connector-config.js.map","/**\n * Base factory for creating FameConnector instances from either ConnectorConfig or ConnectionGrant.\n *\n * Concrete implementations must define supported grant types and provide grant-to-connector\n * conversion logic.\n */\nimport { ExtensionManager, ExpressionEvaluationPolicy, } from '@naylence/factory';\nimport { getLogger } from '../util/logging.js';\nconst logger = getLogger('naylence.fame.connector.connector_factory');\nexport const CONNECTOR_FACTORY_BASE_TYPE = 'ConnectorFactory';\n/**\n * Abstract base class for connector factories\n */\nexport class ConnectorFactory {\n constructor() {\n this.isDefault = false;\n this.priority = 0;\n }\n /**\n * Evaluate a grant dictionary and return a typed ConnectionGrant instance.\n */\n static evaluateGrant(grant) {\n const grantType = grant.type;\n if (!grantType || typeof grantType !== 'string') {\n throw new Error(\"Missing 'type' field in grant\");\n }\n const factories = ExtensionManager.getExtensionsByType(CONNECTOR_FACTORY_BASE_TYPE);\n for (const [, factoryInfo] of factories) {\n try {\n const factory = this.getGrantAwareFactory(factoryInfo);\n if (!factory) {\n continue;\n }\n const supportedGrants = factory.supportedGrants();\n const grantClass = supportedGrants[grantType];\n if (grantClass) {\n const grantPurpose = grant.purpose;\n const evaluatedConfig = factory.configFromGrant(grant, ExpressionEvaluationPolicy.EVALUATE);\n const evaluatedGrant = factory.grantFromConfig(evaluatedConfig);\n evaluatedGrant.purpose = grantPurpose;\n return evaluatedGrant;\n }\n }\n catch (error) {\n logger.warning(`Failed to evaluate grant with factory ${factoryInfo.constructor.name}: ${error}`);\n continue;\n }\n }\n throw new Error(`No suitable grant found for type ${grantType}`);\n }\n /**\n * Create a connector from either a ConnectorConfig or ConnectionGrant.\n *\n * This method uses the extension discovery mechanism to find an appropriate\n * factory that supports the given grant type.\n */\n static async createConnector(configOrGrant, ...kwargs) {\n // Handle ConnectionGrant first to avoid misclassifying grants as config records\n let connectorConfig;\n let grantType;\n if (this.isConnectionGrant(configOrGrant)) {\n grantType = configOrGrant.type;\n }\n else if (this.isConnectorConfig(configOrGrant)) {\n return await this.createResource(configOrGrant, ...kwargs);\n }\n else if (this.isRecord(configOrGrant)) {\n // Check if this is a grant type by testing known factories\n grantType = configOrGrant.type;\n }\n if (!grantType) {\n throw new Error(\"Missing 'type' field in configuration\");\n }\n const factories = ExtensionManager.getExtensionsByType(CONNECTOR_FACTORY_BASE_TYPE);\n for (const [, factoryInfo] of factories) {\n try {\n const factory = this.getGrantAwareFactory(factoryInfo);\n if (!factory) {\n continue;\n }\n if (factory.supportedGrantTypes().includes(grantType)) {\n // We found a factory that supports this grant type\n connectorConfig = factory.configFromGrant(configOrGrant);\n break;\n }\n }\n catch (error) {\n logger.warning(`Failed to create connector config from grant: ${error}`);\n continue;\n }\n }\n if (!connectorConfig) {\n throw new Error('No suitable connector configuration found');\n }\n return await this.createResource(connectorConfig, ...kwargs);\n }\n /**\n * Create a resource using the appropriate factory\n */\n static async createResource(config, ...kwargs) {\n const factories = ExtensionManager.getExtensionsByType(CONNECTOR_FACTORY_BASE_TYPE);\n const requestedType = config.type;\n const candidateTypes = new Set([requestedType]);\n if (requestedType === 'websocket') {\n candidateTypes.add('WebSocketConnector');\n }\n else if (requestedType === 'WebSocketConnector') {\n candidateTypes.add('websocket');\n }\n for (const candidateType of candidateTypes) {\n for (const [, factoryInfo] of factories) {\n const factory = factoryInfo.instance || new factoryInfo.constructor();\n if (factory.type === candidateType) {\n const normalizedConfig = candidateType === requestedType\n ? config\n : { ...config, type: candidateType };\n return await factory.create(normalizedConfig, ...kwargs);\n }\n }\n }\n throw new Error(`No factory found for connector type: ${config.type}`);\n }\n /**\n * Type guard for ConnectorConfig\n */\n static isConnectorConfig(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'type' in obj &&\n typeof obj.type === 'string');\n }\n /**\n * Type guard for ConnectionGrant\n */\n static isConnectionGrant(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'type' in obj &&\n 'purpose' in obj &&\n typeof obj.type === 'string' &&\n typeof obj.purpose === 'string');\n }\n /**\n * Type guard for Record<string, unknown>\n */\n static isRecord(obj) {\n return obj !== null && typeof obj === 'object' && !Array.isArray(obj);\n }\n static getGrantAwareFactory(factoryInfo) {\n const existing = factoryInfo.instance;\n if (existing && this.isGrantAware(existing)) {\n return existing;\n }\n if (existing && !this.isGrantAware(existing)) {\n logger.warning(`Factory ${factoryInfo.constructor.name} is registered under ${CONNECTOR_FACTORY_BASE_TYPE} but is missing grant conversion APIs; skipping.`);\n return null;\n }\n try {\n const instance = new factoryInfo.constructor();\n if (!this.isGrantAware(instance)) {\n logger.warning(`Factory ${factoryInfo.constructor.name} does not implement grant conversion APIs required by ${CONNECTOR_FACTORY_BASE_TYPE}; skipping.`);\n return null;\n }\n factoryInfo.instance = instance;\n return instance;\n }\n catch (error) {\n logger.warning(`Failed to instantiate factory ${factoryInfo.constructor.name} while resolving grant conversion APIs: ${error}`);\n return null;\n }\n }\n static isGrantAware(candidate) {\n if (candidate instanceof ConnectorFactory) {\n return true;\n }\n const maybe = candidate;\n return (typeof maybe.supportedGrantTypes === 'function' &&\n typeof maybe.supportedGrants === 'function' &&\n typeof maybe.configFromGrant === 'function' &&\n typeof maybe.grantFromConfig === 'function');\n }\n}\n/**\n * Utility function to create a resource using the factory system\n */\nexport async function createResource(config, ...kwargs) {\n const factories = ExtensionManager.getExtensionsByType(CONNECTOR_FACTORY_BASE_TYPE);\n const requestedType = config.type;\n const candidateTypes = new Set([requestedType]);\n if (requestedType === 'websocket') {\n candidateTypes.add('WebSocketConnector');\n }\n else if (requestedType === 'WebSocketConnector') {\n candidateTypes.add('websocket');\n }\n for (const candidateType of candidateTypes) {\n for (const [, factoryInfo] of factories) {\n const factory = factoryInfo.instance || new factoryInfo.constructor();\n if (factory.type === candidateType) {\n const normalizedConfig = candidateType === requestedType\n ? config\n : { ...config, type: candidateType };\n return (await factory.create(normalizedConfig, ...kwargs));\n }\n }\n }\n throw new Error(`No factory found for connector type: ${config.type}`);\n}\n//# sourceMappingURL=connector-factory.js.map","/**\n * WebSocket Connector Implementation\n *\n * A transport adapter that works with both Node.js and browser WebSocket APIs.\n * Supports both native WebSocket clients and server-side WebSocket connections.\n */\nimport { BaseAsyncConnector, } from './base-async-connector.js';\nimport { FameTransportClose } from '../errors/errors.js';\nimport { getLogger } from '../util/logging.js';\nconst logger = getLogger('naylence.fame.connector.websocket_connector');\n/**\n * WebSocket state constants (mirrors standard WebSocket states)\n */\nexport const WebSocketState = {\n CONNECTING: 0,\n OPEN: 1,\n CLOSING: 2,\n CLOSED: 3,\n};\n/**\n * A transport adapter that can work with either:\n * • Browser WebSocket API\n * • Node.js ws library WebSocket\n * • Server-side WebSocket connections (with FastAPI-like interface)\n */\nexport class WebSocketConnector extends BaseAsyncConnector {\n constructor(websocket, config = { type: 'websocket' }) {\n const normalizedConfig = { ...config };\n // Ensure the connector type is always set for factory compatibility\n if (!normalizedConfig.type) {\n normalizedConfig.type = 'websocket';\n }\n const legacyAuthContext = config.authorization_context;\n if (legacyAuthContext !== undefined &&\n normalizedConfig.authorizationContext === undefined) {\n normalizedConfig.authorizationContext = legacyAuthContext;\n }\n super(normalizedConfig);\n this._authHeader = null;\n this._receiveQueue = [];\n this._receiveWaiters = [];\n this._receiveHandlersAttached = false;\n this._removeReceiveHandlers = null;\n this._terminateFallbackTimer = null;\n this._websocket = websocket;\n // Detect if this is a FastAPI-like server WebSocket\n this._isFastApiLike = !!(websocket.receive_bytes &&\n websocket.send_bytes &&\n typeof websocket.receive_bytes === 'function' &&\n typeof websocket.send_bytes === 'function');\n logger.debug('websocket_connector_created', {\n is_fastapi_like: this._isFastApiLike,\n ready_state: websocket.readyState,\n url: websocket.url,\n });\n // For non-FastAPI WebSockets (browser/Node.js ws), attach receive handlers immediately\n // to avoid race conditions where messages arrive before the first _transportReceive() call\n if (!this._isFastApiLike) {\n this._ensureReceiveHandlers();\n }\n }\n /**\n * Update the Authorization header associated with this connector, if provided.\n * For WebSocket transports the header is primarily used during the initial\n * handshake; the stored value is retained for observability or refresh logic.\n */\n setAuthHeader(value) {\n if (typeof value === 'string') {\n this._authHeader = value.trim();\n }\n }\n /**\n * Retrieve the most recently applied Authorization header value, if any.\n */\n get authHeader() {\n return this._authHeader;\n }\n /**\n * Push data to the receive queue for processing (override from base class).\n * This is used to replay buffered messages after authentication.\n */\n async pushToReceive(rawOrEnvelope) {\n // Convert to Uint8Array if needed\n let data;\n if (rawOrEnvelope instanceof Uint8Array) {\n data = rawOrEnvelope;\n }\n else {\n // FameEnvelope or FameChannelMessage - serialize to JSON bytes\n const jsonStr = JSON.stringify(rawOrEnvelope);\n data = new TextEncoder().encode(jsonStr);\n }\n // Push to receive queue - if there's a waiter, resolve it immediately\n if (this._receiveWaiters.length > 0) {\n const waiter = this._receiveWaiters.shift();\n if (waiter.timeoutId) {\n clearTimeout(waiter.timeoutId);\n delete waiter.timeoutId;\n }\n waiter.resolve(data);\n }\n else {\n this._receiveQueue.push(data);\n }\n logger.debug('websocket_message_pushed_to_queue', {\n queueLength: this._receiveQueue.length,\n waitersLength: this._receiveWaiters.length,\n });\n }\n // ---------------------------------------------------------------------\n // Transport Implementation\n // ---------------------------------------------------------------------\n /**\n * Send raw bytes through the WebSocket transport\n */\n async _transportSendBytes(data) {\n try {\n if (this._isFastApiLike && this._websocket.send_bytes) {\n // FastAPI-style server WebSocket\n this._websocket.send_bytes(data);\n }\n else {\n // Browser WebSocket or Node.js ws client\n this._websocket.send(data);\n }\n }\n catch (error) {\n // Handle WebSocket disconnection errors\n if (this._isWebSocketDisconnectError(error)) {\n const closeCode = this._extractCloseCode(error);\n const reason = this._extractCloseReason(error) || 'peer closed';\n throw new FameTransportClose(reason, closeCode);\n }\n throw error;\n }\n }\n /**\n * Receive bytes from the WebSocket with enhanced error handling and cancellation safety\n */\n async _transportReceive() {\n try {\n // Validate WebSocket object before attempting to receive\n if (!this._websocket) {\n throw new FameTransportClose('WebSocket object is null', 1006);\n }\n // Use a timeout to prevent hanging during shutdown scenarios\n const receiveTimeout = 30000; // 30 seconds\n if (this._isFastApiLike && this._websocket.receive_bytes) {\n // FastAPI-style server WebSocket\n const receiveMethod = this._websocket.receive_bytes;\n if (typeof receiveMethod !== 'function') {\n throw new FameTransportClose('FastAPI WebSocket receive_bytes method not available', 1006);\n }\n const result = receiveMethod.call(this._websocket);\n // Ensure we have a Promise\n if (!result || typeof result.then !== 'function') {\n logger.error('fastapi_receive_not_awaitable', {\n result_type: typeof result,\n result_str: String(result).substring(0, 100),\n });\n throw new FameTransportClose(`FastAPI receive_bytes returned non-awaitable: ${typeof result}`, 1006);\n }\n // Add timeout protection\n try {\n return await this._withTimeout(result, receiveTimeout);\n }\n catch (error) {\n if (error instanceof Error && error.name === 'TimeoutError') {\n throw new FameTransportClose('FastAPI receive_bytes timed out', 1006);\n }\n // Handle known WebSocket shutdown race condition\n if (this._isAwaitFutureError(error)) {\n logger.debug('websocket_shutdown_race_condition_handled', {\n note: 'Normal WebSocket close timing - converting to cancellation',\n websocket_state: this._websocket.client_state || 'unknown',\n });\n throw new FameTransportClose('WebSocket cancelled during receive operation', 1006);\n }\n throw error;\n }\n }\n else {\n // Browser WebSocket or Node.js ws client - buffered approach to avoid message loss\n this._ensureReceiveHandlers();\n if (this._receiveQueue.length > 0) {\n return this._receiveQueue.shift();\n }\n return await new Promise((resolve, reject) => {\n const waiter = {\n resolve: (value) => {\n if (waiter.timeoutId) {\n clearTimeout(waiter.timeoutId);\n }\n resolve(value);\n },\n reject: (reason) => {\n if (waiter.timeoutId) {\n clearTimeout(waiter.timeoutId);\n }\n reject(reason);\n },\n };\n waiter.timeoutId = setTimeout(() => {\n const index = this._receiveWaiters.indexOf(waiter);\n if (index !== -1) {\n this._receiveWaiters.splice(index, 1);\n }\n waiter.reject(new FameTransportClose('WebSocket receive timed out', 1006));\n }, receiveTimeout);\n this._receiveWaiters.push(waiter);\n });\n }\n }\n catch (error) {\n if (this._isAwaitFutureError(error)) {\n logger.debug('websocket_shutdown_race_condition_detected', {\n websocket_type: this._websocket.constructor.name,\n is_fastapi: this._isFastApiLike,\n note: 'Normal WebSocket close timing during shutdown',\n });\n throw new FameTransportClose('WebSocket cancelled during receive operation', 1006);\n }\n if (this._isWebSocketDisconnectError(error)) {\n const closeCode = this._extractCloseCode(error);\n const reason = this._extractCloseReason(error) || 'peer closed';\n throw new FameTransportClose(reason, closeCode);\n }\n throw error;\n }\n }\n /**\n * Close the underlying WebSocket transport\n */\n async _transportClose(code, reason) {\n try {\n if (this._isFastApiLike) {\n // FastAPI-style WebSocket has explicit state tracking\n const websocketState = this._websocket.client_state;\n if (websocketState === 'CONNECTED' || websocketState === 1) {\n await this._websocket.close?.(code, reason);\n }\n }\n else {\n // Browser/Node.js WebSocket\n if (this._websocket.readyState === WebSocketState.OPEN) {\n this._websocket.close(code, reason);\n }\n // In Node.js environments (ws library) close() performs a graceful shutdown that\n // may defer socket termination until the peer responds. When shutting down tests we\n // need connections to close promptly to avoid hanging receive loops. If terminate()\n // is available, schedule a fallback to forcefully tear down the socket after a short\n // delay in case the graceful close does not complete in time.\n if (typeof this._websocket.terminate === 'function') {\n const socketAny = this._websocket;\n if (socketAny.readyState !== WebSocketState.CLOSED &&\n this._terminateFallbackTimer === null) {\n this._terminateFallbackTimer = setTimeout(() => {\n this._terminateFallbackTimer = null;\n if (socketAny.readyState !== WebSocketState.CLOSED) {\n try {\n socketAny.terminate();\n logger.debug('websocket_force_terminated', {\n ready_state: socketAny.readyState,\n });\n }\n catch (error) {\n logger.debug('websocket_force_terminate_failed', {\n error: error instanceof Error ? error.message : String(error),\n });\n }\n }\n }, 250);\n }\n }\n }\n }\n catch (error) {\n logger.error('websocket_close_failed', {\n error: error instanceof Error ? error.message : String(error),\n });\n // Don't re-throw - close errors are not critical during shutdown\n }\n finally {\n // If we're shutting down proactively, ensure any pending receivers are released\n this._rejectPendingWaiters(new FameTransportClose(reason, code));\n this._detachReceiveHandlers({ cancelTerminateFallback: false });\n }\n }\n // ---------------------------------------------------------------------\n // Utility Methods\n // ---------------------------------------------------------------------\n /**\n * Check if an error is a WebSocket disconnection error\n */\n _isWebSocketDisconnectError(error) {\n if (error instanceof Error) {\n // Common WebSocket error patterns\n const message = error.message.toLowerCase();\n return (message.includes('websocket') &&\n (message.includes('disconnect') ||\n message.includes('closed') ||\n message.includes('connection') ||\n error.name === 'WebSocketDisconnect'));\n }\n return false;\n }\n /**\n * Check if an error is the \"await wasn't used with future\" error\n */\n _isAwaitFutureError(error) {\n return (error instanceof Error &&\n error.message.includes(\"await wasn't used with future\"));\n }\n /**\n * Extract close code from WebSocket error\n */\n _extractCloseCode(error) {\n if (error && typeof error === 'object') {\n const code = error.code;\n if (typeof code === 'number') {\n return code;\n }\n }\n return 1006; // Default to abnormal closure\n }\n /**\n * Extract close reason from WebSocket error\n */\n _extractCloseReason(error) {\n if (error instanceof Error) {\n return error.message;\n }\n if (error && typeof error === 'object') {\n const reason = error.reason;\n if (typeof reason === 'string') {\n return reason;\n }\n }\n return '';\n }\n /**\n * Add timeout protection to a Promise\n */\n async _withTimeout(promise, timeoutMs) {\n return new Promise((resolve, reject) => {\n const timeoutId = setTimeout(() => {\n const error = new Error('Operation timed out');\n error.name = 'TimeoutError';\n reject(error);\n }, timeoutMs);\n promise\n .then((result) => {\n clearTimeout(timeoutId);\n resolve(result);\n })\n .catch((error) => {\n clearTimeout(timeoutId);\n reject(error);\n });\n });\n }\n _ensureReceiveHandlers() {\n if (this._receiveHandlersAttached) {\n return;\n }\n const handleMessage = (data, isBinary) => {\n try {\n const payload = this._normalizeIncomingMessage(data, isBinary);\n if (this._receiveWaiters.length > 0) {\n const waiter = this._receiveWaiters.shift();\n if (waiter.timeoutId) {\n clearTimeout(waiter.timeoutId);\n delete waiter.timeoutId;\n }\n waiter.resolve(payload);\n }\n else {\n this._receiveQueue.push(payload);\n }\n }\n catch (error) {\n this._rejectPendingWaiters(error instanceof Error ? error : new Error(String(error)));\n }\n };\n const handleClose = (event, rawReason) => {\n let code;\n let reason;\n if (typeof event === 'number') {\n code = event;\n if (typeof rawReason === 'string') {\n reason = rawReason;\n }\n else if (typeof Buffer !== 'undefined' &&\n Buffer.isBuffer?.(rawReason)) {\n reason = rawReason.toString();\n }\n else {\n reason = 'peer closed';\n }\n }\n else {\n code = typeof event?.code === 'number' ? event.code : 1006;\n if (typeof event?.reason === 'string') {\n reason = event.reason;\n }\n else if (typeof Buffer !== 'undefined' &&\n Buffer.isBuffer?.(event?.reason)) {\n reason = event.reason.toString();\n }\n else {\n reason = 'peer closed';\n }\n }\n // Immediately initiate shutdown to prevent sending on closed socket\n // This ensures _closed flag is set before any send attempts\n const error = new FameTransportClose(reason, code);\n this._rejectPendingWaiters(error);\n this._detachReceiveHandlers();\n // Trigger shutdown asynchronously to set _closed flag immediately\n // Use void to explicitly ignore the promise (shutdown is fire-and-forget here)\n void this['_shutdown'](code, reason, undefined, error);\n };\n const handleError = (event) => {\n const candidate = event?.error ?? event;\n const message = candidate instanceof Error\n ? candidate.message\n : (candidate?.message ?? 'WebSocket error');\n this._rejectPendingWaiters(new FameTransportClose(String(message), 1006));\n this._detachReceiveHandlers();\n };\n const socketAny = this._websocket;\n if (typeof socketAny.addEventListener === 'function') {\n const messageListener = (event) => {\n handleMessage(event?.data ?? event, event?.isBinary);\n };\n const closeListener = (event) => handleClose(event);\n const errorListener = (event) => handleError(event);\n socketAny.addEventListener('message', messageListener);\n socketAny.addEventListener('close', closeListener);\n socketAny.addEventListener('error', errorListener);\n this._removeReceiveHandlers = () => {\n socketAny.removeEventListener('message', messageListener);\n socketAny.removeEventListener('close', closeListener);\n socketAny.removeEventListener('error', errorListener);\n };\n }\n else if (typeof socketAny.on === 'function') {\n const onMessageHandler = (data, isBinary) => {\n handleMessage(data, isBinary);\n };\n socketAny.on('message', onMessageHandler);\n socketAny.on('close', handleClose);\n socketAny.on('error', handleError);\n this._removeReceiveHandlers = () => {\n if (typeof socketAny.off === 'function') {\n socketAny.off('message', onMessageHandler);\n socketAny.off('close', handleClose);\n socketAny.off('error', handleError);\n }\n else if (typeof socketAny.removeListener === 'function') {\n socketAny.removeListener('message', onMessageHandler);\n socketAny.removeListener('close', handleClose);\n socketAny.removeListener('error', handleError);\n }\n };\n }\n else {\n const messageHandler = (event) => handleMessage(event?.data ?? event, event?.isBinary);\n const closeHandler = (event) => handleClose(event);\n const errorHandler = (event) => handleError(event);\n this._websocket.onmessage = messageHandler;\n this._websocket.onclose = closeHandler;\n this._websocket.onerror = errorHandler;\n this._removeReceiveHandlers = () => {\n if (this._websocket.onmessage === messageHandler) {\n this._websocket.onmessage = null;\n }\n if (this._websocket.onclose === closeHandler) {\n this._websocket.onclose = null;\n }\n if (this._websocket.onerror === errorHandler) {\n this._websocket.onerror = null;\n }\n };\n }\n this._receiveHandlersAttached = true;\n }\n _detachReceiveHandlers(options = {}) {\n const { cancelTerminateFallback = true } = options;\n if (cancelTerminateFallback && this._terminateFallbackTimer !== null) {\n clearTimeout(this._terminateFallbackTimer);\n this._terminateFallbackTimer = null;\n }\n if (this._removeReceiveHandlers) {\n try {\n this._removeReceiveHandlers();\n }\n catch (error) {\n logger.debug('websocket_remove_handlers_failed', {\n error: error instanceof Error ? error.message : String(error),\n });\n }\n this._removeReceiveHandlers = null;\n }\n this._receiveHandlersAttached = false;\n }\n _normalizeIncomingMessage(data, isBinary) {\n if (data instanceof Uint8Array) {\n return data;\n }\n if (typeof Buffer !== 'undefined' && Buffer.isBuffer?.(data)) {\n return new Uint8Array(data);\n }\n if (data instanceof ArrayBuffer) {\n return new Uint8Array(data);\n }\n if (typeof data === 'string' && !isBinary) {\n return new TextEncoder().encode(data);\n }\n if (typeof data === 'string') {\n return new TextEncoder().encode(data);\n }\n if (data &&\n typeof data === 'object' &&\n 'data' in data) {\n return this._normalizeIncomingMessage(data.data, data.isBinary ?? isBinary);\n }\n throw new FameTransportClose(`Unsupported data type: ${typeof data}`, 1003);\n }\n _rejectPendingWaiters(error) {\n while (this._receiveWaiters.length > 0) {\n const waiter = this._receiveWaiters.shift();\n if (waiter.timeoutId) {\n clearTimeout(waiter.timeoutId);\n delete waiter.timeoutId;\n }\n waiter.reject(error);\n }\n this._receiveQueue.length = 0;\n }\n}\n//# sourceMappingURL=websocket-connector.js.map","import { FameFabric, FameServiceProxy, } from '@naylence/core';\nconst RPC_REGISTRY = Symbol('naylence.rpc.registry');\nfunction isPlainObject(value) {\n return Boolean(value &&\n typeof value === 'object' &&\n Object.prototype.toString.call(value) === '[object Object]');\n}\nfunction getOrCreateRegistry(ctor) {\n if (!ctor[RPC_REGISTRY]) {\n const parentRegistry = ctor.__proto__?.[RPC_REGISTRY];\n ctor[RPC_REGISTRY] = parentRegistry\n ? new Map(parentRegistry)\n : new Map();\n }\n return ctor[RPC_REGISTRY];\n}\nfunction normalizeParams(params) {\n if (!params || typeof params !== 'object') {\n return { positional: [], keyword: {} };\n }\n const positional = Array.isArray(params.args) ? [...params.args] : [];\n const keyword = isPlainObject(params.kwargs) ? { ...params.kwargs } : {};\n if (positional.length === 0 &&\n Object.keys(keyword).length === 0 &&\n isPlainObject(params)) {\n return { positional: [], keyword: { ...params } };\n }\n return { positional, keyword };\n}\nexport function operation(targetOrOptions, propertyKey, descriptor) {\n if (typeof propertyKey === 'string' || typeof propertyKey === 'symbol') {\n const decorator = createDecorator();\n decorator(targetOrOptions, propertyKey, descriptor);\n return;\n }\n const options = (targetOrOptions ?? {});\n return createDecorator(options);\n}\nfunction createDecorator(options = {}) {\n return (target, propertyKey, descriptor) => {\n if (!descriptor || typeof descriptor.value !== 'function') {\n throw new TypeError('@operation can only be applied to methods');\n }\n const ctor = target.constructor;\n const registry = getOrCreateRegistry(ctor);\n const rpcName = options.name ?? propertyKey;\n registry.set(rpcName, {\n propertyKey: propertyKey,\n streaming: Boolean(options.streaming),\n });\n };\n}\nexport class RpcMixin {\n static get rpcRegistry() {\n return getOrCreateRegistry(this);\n }\n getRpcRegistry() {\n return this.constructor.rpcRegistry;\n }\n async handleRpcRequest(method, params) {\n const registry = this.getRpcRegistry();\n const entry = registry.get(method);\n if (!entry) {\n throw new Error(`Unknown RPC method: ${method}`);\n }\n const handler = this[entry.propertyKey];\n if (typeof handler !== 'function') {\n throw new TypeError(`RPC handler '${entry.propertyKey}' is not callable`);\n }\n const { positional, keyword } = normalizeParams(params);\n const args = [...positional];\n if (Object.keys(keyword).length > 0) {\n args.push(keyword);\n }\n try {\n const result = handler.apply(this, args);\n if (entry.streaming) {\n return result;\n }\n return await result;\n }\n catch (error) {\n throw error;\n }\n }\n}\nfunction extractStreamFlag(args) {\n if (args.length === 0) {\n return { stream: false, args };\n }\n const last = args[args.length - 1];\n if (isPlainObject(last) &&\n Object.prototype.hasOwnProperty.call(last, '_stream')) {\n const { _stream, ...rest } = last;\n const cleanedArgs = [...args.slice(0, -1)];\n if (Object.keys(rest).length > 0) {\n cleanedArgs.push(rest);\n }\n return { stream: Boolean(_stream), args: cleanedArgs };\n }\n if (args.length === 1 &&\n isPlainObject(args[0]) &&\n Object.prototype.hasOwnProperty.call(args[0], '_stream')) {\n const { _stream, ...rest } = args[0];\n return {\n stream: Boolean(_stream),\n args: Object.keys(rest).length ? [rest] : [],\n };\n }\n return { stream: false, args };\n}\nfunction wrapRpcProxy(target) {\n return new Proxy(target, {\n get(target, prop, receiver) {\n if (typeof prop === 'string' &&\n !prop.startsWith('_') &&\n !(prop in target)) {\n return async (...rawArgs) => {\n const { stream, args } = extractStreamFlag(rawArgs);\n let params;\n if (args.length === 1 && isPlainObject(args[0])) {\n params = args[0];\n }\n else {\n params = { args };\n }\n const internal = target;\n const timeout = internal._timeout;\n if (stream) {\n const fabric = internal._fabric || FameFabric.current();\n if (internal._address) {\n return await fabric.invokeStream(internal._address, prop, params, timeout);\n }\n if (internal._capabilities) {\n return await fabric.invokeByCapabilityStream(internal._capabilities, prop, params, timeout);\n }\n throw new Error('RPC proxy must be bound to an address or capabilities');\n }\n if (internal._address) {\n return await internal._invoke(internal._address, prop, params, timeout);\n }\n if (internal._capabilities) {\n return await internal._invokeByCapability(internal._capabilities, prop, params, timeout);\n }\n throw new Error('RPC proxy must be bound to an address or capabilities');\n };\n }\n return Reflect.get(target, prop, receiver);\n },\n });\n}\nexport function createRpcProxy(options) {\n const base = new FameServiceProxy(options);\n return wrapRpcProxy(base);\n}\nexport class RpcProxy extends FameServiceProxy {\n constructor(options = {}) {\n super(options);\n return wrapRpcProxy(this);\n }\n static remoteByAddress(address, options = {}) {\n const proxy = FameServiceProxy.remoteByAddress(address, options);\n return wrapRpcProxy(proxy);\n }\n static remoteByCapabilities(capabilities, options = {}) {\n const proxy = FameServiceProxy.remoteByCapabilities(capabilities, options);\n return wrapRpcProxy(proxy);\n }\n}\n//# sourceMappingURL=rpc.js.map","/**\n * AUTO-GENERATED FILE. DO NOT EDIT DIRECTLY.\n * Generated by scripts/generate-factory-manifest.mjs\n *\n * Provides the list of runtime factory modules for registration.\n */\nexport const MODULES = [\n \"./connector/http-listener-factory.js\",\n \"./connector/http-stateless-connector-factory.js\",\n \"./connector/websocket-connector-factory.js\",\n \"./connector/websocket-listener-factory.js\",\n \"./delivery/at-least-once-delivery-policy-factory.js\",\n \"./delivery/at-most-once-delivery-policy-factory.js\",\n \"./delivery/delivery-profile-factory.js\",\n \"./fabric/in-process-fame-fabric-factory.js\",\n \"./node/admission/admission-profile-factory.js\",\n \"./node/admission/direct-admission-client-factory.js\",\n \"./node/admission/noop-admission-client-factory.js\",\n \"./node/admission/welcome-service-client-factory.js\",\n \"./node/node-factory.js\",\n \"./placement/static-node-placement-strategy-factory.js\",\n \"./placement/websocket-node-placement-strategy-factory.js\",\n \"./security/auth/bearer-token-header-auth-injection-strategy-factory.js\",\n \"./security/auth/default-authorizer-factory.js\",\n \"./security/auth/jwks-jwt-token-verifier-factory.js\",\n \"./security/auth/jwt-token-issuer-factory.js\",\n \"./security/auth/jwt-token-verifier-factory.js\",\n \"./security/auth/no-auth-injection-strategy-factory.js\",\n \"./security/auth/none-token-provider-factory.js\",\n \"./security/auth/noop-authorizer-factory.js\",\n \"./security/auth/noop-token-issuer-factory.js\",\n \"./security/auth/noop-token-verifier-factory.js\",\n \"./security/auth/oauth2-authorizer-factory.js\",\n \"./security/auth/oauth2-client-credentials-token-provider-factory.js\",\n \"./security/auth/query-param-auth-injection-strategy-factory.js\",\n \"./security/auth/shared-secret-authorizer-factory.js\",\n \"./security/auth/shared-secret-token-provider-factory.js\",\n \"./security/auth/shared-secret-token-verifier-factory.js\",\n \"./security/auth/static-token-provider-factory.js\",\n \"./security/auth/websocket-subprotocol-auth-injection-strategy-factory.js\",\n \"./security/credential/dev-fixed-key-credential-provider-factory.js\",\n \"./security/credential/env-credential-provider-factory.js\",\n \"./security/credential/none-credential-provider-factory.js\",\n \"./security/credential/prompt-credential-provider-factory.js\",\n \"./security/credential/secret-store-credential-provider-factory.js\",\n \"./security/credential/session-key-credential-provider-factory.js\",\n \"./security/credential/static-credential-provider-factory.js\",\n \"./security/default-security-manager-factory.js\",\n \"./security/encryption/noop-encryption-manager-factory.js\",\n \"./security/encryption/noop-secure-channel-manager-factory.js\",\n \"./security/keys/default-key-manager-factory.js\",\n \"./security/keys/in-memory-key-store-factory.js\",\n \"./security/keys/noop-key-validator-factory.js\",\n \"./security/node-security-profile-factory.js\",\n \"./security/policy/default-security-policy-factory.js\",\n \"./security/policy/no-security-policy-factory.js\",\n \"./security/signing/eddsa-envelope-signer-factory.js\",\n \"./security/signing/eddsa-envelope-verifier-factory.js\",\n \"./sentinel/capability-aware-routing-policy-factory.js\",\n \"./sentinel/composite-routing-policy-factory.js\",\n \"./sentinel/hybrid-path-routing-policy-factory.js\",\n \"./sentinel/load-balancing/composite-load-balancing-strategy-factory.js\",\n \"./sentinel/load-balancing/hrw-load-balancing-strategy-factory.js\",\n \"./sentinel/load-balancing/load-balancing-profile-factory.js\",\n \"./sentinel/load-balancing/random-load-balancing-strategy-factory.js\",\n \"./sentinel/load-balancing/round-robin-load-balancing-strategy-factory.js\",\n \"./sentinel/load-balancing/sticky-load-balancing-strategy-factory.js\",\n \"./sentinel/routing-profile-factory.js\",\n \"./sentinel/sentinel-factory.js\",\n \"./sentinel/store/route-store-factory.js\",\n \"./stickiness/simple-load-balancer-stickiness-manager-factory.js\",\n \"./telemetry/noop-trace-emitter-factory.js\",\n \"./telemetry/open-telemetry-trace-emitter-factory.js\",\n \"./telemetry/trace-emitter-profile-factory.js\",\n \"./welcome/default-welcome-service-factory.js\"\n];\n//# sourceMappingURL=factory-manifest.js.map","import { Registry as DefaultRegistry } from '@naylence/factory';\nimport { MODULES } from '../factory-manifest.js';\nfunction resolveModuleCandidates(spec) {\n const base = spec.startsWith('./') ? `../${spec.slice(2)}` : spec;\n if (base.endsWith('.js')) {\n // Prefer built JS artifacts to avoid browser bundlers fetching missing TS sources.\n return [base, base.replace(/\\.js$/u, '.ts')];\n }\n return [base];\n}\nexport async function registerDefaultFactories(registry = DefaultRegistry) {\n await Promise.all(MODULES.map(async (spec) => {\n try {\n const candidates = resolveModuleCandidates(spec);\n let mod;\n let lastError;\n for (const candidate of candidates) {\n try {\n mod = await import(/* @vite-ignore */ candidate);\n lastError = undefined;\n break;\n }\n catch (error) {\n lastError = error;\n const isLastCandidate = candidate === candidates[candidates.length - 1];\n if (isLastCandidate) {\n throw error;\n }\n const message = error instanceof Error ? error.message : String(error);\n const moduleNotFound = message.includes('Cannot find module') ||\n message.includes('ERR_MODULE_NOT_FOUND') ||\n message.includes('Unknown file extension');\n if (!moduleNotFound) {\n throw error;\n }\n }\n }\n if (!mod) {\n throw (lastError ?? new Error(`Unable to import factory module: ${spec}`));\n }\n const meta = mod.FACTORY_META;\n const Ctor = mod.default;\n if (!meta?.base || !meta?.key || typeof Ctor !== 'function') {\n console.warn('[factory-manifest] skipped', spec, '— missing FACTORY_META or default export ctor');\n return;\n }\n registry.registerFactory(meta.base, meta.key, Ctor);\n }\n catch (error) {\n const reason = error instanceof Error ? error.message : String(error);\n console.warn('[factory-manifest] skipped', spec, '-', reason);\n }\n }));\n}\n/**\n * Register all default Naylence runtime factories into the supplied registry.\n *\n * @param registry Registry implementation to receive the default runtime factories.\n */\nexport async function registerRuntimeFactories(registry = DefaultRegistry) {\n await registerDefaultFactories(registry);\n}\n//# sourceMappingURL=register-runtime-factories.js.map","let webCryptoAvailable = null;\nfunction detectWebCrypto() {\n if (webCryptoAvailable !== null) {\n return webCryptoAvailable;\n }\n webCryptoAvailable =\n typeof globalThis.crypto !== 'undefined' &&\n typeof globalThis.crypto.subtle !== 'undefined';\n return webCryptoAvailable;\n}\nfunction detectNativeNodeCrypto() {\n if (typeof globalThis.process === 'undefined' ||\n typeof globalThis.process.versions?.node !== 'string') {\n return false;\n }\n const moduleId = `node:${'crypto'}`;\n try {\n const directRequire = typeof require === 'function'\n ? require\n : globalThis.require;\n if (typeof directRequire === 'function') {\n const { webcrypto } = directRequire(moduleId);\n return Boolean(webcrypto?.subtle);\n }\n const lazyRequire = Function('return typeof require === \"function\" ? require : null')();\n if (typeof lazyRequire === 'function') {\n const { webcrypto } = lazyRequire(moduleId);\n return Boolean(webcrypto?.subtle);\n }\n }\n catch {\n // Ignore resolution errors and fall through to false\n }\n return false;\n}\nexport function hasCryptoSupport() {\n return detectWebCrypto() || detectNativeNodeCrypto();\n}\nexport function requireCryptoSupport() {\n if (!hasCryptoSupport()) {\n throw new Error(\"This functionality requires WebCrypto support. Ensure 'crypto.subtle' is available in your runtime or include a compatible polyfill.\");\n }\n}\n//# sourceMappingURL=crypto-dependencies.js.map","const DEFAULT_DB_NAME = 'naylence-secrets';\nconst DEFAULT_STORE_NAME = 'wrapped-master-key';\nconst DEFAULT_KEY_ID = 'master';\nconst DEFAULT_ITERATIONS = 200000;\nconst WRAPPED_RECORD_VERSION = 1;\nconst MASTER_KEY_LENGTH = 32;\nconst SALT_LENGTH = 16;\nconst GCM_IV_LENGTH = 12;\nexport class InvalidPassphraseError extends Error {\n constructor(message = 'Unable to decrypt master key with provided passphrase') {\n super(message);\n this.name = 'InvalidPassphraseError';\n }\n}\nlet cachedNodeCrypto;\nlet cachedCrypto;\nasync function loadNodeCrypto() {\n if (cachedNodeCrypto !== undefined) {\n return cachedNodeCrypto;\n }\n try {\n cachedNodeCrypto = await import('node:crypto');\n return cachedNodeCrypto;\n }\n catch {\n cachedNodeCrypto = null;\n return null;\n }\n}\nasync function getCrypto() {\n if (cachedCrypto) {\n return cachedCrypto;\n }\n if (typeof globalThis.crypto !== 'undefined' && globalThis.crypto.subtle) {\n const cryptoObject = globalThis.crypto;\n cachedCrypto = cryptoObject;\n return cryptoObject;\n }\n const nodeCrypto = await loadNodeCrypto();\n if (nodeCrypto?.webcrypto?.subtle) {\n const cryptoObject = nodeCrypto.webcrypto;\n cachedCrypto = cryptoObject;\n return cryptoObject;\n }\n throw new Error('Web Crypto API is not available in this environment');\n}\nasync function getRandomBytes(length) {\n const cryptoObject = await getCrypto();\n if (typeof cryptoObject.getRandomValues === 'function') {\n const buffer = new Uint8Array(length);\n cryptoObject.getRandomValues(buffer);\n return buffer;\n }\n const nodeCrypto = await loadNodeCrypto();\n if (nodeCrypto?.randomBytes) {\n const buffer = nodeCrypto.randomBytes(length);\n return new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n }\n throw new Error('Unable to generate secure random bytes in this environment');\n}\nfunction toArrayBuffer(data) {\n const buffer = new ArrayBuffer(data.byteLength);\n new Uint8Array(buffer).set(data);\n return buffer;\n}\nfunction base64Encode(data) {\n if (typeof btoa === 'function') {\n let binary = '';\n for (let i = 0; i < data.length; i++) {\n binary += String.fromCharCode(data[i]);\n }\n return btoa(binary);\n }\n if (typeof Buffer !== 'undefined') {\n return Buffer.from(data).toString('base64');\n }\n throw new Error('Base64 encoding is not available in this environment');\n}\nfunction base64Decode(value) {\n if (typeof atob === 'function') {\n const binary = atob(value);\n const buffer = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) {\n buffer[i] = binary.charCodeAt(i);\n }\n return buffer;\n }\n if (typeof Buffer !== 'undefined') {\n return new Uint8Array(Buffer.from(value, 'base64'));\n }\n throw new Error('Base64 decoding is not available in this environment');\n}\nconst UTF8_ENCODER = new TextEncoder();\nasync function deriveKEK(passphrase, salt, iterations) {\n const cryptoObject = await getCrypto();\n const subtle = cryptoObject.subtle;\n const baseKey = await subtle.importKey('raw', UTF8_ENCODER.encode(passphrase), { name: 'PBKDF2' }, false, ['deriveKey']);\n return subtle.deriveKey({\n name: 'PBKDF2',\n salt: toArrayBuffer(salt),\n iterations,\n hash: 'SHA-256',\n }, baseKey, { name: 'AES-GCM', length: 256 }, false, ['encrypt', 'decrypt']);\n}\nasync function aesGcmEncrypt(key, data) {\n const cryptoObject = await getCrypto();\n const subtle = cryptoObject.subtle;\n const iv = await getRandomBytes(GCM_IV_LENGTH);\n const ciphertextBuffer = await subtle.encrypt({ name: 'AES-GCM', iv: toArrayBuffer(iv) }, key, toArrayBuffer(data));\n return { iv, ciphertext: new Uint8Array(ciphertextBuffer) };\n}\nasync function aesGcmDecrypt(key, iv, data) {\n const cryptoObject = await getCrypto();\n const subtle = cryptoObject.subtle;\n const plaintextBuffer = await subtle.decrypt({ name: 'AES-GCM', iv: toArrayBuffer(iv) }, key, toArrayBuffer(data));\n return new Uint8Array(plaintextBuffer);\n}\nasync function openDatabase(factory, dbName, storeName) {\n return new Promise((resolve, reject) => {\n const request = factory.open(dbName, 1);\n request.onerror = () => {\n reject(request.error ?? new Error('Failed to open IndexedDB'));\n };\n request.onupgradeneeded = () => {\n const db = request.result;\n if (!db.objectStoreNames.contains(storeName)) {\n db.createObjectStore(storeName);\n }\n };\n request.onsuccess = () => {\n resolve(request.result);\n };\n });\n}\nasync function readWrappedRecord(db, storeName, keyId) {\n return new Promise((resolve, reject) => {\n const tx = db.transaction(storeName, 'readonly');\n const store = tx.objectStore(storeName);\n const request = store.get(keyId);\n request.onerror = () => {\n reject(request.error ?? new Error('Failed to read wrapped master key'));\n };\n request.onsuccess = () => {\n resolve(request.result ?? null);\n };\n });\n}\nasync function writeWrappedRecord(db, storeName, keyId, record) {\n return new Promise((resolve, reject) => {\n const tx = db.transaction(storeName, 'readwrite');\n const store = tx.objectStore(storeName);\n const request = store.put(record, keyId);\n request.onerror = () => {\n reject(request.error ?? new Error('Failed to persist wrapped master key'));\n };\n tx.oncomplete = () => resolve();\n tx.onerror = () => {\n reject(tx.error ?? new Error('Failed to persist wrapped master key'));\n };\n });\n}\nexport class BrowserWrappedKeyCredentialProvider {\n constructor(options) {\n this.cachedKey = null;\n this.inflight = null;\n if (!options?.promptPassphrase) {\n throw new Error('promptPassphrase callback is required');\n }\n this.dbName = options.dbName ?? DEFAULT_DB_NAME;\n this.storeName = options.storeName ?? DEFAULT_STORE_NAME;\n this.keyId = options.keyId ?? DEFAULT_KEY_ID;\n this.iterations = options.iterations ?? DEFAULT_ITERATIONS;\n this.promptPassphrase = options.promptPassphrase;\n if (options.idbFactory) {\n this.idbFactory = options.idbFactory;\n }\n else if (typeof indexedDB !== 'undefined') {\n this.idbFactory = indexedDB;\n }\n else {\n throw new Error('IndexedDB is not available in this environment');\n }\n }\n async get() {\n if (this.cachedKey) {\n return this.cachedKey;\n }\n if (this.inflight) {\n return this.inflight;\n }\n this.inflight = this.loadOrCreateKey();\n try {\n const key = await this.inflight;\n this.cachedKey = key;\n return key;\n }\n finally {\n this.inflight = null;\n }\n }\n async loadOrCreateKey() {\n const db = await openDatabase(this.idbFactory, this.dbName, this.storeName);\n try {\n const existing = await readWrappedRecord(db, this.storeName, this.keyId);\n if (!existing) {\n return await this.createAndPersistKey(db);\n }\n return await this.unwrapExistingKey(existing);\n }\n finally {\n db.close();\n }\n }\n async createAndPersistKey(db) {\n const passphrase = (await this.promptPassphrase()).trim();\n if (!passphrase) {\n throw new Error('Passphrase must not be empty');\n }\n const salt = await getRandomBytes(SALT_LENGTH);\n const kek = await deriveKEK(passphrase, salt, this.iterations);\n const masterKey = await getRandomBytes(MASTER_KEY_LENGTH);\n const { iv, ciphertext } = await aesGcmEncrypt(kek, masterKey);\n const record = {\n version: WRAPPED_RECORD_VERSION,\n kdf: {\n algo: 'PBKDF2',\n hash: 'SHA-256',\n iterations: this.iterations,\n saltB64: base64Encode(salt),\n },\n wrap: {\n algo: 'AES-GCM',\n ivB64: base64Encode(iv),\n ciphertextB64: base64Encode(ciphertext),\n },\n };\n await writeWrappedRecord(db, this.storeName, this.keyId, record);\n return masterKey;\n }\n async unwrapExistingKey(record) {\n if (record.version !== WRAPPED_RECORD_VERSION) {\n throw new Error(`Unsupported wrapped key version: ${record.version}`);\n }\n if (record.kdf.algo !== 'PBKDF2' || record.kdf.hash !== 'SHA-256') {\n throw new Error('Unsupported KDF configuration for wrapped master key');\n }\n if (record.wrap.algo !== 'AES-GCM') {\n throw new Error('Unsupported wrapping algorithm for wrapped master key');\n }\n const passphrase = (await this.promptPassphrase()).trim();\n if (!passphrase) {\n throw new InvalidPassphraseError();\n }\n const { saltB64, iterations } = record.kdf;\n const { ivB64, ciphertextB64 } = record.wrap;\n const salt = base64Decode(saltB64);\n const iv = base64Decode(ivB64);\n const ciphertext = base64Decode(ciphertextB64);\n try {\n const kek = await deriveKEK(passphrase, salt, iterations);\n return await aesGcmDecrypt(kek, iv, ciphertext);\n }\n catch (error) {\n throw new InvalidPassphraseError(error instanceof Error ? error.message : 'Unable to decrypt master key');\n }\n }\n}\n//# sourceMappingURL=browser-wrapped-key-credential-provider.js.map","/**\n * Browser-friendly entry point for Naylence Runtime.\n *\n * Exposes utilities, channels, connectors, and cross-platform helpers that\n * do not rely on Node.js-only dependencies. This file purposefully excludes\n * modules such as the SQLite storage providers and any prompt utilities that\n * expect access to the Node.js standard library.\n */\n// Re-export everything from naylence-core for protocol primitives\nexport * from '@naylence/core';\n// Cross-platform Fame runtime exports\nexport * from './naylence/fame/errors/index.js';\nexport * from './naylence/fame/util/index.js';\nexport * from './naylence/fame/channel/index.js';\n// Storage providers that are safe for browsers (in-memory + IndexedDB)\nexport * from './naylence/fame/storage/index.js';\nexport { getNode, getCurrentNode, withNodeContextAsync, runWithNodeContext, } from './naylence/fame/node/node-context-stack.js';\n// Connector layer exports trimmed to browser-safe components\nexport { BaseAsyncConnector, } from './naylence/fame/connector/base-async-connector.js';\nexport { ConnectorConfigDefaults, isConnectorConfig, createConnectorConfig, } from './naylence/fame/connector/connector-config.js';\nexport { ConnectorFactory, createResource, } from './naylence/fame/connector/connector-factory.js';\nexport { WebSocketConnector, WebSocketState, } from './naylence/fame/connector/websocket-connector.js';\nexport { _NoopFlowController } from './naylence/fame/connector/noop-flow-controller.js';\n// RPC helpers are shared\nexport { RpcProxy, createRpcProxy, RpcMixin, operation, } from './naylence/fame/service/rpc.js';\n// Runtime factory registration exposes no Node.js specifics\nexport { registerDefaultFactories, registerRuntimeFactories, } from './naylence/fame/util/register-runtime-factories.js';\n// Browser-facing crypto helpers\nexport { hasCryptoSupport, requireCryptoSupport, } from './naylence/fame/security/crypto/crypto-dependencies.js';\nexport { BrowserWrappedKeyCredentialProvider, InvalidPassphraseError, } from './naylence/fame/security/credential/browser-wrapped-key-credential-provider.js';\nconst isBrowserEnvironment = typeof window !== 'undefined' && typeof document !== 'undefined';\nif (isBrowserEnvironment) {\n const runtimePluginModulePromise = import('./plugin.js');\n const globalScope = globalThis;\n if (typeof globalScope.__naylenceFactoryDynamicImporter !== 'function') {\n const loader = async (specifier) => {\n if (specifier === '@naylence/runtime' ||\n specifier === '@naylence/runtime/' ||\n specifier === '@naylence/runtime/plugin' ||\n specifier === '@naylence/runtime/plugin.js' ||\n specifier === '@naylence/runtime/dist/esm/plugin.js') {\n return runtimePluginModulePromise;\n }\n return import(/* @vite-ignore */ specifier);\n };\n globalScope.__naylenceFactoryDynamicImporter = loader;\n }\n}\n//# sourceMappingURL=browser.js.map","import { registerRuntimeFactories } from './naylence/fame/util/register-runtime-factories.js';\nlet initialized = false;\nconst runtimePlugin = {\n name: 'naylence:runtime',\n async register() {\n // console.log('[naylence:runtime] register() called, initialized=', initialized);\n if (initialized) {\n // console.log('[naylence:runtime] already initialized, skipping');\n return;\n }\n initialized = true;\n // console.log('[naylence:runtime] registering runtime factories...');\n // Register factories from manifest\n await registerRuntimeFactories();\n // Import modules with side-effect registrations (not in manifest)\n await import('./naylence/fame/transport/websocket-transport-provisioner.js');\n // console.log('[naylence:runtime] runtime factories registered');\n },\n};\nexport default runtimePlugin;\nexport const RUNTIME_PLUGIN_SPECIFIER = runtimePlugin.name;\n//# sourceMappingURL=plugin.js.map","export const GRANT_PURPOSE_NODE_ATTACH = 'node.attach';\nexport function isGrant(candidate) {\n if (!candidate || typeof candidate !== 'object') {\n return false;\n }\n const grant = candidate;\n return typeof grant.type === 'string' && typeof grant.purpose === 'string';\n}\nexport function assertGrant(candidate, message = 'Invalid grant object') {\n if (!isGrant(candidate)) {\n throw new TypeError(message);\n }\n}\n//# sourceMappingURL=grant.js.map","import { assertGrant, isGrant } from './grant.js';\nconst AUTH_INJECTION_STRATEGY_TYPE_ALIASES = {\n BearerTokenHeaderAuthInjectionStrategy: 'BearerTokenHeaderAuth',\n BearerTokenHeaderAuthStrategy: 'BearerTokenHeaderAuth',\n NoAuthInjectionStrategy: 'NoAuth',\n QueryParamAuthInjectionStrategy: 'QueryParamAuth',\n QueryParamAuthStrategy: 'QueryParamAuth',\n WebSocketSubprotocolAuthInjectionStrategy: 'WebSocketSubprotocolAuth',\n WebSocketSubprotocolAuthStrategy: 'WebSocketSubprotocolAuth',\n};\nexport function canonicalizeAuthConfig(auth) {\n if (!auth || typeof auth !== 'object' || Array.isArray(auth)) {\n return undefined;\n }\n const typeValue = auth.type;\n if (typeof typeValue !== 'string') {\n return auth;\n }\n const normalizedType = AUTH_INJECTION_STRATEGY_TYPE_ALIASES[typeValue] ?? typeValue;\n if (normalizedType === typeValue) {\n return auth;\n }\n return {\n ...auth,\n type: normalizedType,\n };\n}\nexport function isConnectionGrant(candidate) {\n return isGrant(candidate);\n}\nexport function assertConnectionGrant(candidate, message = 'Invalid connection grant') {\n assertGrant(candidate, message);\n}\n//# sourceMappingURL=connection-grant.js.map","import { GRANT_PURPOSE_NODE_ATTACH } from './grant.js';\nimport { canonicalizeAuthConfig, assertConnectionGrant, isConnectionGrant, } from './connection-grant.js';\nexport const WEBSOCKET_CONNECTION_GRANT_TYPE = 'WebSocketConnectionGrant';\nexport function isWebSocketConnectionGrant(candidate) {\n return (isConnectionGrant(candidate) &&\n candidate.type ===\n WEBSOCKET_CONNECTION_GRANT_TYPE &&\n (typeof candidate.url === 'string' ||\n typeof candidate.url ===\n 'undefined'));\n}\nexport function normalizeWebSocketConnectionGrant(candidate) {\n const type = typeof candidate.type === 'string'\n ? candidate.type\n : WEBSOCKET_CONNECTION_GRANT_TYPE;\n if (type !== WEBSOCKET_CONNECTION_GRANT_TYPE) {\n throw new TypeError(`WebSocketConnectionGrant expected type \"${WEBSOCKET_CONNECTION_GRANT_TYPE}\", received \"${type}\"`);\n }\n const purpose = typeof candidate.purpose === 'string' && candidate.purpose.length > 0\n ? candidate.purpose\n : GRANT_PURPOSE_NODE_ATTACH;\n assertConnectionGrant({ ...candidate, type, purpose }, 'WebSocketConnectionGrant requires a valid base grant');\n const urlValue = candidate.url;\n if (urlValue !== undefined &&\n (typeof urlValue !== 'string' || urlValue.trim().length === 0)) {\n throw new TypeError('WebSocketConnectionGrant \"url\" must be a non-empty string when provided');\n }\n const base = {\n type,\n purpose,\n };\n if (typeof urlValue === 'string') {\n base.url = urlValue;\n }\n const authConfig = canonicalizeAuthConfig(candidate.auth);\n if (authConfig) {\n base.auth = authConfig;\n }\n return base;\n}\nexport function websocketGrantToConnectorConfig(grant) {\n const normalized = normalizeWebSocketConnectionGrant(grant);\n const config = {\n type: 'WebSocketConnector',\n };\n if (normalized.url) {\n config.url = normalized.url;\n }\n if (normalized.auth !== undefined) {\n config.auth = normalized.auth;\n }\n return config;\n}\n//# sourceMappingURL=websocket-connection-grant.js.map","import { AbstractResourceFactory, createDefaultResource, createResource, } from '@naylence/factory';\nexport const TRANSPORT_PROVISIONER_FACTORY_BASE_TYPE = 'TransportProvisionerFactory';\nexport class TransportProvisionerFactory extends AbstractResourceFactory {\n static async createTransportProvisioner(config, options = {}) {\n if (config) {\n const provisioner = await createResource(TRANSPORT_PROVISIONER_FACTORY_BASE_TYPE, config, options);\n if (!provisioner) {\n throw new Error('Failed to create transport provisioner from configuration');\n }\n return provisioner;\n }\n let provisioner = null;\n try {\n provisioner = await createDefaultResource(TRANSPORT_PROVISIONER_FACTORY_BASE_TYPE, null, options);\n }\n catch (error) {\n const message = 'Failed to create default transport provisioner' +\n (error instanceof Error && error.message ? `: ${error.message}` : '');\n throw new Error(message);\n }\n if (!provisioner) {\n throw new Error('Failed to create default transport provisioner');\n }\n return provisioner;\n }\n}\n//# sourceMappingURL=transport-provisioner.js.map","import { registerFactory } from '@naylence/factory';\nimport { GRANT_PURPOSE_NODE_ATTACH } from '../grants/grant.js';\nimport { WEBSOCKET_CONNECTION_GRANT_TYPE, normalizeWebSocketConnectionGrant, } from '../grants/websocket-connection-grant.js';\nimport { TRANSPORT_PROVISIONER_FACTORY_BASE_TYPE, TransportProvisionerFactory, } from './transport-provisioner.js';\nexport class WebSocketTransportProvisioner {\n constructor(options) {\n this.url = options.url;\n this.ttlSec = options.ttlSec;\n }\n async provision(_decision, hello, _fullMetadata, attachToken) {\n const supportedTransports = hello.supportedTransports;\n if (Array.isArray(supportedTransports) && supportedTransports.length > 0) {\n const hasWebSocket = supportedTransports.includes(WebSocketTransportProvisioner.TRANSPORT_TYPE);\n if (!hasWebSocket) {\n throw new Error(`Unsupported transports: ${supportedTransports.join(', ')}`);\n }\n }\n let authConfig;\n if (attachToken) {\n const tokenProviderConfig = {\n type: 'StaticTokenProvider',\n token: attachToken,\n };\n authConfig = {\n type: 'WebSocketSubprotocolAuth',\n tokenProvider: tokenProviderConfig,\n };\n }\n const grant = normalizeWebSocketConnectionGrant({\n type: WEBSOCKET_CONNECTION_GRANT_TYPE,\n purpose: GRANT_PURPOSE_NODE_ATTACH,\n url: this.url,\n auth: authConfig,\n });\n const result = {\n connectionGrant: grant,\n cleanupHandle: null,\n };\n if (this.ttlSec !== undefined) {\n result.metadata = {\n ...(result.metadata ?? {}),\n ttlSec: this.ttlSec,\n };\n }\n return result;\n }\n async deprovision(_cleanupHandle) {\n // No-op for stateless WebSocket transport provisioners\n }\n}\nWebSocketTransportProvisioner.TRANSPORT_TYPE = 'websocket';\nexport class WebSocketTransportProvisionerFactory extends TransportProvisionerFactory {\n constructor() {\n super(...arguments);\n this.type = 'WebSocketTransportProvisioner';\n this.isDefault = true;\n }\n async create(config) {\n const options = normalizeConfig(config);\n return new WebSocketTransportProvisioner(options);\n }\n}\nfunction normalizeConfig(config) {\n if (!config) {\n throw new Error('WebSocketTransportProvisioner requires configuration');\n }\n const candidate = config;\n const typeValue = typeof candidate.type === 'string' ? candidate.type : undefined;\n if (typeValue !== 'WebSocketTransportProvisioner') {\n throw new Error(`WebSocketTransportProvisionerFactory expects type \"WebSocketTransportProvisioner\", got \"${typeValue ?? 'undefined'}\"`);\n }\n const urlValue = candidate.url;\n if (typeof urlValue !== 'string' || urlValue.trim().length === 0) {\n throw new Error('WebSocketTransportProvisioner configuration must include a non-empty \"url\" string');\n }\n const ttlCandidate = (() => {\n const raw = candidate.ttlSec ?? candidate.ttl_sec ?? candidate.ttlSEC;\n if (typeof raw === 'number') {\n return raw;\n }\n if (typeof raw === 'string') {\n const parsed = Number(raw.trim());\n return Number.isFinite(parsed) ? parsed : undefined;\n }\n return undefined;\n })();\n const options = {\n url: urlValue.trim(),\n };\n if (typeof ttlCandidate === 'number' && Number.isFinite(ttlCandidate)) {\n options.ttlSec = ttlCandidate;\n }\n return options;\n}\nregisterFactory(TRANSPORT_PROVISIONER_FACTORY_BASE_TYPE, 'WebSocketTransportProvisioner', WebSocketTransportProvisionerFactory, {\n isDefault: true,\n});\n//# sourceMappingURL=websocket-transport-provisioner.js.map"],"names":["isPlainObject","normalizeParams","initializer","util.jsonStringifyReplacer","core.$ZodAsyncError","util.finalizeIssue","core.config","util.captureStackTrace","errors.$ZodError","safeParse","errors.$ZodRealError","safeParseAsync","duration","_emoji","date","time","datetime","string","number","boolean","_null","core.$constructor","util.floatSafeRemainder","util.NUMBER_FORMAT_RANGES","regexes.integer","util.nullish","util.getLengthableOrigin","regexes.lowercase","regexes.uppercase","util.escapeRegex","util.aborted","regexes.string","checks.$ZodCheckStringFormat","regexes.guid","regexes.uuid","regexes.email","regexes.hostname","regexes.emoji","regexes.nanoid","regexes.cuid","regexes.cuid2","regexes.ulid","regexes.xid","regexes.ksuid","regexes.datetime","regexes.date","regexes.time","regexes.duration","regexes.ipv4","regexes.ipv6","regexes.cidrv4","regexes.cidrv6","regexes.base64","regexes.base64url","regexes.e164","regexes.number","checks.$ZodCheckNumberFormat","regexes.boolean","regexes.null","util.prefixIssues","util.optionalKeys","util.cached","util.defineLazy","isObject","util.isObject","util.esc","core.globalConfig","allowsEval","util.allowsEval","util.cleanRegex","util.isPlainObject","util.getEnumValues","util.propertyKeyTypes","core.$ZodEncodeError","checks.$ZodCheck","util.issue","util.normalizeParams","checks.$ZodCheckLessThan","checks.$ZodCheckGreaterThan","checks.$ZodCheckMultipleOf","checks.$ZodCheckMaxLength","checks.$ZodCheckMinLength","checks.$ZodCheckLengthEquals","checks.$ZodCheckRegex","checks.$ZodCheckLowerCase","checks.$ZodCheckUpperCase","checks.$ZodCheckIncludes","checks.$ZodCheckStartsWith","checks.$ZodCheckEndsWith","checks.$ZodCheckOverwrite","issue","core.$ZodISODateTime","schemas.ZodStringFormat","core._isoDateTime","core.$ZodISODate","core._isoDate","core.$ZodISOTime","core._isoTime","core.$ZodISODuration","core._isoDuration","core.formatError","core.flattenError","core._parse","core._parseAsync","core._safeParse","core._safeParseAsync","core._encode","core._decode","core._encodeAsync","core._decodeAsync","core._safeEncode","core._safeDecode","core._safeEncodeAsync","core._safeDecodeAsync","core.$ZodType","util.mergeDefs","core.clone","parse.parse","parse.safeParse","parse.parseAsync","parse.safeParseAsync","parse.encode","parse.decode","parse.encodeAsync","parse.decodeAsync","parse.safeEncode","parse.safeDecode","parse.safeEncodeAsync","parse.safeDecodeAsync","checks.overwrite","core.globalRegistry","core.$ZodString","checks.regex","checks.includes","checks.startsWith","checks.endsWith","checks.minLength","checks.maxLength","checks.length","checks.lowercase","checks.uppercase","checks.trim","checks.normalize","checks.toLowerCase","checks.toUpperCase","core._email","core._url","core._jwt","core._emoji","core._guid","core._uuid","core._uuidv4","core._uuidv6","core._uuidv7","core._nanoid","core._cuid","core._cuid2","core._ulid","core._base64","core._base64url","core._xid","core._ksuid","core._ipv4","core._ipv6","core._cidrv4","core._cidrv6","core._e164","iso.datetime","iso.date","iso.time","iso.duration","core._string","core.$ZodStringFormat","core.$ZodEmail","core.$ZodGUID","core.$ZodUUID","core.$ZodURL","core.$ZodEmoji","core.$ZodNanoID","core.$ZodCUID","core.$ZodCUID2","core.$ZodULID","core.$ZodXID","core.$ZodKSUID","core.$ZodIPv4","core.$ZodIPv6","core.$ZodCIDRv4","core.$ZodCIDRv6","core.$ZodBase64","core.$ZodBase64URL","core.$ZodE164","core.$ZodJWT","core.$ZodNumber","checks.gt","checks.gte","checks.lt","checks.lte","checks.multipleOf","core._number","core.$ZodNumberFormat","core._int","core.$ZodBoolean","core._boolean","core.$ZodNull","core._null","core.$ZodAny","core._any","core.$ZodUnknown","core._unknown","core.$ZodNever","core._never","core.$ZodDate","core._date","core.$ZodArray","core._array","core.$ZodObjectJIT","util.extend","util.safeExtend","util.merge","util.pick","util.omit","util.partial","util.required","core.$ZodUnion","core.$ZodDiscriminatedUnion","core.$ZodIntersection","core.$ZodRecord","core.$ZodEnum","core.$ZodLiteral","core.$ZodTransform","core.$ZodOptional","core.$ZodNullable","core.$ZodDefault","util.shallowClone","core.$ZodPrefault","core.$ZodNonOptional","core.$ZodCatch","core.$ZodPipe","core.$ZodReadonly","core.$ZodCustom","core._refine","core._superRefine","z.string","z.ZodIssueCode","z.NEVER","textEncoder","textDecoder","getRandomBytes","createResource","z.union","z.object","z\n .object","z.any","z.array","z.boolean","z\n .enum","z.preprocess","z.record","z.literal","z.number","FlowFlags","DeliveryOriginType","SigningMaterial","z.nativeEnum","z.enum","z.discriminatedUnion","FameResponseType","Priority","z\n .preprocess","z.date","z\n .number","fabricStack","z.null","ConnectorState","LogLevel","logger","AnsiColor","DEFAULT_DB_NAME","DEFAULT_STORE_NAME","DEFAULT_KEY_ID","MASTER_KEY_LENGTH","openDatabase","GCM_IV_LENGTH","isBrowserEnvironment","cachedNodeCrypto","loadNodeCrypto","toArrayBuffer","DefaultRegistry"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,64,65,66]}
|