@enterprisestandard/esv 0.0.5-beta.20260115.2 → 0.0.5-beta.20260115.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/iam/index.d.ts +8 -5
- package/dist/iam/index.js +5755 -664
- package/dist/iam/index.js.map +1 -1
- package/dist/index.d.ts +90 -10
- package/dist/index.js +6897 -152
- package/dist/index.js.map +1 -1
- package/dist/runner.d.ts +0 -36
- package/dist/runner.js +11407 -283
- package/dist/runner.js.map +1 -1
- package/dist/server/index.d.ts +88 -14
- package/dist/server/index.js +1387 -33
- package/dist/server/index.js.map +1 -1
- package/dist/sso/index.d.ts +8 -5
- package/dist/sso/index.js +365 -357
- package/dist/sso/index.js.map +1 -1
- package/dist/{types.d.ts → types-Bn1pr_xY.d.ts} +13 -11
- package/dist/workload/index.d.ts +8 -5
- package/dist/workload/index.js +393 -403
- package/dist/workload/index.js.map +1 -1
- package/package.json +2 -4
- package/dist/iam/index.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/runner.d.ts.map +0 -1
- package/dist/server/crypto.d.ts +0 -46
- package/dist/server/crypto.d.ts.map +0 -1
- package/dist/server/crypto.js +0 -134
- package/dist/server/crypto.js.map +0 -1
- package/dist/server/iam.d.ts +0 -11
- package/dist/server/iam.d.ts.map +0 -1
- package/dist/server/iam.js +0 -402
- package/dist/server/iam.js.map +0 -1
- package/dist/server/index.d.ts.map +0 -1
- package/dist/server/server.d.ts +0 -66
- package/dist/server/server.d.ts.map +0 -1
- package/dist/server/server.js +0 -223
- package/dist/server/server.js.map +0 -1
- package/dist/server/sso.d.ts +0 -11
- package/dist/server/sso.d.ts.map +0 -1
- package/dist/server/sso.js +0 -428
- package/dist/server/sso.js.map +0 -1
- package/dist/server/state.d.ts +0 -137
- package/dist/server/state.d.ts.map +0 -1
- package/dist/server/state.js +0 -152
- package/dist/server/state.js.map +0 -1
- package/dist/server/vault.d.ts +0 -11
- package/dist/server/vault.d.ts.map +0 -1
- package/dist/server/vault.js +0 -92
- package/dist/server/vault.js.map +0 -1
- package/dist/server/workload.d.ts +0 -19
- package/dist/server/workload.d.ts.map +0 -1
- package/dist/server/workload.js +0 -226
- package/dist/server/workload.js.map +0 -1
- package/dist/sso/index.d.ts.map +0 -1
- package/dist/tenant/index.d.ts +0 -17
- package/dist/tenant/index.d.ts.map +0 -1
- package/dist/tenant/index.js +0 -300
- package/dist/tenant/index.js.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -2
- package/dist/types.js.map +0 -1
- package/dist/utils.d.ts +0 -75
- package/dist/utils.d.ts.map +0 -1
- package/dist/utils.js +0 -139
- package/dist/utils.js.map +0 -1
- package/dist/workload/index.d.ts.map +0 -1
package/dist/runner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../node_modules/react/cjs/react-jsx-runtime.production.js","../../../node_modules/react/cjs/react.production.js","../../../node_modules/react/cjs/react.development.js","../../../node_modules/react/index.js","../../../node_modules/react/cjs/react-jsx-runtime.development.js","../../../node_modules/react/jsx-runtime.js","../src/utils.ts","../../../node_modules/valibot/dist/index.mjs","../../react-validators-valibot/src/index.ts","../../../node_modules/zod/v3/helpers/util.js","../../../node_modules/zod/v3/ZodError.js","../../../node_modules/zod/v3/locales/en.js","../../../node_modules/zod/v3/errors.js","../../../node_modules/zod/v3/helpers/parseUtil.js","../../../node_modules/zod/v3/helpers/typeAliases.js","../../../node_modules/zod/v3/helpers/errorUtil.js","../../../node_modules/zod/v3/types.js","../../../node_modules/zod/v3/external.js","../../../node_modules/zod/index.js","../../react-validators-zod/src/index.ts","../src/iam/index.ts","../src/sso/index.ts","../src/tenant/index.ts","../src/workload/index.ts","../../react/src/types/scim-schema.ts","../../react/src/iam.ts","../../react/src/types/oidc-schema.ts","../../react/src/utils.ts","../../react/src/sso.ts","../../react/src/vault.ts","../../react/src/types/workload-schema.ts","../../react/src/workload-token-store.ts","../../react/src/workload.ts","../../react/src/group-store.ts","../../react/src/session-store.ts","../../react/src/tenant.ts","../../react/src/workload-server.ts","../../react/src/sso-server.ts","../../react/src/ui/sign-in-loading.tsx","../../react/src/ui/signed-in.tsx","../../react/src/ui/signed-out.tsx","../../react/src/ui/sso-provider.tsx","../../react/src/user-store.ts","../../react/src/index.ts","../src/index.ts","../src/runner.ts"],"sourcesContent":["/**\n * @license React\n * react-jsx-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\nfunction jsxProd(type, config, maybeKey) {\n var key = null;\n void 0 !== maybeKey && (key = \"\" + maybeKey);\n void 0 !== config.key && (key = \"\" + config.key);\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n config = maybeKey.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== config ? config : null,\n props: maybeKey\n };\n}\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsxProd;\nexports.jsxs = jsxProd;\n","/**\n * @license React\n * react.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nfunction getIteratorFn(maybeIterable) {\n if (null === maybeIterable || \"object\" !== typeof maybeIterable) return null;\n maybeIterable =\n (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n maybeIterable[\"@@iterator\"];\n return \"function\" === typeof maybeIterable ? maybeIterable : null;\n}\nvar ReactNoopUpdateQueue = {\n isMounted: function () {\n return !1;\n },\n enqueueForceUpdate: function () {},\n enqueueReplaceState: function () {},\n enqueueSetState: function () {}\n },\n assign = Object.assign,\n emptyObject = {};\nfunction Component(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n}\nComponent.prototype.isReactComponent = {};\nComponent.prototype.setState = function (partialState, callback) {\n if (\n \"object\" !== typeof partialState &&\n \"function\" !== typeof partialState &&\n null != partialState\n )\n throw Error(\n \"takes an object of state variables to update or a function which returns an object of state variables.\"\n );\n this.updater.enqueueSetState(this, partialState, callback, \"setState\");\n};\nComponent.prototype.forceUpdate = function (callback) {\n this.updater.enqueueForceUpdate(this, callback, \"forceUpdate\");\n};\nfunction ComponentDummy() {}\nComponentDummy.prototype = Component.prototype;\nfunction PureComponent(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n}\nvar pureComponentPrototype = (PureComponent.prototype = new ComponentDummy());\npureComponentPrototype.constructor = PureComponent;\nassign(pureComponentPrototype, Component.prototype);\npureComponentPrototype.isPureReactComponent = !0;\nvar isArrayImpl = Array.isArray;\nfunction noop() {}\nvar ReactSharedInternals = { H: null, A: null, T: null, S: null },\n hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction ReactElement(type, key, props) {\n var refProp = props.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== refProp ? refProp : null,\n props: props\n };\n}\nfunction cloneAndReplaceKey(oldElement, newKey) {\n return ReactElement(oldElement.type, newKey, oldElement.props);\n}\nfunction isValidElement(object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n}\nfunction escape(key) {\n var escaperLookup = { \"=\": \"=0\", \":\": \"=2\" };\n return (\n \"$\" +\n key.replace(/[=:]/g, function (match) {\n return escaperLookup[match];\n })\n );\n}\nvar userProvidedKeyEscapeRegex = /\\/+/g;\nfunction getElementKey(element, index) {\n return \"object\" === typeof element && null !== element && null != element.key\n ? escape(\"\" + element.key)\n : index.toString(36);\n}\nfunction resolveThenable(thenable) {\n switch (thenable.status) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw thenable.reason;\n default:\n switch (\n (\"string\" === typeof thenable.status\n ? thenable.then(noop, noop)\n : ((thenable.status = \"pending\"),\n thenable.then(\n function (fulfilledValue) {\n \"pending\" === thenable.status &&\n ((thenable.status = \"fulfilled\"),\n (thenable.value = fulfilledValue));\n },\n function (error) {\n \"pending\" === thenable.status &&\n ((thenable.status = \"rejected\"), (thenable.reason = error));\n }\n )),\n thenable.status)\n ) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw thenable.reason;\n }\n }\n throw thenable;\n}\nfunction mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {\n var type = typeof children;\n if (\"undefined\" === type || \"boolean\" === type) children = null;\n var invokeCallback = !1;\n if (null === children) invokeCallback = !0;\n else\n switch (type) {\n case \"bigint\":\n case \"string\":\n case \"number\":\n invokeCallback = !0;\n break;\n case \"object\":\n switch (children.$$typeof) {\n case REACT_ELEMENT_TYPE:\n case REACT_PORTAL_TYPE:\n invokeCallback = !0;\n break;\n case REACT_LAZY_TYPE:\n return (\n (invokeCallback = children._init),\n mapIntoArray(\n invokeCallback(children._payload),\n array,\n escapedPrefix,\n nameSoFar,\n callback\n )\n );\n }\n }\n if (invokeCallback)\n return (\n (callback = callback(children)),\n (invokeCallback =\n \"\" === nameSoFar ? \".\" + getElementKey(children, 0) : nameSoFar),\n isArrayImpl(callback)\n ? ((escapedPrefix = \"\"),\n null != invokeCallback &&\n (escapedPrefix =\n invokeCallback.replace(userProvidedKeyEscapeRegex, \"$&/\") + \"/\"),\n mapIntoArray(callback, array, escapedPrefix, \"\", function (c) {\n return c;\n }))\n : null != callback &&\n (isValidElement(callback) &&\n (callback = cloneAndReplaceKey(\n callback,\n escapedPrefix +\n (null == callback.key ||\n (children && children.key === callback.key)\n ? \"\"\n : (\"\" + callback.key).replace(\n userProvidedKeyEscapeRegex,\n \"$&/\"\n ) + \"/\") +\n invokeCallback\n )),\n array.push(callback)),\n 1\n );\n invokeCallback = 0;\n var nextNamePrefix = \"\" === nameSoFar ? \".\" : nameSoFar + \":\";\n if (isArrayImpl(children))\n for (var i = 0; i < children.length; i++)\n (nameSoFar = children[i]),\n (type = nextNamePrefix + getElementKey(nameSoFar, i)),\n (invokeCallback += mapIntoArray(\n nameSoFar,\n array,\n escapedPrefix,\n type,\n callback\n ));\n else if (((i = getIteratorFn(children)), \"function\" === typeof i))\n for (\n children = i.call(children), i = 0;\n !(nameSoFar = children.next()).done;\n\n )\n (nameSoFar = nameSoFar.value),\n (type = nextNamePrefix + getElementKey(nameSoFar, i++)),\n (invokeCallback += mapIntoArray(\n nameSoFar,\n array,\n escapedPrefix,\n type,\n callback\n ));\n else if (\"object\" === type) {\n if (\"function\" === typeof children.then)\n return mapIntoArray(\n resolveThenable(children),\n array,\n escapedPrefix,\n nameSoFar,\n callback\n );\n array = String(children);\n throw Error(\n \"Objects are not valid as a React child (found: \" +\n (\"[object Object]\" === array\n ? \"object with keys {\" + Object.keys(children).join(\", \") + \"}\"\n : array) +\n \"). If you meant to render a collection of children, use an array instead.\"\n );\n }\n return invokeCallback;\n}\nfunction mapChildren(children, func, context) {\n if (null == children) return children;\n var result = [],\n count = 0;\n mapIntoArray(children, result, \"\", \"\", function (child) {\n return func.call(context, child, count++);\n });\n return result;\n}\nfunction lazyInitializer(payload) {\n if (-1 === payload._status) {\n var ctor = payload._result;\n ctor = ctor();\n ctor.then(\n function (moduleObject) {\n if (0 === payload._status || -1 === payload._status)\n (payload._status = 1), (payload._result = moduleObject);\n },\n function (error) {\n if (0 === payload._status || -1 === payload._status)\n (payload._status = 2), (payload._result = error);\n }\n );\n -1 === payload._status && ((payload._status = 0), (payload._result = ctor));\n }\n if (1 === payload._status) return payload._result.default;\n throw payload._result;\n}\nvar reportGlobalError =\n \"function\" === typeof reportError\n ? reportError\n : function (error) {\n if (\n \"object\" === typeof window &&\n \"function\" === typeof window.ErrorEvent\n ) {\n var event = new window.ErrorEvent(\"error\", {\n bubbles: !0,\n cancelable: !0,\n message:\n \"object\" === typeof error &&\n null !== error &&\n \"string\" === typeof error.message\n ? String(error.message)\n : String(error),\n error: error\n });\n if (!window.dispatchEvent(event)) return;\n } else if (\n \"object\" === typeof process &&\n \"function\" === typeof process.emit\n ) {\n process.emit(\"uncaughtException\", error);\n return;\n }\n console.error(error);\n },\n Children = {\n map: mapChildren,\n forEach: function (children, forEachFunc, forEachContext) {\n mapChildren(\n children,\n function () {\n forEachFunc.apply(this, arguments);\n },\n forEachContext\n );\n },\n count: function (children) {\n var n = 0;\n mapChildren(children, function () {\n n++;\n });\n return n;\n },\n toArray: function (children) {\n return (\n mapChildren(children, function (child) {\n return child;\n }) || []\n );\n },\n only: function (children) {\n if (!isValidElement(children))\n throw Error(\n \"React.Children.only expected to receive a single React element child.\"\n );\n return children;\n }\n };\nexports.Activity = REACT_ACTIVITY_TYPE;\nexports.Children = Children;\nexports.Component = Component;\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.Profiler = REACT_PROFILER_TYPE;\nexports.PureComponent = PureComponent;\nexports.StrictMode = REACT_STRICT_MODE_TYPE;\nexports.Suspense = REACT_SUSPENSE_TYPE;\nexports.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE =\n ReactSharedInternals;\nexports.__COMPILER_RUNTIME = {\n __proto__: null,\n c: function (size) {\n return ReactSharedInternals.H.useMemoCache(size);\n }\n};\nexports.cache = function (fn) {\n return function () {\n return fn.apply(null, arguments);\n };\n};\nexports.cacheSignal = function () {\n return null;\n};\nexports.cloneElement = function (element, config, children) {\n if (null === element || void 0 === element)\n throw Error(\n \"The argument must be a React element, but you passed \" + element + \".\"\n );\n var props = assign({}, element.props),\n key = element.key;\n if (null != config)\n for (propName in (void 0 !== config.key && (key = \"\" + config.key), config))\n !hasOwnProperty.call(config, propName) ||\n \"key\" === propName ||\n \"__self\" === propName ||\n \"__source\" === propName ||\n (\"ref\" === propName && void 0 === config.ref) ||\n (props[propName] = config[propName]);\n var propName = arguments.length - 2;\n if (1 === propName) props.children = children;\n else if (1 < propName) {\n for (var childArray = Array(propName), i = 0; i < propName; i++)\n childArray[i] = arguments[i + 2];\n props.children = childArray;\n }\n return ReactElement(element.type, key, props);\n};\nexports.createContext = function (defaultValue) {\n defaultValue = {\n $$typeof: REACT_CONTEXT_TYPE,\n _currentValue: defaultValue,\n _currentValue2: defaultValue,\n _threadCount: 0,\n Provider: null,\n Consumer: null\n };\n defaultValue.Provider = defaultValue;\n defaultValue.Consumer = {\n $$typeof: REACT_CONSUMER_TYPE,\n _context: defaultValue\n };\n return defaultValue;\n};\nexports.createElement = function (type, config, children) {\n var propName,\n props = {},\n key = null;\n if (null != config)\n for (propName in (void 0 !== config.key && (key = \"\" + config.key), config))\n hasOwnProperty.call(config, propName) &&\n \"key\" !== propName &&\n \"__self\" !== propName &&\n \"__source\" !== propName &&\n (props[propName] = config[propName]);\n var childrenLength = arguments.length - 2;\n if (1 === childrenLength) props.children = children;\n else if (1 < childrenLength) {\n for (var childArray = Array(childrenLength), i = 0; i < childrenLength; i++)\n childArray[i] = arguments[i + 2];\n props.children = childArray;\n }\n if (type && type.defaultProps)\n for (propName in ((childrenLength = type.defaultProps), childrenLength))\n void 0 === props[propName] &&\n (props[propName] = childrenLength[propName]);\n return ReactElement(type, key, props);\n};\nexports.createRef = function () {\n return { current: null };\n};\nexports.forwardRef = function (render) {\n return { $$typeof: REACT_FORWARD_REF_TYPE, render: render };\n};\nexports.isValidElement = isValidElement;\nexports.lazy = function (ctor) {\n return {\n $$typeof: REACT_LAZY_TYPE,\n _payload: { _status: -1, _result: ctor },\n _init: lazyInitializer\n };\n};\nexports.memo = function (type, compare) {\n return {\n $$typeof: REACT_MEMO_TYPE,\n type: type,\n compare: void 0 === compare ? null : compare\n };\n};\nexports.startTransition = function (scope) {\n var prevTransition = ReactSharedInternals.T,\n currentTransition = {};\n ReactSharedInternals.T = currentTransition;\n try {\n var returnValue = scope(),\n onStartTransitionFinish = ReactSharedInternals.S;\n null !== onStartTransitionFinish &&\n onStartTransitionFinish(currentTransition, returnValue);\n \"object\" === typeof returnValue &&\n null !== returnValue &&\n \"function\" === typeof returnValue.then &&\n returnValue.then(noop, reportGlobalError);\n } catch (error) {\n reportGlobalError(error);\n } finally {\n null !== prevTransition &&\n null !== currentTransition.types &&\n (prevTransition.types = currentTransition.types),\n (ReactSharedInternals.T = prevTransition);\n }\n};\nexports.unstable_useCacheRefresh = function () {\n return ReactSharedInternals.H.useCacheRefresh();\n};\nexports.use = function (usable) {\n return ReactSharedInternals.H.use(usable);\n};\nexports.useActionState = function (action, initialState, permalink) {\n return ReactSharedInternals.H.useActionState(action, initialState, permalink);\n};\nexports.useCallback = function (callback, deps) {\n return ReactSharedInternals.H.useCallback(callback, deps);\n};\nexports.useContext = function (Context) {\n return ReactSharedInternals.H.useContext(Context);\n};\nexports.useDebugValue = function () {};\nexports.useDeferredValue = function (value, initialValue) {\n return ReactSharedInternals.H.useDeferredValue(value, initialValue);\n};\nexports.useEffect = function (create, deps) {\n return ReactSharedInternals.H.useEffect(create, deps);\n};\nexports.useEffectEvent = function (callback) {\n return ReactSharedInternals.H.useEffectEvent(callback);\n};\nexports.useId = function () {\n return ReactSharedInternals.H.useId();\n};\nexports.useImperativeHandle = function (ref, create, deps) {\n return ReactSharedInternals.H.useImperativeHandle(ref, create, deps);\n};\nexports.useInsertionEffect = function (create, deps) {\n return ReactSharedInternals.H.useInsertionEffect(create, deps);\n};\nexports.useLayoutEffect = function (create, deps) {\n return ReactSharedInternals.H.useLayoutEffect(create, deps);\n};\nexports.useMemo = function (create, deps) {\n return ReactSharedInternals.H.useMemo(create, deps);\n};\nexports.useOptimistic = function (passthrough, reducer) {\n return ReactSharedInternals.H.useOptimistic(passthrough, reducer);\n};\nexports.useReducer = function (reducer, initialArg, init) {\n return ReactSharedInternals.H.useReducer(reducer, initialArg, init);\n};\nexports.useRef = function (initialValue) {\n return ReactSharedInternals.H.useRef(initialValue);\n};\nexports.useState = function (initialState) {\n return ReactSharedInternals.H.useState(initialState);\n};\nexports.useSyncExternalStore = function (\n subscribe,\n getSnapshot,\n getServerSnapshot\n) {\n return ReactSharedInternals.H.useSyncExternalStore(\n subscribe,\n getSnapshot,\n getServerSnapshot\n );\n};\nexports.useTransition = function () {\n return ReactSharedInternals.H.useTransition();\n};\nexports.version = \"19.2.0\";\n","/**\n * @license React\n * react.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function defineDeprecationWarning(methodName, info) {\n Object.defineProperty(Component.prototype, methodName, {\n get: function () {\n console.warn(\n \"%s(...) is deprecated in plain JavaScript React classes. %s\",\n info[0],\n info[1]\n );\n }\n });\n }\n function getIteratorFn(maybeIterable) {\n if (null === maybeIterable || \"object\" !== typeof maybeIterable)\n return null;\n maybeIterable =\n (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n maybeIterable[\"@@iterator\"];\n return \"function\" === typeof maybeIterable ? maybeIterable : null;\n }\n function warnNoop(publicInstance, callerName) {\n publicInstance =\n ((publicInstance = publicInstance.constructor) &&\n (publicInstance.displayName || publicInstance.name)) ||\n \"ReactClass\";\n var warningKey = publicInstance + \".\" + callerName;\n didWarnStateUpdateForUnmountedComponent[warningKey] ||\n (console.error(\n \"Can't call %s on a component that is not yet mounted. This is a no-op, but it might indicate a bug in your application. Instead, assign to `this.state` directly or define a `state = {};` class property with the desired state in the %s component.\",\n callerName,\n publicInstance\n ),\n (didWarnStateUpdateForUnmountedComponent[warningKey] = !0));\n }\n function Component(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n }\n function ComponentDummy() {}\n function PureComponent(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n }\n function noop() {}\n function testStringCoercion(value) {\n return \"\" + value;\n }\n function checkKeyStringCoercion(value) {\n try {\n testStringCoercion(value);\n var JSCompiler_inline_result = !1;\n } catch (e) {\n JSCompiler_inline_result = !0;\n }\n if (JSCompiler_inline_result) {\n JSCompiler_inline_result = console;\n var JSCompiler_temp_const = JSCompiler_inline_result.error;\n var JSCompiler_inline_result$jscomp$0 =\n (\"function\" === typeof Symbol &&\n Symbol.toStringTag &&\n value[Symbol.toStringTag]) ||\n value.constructor.name ||\n \"Object\";\n JSCompiler_temp_const.call(\n JSCompiler_inline_result,\n \"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.\",\n JSCompiler_inline_result$jscomp$0\n );\n return testStringCoercion(value);\n }\n }\n function getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n case REACT_ACTIVITY_TYPE:\n return \"Activity\";\n }\n if (\"object\" === typeof type)\n switch (\n (\"number\" === typeof type.tag &&\n console.error(\n \"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"\n ),\n type.$$typeof)\n ) {\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_CONTEXT_TYPE:\n return type.displayName || \"Context\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n }\n function getTaskName(type) {\n if (type === REACT_FRAGMENT_TYPE) return \"<>\";\n if (\n \"object\" === typeof type &&\n null !== type &&\n type.$$typeof === REACT_LAZY_TYPE\n )\n return \"<...>\";\n try {\n var name = getComponentNameFromType(type);\n return name ? \"<\" + name + \">\" : \"<...>\";\n } catch (x) {\n return \"<...>\";\n }\n }\n function getOwner() {\n var dispatcher = ReactSharedInternals.A;\n return null === dispatcher ? null : dispatcher.getOwner();\n }\n function UnknownOwner() {\n return Error(\"react-stack-top-frame\");\n }\n function hasValidKey(config) {\n if (hasOwnProperty.call(config, \"key\")) {\n var getter = Object.getOwnPropertyDescriptor(config, \"key\").get;\n if (getter && getter.isReactWarning) return !1;\n }\n return void 0 !== config.key;\n }\n function defineKeyPropWarningGetter(props, displayName) {\n function warnAboutAccessingKey() {\n specialPropKeyWarningShown ||\n ((specialPropKeyWarningShown = !0),\n console.error(\n \"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)\",\n displayName\n ));\n }\n warnAboutAccessingKey.isReactWarning = !0;\n Object.defineProperty(props, \"key\", {\n get: warnAboutAccessingKey,\n configurable: !0\n });\n }\n function elementRefGetterWithDeprecationWarning() {\n var componentName = getComponentNameFromType(this.type);\n didWarnAboutElementRef[componentName] ||\n ((didWarnAboutElementRef[componentName] = !0),\n console.error(\n \"Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.\"\n ));\n componentName = this.props.ref;\n return void 0 !== componentName ? componentName : null;\n }\n function ReactElement(type, key, props, owner, debugStack, debugTask) {\n var refProp = props.ref;\n type = {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n props: props,\n _owner: owner\n };\n null !== (void 0 !== refProp ? refProp : null)\n ? Object.defineProperty(type, \"ref\", {\n enumerable: !1,\n get: elementRefGetterWithDeprecationWarning\n })\n : Object.defineProperty(type, \"ref\", { enumerable: !1, value: null });\n type._store = {};\n Object.defineProperty(type._store, \"validated\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: 0\n });\n Object.defineProperty(type, \"_debugInfo\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: null\n });\n Object.defineProperty(type, \"_debugStack\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugStack\n });\n Object.defineProperty(type, \"_debugTask\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugTask\n });\n Object.freeze && (Object.freeze(type.props), Object.freeze(type));\n return type;\n }\n function cloneAndReplaceKey(oldElement, newKey) {\n newKey = ReactElement(\n oldElement.type,\n newKey,\n oldElement.props,\n oldElement._owner,\n oldElement._debugStack,\n oldElement._debugTask\n );\n oldElement._store &&\n (newKey._store.validated = oldElement._store.validated);\n return newKey;\n }\n function validateChildKeys(node) {\n isValidElement(node)\n ? node._store && (node._store.validated = 1)\n : \"object\" === typeof node &&\n null !== node &&\n node.$$typeof === REACT_LAZY_TYPE &&\n (\"fulfilled\" === node._payload.status\n ? isValidElement(node._payload.value) &&\n node._payload.value._store &&\n (node._payload.value._store.validated = 1)\n : node._store && (node._store.validated = 1));\n }\n function isValidElement(object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n }\n function escape(key) {\n var escaperLookup = { \"=\": \"=0\", \":\": \"=2\" };\n return (\n \"$\" +\n key.replace(/[=:]/g, function (match) {\n return escaperLookup[match];\n })\n );\n }\n function getElementKey(element, index) {\n return \"object\" === typeof element &&\n null !== element &&\n null != element.key\n ? (checkKeyStringCoercion(element.key), escape(\"\" + element.key))\n : index.toString(36);\n }\n function resolveThenable(thenable) {\n switch (thenable.status) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw thenable.reason;\n default:\n switch (\n (\"string\" === typeof thenable.status\n ? thenable.then(noop, noop)\n : ((thenable.status = \"pending\"),\n thenable.then(\n function (fulfilledValue) {\n \"pending\" === thenable.status &&\n ((thenable.status = \"fulfilled\"),\n (thenable.value = fulfilledValue));\n },\n function (error) {\n \"pending\" === thenable.status &&\n ((thenable.status = \"rejected\"),\n (thenable.reason = error));\n }\n )),\n thenable.status)\n ) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw thenable.reason;\n }\n }\n throw thenable;\n }\n function mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {\n var type = typeof children;\n if (\"undefined\" === type || \"boolean\" === type) children = null;\n var invokeCallback = !1;\n if (null === children) invokeCallback = !0;\n else\n switch (type) {\n case \"bigint\":\n case \"string\":\n case \"number\":\n invokeCallback = !0;\n break;\n case \"object\":\n switch (children.$$typeof) {\n case REACT_ELEMENT_TYPE:\n case REACT_PORTAL_TYPE:\n invokeCallback = !0;\n break;\n case REACT_LAZY_TYPE:\n return (\n (invokeCallback = children._init),\n mapIntoArray(\n invokeCallback(children._payload),\n array,\n escapedPrefix,\n nameSoFar,\n callback\n )\n );\n }\n }\n if (invokeCallback) {\n invokeCallback = children;\n callback = callback(invokeCallback);\n var childKey =\n \"\" === nameSoFar ? \".\" + getElementKey(invokeCallback, 0) : nameSoFar;\n isArrayImpl(callback)\n ? ((escapedPrefix = \"\"),\n null != childKey &&\n (escapedPrefix =\n childKey.replace(userProvidedKeyEscapeRegex, \"$&/\") + \"/\"),\n mapIntoArray(callback, array, escapedPrefix, \"\", function (c) {\n return c;\n }))\n : null != callback &&\n (isValidElement(callback) &&\n (null != callback.key &&\n ((invokeCallback && invokeCallback.key === callback.key) ||\n checkKeyStringCoercion(callback.key)),\n (escapedPrefix = cloneAndReplaceKey(\n callback,\n escapedPrefix +\n (null == callback.key ||\n (invokeCallback && invokeCallback.key === callback.key)\n ? \"\"\n : (\"\" + callback.key).replace(\n userProvidedKeyEscapeRegex,\n \"$&/\"\n ) + \"/\") +\n childKey\n )),\n \"\" !== nameSoFar &&\n null != invokeCallback &&\n isValidElement(invokeCallback) &&\n null == invokeCallback.key &&\n invokeCallback._store &&\n !invokeCallback._store.validated &&\n (escapedPrefix._store.validated = 2),\n (callback = escapedPrefix)),\n array.push(callback));\n return 1;\n }\n invokeCallback = 0;\n childKey = \"\" === nameSoFar ? \".\" : nameSoFar + \":\";\n if (isArrayImpl(children))\n for (var i = 0; i < children.length; i++)\n (nameSoFar = children[i]),\n (type = childKey + getElementKey(nameSoFar, i)),\n (invokeCallback += mapIntoArray(\n nameSoFar,\n array,\n escapedPrefix,\n type,\n callback\n ));\n else if (((i = getIteratorFn(children)), \"function\" === typeof i))\n for (\n i === children.entries &&\n (didWarnAboutMaps ||\n console.warn(\n \"Using Maps as children is not supported. Use an array of keyed ReactElements instead.\"\n ),\n (didWarnAboutMaps = !0)),\n children = i.call(children),\n i = 0;\n !(nameSoFar = children.next()).done;\n\n )\n (nameSoFar = nameSoFar.value),\n (type = childKey + getElementKey(nameSoFar, i++)),\n (invokeCallback += mapIntoArray(\n nameSoFar,\n array,\n escapedPrefix,\n type,\n callback\n ));\n else if (\"object\" === type) {\n if (\"function\" === typeof children.then)\n return mapIntoArray(\n resolveThenable(children),\n array,\n escapedPrefix,\n nameSoFar,\n callback\n );\n array = String(children);\n throw Error(\n \"Objects are not valid as a React child (found: \" +\n (\"[object Object]\" === array\n ? \"object with keys {\" + Object.keys(children).join(\", \") + \"}\"\n : array) +\n \"). If you meant to render a collection of children, use an array instead.\"\n );\n }\n return invokeCallback;\n }\n function mapChildren(children, func, context) {\n if (null == children) return children;\n var result = [],\n count = 0;\n mapIntoArray(children, result, \"\", \"\", function (child) {\n return func.call(context, child, count++);\n });\n return result;\n }\n function lazyInitializer(payload) {\n if (-1 === payload._status) {\n var ioInfo = payload._ioInfo;\n null != ioInfo && (ioInfo.start = ioInfo.end = performance.now());\n ioInfo = payload._result;\n var thenable = ioInfo();\n thenable.then(\n function (moduleObject) {\n if (0 === payload._status || -1 === payload._status) {\n payload._status = 1;\n payload._result = moduleObject;\n var _ioInfo = payload._ioInfo;\n null != _ioInfo && (_ioInfo.end = performance.now());\n void 0 === thenable.status &&\n ((thenable.status = \"fulfilled\"),\n (thenable.value = moduleObject));\n }\n },\n function (error) {\n if (0 === payload._status || -1 === payload._status) {\n payload._status = 2;\n payload._result = error;\n var _ioInfo2 = payload._ioInfo;\n null != _ioInfo2 && (_ioInfo2.end = performance.now());\n void 0 === thenable.status &&\n ((thenable.status = \"rejected\"), (thenable.reason = error));\n }\n }\n );\n ioInfo = payload._ioInfo;\n if (null != ioInfo) {\n ioInfo.value = thenable;\n var displayName = thenable.displayName;\n \"string\" === typeof displayName && (ioInfo.name = displayName);\n }\n -1 === payload._status &&\n ((payload._status = 0), (payload._result = thenable));\n }\n if (1 === payload._status)\n return (\n (ioInfo = payload._result),\n void 0 === ioInfo &&\n console.error(\n \"lazy: Expected the result of a dynamic import() call. Instead received: %s\\n\\nYour code should look like: \\n const MyComponent = lazy(() => import('./MyComponent'))\\n\\nDid you accidentally put curly braces around the import?\",\n ioInfo\n ),\n \"default\" in ioInfo ||\n console.error(\n \"lazy: Expected the result of a dynamic import() call. Instead received: %s\\n\\nYour code should look like: \\n const MyComponent = lazy(() => import('./MyComponent'))\",\n ioInfo\n ),\n ioInfo.default\n );\n throw payload._result;\n }\n function resolveDispatcher() {\n var dispatcher = ReactSharedInternals.H;\n null === dispatcher &&\n console.error(\n \"Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\\n1. You might have mismatching versions of React and the renderer (such as React DOM)\\n2. You might be breaking the Rules of Hooks\\n3. You might have more than one copy of React in the same app\\nSee https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem.\"\n );\n return dispatcher;\n }\n function releaseAsyncTransition() {\n ReactSharedInternals.asyncTransitions--;\n }\n function enqueueTask(task) {\n if (null === enqueueTaskImpl)\n try {\n var requireString = (\"require\" + Math.random()).slice(0, 7);\n enqueueTaskImpl = (module && module[requireString]).call(\n module,\n \"timers\"\n ).setImmediate;\n } catch (_err) {\n enqueueTaskImpl = function (callback) {\n !1 === didWarnAboutMessageChannel &&\n ((didWarnAboutMessageChannel = !0),\n \"undefined\" === typeof MessageChannel &&\n console.error(\n \"This browser does not have a MessageChannel implementation, so enqueuing tasks via await act(async () => ...) will fail. Please file an issue at https://github.com/facebook/react/issues if you encounter this warning.\"\n ));\n var channel = new MessageChannel();\n channel.port1.onmessage = callback;\n channel.port2.postMessage(void 0);\n };\n }\n return enqueueTaskImpl(task);\n }\n function aggregateErrors(errors) {\n return 1 < errors.length && \"function\" === typeof AggregateError\n ? new AggregateError(errors)\n : errors[0];\n }\n function popActScope(prevActQueue, prevActScopeDepth) {\n prevActScopeDepth !== actScopeDepth - 1 &&\n console.error(\n \"You seem to have overlapping act() calls, this is not supported. Be sure to await previous act() calls before making a new one. \"\n );\n actScopeDepth = prevActScopeDepth;\n }\n function recursivelyFlushAsyncActWork(returnValue, resolve, reject) {\n var queue = ReactSharedInternals.actQueue;\n if (null !== queue)\n if (0 !== queue.length)\n try {\n flushActQueue(queue);\n enqueueTask(function () {\n return recursivelyFlushAsyncActWork(returnValue, resolve, reject);\n });\n return;\n } catch (error) {\n ReactSharedInternals.thrownErrors.push(error);\n }\n else ReactSharedInternals.actQueue = null;\n 0 < ReactSharedInternals.thrownErrors.length\n ? ((queue = aggregateErrors(ReactSharedInternals.thrownErrors)),\n (ReactSharedInternals.thrownErrors.length = 0),\n reject(queue))\n : resolve(returnValue);\n }\n function flushActQueue(queue) {\n if (!isFlushing) {\n isFlushing = !0;\n var i = 0;\n try {\n for (; i < queue.length; i++) {\n var callback = queue[i];\n do {\n ReactSharedInternals.didUsePromise = !1;\n var continuation = callback(!1);\n if (null !== continuation) {\n if (ReactSharedInternals.didUsePromise) {\n queue[i] = callback;\n queue.splice(0, i);\n return;\n }\n callback = continuation;\n } else break;\n } while (1);\n }\n queue.length = 0;\n } catch (error) {\n queue.splice(0, i + 1), ReactSharedInternals.thrownErrors.push(error);\n } finally {\n isFlushing = !1;\n }\n }\n }\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());\n var REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n MAYBE_ITERATOR_SYMBOL = Symbol.iterator,\n didWarnStateUpdateForUnmountedComponent = {},\n ReactNoopUpdateQueue = {\n isMounted: function () {\n return !1;\n },\n enqueueForceUpdate: function (publicInstance) {\n warnNoop(publicInstance, \"forceUpdate\");\n },\n enqueueReplaceState: function (publicInstance) {\n warnNoop(publicInstance, \"replaceState\");\n },\n enqueueSetState: function (publicInstance) {\n warnNoop(publicInstance, \"setState\");\n }\n },\n assign = Object.assign,\n emptyObject = {};\n Object.freeze(emptyObject);\n Component.prototype.isReactComponent = {};\n Component.prototype.setState = function (partialState, callback) {\n if (\n \"object\" !== typeof partialState &&\n \"function\" !== typeof partialState &&\n null != partialState\n )\n throw Error(\n \"takes an object of state variables to update or a function which returns an object of state variables.\"\n );\n this.updater.enqueueSetState(this, partialState, callback, \"setState\");\n };\n Component.prototype.forceUpdate = function (callback) {\n this.updater.enqueueForceUpdate(this, callback, \"forceUpdate\");\n };\n var deprecatedAPIs = {\n isMounted: [\n \"isMounted\",\n \"Instead, make sure to clean up subscriptions and pending requests in componentWillUnmount to prevent memory leaks.\"\n ],\n replaceState: [\n \"replaceState\",\n \"Refactor your code to use setState instead (see https://github.com/facebook/react/issues/3236).\"\n ]\n };\n for (fnName in deprecatedAPIs)\n deprecatedAPIs.hasOwnProperty(fnName) &&\n defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);\n ComponentDummy.prototype = Component.prototype;\n deprecatedAPIs = PureComponent.prototype = new ComponentDummy();\n deprecatedAPIs.constructor = PureComponent;\n assign(deprecatedAPIs, Component.prototype);\n deprecatedAPIs.isPureReactComponent = !0;\n var isArrayImpl = Array.isArray,\n REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\"),\n ReactSharedInternals = {\n H: null,\n A: null,\n T: null,\n S: null,\n actQueue: null,\n asyncTransitions: 0,\n isBatchingLegacy: !1,\n didScheduleLegacyUpdate: !1,\n didUsePromise: !1,\n thrownErrors: [],\n getCurrentStack: null,\n recentlyCreatedOwnerStacks: 0\n },\n hasOwnProperty = Object.prototype.hasOwnProperty,\n createTask = console.createTask\n ? console.createTask\n : function () {\n return null;\n };\n deprecatedAPIs = {\n react_stack_bottom_frame: function (callStackForError) {\n return callStackForError();\n }\n };\n var specialPropKeyWarningShown, didWarnAboutOldJSXRuntime;\n var didWarnAboutElementRef = {};\n var unknownOwnerDebugStack = deprecatedAPIs.react_stack_bottom_frame.bind(\n deprecatedAPIs,\n UnknownOwner\n )();\n var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));\n var didWarnAboutMaps = !1,\n userProvidedKeyEscapeRegex = /\\/+/g,\n reportGlobalError =\n \"function\" === typeof reportError\n ? reportError\n : function (error) {\n if (\n \"object\" === typeof window &&\n \"function\" === typeof window.ErrorEvent\n ) {\n var event = new window.ErrorEvent(\"error\", {\n bubbles: !0,\n cancelable: !0,\n message:\n \"object\" === typeof error &&\n null !== error &&\n \"string\" === typeof error.message\n ? String(error.message)\n : String(error),\n error: error\n });\n if (!window.dispatchEvent(event)) return;\n } else if (\n \"object\" === typeof process &&\n \"function\" === typeof process.emit\n ) {\n process.emit(\"uncaughtException\", error);\n return;\n }\n console.error(error);\n },\n didWarnAboutMessageChannel = !1,\n enqueueTaskImpl = null,\n actScopeDepth = 0,\n didWarnNoAwaitAct = !1,\n isFlushing = !1,\n queueSeveralMicrotasks =\n \"function\" === typeof queueMicrotask\n ? function (callback) {\n queueMicrotask(function () {\n return queueMicrotask(callback);\n });\n }\n : enqueueTask;\n deprecatedAPIs = Object.freeze({\n __proto__: null,\n c: function (size) {\n return resolveDispatcher().useMemoCache(size);\n }\n });\n var fnName = {\n map: mapChildren,\n forEach: function (children, forEachFunc, forEachContext) {\n mapChildren(\n children,\n function () {\n forEachFunc.apply(this, arguments);\n },\n forEachContext\n );\n },\n count: function (children) {\n var n = 0;\n mapChildren(children, function () {\n n++;\n });\n return n;\n },\n toArray: function (children) {\n return (\n mapChildren(children, function (child) {\n return child;\n }) || []\n );\n },\n only: function (children) {\n if (!isValidElement(children))\n throw Error(\n \"React.Children.only expected to receive a single React element child.\"\n );\n return children;\n }\n };\n exports.Activity = REACT_ACTIVITY_TYPE;\n exports.Children = fnName;\n exports.Component = Component;\n exports.Fragment = REACT_FRAGMENT_TYPE;\n exports.Profiler = REACT_PROFILER_TYPE;\n exports.PureComponent = PureComponent;\n exports.StrictMode = REACT_STRICT_MODE_TYPE;\n exports.Suspense = REACT_SUSPENSE_TYPE;\n exports.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE =\n ReactSharedInternals;\n exports.__COMPILER_RUNTIME = deprecatedAPIs;\n exports.act = function (callback) {\n var prevActQueue = ReactSharedInternals.actQueue,\n prevActScopeDepth = actScopeDepth;\n actScopeDepth++;\n var queue = (ReactSharedInternals.actQueue =\n null !== prevActQueue ? prevActQueue : []),\n didAwaitActCall = !1;\n try {\n var result = callback();\n } catch (error) {\n ReactSharedInternals.thrownErrors.push(error);\n }\n if (0 < ReactSharedInternals.thrownErrors.length)\n throw (\n (popActScope(prevActQueue, prevActScopeDepth),\n (callback = aggregateErrors(ReactSharedInternals.thrownErrors)),\n (ReactSharedInternals.thrownErrors.length = 0),\n callback)\n );\n if (\n null !== result &&\n \"object\" === typeof result &&\n \"function\" === typeof result.then\n ) {\n var thenable = result;\n queueSeveralMicrotasks(function () {\n didAwaitActCall ||\n didWarnNoAwaitAct ||\n ((didWarnNoAwaitAct = !0),\n console.error(\n \"You called act(async () => ...) without await. This could lead to unexpected testing behaviour, interleaving multiple act calls and mixing their scopes. You should - await act(async () => ...);\"\n ));\n });\n return {\n then: function (resolve, reject) {\n didAwaitActCall = !0;\n thenable.then(\n function (returnValue) {\n popActScope(prevActQueue, prevActScopeDepth);\n if (0 === prevActScopeDepth) {\n try {\n flushActQueue(queue),\n enqueueTask(function () {\n return recursivelyFlushAsyncActWork(\n returnValue,\n resolve,\n reject\n );\n });\n } catch (error$0) {\n ReactSharedInternals.thrownErrors.push(error$0);\n }\n if (0 < ReactSharedInternals.thrownErrors.length) {\n var _thrownError = aggregateErrors(\n ReactSharedInternals.thrownErrors\n );\n ReactSharedInternals.thrownErrors.length = 0;\n reject(_thrownError);\n }\n } else resolve(returnValue);\n },\n function (error) {\n popActScope(prevActQueue, prevActScopeDepth);\n 0 < ReactSharedInternals.thrownErrors.length\n ? ((error = aggregateErrors(\n ReactSharedInternals.thrownErrors\n )),\n (ReactSharedInternals.thrownErrors.length = 0),\n reject(error))\n : reject(error);\n }\n );\n }\n };\n }\n var returnValue$jscomp$0 = result;\n popActScope(prevActQueue, prevActScopeDepth);\n 0 === prevActScopeDepth &&\n (flushActQueue(queue),\n 0 !== queue.length &&\n queueSeveralMicrotasks(function () {\n didAwaitActCall ||\n didWarnNoAwaitAct ||\n ((didWarnNoAwaitAct = !0),\n console.error(\n \"A component suspended inside an `act` scope, but the `act` call was not awaited. When testing React components that depend on asynchronous data, you must await the result:\\n\\nawait act(() => ...)\"\n ));\n }),\n (ReactSharedInternals.actQueue = null));\n if (0 < ReactSharedInternals.thrownErrors.length)\n throw (\n ((callback = aggregateErrors(ReactSharedInternals.thrownErrors)),\n (ReactSharedInternals.thrownErrors.length = 0),\n callback)\n );\n return {\n then: function (resolve, reject) {\n didAwaitActCall = !0;\n 0 === prevActScopeDepth\n ? ((ReactSharedInternals.actQueue = queue),\n enqueueTask(function () {\n return recursivelyFlushAsyncActWork(\n returnValue$jscomp$0,\n resolve,\n reject\n );\n }))\n : resolve(returnValue$jscomp$0);\n }\n };\n };\n exports.cache = function (fn) {\n return function () {\n return fn.apply(null, arguments);\n };\n };\n exports.cacheSignal = function () {\n return null;\n };\n exports.captureOwnerStack = function () {\n var getCurrentStack = ReactSharedInternals.getCurrentStack;\n return null === getCurrentStack ? null : getCurrentStack();\n };\n exports.cloneElement = function (element, config, children) {\n if (null === element || void 0 === element)\n throw Error(\n \"The argument must be a React element, but you passed \" +\n element +\n \".\"\n );\n var props = assign({}, element.props),\n key = element.key,\n owner = element._owner;\n if (null != config) {\n var JSCompiler_inline_result;\n a: {\n if (\n hasOwnProperty.call(config, \"ref\") &&\n (JSCompiler_inline_result = Object.getOwnPropertyDescriptor(\n config,\n \"ref\"\n ).get) &&\n JSCompiler_inline_result.isReactWarning\n ) {\n JSCompiler_inline_result = !1;\n break a;\n }\n JSCompiler_inline_result = void 0 !== config.ref;\n }\n JSCompiler_inline_result && (owner = getOwner());\n hasValidKey(config) &&\n (checkKeyStringCoercion(config.key), (key = \"\" + config.key));\n for (propName in config)\n !hasOwnProperty.call(config, propName) ||\n \"key\" === propName ||\n \"__self\" === propName ||\n \"__source\" === propName ||\n (\"ref\" === propName && void 0 === config.ref) ||\n (props[propName] = config[propName]);\n }\n var propName = arguments.length - 2;\n if (1 === propName) props.children = children;\n else if (1 < propName) {\n JSCompiler_inline_result = Array(propName);\n for (var i = 0; i < propName; i++)\n JSCompiler_inline_result[i] = arguments[i + 2];\n props.children = JSCompiler_inline_result;\n }\n props = ReactElement(\n element.type,\n key,\n props,\n owner,\n element._debugStack,\n element._debugTask\n );\n for (key = 2; key < arguments.length; key++)\n validateChildKeys(arguments[key]);\n return props;\n };\n exports.createContext = function (defaultValue) {\n defaultValue = {\n $$typeof: REACT_CONTEXT_TYPE,\n _currentValue: defaultValue,\n _currentValue2: defaultValue,\n _threadCount: 0,\n Provider: null,\n Consumer: null\n };\n defaultValue.Provider = defaultValue;\n defaultValue.Consumer = {\n $$typeof: REACT_CONSUMER_TYPE,\n _context: defaultValue\n };\n defaultValue._currentRenderer = null;\n defaultValue._currentRenderer2 = null;\n return defaultValue;\n };\n exports.createElement = function (type, config, children) {\n for (var i = 2; i < arguments.length; i++)\n validateChildKeys(arguments[i]);\n i = {};\n var key = null;\n if (null != config)\n for (propName in (didWarnAboutOldJSXRuntime ||\n !(\"__self\" in config) ||\n \"key\" in config ||\n ((didWarnAboutOldJSXRuntime = !0),\n console.warn(\n \"Your app (or one of its dependencies) is using an outdated JSX transform. Update to the modern JSX transform for faster performance: https://react.dev/link/new-jsx-transform\"\n )),\n hasValidKey(config) &&\n (checkKeyStringCoercion(config.key), (key = \"\" + config.key)),\n config))\n hasOwnProperty.call(config, propName) &&\n \"key\" !== propName &&\n \"__self\" !== propName &&\n \"__source\" !== propName &&\n (i[propName] = config[propName]);\n var childrenLength = arguments.length - 2;\n if (1 === childrenLength) i.children = children;\n else if (1 < childrenLength) {\n for (\n var childArray = Array(childrenLength), _i = 0;\n _i < childrenLength;\n _i++\n )\n childArray[_i] = arguments[_i + 2];\n Object.freeze && Object.freeze(childArray);\n i.children = childArray;\n }\n if (type && type.defaultProps)\n for (propName in ((childrenLength = type.defaultProps), childrenLength))\n void 0 === i[propName] && (i[propName] = childrenLength[propName]);\n key &&\n defineKeyPropWarningGetter(\n i,\n \"function\" === typeof type\n ? type.displayName || type.name || \"Unknown\"\n : type\n );\n var propName = 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return ReactElement(\n type,\n key,\n i,\n getOwner(),\n propName ? Error(\"react-stack-top-frame\") : unknownOwnerDebugStack,\n propName ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n exports.createRef = function () {\n var refObject = { current: null };\n Object.seal(refObject);\n return refObject;\n };\n exports.forwardRef = function (render) {\n null != render && render.$$typeof === REACT_MEMO_TYPE\n ? console.error(\n \"forwardRef requires a render function but received a `memo` component. Instead of forwardRef(memo(...)), use memo(forwardRef(...)).\"\n )\n : \"function\" !== typeof render\n ? console.error(\n \"forwardRef requires a render function but was given %s.\",\n null === render ? \"null\" : typeof render\n )\n : 0 !== render.length &&\n 2 !== render.length &&\n console.error(\n \"forwardRef render functions accept exactly two parameters: props and ref. %s\",\n 1 === render.length\n ? \"Did you forget to use the ref parameter?\"\n : \"Any additional parameter will be undefined.\"\n );\n null != render &&\n null != render.defaultProps &&\n console.error(\n \"forwardRef render functions do not support defaultProps. Did you accidentally pass a React component?\"\n );\n var elementType = { $$typeof: REACT_FORWARD_REF_TYPE, render: render },\n ownName;\n Object.defineProperty(elementType, \"displayName\", {\n enumerable: !1,\n configurable: !0,\n get: function () {\n return ownName;\n },\n set: function (name) {\n ownName = name;\n render.name ||\n render.displayName ||\n (Object.defineProperty(render, \"name\", { value: name }),\n (render.displayName = name));\n }\n });\n return elementType;\n };\n exports.isValidElement = isValidElement;\n exports.lazy = function (ctor) {\n ctor = { _status: -1, _result: ctor };\n var lazyType = {\n $$typeof: REACT_LAZY_TYPE,\n _payload: ctor,\n _init: lazyInitializer\n },\n ioInfo = {\n name: \"lazy\",\n start: -1,\n end: -1,\n value: null,\n owner: null,\n debugStack: Error(\"react-stack-top-frame\"),\n debugTask: console.createTask ? console.createTask(\"lazy()\") : null\n };\n ctor._ioInfo = ioInfo;\n lazyType._debugInfo = [{ awaited: ioInfo }];\n return lazyType;\n };\n exports.memo = function (type, compare) {\n null == type &&\n console.error(\n \"memo: The first argument must be a component. Instead received: %s\",\n null === type ? \"null\" : typeof type\n );\n compare = {\n $$typeof: REACT_MEMO_TYPE,\n type: type,\n compare: void 0 === compare ? null : compare\n };\n var ownName;\n Object.defineProperty(compare, \"displayName\", {\n enumerable: !1,\n configurable: !0,\n get: function () {\n return ownName;\n },\n set: function (name) {\n ownName = name;\n type.name ||\n type.displayName ||\n (Object.defineProperty(type, \"name\", { value: name }),\n (type.displayName = name));\n }\n });\n return compare;\n };\n exports.startTransition = function (scope) {\n var prevTransition = ReactSharedInternals.T,\n currentTransition = {};\n currentTransition._updatedFibers = new Set();\n ReactSharedInternals.T = currentTransition;\n try {\n var returnValue = scope(),\n onStartTransitionFinish = ReactSharedInternals.S;\n null !== onStartTransitionFinish &&\n onStartTransitionFinish(currentTransition, returnValue);\n \"object\" === typeof returnValue &&\n null !== returnValue &&\n \"function\" === typeof returnValue.then &&\n (ReactSharedInternals.asyncTransitions++,\n returnValue.then(releaseAsyncTransition, releaseAsyncTransition),\n returnValue.then(noop, reportGlobalError));\n } catch (error) {\n reportGlobalError(error);\n } finally {\n null === prevTransition &&\n currentTransition._updatedFibers &&\n ((scope = currentTransition._updatedFibers.size),\n currentTransition._updatedFibers.clear(),\n 10 < scope &&\n console.warn(\n \"Detected a large number of updates inside startTransition. If this is due to a subscription please re-write it to use React provided hooks. Otherwise concurrent mode guarantees are off the table.\"\n )),\n null !== prevTransition &&\n null !== currentTransition.types &&\n (null !== prevTransition.types &&\n prevTransition.types !== currentTransition.types &&\n console.error(\n \"We expected inner Transitions to have transferred the outer types set and that you cannot add to the outer Transition while inside the inner.This is a bug in React.\"\n ),\n (prevTransition.types = currentTransition.types)),\n (ReactSharedInternals.T = prevTransition);\n }\n };\n exports.unstable_useCacheRefresh = function () {\n return resolveDispatcher().useCacheRefresh();\n };\n exports.use = function (usable) {\n return resolveDispatcher().use(usable);\n };\n exports.useActionState = function (action, initialState, permalink) {\n return resolveDispatcher().useActionState(\n action,\n initialState,\n permalink\n );\n };\n exports.useCallback = function (callback, deps) {\n return resolveDispatcher().useCallback(callback, deps);\n };\n exports.useContext = function (Context) {\n var dispatcher = resolveDispatcher();\n Context.$$typeof === REACT_CONSUMER_TYPE &&\n console.error(\n \"Calling useContext(Context.Consumer) is not supported and will cause bugs. Did you mean to call useContext(Context) instead?\"\n );\n return dispatcher.useContext(Context);\n };\n exports.useDebugValue = function (value, formatterFn) {\n return resolveDispatcher().useDebugValue(value, formatterFn);\n };\n exports.useDeferredValue = function (value, initialValue) {\n return resolveDispatcher().useDeferredValue(value, initialValue);\n };\n exports.useEffect = function (create, deps) {\n null == create &&\n console.warn(\n \"React Hook useEffect requires an effect callback. Did you forget to pass a callback to the hook?\"\n );\n return resolveDispatcher().useEffect(create, deps);\n };\n exports.useEffectEvent = function (callback) {\n return resolveDispatcher().useEffectEvent(callback);\n };\n exports.useId = function () {\n return resolveDispatcher().useId();\n };\n exports.useImperativeHandle = function (ref, create, deps) {\n return resolveDispatcher().useImperativeHandle(ref, create, deps);\n };\n exports.useInsertionEffect = function (create, deps) {\n null == create &&\n console.warn(\n \"React Hook useInsertionEffect requires an effect callback. Did you forget to pass a callback to the hook?\"\n );\n return resolveDispatcher().useInsertionEffect(create, deps);\n };\n exports.useLayoutEffect = function (create, deps) {\n null == create &&\n console.warn(\n \"React Hook useLayoutEffect requires an effect callback. Did you forget to pass a callback to the hook?\"\n );\n return resolveDispatcher().useLayoutEffect(create, deps);\n };\n exports.useMemo = function (create, deps) {\n return resolveDispatcher().useMemo(create, deps);\n };\n exports.useOptimistic = function (passthrough, reducer) {\n return resolveDispatcher().useOptimistic(passthrough, reducer);\n };\n exports.useReducer = function (reducer, initialArg, init) {\n return resolveDispatcher().useReducer(reducer, initialArg, init);\n };\n exports.useRef = function (initialValue) {\n return resolveDispatcher().useRef(initialValue);\n };\n exports.useState = function (initialState) {\n return resolveDispatcher().useState(initialState);\n };\n exports.useSyncExternalStore = function (\n subscribe,\n getSnapshot,\n getServerSnapshot\n ) {\n return resolveDispatcher().useSyncExternalStore(\n subscribe,\n getSnapshot,\n getServerSnapshot\n );\n };\n exports.useTransition = function () {\n return resolveDispatcher().useTransition();\n };\n exports.version = \"19.2.0\";\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());\n })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","/**\n * @license React\n * react-jsx-runtime.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n case REACT_ACTIVITY_TYPE:\n return \"Activity\";\n }\n if (\"object\" === typeof type)\n switch (\n (\"number\" === typeof type.tag &&\n console.error(\n \"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"\n ),\n type.$$typeof)\n ) {\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_CONTEXT_TYPE:\n return type.displayName || \"Context\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n }\n function testStringCoercion(value) {\n return \"\" + value;\n }\n function checkKeyStringCoercion(value) {\n try {\n testStringCoercion(value);\n var JSCompiler_inline_result = !1;\n } catch (e) {\n JSCompiler_inline_result = !0;\n }\n if (JSCompiler_inline_result) {\n JSCompiler_inline_result = console;\n var JSCompiler_temp_const = JSCompiler_inline_result.error;\n var JSCompiler_inline_result$jscomp$0 =\n (\"function\" === typeof Symbol &&\n Symbol.toStringTag &&\n value[Symbol.toStringTag]) ||\n value.constructor.name ||\n \"Object\";\n JSCompiler_temp_const.call(\n JSCompiler_inline_result,\n \"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.\",\n JSCompiler_inline_result$jscomp$0\n );\n return testStringCoercion(value);\n }\n }\n function getTaskName(type) {\n if (type === REACT_FRAGMENT_TYPE) return \"<>\";\n if (\n \"object\" === typeof type &&\n null !== type &&\n type.$$typeof === REACT_LAZY_TYPE\n )\n return \"<...>\";\n try {\n var name = getComponentNameFromType(type);\n return name ? \"<\" + name + \">\" : \"<...>\";\n } catch (x) {\n return \"<...>\";\n }\n }\n function getOwner() {\n var dispatcher = ReactSharedInternals.A;\n return null === dispatcher ? null : dispatcher.getOwner();\n }\n function UnknownOwner() {\n return Error(\"react-stack-top-frame\");\n }\n function hasValidKey(config) {\n if (hasOwnProperty.call(config, \"key\")) {\n var getter = Object.getOwnPropertyDescriptor(config, \"key\").get;\n if (getter && getter.isReactWarning) return !1;\n }\n return void 0 !== config.key;\n }\n function defineKeyPropWarningGetter(props, displayName) {\n function warnAboutAccessingKey() {\n specialPropKeyWarningShown ||\n ((specialPropKeyWarningShown = !0),\n console.error(\n \"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)\",\n displayName\n ));\n }\n warnAboutAccessingKey.isReactWarning = !0;\n Object.defineProperty(props, \"key\", {\n get: warnAboutAccessingKey,\n configurable: !0\n });\n }\n function elementRefGetterWithDeprecationWarning() {\n var componentName = getComponentNameFromType(this.type);\n didWarnAboutElementRef[componentName] ||\n ((didWarnAboutElementRef[componentName] = !0),\n console.error(\n \"Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.\"\n ));\n componentName = this.props.ref;\n return void 0 !== componentName ? componentName : null;\n }\n function ReactElement(type, key, props, owner, debugStack, debugTask) {\n var refProp = props.ref;\n type = {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n props: props,\n _owner: owner\n };\n null !== (void 0 !== refProp ? refProp : null)\n ? Object.defineProperty(type, \"ref\", {\n enumerable: !1,\n get: elementRefGetterWithDeprecationWarning\n })\n : Object.defineProperty(type, \"ref\", { enumerable: !1, value: null });\n type._store = {};\n Object.defineProperty(type._store, \"validated\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: 0\n });\n Object.defineProperty(type, \"_debugInfo\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: null\n });\n Object.defineProperty(type, \"_debugStack\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugStack\n });\n Object.defineProperty(type, \"_debugTask\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugTask\n });\n Object.freeze && (Object.freeze(type.props), Object.freeze(type));\n return type;\n }\n function jsxDEVImpl(\n type,\n config,\n maybeKey,\n isStaticChildren,\n debugStack,\n debugTask\n ) {\n var children = config.children;\n if (void 0 !== children)\n if (isStaticChildren)\n if (isArrayImpl(children)) {\n for (\n isStaticChildren = 0;\n isStaticChildren < children.length;\n isStaticChildren++\n )\n validateChildKeys(children[isStaticChildren]);\n Object.freeze && Object.freeze(children);\n } else\n console.error(\n \"React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.\"\n );\n else validateChildKeys(children);\n if (hasOwnProperty.call(config, \"key\")) {\n children = getComponentNameFromType(type);\n var keys = Object.keys(config).filter(function (k) {\n return \"key\" !== k;\n });\n isStaticChildren =\n 0 < keys.length\n ? \"{key: someKey, \" + keys.join(\": ..., \") + \": ...}\"\n : \"{key: someKey}\";\n didWarnAboutKeySpread[children + isStaticChildren] ||\n ((keys =\n 0 < keys.length ? \"{\" + keys.join(\": ..., \") + \": ...}\" : \"{}\"),\n console.error(\n 'A props object containing a \"key\" prop is being spread into JSX:\\n let props = %s;\\n <%s {...props} />\\nReact keys must be passed directly to JSX without using spread:\\n let props = %s;\\n <%s key={someKey} {...props} />',\n isStaticChildren,\n children,\n keys,\n children\n ),\n (didWarnAboutKeySpread[children + isStaticChildren] = !0));\n }\n children = null;\n void 0 !== maybeKey &&\n (checkKeyStringCoercion(maybeKey), (children = \"\" + maybeKey));\n hasValidKey(config) &&\n (checkKeyStringCoercion(config.key), (children = \"\" + config.key));\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n children &&\n defineKeyPropWarningGetter(\n maybeKey,\n \"function\" === typeof type\n ? type.displayName || type.name || \"Unknown\"\n : type\n );\n return ReactElement(\n type,\n children,\n maybeKey,\n getOwner(),\n debugStack,\n debugTask\n );\n }\n function validateChildKeys(node) {\n isValidElement(node)\n ? node._store && (node._store.validated = 1)\n : \"object\" === typeof node &&\n null !== node &&\n node.$$typeof === REACT_LAZY_TYPE &&\n (\"fulfilled\" === node._payload.status\n ? isValidElement(node._payload.value) &&\n node._payload.value._store &&\n (node._payload.value._store.validated = 1)\n : node._store && (node._store.validated = 1));\n }\n function isValidElement(object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n }\n var React = require(\"react\"),\n REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\"),\n ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n hasOwnProperty = Object.prototype.hasOwnProperty,\n isArrayImpl = Array.isArray,\n createTask = console.createTask\n ? console.createTask\n : function () {\n return null;\n };\n React = {\n react_stack_bottom_frame: function (callStackForError) {\n return callStackForError();\n }\n };\n var specialPropKeyWarningShown;\n var didWarnAboutElementRef = {};\n var unknownOwnerDebugStack = React.react_stack_bottom_frame.bind(\n React,\n UnknownOwner\n )();\n var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));\n var didWarnAboutKeySpread = {};\n exports.Fragment = REACT_FRAGMENT_TYPE;\n exports.jsx = function (type, config, maybeKey) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n !1,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n exports.jsxs = function (type, config, maybeKey) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n !0,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/**\n * Utility functions for Enterprise Standard Validator\n */\n\nimport type { ValidationConfig, ValidationResult } from './types';\n\n// Optional type import for StandardSchemaV1 - users can pass validators from\n// @enterprisestandard/react-validators-valibot or @enterprisestandard/react-validators-zod\ntype StandardSchemaV1 = {\n readonly '~standard': {\n readonly validate: (\n value: unknown,\n ) =>\n | { value: unknown }\n | { issues: ReadonlyArray<{ message: string; path?: ReadonlyArray<PropertyKey> }> }\n | Promise<{ value: unknown } | { issues: ReadonlyArray<{ message: string; path?: ReadonlyArray<PropertyKey> }> }>;\n };\n};\n\n/**\n * Creates a fetch function with default configuration\n */\nexport function createFetcher(config: ValidationConfig) {\n const timeout = config.timeout ?? 5000;\n const headers = config.headers ?? {};\n\n return async function fetcher(path: string, options: RequestInit = {}): Promise<Response> {\n const url = `${config.baseUrl}${path}`;\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), timeout);\n\n try {\n const response = await fetch(url, {\n ...options,\n signal: controller.signal,\n headers: {\n ...headers,\n ...options.headers,\n },\n redirect: 'manual', // Don't follow redirects automatically\n });\n return response;\n } finally {\n clearTimeout(timeoutId);\n }\n };\n}\n\n/**\n * Wraps a test function to capture timing and errors\n */\nexport async function runTest(\n name: string,\n testFn: () => Promise<undefined | { details?: Record<string, unknown> }>,\n): Promise<ValidationResult> {\n const start = performance.now();\n try {\n const result = await testFn();\n return {\n name,\n passed: true,\n duration: performance.now() - start,\n details: result?.details,\n };\n } catch (error) {\n return {\n name,\n passed: false,\n error: error instanceof Error ? error.message : String(error),\n duration: performance.now() - start,\n };\n }\n}\n\n/**\n * Creates a skipped test result\n */\nexport function skipTest(name: string, reason: string): ValidationResult {\n return {\n name,\n passed: true,\n duration: 0,\n details: { skipped: true, reason },\n };\n}\n\n/**\n * Assertion helper for tests\n */\nexport function assert(condition: boolean, message: string): asserts condition {\n if (!condition) {\n throw new Error(message);\n }\n}\n\n/**\n * Assertion helper for equality\n */\nexport function assertEqual<T>(actual: T, expected: T, message?: string): void {\n if (actual !== expected) {\n throw new Error(message ?? `Expected ${JSON.stringify(expected)}, got ${JSON.stringify(actual)}`);\n }\n}\n\n/**\n * Assertion helper for validating data against a StandardSchemaV1 validator\n *\n * This is the preferred way to validate data when you have a validator available.\n * The validator can be from valibot, zod, or any other library that implements StandardSchemaV1.\n *\n * @param data - The data to validate\n * @param validator - A StandardSchemaV1 validator (e.g., from valibotValidators or zodValidators)\n * @param message - Optional custom error message\n *\n * @example\n * ```typescript\n * import { valibotValidators } from '@enterprisestandard/react-validators-valibot';\n * const tenantValidator = valibotValidators.createTenantResponse();\n * assertValid(data, tenantValidator);\n * ```\n *\n * @throws Error if validation fails\n */\nexport function assertValid(data: unknown, validator: StandardSchemaV1, message?: string): void {\n const result = validator['~standard'].validate(data);\n\n // Handle both sync and async results\n if (result instanceof Promise) {\n throw new Error(\n message ?? 'Async validators are not supported in assertValid. Use the validator directly with await.',\n );\n }\n\n if ('issues' in result) {\n const issues = result.issues;\n const errorMessages = issues.map((issue) => {\n const path = issue.path ? issue.path.map(String).join('.') : '';\n return path ? `${path}: ${issue.message}` : issue.message;\n });\n throw new Error(message ?? `Validation failed: ${errorMessages.join('; ')}`);\n }\n\n // Validation passed\n}\n\n/**\n * Parses cookies from a Set-Cookie header\n */\nexport function parseCookies(headers: Headers): Map<string, string> {\n const cookies = new Map<string, string>();\n const setCookieHeaders = headers.getSetCookie?.() ?? [];\n\n for (const cookie of setCookieHeaders) {\n const [pair] = cookie.split(';');\n const [name, value] = pair.split('=');\n if (name && value !== undefined) {\n cookies.set(name.trim(), value.trim());\n }\n }\n\n return cookies;\n}\n\n/**\n * Builds a cookie header string from a map\n */\nexport function buildCookieHeader(cookies: Map<string, string>): string {\n return Array.from(cookies.entries())\n .map(([name, value]) => `${name}=${value}`)\n .join('; ');\n}\n","//#region src/storages/globalConfig/globalConfig.ts\nlet store$4;\n/**\n* Sets the global configuration.\n*\n* @param config The configuration.\n*/\nfunction setGlobalConfig(config$1) {\n\tstore$4 = {\n\t\t...store$4,\n\t\t...config$1\n\t};\n}\n/**\n* Returns the global configuration.\n*\n* @param config The config to merge.\n*\n* @returns The configuration.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction getGlobalConfig(config$1) {\n\treturn {\n\t\tlang: config$1?.lang ?? store$4?.lang,\n\t\tmessage: config$1?.message,\n\t\tabortEarly: config$1?.abortEarly ?? store$4?.abortEarly,\n\t\tabortPipeEarly: config$1?.abortPipeEarly ?? store$4?.abortPipeEarly\n\t};\n}\n/**\n* Deletes the global configuration.\n*/\nfunction deleteGlobalConfig() {\n\tstore$4 = void 0;\n}\n\n//#endregion\n//#region src/storages/globalMessage/globalMessage.ts\nlet store$3;\n/**\n* Sets a global error message.\n*\n* @param message The error message.\n* @param lang The language of the message.\n*/\nfunction setGlobalMessage(message$1, lang) {\n\tif (!store$3) store$3 = /* @__PURE__ */ new Map();\n\tstore$3.set(lang, message$1);\n}\n/**\n* Returns a global error message.\n*\n* @param lang The language of the message.\n*\n* @returns The error message.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction getGlobalMessage(lang) {\n\treturn store$3?.get(lang);\n}\n/**\n* Deletes a global error message.\n*\n* @param lang The language of the message.\n*/\nfunction deleteGlobalMessage(lang) {\n\tstore$3?.delete(lang);\n}\n\n//#endregion\n//#region src/storages/schemaMessage/schemaMessage.ts\nlet store$2;\n/**\n* Sets a schema error message.\n*\n* @param message The error message.\n* @param lang The language of the message.\n*/\nfunction setSchemaMessage(message$1, lang) {\n\tif (!store$2) store$2 = /* @__PURE__ */ new Map();\n\tstore$2.set(lang, message$1);\n}\n/**\n* Returns a schema error message.\n*\n* @param lang The language of the message.\n*\n* @returns The error message.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction getSchemaMessage(lang) {\n\treturn store$2?.get(lang);\n}\n/**\n* Deletes a schema error message.\n*\n* @param lang The language of the message.\n*/\nfunction deleteSchemaMessage(lang) {\n\tstore$2?.delete(lang);\n}\n\n//#endregion\n//#region src/storages/specificMessage/specificMessage.ts\nlet store$1;\n/**\n* Sets a specific error message.\n*\n* @param reference The identifier reference.\n* @param message The error message.\n* @param lang The language of the message.\n*/\nfunction setSpecificMessage(reference, message$1, lang) {\n\tif (!store$1) store$1 = /* @__PURE__ */ new Map();\n\tif (!store$1.get(reference)) store$1.set(reference, /* @__PURE__ */ new Map());\n\tstore$1.get(reference).set(lang, message$1);\n}\n/**\n* Returns a specific error message.\n*\n* @param reference The identifier reference.\n* @param lang The language of the message.\n*\n* @returns The error message.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction getSpecificMessage(reference, lang) {\n\treturn store$1?.get(reference)?.get(lang);\n}\n/**\n* Deletes a specific error message.\n*\n* @param reference The identifier reference.\n* @param lang The language of the message.\n*/\nfunction deleteSpecificMessage(reference, lang) {\n\tstore$1?.get(reference)?.delete(lang);\n}\n\n//#endregion\n//#region src/utils/_stringify/_stringify.ts\n/**\n* Stringifies an unknown input to a literal or type string.\n*\n* @param input The unknown input.\n*\n* @returns A literal or type string.\n*\n* @internal\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction _stringify(input) {\n\tconst type = typeof input;\n\tif (type === \"string\") return `\"${input}\"`;\n\tif (type === \"number\" || type === \"bigint\" || type === \"boolean\") return `${input}`;\n\tif (type === \"object\" || type === \"function\") return (input && Object.getPrototypeOf(input)?.constructor?.name) ?? \"null\";\n\treturn type;\n}\n\n//#endregion\n//#region src/utils/_addIssue/_addIssue.ts\n/**\n* Adds an issue to the dataset.\n*\n* @param context The issue context.\n* @param label The issue label.\n* @param dataset The input dataset.\n* @param config The configuration.\n* @param other The optional props.\n*\n* @internal\n*/\nfunction _addIssue(context, label, dataset, config$1, other) {\n\tconst input = other && \"input\" in other ? other.input : dataset.value;\n\tconst expected = other?.expected ?? context.expects ?? null;\n\tconst received = other?.received ?? /* @__PURE__ */ _stringify(input);\n\tconst issue = {\n\t\tkind: context.kind,\n\t\ttype: context.type,\n\t\tinput,\n\t\texpected,\n\t\treceived,\n\t\tmessage: `Invalid ${label}: ${expected ? `Expected ${expected} but r` : \"R\"}eceived ${received}`,\n\t\trequirement: context.requirement,\n\t\tpath: other?.path,\n\t\tissues: other?.issues,\n\t\tlang: config$1.lang,\n\t\tabortEarly: config$1.abortEarly,\n\t\tabortPipeEarly: config$1.abortPipeEarly\n\t};\n\tconst isSchema = context.kind === \"schema\";\n\tconst message$1 = other?.message ?? context.message ?? /* @__PURE__ */ getSpecificMessage(context.reference, issue.lang) ?? (isSchema ? /* @__PURE__ */ getSchemaMessage(issue.lang) : null) ?? config$1.message ?? /* @__PURE__ */ getGlobalMessage(issue.lang);\n\tif (message$1 !== void 0) issue.message = typeof message$1 === \"function\" ? message$1(issue) : message$1;\n\tif (isSchema) dataset.typed = false;\n\tif (dataset.issues) dataset.issues.push(issue);\n\telse dataset.issues = [issue];\n}\n\n//#endregion\n//#region src/utils/_getByteCount/_getByteCount.ts\nlet textEncoder;\n/**\n* Returns the byte count of the input.\n*\n* @param input The input to be measured.\n*\n* @returns The byte count.\n*\n* @internal\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction _getByteCount(input) {\n\tif (!textEncoder) textEncoder = new TextEncoder();\n\treturn textEncoder.encode(input).length;\n}\n\n//#endregion\n//#region src/utils/_getGraphemeCount/_getGraphemeCount.ts\nlet segmenter;\n/**\n* Returns the grapheme count of the input.\n*\n* @param input The input to be measured.\n*\n* @returns The grapheme count.\n*\n* @internal\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction _getGraphemeCount(input) {\n\tif (!segmenter) segmenter = new Intl.Segmenter();\n\tconst segments = segmenter.segment(input);\n\tlet count = 0;\n\tfor (const _ of segments) count++;\n\treturn count;\n}\n\n//#endregion\n//#region src/utils/_getLastMetadata/_getLastMetadata.ts\n/**\n* Returns the last top-level value of a given metadata type from a schema\n* using a breadth-first search that starts with the last item in the pipeline.\n*\n* @param schema The schema to search.\n* @param type The metadata type.\n*\n* @returns The value, if any.\n*\n* @internal\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction _getLastMetadata(schema, type) {\n\tif (\"pipe\" in schema) {\n\t\tconst nestedSchemas = [];\n\t\tfor (let index = schema.pipe.length - 1; index >= 0; index--) {\n\t\t\tconst item = schema.pipe[index];\n\t\t\tif (item.kind === \"schema\" && \"pipe\" in item) nestedSchemas.push(item);\n\t\t\telse if (item.kind === \"metadata\" && item.type === type) return item[type];\n\t\t}\n\t\tfor (const nestedSchema of nestedSchemas) {\n\t\t\tconst result = /* @__PURE__ */ _getLastMetadata(nestedSchema, type);\n\t\t\tif (result !== void 0) return result;\n\t\t}\n\t}\n}\n\n//#endregion\n//#region src/utils/_getStandardProps/_getStandardProps.ts\n/**\n* Returns the Standard Schema properties.\n*\n* @param context The schema context.\n*\n* @returns The Standard Schema properties.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction _getStandardProps(context) {\n\treturn {\n\t\tversion: 1,\n\t\tvendor: \"valibot\",\n\t\tvalidate(value$1) {\n\t\t\treturn context[\"~run\"]({ value: value$1 }, /* @__PURE__ */ getGlobalConfig());\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/utils/_getWordCount/_getWordCount.ts\nlet store;\n/**\n* Returns the word count of the input.\n*\n* @param locales The locales to be used.\n* @param input The input to be measured.\n*\n* @returns The word count.\n*\n* @internal\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction _getWordCount(locales, input) {\n\tif (!store) store = /* @__PURE__ */ new Map();\n\tif (!store.get(locales)) store.set(locales, new Intl.Segmenter(locales, { granularity: \"word\" }));\n\tconst segments = store.get(locales).segment(input);\n\tlet count = 0;\n\tfor (const segment of segments) if (segment.isWordLike) count++;\n\treturn count;\n}\n\n//#endregion\n//#region src/utils/_isLuhnAlgo/_isLuhnAlgo.ts\n/**\n* Non-digit regex.\n*/\nconst NON_DIGIT_REGEX = /\\D/gu;\n/**\n* Checks whether a string with numbers corresponds to the luhn algorithm.\n*\n* @param input The input to be checked.\n*\n* @returns Whether input is valid.\n*\n* @internal\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction _isLuhnAlgo(input) {\n\tconst number$1 = input.replace(NON_DIGIT_REGEX, \"\");\n\tlet length$1 = number$1.length;\n\tlet bit = 1;\n\tlet sum = 0;\n\twhile (length$1) {\n\t\tconst value$1 = +number$1[--length$1];\n\t\tbit ^= 1;\n\t\tsum += bit ? [\n\t\t\t0,\n\t\t\t2,\n\t\t\t4,\n\t\t\t6,\n\t\t\t8,\n\t\t\t1,\n\t\t\t3,\n\t\t\t5,\n\t\t\t7,\n\t\t\t9\n\t\t][value$1] : value$1;\n\t}\n\treturn sum % 10 === 0;\n}\n\n//#endregion\n//#region src/utils/_isValidObjectKey/_isValidObjectKey.ts\n/**\n* Disallows inherited object properties and prevents object prototype\n* pollution by disallowing certain keys.\n*\n* @param object The object to check.\n* @param key The key to check.\n*\n* @returns Whether the key is allowed.\n*\n* @internal\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction _isValidObjectKey(object$1, key) {\n\treturn Object.hasOwn(object$1, key) && key !== \"__proto__\" && key !== \"prototype\" && key !== \"constructor\";\n}\n\n//#endregion\n//#region src/utils/_joinExpects/_joinExpects.ts\n/**\n* Joins multiple `expects` values with the given separator.\n*\n* @param values The `expects` values.\n* @param separator The separator.\n*\n* @returns The joined `expects` property.\n*\n* @internal\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction _joinExpects(values$1, separator) {\n\tconst list = [...new Set(values$1)];\n\tif (list.length > 1) return `(${list.join(` ${separator} `)})`;\n\treturn list[0] ?? \"never\";\n}\n\n//#endregion\n//#region src/utils/entriesFromList/entriesFromList.ts\n/**\n* Creates an object entries definition from a list of keys and a schema.\n*\n* @param list A list of keys.\n* @param schema The schema of the keys.\n*\n* @returns The object entries.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction entriesFromList(list, schema) {\n\tconst entries$1 = {};\n\tfor (const key of list) entries$1[key] = schema;\n\treturn entries$1;\n}\n\n//#endregion\n//#region src/utils/entriesFromObjects/entriesFromObjects.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction entriesFromObjects(schemas) {\n\tconst entries$1 = {};\n\tfor (const schema of schemas) Object.assign(entries$1, schema.entries);\n\treturn entries$1;\n}\n\n//#endregion\n//#region src/utils/getDotPath/getDotPath.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction getDotPath(issue) {\n\tif (issue.path) {\n\t\tlet key = \"\";\n\t\tfor (const item of issue.path) if (typeof item.key === \"string\" || typeof item.key === \"number\") if (key) key += `.${item.key}`;\n\t\telse key += item.key;\n\t\telse return null;\n\t\treturn key;\n\t}\n\treturn null;\n}\n\n//#endregion\n//#region src/utils/isOfKind/isOfKind.ts\n/**\n* A generic type guard to check the kind of an object.\n*\n* @param kind The kind to check for.\n* @param object The object to check.\n*\n* @returns Whether it matches.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction isOfKind(kind, object$1) {\n\treturn object$1.kind === kind;\n}\n\n//#endregion\n//#region src/utils/isOfType/isOfType.ts\n/**\n* A generic type guard to check the type of an object.\n*\n* @param type The type to check for.\n* @param object The object to check.\n*\n* @returns Whether it matches.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction isOfType(type, object$1) {\n\treturn object$1.type === type;\n}\n\n//#endregion\n//#region src/utils/isValiError/isValiError.ts\n/**\n* A type guard to check if an error is a ValiError.\n*\n* @param error The error to check.\n*\n* @returns Whether its a ValiError.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction isValiError(error) {\n\treturn error instanceof ValiError;\n}\n\n//#endregion\n//#region src/utils/ValiError/ValiError.ts\n/**\n* A Valibot error with useful information.\n*/\nvar ValiError = class extends Error {\n\t/**\n\t* Creates a Valibot error with useful information.\n\t*\n\t* @param issues The error issues.\n\t*/\n\tconstructor(issues) {\n\t\tsuper(issues[0].message);\n\t\tthis.name = \"ValiError\";\n\t\tthis.issues = issues;\n\t}\n};\n\n//#endregion\n//#region src/actions/args/args.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction args(schema) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"args\",\n\t\treference: args,\n\t\tasync: false,\n\t\tschema,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst func = dataset.value;\n\t\t\tdataset.value = (...args_) => {\n\t\t\t\tconst argsDataset = this.schema[\"~run\"]({ value: args_ }, config$1);\n\t\t\t\tif (argsDataset.issues) throw new ValiError(argsDataset.issues);\n\t\t\t\treturn func(...argsDataset.value);\n\t\t\t};\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/args/argsAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction argsAsync(schema) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"args\",\n\t\treference: argsAsync,\n\t\tasync: false,\n\t\tschema,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst func = dataset.value;\n\t\t\tdataset.value = async (...args$1) => {\n\t\t\t\tconst argsDataset = await schema[\"~run\"]({ value: args$1 }, config$1);\n\t\t\t\tif (argsDataset.issues) throw new ValiError(argsDataset.issues);\n\t\t\t\treturn func(...argsDataset.value);\n\t\t\t};\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/await/awaitAsync.ts\n/**\n* Creates an await transformation action.\n*\n* @returns An await action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction awaitAsync() {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"await\",\n\t\treference: awaitAsync,\n\t\tasync: true,\n\t\tasync \"~run\"(dataset) {\n\t\t\tdataset.value = await dataset.value;\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/regex.ts\n/**\n* [Base64](https://en.wikipedia.org/wiki/Base64) regex.\n*/\nconst BASE64_REGEX = /^(?:[\\da-z+/]{4})*(?:[\\da-z+/]{2}==|[\\da-z+/]{3}=)?$/iu;\n/**\n* [BIC](https://en.wikipedia.org/wiki/ISO_9362) regex.\n*/\nconst BIC_REGEX = /^[A-Z]{6}(?!00)[\\dA-Z]{2}(?:[\\dA-Z]{3})?$/u;\n/**\n* [Cuid2](https://github.com/paralleldrive/cuid2) regex.\n*/\nconst CUID2_REGEX = /^[a-z][\\da-z]*$/u;\n/**\n* [Decimal](https://en.wikipedia.org/wiki/Decimal) regex.\n*/\nconst DECIMAL_REGEX = /^[+-]?(?:\\d*\\.)?\\d+$/u;\n/**\n* [Digits](https://en.wikipedia.org/wiki/Numerical_digit) regex.\n*/\nconst DIGITS_REGEX = /^\\d+$/u;\n/**\n* [Email address](https://en.wikipedia.org/wiki/Email_address) regex.\n*/\nconst EMAIL_REGEX = /^[\\w+-]+(?:\\.[\\w+-]+)*@[\\da-z]+(?:[.-][\\da-z]+)*\\.[a-z]{2,}$/iu;\n/**\n* Emoji regex from [emoji-regex-xs](https://github.com/slevithan/emoji-regex-xs) v1.0.0 (MIT license).\n*\n* Hint: We decided against the newer `/^\\p{RGI_Emoji}+$/v` regex because it is\n* not supported in older runtimes and does not match all emoji.\n*/\nconst EMOJI_REGEX = /^(?:[\\u{1F1E6}-\\u{1F1FF}]{2}|\\u{1F3F4}[\\u{E0061}-\\u{E007A}]{2}[\\u{E0030}-\\u{E0039}\\u{E0061}-\\u{E007A}]{1,3}\\u{E007F}|(?:\\p{Emoji}\\uFE0F\\u20E3?|\\p{Emoji_Modifier_Base}\\p{Emoji_Modifier}?|(?![\\p{Emoji_Modifier_Base}\\u{1F1E6}-\\u{1F1FF}])\\p{Emoji_Presentation})(?:\\u200D(?:\\p{Emoji}\\uFE0F\\u20E3?|\\p{Emoji_Modifier_Base}\\p{Emoji_Modifier}?|(?![\\p{Emoji_Modifier_Base}\\u{1F1E6}-\\u{1F1FF}])\\p{Emoji_Presentation}))*)+$/u;\n/**\n* [Hexadecimal](https://en.wikipedia.org/wiki/Hexadecimal) regex.\n*\n* Hint: We decided against the `i` flag for better JSON Schema compatibility.\n*/\nconst HEXADECIMAL_REGEX = /^(?:0[hx])?[\\da-fA-F]+$/u;\n/**\n* [Hex color](https://en.wikipedia.org/wiki/Web_colors#Hex_triplet) regex.\n*\n* Hint: We decided against the `i` flag for better JSON Schema compatibility.\n*/\nconst HEX_COLOR_REGEX = /^#(?:[\\da-fA-F]{3,4}|[\\da-fA-F]{6}|[\\da-fA-F]{8})$/u;\n/**\n* [IMEI](https://en.wikipedia.org/wiki/International_Mobile_Equipment_Identity) regex.\n*/\nconst IMEI_REGEX = /^\\d{15}$|^\\d{2}-\\d{6}-\\d{6}-\\d$/u;\n/**\n* [IPv4](https://en.wikipedia.org/wiki/IPv4) regex.\n*/\nconst IPV4_REGEX = /^(?:(?:[1-9]|1\\d|2[0-4])?\\d|25[0-5])(?:\\.(?:(?:[1-9]|1\\d|2[0-4])?\\d|25[0-5])){3}$/u;\n/**\n* [IPv6](https://en.wikipedia.org/wiki/IPv6) regex.\n*/\nconst IPV6_REGEX = /^(?:(?:[\\da-f]{1,4}:){7}[\\da-f]{1,4}|(?:[\\da-f]{1,4}:){1,7}:|(?:[\\da-f]{1,4}:){1,6}:[\\da-f]{1,4}|(?:[\\da-f]{1,4}:){1,5}(?::[\\da-f]{1,4}){1,2}|(?:[\\da-f]{1,4}:){1,4}(?::[\\da-f]{1,4}){1,3}|(?:[\\da-f]{1,4}:){1,3}(?::[\\da-f]{1,4}){1,4}|(?:[\\da-f]{1,4}:){1,2}(?::[\\da-f]{1,4}){1,5}|[\\da-f]{1,4}:(?::[\\da-f]{1,4}){1,6}|:(?:(?::[\\da-f]{1,4}){1,7}|:)|fe80:(?::[\\da-f]{0,4}){0,4}%[\\da-z]+|::(?:f{4}(?::0{1,4})?:)?(?:(?:25[0-5]|(?:2[0-4]|1?\\d)?\\d)\\.){3}(?:25[0-5]|(?:2[0-4]|1?\\d)?\\d)|(?:[\\da-f]{1,4}:){1,4}:(?:(?:25[0-5]|(?:2[0-4]|1?\\d)?\\d)\\.){3}(?:25[0-5]|(?:2[0-4]|1?\\d)?\\d))$/iu;\n/**\n* [IP](https://en.wikipedia.org/wiki/IP_address) regex.\n*/\nconst IP_REGEX = /^(?:(?:[1-9]|1\\d|2[0-4])?\\d|25[0-5])(?:\\.(?:(?:[1-9]|1\\d|2[0-4])?\\d|25[0-5])){3}$|^(?:(?:[\\da-f]{1,4}:){7}[\\da-f]{1,4}|(?:[\\da-f]{1,4}:){1,7}:|(?:[\\da-f]{1,4}:){1,6}:[\\da-f]{1,4}|(?:[\\da-f]{1,4}:){1,5}(?::[\\da-f]{1,4}){1,2}|(?:[\\da-f]{1,4}:){1,4}(?::[\\da-f]{1,4}){1,3}|(?:[\\da-f]{1,4}:){1,3}(?::[\\da-f]{1,4}){1,4}|(?:[\\da-f]{1,4}:){1,2}(?::[\\da-f]{1,4}){1,5}|[\\da-f]{1,4}:(?::[\\da-f]{1,4}){1,6}|:(?:(?::[\\da-f]{1,4}){1,7}|:)|fe80:(?::[\\da-f]{0,4}){0,4}%[\\da-z]+|::(?:f{4}(?::0{1,4})?:)?(?:(?:25[0-5]|(?:2[0-4]|1?\\d)?\\d)\\.){3}(?:25[0-5]|(?:2[0-4]|1?\\d)?\\d)|(?:[\\da-f]{1,4}:){1,4}:(?:(?:25[0-5]|(?:2[0-4]|1?\\d)?\\d)\\.){3}(?:25[0-5]|(?:2[0-4]|1?\\d)?\\d))$/iu;\n/**\n* [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date regex.\n*/\nconst ISO_DATE_REGEX = /^\\d{4}-(?:0[1-9]|1[0-2])-(?:[12]\\d|0[1-9]|3[01])$/u;\n/**\n* [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time regex.\n*/\nconst ISO_DATE_TIME_REGEX = /^\\d{4}-(?:0[1-9]|1[0-2])-(?:[12]\\d|0[1-9]|3[01])[T ](?:0\\d|1\\d|2[0-3]):[0-5]\\d$/u;\n/**\n* [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) time regex.\n*/\nconst ISO_TIME_REGEX = /^(?:0\\d|1\\d|2[0-3]):[0-5]\\d$/u;\n/**\n* [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) time with seconds regex.\n*/\nconst ISO_TIME_SECOND_REGEX = /^(?:0\\d|1\\d|2[0-3])(?::[0-5]\\d){2}$/u;\n/**\n* [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) timestamp regex.\n*/\nconst ISO_TIMESTAMP_REGEX = /^\\d{4}-(?:0[1-9]|1[0-2])-(?:[12]\\d|0[1-9]|3[01])[T ](?:0\\d|1\\d|2[0-3])(?::[0-5]\\d){2}(?:\\.\\d{1,9})?(?:Z|[+-](?:0\\d|1\\d|2[0-3])(?::?[0-5]\\d)?)$/u;\n/**\n* [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) week regex.\n*/\nconst ISO_WEEK_REGEX = /^\\d{4}-W(?:0[1-9]|[1-4]\\d|5[0-3])$/u;\n/**\n* [MAC](https://en.wikipedia.org/wiki/MAC_address) 48 bit regex.\n*/\nconst MAC48_REGEX = /^(?:[\\da-f]{2}:){5}[\\da-f]{2}$|^(?:[\\da-f]{2}-){5}[\\da-f]{2}$|^(?:[\\da-f]{4}\\.){2}[\\da-f]{4}$/iu;\n/**\n* [MAC](https://en.wikipedia.org/wiki/MAC_address) 64 bit regex.\n*/\nconst MAC64_REGEX = /^(?:[\\da-f]{2}:){7}[\\da-f]{2}$|^(?:[\\da-f]{2}-){7}[\\da-f]{2}$|^(?:[\\da-f]{4}\\.){3}[\\da-f]{4}$|^(?:[\\da-f]{4}:){3}[\\da-f]{4}$/iu;\n/**\n* [MAC](https://en.wikipedia.org/wiki/MAC_address) regex.\n*/\nconst MAC_REGEX = /^(?:[\\da-f]{2}:){5}[\\da-f]{2}$|^(?:[\\da-f]{2}-){5}[\\da-f]{2}$|^(?:[\\da-f]{4}\\.){2}[\\da-f]{4}$|^(?:[\\da-f]{2}:){7}[\\da-f]{2}$|^(?:[\\da-f]{2}-){7}[\\da-f]{2}$|^(?:[\\da-f]{4}\\.){3}[\\da-f]{4}$|^(?:[\\da-f]{4}:){3}[\\da-f]{4}$/iu;\n/**\n* [Nano ID](https://github.com/ai/nanoid) regex.\n*/\nconst NANO_ID_REGEX = /^[\\w-]+$/u;\n/**\n* [Octal](https://en.wikipedia.org/wiki/Octal) regex.\n*/\nconst OCTAL_REGEX = /^(?:0o)?[0-7]+$/u;\n/**\n* [RFC 5322 email address](https://datatracker.ietf.org/doc/html/rfc5322#section-3.4.1) regex.\n*\n* Hint: This regex was taken from the [HTML Living Standard Specification](https://html.spec.whatwg.org/multipage/input.html#valid-e-mail-address) and does not perfectly represent RFC 5322.\n*/\nconst RFC_EMAIL_REGEX = /^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n/**\n* [Slug](https://en.wikipedia.org/wiki/Clean_URL#Slug) regex.\n*/\nconst SLUG_REGEX = /^[\\da-z]+(?:[-_][\\da-z]+)*$/u;\n/**\n* [ULID](https://github.com/ulid/spec) regex.\n*\n* Hint: We decided against the `i` flag for better JSON Schema compatibility.\n*/\nconst ULID_REGEX = /^[\\da-hjkmnp-tv-zA-HJKMNP-TV-Z]{26}$/u;\n/**\n* [UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier) regex.\n*/\nconst UUID_REGEX = /^[\\da-f]{8}(?:-[\\da-f]{4}){3}-[\\da-f]{12}$/iu;\n\n//#endregion\n//#region src/actions/base64/base64.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction base64(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"base64\",\n\t\treference: base64,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: BASE64_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"Base64\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/bic/bic.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction bic(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"bic\",\n\t\treference: bic,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: BIC_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"BIC\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/brand/brand.ts\n/**\n* Creates a brand transformation action.\n*\n* @param name The brand name.\n*\n* @returns A brand action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction brand(name) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"brand\",\n\t\treference: brand,\n\t\tasync: false,\n\t\tname,\n\t\t\"~run\"(dataset) {\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/bytes/bytes.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction bytes(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"bytes\",\n\t\treference: bytes,\n\t\tasync: false,\n\t\texpects: `${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed) {\n\t\t\t\tconst length$1 = /* @__PURE__ */ _getByteCount(dataset.value);\n\t\t\t\tif (length$1 !== this.requirement) _addIssue(this, \"bytes\", dataset, config$1, { received: `${length$1}` });\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/check/check.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction check(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"check\",\n\t\treference: check,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement(dataset.value)) _addIssue(this, \"input\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/check/checkAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction checkAsync(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"check\",\n\t\treference: checkAsync,\n\t\tasync: true,\n\t\texpects: null,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !await this.requirement(dataset.value)) _addIssue(this, \"input\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/checkItems/checkItems.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction checkItems(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"check_items\",\n\t\treference: checkItems,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed) for (let index = 0; index < dataset.value.length; index++) {\n\t\t\t\tconst item = dataset.value[index];\n\t\t\t\tif (!this.requirement(item, index, dataset.value)) _addIssue(this, \"item\", dataset, config$1, {\n\t\t\t\t\tinput: item,\n\t\t\t\t\tpath: [{\n\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\tinput: dataset.value,\n\t\t\t\t\t\tkey: index,\n\t\t\t\t\t\tvalue: item\n\t\t\t\t\t}]\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/checkItems/checkItemsAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction checkItemsAsync(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"check_items\",\n\t\treference: checkItemsAsync,\n\t\tasync: true,\n\t\texpects: null,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed) {\n\t\t\t\tconst requirementResults = await Promise.all(dataset.value.map(this.requirement));\n\t\t\t\tfor (let index = 0; index < dataset.value.length; index++) if (!requirementResults[index]) {\n\t\t\t\t\tconst item = dataset.value[index];\n\t\t\t\t\t_addIssue(this, \"item\", dataset, config$1, {\n\t\t\t\t\t\tinput: item,\n\t\t\t\t\t\tpath: [{\n\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput: dataset.value,\n\t\t\t\t\t\t\tkey: index,\n\t\t\t\t\t\t\tvalue: item\n\t\t\t\t\t\t}]\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/creditCard/creditCard.ts\n/**\n* Credit card regex.\n*/\nconst CREDIT_CARD_REGEX = /^(?:\\d{14,19}|\\d{4}(?: \\d{3,6}){2,4}|\\d{4}(?:-\\d{3,6}){2,4})$/u;\n/**\n* Sanitize regex.\n*/\nconst SANITIZE_REGEX = /[- ]/gu;\n/**\n* Provider regex list.\n*/\nconst PROVIDER_REGEX_LIST = [\n\t/^3[47]\\d{13}$/u,\n\t/^3(?:0[0-5]|[68]\\d)\\d{11,13}$/u,\n\t/^6(?:011|5\\d{2})\\d{12,15}$/u,\n\t/^(?:2131|1800|35\\d{3})\\d{11}$/u,\n\t/^5[1-5]\\d{2}|(?:222\\d|22[3-9]\\d|2[3-6]\\d{2}|27[01]\\d|2720)\\d{12}$/u,\n\t/^(?:6[27]\\d{14,17}|81\\d{14,17})$/u,\n\t/^4\\d{12}(?:\\d{3,6})?$/u\n];\n/* @__NO_SIDE_EFFECTS__ */\nfunction creditCard(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"credit_card\",\n\t\treference: creditCard,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement(input) {\n\t\t\tlet sanitized;\n\t\t\treturn CREDIT_CARD_REGEX.test(input) && (sanitized = input.replace(SANITIZE_REGEX, \"\")) && PROVIDER_REGEX_LIST.some((regex$1) => regex$1.test(sanitized)) && /* @__PURE__ */ _isLuhnAlgo(sanitized);\n\t\t},\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement(dataset.value)) _addIssue(this, \"credit card\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/cuid2/cuid2.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction cuid2(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"cuid2\",\n\t\treference: cuid2,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: CUID2_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"Cuid2\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/decimal/decimal.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction decimal(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"decimal\",\n\t\treference: decimal,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: DECIMAL_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"decimal\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/description/description.ts\n/**\n* Creates a description metadata action.\n*\n* @param description_ The description text.\n*\n* @returns A description action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction description(description_) {\n\treturn {\n\t\tkind: \"metadata\",\n\t\ttype: \"description\",\n\t\treference: description,\n\t\tdescription: description_\n\t};\n}\n\n//#endregion\n//#region src/actions/digits/digits.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction digits(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"digits\",\n\t\treference: digits,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: DIGITS_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"digits\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/email/email.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction email(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"email\",\n\t\treference: email,\n\t\texpects: null,\n\t\tasync: false,\n\t\trequirement: EMAIL_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"email\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/emoji/emoji.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction emoji(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"emoji\",\n\t\treference: emoji,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: EMOJI_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"emoji\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/empty/empty.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction empty(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"empty\",\n\t\treference: empty,\n\t\tasync: false,\n\t\texpects: \"0\",\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && dataset.value.length > 0) _addIssue(this, \"length\", dataset, config$1, { received: `${dataset.value.length}` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/endsWith/endsWith.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction endsWith(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"ends_with\",\n\t\treference: endsWith,\n\t\tasync: false,\n\t\texpects: `\"${requirement}\"`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !dataset.value.endsWith(this.requirement)) _addIssue(this, \"end\", dataset, config$1, { received: `\"${dataset.value.slice(-this.requirement.length)}\"` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/entries/entries.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction entries(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"entries\",\n\t\treference: entries,\n\t\tasync: false,\n\t\texpects: `${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (!dataset.typed) return dataset;\n\t\t\tconst count = Object.keys(dataset.value).length;\n\t\t\tif (dataset.typed && count !== this.requirement) _addIssue(this, \"entries\", dataset, config$1, { received: `${count}` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/everyItem/everyItem.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction everyItem(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"every_item\",\n\t\treference: everyItem,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !dataset.value.every(this.requirement)) _addIssue(this, \"item\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/examples/examples.ts\n/**\n* Creates an examples metadata action.\n*\n* @param examples_ The examples.\n*\n* @returns An examples action.\n*\n* @beta\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction examples(examples_) {\n\treturn {\n\t\tkind: \"metadata\",\n\t\ttype: \"examples\",\n\t\treference: examples,\n\t\texamples: examples_\n\t};\n}\n\n//#endregion\n//#region src/actions/excludes/excludes.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction excludes(requirement, message$1) {\n\tconst received = /* @__PURE__ */ _stringify(requirement);\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"excludes\",\n\t\treference: excludes,\n\t\tasync: false,\n\t\texpects: `!${received}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && dataset.value.includes(this.requirement)) _addIssue(this, \"content\", dataset, config$1, { received });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/filterItems/filterItems.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction filterItems(operation) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"filter_items\",\n\t\treference: filterItems,\n\t\tasync: false,\n\t\toperation,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = dataset.value.filter(this.operation);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/findItem/findItem.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction findItem(operation) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"find_item\",\n\t\treference: findItem,\n\t\tasync: false,\n\t\toperation,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = dataset.value.find(this.operation);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/finite/finite.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction finite(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"finite\",\n\t\treference: finite,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: Number.isFinite,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement(dataset.value)) _addIssue(this, \"finite\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/flavor/flavor.ts\n/**\n* Creates a flavor transformation action.\n*\n* @param name The flavor name.\n*\n* @returns A flavor action.\n*\n* @beta\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction flavor(name) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"flavor\",\n\t\treference: flavor,\n\t\tasync: false,\n\t\tname,\n\t\t\"~run\"(dataset) {\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/graphemes/graphemes.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction graphemes(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"graphemes\",\n\t\treference: graphemes,\n\t\tasync: false,\n\t\texpects: `${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed) {\n\t\t\t\tconst count = /* @__PURE__ */ _getGraphemeCount(dataset.value);\n\t\t\t\tif (count !== this.requirement) _addIssue(this, \"graphemes\", dataset, config$1, { received: `${count}` });\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/gtValue/gtValue.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction gtValue(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"gt_value\",\n\t\treference: gtValue,\n\t\tasync: false,\n\t\texpects: `>${requirement instanceof Date ? requirement.toJSON() : /* @__PURE__ */ _stringify(requirement)}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !(dataset.value > this.requirement)) _addIssue(this, \"value\", dataset, config$1, { received: dataset.value instanceof Date ? dataset.value.toJSON() : /* @__PURE__ */ _stringify(dataset.value) });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/hash/hash.ts\n/**\n* Hash lengths object.\n*/\nconst HASH_LENGTHS = {\n\tmd4: 32,\n\tmd5: 32,\n\tsha1: 40,\n\tsha256: 64,\n\tsha384: 96,\n\tsha512: 128,\n\tripemd128: 32,\n\tripemd160: 40,\n\ttiger128: 32,\n\ttiger160: 40,\n\ttiger192: 48,\n\tcrc32: 8,\n\tcrc32b: 8,\n\tadler32: 8\n};\n/* @__NO_SIDE_EFFECTS__ */\nfunction hash(types, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"hash\",\n\t\treference: hash,\n\t\texpects: null,\n\t\tasync: false,\n\t\trequirement: RegExp(types.map((type) => `^[a-f0-9]{${HASH_LENGTHS[type]}}$`).join(\"|\"), \"iu\"),\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"hash\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/hexadecimal/hexadecimal.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction hexadecimal(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"hexadecimal\",\n\t\treference: hexadecimal,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: HEXADECIMAL_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"hexadecimal\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/hexColor/hexColor.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction hexColor(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"hex_color\",\n\t\treference: hexColor,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: HEX_COLOR_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"hex color\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/imei/imei.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction imei(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"imei\",\n\t\treference: imei,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement(input) {\n\t\t\treturn IMEI_REGEX.test(input) && /* @__PURE__ */ _isLuhnAlgo(input);\n\t\t},\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement(dataset.value)) _addIssue(this, \"IMEI\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/includes/includes.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction includes(requirement, message$1) {\n\tconst expects = /* @__PURE__ */ _stringify(requirement);\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"includes\",\n\t\treference: includes,\n\t\tasync: false,\n\t\texpects,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !dataset.value.includes(this.requirement)) _addIssue(this, \"content\", dataset, config$1, { received: `!${expects}` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/integer/integer.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction integer(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"integer\",\n\t\treference: integer,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: Number.isInteger,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement(dataset.value)) _addIssue(this, \"integer\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/ip/ip.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction ip(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"ip\",\n\t\treference: ip,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: IP_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"IP\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/ipv4/ipv4.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction ipv4(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"ipv4\",\n\t\treference: ipv4,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: IPV4_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"IPv4\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/ipv6/ipv6.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction ipv6(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"ipv6\",\n\t\treference: ipv6,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: IPV6_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"IPv6\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/isoDate/isoDate.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction isoDate(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"iso_date\",\n\t\treference: isoDate,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: ISO_DATE_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"date\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/isoDateTime/isoDateTime.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction isoDateTime(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"iso_date_time\",\n\t\treference: isoDateTime,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: ISO_DATE_TIME_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"date-time\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/isoTime/isoTime.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction isoTime(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"iso_time\",\n\t\treference: isoTime,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: ISO_TIME_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"time\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/isoTimeSecond/isoTimeSecond.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction isoTimeSecond(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"iso_time_second\",\n\t\treference: isoTimeSecond,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: ISO_TIME_SECOND_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"time-second\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/isoTimestamp/isoTimestamp.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction isoTimestamp(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"iso_timestamp\",\n\t\treference: isoTimestamp,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: ISO_TIMESTAMP_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"timestamp\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/isoWeek/isoWeek.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction isoWeek(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"iso_week\",\n\t\treference: isoWeek,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: ISO_WEEK_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"week\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/length/length.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction length(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"length\",\n\t\treference: length,\n\t\tasync: false,\n\t\texpects: `${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && dataset.value.length !== this.requirement) _addIssue(this, \"length\", dataset, config$1, { received: `${dataset.value.length}` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/ltValue/ltValue.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction ltValue(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"lt_value\",\n\t\treference: ltValue,\n\t\tasync: false,\n\t\texpects: `<${requirement instanceof Date ? requirement.toJSON() : /* @__PURE__ */ _stringify(requirement)}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !(dataset.value < this.requirement)) _addIssue(this, \"value\", dataset, config$1, { received: dataset.value instanceof Date ? dataset.value.toJSON() : /* @__PURE__ */ _stringify(dataset.value) });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/mac/mac.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction mac(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"mac\",\n\t\treference: mac,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: MAC_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"MAC\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/mac48/mac48.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction mac48(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"mac48\",\n\t\treference: mac48,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: MAC48_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"48-bit MAC\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/mac64/mac64.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction mac64(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"mac64\",\n\t\treference: mac64,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: MAC64_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"64-bit MAC\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/mapItems/mapItems.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction mapItems(operation) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"map_items\",\n\t\treference: mapItems,\n\t\tasync: false,\n\t\toperation,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = dataset.value.map(this.operation);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/maxBytes/maxBytes.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction maxBytes(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"max_bytes\",\n\t\treference: maxBytes,\n\t\tasync: false,\n\t\texpects: `<=${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed) {\n\t\t\t\tconst length$1 = /* @__PURE__ */ _getByteCount(dataset.value);\n\t\t\t\tif (length$1 > this.requirement) _addIssue(this, \"bytes\", dataset, config$1, { received: `${length$1}` });\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/maxEntries/maxEntries.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction maxEntries(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"max_entries\",\n\t\treference: maxEntries,\n\t\tasync: false,\n\t\texpects: `<=${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (!dataset.typed) return dataset;\n\t\t\tconst count = Object.keys(dataset.value).length;\n\t\t\tif (dataset.typed && count > this.requirement) _addIssue(this, \"entries\", dataset, config$1, { received: `${count}` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/maxGraphemes/maxGraphemes.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction maxGraphemes(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"max_graphemes\",\n\t\treference: maxGraphemes,\n\t\tasync: false,\n\t\texpects: `<=${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed) {\n\t\t\t\tconst count = /* @__PURE__ */ _getGraphemeCount(dataset.value);\n\t\t\t\tif (count > this.requirement) _addIssue(this, \"graphemes\", dataset, config$1, { received: `${count}` });\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/maxLength/maxLength.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction maxLength(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"max_length\",\n\t\treference: maxLength,\n\t\tasync: false,\n\t\texpects: `<=${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && dataset.value.length > this.requirement) _addIssue(this, \"length\", dataset, config$1, { received: `${dataset.value.length}` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/maxSize/maxSize.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction maxSize(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"max_size\",\n\t\treference: maxSize,\n\t\tasync: false,\n\t\texpects: `<=${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && dataset.value.size > this.requirement) _addIssue(this, \"size\", dataset, config$1, { received: `${dataset.value.size}` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/maxValue/maxValue.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction maxValue(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"max_value\",\n\t\treference: maxValue,\n\t\tasync: false,\n\t\texpects: `<=${requirement instanceof Date ? requirement.toJSON() : /* @__PURE__ */ _stringify(requirement)}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !(dataset.value <= this.requirement)) _addIssue(this, \"value\", dataset, config$1, { received: dataset.value instanceof Date ? dataset.value.toJSON() : /* @__PURE__ */ _stringify(dataset.value) });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/maxWords/maxWords.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction maxWords(locales, requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"max_words\",\n\t\treference: maxWords,\n\t\tasync: false,\n\t\texpects: `<=${requirement}`,\n\t\tlocales,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed) {\n\t\t\t\tconst count = /* @__PURE__ */ _getWordCount(this.locales, dataset.value);\n\t\t\t\tif (count > this.requirement) _addIssue(this, \"words\", dataset, config$1, { received: `${count}` });\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/metadata/metadata.ts\n/**\n* Creates a custom metadata action.\n*\n* @param metadata_ The metadata object.\n*\n* @returns A metadata action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction metadata(metadata_) {\n\treturn {\n\t\tkind: \"metadata\",\n\t\ttype: \"metadata\",\n\t\treference: metadata,\n\t\tmetadata: metadata_\n\t};\n}\n\n//#endregion\n//#region src/actions/mimeType/mimeType.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction mimeType(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"mime_type\",\n\t\treference: mimeType,\n\t\tasync: false,\n\t\texpects: /* @__PURE__ */ _joinExpects(requirement.map((option) => `\"${option}\"`), \"|\"),\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.includes(dataset.value.type)) _addIssue(this, \"MIME type\", dataset, config$1, { received: `\"${dataset.value.type}\"` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/minBytes/minBytes.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction minBytes(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"min_bytes\",\n\t\treference: minBytes,\n\t\tasync: false,\n\t\texpects: `>=${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed) {\n\t\t\t\tconst length$1 = /* @__PURE__ */ _getByteCount(dataset.value);\n\t\t\t\tif (length$1 < this.requirement) _addIssue(this, \"bytes\", dataset, config$1, { received: `${length$1}` });\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/minEntries/minEntries.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction minEntries(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"min_entries\",\n\t\treference: minEntries,\n\t\tasync: false,\n\t\texpects: `>=${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (!dataset.typed) return dataset;\n\t\t\tconst count = Object.keys(dataset.value).length;\n\t\t\tif (dataset.typed && count < this.requirement) _addIssue(this, \"entries\", dataset, config$1, { received: `${count}` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/minGraphemes/minGraphemes.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction minGraphemes(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"min_graphemes\",\n\t\treference: minGraphemes,\n\t\tasync: false,\n\t\texpects: `>=${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed) {\n\t\t\t\tconst count = /* @__PURE__ */ _getGraphemeCount(dataset.value);\n\t\t\t\tif (count < this.requirement) _addIssue(this, \"graphemes\", dataset, config$1, { received: `${count}` });\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/minLength/minLength.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction minLength(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"min_length\",\n\t\treference: minLength,\n\t\tasync: false,\n\t\texpects: `>=${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && dataset.value.length < this.requirement) _addIssue(this, \"length\", dataset, config$1, { received: `${dataset.value.length}` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/minSize/minSize.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction minSize(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"min_size\",\n\t\treference: minSize,\n\t\tasync: false,\n\t\texpects: `>=${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && dataset.value.size < this.requirement) _addIssue(this, \"size\", dataset, config$1, { received: `${dataset.value.size}` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/minValue/minValue.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction minValue(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"min_value\",\n\t\treference: minValue,\n\t\tasync: false,\n\t\texpects: `>=${requirement instanceof Date ? requirement.toJSON() : /* @__PURE__ */ _stringify(requirement)}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !(dataset.value >= this.requirement)) _addIssue(this, \"value\", dataset, config$1, { received: dataset.value instanceof Date ? dataset.value.toJSON() : /* @__PURE__ */ _stringify(dataset.value) });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/minWords/minWords.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction minWords(locales, requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"min_words\",\n\t\treference: minWords,\n\t\tasync: false,\n\t\texpects: `>=${requirement}`,\n\t\tlocales,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed) {\n\t\t\t\tconst count = /* @__PURE__ */ _getWordCount(this.locales, dataset.value);\n\t\t\t\tif (count < this.requirement) _addIssue(this, \"words\", dataset, config$1, { received: `${count}` });\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/multipleOf/multipleOf.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction multipleOf(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"multiple_of\",\n\t\treference: multipleOf,\n\t\tasync: false,\n\t\texpects: `%${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && dataset.value % this.requirement != 0) _addIssue(this, \"multiple\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/nanoid/nanoid.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction nanoid(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"nanoid\",\n\t\treference: nanoid,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: NANO_ID_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"Nano ID\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/nonEmpty/nonEmpty.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction nonEmpty(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"non_empty\",\n\t\treference: nonEmpty,\n\t\tasync: false,\n\t\texpects: \"!0\",\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && dataset.value.length === 0) _addIssue(this, \"length\", dataset, config$1, { received: \"0\" });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/normalize/normalize.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction normalize(form) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"normalize\",\n\t\treference: normalize,\n\t\tasync: false,\n\t\tform,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = dataset.value.normalize(this.form);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/notBytes/notBytes.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction notBytes(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"not_bytes\",\n\t\treference: notBytes,\n\t\tasync: false,\n\t\texpects: `!${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed) {\n\t\t\t\tconst length$1 = /* @__PURE__ */ _getByteCount(dataset.value);\n\t\t\t\tif (length$1 === this.requirement) _addIssue(this, \"bytes\", dataset, config$1, { received: `${length$1}` });\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/notEntries/notEntries.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction notEntries(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"not_entries\",\n\t\treference: notEntries,\n\t\tasync: false,\n\t\texpects: `!${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (!dataset.typed) return dataset;\n\t\t\tconst count = Object.keys(dataset.value).length;\n\t\t\tif (dataset.typed && count === this.requirement) _addIssue(this, \"entries\", dataset, config$1, { received: `${count}` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/notGraphemes/notGraphemes.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction notGraphemes(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"not_graphemes\",\n\t\treference: notGraphemes,\n\t\tasync: false,\n\t\texpects: `!${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed) {\n\t\t\t\tconst count = /* @__PURE__ */ _getGraphemeCount(dataset.value);\n\t\t\t\tif (count === this.requirement) _addIssue(this, \"graphemes\", dataset, config$1, { received: `${count}` });\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/notLength/notLength.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction notLength(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"not_length\",\n\t\treference: notLength,\n\t\tasync: false,\n\t\texpects: `!${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && dataset.value.length === this.requirement) _addIssue(this, \"length\", dataset, config$1, { received: `${dataset.value.length}` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/notSize/notSize.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction notSize(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"not_size\",\n\t\treference: notSize,\n\t\tasync: false,\n\t\texpects: `!${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && dataset.value.size === this.requirement) _addIssue(this, \"size\", dataset, config$1, { received: `${dataset.value.size}` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/notValue/notValue.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction notValue(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"not_value\",\n\t\treference: notValue,\n\t\tasync: false,\n\t\texpects: requirement instanceof Date ? `!${requirement.toJSON()}` : `!${/* @__PURE__ */ _stringify(requirement)}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && this.requirement <= dataset.value && this.requirement >= dataset.value) _addIssue(this, \"value\", dataset, config$1, { received: dataset.value instanceof Date ? dataset.value.toJSON() : /* @__PURE__ */ _stringify(dataset.value) });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/notValues/notValues.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction notValues(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"not_values\",\n\t\treference: notValues,\n\t\tasync: false,\n\t\texpects: `!${/* @__PURE__ */ _joinExpects(requirement.map((value$1) => value$1 instanceof Date ? value$1.toJSON() : /* @__PURE__ */ _stringify(value$1)), \"|\")}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && this.requirement.some((value$1) => value$1 <= dataset.value && value$1 >= dataset.value)) _addIssue(this, \"value\", dataset, config$1, { received: dataset.value instanceof Date ? dataset.value.toJSON() : /* @__PURE__ */ _stringify(dataset.value) });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/notWords/notWords.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction notWords(locales, requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"not_words\",\n\t\treference: notWords,\n\t\tasync: false,\n\t\texpects: `!${requirement}`,\n\t\tlocales,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed) {\n\t\t\t\tconst count = /* @__PURE__ */ _getWordCount(this.locales, dataset.value);\n\t\t\t\tif (count === this.requirement) _addIssue(this, \"words\", dataset, config$1, { received: `${count}` });\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/octal/octal.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction octal(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"octal\",\n\t\treference: octal,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: OCTAL_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"octal\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/parseJson/parseJson.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction parseJson(config$1, message$1) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"parse_json\",\n\t\treference: parseJson,\n\t\tconfig: config$1,\n\t\tmessage: message$1,\n\t\tasync: false,\n\t\t\"~run\"(dataset, config$2) {\n\t\t\ttry {\n\t\t\t\tdataset.value = JSON.parse(dataset.value, this.config?.reviver);\n\t\t\t} catch (error) {\n\t\t\t\tif (error instanceof Error) {\n\t\t\t\t\t_addIssue(this, \"JSON\", dataset, config$2, { received: `\"${error.message}\"` });\n\t\t\t\t\tdataset.typed = false;\n\t\t\t\t} else throw error;\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/partialCheck/utils/_isPartiallyTyped/_isPartiallyTyped.ts\n/**\n* Checks if a dataset is partially typed.\n*\n* @param dataset The dataset to check.\n* @param paths The paths to check.\n*\n* @returns Whether it is partially typed.\n*\n* @internal\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction _isPartiallyTyped(dataset, paths) {\n\tif (dataset.issues) for (const path of paths) for (const issue of dataset.issues) {\n\t\tlet typed = false;\n\t\tconst bound = Math.min(path.length, issue.path?.length ?? 0);\n\t\tfor (let index = 0; index < bound; index++) if (path[index] !== issue.path[index].key && (path[index] !== \"$\" || issue.path[index].type !== \"array\")) {\n\t\t\ttyped = true;\n\t\t\tbreak;\n\t\t}\n\t\tif (!typed) return false;\n\t}\n\treturn true;\n}\n\n//#endregion\n//#region src/actions/partialCheck/partialCheck.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction partialCheck(paths, requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"partial_check\",\n\t\treference: partialCheck,\n\t\tasync: false,\n\t\texpects: null,\n\t\tpaths,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif ((dataset.typed || /* @__PURE__ */ _isPartiallyTyped(dataset, paths)) && !this.requirement(dataset.value)) _addIssue(this, \"input\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/partialCheck/partialCheckAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction partialCheckAsync(paths, requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"partial_check\",\n\t\treference: partialCheckAsync,\n\t\tasync: true,\n\t\texpects: null,\n\t\tpaths,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tif ((dataset.typed || /* @__PURE__ */ _isPartiallyTyped(dataset, paths)) && !await this.requirement(dataset.value)) _addIssue(this, \"input\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/rawCheck/rawCheck.ts\n/**\n* Creates a raw check validation action.\n*\n* @param action The validation action.\n*\n* @returns A raw check action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction rawCheck(action) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"raw_check\",\n\t\treference: rawCheck,\n\t\tasync: false,\n\t\texpects: null,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\taction({\n\t\t\t\tdataset,\n\t\t\t\tconfig: config$1,\n\t\t\t\taddIssue: (info) => _addIssue(this, info?.label ?? \"input\", dataset, config$1, info)\n\t\t\t});\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/rawCheck/rawCheckAsync.ts\n/**\n* Creates a raw check validation action.\n*\n* @param action The validation action.\n*\n* @returns A raw check action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction rawCheckAsync(action) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"raw_check\",\n\t\treference: rawCheckAsync,\n\t\tasync: true,\n\t\texpects: null,\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tawait action({\n\t\t\t\tdataset,\n\t\t\t\tconfig: config$1,\n\t\t\t\taddIssue: (info) => _addIssue(this, info?.label ?? \"input\", dataset, config$1, info)\n\t\t\t});\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/rawTransform/rawTransform.ts\n/**\n* Creates a raw transformation action.\n*\n* @param action The transformation action.\n*\n* @returns A raw transform action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction rawTransform(action) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"raw_transform\",\n\t\treference: rawTransform,\n\t\tasync: false,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst output = action({\n\t\t\t\tdataset,\n\t\t\t\tconfig: config$1,\n\t\t\t\taddIssue: (info) => _addIssue(this, info?.label ?? \"input\", dataset, config$1, info),\n\t\t\t\tNEVER: null\n\t\t\t});\n\t\t\tif (dataset.issues) dataset.typed = false;\n\t\t\telse dataset.value = output;\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/rawTransform/rawTransformAsync.ts\n/**\n* Creates a raw transformation action.\n*\n* @param action The transformation action.\n*\n* @returns A raw transform action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction rawTransformAsync(action) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"raw_transform\",\n\t\treference: rawTransformAsync,\n\t\tasync: true,\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst output = await action({\n\t\t\t\tdataset,\n\t\t\t\tconfig: config$1,\n\t\t\t\taddIssue: (info) => _addIssue(this, info?.label ?? \"input\", dataset, config$1, info),\n\t\t\t\tNEVER: null\n\t\t\t});\n\t\t\tif (dataset.issues) dataset.typed = false;\n\t\t\telse dataset.value = output;\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/readonly/readonly.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction readonly() {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"readonly\",\n\t\treference: readonly,\n\t\tasync: false,\n\t\t\"~run\"(dataset) {\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/reduceItems/reduceItems.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction reduceItems(operation, initial) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"reduce_items\",\n\t\treference: reduceItems,\n\t\tasync: false,\n\t\toperation,\n\t\tinitial,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = dataset.value.reduce(this.operation, this.initial);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/regex/regex.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction regex(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"regex\",\n\t\treference: regex,\n\t\tasync: false,\n\t\texpects: `${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"format\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/returns/returns.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction returns(schema) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"returns\",\n\t\treference: returns,\n\t\tasync: false,\n\t\tschema,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst func = dataset.value;\n\t\t\tdataset.value = (...args_) => {\n\t\t\t\tconst returnsDataset = this.schema[\"~run\"]({ value: func(...args_) }, config$1);\n\t\t\t\tif (returnsDataset.issues) throw new ValiError(returnsDataset.issues);\n\t\t\t\treturn returnsDataset.value;\n\t\t\t};\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/returns/returnsAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction returnsAsync(schema) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"returns\",\n\t\treference: returnsAsync,\n\t\tasync: false,\n\t\tschema,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst func = dataset.value;\n\t\t\tdataset.value = async (...args_) => {\n\t\t\t\tconst returnsDataset = await this.schema[\"~run\"]({ value: await func(...args_) }, config$1);\n\t\t\t\tif (returnsDataset.issues) throw new ValiError(returnsDataset.issues);\n\t\t\t\treturn returnsDataset.value;\n\t\t\t};\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/rfcEmail/rfcEmail.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction rfcEmail(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"rfc_email\",\n\t\treference: rfcEmail,\n\t\texpects: null,\n\t\tasync: false,\n\t\trequirement: RFC_EMAIL_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"email\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/safeInteger/safeInteger.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction safeInteger(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"safe_integer\",\n\t\treference: safeInteger,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: Number.isSafeInteger,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement(dataset.value)) _addIssue(this, \"safe integer\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/size/size.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction size(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"size\",\n\t\treference: size,\n\t\tasync: false,\n\t\texpects: `${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && dataset.value.size !== this.requirement) _addIssue(this, \"size\", dataset, config$1, { received: `${dataset.value.size}` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/slug/slug.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction slug(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"slug\",\n\t\treference: slug,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: SLUG_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"slug\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/someItem/someItem.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction someItem(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"some_item\",\n\t\treference: someItem,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !dataset.value.some(this.requirement)) _addIssue(this, \"item\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/sortItems/sortItems.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction sortItems(operation) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"sort_items\",\n\t\treference: sortItems,\n\t\tasync: false,\n\t\toperation,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = dataset.value.sort(this.operation);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/startsWith/startsWith.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction startsWith(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"starts_with\",\n\t\treference: startsWith,\n\t\tasync: false,\n\t\texpects: `\"${requirement}\"`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !dataset.value.startsWith(this.requirement)) _addIssue(this, \"start\", dataset, config$1, { received: `\"${dataset.value.slice(0, this.requirement.length)}\"` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/stringifyJson/stringifyJson.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction stringifyJson(config$1, message$1) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"stringify_json\",\n\t\treference: stringifyJson,\n\t\tmessage: message$1,\n\t\tconfig: config$1,\n\t\tasync: false,\n\t\t\"~run\"(dataset, config$2) {\n\t\t\ttry {\n\t\t\t\tconst output = JSON.stringify(dataset.value, this.config?.replacer, this.config?.space);\n\t\t\t\tif (output === void 0) {\n\t\t\t\t\t_addIssue(this, \"JSON\", dataset, config$2);\n\t\t\t\t\tdataset.typed = false;\n\t\t\t\t}\n\t\t\t\tdataset.value = output;\n\t\t\t} catch (error) {\n\t\t\t\tif (error instanceof Error) {\n\t\t\t\t\t_addIssue(this, \"JSON\", dataset, config$2, { received: `\"${error.message}\"` });\n\t\t\t\t\tdataset.typed = false;\n\t\t\t\t} else throw error;\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/title/title.ts\n/**\n* Creates a title metadata action.\n*\n* @param title_ The title text.\n*\n* @returns A title action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction title(title_) {\n\treturn {\n\t\tkind: \"metadata\",\n\t\ttype: \"title\",\n\t\treference: title,\n\t\ttitle: title_\n\t};\n}\n\n//#endregion\n//#region src/actions/toBigint/toBigint.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction toBigint(message$1) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"to_bigint\",\n\t\treference: toBigint,\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\ttry {\n\t\t\t\tdataset.value = BigInt(dataset.value);\n\t\t\t} catch {\n\t\t\t\t_addIssue(this, \"bigint\", dataset, config$1);\n\t\t\t\tdataset.typed = false;\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/toBoolean/toBoolean.ts\n/**\n* Creates a to boolean transformation action.\n*\n* @returns A to boolean action.\n*\n* @beta\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction toBoolean() {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"to_boolean\",\n\t\treference: toBoolean,\n\t\tasync: false,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = Boolean(dataset.value);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/toDate/toDate.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction toDate(message$1) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"to_date\",\n\t\treference: toDate,\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\ttry {\n\t\t\t\tdataset.value = new Date(dataset.value);\n\t\t\t\tif (isNaN(dataset.value)) {\n\t\t\t\t\t_addIssue(this, \"date\", dataset, config$1, { received: \"\\\"Invalid Date\\\"\" });\n\t\t\t\t\tdataset.typed = false;\n\t\t\t\t}\n\t\t\t} catch {\n\t\t\t\t_addIssue(this, \"date\", dataset, config$1);\n\t\t\t\tdataset.typed = false;\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/toLowerCase/toLowerCase.ts\n/**\n* Creates a to lower case transformation action.\n*\n* @returns A to lower case action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction toLowerCase() {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"to_lower_case\",\n\t\treference: toLowerCase,\n\t\tasync: false,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = dataset.value.toLowerCase();\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/toMaxValue/toMaxValue.ts\n/**\n* Creates a to max value transformation action.\n*\n* @param requirement The maximum value.\n*\n* @returns A to max value action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction toMaxValue(requirement) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"to_max_value\",\n\t\treference: toMaxValue,\n\t\tasync: false,\n\t\trequirement,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = dataset.value > this.requirement ? this.requirement : dataset.value;\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/toMinValue/toMinValue.ts\n/**\n* Creates a to min value transformation action.\n*\n* @param requirement The minimum value.\n*\n* @returns A to min value action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction toMinValue(requirement) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"to_min_value\",\n\t\treference: toMinValue,\n\t\tasync: false,\n\t\trequirement,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = dataset.value < this.requirement ? this.requirement : dataset.value;\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/toNumber/toNumber.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction toNumber(message$1) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"to_number\",\n\t\treference: toNumber,\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\ttry {\n\t\t\t\tdataset.value = Number(dataset.value);\n\t\t\t\tif (isNaN(dataset.value)) {\n\t\t\t\t\t_addIssue(this, \"number\", dataset, config$1);\n\t\t\t\t\tdataset.typed = false;\n\t\t\t\t}\n\t\t\t} catch {\n\t\t\t\t_addIssue(this, \"number\", dataset, config$1);\n\t\t\t\tdataset.typed = false;\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/toString/toString.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction toString(message$1) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"to_string\",\n\t\treference: toString,\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\ttry {\n\t\t\t\tdataset.value = String(dataset.value);\n\t\t\t} catch {\n\t\t\t\t_addIssue(this, \"string\", dataset, config$1);\n\t\t\t\tdataset.typed = false;\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/toUpperCase/toUpperCase.ts\n/**\n* Creates a to upper case transformation action.\n*\n* @returns A to upper case action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction toUpperCase() {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"to_upper_case\",\n\t\treference: toUpperCase,\n\t\tasync: false,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = dataset.value.toUpperCase();\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/transform/transform.ts\n/**\n* Creates a custom transformation action.\n*\n* @param operation The transformation operation.\n*\n* @returns A transform action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction transform(operation) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"transform\",\n\t\treference: transform,\n\t\tasync: false,\n\t\toperation,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = this.operation(dataset.value);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/transform/transformAsync.ts\n/**\n* Creates a custom transformation action.\n*\n* @param operation The transformation operation.\n*\n* @returns A transform action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction transformAsync(operation) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"transform\",\n\t\treference: transformAsync,\n\t\tasync: true,\n\t\toperation,\n\t\tasync \"~run\"(dataset) {\n\t\t\tdataset.value = await this.operation(dataset.value);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/trim/trim.ts\n/**\n* Creates a trim transformation action.\n*\n* @returns A trim action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction trim() {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"trim\",\n\t\treference: trim,\n\t\tasync: false,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = dataset.value.trim();\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/trimEnd/trimEnd.ts\n/**\n* Creates a trim end transformation action.\n*\n* @returns A trim end action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction trimEnd() {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"trim_end\",\n\t\treference: trimEnd,\n\t\tasync: false,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = dataset.value.trimEnd();\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/trimStart/trimStart.ts\n/**\n* Creates a trim start transformation action.\n*\n* @returns A trim start action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction trimStart() {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"trim_start\",\n\t\treference: trimStart,\n\t\tasync: false,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = dataset.value.trimStart();\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/ulid/ulid.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction ulid(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"ulid\",\n\t\treference: ulid,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: ULID_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"ULID\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/url/url.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction url(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"url\",\n\t\treference: url,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement(input) {\n\t\t\ttry {\n\t\t\t\tnew URL(input);\n\t\t\t\treturn true;\n\t\t\t} catch {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement(dataset.value)) _addIssue(this, \"URL\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/uuid/uuid.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction uuid(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"uuid\",\n\t\treference: uuid,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: UUID_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"UUID\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/value/value.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction value(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"value\",\n\t\treference: value,\n\t\tasync: false,\n\t\texpects: requirement instanceof Date ? requirement.toJSON() : /* @__PURE__ */ _stringify(requirement),\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !(this.requirement <= dataset.value && this.requirement >= dataset.value)) _addIssue(this, \"value\", dataset, config$1, { received: dataset.value instanceof Date ? dataset.value.toJSON() : /* @__PURE__ */ _stringify(dataset.value) });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/values/values.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction values(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"values\",\n\t\treference: values,\n\t\tasync: false,\n\t\texpects: `${/* @__PURE__ */ _joinExpects(requirement.map((value$1) => value$1 instanceof Date ? value$1.toJSON() : /* @__PURE__ */ _stringify(value$1)), \"|\")}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.some((value$1) => value$1 <= dataset.value && value$1 >= dataset.value)) _addIssue(this, \"value\", dataset, config$1, { received: dataset.value instanceof Date ? dataset.value.toJSON() : /* @__PURE__ */ _stringify(dataset.value) });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/words/words.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction words(locales, requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"words\",\n\t\treference: words,\n\t\tasync: false,\n\t\texpects: `${requirement}`,\n\t\tlocales,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed) {\n\t\t\t\tconst count = /* @__PURE__ */ _getWordCount(this.locales, dataset.value);\n\t\t\t\tif (count !== this.requirement) _addIssue(this, \"words\", dataset, config$1, { received: `${count}` });\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/methods/assert/assert.ts\n/**\n* Checks if the input matches the schema. As this is an assertion function, it\n* can be used as a type guard.\n*\n* @param schema The schema to be used.\n* @param input The input to be tested.\n*/\nfunction assert(schema, input) {\n\tconst issues = schema[\"~run\"]({ value: input }, { abortEarly: true }).issues;\n\tif (issues) throw new ValiError(issues);\n}\n\n//#endregion\n//#region src/methods/config/config.ts\n/**\n* Changes the local configuration of a schema.\n*\n* @param schema The schema to configure.\n* @param config The parse configuration.\n*\n* @returns The configured schema.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction config(schema, config$1) {\n\treturn {\n\t\t...schema,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config_) {\n\t\t\treturn schema[\"~run\"](dataset, {\n\t\t\t\t...config_,\n\t\t\t\t...config$1\n\t\t\t});\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/methods/getFallback/getFallback.ts\n/**\n* Returns the fallback value of the schema.\n*\n* @param schema The schema to get it from.\n* @param dataset The output dataset if available.\n* @param config The config if available.\n*\n* @returns The fallback value.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction getFallback(schema, dataset, config$1) {\n\treturn typeof schema.fallback === \"function\" ? schema.fallback(dataset, config$1) : schema.fallback;\n}\n\n//#endregion\n//#region src/methods/fallback/fallback.ts\n/**\n* Returns a fallback value as output if the input does not match the schema.\n*\n* @param schema The schema to catch.\n* @param fallback The fallback value.\n*\n* @returns The passed schema.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction fallback(schema, fallback$1) {\n\treturn {\n\t\t...schema,\n\t\tfallback: fallback$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst outputDataset = schema[\"~run\"](dataset, config$1);\n\t\t\treturn outputDataset.issues ? {\n\t\t\t\ttyped: true,\n\t\t\t\tvalue: /* @__PURE__ */ getFallback(this, outputDataset, config$1)\n\t\t\t} : outputDataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/methods/fallback/fallbackAsync.ts\n/**\n* Returns a fallback value as output if the input does not match the schema.\n*\n* @param schema The schema to catch.\n* @param fallback The fallback value.\n*\n* @returns The passed schema.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction fallbackAsync(schema, fallback$1) {\n\treturn {\n\t\t...schema,\n\t\tfallback: fallback$1,\n\t\tasync: true,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst outputDataset = await schema[\"~run\"](dataset, config$1);\n\t\t\treturn outputDataset.issues ? {\n\t\t\t\ttyped: true,\n\t\t\t\tvalue: await /* @__PURE__ */ getFallback(this, outputDataset, config$1)\n\t\t\t} : outputDataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/methods/flatten/flatten.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction flatten(issues) {\n\tconst flatErrors = {};\n\tfor (const issue of issues) if (issue.path) {\n\t\tconst dotPath = /* @__PURE__ */ getDotPath(issue);\n\t\tif (dotPath) {\n\t\t\tif (!flatErrors.nested) flatErrors.nested = {};\n\t\t\tif (flatErrors.nested[dotPath]) flatErrors.nested[dotPath].push(issue.message);\n\t\t\telse flatErrors.nested[dotPath] = [issue.message];\n\t\t} else if (flatErrors.other) flatErrors.other.push(issue.message);\n\t\telse flatErrors.other = [issue.message];\n\t} else if (flatErrors.root) flatErrors.root.push(issue.message);\n\telse flatErrors.root = [issue.message];\n\treturn flatErrors;\n}\n\n//#endregion\n//#region src/methods/forward/forward.ts\n/**\n* Forwards the issues of the passed validation action.\n*\n* @param action The validation action.\n* @param path The path to forward the issues to.\n*\n* @returns The modified action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction forward(action, path) {\n\treturn {\n\t\t...action,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst prevIssues = dataset.issues && [...dataset.issues];\n\t\t\tdataset = action[\"~run\"](dataset, config$1);\n\t\t\tif (dataset.issues) {\n\t\t\t\tfor (const issue of dataset.issues) if (!prevIssues?.includes(issue)) {\n\t\t\t\t\tlet pathInput = dataset.value;\n\t\t\t\t\tfor (const key of path) {\n\t\t\t\t\t\tconst pathValue = pathInput[key];\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"unknown\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput: pathInput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: pathValue\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (issue.path) issue.path.push(pathItem);\n\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\tif (!pathValue) break;\n\t\t\t\t\t\tpathInput = pathValue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/methods/forward/forwardAsync.ts\n/**\n* Forwards the issues of the passed validation action.\n*\n* @param action The validation action.\n* @param path The path to forward the issues to.\n*\n* @returns The modified action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction forwardAsync(action, path) {\n\treturn {\n\t\t...action,\n\t\tasync: true,\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst prevIssues = dataset.issues && [...dataset.issues];\n\t\t\tdataset = await action[\"~run\"](dataset, config$1);\n\t\t\tif (dataset.issues) {\n\t\t\t\tfor (const issue of dataset.issues) if (!prevIssues?.includes(issue)) {\n\t\t\t\t\tlet pathInput = dataset.value;\n\t\t\t\t\tfor (const key of path) {\n\t\t\t\t\t\tconst pathValue = pathInput[key];\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"unknown\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput: pathInput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: pathValue\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (issue.path) issue.path.push(pathItem);\n\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\tif (!pathValue) break;\n\t\t\t\t\t\tpathInput = pathValue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/methods/getDefault/getDefault.ts\n/**\n* Returns the default value of the schema.\n*\n* @param schema The schema to get it from.\n* @param dataset The input dataset if available.\n* @param config The config if available.\n*\n* @returns The default value.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction getDefault(schema, dataset, config$1) {\n\treturn typeof schema.default === \"function\" ? schema.default(dataset, config$1) : schema.default;\n}\n\n//#endregion\n//#region src/methods/getDefaults/getDefaults.ts\n/**\n* Returns the default values of the schema.\n*\n* Hint: The difference to `getDefault` is that for object and tuple schemas\n* this function recursively returns the default values of the subschemas\n* instead of `undefined`.\n*\n* @param schema The schema to get them from.\n*\n* @returns The default values.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction getDefaults(schema) {\n\tif (\"entries\" in schema) {\n\t\tconst object$1 = {};\n\t\tfor (const key in schema.entries) object$1[key] = /* @__PURE__ */ getDefaults(schema.entries[key]);\n\t\treturn object$1;\n\t}\n\tif (\"items\" in schema) return schema.items.map(getDefaults);\n\treturn /* @__PURE__ */ getDefault(schema);\n}\n\n//#endregion\n//#region src/methods/getDefaults/getDefaultsAsync.ts\n/**\n* Returns the default values of the schema.\n*\n* Hint: The difference to `getDefault` is that for object and tuple schemas\n* this function recursively returns the default values of the subschemas\n* instead of `undefined`.\n*\n* @param schema The schema to get them from.\n*\n* @returns The default values.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nasync function getDefaultsAsync(schema) {\n\tif (\"entries\" in schema) return Object.fromEntries(await Promise.all(Object.entries(schema.entries).map(async ([key, value$1]) => [key, await /* @__PURE__ */ getDefaultsAsync(value$1)])));\n\tif (\"items\" in schema) return Promise.all(schema.items.map(getDefaultsAsync));\n\treturn /* @__PURE__ */ getDefault(schema);\n}\n\n//#endregion\n//#region src/methods/getDescription/getDescription.ts\n/**\n* Returns the description of the schema.\n*\n* If multiple descriptions are defined, the last one of the highest level is\n* returned. If no description is defined, `undefined` is returned.\n*\n* @param schema The schema to get the description from.\n*\n* @returns The description, if any.\n*\n* @beta\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction getDescription(schema) {\n\treturn /* @__PURE__ */ _getLastMetadata(schema, \"description\");\n}\n\n//#endregion\n//#region src/methods/getExamples/getExamples.ts\n/**\n* Returns the examples of a schema.\n*\n* If multiple examples are defined, it concatenates them using depth-first\n* search. If no examples are defined, an empty array is returned.\n*\n* @param schema The schema to get the examples from.\n*\n* @returns The examples, if any.\n*\n* @beta\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction getExamples(schema) {\n\tconst examples$1 = [];\n\tfunction depthFirstCollect(schema$1) {\n\t\tif (\"pipe\" in schema$1) {\n\t\t\tfor (const item of schema$1.pipe) if (item.kind === \"schema\" && \"pipe\" in item) depthFirstCollect(item);\n\t\t\telse if (item.kind === \"metadata\" && item.type === \"examples\") examples$1.push(...item.examples);\n\t\t}\n\t}\n\tdepthFirstCollect(schema);\n\treturn examples$1;\n}\n\n//#endregion\n//#region src/methods/getFallbacks/getFallbacks.ts\n/**\n* Returns the fallback values of the schema.\n*\n* Hint: The difference to `getFallback` is that for object and tuple schemas\n* this function recursively returns the fallback values of the subschemas\n* instead of `undefined`.\n*\n* @param schema The schema to get them from.\n*\n* @returns The fallback values.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction getFallbacks(schema) {\n\tif (\"entries\" in schema) {\n\t\tconst object$1 = {};\n\t\tfor (const key in schema.entries) object$1[key] = /* @__PURE__ */ getFallbacks(schema.entries[key]);\n\t\treturn object$1;\n\t}\n\tif (\"items\" in schema) return schema.items.map(getFallbacks);\n\treturn /* @__PURE__ */ getFallback(schema);\n}\n\n//#endregion\n//#region src/methods/getFallbacks/getFallbacksAsync.ts\n/**\n* Returns the fallback values of the schema.\n*\n* Hint: The difference to `getFallback` is that for object and tuple schemas\n* this function recursively returns the fallback values of the subschemas\n* instead of `undefined`.\n*\n* @param schema The schema to get them from.\n*\n* @returns The fallback values.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nasync function getFallbacksAsync(schema) {\n\tif (\"entries\" in schema) return Object.fromEntries(await Promise.all(Object.entries(schema.entries).map(async ([key, value$1]) => [key, await /* @__PURE__ */ getFallbacksAsync(value$1)])));\n\tif (\"items\" in schema) return Promise.all(schema.items.map(getFallbacksAsync));\n\treturn /* @__PURE__ */ getFallback(schema);\n}\n\n//#endregion\n//#region src/methods/getMetadata/getMetadata.ts\n/**\n* Returns the metadata of a schema.\n*\n* If multiple metadata are defined, it shallowly merges them using depth-first\n* search. If no metadata is defined, an empty object is returned.\n*\n* @param schema Schema to get the metadata from.\n*\n* @returns The metadata, if any.\n*\n* @beta\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction getMetadata(schema) {\n\tconst result = {};\n\tfunction depthFirstMerge(schema$1) {\n\t\tif (\"pipe\" in schema$1) {\n\t\t\tfor (const item of schema$1.pipe) if (item.kind === \"schema\" && \"pipe\" in item) depthFirstMerge(item);\n\t\t\telse if (item.kind === \"metadata\" && item.type === \"metadata\") Object.assign(result, item.metadata);\n\t\t}\n\t}\n\tdepthFirstMerge(schema);\n\treturn result;\n}\n\n//#endregion\n//#region src/methods/getTitle/getTitle.ts\n/**\n* Returns the title of the schema.\n*\n* If multiple titles are defined, the last one of the highest level is\n* returned. If no title is defined, `undefined` is returned.\n*\n* @param schema The schema to get the title from.\n*\n* @returns The title, if any.\n*\n* @beta\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction getTitle(schema) {\n\treturn /* @__PURE__ */ _getLastMetadata(schema, \"title\");\n}\n\n//#endregion\n//#region src/methods/is/is.ts\n/**\n* Checks if the input matches the schema. By using a type predicate, this\n* function can be used as a type guard.\n*\n* @param schema The schema to be used.\n* @param input The input to be tested.\n*\n* @returns Whether the input matches the schema.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction is(schema, input) {\n\treturn !schema[\"~run\"]({ value: input }, { abortEarly: true }).issues;\n}\n\n//#endregion\n//#region src/schemas/any/any.ts\n/**\n* Creates an any schema.\n*\n* Hint: This schema function exists only for completeness and is not\n* recommended in practice. Instead, `unknown` should be used to accept\n* unknown data.\n*\n* @returns An any schema.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction any() {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"any\",\n\t\treference: any,\n\t\texpects: \"any\",\n\t\tasync: false,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.typed = true;\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/array/array.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction array(item, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"array\",\n\t\treference: array,\n\t\texpects: \"Array\",\n\t\tasync: false,\n\t\titem,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (Array.isArray(input)) {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = [];\n\t\t\t\tfor (let key = 0; key < input.length; key++) {\n\t\t\t\t\tconst value$1 = input[key];\n\t\t\t\t\tconst itemDataset = this.item[\"~run\"]({ value: value$1 }, config$1);\n\t\t\t\t\tif (itemDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of itemDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = itemDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!itemDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.push(itemDataset.value);\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/array/arrayAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction arrayAsync(item, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"array\",\n\t\treference: arrayAsync,\n\t\texpects: \"Array\",\n\t\tasync: true,\n\t\titem,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (Array.isArray(input)) {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = [];\n\t\t\t\tconst itemDatasets = await Promise.all(input.map((value$1) => this.item[\"~run\"]({ value: value$1 }, config$1)));\n\t\t\t\tfor (let key = 0; key < itemDatasets.length; key++) {\n\t\t\t\t\tconst itemDataset = itemDatasets[key];\n\t\t\t\t\tif (itemDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: input[key]\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of itemDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = itemDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!itemDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.push(itemDataset.value);\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/bigint/bigint.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction bigint(message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"bigint\",\n\t\treference: bigint,\n\t\texpects: \"bigint\",\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (typeof dataset.value === \"bigint\") dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/blob/blob.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction blob(message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"blob\",\n\t\treference: blob,\n\t\texpects: \"Blob\",\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value instanceof Blob) dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/boolean/boolean.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction boolean(message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"boolean\",\n\t\treference: boolean,\n\t\texpects: \"boolean\",\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (typeof dataset.value === \"boolean\") dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/custom/custom.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction custom(check$1, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"custom\",\n\t\treference: custom,\n\t\texpects: \"unknown\",\n\t\tasync: false,\n\t\tcheck: check$1,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (this.check(dataset.value)) dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/custom/customAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction customAsync(check$1, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"custom\",\n\t\treference: customAsync,\n\t\texpects: \"unknown\",\n\t\tasync: true,\n\t\tcheck: check$1,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tif (await this.check(dataset.value)) dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/date/date.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction date(message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"date\",\n\t\treference: date,\n\t\texpects: \"Date\",\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value instanceof Date) if (!isNaN(dataset.value)) dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1, { received: \"\\\"Invalid Date\\\"\" });\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/enum/enum.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction enum_(enum__, message$1) {\n\tconst options = [];\n\tfor (const key in enum__) if (`${+key}` !== key || typeof enum__[key] !== \"string\" || !Object.is(enum__[enum__[key]], +key)) options.push(enum__[key]);\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"enum\",\n\t\treference: enum_,\n\t\texpects: /* @__PURE__ */ _joinExpects(options.map(_stringify), \"|\"),\n\t\tasync: false,\n\t\tenum: enum__,\n\t\toptions,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (this.options.includes(dataset.value)) dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/exactOptional/exactOptional.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction exactOptional(wrapped, default_) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"exact_optional\",\n\t\treference: exactOptional,\n\t\texpects: wrapped.expects,\n\t\tasync: false,\n\t\twrapped,\n\t\tdefault: default_,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\treturn this.wrapped[\"~run\"](dataset, config$1);\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/exactOptional/exactOptionalAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction exactOptionalAsync(wrapped, default_) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"exact_optional\",\n\t\treference: exactOptionalAsync,\n\t\texpects: wrapped.expects,\n\t\tasync: true,\n\t\twrapped,\n\t\tdefault: default_,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\treturn this.wrapped[\"~run\"](dataset, config$1);\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/file/file.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction file(message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"file\",\n\t\treference: file,\n\t\texpects: \"File\",\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value instanceof File) dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/function/function.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction function_(message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"function\",\n\t\treference: function_,\n\t\texpects: \"Function\",\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (typeof dataset.value === \"function\") dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/instance/instance.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction instance(class_, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"instance\",\n\t\treference: instance,\n\t\texpects: class_.name,\n\t\tasync: false,\n\t\tclass: class_,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value instanceof this.class) dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/intersect/utils/_merge/_merge.ts\n/**\n* Merges two values into one single output.\n*\n* @param value1 First value.\n* @param value2 Second value.\n*\n* @returns The merge dataset.\n*\n* @internal\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction _merge(value1, value2) {\n\tif (typeof value1 === typeof value2) {\n\t\tif (value1 === value2 || value1 instanceof Date && value2 instanceof Date && +value1 === +value2) return { value: value1 };\n\t\tif (value1 && value2 && value1.constructor === Object && value2.constructor === Object) {\n\t\t\tfor (const key in value2) if (key in value1) {\n\t\t\t\tconst dataset = /* @__PURE__ */ _merge(value1[key], value2[key]);\n\t\t\t\tif (dataset.issue) return dataset;\n\t\t\t\tvalue1[key] = dataset.value;\n\t\t\t} else value1[key] = value2[key];\n\t\t\treturn { value: value1 };\n\t\t}\n\t\tif (Array.isArray(value1) && Array.isArray(value2)) {\n\t\t\tif (value1.length === value2.length) {\n\t\t\t\tfor (let index = 0; index < value1.length; index++) {\n\t\t\t\t\tconst dataset = /* @__PURE__ */ _merge(value1[index], value2[index]);\n\t\t\t\t\tif (dataset.issue) return dataset;\n\t\t\t\t\tvalue1[index] = dataset.value;\n\t\t\t\t}\n\t\t\t\treturn { value: value1 };\n\t\t\t}\n\t\t}\n\t}\n\treturn { issue: true };\n}\n\n//#endregion\n//#region src/schemas/intersect/intersect.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction intersect(options, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"intersect\",\n\t\treference: intersect,\n\t\texpects: /* @__PURE__ */ _joinExpects(options.map((option) => option.expects), \"&\"),\n\t\tasync: false,\n\t\toptions,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (this.options.length) {\n\t\t\t\tconst input = dataset.value;\n\t\t\t\tlet outputs;\n\t\t\t\tdataset.typed = true;\n\t\t\t\tfor (const schema of this.options) {\n\t\t\t\t\tconst optionDataset = schema[\"~run\"]({ value: input }, config$1);\n\t\t\t\t\tif (optionDataset.issues) {\n\t\t\t\t\t\tif (dataset.issues) dataset.issues.push(...optionDataset.issues);\n\t\t\t\t\t\telse dataset.issues = optionDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!optionDataset.typed) dataset.typed = false;\n\t\t\t\t\tif (dataset.typed) if (outputs) outputs.push(optionDataset.value);\n\t\t\t\t\telse outputs = [optionDataset.value];\n\t\t\t\t}\n\t\t\t\tif (dataset.typed) {\n\t\t\t\t\tdataset.value = outputs[0];\n\t\t\t\t\tfor (let index = 1; index < outputs.length; index++) {\n\t\t\t\t\t\tconst mergeDataset = /* @__PURE__ */ _merge(dataset.value, outputs[index]);\n\t\t\t\t\t\tif (mergeDataset.issue) {\n\t\t\t\t\t\t\t_addIssue(this, \"type\", dataset, config$1, { received: \"unknown\" });\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdataset.value = mergeDataset.value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/intersect/intersectAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction intersectAsync(options, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"intersect\",\n\t\treference: intersectAsync,\n\t\texpects: /* @__PURE__ */ _joinExpects(options.map((option) => option.expects), \"&\"),\n\t\tasync: true,\n\t\toptions,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tif (this.options.length) {\n\t\t\t\tconst input = dataset.value;\n\t\t\t\tlet outputs;\n\t\t\t\tdataset.typed = true;\n\t\t\t\tconst optionDatasets = await Promise.all(this.options.map((schema) => schema[\"~run\"]({ value: input }, config$1)));\n\t\t\t\tfor (const optionDataset of optionDatasets) {\n\t\t\t\t\tif (optionDataset.issues) {\n\t\t\t\t\t\tif (dataset.issues) dataset.issues.push(...optionDataset.issues);\n\t\t\t\t\t\telse dataset.issues = optionDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!optionDataset.typed) dataset.typed = false;\n\t\t\t\t\tif (dataset.typed) if (outputs) outputs.push(optionDataset.value);\n\t\t\t\t\telse outputs = [optionDataset.value];\n\t\t\t\t}\n\t\t\t\tif (dataset.typed) {\n\t\t\t\t\tdataset.value = outputs[0];\n\t\t\t\t\tfor (let index = 1; index < outputs.length; index++) {\n\t\t\t\t\t\tconst mergeDataset = /* @__PURE__ */ _merge(dataset.value, outputs[index]);\n\t\t\t\t\t\tif (mergeDataset.issue) {\n\t\t\t\t\t\t\t_addIssue(this, \"type\", dataset, config$1, { received: \"unknown\" });\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdataset.value = mergeDataset.value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/lazy/lazy.ts\n/**\n* Creates a lazy schema.\n*\n* @param getter The schema getter.\n*\n* @returns A lazy schema.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction lazy(getter) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"lazy\",\n\t\treference: lazy,\n\t\texpects: \"unknown\",\n\t\tasync: false,\n\t\tgetter,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\treturn this.getter(dataset.value)[\"~run\"](dataset, config$1);\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/lazy/lazyAsync.ts\n/**\n* Creates a lazy schema.\n*\n* @param getter The schema getter.\n*\n* @returns A lazy schema.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction lazyAsync(getter) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"lazy\",\n\t\treference: lazyAsync,\n\t\texpects: \"unknown\",\n\t\tasync: true,\n\t\tgetter,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\treturn (await this.getter(dataset.value))[\"~run\"](dataset, config$1);\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/literal/literal.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction literal(literal_, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"literal\",\n\t\treference: literal,\n\t\texpects: /* @__PURE__ */ _stringify(literal_),\n\t\tasync: false,\n\t\tliteral: literal_,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value === this.literal) dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/looseObject/looseObject.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction looseObject(entries$1, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"loose_object\",\n\t\treference: looseObject,\n\t\texpects: \"Object\",\n\t\tasync: false,\n\t\tentries: entries$1,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input && typeof input === \"object\") {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = {};\n\t\t\t\tfor (const key in this.entries) {\n\t\t\t\t\tconst valueSchema = this.entries[key];\n\t\t\t\t\tif (key in input || (valueSchema.type === \"exact_optional\" || valueSchema.type === \"optional\" || valueSchema.type === \"nullish\") && valueSchema.default !== void 0) {\n\t\t\t\t\t\tconst value$1 = key in input ? input[key] : /* @__PURE__ */ getDefault(valueSchema);\n\t\t\t\t\t\tconst valueDataset = valueSchema[\"~run\"]({ value: value$1 }, config$1);\n\t\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!valueDataset.typed) dataset.typed = false;\n\t\t\t\t\t\tdataset.value[key] = valueDataset.value;\n\t\t\t\t\t} else if (valueSchema.fallback !== void 0) dataset.value[key] = /* @__PURE__ */ getFallback(valueSchema);\n\t\t\t\t\telse if (valueSchema.type !== \"exact_optional\" && valueSchema.type !== \"optional\" && valueSchema.type !== \"nullish\") {\n\t\t\t\t\t\t_addIssue(this, \"key\", dataset, config$1, {\n\t\t\t\t\t\t\tinput: void 0,\n\t\t\t\t\t\t\texpected: `\"${key}\"`,\n\t\t\t\t\t\t\tpath: [{\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\tvalue: input[key]\n\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (config$1.abortEarly) break;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!dataset.issues || !config$1.abortEarly) {\n\t\t\t\t\tfor (const key in input) if (/* @__PURE__ */ _isValidObjectKey(input, key) && !(key in this.entries)) dataset.value[key] = input[key];\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/looseObject/looseObjectAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction looseObjectAsync(entries$1, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"loose_object\",\n\t\treference: looseObjectAsync,\n\t\texpects: \"Object\",\n\t\tasync: true,\n\t\tentries: entries$1,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input && typeof input === \"object\") {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = {};\n\t\t\t\tconst valueDatasets = await Promise.all(Object.entries(this.entries).map(async ([key, valueSchema]) => {\n\t\t\t\t\tif (key in input || (valueSchema.type === \"exact_optional\" || valueSchema.type === \"optional\" || valueSchema.type === \"nullish\") && valueSchema.default !== void 0) {\n\t\t\t\t\t\tconst value$1 = key in input ? input[key] : await /* @__PURE__ */ getDefault(valueSchema);\n\t\t\t\t\t\treturn [\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue$1,\n\t\t\t\t\t\t\tvalueSchema,\n\t\t\t\t\t\t\tawait valueSchema[\"~run\"]({ value: value$1 }, config$1)\n\t\t\t\t\t\t];\n\t\t\t\t\t}\n\t\t\t\t\treturn [\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\tinput[key],\n\t\t\t\t\t\tvalueSchema,\n\t\t\t\t\t\tnull\n\t\t\t\t\t];\n\t\t\t\t}));\n\t\t\t\tfor (const [key, value$1, valueSchema, valueDataset] of valueDatasets) if (valueDataset) {\n\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!valueDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value[key] = valueDataset.value;\n\t\t\t\t} else if (valueSchema.fallback !== void 0) dataset.value[key] = await /* @__PURE__ */ getFallback(valueSchema);\n\t\t\t\telse if (valueSchema.type !== \"exact_optional\" && valueSchema.type !== \"optional\" && valueSchema.type !== \"nullish\") {\n\t\t\t\t\t_addIssue(this, \"key\", dataset, config$1, {\n\t\t\t\t\t\tinput: void 0,\n\t\t\t\t\t\texpected: `\"${key}\"`,\n\t\t\t\t\t\tpath: [{\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t}]\n\t\t\t\t\t});\n\t\t\t\t\tif (config$1.abortEarly) break;\n\t\t\t\t}\n\t\t\t\tif (!dataset.issues || !config$1.abortEarly) {\n\t\t\t\t\tfor (const key in input) if (/* @__PURE__ */ _isValidObjectKey(input, key) && !(key in this.entries)) dataset.value[key] = input[key];\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/looseTuple/looseTuple.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction looseTuple(items, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"loose_tuple\",\n\t\treference: looseTuple,\n\t\texpects: \"Array\",\n\t\tasync: false,\n\t\titems,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (Array.isArray(input)) {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = [];\n\t\t\t\tfor (let key = 0; key < this.items.length; key++) {\n\t\t\t\t\tconst value$1 = input[key];\n\t\t\t\t\tconst itemDataset = this.items[key][\"~run\"]({ value: value$1 }, config$1);\n\t\t\t\t\tif (itemDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of itemDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = itemDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!itemDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.push(itemDataset.value);\n\t\t\t\t}\n\t\t\t\tif (!dataset.issues || !config$1.abortEarly) for (let key = this.items.length; key < input.length; key++) dataset.value.push(input[key]);\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/looseTuple/looseTupleAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction looseTupleAsync(items, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"loose_tuple\",\n\t\treference: looseTupleAsync,\n\t\texpects: \"Array\",\n\t\tasync: true,\n\t\titems,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (Array.isArray(input)) {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = [];\n\t\t\t\tconst itemDatasets = await Promise.all(this.items.map(async (item, key) => {\n\t\t\t\t\tconst value$1 = input[key];\n\t\t\t\t\treturn [\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\tvalue$1,\n\t\t\t\t\t\tawait item[\"~run\"]({ value: value$1 }, config$1)\n\t\t\t\t\t];\n\t\t\t\t}));\n\t\t\t\tfor (const [key, value$1, itemDataset] of itemDatasets) {\n\t\t\t\t\tif (itemDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of itemDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = itemDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!itemDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.push(itemDataset.value);\n\t\t\t\t}\n\t\t\t\tif (!dataset.issues || !config$1.abortEarly) for (let key = this.items.length; key < input.length; key++) dataset.value.push(input[key]);\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/map/map.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction map(key, value$1, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"map\",\n\t\treference: map,\n\t\texpects: \"Map\",\n\t\tasync: false,\n\t\tkey,\n\t\tvalue: value$1,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input instanceof Map) {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = /* @__PURE__ */ new Map();\n\t\t\t\tfor (const [inputKey, inputValue] of input) {\n\t\t\t\t\tconst keyDataset = this.key[\"~run\"]({ value: inputKey }, config$1);\n\t\t\t\t\tif (keyDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"map\",\n\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey: inputKey,\n\t\t\t\t\t\t\tvalue: inputValue\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of keyDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = keyDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tconst valueDataset = this.value[\"~run\"]({ value: inputValue }, config$1);\n\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"map\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey: inputKey,\n\t\t\t\t\t\t\tvalue: inputValue\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!keyDataset.typed || !valueDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.set(keyDataset.value, valueDataset.value);\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/map/mapAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction mapAsync(key, value$1, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"map\",\n\t\treference: mapAsync,\n\t\texpects: \"Map\",\n\t\tasync: true,\n\t\tkey,\n\t\tvalue: value$1,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input instanceof Map) {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = /* @__PURE__ */ new Map();\n\t\t\t\tconst datasets = await Promise.all([...input].map(([inputKey, inputValue]) => Promise.all([\n\t\t\t\t\tinputKey,\n\t\t\t\t\tinputValue,\n\t\t\t\t\tthis.key[\"~run\"]({ value: inputKey }, config$1),\n\t\t\t\t\tthis.value[\"~run\"]({ value: inputValue }, config$1)\n\t\t\t\t])));\n\t\t\t\tfor (const [inputKey, inputValue, keyDataset, valueDataset] of datasets) {\n\t\t\t\t\tif (keyDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"map\",\n\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey: inputKey,\n\t\t\t\t\t\t\tvalue: inputValue\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of keyDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = keyDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"map\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey: inputKey,\n\t\t\t\t\t\t\tvalue: inputValue\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!keyDataset.typed || !valueDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.set(keyDataset.value, valueDataset.value);\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/nan/nan.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction nan(message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"nan\",\n\t\treference: nan,\n\t\texpects: \"NaN\",\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (Number.isNaN(dataset.value)) dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/never/never.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction never(message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"never\",\n\t\treference: never,\n\t\texpects: \"never\",\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\t_addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/nonNullable/nonNullable.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction nonNullable(wrapped, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"non_nullable\",\n\t\treference: nonNullable,\n\t\texpects: \"!null\",\n\t\tasync: false,\n\t\twrapped,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value !== null) dataset = this.wrapped[\"~run\"](dataset, config$1);\n\t\t\tif (dataset.value === null) _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/nonNullable/nonNullableAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction nonNullableAsync(wrapped, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"non_nullable\",\n\t\treference: nonNullableAsync,\n\t\texpects: \"!null\",\n\t\tasync: true,\n\t\twrapped,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value !== null) dataset = await this.wrapped[\"~run\"](dataset, config$1);\n\t\t\tif (dataset.value === null) _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/nonNullish/nonNullish.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction nonNullish(wrapped, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"non_nullish\",\n\t\treference: nonNullish,\n\t\texpects: \"(!null & !undefined)\",\n\t\tasync: false,\n\t\twrapped,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (!(dataset.value === null || dataset.value === void 0)) dataset = this.wrapped[\"~run\"](dataset, config$1);\n\t\t\tif (dataset.value === null || dataset.value === void 0) _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/nonNullish/nonNullishAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction nonNullishAsync(wrapped, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"non_nullish\",\n\t\treference: nonNullishAsync,\n\t\texpects: \"(!null & !undefined)\",\n\t\tasync: true,\n\t\twrapped,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tif (!(dataset.value === null || dataset.value === void 0)) dataset = await this.wrapped[\"~run\"](dataset, config$1);\n\t\t\tif (dataset.value === null || dataset.value === void 0) _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/nonOptional/nonOptional.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction nonOptional(wrapped, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"non_optional\",\n\t\treference: nonOptional,\n\t\texpects: \"!undefined\",\n\t\tasync: false,\n\t\twrapped,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value !== void 0) dataset = this.wrapped[\"~run\"](dataset, config$1);\n\t\t\tif (dataset.value === void 0) _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/nonOptional/nonOptionalAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction nonOptionalAsync(wrapped, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"non_optional\",\n\t\treference: nonOptionalAsync,\n\t\texpects: \"!undefined\",\n\t\tasync: true,\n\t\twrapped,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value !== void 0) dataset = await this.wrapped[\"~run\"](dataset, config$1);\n\t\t\tif (dataset.value === void 0) _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/null/null.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction null_(message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"null\",\n\t\treference: null_,\n\t\texpects: \"null\",\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value === null) dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/nullable/nullable.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction nullable(wrapped, default_) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"nullable\",\n\t\treference: nullable,\n\t\texpects: `(${wrapped.expects} | null)`,\n\t\tasync: false,\n\t\twrapped,\n\t\tdefault: default_,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value === null) {\n\t\t\t\tif (this.default !== void 0) dataset.value = /* @__PURE__ */ getDefault(this, dataset, config$1);\n\t\t\t\tif (dataset.value === null) {\n\t\t\t\t\tdataset.typed = true;\n\t\t\t\t\treturn dataset;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this.wrapped[\"~run\"](dataset, config$1);\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/nullable/nullableAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction nullableAsync(wrapped, default_) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"nullable\",\n\t\treference: nullableAsync,\n\t\texpects: `(${wrapped.expects} | null)`,\n\t\tasync: true,\n\t\twrapped,\n\t\tdefault: default_,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value === null) {\n\t\t\t\tif (this.default !== void 0) dataset.value = await /* @__PURE__ */ getDefault(this, dataset, config$1);\n\t\t\t\tif (dataset.value === null) {\n\t\t\t\t\tdataset.typed = true;\n\t\t\t\t\treturn dataset;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this.wrapped[\"~run\"](dataset, config$1);\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/nullish/nullish.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction nullish(wrapped, default_) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"nullish\",\n\t\treference: nullish,\n\t\texpects: `(${wrapped.expects} | null | undefined)`,\n\t\tasync: false,\n\t\twrapped,\n\t\tdefault: default_,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value === null || dataset.value === void 0) {\n\t\t\t\tif (this.default !== void 0) dataset.value = /* @__PURE__ */ getDefault(this, dataset, config$1);\n\t\t\t\tif (dataset.value === null || dataset.value === void 0) {\n\t\t\t\t\tdataset.typed = true;\n\t\t\t\t\treturn dataset;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this.wrapped[\"~run\"](dataset, config$1);\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/nullish/nullishAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction nullishAsync(wrapped, default_) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"nullish\",\n\t\treference: nullishAsync,\n\t\texpects: `(${wrapped.expects} | null | undefined)`,\n\t\tasync: true,\n\t\twrapped,\n\t\tdefault: default_,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value === null || dataset.value === void 0) {\n\t\t\t\tif (this.default !== void 0) dataset.value = await /* @__PURE__ */ getDefault(this, dataset, config$1);\n\t\t\t\tif (dataset.value === null || dataset.value === void 0) {\n\t\t\t\t\tdataset.typed = true;\n\t\t\t\t\treturn dataset;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this.wrapped[\"~run\"](dataset, config$1);\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/number/number.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction number(message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"number\",\n\t\treference: number,\n\t\texpects: \"number\",\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (typeof dataset.value === \"number\" && !isNaN(dataset.value)) dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/object/object.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction object(entries$1, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"object\",\n\t\treference: object,\n\t\texpects: \"Object\",\n\t\tasync: false,\n\t\tentries: entries$1,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input && typeof input === \"object\") {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = {};\n\t\t\t\tfor (const key in this.entries) {\n\t\t\t\t\tconst valueSchema = this.entries[key];\n\t\t\t\t\tif (key in input || (valueSchema.type === \"exact_optional\" || valueSchema.type === \"optional\" || valueSchema.type === \"nullish\") && valueSchema.default !== void 0) {\n\t\t\t\t\t\tconst value$1 = key in input ? input[key] : /* @__PURE__ */ getDefault(valueSchema);\n\t\t\t\t\t\tconst valueDataset = valueSchema[\"~run\"]({ value: value$1 }, config$1);\n\t\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!valueDataset.typed) dataset.typed = false;\n\t\t\t\t\t\tdataset.value[key] = valueDataset.value;\n\t\t\t\t\t} else if (valueSchema.fallback !== void 0) dataset.value[key] = /* @__PURE__ */ getFallback(valueSchema);\n\t\t\t\t\telse if (valueSchema.type !== \"exact_optional\" && valueSchema.type !== \"optional\" && valueSchema.type !== \"nullish\") {\n\t\t\t\t\t\t_addIssue(this, \"key\", dataset, config$1, {\n\t\t\t\t\t\t\tinput: void 0,\n\t\t\t\t\t\t\texpected: `\"${key}\"`,\n\t\t\t\t\t\t\tpath: [{\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\tvalue: input[key]\n\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (config$1.abortEarly) break;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/object/objectAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction objectAsync(entries$1, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"object\",\n\t\treference: objectAsync,\n\t\texpects: \"Object\",\n\t\tasync: true,\n\t\tentries: entries$1,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input && typeof input === \"object\") {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = {};\n\t\t\t\tconst valueDatasets = await Promise.all(Object.entries(this.entries).map(async ([key, valueSchema]) => {\n\t\t\t\t\tif (key in input || (valueSchema.type === \"exact_optional\" || valueSchema.type === \"optional\" || valueSchema.type === \"nullish\") && valueSchema.default !== void 0) {\n\t\t\t\t\t\tconst value$1 = key in input ? input[key] : await /* @__PURE__ */ getDefault(valueSchema);\n\t\t\t\t\t\treturn [\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue$1,\n\t\t\t\t\t\t\tvalueSchema,\n\t\t\t\t\t\t\tawait valueSchema[\"~run\"]({ value: value$1 }, config$1)\n\t\t\t\t\t\t];\n\t\t\t\t\t}\n\t\t\t\t\treturn [\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\tinput[key],\n\t\t\t\t\t\tvalueSchema,\n\t\t\t\t\t\tnull\n\t\t\t\t\t];\n\t\t\t\t}));\n\t\t\t\tfor (const [key, value$1, valueSchema, valueDataset] of valueDatasets) if (valueDataset) {\n\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!valueDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value[key] = valueDataset.value;\n\t\t\t\t} else if (valueSchema.fallback !== void 0) dataset.value[key] = await /* @__PURE__ */ getFallback(valueSchema);\n\t\t\t\telse if (valueSchema.type !== \"exact_optional\" && valueSchema.type !== \"optional\" && valueSchema.type !== \"nullish\") {\n\t\t\t\t\t_addIssue(this, \"key\", dataset, config$1, {\n\t\t\t\t\t\tinput: void 0,\n\t\t\t\t\t\texpected: `\"${key}\"`,\n\t\t\t\t\t\tpath: [{\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t}]\n\t\t\t\t\t});\n\t\t\t\t\tif (config$1.abortEarly) break;\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/objectWithRest/objectWithRest.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction objectWithRest(entries$1, rest, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"object_with_rest\",\n\t\treference: objectWithRest,\n\t\texpects: \"Object\",\n\t\tasync: false,\n\t\tentries: entries$1,\n\t\trest,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input && typeof input === \"object\") {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = {};\n\t\t\t\tfor (const key in this.entries) {\n\t\t\t\t\tconst valueSchema = this.entries[key];\n\t\t\t\t\tif (key in input || (valueSchema.type === \"exact_optional\" || valueSchema.type === \"optional\" || valueSchema.type === \"nullish\") && valueSchema.default !== void 0) {\n\t\t\t\t\t\tconst value$1 = key in input ? input[key] : /* @__PURE__ */ getDefault(valueSchema);\n\t\t\t\t\t\tconst valueDataset = valueSchema[\"~run\"]({ value: value$1 }, config$1);\n\t\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!valueDataset.typed) dataset.typed = false;\n\t\t\t\t\t\tdataset.value[key] = valueDataset.value;\n\t\t\t\t\t} else if (valueSchema.fallback !== void 0) dataset.value[key] = /* @__PURE__ */ getFallback(valueSchema);\n\t\t\t\t\telse if (valueSchema.type !== \"exact_optional\" && valueSchema.type !== \"optional\" && valueSchema.type !== \"nullish\") {\n\t\t\t\t\t\t_addIssue(this, \"key\", dataset, config$1, {\n\t\t\t\t\t\t\tinput: void 0,\n\t\t\t\t\t\t\texpected: `\"${key}\"`,\n\t\t\t\t\t\t\tpath: [{\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\tvalue: input[key]\n\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (config$1.abortEarly) break;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!dataset.issues || !config$1.abortEarly) {\n\t\t\t\t\tfor (const key in input) if (/* @__PURE__ */ _isValidObjectKey(input, key) && !(key in this.entries)) {\n\t\t\t\t\t\tconst valueDataset = this.rest[\"~run\"]({ value: input[key] }, config$1);\n\t\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\tvalue: input[key]\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!valueDataset.typed) dataset.typed = false;\n\t\t\t\t\t\tdataset.value[key] = valueDataset.value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/objectWithRest/objectWithRestAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction objectWithRestAsync(entries$1, rest, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"object_with_rest\",\n\t\treference: objectWithRestAsync,\n\t\texpects: \"Object\",\n\t\tasync: true,\n\t\tentries: entries$1,\n\t\trest,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input && typeof input === \"object\") {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = {};\n\t\t\t\tconst [normalDatasets, restDatasets] = await Promise.all([Promise.all(Object.entries(this.entries).map(async ([key, valueSchema]) => {\n\t\t\t\t\tif (key in input || (valueSchema.type === \"exact_optional\" || valueSchema.type === \"optional\" || valueSchema.type === \"nullish\") && valueSchema.default !== void 0) {\n\t\t\t\t\t\tconst value$1 = key in input ? input[key] : await /* @__PURE__ */ getDefault(valueSchema);\n\t\t\t\t\t\treturn [\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue$1,\n\t\t\t\t\t\t\tvalueSchema,\n\t\t\t\t\t\t\tawait valueSchema[\"~run\"]({ value: value$1 }, config$1)\n\t\t\t\t\t\t];\n\t\t\t\t\t}\n\t\t\t\t\treturn [\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\tinput[key],\n\t\t\t\t\t\tvalueSchema,\n\t\t\t\t\t\tnull\n\t\t\t\t\t];\n\t\t\t\t})), Promise.all(Object.entries(input).filter(([key]) => /* @__PURE__ */ _isValidObjectKey(input, key) && !(key in this.entries)).map(async ([key, value$1]) => [\n\t\t\t\t\tkey,\n\t\t\t\t\tvalue$1,\n\t\t\t\t\tawait this.rest[\"~run\"]({ value: value$1 }, config$1)\n\t\t\t\t]))]);\n\t\t\t\tfor (const [key, value$1, valueSchema, valueDataset] of normalDatasets) if (valueDataset) {\n\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!valueDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value[key] = valueDataset.value;\n\t\t\t\t} else if (valueSchema.fallback !== void 0) dataset.value[key] = await /* @__PURE__ */ getFallback(valueSchema);\n\t\t\t\telse if (valueSchema.type !== \"exact_optional\" && valueSchema.type !== \"optional\" && valueSchema.type !== \"nullish\") {\n\t\t\t\t\t_addIssue(this, \"key\", dataset, config$1, {\n\t\t\t\t\t\tinput: void 0,\n\t\t\t\t\t\texpected: `\"${key}\"`,\n\t\t\t\t\t\tpath: [{\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t}]\n\t\t\t\t\t});\n\t\t\t\t\tif (config$1.abortEarly) break;\n\t\t\t\t}\n\t\t\t\tif (!dataset.issues || !config$1.abortEarly) for (const [key, value$1, valueDataset] of restDatasets) {\n\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!valueDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value[key] = valueDataset.value;\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/optional/optional.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction optional(wrapped, default_) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"optional\",\n\t\treference: optional,\n\t\texpects: `(${wrapped.expects} | undefined)`,\n\t\tasync: false,\n\t\twrapped,\n\t\tdefault: default_,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value === void 0) {\n\t\t\t\tif (this.default !== void 0) dataset.value = /* @__PURE__ */ getDefault(this, dataset, config$1);\n\t\t\t\tif (dataset.value === void 0) {\n\t\t\t\t\tdataset.typed = true;\n\t\t\t\t\treturn dataset;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this.wrapped[\"~run\"](dataset, config$1);\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/optional/optionalAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction optionalAsync(wrapped, default_) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"optional\",\n\t\treference: optionalAsync,\n\t\texpects: `(${wrapped.expects} | undefined)`,\n\t\tasync: true,\n\t\twrapped,\n\t\tdefault: default_,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value === void 0) {\n\t\t\t\tif (this.default !== void 0) dataset.value = await /* @__PURE__ */ getDefault(this, dataset, config$1);\n\t\t\t\tif (dataset.value === void 0) {\n\t\t\t\t\tdataset.typed = true;\n\t\t\t\t\treturn dataset;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this.wrapped[\"~run\"](dataset, config$1);\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/picklist/picklist.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction picklist(options, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"picklist\",\n\t\treference: picklist,\n\t\texpects: /* @__PURE__ */ _joinExpects(options.map(_stringify), \"|\"),\n\t\tasync: false,\n\t\toptions,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (this.options.includes(dataset.value)) dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/promise/promise.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction promise(message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"promise\",\n\t\treference: promise,\n\t\texpects: \"Promise\",\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value instanceof Promise) dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/record/record.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction record(key, value$1, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"record\",\n\t\treference: record,\n\t\texpects: \"Object\",\n\t\tasync: false,\n\t\tkey,\n\t\tvalue: value$1,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input && typeof input === \"object\") {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = {};\n\t\t\t\tfor (const entryKey in input) if (/* @__PURE__ */ _isValidObjectKey(input, entryKey)) {\n\t\t\t\t\tconst entryValue = input[entryKey];\n\t\t\t\t\tconst keyDataset = this.key[\"~run\"]({ value: entryKey }, config$1);\n\t\t\t\t\tif (keyDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey: entryKey,\n\t\t\t\t\t\t\tvalue: entryValue\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of keyDataset.issues) {\n\t\t\t\t\t\t\tissue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = keyDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tconst valueDataset = this.value[\"~run\"]({ value: entryValue }, config$1);\n\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey: entryKey,\n\t\t\t\t\t\t\tvalue: entryValue\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!keyDataset.typed || !valueDataset.typed) dataset.typed = false;\n\t\t\t\t\tif (keyDataset.typed) dataset.value[keyDataset.value] = valueDataset.value;\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/record/recordAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction recordAsync(key, value$1, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"record\",\n\t\treference: recordAsync,\n\t\texpects: \"Object\",\n\t\tasync: true,\n\t\tkey,\n\t\tvalue: value$1,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input && typeof input === \"object\") {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = {};\n\t\t\t\tconst datasets = await Promise.all(Object.entries(input).filter(([key$1]) => /* @__PURE__ */ _isValidObjectKey(input, key$1)).map(([entryKey, entryValue]) => Promise.all([\n\t\t\t\t\tentryKey,\n\t\t\t\t\tentryValue,\n\t\t\t\t\tthis.key[\"~run\"]({ value: entryKey }, config$1),\n\t\t\t\t\tthis.value[\"~run\"]({ value: entryValue }, config$1)\n\t\t\t\t])));\n\t\t\t\tfor (const [entryKey, entryValue, keyDataset, valueDataset] of datasets) {\n\t\t\t\t\tif (keyDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey: entryKey,\n\t\t\t\t\t\t\tvalue: entryValue\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of keyDataset.issues) {\n\t\t\t\t\t\t\tissue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = keyDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey: entryKey,\n\t\t\t\t\t\t\tvalue: entryValue\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!keyDataset.typed || !valueDataset.typed) dataset.typed = false;\n\t\t\t\t\tif (keyDataset.typed) dataset.value[keyDataset.value] = valueDataset.value;\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/set/set.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction set(value$1, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"set\",\n\t\treference: set,\n\t\texpects: \"Set\",\n\t\tasync: false,\n\t\tvalue: value$1,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input instanceof Set) {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = /* @__PURE__ */ new Set();\n\t\t\t\tfor (const inputValue of input) {\n\t\t\t\t\tconst valueDataset = this.value[\"~run\"]({ value: inputValue }, config$1);\n\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"set\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey: null,\n\t\t\t\t\t\t\tvalue: inputValue\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!valueDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.add(valueDataset.value);\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/set/setAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction setAsync(value$1, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"set\",\n\t\treference: setAsync,\n\t\texpects: \"Set\",\n\t\tasync: true,\n\t\tvalue: value$1,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input instanceof Set) {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = /* @__PURE__ */ new Set();\n\t\t\t\tconst valueDatasets = await Promise.all([...input].map(async (inputValue) => [inputValue, await this.value[\"~run\"]({ value: inputValue }, config$1)]));\n\t\t\t\tfor (const [inputValue, valueDataset] of valueDatasets) {\n\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"set\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey: null,\n\t\t\t\t\t\t\tvalue: inputValue\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!valueDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.add(valueDataset.value);\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/strictObject/strictObject.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction strictObject(entries$1, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"strict_object\",\n\t\treference: strictObject,\n\t\texpects: \"Object\",\n\t\tasync: false,\n\t\tentries: entries$1,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input && typeof input === \"object\") {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = {};\n\t\t\t\tfor (const key in this.entries) {\n\t\t\t\t\tconst valueSchema = this.entries[key];\n\t\t\t\t\tif (key in input || (valueSchema.type === \"exact_optional\" || valueSchema.type === \"optional\" || valueSchema.type === \"nullish\") && valueSchema.default !== void 0) {\n\t\t\t\t\t\tconst value$1 = key in input ? input[key] : /* @__PURE__ */ getDefault(valueSchema);\n\t\t\t\t\t\tconst valueDataset = valueSchema[\"~run\"]({ value: value$1 }, config$1);\n\t\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!valueDataset.typed) dataset.typed = false;\n\t\t\t\t\t\tdataset.value[key] = valueDataset.value;\n\t\t\t\t\t} else if (valueSchema.fallback !== void 0) dataset.value[key] = /* @__PURE__ */ getFallback(valueSchema);\n\t\t\t\t\telse if (valueSchema.type !== \"exact_optional\" && valueSchema.type !== \"optional\" && valueSchema.type !== \"nullish\") {\n\t\t\t\t\t\t_addIssue(this, \"key\", dataset, config$1, {\n\t\t\t\t\t\t\tinput: void 0,\n\t\t\t\t\t\t\texpected: `\"${key}\"`,\n\t\t\t\t\t\t\tpath: [{\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\tvalue: input[key]\n\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (config$1.abortEarly) break;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!dataset.issues || !config$1.abortEarly) {\n\t\t\t\t\tfor (const key in input) if (!(key in this.entries)) {\n\t\t\t\t\t\t_addIssue(this, \"key\", dataset, config$1, {\n\t\t\t\t\t\t\tinput: key,\n\t\t\t\t\t\t\texpected: \"never\",\n\t\t\t\t\t\t\tpath: [{\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\tvalue: input[key]\n\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t});\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/strictObject/strictObjectAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction strictObjectAsync(entries$1, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"strict_object\",\n\t\treference: strictObjectAsync,\n\t\texpects: \"Object\",\n\t\tasync: true,\n\t\tentries: entries$1,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input && typeof input === \"object\") {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = {};\n\t\t\t\tconst valueDatasets = await Promise.all(Object.entries(this.entries).map(async ([key, valueSchema]) => {\n\t\t\t\t\tif (key in input || (valueSchema.type === \"exact_optional\" || valueSchema.type === \"optional\" || valueSchema.type === \"nullish\") && valueSchema.default !== void 0) {\n\t\t\t\t\t\tconst value$1 = key in input ? input[key] : await /* @__PURE__ */ getDefault(valueSchema);\n\t\t\t\t\t\treturn [\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue$1,\n\t\t\t\t\t\t\tvalueSchema,\n\t\t\t\t\t\t\tawait valueSchema[\"~run\"]({ value: value$1 }, config$1)\n\t\t\t\t\t\t];\n\t\t\t\t\t}\n\t\t\t\t\treturn [\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\tinput[key],\n\t\t\t\t\t\tvalueSchema,\n\t\t\t\t\t\tnull\n\t\t\t\t\t];\n\t\t\t\t}));\n\t\t\t\tfor (const [key, value$1, valueSchema, valueDataset] of valueDatasets) if (valueDataset) {\n\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!valueDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value[key] = valueDataset.value;\n\t\t\t\t} else if (valueSchema.fallback !== void 0) dataset.value[key] = await /* @__PURE__ */ getFallback(valueSchema);\n\t\t\t\telse if (valueSchema.type !== \"exact_optional\" && valueSchema.type !== \"optional\" && valueSchema.type !== \"nullish\") {\n\t\t\t\t\t_addIssue(this, \"key\", dataset, config$1, {\n\t\t\t\t\t\tinput: void 0,\n\t\t\t\t\t\texpected: `\"${key}\"`,\n\t\t\t\t\t\tpath: [{\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t}]\n\t\t\t\t\t});\n\t\t\t\t\tif (config$1.abortEarly) break;\n\t\t\t\t}\n\t\t\t\tif (!dataset.issues || !config$1.abortEarly) {\n\t\t\t\t\tfor (const key in input) if (!(key in this.entries)) {\n\t\t\t\t\t\t_addIssue(this, \"key\", dataset, config$1, {\n\t\t\t\t\t\t\tinput: key,\n\t\t\t\t\t\t\texpected: \"never\",\n\t\t\t\t\t\t\tpath: [{\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\tvalue: input[key]\n\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t});\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/strictTuple/strictTuple.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction strictTuple(items, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"strict_tuple\",\n\t\treference: strictTuple,\n\t\texpects: \"Array\",\n\t\tasync: false,\n\t\titems,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (Array.isArray(input)) {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = [];\n\t\t\t\tfor (let key = 0; key < this.items.length; key++) {\n\t\t\t\t\tconst value$1 = input[key];\n\t\t\t\t\tconst itemDataset = this.items[key][\"~run\"]({ value: value$1 }, config$1);\n\t\t\t\t\tif (itemDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of itemDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = itemDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!itemDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.push(itemDataset.value);\n\t\t\t\t}\n\t\t\t\tif (!(dataset.issues && config$1.abortEarly) && this.items.length < input.length) _addIssue(this, \"type\", dataset, config$1, {\n\t\t\t\t\tinput: input[this.items.length],\n\t\t\t\t\texpected: \"never\",\n\t\t\t\t\tpath: [{\n\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\tinput,\n\t\t\t\t\t\tkey: this.items.length,\n\t\t\t\t\t\tvalue: input[this.items.length]\n\t\t\t\t\t}]\n\t\t\t\t});\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/strictTuple/strictTupleAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction strictTupleAsync(items, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"strict_tuple\",\n\t\treference: strictTupleAsync,\n\t\texpects: \"Array\",\n\t\tasync: true,\n\t\titems,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (Array.isArray(input)) {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = [];\n\t\t\t\tconst itemDatasets = await Promise.all(this.items.map(async (item, key) => {\n\t\t\t\t\tconst value$1 = input[key];\n\t\t\t\t\treturn [\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\tvalue$1,\n\t\t\t\t\t\tawait item[\"~run\"]({ value: value$1 }, config$1)\n\t\t\t\t\t];\n\t\t\t\t}));\n\t\t\t\tfor (const [key, value$1, itemDataset] of itemDatasets) {\n\t\t\t\t\tif (itemDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of itemDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = itemDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!itemDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.push(itemDataset.value);\n\t\t\t\t}\n\t\t\t\tif (!(dataset.issues && config$1.abortEarly) && this.items.length < input.length) _addIssue(this, \"type\", dataset, config$1, {\n\t\t\t\t\tinput: input[this.items.length],\n\t\t\t\t\texpected: \"never\",\n\t\t\t\t\tpath: [{\n\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\tinput,\n\t\t\t\t\t\tkey: this.items.length,\n\t\t\t\t\t\tvalue: input[this.items.length]\n\t\t\t\t\t}]\n\t\t\t\t});\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/string/string.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction string(message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"string\",\n\t\treference: string,\n\t\texpects: \"string\",\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (typeof dataset.value === \"string\") dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/symbol/symbol.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction symbol(message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"symbol\",\n\t\treference: symbol,\n\t\texpects: \"symbol\",\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (typeof dataset.value === \"symbol\") dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/tuple/tuple.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction tuple(items, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"tuple\",\n\t\treference: tuple,\n\t\texpects: \"Array\",\n\t\tasync: false,\n\t\titems,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (Array.isArray(input)) {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = [];\n\t\t\t\tfor (let key = 0; key < this.items.length; key++) {\n\t\t\t\t\tconst value$1 = input[key];\n\t\t\t\t\tconst itemDataset = this.items[key][\"~run\"]({ value: value$1 }, config$1);\n\t\t\t\t\tif (itemDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of itemDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = itemDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!itemDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.push(itemDataset.value);\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/tuple/tupleAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction tupleAsync(items, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"tuple\",\n\t\treference: tupleAsync,\n\t\texpects: \"Array\",\n\t\tasync: true,\n\t\titems,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (Array.isArray(input)) {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = [];\n\t\t\t\tconst itemDatasets = await Promise.all(this.items.map(async (item, key) => {\n\t\t\t\t\tconst value$1 = input[key];\n\t\t\t\t\treturn [\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\tvalue$1,\n\t\t\t\t\t\tawait item[\"~run\"]({ value: value$1 }, config$1)\n\t\t\t\t\t];\n\t\t\t\t}));\n\t\t\t\tfor (const [key, value$1, itemDataset] of itemDatasets) {\n\t\t\t\t\tif (itemDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of itemDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = itemDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!itemDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.push(itemDataset.value);\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/tupleWithRest/tupleWithRest.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction tupleWithRest(items, rest, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"tuple_with_rest\",\n\t\treference: tupleWithRest,\n\t\texpects: \"Array\",\n\t\tasync: false,\n\t\titems,\n\t\trest,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (Array.isArray(input)) {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = [];\n\t\t\t\tfor (let key = 0; key < this.items.length; key++) {\n\t\t\t\t\tconst value$1 = input[key];\n\t\t\t\t\tconst itemDataset = this.items[key][\"~run\"]({ value: value$1 }, config$1);\n\t\t\t\t\tif (itemDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of itemDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = itemDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!itemDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.push(itemDataset.value);\n\t\t\t\t}\n\t\t\t\tif (!dataset.issues || !config$1.abortEarly) for (let key = this.items.length; key < input.length; key++) {\n\t\t\t\t\tconst value$1 = input[key];\n\t\t\t\t\tconst itemDataset = this.rest[\"~run\"]({ value: value$1 }, config$1);\n\t\t\t\t\tif (itemDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of itemDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = itemDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!itemDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.push(itemDataset.value);\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/tupleWithRest/tupleWithRestAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction tupleWithRestAsync(items, rest, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"tuple_with_rest\",\n\t\treference: tupleWithRestAsync,\n\t\texpects: \"Array\",\n\t\tasync: true,\n\t\titems,\n\t\trest,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (Array.isArray(input)) {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = [];\n\t\t\t\tconst [normalDatasets, restDatasets] = await Promise.all([Promise.all(this.items.map(async (item, key) => {\n\t\t\t\t\tconst value$1 = input[key];\n\t\t\t\t\treturn [\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\tvalue$1,\n\t\t\t\t\t\tawait item[\"~run\"]({ value: value$1 }, config$1)\n\t\t\t\t\t];\n\t\t\t\t})), Promise.all(input.slice(this.items.length).map(async (value$1, key) => {\n\t\t\t\t\treturn [\n\t\t\t\t\t\tkey + this.items.length,\n\t\t\t\t\t\tvalue$1,\n\t\t\t\t\t\tawait this.rest[\"~run\"]({ value: value$1 }, config$1)\n\t\t\t\t\t];\n\t\t\t\t}))]);\n\t\t\t\tfor (const [key, value$1, itemDataset] of normalDatasets) {\n\t\t\t\t\tif (itemDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of itemDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = itemDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!itemDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.push(itemDataset.value);\n\t\t\t\t}\n\t\t\t\tif (!dataset.issues || !config$1.abortEarly) for (const [key, value$1, itemDataset] of restDatasets) {\n\t\t\t\t\tif (itemDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of itemDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = itemDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!itemDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.push(itemDataset.value);\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/undefined/undefined.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction undefined_(message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"undefined\",\n\t\treference: undefined_,\n\t\texpects: \"undefined\",\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value === void 0) dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/undefinedable/undefinedable.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction undefinedable(wrapped, default_) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"undefinedable\",\n\t\treference: undefinedable,\n\t\texpects: `(${wrapped.expects} | undefined)`,\n\t\tasync: false,\n\t\twrapped,\n\t\tdefault: default_,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value === void 0) {\n\t\t\t\tif (this.default !== void 0) dataset.value = /* @__PURE__ */ getDefault(this, dataset, config$1);\n\t\t\t\tif (dataset.value === void 0) {\n\t\t\t\t\tdataset.typed = true;\n\t\t\t\t\treturn dataset;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this.wrapped[\"~run\"](dataset, config$1);\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/undefinedable/undefinedableAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction undefinedableAsync(wrapped, default_) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"undefinedable\",\n\t\treference: undefinedableAsync,\n\t\texpects: `(${wrapped.expects} | undefined)`,\n\t\tasync: true,\n\t\twrapped,\n\t\tdefault: default_,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value === void 0) {\n\t\t\t\tif (this.default !== void 0) dataset.value = await /* @__PURE__ */ getDefault(this, dataset, config$1);\n\t\t\t\tif (dataset.value === void 0) {\n\t\t\t\t\tdataset.typed = true;\n\t\t\t\t\treturn dataset;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this.wrapped[\"~run\"](dataset, config$1);\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/union/utils/_subIssues/_subIssues.ts\n/**\n* Returns the sub issues of the provided datasets for the union issue.\n*\n* @param datasets The datasets.\n*\n* @returns The sub issues.\n*\n* @internal\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction _subIssues(datasets) {\n\tlet issues;\n\tif (datasets) for (const dataset of datasets) if (issues) issues.push(...dataset.issues);\n\telse issues = dataset.issues;\n\treturn issues;\n}\n\n//#endregion\n//#region src/schemas/union/union.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction union(options, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"union\",\n\t\treference: union,\n\t\texpects: /* @__PURE__ */ _joinExpects(options.map((option) => option.expects), \"|\"),\n\t\tasync: false,\n\t\toptions,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tlet validDataset;\n\t\t\tlet typedDatasets;\n\t\t\tlet untypedDatasets;\n\t\t\tfor (const schema of this.options) {\n\t\t\t\tconst optionDataset = schema[\"~run\"]({ value: dataset.value }, config$1);\n\t\t\t\tif (optionDataset.typed) if (optionDataset.issues) if (typedDatasets) typedDatasets.push(optionDataset);\n\t\t\t\telse typedDatasets = [optionDataset];\n\t\t\t\telse {\n\t\t\t\t\tvalidDataset = optionDataset;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\telse if (untypedDatasets) untypedDatasets.push(optionDataset);\n\t\t\t\telse untypedDatasets = [optionDataset];\n\t\t\t}\n\t\t\tif (validDataset) return validDataset;\n\t\t\tif (typedDatasets) {\n\t\t\t\tif (typedDatasets.length === 1) return typedDatasets[0];\n\t\t\t\t_addIssue(this, \"type\", dataset, config$1, { issues: /* @__PURE__ */ _subIssues(typedDatasets) });\n\t\t\t\tdataset.typed = true;\n\t\t\t} else if (untypedDatasets?.length === 1) return untypedDatasets[0];\n\t\t\telse _addIssue(this, \"type\", dataset, config$1, { issues: /* @__PURE__ */ _subIssues(untypedDatasets) });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/union/unionAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction unionAsync(options, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"union\",\n\t\treference: unionAsync,\n\t\texpects: /* @__PURE__ */ _joinExpects(options.map((option) => option.expects), \"|\"),\n\t\tasync: true,\n\t\toptions,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tlet validDataset;\n\t\t\tlet typedDatasets;\n\t\t\tlet untypedDatasets;\n\t\t\tfor (const schema of this.options) {\n\t\t\t\tconst optionDataset = await schema[\"~run\"]({ value: dataset.value }, config$1);\n\t\t\t\tif (optionDataset.typed) if (optionDataset.issues) if (typedDatasets) typedDatasets.push(optionDataset);\n\t\t\t\telse typedDatasets = [optionDataset];\n\t\t\t\telse {\n\t\t\t\t\tvalidDataset = optionDataset;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\telse if (untypedDatasets) untypedDatasets.push(optionDataset);\n\t\t\t\telse untypedDatasets = [optionDataset];\n\t\t\t}\n\t\t\tif (validDataset) return validDataset;\n\t\t\tif (typedDatasets) {\n\t\t\t\tif (typedDatasets.length === 1) return typedDatasets[0];\n\t\t\t\t_addIssue(this, \"type\", dataset, config$1, { issues: /* @__PURE__ */ _subIssues(typedDatasets) });\n\t\t\t\tdataset.typed = true;\n\t\t\t} else if (untypedDatasets?.length === 1) return untypedDatasets[0];\n\t\t\telse _addIssue(this, \"type\", dataset, config$1, { issues: /* @__PURE__ */ _subIssues(untypedDatasets) });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/unknown/unknown.ts\n/**\n* Creates a unknown schema.\n*\n* @returns A unknown schema.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction unknown() {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"unknown\",\n\t\treference: unknown,\n\t\texpects: \"unknown\",\n\t\tasync: false,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.typed = true;\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/variant/variant.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction variant(key, options, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"variant\",\n\t\treference: variant,\n\t\texpects: \"Object\",\n\t\tasync: false,\n\t\tkey,\n\t\toptions,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input && typeof input === \"object\") {\n\t\t\t\tlet outputDataset;\n\t\t\t\tlet maxDiscriminatorPriority = 0;\n\t\t\t\tlet invalidDiscriminatorKey = this.key;\n\t\t\t\tlet expectedDiscriminators = [];\n\t\t\t\tconst parseOptions = (variant$1, allKeys) => {\n\t\t\t\t\tfor (const schema of variant$1.options) {\n\t\t\t\t\t\tif (schema.type === \"variant\") parseOptions(schema, new Set(allKeys).add(schema.key));\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tlet keysAreValid = true;\n\t\t\t\t\t\t\tlet currentPriority = 0;\n\t\t\t\t\t\t\tfor (const currentKey of allKeys) {\n\t\t\t\t\t\t\t\tconst discriminatorSchema = schema.entries[currentKey];\n\t\t\t\t\t\t\t\tif (currentKey in input ? discriminatorSchema[\"~run\"]({\n\t\t\t\t\t\t\t\t\ttyped: false,\n\t\t\t\t\t\t\t\t\tvalue: input[currentKey]\n\t\t\t\t\t\t\t\t}, { abortEarly: true }).issues : discriminatorSchema.type !== \"exact_optional\" && discriminatorSchema.type !== \"optional\" && discriminatorSchema.type !== \"nullish\") {\n\t\t\t\t\t\t\t\t\tkeysAreValid = false;\n\t\t\t\t\t\t\t\t\tif (invalidDiscriminatorKey !== currentKey && (maxDiscriminatorPriority < currentPriority || maxDiscriminatorPriority === currentPriority && currentKey in input && !(invalidDiscriminatorKey in input))) {\n\t\t\t\t\t\t\t\t\t\tmaxDiscriminatorPriority = currentPriority;\n\t\t\t\t\t\t\t\t\t\tinvalidDiscriminatorKey = currentKey;\n\t\t\t\t\t\t\t\t\t\texpectedDiscriminators = [];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif (invalidDiscriminatorKey === currentKey) expectedDiscriminators.push(schema.entries[currentKey].expects);\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcurrentPriority++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (keysAreValid) {\n\t\t\t\t\t\t\t\tconst optionDataset = schema[\"~run\"]({ value: input }, config$1);\n\t\t\t\t\t\t\t\tif (!outputDataset || !outputDataset.typed && optionDataset.typed) outputDataset = optionDataset;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (outputDataset && !outputDataset.issues) break;\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tparseOptions(this, new Set([this.key]));\n\t\t\t\tif (outputDataset) return outputDataset;\n\t\t\t\t_addIssue(this, \"type\", dataset, config$1, {\n\t\t\t\t\tinput: input[invalidDiscriminatorKey],\n\t\t\t\t\texpected: /* @__PURE__ */ _joinExpects(expectedDiscriminators, \"|\"),\n\t\t\t\t\tpath: [{\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\tinput,\n\t\t\t\t\t\tkey: invalidDiscriminatorKey,\n\t\t\t\t\t\tvalue: input[invalidDiscriminatorKey]\n\t\t\t\t\t}]\n\t\t\t\t});\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/variant/variantAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction variantAsync(key, options, message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"variant\",\n\t\treference: variantAsync,\n\t\texpects: \"Object\",\n\t\tasync: true,\n\t\tkey,\n\t\toptions,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input && typeof input === \"object\") {\n\t\t\t\tlet outputDataset;\n\t\t\t\tlet maxDiscriminatorPriority = 0;\n\t\t\t\tlet invalidDiscriminatorKey = this.key;\n\t\t\t\tlet expectedDiscriminators = [];\n\t\t\t\tconst parseOptions = async (variant$1, allKeys) => {\n\t\t\t\t\tfor (const schema of variant$1.options) {\n\t\t\t\t\t\tif (schema.type === \"variant\") await parseOptions(schema, new Set(allKeys).add(schema.key));\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tlet keysAreValid = true;\n\t\t\t\t\t\t\tlet currentPriority = 0;\n\t\t\t\t\t\t\tfor (const currentKey of allKeys) {\n\t\t\t\t\t\t\t\tconst discriminatorSchema = schema.entries[currentKey];\n\t\t\t\t\t\t\t\tif (currentKey in input ? (await discriminatorSchema[\"~run\"]({\n\t\t\t\t\t\t\t\t\ttyped: false,\n\t\t\t\t\t\t\t\t\tvalue: input[currentKey]\n\t\t\t\t\t\t\t\t}, { abortEarly: true })).issues : discriminatorSchema.type !== \"exact_optional\" && discriminatorSchema.type !== \"optional\" && discriminatorSchema.type !== \"nullish\") {\n\t\t\t\t\t\t\t\t\tkeysAreValid = false;\n\t\t\t\t\t\t\t\t\tif (invalidDiscriminatorKey !== currentKey && (maxDiscriminatorPriority < currentPriority || maxDiscriminatorPriority === currentPriority && currentKey in input && !(invalidDiscriminatorKey in input))) {\n\t\t\t\t\t\t\t\t\t\tmaxDiscriminatorPriority = currentPriority;\n\t\t\t\t\t\t\t\t\t\tinvalidDiscriminatorKey = currentKey;\n\t\t\t\t\t\t\t\t\t\texpectedDiscriminators = [];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif (invalidDiscriminatorKey === currentKey) expectedDiscriminators.push(schema.entries[currentKey].expects);\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcurrentPriority++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (keysAreValid) {\n\t\t\t\t\t\t\t\tconst optionDataset = await schema[\"~run\"]({ value: input }, config$1);\n\t\t\t\t\t\t\t\tif (!outputDataset || !outputDataset.typed && optionDataset.typed) outputDataset = optionDataset;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (outputDataset && !outputDataset.issues) break;\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tawait parseOptions(this, new Set([this.key]));\n\t\t\t\tif (outputDataset) return outputDataset;\n\t\t\t\t_addIssue(this, \"type\", dataset, config$1, {\n\t\t\t\t\tinput: input[invalidDiscriminatorKey],\n\t\t\t\t\texpected: /* @__PURE__ */ _joinExpects(expectedDiscriminators, \"|\"),\n\t\t\t\t\tpath: [{\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\tinput,\n\t\t\t\t\t\tkey: invalidDiscriminatorKey,\n\t\t\t\t\t\tvalue: input[invalidDiscriminatorKey]\n\t\t\t\t\t}]\n\t\t\t\t});\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/schemas/void/void.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction void_(message$1) {\n\treturn {\n\t\tkind: \"schema\",\n\t\ttype: \"void\",\n\t\treference: void_,\n\t\texpects: \"void\",\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value === void 0) dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/methods/keyof/keyof.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction keyof(schema, message$1) {\n\treturn /* @__PURE__ */ picklist(Object.keys(schema.entries), message$1);\n}\n\n//#endregion\n//#region src/methods/message/message.ts\n/**\n* Changes the local message configuration of a schema.\n*\n* @param schema The schema to configure.\n* @param message_ The error message.\n*\n* @returns The configured schema.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction message(schema, message_) {\n\treturn {\n\t\t...schema,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\treturn schema[\"~run\"](dataset, {\n\t\t\t\t...config$1,\n\t\t\t\tmessage: message_\n\t\t\t});\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/methods/omit/omit.ts\n/**\n* Creates a modified copy of an object schema that does not contain the\n* selected entries.\n*\n* @param schema The schema to omit from.\n* @param keys The selected entries.\n*\n* @returns An object schema.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction omit(schema, keys) {\n\tconst entries$1 = { ...schema.entries };\n\tfor (const key of keys) delete entries$1[key];\n\treturn {\n\t\t...schema,\n\t\tentries: entries$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/methods/parse/parse.ts\n/**\n* Parses an unknown input based on a schema.\n*\n* @param schema The schema to be used.\n* @param input The input to be parsed.\n* @param config The parse configuration.\n*\n* @returns The parsed input.\n*/\nfunction parse(schema, input, config$1) {\n\tconst dataset = schema[\"~run\"]({ value: input }, /* @__PURE__ */ getGlobalConfig(config$1));\n\tif (dataset.issues) throw new ValiError(dataset.issues);\n\treturn dataset.value;\n}\n\n//#endregion\n//#region src/methods/parse/parseAsync.ts\n/**\n* Parses an unknown input based on a schema.\n*\n* @param schema The schema to be used.\n* @param input The input to be parsed.\n* @param config The parse configuration.\n*\n* @returns The parsed input.\n*/\nasync function parseAsync(schema, input, config$1) {\n\tconst dataset = await schema[\"~run\"]({ value: input }, /* @__PURE__ */ getGlobalConfig(config$1));\n\tif (dataset.issues) throw new ValiError(dataset.issues);\n\treturn dataset.value;\n}\n\n//#endregion\n//#region src/methods/parser/parser.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction parser(schema, config$1) {\n\tconst func = (input) => parse(schema, input, config$1);\n\tfunc.schema = schema;\n\tfunc.config = config$1;\n\treturn func;\n}\n\n//#endregion\n//#region src/methods/parser/parserAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction parserAsync(schema, config$1) {\n\tconst func = (input) => parseAsync(schema, input, config$1);\n\tfunc.schema = schema;\n\tfunc.config = config$1;\n\treturn func;\n}\n\n//#endregion\n//#region src/methods/partial/partial.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction partial(schema, keys) {\n\tconst entries$1 = {};\n\tfor (const key in schema.entries) entries$1[key] = !keys || keys.includes(key) ? /* @__PURE__ */ optional(schema.entries[key]) : schema.entries[key];\n\treturn {\n\t\t...schema,\n\t\tentries: entries$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/methods/partial/partialAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction partialAsync(schema, keys) {\n\tconst entries$1 = {};\n\tfor (const key in schema.entries) entries$1[key] = !keys || keys.includes(key) ? /* @__PURE__ */ optionalAsync(schema.entries[key]) : schema.entries[key];\n\treturn {\n\t\t...schema,\n\t\tentries: entries$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/methods/pick/pick.ts\n/**\n* Creates a modified copy of an object schema that contains only the selected\n* entries.\n*\n* @param schema The schema to pick from.\n* @param keys The selected entries.\n*\n* @returns An object schema.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction pick(schema, keys) {\n\tconst entries$1 = {};\n\tfor (const key of keys) entries$1[key] = schema.entries[key];\n\treturn {\n\t\t...schema,\n\t\tentries: entries$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/methods/pipe/pipe.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction pipe(...pipe$1) {\n\treturn {\n\t\t...pipe$1[0],\n\t\tpipe: pipe$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tfor (const item of pipe$1) if (item.kind !== \"metadata\") {\n\t\t\t\tif (dataset.issues && (item.kind === \"schema\" || item.kind === \"transformation\")) {\n\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (!dataset.issues || !config$1.abortEarly && !config$1.abortPipeEarly) dataset = item[\"~run\"](dataset, config$1);\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/methods/pipe/pipeAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction pipeAsync(...pipe$1) {\n\treturn {\n\t\t...pipe$1[0],\n\t\tpipe: pipe$1,\n\t\tasync: true,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t},\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tfor (const item of pipe$1) if (item.kind !== \"metadata\") {\n\t\t\t\tif (dataset.issues && (item.kind === \"schema\" || item.kind === \"transformation\")) {\n\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (!dataset.issues || !config$1.abortEarly && !config$1.abortPipeEarly) dataset = await item[\"~run\"](dataset, config$1);\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/methods/required/required.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction required(schema, arg2, arg3) {\n\tconst keys = Array.isArray(arg2) ? arg2 : void 0;\n\tconst message$1 = Array.isArray(arg2) ? arg3 : arg2;\n\tconst entries$1 = {};\n\tfor (const key in schema.entries) entries$1[key] = !keys || keys.includes(key) ? /* @__PURE__ */ nonOptional(schema.entries[key], message$1) : schema.entries[key];\n\treturn {\n\t\t...schema,\n\t\tentries: entries$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/methods/required/requiredAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction requiredAsync(schema, arg2, arg3) {\n\tconst keys = Array.isArray(arg2) ? arg2 : void 0;\n\tconst message$1 = Array.isArray(arg2) ? arg3 : arg2;\n\tconst entries$1 = {};\n\tfor (const key in schema.entries) entries$1[key] = !keys || keys.includes(key) ? /* @__PURE__ */ nonOptionalAsync(schema.entries[key], message$1) : schema.entries[key];\n\treturn {\n\t\t...schema,\n\t\tentries: entries$1,\n\t\tget \"~standard\"() {\n\t\t\treturn /* @__PURE__ */ _getStandardProps(this);\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/methods/safeParse/safeParse.ts\n/**\n* Parses an unknown input based on a schema.\n*\n* @param schema The schema to be used.\n* @param input The input to be parsed.\n* @param config The parse configuration.\n*\n* @returns The parse result.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction safeParse(schema, input, config$1) {\n\tconst dataset = schema[\"~run\"]({ value: input }, /* @__PURE__ */ getGlobalConfig(config$1));\n\treturn {\n\t\ttyped: dataset.typed,\n\t\tsuccess: !dataset.issues,\n\t\toutput: dataset.value,\n\t\tissues: dataset.issues\n\t};\n}\n\n//#endregion\n//#region src/methods/safeParse/safeParseAsync.ts\n/**\n* Parses an unknown input based on a schema.\n*\n* @param schema The schema to be used.\n* @param input The input to be parsed.\n* @param config The parse configuration.\n*\n* @returns The parse result.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nasync function safeParseAsync(schema, input, config$1) {\n\tconst dataset = await schema[\"~run\"]({ value: input }, /* @__PURE__ */ getGlobalConfig(config$1));\n\treturn {\n\t\ttyped: dataset.typed,\n\t\tsuccess: !dataset.issues,\n\t\toutput: dataset.value,\n\t\tissues: dataset.issues\n\t};\n}\n\n//#endregion\n//#region src/methods/safeParser/safeParser.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction safeParser(schema, config$1) {\n\tconst func = (input) => /* @__PURE__ */ safeParse(schema, input, config$1);\n\tfunc.schema = schema;\n\tfunc.config = config$1;\n\treturn func;\n}\n\n//#endregion\n//#region src/methods/safeParser/safeParserAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction safeParserAsync(schema, config$1) {\n\tconst func = (input) => /* @__PURE__ */ safeParseAsync(schema, input, config$1);\n\tfunc.schema = schema;\n\tfunc.config = config$1;\n\treturn func;\n}\n\n//#endregion\n//#region src/methods/summarize/summarize.ts\n/**\n* Summarize the error messages of issues in a pretty-printable multi-line string.\n*\n* @param issues The list of issues.\n*\n* @returns A summary of the issues.\n*\n* @beta\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction summarize(issues) {\n\tlet summary = \"\";\n\tfor (const issue of issues) {\n\t\tif (summary) summary += \"\\n\";\n\t\tsummary += `× ${issue.message}`;\n\t\tconst dotPath = /* @__PURE__ */ getDotPath(issue);\n\t\tif (dotPath) summary += `\\n → at ${dotPath}`;\n\t}\n\treturn summary;\n}\n\n//#endregion\n//#region src/methods/unwrap/unwrap.ts\n/**\n* Unwraps the wrapped schema.\n*\n* @param schema The schema to be unwrapped.\n*\n* @returns The unwrapped schema.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction unwrap(schema) {\n\treturn schema.wrapped;\n}\n\n//#endregion\nexport { BASE64_REGEX, BIC_REGEX, CUID2_REGEX, DECIMAL_REGEX, DIGITS_REGEX, EMAIL_REGEX, EMOJI_REGEX, HEXADECIMAL_REGEX, HEX_COLOR_REGEX, IMEI_REGEX, IPV4_REGEX, IPV6_REGEX, IP_REGEX, ISO_DATE_REGEX, ISO_DATE_TIME_REGEX, ISO_TIMESTAMP_REGEX, ISO_TIME_REGEX, ISO_TIME_SECOND_REGEX, ISO_WEEK_REGEX, MAC48_REGEX, MAC64_REGEX, MAC_REGEX, NANO_ID_REGEX, OCTAL_REGEX, RFC_EMAIL_REGEX, SLUG_REGEX, ULID_REGEX, UUID_REGEX, ValiError, _addIssue, _getByteCount, _getGraphemeCount, _getLastMetadata, _getStandardProps, _getWordCount, _isLuhnAlgo, _isValidObjectKey, _joinExpects, _stringify, any, args, argsAsync, array, arrayAsync, assert, awaitAsync, base64, bic, bigint, blob, boolean, brand, bytes, check, checkAsync, checkItems, checkItemsAsync, config, creditCard, cuid2, custom, customAsync, date, decimal, deleteGlobalConfig, deleteGlobalMessage, deleteSchemaMessage, deleteSpecificMessage, description, digits, email, emoji, empty, endsWith, entries, entriesFromList, entriesFromObjects, enum_ as enum, enum_, everyItem, exactOptional, exactOptionalAsync, examples, excludes, fallback, fallbackAsync, file, filterItems, findItem, finite, flatten, flavor, forward, forwardAsync, function_ as function, function_, getDefault, getDefaults, getDefaultsAsync, getDescription, getDotPath, getExamples, getFallback, getFallbacks, getFallbacksAsync, getGlobalConfig, getGlobalMessage, getMetadata, getSchemaMessage, getSpecificMessage, getTitle, graphemes, gtValue, hash, hexColor, hexadecimal, imei, includes, instance, integer, intersect, intersectAsync, ip, ipv4, ipv6, is, isOfKind, isOfType, isValiError, isoDate, isoDateTime, isoTime, isoTimeSecond, isoTimestamp, isoWeek, keyof, lazy, lazyAsync, length, literal, looseObject, looseObjectAsync, looseTuple, looseTupleAsync, ltValue, mac, mac48, mac64, map, mapAsync, mapItems, maxBytes, maxEntries, maxGraphemes, maxLength, maxSize, maxValue, maxWords, message, metadata, mimeType, minBytes, minEntries, minGraphemes, minLength, minSize, minValue, minWords, multipleOf, nan, nanoid, never, nonEmpty, nonNullable, nonNullableAsync, nonNullish, nonNullishAsync, nonOptional, nonOptionalAsync, normalize, notBytes, notEntries, notGraphemes, notLength, notSize, notValue, notValues, notWords, null_ as null, null_, nullable, nullableAsync, nullish, nullishAsync, number, object, objectAsync, objectWithRest, objectWithRestAsync, octal, omit, optional, optionalAsync, parse, parseAsync, parseJson, parser, parserAsync, partial, partialAsync, partialCheck, partialCheckAsync, pick, picklist, pipe, pipeAsync, promise, rawCheck, rawCheckAsync, rawTransform, rawTransformAsync, readonly, record, recordAsync, reduceItems, regex, required, requiredAsync, returns, returnsAsync, rfcEmail, safeInteger, safeParse, safeParseAsync, safeParser, safeParserAsync, set, setAsync, setGlobalConfig, setGlobalMessage, setSchemaMessage, setSpecificMessage, size, slug, someItem, sortItems, startsWith, strictObject, strictObjectAsync, strictTuple, strictTupleAsync, string, stringifyJson, summarize, symbol, title, toBigint, toBoolean, toDate, toLowerCase, toMaxValue, toMinValue, toNumber, toString, toUpperCase, transform, transformAsync, trim, trimEnd, trimStart, tuple, tupleAsync, tupleWithRest, tupleWithRestAsync, ulid, undefined_ as undefined, undefined_, undefinedable, undefinedableAsync, union, unionAsync, unknown, unwrap, url, uuid, value, values, variant, variantAsync, void_ as void, void_, words };","import type {\n CreateTenantResponse,\n IdTokenClaims,\n OidcCallbackParams,\n ScimUser,\n StandardSchemaV1,\n TokenResponse,\n} from '@enterprisestandard/react';\nimport * as v from 'valibot';\n\n/**\n * Pre-built Valibot validators for OIDC/SSO flows\n *\n * These validators implement the StandardSchemaV1 interface and can be used\n * directly in SSOHandlerConfig.validation\n *\n * @example\n * ```typescript\n * import { createValibotValidators } from '@enterprisestandard/react-validators-valibot';\n *\n * const validators = createValibotValidators();\n *\n * const ssoConfig: SSOHandlerConfig = {\n * loginUrl: '/api/auth/login',\n * validation: validators,\n * };\n * ```\n */\nexport function createValibotValidators() {\n const oidcCallbackParamsSchema = v.object({\n code: v.string(),\n state: v.optional(v.string()),\n session_state: v.optional(v.string()),\n error: v.optional(v.string()),\n error_description: v.optional(v.string()),\n error_uri: v.optional(v.string()),\n iss: v.optional(v.string()),\n });\n\n const idTokenClaimsSchema = v.looseObject({\n sub: v.optional(v.string()),\n iss: v.optional(v.string()),\n aud: v.optional(v.string()),\n exp: v.optional(v.number()),\n iat: v.optional(v.number()),\n sid: v.optional(v.string()),\n name: v.optional(v.string()),\n email: v.optional(v.pipe(v.string(), v.email())),\n preferred_username: v.optional(v.string()),\n picture: v.optional(v.pipe(v.string(), v.url())),\n });\n\n const tokenResponseSchema = v.object({\n access_token: v.string(),\n id_token: v.string(),\n refresh_token: v.optional(v.string()),\n token_type: v.string(),\n expires_in: v.optional(v.number()),\n scope: v.optional(v.string()),\n refresh_expires_in: v.optional(v.number()),\n session_state: v.optional(v.string()),\n expires: v.optional(v.string()),\n });\n\n return {\n callbackParams: oidcCallbackParamsSchema as unknown as StandardSchemaV1<unknown, OidcCallbackParams>,\n idTokenClaims: idTokenClaimsSchema as unknown as StandardSchemaV1<unknown, IdTokenClaims>,\n tokenResponse: tokenResponseSchema as unknown as StandardSchemaV1<unknown, TokenResponse>,\n };\n}\n\n/**\n * Individual Valibot schema factories for custom usage\n */\nexport const valibotValidators = {\n /**\n * Creates a Valibot validator for OIDC callback parameters\n *\n * @example\n * ```typescript\n * import { valibotValidators } from '@enterprisestandard/react-validators-valibot';\n *\n * const callbackParams = valibotValidators.oidcCallbackParams();\n * ```\n */\n oidcCallbackParams: () =>\n v.object({\n code: v.string(),\n state: v.optional(v.string()),\n session_state: v.optional(v.string()),\n error: v.optional(v.string()),\n error_description: v.optional(v.string()),\n error_uri: v.optional(v.string()),\n iss: v.optional(v.string()),\n }) as unknown as StandardSchemaV1<unknown, OidcCallbackParams>,\n\n /**\n * Creates a Valibot validator for ID token claims\n * Use v.object() with looseObject to extend with custom claims\n *\n * @example Extending with custom claims\n * ```typescript\n * import { valibotValidators } from '@enterprisestandard/react-validators-valibot';\n * import * as v from 'valibot';\n *\n * const customClaimsSchema = v.looseObject({\n * ...(valibotValidators.idTokenClaims() as any).entries,\n * custom_claim: v.string(),\n * roles: v.array(v.string()),\n * });\n * ```\n */\n idTokenClaims: () =>\n v.looseObject({\n sub: v.optional(v.string()),\n iss: v.optional(v.string()),\n aud: v.optional(v.string()),\n exp: v.optional(v.number()),\n iat: v.optional(v.number()),\n sid: v.optional(v.string()),\n name: v.optional(v.string()),\n email: v.optional(v.pipe(v.string(), v.email())),\n preferred_username: v.optional(v.string()),\n picture: v.optional(v.pipe(v.string(), v.url())),\n }) as unknown as StandardSchemaV1<unknown, IdTokenClaims>,\n\n /**\n * Creates a Valibot validator for token responses from IdP\n *\n * @example\n * ```typescript\n * import { valibotValidators } from '@enterprisestandard/react-validators-valibot';\n *\n * const tokenResponse = valibotValidators.tokenResponse();\n * ```\n */\n tokenResponse: () =>\n v.object({\n access_token: v.string(),\n id_token: v.string(),\n refresh_token: v.optional(v.string()),\n token_type: v.string(),\n expires_in: v.optional(v.number()),\n scope: v.optional(v.string()),\n refresh_expires_in: v.optional(v.number()),\n session_state: v.optional(v.string()),\n expires: v.optional(v.string()),\n }) as unknown as StandardSchemaV1<unknown, TokenResponse>,\n\n /**\n * Creates a Valibot validator for SCIM User resources\n * Use v.object() to extend with custom SCIM extensions\n *\n * @example\n * ```typescript\n * import { valibotValidators } from '@enterprisestandard/react-validators-valibot';\n *\n * const userValidator = valibotValidators.scimUser();\n * ```\n *\n * @example Extending with custom SCIM schema extensions\n * ```typescript\n * import { valibotValidators } from '@enterprisestandard/react-validators-valibot';\n * import * as v from 'valibot';\n *\n * const customUserSchema = v.object({\n * ...(valibotValidators.scimUser() as any).entries,\n * 'urn:ietf:params:scim:schemas:extension:custom:2.0:User': v.object({\n * customField: v.string(),\n * }),\n * });\n * ```\n */\n scimUser: () => {\n const nameSchema = v.object({\n formatted: v.optional(v.string()),\n familyName: v.optional(v.string()),\n givenName: v.optional(v.string()),\n middleName: v.optional(v.string()),\n honorificPrefix: v.optional(v.string()),\n honorificSuffix: v.optional(v.string()),\n });\n\n const emailSchema = v.object({\n value: v.pipe(v.string(), v.email()),\n display: v.optional(v.string()),\n type: v.optional(v.string()),\n primary: v.optional(v.boolean()),\n });\n\n const phoneNumberSchema = v.object({\n value: v.string(),\n display: v.optional(v.string()),\n type: v.optional(v.string()),\n primary: v.optional(v.boolean()),\n });\n\n const addressSchema = v.object({\n formatted: v.optional(v.string()),\n streetAddress: v.optional(v.string()),\n locality: v.optional(v.string()),\n region: v.optional(v.string()),\n postalCode: v.optional(v.string()),\n country: v.optional(v.string()),\n type: v.optional(v.string()),\n primary: v.optional(v.boolean()),\n });\n\n const groupSchema = v.object({\n value: v.string(),\n $ref: v.optional(v.string()),\n display: v.optional(v.string()),\n type: v.optional(v.string()),\n });\n\n const roleSchema = v.object({\n value: v.string(),\n display: v.optional(v.string()),\n type: v.optional(v.string()),\n primary: v.optional(v.boolean()),\n });\n\n const enterpriseUserSchema = v.object({\n employeeNumber: v.optional(v.string()),\n costCenter: v.optional(v.string()),\n organization: v.optional(v.string()),\n division: v.optional(v.string()),\n department: v.optional(v.string()),\n manager: v.optional(\n v.object({\n value: v.optional(v.string()),\n $ref: v.optional(v.string()),\n displayName: v.optional(v.string()),\n }),\n ),\n });\n\n return v.object({\n id: v.optional(v.string()),\n externalId: v.optional(v.string()),\n meta: v.optional(\n v.object({\n resourceType: v.optional(v.string()),\n created: v.optional(v.string()),\n lastModified: v.optional(v.string()),\n location: v.optional(v.string()),\n version: v.optional(v.string()),\n }),\n ),\n userName: v.string(),\n name: v.optional(nameSchema),\n displayName: v.optional(v.string()),\n nickName: v.optional(v.string()),\n profileUrl: v.optional(v.pipe(v.string(), v.url())),\n title: v.optional(v.string()),\n userType: v.optional(v.string()),\n preferredLanguage: v.optional(v.string()),\n locale: v.optional(v.string()),\n timezone: v.optional(v.string()),\n active: v.optional(v.boolean()),\n password: v.optional(v.string()),\n emails: v.optional(v.array(emailSchema)),\n phoneNumbers: v.optional(v.array(phoneNumberSchema)),\n ims: v.optional(\n v.array(\n v.object({\n value: v.string(),\n display: v.optional(v.string()),\n type: v.optional(v.string()),\n primary: v.optional(v.boolean()),\n }),\n ),\n ),\n photos: v.optional(\n v.array(\n v.object({\n value: v.string(),\n display: v.optional(v.string()),\n type: v.optional(v.string()),\n primary: v.optional(v.boolean()),\n }),\n ),\n ),\n addresses: v.optional(v.array(addressSchema)),\n groups: v.optional(v.array(groupSchema)),\n entitlements: v.optional(\n v.array(\n v.object({\n value: v.string(),\n display: v.optional(v.string()),\n type: v.optional(v.string()),\n primary: v.optional(v.boolean()),\n }),\n ),\n ),\n roles: v.optional(v.array(roleSchema)),\n x509Certificates: v.optional(\n v.array(\n v.object({\n value: v.string(),\n display: v.optional(v.string()),\n type: v.optional(v.string()),\n primary: v.optional(v.boolean()),\n }),\n ),\n ),\n 'urn:ietf:params:scim:schemas:extension:enterprise:2.0:User': v.optional(enterpriseUserSchema),\n schemas: v.optional(v.array(v.string())),\n }) as unknown as StandardSchemaV1<unknown, ScimUser>;\n },\n\n /**\n * Creates a Valibot validator for tenant creation responses\n *\n * @example\n * ```typescript\n * import { valibotValidators } from '@enterprisestandard/react-validators-valibot';\n *\n * const tenantResponse = valibotValidators.createTenantResponse();\n * ```\n */\n createTenantResponse: () =>\n v.object({\n tenantUrl: v.pipe(v.string(), v.url()),\n status: v.picklist(['pending', 'processing', 'completed', 'failed']),\n }) as unknown as StandardSchemaV1<unknown, CreateTenantResponse>,\n};\n","export var util;\n(function (util) {\n util.assertEqual = (_) => { };\n function assertIs(_arg) { }\n util.assertIs = assertIs;\n function assertNever(_x) {\n throw new Error();\n }\n util.assertNever = assertNever;\n util.arrayToEnum = (items) => {\n const obj = {};\n for (const item of items) {\n obj[item] = item;\n }\n return obj;\n };\n util.getValidEnumValues = (obj) => {\n const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n const filtered = {};\n for (const k of validKeys) {\n filtered[k] = obj[k];\n }\n return util.objectValues(filtered);\n };\n util.objectValues = (obj) => {\n return util.objectKeys(obj).map(function (e) {\n return obj[e];\n });\n };\n util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban\n : (object) => {\n const keys = [];\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n return keys;\n };\n util.find = (arr, checker) => {\n for (const item of arr) {\n if (checker(item))\n return item;\n }\n return undefined;\n };\n util.isInteger = typeof Number.isInteger === \"function\"\n ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n : (val) => typeof val === \"number\" && Number.isFinite(val) && Math.floor(val) === val;\n function joinValues(array, separator = \" | \") {\n return array.map((val) => (typeof val === \"string\" ? `'${val}'` : val)).join(separator);\n }\n util.joinValues = joinValues;\n util.jsonStringifyReplacer = (_, value) => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n };\n})(util || (util = {}));\nexport var objectUtil;\n(function (objectUtil) {\n objectUtil.mergeShapes = (first, second) => {\n return {\n ...first,\n ...second, // second overwrites first\n };\n };\n})(objectUtil || (objectUtil = {}));\nexport const ZodParsedType = util.arrayToEnum([\n \"string\",\n \"nan\",\n \"number\",\n \"integer\",\n \"float\",\n \"boolean\",\n \"date\",\n \"bigint\",\n \"symbol\",\n \"function\",\n \"undefined\",\n \"null\",\n \"array\",\n \"object\",\n \"unknown\",\n \"promise\",\n \"void\",\n \"never\",\n \"map\",\n \"set\",\n]);\nexport const getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return ZodParsedType.undefined;\n case \"string\":\n return ZodParsedType.string;\n case \"number\":\n return Number.isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\n case \"boolean\":\n return ZodParsedType.boolean;\n case \"function\":\n return ZodParsedType.function;\n case \"bigint\":\n return ZodParsedType.bigint;\n case \"symbol\":\n return ZodParsedType.symbol;\n case \"object\":\n if (Array.isArray(data)) {\n return ZodParsedType.array;\n }\n if (data === null) {\n return ZodParsedType.null;\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return ZodParsedType.promise;\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return ZodParsedType.map;\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return ZodParsedType.set;\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return ZodParsedType.date;\n }\n return ZodParsedType.object;\n default:\n return ZodParsedType.unknown;\n }\n};\n","import { util } from \"./helpers/util.js\";\nexport const ZodIssueCode = util.arrayToEnum([\n \"invalid_type\",\n \"invalid_literal\",\n \"custom\",\n \"invalid_union\",\n \"invalid_union_discriminator\",\n \"invalid_enum_value\",\n \"unrecognized_keys\",\n \"invalid_arguments\",\n \"invalid_return_type\",\n \"invalid_date\",\n \"invalid_string\",\n \"too_small\",\n \"too_big\",\n \"invalid_intersection_types\",\n \"not_multiple_of\",\n \"not_finite\",\n]);\nexport const quotelessJson = (obj) => {\n const json = JSON.stringify(obj, null, 2);\n return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nexport class ZodError extends Error {\n get errors() {\n return this.issues;\n }\n constructor(issues) {\n super();\n this.issues = [];\n this.addIssue = (sub) => {\n this.issues = [...this.issues, sub];\n };\n this.addIssues = (subs = []) => {\n this.issues = [...this.issues, ...subs];\n };\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n // eslint-disable-next-line ban/ban\n Object.setPrototypeOf(this, actualProto);\n }\n else {\n this.__proto__ = actualProto;\n }\n this.name = \"ZodError\";\n this.issues = issues;\n }\n format(_mapper) {\n const mapper = _mapper ||\n function (issue) {\n return issue.message;\n };\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\") {\n issue.unionErrors.map(processError);\n }\n else if (issue.code === \"invalid_return_type\") {\n processError(issue.returnTypeError);\n }\n else if (issue.code === \"invalid_arguments\") {\n processError(issue.argumentsError);\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n // if (typeof el === \"string\") {\n // curr[el] = curr[el] || { _errors: [] };\n // } else if (typeof el === \"number\") {\n // const errorArray: any = [];\n // errorArray._errors = [];\n // curr[el] = curr[el] || errorArray;\n // }\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(this);\n return fieldErrors;\n }\n static assert(value) {\n if (!(value instanceof ZodError)) {\n throw new Error(`Not a ZodError: ${value}`);\n }\n }\n toString() {\n return this.message;\n }\n get message() {\n return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2);\n }\n get isEmpty() {\n return this.issues.length === 0;\n }\n flatten(mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of this.issues) {\n if (sub.path.length > 0) {\n const firstEl = sub.path[0];\n fieldErrors[firstEl] = fieldErrors[firstEl] || [];\n fieldErrors[firstEl].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n }\n get formErrors() {\n return this.flatten();\n }\n}\nZodError.create = (issues) => {\n const error = new ZodError(issues);\n return error;\n};\n","import { ZodIssueCode } from \"../ZodError.js\";\nimport { util, ZodParsedType } from \"../helpers/util.js\";\nconst errorMap = (issue, _ctx) => {\n let message;\n switch (issue.code) {\n case ZodIssueCode.invalid_type:\n if (issue.received === ZodParsedType.undefined) {\n message = \"Required\";\n }\n else {\n message = `Expected ${issue.expected}, received ${issue.received}`;\n }\n break;\n case ZodIssueCode.invalid_literal:\n message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`;\n break;\n case ZodIssueCode.unrecognized_keys:\n message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, \", \")}`;\n break;\n case ZodIssueCode.invalid_union:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_union_discriminator:\n message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;\n break;\n case ZodIssueCode.invalid_enum_value:\n message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;\n break;\n case ZodIssueCode.invalid_arguments:\n message = `Invalid function arguments`;\n break;\n case ZodIssueCode.invalid_return_type:\n message = `Invalid function return type`;\n break;\n case ZodIssueCode.invalid_date:\n message = `Invalid date`;\n break;\n case ZodIssueCode.invalid_string:\n if (typeof issue.validation === \"object\") {\n if (\"includes\" in issue.validation) {\n message = `Invalid input: must include \"${issue.validation.includes}\"`;\n if (typeof issue.validation.position === \"number\") {\n message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;\n }\n }\n else if (\"startsWith\" in issue.validation) {\n message = `Invalid input: must start with \"${issue.validation.startsWith}\"`;\n }\n else if (\"endsWith\" in issue.validation) {\n message = `Invalid input: must end with \"${issue.validation.endsWith}\"`;\n }\n else {\n util.assertNever(issue.validation);\n }\n }\n else if (issue.validation !== \"regex\") {\n message = `Invalid ${issue.validation}`;\n }\n else {\n message = \"Invalid\";\n }\n break;\n case ZodIssueCode.too_small:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"bigint\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${new Date(Number(issue.minimum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.too_big:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"bigint\")\n message = `BigInt must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly` : issue.inclusive ? `smaller than or equal to` : `smaller than`} ${new Date(Number(issue.maximum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.custom:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_intersection_types:\n message = `Intersection results could not be merged`;\n break;\n case ZodIssueCode.not_multiple_of:\n message = `Number must be a multiple of ${issue.multipleOf}`;\n break;\n case ZodIssueCode.not_finite:\n message = \"Number must be finite\";\n break;\n default:\n message = _ctx.defaultError;\n util.assertNever(issue);\n }\n return { message };\n};\nexport default errorMap;\n","import defaultErrorMap from \"./locales/en.js\";\nlet overrideErrorMap = defaultErrorMap;\nexport { defaultErrorMap };\nexport function setErrorMap(map) {\n overrideErrorMap = map;\n}\nexport function getErrorMap() {\n return overrideErrorMap;\n}\n","import { getErrorMap } from \"../errors.js\";\nimport defaultErrorMap from \"../locales/en.js\";\nexport const makeIssue = (params) => {\n const { data, path, errorMaps, issueData } = params;\n const fullPath = [...path, ...(issueData.path || [])];\n const fullIssue = {\n ...issueData,\n path: fullPath,\n };\n if (issueData.message !== undefined) {\n return {\n ...issueData,\n path: fullPath,\n message: issueData.message,\n };\n }\n let errorMessage = \"\";\n const maps = errorMaps\n .filter((m) => !!m)\n .slice()\n .reverse();\n for (const map of maps) {\n errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message;\n }\n return {\n ...issueData,\n path: fullPath,\n message: errorMessage,\n };\n};\nexport const EMPTY_PATH = [];\nexport function addIssueToContext(ctx, issueData) {\n const overrideMap = getErrorMap();\n const issue = makeIssue({\n issueData: issueData,\n data: ctx.data,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap, // contextual error map is first priority\n ctx.schemaErrorMap, // then schema-bound map if available\n overrideMap, // then global override map\n overrideMap === defaultErrorMap ? undefined : defaultErrorMap, // then global default map\n ].filter((x) => !!x),\n });\n ctx.common.issues.push(issue);\n}\nexport class ParseStatus {\n constructor() {\n this.value = \"valid\";\n }\n dirty() {\n if (this.value === \"valid\")\n this.value = \"dirty\";\n }\n abort() {\n if (this.value !== \"aborted\")\n this.value = \"aborted\";\n }\n static mergeArray(status, results) {\n const arrayValue = [];\n for (const s of results) {\n if (s.status === \"aborted\")\n return INVALID;\n if (s.status === \"dirty\")\n status.dirty();\n arrayValue.push(s.value);\n }\n return { status: status.value, value: arrayValue };\n }\n static async mergeObjectAsync(status, pairs) {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n });\n }\n return ParseStatus.mergeObjectSync(status, syncPairs);\n }\n static mergeObjectSync(status, pairs) {\n const finalObject = {};\n for (const pair of pairs) {\n const { key, value } = pair;\n if (key.status === \"aborted\")\n return INVALID;\n if (value.status === \"aborted\")\n return INVALID;\n if (key.status === \"dirty\")\n status.dirty();\n if (value.status === \"dirty\")\n status.dirty();\n if (key.value !== \"__proto__\" && (typeof value.value !== \"undefined\" || pair.alwaysSet)) {\n finalObject[key.value] = value.value;\n }\n }\n return { status: status.value, value: finalObject };\n }\n}\nexport const INVALID = Object.freeze({\n status: \"aborted\",\n});\nexport const DIRTY = (value) => ({ status: \"dirty\", value });\nexport const OK = (value) => ({ status: \"valid\", value });\nexport const isAborted = (x) => x.status === \"aborted\";\nexport const isDirty = (x) => x.status === \"dirty\";\nexport const isValid = (x) => x.status === \"valid\";\nexport const isAsync = (x) => typeof Promise !== \"undefined\" && x instanceof Promise;\n","export {};\n","export var errorUtil;\n(function (errorUtil) {\n errorUtil.errToObj = (message) => typeof message === \"string\" ? { message } : message || {};\n // biome-ignore lint:\n errorUtil.toString = (message) => typeof message === \"string\" ? message : message?.message;\n})(errorUtil || (errorUtil = {}));\n","import { ZodError, ZodIssueCode, } from \"./ZodError.js\";\nimport { defaultErrorMap, getErrorMap } from \"./errors.js\";\nimport { errorUtil } from \"./helpers/errorUtil.js\";\nimport { DIRTY, INVALID, OK, ParseStatus, addIssueToContext, isAborted, isAsync, isDirty, isValid, makeIssue, } from \"./helpers/parseUtil.js\";\nimport { util, ZodParsedType, getParsedType } from \"./helpers/util.js\";\nclass ParseInputLazyPath {\n constructor(parent, value, path, key) {\n this._cachedPath = [];\n this.parent = parent;\n this.data = value;\n this._path = path;\n this._key = key;\n }\n get path() {\n if (!this._cachedPath.length) {\n if (Array.isArray(this._key)) {\n this._cachedPath.push(...this._path, ...this._key);\n }\n else {\n this._cachedPath.push(...this._path, this._key);\n }\n }\n return this._cachedPath;\n }\n}\nconst handleResult = (ctx, result) => {\n if (isValid(result)) {\n return { success: true, data: result.value };\n }\n else {\n if (!ctx.common.issues.length) {\n throw new Error(\"Validation failed but no issues detected.\");\n }\n return {\n success: false,\n get error() {\n if (this._error)\n return this._error;\n const error = new ZodError(ctx.common.issues);\n this._error = error;\n return this._error;\n },\n };\n }\n};\nfunction processCreateParams(params) {\n if (!params)\n return {};\n const { errorMap, invalid_type_error, required_error, description } = params;\n if (errorMap && (invalid_type_error || required_error)) {\n throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n }\n if (errorMap)\n return { errorMap: errorMap, description };\n const customMap = (iss, ctx) => {\n const { message } = params;\n if (iss.code === \"invalid_enum_value\") {\n return { message: message ?? ctx.defaultError };\n }\n if (typeof ctx.data === \"undefined\") {\n return { message: message ?? required_error ?? ctx.defaultError };\n }\n if (iss.code !== \"invalid_type\")\n return { message: ctx.defaultError };\n return { message: message ?? invalid_type_error ?? ctx.defaultError };\n };\n return { errorMap: customMap, description };\n}\nexport class ZodType {\n get description() {\n return this._def.description;\n }\n _getType(input) {\n return getParsedType(input.data);\n }\n _getOrReturnCtx(input, ctx) {\n return (ctx || {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n });\n }\n _processInputParams(input) {\n return {\n status: new ParseStatus(),\n ctx: {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n },\n };\n }\n _parseSync(input) {\n const result = this._parse(input);\n if (isAsync(result)) {\n throw new Error(\"Synchronous parse encountered promise.\");\n }\n return result;\n }\n _parseAsync(input) {\n const result = this._parse(input);\n return Promise.resolve(result);\n }\n parse(data, params) {\n const result = this.safeParse(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n safeParse(data, params) {\n const ctx = {\n common: {\n issues: [],\n async: params?.async ?? false,\n contextualErrorMap: params?.errorMap,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const result = this._parseSync({ data, path: ctx.path, parent: ctx });\n return handleResult(ctx, result);\n }\n \"~validate\"(data) {\n const ctx = {\n common: {\n issues: [],\n async: !!this[\"~standard\"].async,\n },\n path: [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n if (!this[\"~standard\"].async) {\n try {\n const result = this._parseSync({ data, path: [], parent: ctx });\n return isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n };\n }\n catch (err) {\n if (err?.message?.toLowerCase()?.includes(\"encountered\")) {\n this[\"~standard\"].async = true;\n }\n ctx.common = {\n issues: [],\n async: true,\n };\n }\n }\n return this._parseAsync({ data, path: [], parent: ctx }).then((result) => isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n });\n }\n async parseAsync(data, params) {\n const result = await this.safeParseAsync(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n async safeParseAsync(data, params) {\n const ctx = {\n common: {\n issues: [],\n contextualErrorMap: params?.errorMap,\n async: true,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });\n const result = await (isAsync(maybeAsyncResult) ? maybeAsyncResult : Promise.resolve(maybeAsyncResult));\n return handleResult(ctx, result);\n }\n refine(check, message) {\n const getIssueProperties = (val) => {\n if (typeof message === \"string\" || typeof message === \"undefined\") {\n return { message };\n }\n else if (typeof message === \"function\") {\n return message(val);\n }\n else {\n return message;\n }\n };\n return this._refinement((val, ctx) => {\n const result = check(val);\n const setError = () => ctx.addIssue({\n code: ZodIssueCode.custom,\n ...getIssueProperties(val),\n });\n if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n return result.then((data) => {\n if (!data) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n if (!result) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n refinement(check, refinementData) {\n return this._refinement((val, ctx) => {\n if (!check(val)) {\n ctx.addIssue(typeof refinementData === \"function\" ? refinementData(val, ctx) : refinementData);\n return false;\n }\n else {\n return true;\n }\n });\n }\n _refinement(refinement) {\n return new ZodEffects({\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"refinement\", refinement },\n });\n }\n superRefine(refinement) {\n return this._refinement(refinement);\n }\n constructor(def) {\n /** Alias of safeParseAsync */\n this.spa = this.safeParseAsync;\n this._def = def;\n this.parse = this.parse.bind(this);\n this.safeParse = this.safeParse.bind(this);\n this.parseAsync = this.parseAsync.bind(this);\n this.safeParseAsync = this.safeParseAsync.bind(this);\n this.spa = this.spa.bind(this);\n this.refine = this.refine.bind(this);\n this.refinement = this.refinement.bind(this);\n this.superRefine = this.superRefine.bind(this);\n this.optional = this.optional.bind(this);\n this.nullable = this.nullable.bind(this);\n this.nullish = this.nullish.bind(this);\n this.array = this.array.bind(this);\n this.promise = this.promise.bind(this);\n this.or = this.or.bind(this);\n this.and = this.and.bind(this);\n this.transform = this.transform.bind(this);\n this.brand = this.brand.bind(this);\n this.default = this.default.bind(this);\n this.catch = this.catch.bind(this);\n this.describe = this.describe.bind(this);\n this.pipe = this.pipe.bind(this);\n this.readonly = this.readonly.bind(this);\n this.isNullable = this.isNullable.bind(this);\n this.isOptional = this.isOptional.bind(this);\n this[\"~standard\"] = {\n version: 1,\n vendor: \"zod\",\n validate: (data) => this[\"~validate\"](data),\n };\n }\n optional() {\n return ZodOptional.create(this, this._def);\n }\n nullable() {\n return ZodNullable.create(this, this._def);\n }\n nullish() {\n return this.nullable().optional();\n }\n array() {\n return ZodArray.create(this);\n }\n promise() {\n return ZodPromise.create(this, this._def);\n }\n or(option) {\n return ZodUnion.create([this, option], this._def);\n }\n and(incoming) {\n return ZodIntersection.create(this, incoming, this._def);\n }\n transform(transform) {\n return new ZodEffects({\n ...processCreateParams(this._def),\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"transform\", transform },\n });\n }\n default(def) {\n const defaultValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodDefault({\n ...processCreateParams(this._def),\n innerType: this,\n defaultValue: defaultValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n });\n }\n brand() {\n return new ZodBranded({\n typeName: ZodFirstPartyTypeKind.ZodBranded,\n type: this,\n ...processCreateParams(this._def),\n });\n }\n catch(def) {\n const catchValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodCatch({\n ...processCreateParams(this._def),\n innerType: this,\n catchValue: catchValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n });\n }\n describe(description) {\n const This = this.constructor;\n return new This({\n ...this._def,\n description,\n });\n }\n pipe(target) {\n return ZodPipeline.create(this, target);\n }\n readonly() {\n return ZodReadonly.create(this);\n }\n isOptional() {\n return this.safeParse(undefined).success;\n }\n isNullable() {\n return this.safeParse(null).success;\n }\n}\nconst cuidRegex = /^c[^\\s-]{8,}$/i;\nconst cuid2Regex = /^[0-9a-z]+$/;\nconst ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/i;\n// const uuidRegex =\n// /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;\nconst uuidRegex = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/i;\nconst nanoidRegex = /^[a-z0-9_-]{21}$/i;\nconst jwtRegex = /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/;\nconst durationRegex = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn't support unicode\n// const emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n//old email regex\n// const emailRegex = /^(([^<>()[\\].,;:\\s@\"]+(\\.[^<>()[\\].,;:\\s@\"]+)*)|(\".+\"))@((?!-)([^<>()[\\].,;:\\s@\"]+\\.)+[^<>()[\\].,;:\\s@\"]{1,})[^-<>()[\\].,;:\\s@\"]$/i;\n// eslint-disable-next-line\n// const emailRegex =\n// /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\])|(\\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\\.[A-Za-z]{2,})+))$/;\n// const emailRegex =\n// /^[a-zA-Z0-9\\.\\!\\#\\$\\%\\&\\'\\*\\+\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~\\-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// const emailRegex =\n// /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i;\nconst emailRegex = /^(?!\\.)(?!.*\\.\\.)([A-Z0-9_'+\\-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i;\n// const emailRegex =\n// /^[a-z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-z0-9-]+(?:\\.[a-z0-9\\-]+)*$/i;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emojiRegex = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nlet emojiRegex;\n// faster, simpler, safer\nconst ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nconst ipv4CidrRegex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/;\n// const ipv6Regex =\n// /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;\nconst ipv6Regex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/;\nconst ipv6CidrRegex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nconst base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;\n// https://base64.guru/standards/base64url\nconst base64urlRegex = /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/;\n// simple\n// const dateRegexSource = `\\\\d{4}-\\\\d{2}-\\\\d{2}`;\n// no leap year validation\n// const dateRegexSource = `\\\\d{4}-((0[13578]|10|12)-31|(0[13-9]|1[0-2])-30|(0[1-9]|1[0-2])-(0[1-9]|1\\\\d|2\\\\d))`;\n// with leap year validation\nconst dateRegexSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateRegex = new RegExp(`^${dateRegexSource}$`);\nfunction timeRegexSource(args) {\n let secondsRegexSource = `[0-5]\\\\d`;\n if (args.precision) {\n secondsRegexSource = `${secondsRegexSource}\\\\.\\\\d{${args.precision}}`;\n }\n else if (args.precision == null) {\n secondsRegexSource = `${secondsRegexSource}(\\\\.\\\\d+)?`;\n }\n const secondsQuantifier = args.precision ? \"+\" : \"?\"; // require seconds if precision is nonzero\n return `([01]\\\\d|2[0-3]):[0-5]\\\\d(:${secondsRegexSource})${secondsQuantifier}`;\n}\nfunction timeRegex(args) {\n return new RegExp(`^${timeRegexSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nexport function datetimeRegex(args) {\n let regex = `${dateRegexSource}T${timeRegexSource(args)}`;\n const opts = [];\n opts.push(args.local ? `Z?` : `Z`);\n if (args.offset)\n opts.push(`([+-]\\\\d{2}:?\\\\d{2})`);\n regex = `${regex}(${opts.join(\"|\")})`;\n return new RegExp(`^${regex}$`);\n}\nfunction isValidIP(ip, version) {\n if ((version === \"v4\" || !version) && ipv4Regex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6Regex.test(ip)) {\n return true;\n }\n return false;\n}\nfunction isValidJWT(jwt, alg) {\n if (!jwtRegex.test(jwt))\n return false;\n try {\n const [header] = jwt.split(\".\");\n if (!header)\n return false;\n // Convert base64url to base64\n const base64 = header\n .replace(/-/g, \"+\")\n .replace(/_/g, \"/\")\n .padEnd(header.length + ((4 - (header.length % 4)) % 4), \"=\");\n const decoded = JSON.parse(atob(base64));\n if (typeof decoded !== \"object\" || decoded === null)\n return false;\n if (\"typ\" in decoded && decoded?.typ !== \"JWT\")\n return false;\n if (!decoded.alg)\n return false;\n if (alg && decoded.alg !== alg)\n return false;\n return true;\n }\n catch {\n return false;\n }\n}\nfunction isValidCidr(ip, version) {\n if ((version === \"v4\" || !version) && ipv4CidrRegex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6CidrRegex.test(ip)) {\n return true;\n }\n return false;\n}\nexport class ZodString extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = String(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.string) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.string,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.length < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.length > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"length\") {\n const tooBig = input.data.length > check.value;\n const tooSmall = input.data.length < check.value;\n if (tooBig || tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n if (tooBig) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n else if (tooSmall) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n status.dirty();\n }\n }\n else if (check.kind === \"email\") {\n if (!emailRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"email\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"emoji\") {\n if (!emojiRegex) {\n emojiRegex = new RegExp(_emojiRegex, \"u\");\n }\n if (!emojiRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"emoji\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"uuid\") {\n if (!uuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"uuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"nanoid\") {\n if (!nanoidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"nanoid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid\") {\n if (!cuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid2\") {\n if (!cuid2Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid2\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ulid\") {\n if (!ulidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ulid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"url\") {\n try {\n new URL(input.data);\n }\n catch {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"regex\") {\n check.regex.lastIndex = 0;\n const testResult = check.regex.test(input.data);\n if (!testResult) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"regex\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"trim\") {\n input.data = input.data.trim();\n }\n else if (check.kind === \"includes\") {\n if (!input.data.includes(check.value, check.position)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { includes: check.value, position: check.position },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"toLowerCase\") {\n input.data = input.data.toLowerCase();\n }\n else if (check.kind === \"toUpperCase\") {\n input.data = input.data.toUpperCase();\n }\n else if (check.kind === \"startsWith\") {\n if (!input.data.startsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { startsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"endsWith\") {\n if (!input.data.endsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { endsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"datetime\") {\n const regex = datetimeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"datetime\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"date\") {\n const regex = dateRegex;\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"date\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"time\") {\n const regex = timeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"time\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"duration\") {\n if (!durationRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"duration\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ip\") {\n if (!isValidIP(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ip\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"jwt\") {\n if (!isValidJWT(input.data, check.alg)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"jwt\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cidr\") {\n if (!isValidCidr(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cidr\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64\") {\n if (!base64Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64url\") {\n if (!base64urlRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _regex(regex, validation, message) {\n return this.refinement((data) => regex.test(data), {\n validation,\n code: ZodIssueCode.invalid_string,\n ...errorUtil.errToObj(message),\n });\n }\n _addCheck(check) {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n email(message) {\n return this._addCheck({ kind: \"email\", ...errorUtil.errToObj(message) });\n }\n url(message) {\n return this._addCheck({ kind: \"url\", ...errorUtil.errToObj(message) });\n }\n emoji(message) {\n return this._addCheck({ kind: \"emoji\", ...errorUtil.errToObj(message) });\n }\n uuid(message) {\n return this._addCheck({ kind: \"uuid\", ...errorUtil.errToObj(message) });\n }\n nanoid(message) {\n return this._addCheck({ kind: \"nanoid\", ...errorUtil.errToObj(message) });\n }\n cuid(message) {\n return this._addCheck({ kind: \"cuid\", ...errorUtil.errToObj(message) });\n }\n cuid2(message) {\n return this._addCheck({ kind: \"cuid2\", ...errorUtil.errToObj(message) });\n }\n ulid(message) {\n return this._addCheck({ kind: \"ulid\", ...errorUtil.errToObj(message) });\n }\n base64(message) {\n return this._addCheck({ kind: \"base64\", ...errorUtil.errToObj(message) });\n }\n base64url(message) {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return this._addCheck({\n kind: \"base64url\",\n ...errorUtil.errToObj(message),\n });\n }\n jwt(options) {\n return this._addCheck({ kind: \"jwt\", ...errorUtil.errToObj(options) });\n }\n ip(options) {\n return this._addCheck({ kind: \"ip\", ...errorUtil.errToObj(options) });\n }\n cidr(options) {\n return this._addCheck({ kind: \"cidr\", ...errorUtil.errToObj(options) });\n }\n datetime(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"datetime\",\n precision: null,\n offset: false,\n local: false,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"datetime\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n offset: options?.offset ?? false,\n local: options?.local ?? false,\n ...errorUtil.errToObj(options?.message),\n });\n }\n date(message) {\n return this._addCheck({ kind: \"date\", message });\n }\n time(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"time\",\n precision: null,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"time\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n ...errorUtil.errToObj(options?.message),\n });\n }\n duration(message) {\n return this._addCheck({ kind: \"duration\", ...errorUtil.errToObj(message) });\n }\n regex(regex, message) {\n return this._addCheck({\n kind: \"regex\",\n regex: regex,\n ...errorUtil.errToObj(message),\n });\n }\n includes(value, options) {\n return this._addCheck({\n kind: \"includes\",\n value: value,\n position: options?.position,\n ...errorUtil.errToObj(options?.message),\n });\n }\n startsWith(value, message) {\n return this._addCheck({\n kind: \"startsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n endsWith(value, message) {\n return this._addCheck({\n kind: \"endsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n min(minLength, message) {\n return this._addCheck({\n kind: \"min\",\n value: minLength,\n ...errorUtil.errToObj(message),\n });\n }\n max(maxLength, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxLength,\n ...errorUtil.errToObj(message),\n });\n }\n length(len, message) {\n return this._addCheck({\n kind: \"length\",\n value: len,\n ...errorUtil.errToObj(message),\n });\n }\n /**\n * Equivalent to `.min(1)`\n */\n nonempty(message) {\n return this.min(1, errorUtil.errToObj(message));\n }\n trim() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"trim\" }],\n });\n }\n toLowerCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toLowerCase\" }],\n });\n }\n toUpperCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toUpperCase\" }],\n });\n }\n get isDatetime() {\n return !!this._def.checks.find((ch) => ch.kind === \"datetime\");\n }\n get isDate() {\n return !!this._def.checks.find((ch) => ch.kind === \"date\");\n }\n get isTime() {\n return !!this._def.checks.find((ch) => ch.kind === \"time\");\n }\n get isDuration() {\n return !!this._def.checks.find((ch) => ch.kind === \"duration\");\n }\n get isEmail() {\n return !!this._def.checks.find((ch) => ch.kind === \"email\");\n }\n get isURL() {\n return !!this._def.checks.find((ch) => ch.kind === \"url\");\n }\n get isEmoji() {\n return !!this._def.checks.find((ch) => ch.kind === \"emoji\");\n }\n get isUUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"uuid\");\n }\n get isNANOID() {\n return !!this._def.checks.find((ch) => ch.kind === \"nanoid\");\n }\n get isCUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid\");\n }\n get isCUID2() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid2\");\n }\n get isULID() {\n return !!this._def.checks.find((ch) => ch.kind === \"ulid\");\n }\n get isIP() {\n return !!this._def.checks.find((ch) => ch.kind === \"ip\");\n }\n get isCIDR() {\n return !!this._def.checks.find((ch) => ch.kind === \"cidr\");\n }\n get isBase64() {\n return !!this._def.checks.find((ch) => ch.kind === \"base64\");\n }\n get isBase64url() {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return !!this._def.checks.find((ch) => ch.kind === \"base64url\");\n }\n get minLength() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxLength() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodString.create = (params) => {\n return new ZodString({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodString,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = Number.parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = Number.parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / 10 ** decCount;\n}\nexport class ZodNumber extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n this.step = this.multipleOf;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = Number(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.number) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.number,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"int\") {\n if (!util.isInteger(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: \"integer\",\n received: \"float\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (floatSafeRemainder(input.data, check.value) !== 0) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"finite\") {\n if (!Number.isFinite(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_finite,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodNumber({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodNumber({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n int(message) {\n return this._addCheck({\n kind: \"int\",\n message: errorUtil.toString(message),\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value: value,\n message: errorUtil.toString(message),\n });\n }\n finite(message) {\n return this._addCheck({\n kind: \"finite\",\n message: errorUtil.toString(message),\n });\n }\n safe(message) {\n return this._addCheck({\n kind: \"min\",\n inclusive: true,\n value: Number.MIN_SAFE_INTEGER,\n message: errorUtil.toString(message),\n })._addCheck({\n kind: \"max\",\n inclusive: true,\n value: Number.MAX_SAFE_INTEGER,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n get isInt() {\n return !!this._def.checks.find((ch) => ch.kind === \"int\" || (ch.kind === \"multipleOf\" && util.isInteger(ch.value)));\n }\n get isFinite() {\n let max = null;\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"finite\" || ch.kind === \"int\" || ch.kind === \"multipleOf\") {\n return true;\n }\n else if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n else if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return Number.isFinite(min) && Number.isFinite(max);\n }\n}\nZodNumber.create = (params) => {\n return new ZodNumber({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodNumber,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBigInt extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n }\n _parse(input) {\n if (this._def.coerce) {\n try {\n input.data = BigInt(input.data);\n }\n catch {\n return this._getInvalidInput(input);\n }\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.bigint) {\n return this._getInvalidInput(input);\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n type: \"bigint\",\n minimum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n type: \"bigint\",\n maximum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (input.data % check.value !== BigInt(0)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _getInvalidInput(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.bigint,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodBigInt({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodBigInt({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodBigInt.create = (params) => {\n return new ZodBigInt({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodBigInt,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBoolean extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = Boolean(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.boolean) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.boolean,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodBoolean.create = (params) => {\n return new ZodBoolean({\n typeName: ZodFirstPartyTypeKind.ZodBoolean,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodDate extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = new Date(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.date) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.date,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (Number.isNaN(input.data.getTime())) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_date,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.getTime() < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n message: check.message,\n inclusive: true,\n exact: false,\n minimum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.getTime() > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n message: check.message,\n inclusive: true,\n exact: false,\n maximum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: new Date(input.data.getTime()),\n };\n }\n _addCheck(check) {\n return new ZodDate({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n min(minDate, message) {\n return this._addCheck({\n kind: \"min\",\n value: minDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n max(maxDate, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n get minDate() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min != null ? new Date(min) : null;\n }\n get maxDate() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max != null ? new Date(max) : null;\n }\n}\nZodDate.create = (params) => {\n return new ZodDate({\n checks: [],\n coerce: params?.coerce || false,\n typeName: ZodFirstPartyTypeKind.ZodDate,\n ...processCreateParams(params),\n });\n};\nexport class ZodSymbol extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.symbol) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.symbol,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodSymbol.create = (params) => {\n return new ZodSymbol({\n typeName: ZodFirstPartyTypeKind.ZodSymbol,\n ...processCreateParams(params),\n });\n};\nexport class ZodUndefined extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.undefined,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodUndefined.create = (params) => {\n return new ZodUndefined({\n typeName: ZodFirstPartyTypeKind.ZodUndefined,\n ...processCreateParams(params),\n });\n};\nexport class ZodNull extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.null) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.null,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodNull.create = (params) => {\n return new ZodNull({\n typeName: ZodFirstPartyTypeKind.ZodNull,\n ...processCreateParams(params),\n });\n};\nexport class ZodAny extends ZodType {\n constructor() {\n super(...arguments);\n // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n this._any = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodAny.create = (params) => {\n return new ZodAny({\n typeName: ZodFirstPartyTypeKind.ZodAny,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnknown extends ZodType {\n constructor() {\n super(...arguments);\n // required\n this._unknown = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodUnknown.create = (params) => {\n return new ZodUnknown({\n typeName: ZodFirstPartyTypeKind.ZodUnknown,\n ...processCreateParams(params),\n });\n};\nexport class ZodNever extends ZodType {\n _parse(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.never,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n}\nZodNever.create = (params) => {\n return new ZodNever({\n typeName: ZodFirstPartyTypeKind.ZodNever,\n ...processCreateParams(params),\n });\n};\nexport class ZodVoid extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.void,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodVoid.create = (params) => {\n return new ZodVoid({\n typeName: ZodFirstPartyTypeKind.ZodVoid,\n ...processCreateParams(params),\n });\n};\nexport class ZodArray extends ZodType {\n _parse(input) {\n const { ctx, status } = this._processInputParams(input);\n const def = this._def;\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (def.exactLength !== null) {\n const tooBig = ctx.data.length > def.exactLength.value;\n const tooSmall = ctx.data.length < def.exactLength.value;\n if (tooBig || tooSmall) {\n addIssueToContext(ctx, {\n code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small,\n minimum: (tooSmall ? def.exactLength.value : undefined),\n maximum: (tooBig ? def.exactLength.value : undefined),\n type: \"array\",\n inclusive: true,\n exact: true,\n message: def.exactLength.message,\n });\n status.dirty();\n }\n }\n if (def.minLength !== null) {\n if (ctx.data.length < def.minLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.minLength.message,\n });\n status.dirty();\n }\n }\n if (def.maxLength !== null) {\n if (ctx.data.length > def.maxLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.maxLength.message,\n });\n status.dirty();\n }\n }\n if (ctx.common.async) {\n return Promise.all([...ctx.data].map((item, i) => {\n return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n })).then((result) => {\n return ParseStatus.mergeArray(status, result);\n });\n }\n const result = [...ctx.data].map((item, i) => {\n return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n });\n return ParseStatus.mergeArray(status, result);\n }\n get element() {\n return this._def.type;\n }\n min(minLength, message) {\n return new ZodArray({\n ...this._def,\n minLength: { value: minLength, message: errorUtil.toString(message) },\n });\n }\n max(maxLength, message) {\n return new ZodArray({\n ...this._def,\n maxLength: { value: maxLength, message: errorUtil.toString(message) },\n });\n }\n length(len, message) {\n return new ZodArray({\n ...this._def,\n exactLength: { value: len, message: errorUtil.toString(message) },\n });\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodArray.create = (schema, params) => {\n return new ZodArray({\n type: schema,\n minLength: null,\n maxLength: null,\n exactLength: null,\n typeName: ZodFirstPartyTypeKind.ZodArray,\n ...processCreateParams(params),\n });\n};\nfunction deepPartialify(schema) {\n if (schema instanceof ZodObject) {\n const newShape = {};\n for (const key in schema.shape) {\n const fieldSchema = schema.shape[key];\n newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n }\n return new ZodObject({\n ...schema._def,\n shape: () => newShape,\n });\n }\n else if (schema instanceof ZodArray) {\n return new ZodArray({\n ...schema._def,\n type: deepPartialify(schema.element),\n });\n }\n else if (schema instanceof ZodOptional) {\n return ZodOptional.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodNullable) {\n return ZodNullable.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodTuple) {\n return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));\n }\n else {\n return schema;\n }\n}\nexport class ZodObject extends ZodType {\n constructor() {\n super(...arguments);\n this._cached = null;\n /**\n * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped.\n * If you want to pass through unknown properties, use `.passthrough()` instead.\n */\n this.nonstrict = this.passthrough;\n // extend<\n // Augmentation extends ZodRawShape,\n // NewOutput extends util.flatten<{\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // }>,\n // NewInput extends util.flatten<{\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }>\n // >(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<T, Augmentation>,\n // UnknownKeys,\n // Catchall,\n // NewOutput,\n // NewInput\n // > {\n // return new ZodObject({\n // ...this._def,\n // shape: () => ({\n // ...this._def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // }\n /**\n * @deprecated Use `.extend` instead\n * */\n this.augment = this.extend;\n }\n _getCached() {\n if (this._cached !== null)\n return this._cached;\n const shape = this._def.shape();\n const keys = util.objectKeys(shape);\n this._cached = { shape, keys };\n return this._cached;\n }\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.object) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const { status, ctx } = this._processInputParams(input);\n const { shape, keys: shapeKeys } = this._getCached();\n const extraKeys = [];\n if (!(this._def.catchall instanceof ZodNever && this._def.unknownKeys === \"strip\")) {\n for (const key in ctx.data) {\n if (!shapeKeys.includes(key)) {\n extraKeys.push(key);\n }\n }\n }\n const pairs = [];\n for (const key of shapeKeys) {\n const keyValidator = shape[key];\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (this._def.catchall instanceof ZodNever) {\n const unknownKeys = this._def.unknownKeys;\n if (unknownKeys === \"passthrough\") {\n for (const key of extraKeys) {\n pairs.push({\n key: { status: \"valid\", value: key },\n value: { status: \"valid\", value: ctx.data[key] },\n });\n }\n }\n else if (unknownKeys === \"strict\") {\n if (extraKeys.length > 0) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.unrecognized_keys,\n keys: extraKeys,\n });\n status.dirty();\n }\n }\n else if (unknownKeys === \"strip\") {\n }\n else {\n throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n }\n }\n else {\n // run catchall validation\n const catchall = this._def.catchall;\n for (const key of extraKeys) {\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value)\n ),\n alwaysSet: key in ctx.data,\n });\n }\n }\n if (ctx.common.async) {\n return Promise.resolve()\n .then(async () => {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n alwaysSet: pair.alwaysSet,\n });\n }\n return syncPairs;\n })\n .then((syncPairs) => {\n return ParseStatus.mergeObjectSync(status, syncPairs);\n });\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get shape() {\n return this._def.shape();\n }\n strict(message) {\n errorUtil.errToObj;\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strict\",\n ...(message !== undefined\n ? {\n errorMap: (issue, ctx) => {\n const defaultError = this._def.errorMap?.(issue, ctx).message ?? ctx.defaultError;\n if (issue.code === \"unrecognized_keys\")\n return {\n message: errorUtil.errToObj(message).message ?? defaultError,\n };\n return {\n message: defaultError,\n };\n },\n }\n : {}),\n });\n }\n strip() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strip\",\n });\n }\n passthrough() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"passthrough\",\n });\n }\n // const AugmentFactory =\n // <Def extends ZodObjectDef>(def: Def) =>\n // <Augmentation extends ZodRawShape>(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<ReturnType<Def[\"shape\"]>, Augmentation>,\n // Def[\"unknownKeys\"],\n // Def[\"catchall\"]\n // > => {\n // return new ZodObject({\n // ...def,\n // shape: () => ({\n // ...def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // };\n extend(augmentation) {\n return new ZodObject({\n ...this._def,\n shape: () => ({\n ...this._def.shape(),\n ...augmentation,\n }),\n });\n }\n /**\n * Prior to zod@1.0.12 there was a bug in the\n * inferred type of merged objects. Please\n * upgrade if you are experiencing issues.\n */\n merge(merging) {\n const merged = new ZodObject({\n unknownKeys: merging._def.unknownKeys,\n catchall: merging._def.catchall,\n shape: () => ({\n ...this._def.shape(),\n ...merging._def.shape(),\n }),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n });\n return merged;\n }\n // merge<\n // Incoming extends AnyZodObject,\n // Augmentation extends Incoming[\"shape\"],\n // NewOutput extends {\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // },\n // NewInput extends {\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }\n // >(\n // merging: Incoming\n // ): ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"],\n // NewOutput,\n // NewInput\n // > {\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n setKey(key, schema) {\n return this.augment({ [key]: schema });\n }\n // merge<Incoming extends AnyZodObject>(\n // merging: Incoming\n // ): //ZodObject<T & Incoming[\"_shape\"], UnknownKeys, Catchall> = (merging) => {\n // ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"]\n // > {\n // // const mergedShape = objectUtil.mergeShapes(\n // // this._def.shape(),\n // // merging._def.shape()\n // // );\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n catchall(index) {\n return new ZodObject({\n ...this._def,\n catchall: index,\n });\n }\n pick(mask) {\n const shape = {};\n for (const key of util.objectKeys(mask)) {\n if (mask[key] && this.shape[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n omit(mask) {\n const shape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (!mask[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n /**\n * @deprecated\n */\n deepPartial() {\n return deepPartialify(this);\n }\n partial(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n const fieldSchema = this.shape[key];\n if (mask && !mask[key]) {\n newShape[key] = fieldSchema;\n }\n else {\n newShape[key] = fieldSchema.optional();\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n required(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (mask && !mask[key]) {\n newShape[key] = this.shape[key];\n }\n else {\n const fieldSchema = this.shape[key];\n let newField = fieldSchema;\n while (newField instanceof ZodOptional) {\n newField = newField._def.innerType;\n }\n newShape[key] = newField;\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n keyof() {\n return createZodEnum(util.objectKeys(this.shape));\n }\n}\nZodObject.create = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.strictCreate = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strict\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.lazycreate = (shape, params) => {\n return new ZodObject({\n shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const options = this._def.options;\n function handleResults(results) {\n // return first issue-free validation if it exists\n for (const result of results) {\n if (result.result.status === \"valid\") {\n return result.result;\n }\n }\n for (const result of results) {\n if (result.result.status === \"dirty\") {\n // add issues from dirty option\n ctx.common.issues.push(...result.ctx.common.issues);\n return result.result;\n }\n }\n // return invalid\n const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return Promise.all(options.map(async (option) => {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n return {\n result: await option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n }),\n ctx: childCtx,\n };\n })).then(handleResults);\n }\n else {\n let dirty = undefined;\n const issues = [];\n for (const option of options) {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n const result = option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n });\n if (result.status === \"valid\") {\n return result;\n }\n else if (result.status === \"dirty\" && !dirty) {\n dirty = { result, ctx: childCtx };\n }\n if (childCtx.common.issues.length) {\n issues.push(childCtx.common.issues);\n }\n }\n if (dirty) {\n ctx.common.issues.push(...dirty.ctx.common.issues);\n return dirty.result;\n }\n const unionErrors = issues.map((issues) => new ZodError(issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n }\n get options() {\n return this._def.options;\n }\n}\nZodUnion.create = (types, params) => {\n return new ZodUnion({\n options: types,\n typeName: ZodFirstPartyTypeKind.ZodUnion,\n ...processCreateParams(params),\n });\n};\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\n////////// //////////\n////////// ZodDiscriminatedUnion //////////\n////////// //////////\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\nconst getDiscriminator = (type) => {\n if (type instanceof ZodLazy) {\n return getDiscriminator(type.schema);\n }\n else if (type instanceof ZodEffects) {\n return getDiscriminator(type.innerType());\n }\n else if (type instanceof ZodLiteral) {\n return [type.value];\n }\n else if (type instanceof ZodEnum) {\n return type.options;\n }\n else if (type instanceof ZodNativeEnum) {\n // eslint-disable-next-line ban/ban\n return util.objectValues(type.enum);\n }\n else if (type instanceof ZodDefault) {\n return getDiscriminator(type._def.innerType);\n }\n else if (type instanceof ZodUndefined) {\n return [undefined];\n }\n else if (type instanceof ZodNull) {\n return [null];\n }\n else if (type instanceof ZodOptional) {\n return [undefined, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodNullable) {\n return [null, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodBranded) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodReadonly) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodCatch) {\n return getDiscriminator(type._def.innerType);\n }\n else {\n return [];\n }\n};\nexport class ZodDiscriminatedUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const discriminator = this.discriminator;\n const discriminatorValue = ctx.data[discriminator];\n const option = this.optionsMap.get(discriminatorValue);\n if (!option) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union_discriminator,\n options: Array.from(this.optionsMap.keys()),\n path: [discriminator],\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n else {\n return option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n get discriminator() {\n return this._def.discriminator;\n }\n get options() {\n return this._def.options;\n }\n get optionsMap() {\n return this._def.optionsMap;\n }\n /**\n * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n * have a different value for each object in the union.\n * @param discriminator the name of the discriminator property\n * @param types an array of object schemas\n * @param params\n */\n static create(discriminator, options, params) {\n // Get all the valid discriminator values\n const optionsMap = new Map();\n // try {\n for (const type of options) {\n const discriminatorValues = getDiscriminator(type.shape[discriminator]);\n if (!discriminatorValues.length) {\n throw new Error(`A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`);\n }\n for (const value of discriminatorValues) {\n if (optionsMap.has(value)) {\n throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\n }\n optionsMap.set(value, type);\n }\n }\n return new ZodDiscriminatedUnion({\n typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n discriminator,\n options,\n optionsMap,\n ...processCreateParams(params),\n });\n }\n}\nfunction mergeValues(a, b) {\n const aType = getParsedType(a);\n const bType = getParsedType(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n else if (aType === ZodParsedType.object && bType === ZodParsedType.object) {\n const bKeys = util.objectKeys(b);\n const sharedKeys = util.objectKeys(a).filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {\n if (a.length !== b.length) {\n return { valid: false };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n else if (aType === ZodParsedType.date && bType === ZodParsedType.date && +a === +b) {\n return { valid: true, data: a };\n }\n else {\n return { valid: false };\n }\n}\nexport class ZodIntersection extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const handleParsed = (parsedLeft, parsedRight) => {\n if (isAborted(parsedLeft) || isAborted(parsedRight)) {\n return INVALID;\n }\n const merged = mergeValues(parsedLeft.value, parsedRight.value);\n if (!merged.valid) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_intersection_types,\n });\n return INVALID;\n }\n if (isDirty(parsedLeft) || isDirty(parsedRight)) {\n status.dirty();\n }\n return { status: status.value, value: merged.data };\n };\n if (ctx.common.async) {\n return Promise.all([\n this._def.left._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n this._def.right._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n ]).then(([left, right]) => handleParsed(left, right));\n }\n else {\n return handleParsed(this._def.left._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }), this._def.right._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }));\n }\n }\n}\nZodIntersection.create = (left, right, params) => {\n return new ZodIntersection({\n left: left,\n right: right,\n typeName: ZodFirstPartyTypeKind.ZodIntersection,\n ...processCreateParams(params),\n });\n};\n// type ZodTupleItems = [ZodTypeAny, ...ZodTypeAny[]];\nexport class ZodTuple extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (ctx.data.length < this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n return INVALID;\n }\n const rest = this._def.rest;\n if (!rest && ctx.data.length > this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n status.dirty();\n }\n const items = [...ctx.data]\n .map((item, itemIndex) => {\n const schema = this._def.items[itemIndex] || this._def.rest;\n if (!schema)\n return null;\n return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n })\n .filter((x) => !!x); // filter nulls\n if (ctx.common.async) {\n return Promise.all(items).then((results) => {\n return ParseStatus.mergeArray(status, results);\n });\n }\n else {\n return ParseStatus.mergeArray(status, items);\n }\n }\n get items() {\n return this._def.items;\n }\n rest(rest) {\n return new ZodTuple({\n ...this._def,\n rest,\n });\n }\n}\nZodTuple.create = (schemas, params) => {\n if (!Array.isArray(schemas)) {\n throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n }\n return new ZodTuple({\n items: schemas,\n typeName: ZodFirstPartyTypeKind.ZodTuple,\n rest: null,\n ...processCreateParams(params),\n });\n};\nexport class ZodRecord extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const pairs = [];\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n for (const key in ctx.data) {\n pairs.push({\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (ctx.common.async) {\n return ParseStatus.mergeObjectAsync(status, pairs);\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get element() {\n return this._def.valueType;\n }\n static create(first, second, third) {\n if (second instanceof ZodType) {\n return new ZodRecord({\n keyType: first,\n valueType: second,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(third),\n });\n }\n return new ZodRecord({\n keyType: ZodString.create(),\n valueType: first,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(second),\n });\n }\n}\nexport class ZodMap extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.map) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.map,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n const pairs = [...ctx.data.entries()].map(([key, value], index) => {\n return {\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, \"key\"])),\n value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, \"value\"])),\n };\n });\n if (ctx.common.async) {\n const finalMap = new Map();\n return Promise.resolve().then(async () => {\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n });\n }\n else {\n const finalMap = new Map();\n for (const pair of pairs) {\n const key = pair.key;\n const value = pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n }\n }\n}\nZodMap.create = (keyType, valueType, params) => {\n return new ZodMap({\n valueType,\n keyType,\n typeName: ZodFirstPartyTypeKind.ZodMap,\n ...processCreateParams(params),\n });\n};\nexport class ZodSet extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.set) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.set,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const def = this._def;\n if (def.minSize !== null) {\n if (ctx.data.size < def.minSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.minSize.message,\n });\n status.dirty();\n }\n }\n if (def.maxSize !== null) {\n if (ctx.data.size > def.maxSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.maxSize.message,\n });\n status.dirty();\n }\n }\n const valueType = this._def.valueType;\n function finalizeSet(elements) {\n const parsedSet = new Set();\n for (const element of elements) {\n if (element.status === \"aborted\")\n return INVALID;\n if (element.status === \"dirty\")\n status.dirty();\n parsedSet.add(element.value);\n }\n return { status: status.value, value: parsedSet };\n }\n const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n if (ctx.common.async) {\n return Promise.all(elements).then((elements) => finalizeSet(elements));\n }\n else {\n return finalizeSet(elements);\n }\n }\n min(minSize, message) {\n return new ZodSet({\n ...this._def,\n minSize: { value: minSize, message: errorUtil.toString(message) },\n });\n }\n max(maxSize, message) {\n return new ZodSet({\n ...this._def,\n maxSize: { value: maxSize, message: errorUtil.toString(message) },\n });\n }\n size(size, message) {\n return this.min(size, message).max(size, message);\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodSet.create = (valueType, params) => {\n return new ZodSet({\n valueType,\n minSize: null,\n maxSize: null,\n typeName: ZodFirstPartyTypeKind.ZodSet,\n ...processCreateParams(params),\n });\n};\nexport class ZodFunction extends ZodType {\n constructor() {\n super(...arguments);\n this.validate = this.implement;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.function) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.function,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n function makeArgsIssue(args, error) {\n return makeIssue({\n data: args,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_arguments,\n argumentsError: error,\n },\n });\n }\n function makeReturnsIssue(returns, error) {\n return makeIssue({\n data: returns,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_return_type,\n returnTypeError: error,\n },\n });\n }\n const params = { errorMap: ctx.common.contextualErrorMap };\n const fn = ctx.data;\n if (this._def.returns instanceof ZodPromise) {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(async function (...args) {\n const error = new ZodError([]);\n const parsedArgs = await me._def.args.parseAsync(args, params).catch((e) => {\n error.addIssue(makeArgsIssue(args, e));\n throw error;\n });\n const result = await Reflect.apply(fn, this, parsedArgs);\n const parsedReturns = await me._def.returns._def.type\n .parseAsync(result, params)\n .catch((e) => {\n error.addIssue(makeReturnsIssue(result, e));\n throw error;\n });\n return parsedReturns;\n });\n }\n else {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(function (...args) {\n const parsedArgs = me._def.args.safeParse(args, params);\n if (!parsedArgs.success) {\n throw new ZodError([makeArgsIssue(args, parsedArgs.error)]);\n }\n const result = Reflect.apply(fn, this, parsedArgs.data);\n const parsedReturns = me._def.returns.safeParse(result, params);\n if (!parsedReturns.success) {\n throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]);\n }\n return parsedReturns.data;\n });\n }\n }\n parameters() {\n return this._def.args;\n }\n returnType() {\n return this._def.returns;\n }\n args(...items) {\n return new ZodFunction({\n ...this._def,\n args: ZodTuple.create(items).rest(ZodUnknown.create()),\n });\n }\n returns(returnType) {\n return new ZodFunction({\n ...this._def,\n returns: returnType,\n });\n }\n implement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n strictImplement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n static create(args, returns, params) {\n return new ZodFunction({\n args: (args ? args : ZodTuple.create([]).rest(ZodUnknown.create())),\n returns: returns || ZodUnknown.create(),\n typeName: ZodFirstPartyTypeKind.ZodFunction,\n ...processCreateParams(params),\n });\n }\n}\nexport class ZodLazy extends ZodType {\n get schema() {\n return this._def.getter();\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const lazySchema = this._def.getter();\n return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });\n }\n}\nZodLazy.create = (getter, params) => {\n return new ZodLazy({\n getter: getter,\n typeName: ZodFirstPartyTypeKind.ZodLazy,\n ...processCreateParams(params),\n });\n};\nexport class ZodLiteral extends ZodType {\n _parse(input) {\n if (input.data !== this._def.value) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_literal,\n expected: this._def.value,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n get value() {\n return this._def.value;\n }\n}\nZodLiteral.create = (value, params) => {\n return new ZodLiteral({\n value: value,\n typeName: ZodFirstPartyTypeKind.ZodLiteral,\n ...processCreateParams(params),\n });\n};\nfunction createZodEnum(values, params) {\n return new ZodEnum({\n values,\n typeName: ZodFirstPartyTypeKind.ZodEnum,\n ...processCreateParams(params),\n });\n}\nexport class ZodEnum extends ZodType {\n _parse(input) {\n if (typeof input.data !== \"string\") {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(this._def.values);\n }\n if (!this._cache.has(input.data)) {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get options() {\n return this._def.values;\n }\n get enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Values() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n extract(values, newDef = this._def) {\n return ZodEnum.create(values, {\n ...this._def,\n ...newDef,\n });\n }\n exclude(values, newDef = this._def) {\n return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), {\n ...this._def,\n ...newDef,\n });\n }\n}\nZodEnum.create = createZodEnum;\nexport class ZodNativeEnum extends ZodType {\n _parse(input) {\n const nativeEnumValues = util.getValidEnumValues(this._def.values);\n const ctx = this._getOrReturnCtx(input);\n if (ctx.parsedType !== ZodParsedType.string && ctx.parsedType !== ZodParsedType.number) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(util.getValidEnumValues(this._def.values));\n }\n if (!this._cache.has(input.data)) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get enum() {\n return this._def.values;\n }\n}\nZodNativeEnum.create = (values, params) => {\n return new ZodNativeEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n ...processCreateParams(params),\n });\n};\nexport class ZodPromise extends ZodType {\n unwrap() {\n return this._def.type;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.promise && ctx.common.async === false) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.promise,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const promisified = ctx.parsedType === ZodParsedType.promise ? ctx.data : Promise.resolve(ctx.data);\n return OK(promisified.then((data) => {\n return this._def.type.parseAsync(data, {\n path: ctx.path,\n errorMap: ctx.common.contextualErrorMap,\n });\n }));\n }\n}\nZodPromise.create = (schema, params) => {\n return new ZodPromise({\n type: schema,\n typeName: ZodFirstPartyTypeKind.ZodPromise,\n ...processCreateParams(params),\n });\n};\nexport class ZodEffects extends ZodType {\n innerType() {\n return this._def.schema;\n }\n sourceType() {\n return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects\n ? this._def.schema.sourceType()\n : this._def.schema;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const effect = this._def.effect || null;\n const checkCtx = {\n addIssue: (arg) => {\n addIssueToContext(ctx, arg);\n if (arg.fatal) {\n status.abort();\n }\n else {\n status.dirty();\n }\n },\n get path() {\n return ctx.path;\n },\n };\n checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n if (effect.type === \"preprocess\") {\n const processed = effect.transform(ctx.data, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(processed).then(async (processed) => {\n if (status.value === \"aborted\")\n return INVALID;\n const result = await this._def.schema._parseAsync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n });\n }\n else {\n if (status.value === \"aborted\")\n return INVALID;\n const result = this._def.schema._parseSync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n }\n }\n if (effect.type === \"refinement\") {\n const executeRefinement = (acc) => {\n const result = effect.refinement(acc, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(result);\n }\n if (result instanceof Promise) {\n throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n }\n return acc;\n };\n if (ctx.common.async === false) {\n const inner = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n // return value is ignored\n executeRefinement(inner.value);\n return { status: status.value, value: inner.value };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((inner) => {\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n return executeRefinement(inner.value).then(() => {\n return { status: status.value, value: inner.value };\n });\n });\n }\n }\n if (effect.type === \"transform\") {\n if (ctx.common.async === false) {\n const base = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (!isValid(base))\n return INVALID;\n const result = effect.transform(base.value, checkCtx);\n if (result instanceof Promise) {\n throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n }\n return { status: status.value, value: result };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((base) => {\n if (!isValid(base))\n return INVALID;\n return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({\n status: status.value,\n value: result,\n }));\n });\n }\n }\n util.assertNever(effect);\n }\n}\nZodEffects.create = (schema, effect, params) => {\n return new ZodEffects({\n schema,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect,\n ...processCreateParams(params),\n });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params) => {\n return new ZodEffects({\n schema,\n effect: { type: \"preprocess\", transform: preprocess },\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n ...processCreateParams(params),\n });\n};\nexport { ZodEffects as ZodTransformer };\nexport class ZodOptional extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.undefined) {\n return OK(undefined);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodOptional.create = (type, params) => {\n return new ZodOptional({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodOptional,\n ...processCreateParams(params),\n });\n};\nexport class ZodNullable extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.null) {\n return OK(null);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodNullable.create = (type, params) => {\n return new ZodNullable({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodNullable,\n ...processCreateParams(params),\n });\n};\nexport class ZodDefault extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n let data = ctx.data;\n if (ctx.parsedType === ZodParsedType.undefined) {\n data = this._def.defaultValue();\n }\n return this._def.innerType._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n removeDefault() {\n return this._def.innerType;\n }\n}\nZodDefault.create = (type, params) => {\n return new ZodDefault({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n defaultValue: typeof params.default === \"function\" ? params.default : () => params.default,\n ...processCreateParams(params),\n });\n};\nexport class ZodCatch extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n // newCtx is used to not collect issues from inner types in ctx\n const newCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n };\n const result = this._def.innerType._parse({\n data: newCtx.data,\n path: newCtx.path,\n parent: {\n ...newCtx,\n },\n });\n if (isAsync(result)) {\n return result.then((result) => {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n });\n }\n else {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n }\n }\n removeCatch() {\n return this._def.innerType;\n }\n}\nZodCatch.create = (type, params) => {\n return new ZodCatch({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n catchValue: typeof params.catch === \"function\" ? params.catch : () => params.catch,\n ...processCreateParams(params),\n });\n};\nexport class ZodNaN extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.nan) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.nan,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n}\nZodNaN.create = (params) => {\n return new ZodNaN({\n typeName: ZodFirstPartyTypeKind.ZodNaN,\n ...processCreateParams(params),\n });\n};\nexport const BRAND = Symbol(\"zod_brand\");\nexport class ZodBranded extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const data = ctx.data;\n return this._def.type._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n unwrap() {\n return this._def.type;\n }\n}\nexport class ZodPipeline extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.common.async) {\n const handleAsync = async () => {\n const inResult = await this._def.in._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return DIRTY(inResult.value);\n }\n else {\n return this._def.out._parseAsync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n };\n return handleAsync();\n }\n else {\n const inResult = this._def.in._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return {\n status: \"dirty\",\n value: inResult.value,\n };\n }\n else {\n return this._def.out._parseSync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n }\n static create(a, b) {\n return new ZodPipeline({\n in: a,\n out: b,\n typeName: ZodFirstPartyTypeKind.ZodPipeline,\n });\n }\n}\nexport class ZodReadonly extends ZodType {\n _parse(input) {\n const result = this._def.innerType._parse(input);\n const freeze = (data) => {\n if (isValid(data)) {\n data.value = Object.freeze(data.value);\n }\n return data;\n };\n return isAsync(result) ? result.then((data) => freeze(data)) : freeze(result);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodReadonly.create = (type, params) => {\n return new ZodReadonly({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodReadonly,\n ...processCreateParams(params),\n });\n};\n////////////////////////////////////////\n////////////////////////////////////////\n////////// //////////\n////////// z.custom //////////\n////////// //////////\n////////////////////////////////////////\n////////////////////////////////////////\nfunction cleanParams(params, data) {\n const p = typeof params === \"function\" ? params(data) : typeof params === \"string\" ? { message: params } : params;\n const p2 = typeof p === \"string\" ? { message: p } : p;\n return p2;\n}\nexport function custom(check, _params = {}, \n/**\n * @deprecated\n *\n * Pass `fatal` into the params object instead:\n *\n * ```ts\n * z.string().custom((val) => val.length > 5, { fatal: false })\n * ```\n *\n */\nfatal) {\n if (check)\n return ZodAny.create().superRefine((data, ctx) => {\n const r = check(data);\n if (r instanceof Promise) {\n return r.then((r) => {\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n });\n }\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n return;\n });\n return ZodAny.create();\n}\nexport { ZodType as Schema, ZodType as ZodSchema };\nexport const late = {\n object: ZodObject.lazycreate,\n};\nexport var ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n ZodFirstPartyTypeKind[\"ZodString\"] = \"ZodString\";\n ZodFirstPartyTypeKind[\"ZodNumber\"] = \"ZodNumber\";\n ZodFirstPartyTypeKind[\"ZodNaN\"] = \"ZodNaN\";\n ZodFirstPartyTypeKind[\"ZodBigInt\"] = \"ZodBigInt\";\n ZodFirstPartyTypeKind[\"ZodBoolean\"] = \"ZodBoolean\";\n ZodFirstPartyTypeKind[\"ZodDate\"] = \"ZodDate\";\n ZodFirstPartyTypeKind[\"ZodSymbol\"] = \"ZodSymbol\";\n ZodFirstPartyTypeKind[\"ZodUndefined\"] = \"ZodUndefined\";\n ZodFirstPartyTypeKind[\"ZodNull\"] = \"ZodNull\";\n ZodFirstPartyTypeKind[\"ZodAny\"] = \"ZodAny\";\n ZodFirstPartyTypeKind[\"ZodUnknown\"] = \"ZodUnknown\";\n ZodFirstPartyTypeKind[\"ZodNever\"] = \"ZodNever\";\n ZodFirstPartyTypeKind[\"ZodVoid\"] = \"ZodVoid\";\n ZodFirstPartyTypeKind[\"ZodArray\"] = \"ZodArray\";\n ZodFirstPartyTypeKind[\"ZodObject\"] = \"ZodObject\";\n ZodFirstPartyTypeKind[\"ZodUnion\"] = \"ZodUnion\";\n ZodFirstPartyTypeKind[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n ZodFirstPartyTypeKind[\"ZodIntersection\"] = \"ZodIntersection\";\n ZodFirstPartyTypeKind[\"ZodTuple\"] = \"ZodTuple\";\n ZodFirstPartyTypeKind[\"ZodRecord\"] = \"ZodRecord\";\n ZodFirstPartyTypeKind[\"ZodMap\"] = \"ZodMap\";\n ZodFirstPartyTypeKind[\"ZodSet\"] = \"ZodSet\";\n ZodFirstPartyTypeKind[\"ZodFunction\"] = \"ZodFunction\";\n ZodFirstPartyTypeKind[\"ZodLazy\"] = \"ZodLazy\";\n ZodFirstPartyTypeKind[\"ZodLiteral\"] = \"ZodLiteral\";\n ZodFirstPartyTypeKind[\"ZodEnum\"] = \"ZodEnum\";\n ZodFirstPartyTypeKind[\"ZodEffects\"] = \"ZodEffects\";\n ZodFirstPartyTypeKind[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n ZodFirstPartyTypeKind[\"ZodOptional\"] = \"ZodOptional\";\n ZodFirstPartyTypeKind[\"ZodNullable\"] = \"ZodNullable\";\n ZodFirstPartyTypeKind[\"ZodDefault\"] = \"ZodDefault\";\n ZodFirstPartyTypeKind[\"ZodCatch\"] = \"ZodCatch\";\n ZodFirstPartyTypeKind[\"ZodPromise\"] = \"ZodPromise\";\n ZodFirstPartyTypeKind[\"ZodBranded\"] = \"ZodBranded\";\n ZodFirstPartyTypeKind[\"ZodPipeline\"] = \"ZodPipeline\";\n ZodFirstPartyTypeKind[\"ZodReadonly\"] = \"ZodReadonly\";\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\n// requires TS 4.4+\nclass Class {\n constructor(..._) { }\n}\nconst instanceOfType = (\n// const instanceOfType = <T extends new (...args: any[]) => any>(\ncls, params = {\n message: `Input not instance of ${cls.name}`,\n}) => custom((data) => data instanceof cls, params);\nconst stringType = ZodString.create;\nconst numberType = ZodNumber.create;\nconst nanType = ZodNaN.create;\nconst bigIntType = ZodBigInt.create;\nconst booleanType = ZodBoolean.create;\nconst dateType = ZodDate.create;\nconst symbolType = ZodSymbol.create;\nconst undefinedType = ZodUndefined.create;\nconst nullType = ZodNull.create;\nconst anyType = ZodAny.create;\nconst unknownType = ZodUnknown.create;\nconst neverType = ZodNever.create;\nconst voidType = ZodVoid.create;\nconst arrayType = ZodArray.create;\nconst objectType = ZodObject.create;\nconst strictObjectType = ZodObject.strictCreate;\nconst unionType = ZodUnion.create;\nconst discriminatedUnionType = ZodDiscriminatedUnion.create;\nconst intersectionType = ZodIntersection.create;\nconst tupleType = ZodTuple.create;\nconst recordType = ZodRecord.create;\nconst mapType = ZodMap.create;\nconst setType = ZodSet.create;\nconst functionType = ZodFunction.create;\nconst lazyType = ZodLazy.create;\nconst literalType = ZodLiteral.create;\nconst enumType = ZodEnum.create;\nconst nativeEnumType = ZodNativeEnum.create;\nconst promiseType = ZodPromise.create;\nconst effectsType = ZodEffects.create;\nconst optionalType = ZodOptional.create;\nconst nullableType = ZodNullable.create;\nconst preprocessType = ZodEffects.createWithPreprocess;\nconst pipelineType = ZodPipeline.create;\nconst ostring = () => stringType().optional();\nconst onumber = () => numberType().optional();\nconst oboolean = () => booleanType().optional();\nexport const coerce = {\n string: ((arg) => ZodString.create({ ...arg, coerce: true })),\n number: ((arg) => ZodNumber.create({ ...arg, coerce: true })),\n boolean: ((arg) => ZodBoolean.create({\n ...arg,\n coerce: true,\n })),\n bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })),\n date: ((arg) => ZodDate.create({ ...arg, coerce: true })),\n};\nexport { anyType as any, arrayType as array, bigIntType as bigint, booleanType as boolean, dateType as date, discriminatedUnionType as discriminatedUnion, effectsType as effect, enumType as enum, functionType as function, instanceOfType as instanceof, intersectionType as intersection, lazyType as lazy, literalType as literal, mapType as map, nanType as nan, nativeEnumType as nativeEnum, neverType as never, nullType as null, nullableType as nullable, numberType as number, objectType as object, oboolean, onumber, optionalType as optional, ostring, pipelineType as pipeline, preprocessType as preprocess, promiseType as promise, recordType as record, setType as set, strictObjectType as strictObject, stringType as string, symbolType as symbol, effectsType as transformer, tupleType as tuple, undefinedType as undefined, unionType as union, unknownType as unknown, voidType as void, };\nexport const NEVER = INVALID;\n","export * from \"./errors.js\";\nexport * from \"./helpers/parseUtil.js\";\nexport * from \"./helpers/typeAliases.js\";\nexport * from \"./helpers/util.js\";\nexport * from \"./types.js\";\nexport * from \"./ZodError.js\";\n","import * as z from \"./v3/external.js\";\nexport * from \"./v3/external.js\";\nexport { z };\nexport default z;\n","import type {\n CreateTenantResponse,\n IdTokenClaims,\n OidcCallbackParams,\n ScimUser,\n StandardSchemaV1,\n TokenResponse,\n} from '@enterprisestandard/react';\nimport { z } from 'zod';\n\n/**\n * Pre-built Zod validators for OIDC/SSO flows\n *\n * These validators implement the StandardSchemaV1 interface and can be used\n * directly in SSOHandlerConfig.validation\n *\n * @example\n * ```typescript\n * import { createZodValidators } from '@enterprisestandard/react-validators-zod';\n *\n * const validators = createZodValidators();\n *\n * const ssoConfig: SSOHandlerConfig = {\n * loginUrl: '/api/auth/login',\n * validation: validators,\n * };\n * ```\n */\nexport function createZodValidators() {\n const oidcCallbackParamsSchema = z.object({\n code: z.string(),\n state: z.string().optional(),\n session_state: z.string().optional(),\n error: z.string().optional(),\n error_description: z.string().optional(),\n error_uri: z.string().optional(),\n iss: z.string().optional(),\n });\n\n const idTokenClaimsSchema = z\n .object({\n sub: z.string().optional(),\n iss: z.string().optional(),\n aud: z.string().optional(),\n exp: z.number().optional(),\n iat: z.number().optional(),\n sid: z.string().optional(),\n name: z.string().optional(),\n email: z.string().email().optional(),\n preferred_username: z.string().optional(),\n picture: z.string().url().optional(),\n })\n .passthrough(); // Allow additional claims\n\n const tokenResponseSchema = z.object({\n access_token: z.string(),\n id_token: z.string(),\n refresh_token: z.string().optional(),\n token_type: z.string(),\n expires_in: z.number().optional(),\n scope: z.string().optional(),\n refresh_expires_in: z.number().optional(),\n session_state: z.string().optional(),\n expires: z.string().optional(),\n });\n\n return {\n callbackParams: oidcCallbackParamsSchema as unknown as StandardSchemaV1<unknown, OidcCallbackParams>,\n idTokenClaims: idTokenClaimsSchema as unknown as StandardSchemaV1<unknown, IdTokenClaims>,\n tokenResponse: tokenResponseSchema as unknown as StandardSchemaV1<unknown, TokenResponse>,\n };\n}\n\n/**\n * Individual Zod schema factories for custom usage\n */\nexport const zodValidators = {\n /**\n * Creates a Zod validator for OIDC callback parameters\n *\n * @example\n * ```typescript\n * import { zodValidators } from '@enterprisestandard/react-validators-zod';\n *\n * const callbackParams = zodValidators.oidcCallbackParams();\n * ```\n */\n oidcCallbackParams: () =>\n z.object({\n code: z.string(),\n state: z.string().optional(),\n session_state: z.string().optional(),\n error: z.string().optional(),\n error_description: z.string().optional(),\n error_uri: z.string().optional(),\n iss: z.string().optional(),\n }) as unknown as StandardSchemaV1<unknown, OidcCallbackParams>,\n\n /**\n * Creates a Zod validator for ID token claims\n * Use .extend() to add custom claims validation\n *\n * @example Extending with custom claims\n * ```typescript\n * import { zodValidators } from '@enterprisestandard/react-validators-zod';\n * import { z } from 'zod';\n *\n * const customClaimsSchema = (zodValidators.idTokenClaims() as any)\n * .extend({\n * custom_claim: z.string(),\n * roles: z.array(z.string()),\n * });\n * ```\n */\n idTokenClaims: () =>\n z\n .object({\n sub: z.string().optional(),\n iss: z.string().optional(),\n aud: z.string().optional(),\n exp: z.number().optional(),\n iat: z.number().optional(),\n sid: z.string().optional(),\n name: z.string().optional(),\n email: z.string().email().optional(),\n preferred_username: z.string().optional(),\n picture: z.string().url().optional(),\n })\n .passthrough() as unknown as StandardSchemaV1<unknown, IdTokenClaims>,\n\n /**\n * Creates a Zod validator for token responses from IdP\n *\n * @example\n * ```typescript\n * import { zodValidators } from '@enterprisestandard/react-validators-zod';\n *\n * const tokenResponse = zodValidators.tokenResponse();\n * ```\n */\n tokenResponse: () =>\n z.object({\n access_token: z.string(),\n id_token: z.string(),\n refresh_token: z.string().optional(),\n token_type: z.string(),\n expires_in: z.number().optional(),\n scope: z.string().optional(),\n refresh_expires_in: z.number().optional(),\n session_state: z.string().optional(),\n expires: z.string().optional(),\n }) as unknown as StandardSchemaV1<unknown, TokenResponse>,\n\n /**\n * Creates a Zod validator for SCIM User resources\n * Use .extend() to add custom SCIM extensions\n *\n * @example\n * ```typescript\n * import { zodValidators } from '@enterprisestandard/react-validators-zod';\n *\n * const userValidator = zodValidators.scimUser();\n * ```\n *\n * @example Extending with custom SCIM schema extensions\n * ```typescript\n * import { zodValidators } from '@enterprisestandard/react-validators-zod';\n * import { z } from 'zod';\n *\n * const customUserSchema = (zodValidators.scimUser() as any)\n * .extend({\n * 'urn:ietf:params:scim:schemas:extension:custom:2.0:User': z.object({\n * customField: z.string(),\n * }),\n * });\n * ```\n */\n scimUser: () => {\n const nameSchema = z.object({\n formatted: z.string().optional(),\n familyName: z.string().optional(),\n givenName: z.string().optional(),\n middleName: z.string().optional(),\n honorificPrefix: z.string().optional(),\n honorificSuffix: z.string().optional(),\n });\n\n const emailSchema = z.object({\n value: z.string().email(),\n display: z.string().optional(),\n type: z.string().optional(),\n primary: z.boolean().optional(),\n });\n\n const phoneNumberSchema = z.object({\n value: z.string(),\n display: z.string().optional(),\n type: z.string().optional(),\n primary: z.boolean().optional(),\n });\n\n const addressSchema = z.object({\n formatted: z.string().optional(),\n streetAddress: z.string().optional(),\n locality: z.string().optional(),\n region: z.string().optional(),\n postalCode: z.string().optional(),\n country: z.string().optional(),\n type: z.string().optional(),\n primary: z.boolean().optional(),\n });\n\n const groupSchema = z.object({\n value: z.string(),\n $ref: z.string().optional(),\n display: z.string().optional(),\n type: z.string().optional(),\n });\n\n const roleSchema = z.object({\n value: z.string(),\n display: z.string().optional(),\n type: z.string().optional(),\n primary: z.boolean().optional(),\n });\n\n const enterpriseUserSchema = z.object({\n employeeNumber: z.string().optional(),\n costCenter: z.string().optional(),\n organization: z.string().optional(),\n division: z.string().optional(),\n department: z.string().optional(),\n manager: z\n .object({\n value: z.string().optional(),\n $ref: z.string().optional(),\n displayName: z.string().optional(),\n })\n .optional(),\n });\n\n return z.object({\n id: z.string().optional(),\n externalId: z.string().optional(),\n meta: z\n .object({\n resourceType: z.string().optional(),\n created: z.string().optional(),\n lastModified: z.string().optional(),\n location: z.string().optional(),\n version: z.string().optional(),\n })\n .optional(),\n userName: z.string(),\n name: nameSchema.optional(),\n displayName: z.string().optional(),\n nickName: z.string().optional(),\n profileUrl: z.string().url().optional(),\n title: z.string().optional(),\n userType: z.string().optional(),\n preferredLanguage: z.string().optional(),\n locale: z.string().optional(),\n timezone: z.string().optional(),\n active: z.boolean().optional(),\n password: z.string().optional(),\n emails: z.array(emailSchema).optional(),\n phoneNumbers: z.array(phoneNumberSchema).optional(),\n ims: z\n .array(\n z.object({\n value: z.string(),\n display: z.string().optional(),\n type: z.string().optional(),\n primary: z.boolean().optional(),\n }),\n )\n .optional(),\n photos: z\n .array(\n z.object({\n value: z.string(),\n display: z.string().optional(),\n type: z.string().optional(),\n primary: z.boolean().optional(),\n }),\n )\n .optional(),\n addresses: z.array(addressSchema).optional(),\n groups: z.array(groupSchema).optional(),\n entitlements: z\n .array(\n z.object({\n value: z.string(),\n display: z.string().optional(),\n type: z.string().optional(),\n primary: z.boolean().optional(),\n }),\n )\n .optional(),\n roles: z.array(roleSchema).optional(),\n x509Certificates: z\n .array(\n z.object({\n value: z.string(),\n display: z.string().optional(),\n type: z.string().optional(),\n primary: z.boolean().optional(),\n }),\n )\n .optional(),\n 'urn:ietf:params:scim:schemas:extension:enterprise:2.0:User': enterpriseUserSchema.optional(),\n schemas: z.array(z.string()).optional(),\n }) as unknown as StandardSchemaV1<unknown, ScimUser>;\n },\n\n /**\n * Creates a Zod validator for tenant creation responses\n *\n * @example\n * ```typescript\n * import { zodValidators } from '@enterprisestandard/react-validators-zod';\n *\n * const tenantResponse = zodValidators.createTenantResponse();\n * ```\n */\n createTenantResponse: () =>\n z.object({\n tenantUrl: z.string().url(),\n status: z.enum(['pending', 'processing', 'completed', 'failed']),\n }) as unknown as StandardSchemaV1<unknown, CreateTenantResponse>,\n};\n","/**\n * IAM Validation Tests\n *\n * These tests validate that an application correctly implements\n * Enterprise Standard IAM (Identity and Access Management) via SCIM.\n *\n * The core IAM tests validate user management operations. Group management\n * has two optional extensions:\n * - `ext.createGroupsOutboundTests()` - Tests app calling external IAM provider\n * - `ext.createGroupsInboundTests()` - Tests external IAM provider calling app\n */\n\nimport type { IAMValidationConfig, TestDef, ValidationResult, ValidationSuiteResult } from '../types';\nimport { assert, assertValid, createFetcher, runTest, skipTest } from '../utils';\n\n/**\n * Gets a SCIM user validator\n * Requires either @enterprisestandard/react-validators-valibot or @enterprisestandard/react-validators-zod to be installed\n */\nlet cachedScimUserValidator: any = null;\nlet scimUserValidatorPromise: Promise<any> | null = null;\n\nasync function getScimUserValidator(): Promise<any> {\n if (cachedScimUserValidator) {\n return cachedScimUserValidator;\n }\n\n if (scimUserValidatorPromise) {\n return scimUserValidatorPromise;\n }\n\n scimUserValidatorPromise = (async () => {\n try {\n const { valibotValidators } = await import('@enterprisestandard/react-validators-valibot');\n cachedScimUserValidator = valibotValidators.scimUser();\n return cachedScimUserValidator;\n } catch {\n try {\n const { zodValidators } = await import('@enterprisestandard/react-validators-zod');\n cachedScimUserValidator = zodValidators.scimUser();\n return cachedScimUserValidator;\n } catch (_error) {\n throw new Error(\n 'IAM validation requires either @enterprisestandard/react-validators-valibot or @enterprisestandard/react-validators-zod to be installed. Please install one of these packages.',\n );\n }\n }\n })();\n\n return scimUserValidatorPromise;\n}\n\n/**\n * Gets a SCIM group validator (simple inline validator for minimal required fields)\n */\nfunction getScimGroupValidator(): any {\n return {\n '~standard': {\n validate: (value: unknown) => {\n if (typeof value !== 'object' || value === null) {\n return {\n issues: [{ message: `Expected object, got ${typeof value}` }],\n };\n }\n\n const group = value as Record<string, unknown>;\n const issues: Array<{ message: string; path?: ReadonlyArray<PropertyKey> }> = [];\n\n if (typeof group.id !== 'string') {\n issues.push({ message: 'Expected id to be string', path: ['id'] });\n }\n\n if (typeof group.displayName !== 'string') {\n issues.push({ message: 'Expected displayName to be string', path: ['displayName'] });\n }\n\n if (issues.length > 0) {\n return { issues };\n }\n\n return { value };\n },\n },\n };\n}\n\n/**\n * Default configuration for IAM validation\n */\nconst DEFAULT_CONFIG: Partial<IAMValidationConfig> = {\n scimPath: '/api/iam',\n testUser: {\n userName: 'esv-test-user@example.com',\n displayName: 'ESV Test User',\n emails: [{ value: 'esv-test-user@example.com', primary: true }],\n name: {\n givenName: 'ESV Test',\n familyName: 'User',\n },\n },\n testGroup: {\n displayName: 'ESV Test Group',\n externalId: 'esv-test-group-001',\n },\n};\n\n/**\n * Gets authorization header\n */\nasync function getAuthHeader(config: IAMValidationConfig): Promise<string> {\n // Use es.workload.getToken() for authentication\n // es can be a function (for lazy evaluation) or the instance directly\n const esInstance = typeof config.es === 'function' ? config.es() : config.es;\n if (esInstance === null || esInstance === undefined) {\n throw new Error('IAM tests require es (EnterpriseStandard instance) with workload configured');\n }\n if (!esInstance.workload) {\n throw new Error(\n 'Workload management is required for IAM tests. EnterpriseStandard instance provided but workload is not configured.',\n );\n }\n const token = await esInstance.workload.getToken();\n return `Bearer ${token}`;\n}\n\n/**\n * Test: SCIM Users endpoint returns proper schema\n */\nasync function testUsersEndpointSchema(\n config: IAMValidationConfig,\n fetch: ReturnType<typeof createFetcher>,\n): Promise<ValidationResult> {\n return runTest('IAM Users Endpoint Schema', async () => {\n const auth = await getAuthHeader(config);\n const response = await fetch(`${config.scimPath}/Users`, {\n headers: {\n Authorization: auth,\n Accept: 'application/scim+json',\n },\n });\n\n // Should return 200 OK\n assert(response.status === 200, `Expected 200 OK, got ${response.status}`);\n\n const data = await response.json();\n\n // Should have SCIM list response structure\n assert(Array.isArray(data.schemas), 'Response missing schemas array');\n assert(\n data.schemas.includes('urn:ietf:params:scim:api:messages:2.0:ListResponse'),\n 'Response missing SCIM ListResponse schema',\n );\n assert(typeof data.totalResults === 'number', 'Response missing totalResults');\n assert(Array.isArray(data.Resources), 'Response missing Resources array');\n\n return {\n details: {\n totalResults: data.totalResults,\n resourceCount: data.Resources.length,\n },\n };\n });\n}\n\n/**\n * Test: SCIM Groups endpoint returns proper schema\n */\nasync function testGroupsEndpointSchema(\n config: IAMValidationConfig,\n fetch: ReturnType<typeof createFetcher>,\n): Promise<ValidationResult> {\n return runTest('IAM Groups Endpoint Schema', async () => {\n const auth = await getAuthHeader(config);\n const response = await fetch(`${config.scimPath}/Groups`, {\n headers: {\n Authorization: auth,\n Accept: 'application/scim+json',\n },\n });\n\n // Should return 200 OK\n assert(response.status === 200, `Expected 200 OK, got ${response.status}`);\n\n const data = await response.json();\n\n // Should have SCIM list response structure\n assert(Array.isArray(data.schemas), 'Response missing schemas array');\n assert(\n data.schemas.includes('urn:ietf:params:scim:api:messages:2.0:ListResponse'),\n 'Response missing SCIM ListResponse schema',\n );\n\n return {\n details: {\n totalResults: data.totalResults,\n resourceCount: data.Resources?.length ?? 0,\n },\n };\n });\n}\n\n/**\n * Test: Create User (SCIM POST /Users)\n */\nasync function testCreateUser(\n config: IAMValidationConfig,\n fetch: ReturnType<typeof createFetcher>,\n): Promise<ValidationResult & { userId?: string }> {\n if (!config.testUser) {\n return { ...skipTest('IAM Create User', 'No test user configured'), userId: undefined };\n }\n\n const result = await runTest('IAM Create User', async () => {\n const auth = await getAuthHeader(config);\n const userPayload = {\n schemas: [\n 'urn:ietf:params:scim:schemas:core:2.0:User',\n 'urn:ietf:params:scim:schemas:extension:enterprise:2.0:User',\n ],\n ...config.testUser,\n };\n\n const response = await fetch(`${config.scimPath}/Users`, {\n method: 'POST',\n headers: {\n Authorization: auth,\n 'Content-Type': 'application/scim+json',\n Accept: 'application/scim+json',\n },\n body: JSON.stringify(userPayload),\n });\n\n // Should return 201 Created\n assert(response.status === 201, `Expected 201 Created, got ${response.status}`);\n\n const data = await response.json();\n\n // Should have SCIM user structure - validate using validator\n const validator = await getScimUserValidator();\n assertValid(data, validator);\n\n assert(Array.isArray(data.schemas), 'Created user missing schemas array');\n assert(\n data.schemas.includes('urn:ietf:params:scim:schemas:core:2.0:User'),\n 'Created user missing SCIM User schema',\n );\n\n return {\n details: {\n userId: data.id,\n userName: data.userName,\n },\n };\n });\n\n return {\n ...result,\n userId: result.details?.userId as string | undefined,\n };\n}\n\n/**\n * Test: Get User by ID (SCIM GET /Users/{id})\n */\nasync function testGetUser(\n config: IAMValidationConfig,\n fetch: ReturnType<typeof createFetcher>,\n userId: string,\n): Promise<ValidationResult> {\n return runTest('IAM Get User', async () => {\n const auth = await getAuthHeader(config);\n const response = await fetch(`${config.scimPath}/Users/${userId}`, {\n headers: {\n Authorization: auth,\n Accept: 'application/scim+json',\n },\n });\n\n // Should return 200 OK\n assert(response.status === 200, `Expected 200 OK, got ${response.status}`);\n\n const data = await response.json();\n\n // Should have SCIM user structure - validate using validator\n const validator = await getScimUserValidator();\n assertValid(data, validator);\n\n assert(data.id === userId, `User ID mismatch: expected ${userId}, got ${data.id}`);\n\n return {\n details: {\n userId: data.id,\n userName: data.userName,\n },\n };\n });\n}\n\n/**\n * Test: Update User (SCIM PATCH /Users/{id})\n */\nasync function testUpdateUser(\n config: IAMValidationConfig,\n fetch: ReturnType<typeof createFetcher>,\n userId: string,\n): Promise<ValidationResult> {\n return runTest('IAM Update User', async () => {\n const auth = await getAuthHeader(config);\n const patchPayload = {\n schemas: ['urn:ietf:params:scim:api:messages:2.0:PatchOp'],\n Operations: [\n {\n op: 'replace',\n path: 'displayName',\n value: 'ESV Test User (Updated)',\n },\n ],\n };\n\n const response = await fetch(`${config.scimPath}/Users/${userId}`, {\n method: 'PATCH',\n headers: {\n Authorization: auth,\n 'Content-Type': 'application/scim+json',\n Accept: 'application/scim+json',\n },\n body: JSON.stringify(patchPayload),\n });\n\n // Should return 200 OK\n assert(response.status === 200, `Expected 200 OK, got ${response.status}`);\n\n const data = await response.json();\n assert(data.displayName === 'ESV Test User (Updated)', `displayName was not updated`);\n\n return {\n details: {\n userId: data.id,\n displayName: data.displayName,\n },\n };\n });\n}\n\n/**\n * Test: Delete User (SCIM DELETE /Users/{id})\n */\nasync function testDeleteUser(\n config: IAMValidationConfig,\n fetch: ReturnType<typeof createFetcher>,\n userId: string,\n): Promise<ValidationResult> {\n return runTest('IAM Delete User', async () => {\n const auth = await getAuthHeader(config);\n const response = await fetch(`${config.scimPath}/Users/${userId}`, {\n method: 'DELETE',\n headers: {\n Authorization: auth,\n },\n });\n\n // Should return 204 No Content\n assert(response.status === 204, `Expected 204 No Content, got ${response.status}`);\n\n // Verify user is deleted\n const getResponse = await fetch(`${config.scimPath}/Users/${userId}`, {\n headers: {\n Authorization: auth,\n Accept: 'application/scim+json',\n },\n });\n\n assert(getResponse.status === 404, `Expected 404 after deletion, got ${getResponse.status}`);\n\n return {\n details: {\n userId,\n deleted: true,\n },\n };\n });\n}\n\n/**\n * Test: Create Group (SCIM POST /Groups)\n */\nasync function testCreateGroup(\n config: IAMValidationConfig,\n fetch: ReturnType<typeof createFetcher>,\n): Promise<ValidationResult & { groupId?: string }> {\n if (!config.testGroup) {\n return { ...skipTest('IAM Create Group', 'No test group configured'), groupId: undefined };\n }\n\n const result = await runTest('IAM Create Group', async () => {\n const auth = await getAuthHeader(config);\n const groupPayload = {\n schemas: ['urn:ietf:params:scim:schemas:core:2.0:Group'],\n ...config.testGroup,\n };\n\n const response = await fetch(`${config.scimPath}/Groups`, {\n method: 'POST',\n headers: {\n Authorization: auth,\n 'Content-Type': 'application/scim+json',\n Accept: 'application/scim+json',\n },\n body: JSON.stringify(groupPayload),\n });\n\n // Should return 201 Created\n assert(response.status === 201, `Expected 201 Created, got ${response.status}`);\n\n const data = await response.json();\n\n // Should have SCIM group structure - validate using validator\n const groupValidator = getScimGroupValidator();\n assertValid(data, groupValidator);\n\n return {\n details: {\n groupId: data.id,\n displayName: data.displayName,\n },\n };\n });\n\n return {\n ...result,\n groupId: result.details?.groupId as string | undefined,\n };\n}\n\n/**\n * Test: Delete Group (SCIM DELETE /Groups/{id})\n */\nasync function testDeleteGroup(\n config: IAMValidationConfig,\n fetch: ReturnType<typeof createFetcher>,\n groupId: string,\n): Promise<ValidationResult> {\n return runTest('IAM Delete Group', async () => {\n const auth = await getAuthHeader(config);\n const response = await fetch(`${config.scimPath}/Groups/${groupId}`, {\n method: 'DELETE',\n headers: {\n Authorization: auth,\n },\n });\n\n // Should return 204 No Content\n assert(response.status === 204, `Expected 204 No Content, got ${response.status}`);\n\n return {\n details: {\n groupId,\n deleted: true,\n },\n };\n });\n}\n\n/**\n * Test: Users endpoint requires authentication\n */\nasync function testUsersEndpointRequiresAuth(\n config: IAMValidationConfig,\n fetch: ReturnType<typeof createFetcher>,\n): Promise<ValidationResult> {\n return runTest('IAM Users Endpoint Requires Authentication', async () => {\n // Try to access Users without auth\n const response = await fetch(`${config.scimPath}/Users`, {\n headers: {\n Accept: 'application/scim+json',\n },\n });\n\n assert(response.status === 401, `Expected 401 Unauthorized for Users, got ${response.status}`);\n\n return {\n details: {\n usersRequiresAuth: true,\n },\n };\n });\n}\n\n/**\n * Test: Groups endpoint requires authentication\n */\nasync function testGroupsEndpointRequiresAuth(\n config: IAMValidationConfig,\n fetch: ReturnType<typeof createFetcher>,\n): Promise<ValidationResult> {\n return runTest('IAM Groups Endpoint Requires Authentication', async () => {\n // Try to access Groups without auth\n const response = await fetch(`${config.scimPath}/Groups`, {\n headers: {\n Accept: 'application/scim+json',\n },\n });\n\n assert(response.status === 401, `Expected 401 Unauthorized for Groups, got ${response.status}`);\n\n return {\n details: {\n groupsRequiresAuth: true,\n },\n };\n });\n}\n\n/**\n * Runs all IAM validation tests (core user tests + optional groups tests)\n */\nexport async function validateIAM(config: IAMValidationConfig): Promise<ValidationSuiteResult> {\n const startTime = performance.now();\n const mergedConfig = { ...DEFAULT_CONFIG, ...config };\n const fetch = createFetcher(mergedConfig);\n\n const tests: ValidationResult[] = [];\n\n // Check if we have authentication via es\n // es can be a function (for lazy evaluation) or the instance directly\n const esInstance = typeof config.es === 'function' ? config.es() : config.es;\n if (esInstance === null || esInstance === undefined) {\n return {\n suite: 'IAM',\n passed: false,\n tests: [\n {\n name: 'IAM Configuration',\n passed: false,\n error: 'IAM tests require es (EnterpriseStandard instance) with workload configured',\n duration: 0,\n },\n ],\n duration: 0,\n summary: {\n total: 1,\n passed: 0,\n failed: 1,\n skipped: 0,\n },\n };\n }\n if (!esInstance.workload) {\n return {\n suite: 'IAM',\n passed: false,\n tests: [\n {\n name: 'IAM Configuration',\n passed: false,\n error:\n 'Workload management is required for IAM tests. EnterpriseStandard instance provided but workload is not configured.',\n duration: 0,\n },\n ],\n duration: 0,\n summary: {\n total: 1,\n passed: 0,\n failed: 1,\n skipped: 0,\n },\n };\n }\n\n // Test authentication requirement for Users\n tests.push(await testUsersEndpointRequiresAuth(mergedConfig, fetch));\n\n // Test list Users endpoint\n tests.push(await testUsersEndpointSchema(mergedConfig, fetch));\n\n // Test User CRUD cycle\n const createUserResult = await testCreateUser(mergedConfig, fetch);\n tests.push(createUserResult);\n\n if (createUserResult.passed && createUserResult.userId) {\n tests.push(await testGetUser(mergedConfig, fetch, createUserResult.userId));\n tests.push(await testUpdateUser(mergedConfig, fetch, createUserResult.userId));\n tests.push(await testDeleteUser(mergedConfig, fetch, createUserResult.userId));\n }\n\n // Optional: Test Groups if testGroup is configured\n if (config.testGroup) {\n tests.push(await testGroupsEndpointRequiresAuth(mergedConfig, fetch));\n tests.push(await testGroupsEndpointSchema(mergedConfig, fetch));\n\n const createGroupResult = await testCreateGroup(mergedConfig, fetch);\n tests.push(createGroupResult);\n\n if (createGroupResult.passed && createGroupResult.groupId) {\n tests.push(await testDeleteGroup(mergedConfig, fetch, createGroupResult.groupId));\n }\n }\n\n const duration = performance.now() - startTime;\n const passed = tests.filter((t) => t.passed).length;\n const failed = tests.filter((t) => !t.passed).length;\n const skipped = tests.filter((t) => t.details?.skipped).length;\n\n return {\n suite: 'IAM',\n passed: failed === 0,\n tests,\n duration,\n summary: {\n total: tests.length,\n passed: passed - skipped,\n failed,\n skipped,\n },\n };\n}\n\n/**\n * Creates Vitest-compatible test suite for IAM validation.\n *\n * Returns `{ tests, ext }` where:\n * - `tests`: Core user management tests (always run)\n * - `ext`: Extension methods for optional functionality:\n * - `createGroupsOutboundTests()` - Tests app calling external IAM provider\n * - `createGroupsInboundTests()` - Tests external IAM provider calling app\n *\n * @example\n * ```ts\n * describe('IAM', () => {\n * const { tests, ext } = createIAMTests({ ... });\n *\n * // Core user tests\n * tests.forEach(({ name, fn }) => it(name, fn));\n *\n * // Optional: Groups Outbound tests (app -> external IAM)\n * describe('Groups Outbound', () => {\n * ext.createGroupsOutboundTests().forEach(({ name, fn }) => it(name, fn));\n * });\n *\n * // Optional: Groups Inbound tests (external IAM -> app)\n * describe('Groups Inbound', () => {\n * ext.createGroupsInboundTests().forEach(({ name, fn }) => it(name, fn));\n * });\n * });\n * ```\n */\nexport function createIAMTests(config: IAMValidationConfig) {\n const mergedConfig = { ...DEFAULT_CONFIG, ...config };\n const fetch = createFetcher(mergedConfig);\n\n // Store IDs for dependent tests\n let createdUserId: string | undefined;\n let createdGroupIdOutbound: string | undefined;\n let createdGroupIdInbound: string | undefined;\n\n // Core user management tests\n const tests: Array<TestDef> = [\n {\n name: 'users endpoint requires authentication',\n fn: async () => {\n const result = await testUsersEndpointRequiresAuth(mergedConfig, fetch);\n if (!result.passed) throw new Error(result.error);\n },\n },\n {\n name: 'users endpoint returns proper SCIM schema',\n fn: async () => {\n const result = await testUsersEndpointSchema(mergedConfig, fetch);\n if (!result.passed) throw new Error(result.error);\n },\n },\n {\n name: 'can create a user',\n fn: async () => {\n const result = await testCreateUser(mergedConfig, fetch);\n if (!result.passed) throw new Error(result.error);\n createdUserId = result.userId;\n },\n },\n {\n name: 'can get a user by ID',\n fn: async () => {\n if (!createdUserId) throw new Error('No user ID from create test');\n const result = await testGetUser(mergedConfig, fetch, createdUserId);\n if (!result.passed) throw new Error(result.error);\n },\n },\n {\n name: 'can update a user',\n fn: async () => {\n if (!createdUserId) throw new Error('No user ID from create test');\n const result = await testUpdateUser(mergedConfig, fetch, createdUserId);\n if (!result.passed) throw new Error(result.error);\n },\n },\n {\n name: 'can delete a user',\n fn: async () => {\n if (!createdUserId) throw new Error('No user ID from create test');\n const result = await testDeleteUser(mergedConfig, fetch, createdUserId);\n if (!result.passed) throw new Error(result.error);\n },\n },\n ];\n\n // Extension methods for optional functionality\n const ext = {\n /**\n * Create tests for Groups Outbound extension.\n * Tests app calling external IAM provider to create/manage groups.\n * These tests hit the external IAM's SCIM endpoints (proxied through the app).\n */\n createGroupsOutboundTests: (): Array<TestDef> => [\n {\n name: 'can create a group in external IAM',\n fn: async () => {\n const result = await testCreateGroup(mergedConfig, fetch);\n if (!result.passed) throw new Error(result.error);\n createdGroupIdOutbound = result.groupId;\n },\n },\n {\n name: 'can delete a group in external IAM',\n fn: async () => {\n if (!createdGroupIdOutbound) throw new Error('No group ID from create test');\n const result = await testDeleteGroup(mergedConfig, fetch, createdGroupIdOutbound);\n if (!result.passed) throw new Error(result.error);\n },\n },\n ],\n\n /**\n * Create tests for Groups Inbound extension.\n * Tests external IAM provider calling app's SCIM endpoints.\n * These tests simulate an external IAM provider (like SailPoint) pushing group changes to the app.\n */\n createGroupsInboundTests: (): Array<TestDef> => {\n // Use a different path for inbound groups (the app's own SCIM server)\n const inboundPath = config.groupsInboundPath ?? `${config.scimPath}/Groups`;\n\n return [\n {\n name: 'inbound endpoint requires authentication',\n fn: async () => {\n const response = await fetch(inboundPath, {\n headers: {\n Accept: 'application/scim+json',\n },\n });\n if (response.status !== 401) {\n throw new Error(`Expected 401 Unauthorized, got ${response.status}`);\n }\n },\n },\n {\n name: 'inbound endpoint returns proper SCIM schema',\n fn: async () => {\n const auth = await getAuthHeader(mergedConfig);\n const response = await fetch(inboundPath, {\n headers: {\n Authorization: auth,\n Accept: 'application/scim+json',\n },\n });\n\n if (response.status !== 200) {\n throw new Error(`Expected 200 OK, got ${response.status}`);\n }\n\n const data = await response.json();\n if (!Array.isArray(data.schemas)) {\n throw new Error('Response missing schemas array');\n }\n if (!data.schemas.includes('urn:ietf:params:scim:api:messages:2.0:ListResponse')) {\n throw new Error('Response missing SCIM ListResponse schema');\n }\n },\n },\n {\n name: 'can receive group creation from IAM provider',\n fn: async () => {\n const auth = await getAuthHeader(mergedConfig);\n const groupPayload = {\n schemas: ['urn:ietf:params:scim:schemas:core:2.0:Group'],\n displayName: 'ESV Inbound Test Group',\n externalId: 'esv-inbound-test-group-001',\n };\n\n const response = await fetch(inboundPath, {\n method: 'POST',\n headers: {\n Authorization: auth,\n 'Content-Type': 'application/scim+json',\n Accept: 'application/scim+json',\n },\n body: JSON.stringify(groupPayload),\n });\n\n if (response.status !== 201) {\n throw new Error(`Expected 201 Created, got ${response.status}`);\n }\n\n const data = await response.json();\n if (!data.id || !data.displayName) {\n throw new Error('Created group missing id or displayName');\n }\n createdGroupIdInbound = data.id;\n },\n },\n {\n name: 'can receive group deletion from IAM provider',\n fn: async () => {\n if (!createdGroupIdInbound) throw new Error('No group ID from create test');\n const auth = await getAuthHeader(mergedConfig);\n\n const response = await fetch(`${inboundPath}/${createdGroupIdInbound}`, {\n method: 'DELETE',\n headers: {\n Authorization: auth,\n },\n });\n\n if (response.status !== 204) {\n throw new Error(`Expected 204 No Content, got ${response.status}`);\n }\n },\n },\n ];\n },\n };\n\n return { tests, ext };\n}\n\nexport type { IAMValidationConfig };\n","/**\n * SSO Validation Tests\n *\n * These tests validate that an application correctly implements\n * Enterprise Standard SSO (Single Sign-On) functionality.\n */\n\nimport type { SSOValidationConfig, TestDef, ValidationResult, ValidationSuiteResult } from '../types';\nimport { assert, buildCookieHeader, createFetcher, parseCookies, runTest, skipTest } from '../utils';\n\n/**\n * Default configuration for SSO validation\n */\nconst DEFAULT_CONFIG: Partial<SSOValidationConfig> = {\n loginPath: '/api/auth/login',\n callbackPath: '/api/auth/callback',\n userPath: '/api/auth/user',\n logoutPath: '/api/auth/logout',\n backChannelLogoutPath: '/api/auth/logout/backchannel',\n tokenPath: '/api/auth/token',\n refreshPath: '/api/auth/refresh',\n};\n\n/**\n * Test: Login endpoint exists and redirects to authorization URL\n */\nasync function testLoginEndpoint(\n config: SSOValidationConfig,\n fetch: ReturnType<typeof createFetcher>,\n): Promise<ValidationResult> {\n return runTest('SSO Login Endpoint', async () => {\n const response = await fetch(config.loginPath!);\n\n // Should return a redirect (302)\n assert(response.status === 302, `Expected 302 redirect, got ${response.status}`);\n\n // Should have a Location header pointing to the authorization URL\n const location = response.headers.get('Location');\n assert(location !== null, 'Missing Location header in redirect');\n\n // If an expected pattern is provided, validate the URL\n if (config.expectedAuthorizationUrlPattern) {\n assert(\n config.expectedAuthorizationUrlPattern.test(location),\n `Authorization URL does not match expected pattern: ${location}`,\n );\n }\n\n // Should have required OIDC parameters\n const url = new URL(location);\n assert(url.searchParams.has('client_id'), 'Missing client_id in authorization URL');\n assert(url.searchParams.has('redirect_uri'), 'Missing redirect_uri in authorization URL');\n assert(url.searchParams.has('response_type'), 'Missing response_type in authorization URL');\n assert(url.searchParams.has('scope'), 'Missing scope in authorization URL');\n assert(url.searchParams.has('state'), 'Missing state in authorization URL');\n assert(url.searchParams.has('code_challenge'), 'Missing code_challenge (PKCE) in authorization URL');\n assert(url.searchParams.has('code_challenge_method'), 'Missing code_challenge_method (PKCE) in authorization URL');\n\n // Should set a state cookie\n const cookies = parseCookies(response.headers);\n const hasStateCookie = Array.from(cookies.keys()).some((name) => name.includes('.state'));\n assert(hasStateCookie, 'Missing state cookie in response');\n\n return {\n details: {\n authorizationUrl: location,\n pkceEnabled: true,\n stateParameter: url.searchParams.get('state'),\n },\n };\n });\n}\n\n/**\n * Test: User endpoint returns 401 when not authenticated\n */\nasync function testUserEndpointUnauthenticated(\n config: SSOValidationConfig,\n fetch: ReturnType<typeof createFetcher>,\n): Promise<ValidationResult> {\n return runTest('SSO User Endpoint (Unauthenticated)', async () => {\n const response = await fetch(config.userPath!);\n\n // Should return 401 Unauthorized\n assert(response.status === 401, `Expected 401 Unauthorized, got ${response.status}`);\n\n return {\n details: {\n status: response.status,\n },\n };\n });\n}\n\n/**\n * Test: Logout endpoint clears cookies\n */\nasync function testLogoutEndpoint(\n config: SSOValidationConfig,\n fetch: ReturnType<typeof createFetcher>,\n): Promise<ValidationResult> {\n return runTest('SSO Logout Endpoint', async () => {\n const response = await fetch(`${config.logoutPath!}?redirect=/`);\n\n // Should return 302 redirect (with redirect param) or 200\n assert(response.status === 302 || response.status === 200, `Expected 302 or 200, got ${response.status}`);\n\n // Should clear cookies\n const cookies = parseCookies(response.headers);\n const clearedCookies: string[] = [];\n\n for (const [name, value] of cookies.entries()) {\n // Check if the cookie is being cleared (Max-Age=0 or empty value)\n if (value === '' || value.includes('Max-Age=0')) {\n clearedCookies.push(name);\n }\n }\n\n // Check for standard SSO cookies being cleared\n const setCookieHeaders = response.headers.getSetCookie?.() ?? [];\n const hasExpiredCookies = setCookieHeaders.some(\n (cookie) => cookie.includes('Max-Age=0') || cookie.includes('expires=Thu, 01 Jan 1970'),\n );\n\n assert(\n hasExpiredCookies || clearedCookies.length > 0 || setCookieHeaders.length === 0,\n 'Logout should clear session cookies',\n );\n\n return {\n details: {\n status: response.status,\n clearedCookies,\n },\n };\n });\n}\n\n/**\n * Test: Back-channel logout endpoint exists\n */\nasync function testBackChannelLogoutEndpoint(\n config: SSOValidationConfig,\n fetch: ReturnType<typeof createFetcher>,\n): Promise<ValidationResult> {\n return runTest('SSO Back-Channel Logout Endpoint', async () => {\n // Send a POST request without a valid logout token\n // The endpoint should exist and return 400 (bad request) for missing token\n const response = await fetch(config.backChannelLogoutPath!, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n body: '',\n });\n\n // Should return 400 (missing logout_token) or 200 (if session store not configured)\n assert(\n response.status === 400 || response.status === 200 || response.status === 404,\n `Expected 400 or 200, got ${response.status}`,\n );\n\n return {\n details: {\n status: response.status,\n endpointExists: response.status !== 404,\n },\n };\n });\n}\n\n/**\n * Test: Callback endpoint returns error without valid code\n */\nasync function testCallbackEndpointInvalid(\n config: SSOValidationConfig,\n fetch: ReturnType<typeof createFetcher>,\n): Promise<ValidationResult> {\n return runTest('SSO Callback Endpoint (Invalid)', async () => {\n // Send a callback request without proper state/code\n const response = await fetch(`${config.callbackPath!}?code=invalid&state=invalid`);\n\n // Should return 400 or 500 (validation error)\n assert(response.status >= 400, `Expected error status for invalid callback, got ${response.status}`);\n\n return {\n details: {\n status: response.status,\n handlesInvalidCallback: true,\n },\n };\n });\n}\n\n/**\n * Test: Token endpoint returns 401 when not authenticated\n */\nasync function testTokenEndpointUnauthenticated(\n config: SSOValidationConfig,\n fetch: ReturnType<typeof createFetcher>,\n): Promise<ValidationResult> {\n if (!config.tokenPath) {\n return skipTest('SSO Token Endpoint (Unauthenticated)', 'Token path not configured');\n }\n\n return runTest('SSO Token Endpoint (Unauthenticated)', async () => {\n const response = await fetch(config.tokenPath!);\n\n // Should return 401 Unauthorized\n assert(\n response.status === 401 || response.status === 404,\n `Expected 401 Unauthorized or 404, got ${response.status}`,\n );\n\n return {\n details: {\n status: response.status,\n },\n };\n });\n}\n\n/**\n * Test: Refresh endpoint returns 401 when not authenticated\n */\nasync function testRefreshEndpointUnauthenticated(\n config: SSOValidationConfig,\n fetch: ReturnType<typeof createFetcher>,\n): Promise<ValidationResult> {\n if (!config.refreshPath) {\n return skipTest('SSO Refresh Endpoint (Unauthenticated)', 'Refresh path not configured');\n }\n\n return runTest('SSO Refresh Endpoint (Unauthenticated)', async () => {\n const response = await fetch(config.refreshPath!);\n\n // Should return 401 Unauthorized\n assert(\n response.status === 401 || response.status === 404,\n `Expected 401 Unauthorized or 404, got ${response.status}`,\n );\n\n return {\n details: {\n status: response.status,\n },\n };\n });\n}\n\n/**\n * Helper: Complete a full SSO login flow through the mock server\n *\n * Returns the cookies set after successful authentication\n */\nasync function completeLoginFlow(\n config: SSOValidationConfig,\n fetch: ReturnType<typeof createFetcher>,\n): Promise<{ cookies: Map<string, string>; success: boolean; error?: string }> {\n try {\n // Step 1: Hit the login endpoint to get the authorization redirect\n const loginResponse = await fetch(config.loginPath!);\n\n if (loginResponse.status !== 302) {\n return { cookies: new Map(), success: false, error: `Login did not redirect: ${loginResponse.status}` };\n }\n\n const authUrl = loginResponse.headers.get('Location');\n if (!authUrl) {\n return { cookies: new Map(), success: false, error: 'No redirect location from login' };\n }\n\n // Collect cookies from login response (includes state cookie)\n const loginCookies = parseCookies(loginResponse.headers);\n\n // Step 2: Follow the redirect to the authorization endpoint (mock server auto-authenticates)\n const authResponse = await globalThis.fetch(authUrl, { redirect: 'manual' });\n\n if (authResponse.status !== 302) {\n return { cookies: new Map(), success: false, error: `Auth did not redirect: ${authResponse.status}` };\n }\n\n const callbackUrl = authResponse.headers.get('Location');\n if (!callbackUrl) {\n return { cookies: new Map(), success: false, error: 'No redirect location from auth' };\n }\n\n // Step 3: Complete the callback with the authorization code\n // Extract just the path and query from the callback URL\n const callbackPath = new URL(callbackUrl).pathname + new URL(callbackUrl).search;\n\n const callbackResponse = await fetch(callbackPath, {\n headers: {\n Cookie: buildCookieHeader(loginCookies),\n },\n });\n\n // Should redirect to landing page on success\n if (callbackResponse.status !== 302) {\n return { cookies: new Map(), success: false, error: `Callback did not redirect: ${callbackResponse.status}` };\n }\n\n // Collect all cookies from the callback response\n const allCookies = parseCookies(callbackResponse.headers);\n\n return { cookies: allCookies, success: true };\n } catch (error) {\n return { cookies: new Map(), success: false, error: error instanceof Error ? error.message : String(error) };\n }\n}\n\n/**\n * Test: JIT user provisioning works when enabled\n *\n * This test completes a full SSO flow and verifies the user is authenticated.\n * The actual JIT provisioning behavior depends on the server configuration.\n */\nasync function testJitUserProvisioningFlow(\n config: SSOValidationConfig,\n fetch: ReturnType<typeof createFetcher>,\n): Promise<ValidationResult> {\n return runTest('SSO JIT User Provisioning Flow', async () => {\n // Complete the full login flow\n const { cookies, success, error } = await completeLoginFlow(config, fetch);\n\n assert(success, error || 'Login flow failed');\n\n // Verify we got authentication cookies\n const hasAuthCookies = Array.from(cookies.keys()).some((name) => name.includes('.access') || name.includes('.id'));\n assert(hasAuthCookies, 'No authentication cookies set after login');\n\n // Verify we can now access the user endpoint\n const userResponse = await fetch(config.userPath!, {\n headers: {\n Cookie: buildCookieHeader(cookies),\n },\n });\n\n assert(userResponse.status === 200, `User endpoint returned ${userResponse.status} after login, expected 200`);\n\n const userData = await userResponse.json();\n assert(userData.id, 'User data missing id field');\n\n return {\n details: {\n userId: userData.id,\n userName: userData.userName,\n email: userData.email,\n jitFlowCompleted: true,\n },\n };\n });\n}\n\n/**\n * Runs all SSO validation tests\n */\nexport async function validateSSO(config: SSOValidationConfig): Promise<ValidationSuiteResult> {\n const startTime = performance.now();\n const mergedConfig = { ...DEFAULT_CONFIG, ...config };\n const fetch = createFetcher(mergedConfig);\n\n const tests: ValidationResult[] = [];\n\n // Run all tests\n tests.push(await testLoginEndpoint(mergedConfig, fetch));\n tests.push(await testUserEndpointUnauthenticated(mergedConfig, fetch));\n tests.push(await testLogoutEndpoint(mergedConfig, fetch));\n tests.push(await testBackChannelLogoutEndpoint(mergedConfig, fetch));\n tests.push(await testCallbackEndpointInvalid(mergedConfig, fetch));\n tests.push(await testTokenEndpointUnauthenticated(mergedConfig, fetch));\n tests.push(await testRefreshEndpointUnauthenticated(mergedConfig, fetch));\n tests.push(await testJitUserProvisioningFlow(mergedConfig, fetch));\n\n const duration = performance.now() - startTime;\n const passed = tests.filter((t) => t.passed).length;\n const failed = tests.filter((t) => !t.passed).length;\n const skipped = tests.filter((t) => t.details?.skipped).length;\n\n return {\n suite: 'SSO',\n passed: failed === 0,\n tests,\n duration,\n summary: {\n total: tests.length,\n passed: passed - skipped,\n failed,\n skipped,\n },\n };\n}\n\n/**\n * Creates Vitest-compatible test suite for SSO validation\n */\nexport function createSSOTests(config: SSOValidationConfig) {\n const mergedConfig = { ...DEFAULT_CONFIG, ...config };\n const fetch = createFetcher(mergedConfig);\n\n // Core/mandatory SSO tests\n const tests: Array<TestDef> = [\n {\n name: 'login endpoint redirects to authorization URL',\n fn: async () => {\n const result = await testLoginEndpoint(mergedConfig, fetch);\n if (!result.passed) throw new Error(result.error);\n },\n },\n {\n name: 'user endpoint returns 401 when unauthenticated',\n fn: async () => {\n const result = await testUserEndpointUnauthenticated(mergedConfig, fetch);\n if (!result.passed) throw new Error(result.error);\n },\n },\n {\n name: 'callback endpoint rejects invalid requests',\n fn: async () => {\n const result = await testCallbackEndpointInvalid(mergedConfig, fetch);\n if (!result.passed) throw new Error(result.error);\n },\n },\n {\n name: 'token endpoint returns 401 when unauthenticated',\n fn: async () => {\n const result = await testTokenEndpointUnauthenticated(mergedConfig, fetch);\n if (!result.passed) throw new Error(result.error);\n },\n },\n {\n name: 'refresh endpoint returns 401 when unauthenticated',\n fn: async () => {\n const result = await testRefreshEndpointUnauthenticated(mergedConfig, fetch);\n if (!result.passed) throw new Error(result.error);\n },\n },\n ];\n\n // Extension methods for optional functionality\n const ext = {\n createJITTests: (): Array<TestDef> => [\n {\n name: 'user provisioning flow completes successfully',\n fn: async () => {\n const result = await testJitUserProvisioningFlow(mergedConfig, fetch);\n if (!result.passed) throw new Error(result.error);\n },\n },\n ],\n createLogoutTests: (): Array<TestDef> => [\n {\n name: 'logout endpoint clears cookies',\n fn: async () => {\n const result = await testLogoutEndpoint(mergedConfig, fetch);\n if (!result.passed) throw new Error(result.error);\n },\n },\n ],\n createBackChannelLogoutTests: (): Array<TestDef> => [\n {\n name: 'endpoint exists',\n fn: async () => {\n const result = await testBackChannelLogoutEndpoint(mergedConfig, fetch);\n if (!result.passed) throw new Error(result.error);\n },\n },\n ],\n };\n\n return { tests, ext };\n}\n\nexport type { SSOValidationConfig };\n","/**\n * Tenant Validation Tests\n *\n * These tests validate that an application correctly implements\n * Enterprise Standard Tenant Management functionality.\n */\n\nimport type { TenantValidationConfig, TestDef, ValidationResult, ValidationSuiteResult } from '../types';\nimport { assert, assertValid, createFetcher, runTest } from '../utils';\n\n/**\n * Gets a tenant response validator\n * Requires either @enterprisestandard/react-validators-valibot or @enterprisestandard/react-validators-zod to be installed\n * Uses a cached validator to avoid repeated imports\n */\nlet cachedValidator: any = null;\nlet validatorPromise: Promise<any> | null = null;\n\nasync function getTenantResponseValidator(): Promise<any> {\n // Return cached validator if available\n if (cachedValidator) {\n return cachedValidator;\n }\n\n // If we're already loading, return the existing promise\n if (validatorPromise) {\n return validatorPromise;\n }\n\n // Start loading the validator\n validatorPromise = (async () => {\n // Try valibot first\n try {\n const { valibotValidators } = await import('@enterprisestandard/react-validators-valibot');\n cachedValidator = valibotValidators.createTenantResponse();\n return cachedValidator;\n } catch {\n // Fall back to zod\n try {\n const { zodValidators } = await import('@enterprisestandard/react-validators-zod');\n cachedValidator = zodValidators.createTenantResponse();\n return cachedValidator;\n } catch (_error) {\n throw new Error(\n 'Tenant validation requires either @enterprisestandard/react-validators-valibot or @enterprisestandard/react-validators-zod to be installed. Please install one of these packages.',\n );\n }\n }\n })();\n\n return validatorPromise;\n}\n\n/**\n * Default configuration for Tenant validation\n */\nconst DEFAULT_CONFIG: Partial<TenantValidationConfig> = {\n tenantPath: '/api/tenant',\n};\n\n/**\n * Test: Tenant creation endpoint returns valid response structure\n */\nasync function testCreateTenantResponseShape(\n config: TenantValidationConfig,\n fetch: ReturnType<typeof createFetcher>,\n tenantData: TenantValidationConfig['testTenantData'],\n webhookUrl?: string,\n): Promise<ValidationResult & { response?: unknown; tenantUrl?: string; status?: string }> {\n const result = await runTest('Tenant Creation Response Shape', async () => {\n if (!tenantData) {\n return {\n details: {\n skipped: true,\n reason: 'Test tenant data not provided',\n },\n };\n }\n\n const payload = {\n appId: tenantData.appId,\n companyId: tenantData.companyId,\n companyName: tenantData.companyName,\n environmentType: tenantData.environmentType,\n email: tenantData.email,\n webhookUrl: webhookUrl || 'https://example.com/webhook',\n };\n\n const response = await fetch(config.tenantPath!, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(payload),\n });\n\n // Should return 201 or 202\n assert(response.status === 201 || response.status === 202, `Expected 201 or 202, got ${response.status}`);\n\n const data = await response.json();\n\n // Should have tenant response structure - validate using validator\n const validator = await getTenantResponseValidator();\n assertValid(data, validator);\n\n return {\n details: {\n status: data.status,\n httpStatus: response.status,\n tenantUrl: data.tenantUrl,\n response: data,\n },\n };\n });\n\n return {\n ...result,\n response: result.details?.response,\n tenantUrl: result.details?.tenantUrl as string | undefined,\n status: result.details?.status as string | undefined,\n };\n}\n\n/**\n * Test: Tenant creation with immediate completion (201)\n */\nasync function testCreateTenantImmediate(\n config: TenantValidationConfig,\n fetch: ReturnType<typeof createFetcher>,\n tenantData: TenantValidationConfig['testTenantData'],\n): Promise<ValidationResult> {\n return runTest('Tenant Creation (Immediate - 201)', async () => {\n if (!tenantData) {\n return {\n details: {\n skipped: true,\n reason: 'Test tenant data not provided',\n },\n };\n }\n\n const payload = {\n appId: tenantData.appId,\n companyId: tenantData.companyId,\n companyName: tenantData.companyName,\n environmentType: tenantData.environmentType,\n email: tenantData.email,\n webhookUrl: 'https://example.com/webhook',\n };\n\n const response = await fetch(config.tenantPath!, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(payload),\n });\n\n // For immediate creation, we expect either 201 or 202\n // 201 indicates completed, 202 indicates pending/async\n assert(response.status === 201 || response.status === 202, `Expected 201 or 202, got ${response.status}`);\n\n const data = await response.json();\n\n // Should have tenant response structure - validate using validator\n const validator = await getTenantResponseValidator();\n assertValid(data, validator);\n\n // If status is 201, status should be \"completed\"\n if (response.status === 201) {\n assert(data.status === 'completed', `Expected status \"completed\" for 201 response, got ${data.status}`);\n }\n\n return {\n details: {\n httpStatus: response.status,\n status: data.status,\n tenantUrl: data.tenantUrl,\n },\n };\n });\n}\n\n/**\n * Test: Tenant creation with async processing (202)\n */\nasync function testCreateTenantAsync(\n config: TenantValidationConfig,\n fetch: ReturnType<typeof createFetcher>,\n tenantData: TenantValidationConfig['testTenantData'],\n webhookUrl?: string,\n): Promise<ValidationResult> {\n return runTest('Tenant Creation (Async - 202)', async () => {\n if (!tenantData) {\n return {\n details: {\n skipped: true,\n reason: 'Test tenant data not provided',\n },\n };\n }\n\n const payload = {\n appId: tenantData.appId,\n companyId: tenantData.companyId,\n companyName: tenantData.companyName,\n environmentType: tenantData.environmentType,\n email: tenantData.email,\n webhookUrl: webhookUrl || 'https://example.com/webhook',\n };\n\n const response = await fetch(config.tenantPath!, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(payload),\n });\n\n // For async creation, we expect 202\n // But we also accept 201 (some apps may complete immediately)\n assert(response.status === 201 || response.status === 202, `Expected 201 or 202, got ${response.status}`);\n\n const data = await response.json();\n\n // Should have tenant response structure - validate using validator\n const validator = await getTenantResponseValidator();\n assertValid(data, validator);\n\n // If status is 202, status should be \"pending\" or \"processing\"\n if (response.status === 202) {\n assert(\n data.status === 'pending' || data.status === 'processing',\n `Expected status \"pending\" or \"processing\" for 202 response, got ${data.status}`,\n );\n }\n\n return {\n details: {\n httpStatus: response.status,\n status: data.status,\n tenantUrl: data.tenantUrl,\n isAsync: response.status === 202,\n },\n };\n });\n}\n\n/**\n * Test: Tenant creation endpoint validates required fields\n */\nasync function testCreateTenantValidation(\n config: TenantValidationConfig,\n fetch: ReturnType<typeof createFetcher>,\n): Promise<ValidationResult> {\n return runTest('Tenant Creation (Validation)', async () => {\n // Test with missing required fields\n const invalidPayload = {\n companyId: 'test-company',\n // Missing other required fields\n };\n\n const response = await fetch(config.tenantPath!, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(invalidPayload),\n });\n\n // Should return 400 for invalid request\n assert(response.status === 400, `Expected 400 Bad Request for invalid payload, got ${response.status}`);\n\n return {\n details: {\n status: response.status,\n },\n };\n });\n}\n\n/**\n * Runs all Tenant validation tests\n */\nexport async function validateTenant(config: TenantValidationConfig): Promise<ValidationSuiteResult> {\n const startTime = performance.now();\n const mergedConfig = { ...DEFAULT_CONFIG, ...config };\n const fetch = createFetcher(mergedConfig);\n\n const tests: ValidationResult[] = [];\n\n // Test validation (invalid payload)\n tests.push(await testCreateTenantValidation(mergedConfig, fetch));\n\n // Test response shape and get response data\n const shapeResult = await testCreateTenantResponseShape(\n mergedConfig,\n fetch,\n mergedConfig.testTenantData,\n mergedConfig.webhookPath ? `${mergedConfig.baseUrl}${mergedConfig.webhookPath}` : undefined,\n );\n tests.push(shapeResult);\n\n // Test immediate creation (201)\n tests.push(await testCreateTenantImmediate(mergedConfig, fetch, mergedConfig.testTenantData));\n\n // Test async creation (202)\n tests.push(\n await testCreateTenantAsync(\n mergedConfig,\n fetch,\n mergedConfig.testTenantData,\n mergedConfig.webhookPath ? `${mergedConfig.baseUrl}${mergedConfig.webhookPath}` : undefined,\n ),\n );\n\n const duration = performance.now() - startTime;\n const passed = tests.filter((t) => t.passed).length;\n const failed = tests.filter((t) => !t.passed).length;\n const skipped = tests.filter((t) => t.details?.skipped).length;\n\n return {\n suite: 'Tenant',\n passed: failed === 0,\n tests,\n duration,\n summary: {\n total: tests.length,\n passed: passed - skipped,\n failed,\n skipped,\n },\n };\n}\n\n/**\n * Creates Vitest-compatible test suite for Tenant validation\n */\nexport function createTenantTests(config: TenantValidationConfig): Array<TestDef> {\n const mergedConfig = { ...DEFAULT_CONFIG, ...config };\n const fetch = createFetcher(mergedConfig);\n\n return [\n {\n name: 'tenant creation endpoint validates required fields',\n fn: async () => {\n const result = await testCreateTenantValidation(mergedConfig, fetch);\n if (!result.passed) throw new Error(result.error);\n },\n },\n {\n name: 'tenant creation returns valid response structure',\n fn: async () => {\n const result = await testCreateTenantResponseShape(\n mergedConfig,\n fetch,\n mergedConfig.testTenantData,\n mergedConfig.webhookPath ? `${mergedConfig.baseUrl}${mergedConfig.webhookPath}` : undefined,\n );\n if (!result.passed && !result.details?.skipped) throw new Error(result.error);\n },\n },\n {\n name: 'tenant creation supports immediate completion (201)',\n fn: async () => {\n const result = await testCreateTenantImmediate(mergedConfig, fetch, mergedConfig.testTenantData);\n if (!result.passed && !result.details?.skipped) throw new Error(result.error);\n },\n },\n {\n name: 'tenant creation supports async processing (202)',\n fn: async () => {\n const result = await testCreateTenantAsync(\n mergedConfig,\n fetch,\n mergedConfig.testTenantData,\n mergedConfig.webhookPath ? `${mergedConfig.baseUrl}${mergedConfig.webhookPath}` : undefined,\n );\n if (!result.passed && !result.details?.skipped) throw new Error(result.error);\n },\n },\n ];\n}\n\nexport type { TenantValidationConfig };\n","/**\n * Workload Validation Tests\n *\n * These tests validate that an application correctly implements\n * Enterprise Standard Workload Identity authentication.\n */\n\nimport type { TestDef, ValidationResult, ValidationSuiteResult, WorkloadValidationConfig } from '../types';\nimport { assert, assertValid, createFetcher, runTest, skipTest } from '../utils';\n\n/**\n * Gets a workload token response validator (workload tokens don't have id_token, only access_token)\n * This is different from OIDC tokenResponse which includes id_token\n */\nfunction getWorkloadTokenResponseValidator(): any {\n return {\n '~standard': {\n validate: (value: unknown) => {\n if (typeof value !== 'object' || value === null) {\n return {\n issues: [{ message: `Expected object, got ${typeof value}` }],\n };\n }\n\n const token = value as Record<string, unknown>;\n const issues: Array<{ message: string; path?: ReadonlyArray<PropertyKey> }> = [];\n\n if (typeof token.access_token !== 'string') {\n issues.push({ message: 'Expected access_token to be string', path: ['access_token'] });\n }\n\n if (typeof token.token_type !== 'string') {\n issues.push({ message: 'Expected token_type to be string', path: ['token_type'] });\n }\n\n // expires_in is optional but if present should be a number\n if (token.expires_in !== undefined && typeof token.expires_in !== 'number') {\n issues.push({ message: 'Expected expires_in to be number or undefined', path: ['expires_in'] });\n }\n\n // scope is optional but if present should be a string\n if (token.scope !== undefined && typeof token.scope !== 'string') {\n issues.push({ message: 'Expected scope to be string or undefined', path: ['scope'] });\n }\n\n if (issues.length > 0) {\n return { issues };\n }\n\n return { value };\n },\n },\n };\n}\n\n/**\n * Gets a JWKS key validator (simple inline validator for standard JWKS key structure)\n */\nfunction getJwksKeyValidator(): any {\n // JWKS keys have a standard structure - create a simple validator inline\n // This validates the minimal required fields: kty and kid\n return {\n '~standard': {\n validate: (value: unknown) => {\n if (typeof value !== 'object' || value === null) {\n return {\n issues: [{ message: `Expected object, got ${typeof value}` }],\n };\n }\n\n const key = value as Record<string, unknown>;\n const issues: Array<{ message: string; path?: ReadonlyArray<PropertyKey> }> = [];\n\n if (typeof key.kty !== 'string') {\n issues.push({ message: 'Expected kty to be string', path: ['kty'] });\n }\n\n if (typeof key.kid !== 'string') {\n issues.push({ message: 'Expected kid to be string', path: ['kid'] });\n }\n\n if (issues.length > 0) {\n return { issues };\n }\n\n return { value };\n },\n },\n };\n}\n\n/**\n * Gets a token validation result validator (simple inline validator)\n */\nfunction getTokenValidationResultValidator(): any {\n return {\n '~standard': {\n validate: (value: unknown) => {\n if (typeof value !== 'object' || value === null) {\n return {\n issues: [{ message: `Expected object, got ${typeof value}` }],\n };\n }\n\n const result = value as Record<string, unknown>;\n const issues: Array<{ message: string; path?: ReadonlyArray<PropertyKey> }> = [];\n\n if (typeof result.valid !== 'boolean') {\n issues.push({ message: 'Expected valid to be boolean', path: ['valid'] });\n }\n\n if (issues.length > 0) {\n return { issues };\n }\n\n return { value };\n },\n },\n };\n}\n\n/**\n * Default configuration for Workload validation\n */\nconst DEFAULT_CONFIG: Partial<WorkloadValidationConfig> = {\n tokenPath: '/api/workload/token',\n validatePath: '/api/workload/validate',\n jwksPath: '/api/workload/jwks',\n refreshPath: '/api/workload/refresh',\n esvUrl: 'http://localhost:3555',\n};\n\n/**\n * Test: JWKS endpoint returns valid JWKS structure\n */\nasync function testJwksEndpoint(\n config: WorkloadValidationConfig,\n fetch: ReturnType<typeof createFetcher>,\n): Promise<ValidationResult> {\n return runTest('Workload JWKS Endpoint', async () => {\n const response = await fetch(config.jwksPath!);\n\n // Should return 200 OK\n assert(response.status === 200, `Expected 200 OK, got ${response.status}`);\n\n const data = await response.json();\n\n // Should have JWKS structure\n assert(Array.isArray(data.keys), 'JWKS response missing keys array');\n\n // Each key should have required fields - validate using validator\n const keyValidator = getJwksKeyValidator();\n for (const key of data.keys) {\n assertValid(key, keyValidator);\n }\n\n return {\n details: {\n keyCount: data.keys.length,\n algorithms: data.keys.map((k: { alg?: string }) => k.alg).filter(Boolean),\n },\n };\n });\n}\n\n/**\n * Test: Token endpoint returns access token\n */\nasync function testTokenEndpoint(\n config: WorkloadValidationConfig,\n fetch: ReturnType<typeof createFetcher>,\n): Promise<ValidationResult & { token?: string }> {\n const result = await runTest('Workload Token Endpoint', async () => {\n const url = config.testScopes\n ? `${config.tokenPath}?scope=${encodeURIComponent(config.testScopes)}`\n : config.tokenPath!;\n\n const response = await fetch(url);\n\n // Should return 200 OK (or 503 if workload not configured)\n if (response.status === 503) {\n return {\n details: {\n skipped: true,\n reason: 'Workload authentication not configured',\n },\n };\n }\n\n assert(response.status === 200, `Expected 200 OK, got ${response.status}`);\n\n const data = await response.json();\n\n // Should have token response structure - validate using workload-specific validator\n // (workload tokens don't have id_token, only access_token)\n const validator = getWorkloadTokenResponseValidator();\n assertValid(data, validator);\n\n return {\n details: {\n tokenType: data.token_type,\n hasToken: !!data.access_token,\n token: data.access_token,\n },\n };\n });\n\n return {\n ...result,\n token: result.details?.token as string | undefined,\n };\n}\n\n/**\n * Test: Token validation endpoint works\n */\nasync function testValidateEndpoint(\n config: WorkloadValidationConfig,\n fetch: ReturnType<typeof createFetcher>,\n token: string,\n): Promise<ValidationResult> {\n return runTest('Workload Validate Endpoint', async () => {\n const response = await fetch(config.validatePath!, {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${token}`,\n },\n });\n\n // Should return 200 OK for valid token\n assert(response.status === 200, `Expected 200 OK for valid token, got ${response.status}`);\n\n const data = await response.json();\n\n // Should have validation result structure - validate using validator\n const validationResultValidator = getTokenValidationResultValidator();\n assertValid(data, validationResultValidator);\n\n assert(data.valid === true, 'Token should be valid');\n\n return {\n details: {\n valid: data.valid,\n claims: data.claims,\n },\n };\n });\n}\n\n/**\n * Test: Token validation rejects invalid tokens\n */\nasync function testValidateEndpointInvalid(\n config: WorkloadValidationConfig,\n fetch: ReturnType<typeof createFetcher>,\n): Promise<ValidationResult> {\n return runTest('Workload Validate Endpoint (Invalid Token)', async () => {\n const response = await fetch(config.validatePath!, {\n method: 'POST',\n headers: {\n Authorization: 'Bearer invalid.token.here',\n },\n });\n\n // Should return 401 for invalid token\n assert(response.status === 401, `Expected 401 Unauthorized for invalid token, got ${response.status}`);\n\n const data = await response.json();\n\n // Should indicate token is invalid - validate using validator\n const validationResultValidator = getTokenValidationResultValidator();\n assertValid(data, validationResultValidator);\n\n assert(data.valid === false, 'Invalid token should not validate');\n\n return {\n details: {\n valid: data.valid,\n error: data.error,\n },\n };\n });\n}\n\n/**\n * Test: Token validation rejects missing authorization header\n */\nasync function testValidateEndpointNoAuth(\n config: WorkloadValidationConfig,\n fetch: ReturnType<typeof createFetcher>,\n): Promise<ValidationResult> {\n return runTest('Workload Validate Endpoint (No Auth)', async () => {\n const response = await fetch(config.validatePath!, {\n method: 'POST',\n });\n\n // Should return 401 for missing auth\n assert(response.status === 401, `Expected 401 Unauthorized for missing auth, got ${response.status}`);\n\n return {\n details: {\n status: response.status,\n requiresAuth: true,\n },\n };\n });\n}\n\n/**\n * Test: Refresh endpoint works\n */\nasync function testRefreshEndpoint(\n config: WorkloadValidationConfig,\n fetch: ReturnType<typeof createFetcher>,\n): Promise<ValidationResult> {\n return runTest('Workload Refresh Endpoint', async () => {\n const response = await fetch(config.refreshPath!, {\n method: 'POST',\n });\n\n // Should return 200 OK or 503 if not configured\n if (response.status === 503) {\n return {\n details: {\n skipped: true,\n reason: 'Workload authentication not configured',\n },\n };\n }\n\n assert(response.status === 200, `Expected 200 OK, got ${response.status}`);\n\n const data = await response.json();\n\n // Should have token response structure - validate using workload-specific validator\n // (workload tokens don't have id_token, only access_token)\n const validator = getWorkloadTokenResponseValidator();\n assertValid(data, validator);\n\n return {\n details: {\n tokenType: data.token_type,\n hasToken: !!data.access_token,\n },\n };\n });\n}\n\n/**\n * Test: Whoami endpoint with workload authentication\n *\n * This test calls the ESV mock server's /api/whoami endpoint to validate\n * that the workload token issued by the application is valid and can be\n * used for cross-service authentication. This allows each application to\n * be tested independently without requiring other applications to be running.\n */\nasync function testWhoamiWithWorkload(config: WorkloadValidationConfig, token: string): Promise<ValidationResult> {\n return runTest('Workload Authentication (Whoami)', async () => {\n // Call the ESV mock server's whoami endpoint with the workload token\n const esvWhoamiUrl = `${config.esvUrl}/api/whoami`;\n const response = await globalThis.fetch(esvWhoamiUrl, {\n headers: {\n Authorization: `Bearer ${token}`,\n },\n });\n\n // Should return 200 OK\n if (response.status === 404) {\n return {\n details: {\n skipped: true,\n reason: 'ESV whoami endpoint not available',\n },\n };\n }\n\n assert(response.status === 200, `Expected 200 OK, got ${response.status}`);\n\n const data = await response.json();\n\n // Should have workload identity in response\n assert(data.workload !== undefined, 'Response should include workload identity');\n\n return {\n details: {\n workloadId: data.workload?.workload_id,\n clientId: data.workload?.client_id,\n },\n };\n });\n}\n\n/**\n * Runs all Workload validation tests\n */\nexport async function validateWorkload(config: WorkloadValidationConfig): Promise<ValidationSuiteResult> {\n const startTime = performance.now();\n const mergedConfig = { ...DEFAULT_CONFIG, ...config };\n const fetch = createFetcher(mergedConfig);\n\n const tests: ValidationResult[] = [];\n\n // Test JWKS endpoint\n tests.push(await testJwksEndpoint(mergedConfig, fetch));\n\n // Test token endpoint and get a token for further tests\n const tokenResult = await testTokenEndpoint(mergedConfig, fetch);\n tests.push(tokenResult);\n\n // Test validation endpoints\n tests.push(await testValidateEndpointNoAuth(mergedConfig, fetch));\n tests.push(await testValidateEndpointInvalid(mergedConfig, fetch));\n\n // If we have a token, test validation with valid token\n const token = tokenResult.token ?? config.validToken;\n if (token) {\n tests.push(await testValidateEndpoint(mergedConfig, fetch, token));\n tests.push(await testWhoamiWithWorkload(mergedConfig, token));\n } else {\n tests.push(skipTest('Workload Validate Endpoint', 'No valid token available'));\n tests.push(skipTest('Workload Authentication (Whoami)', 'No valid token available'));\n }\n\n // Test refresh endpoint\n tests.push(await testRefreshEndpoint(mergedConfig, fetch));\n\n const duration = performance.now() - startTime;\n const passed = tests.filter((t) => t.passed).length;\n const failed = tests.filter((t) => !t.passed).length;\n const skipped = tests.filter((t) => t.details?.skipped).length;\n\n return {\n suite: 'Workload',\n passed: failed === 0,\n tests,\n duration,\n summary: {\n total: tests.length,\n passed: passed - skipped,\n failed,\n skipped,\n },\n };\n}\n\n/**\n * Creates Vitest-compatible test suite for Workload validation\n */\nexport function createWorkloadTests(config: WorkloadValidationConfig): Array<TestDef> {\n const mergedConfig = { ...DEFAULT_CONFIG, ...config };\n const fetch = createFetcher(mergedConfig);\n\n // Store token for dependent tests\n let acquiredToken: string | undefined;\n\n return [\n {\n name: 'JWKS endpoint returns valid keys',\n fn: async () => {\n const result = await testJwksEndpoint(mergedConfig, fetch);\n if (!result.passed) throw new Error(result.error);\n },\n },\n {\n name: 'token endpoint returns access token',\n fn: async () => {\n const result = await testTokenEndpoint(mergedConfig, fetch);\n if (!result.passed && !result.details?.skipped) throw new Error(result.error);\n acquiredToken = result.token;\n },\n },\n {\n name: 'validate endpoint rejects missing auth',\n fn: async () => {\n const result = await testValidateEndpointNoAuth(mergedConfig, fetch);\n if (!result.passed) throw new Error(result.error);\n },\n },\n {\n name: 'validate endpoint rejects invalid tokens',\n fn: async () => {\n const result = await testValidateEndpointInvalid(mergedConfig, fetch);\n if (!result.passed) throw new Error(result.error);\n },\n },\n {\n name: 'validate endpoint accepts valid token',\n fn: async () => {\n const token = acquiredToken ?? config.validToken;\n if (!token) {\n console.warn('Skipping: No valid token available');\n return;\n }\n const result = await testValidateEndpoint(mergedConfig, fetch, token);\n if (!result.passed) throw new Error(result.error);\n },\n },\n {\n name: 'whoami endpoint works with workload authentication',\n fn: async () => {\n const token = acquiredToken ?? config.validToken;\n if (!token) {\n console.warn('Skipping: No valid token available');\n return;\n }\n const result = await testWhoamiWithWorkload(mergedConfig, token);\n if (!result.passed && !result.details?.skipped) throw new Error(result.error);\n },\n },\n {\n name: 'refresh endpoint works',\n fn: async () => {\n const result = await testRefreshEndpoint(mergedConfig, fetch);\n if (!result.passed && !result.details?.skipped) throw new Error(result.error);\n },\n },\n ];\n}\n\nexport type { WorkloadValidationConfig };\n","import type { StandardSchemaV1 } from './standard-schema';\n\n/**\n * SCIM 2.0 User Resource\n * @see https://datatracker.ietf.org/doc/html/rfc7643#section-4.1\n */\n\n/**\n * SCIM Name sub-attribute\n */\nexport interface Name {\n /**\n * The full name, including all middle names, titles, and suffixes as appropriate\n */\n formatted?: string;\n /**\n * The family name of the User, or last name\n */\n familyName?: string;\n /**\n * The given name of the User, or first name\n */\n givenName?: string;\n /**\n * The middle name(s) of the User\n */\n middleName?: string;\n /**\n * The honorific prefix(es) of the User, or title\n */\n honorificPrefix?: string;\n /**\n * The honorific suffix(es) of the User, or suffix\n */\n honorificSuffix?: string;\n}\n\n/**\n * SCIM Email sub-attribute\n */\nexport interface Email {\n /**\n * The email address value\n */\n value: string;\n /**\n * A human-readable name, primarily used for display purposes\n */\n display?: string;\n /**\n * A label indicating the attribute's function (e.g., \"work\" or \"home\")\n */\n type?: string;\n /**\n * A Boolean value indicating the 'primary' or preferred attribute value\n */\n primary?: boolean;\n}\n\n/**\n * SCIM Phone Number sub-attribute\n */\nexport interface PhoneNumber {\n /**\n * The phone number value\n */\n value: string;\n /**\n * A human-readable name, primarily used for display purposes\n */\n display?: string;\n /**\n * A label indicating the attribute's function (e.g., \"work\", \"home\", \"mobile\")\n */\n type?: string;\n /**\n * A Boolean value indicating the 'primary' or preferred attribute value\n */\n primary?: boolean;\n}\n\n/**\n * SCIM Address sub-attribute\n */\nexport interface Address {\n /**\n * The full mailing address, formatted for display\n */\n formatted?: string;\n /**\n * The full street address component\n */\n streetAddress?: string;\n /**\n * The city or locality component\n */\n locality?: string;\n /**\n * The state or region component\n */\n region?: string;\n /**\n * The zip code or postal code component\n */\n postalCode?: string;\n /**\n * The country name component\n */\n country?: string;\n /**\n * A label indicating the attribute's function (e.g., \"work\" or \"home\")\n */\n type?: string;\n /**\n * A Boolean value indicating the 'primary' or preferred attribute value\n */\n primary?: boolean;\n}\n\n/**\n * SCIM Group reference (used within User resources)\n */\nexport interface Group {\n /**\n * The identifier of the User's group\n */\n value: string;\n /**\n * The URI of the corresponding 'Group' resource\n */\n $ref?: string;\n /**\n * A human-readable name, primarily used for display purposes\n */\n display?: string;\n /**\n * A label indicating the attribute's function (e.g., \"direct\" or \"indirect\")\n */\n type?: string;\n}\n\n/**\n * SCIM Group Member reference\n */\nexport interface GroupMember {\n /**\n * The identifier of the member (User or Group)\n */\n value: string;\n /**\n * The URI of the corresponding member resource\n */\n $ref?: string;\n /**\n * A human-readable name of the member\n */\n display?: string;\n /**\n * The type of the member (e.g., \"User\" or \"Group\")\n */\n type?: 'User' | 'Group';\n}\n\n/**\n * SCIM 2.0 Group Resource\n * @see https://datatracker.ietf.org/doc/html/rfc7643#section-4.2\n */\nexport interface GroupResource {\n /**\n * REQUIRED. The schemas attribute\n */\n schemas?: string[];\n /**\n * Unique identifier for the Group, assigned by the service provider\n */\n id?: string;\n /**\n * External identifier from the provisioning client\n */\n externalId?: string;\n /**\n * Resource metadata\n */\n meta?: {\n resourceType?: string;\n created?: string;\n lastModified?: string;\n location?: string;\n version?: string;\n };\n /**\n * REQUIRED. A human-readable name for the Group\n */\n displayName: string;\n /**\n * A list of members of the Group\n */\n members?: GroupMember[];\n}\n\n/**\n * SCIM Role\n */\nexport interface Role {\n /**\n * The value of the role\n */\n value: string;\n /**\n * A human-readable name, primarily used for display purposes\n */\n display?: string;\n /**\n * A label indicating the attribute's function\n */\n type?: string;\n /**\n * A Boolean value indicating the 'primary' or preferred attribute value\n */\n primary?: boolean;\n}\n\n/**\n * SCIM X509 Certificate\n */\nexport interface X509Certificate {\n /**\n * The value of the X.509 certificate\n */\n value: string;\n /**\n * A human-readable name, primarily used for display purposes\n */\n display?: string;\n /**\n * A label indicating the attribute's function\n */\n type?: string;\n /**\n * A Boolean value indicating the 'primary' or preferred attribute value\n */\n primary?: boolean;\n}\n\n/**\n * SCIM Enterprise User Extension\n * @see https://datatracker.ietf.org/doc/html/rfc7643#section-4.3\n */\nexport interface EnterpriseExtension {\n /**\n * Numeric or alphanumeric identifier assigned to a person\n */\n employeeNumber?: string;\n /**\n * Identifies the name of a cost center\n */\n costCenter?: string;\n /**\n * Identifies the name of an organization\n */\n organization?: string;\n /**\n * Identifies the name of a division\n */\n division?: string;\n /**\n * Identifies the name of a department\n */\n department?: string;\n /**\n * The user's manager\n */\n manager?: {\n /**\n * The \"id\" of the SCIM resource representing the User's manager\n */\n value?: string;\n /**\n * The URI of the SCIM resource representing the User's manager\n */\n $ref?: string;\n /**\n * The displayName of the User's manager\n */\n displayName?: string;\n };\n}\n\n/**\n * SCIM User Resource\n */\nexport interface User {\n /**\n * REQUIRED. Unique identifier for the User, typically from the provider\n */\n id?: string;\n /**\n * REQUIRED. A unique identifier for a SCIM resource as defined by the service provider\n */\n externalId?: string;\n /**\n * Resource metadata\n */\n meta?: {\n resourceType?: string;\n created?: string;\n lastModified?: string;\n location?: string;\n version?: string;\n };\n /**\n * REQUIRED. Unique identifier for the User, typically used for login\n */\n userName: string;\n /**\n * The components of the user's name\n */\n name?: Name;\n /**\n * The name of the User, suitable for display to end-users\n */\n displayName?: string;\n /**\n * The casual way to address the user\n */\n nickName?: string;\n /**\n * A fully qualified URL pointing to a page representing the User's online profile\n */\n profileUrl?: string;\n /**\n * The user's title, such as \"Vice President\"\n */\n title?: string;\n /**\n * Used to identify the relationship between the organization and the user\n */\n userType?: string;\n /**\n * Indicates the User's preferred written or spoken language\n */\n preferredLanguage?: string;\n /**\n * Used to indicate the User's default location for purposes of localizing items such as currency\n */\n locale?: string;\n /**\n * The User's time zone in the \"Olson\" time zone database format\n */\n timezone?: string;\n /**\n * A Boolean value indicating the User's administrative status\n */\n active?: boolean;\n /**\n * The User's cleartext password\n */\n password?: string;\n /**\n * Email addresses for the user\n */\n emails?: Email[];\n /**\n * Phone numbers for the User\n */\n phoneNumbers?: PhoneNumber[];\n /**\n * Instant messaging addresses for the User\n */\n ims?: Array<{\n value: string;\n display?: string;\n type?: string;\n primary?: boolean;\n }>;\n /**\n * URLs of photos of the User\n */\n photos?: Array<{\n value: string;\n display?: string;\n type?: string;\n primary?: boolean;\n }>;\n /**\n * Physical mailing addresses for this User\n */\n addresses?: Address[];\n /**\n * A list of groups to which the user belongs\n */\n groups?: Group[];\n /**\n * A list of entitlements for the User\n */\n entitlements?: Array<{\n value: string;\n display?: string;\n type?: string;\n primary?: boolean;\n }>;\n /**\n * A list of roles for the User\n */\n roles?: Role[];\n /**\n * A list of certificates issued to the User\n */\n x509Certificates?: X509Certificate[];\n /**\n * Enterprise User Extension\n */\n 'urn:ietf:params:scim:schemas:extension:enterprise:2.0:User'?: EnterpriseExtension;\n /**\n * REQUIRED. The schemas attribute is an array of Strings which allows introspection of the supported schema version\n */\n schemas?: string[];\n}\n\n/**\n * Validates a string field\n */\nfunction validateString(\n value: unknown,\n fieldName: string,\n required: boolean,\n issues: StandardSchemaV1.Issue[],\n path: PropertyKey[],\n): string | undefined {\n if (value === undefined || value === null) {\n if (required) {\n issues.push({\n message: `${fieldName} is required`,\n path,\n });\n }\n return undefined;\n }\n\n if (typeof value !== 'string') {\n issues.push({\n message: `${fieldName} must be a string`,\n path,\n });\n return undefined;\n }\n\n return value;\n}\n\n/**\n * Validates a boolean field\n */\nfunction validateBoolean(\n value: unknown,\n fieldName: string,\n issues: StandardSchemaV1.Issue[],\n path: PropertyKey[],\n): boolean | undefined {\n if (value === undefined || value === null) {\n return undefined;\n }\n\n if (typeof value !== 'boolean') {\n issues.push({\n message: `${fieldName} must be a boolean`,\n path,\n });\n return undefined;\n }\n\n return value;\n}\n\n/**\n * Validates a SCIM Name object\n */\nfunction validateName(value: unknown, issues: StandardSchemaV1.Issue[], basePath: PropertyKey[]): Name | undefined {\n if (value === undefined || value === null) {\n return undefined;\n }\n\n if (typeof value !== 'object' || value === null) {\n issues.push({\n message: 'name must be an object',\n path: basePath,\n });\n return undefined;\n }\n\n const name = value as Record<string, unknown>;\n const result: Name = {};\n\n result.formatted = validateString(name.formatted, 'formatted', false, issues, [...basePath, 'formatted']);\n result.familyName = validateString(name.familyName, 'familyName', false, issues, [...basePath, 'familyName']);\n result.givenName = validateString(name.givenName, 'givenName', false, issues, [...basePath, 'givenName']);\n result.middleName = validateString(name.middleName, 'middleName', false, issues, [...basePath, 'middleName']);\n result.honorificPrefix = validateString(name.honorificPrefix, 'honorificPrefix', false, issues, [\n ...basePath,\n 'honorificPrefix',\n ]);\n result.honorificSuffix = validateString(name.honorificSuffix, 'honorificSuffix', false, issues, [\n ...basePath,\n 'honorificSuffix',\n ]);\n\n return result;\n}\n\n/**\n * Validates a SCIM Email array\n */\nfunction validateEmails(\n value: unknown,\n issues: StandardSchemaV1.Issue[],\n basePath: PropertyKey[],\n): Email[] | undefined {\n if (value === undefined || value === null) {\n return undefined;\n }\n\n if (!Array.isArray(value)) {\n issues.push({\n message: 'emails must be an array',\n path: basePath,\n });\n return undefined;\n }\n\n const emails: Email[] = [];\n\n for (let i = 0; i < value.length; i++) {\n const email = value[i];\n const emailPath = [...basePath, i];\n\n if (typeof email !== 'object' || email === null) {\n issues.push({\n message: 'email must be an object',\n path: emailPath,\n });\n continue;\n }\n\n const emailObj = email as Record<string, unknown>;\n const emailValue = validateString(emailObj.value, 'value', true, issues, [...emailPath, 'value']);\n\n if (emailValue) {\n emails.push({\n value: emailValue,\n display: validateString(emailObj.display, 'display', false, issues, [...emailPath, 'display']),\n type: validateString(emailObj.type, 'type', false, issues, [...emailPath, 'type']),\n primary: validateBoolean(emailObj.primary, 'primary', issues, [...emailPath, 'primary']),\n });\n }\n }\n\n return emails.length > 0 ? emails : undefined;\n}\n\n/**\n * Validates a SCIM PhoneNumber array\n */\nfunction validatePhoneNumbers(\n value: unknown,\n issues: StandardSchemaV1.Issue[],\n basePath: PropertyKey[],\n): PhoneNumber[] | undefined {\n if (value === undefined || value === null) {\n return undefined;\n }\n\n if (!Array.isArray(value)) {\n issues.push({\n message: 'phoneNumbers must be an array',\n path: basePath,\n });\n return undefined;\n }\n\n const phoneNumbers: PhoneNumber[] = [];\n\n for (let i = 0; i < value.length; i++) {\n const phone = value[i];\n const phonePath = [...basePath, i];\n\n if (typeof phone !== 'object' || phone === null) {\n issues.push({\n message: 'phoneNumber must be an object',\n path: phonePath,\n });\n continue;\n }\n\n const phoneObj = phone as Record<string, unknown>;\n const phoneValue = validateString(phoneObj.value, 'value', true, issues, [...phonePath, 'value']);\n\n if (phoneValue) {\n phoneNumbers.push({\n value: phoneValue,\n display: validateString(phoneObj.display, 'display', false, issues, [...phonePath, 'display']),\n type: validateString(phoneObj.type, 'type', false, issues, [...phonePath, 'type']),\n primary: validateBoolean(phoneObj.primary, 'primary', issues, [...phonePath, 'primary']),\n });\n }\n }\n\n return phoneNumbers.length > 0 ? phoneNumbers : undefined;\n}\n\n/**\n * Validates a SCIM Address array\n */\nfunction validateAddresses(\n value: unknown,\n issues: StandardSchemaV1.Issue[],\n basePath: PropertyKey[],\n): Address[] | undefined {\n if (value === undefined || value === null) {\n return undefined;\n }\n\n if (!Array.isArray(value)) {\n issues.push({\n message: 'addresses must be an array',\n path: basePath,\n });\n return undefined;\n }\n\n const addresses: Address[] = [];\n\n for (let i = 0; i < value.length; i++) {\n const address = value[i];\n const addressPath = [...basePath, i];\n\n if (typeof address !== 'object' || address === null) {\n issues.push({\n message: 'address must be an object',\n path: addressPath,\n });\n continue;\n }\n\n const addressObj = address as Record<string, unknown>;\n\n addresses.push({\n formatted: validateString(addressObj.formatted, 'formatted', false, issues, [...addressPath, 'formatted']),\n streetAddress: validateString(addressObj.streetAddress, 'streetAddress', false, issues, [\n ...addressPath,\n 'streetAddress',\n ]),\n locality: validateString(addressObj.locality, 'locality', false, issues, [...addressPath, 'locality']),\n region: validateString(addressObj.region, 'region', false, issues, [...addressPath, 'region']),\n postalCode: validateString(addressObj.postalCode, 'postalCode', false, issues, [...addressPath, 'postalCode']),\n country: validateString(addressObj.country, 'country', false, issues, [...addressPath, 'country']),\n type: validateString(addressObj.type, 'type', false, issues, [...addressPath, 'type']),\n primary: validateBoolean(addressObj.primary, 'primary', issues, [...addressPath, 'primary']),\n });\n }\n\n return addresses.length > 0 ? addresses : undefined;\n}\n\n/**\n * Validates a SCIM Group array\n */\nfunction validateGroups(\n value: unknown,\n issues: StandardSchemaV1.Issue[],\n basePath: PropertyKey[],\n): Group[] | undefined {\n if (value === undefined || value === null) {\n return undefined;\n }\n\n if (!Array.isArray(value)) {\n issues.push({\n message: 'groups must be an array',\n path: basePath,\n });\n return undefined;\n }\n\n const groups: Group[] = [];\n\n for (let i = 0; i < value.length; i++) {\n const group = value[i];\n const groupPath = [...basePath, i];\n\n if (typeof group !== 'object' || group === null) {\n issues.push({\n message: 'group must be an object',\n path: groupPath,\n });\n continue;\n }\n\n const groupObj = group as Record<string, unknown>;\n const groupValue = validateString(groupObj.value, 'value', true, issues, [...groupPath, 'value']);\n\n if (groupValue) {\n groups.push({\n value: groupValue,\n $ref: validateString(groupObj.$ref, '$ref', false, issues, [...groupPath, '$ref']),\n display: validateString(groupObj.display, 'display', false, issues, [...groupPath, 'display']),\n type: validateString(groupObj.type, 'type', false, issues, [...groupPath, 'type']),\n });\n }\n }\n\n return groups.length > 0 ? groups : undefined;\n}\n\n/**\n * Validates a SCIM Role array\n */\nfunction validateRoles(value: unknown, issues: StandardSchemaV1.Issue[], basePath: PropertyKey[]): Role[] | undefined {\n if (value === undefined || value === null) {\n return undefined;\n }\n\n if (!Array.isArray(value)) {\n issues.push({\n message: 'roles must be an array',\n path: basePath,\n });\n return undefined;\n }\n\n const roles: Role[] = [];\n\n for (let i = 0; i < value.length; i++) {\n const role = value[i];\n const rolePath = [...basePath, i];\n\n if (typeof role !== 'object' || role === null) {\n issues.push({\n message: 'role must be an object',\n path: rolePath,\n });\n continue;\n }\n\n const roleObj = role as Record<string, unknown>;\n const roleValue = validateString(roleObj.value, 'value', true, issues, [...rolePath, 'value']);\n\n if (roleValue) {\n roles.push({\n value: roleValue,\n display: validateString(roleObj.display, 'display', false, issues, [...rolePath, 'display']),\n type: validateString(roleObj.type, 'type', false, issues, [...rolePath, 'type']),\n primary: validateBoolean(roleObj.primary, 'primary', issues, [...rolePath, 'primary']),\n });\n }\n }\n\n return roles.length > 0 ? roles : undefined;\n}\n\n/**\n * Validates a SCIM Enterprise User extension\n */\nfunction validateEnterpriseUser(\n value: unknown,\n issues: StandardSchemaV1.Issue[],\n basePath: PropertyKey[],\n): EnterpriseExtension | undefined {\n if (value === undefined || value === null) {\n return undefined;\n }\n\n if (typeof value !== 'object' || value === null) {\n issues.push({\n message: 'Enterprise User extension must be an object',\n path: basePath,\n });\n return undefined;\n }\n\n const enterprise = value as Record<string, unknown>;\n const result: EnterpriseExtension = {};\n\n result.employeeNumber = validateString(enterprise.employeeNumber, 'employeeNumber', false, issues, [\n ...basePath,\n 'employeeNumber',\n ]);\n result.costCenter = validateString(enterprise.costCenter, 'costCenter', false, issues, [...basePath, 'costCenter']);\n result.organization = validateString(enterprise.organization, 'organization', false, issues, [\n ...basePath,\n 'organization',\n ]);\n result.division = validateString(enterprise.division, 'division', false, issues, [...basePath, 'division']);\n result.department = validateString(enterprise.department, 'department', false, issues, [...basePath, 'department']);\n\n if (enterprise.manager !== undefined && enterprise.manager !== null) {\n if (typeof enterprise.manager !== 'object' || enterprise.manager === null) {\n issues.push({\n message: 'manager must be an object',\n path: [...basePath, 'manager'],\n });\n } else {\n const manager = enterprise.manager as Record<string, unknown>;\n result.manager = {\n value: validateString(manager.value, 'value', false, issues, [...basePath, 'manager', 'value']),\n $ref: validateString(manager.$ref, '$ref', false, issues, [...basePath, 'manager', '$ref']),\n displayName: validateString(manager.displayName, 'displayName', false, issues, [\n ...basePath,\n 'manager',\n 'displayName',\n ]),\n };\n }\n }\n\n return result;\n}\n\n/**\n * Creates a StandardSchemaV1 for validating SCIM User resources.\n * @param vendor - The name of the vendor creating this schema\n * @returns A StandardSchemaV1 instance for SCIM User resources\n */\nexport function userSchema(vendor: string): StandardSchemaV1<Record<string, unknown>, User> {\n return {\n '~standard': {\n version: 1,\n vendor,\n validate: (value: unknown) => {\n if (typeof value !== 'object' || value === null) {\n return {\n issues: [\n {\n message: 'Expected an object',\n },\n ],\n };\n }\n\n const user = value as Record<string, unknown>;\n const issues: StandardSchemaV1.Issue[] = [];\n const result: Partial<User> = {};\n\n // userName is REQUIRED\n const userName = validateString(user.userName, 'userName', true, issues, ['userName']);\n if (!userName) {\n return { issues };\n }\n result.userName = userName;\n\n // Optional string fields\n result.id = validateString(user.id, 'id', false, issues, ['id']);\n result.externalId = validateString(user.externalId, 'externalId', false, issues, ['externalId']);\n result.displayName = validateString(user.displayName, 'displayName', false, issues, ['displayName']);\n result.nickName = validateString(user.nickName, 'nickName', false, issues, ['nickName']);\n result.profileUrl = validateString(user.profileUrl, 'profileUrl', false, issues, ['profileUrl']);\n result.title = validateString(user.title, 'title', false, issues, ['title']);\n result.userType = validateString(user.userType, 'userType', false, issues, ['userType']);\n result.preferredLanguage = validateString(user.preferredLanguage, 'preferredLanguage', false, issues, [\n 'preferredLanguage',\n ]);\n result.locale = validateString(user.locale, 'locale', false, issues, ['locale']);\n result.timezone = validateString(user.timezone, 'timezone', false, issues, ['timezone']);\n result.password = validateString(user.password, 'password', false, issues, ['password']);\n\n // Boolean field\n result.active = validateBoolean(user.active, 'active', issues, ['active']);\n\n // Complex sub-attributes\n result.name = validateName(user.name, issues, ['name']);\n result.emails = validateEmails(user.emails, issues, ['emails']);\n result.phoneNumbers = validatePhoneNumbers(user.phoneNumbers, issues, ['phoneNumbers']);\n result.addresses = validateAddresses(user.addresses, issues, ['addresses']);\n result.groups = validateGroups(user.groups, issues, ['groups']);\n result.roles = validateRoles(user.roles, issues, ['roles']);\n\n // Enterprise User Extension\n const enterpriseKey = 'urn:ietf:params:scim:schemas:extension:enterprise:2.0:User';\n if (user[enterpriseKey] !== undefined) {\n result[enterpriseKey] = validateEnterpriseUser(user[enterpriseKey], issues, [enterpriseKey]);\n }\n\n // Schemas array\n if (user.schemas !== undefined) {\n if (Array.isArray(user.schemas)) {\n result.schemas = user.schemas.filter((s): s is string => typeof s === 'string');\n } else {\n issues.push({\n message: 'schemas must be an array',\n path: ['schemas'],\n });\n }\n }\n\n // Meta object (basic validation)\n if (user.meta !== undefined) {\n if (typeof user.meta === 'object' && user.meta !== null) {\n const meta = user.meta as Record<string, unknown>;\n result.meta = {\n resourceType: typeof meta.resourceType === 'string' ? meta.resourceType : undefined,\n created: typeof meta.created === 'string' ? meta.created : undefined,\n lastModified: typeof meta.lastModified === 'string' ? meta.lastModified : undefined,\n location: typeof meta.location === 'string' ? meta.location : undefined,\n version: typeof meta.version === 'string' ? meta.version : undefined,\n };\n } else {\n issues.push({\n message: 'meta must be an object',\n path: ['meta'],\n });\n }\n }\n\n if (issues.length > 0) {\n return { issues };\n }\n\n return { value: result as User };\n },\n },\n };\n}\n\n/**\n * Validates a SCIM GroupMember array\n */\nfunction validateMembers(\n value: unknown,\n issues: StandardSchemaV1.Issue[],\n basePath: PropertyKey[],\n): GroupMember[] | undefined {\n if (value === undefined || value === null) {\n return undefined;\n }\n\n if (!Array.isArray(value)) {\n issues.push({\n message: 'members must be an array',\n path: basePath,\n });\n return undefined;\n }\n\n const members: GroupMember[] = [];\n\n for (let i = 0; i < value.length; i++) {\n const member = value[i];\n const memberPath = [...basePath, i];\n\n if (typeof member !== 'object' || member === null) {\n issues.push({\n message: 'member must be an object',\n path: memberPath,\n });\n continue;\n }\n\n const memberObj = member as Record<string, unknown>;\n const memberValue = validateString(memberObj.value, 'value', true, issues, [...memberPath, 'value']);\n\n if (memberValue) {\n const memberType = validateString(memberObj.type, 'type', false, issues, [...memberPath, 'type']);\n members.push({\n value: memberValue,\n $ref: validateString(memberObj.$ref, '$ref', false, issues, [...memberPath, '$ref']),\n display: validateString(memberObj.display, 'display', false, issues, [...memberPath, 'display']),\n type: memberType === 'User' || memberType === 'Group' ? memberType : undefined,\n });\n }\n }\n\n return members.length > 0 ? members : undefined;\n}\n\n/**\n * Creates a StandardSchemaV1 for validating SCIM Group resources.\n * @param vendor - The name of the vendor creating this schema\n * @returns A StandardSchemaV1 instance for SCIM Group resources\n */\nexport function groupResourceSchema(vendor: string): StandardSchemaV1<Record<string, unknown>, GroupResource> {\n return {\n '~standard': {\n version: 1,\n vendor,\n validate: (value: unknown) => {\n if (typeof value !== 'object' || value === null) {\n return {\n issues: [\n {\n message: 'Expected an object',\n },\n ],\n };\n }\n\n const group = value as Record<string, unknown>;\n const issues: StandardSchemaV1.Issue[] = [];\n const result: Partial<GroupResource> = {};\n\n // displayName is REQUIRED\n const displayName = validateString(group.displayName, 'displayName', true, issues, ['displayName']);\n if (!displayName) {\n return { issues };\n }\n result.displayName = displayName;\n\n // Optional string fields\n result.id = validateString(group.id, 'id', false, issues, ['id']);\n result.externalId = validateString(group.externalId, 'externalId', false, issues, ['externalId']);\n\n // Members array\n result.members = validateMembers(group.members, issues, ['members']);\n\n // Schemas array\n if (group.schemas !== undefined) {\n if (Array.isArray(group.schemas)) {\n result.schemas = group.schemas.filter((s): s is string => typeof s === 'string');\n } else {\n issues.push({\n message: 'schemas must be an array',\n path: ['schemas'],\n });\n }\n }\n\n // Meta object (basic validation)\n if (group.meta !== undefined) {\n if (typeof group.meta === 'object' && group.meta !== null) {\n const meta = group.meta as Record<string, unknown>;\n result.meta = {\n resourceType: typeof meta.resourceType === 'string' ? meta.resourceType : undefined,\n created: typeof meta.created === 'string' ? meta.created : undefined,\n lastModified: typeof meta.lastModified === 'string' ? meta.lastModified : undefined,\n location: typeof meta.location === 'string' ? meta.location : undefined,\n version: typeof meta.version === 'string' ? meta.version : undefined,\n };\n } else {\n issues.push({\n message: 'meta must be an object',\n path: ['meta'],\n });\n }\n }\n\n if (issues.length > 0) {\n return { issues };\n }\n\n return { value: result as GroupResource };\n },\n },\n };\n}\n","import type { GroupStore, StoredGroup } from './group-store';\nimport type { GroupMember, GroupResource, User } from './types/scim-schema';\nimport { groupResourceSchema, userSchema } from './types/scim-schema';\nimport type { StandardSchemaV1 } from './types/standard-schema';\nimport type { UserStore } from './user-store';\nimport type { Workload } from './workload';\n\n/**\n * SCIM Error response structure\n */\nexport interface ScimError {\n schemas: string[];\n status: string;\n scimType?: string;\n detail?: string;\n}\n\n/**\n * SCIM List Response for bulk operations\n */\nexport interface ScimListResponse<T> {\n schemas: string[];\n totalResults: number;\n startIndex?: number;\n itemsPerPage?: number;\n Resources: T[];\n}\n\n/**\n * Result of a SCIM operation\n */\nexport interface ScimResult<T> {\n success: boolean;\n data?: T;\n error?: ScimError;\n status: number;\n}\n\n/**\n * Handler configuration for IAM\n */\nexport interface IAMHandlerConfig {\n /**\n * Base path for the SCIM Users endpoints (e.g., '/api/iam/Users')\n */\n usersUrl?: string;\n\n /**\n * Base path for the SCIM Groups endpoints (e.g., '/api/iam/Groups')\n */\n groupsUrl?: string;\n}\n\n/**\n * IAM configuration\n *\n * - If `url` is provided, groups_outbound is enabled (app calls external IAM)\n * - If `group_store` is provided, groups_inbound is enabled (external IAM calls app)\n * - If `user_store` is provided, users_inbound is enabled (external IAM calls app)\n */\nexport type IAMConfig = {\n /**\n * Base URL of the external SCIM endpoint (e.g., https://sailpoint.example.com/scim/v2)\n * If provided, enables outbound SCIM operations (app -> external IAM)\n */\n url?: string;\n\n /**\n * Store for inbound user provisioning from external IAM providers.\n * When configured, the app can receive user CRUD operations via SCIM.\n */\n user_store?: UserStore;\n\n /**\n * Store for inbound group provisioning from external IAM providers.\n * When configured, enables groups_inbound (external IAM -> app).\n */\n group_store?: GroupStore;\n\n /**\n * Optional handler defaults. These are merged with per-call overrides in\n * `iam.handler`, with per-call values taking precedence.\n */\n usersUrl?: string;\n groupsUrl?: string;\n};\n\n/**\n * Options for creating a group\n */\nexport interface CreateGroupOptions {\n /**\n * External identifier for the group\n */\n externalId?: string;\n /**\n * Initial members to add to the group\n */\n members?: GroupMember[];\n /**\n * Custom validation schema for the response\n */\n validation?: StandardSchemaV1<unknown, GroupResource>;\n}\n\n/**\n * Options for creating a user\n */\nexport interface CreateUserOptions {\n /**\n * Custom validation schema for the response\n */\n validation?: StandardSchemaV1<unknown, User>;\n}\n\n/**\n * Handler configuration for groups_inbound\n */\nexport interface GroupsInboundHandlerConfig {\n /**\n * Base path for the SCIM Groups endpoints (e.g., '/api/iam/Groups')\n */\n basePath?: string;\n}\n\n/**\n * Handler configuration for users_inbound\n */\nexport interface UsersInboundHandlerConfig {\n /**\n * Base path for the SCIM Users endpoints (e.g., '/api/iam/Users')\n */\n basePath?: string;\n}\n\n/**\n * Groups Outbound extension - for creating groups in external IAM providers.\n * Enabled when `url` is configured in IAMConfig.\n */\nexport type IAMGroupsOutbound = {\n /**\n * Create a new group in the external IAM provider\n * @param displayName - The display name for the group\n * @param options - Optional configuration for the group creation\n * @returns The created group resource from the provider\n */\n createGroup: (displayName: string, options?: CreateGroupOptions) => Promise<ScimResult<GroupResource>>;\n};\n\n/**\n * Groups Inbound extension - for receiving group provisioning from external IAM providers.\n * Enabled when `group_store` is configured in IAMConfig.\n */\nexport type IAMGroupsInbound = {\n /**\n * Handle inbound SCIM requests for group management.\n * Routes: GET/POST /Groups, GET/PUT/PATCH/DELETE /Groups/:id\n */\n handler: (request: Request, config?: GroupsInboundHandlerConfig) => Promise<Response>;\n};\n\n/**\n * Users Inbound extension - for receiving user provisioning from external IAM providers.\n * Enabled when `user_store` is configured in IAMConfig.\n */\nexport type IAMUsersInbound = {\n /**\n * Handle inbound SCIM requests for user management.\n * Routes: GET/POST /Users, GET/PUT/PATCH/DELETE /Users/:id\n */\n handler: (request: Request, config?: UsersInboundHandlerConfig) => Promise<Response>;\n};\n\n/**\n * Core IAM service interface.\n *\n * - Core functions are user-related (outbound to external IAM)\n * - `groups_outbound` is available when `url` is configured\n * - `groups_inbound` is available when `group_store` is configured\n * - `users_inbound` is available when `user_store` is configured\n */\nexport type IAM = IAMConfig & {\n /**\n * Create a new user/account in the external IAM provider\n * Only available when `url` is configured.\n */\n createUser?: (user: User, options?: CreateUserOptions) => Promise<ScimResult<User>>;\n\n /**\n * Get the configured external SCIM base URL\n */\n getBaseUrl: () => string | undefined;\n\n /**\n * Groups Outbound extension - create groups in external IAM provider.\n * Available when `url` is configured in IAMConfig.\n */\n groups_outbound?: IAMGroupsOutbound;\n\n /**\n * Groups Inbound extension - receive group provisioning from external IAM.\n * Available when `group_store` is configured in IAMConfig.\n */\n groups_inbound?: IAMGroupsInbound;\n\n /**\n * Users Inbound extension - receive user provisioning from external IAM.\n * Available when `user_store` is configured in IAMConfig.\n */\n users_inbound?: IAMUsersInbound;\n\n /**\n * Framework-agnostic request handler for IAM endpoints.\n * Routes to users_inbound or groups_inbound handlers based on the request path.\n */\n handler: (request: Request, config?: IAMHandlerConfig) => Promise<Response>;\n};\n\nconst SCIM_CONTENT_TYPE = 'application/scim+json';\n\n/**\n * Send SCIM error response\n */\nfunction scimErrorResponse(status: number, detail: string, scimType?: string): Response {\n return new Response(\n JSON.stringify({\n schemas: ['urn:ietf:params:scim:api:messages:2.0:Error'],\n status: String(status),\n scimType,\n detail,\n }),\n {\n status,\n headers: { 'Content-Type': SCIM_CONTENT_TYPE },\n },\n );\n}\n\n/**\n * Send SCIM list response\n */\nfunction scimListResponse<T>(resources: T[]): Response {\n return new Response(\n JSON.stringify({\n schemas: ['urn:ietf:params:scim:api:messages:2.0:ListResponse'],\n totalResults: resources.length,\n startIndex: 1,\n itemsPerPage: resources.length,\n Resources: resources,\n }),\n {\n status: 200,\n headers: { 'Content-Type': SCIM_CONTENT_TYPE },\n },\n );\n}\n\n/**\n * Send SCIM resource response\n */\nfunction scimResourceResponse<T>(resource: T, status = 200): Response {\n return new Response(JSON.stringify(resource), {\n status,\n headers: { 'Content-Type': SCIM_CONTENT_TYPE },\n });\n}\n\n/**\n * Convert StoredGroup to GroupResource for SCIM response\n */\nfunction storedGroupToResource(group: StoredGroup): GroupResource {\n return {\n schemas: ['urn:ietf:params:scim:schemas:core:2.0:Group'],\n id: group.id,\n externalId: group.externalId,\n displayName: group.displayName,\n members: group.members,\n meta: {\n resourceType: 'Group',\n created: group.createdAt.toISOString(),\n lastModified: group.updatedAt.toISOString(),\n },\n };\n}\n\n/**\n * Generate a UUID for new resources\n */\nfunction generateId(): string {\n return crypto.randomUUID();\n}\n\n/**\n * Creates an IAM service instance.\n *\n * - If `url` is configured, enables outbound SCIM operations to external IAM\n * - If `group_store` is configured, enables inbound SCIM operations from external IAM\n *\n * @param config - IAM configuration\n * @param workload - Workload instance for authentication\n * @returns IAM service instance\n */\nexport function iam(config: IAMConfig, workload: Workload): IAM {\n const { url, group_store } = config;\n\n /**\n * Build headers for outgoing SCIM request using workload auth\n */\n async function buildHeaders(): Promise<Headers> {\n const token = await workload.getToken();\n\n return new Headers({\n 'Content-Type': SCIM_CONTENT_TYPE,\n Accept: SCIM_CONTENT_TYPE,\n Authorization: `Bearer ${token}`,\n });\n }\n\n /**\n * Make an outgoing SCIM request to external IAM\n */\n async function scimRequest<T>(\n method: string,\n endpoint: string,\n body?: unknown,\n validator?: StandardSchemaV1<unknown, T>,\n ): Promise<ScimResult<T>> {\n if (!url) {\n return {\n success: false,\n error: {\n schemas: ['urn:ietf:params:scim:api:messages:2.0:Error'],\n status: '500',\n detail: 'IAM URL not configured for outgoing requests',\n },\n status: 500,\n };\n }\n\n const requestUrl = `${url}${endpoint}`;\n\n try {\n const headers = await buildHeaders();\n const response = await fetch(requestUrl, {\n method,\n headers,\n body: body ? JSON.stringify(body) : undefined,\n });\n\n const responseData = await response.json();\n\n if (!response.ok) {\n return {\n success: false,\n error: responseData as ScimError,\n status: response.status,\n };\n }\n\n // Validate response if validator provided\n if (validator) {\n const validationResult = await validator['~standard'].validate(responseData);\n if ('issues' in validationResult) {\n return {\n success: false,\n error: {\n schemas: ['urn:ietf:params:scim:api:messages:2.0:Error'],\n status: '400',\n scimType: 'invalidValue',\n detail: `Response validation failed: ${validationResult.issues?.map((i) => i.message).join('; ')}`,\n },\n status: 400,\n };\n }\n return {\n success: true,\n data: validationResult.value,\n status: response.status,\n };\n }\n\n return {\n success: true,\n data: responseData as T,\n status: response.status,\n };\n } catch (error) {\n return {\n success: false,\n error: {\n schemas: ['urn:ietf:params:scim:api:messages:2.0:Error'],\n status: '500',\n detail: error instanceof Error ? error.message : 'Unknown error occurred',\n },\n status: 500,\n };\n }\n }\n\n /**\n * Get the configured SCIM base URL\n */\n function getBaseUrl(): string | undefined {\n return url;\n }\n\n // Build groups_outbound if url is configured\n let groups_outbound: IAMGroupsOutbound | undefined;\n let createUser: ((user: User, options?: CreateUserOptions) => Promise<ScimResult<User>>) | undefined;\n\n if (url) {\n /**\n * Create a new user/account in the external IAM provider\n */\n createUser = async (user: User, options?: CreateUserOptions): Promise<ScimResult<User>> => {\n const userPayload: User = {\n ...user,\n schemas: user.schemas ?? [\n 'urn:ietf:params:scim:schemas:core:2.0:User',\n 'urn:ietf:params:scim:schemas:extension:enterprise:2.0:User',\n ],\n };\n\n const validator = options?.validation ?? userSchema('es-iam');\n return scimRequest<User>('POST', '/Users', userPayload, validator);\n };\n\n /**\n * Create a new group in the external IAM provider\n */\n async function createGroup(displayName: string, options?: CreateGroupOptions): Promise<ScimResult<GroupResource>> {\n const groupPayload: GroupResource = {\n schemas: ['urn:ietf:params:scim:schemas:core:2.0:Group'],\n displayName,\n externalId: options?.externalId,\n members: options?.members,\n };\n\n const validator = options?.validation ?? groupResourceSchema('es-iam');\n return scimRequest<GroupResource>('POST', '/Groups', groupPayload, validator);\n }\n\n groups_outbound = {\n createGroup,\n };\n }\n\n // Build groups_inbound if group_store is configured\n let groups_inbound: IAMGroupsInbound | undefined;\n\n if (group_store) {\n // Capture reference to avoid undefined checks in nested functions\n const store = group_store;\n\n /**\n * Validate authorization header for inbound requests\n */\n const validateAuth = async (request: Request): Promise<boolean> => {\n const auth = request.headers.get('Authorization');\n if (!auth || !auth.startsWith('Bearer ')) {\n return false;\n }\n\n // Validate the token using workload\n try {\n const token = auth.substring(7);\n const result = await workload.validateToken(token);\n return result.valid;\n } catch {\n return false;\n }\n };\n\n /**\n * Handle inbound SCIM requests for group management\n */\n const handler = async (request: Request, handlerConfig?: GroupsInboundHandlerConfig): Promise<Response> => {\n // Validate auth\n const isAuthorized = await validateAuth(request);\n if (!isAuthorized) {\n return scimErrorResponse(401, 'Authorization required');\n }\n\n const urlObj = new URL(request.url);\n const basePath = handlerConfig?.basePath ?? '/Groups';\n let path = urlObj.pathname;\n\n // Remove base path to get the resource path\n if (path.startsWith(basePath)) {\n path = path.substring(basePath.length);\n }\n\n // Parse group ID from path\n const groupIdMatch = path.match(/^\\/([^/]+)$/);\n const groupId = groupIdMatch?.[1];\n\n const method = request.method;\n\n try {\n // Route to appropriate handler\n if (groupId) {\n // Operations on specific group\n switch (method) {\n case 'GET':\n return await handleGetGroup(groupId);\n case 'PUT':\n return await handleReplaceGroup(request, groupId);\n case 'PATCH':\n return await handlePatchGroup(request, groupId);\n case 'DELETE':\n return await handleDeleteGroup(groupId);\n default:\n return scimErrorResponse(405, 'Method not allowed');\n }\n } else if (path === '' || path === '/') {\n // Operations on groups collection\n switch (method) {\n case 'GET':\n return await handleListGroups();\n case 'POST':\n return await handleCreateGroup(request);\n default:\n return scimErrorResponse(405, 'Method not allowed');\n }\n }\n\n return scimErrorResponse(404, 'Resource not found');\n } catch (error) {\n console.error('Groups inbound handler error:', error);\n return scimErrorResponse(500, error instanceof Error ? error.message : 'Internal server error');\n }\n };\n\n /**\n * List all groups\n */\n const handleListGroups = async (): Promise<Response> => {\n const groups = await store.list();\n const resources = groups.map(storedGroupToResource);\n return scimListResponse(resources);\n };\n\n /**\n * Get a group by ID\n */\n const handleGetGroup = async (id: string): Promise<Response> => {\n const group = await store.get(id);\n if (!group) {\n return scimErrorResponse(404, `Group ${id} not found`, 'invalidValue');\n }\n return scimResourceResponse(storedGroupToResource(group));\n };\n\n /**\n * Create a new group\n */\n const handleCreateGroup = async (request: Request): Promise<Response> => {\n const body = (await request.json()) as Partial<GroupResource>;\n\n if (!body.displayName) {\n return scimErrorResponse(400, 'displayName is required', 'invalidValue');\n }\n\n const now = new Date();\n const storedGroup: StoredGroup<Record<string, unknown>> = {\n id: generateId(),\n displayName: body.displayName,\n externalId: body.externalId,\n members: body.members,\n createdAt: now,\n updatedAt: now,\n };\n\n await store.upsert(storedGroup as StoredGroup);\n return scimResourceResponse(storedGroupToResource(storedGroup as StoredGroup), 201);\n };\n\n /**\n * Replace a group (PUT)\n */\n const handleReplaceGroup = async (request: Request, id: string): Promise<Response> => {\n const existing = await store.get(id);\n if (!existing) {\n return scimErrorResponse(404, `Group ${id} not found`, 'invalidValue');\n }\n\n const body = (await request.json()) as Partial<GroupResource>;\n\n const updatedGroup: StoredGroup<Record<string, unknown>> = {\n ...existing,\n displayName: body.displayName ?? existing.displayName,\n externalId: body.externalId,\n members: body.members,\n updatedAt: new Date(),\n };\n\n await store.upsert(updatedGroup as StoredGroup);\n return scimResourceResponse(storedGroupToResource(updatedGroup as StoredGroup));\n };\n\n /**\n * Patch a group (PATCH)\n */\n const handlePatchGroup = async (request: Request, id: string): Promise<Response> => {\n const existing = await store.get(id);\n if (!existing) {\n return scimErrorResponse(404, `Group ${id} not found`, 'invalidValue');\n }\n\n const body = (await request.json()) as {\n Operations?: Array<{ op: string; path?: string; value?: unknown }>;\n };\n const operations = body.Operations ?? [];\n\n const updated = { ...existing };\n\n for (const op of operations) {\n if (op.op === 'replace' && op.path && op.value !== undefined) {\n if (op.path === 'displayName') {\n updated.displayName = op.value as string;\n }\n } else if (op.op === 'add' && op.path && op.value !== undefined) {\n if (op.path === 'members') {\n const newMembers = op.value as GroupMember[];\n updated.members = [...(updated.members ?? []), ...newMembers];\n }\n } else if (op.op === 'remove' && op.path) {\n if (op.path.startsWith('members[')) {\n // Parse member filter like members[value eq \"user-id\"]\n const match = op.path.match(/members\\[value eq \"([^\"]+)\"\\]/);\n if (match) {\n updated.members = (updated.members ?? []).filter((m) => m.value !== match[1]);\n }\n }\n }\n }\n\n updated.updatedAt = new Date();\n await store.upsert(updated);\n return scimResourceResponse(storedGroupToResource(updated));\n };\n\n /**\n * Delete a group\n */\n const handleDeleteGroup = async (id: string): Promise<Response> => {\n const existing = await store.get(id);\n if (!existing) {\n return scimErrorResponse(404, `Group ${id} not found`, 'invalidValue');\n }\n\n await store.delete(id);\n return new Response(null, { status: 204 });\n };\n\n groups_inbound = {\n handler,\n };\n }\n\n // Build users_inbound if user_store is configured\n let users_inbound: IAMUsersInbound | undefined;\n\n if (config.user_store) {\n // Capture reference to avoid undefined checks in nested functions\n const store = config.user_store;\n\n /**\n * Validate authorization header for inbound requests\n */\n async function validateAuth(request: Request): Promise<boolean> {\n const auth = request.headers.get('Authorization');\n if (!auth || !auth.startsWith('Bearer ')) {\n return false;\n }\n\n // Validate the token using workload\n try {\n const token = auth.substring(7);\n const result = await workload.validateToken(token);\n return result.valid;\n } catch {\n return false;\n }\n }\n\n /**\n * Convert StoredUser to SCIM User for response\n */\n const storedUserToScimUser = (storedUser: import('./user-store').StoredUser): User => {\n return {\n schemas: [\n 'urn:ietf:params:scim:schemas:core:2.0:User',\n 'urn:ietf:params:scim:schemas:extension:enterprise:2.0:User',\n ],\n id: storedUser.id,\n userName: storedUser.userName || storedUser.email || storedUser.id,\n displayName: storedUser.name || storedUser.userName || storedUser.email,\n name: storedUser.name\n ? {\n givenName: storedUser.name.split(' ')[0],\n familyName: storedUser.name.split(' ').slice(1).join(' ') || undefined,\n }\n : undefined,\n emails: storedUser.email ? [{ value: storedUser.email, primary: true }] : [],\n active: true,\n meta: {\n resourceType: 'User',\n created: storedUser.createdAt.toISOString(),\n lastModified: storedUser.updatedAt.toISOString(),\n },\n };\n };\n\n /**\n * Convert SCIM User to StoredUser for storage\n */\n const scimUserToStoredUser = (scimUser: User): import('./user-store').StoredUser => {\n const now = new Date();\n const primaryEmail = scimUser.emails?.find((e) => e.primary)?.value || scimUser.emails?.[0]?.value;\n const name = scimUser.name\n ? `${scimUser.name.givenName || ''} ${scimUser.name.familyName || ''}`.trim()\n : scimUser.displayName;\n\n // Create minimal SSO data for IAM-provisioned users\n const userId = scimUser.id || generateId();\n const userName = scimUser.userName || primaryEmail || userId;\n\n return {\n id: userId,\n userName,\n name: name || scimUser.displayName || userName,\n email: primaryEmail || userName,\n avatarUrl: scimUser.profileUrl,\n sso: {\n profile: {\n sub: userId,\n iss: 'iam-provisioned',\n aud: 'iam-provisioned',\n exp: Math.floor(Date.now() / 1000) + 3600,\n iat: Math.floor(Date.now() / 1000),\n email: primaryEmail || userName,\n email_verified: true,\n name: name || scimUser.displayName || userName,\n preferred_username: userName,\n },\n tenant: {\n id: 'iam-provisioned',\n name: 'IAM Provisioned',\n },\n scope: 'openid profile email',\n tokenType: 'Bearer',\n expires: new Date(Date.now() + 3600 * 1000),\n },\n createdAt: scimUser.meta?.created ? new Date(scimUser.meta.created) : now,\n updatedAt: scimUser.meta?.lastModified ? new Date(scimUser.meta.lastModified) : now,\n } as import('./user-store').StoredUser;\n };\n\n /**\n * Handle inbound SCIM requests for user management\n */\n const handler = async (request: Request, handlerConfig?: UsersInboundHandlerConfig): Promise<Response> => {\n // Validate auth\n const isAuthorized = await validateAuth(request);\n if (!isAuthorized) {\n return scimErrorResponse(401, 'Authorization required');\n }\n\n const urlObj = new URL(request.url);\n const basePath = handlerConfig?.basePath ?? '/Users';\n let path = urlObj.pathname;\n\n // Remove base path to get the resource path\n if (path.startsWith(basePath)) {\n path = path.substring(basePath.length);\n }\n\n // Parse user ID from path\n const userIdMatch = path.match(/^\\/([^/]+)$/);\n const userId = userIdMatch?.[1];\n\n const method = request.method;\n\n try {\n // Route to appropriate handler\n if (userId) {\n // Operations on specific user\n switch (method) {\n case 'GET':\n return await handleGetUser(userId);\n case 'PUT':\n return await handleReplaceUser(request, userId);\n case 'PATCH':\n return await handlePatchUser(request, userId);\n case 'DELETE':\n return await handleDeleteUser(userId);\n default:\n return scimErrorResponse(405, 'Method not allowed');\n }\n } else if (path === '' || path === '/') {\n // Operations on users collection\n switch (method) {\n case 'GET':\n return await handleListUsers();\n case 'POST':\n return await handleCreateUser(request);\n default:\n return scimErrorResponse(405, 'Method not allowed');\n }\n }\n\n return scimErrorResponse(404, 'Resource not found');\n } catch (error) {\n console.error('Users inbound handler error:', error);\n return scimErrorResponse(500, error instanceof Error ? error.message : 'Internal server error');\n }\n };\n\n /**\n * List all users\n */\n const handleListUsers = async (): Promise<Response> => {\n // Note: UserStore doesn't have a list method, so we'd need to implement it\n // For now, return empty list - this would need to be enhanced based on UserStore interface\n return scimListResponse([]);\n };\n\n /**\n * Get a user by ID\n */\n const handleGetUser = async (id: string): Promise<Response> => {\n const user = await store.get(id);\n if (!user) {\n return scimErrorResponse(404, `User ${id} not found`, 'invalidValue');\n }\n return scimResourceResponse(storedUserToScimUser(user));\n };\n\n /**\n * Create a new user\n */\n const handleCreateUser = async (request: Request): Promise<Response> => {\n const body = (await request.json()) as Partial<User>;\n\n if (!body.userName && !body.emails?.[0]?.value) {\n return scimErrorResponse(400, 'userName or email is required', 'invalidValue');\n }\n\n const storedUser = scimUserToStoredUser(body as User);\n await store.upsert(storedUser);\n return scimResourceResponse(storedUserToScimUser(storedUser), 201);\n };\n\n /**\n * Replace a user (PUT)\n */\n const handleReplaceUser = async (request: Request, id: string): Promise<Response> => {\n const existing = await store.get(id);\n if (!existing) {\n return scimErrorResponse(404, `User ${id} not found`, 'invalidValue');\n }\n\n const body = (await request.json()) as Partial<User>;\n const updatedUser = scimUserToStoredUser({ ...body, id } as User);\n updatedUser.createdAt = existing.createdAt;\n updatedUser.updatedAt = new Date();\n\n await store.upsert(updatedUser);\n return scimResourceResponse(storedUserToScimUser(updatedUser));\n };\n\n /**\n * Patch a user (PATCH)\n */\n const handlePatchUser = async (request: Request, id: string): Promise<Response> => {\n const existing = await store.get(id);\n if (!existing) {\n return scimErrorResponse(404, `User ${id} not found`, 'invalidValue');\n }\n\n const body = (await request.json()) as {\n Operations?: Array<{ op: string; path?: string; value?: unknown }>;\n };\n const operations = body.Operations ?? [];\n\n const updated = { ...existing };\n\n for (const op of operations) {\n if (op.op === 'replace' && op.path && op.value !== undefined) {\n if (op.path === 'displayName') {\n updated.name = op.value as string;\n } else if (op.path === 'userName') {\n updated.userName = op.value as string;\n } else if (op.path.startsWith('name.')) {\n const namePart = op.path.split('.')[1] as 'givenName' | 'familyName';\n if (!updated.name) updated.name = '';\n // Simple name handling - in production you'd want more sophisticated parsing\n if (namePart === 'givenName') {\n updated.name = `${op.value as string} ${updated.name.split(' ').slice(1).join(' ')}`.trim();\n } else if (namePart === 'familyName') {\n updated.name = `${updated.name.split(' ')[0]} ${op.value as string}`.trim();\n }\n } else if (op.path === 'emails') {\n // Note: StoredUser doesn't have emails array, only email string\n // We'll extract the primary email and update the email field\n const emails = op.value as Array<{ value: string; primary?: boolean }>;\n const primaryEmail = emails?.find((e) => e.primary)?.value || emails?.[0]?.value;\n if (primaryEmail) updated.email = primaryEmail;\n }\n } else if (op.op === 'add' && op.path && op.value !== undefined) {\n if (op.path === 'emails') {\n // Note: StoredUser doesn't have emails array, only email string\n // We'll extract the primary email and update the email field\n const newEmails = op.value as Array<{ value: string; primary?: boolean }>;\n const primaryEmail = newEmails?.find((e) => e.primary)?.value || newEmails?.[0]?.value;\n if (primaryEmail) updated.email = primaryEmail;\n }\n } else if (op.op === 'remove' && op.path) {\n if (op.path === 'displayName') {\n updated.name = '';\n }\n }\n }\n\n updated.updatedAt = new Date();\n await store.upsert(updated);\n return scimResourceResponse(storedUserToScimUser(updated));\n };\n\n /**\n * Delete a user\n */\n const handleDeleteUser = async (id: string): Promise<Response> => {\n const existing = await store.get(id);\n if (!existing) {\n return scimErrorResponse(404, `User ${id} not found`, 'invalidValue');\n }\n\n await store.delete(id);\n return new Response(null, { status: 204 });\n };\n\n users_inbound = {\n handler,\n };\n }\n\n /**\n * Top-level handler that routes to users_inbound or groups_inbound based on path\n */\n async function topLevelHandler(request: Request, handlerConfig?: IAMHandlerConfig): Promise<Response> {\n const urlObj = new URL(request.url);\n const path = urlObj.pathname;\n\n const usersUrl = handlerConfig?.usersUrl ?? config.usersUrl ?? '/api/iam/Users';\n const groupsUrl = handlerConfig?.groupsUrl ?? config.groupsUrl ?? '/api/iam/Groups';\n\n // Route to users handler if path matches usersUrl\n if (path.startsWith(usersUrl) && users_inbound) {\n return users_inbound.handler(request, { basePath: usersUrl });\n }\n\n // Route to groups handler if path matches groupsUrl\n if (path.startsWith(groupsUrl) && groups_inbound) {\n return groups_inbound.handler(request, { basePath: groupsUrl });\n }\n\n // If neither matches, return 404\n return scimErrorResponse(404, 'Resource not found');\n }\n\n return {\n ...config,\n createUser,\n getBaseUrl,\n groups_outbound,\n groups_inbound,\n users_inbound,\n handler: topLevelHandler,\n } as IAM;\n}\n","import type { StandardSchemaV1 } from './standard-schema';\n\n/**\n * OIDC Code Flow Callback URL Parameters\n * @see https://openid.net/specs/openid-connect-core-1_0.html#CodeFlowAuth\n */\nexport interface OidcCallbackParams {\n /**\n * REQUIRED. The authorization code returned from the authorization server.\n */\n code: string;\n\n /**\n * REQUIRED if the \"state\" parameter was present in the client authorization request.\n * The exact value received from the client.\n */\n state?: string;\n\n /**\n * RECOMMENDED. The session state value. Clients should use this to verify the session state.\n */\n session_state?: string;\n\n /**\n * OAuth 2.0 error code if the authorization request failed.\n */\n error?: string;\n\n /**\n * Human-readable ASCII text providing additional information for the error.\n */\n error_description?: string;\n\n /**\n * A URI identifying a human-readable web page with information about the error.\n */\n error_uri?: string;\n\n /**\n * The \"iss\" (issuer) parameter identifies the principal that issued the response.\n * This is typically used in the implicit flow.\n */\n iss?: string;\n}\n\n/**\n * Creates a StandardSchemaV1 for validating OIDC callback URL parameters.\n * @param vendor - The name of the vendor creating this schema\n * @returns A StandardSchemaV1 instance for OIDC callback parameters\n */\nexport function oidcCallbackSchema(vendor: string): StandardSchemaV1<Record<string, unknown>, OidcCallbackParams> {\n return {\n '~standard': {\n version: 1,\n vendor,\n validate: (value: unknown) => {\n if (typeof value !== 'object' || value === null) {\n return {\n issues: [\n {\n message: 'Expected an object',\n },\n ],\n };\n }\n\n const params = value as Record<string, unknown>;\n const issues: StandardSchemaV1.Issue[] = [];\n const result: Partial<OidcCallbackParams> = {};\n\n // Check required 'code' parameter\n if ('code' in params) {\n if (typeof params.code === 'string') {\n result.code = params.code;\n } else {\n issues.push({\n message: 'code must be a string',\n path: ['code'],\n });\n }\n } else if (!('error' in params)) {\n // 'code' is required unless there's an error\n issues.push({\n message: 'code is required',\n path: ['code'],\n });\n }\n\n // Validate state if present\n if ('state' in params) {\n if (typeof params.state === 'string' || params.state === undefined) {\n result.state = params.state as string | undefined;\n } else {\n issues.push({\n message: 'state must be a string',\n path: ['state'],\n });\n }\n }\n\n // Validate session_state if present\n if ('session_state' in params) {\n if (typeof params.session_state === 'string' || params.session_state === undefined) {\n result.session_state = params.session_state as string | undefined;\n } else {\n issues.push({\n message: 'session_state must be a string',\n path: ['session_state'],\n });\n }\n }\n\n // Validate error related fields if present\n if ('error' in params) {\n if (typeof params.error === 'string') {\n result.error = params.error;\n } else {\n issues.push({\n message: 'error must be a string',\n path: ['error'],\n });\n }\n\n if ('error_description' in params) {\n if (typeof params.error_description === 'string' || params.error_description === undefined) {\n result.error_description = params.error_description as string | undefined;\n } else {\n issues.push({\n message: 'error_description must be a string',\n path: ['error_description'],\n });\n }\n }\n\n if ('error_uri' in params) {\n if (typeof params.error_uri === 'string' || params.error_uri === undefined) {\n result.error_uri = params.error_uri as string | undefined;\n } else {\n issues.push({\n message: 'error_uri must be a string',\n path: ['error_uri'],\n });\n }\n }\n }\n\n // Validate iss if present\n if ('iss' in params) {\n if (typeof params.iss === 'string' || params.iss === undefined) {\n result.iss = params.iss as string | undefined;\n } else {\n issues.push({\n message: 'iss must be a string',\n path: ['iss'],\n });\n }\n }\n\n if (issues.length > 0) {\n return { issues };\n }\n\n return { value: result as OidcCallbackParams };\n },\n },\n };\n}\n\n/**\n * Token Response from IdP\n */\nexport interface TokenResponse {\n access_token: string;\n id_token: string;\n refresh_token?: string;\n token_type: string;\n expires_in?: number;\n scope?: string;\n refresh_expires_in?: number;\n session_state?: string;\n expires?: string;\n}\n\n/**\n * Creates a StandardSchemaV1 for validating OIDC Token Responses.\n * @param vendor - The name of the vendor creating this schema\n * @returns A StandardSchemaV1 instance for Token Response validation\n */\nexport function tokenResponseSchema(vendor: string): StandardSchemaV1<Record<string, unknown>, TokenResponse> {\n return {\n '~standard': {\n version: 1,\n vendor,\n validate: (value: unknown) => {\n if (typeof value !== 'object' || value === null) {\n return {\n issues: [\n {\n message: 'Expected an object',\n },\n ],\n };\n }\n\n const response = value as Record<string, unknown>;\n const issues: StandardSchemaV1.Issue[] = [];\n const result: Partial<TokenResponse> = {};\n\n // Check required 'access_token' parameter\n if ('access_token' in response) {\n if (typeof response.access_token === 'string') {\n result.access_token = response.access_token;\n } else {\n issues.push({\n message: 'access_token must be a string',\n path: ['access_token'],\n });\n }\n } else {\n issues.push({\n message: 'access_token is required',\n path: ['access_token'],\n });\n }\n\n // Check required 'id_token' parameter\n if ('id_token' in response) {\n if (typeof response.id_token === 'string') {\n result.id_token = response.id_token;\n } else {\n issues.push({\n message: 'id_token must be a string',\n path: ['id_token'],\n });\n }\n } else {\n issues.push({\n message: 'id_token is required',\n path: ['id_token'],\n });\n }\n\n // Check required 'token_type' parameter\n if ('token_type' in response) {\n if (typeof response.token_type === 'string') {\n result.token_type = response.token_type;\n } else {\n issues.push({\n message: 'token_type must be a string',\n path: ['token_type'],\n });\n }\n } else {\n issues.push({\n message: 'token_type is required',\n path: ['token_type'],\n });\n }\n\n // Optional string fields\n if ('refresh_token' in response) {\n if (typeof response.refresh_token === 'string' || response.refresh_token === undefined) {\n result.refresh_token = response.refresh_token as string | undefined;\n } else {\n issues.push({\n message: 'refresh_token must be a string',\n path: ['refresh_token'],\n });\n }\n }\n\n if ('scope' in response) {\n if (typeof response.scope === 'string' || response.scope === undefined) {\n result.scope = response.scope as string | undefined;\n } else {\n issues.push({\n message: 'scope must be a string',\n path: ['scope'],\n });\n }\n }\n\n if ('session_state' in response) {\n if (typeof response.session_state === 'string' || response.session_state === undefined) {\n result.session_state = response.session_state as string | undefined;\n } else {\n issues.push({\n message: 'session_state must be a string',\n path: ['session_state'],\n });\n }\n }\n\n if ('expires' in response) {\n if (typeof response.expires === 'string' || response.expires === undefined) {\n result.expires = response.expires as string | undefined;\n } else {\n issues.push({\n message: 'expires must be a string',\n path: ['expires'],\n });\n }\n }\n\n // Optional number fields\n if ('expires_in' in response) {\n if (typeof response.expires_in === 'number' || response.expires_in === undefined) {\n result.expires_in = response.expires_in as number | undefined;\n } else {\n issues.push({\n message: 'expires_in must be a number',\n path: ['expires_in'],\n });\n }\n }\n\n if ('refresh_expires_in' in response) {\n if (typeof response.refresh_expires_in === 'number' || response.refresh_expires_in === undefined) {\n result.refresh_expires_in = response.refresh_expires_in as number | undefined;\n } else {\n issues.push({\n message: 'refresh_expires_in must be a number',\n path: ['refresh_expires_in'],\n });\n }\n }\n\n if (issues.length > 0) {\n return { issues };\n }\n\n return { value: result as TokenResponse };\n },\n },\n };\n}\n\n/**\n * ID Token Claims\n */\nexport interface IdTokenClaims {\n iss?: string;\n aud?: string;\n exp?: number;\n iat?: number;\n sub?: string;\n sid?: string;\n name?: string;\n email?: string;\n preferred_username?: string;\n picture?: string;\n [key: string]: unknown;\n}\n\n/**\n * Creates a StandardSchemaV1 for validating ID Token Claims.\n * @param vendor - The name of the vendor creating this schema\n * @returns A StandardSchemaV1 instance for ID Token Claims validation\n */\nexport function idTokenClaimsSchema(vendor: string): StandardSchemaV1<Record<string, unknown>, IdTokenClaims> {\n return {\n '~standard': {\n version: 1,\n vendor,\n validate: (value: unknown) => {\n if (typeof value !== 'object' || value === null) {\n return {\n issues: [\n {\n message: 'Expected an object',\n },\n ],\n };\n }\n\n const claims = value as Record<string, unknown>;\n const issues: StandardSchemaV1.Issue[] = [];\n const result: IdTokenClaims = { ...claims };\n\n // Validate optional string fields\n const stringFields = ['iss', 'aud', 'sub', 'sid', 'name', 'email', 'preferred_username', 'picture'];\n for (const field of stringFields) {\n if (field in claims && claims[field] !== undefined) {\n if (typeof claims[field] !== 'string') {\n issues.push({\n message: `${field} must be a string`,\n path: [field],\n });\n }\n }\n }\n\n // Validate optional number fields\n const numberFields = ['exp', 'iat'];\n for (const field of numberFields) {\n if (field in claims && claims[field] !== undefined) {\n if (typeof claims[field] !== 'number') {\n issues.push({\n message: `${field} must be a number`,\n path: [field],\n });\n }\n }\n }\n\n if (issues.length > 0) {\n return { issues };\n }\n\n return { value: result };\n },\n },\n };\n}\n","import type { EnterpriseStandard } from '.';\n\nlet defaultInstance: EnterpriseStandard | undefined;\n\nexport function must<T>(\n value: T | undefined | null,\n message = 'Assertion failed. Required value is null or undefined.',\n): T {\n if (value === undefined || value === null) {\n throw new Error(message);\n }\n return value;\n}\n\nexport function setDefaultInstance(es: EnterpriseStandard) {\n defaultInstance = es;\n}\n\nexport function getDefaultInstance() {\n return defaultInstance;\n}\n\n/**\n * If an es is defined, then return it, otherwise return the defaultEnterpriseStandard\n */\nexport function getES(es?: EnterpriseStandard) {\n if (es) return es;\n if (defaultInstance) return defaultInstance;\n throw new Error(`TODO standardize the error message when there isn't a default EntepriseStandard`);\n}\n","import type { EnterpriseStandard } from '.';\nimport type { Session, SessionStore } from './session-store';\nimport type { IdTokenClaims, OidcCallbackParams, TokenResponse } from './types/oidc-schema';\nimport { idTokenClaimsSchema, oidcCallbackSchema, tokenResponseSchema } from './types/oidc-schema';\nimport type { StandardSchemaV1 } from './types/standard-schema';\nimport type { User } from './types/user';\nimport type { StoredUser, UserStore } from './user-store';\nimport { must } from './utils';\n\nexport type SSOConfig<TSessionData = {}, TUserData = {}> = {\n authority?: string;\n token_url?: string;\n authorization_url?: string;\n client_id?: string;\n client_secret?: string;\n redirect_uri?: string;\n response_type?: 'code'; // Future possiblities: 'code' | 'code id_token' | 'code id_token token'\n scope?: string;\n silent_redirect_uri?: string;\n jwks_uri?: string;\n cookies_prefix?: string;\n cookies_path?: string;\n cookies_secure?: boolean;\n cookies_same_site?: 'Strict' | 'Lax';\n end_session_endpoint?: string;\n revocation_endpoint?: string;\n session_store?: SessionStore<TSessionData>;\n /**\n * Optional handler defaults. These are merged with per-call overrides in\n * `sso.handler`, with per-call values taking precedence.\n */\n loginUrl?: string;\n userUrl?: string;\n errorUrl?: string;\n landingUrl?: string;\n tokenUrl?: string;\n refreshUrl?: string;\n jwksUrl?: string;\n logoutUrl?: string;\n logoutBackChannelUrl?: string;\n validation?: {\n callbackParams?: StandardSchemaV1<unknown, OidcCallbackParams>;\n idTokenClaims?: StandardSchemaV1<unknown, IdTokenClaims>;\n tokenResponse?: StandardSchemaV1<unknown, TokenResponse>;\n };\n /**\n * Optional user store for persisting user profiles from SSO authentication.\n * When configured, users are automatically stored/updated on each login.\n */\n user_store?: UserStore<TUserData>;\n /**\n * Enable Just-In-Time (JIT) user provisioning.\n * When enabled, new users are automatically created in the user_store on their first login.\n * When disabled (default), only existing users in the user_store are updated on login.\n * Requires user_store to be configured.\n * @default false\n */\n enable_jit_user_provisioning?: boolean;\n};\n\n// TokenResponse now imported from oidc-schema.ts\n\ntype TokenControlFields = {\n token_type: string;\n expires_in?: number;\n scope?: string;\n refresh_expires_in?: number;\n session_state?: string;\n expires?: string;\n};\n\ntype JWK = {\n kty: string;\n kid: string;\n use?: string;\n n?: string;\n e?: string;\n [key: string]: unknown;\n};\n\ntype JWKS = {\n keys: JWK[];\n};\n\ntype SSOConfigWithDefaults<TSessionData = {}, TUserData = {}> = SSOConfig<TSessionData, TUserData> & {\n authority: string;\n token_url: string;\n authorization_url: string;\n client_id: string;\n redirect_uri: string;\n response_type: 'code'; // Future possiblities: 'code' | 'code id_token' | 'code id_token token'\n scope: string;\n cookies_secure: boolean;\n cookies_same_site: string;\n cookies_prefix: string;\n cookies_path: string;\n};\n\nexport type ESConfig = {\n es?: EnterpriseStandard;\n};\n\nexport type LoginConfig = {\n landingUrl: string;\n errorUrl?: string;\n} & ESConfig;\n\nexport type SSOHandlerConfig = {\n loginUrl?: string;\n userUrl?: string;\n errorUrl?: string;\n landingUrl?: string;\n tokenUrl?: string;\n refreshUrl?: string;\n jwksUrl?: string;\n logoutUrl?: string;\n logoutBackChannelUrl?: string;\n validation?: {\n callbackParams?: StandardSchemaV1<unknown, OidcCallbackParams>;\n idTokenClaims?: StandardSchemaV1<unknown, IdTokenClaims>;\n tokenResponse?: StandardSchemaV1<unknown, TokenResponse>;\n };\n} & ESConfig;\n\nexport type SSO<TSessionData = {}, TUserData = {}> = SSOConfigWithDefaults<TSessionData, TUserData> & {\n getUser: (request: Request) => Promise<User | undefined>;\n getRequiredUser: (request: Request) => Promise<User>;\n getJwt: (request: Request) => Promise<string | undefined>;\n initiateLogin: (config: LoginConfig, requestUrl?: string) => Promise<Response>;\n logout: (request: Request, config?: LoginConfig) => Promise<Response>;\n callbackHandler: (request: Request) => Promise<Response>;\n handler: (request: Request, es?: EnterpriseStandard) => Promise<Response>;\n};\n\nconst jwksCache = new Map<string, JWKS>();\n\nexport function sso<TSessionData = {}, TUserData = {}>(\n config?: SSOConfig<TSessionData, TUserData>,\n): SSO<TSessionData, TUserData> {\n let configWithDefaults: SSOConfigWithDefaults<TSessionData, TUserData> | undefined;\n\n const handlerDefaults = {\n loginUrl: config?.loginUrl,\n userUrl: config?.userUrl,\n errorUrl: config?.errorUrl,\n landingUrl: config?.landingUrl,\n tokenUrl: config?.tokenUrl,\n refreshUrl: config?.refreshUrl,\n jwksUrl: config?.jwksUrl,\n logoutUrl: config?.logoutUrl,\n logoutBackChannelUrl: config?.logoutBackChannelUrl,\n validation: config?.validation,\n };\n\n configWithDefaults = !config\n ? undefined\n : {\n ...config,\n authority: must(config.authority, \"Missing 'authority' from SSO Config\"),\n token_url: must(config.token_url, \"Missing 'token_url' from SSO Config\"),\n authorization_url: must(config.authorization_url, \"Missing 'authorization_url' from SSO Config\"),\n client_id: must(config.client_id, \"Missing 'client_id' from SSO Config\"),\n redirect_uri: must(config.redirect_uri, \"Missing 'redirect_uri' from SSO Config\"),\n scope: must(config.scope, \"Missing 'scope' from SSO Config\"),\n response_type: config.response_type ?? 'code',\n cookies_secure: config.cookies_secure !== undefined ? config.cookies_secure : true,\n cookies_same_site: config.cookies_same_site !== undefined ? config.cookies_same_site : 'Strict',\n cookies_prefix: config.cookies_prefix ?? `es.sso.${config.client_id}`,\n cookies_path: config.cookies_path ?? '/',\n };\n\n async function getUser(request: Request): Promise<User | undefined> {\n if (!configWithDefaults) {\n throw new Error('Enterprise Standard SSO Manager not initialized');\n }\n\n try {\n const { tokens } = await getTokenFromCookies(request);\n if (!tokens) return undefined;\n return await parseUser(tokens);\n } catch (error) {\n console.error('Error parsing user from cookies:', error);\n return undefined;\n }\n }\n\n async function getRequiredUser(request: Request): Promise<User> {\n const user = await getUser(request);\n if (user) return user;\n\n throw new Response('Unauthorized', {\n status: 401,\n statusText: 'Unauthorized',\n });\n }\n\n async function initiateLogin({ landingUrl, errorUrl }: LoginConfig, requestUrl?: string) {\n if (!configWithDefaults) {\n throw new Error('Enterprise Standard SSO Manager not initialized');\n }\n\n const state = generateRandomString();\n const codeVerifier = generateRandomString(64);\n\n // Normalize redirect_uri - use request URL if available, otherwise use the stored value\n let normalizedRedirectUri = configWithDefaults.redirect_uri;\n try {\n new URL(normalizedRedirectUri);\n } catch {\n // If redirect_uri is not a valid URL, try to construct it from request URL\n if (requestUrl) {\n try {\n const baseUrl = new URL(requestUrl);\n const path = normalizedRedirectUri.startsWith('//')\n ? normalizedRedirectUri.slice(1)\n : normalizedRedirectUri.startsWith('/')\n ? normalizedRedirectUri\n : `/${normalizedRedirectUri}`;\n normalizedRedirectUri = new URL(path, baseUrl.origin).toString();\n } catch {\n // If we can't construct it, use authorization_url's origin as fallback\n try {\n const authUrl = new URL(configWithDefaults.authorization_url);\n const path = normalizedRedirectUri.startsWith('//')\n ? normalizedRedirectUri.slice(1)\n : normalizedRedirectUri.startsWith('/')\n ? normalizedRedirectUri\n : `/${normalizedRedirectUri}`;\n normalizedRedirectUri = new URL(path, authUrl.origin).toString();\n } catch {\n throw new Error(\n `Invalid redirect_uri: \"${configWithDefaults.redirect_uri}\". It must be a valid absolute URL.`,\n );\n }\n }\n }\n }\n\n const url = new URL(configWithDefaults.authorization_url);\n url.searchParams.append('client_id', configWithDefaults.client_id);\n url.searchParams.append('redirect_uri', normalizedRedirectUri);\n url.searchParams.append('response_type', 'code');\n url.searchParams.append('scope', configWithDefaults.scope);\n url.searchParams.append('state', state);\n\n const codeChallenge = await pkceChallengeFromVerifier(codeVerifier);\n url.searchParams.append('code_challenge', codeChallenge);\n url.searchParams.append('code_challenge_method', 'S256');\n\n const val = {\n state,\n codeVerifier,\n landingUrl,\n errorUrl,\n };\n\n return new Response('Redirecting to SSO Provider', {\n status: 302,\n headers: {\n Location: url.toString(),\n 'Set-Cookie': createCookie('state', val, 86400),\n },\n });\n }\n\n async function logout(request: Request, _config?: LoginConfig) {\n if (!configWithDefaults) {\n throw new Error('Enterprise Standard SSO Manager not initialized');\n }\n\n // Try to revoke the refresh token on the server\n try {\n const refreshToken = getCookie('refresh', request);\n if (refreshToken) {\n await revokeToken(refreshToken);\n }\n } catch (error) {\n console.warn('Failed to revoke token:', error);\n }\n\n // Delete session from session store if configured\n if (configWithDefaults.session_store) {\n try {\n const user = await getUser(request);\n if (user?.sso?.profile.sid) {\n const sid = user.sso.profile.sid;\n await configWithDefaults.session_store.delete(sid);\n console.log(`Session ${sid} deleted from store`);\n }\n } catch (error) {\n console.warn('Failed to delete session:', error);\n // Don't fail logout if session deletion fails\n }\n }\n\n // Clear cookies\n const clearHeaders: [string, string][] = [\n ['Set-Cookie', clearCookie('access')],\n ['Set-Cookie', clearCookie('id')],\n ['Set-Cookie', clearCookie('refresh')],\n ['Set-Cookie', clearCookie('control')],\n ['Set-Cookie', clearCookie('state')],\n ];\n\n // Check for redirect query parameter\n const url = new URL(request.url);\n const redirectTo = url.searchParams.get('redirect');\n\n if (redirectTo) {\n return new Response('Logged out', {\n status: 302,\n headers: [['Location', redirectTo], ...clearHeaders],\n });\n }\n\n // Check if this is an AJAX request (expects JSON response)\n const accept = request.headers.get('accept');\n const isAjax = accept?.includes('application/json') || accept?.includes('text/javascript');\n\n if (isAjax) {\n return new Response(JSON.stringify({ success: true, message: 'Logged out' }), {\n status: 200,\n headers: [['Content-Type', 'application/json'], ...clearHeaders],\n });\n } else {\n return new Response(\n `\n <!DOCTYPE html><html lang=\"en\"><body>\n <h1>Logout Complete</h1>\n <div style=\"display: none\">\n It is not recommended to show the default logout page. Include '?redirect=/someHomePage' or logout asynchronously.\n Check the <a href=\"https://EnterpriseStandard.com/sso#logout\">Enterprise Standard Packages</a> for more information.\n </div>\n </body></html>\n `,\n {\n status: 200,\n headers: [['Content-Type', 'text/html'], ...clearHeaders],\n },\n );\n }\n }\n\n async function logoutBackChannel(request: Request) {\n if (!configWithDefaults) {\n throw new Error('Enterprise Standard SSO Manager not initialized');\n }\n if (!configWithDefaults.session_store) {\n throw new Error('Back-Channel Logout requires session_store configuration');\n }\n\n try {\n // Parse the logout token from the request body\n const contentType = request.headers.get('content-type');\n if (!contentType || !contentType.includes('application/x-www-form-urlencoded')) {\n return new Response('Invalid Content-Type, expected application/x-www-form-urlencoded', {\n status: 400,\n });\n }\n\n const body = await request.text();\n const params = new URLSearchParams(body);\n const logoutToken = params.get('logout_token');\n\n if (!logoutToken) {\n return new Response('Missing logout_token parameter', { status: 400 });\n }\n\n // Parse and verify the logout token JWT\n const claims = await parseJwt(logoutToken);\n\n // Extract sid (session ID) from the logout token\n const sid = claims.sid;\n\n if (!sid) {\n console.warn('Back-Channel Logout: logout_token missing sid claim');\n return new Response('Invalid logout_token: missing sid claim', { status: 400 });\n }\n\n // Delete the session from the store\n await configWithDefaults.session_store.delete(sid);\n\n console.log(`Back-Channel Logout: successfully deleted session ${sid}`);\n\n return new Response('OK', { status: 200 });\n } catch (error) {\n console.error('Error during back-channel logout:', error);\n return new Response('Internal Server Error', { status: 500 });\n }\n }\n\n async function callbackHandler(request: Request, validation?: SSOHandlerConfig['validation']) {\n if (!configWithDefaults) {\n throw new Error('Enterprise Standard SSO Manager not initialized');\n }\n\n const url = new URL(request.url);\n const params = new URLSearchParams(url.search);\n\n // Validate callback parameters using StandardSchema\n const callbackParamsValidator = validation?.callbackParams ?? oidcCallbackSchema('builtin');\n const paramsObject = Object.fromEntries(params.entries());\n const paramsResult = await callbackParamsValidator['~standard'].validate(paramsObject);\n\n if ('issues' in paramsResult) {\n return new Response(\n JSON.stringify({\n error: 'validation_failed',\n message: 'OIDC callback parameters validation failed',\n issues: paramsResult.issues?.map((i) => ({\n path: i.path?.join('.'),\n message: i.message,\n })),\n }),\n {\n status: 400,\n headers: { 'Content-Type': 'application/json' },\n },\n );\n }\n\n const { code: codeFromUrl, state: stateFromUrl } = paramsResult.value;\n\n try {\n const cookie = getCookie('state', request, true);\n const { codeVerifier, state, landingUrl } = cookie ?? {};\n\n must(\n codeVerifier,\n 'OIDC \"codeVerifier\" was not present in cookies, ensure that the SSO login was initiated correctly',\n );\n must(state, 'OIDC \"stateVerifier\" was not present in cookies, ensure that the SSO login was initiated correctly');\n must(landingUrl, 'OIDC \"landingUrl\" was not present in cookies');\n\n if (stateFromUrl !== state) {\n throw new Error(\n 'SSO State Verifier failed, the \"state\" request parameter does not equal the \"state\" in the SSO cookie',\n );\n }\n\n const tokenResponse = await exchangeCodeForToken(codeFromUrl, codeVerifier, validation, request.url);\n const user = await parseUser(tokenResponse, validation);\n\n // Create session if session_store is configured\n if (configWithDefaults.session_store) {\n try {\n const sid = user.sso.profile.sid;\n const sub = user.id;\n\n if (sid && sub) {\n const session: Session<TSessionData> = {\n sid,\n sub,\n createdAt: new Date(),\n lastActivityAt: new Date(),\n } as Session<TSessionData>;\n\n await configWithDefaults.session_store.create(session);\n } else {\n console.warn('Session creation skipped: missing sid or sub in ID token claims');\n }\n } catch (error) {\n console.warn('Failed to create session:', error);\n // Don't fail the login if session creation fails\n }\n }\n\n // Store/update user if user_store is configured\n if (configWithDefaults.user_store) {\n try {\n const sub = user.id;\n\n if (sub) {\n const now = new Date();\n const existingUser = await configWithDefaults.user_store.get(sub);\n\n // Only create new users if JIT provisioning is enabled\n // Always update existing users\n if (existingUser || configWithDefaults.enable_jit_user_provisioning) {\n // Merge existing custom data with updated user info\n // This preserves TUserData fields that were previously set\n const storedUser = {\n ...(existingUser ?? {}),\n ...user,\n id: sub,\n createdAt: existingUser?.createdAt ?? now,\n updatedAt: now,\n } as unknown as StoredUser<TUserData>;\n\n await configWithDefaults.user_store.upsert(storedUser);\n } else {\n console.warn('JIT user provisioning disabled: user not found in store and will not be created');\n }\n } else {\n console.warn('User storage skipped: missing sub in ID token claims');\n }\n } catch (error) {\n console.warn('Failed to store user:', error);\n // Don't fail the login if user storage fails\n }\n }\n\n return new Response('Authentication successful, redirecting', {\n status: 302,\n headers: [\n ['Location', landingUrl],\n ['Set-Cookie', clearCookie('state')],\n ...createJwtCookies(tokenResponse, user.sso.expires),\n ],\n });\n } catch (error) {\n console.error('Error during sign-in callback:', error);\n\n try {\n const cookie = getCookie('state', request, true);\n const { errorUrl } = cookie ?? {};\n if (errorUrl) {\n return new Response('Redirecting to error url', {\n status: 302,\n headers: [['Location', errorUrl]],\n });\n }\n } catch (_err) {\n console.warn('Error parsing the errorUrl from the OIDC cookie');\n }\n\n console.warn('No error page was found in the cookies. The user will be shown a default error page.');\n return new Response(\n 'An error occurred during authentication, please return to the application homepage and try again.',\n {\n status: 500,\n },\n );\n }\n }\n\n async function parseUser(token: TokenResponse, validation?: SSOHandlerConfig['validation']) {\n if (!configWithDefaults) {\n throw new Error('Enterprise Standard SSO Manager not initialized');\n }\n\n const idToken = await parseJwt(token.id_token, validation);\n const expiresIn = Number(token.refresh_expires_in ?? token.expires_in ?? 3600);\n const expires = token.expires ? new Date(token.expires) : new Date(Date.now() + expiresIn * 1000);\n\n return {\n id: idToken.sub,\n userName: idToken.preferred_username || '',\n name: idToken.name || '',\n email: idToken.email || '',\n emails: [\n {\n value: idToken.email || '',\n primary: true,\n },\n ],\n avatarUrl: idToken.picture,\n sso: {\n profile: {\n ...idToken,\n iss: idToken.iss || configWithDefaults.authority,\n aud: idToken.aud || configWithDefaults.client_id,\n },\n tenant: {\n id: (idToken.idp as string | undefined) || idToken.iss || configWithDefaults.authority,\n name: idToken.iss || configWithDefaults.authority,\n },\n scope: token.scope,\n tokenType: token.token_type,\n sessionState: token.session_state,\n expires,\n },\n };\n }\n\n async function exchangeCodeForToken(\n code: string,\n codeVerifier: string,\n validation?: SSOHandlerConfig['validation'],\n requestUrl?: string,\n ): Promise<TokenResponse> {\n if (!configWithDefaults) {\n throw new Error('Enterprise Standard SSO Manager not initialized');\n }\n const tokenUrl = configWithDefaults.token_url;\n\n // Normalize redirect_uri - use the same logic as in initiateLogin\n let normalizedRedirectUri = configWithDefaults.redirect_uri;\n try {\n new URL(normalizedRedirectUri);\n } catch {\n // If redirect_uri is not a valid URL, try to construct it from request URL\n if (requestUrl) {\n try {\n const baseUrl = new URL(requestUrl);\n const path = normalizedRedirectUri.startsWith('//')\n ? normalizedRedirectUri.slice(1)\n : normalizedRedirectUri.startsWith('/')\n ? normalizedRedirectUri\n : `/${normalizedRedirectUri}`;\n normalizedRedirectUri = new URL(path, baseUrl.origin).toString();\n } catch {\n // If we can't construct it, use token_url's origin as fallback\n try {\n const tokenUrlObj = new URL(tokenUrl);\n const path = normalizedRedirectUri.startsWith('//')\n ? normalizedRedirectUri.slice(1)\n : normalizedRedirectUri.startsWith('/')\n ? normalizedRedirectUri\n : `/${normalizedRedirectUri}`;\n normalizedRedirectUri = new URL(path, tokenUrlObj.origin).toString();\n } catch {\n throw new Error(\n `Invalid redirect_uri: \"${configWithDefaults.redirect_uri}\". It must be a valid absolute URL.`,\n );\n }\n }\n }\n }\n\n const body = new URLSearchParams();\n body.append('grant_type', 'authorization_code');\n body.append('code', code);\n body.append('redirect_uri', normalizedRedirectUri);\n body.append('client_id', configWithDefaults.client_id);\n if (configWithDefaults.client_secret) {\n body.append('client_secret', configWithDefaults.client_secret);\n }\n body.append('code_verifier', codeVerifier);\n\n try {\n const response = await fetch(tokenUrl, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n Accept: 'application/json',\n },\n body: body.toString(),\n });\n\n const data = await response.json();\n\n if (!response.ok) {\n console.error('Token exchange error:', data);\n throw new Error(\n `Token exchange failed: ${data.error || response.statusText} - ${data.error_description || ''}`.trim(),\n );\n }\n\n // Validate token response using StandardSchema\n const tokenResponseValidator = validation?.tokenResponse ?? tokenResponseSchema('builtin');\n const tokenResult = await tokenResponseValidator['~standard'].validate(data);\n\n if ('issues' in tokenResult) {\n console.error('Token response validation failed:', tokenResult.issues);\n throw new Error(`Token response validation failed: ${tokenResult.issues?.map((i) => i.message).join('; ')}`);\n }\n\n return tokenResult.value;\n } catch (error) {\n console.error('Error during token exchange:', error);\n throw error;\n }\n }\n\n async function refreshToken(refreshToken: string): Promise<TokenResponse> {\n return retryWithBackoff(async () => {\n if (!configWithDefaults) {\n throw new Error('Enterprise Standard SSO Manager not initialized');\n }\n const tokenUrl = configWithDefaults.token_url;\n\n const body = new URLSearchParams();\n body.append('grant_type', 'refresh_token');\n body.append('refresh_token', refreshToken);\n body.append('client_id', configWithDefaults.client_id);\n\n const response = await fetch(tokenUrl, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n Accept: 'application/json',\n },\n body: body.toString(),\n });\n\n const data = await response.json();\n\n if (!response.ok) {\n console.error('Token refresh error:', data);\n throw new Error(\n `Token refresh failed: ${data.error || response.statusText} - ${data.error_description || ''}`.trim(),\n );\n }\n\n return data;\n });\n }\n\n async function revokeToken(token: string): Promise<void> {\n try {\n if (!configWithDefaults) {\n throw new Error('Enterprise Standard SSO Manager not initialized');\n }\n\n // Only attempt revocation if a revocation endpoint is explicitly configured\n if (!configWithDefaults.revocation_endpoint) {\n return;\n }\n\n const body = new URLSearchParams();\n body.append('token', token);\n body.append('token_type_hint', 'refresh_token');\n body.append('client_id', configWithDefaults.client_id);\n\n const response = await fetch(configWithDefaults.revocation_endpoint, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n body: body.toString(),\n });\n\n if (!response.ok) {\n console.warn('Token revocation failed:', response.status, response.statusText);\n } else {\n console.log('Token revoked successfully');\n }\n } catch (error) {\n console.warn('Error revoking token:', error);\n }\n }\n\n async function fetchJwks(): Promise<JWKS> {\n if (!configWithDefaults) {\n throw new Error('Enterprise Standard SSO Manager not initialized');\n }\n const url = configWithDefaults.jwks_uri || `${configWithDefaults.authority}/protocol/openid-connect/certs`;\n const cached = jwksCache.get(url);\n if (cached) return cached;\n return retryWithBackoff(async () => {\n if (!configWithDefaults) throw new Error('SSO Manager not initialized');\n const response = await fetch(url);\n if (!response.ok) throw new Error('Failed to fetch JWKS');\n const jwks = await response.json();\n jwksCache.set(url, jwks);\n return jwks;\n });\n }\n\n async function retryWithBackoff<T>(\n operation: () => Promise<T>,\n maxRetries: number = 3,\n baseDelay: number = 1000,\n maxDelay: number = 30000,\n ): Promise<T> {\n let lastError = new Error('Placeholder Error');\n\n for (let attempt = 0; attempt <= maxRetries; attempt++) {\n try {\n return await operation();\n } catch (error) {\n lastError = error instanceof Error ? error : new Error(String(error));\n\n // Don't retry on authentication errors (4xx) or client errors\n if (error instanceof Error && error.message.includes('400')) {\n throw error;\n }\n\n if (attempt === maxRetries) {\n throw lastError;\n }\n\n // Exponential backoff with jitter\n const delay = Math.min(baseDelay * 2 ** attempt, maxDelay);\n const jitter = Math.random() * 0.1 * delay;\n await new Promise((resolve) => setTimeout(resolve, delay + jitter));\n\n console.warn(`Retry attempt ${attempt + 1} after ${delay + jitter}ms delay`);\n }\n }\n\n throw lastError;\n }\n\n async function parseJwt(token: string, validation?: SSOHandlerConfig['validation']): Promise<IdTokenClaims> {\n try {\n const parts = token.split('.');\n if (parts.length !== 3) throw new Error('Invalid JWT');\n\n const header = JSON.parse(atob(parts[0].replace(/-/g, '+').replace(/_/g, '/')));\n const payload = JSON.parse(atob(parts[1].replace(/-/g, '+').replace(/_/g, '/')));\n const signature = parts[2].replace(/-/g, '+').replace(/_/g, '/');\n const publicKey = await getPublicKey(header.kid);\n const encoder = new TextEncoder();\n const data = encoder.encode(`${parts[0]}.${parts[1]}`);\n const isValid = await crypto.subtle.verify(\n 'RSASSA-PKCS1-v1_5',\n publicKey,\n Uint8Array.from(atob(signature), (c) => c.charCodeAt(0)),\n data,\n );\n if (!isValid) throw new Error('Invalid JWT signature');\n\n // Validate ID token claims using StandardSchema\n const idTokenClaimsValidator = validation?.idTokenClaims ?? idTokenClaimsSchema('builtin');\n const claimsResult = await idTokenClaimsValidator['~standard'].validate(payload);\n\n if ('issues' in claimsResult) {\n console.error('ID token claims validation failed:', claimsResult.issues);\n throw new Error(`ID token claims validation failed: ${claimsResult.issues?.map((i) => i.message).join('; ')}`);\n }\n\n return claimsResult.value;\n } catch (e) {\n console.error('Error verifying JWT:', e);\n throw e;\n }\n }\n\n function generateRandomString(length = 32): string {\n const array = new Uint8Array(length);\n crypto.getRandomValues(array);\n return Array.from(array, (byte) => byte.toString(16).padStart(2, '0'))\n .join('')\n .substring(0, length);\n }\n\n async function pkceChallengeFromVerifier(verifier: string): Promise<string> {\n const encoder = new TextEncoder();\n const data = encoder.encode(verifier);\n const hashBuffer = await crypto.subtle.digest('SHA-256', data);\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n const hashBase64 = btoa(String.fromCharCode(...hashArray))\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_')\n .replace(/=+$/, '');\n return hashBase64;\n }\n\n async function getPublicKey(kid: string): Promise<CryptoKey> {\n const jwks = await fetchJwks();\n const key = jwks.keys.find((k: JWK) => k.kid === kid);\n if (!key) throw new Error('Public key not found');\n const publicKey = await crypto.subtle.importKey(\n 'jwk',\n {\n kty: key.kty,\n n: key.n,\n e: key.e,\n },\n { name: 'RSASSA-PKCS1-v1_5', hash: 'SHA-256' },\n false,\n ['verify'],\n );\n return publicKey;\n }\n\n function createJwtCookies(token: TokenResponse, expires: Date): [string, string][] {\n const control: TokenControlFields = {\n expires_in: token.expires_in,\n refresh_expires_in: token.refresh_expires_in,\n scope: token.scope,\n session_state: token.session_state,\n token_type: token.token_type,\n expires: expires.toISOString(),\n };\n return [\n ['Set-Cookie', createCookie('access', token.access_token, expires)],\n ['Set-Cookie', createCookie('id', token.id_token, expires)],\n ['Set-Cookie', createCookie('refresh', token.refresh_token ?? '', expires)],\n ['Set-Cookie', createCookie('control', control, expires)],\n ];\n }\n\n async function getTokenFromCookies(req: Request): Promise<{\n tokens: TokenResponse | undefined;\n refreshHeaders: [string, string][];\n }> {\n const access_token = getCookie('access', req);\n const id_token = getCookie('id', req);\n const refresh_token = getCookie('refresh', req);\n const control: TokenControlFields = getCookie('control', req, true);\n\n if (!access_token || !id_token || !refresh_token || !control) {\n return { tokens: undefined, refreshHeaders: [] };\n }\n\n let tokenResponse: TokenResponse = {\n access_token,\n id_token,\n refresh_token,\n ...control,\n };\n\n // Check if access token is expired\n if (control.expires && refresh_token && Date.now() > new Date(control.expires).getTime()) {\n tokenResponse = await refreshToken(refresh_token);\n\n // Create new cookies with refreshed tokens\n const user = await parseUser(tokenResponse);\n const refreshHeaders = createJwtCookies(tokenResponse, user.sso.expires);\n\n return { tokens: tokenResponse, refreshHeaders };\n }\n\n return { tokens: tokenResponse, refreshHeaders: [] };\n }\n\n async function getJwt(request: Request): Promise<string | undefined> {\n const { tokens } = await getTokenFromCookies(request);\n if (!tokens) return undefined;\n return tokens.access_token;\n }\n\n function createCookie(name: string, value: Record<string, unknown> | string, expires: Date | number) {\n if (!configWithDefaults) {\n throw new Error('Enterprise Standard SSO Manager not initialized');\n }\n name = `${configWithDefaults.cookies_prefix}.${name}`;\n if (typeof value !== 'string') {\n value = btoa(JSON.stringify(value));\n }\n\n let exp: string;\n if (expires instanceof Date) {\n exp = `Expires=${expires.toUTCString()}`;\n } else if (typeof expires === 'number') {\n exp = `Max-Age=${expires}`;\n } else {\n throw new Error('Invalid expires type', expires);\n }\n\n if (value.length > 4000) {\n throw new Error(`Error setting cookie: ${name}. Cookie length is: ${value.length}`);\n }\n\n return `${name}=${value}; ${exp}; Path=${configWithDefaults.cookies_path}; HttpOnly;${configWithDefaults.cookies_secure ? ' Secure;' : ''} SameSite=${configWithDefaults.cookies_same_site};`;\n }\n\n function clearCookie(name: string) {\n if (!configWithDefaults) {\n throw new Error('Enterprise Standard SSO Manager not initialized');\n }\n return `${configWithDefaults.cookies_prefix}.${name}=; Max-Age=0; Path=${configWithDefaults.cookies_path}; HttpOnly;${configWithDefaults.cookies_secure ? ' Secure;' : ''} SameSite=${configWithDefaults.cookies_same_site};`;\n }\n\n function getCookie(name: string, req: Request, parse = false) {\n if (!configWithDefaults) {\n throw new Error('Enterprise Standard SSO Manager not initialized');\n }\n const header = req.headers.get('cookie');\n if (!header) return null;\n\n const cookie = header\n .split(';')\n .find((row) => row.trim().startsWith(`${configWithDefaults.cookies_prefix}.${name}=`));\n if (!cookie) return null;\n\n const val = cookie.split('=')[1].trim();\n if (!parse) return val;\n const str = atob(val);\n return JSON.parse(str);\n }\n\n async function handler(request: Request, es?: EnterpriseStandard) {\n const {\n loginUrl,\n userUrl,\n errorUrl,\n landingUrl,\n tokenUrl,\n refreshUrl,\n logoutUrl,\n logoutBackChannelUrl,\n jwksUrl,\n validation,\n } = { ...handlerDefaults, ...es?.sso };\n\n if (!configWithDefaults) {\n throw new Error('Enterprise Standard SSO Manager not initialized');\n }\n\n if (!loginUrl) {\n console.error('loginUrl is required');\n }\n\n const path = new URL(request.url).pathname;\n // Handle both absolute URLs and relative paths for redirect_uri\n let redirectUriPath: string;\n try {\n // Try to parse as absolute URL first\n redirectUriPath = new URL(configWithDefaults.redirect_uri).pathname;\n } catch {\n // If it's not a valid URL, try to construct from request URL\n try {\n const requestUrl = new URL(request.url);\n // If redirect_uri starts with //, it's a protocol-relative URL, treat as path\n const redirectUri = configWithDefaults.redirect_uri.startsWith('//')\n ? configWithDefaults.redirect_uri.slice(1)\n : configWithDefaults.redirect_uri;\n // Construct full URL from request origin + redirect_uri path\n redirectUriPath = new URL(redirectUri, requestUrl.origin).pathname;\n } catch {\n // Fallback: treat as path directly\n redirectUriPath = configWithDefaults.redirect_uri.startsWith('/')\n ? configWithDefaults.redirect_uri\n : `/${configWithDefaults.redirect_uri}`;\n }\n }\n if (redirectUriPath === path) {\n return callbackHandler(request, validation);\n }\n\n if (loginUrl === path) {\n return initiateLogin(\n {\n landingUrl: landingUrl || '/',\n errorUrl,\n },\n request.url,\n );\n }\n\n if (userUrl === path) {\n const { tokens, refreshHeaders } = await getTokenFromCookies(request);\n if (!tokens) {\n return new Response('User not logged in', { status: 401 });\n }\n const user = await parseUser(tokens);\n return new Response(JSON.stringify(user), {\n headers: [['Content-Type', 'application/json'], ...refreshHeaders],\n });\n }\n\n if (tokenUrl === path) {\n const { tokens, refreshHeaders } = await getTokenFromCookies(request);\n if (!tokens) {\n return new Response('User not logged in', { status: 401 });\n }\n return new Response(\n JSON.stringify({\n token: tokens.access_token,\n expires: tokens.expires,\n }),\n {\n headers: [['Content-Type', 'application/json'], ...refreshHeaders],\n },\n );\n }\n\n if (refreshUrl === path) {\n const refresh_token = getCookie('refresh', request);\n if (!refresh_token) {\n return new Response('User not logged in', { status: 401 });\n }\n\n // Force a token refresh\n const newTokenResponse = await refreshToken(refresh_token);\n const user = await parseUser(newTokenResponse);\n const refreshHeaders = createJwtCookies(newTokenResponse, user.sso.expires);\n\n return new Response('Refresh Complete', {\n status: 200,\n headers: refreshHeaders,\n });\n }\n\n if (logoutUrl === path) {\n return logout(request, { landingUrl: landingUrl || '/' });\n }\n\n if (logoutBackChannelUrl === path) {\n return logoutBackChannel(request);\n }\n\n if (jwksUrl === path) {\n const jwks = await fetchJwks();\n return new Response(JSON.stringify(jwks), {\n headers: [['Content-Type', 'application/json']],\n });\n }\n\n return new Response('Not Found', { status: 404 });\n }\n\n if (!configWithDefaults) {\n throw new Error('Enterprise Standard SSO Manager not initialized');\n }\n\n return {\n ...configWithDefaults,\n getUser,\n getRequiredUser,\n getJwt,\n initiateLogin,\n logout,\n callbackHandler,\n handler,\n };\n}\n","type Secret<T> = {\n data: T;\n metadata: MetaData;\n};\n\ntype MetaData = {\n created_time: string;\n deletion_time: string;\n destroyed: boolean;\n version: number;\n};\n\nexport type Vault = {\n url: string;\n getFullSecret: <T>(path: string, token: string) => Promise<Secret<T>>;\n getSecret: <T>(path: string, token: string) => Promise<T>;\n};\n\nexport function vault(url: string): Vault {\n async function getFullSecret<T>(path: string, token: string): Promise<Secret<T>> {\n const resp = await fetch(`${url}/${path}`, { headers: { 'X-Vault-Token': token } });\n if (resp.status !== 200) {\n throw new Error(`Vault returned invalid status, ${resp.status}: '${resp.statusText}' from URL: ${url}`);\n }\n try {\n const secret = await resp.json();\n return secret.data as Secret<T>;\n } catch (cause) {\n throw new Error('Error retrieving secret', { cause });\n }\n }\n\n return {\n url,\n getFullSecret,\n getSecret: async <T>(path: string, token: string): Promise<T> => {\n return (await getFullSecret(path, token)).data as T;\n },\n };\n}\n","import type { StandardSchemaV1 } from './standard-schema';\n\n/**\n * JWT Assertion Claims for OAuth2 JWT Bearer Grant (RFC 7523) and OAuth2 Access Tokens\n * @see https://datatracker.ietf.org/doc/html/rfc7523\n * @see https://datatracker.ietf.org/doc/html/rfc9068\n */\nexport interface JWTAssertionClaims {\n /**\n * REQUIRED. Issuer - the workload identity (e.g., SPIFFE ID) or authorization server\n */\n iss: string;\n\n /**\n * REQUIRED. Subject - the workload identity or service account\n */\n sub: string;\n\n /**\n * OPTIONAL. Audience - may be a string or array of strings\n * Note: Required for JWT assertions, but may be absent in OAuth2 access tokens\n */\n aud?: string | string[];\n\n /**\n * REQUIRED. Expiration time (Unix timestamp)\n */\n exp: number;\n\n /**\n * REQUIRED. Issued at time (Unix timestamp)\n */\n iat: number;\n\n /**\n * OPTIONAL. JWT ID - unique identifier for this token\n * Note: Required for JWT assertions, optional for access tokens\n */\n jti?: string;\n\n /**\n * OPTIONAL. Requested OAuth scopes (space-delimited)\n */\n scope?: string;\n\n /**\n * Allow additional claims for extensibility\n */\n [key: string]: unknown;\n}\n\n/**\n * Creates a StandardSchemaV1 for validating JWT Assertion Claims.\n * @param vendor - The name of the vendor creating this schema\n * @returns A StandardSchemaV1 instance for JWT Assertion Claims validation\n */\nexport function jwtAssertionClaimsSchema(\n vendor: string,\n): StandardSchemaV1<Record<string, unknown>, JWTAssertionClaims> {\n return {\n '~standard': {\n version: 1,\n vendor,\n validate: (value: unknown) => {\n if (typeof value !== 'object' || value === null) {\n return {\n issues: [\n {\n message: 'Expected an object',\n },\n ],\n };\n }\n\n const claims = value as Record<string, unknown>;\n const issues: StandardSchemaV1.Issue[] = [];\n const result: JWTAssertionClaims = { ...claims } as JWTAssertionClaims;\n\n // Validate required string fields\n const requiredStringFields = ['iss', 'sub'];\n for (const field of requiredStringFields) {\n if (field in claims) {\n if (typeof claims[field] !== 'string') {\n issues.push({\n message: `${field} must be a string`,\n path: [field],\n });\n }\n } else {\n issues.push({\n message: `${field} is required`,\n path: [field],\n });\n }\n }\n\n // Validate optional aud field (can be string or array of strings)\n if ('aud' in claims && claims.aud !== undefined) {\n const aud = claims.aud;\n if (typeof aud !== 'string' && !Array.isArray(aud)) {\n issues.push({\n message: 'aud must be a string or array of strings',\n path: ['aud'],\n });\n } else if (Array.isArray(aud) && !aud.every((a) => typeof a === 'string')) {\n issues.push({\n message: 'aud array must contain only strings',\n path: ['aud'],\n });\n }\n }\n\n // Validate optional string fields\n const optionalStringFields = ['jti', 'scope'];\n for (const field of optionalStringFields) {\n if (field in claims && claims[field] !== undefined) {\n if (typeof claims[field] !== 'string') {\n issues.push({\n message: `${field} must be a string`,\n path: [field],\n });\n }\n }\n }\n\n // Validate required number fields\n const requiredNumberFields = ['exp', 'iat'];\n for (const field of requiredNumberFields) {\n if (field in claims) {\n if (typeof claims[field] !== 'number') {\n issues.push({\n message: `${field} must be a number`,\n path: [field],\n });\n }\n } else {\n issues.push({\n message: `${field} is required`,\n path: [field],\n });\n }\n }\n\n if (issues.length > 0) {\n return { issues };\n }\n\n return { value: result };\n },\n },\n };\n}\n\n/**\n * Workload Token Response from OAuth2 token endpoint\n * @see https://datatracker.ietf.org/doc/html/rfc6749#section-5.1\n */\nexport interface WorkloadTokenResponse {\n /**\n * REQUIRED. The access token issued by the authorization server.\n */\n access_token: string;\n\n /**\n * REQUIRED. The type of the token (typically \"Bearer\").\n */\n token_type: string;\n\n /**\n * RECOMMENDED. The lifetime in seconds of the access token.\n */\n expires_in?: number;\n\n /**\n * OPTIONAL. The scope of the access token.\n */\n scope?: string;\n\n /**\n * OPTIONAL. The refresh token (rarely used for workload identities).\n */\n refresh_token?: string;\n\n /**\n * OPTIONAL. The expiration time as an ISO 8601 string.\n */\n expires?: string;\n}\n\n/**\n * Creates a StandardSchemaV1 for validating Workload Token Responses.\n * @param vendor - The name of the vendor creating this schema\n * @returns A StandardSchemaV1 instance for Workload Token Response validation\n */\nexport function workloadTokenResponseSchema(\n vendor: string,\n): StandardSchemaV1<Record<string, unknown>, WorkloadTokenResponse> {\n return {\n '~standard': {\n version: 1,\n vendor,\n validate: (value: unknown) => {\n if (typeof value !== 'object' || value === null) {\n return {\n issues: [\n {\n message: 'Expected an object',\n },\n ],\n };\n }\n\n const response = value as Record<string, unknown>;\n const issues: StandardSchemaV1.Issue[] = [];\n const result: Partial<WorkloadTokenResponse> = {};\n\n // Check required 'access_token' parameter\n if ('access_token' in response) {\n if (typeof response.access_token === 'string') {\n result.access_token = response.access_token;\n } else {\n issues.push({\n message: 'access_token must be a string',\n path: ['access_token'],\n });\n }\n } else {\n issues.push({\n message: 'access_token is required',\n path: ['access_token'],\n });\n }\n\n // Check required 'token_type' parameter\n if ('token_type' in response) {\n if (typeof response.token_type === 'string') {\n result.token_type = response.token_type;\n } else {\n issues.push({\n message: 'token_type must be a string',\n path: ['token_type'],\n });\n }\n } else {\n issues.push({\n message: 'token_type is required',\n path: ['token_type'],\n });\n }\n\n // Optional string fields\n if ('scope' in response) {\n if (typeof response.scope === 'string' || response.scope === undefined) {\n result.scope = response.scope as string | undefined;\n } else {\n issues.push({\n message: 'scope must be a string',\n path: ['scope'],\n });\n }\n }\n\n if ('refresh_token' in response) {\n if (typeof response.refresh_token === 'string' || response.refresh_token === undefined) {\n result.refresh_token = response.refresh_token as string | undefined;\n } else {\n issues.push({\n message: 'refresh_token must be a string',\n path: ['refresh_token'],\n });\n }\n }\n\n if ('expires' in response) {\n if (typeof response.expires === 'string' || response.expires === undefined) {\n result.expires = response.expires as string | undefined;\n } else {\n issues.push({\n message: 'expires must be a string',\n path: ['expires'],\n });\n }\n }\n\n // Optional number field\n if ('expires_in' in response) {\n if (typeof response.expires_in === 'number' || response.expires_in === undefined) {\n result.expires_in = response.expires_in as number | undefined;\n } else {\n issues.push({\n message: 'expires_in must be a number',\n path: ['expires_in'],\n });\n }\n }\n\n if (issues.length > 0) {\n return { issues };\n }\n\n return { value: result as WorkloadTokenResponse };\n },\n },\n };\n}\n\n/**\n * Token Validation Result\n */\nexport interface TokenValidationResult {\n /**\n * Whether the token is valid\n */\n valid: boolean;\n\n /**\n * The decoded and validated claims (if valid)\n */\n claims?: JWTAssertionClaims;\n\n /**\n * Error message (if invalid)\n */\n error?: string;\n\n /**\n * Token expiration time (if valid)\n */\n expiresAt?: Date;\n}\n","/**\n * Token caching for workload identity authentication.\n *\n * Token stores are optional but recommended for performance - they enable:\n * - Token caching to avoid repeated token acquisition\n * - Automatic token refresh before expiration\n * - Reduced load on authorization servers\n *\n * ## Token Caching Strategy\n *\n * Unlike session stores for user authentication, workload token stores cache\n * short-lived access tokens (typically 5 minutes) for service-to-service calls.\n *\n * **Default Behavior:**\n * - Tokens cached with 5-minute TTL\n * - Auto-refresh 60 seconds before expiration\n * - Expired tokens automatically removed\n *\n * ## Performance Characteristics\n *\n * | Backend | Lookup Time | Use Case |\n * |--------------|-------------|----------------------------|\n * | InMemory | <0.00005ms | Single-server deployments |\n * | Redis | 1-2ms | Multi-server deployments |\n * | Database | 5-20ms | Persistent token storage |\n *\n * ## Example Usage\n *\n * ```typescript\n * import { workload, InMemoryWorkloadTokenStore } from '@enterprisestandard/react/server';\n *\n * // With token caching\n * const workloadAuth = workload({\n * // ... other config\n * token_store: new InMemoryWorkloadTokenStore(),\n * auto_refresh: true, // Refresh before expiry\n * });\n *\n * // Without token caching (fetch new token each time)\n * const workloadAuth = workload({\n * // ... config without token_store\n * });\n * ```\n */\n\n/**\n * Cached workload token data.\n *\n * @template TExtended - Type-safe custom data that consumers can add to cached tokens\n */\nexport type CachedWorkloadToken<TExtended = object> = {\n /**\n * Workload identifier (typically SPIFFE ID).\n * Used as the primary key for token lookup.\n */\n workload_id: string;\n\n /**\n * OAuth2 access token (Bearer token)\n */\n access_token: string;\n\n /**\n * Token type (always \"Bearer\" for OAuth2)\n */\n token_type: string;\n\n /**\n * OAuth2 scopes granted for this token\n */\n scope?: string;\n\n /**\n * Timestamp when the token expires.\n * Used for automatic cleanup and refresh logic.\n */\n expires_at: Date;\n\n /**\n * Timestamp when the token was created/cached.\n */\n created_at: Date;\n\n /**\n * Optional refresh token (rarely used for workload identities)\n */\n refresh_token?: string;\n} & TExtended;\n\n/**\n * Abstract interface for workload token storage backends.\n *\n * Consumers can implement this interface to use different storage backends:\n * - Redis (recommended for multi-server deployments)\n * - Database (PostgreSQL, MySQL, etc. for persistence)\n * - Distributed cache (Memcached, etc.)\n * - Custom solutions\n *\n * @template TExtended - Type-safe custom data that consumers can add to cached tokens\n *\n * @example\n * ```typescript\n * // Custom token cache data\n * type MyTokenData = {\n * environment: string;\n * region: string;\n * };\n *\n * // Implement custom store with Redis\n * class RedisWorkloadTokenStore implements WorkloadTokenStore<MyTokenData> {\n * async set(token: CachedWorkloadToken<MyTokenData>): Promise<void> {\n * const ttl = Math.floor((token.expires_at.getTime() - Date.now()) / 1000);\n * await redis.setex(\n * `workload:token:${token.workload_id}`,\n * ttl,\n * JSON.stringify(token)\n * );\n * }\n *\n * async get(workload_id: string): Promise<CachedWorkloadToken<MyTokenData> | null> {\n * const data = await redis.get(`workload:token:${workload_id}`);\n * if (!data) return null;\n * const token = JSON.parse(data);\n * // Convert date strings back to Date objects\n * token.expires_at = new Date(token.expires_at);\n * token.created_at = new Date(token.created_at);\n * return token;\n * }\n *\n * // ... other methods\n * }\n * ```\n */\nexport interface WorkloadTokenStore<TExtended = object> {\n /**\n * Store or update a workload token in the cache.\n *\n * @param token - The token data to cache\n */\n set(token: CachedWorkloadToken<TExtended>): Promise<void>;\n\n /**\n * Retrieve a cached token by workload ID.\n *\n * @param workload_id - The workload identifier (e.g., SPIFFE ID)\n * @returns The cached token if found and not expired, null otherwise\n */\n get(workload_id: string): Promise<CachedWorkloadToken<TExtended> | null>;\n\n /**\n * Delete a cached token by workload ID.\n *\n * Used when explicitly revoking tokens or clearing cache.\n *\n * @param workload_id - The workload identifier to remove\n */\n delete(workload_id: string): Promise<void>;\n\n /**\n * Check if a valid (non-expired) token exists for a workload.\n *\n * @param workload_id - The workload identifier to check\n * @returns true if a valid token exists, false otherwise\n */\n isValid(workload_id: string): Promise<boolean>;\n\n /**\n * Remove all expired tokens from the cache.\n *\n * Should be called periodically to prevent memory leaks.\n */\n cleanup(): Promise<void>;\n}\n\n/**\n * In-memory workload token store implementation using Maps.\n *\n * Suitable for:\n * - Development and testing\n * - Single-server deployments\n * - Applications without high availability requirements\n *\n * NOT suitable for:\n * - Multi-server deployments (tokens not shared across instances)\n * - High availability scenarios (tokens lost on restart)\n * - Production applications with distributed architecture\n *\n * For production multi-server deployments, implement WorkloadTokenStore with Redis.\n *\n * @template TExtended - Type-safe custom data that consumers can add to cached tokens\n */\nexport class InMemoryWorkloadTokenStore<TExtended = object> implements WorkloadTokenStore<TExtended> {\n private tokens = new Map<string, CachedWorkloadToken<TExtended>>();\n\n async set(token: CachedWorkloadToken<TExtended>): Promise<void> {\n this.tokens.set(token.workload_id, token);\n }\n\n async get(workload_id: string): Promise<CachedWorkloadToken<TExtended> | null> {\n const token = this.tokens.get(workload_id);\n if (!token) return null;\n\n // Check if token is expired\n if (Date.now() > token.expires_at.getTime()) {\n this.tokens.delete(workload_id);\n return null;\n }\n\n return token;\n }\n\n async delete(workload_id: string): Promise<void> {\n this.tokens.delete(workload_id);\n }\n\n async isValid(workload_id: string): Promise<boolean> {\n const token = await this.get(workload_id);\n return token !== null;\n }\n\n async cleanup(): Promise<void> {\n const now = Date.now();\n for (const [workload_id, token] of this.tokens.entries()) {\n if (now > token.expires_at.getTime()) {\n this.tokens.delete(workload_id);\n }\n }\n }\n}\n","import type { EnterpriseStandard } from '.';\nimport type { StandardSchemaV1 } from './types/standard-schema';\nimport type { JWTAssertionClaims, TokenValidationResult, WorkloadTokenResponse } from './types/workload-schema';\nimport { jwtAssertionClaimsSchema, workloadTokenResponseSchema } from './types/workload-schema';\nimport { must } from './utils';\nimport { InMemoryWorkloadTokenStore, type WorkloadTokenStore } from './workload-token-store';\n\n/**\n * Common fields shared across all workload authentication modes\n */\ntype WorkloadConfigBase = {\n /**\n * OAuth2 token endpoint URL\n * REQUIRED for client role (token acquisition)\n */\n token_url?: string;\n\n /**\n * JWKS endpoint URL for public key retrieval\n * REQUIRED for server role (token validation)\n */\n jwks_uri?: string;\n\n /**\n * Expected token issuer URL for validation\n * RECOMMENDED for server role (token validation)\n */\n issuer?: string;\n\n /**\n * Target audience for tokens\n */\n audience?: string;\n\n /**\n * Default OAuth2 scopes (space-delimited)\n */\n scope?: string;\n\n /**\n * JWT assertion/token lifetime in seconds\n * @default 300 (5 minutes)\n */\n token_lifetime?: number;\n\n /**\n * Refresh threshold in seconds (refresh token this many seconds before expiry)\n * @default 60\n */\n refresh_threshold?: number;\n\n /**\n * Optional token store for caching access tokens\n */\n token_store?: WorkloadTokenStore;\n\n /**\n * Automatically refresh tokens before expiration\n * @default true\n */\n auto_refresh?: boolean;\n\n /**\n * Optional RFC 7009 token revocation endpoint\n */\n revocation_endpoint?: string;\n /**\n * Optional handler defaults (merged with per-call overrides in `handler`)\n */\n tokenUrl?: string;\n validateUrl?: string;\n jwksUrl?: string;\n refreshUrl?: string;\n validation?: {\n jwtAssertionClaims?: StandardSchemaV1<unknown, JWTAssertionClaims>;\n tokenResponse?: StandardSchemaV1<unknown, WorkloadTokenResponse>;\n };\n};\n\n/**\n * JWT Bearer Grant (RFC 7523) Configuration\n *\n * Used for SPIFFE-style workload identities where services have their own\n * cryptographic identity and sign their own JWT assertions.\n *\n * @example\n * ```json\n * {\n * \"token_url\": \"https://auth.example.com/oauth/token\",\n * \"jwks_uri\": \"https://auth.example.com/.well-known/jwks.json\",\n * \"workload_id\": \"spiffe://trust-domain/ns/service\",\n * \"audience\": \"https://auth.example.com/oauth/token\",\n * \"private_key\": \"-----BEGIN PRIVATE KEY-----...\",\n * \"algorithm\": \"RS256\"\n * }\n * ```\n */\nexport type JwtBearerWorkloadConfig = WorkloadConfigBase & {\n /**\n * Workload identifier (e.g., SPIFFE ID: spiffe://trust-domain/namespace/service)\n * REQUIRED for JWT Bearer Grant mode\n */\n workload_id?: string;\n\n /**\n * PEM-encoded private key for signing JWT assertions\n * REQUIRED for client role in JWT Bearer Grant mode\n */\n private_key?: string;\n\n /**\n * Key ID (kid) to include in JWT header for key rotation support\n */\n key_id?: string;\n\n /**\n * JWT signing algorithm\n * @default 'RS256'\n */\n algorithm?: 'RS256' | 'RS384' | 'RS512' | 'ES256' | 'ES384' | 'ES512';\n};\n\n/**\n * OAuth2 Client Credentials Configuration\n *\n * Standard OAuth2 Client Credentials Grant (RFC 6749 Section 4.4).\n * Used with identity providers like Keycloak for service-to-service authentication.\n *\n * @example\n * ```json\n * {\n * \"token_url\": \"https://sso.example.com/realms/myrealm/protocol/openid-connect/token\",\n * \"jwks_uri\": \"https://sso.example.com/realms/myrealm/protocol/openid-connect/certs\",\n * \"client_id\": \"my-service\",\n * \"client_secret\": \"secret-from-idp\",\n * \"issuer\": \"https://sso.example.com/realms/myrealm\",\n * \"scope\": \"api:read api:write\"\n * }\n * ```\n */\nexport type ClientCredentialsWorkloadConfig = WorkloadConfigBase & {\n /**\n * OAuth2 client identifier registered with the authorization server\n * REQUIRED for Client Credentials mode\n */\n client_id?: string;\n\n /**\n * OAuth2 client secret\n * REQUIRED for Client Credentials mode\n */\n client_secret?: string;\n};\n\n/**\n * Server-Only Workload Configuration\n *\n * Used when a service only needs to validate incoming workload tokens,\n * not acquire tokens for outbound calls. Requires only jwks_uri for\n * public key retrieval.\n *\n * @example\n * ```json\n * {\n * \"jwks_uri\": \"https://sso.example.com/realms/myrealm/protocol/openid-connect/certs\",\n * \"issuer\": \"https://sso.example.com/realms/myrealm\"\n * }\n * ```\n */\nexport type ServerOnlyWorkloadConfig = WorkloadConfigBase;\n\n/**\n * Workload Identity Authentication Configuration\n *\n * Union type supporting multiple authentication modes. The mode is automatically\n * detected based on which fields are present:\n *\n * - **JWT Bearer Grant**: Requires `workload_id` + `private_key`\n * - **Client Credentials**: Requires `client_id` + `client_secret`\n * - **Server-Only**: Only `jwks_uri` (and optionally `issuer`) for token validation\n *\n * The developer uses the same API regardless of mode - the library handles the details.\n */\nexport type WorkloadConfig = JwtBearerWorkloadConfig | ClientCredentialsWorkloadConfig | ServerOnlyWorkloadConfig;\n\ntype JwtBearerConfigWithDefaults = JwtBearerWorkloadConfig & {\n token_url: string;\n workload_id: string;\n audience: string;\n scope: string;\n algorithm: 'RS256' | 'RS384' | 'RS512' | 'ES256' | 'ES384' | 'ES512';\n token_lifetime: number;\n refresh_threshold: number;\n auto_refresh: boolean;\n token_store: WorkloadTokenStore;\n};\n\ntype ClientCredentialsConfigWithDefaults = ClientCredentialsWorkloadConfig & {\n token_url: string;\n client_id: string;\n client_secret: string;\n scope: string;\n token_lifetime: number;\n refresh_threshold: number;\n auto_refresh: boolean;\n token_store: WorkloadTokenStore;\n};\n\ntype WorkloadConfigWithDefaults = JwtBearerConfigWithDefaults | ClientCredentialsConfigWithDefaults;\n\nexport type ESConfig = {\n es?: EnterpriseStandard;\n};\n\n/**\n * Workload Identity extracted from validated tokens\n */\nexport type WorkloadIdentity = {\n /**\n * Workload identifier (for JWT Bearer Grant tokens)\n */\n workload_id?: string;\n\n /**\n * Client identifier (for OAuth2 Client Credentials tokens)\n */\n client_id?: string;\n\n /**\n * Granted scopes\n */\n scope?: string;\n\n /**\n * Full JWT claims from the token\n */\n claims: JWTAssertionClaims;\n};\n\n/**\n * Workload Identity Authentication Interface\n */\nexport type Workload = WorkloadConfig & {\n // Client Role - Acquiring tokens for outbound API calls\n getToken: (scope?: string) => Promise<string>;\n refreshToken: () => Promise<WorkloadTokenResponse>;\n generateJWTAssertion: (scope?: string) => Promise<string>;\n revokeToken: (token: string) => Promise<void>;\n\n // Server Role - Validating incoming tokens from other workloads\n validateToken: (token: string, validation?: WorkloadConfig['validation']) => Promise<TokenValidationResult>;\n getWorkload: (request: Request) => Promise<WorkloadIdentity | undefined>;\n parseJWT: (token: string, validation?: WorkloadConfig['validation']) => Promise<JWTAssertionClaims>;\n\n // Framework-agnostic request handler\n handler: (request: Request) => Promise<Response>;\n};\n\ntype JWK = {\n kty: string;\n kid: string;\n use?: string;\n alg?: string;\n n?: string;\n e?: string;\n crv?: string;\n x?: string;\n y?: string;\n [key: string]: unknown;\n};\n\ntype JWKS = {\n keys: JWK[];\n};\n\nconst jwksCache = new Map<string, JWKS>();\n\n/**\n * Type guard to check if config is for JWT Bearer Grant mode\n */\nfunction isJwtBearerConfig(config: WorkloadConfig): config is JwtBearerWorkloadConfig {\n return 'workload_id' in config || 'private_key' in config;\n}\n\n/**\n * Type guard to check if config is for OAuth2 Client Credentials mode\n */\nfunction isClientCredentialsConfig(config: WorkloadConfig): config is ClientCredentialsWorkloadConfig {\n return 'client_id' in config || 'client_secret' in config;\n}\n\n/**\n * Type guard to check if config is for server-only mode (token validation only)\n */\nfunction isServerOnlyConfig(config: WorkloadConfig): boolean {\n return 'jwks_uri' in config && !('workload_id' in config) && !('client_id' in config);\n}\n\n/**\n * Validates that the config has the required fields for at least one mode:\n * - JWT Bearer Grant (client role): workload_id + private_key\n * - Client Credentials (client role): client_id + client_secret\n * - Server-only (validation role): jwks_uri only\n */\nfunction validateWorkloadConfig(config: WorkloadConfig): void {\n const hasJwtBearer = 'workload_id' in config && 'private_key' in config;\n const hasClientCreds = 'client_id' in config && 'client_secret' in config;\n const hasServerOnly = 'jwks_uri' in config;\n\n if (!hasJwtBearer && !hasClientCreds && !hasServerOnly) {\n throw new Error(\n 'Invalid WorkloadConfig: must provide either (workload_id + private_key) for JWT Bearer Grant, ' +\n '(client_id + client_secret) for OAuth2 Client Credentials, or (jwks_uri) for server-only token validation',\n );\n }\n}\n\n/**\n * Create a workload identity authentication instance\n *\n * @param config - Workload authentication configuration\n * @returns Workload authentication interface\n *\n * @example\n * ```typescript\n * import { workload } from '@enterprisestandard/react';\n *\n * const workloadAuth = workload({\n * token_url: 'https://auth.example.com/oauth/token',\n * jwks_uri: 'https://auth.example.com/.well-known/jwks.json',\n * workload_id: 'spiffe://trust-domain/ns/service',\n * audience: 'https://auth.example.com/oauth/token',\n * private_key: '-----BEGIN PRIVATE KEY-----...',\n * algorithm: 'RS256',\n * });\n *\n * // Get access token\n * const token = await workloadAuth.getToken('api:read api:write');\n * ```\n */\nexport function workload(config?: WorkloadConfig): Workload {\n // Apply defaults based on config type\n // For server-only mode, we use a minimal config that only supports token validation\n let configWithDefaults: WorkloadConfigWithDefaults | WorkloadConfig | undefined;\n\n // Validate config has required fields for at least one mode, or set to undefined if missing\n if (!config) {\n configWithDefaults = undefined;\n } else {\n try {\n validateWorkloadConfig(config);\n\n if (isJwtBearerConfig(config)) {\n configWithDefaults = {\n ...config,\n token_url: must(config.token_url, \"Missing 'token_url' from Workload Config\"),\n workload_id: must(config.workload_id, \"Missing 'workload_id' from Workload Config\"),\n audience: must(config.audience, \"Missing 'audience' from Workload Config\"),\n scope: config.scope ?? '',\n algorithm: config.algorithm ?? 'RS256',\n token_lifetime: config.token_lifetime ?? 300,\n refresh_threshold: config.refresh_threshold ?? 60,\n auto_refresh: config.auto_refresh !== undefined ? config.auto_refresh : true,\n token_store: config.token_store ?? new InMemoryWorkloadTokenStore(),\n } as JwtBearerConfigWithDefaults;\n } else if (isClientCredentialsConfig(config)) {\n // Client Credentials mode\n configWithDefaults = {\n ...config,\n token_url: must(config.token_url, \"Missing 'token_url' from Workload Config\"),\n client_id: must(config.client_id, \"Missing 'client_id' from Workload Config\"),\n client_secret: must(config.client_secret, \"Missing 'client_secret' from Workload Config\"),\n scope: config.scope ?? '',\n token_lifetime: config.token_lifetime ?? 300,\n refresh_threshold: config.refresh_threshold ?? 60,\n auto_refresh: config.auto_refresh !== undefined ? config.auto_refresh : true,\n token_store: config.token_store ?? new InMemoryWorkloadTokenStore(),\n } as ClientCredentialsConfigWithDefaults;\n } else {\n // Server-only mode - only token validation, no token acquisition\n configWithDefaults = config;\n }\n } catch {\n // If validation fails or must() throws, set to undefined\n configWithDefaults = undefined;\n }\n }\n\n const initialized = true;\n\n function _ensureInitialized() {\n if (!initialized || !configWithDefaults) {\n throw new Error('Enterprise Standard Workload Manager not initialized');\n }\n }\n\n // ========== Utility Functions ==========\n\n function generateJTI(): string {\n const array = new Uint8Array(16);\n crypto.getRandomValues(array);\n return Array.from(array, (byte) => byte.toString(16).padStart(2, '0')).join('');\n }\n\n function base64UrlEncode(data: string | Uint8Array): string {\n let base64: string;\n if (typeof data === 'string') {\n base64 = btoa(data);\n } else {\n base64 = btoa(String.fromCharCode(...data));\n }\n return base64.replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '');\n }\n\n function base64UrlDecode(base64url: string): string {\n let base64 = base64url.replace(/-/g, '+').replace(/_/g, '/');\n // Add padding if needed (atob requires padding)\n while (base64.length % 4) {\n base64 += '=';\n }\n return atob(base64);\n }\n\n function getAlgorithmParams(\n alg: string,\n ): { name: 'RSASSA-PKCS1-v1_5'; hash: string } | { name: 'ECDSA'; namedCurve: string; hash: string } {\n if (alg.startsWith('RS')) {\n const hash = alg === 'RS256' ? 'SHA-256' : alg === 'RS384' ? 'SHA-384' : 'SHA-512';\n return { name: 'RSASSA-PKCS1-v1_5', hash };\n } else if (alg.startsWith('ES')) {\n const namedCurve = alg === 'ES256' ? 'P-256' : alg === 'ES384' ? 'P-384' : 'P-521';\n const hash = alg === 'ES256' ? 'SHA-256' : alg === 'ES384' ? 'SHA-384' : 'SHA-512';\n return { name: 'ECDSA', namedCurve, hash };\n }\n throw new Error(`Unsupported algorithm: ${alg}`);\n }\n\n async function importPrivateKey(pemKey: string, algorithm: string): Promise<CryptoKey> {\n // Strip PEM header/footer and whitespace\n const pemContents = pemKey\n .replace(/-----BEGIN PRIVATE KEY-----/, '')\n .replace(/-----END PRIVATE KEY-----/, '')\n .replace(/\\s/g, '');\n\n // Decode base64 to binary\n const binaryDer = Uint8Array.from(atob(pemContents), (c) => c.charCodeAt(0));\n\n const algorithmParams = getAlgorithmParams(algorithm);\n\n return crypto.subtle.importKey('pkcs8', binaryDer, algorithmParams, false, ['sign']);\n }\n\n async function signJWT(data: string, privateKeyPEM: string, algorithm: string): Promise<string> {\n const privateKey = await importPrivateKey(privateKeyPEM, algorithm);\n const encoder = new TextEncoder();\n const dataBuffer = encoder.encode(data);\n\n const algorithmParams = getAlgorithmParams(algorithm);\n const signatureBuffer = await crypto.subtle.sign(algorithmParams, privateKey, dataBuffer);\n\n return base64UrlEncode(new Uint8Array(signatureBuffer));\n }\n\n async function retryWithBackoff<T>(\n operation: () => Promise<T>,\n maxRetries: number = 3,\n baseDelay: number = 1000,\n maxDelay: number = 30000,\n ): Promise<T> {\n let lastError = new Error('Placeholder Error');\n\n for (let attempt = 0; attempt <= maxRetries; attempt++) {\n try {\n return await operation();\n } catch (error) {\n lastError = error instanceof Error ? error : new Error(String(error));\n\n // Don't retry on authentication errors (4xx)\n if (\n lastError.message.includes('400') ||\n lastError.message.includes('401') ||\n lastError.message.includes('403') ||\n lastError.message.includes('404')\n ) {\n throw lastError;\n }\n\n if (attempt < maxRetries) {\n // Exponential backoff with jitter\n const delay = Math.min(baseDelay * 2 ** attempt, maxDelay);\n const jitter = Math.random() * delay * 0.1;\n await new Promise((resolve) => setTimeout(resolve, delay + jitter));\n }\n }\n }\n\n throw lastError;\n }\n\n // ========== Client Methods ==========\n\n async function generateJWTAssertion(scope?: string): Promise<string> {\n if (!configWithDefaults) {\n throw new Error('Enterprise Standard Workload Manager not initialized');\n }\n if (!isJwtBearerConfig(configWithDefaults)) {\n throw new Error('generateJWTAssertion is only available in JWT Bearer Grant mode');\n }\n const cfg = configWithDefaults as JwtBearerConfigWithDefaults;\n\n const now = Math.floor(Date.now() / 1000);\n\n // Build JWT claims\n const claims: JWTAssertionClaims = {\n iss: cfg.workload_id,\n sub: cfg.workload_id,\n aud: cfg.audience ?? '',\n exp: now + cfg.token_lifetime,\n iat: now,\n jti: generateJTI(),\n scope: scope ?? cfg.scope,\n };\n\n // Build JWT header\n const header = {\n alg: cfg.algorithm,\n typ: 'JWT',\n kid: cfg.key_id,\n };\n\n // Encode header and payload\n const encodedHeader = base64UrlEncode(JSON.stringify(header));\n const encodedPayload = base64UrlEncode(JSON.stringify(claims));\n const signatureInput = `${encodedHeader}.${encodedPayload}`;\n\n // Sign the JWT (private_key is guaranteed by isJwtBearerConfig check above)\n // biome-ignore lint/style/noNonNullAssertion: private_key guaranteed by type guard\n const signature = await signJWT(signatureInput, cfg.private_key!, cfg.algorithm);\n\n return `${signatureInput}.${signature}`;\n }\n\n async function acquireTokenJwtBearer(\n scope: string,\n validation?: WorkloadConfig['validation'],\n ): Promise<WorkloadTokenResponse> {\n if (!configWithDefaults) {\n throw new Error('Enterprise Standard Workload Manager not initialized');\n }\n const cfg = configWithDefaults as JwtBearerConfigWithDefaults;\n return retryWithBackoff(async () => {\n const tokenUrl = cfg.token_url;\n\n // Generate JWT assertion\n const assertion = await generateJWTAssertion(scope);\n\n // Build request body\n const body = new URLSearchParams();\n body.append('grant_type', 'urn:ietf:params:oauth:grant-type:jwt-bearer');\n body.append('assertion', assertion);\n if (scope) body.append('scope', scope);\n\n // POST to token endpoint\n const response = await fetch(tokenUrl, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n Accept: 'application/json',\n },\n body: body.toString(),\n });\n\n const data = await response.json();\n\n if (!response.ok) {\n console.error('Token acquisition error:', data);\n throw new Error(\n `Token acquisition failed: ${data.error || response.statusText} - ${data.error_description || ''}`.trim(),\n );\n }\n\n // Validate response using StandardSchema\n const validator = validation?.tokenResponse ?? workloadTokenResponseSchema('builtin');\n const result = await validator['~standard'].validate(data);\n\n if ('issues' in result) {\n console.error('Token response validation failed:', result.issues);\n throw new Error(`Token response validation failed: ${result.issues?.map((i) => i.message).join('; ')}`);\n }\n\n // Cache token if store configured\n if (cfg.token_store) {\n const expiresAt = new Date(Date.now() + (result.value.expires_in ?? 300) * 1000);\n const cachedToken = {\n workload_id: cfg.workload_id,\n access_token: result.value.access_token,\n token_type: result.value.token_type,\n scope: result.value.scope,\n expires_at: expiresAt,\n created_at: new Date(),\n refresh_token: result.value.refresh_token,\n };\n await cfg.token_store.set(cachedToken);\n }\n\n return result.value;\n });\n }\n\n async function acquireTokenClientCredentials(\n scope: string,\n validation?: WorkloadConfig['validation'],\n ): Promise<WorkloadTokenResponse> {\n if (!configWithDefaults) {\n throw new Error('Enterprise Standard Workload Manager not initialized');\n }\n const cfg = configWithDefaults as ClientCredentialsConfigWithDefaults;\n return retryWithBackoff(async () => {\n const tokenUrl = cfg.token_url;\n\n // Build request body for OAuth2 Client Credentials\n const body = new URLSearchParams();\n body.append('grant_type', 'client_credentials');\n body.append('client_id', cfg.client_id);\n body.append('client_secret', cfg.client_secret);\n if (scope) body.append('scope', scope);\n\n // POST to token endpoint\n const response = await fetch(tokenUrl, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n Accept: 'application/json',\n },\n body: body.toString(),\n });\n\n const data = await response.json();\n\n if (!response.ok) {\n console.error('Token acquisition error:', data);\n throw new Error(\n `Token acquisition failed: ${data.error || response.statusText} - ${data.error_description || ''}`.trim(),\n );\n }\n\n // Validate response using StandardSchema\n const validator = validation?.tokenResponse ?? workloadTokenResponseSchema('builtin');\n const result = await validator['~standard'].validate(data);\n\n if ('issues' in result) {\n console.error('Token response validation failed:', result.issues);\n throw new Error(`Token response validation failed: ${result.issues?.map((i) => i.message).join('; ')}`);\n }\n\n // Cache token if store configured\n if (cfg.token_store) {\n const expiresAt = new Date(Date.now() + (result.value.expires_in ?? 300) * 1000);\n const cachedToken = {\n workload_id: cfg.client_id,\n access_token: result.value.access_token,\n token_type: result.value.token_type,\n scope: result.value.scope,\n expires_at: expiresAt,\n created_at: new Date(),\n refresh_token: result.value.refresh_token,\n };\n await cfg.token_store.set(cachedToken);\n }\n\n return result.value;\n });\n }\n\n async function getToken(scope?: string): Promise<string> {\n if (!configWithDefaults) {\n throw new Error('Enterprise Standard Workload Manager not initialized');\n }\n // Check if in server-only mode (no client credentials configured)\n if (isServerOnlyConfig(configWithDefaults)) {\n throw new Error(\n 'Cannot acquire tokens: Workload is configured in server-only mode (validation only). ' +\n 'To acquire tokens, configure client_id + client_secret for OAuth2 Client Credentials, ' +\n 'or workload_id + private_key for JWT Bearer Grant.',\n );\n }\n\n // Validate client role requirements\n if (!configWithDefaults.token_url) {\n throw new Error(\n 'Cannot acquire tokens: Missing token_url in WorkloadConfig. ' +\n 'Client role requires token_url to be configured in vault.',\n );\n }\n\n if (isJwtBearerConfig(configWithDefaults)) {\n if (!configWithDefaults.private_key) {\n throw new Error(\n 'Cannot acquire tokens: Missing private_key in WorkloadConfig. ' +\n 'JWT Bearer Grant client role requires private_key to be configured in vault.',\n );\n }\n } else if (isClientCredentialsConfig(configWithDefaults)) {\n if (!configWithDefaults.client_secret) {\n throw new Error(\n 'Cannot acquire tokens: Missing client_secret in WorkloadConfig. ' +\n 'OAuth2 Client Credentials client role requires client_secret to be configured in vault.',\n );\n }\n }\n\n const requestedScope = scope ?? (configWithDefaults as WorkloadConfigWithDefaults).scope ?? '';\n\n // Determine cache key based on config type\n let cacheKey: string;\n if (isJwtBearerConfig(configWithDefaults)) {\n cacheKey = (configWithDefaults as JwtBearerConfigWithDefaults).workload_id;\n } else if (isClientCredentialsConfig(configWithDefaults)) {\n cacheKey = (configWithDefaults as ClientCredentialsConfigWithDefaults).client_id;\n } else {\n throw new Error('Invalid WorkloadConfig');\n }\n\n // Check cache if token store is configured\n const cfg = configWithDefaults as WorkloadConfigWithDefaults;\n if (cfg.token_store) {\n const cachedToken = await cfg.token_store.get(cacheKey);\n\n if (cachedToken) {\n const now = Date.now();\n const expiresAt = cachedToken.expires_at.getTime();\n const refreshThreshold = cfg.refresh_threshold * 1000;\n\n // If token is not approaching expiry, return it\n if (now + refreshThreshold < expiresAt) {\n return cachedToken.access_token;\n }\n\n // If auto-refresh is enabled and approaching expiry, refresh proactively\n if (cfg.auto_refresh) {\n try {\n const newToken = isJwtBearerConfig(configWithDefaults)\n ? await acquireTokenJwtBearer(requestedScope)\n : await acquireTokenClientCredentials(requestedScope);\n return newToken.access_token;\n } catch (error) {\n // If refresh fails but token still valid, use cached token\n if (now < expiresAt) {\n console.warn('Token refresh failed, using cached token:', error);\n return cachedToken.access_token;\n }\n throw error;\n }\n }\n }\n }\n\n // No cache or expired - acquire new token based on mode\n const tokenResponse = isJwtBearerConfig(configWithDefaults)\n ? await acquireTokenJwtBearer(requestedScope)\n : await acquireTokenClientCredentials(requestedScope);\n return tokenResponse.access_token;\n }\n\n async function refreshToken(): Promise<WorkloadTokenResponse> {\n if (!configWithDefaults) {\n throw new Error('Enterprise Standard Workload Manager not initialized');\n }\n if (isServerOnlyConfig(configWithDefaults)) {\n throw new Error('Cannot refresh tokens: Workload is configured in server-only mode (validation only).');\n }\n const cfg = configWithDefaults as WorkloadConfigWithDefaults;\n return isJwtBearerConfig(cfg)\n ? await acquireTokenJwtBearer(cfg.scope)\n : await acquireTokenClientCredentials(cfg.scope);\n }\n\n async function revokeToken(token: string): Promise<void> {\n if (!configWithDefaults) {\n throw new Error('Enterprise Standard Workload Manager not initialized');\n }\n try {\n // Only attempt revocation if endpoint is configured\n if (!configWithDefaults.revocation_endpoint) {\n return;\n }\n\n const body = new URLSearchParams();\n body.append('token', token);\n body.append('token_type_hint', 'access_token');\n\n // Use appropriate client identifier based on mode\n if (isJwtBearerConfig(configWithDefaults)) {\n const cfg = configWithDefaults as JwtBearerConfigWithDefaults;\n body.append('client_id', cfg.workload_id);\n } else if (isClientCredentialsConfig(configWithDefaults)) {\n const cfg = configWithDefaults as ClientCredentialsConfigWithDefaults;\n body.append('client_id', cfg.client_id);\n body.append('client_secret', cfg.client_secret);\n }\n\n const response = await fetch(configWithDefaults.revocation_endpoint, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n body: body.toString(),\n });\n\n if (!response.ok) {\n console.warn('Token revocation failed:', response.status, response.statusText);\n } else {\n console.log('Token revoked successfully');\n }\n\n // Also delete from cache if using token store\n if (configWithDefaults.token_store) {\n let cacheKey: string;\n if (isJwtBearerConfig(configWithDefaults)) {\n cacheKey = (configWithDefaults as JwtBearerConfigWithDefaults).workload_id;\n } else if (isClientCredentialsConfig(configWithDefaults)) {\n cacheKey = (configWithDefaults as ClientCredentialsConfigWithDefaults).client_id;\n } else {\n return; // Server-only mode, no cache\n }\n await configWithDefaults.token_store.delete(cacheKey);\n }\n } catch (error) {\n console.warn('Error revoking token:', error);\n // Don't throw - revocation is best-effort\n }\n }\n\n // ========== Server Methods ==========\n\n async function fetchJwks(): Promise<JWKS> {\n if (!configWithDefaults) {\n throw new Error('Enterprise Standard Workload Manager not initialized');\n }\n // configWithDefaults is the merged config from enterpriseStandard, which should include jwks_uri from vault\n const url = configWithDefaults.jwks_uri;\n if (!url) {\n throw new Error(\n 'Cannot validate tokens: Missing jwks_uri in WorkloadConfig. ' +\n 'Server role requires jwks_uri to be configured in vault to fetch public keys for token validation.',\n );\n }\n\n const cached = jwksCache.get(url);\n if (cached) return cached;\n\n return retryWithBackoff(async () => {\n const response = await fetch(url);\n if (!response.ok) throw new Error('Failed to fetch JWKS');\n const jwks = await response.json();\n jwksCache.set(url, jwks);\n return jwks;\n });\n }\n\n async function getPublicKey(kid: string): Promise<CryptoKey> {\n if (!configWithDefaults) {\n throw new Error('Enterprise Standard Workload Manager not initialized');\n }\n const jwks = await fetchJwks();\n const key = jwks.keys.find((k: JWK) => k.kid === kid);\n if (!key) throw new Error('Public key not found');\n\n // Use algorithm from JWK or default to RS256\n const defaultAlg = isJwtBearerConfig(configWithDefaults)\n ? (configWithDefaults as JwtBearerConfigWithDefaults).algorithm\n : 'RS256';\n const algorithmParams = getAlgorithmParams(key.alg || defaultAlg);\n\n return crypto.subtle.importKey('jwk', key, algorithmParams, false, ['verify']);\n }\n\n async function parseJWT(token: string, validation?: WorkloadConfig['validation']): Promise<JWTAssertionClaims> {\n if (!configWithDefaults) {\n throw new Error('Enterprise Standard Workload Manager not initialized');\n }\n try {\n const parts = token.split('.');\n if (parts.length !== 3) throw new Error('Invalid JWT');\n\n // Decode header and payload\n const header = JSON.parse(base64UrlDecode(parts[0]));\n const payload = JSON.parse(base64UrlDecode(parts[1]));\n\n // Get public key\n const publicKey = await getPublicKey(header.kid);\n\n // Verify signature\n const signature = parts[2];\n const encoder = new TextEncoder();\n const data = encoder.encode(`${parts[0]}.${parts[1]}`);\n const signatureBytes = Uint8Array.from(base64UrlDecode(signature), (c) => c.charCodeAt(0));\n\n const algorithmParams = getAlgorithmParams(header.alg);\n const isValid = await crypto.subtle.verify(algorithmParams, publicKey, signatureBytes, data);\n\n if (!isValid) throw new Error('Invalid JWT signature');\n\n // Validate claims using StandardSchema\n const validator = validation?.jwtAssertionClaims ?? jwtAssertionClaimsSchema('builtin');\n const result = await validator['~standard'].validate(payload);\n\n if ('issues' in result) {\n console.error('JWT claims validation failed:', result.issues);\n throw new Error(`JWT claims validation failed: ${result.issues?.map((i) => i.message).join('; ')}`);\n }\n\n return result.value;\n } catch (error) {\n console.error('Error verifying JWT:', error);\n throw error;\n }\n }\n\n async function validateToken(\n token: string,\n validation?: WorkloadConfig['validation'],\n ): Promise<TokenValidationResult> {\n if (!configWithDefaults) {\n throw new Error('Enterprise Standard Workload Manager not initialized');\n }\n try {\n const claims = await parseJWT(token, validation);\n\n // Check expiration\n const now = Math.floor(Date.now() / 1000);\n if (claims.exp && claims.exp < now) {\n return { valid: false, error: 'Token expired' };\n }\n\n // Validate based on mode using type guards\n if (isJwtBearerConfig(configWithDefaults)) {\n // JWT Bearer Grant validation\n if (configWithDefaults.audience && claims.aud !== configWithDefaults.audience) {\n return { valid: false, error: 'Invalid audience' };\n }\n } else if (isClientCredentialsConfig(configWithDefaults)) {\n // OAuth2 Client Credentials validation\n if (configWithDefaults.issuer && claims.iss !== configWithDefaults.issuer) {\n return { valid: false, error: 'Invalid issuer' };\n }\n if (configWithDefaults.audience && claims.aud !== configWithDefaults.audience) {\n return { valid: false, error: 'Invalid audience' };\n }\n } else {\n // Server-only mode - validate issuer if configured\n const serverConfig = configWithDefaults as WorkloadConfigBase;\n if (serverConfig.issuer && claims.iss !== serverConfig.issuer) {\n return { valid: false, error: 'Invalid issuer' };\n }\n }\n\n return {\n valid: true,\n claims,\n expiresAt: claims.exp ? new Date(claims.exp * 1000) : undefined,\n };\n } catch (error) {\n return {\n valid: false,\n error: error instanceof Error ? error.message : String(error),\n };\n }\n }\n\n async function getWorkload(request: Request): Promise<WorkloadIdentity | undefined> {\n if (!configWithDefaults) {\n throw new Error('Enterprise Standard Workload Manager not initialized');\n }\n // Validate server role requirements\n if (!configWithDefaults.jwks_uri) {\n throw new Error(\n 'Cannot validate tokens: Missing jwks_uri in WorkloadConfig. ' +\n 'Server role requires jwks_uri to be configured in vault to fetch public keys for token validation.',\n );\n }\n\n // Extract Bearer token from Authorization header\n const authHeader = request.headers.get('Authorization');\n if (!authHeader || !authHeader.startsWith('Bearer ')) {\n return undefined;\n }\n\n const token = authHeader.substring(7);\n const result = await validateToken(token, configWithDefaults.validation);\n\n if (!result.valid || !result.claims) {\n return undefined;\n }\n\n return {\n workload_id: result.claims.sub, // Subject is the workload identity\n client_id: typeof result.claims.client_id === 'string' ? result.claims.client_id : undefined, // May be present in OAuth2 tokens\n scope: result.claims.scope,\n claims: result.claims,\n };\n }\n\n // ========== Framework-Agnostic Handler ==========\n\n async function handler(request: Request): Promise<Response> {\n if (!configWithDefaults) {\n throw new Error('Enterprise Standard Workload Manager not initialized');\n }\n // Read handler URLs and validation directly from config (which is now part of the instance)\n const tokenUrl = configWithDefaults.tokenUrl;\n const validateUrl = configWithDefaults.validateUrl;\n const jwksUrl = configWithDefaults.jwksUrl;\n const refreshUrl = configWithDefaults.refreshUrl;\n const validation = configWithDefaults.validation;\n\n const path = new URL(request.url).pathname;\n\n // GET /api/workload/token?scope=api:read\n if (tokenUrl === path && request.method === 'GET') {\n const url = new URL(request.url);\n const scope = url.searchParams.get('scope') || undefined;\n const token = await getToken(scope);\n return new Response(JSON.stringify({ access_token: token, token_type: 'Bearer' }), {\n headers: [['Content-Type', 'application/json']],\n });\n }\n\n // POST /api/workload/validate with Authorization: Bearer <token>\n if (validateUrl === path && request.method === 'POST') {\n const authHeader = request.headers.get('Authorization');\n if (!authHeader || !authHeader.startsWith('Bearer ')) {\n return new Response(JSON.stringify({ valid: false, error: 'Missing Authorization header' }), {\n status: 401,\n headers: [['Content-Type', 'application/json']],\n });\n }\n const token = authHeader.substring(7);\n const result = await validateToken(token, validation);\n return new Response(JSON.stringify(result), {\n status: result.valid ? 200 : 401,\n headers: [['Content-Type', 'application/json']],\n });\n }\n\n // GET /api/workload/jwks\n if (jwksUrl === path && request.method === 'GET') {\n const jwks = await fetchJwks();\n return new Response(JSON.stringify(jwks), {\n headers: [['Content-Type', 'application/json']],\n });\n }\n\n // POST /api/workload/refresh\n if (refreshUrl === path && request.method === 'POST') {\n const tokenResponse = await refreshToken();\n return new Response(JSON.stringify(tokenResponse), {\n headers: [['Content-Type', 'application/json']],\n });\n }\n\n return new Response('Not Found', { status: 404 });\n }\n\n // ========== Return Interface ==========\n\n return {\n ...(configWithDefaults ?? {}),\n getToken,\n refreshToken,\n generateJWTAssertion,\n revokeToken,\n validateToken,\n getWorkload,\n parseJWT,\n handler,\n } as Workload;\n}\n","/**\n * Group storage for persisting group data.\n *\n * Group stores are an optional extension for the IAM Groups functionality.\n * They enable:\n * - Caching group data locally for fast lookups\n * - Receiving group provisioning from external IAM providers (SCIM server)\n * - Storing groups close to your application (in-memory, Redis, database)\n *\n * ## Example Usage\n *\n * ```typescript\n * import { InMemoryGroupStore } from '@enterprisestandard/react';\n *\n * const groupStore = new InMemoryGroupStore();\n *\n * // Store a group\n * await groupStore.upsert({\n * id: 'group-123',\n * displayName: 'Administrators',\n * createdAt: new Date(),\n * updatedAt: new Date(),\n * });\n *\n * // Look up groups\n * const group = await groupStore.get('group-123');\n * const allGroups = await groupStore.list();\n * ```\n */\n\nimport type { GroupMember } from './types/scim-schema';\n\n/**\n * Stored group data with required id and tracking metadata.\n *\n * @template TExtended - Type-safe custom data that consumers can add to groups\n */\nexport type StoredGroup<TExtended = {}> = {\n /**\n * Required unique identifier for the group.\n * This is the primary key for group storage.\n */\n id: string;\n\n /**\n * Required human-readable name for the group.\n */\n displayName: string;\n\n /**\n * Optional external identifier from provisioning client.\n */\n externalId?: string;\n\n /**\n * List of members in the group.\n */\n members?: GroupMember[];\n\n /**\n * Timestamp when the group was first stored.\n */\n createdAt: Date;\n\n /**\n * Timestamp when the group was last updated.\n */\n updatedAt: Date;\n} & TExtended;\n\n/**\n * Abstract interface for group storage backends.\n *\n * Consumers can implement this interface to use different storage backends:\n * - In-memory (for development/testing)\n * - Redis (for production with fast lookups)\n * - Database (PostgreSQL, MySQL, etc.)\n *\n * @template TExtended - Type-safe custom data that consumers can add to groups\n */\nexport interface GroupStore<TExtended = {}> {\n /**\n * Retrieve a group by its unique identifier.\n *\n * @param id - The group's unique identifier\n * @returns The group if found, null otherwise\n */\n get(id: string): Promise<StoredGroup<TExtended> | null>;\n\n /**\n * Retrieve a group by its external identifier.\n *\n * @param externalId - The external identifier from the provisioning client\n * @returns The group if found, null otherwise\n */\n getByExternalId(externalId: string): Promise<StoredGroup<TExtended> | null>;\n\n /**\n * Retrieve a group by its display name.\n *\n * @param displayName - The group's display name\n * @returns The group if found, null otherwise\n */\n getByDisplayName(displayName: string): Promise<StoredGroup<TExtended> | null>;\n\n /**\n * List all groups in the store.\n *\n * @returns Array of all stored groups\n */\n list(): Promise<StoredGroup<TExtended>[]>;\n\n /**\n * Create or update a group in the store.\n *\n * If a group with the same `id` exists, it will be updated.\n * Otherwise, a new group will be created.\n *\n * @param group - The group data to store\n */\n upsert(group: StoredGroup<TExtended>): Promise<void>;\n\n /**\n * Delete a group by its unique identifier.\n *\n * @param id - The group's unique identifier to delete\n */\n delete(id: string): Promise<void>;\n\n /**\n * Add a member to a group.\n *\n * @param groupId - The group's unique identifier\n * @param member - The member to add\n */\n addMember(groupId: string, member: GroupMember): Promise<void>;\n\n /**\n * Remove a member from a group.\n *\n * @param groupId - The group's unique identifier\n * @param memberId - The member's value/id to remove\n */\n removeMember(groupId: string, memberId: string): Promise<void>;\n}\n\n/**\n * In-memory group store implementation using Maps.\n *\n * Suitable for:\n * - Development and testing\n * - Single-server deployments\n * - Applications without high availability requirements\n *\n * NOT suitable for:\n * - Multi-server deployments (groups not shared)\n * - High availability scenarios (groups lost on restart)\n * - Production applications with distributed architecture\n *\n * For production, implement GroupStore with Redis or a database.\n *\n * @template TExtended - Type-safe custom data that consumers can add to groups\n */\nexport class InMemoryGroupStore<TExtended = {}> implements GroupStore<TExtended> {\n /** Primary storage: id -> group */\n private groups = new Map<string, StoredGroup<TExtended>>();\n\n /** Secondary index: externalId -> id */\n private externalIdIndex = new Map<string, string>();\n\n /** Secondary index: displayName (lowercase) -> id */\n private displayNameIndex = new Map<string, string>();\n\n async get(id: string): Promise<StoredGroup<TExtended> | null> {\n return this.groups.get(id) ?? null;\n }\n\n async getByExternalId(externalId: string): Promise<StoredGroup<TExtended> | null> {\n const id = this.externalIdIndex.get(externalId);\n if (!id) return null;\n return this.groups.get(id) ?? null;\n }\n\n async getByDisplayName(displayName: string): Promise<StoredGroup<TExtended> | null> {\n const id = this.displayNameIndex.get(displayName.toLowerCase());\n if (!id) return null;\n return this.groups.get(id) ?? null;\n }\n\n async list(): Promise<StoredGroup<TExtended>[]> {\n return Array.from(this.groups.values());\n }\n\n async upsert(group: StoredGroup<TExtended>): Promise<void> {\n const existing = this.groups.get(group.id);\n\n // Clean up old indexes if externalId or displayName changed\n if (existing) {\n if (existing.externalId && existing.externalId !== group.externalId) {\n this.externalIdIndex.delete(existing.externalId);\n }\n if (existing.displayName.toLowerCase() !== group.displayName.toLowerCase()) {\n this.displayNameIndex.delete(existing.displayName.toLowerCase());\n }\n }\n\n // Store the group\n this.groups.set(group.id, group);\n\n // Update indexes\n if (group.externalId) {\n this.externalIdIndex.set(group.externalId, group.id);\n }\n this.displayNameIndex.set(group.displayName.toLowerCase(), group.id);\n }\n\n async delete(id: string): Promise<void> {\n const group = this.groups.get(id);\n if (group) {\n // Clean up indexes\n if (group.externalId) {\n this.externalIdIndex.delete(group.externalId);\n }\n this.displayNameIndex.delete(group.displayName.toLowerCase());\n }\n this.groups.delete(id);\n }\n\n async addMember(groupId: string, member: GroupMember): Promise<void> {\n const group = this.groups.get(groupId);\n if (!group) {\n throw new Error(`Group ${groupId} not found`);\n }\n\n const members = group.members ?? [];\n\n // Check if member already exists\n if (!members.some((m) => m.value === member.value)) {\n members.push(member);\n group.members = members;\n group.updatedAt = new Date();\n }\n }\n\n async removeMember(groupId: string, memberId: string): Promise<void> {\n const group = this.groups.get(groupId);\n if (!group) {\n throw new Error(`Group ${groupId} not found`);\n }\n\n if (group.members) {\n group.members = group.members.filter((m) => m.value !== memberId);\n group.updatedAt = new Date();\n }\n }\n}\n","/**\n * Session management for tracking user sessions and enabling backchannel logout.\n *\n * Session stores are optional - the package works with JWT cookies alone.\n * Sessions are only required for backchannel logout functionality.\n *\n * ## Session Validation Strategies\n *\n * When using a session store, you can configure when sessions are validated:\n *\n * ### 'always' (default)\n * Validates session on every authenticated request.\n * - **Security**: Maximum - immediate session revocation\n * - **Performance**: InMemory ~0.00005ms, Redis ~1-2ms per request\n * - **Backchannel Logout**: Takes effect immediately\n * - **Use when**: Security is paramount, using InMemory or Redis backend\n *\n * ### 'refresh-only'\n * Validates session only during token refresh (typically every 5-15 minutes).\n * - **Security**: Good - 5-15 minute revocation window\n * - **Performance**: 99% reduction in session lookups\n * - **Backchannel Logout**: Takes effect within token TTL (5-15 min)\n * - **Use when**: Performance is critical AND delayed revocation is acceptable\n * - **WARNING**: Compromised sessions remain valid until next refresh\n *\n * ### 'disabled'\n * Never validates sessions against the store.\n * - **Security**: None - backchannel logout doesn't work\n * - **Performance**: No overhead\n * - **Use when**: Cookie-only mode without session store\n * - **WARNING**: Do not use with session_store configured\n *\n * ## Performance Characteristics\n *\n * | Backend | Lookup Time | Impact on Request | Recommendation |\n * |--------------|-------------|-------------------|------------------------|\n * | InMemory | <0.00005ms | Negligible | Use 'always' |\n * | Redis | 1-2ms | 2-4% increase | Use 'always' or test |\n * | Database | 5-20ms | 10-40% increase | Use Redis cache layer |\n *\n * ## Example Usage\n *\n * ```typescript\n * import { sso, InMemorySessionStore } from '@enterprisestandard/react/server';\n *\n * // Maximum security (default)\n * const secure = sso({\n * // ... other config\n * session_store: new InMemorySessionStore(),\n * session_validation: 'always', // Immediate revocation\n * });\n *\n * // High performance\n * const fast = sso({\n * // ... other config\n * session_store: new InMemorySessionStore(),\n * session_validation: {\n * strategy: 'refresh-only' // 5-15 min revocation delay\n * }\n * });\n * ```\n */\n\n/**\n * Core session data tracked for each authenticated user session.\n *\n * @template TExtended - Type-safe custom data that consumers can add to sessions\n */\nexport type Session<TExtended = {}> = {\n /**\n * Session ID from the Identity Provider (from `sid` claim in ID token).\n * This is the unique identifier for the session.\n */\n sid: string;\n\n /**\n * Subject identifier (user ID) from the Identity Provider.\n * From the `sub` claim in the ID token.\n */\n sub: string;\n\n /**\n * Timestamp when the session was created.\n */\n createdAt: Date;\n\n /**\n * Timestamp of the last activity in this session.\n * Can be updated to track session activity.\n */\n lastActivityAt: Date;\n\n /**\n * Allow consumers to add runtime data to sessions.\n */\n [key: string]: unknown;\n} & TExtended;\n\n/**\n * Abstract interface for session storage backends.\n *\n * Consumers can implement this interface to use different storage backends:\n * - Redis\n * - Database (PostgreSQL, MySQL, etc.)\n * - Distributed cache\n * - Custom solutions\n *\n * @template TExtended - Type-safe custom data that consumers can add to sessions\n *\n * @example\n * ```typescript\n * // Custom session data\n * type MySessionData = {\n * ipAddress: string;\n * userAgent: string;\n * };\n *\n * // Implement custom store\n * class RedisSessionStore implements SessionStore<MySessionData> {\n * async create(session: Session<MySessionData>): Promise<void> {\n * await redis.set(`session:${session.sid}`, JSON.stringify(session));\n * }\n * // ... other methods\n * }\n * ```\n */\nexport interface SessionStore<TExtended = {}> {\n /**\n * Create a new session in the store.\n *\n * @param session - The session data to store\n * @throws Error if session with same sid already exists\n */\n create(session: Session<TExtended>): Promise<void>;\n\n /**\n * Retrieve a session by its IdP session ID (sid).\n *\n * @param sid - The session.sid from the Identity Provider\n * @returns The session if found, null otherwise\n */\n get(sid: string): Promise<Session<TExtended> | null>;\n\n /**\n * Update an existing session with partial data.\n *\n * Commonly used to update lastActivityAt or add custom fields.\n *\n * @param sid - The session.sid to update\n * @param data - Partial session data to merge\n * @throws Error if session not found\n */\n update(sid: string, data: Partial<Session<TExtended>>): Promise<void>;\n\n /**\n * Delete a session by its IdP session ID (sid).\n *\n * Used for both normal logout and backchannel logout flows.\n *\n * @param sid - The session.sid to delete\n */\n delete(sid: string): Promise<void>;\n}\n\n/**\n * In-memory session store implementation using Maps.\n *\n * Suitable for:\n * - Development and testing\n * - Single-server deployments\n * - Applications without high availability requirements\n *\n * NOT suitable for:\n * - Multi-server deployments (sessions not shared)\n * - High availability scenarios (sessions lost on restart)\n * - Production applications with distributed architecture\n *\n * For production, implement SessionStore with Redis or a database.\n *\n * @template TExtended - Type-safe custom data that consumers can add to sessions\n */\nexport class InMemorySessionStore<TExtended = {}> implements SessionStore<TExtended> {\n private sessions = new Map<string, Session<TExtended>>();\n\n async create(session: Session<TExtended>): Promise<void> {\n if (this.sessions.has(session.sid)) {\n throw new Error(`Session with sid ${session.sid} already exists`);\n }\n\n this.sessions.set(session.sid, session);\n }\n\n async get(sid: string): Promise<Session<TExtended> | null> {\n return this.sessions.get(sid) ?? null;\n }\n\n async update(sid: string, data: Partial<Session<TExtended>>): Promise<void> {\n const session = this.sessions.get(sid);\n if (!session) {\n throw new Error(`Session with sid ${sid} not found`);\n }\n\n // Merge the update data\n const updated = { ...session, ...data };\n this.sessions.set(sid, updated);\n }\n\n async delete(sid: string): Promise<void> {\n this.sessions.delete(sid);\n }\n}\n","/**\n * Tenant Management SDK\n *\n * Provides helper functions for applications to implement tenant creation endpoints\n * that ESVS can test. Supports both synchronous (201) and asynchronous (202)\n * tenant creation with webhook-based status updates.\n */\n\n/**\n * Environment type for tenant creation\n */\nexport type EnvironmentType = 'POC' | 'DEV' | 'QA' | 'PROD';\n\n/**\n * Status of tenant creation process\n */\nexport type TenantStatus = 'pending' | 'processing' | 'completed' | 'failed';\n\n/**\n * Request payload from ESVS for creating a tenant\n */\nexport interface CreateTenantRequest {\n /**\n * Required app identifier to use when initializing EnterpriseStandard for this tenant.\n * This is the primary identifier for tenant management. A company can have multiple\n * applications (e.g., one instance on the east coast, one on the west coast).\n */\n appId: string;\n /**\n * Company ID (used for reporting purposes only, not for tenant identification)\n */\n companyId: string;\n\n /**\n * Company Name\n */\n companyName: string;\n\n /**\n * Environment Type (POC, DEV, QA, PROD)\n */\n environmentType: EnvironmentType;\n\n /**\n * Email (The email or distribution list used to communicate to the team)\n */\n email: string;\n\n /**\n * Webhook URL where the application can send updates around the creation of the tenant\n */\n webhookUrl: string;\n}\n\n/**\n * Response payload for tenant creation\n */\nexport interface CreateTenantResponse {\n /**\n * URL that the tenant will be available at\n */\n tenantUrl: string;\n\n /**\n * Current status of tenant creation\n */\n status: TenantStatus;\n}\n\n/**\n * Payload sent to webhook URL for status updates\n */\nexport interface TenantWebhookPayload {\n /**\n * Company ID\n */\n companyId: string;\n\n /**\n * Current status of tenant creation\n */\n status: TenantStatus;\n\n /**\n * URL that the tenant will be available at (provided once creation completes)\n */\n tenantUrl?: string;\n\n /**\n * Error message (only present if status is \"failed\")\n */\n error?: string;\n}\n\n/**\n * Error thrown when tenant request validation fails\n */\nexport class TenantRequestError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'TenantRequestError';\n }\n}\n\n/**\n * Serializes an ESConfig or EnterpriseStandard instance to a JSON-serializable format\n * by removing non-serializable properties like stores, validators, and functions.\n *\n * Since EnterpriseStandard now extends ESConfig, the config (including handler URLs)\n * is accessible directly from the instance.\n *\n * @param configOrES - The ESConfig object or EnterpriseStandard instance to serialize\n * @returns A JSON-serializable version of the config\n */\nexport function serializeESConfig(configOrES: any): any {\n // EnterpriseStandard now extends ESConfig, so we can access config directly\n // Extract the config properties (sso, iam, workload, validation, defaultInstance)\n // and exclude the service instances (vault, sso instance, iam instance, workload instance)\n if (\n configOrES &&\n typeof configOrES === 'object' &&\n 'sso' in configOrES &&\n 'workload' in configOrES &&\n 'iam' in configOrES\n ) {\n // It's an EnterpriseStandard instance\n // Extract config from the service instances (they now extend their configs)\n const config: any = {\n defaultInstance: configOrES.defaultInstance,\n sso: configOrES.sso ? serializeESConfig(configOrES.sso) : undefined,\n iam: configOrES.iam ? serializeESConfig(configOrES.iam) : undefined,\n workload: configOrES.workload ? serializeESConfig(configOrES.workload) : undefined,\n validation: configOrES.validation,\n };\n return config;\n }\n\n // Otherwise, treat it as an ESConfig or service config\n const config = configOrES;\n if (config === null || config === undefined) {\n return config;\n }\n\n // Handle primitives\n if (typeof config !== 'object') {\n return config;\n }\n\n // Handle arrays\n if (Array.isArray(config)) {\n return config.map((item) => serializeESConfig(item));\n }\n\n // Check if it's a store instance (has methods like get, set, create, delete, etc.)\n const isStore =\n typeof config.get === 'function' ||\n typeof config.set === 'function' ||\n typeof config.create === 'function' ||\n typeof config.delete === 'function' ||\n typeof config.upsert === 'function' ||\n typeof config.list === 'function';\n\n // Check if it's a StandardSchemaV1 validator (has '~standard' property)\n const isValidator = config['~standard'] !== undefined;\n\n // Check if it's a function\n if (typeof config === 'function' || isStore || isValidator) {\n return undefined;\n }\n\n // Handle Date objects\n if (config instanceof Date) {\n return config.toISOString();\n }\n\n // Recursively serialize object properties\n const serialized: any = {};\n for (const key in config) {\n if (Object.hasOwn(config, key)) {\n // Skip non-serializable properties\n if (\n key === 'session_store' ||\n key === 'user_store' ||\n key === 'token_store' ||\n key === 'group_store' ||\n key === 'validation' ||\n key === 'vault' || // Skip vault instance\n // Skip method properties from service instances\n key === 'getUser' ||\n key === 'getRequiredUser' ||\n key === 'getJwt' ||\n key === 'initiateLogin' ||\n key === 'logout' ||\n key === 'callbackHandler' ||\n key === 'handler' ||\n key === 'getToken' ||\n key === 'refreshToken' ||\n key === 'generateJWTAssertion' ||\n key === 'revokeToken' ||\n key === 'validateToken' ||\n key === 'getWorkload' ||\n key === 'parseJWT' ||\n key === 'createUser' ||\n key === 'getBaseUrl' ||\n key === 'groups_outbound' ||\n key === 'groups_inbound'\n ) {\n continue;\n }\n\n const value = serializeESConfig(config[key]);\n // Only include defined values\n if (value !== undefined) {\n serialized[key] = value;\n }\n }\n }\n\n return serialized;\n}\n\n/**\n * Parse and validate a tenant creation request from an HTTP request.\n *\n * @param request - The HTTP request containing the tenant creation data\n * @returns The validated tenant creation request\n * @throws {TenantRequestError} If the request is invalid or missing required fields\n *\n * @example\n * ```typescript\n * app.post('/api/tenant', async (c) => {\n * try {\n * const tenantRequest = await parseTenantRequest(c.req.raw);\n * // Create tenant...\n * } catch (error) {\n * if (error instanceof TenantRequestError) {\n * return c.json({ error: error.message }, 400);\n * }\n * throw error;\n * }\n * });\n * ```\n */\nexport async function parseTenantRequest(request: Request): Promise<CreateTenantRequest> {\n if (request.method !== 'POST') {\n throw new TenantRequestError('Only POST method is supported');\n }\n\n let body: unknown;\n try {\n body = await request.json();\n } catch (_error) {\n throw new TenantRequestError('Invalid JSON in request body');\n }\n\n if (typeof body !== 'object' || body === null) {\n throw new TenantRequestError('Request body must be an object');\n }\n\n const tenantRequest = body as Partial<CreateTenantRequest>;\n\n // Validate required fields\n if (!tenantRequest.appId) {\n throw new TenantRequestError('Missing required field: appId');\n }\n if (!tenantRequest.companyId) {\n throw new TenantRequestError('Missing required field: companyId');\n }\n if (!tenantRequest.companyName) {\n throw new TenantRequestError('Missing required field: companyName');\n }\n if (!tenantRequest.environmentType) {\n throw new TenantRequestError('Missing required field: environmentType');\n }\n if (!tenantRequest.email) {\n throw new TenantRequestError('Missing required field: email');\n }\n if (!tenantRequest.webhookUrl) {\n throw new TenantRequestError('Missing required field: webhookUrl');\n }\n\n // Validate environmentType enum\n const validEnvironmentTypes: EnvironmentType[] = ['POC', 'DEV', 'QA', 'PROD'];\n if (!validEnvironmentTypes.includes(tenantRequest.environmentType)) {\n throw new TenantRequestError(\n `Invalid environmentType: ${tenantRequest.environmentType}. Must be one of: ${validEnvironmentTypes.join(', ')}`,\n );\n }\n\n // Validate webhookUrl is a valid URL\n try {\n new URL(tenantRequest.webhookUrl);\n } catch {\n throw new TenantRequestError('Invalid webhookUrl: must be a valid URL');\n }\n\n // At this point, all required fields are validated and non-null\n // Extract them to satisfy TypeScript's type narrowing\n const appId = tenantRequest.appId!;\n const companyId = tenantRequest.companyId!;\n const companyName = tenantRequest.companyName!;\n const environmentType = tenantRequest.environmentType!;\n const email = tenantRequest.email!;\n const webhookUrl = tenantRequest.webhookUrl!;\n\n return {\n appId,\n companyId,\n companyName,\n environmentType,\n email,\n webhookUrl,\n };\n}\n\n/**\n * Send a webhook update to ESVS with tenant creation status.\n *\n * @param webhookUrl - The webhook URL provided in the tenant creation request\n * @param payload - The webhook payload with status and tenant information\n * @throws Never throws - errors are logged but not propagated to avoid breaking tenant creation\n *\n * @example\n * ```typescript\n * // Send initial status\n * await sendTenantWebhook(tenantRequest.webhookUrl, {\n * companyId: tenantRequest.companyId,\n * status: 'processing',\n * });\n *\n * // Send completion status\n * await sendTenantWebhook(tenantRequest.webhookUrl, {\n * companyId: tenantRequest.companyId,\n * status: 'completed',\n * tenantUrl: 'https://app.example.com/tenants/tenant-123',\n * });\n * ```\n */\nexport async function sendTenantWebhook(webhookUrl: string, payload: TenantWebhookPayload): Promise<void> {\n try {\n const response = await fetch(webhookUrl, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(payload),\n });\n\n if (!response.ok) {\n console.error(`Failed to send webhook update: ${response.status} ${response.statusText}`);\n }\n } catch (error) {\n console.error('Failed to send webhook update:', error);\n // Don't throw - webhook failures shouldn't break tenant creation\n }\n}\n\n/**\n * Stored tenant data with required appId and tracking metadata.\n *\n * @template TExtended - Type-safe custom data that consumers can add to tenants\n */\nexport type StoredTenant<TExtended = {}> = {\n /**\n * Required app identifier used to initialize EnterpriseStandard for this tenant.\n * This is the primary key for tenant storage. A company can have multiple\n * applications (e.g., one instance on the east coast, one on the west coast).\n */\n appId: string;\n\n /**\n * Company ID (used for reporting purposes only, not for tenant identification)\n */\n companyId: string;\n\n /**\n * Company Name\n */\n companyName: string;\n\n /**\n * Environment Type (POC, DEV, QA, PROD)\n */\n environmentType: EnvironmentType;\n\n /**\n * Email (The email or distribution list used to communicate to the team)\n */\n email: string;\n\n /**\n * Webhook URL where the application can send updates around the creation of the tenant\n */\n webhookUrl: string;\n\n /**\n * URL that the tenant will be available at\n */\n tenantUrl?: string;\n\n /**\n * Current status of tenant creation\n */\n status: TenantStatus;\n\n /**\n * Error message (only present if status is \"failed\")\n */\n error?: string;\n\n /**\n * Timestamp when the tenant was first stored.\n */\n createdAt: Date;\n\n /**\n * Timestamp when the tenant was last updated.\n */\n updatedAt: Date;\n\n /**\n * Serialized Enterprise Standard configuration.\n * This is a JSON-serializable version of the ESConfig with non-serializable items excluded.\n */\n config?: any;\n} & TExtended;\n\n/**\n * Abstract interface for tenant storage backends.\n *\n * Consumers can implement this interface to use different storage backends:\n * - In-memory (for development/testing)\n * - Redis (for production with fast lookups)\n * - Database (PostgreSQL, MySQL, etc.)\n *\n * @template TExtended - Type-safe custom data that consumers can add to tenants\n */\nexport interface TenantStore<TExtended = {}> {\n /**\n * Retrieve a tenant by its app identifier.\n *\n * @param appId - The tenant's app identifier (primary key)\n * @returns The tenant if found, null otherwise\n */\n get(appId: string): Promise<StoredTenant<TExtended> | null>;\n\n /**\n * Retrieve all tenants for a company ID.\n * Since a company can have multiple applications, this returns an array.\n *\n * @param companyId - The company ID (used for reporting, not primary identification)\n * @returns Array of tenants for the company, empty array if none found\n */\n getByCompanyId(companyId: string): Promise<StoredTenant<TExtended>[]>;\n\n /**\n * List all tenants in the store.\n *\n * @returns Array of all stored tenants\n */\n list(): Promise<StoredTenant<TExtended>[]>;\n\n /**\n * Create or update a tenant in the store.\n *\n * If a tenant with the same `appId` exists, it will be updated.\n * Otherwise, a new tenant will be created.\n *\n * @param tenant - The tenant data to store\n * @returns The stored tenant\n */\n upsert(tenant: StoredTenant<TExtended>): Promise<StoredTenant<TExtended>>;\n\n /**\n * Delete a tenant by its app identifier.\n *\n * @param appId - The tenant's app identifier to delete\n */\n delete(appId: string): Promise<void>;\n}\n\n/**\n * In-memory tenant store implementation using Maps.\n *\n * Suitable for:\n * - Development and testing\n * - Single-server deployments\n * - Applications without high availability requirements\n *\n * NOT suitable for:\n * - Multi-server deployments (tenants not shared)\n * - High availability scenarios (tenants lost on restart)\n * - Production applications with distributed architecture\n *\n * For production, implement TenantStore with Redis or a database.\n *\n * @template TExtended - Type-safe custom data that consumers can add to tenants\n */\nexport class InMemoryTenantStore<TExtended = {}> implements TenantStore<TExtended> {\n /** Primary storage: appId -> tenant */\n private tenants = new Map<string, StoredTenant<TExtended>>();\n\n /** Secondary index: companyId -> Set of appIds (since one company can have multiple apps) */\n private companyIdIndex = new Map<string, Set<string>>();\n\n async get(appId: string): Promise<StoredTenant<TExtended> | null> {\n return this.tenants.get(appId) ?? null;\n }\n\n async getByCompanyId(companyId: string): Promise<StoredTenant<TExtended>[]> {\n const appIds = this.companyIdIndex.get(companyId);\n if (!appIds || appIds.size === 0) return [];\n\n const tenants: StoredTenant<TExtended>[] = [];\n for (const appId of appIds) {\n const tenant = this.tenants.get(appId);\n if (tenant) {\n tenants.push(tenant);\n }\n }\n return tenants;\n }\n\n async list(): Promise<StoredTenant<TExtended>[]> {\n return Array.from(this.tenants.values());\n }\n\n async upsert(tenant: StoredTenant<TExtended>): Promise<StoredTenant<TExtended>> {\n const existing = this.tenants.get(tenant.appId);\n\n // Clean up old index if companyId changed\n if (existing && existing.companyId !== tenant.companyId) {\n const oldAppIds = this.companyIdIndex.get(existing.companyId);\n if (oldAppIds) {\n oldAppIds.delete(tenant.appId);\n if (oldAppIds.size === 0) {\n this.companyIdIndex.delete(existing.companyId);\n }\n }\n }\n\n // Store the tenant\n this.tenants.set(tenant.appId, tenant);\n\n // Update index (companyId -> Set of appIds)\n let appIds = this.companyIdIndex.get(tenant.companyId);\n if (!appIds) {\n appIds = new Set<string>();\n this.companyIdIndex.set(tenant.companyId, appIds);\n }\n appIds.add(tenant.appId);\n\n return tenant;\n }\n\n async delete(appId: string): Promise<void> {\n const tenant = this.tenants.get(appId);\n if (tenant) {\n // Clean up index\n const appIds = this.companyIdIndex.get(tenant.companyId);\n if (appIds) {\n appIds.delete(appId);\n if (appIds.size === 0) {\n this.companyIdIndex.delete(tenant.companyId);\n }\n }\n }\n this.tenants.delete(appId);\n }\n}\n","import type { EnterpriseStandard } from '.';\nimport type { TokenValidationResult } from './types/workload-schema';\nimport { getES } from './utils';\nimport type { WorkloadIdentity } from './workload';\n\n/**\n * Returns a 503 response indicating that the SSO is unavailable\n */\nfunction unavailable(error?: string) {\n error = error ?? 'Workload authentication unavailable';\n new Response(JSON.stringify({ error }), {\n status: 503,\n statusText: error,\n headers: { 'Content-Type': 'application/json' },\n });\n}\n\n/**\n * Get the workload identity from an incoming request.\n * Returns undefined if no valid workload token is present.\n *\n * @param request - Request with Authorization header\n * @param config - Optional EnterpriseStandard configuration\n * @returns WorkloadIdentity or undefined\n *\n * @example\n * ```typescript\n * import { getWorkload } from '@enterprisestandard/react';\n *\n * export async function handler(request: Request) {\n * const workload = await getWorkload(request);\n *\n * if (!workload) {\n * return new Response('Unauthorized', { status: 401 });\n * }\n *\n * console.log('Request from workload:', workload.workload_id);\n * // ... process authenticated request\n * }\n * ```\n */\nexport async function getWorkload(request: Request, es?: EnterpriseStandard): Promise<WorkloadIdentity | undefined> {\n const workloadAuth = getES(es)?.workload;\n if (!workloadAuth) {\n return undefined;\n }\n return workloadAuth.getWorkload(request);\n}\n\n/**\n * Get an access token for the configured workload identity.\n *\n * @param scope - Optional OAuth2 scopes (space-delimited)\n * @param config - Optional EnterpriseStandard configuration\n * @returns Access token string\n *\n * @example\n * ```typescript\n * import { getWorkloadToken } from '@enterprisestandard/react/server';\n *\n * // Get token for API calls\n * const token = await getWorkloadToken('api:read api:write');\n *\n * // Use in outbound requests\n * const response = await fetch('https://api.example.com/data', {\n * headers: { 'Authorization': `Bearer ${token}` },\n * });\n * ```\n */\nexport async function getWorkloadToken(scope?: string, es?: EnterpriseStandard): Promise<string> {\n const workloadAuth = getES(es)?.workload;\n if (!workloadAuth) throw unavailable();\n return workloadAuth.getToken(scope);\n}\n\n/**\n * Validate a workload token from an incoming request.\n *\n * @param request - Request with Authorization header\n * @param config - Optional EnterpriseStandard configuration\n * @returns Token validation result\n *\n * @example\n * ```typescript\n * import { validateWorkloadToken } from '@enterprisestandard/react/server';\n *\n * export async function handler(request: Request) {\n * const result = await validateWorkloadToken(request);\n *\n * if (!result.valid) {\n * return new Response(\n * JSON.stringify({ error: result.error }),\n * { status: 401 }\n * );\n * }\n *\n * const workloadId = result.claims?.iss;\n * // ... process authenticated request\n * }\n * ```\n */\nexport async function validateWorkloadToken(request: Request, es?: EnterpriseStandard): Promise<TokenValidationResult> {\n const workloadAuth = getES(es)?.workload;\n if (!workloadAuth) {\n return { valid: false, error: 'Workload authentication unavailable' };\n }\n\n const authHeader = request.headers.get('Authorization');\n if (!authHeader || !authHeader.startsWith('Bearer ')) {\n return { valid: false, error: 'Missing or invalid Authorization header' };\n }\n\n const token = authHeader.substring(7);\n return workloadAuth.validateToken(token);\n}\n\n/**\n * Revoke a workload access token.\n *\n * @param token - The access token to revoke\n * @param config - Optional EnterpriseStandard configuration\n *\n * @example\n * ```typescript\n * import { revokeWorkloadToken } from '@enterprisestandard/react/server';\n *\n * // Revoke token when workload is decommissioned\n * await revokeWorkloadToken(accessToken);\n * ```\n */\nexport async function revokeWorkloadToken(token: string, es?: EnterpriseStandard): Promise<void> {\n const workloadAuth = getES(es)?.workload;\n if (!workloadAuth) throw unavailable();\n return workloadAuth.revokeToken(token);\n}\n\n/**\n * Framework-agnostic handler for workload authentication routes.\n *\n * The handler reads configuration (handler URLs, validation) directly from the\n * EnterpriseStandard instance, so no config parameter is needed.\n *\n * @param request - Incoming request\n * @param config - Optional ESConfig to specify which EnterpriseStandard instance to use\n * @returns Response\n *\n * @example\n * ```typescript\n * import { workloadHandler } from '@enterprisestandard/react/server';\n *\n * // TanStack Start example\n * export const Route = createFileRoute('/api/workload/$')({\n * server: {\n * handlers: ({ createHandlers }) =>\n * createHandlers({\n * GET: {\n * handler: async ({ request }) => {\n * return workloadHandler(request);\n * },\n * },\n * POST: {\n * handler: async ({ request }) => {\n * return workloadHandler(request);\n * },\n * },\n * }),\n * },\n * });\n * ```\n */\nexport async function workloadHandler(request: Request, es?: EnterpriseStandard): Promise<Response> {\n const workloadAuth = getES(es)?.workload;\n if (!workloadAuth) throw unavailable();\n return workloadAuth.handler(request);\n}\n","import type { EnterpriseStandard } from '.';\nimport type { LoginConfig } from './sso';\nimport { getES } from './utils';\n\n/**\n * Returns a 503 response indicating that the SSO is unavailable\n */\nfunction unavailable(error?: string) {\n error = error ?? 'SSO Unavailable';\n new Response(JSON.stringify({ error }), {\n status: 503,\n statusText: error,\n headers: { 'Content-Type': 'application/json' },\n });\n}\n\n/**\n * Helper gets the user from the Request using the supplied EnterpriseStandard or the default instance\n */\nexport async function getUser(request: Request, es?: EnterpriseStandard) {\n return getES(es)?.sso.getUser(request);\n}\n\nexport async function getRequiredUser(request: Request, es?: EnterpriseStandard) {\n const sso = getES(es)?.sso;\n if (!sso) throw unavailable();\n return sso.getRequiredUser(request);\n}\n\nexport async function initiateLogin(config: LoginConfig, es?: EnterpriseStandard) {\n const sso = getES(es)?.sso;\n if (!sso) throw unavailable();\n return sso.initiateLogin(config);\n}\n\nexport async function callback(request: Request, es?: EnterpriseStandard) {\n const sso = getES(es)?.sso;\n if (!sso) throw unavailable();\n return sso.callbackHandler(request);\n}\n\nexport async function handler(request: Request, es?: EnterpriseStandard) {\n es = getES(es);\n if (!es) throw unavailable();\n return es.sso.handler(request, es);\n}\n\n// Tenant server helpers\nexport * from './tenant-server';\n// Workload server helpers\nexport * from './workload-server';\n","import type { PropsWithChildren } from 'react';\nimport { useUser } from '..';\n\nexport function SignInLoading({ complete = false, children }: { complete?: boolean } & PropsWithChildren) {\n const { isLoading } = useUser();\n\n if (isLoading && !complete) return <>{children}</>;\n return null;\n}\n","import type { PropsWithChildren } from 'react';\nimport { useUser } from '..';\n\nexport function SignedIn({ children }: PropsWithChildren) {\n const { user } = useUser();\n\n if (user) return <>{children}</>;\n return null;\n}\n","import type { PropsWithChildren } from 'react';\nimport { useUser } from '..';\n\nexport function SignedOut({ children }: PropsWithChildren) {\n const { user, isLoading } = useUser();\n\n if (user || isLoading) return null;\n return <>{children}</>;\n}\n","import { createContext, type ReactNode, useCallback, useContext, useEffect, useState } from 'react';\nimport type { User } from '../types/user';\n\ntype StorageType = 'local' | 'session' | 'memory';\n\ninterface SSOProviderProps {\n tenantId?: string;\n storage?: StorageType;\n storageKey?: string;\n userUrl?: string;\n tokenUrl?: string;\n refreshUrl?: string;\n disableListener?: boolean;\n children: ReactNode;\n}\n\ninterface SSOContext {\n user: User | null;\n setUser: (user: User | null) => void;\n isLoading: boolean;\n tokenUrl?: string;\n refreshUrl?: string;\n}\n\nconst CTX = createContext<SSOContext | undefined>(undefined);\n\nconst generateStorageKey = (tenantId: string): string => {\n return `es-sso-user-${tenantId\n .replace(/[^a-zA-Z0-9]/g, '-')\n .replace(/-+/g, '-')\n .replace(/^-|-$/g, '')}`;\n};\n\nexport function SSOProvider({\n tenantId,\n storage = 'memory',\n storageKey,\n userUrl,\n tokenUrl,\n refreshUrl,\n disableListener = false,\n children,\n}: SSOProviderProps) {\n const [user, setUserState] = useState<User | null>(null);\n const [isLoading, setIsLoading] = useState<boolean>(!!userUrl);\n\n const actualStorageKey = storageKey || (tenantId ? generateStorageKey(tenantId) : 'es-sso-user');\n\n const isValidUser = useCallback(\n (user: User | null): boolean => {\n if (!user || !tenantId) return true;\n return user.sso?.tenant?.id === tenantId;\n },\n [tenantId],\n );\n\n const loadUserFromStorage = useCallback((): User | null => {\n if (storage === 'memory' || typeof window === 'undefined') return null;\n\n try {\n const storageObject = storage === 'local' ? localStorage : sessionStorage;\n const userData = storageObject.getItem(actualStorageKey);\n if (!userData) return null;\n\n const parsedUser = JSON.parse(userData) as User;\n\n if (parsedUser.sso?.expires) {\n parsedUser.sso.expires = new Date(parsedUser.sso.expires);\n }\n\n return isValidUser(parsedUser) ? parsedUser : null;\n } catch (error) {\n console.error('Error loading user from storage:', error);\n return null;\n }\n }, [storage, actualStorageKey, isValidUser]);\n\n const saveUserToStorage = useCallback(\n (user: User | null) => {\n if (storage === 'memory' || typeof window === 'undefined') return;\n\n try {\n const storageObject = storage === 'local' ? localStorage : sessionStorage;\n if (user === null) {\n storageObject.removeItem(actualStorageKey);\n } else {\n storageObject.setItem(actualStorageKey, JSON.stringify(user));\n }\n } catch (error) {\n console.error('Error saving user to storage:', error);\n }\n },\n [storage, actualStorageKey],\n );\n\n const setUser = useCallback(\n (newUser: User | null) => {\n if (newUser && !isValidUser(newUser)) return;\n\n setUserState(newUser);\n saveUserToStorage(newUser);\n },\n [isValidUser, saveUserToStorage],\n );\n\n const fetchUserFromUrl = useCallback(async () => {\n if (!userUrl) return;\n\n setIsLoading(true);\n try {\n const response = await fetch(userUrl);\n\n if (response.status === 401) {\n setUserState(null);\n saveUserToStorage(null);\n setIsLoading(false);\n return;\n }\n\n if (!response.ok) {\n throw new Error(`Failed to fetch user: ${response.status} ${response.statusText}`);\n }\n\n const userData = (await response.json()) as User;\n\n if (userData.sso?.expires && typeof userData.sso.expires === 'string') {\n userData.sso.expires = new Date(userData.sso.expires);\n }\n\n if (isValidUser(userData)) {\n setUserState(userData);\n saveUserToStorage(userData);\n }\n } catch (error) {\n console.error('Error fetching user from URL:', error);\n } finally {\n setIsLoading(false);\n }\n }, [userUrl, isValidUser, saveUserToStorage]);\n\n useEffect(() => {\n const storedUser = loadUserFromStorage();\n if (storedUser) {\n setUserState(storedUser);\n }\n\n if (userUrl) {\n fetchUserFromUrl();\n } else {\n setIsLoading(false);\n }\n }, [loadUserFromStorage, userUrl, fetchUserFromUrl]);\n\n useEffect(() => {\n if (disableListener || storage === 'memory') return;\n\n const handleStorageChange = (event: StorageEvent) => {\n if (event.key !== actualStorageKey) return;\n\n if (event.newValue === null) {\n setUserState(null);\n } else {\n try {\n const parsedUser = JSON.parse(event.newValue) as User;\n\n if (parsedUser.sso?.expires) {\n parsedUser.sso.expires = new Date(parsedUser.sso.expires);\n }\n\n if (isValidUser(parsedUser)) {\n setUserState(parsedUser);\n }\n } catch (error) {\n console.error('Error parsing user from storage event:', error);\n }\n }\n };\n\n const handleLogout = () => {\n setUserState(null);\n };\n\n window.addEventListener('storage', handleStorageChange);\n window.addEventListener('es-sso-logout', handleLogout);\n\n return () => {\n window.removeEventListener('storage', handleStorageChange);\n window.removeEventListener('es-sso-logout', handleLogout);\n };\n }, [disableListener, storage, actualStorageKey, isValidUser]);\n\n const contextValue: SSOContext = {\n user,\n setUser,\n isLoading,\n tokenUrl,\n refreshUrl,\n };\n\n return <CTX.Provider value={contextValue}>{children}</CTX.Provider>;\n}\n\nexport function useUser(): SSOContext {\n const context = useContext(CTX);\n if (context === undefined) {\n throw new Error('useUser must be used within a SSOProvider');\n }\n return context;\n}\n\ninterface JwtData {\n token: string;\n expires: string;\n}\n\ninterface UseTokenReturn {\n token: string | null;\n isLoading: boolean;\n error: Error | null;\n refresh: () => Promise<void>;\n}\n\nexport function useToken(): UseTokenReturn {\n const context = useContext(CTX);\n if (context === undefined) {\n throw new Error('useToken must be used within a SSOProvider');\n }\n\n const { tokenUrl, refreshUrl } = context;\n if (!tokenUrl || !refreshUrl) {\n throw new Error('useToken requires that a \"tokenUrl\" and \"refreshUrl\" be set in the SSOProvider');\n }\n\n const [token, setToken] = useState<string | null>(null);\n const [expires, setExpires] = useState<Date | null>(null);\n const [isLoading, setIsLoading] = useState<boolean>(!!tokenUrl);\n const [error, setError] = useState<Error | null>(null);\n\n const fetchJwt = useCallback(\n async (url: string) => {\n setIsLoading(true);\n setError(null);\n try {\n const response = await fetch(url);\n\n if (response.status === 401) {\n context.setUser(null);\n setToken(null);\n setExpires(null);\n setIsLoading(false);\n return;\n }\n\n if (!response.ok) {\n throw new Error(`Failed to fetch JWT: ${response.status} ${response.statusText}`);\n }\n\n const data = (await response.json()) as JwtData;\n setToken(data.token);\n setExpires(new Date(data.expires));\n } catch (err) {\n const error = err instanceof Error ? err : new Error(String(err));\n setError(error);\n setToken(null);\n setExpires(null);\n console.error('Error fetching JWT:', error);\n } finally {\n setIsLoading(false);\n }\n },\n [context],\n );\n\n const refresh = useCallback(async () => {\n const url = refreshUrl || tokenUrl;\n if (!url) {\n console.warn('No tokenUrl or refreshUrl provided');\n return;\n }\n await fetchJwt(url);\n }, [refreshUrl, tokenUrl, fetchJwt]);\n\n useEffect(() => {\n if (!tokenUrl) {\n setIsLoading(false);\n return;\n }\n\n fetchJwt(tokenUrl);\n }, [tokenUrl, fetchJwt]);\n\n useEffect(() => {\n if (!expires || !refreshUrl) return;\n\n const checkExpiration = () => {\n const now = new Date();\n const timeUntilExpiry = expires.getTime() - now.getTime();\n\n // Refresh 1 minute before expiration\n if (timeUntilExpiry <= 60000 && timeUntilExpiry > 0) {\n refresh();\n }\n };\n\n // Check immediately\n checkExpiration();\n\n // Check every 30 seconds\n const interval = setInterval(checkExpiration, 30000);\n\n return () => clearInterval(interval);\n }, [expires, refreshUrl, refresh]);\n\n return {\n token,\n isLoading,\n error,\n refresh,\n };\n}\n\nexport async function logout(logoutUrl: string): Promise<{ success: boolean; error?: string }> {\n try {\n // Make AJAX logout call\n const response = await fetch(logoutUrl, {\n headers: { Accept: 'application/json' },\n });\n\n if (!response.ok) {\n return { success: false, error: `HTTP ${response.status}` };\n }\n\n const data = await response.json();\n if (!data.success) {\n return { success: false, error: data.message || 'Logout failed' };\n }\n\n // Clear managed storage keys (all es-sso-user-* keys)\n if (typeof window !== 'undefined') {\n // Clear localStorage\n for (let i = localStorage.length - 1; i >= 0; i--) {\n const key = localStorage.key(i);\n if (key?.startsWith('es-sso-user')) {\n localStorage.removeItem(key);\n }\n }\n\n // Clear sessionStorage\n for (let i = sessionStorage.length - 1; i >= 0; i--) {\n const key = sessionStorage.key(i);\n if (key?.startsWith('es-sso-user')) {\n sessionStorage.removeItem(key);\n }\n }\n\n // Dispatch custom event for same-tab state updates\n window.dispatchEvent(new CustomEvent('es-sso-logout'));\n }\n\n return { success: true };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : 'Network error',\n };\n }\n}\n","/**\n * User storage for persisting user profiles from SSO authentication.\n *\n * User stores are optional - the package works with JWT cookies alone.\n * User stores are useful when you want to:\n * - Cache user profiles for fast lookup\n * - Store users close to your application (in-memory, Redis, etc.)\n * - Avoid custom IAM/SCIM integration for simple use cases\n *\n * ## When to Use UserStore vs IAM\n *\n * **Use UserStore when:**\n * - You just need fast user lookups without external systems\n * - Users are managed by an external IdP and you just cache them locally\n * - You want simple in-memory or Redis storage\n *\n * **Use IAM (SCIM) when:**\n * - You need to provision users to an external identity provider\n * - You need custom user attributes beyond what SSO provides\n * - You need to sync users with enterprise directories\n *\n * ## Example Usage\n *\n * ```typescript\n * import { sso, InMemoryUserStore } from '@enterprisestandard/react/server';\n *\n * const userStore = new InMemoryUserStore();\n *\n * const auth = sso({\n * // ... other config\n * user_store: userStore,\n * });\n *\n * // Later, look up users\n * const user = await userStore.get('user-sub-id');\n * const userByEmail = await userStore.getByEmail('user@example.com');\n * ```\n */\n\nimport type { User } from './types/user';\n\n/**\n * Stored user data with required id and tracking metadata.\n *\n * Extends the SSO User type with:\n * - Required `id` (the `sub` claim from the IdP)\n * - Timestamps for tracking when users were first seen and last updated\n * - Optional custom extended data\n *\n * @template TExtended - Type-safe custom data that consumers can add to users\n */\nexport type StoredUser<TExtended = {}> = User & {\n /**\n * Required unique identifier (the `sub` claim from the IdP).\n * This is the primary key for user storage.\n */\n id: string;\n\n /**\n * Timestamp when the user was first stored.\n */\n createdAt: Date;\n\n /**\n * Timestamp when the user was last updated (e.g., on re-login).\n */\n updatedAt: Date;\n} & TExtended;\n\n/**\n * Abstract interface for user storage backends.\n *\n * Consumers can implement this interface to use different storage backends:\n * - In-memory (for development/testing)\n * - Redis (for production with fast lookups)\n * - Database (PostgreSQL, MySQL, etc.)\n *\n * @template TExtended - Type-safe custom data that consumers can add to users\n *\n * @example\n * ```typescript\n * // Custom user data\n * type MyUserData = {\n * department: string;\n * roles: string[];\n * };\n *\n * // Implement custom store\n * class RedisUserStore implements UserStore<MyUserData> {\n * async get(sub: string): Promise<StoredUser<MyUserData> | null> {\n * const data = await redis.get(`user:${sub}`);\n * return data ? JSON.parse(data) : null;\n * }\n * // ... other methods\n * }\n * ```\n */\nexport interface UserStore<TExtended = {}> {\n /**\n * Retrieve a user by their subject identifier (sub).\n *\n * @param sub - The user's unique identifier from the IdP\n * @returns The user if found, null otherwise\n */\n get(sub: string): Promise<StoredUser<TExtended> | null>;\n\n /**\n * Retrieve a user by their email address.\n *\n * @param email - The user's email address\n * @returns The user if found, null otherwise\n */\n getByEmail(email: string): Promise<StoredUser<TExtended> | null>;\n\n /**\n * Retrieve a user by their username.\n *\n * @param userName - The user's username\n * @returns The user if found, null otherwise\n */\n getByUserName(userName: string): Promise<StoredUser<TExtended> | null>;\n\n /**\n * Create or update a user in the store.\n *\n * If a user with the same `id` (sub) exists, it will be updated.\n * Otherwise, a new user will be created.\n *\n * @param user - The user data to store\n */\n upsert(user: StoredUser<TExtended>): Promise<void>;\n\n /**\n * Delete a user by their subject identifier (sub).\n *\n * @param sub - The user's unique identifier to delete\n */\n delete(sub: string): Promise<void>;\n}\n\n/**\n * In-memory user store implementation using Maps.\n *\n * Suitable for:\n * - Development and testing\n * - Single-server deployments\n * - Applications without high availability requirements\n *\n * NOT suitable for:\n * - Multi-server deployments (users not shared)\n * - High availability scenarios (users lost on restart)\n * - Production applications with distributed architecture\n *\n * For production, implement UserStore with Redis or a database.\n *\n * @template TExtended - Type-safe custom data that consumers can add to users\n */\nexport class InMemoryUserStore<TExtended = {}> implements UserStore<TExtended> {\n /** Primary storage: sub -> user */\n private users = new Map<string, StoredUser<TExtended>>();\n\n /** Secondary index: email -> sub */\n private emailIndex = new Map<string, string>();\n\n /** Secondary index: userName -> sub */\n private userNameIndex = new Map<string, string>();\n\n async get(sub: string): Promise<StoredUser<TExtended> | null> {\n return this.users.get(sub) ?? null;\n }\n\n async getByEmail(email: string): Promise<StoredUser<TExtended> | null> {\n const sub = this.emailIndex.get(email.toLowerCase());\n if (!sub) return null;\n return this.users.get(sub) ?? null;\n }\n\n async getByUserName(userName: string): Promise<StoredUser<TExtended> | null> {\n const sub = this.userNameIndex.get(userName.toLowerCase());\n if (!sub) return null;\n return this.users.get(sub) ?? null;\n }\n\n async upsert(user: StoredUser<TExtended>): Promise<void> {\n const existing = this.users.get(user.id);\n\n // Clean up old indexes if email or userName changed\n if (existing) {\n if (existing.email && existing.email.toLowerCase() !== user.email?.toLowerCase()) {\n this.emailIndex.delete(existing.email.toLowerCase());\n }\n if (existing.userName && existing.userName.toLowerCase() !== user.userName?.toLowerCase()) {\n this.userNameIndex.delete(existing.userName.toLowerCase());\n }\n }\n\n // Store the user\n this.users.set(user.id, user);\n\n // Update indexes\n if (user.email) {\n this.emailIndex.set(user.email.toLowerCase(), user.id);\n }\n if (user.userName) {\n this.userNameIndex.set(user.userName.toLowerCase(), user.id);\n }\n }\n\n async delete(sub: string): Promise<void> {\n const user = this.users.get(sub);\n if (user) {\n // Clean up indexes\n if (user.email) {\n this.emailIndex.delete(user.email.toLowerCase());\n }\n if (user.userName) {\n this.userNameIndex.delete(user.userName.toLowerCase());\n }\n }\n this.users.delete(sub);\n }\n}\n","import { type IAM, type IAMConfig, iam } from './iam';\nimport { type SSO, type SSOConfig, type SSOHandlerConfig, sso } from './sso';\nimport { getDefaultInstance, setDefaultInstance } from './utils';\nimport { type Vault, vault } from './vault';\nimport { type Workload, type WorkloadConfig, workload } from './workload';\n\nexport type EnterpriseStandard = ESConfig & {\n defaultInstance: boolean;\n vault: Vault;\n sso: SSO;\n iam: IAM;\n workload: Workload;\n};\n\ntype ESConfig = {\n defaultInstance?: boolean;\n sso?: SSOConfig;\n iam?: IAMConfig;\n workload?: WorkloadConfig;\n validation?:\n | {\n sso?: SSOHandlerConfig['validation'];\n workload?: WorkloadConfig['validation'];\n }\n | SSOHandlerConfig['validation']\n | WorkloadConfig['validation'];\n};\n\ntype VaultSecret = {\n path: string;\n token: string;\n};\n\ntype VaultData = {\n sso?: SSOConfig;\n iam?: IAMConfig;\n workload?: WorkloadConfig;\n};\n\nfunction extractSsoValidation(validation?: ESConfig['validation']): SSOHandlerConfig['validation'] | undefined {\n if (!validation) return undefined;\n const val: any = validation;\n if (val.callbackParams || val.idTokenClaims || val.tokenResponse) {\n return val as SSOHandlerConfig['validation'];\n }\n if (typeof val === 'object' && 'sso' in val) {\n return (val as { sso?: SSOHandlerConfig['validation'] }).sso;\n }\n return undefined;\n}\n\nfunction extractWorkloadValidation(validation?: ESConfig['validation']): WorkloadConfig['validation'] | undefined {\n if (!validation) return undefined;\n const val: any = validation;\n if (val.jwtAssertionClaims || val.tokenResponse) {\n return val as WorkloadConfig['validation'];\n }\n if (typeof val === 'object' && 'workload' in val) {\n return (val as { workload?: WorkloadConfig['validation'] }).workload;\n }\n return undefined;\n}\n\nexport async function enterpriseStandard(appId?: string, initConfig?: ESConfig): Promise<EnterpriseStandard> {\n const ioniteUrl = process.env.IONITE_URL ?? 'https://ionite.com';\n let vaultUrl = process.env.ES_VAULT_URL;\n const vaultToken = process.env.ES_VAULT_TOKEN;\n const vaultPath = process.env.ES_VAULT_PATH;\n let secret: VaultSecret | undefined;\n\n // Use environment variables if set (for testing), otherwise use demo vault for demo apps\n if (appId?.startsWith('IONITE_PUBLIC_DEMO_') && !vaultUrl) {\n vaultUrl = 'https://vault-ionite.ionite.dev/v1/secret/data';\n secret = {\n path: `public/${appId}`,\n token: 'hvs.VGhD2hmXDH9PmZjTacZx0G5K',\n };\n } else if (vaultUrl && vaultToken && vaultPath) {\n // Use environment variables (for testing or custom vault)\n secret = {\n path: vaultPath,\n token: vaultToken,\n };\n } else if (!vaultUrl || !vaultToken || !vaultPath) {\n const msg = '@enterprisestandard configuration missing.';\n if (process.env.NODE_ENV === 'development') {\n const cmd = `${process.versions.bun ? 'bun' : 'npm'} ionite login --app ${appId}`;\n console.warn(\n `${msg} For development, login with the ionite CLI using \"${cmd}\" or visit ${ioniteUrl}/api/applications/apiKeys/create?appId=${appId}.`,\n );\n const wl = workload(undefined);\n return {\n defaultInstance: false,\n vault: vault(''),\n sso: sso(undefined),\n iam: iam({}, wl),\n workload: wl,\n };\n } else {\n throw new Error(\n `${msg} Ensure that you are deployed with the correct tenant pattern for process.env.NODE_ENV=${process.env.NODE_ENV}.`,\n );\n }\n }\n\n const defaultInstance = getDefaultInstance();\n const vaultClient = vault(vaultUrl);\n const ssoValidation = extractSsoValidation(initConfig?.validation);\n const workloadValidation = extractWorkloadValidation(initConfig?.validation);\n\n // Fetch the es config from vault containing sso, iam, and workload configs, etc\n let vaultData: VaultData = {};\n if (secret) {\n vaultData = await vaultClient.getSecret<VaultData>(secret.path, secret.token);\n }\n\n // Create workload first since other services depend on it for authentication\n // Merge pattern: vault (base) -> initConfig (override) -> defaults (validation)\n // Note: initConfig only overrides properties it explicitly provides\n const workloadConfig: WorkloadConfig = {\n ...vaultData.workload, // Base from vault (includes jwks_uri, token_url, etc.)\n ...initConfig?.workload, // Override with initConfig (if provided) - only overrides explicit properties\n // Ensure critical vault fields are preserved if not overridden\n jwks_uri: initConfig?.workload?.jwks_uri ?? vaultData.workload?.jwks_uri,\n token_url: initConfig?.workload?.token_url ?? vaultData.workload?.token_url,\n validation: initConfig?.workload?.validation ?? workloadValidation, // Apply validation defaults\n };\n const workloadInstance = workload(workloadConfig);\n\n // Build merged SSO config\n const ssoConfig = {\n ...vaultData.sso, // Base from vault\n ...initConfig?.sso, // Override with initConfig (if provided)\n validation: initConfig?.sso?.validation ?? ssoValidation, // Apply validation defaults\n };\n const ssoInstance = sso(ssoConfig);\n\n // Build merged IAM config\n const iamConfig = {\n ...vaultData.iam, // Base from vault\n ...initConfig?.iam, // Override with initConfig (if provided)\n };\n const iamInstance = iam(iamConfig, workloadInstance);\n\n // Build merged ESConfig for EnterpriseStandard\n const mergedConfig: ESConfig = {\n defaultInstance: initConfig?.defaultInstance,\n sso: ssoConfig,\n iam: iamConfig,\n workload: workloadConfig,\n validation: initConfig?.validation,\n };\n\n const result: EnterpriseStandard = {\n ...mergedConfig,\n defaultInstance: initConfig?.defaultInstance || (initConfig?.defaultInstance !== false && !defaultInstance),\n vault: vaultClient,\n sso: ssoInstance,\n iam: iamInstance,\n workload: workloadInstance,\n };\n\n if (result.defaultInstance) {\n if (defaultInstance) {\n defaultInstance.defaultInstance = false;\n }\n setDefaultInstance(result);\n }\n\n return result;\n}\n\n// Group store (for IAM Groups extension)\nexport type { GroupStore, StoredGroup } from './group-store';\nexport { InMemoryGroupStore } from './group-store';\n// IAM\nexport type {\n CreateGroupOptions,\n CreateUserOptions,\n GroupsInboundHandlerConfig,\n IAM,\n IAMConfig,\n IAMGroupsInbound,\n IAMGroupsOutbound,\n IAMHandlerConfig,\n IAMUsersInbound,\n ScimError,\n ScimListResponse,\n ScimResult,\n UsersInboundHandlerConfig,\n} from './iam';\n// IAM (export function)\nexport { iam } from './iam';\nexport type { SessionStore } from './session-store';\nexport { InMemorySessionStore } from './session-store';\n// SSO\nexport type { SSO, SSOConfig, SSOHandlerConfig } from './sso';\n// SSO (export function)\nexport { sso } from './sso';\n// Server and session\nexport * from './sso-server';\n// Tenant Management\nexport type {\n CreateTenantRequest,\n CreateTenantResponse,\n EnvironmentType,\n StoredTenant,\n TenantStatus,\n TenantStore,\n TenantWebhookPayload,\n} from './tenant';\nexport {\n InMemoryTenantStore,\n parseTenantRequest,\n sendTenantWebhook,\n serializeESConfig,\n TenantRequestError,\n} from './tenant';\n// Primary user types\nexport type { BaseUser } from './types/base-user';\nexport type { EnterpriseUser } from './types/enterprise-user';\nexport type { IdTokenClaims, OidcCallbackParams, TokenResponse } from './types/oidc-schema';\n// OIDC/SSO schemas\nexport { idTokenClaimsSchema, oidcCallbackSchema, tokenResponseSchema } from './types/oidc-schema';\nexport type {\n Address,\n Email,\n EnterpriseExtension,\n Group,\n GroupMember,\n GroupResource,\n Name,\n PhoneNumber,\n Role,\n User as ScimUser,\n X509Certificate,\n} from './types/scim-schema';\n// SCIM types (for IAM/provisioning)\nexport { groupResourceSchema, userSchema } from './types/scim-schema';\n// Standard Schema\nexport type { StandardSchemaV1 } from './types/standard-schema';\nexport type { User } from './types/user';\nexport type {\n JWTAssertionClaims,\n TokenValidationResult,\n WorkloadTokenResponse,\n} from './types/workload-schema';\nexport { jwtAssertionClaimsSchema, workloadTokenResponseSchema } from './types/workload-schema';\n// UI Components\nexport { SignInLoading } from './ui/sign-in-loading';\nexport { SignedIn } from './ui/signed-in';\nexport { SignedOut } from './ui/signed-out';\nexport * from './ui/sso-provider';\n// User store\nexport type { StoredUser, UserStore } from './user-store';\nexport { InMemoryUserStore } from './user-store';\n// Utils (for accessing default instance)\nexport { getDefaultInstance } from './utils';\nexport type { Vault } from './vault';\n// Vault\nexport { vault } from './vault';\n// Workload Identity\nexport type {\n ClientCredentialsWorkloadConfig,\n JwtBearerWorkloadConfig,\n ServerOnlyWorkloadConfig,\n Workload,\n WorkloadConfig,\n WorkloadIdentity,\n} from './workload';\nexport { workload } from './workload';\nexport type { CachedWorkloadToken, WorkloadTokenStore } from './workload-token-store';\nexport { InMemoryWorkloadTokenStore } from './workload-token-store';\n","/**\n * Enterprise Standard Validator\n *\n * A validation test suite for verifying correct implementation of\n * Enterprise Standard functionality including SSO, IAM, and Workload Identity.\n *\n * @example\n * ```typescript\n * // In your test file (e.g., esv.test.ts)\n * import { describe, it } from 'vitest';\n * import { createSSOTests, createIAMTests, createWorkloadTests } from '@enterprisestandard/esv';\n *\n * const BASE_URL = 'http://localhost:3000';\n *\n * describe('Enterprise Standard Validation', () => {\n * describe('SSO', () => {\n * const { tests, ext } = createSSOTests({ baseUrl: BASE_URL });\n * tests.forEach(({ name, fn }) => it(name, fn));\n *\n * // Optional extensions\n * describe('JIT', () => {\n * ext.createJITTests().forEach(({ name, fn }) => it(name, fn));\n * });\n * });\n *\n * describe('IAM', () => {\n * const { tests, ext } = createIAMTests({ baseUrl: BASE_URL, getToken: async () => '...' });\n * tests.forEach(({ name, fn }) => it(name, fn));\n *\n * // Optional: Groups Outbound (app -> external IAM)\n * describe('Groups Outbound', () => {\n * ext.createGroupsOutboundTests().forEach(({ name, fn }) => it(name, fn));\n * });\n *\n * // Optional: Groups Inbound (external IAM -> app)\n * describe('Groups Inbound', () => {\n * ext.createGroupsInboundTests().forEach(({ name, fn }) => it(name, fn));\n * });\n * });\n *\n * describe('Workload', () => {\n * const tests = createWorkloadTests({ baseUrl: BASE_URL });\n * tests.map(({name, fn}) => it(name, fn))\n * });\n * });\n * ```\n */\n\n// IAM Validation\nexport { createIAMTests, validateIAM } from './iam';\n\n// SSO Validation\nexport { createSSOTests, validateSSO } from './sso';\n// Tenant Validation\nexport { createTenantTests, validateTenant } from './tenant';\n// Types\nexport type {\n IAMValidationConfig,\n SSOValidationConfig,\n TenantValidationConfig,\n TestDef,\n ValidationConfig,\n ValidationReport,\n ValidationResult,\n ValidationSuiteResult,\n WorkloadValidationConfig,\n} from './types';\n// Utilities\nexport { assert, assertEqual, assertValid, runTest, skipTest } from './utils';\n// Workload Validation\nexport { createWorkloadTests, validateWorkload } from './workload';\n\nimport type {\n IAMValidationConfig,\n SSOValidationConfig,\n TenantValidationConfig,\n TestDef,\n ValidationReport,\n WorkloadValidationConfig,\n} from './types';\n\n/**\n * Helper to create a complete Vitest test suite\n *\n * @example\n * ```typescript\n * import { describe, it } from 'vitest';\n * import { defineESVTests } from '@enterprisestandard/esv';\n *\n * defineESVTests(describe, it, {\n * baseUrl: 'http://localhost:3000',\n * sso: true,\n * workload: true,\n * });\n * ```\n */\nexport function defineESVTests(\n describe: (name: string, fn: () => void) => void,\n it: (name: string, fn: () => Promise<void>) => void,\n config: {\n baseUrl: string;\n sso?: boolean | SSOValidationConfig;\n iam?: IAMValidationConfig;\n workload?: boolean | WorkloadValidationConfig;\n tenant?: boolean | TenantValidationConfig;\n },\n) {\n describe('Enterprise Standard Validation', () => {\n if (config.sso) {\n describe('SSO', () => {\n const { createSSOTests } = require('./sso');\n const ssoConfig =\n typeof config.sso === 'object' ? { ...config.sso, baseUrl: config.baseUrl } : { baseUrl: config.baseUrl };\n const { tests } = createSSOTests(ssoConfig);\n tests.forEach(({ name, fn }: TestDef) => {\n it(name, fn);\n });\n });\n }\n\n if (config.iam) {\n describe('IAM', () => {\n const { createIAMTests } = require('./iam');\n const { tests, ext } = createIAMTests({\n ...config.iam,\n baseUrl: config.baseUrl,\n });\n\n // Core user management tests\n tests.forEach(({ name, fn }: TestDef) => {\n it(name, fn);\n });\n\n // Groups Outbound extension tests (app -> external IAM)\n describe('Groups Outbound', () => {\n ext.createGroupsOutboundTests().forEach(({ name, fn }: TestDef) => {\n it(name, fn);\n });\n });\n\n // Groups Inbound extension tests (external IAM -> app)\n describe('Groups Inbound', () => {\n ext.createGroupsInboundTests().forEach(({ name, fn }: TestDef) => {\n it(name, fn);\n });\n });\n });\n }\n\n if (config.workload) {\n describe('Workload', () => {\n const { createWorkloadTests } = require('./workload');\n const workloadConfig =\n typeof config.workload === 'object'\n ? { ...config.workload, baseUrl: config.baseUrl }\n : { baseUrl: config.baseUrl };\n const tests = createWorkloadTests(workloadConfig);\n tests.map(({ name, fn }: TestDef) => it(name, fn));\n });\n }\n\n if (config.tenant) {\n describe('Tenant', () => {\n const { createTenantTests } = require('./tenant');\n const tenantConfig =\n typeof config.tenant === 'object'\n ? { ...config.tenant, baseUrl: config.baseUrl }\n : { baseUrl: config.baseUrl };\n const tests = createTenantTests(tenantConfig);\n tests.map(({ name, fn }: TestDef) => it(name, fn));\n });\n }\n });\n}\n\n/**\n * Print a validation report to console\n */\nexport function printReport(report: ValidationReport): void {\n console.log('\\n='.repeat(60));\n console.log('Enterprise Standard Validation Report');\n console.log('='.repeat(60));\n console.log(`Timestamp: ${report.timestamp.toISOString()}`);\n console.log(`Base URL: ${report.baseUrl}`);\n console.log(`Duration: ${report.duration.toFixed(2)}ms`);\n console.log(`Overall: ${report.passed ? '✅ PASSED' : '❌ FAILED'}`);\n console.log('');\n\n for (const suite of report.suites) {\n console.log(`\\n${suite.suite} Suite ${suite.passed ? '✅' : '❌'}`);\n console.log('-'.repeat(40));\n console.log(\n ` Passed: ${suite.summary.passed}/${suite.summary.total}` +\n (suite.summary.skipped > 0 ? ` (${suite.summary.skipped} skipped)` : ''),\n );\n console.log(` Duration: ${suite.duration.toFixed(2)}ms`);\n\n for (const test of suite.tests) {\n const status = test.details?.skipped ? '⏭️ ' : test.passed ? '✅' : '❌';\n console.log(` ${status} ${test.name}`);\n if (test.error) {\n console.log(` Error: ${test.error}`);\n }\n }\n }\n\n console.log(`\\n${'='.repeat(60)}\\n`);\n}\n","#!/usr/bin/env bun\n/**\n * Enterprise Standard Validation Test Runner\n *\n * Standalone test runner that executes validation tests against an external application\n * and posts results to a callback URL.\n *\n * Environment Variables:\n * Required:\n * - TEST_BASE_URL: Base URL of application under test\n * - ES_VAULT_URL: Vault URL for ES config\n * - ES_VAULT_TOKEN: Vault authentication token\n * - ES_VAULT_PATH: Path to ES config in vault\n * - RESULTS_CALLBACK_URL: URL to POST results to\n *\n * Optional:\n * - TEST_TENANT_APP_ID: App ID for tenant tests (defaults to TEST_TENANT_COMPANY_ID if not provided)\n * - TEST_TENANT_COMPANY_ID: Company ID for tenant tests\n * - TEST_TENANT_COMPANY_NAME: Company name for tenant tests\n * - TEST_TENANT_ENVIRONMENT_TYPE: Environment type (POC|DEV|QA|PROD)\n * - TEST_TENANT_PROCUREMENT_ID: Procurement ID for tenant tests\n * - TEST_TENANT_EMAIL: Email for tenant tests\n * - TEST_SSO_LOGIN_PATH: Override default SSO login path\n * - TEST_SSO_CALLBACK_PATH: Override default SSO callback path\n * - TEST_SSO_USER_PATH: Override default SSO user path\n * - TEST_SSO_LOGOUT_PATH: Override default SSO logout path\n * - TEST_SSO_BACKCHANNEL_LOGOUT_PATH: Override default SSO back-channel logout path\n * - TEST_IAM_SCIM_PATH: Override default IAM SCIM path\n * - TEST_IAM_GROUPS_INBOUND_PATH: Override default IAM groups inbound path\n * - TEST_WORKLOAD_TOKEN_PATH: Override default workload token path\n * - TEST_WORKLOAD_VALIDATE_PATH: Override default workload validate path\n * - TEST_WORKLOAD_JWKS_PATH: Override default workload JWKS path\n * - TEST_WORKLOAD_REFRESH_PATH: Override default workload refresh path\n * - TEST_TENANT_PATH: Override default tenant creation path\n */\n\nimport { enterpriseStandard } from '@enterprisestandard/react';\nimport {\n type IAMValidationConfig,\n type SSOValidationConfig,\n type TenantValidationConfig,\n type ValidationReport,\n type ValidationSuiteResult,\n validateIAM,\n validateSSO,\n validateTenant,\n validateWorkload,\n type WorkloadValidationConfig,\n} from './index.js';\n\n/**\n * Validate required environment variables\n */\nfunction validateEnv(): {\n baseUrl: string;\n vaultUrl: string;\n vaultToken: string;\n vaultPath: string;\n callbackUrl: string;\n} {\n const baseUrl = process.env.TEST_BASE_URL;\n const vaultUrl = process.env.ES_VAULT_URL;\n const vaultToken = process.env.ES_VAULT_TOKEN;\n const vaultPath = process.env.ES_VAULT_PATH;\n const callbackUrl = process.env.RESULTS_CALLBACK_URL;\n\n if (!baseUrl) {\n throw new Error('TEST_BASE_URL environment variable is required');\n }\n if (!vaultUrl) {\n throw new Error('ES_VAULT_URL environment variable is required');\n }\n if (!vaultToken) {\n throw new Error('ES_VAULT_TOKEN environment variable is required');\n }\n if (!vaultPath) {\n throw new Error('ES_VAULT_PATH environment variable is required');\n }\n if (!callbackUrl) {\n throw new Error('RESULTS_CALLBACK_URL environment variable is required');\n }\n\n return { baseUrl, vaultUrl, vaultToken, vaultPath, callbackUrl };\n}\n\n/**\n * Build SSO validation config from environment variables\n */\nfunction buildSSOConfig(baseUrl: string): SSOValidationConfig {\n return {\n baseUrl,\n loginPath: process.env.TEST_SSO_LOGIN_PATH,\n callbackPath: process.env.TEST_SSO_CALLBACK_PATH,\n userPath: process.env.TEST_SSO_USER_PATH,\n logoutPath: process.env.TEST_SSO_LOGOUT_PATH,\n backChannelLogoutPath: process.env.TEST_SSO_BACKCHANNEL_LOGOUT_PATH,\n };\n}\n\n/**\n * Build IAM validation config from environment variables\n */\nfunction buildIAMConfig(\n baseUrl: string,\n es: () => Awaited<ReturnType<typeof enterpriseStandard>> | null,\n): IAMValidationConfig {\n return {\n baseUrl,\n es,\n scimPath: process.env.TEST_IAM_SCIM_PATH,\n groupsInboundPath: process.env.TEST_IAM_GROUPS_INBOUND_PATH,\n };\n}\n\n/**\n * Build Workload validation config from environment variables\n */\nfunction buildWorkloadConfig(baseUrl: string): WorkloadValidationConfig {\n return {\n baseUrl,\n tokenPath: process.env.TEST_WORKLOAD_TOKEN_PATH,\n validatePath: process.env.TEST_WORKLOAD_VALIDATE_PATH,\n jwksPath: process.env.TEST_WORKLOAD_JWKS_PATH,\n refreshPath: process.env.TEST_WORKLOAD_REFRESH_PATH,\n };\n}\n\n/**\n * Build Tenant validation config from environment variables\n */\nfunction buildTenantConfig(baseUrl: string): TenantValidationConfig {\n const testTenantData = process.env.TEST_TENANT_COMPANY_ID\n ? {\n appId: process.env.TEST_TENANT_APP_ID || process.env.TEST_TENANT_COMPANY_ID,\n companyId: process.env.TEST_TENANT_COMPANY_ID,\n companyName: process.env.TEST_TENANT_COMPANY_NAME || 'Test Company',\n environmentType: (process.env.TEST_TENANT_ENVIRONMENT_TYPE || 'POC') as 'POC' | 'DEV' | 'QA' | 'PROD',\n email: process.env.TEST_TENANT_EMAIL || 'test@example.com',\n }\n : undefined;\n\n return {\n baseUrl,\n tenantPath: process.env.TEST_TENANT_PATH,\n testTenantData,\n };\n}\n\n/**\n * Post results to callback URL\n */\nasync function postResults(callbackUrl: string, report: ValidationReport): Promise<void> {\n const response = await fetch(callbackUrl, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n ...report,\n timestamp: report.timestamp.toISOString(),\n }),\n });\n\n if (!response.ok) {\n const errorText = await response.text().catch(() => 'Unknown error');\n throw new Error(`Failed to post results to callback URL: ${response.status} ${response.statusText} - ${errorText}`);\n }\n}\n\n/**\n * Main runner function\n */\nasync function main(): Promise<void> {\n const startTime = performance.now();\n\n try {\n console.log('🚀 Starting Enterprise Standard Validation Test Runner...\\n');\n\n // Validate environment variables\n const { baseUrl, vaultUrl, vaultToken, vaultPath, callbackUrl } = validateEnv();\n\n console.log(`📋 Configuration:`);\n console.log(` Base URL: ${baseUrl}`);\n console.log(` Vault URL: ${vaultUrl}`);\n console.log(` Vault Path: ${vaultPath}`);\n console.log(` Callback URL: ${callbackUrl}\\n`);\n\n // Set vault environment variables for enterpriseStandard\n process.env.ES_VAULT_URL = vaultUrl;\n process.env.ES_VAULT_TOKEN = vaultToken;\n process.env.ES_VAULT_PATH = vaultPath;\n\n // Initialize EnterpriseStandard instance\n console.log('🔧 Initializing EnterpriseStandard instance...');\n let es: Awaited<ReturnType<typeof enterpriseStandard>> | null = null;\n try {\n es = await enterpriseStandard();\n console.log('✅ EnterpriseStandard initialized\\n');\n } catch (error) {\n console.warn(\n `⚠️ Failed to initialize EnterpriseStandard: ${error instanceof Error ? error.message : String(error)}`,\n );\n console.warn(' Some tests (IAM) may be skipped\\n');\n }\n\n // Build test configurations\n const ssoConfig = buildSSOConfig(baseUrl);\n const iamConfig = buildIAMConfig(baseUrl, () => es);\n const workloadConfig = buildWorkloadConfig(baseUrl);\n const tenantConfig = buildTenantConfig(baseUrl);\n\n // Run validation suites\n const suites: ValidationSuiteResult[] = [];\n\n console.log('🧪 Running validation tests...\\n');\n\n // Run SSO tests\n console.log('📝 Running SSO validation tests...');\n try {\n const ssoResult = await validateSSO(ssoConfig);\n suites.push(ssoResult);\n console.log(\n ` ${ssoResult.passed ? '✅' : '❌'} SSO: ${ssoResult.summary.passed}/${ssoResult.summary.total} passed\\n`,\n );\n } catch (error) {\n console.error(` ❌ SSO tests failed: ${error instanceof Error ? error.message : String(error)}\\n`);\n suites.push({\n suite: 'SSO',\n passed: false,\n tests: [\n {\n name: 'SSO Test Execution',\n passed: false,\n error: error instanceof Error ? error.message : String(error),\n duration: 0,\n },\n ],\n duration: 0,\n summary: { total: 1, passed: 0, failed: 1, skipped: 0 },\n });\n }\n\n // Run IAM tests (requires ES instance with workload)\n console.log('📝 Running IAM validation tests...');\n try {\n const iamResult = await validateIAM(iamConfig);\n suites.push(iamResult);\n console.log(\n ` ${iamResult.passed ? '✅' : '❌'} IAM: ${iamResult.summary.passed}/${iamResult.summary.total} passed\\n`,\n );\n } catch (error) {\n console.error(` ❌ IAM tests failed: ${error instanceof Error ? error.message : String(error)}\\n`);\n suites.push({\n suite: 'IAM',\n passed: false,\n tests: [\n {\n name: 'IAM Test Execution',\n passed: false,\n error: error instanceof Error ? error.message : String(error),\n duration: 0,\n },\n ],\n duration: 0,\n summary: { total: 1, passed: 0, failed: 1, skipped: 0 },\n });\n }\n\n // Run Workload tests\n console.log('📝 Running Workload validation tests...');\n try {\n const workloadResult = await validateWorkload(workloadConfig);\n suites.push(workloadResult);\n console.log(\n ` ${workloadResult.passed ? '✅' : '❌'} Workload: ${workloadResult.summary.passed}/${workloadResult.summary.total} passed\\n`,\n );\n } catch (error) {\n console.error(` ❌ Workload tests failed: ${error instanceof Error ? error.message : String(error)}\\n`);\n suites.push({\n suite: 'Workload',\n passed: false,\n tests: [\n {\n name: 'Workload Test Execution',\n passed: false,\n error: error instanceof Error ? error.message : String(error),\n duration: 0,\n },\n ],\n duration: 0,\n summary: { total: 1, passed: 0, failed: 1, skipped: 0 },\n });\n }\n\n // Run Tenant tests\n console.log('📝 Running Tenant validation tests...');\n try {\n const tenantResult = await validateTenant(tenantConfig);\n suites.push(tenantResult);\n console.log(\n ` ${tenantResult.passed ? '✅' : '❌'} Tenant: ${tenantResult.summary.passed}/${tenantResult.summary.total} passed\\n`,\n );\n } catch (error) {\n console.error(` ❌ Tenant tests failed: ${error instanceof Error ? error.message : String(error)}\\n`);\n suites.push({\n suite: 'Tenant',\n passed: false,\n tests: [\n {\n name: 'Tenant Test Execution',\n passed: false,\n error: error instanceof Error ? error.message : String(error),\n duration: 0,\n },\n ],\n duration: 0,\n summary: { total: 1, passed: 0, failed: 1, skipped: 0 },\n });\n }\n\n // Build validation report\n const duration = performance.now() - startTime;\n const report: ValidationReport = {\n timestamp: new Date(),\n baseUrl,\n passed: suites.every((suite) => suite.passed),\n suites,\n duration,\n };\n\n // Print summary\n console.log('📊 Test Summary:');\n console.log(` Total Suites: ${suites.length}`);\n console.log(` Passed: ${suites.filter((s) => s.passed).length}`);\n console.log(` Failed: ${suites.filter((s) => !s.passed).length}`);\n console.log(` Duration: ${duration.toFixed(2)}ms`);\n console.log(` Overall: ${report.passed ? '✅ PASSED' : '❌ FAILED'}\\n`);\n\n // Post results to callback URL\n console.log(`📤 Posting results to callback URL...`);\n await postResults(callbackUrl, report);\n console.log('✅ Results posted successfully\\n');\n\n // Exit with appropriate status code\n process.exit(report.passed ? 0 : 1);\n } catch (error) {\n console.error('\\n❌ Fatal error:', error instanceof Error ? error.message : String(error));\n if (error instanceof Error && error.stack) {\n console.error(error.stack);\n }\n process.exit(1);\n }\n}\n\n// Run if executed directly\nif (import.meta.main) {\n main();\n}\n"],"mappings":"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","names":["object","array","object","array","lazyType","object","url","idTokenClaimsSchema","tokenResponseSchema","util","object","array","objectUtil","errorUtil","errorMap","r","ctx","result","issues","elements","processed","ZodFirstPartyTypeKind","idTokenClaimsSchema","tokenResponseSchema","valibotValidators","zodValidators","fetch","fetch","url","DEFAULT_CONFIG","valibotValidators","zodValidators","fetch","DEFAULT_CONFIG","fetch","url","DEFAULT_CONFIG","import_jsx_runtime","email","workload","url","handler","getUser","getRequiredUser","initiateLogin","url","logout","refreshToken","isValid","array","handler","jwksCache","getWorkload","defaultInstance"]}
|