@botpress/sdk 5.0.1 → 5.0.2
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/.turbo/turbo-build.log +5 -5
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
package/dist/index.cjs.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/index.ts", "../src/message.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/common/json-schema.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/z/z.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/ui/constants.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/common/utils.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/common/errors.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-to-typescript-type/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_freeGlobal.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_root.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_Symbol.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_getRawTag.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_objectToString.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseGetTag.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isObjectLike.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isSymbol.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_arrayMap.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isArray.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseToString.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isObject.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/identity.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isFunction.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_coreJsData.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_isMasked.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_toSource.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseIsNative.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_getValue.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_getNative.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_WeakMap.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_defineProperty.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_isIndex.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseAssignValue.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/eq.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_assignValue.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isLength.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isArrayLike.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_isPrototype.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseTimes.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseIsArguments.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isArguments.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/stubFalse.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isBuffer.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseIsTypedArray.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseUnary.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_nodeUtil.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isTypedArray.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_arrayLikeKeys.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_overArg.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_nativeKeys.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseKeys.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/keys.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_nativeKeysIn.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseKeysIn.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/keysIn.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_isKey.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_nativeCreate.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_hashClear.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_hashDelete.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_hashGet.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_hashHas.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_hashSet.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_Hash.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_listCacheClear.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_assocIndexOf.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_listCacheDelete.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_listCacheGet.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_listCacheHas.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_listCacheSet.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_ListCache.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_Map.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_mapCacheClear.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_isKeyable.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_getMapData.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_mapCacheDelete.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_mapCacheGet.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_mapCacheHas.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_mapCacheSet.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_MapCache.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/memoize.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_memoizeCapped.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_stringToPath.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/toString.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_castPath.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_toKey.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseGet.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/get.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_arrayPush.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_getPrototype.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isPlainObject.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_stackClear.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_stackDelete.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_stackGet.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_stackHas.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_stackSet.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_Stack.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_arrayFilter.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/stubArray.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_getSymbols.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_getSymbolsIn.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseGetAllKeys.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_getAllKeys.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_getAllKeysIn.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_DataView.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_Promise.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_Set.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_getTag.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_Uint8Array.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_setCacheAdd.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_setCacheHas.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_SetCache.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_arraySome.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_cacheHas.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_equalArrays.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_mapToArray.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_setToArray.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_equalByTag.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_equalObjects.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseIsEqualDeep.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseIsEqual.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseIsMatch.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_isStrictComparable.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_getMatchData.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_matchesStrictComparable.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseMatches.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseHasIn.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_hasPath.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/hasIn.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseMatchesProperty.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseProperty.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_basePropertyDeep.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/property.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseIteratee.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_createBaseFor.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseFor.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseForOwn.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isEqual.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isEqualWith.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isUndefined.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/mapValues.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/negate.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseSet.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_basePickBy.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/pickBy.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/omitBy.js", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-to-typescript-schema/string-checks.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-to-typescript-schema/number-checks.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-to-typescript-schema/bigint-checks.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-to-typescript-schema/date-checks.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-to-typescript-schema/array-checks.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-to-typescript-schema/set-checks.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-to-typescript-schema/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema/type-processors/number.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/z/types/string/datetime.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/common/regex-utils/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/common/regex-utils/escape-special-chars.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema-legacy/errorMessages.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema-legacy/parsers/string.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema/type-processors/string.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema/type-processors/array.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema/type-processors/set.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema/type-processors/tuple.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/z/types/basetype/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/z/types/defs.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/z/types/utils/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/z/types/error/locales/en.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/z/types/error/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/z/types/utils/parseUtil.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/z/types/utils/errorUtil.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/z/types/any/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/z/types/array/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/z/types/utils/is-equal.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/z/types/utils/custom-set.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/z/types/bigint/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/z/types/boolean/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/z/types/branded/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/z/types/catch/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/z/types/custom/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/z/types/date/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/z/types/default/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/z/utils.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/z/types/discriminatedUnion/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/z/types/enum/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/z/types/function/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/z/types/intersection/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/z/types/lazy/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/z/types/literal/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/z/types/map/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/z/types/nan/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/z/types/nativeEnum/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/z/types/never/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/z/types/null/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/z/types/nullable/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/z/types/number/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/z/types/object/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/z/types/optional/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/z/types/pipeline/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/z/types/promise/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/z/types/readonly/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/z/types/record/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/z/types/ref/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/z/types/set/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/z/types/string/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/z/types/symbol/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/z/types/transformer/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/z/types/tuple/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/z/types/undefined/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/z/types/union/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/z/types/unknown/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/z/types/void/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/z/extensions.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/z/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-from-json-schema-legacy/parsers/parseAnyOf.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-from-json-schema-legacy/parsers/parseBoolean.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-from-json-schema-legacy/parsers/parseDefault.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-from-json-schema-legacy/parsers/parseMultipleType.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-from-json-schema-legacy/parsers/parseNot.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-from-json-schema-legacy/parsers/parseNull.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-from-json-schema-legacy/utils.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-from-json-schema-legacy/parsers/parseAllOf.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-from-json-schema-legacy/parsers/parseArray.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-from-json-schema-legacy/parsers/parseConst.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-from-json-schema-legacy/parsers/parseEnum.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-from-json-schema-legacy/parsers/parseIfThenElse.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-from-json-schema-legacy/parsers/parseNumber.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-from-json-schema-legacy/parsers/parseOneOf.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-from-json-schema-legacy/parsers/parseObject.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-from-json-schema-legacy/parsers/parseString.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-from-json-schema-legacy/parsers/parseNullable.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-from-json-schema-legacy/parsers/parseRef.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-from-json-schema-legacy/parsers/parseDiscriminator.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-from-json-schema-legacy/parsers/parseSchema.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/common/eval-zui-string.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-from-json-schema-legacy/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-from-json-schema/guards.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-from-json-schema/primitives/number.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-from-json-schema/primitives/string.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-from-json-schema/primitives/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-from-json-schema/iterables/array.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-from-json-schema/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-from-object/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema-legacy/parsers/any.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema-legacy/parsers/array.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema-legacy/parsers/bigint.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema-legacy/parsers/boolean.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema-legacy/parsers/branded.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema-legacy/parsers/catch.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema-legacy/parsers/date.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema-legacy/parsers/default.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema-legacy/parsers/effects.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema-legacy/parsers/enum.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema-legacy/parsers/intersection.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema-legacy/parsers/literal.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema-legacy/parsers/record.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema-legacy/parsers/map.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema-legacy/parsers/nativeEnum.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema-legacy/parsers/never.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema-legacy/parsers/null.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema-legacy/parsers/union.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema-legacy/parsers/nullable.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema-legacy/parsers/number.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema-legacy/parsers/object.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema-legacy/parsers/optional.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema-legacy/parsers/pipeline.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema-legacy/parsers/promise.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema-legacy/parsers/set.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema-legacy/parsers/tuple.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema-legacy/parsers/undefined.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema-legacy/parsers/unknown.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema-legacy/parsers/readonly.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema-legacy/parsers/ref.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema-legacy/parseDef.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema-legacy/Options.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema-legacy/Refs.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema-legacy/zodToJsonSchema.ts", "../../../node_modules/.pnpm/@bpinternal+zui@1.3.1/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema-legacy/zui-extension.ts", "../src/zui.ts", "../src/public-consts.ts", "../src/serve.ts", "../src/log.ts", "../src/utils/record-utils.ts", "../src/utils/array-utils.ts", "../src/utils/function-utils.ts", "../src/interface/resolve.ts", "../package.json", "../src/version.ts", "../src/integration/definition/branded-schema.ts", "../src/integration/definition/index.ts", "../src/integration/server/index.ts", "../src/retry.ts", "../src/integration/client/index.ts", "../src/integration/server/action-metadata.ts", "../src/consts.ts", "../src/utils/error-utils.ts", "../src/integration/server/context.ts", "../src/base-logger.ts", "../src/integration/server/integration-logger.ts", "../src/integration/implementation.ts", "../src/bot/definition.ts", "../src/bot/server/index.ts", "../src/bot/bot-logger.ts", "../src/bot/client/index.ts", "../src/bot/server/context.ts", "../src/bot/server/responses.ts", "../src/bot/server/workflows/update-type-conv.ts", "../src/bot/server/workflows/update-handler.ts", "../src/plugin/tag-prefixer.ts", "../src/utils/api-paging-utils.ts", "../src/bot/workflow-proxy/proxy.ts", "../src/bot/implementation.ts", "../src/interface/definition.ts", "../src/plugin/definition.ts", "../src/plugin/action-proxy/proxy.ts", "../src/plugin/message-proxy/proxy.ts", "../src/plugin/user-proxy/proxy.ts", "../src/plugin/conversation-proxy/proxy.ts", "../src/plugin/event-proxy/proxy.ts", "../src/plugin/state-proxy/proxy.ts", "../src/plugin/implementation.ts", "../src/version-utils.ts"],
|
|
4
|
-
"sourcesContent": ["export * as messages from './message'\nexport * from './public-consts'\nexport * from './serve'\nexport * from './zui'\n\nexport {\n //\n isApiError,\n RuntimeError,\n} from '@botpress/client'\n\nexport {\n DefaultIntegration,\n IntegrationDefinition,\n IntegrationDefinitionProps,\n IntegrationImplementation as Integration,\n IntegrationImplementationProps as IntegrationProps,\n IntegrationLogger,\n IntegrationSpecificClient,\n TagDefinition,\n ConfigurationDefinition,\n AdditionalConfigurationDefinition,\n EventDefinition,\n ChannelDefinition,\n MessageDefinition,\n ActionDefinition,\n StateDefinition,\n UserDefinition,\n SecretDefinition,\n EntityDefinition,\n} from './integration'\n\nexport {\n /**\n * @deprecated use Context exported from '.botpress' instead\n */\n IntegrationContext,\n} from './integration/server'\n\nexport {\n DefaultBot,\n BotDefinition,\n BotDefinitionProps,\n BotImplementation as Bot,\n BotImplementationProps as BotProps,\n BotSpecificClient,\n // NOTE: BotHandlers is needed by the Studio, and InjectedBotHandlers is\n // needed for the code generation in the CLI\n BotHandlers,\n InjectedBotHandlers,\n TagDefinition as BotTagDefinition,\n StateType as BotStateType,\n StateDefinition as BotStateDefinition,\n RecurringEventDefinition as BotRecurringEventDefinition,\n EventDefinition as BotEventDefinition,\n ConfigurationDefinition as BotConfigurationDefinition,\n UserDefinition as BotUserDefinition,\n ConversationDefinition as BotConversationDefinition,\n MessageDefinition as BotMessageDefinition,\n ActionDefinition as BotActionDefinition,\n TableDefinition as BotTableDefinition,\n WorkflowDefinition as BotWorkflowDefinition,\n BotLogger,\n} from './bot'\n\nexport {\n //\n InterfaceDefinition,\n InterfaceDefinitionProps,\n} from './interface'\n\nexport {\n //\n DefaultPlugin,\n PluginDefinition,\n PluginDefinitionProps,\n PluginImplementation as Plugin,\n PluginImplementationProps as PluginProps,\n PluginRuntimeProps,\n PluginHandlers,\n InjectedPluginHandlers,\n} from './plugin'\n\nexport * as version from './version-utils'\n\nexport {\n //\n IntegrationPackage,\n InterfacePackage,\n PluginPackage,\n Package,\n} from './package'\n", "import { z } from './zui'\n\nconst NonEmptyString = z.string().min(1)\n\nconst textMessageSchema = z.object({\n text: NonEmptyString,\n})\n\n/**\n * @deprecated\n */\nconst markdownMessageSchema = z.object({\n markdown: NonEmptyString,\n})\n\nconst imageMessageSchema = z.object({\n imageUrl: NonEmptyString,\n})\n\nconst audioMessageSchema = z.object({\n audioUrl: NonEmptyString,\n})\n\nconst videoMessageSchema = z.object({\n videoUrl: NonEmptyString,\n})\n\nconst fileMessageSchema = z.object({\n fileUrl: NonEmptyString,\n title: NonEmptyString.optional(),\n})\n\nconst locationMessageSchema = z.object({\n latitude: z.number(),\n longitude: z.number(),\n address: z.string().optional(),\n title: z.string().optional(),\n})\n\nconst cardSchema = z.object({\n title: NonEmptyString,\n subtitle: NonEmptyString.optional(),\n imageUrl: NonEmptyString.optional(),\n actions: z.array(\n z.object({\n action: z.enum(['postback', 'url', 'say']),\n label: NonEmptyString,\n value: NonEmptyString,\n })\n ),\n})\n\nconst choiceSchema = z.object({\n text: NonEmptyString,\n options: z.array(\n z.object({\n label: NonEmptyString,\n value: NonEmptyString,\n })\n ),\n})\n\nconst carouselSchema = z.object({\n items: z.array(cardSchema),\n})\n\nconst blocItemSchema = z.union([\n z.object({ type: z.literal('text'), payload: textMessageSchema }),\n z.object({ type: z.literal('image'), payload: imageMessageSchema }),\n z.object({ type: z.literal('audio'), payload: audioMessageSchema }),\n z.object({ type: z.literal('video'), payload: videoMessageSchema }),\n z.object({ type: z.literal('file'), payload: fileMessageSchema }),\n z.object({ type: z.literal('location'), payload: locationMessageSchema }),\n])\n\nconst blocSchema = z.object({\n items: z.array(blocItemSchema),\n})\n\n/**\n * @deprecated use `text` instead\n */\nexport const markdown = {\n schema: markdownMessageSchema,\n}\n\n/**\n * Bloc message that still includes markdown as an item\n *\n * @deprecated use `bloc` instead\n */\nexport const markdownBloc = {\n schema: z.object({\n items: z.array(\n z.union([\n //\n ...blocItemSchema.options,\n z.object({ type: z.literal('markdown'), payload: markdownMessageSchema }),\n ])\n ),\n }),\n}\n\nexport const defaults = {\n text: { schema: textMessageSchema },\n image: { schema: imageMessageSchema },\n audio: { schema: audioMessageSchema },\n video: { schema: videoMessageSchema },\n file: { schema: fileMessageSchema },\n location: { schema: locationMessageSchema },\n carousel: { schema: carouselSchema },\n card: { schema: cardSchema },\n dropdown: { schema: choiceSchema },\n choice: { schema: choiceSchema },\n bloc: { schema: blocSchema },\n} as const // should use satisfies operator but this works for older versions of TS\n", "import { JSONSchema7 } from 'json-schema'\nimport { util } from '../../z/types/utils'\nimport z from '../../z'\nimport { ZuiExtensionObject } from '../../ui/types'\n\n/**\n * Definitions:\n *\n * Mutiple zui schemas map to the same JSON schema; undefined/never, any/unknown, union/discriminated-union\n * Adding some ZodDef to the ZuiExtension allows us to differentiate between them\n */\ntype NullableDef = util.Satisfies<{ typeName: z.ZodFirstPartyTypeKind.ZodNullable }, Partial<z.ZodNullableDef>>\ntype OptionalDef = util.Satisfies<{ typeName: z.ZodFirstPartyTypeKind.ZodOptional }, Partial<z.ZodOptionalDef>>\ntype UndefinedDef = util.Satisfies<{ typeName: z.ZodFirstPartyTypeKind.ZodUndefined }, Partial<z.ZodUndefinedDef>>\ntype UnknownDef = util.Satisfies<{ typeName: z.ZodFirstPartyTypeKind.ZodUnknown }, Partial<z.ZodUnknownDef>>\ntype DiscriminatedUnionDef = util.Satisfies<\n { typeName: z.ZodFirstPartyTypeKind.ZodDiscriminatedUnion; discriminator?: string },\n Partial<z.ZodDiscriminatedUnionDef>\n>\n\n/**\n * ZuiJSONSchema:\n *\n * A ZUI flavored subset of JSONSchema7\n */\n\ntype ZuiExtension<Def extends Partial<z.ZodDef> = {}> = { def?: Def } & ZuiExtensionObject\ntype JsonData = string | number | boolean | null | JsonData[] | { [key: string]: JsonData }\ntype BaseZuiJSONSchema<Def extends Partial<z.ZodDef> = {}> = util.Satisfies<\n {\n description?: string\n readOnly?: boolean\n default?: JsonData\n ['x-zui']?: ZuiExtension<Def>\n },\n JSONSchema7\n>\n\n// From the JSON Schema spec: \"Format is not limited to a specific set of valid values or types. Users may define their own custom keywords\"\ntype _ZodSpecificStringFormat = 'cuid' | 'cuid2' | 'emoji' | 'ulid'\ntype _JSONSchemaStringFormat = 'date-time' | 'email' | 'ipv4' | 'ipv6' | 'uri' | 'uuid'\ntype _StringSchema = util.Satisfies<\n {\n type: 'string'\n pattern?: string\n format?: _JSONSchemaStringFormat | _ZodSpecificStringFormat\n minLength?: number\n maxLength?: number\n },\n JSONSchema7\n>\ntype _ZodSpecificNumberFormat = 'finite'\ntype _NumberSchema = util.Satisfies<\n {\n type: 'number' | 'integer'\n minimum?: number\n exclusiveMinimum?: number\n maximum?: number\n exclusiveMaximum?: number\n multipleOf?: number\n format?: _ZodSpecificNumberFormat\n },\n JSONSchema7\n>\ntype _BooleanSchema = util.Satisfies<{ type: 'boolean' }, JSONSchema7>\ntype _NullSchema = util.Satisfies<{ type: 'null' }, JSONSchema7>\ntype _UndefinedSchema = util.Satisfies<{ not: true }, JSONSchema7>\ntype _NeverSchema = util.Satisfies<{ not: true }, JSONSchema7>\ntype _ArraySchema = util.Satisfies<{ type: 'array'; items: Schema; minItems?: number; maxItems?: number }, JSONSchema7>\ntype _UnionSchema = util.Satisfies<{ anyOf: Schema[] }, JSONSchema7>\ntype _DiscriminatedUnionSchema = util.Satisfies<{ anyOf: Schema[] }, JSONSchema7>\ntype _IntersectionSchema = util.Satisfies<{ allOf: Schema[] }, JSONSchema7>\ntype _SetSchema = util.Satisfies<\n { type: 'array'; items: Schema; uniqueItems: true; minItems?: number; maxItems?: number },\n JSONSchema7\n>\ntype _EnumSchema = util.Satisfies<{ type: 'string'; enum: string[] }, JSONSchema7>\ntype _RefSchema = util.Satisfies<{ $ref: string }, JSONSchema7>\ntype _ObjectSchema = util.Satisfies<\n {\n type: 'object'\n properties: { [key: string]: Schema }\n additionalProperties?: Schema | boolean\n required?: string[]\n },\n JSONSchema7\n>\ntype _TupleSchema = util.Satisfies<{ type: 'array'; items: Schema[]; additionalItems?: Schema }, JSONSchema7>\ntype _RecordSchema = util.Satisfies<{ type: 'object'; additionalProperties: Schema }, JSONSchema7>\ntype _LiteralStringSchema = util.Satisfies<{ type: 'string'; const: string }, JSONSchema7>\ntype _LiteralNumberSchema = util.Satisfies<{ type: 'number'; const: number }, JSONSchema7>\ntype _LiteralBooleanSchema = util.Satisfies<{ type: 'boolean'; const: boolean }, JSONSchema7>\ntype _OptionalSchema = util.Satisfies<{ anyOf: [Schema, UndefinedSchema] }, JSONSchema7>\ntype _NullableSchema = util.Satisfies<{ anyOf: [Schema, NullSchema] }, JSONSchema7>\n\nexport type StringSchema = _StringSchema & BaseZuiJSONSchema\nexport type NumberSchema = _NumberSchema & BaseZuiJSONSchema\nexport type BooleanSchema = _BooleanSchema & BaseZuiJSONSchema\nexport type NullSchema = _NullSchema & BaseZuiJSONSchema\nexport type UndefinedSchema = _UndefinedSchema & BaseZuiJSONSchema<UndefinedDef>\nexport type NeverSchema = _NeverSchema & BaseZuiJSONSchema\nexport type AnySchema = BaseZuiJSONSchema\nexport type UnknownSchema = BaseZuiJSONSchema<UnknownDef>\nexport type ArraySchema = _ArraySchema & BaseZuiJSONSchema\nexport type UnionSchema = _UnionSchema & BaseZuiJSONSchema\nexport type DiscriminatedUnionSchema = _DiscriminatedUnionSchema & BaseZuiJSONSchema<DiscriminatedUnionDef>\nexport type IntersectionSchema = _IntersectionSchema & BaseZuiJSONSchema\nexport type SetSchema = _SetSchema & BaseZuiJSONSchema\nexport type EnumSchema = _EnumSchema & BaseZuiJSONSchema\nexport type RefSchema = _RefSchema & BaseZuiJSONSchema\nexport type ObjectSchema = _ObjectSchema & BaseZuiJSONSchema\nexport type TupleSchema = _TupleSchema & BaseZuiJSONSchema\nexport type RecordSchema = _RecordSchema & BaseZuiJSONSchema\nexport type LiteralStringSchema = _LiteralStringSchema & BaseZuiJSONSchema\nexport type LiteralNumberSchema = _LiteralNumberSchema & BaseZuiJSONSchema\nexport type LiteralBooleanSchema = _LiteralBooleanSchema & BaseZuiJSONSchema\nexport type OptionalSchema = _OptionalSchema & BaseZuiJSONSchema<OptionalDef>\nexport type NullableSchema = _NullableSchema & BaseZuiJSONSchema<NullableDef>\nexport type LiteralSchema = LiteralStringSchema | LiteralNumberSchema | LiteralBooleanSchema\n\n/**\n * Zui flavored JSON Schema; a subset of JSONSchema7 that includes Zui extensions\n */\nexport type Schema =\n | StringSchema\n | NumberSchema\n | BooleanSchema\n | UndefinedSchema\n | NullSchema\n | AnySchema\n | UnknownSchema\n | NeverSchema\n | ArraySchema\n | ObjectSchema\n | UnionSchema\n | DiscriminatedUnionSchema\n | IntersectionSchema\n | TupleSchema\n | RecordSchema\n | SetSchema\n | LiteralSchema\n | EnumSchema\n | RefSchema\n | OptionalSchema\n | NullableSchema\n", "export { fromJSONSchemaLegacy } from './zui-from-json-schema-legacy'\nexport { fromJSONSchema } from './zui-from-json-schema'\nexport { fromObject } from './zui-from-object'\n\nexport { toJSONSchemaLegacy } from './zui-to-json-schema-legacy'\nexport { toJSONSchema } from './zui-to-json-schema'\nexport { toTypescriptType, type TypescriptGenerationOptions } from './zui-to-typescript-type'\nexport { toTypescriptSchema } from './zui-to-typescript-schema'\n\nexport * as errors from './common/errors'\n", "import {\n custom,\n CustomParams,\n INVALID,\n ZodAny,\n ZodArray,\n ZodBigInt,\n ZodBoolean,\n ZodBranded,\n ZodCatch,\n ZodDate,\n ZodDefault,\n ZodDiscriminatedUnion,\n ZodEffects,\n ZodEnum,\n ZodFunction,\n ZodIntersection,\n ZodLazy,\n ZodLiteral,\n ZodMap,\n ZodNaN,\n ZodNativeEnum,\n ZodNever,\n ZodNull,\n ZodNullable,\n ZodNumber,\n ZodObject,\n ZodOptional,\n ZodPipeline,\n ZodPromise,\n ZodReadonly,\n ZodRecord,\n ZodRef,\n ZodSet,\n ZodString,\n ZodSymbol,\n ZodTuple,\n ZodType,\n ZodUndefined,\n ZodUnion,\n ZodUnknown,\n ZodVoid,\n} from './types'\n\nexport { ZodType as Schema, ZodType as ZodSchema }\n\nexport const late = {\n object: ZodObject.lazycreate,\n}\n\nexport type ZodFirstPartySchemaTypes =\n | ZodString\n | ZodNumber\n | ZodNaN\n | ZodBigInt\n | ZodBoolean\n | ZodDate\n | ZodUndefined\n | ZodNull\n | ZodAny\n | ZodUnknown\n | ZodNever\n | ZodVoid\n | ZodArray\n | ZodObject\n | ZodUnion\n | ZodDiscriminatedUnion\n | ZodIntersection\n | ZodTuple\n | ZodRecord\n | ZodMap\n | ZodSet\n | ZodFunction\n | ZodLazy\n | ZodLiteral\n | ZodEnum\n | ZodEffects\n | ZodNativeEnum\n | ZodOptional\n | ZodNullable\n | ZodDefault\n | ZodCatch\n | ZodPromise\n | ZodBranded\n | ZodPipeline\n | ZodReadonly\n | ZodSymbol\n | ZodRef\n\n// requires TS 4.4+\nabstract class Class {\n constructor(..._: any[]) {}\n}\nconst instanceOfType = <T extends typeof Class>(\n // const instanceOfType = <T extends new (...args: any[]) => any>(\n cls: T,\n params: CustomParams = {\n message: `Input not instance of ${cls.name}`,\n },\n) => custom<InstanceType<T>>((data) => data instanceof cls, params)\n\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 refType = ZodRef.create\nconst readonlyType = ZodReadonly.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 defaultType = ZodDefault.create\nconst preprocessType = ZodEffects.createWithPreprocess\nconst pipelineType = ZodPipeline.create\nconst ostring = () => stringType().optional()\nconst onumber = () => numberType().optional()\nconst oboolean = () => booleanType().optional()\n\nexport const coerce = {\n string: ((arg) => ZodString.create({ ...arg, coerce: true })) as (typeof ZodString)['create'],\n number: ((arg) => ZodNumber.create({ ...arg, coerce: true })) as (typeof ZodNumber)['create'],\n boolean: ((arg) =>\n ZodBoolean.create({\n ...arg,\n coerce: true,\n })) as (typeof ZodBoolean)['create'],\n bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })) as (typeof ZodBigInt)['create'],\n date: ((arg) => ZodDate.create({ ...arg, coerce: true })) as (typeof ZodDate)['create'],\n}\n\nexport {\n anyType as any,\n arrayType as array,\n bigIntType as bigint,\n booleanType as boolean,\n dateType as date,\n defaultType as default,\n discriminatedUnionType as discriminatedUnion,\n effectsType as effect,\n enumType as enum,\n functionType as function,\n instanceOfType as instanceof,\n intersectionType as intersection,\n lazyType as lazy,\n literalType as literal,\n mapType as map,\n nanType as nan,\n nativeEnumType as nativeEnum,\n neverType as never,\n nullType as null,\n nullableType as nullable,\n numberType as number,\n objectType as object,\n oboolean,\n onumber,\n optionalType as optional,\n ostring,\n pipelineType as pipeline,\n preprocessType as preprocess,\n promiseType as promise,\n recordType as record,\n refType as ref,\n readonlyType as readonly,\n setType as set,\n strictObjectType as strictObject,\n stringType as string,\n symbolType as symbol,\n effectsType as transformer,\n tupleType as tuple,\n undefinedType as undefined,\n unionType as union,\n unknownType as unknown,\n voidType as void,\n}\n\nexport const NEVER = INVALID as never\n\nexport * from './types'\nexport * from './types/error'\nexport * from './types/utils'\nexport * from './types/utils/parseUtil'\nexport * from './types/utils/typeAliases'\nexport * from './extensions'\n", "export const zuiKey = 'x-zui' as const\n", "import { Primitive } from '../../z'\n\n/**\n * @returns a valid typescript literal type usable in `type MyType = ${x}`\n */\nexport function primitiveToTypscriptLiteralType(x: Primitive): string {\n if (typeof x === 'symbol') {\n return 'symbol' // there's no way to represent a symbol literal in a single line with typescript\n }\n if (typeof x === 'bigint') {\n const str = x.toString()\n return `${str}n`\n }\n return primitiveToTypescriptValue(x)\n}\n\n/**\n * @returns a valid typescript primitive value usable in `const myValue = ${x}`\n */\nexport function primitiveToTypescriptValue(x: Primitive): string {\n if (typeof x === 'undefined') {\n return 'undefined'\n }\n if (typeof x === 'symbol') {\n if (x.description) {\n return `Symbol(${primitiveToTypescriptValue(x.description)})`\n }\n return 'Symbol()'\n }\n if (typeof x === 'bigint') {\n const str = x.toString()\n return `BigInt(${str})`\n }\n if (typeof x === 'string') {\n return escapeString(x)\n }\n\n return JSON.stringify(x)\n}\n\n/**\n * @returns a valid typescript value usable in `const myValue = ${x}`\n */\nexport function unknownToTypescriptValue(x: unknown): string {\n if (typeof x === 'undefined') {\n return 'undefined'\n }\n // will fail or not behave as expected if x contains a symbol or a bigint\n return JSON.stringify(x)\n}\n\n/**\n * @returns a valid typescript value usable in `const myValue = ${x}`\n */\nexport const arrayOfUnknownToTypescriptArray = (arr: Primitive[], asConst?: boolean) => {\n const maybeAsConst = asConst ? ' as const' : ''\n\n return `[ ${arr.map(unknownToTypescriptValue).join(', ')} ]${maybeAsConst}`\n}\n\n/**\n * @returns a valid typescript value usable in `const myValue = ${x}`\n */\nexport const recordOfUnknownToTypescriptRecord = (\n record: Record<string | number | symbol, unknown>,\n asConst?: boolean,\n) => {\n const entries = Object.entries(record)\n const maybeAsConst = asConst ? ' as const' : ''\n\n return `{ ${entries\n .map(([key, value]) => `${toPropertyKey(key)}: ${unknownToTypescriptValue(value)}`)\n .join(', ')} }${maybeAsConst}`\n}\n\nexport const toPropertyKey = (key: string) => {\n if (/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(key)) {\n return key\n }\n\n return primitiveToTypescriptValue(key)\n}\n\nconst capitalize = (s: string): string => s.charAt(0).toUpperCase() + s.slice(1)\n\nexport const toTypeArgumentName = (name: string) => {\n const nonAlphaNumeric = /[^a-zA-Z0-9_]/g\n const tokens = name\n .split(nonAlphaNumeric)\n .map(capitalize)\n .filter((t) => !!t)\n return tokens.join('')\n}\n\nconst trimEmptyLinesInPlace = (lines: string[]) => {\n while (lines.length && !lines[0]?.trim()) {\n lines.shift()\n }\n\n while (lines.length && !lines[lines.length - 1]!.trim()) {\n lines.pop()\n }\n}\n\nexport const getMultilineComment = (description?: string) => {\n // Remove too many empty lines (more than 2)\n description = description?.replace(/(\\n(\\s*)?){3,}/g, '\\n\\n')\n\n const ensureLineStartsWithAsterisk = (line: string) => (line.startsWith('* ') ? ` ${line}` : ` * ${line}`)\n const escapeCommentEnd = (line: string) => line.replace(/\\*\\//g, '*\\\\/')\n\n const descLines = (description ?? '').split('\\n').map((line) => line.trim())\n\n trimEmptyLinesInPlace(descLines)\n\n if (descLines.length) {\n descLines[0] = descLines[0]!.replace(/^\\/\\*\\*?/, '')\n descLines[descLines.length - 1] = descLines[descLines.length - 1]!.replace(/\\*\\/$/, '')\n }\n\n trimEmptyLinesInPlace(descLines)\n\n return descLines.length === 0\n ? ''\n : descLines.length === 1\n ? `/** ${escapeCommentEnd(descLines[0]!)} */`\n : `/**\\n${descLines.map(ensureLineStartsWithAsterisk).map(escapeCommentEnd).join('\\n')}\\n */`\n}\n\nexport function escapeString(str: string): string {\n if (typeof str !== 'string') {\n return ''\n }\n\n // Use String.raw to get the raw string with escapes preserved\n const rawStr = String.raw`${str}`\n\n // Escape newlines and other special characters\n const escapedStr = rawStr.replace(/\\\\/g, '\\\\\\\\').replace(/\\n/g, '\\\\n').replace(/\"/g, '\\\\\"').replace(/'/g, \"\\\\'\")\n\n // Determine the appropriate quote style\n if (escapedStr.includes('`')) {\n return `\"${escapedStr}\"`\n } else if (escapedStr.includes(\"'\")) {\n return `\"${escapedStr}\"`\n } else {\n return `'${escapedStr}'`\n }\n}\n", "import { JSONSchema7 } from 'json-schema'\nimport { ZodFirstPartyTypeKind } from '../../z'\n\ntype Transform =\n | 'json-schema-to-zui'\n | 'object-to-zui'\n | 'zui-to-json-schema'\n | 'zui-to-typescript-schema'\n | 'zui-to-typescript-type'\n\nexport abstract class ZuiTransformError extends Error {\n public constructor(\n public readonly transform: Transform,\n message?: string,\n ) {\n super(message)\n }\n}\n\n// json-schema-to-zui-error\nexport class JSONSchemaToZuiError extends ZuiTransformError {\n public constructor(message?: string) {\n super('json-schema-to-zui', message)\n }\n}\n\n// object-to-zui-error\nexport class ObjectToZuiError extends ZuiTransformError {\n public constructor(message?: string) {\n super('object-to-zui', message)\n }\n}\n\n// zui-to-json-schema-error\nexport class ZuiToJSONSchemaError extends ZuiTransformError {\n public constructor(message?: string) {\n super('zui-to-json-schema', message)\n }\n}\nexport class UnsupportedZuiToJSONSchemaError extends ZuiToJSONSchemaError {\n public constructor(type: ZodFirstPartyTypeKind, { suggestedAlternative }: { suggestedAlternative?: string } = {}) {\n super(\n `Zod type ${type} cannot be transformed to JSON Schema.` +\n (suggestedAlternative ? ` Suggested alternative: ${suggestedAlternative}` : ''),\n )\n }\n}\nexport class UnsupportedZuiCheckToJSONSchemaError extends ZuiToJSONSchemaError {\n public constructor({ zodType, checkKind }: { zodType: ZodFirstPartyTypeKind; checkKind: string }) {\n super(`Zod check .${checkKind}() of type ${zodType} cannot be transformed to JSON Schema.`)\n }\n}\n\nexport class UnsupportedJSONSchemaToZuiError extends JSONSchemaToZuiError {\n public constructor(schema: JSONSchema7) {\n super(`JSON Schema ${JSON.stringify(schema)} cannot be transformed to ZUI type.`)\n }\n}\n\n// zui-to-typescript-schema-error\nexport class ZuiToTypescriptSchemaError extends ZuiTransformError {\n public constructor(message?: string) {\n super('zui-to-typescript-schema', message)\n }\n}\nexport class UnsupportedZuiToTypescriptSchemaError extends ZuiToTypescriptSchemaError {\n public constructor(type: ZodFirstPartyTypeKind) {\n super(`Zod type ${type} cannot be transformed to TypeScript schema.`)\n }\n}\n\n// zui-to-typescript-type-error\nexport class ZuiToTypescriptTypeError extends ZuiTransformError {\n public constructor(message?: string) {\n super('zui-to-typescript-type', message)\n }\n}\nexport class UnsupportedZuiToTypescriptTypeError extends ZuiToTypescriptTypeError {\n public constructor(type: ZodFirstPartyTypeKind) {\n super(`Zod type ${type} cannot be transformed to TypeScript type.`)\n }\n}\n\nexport class UntitledDeclarationError extends ZuiToTypescriptTypeError {\n public constructor() {\n super('Schema must have a title to be transformed to a TypeScript type with a declaration.')\n }\n}\n\nexport class UnrepresentableGenericError extends ZuiToTypescriptTypeError {\n public constructor() {\n super(`${ZodFirstPartyTypeKind.ZodRef} can only be transformed to a TypeScript type with a \"type\" declaration.`)\n }\n}\n", "import z, { util } from '../../z'\nimport {\n primitiveToTypescriptValue,\n getMultilineComment,\n toPropertyKey,\n toTypeArgumentName,\n primitiveToTypscriptLiteralType,\n} from '../common/utils'\nimport * as errors from '../common/errors'\n\nconst Primitives = [\n 'string',\n 'number',\n 'boolean',\n 'unknown',\n 'void',\n 'any',\n 'null',\n 'undefined',\n 'never',\n 'bigint',\n 'symbol',\n 'object',\n]\n\nconst LARGE_DECLARATION_LINES = 5\n\nconst isPrimitive = (type: string) => Primitives.includes(type)\nconst isArrayOfPrimitives = (type: string) => Primitives.map((p) => `${p}[]`).includes(type)\n\nconst stripSpaces = (typings: string) => typings.replace(/ +/g, ' ').trim()\n\nclass KeyValue {\n constructor(\n public key: string,\n public value: z.Schema,\n ) {}\n}\n\nclass FnParameters {\n constructor(public schema: z.Schema) {}\n}\n\nclass FnReturn {\n constructor(public schema: z.Schema) {}\n}\n\nclass Declaration {\n constructor(public props: DeclarationProps) {}\n}\n\ntype DeclarationProps =\n | {\n type: 'variable'\n schema: z.Schema\n identifier: string\n }\n | {\n type: 'type'\n schema: z.Schema\n identifier: string\n args: string[] // type arguments / generics\n }\n | {\n type: 'none'\n schema: z.Schema\n }\n\nexport type TypescriptDeclarationType = DeclarationProps['type']\nexport type TypescriptGenerationOptions = {\n formatter?: (typing: string) => string\n declaration?: boolean | TypescriptDeclarationType\n /**\n * Whether to include closing tags in the generated TypeScript declarations when they exceed 5 lines.\n * This improves readability for large type declarations by adding comments like \"// end of TypeName\".\n */\n includeClosingTags?: boolean\n treatDefaultAsOptional?: boolean\n}\n\ntype SchemaTypes = z.Schema | KeyValue | FnParameters | Declaration | null\n\ntype InternalOptions = {\n parent?: SchemaTypes\n declaration?: boolean | TypescriptDeclarationType\n includeClosingTags?: boolean\n treatDefaultAsOptional?: boolean\n}\n\n/**\n *\n * @param schema zui schema\n * @param options generation options\n * @returns a string of the TypeScript **type** representing the schema\n */\nexport function toTypescriptType(schema: z.Schema, options: TypescriptGenerationOptions = {}): string {\n const wrappedSchema: Declaration = getDeclarationProps(schema, options)\n\n let dts = sUnwrapZod(wrappedSchema, options)\n\n if (options.formatter) {\n dts = options.formatter(dts)\n }\n\n return dts\n}\n\nconst _optionalKey = (key: string): string => (key.endsWith('?') ? key : `${key}?`)\n\nfunction sUnwrapZod(schema: z.Schema | KeyValue | FnParameters | Declaration | null, config: InternalOptions): string {\n const newConfig: InternalOptions = {\n ...config,\n declaration: false,\n parent: schema,\n }\n\n if (schema === null) {\n return ''\n }\n\n if (schema instanceof Declaration) {\n return unwrapDeclaration(schema, newConfig)\n }\n\n if (schema instanceof KeyValue) {\n let optionalValue: z.ZodOptional | undefined = undefined\n if (schema.value instanceof z.ZodOptional) {\n optionalValue = schema.value\n } else if (schema.value instanceof z.ZodDefault && config.treatDefaultAsOptional) {\n optionalValue = schema.value._def.innerType.optional()\n }\n\n if (optionalValue) {\n let innerType = optionalValue._def.innerType as z.Schema\n if (innerType instanceof z.Schema && !innerType.description && optionalValue.description) {\n innerType = innerType?.describe(optionalValue.description)\n }\n\n return sUnwrapZod(new KeyValue(_optionalKey(schema.key), innerType), newConfig)\n }\n\n const description = getMultilineComment(schema.value._def.description || schema.value.description)\n const delimiter = description?.trim().length > 0 ? '\\n' : ''\n const withoutDesc = schema.value.describe('')\n\n const isOptional = schema.value instanceof z.ZodAny // any is treated as optional for backwards compatibility\n const key = isOptional ? _optionalKey(schema.key) : schema.key\n return `${delimiter}${description}${delimiter}${key}: ${sUnwrapZod(withoutDesc, newConfig)}${delimiter}`\n }\n\n if (schema instanceof FnParameters) {\n if (schema.schema instanceof z.ZodTuple) {\n let args = ''\n for (let i = 0; i < schema.schema.items.length; i++) {\n const argName = schema.schema.items[i]?.ui?.title ?? `arg${i}`\n const item = schema.schema.items[i]\n args += `${sUnwrapZod(new KeyValue(toPropertyKey(argName), item), newConfig)}${i < schema.schema.items.length - 1 ? ', ' : ''} `\n }\n\n return args\n }\n\n const isLiteral = schema.schema.naked() instanceof z.ZodLiteral\n\n const typings = sUnwrapZod(schema.schema, newConfig).trim()\n const startsWithPairs =\n (typings.startsWith('{') && typings.endsWith('}')) ||\n (typings.startsWith('[') && typings.endsWith(']')) ||\n (typings.startsWith('(') && typings.endsWith(')')) ||\n (typings.startsWith('Array<') && typings.endsWith('>')) ||\n (typings.startsWith('Record<') && typings.endsWith('>')) ||\n isArrayOfPrimitives(typings)\n\n if (startsWithPairs || isLiteral) {\n return `args: ${typings}`\n } else {\n return typings\n }\n }\n\n if (schema instanceof FnReturn) {\n if (schema.schema instanceof z.ZodOptional) {\n return `${sUnwrapZod(schema.schema.unwrap(), newConfig)} | undefined`\n }\n\n return sUnwrapZod(schema.schema, newConfig)\n }\n\n const schemaTyped = schema as z.ZodFirstPartySchemaTypes\n const def = schemaTyped._def\n\n switch (def.typeName) {\n case z.ZodFirstPartyTypeKind.ZodString:\n return `${getMultilineComment(schemaTyped.description)} string`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodNumber:\n case z.ZodFirstPartyTypeKind.ZodNaN:\n case z.ZodFirstPartyTypeKind.ZodBigInt:\n return `${getMultilineComment(schemaTyped.description)} number`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodBoolean:\n return `${getMultilineComment(schemaTyped.description)} boolean`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodDate:\n return `${getMultilineComment(schemaTyped.description)} Date`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodUndefined:\n return `${getMultilineComment(schemaTyped.description)} undefined`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodNull:\n return `${getMultilineComment(schemaTyped.description)} null`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodAny:\n return `${getMultilineComment(schemaTyped.description)} any`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodUnknown:\n return `${getMultilineComment(schemaTyped.description)} unknown`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodNever:\n return `${getMultilineComment(schemaTyped.description)} never`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodVoid:\n return `${getMultilineComment(schemaTyped.description)} void`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodArray:\n const item = sUnwrapZod(def.type, newConfig)\n\n if (isPrimitive(item)) {\n return `${item}[]`\n }\n\n return `Array<${item}>`\n\n case z.ZodFirstPartyTypeKind.ZodObject:\n const props = Object.entries(def.shape()).map(([key, value]) => {\n if (value instanceof z.Schema) {\n return sUnwrapZod(new KeyValue(toPropertyKey(key), value), newConfig)\n }\n return `${key}: unknown`\n })\n\n return `{ ${props.join('; ')} }`\n\n case z.ZodFirstPartyTypeKind.ZodUnion:\n const options = def.options.map((option) => {\n return sUnwrapZod(option, newConfig)\n })\n return `${getMultilineComment(schemaTyped.description)}\n${options.join(' | ')}`\n\n case z.ZodFirstPartyTypeKind.ZodDiscriminatedUnion:\n const opts = def.options.map((option) => {\n return sUnwrapZod(option, newConfig)\n })\n return `${getMultilineComment(schemaTyped.description)}\n${opts.join(' | ')}`\n\n case z.ZodFirstPartyTypeKind.ZodIntersection:\n return `${sUnwrapZod(def.left, newConfig)} & ${sUnwrapZod(def.right, newConfig)}`\n\n case z.ZodFirstPartyTypeKind.ZodTuple:\n if (def.items.length === 0) {\n return '[]'\n }\n\n const items = def.items.map((i: any) => sUnwrapZod(i, newConfig))\n return `[${items.join(', ')}]`\n\n case z.ZodFirstPartyTypeKind.ZodRecord:\n const keyType = sUnwrapZod(def.keyType, newConfig)\n const valueType = sUnwrapZod(def.valueType, newConfig)\n return `${getMultilineComment(schemaTyped.description)} { [key: ${keyType}]: ${valueType} }`\n\n case z.ZodFirstPartyTypeKind.ZodMap:\n return `Map<${sUnwrapZod(def.keyType, newConfig)}, ${sUnwrapZod(def.valueType, newConfig)}>`\n\n case z.ZodFirstPartyTypeKind.ZodSet:\n return `Set<${sUnwrapZod(def.valueType, newConfig)}>`\n\n case z.ZodFirstPartyTypeKind.ZodFunction:\n const input = sUnwrapZod(new FnParameters(def.args), newConfig)\n const output = sUnwrapZod(new FnReturn(def.returns), newConfig)\n const parentIsType = config?.parent instanceof Declaration && config?.parent.props.type === 'type'\n\n if (config?.declaration && !parentIsType) {\n return `${getMultilineComment(schemaTyped.description)}\n(${input}): ${output}`\n }\n\n return `${getMultilineComment(schemaTyped.description)}\n(${input}) => ${output}`\n\n case z.ZodFirstPartyTypeKind.ZodLazy:\n return sUnwrapZod(def.getter(), newConfig)\n\n case z.ZodFirstPartyTypeKind.ZodLiteral:\n const value: string = primitiveToTypscriptLiteralType(def.value)\n return `${getMultilineComment(schemaTyped.description)}\n${value}`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodEnum:\n const values = def.values.map(primitiveToTypescriptValue)\n return values.join(' | ')\n\n case z.ZodFirstPartyTypeKind.ZodEffects:\n return sUnwrapZod(def.schema, newConfig)\n\n case z.ZodFirstPartyTypeKind.ZodNativeEnum:\n throw new errors.UnsupportedZuiToTypescriptTypeError(z.ZodFirstPartyTypeKind.ZodNativeEnum)\n\n case z.ZodFirstPartyTypeKind.ZodOptional:\n return `${sUnwrapZod(def.innerType, newConfig)} | undefined`\n\n case z.ZodFirstPartyTypeKind.ZodNullable:\n return `${sUnwrapZod(def.innerType, newConfig)} | null`\n\n case z.ZodFirstPartyTypeKind.ZodDefault:\n const defaultInnerType = config.treatDefaultAsOptional ? def.innerType.optional() : def.innerType\n return sUnwrapZod(defaultInnerType, newConfig)\n\n case z.ZodFirstPartyTypeKind.ZodCatch:\n return sUnwrapZod(def.innerType, newConfig)\n\n case z.ZodFirstPartyTypeKind.ZodPromise:\n return `Promise<${sUnwrapZod(def.type, newConfig)}>`\n\n case z.ZodFirstPartyTypeKind.ZodBranded:\n return sUnwrapZod(def.type, newConfig)\n\n case z.ZodFirstPartyTypeKind.ZodPipeline:\n return sUnwrapZod(def.in, newConfig)\n\n case z.ZodFirstPartyTypeKind.ZodSymbol:\n return `${getMultilineComment(schemaTyped.description)} symbol`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodReadonly:\n return `Readonly<${sUnwrapZod(def.innerType, newConfig)}>`\n\n case z.ZodFirstPartyTypeKind.ZodRef:\n return toTypeArgumentName(def.uri)\n\n default:\n util.assertNever(def)\n }\n}\n\nconst unwrapDeclaration = (declaration: Declaration, options: InternalOptions): string => {\n if (declaration.props.type === 'none') {\n return sUnwrapZod(declaration.props.schema, options)\n }\n\n const { schema, identifier } = declaration.props\n const description = getMultilineComment(schema.description)\n const withoutDesc = schema.describe('')\n const typings = sUnwrapZod(withoutDesc, { ...options, declaration: true })\n\n const isLargeDeclaration = typings.split('\\n').length >= LARGE_DECLARATION_LINES\n const closingTag = isLargeDeclaration && options.includeClosingTags ? `// end of ${identifier}` : ''\n\n if (declaration.props.type !== 'type' && schema instanceof z.ZodFunction) {\n return stripSpaces(`${description}\ndeclare function ${identifier}${typings};${closingTag}`)\n }\n\n if (declaration.props.type === 'variable') {\n return stripSpaces(`${description}declare const ${identifier}: ${typings};${closingTag}`)\n }\n\n const generics =\n declaration.props.args.length > 0 ? `<${declaration.props.args.map(toTypeArgumentName).join(', ')}>` : ''\n return stripSpaces(`${description}type ${declaration.props.identifier}${generics} = ${typings};${closingTag}`)\n}\n\nconst getDeclarationType = (options: TypescriptGenerationOptions): TypescriptDeclarationType => {\n if (!options.declaration) {\n return 'none'\n }\n if (options.declaration === true) {\n return 'variable'\n }\n return options.declaration\n}\n\nconst getDeclarationProps = (schema: z.Schema, options: TypescriptGenerationOptions): Declaration => {\n const declarationType = getDeclarationType(options)\n const args = schema.getReferences()\n\n if (declarationType === 'none') {\n if (args.length > 0) {\n throw new errors.UnrepresentableGenericError()\n }\n\n return new Declaration({ type: 'none', schema })\n }\n\n const title = 'title' in schema.ui ? (schema.ui.title as string) : null\n if (!title) {\n throw new errors.UntitledDeclarationError()\n }\n\n if (declarationType === 'variable') {\n if (args.length > 0) {\n throw new errors.UnrepresentableGenericError()\n }\n\n return new Declaration({ type: 'variable', identifier: title, schema })\n }\n\n return new Declaration({ type: 'type', identifier: title, schema, args })\n}\n", "/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n", "import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n", "import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n", "import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n", "/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n", "import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n", "/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n", "import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n", "/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nexport default arrayMap;\n", "/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n", "import Symbol from './_Symbol.js';\nimport arrayMap from './_arrayMap.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default baseToString;\n", "/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n", "/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nexport default identity;\n", "import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n", "import root from './_root.js';\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nexport default coreJsData;\n", "import coreJsData from './_coreJsData.js';\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nexport default isMasked;\n", "/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nexport default toSource;\n", "import isFunction from './isFunction.js';\nimport isMasked from './_isMasked.js';\nimport isObject from './isObject.js';\nimport toSource from './_toSource.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nexport default baseIsNative;\n", "/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nexport default getValue;\n", "import baseIsNative from './_baseIsNative.js';\nimport getValue from './_getValue.js';\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nexport default getNative;\n", "import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nexport default WeakMap;\n", "import getNative from './_getNative.js';\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nexport default defineProperty;\n", "/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nexport default isIndex;\n", "import defineProperty from './_defineProperty.js';\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nexport default baseAssignValue;\n", "/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n", "import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nexport default assignValue;\n", "/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isLength;\n", "import isFunction from './isFunction.js';\nimport isLength from './isLength.js';\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nexport default isArrayLike;\n", "/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nexport default isPrototype;\n", "/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nexport default baseTimes;\n", "import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nexport default baseIsArguments;\n", "import baseIsArguments from './_baseIsArguments.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nexport default isArguments;\n", "/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nexport default stubFalse;\n", "import root from './_root.js';\nimport stubFalse from './stubFalse.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nexport default isBuffer;\n", "import baseGetTag from './_baseGetTag.js';\nimport isLength from './isLength.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nexport default baseIsTypedArray;\n", "/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nexport default baseUnary;\n", "import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nexport default nodeUtil;\n", "import baseIsTypedArray from './_baseIsTypedArray.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nexport default isTypedArray;\n", "import baseTimes from './_baseTimes.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isIndex from './_isIndex.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default arrayLikeKeys;\n", "/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nexport default overArg;\n", "import overArg from './_overArg.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nexport default nativeKeys;\n", "import isPrototype from './_isPrototype.js';\nimport nativeKeys from './_nativeKeys.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeys;\n", "import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeys from './_baseKeys.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nexport default keys;\n", "/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default nativeKeysIn;\n", "import isObject from './isObject.js';\nimport isPrototype from './_isPrototype.js';\nimport nativeKeysIn from './_nativeKeysIn.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeysIn;\n", "import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeysIn from './_baseKeysIn.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nexport default keysIn;\n", "import isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nexport default isKey;\n", "import getNative from './_getNative.js';\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nexport default nativeCreate;\n", "import nativeCreate from './_nativeCreate.js';\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nexport default hashClear;\n", "/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default hashDelete;\n", "import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nexport default hashGet;\n", "import nativeCreate from './_nativeCreate.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nexport default hashHas;\n", "import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nexport default hashSet;\n", "import hashClear from './_hashClear.js';\nimport hashDelete from './_hashDelete.js';\nimport hashGet from './_hashGet.js';\nimport hashHas from './_hashHas.js';\nimport hashSet from './_hashSet.js';\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nexport default Hash;\n", "/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nexport default listCacheClear;\n", "import eq from './eq.js';\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nexport default assocIndexOf;\n", "import assocIndexOf from './_assocIndexOf.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nexport default listCacheDelete;\n", "import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nexport default listCacheGet;\n", "import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nexport default listCacheHas;\n", "import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nexport default listCacheSet;\n", "import listCacheClear from './_listCacheClear.js';\nimport listCacheDelete from './_listCacheDelete.js';\nimport listCacheGet from './_listCacheGet.js';\nimport listCacheHas from './_listCacheHas.js';\nimport listCacheSet from './_listCacheSet.js';\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nexport default ListCache;\n", "import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nexport default Map;\n", "import Hash from './_Hash.js';\nimport ListCache from './_ListCache.js';\nimport Map from './_Map.js';\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nexport default mapCacheClear;\n", "/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nexport default isKeyable;\n", "import isKeyable from './_isKeyable.js';\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nexport default getMapData;\n", "import getMapData from './_getMapData.js';\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default mapCacheDelete;\n", "import getMapData from './_getMapData.js';\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nexport default mapCacheGet;\n", "import getMapData from './_getMapData.js';\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nexport default mapCacheHas;\n", "import getMapData from './_getMapData.js';\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nexport default mapCacheSet;\n", "import mapCacheClear from './_mapCacheClear.js';\nimport mapCacheDelete from './_mapCacheDelete.js';\nimport mapCacheGet from './_mapCacheGet.js';\nimport mapCacheHas from './_mapCacheHas.js';\nimport mapCacheSet from './_mapCacheSet.js';\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nexport default MapCache;\n", "import MapCache from './_MapCache.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nexport default memoize;\n", "import memoize from './memoize.js';\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nexport default memoizeCapped;\n", "import memoizeCapped from './_memoizeCapped.js';\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nexport default stringToPath;\n", "import baseToString from './_baseToString.js';\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nexport default toString;\n", "import isArray from './isArray.js';\nimport isKey from './_isKey.js';\nimport stringToPath from './_stringToPath.js';\nimport toString from './toString.js';\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nexport default castPath;\n", "import isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default toKey;\n", "import castPath from './_castPath.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nexport default baseGet;\n", "import baseGet from './_baseGet.js';\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nexport default get;\n", "/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nexport default arrayPush;\n", "import overArg from './_overArg.js';\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nexport default getPrototype;\n", "import baseGetTag from './_baseGetTag.js';\nimport getPrototype from './_getPrototype.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nexport default isPlainObject;\n", "import ListCache from './_ListCache.js';\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nexport default stackClear;\n", "/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nexport default stackDelete;\n", "/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nexport default stackGet;\n", "/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nexport default stackHas;\n", "import ListCache from './_ListCache.js';\nimport Map from './_Map.js';\nimport MapCache from './_MapCache.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nexport default stackSet;\n", "import ListCache from './_ListCache.js';\nimport stackClear from './_stackClear.js';\nimport stackDelete from './_stackDelete.js';\nimport stackGet from './_stackGet.js';\nimport stackHas from './_stackHas.js';\nimport stackSet from './_stackSet.js';\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nexport default Stack;\n", "/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nexport default arrayFilter;\n", "/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nexport default stubArray;\n", "import arrayFilter from './_arrayFilter.js';\nimport stubArray from './stubArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nexport default getSymbols;\n", "import arrayPush from './_arrayPush.js';\nimport getPrototype from './_getPrototype.js';\nimport getSymbols from './_getSymbols.js';\nimport stubArray from './stubArray.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nexport default getSymbolsIn;\n", "import arrayPush from './_arrayPush.js';\nimport isArray from './isArray.js';\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nexport default baseGetAllKeys;\n", "import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbols from './_getSymbols.js';\nimport keys from './keys.js';\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nexport default getAllKeys;\n", "import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nexport default getAllKeysIn;\n", "import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nexport default DataView;\n", "import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nexport default Promise;\n", "import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nexport default Set;\n", "import DataView from './_DataView.js';\nimport Map from './_Map.js';\nimport Promise from './_Promise.js';\nimport Set from './_Set.js';\nimport WeakMap from './_WeakMap.js';\nimport baseGetTag from './_baseGetTag.js';\nimport toSource from './_toSource.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nexport default getTag;\n", "import root from './_root.js';\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nexport default Uint8Array;\n", "/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nexport default setCacheAdd;\n", "/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nexport default setCacheHas;\n", "import MapCache from './_MapCache.js';\nimport setCacheAdd from './_setCacheAdd.js';\nimport setCacheHas from './_setCacheHas.js';\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nexport default SetCache;\n", "/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nexport default arraySome;\n", "/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nexport default cacheHas;\n", "import SetCache from './_SetCache.js';\nimport arraySome from './_arraySome.js';\nimport cacheHas from './_cacheHas.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nexport default equalArrays;\n", "/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nexport default mapToArray;\n", "/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nexport default setToArray;\n", "import Symbol from './_Symbol.js';\nimport Uint8Array from './_Uint8Array.js';\nimport eq from './eq.js';\nimport equalArrays from './_equalArrays.js';\nimport mapToArray from './_mapToArray.js';\nimport setToArray from './_setToArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nexport default equalByTag;\n", "import getAllKeys from './_getAllKeys.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nexport default equalObjects;\n", "import Stack from './_Stack.js';\nimport equalArrays from './_equalArrays.js';\nimport equalByTag from './_equalByTag.js';\nimport equalObjects from './_equalObjects.js';\nimport getTag from './_getTag.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nexport default baseIsEqualDeep;\n", "import baseIsEqualDeep from './_baseIsEqualDeep.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nexport default baseIsEqual;\n", "import Stack from './_Stack.js';\nimport baseIsEqual from './_baseIsEqual.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nexport default baseIsMatch;\n", "import isObject from './isObject.js';\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nexport default isStrictComparable;\n", "import isStrictComparable from './_isStrictComparable.js';\nimport keys from './keys.js';\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nexport default getMatchData;\n", "/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nexport default matchesStrictComparable;\n", "import baseIsMatch from './_baseIsMatch.js';\nimport getMatchData from './_getMatchData.js';\nimport matchesStrictComparable from './_matchesStrictComparable.js';\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nexport default baseMatches;\n", "/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nexport default baseHasIn;\n", "import castPath from './_castPath.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isIndex from './_isIndex.js';\nimport isLength from './isLength.js';\nimport toKey from './_toKey.js';\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nexport default hasPath;\n", "import baseHasIn from './_baseHasIn.js';\nimport hasPath from './_hasPath.js';\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nexport default hasIn;\n", "import baseIsEqual from './_baseIsEqual.js';\nimport get from './get.js';\nimport hasIn from './hasIn.js';\nimport isKey from './_isKey.js';\nimport isStrictComparable from './_isStrictComparable.js';\nimport matchesStrictComparable from './_matchesStrictComparable.js';\nimport toKey from './_toKey.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nexport default baseMatchesProperty;\n", "/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nexport default baseProperty;\n", "import baseGet from './_baseGet.js';\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nexport default basePropertyDeep;\n", "import baseProperty from './_baseProperty.js';\nimport basePropertyDeep from './_basePropertyDeep.js';\nimport isKey from './_isKey.js';\nimport toKey from './_toKey.js';\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nexport default property;\n", "import baseMatches from './_baseMatches.js';\nimport baseMatchesProperty from './_baseMatchesProperty.js';\nimport identity from './identity.js';\nimport isArray from './isArray.js';\nimport property from './property.js';\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nexport default baseIteratee;\n", "/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nexport default createBaseFor;\n", "import createBaseFor from './_createBaseFor.js';\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nexport default baseFor;\n", "import baseFor from './_baseFor.js';\nimport keys from './keys.js';\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nexport default baseForOwn;\n", "import baseIsEqual from './_baseIsEqual.js';\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nexport default isEqual;\n", "import baseIsEqual from './_baseIsEqual.js';\n\n/**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\nfunction isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n}\n\nexport default isEqualWith;\n", "/**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\nfunction isUndefined(value) {\n return value === undefined;\n}\n\nexport default isUndefined;\n", "import baseAssignValue from './_baseAssignValue.js';\nimport baseForOwn from './_baseForOwn.js';\nimport baseIteratee from './_baseIteratee.js';\n\n/**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\nfunction mapValues(object, iteratee) {\n var result = {};\n iteratee = baseIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n}\n\nexport default mapValues;\n", "/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\nfunction negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n}\n\nexport default negate;\n", "import assignValue from './_assignValue.js';\nimport castPath from './_castPath.js';\nimport isIndex from './_isIndex.js';\nimport isObject from './isObject.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n}\n\nexport default baseSet;\n", "import baseGet from './_baseGet.js';\nimport baseSet from './_baseSet.js';\nimport castPath from './_castPath.js';\n\n/**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n}\n\nexport default basePickBy;\n", "import arrayMap from './_arrayMap.js';\nimport baseIteratee from './_baseIteratee.js';\nimport basePickBy from './_basePickBy.js';\nimport getAllKeysIn from './_getAllKeysIn.js';\n\n/**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\nfunction pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = baseIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n}\n\nexport default pickBy;\n", "import baseIteratee from './_baseIteratee.js';\nimport negate from './negate.js';\nimport pickBy from './pickBy.js';\n\n/**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\nfunction omitBy(object, predicate) {\n return pickBy(object, negate(baseIteratee(predicate)));\n}\n\nexport default omitBy;\n", "import { primitiveToTypescriptValue as toTs, unknownToTypescriptValue } from '../common/utils'\nimport { ZodStringCheck, ZodStringDef } from '../../z/types/string'\nimport { util } from '../../z'\n\nexport const generateStringChecks = (def: ZodStringDef): string => {\n const checks = def.checks\n if (checks.length === 0) {\n return ''\n }\n return checks.map(_generateStringCheck).join('')\n}\n\nconst _generateStringCheck = (check: ZodStringCheck): string => {\n switch (check.kind) {\n case 'min':\n return `.min(${toTs(check.value)}, ${toTs(check.message)})`\n case 'max':\n return `.max(${toTs(check.value)}, ${toTs(check.message)})`\n case 'length':\n return `.length(${toTs(check.value)}, ${toTs(check.message)})`\n case 'email':\n return `.email(${toTs(check.message)})`\n case 'url':\n return `.url(${toTs(check.message)})`\n case 'emoji':\n return `.emoji(${toTs(check.message)})`\n case 'uuid':\n return `.uuid(${toTs(check.message)})`\n case 'cuid':\n return `.cuid(${toTs(check.message)})`\n case 'cuid2':\n return `.cuid2(${toTs(check.message)})`\n case 'ulid':\n return `.ulid(${toTs(check.message)})`\n case 'includes':\n const includesOptions = unknownToTypescriptValue({ message: check.message, position: check.position })\n return `.includes(${toTs(check.value)}, ${includesOptions})`\n case 'startsWith':\n return `.startsWith(${toTs(check.value)}, ${toTs(check.message)})`\n case 'endsWith':\n return `.endsWith(${toTs(check.value)}, ${toTs(check.message)})`\n case 'regex':\n const tsRegex = String(check.regex)\n return `.regex(${tsRegex}, ${toTs(check.message)})`\n case 'trim':\n return `.trim()`\n case 'toLowerCase':\n return `.toLowerCase()`\n case 'toUpperCase':\n return `.toUpperCase()`\n case 'datetime':\n const datetimePrecision = check.precision === null ? undefined : check.precision\n const dateTimeOptions = unknownToTypescriptValue({\n message: check.message,\n precision: datetimePrecision,\n offset: check.offset,\n })\n return `.datetime(${dateTimeOptions})`\n case 'ip':\n const ipOptions = unknownToTypescriptValue({ message: check.message, version: check.version })\n return `.ip(${ipOptions})`\n default:\n type _assertion = util.AssertNever<typeof check>\n return ''\n }\n}\n", "import { primitiveToTypescriptValue as toTs } from '../common/utils'\nimport { ZodNumberCheck, ZodNumberDef } from '../../z/types/number'\nimport { util } from '../../z'\n\nexport const generateNumberChecks = (def: ZodNumberDef): string => {\n const checks = def.checks\n if (checks.length === 0) {\n return ''\n }\n return checks.map(_generateNumberCheck).join('')\n}\n\nconst _generateNumberCheck = (check: ZodNumberCheck): string => {\n switch (check.kind) {\n case 'min':\n return `.min(${toTs(check.value)}, ${toTs(check.message)})`\n case 'max':\n return `.max(${toTs(check.value)}, ${toTs(check.message)})`\n case 'int':\n return `.int(${toTs(check.message)})`\n case 'multipleOf':\n return `.multipleOf(${toTs(check.value)}, ${toTs(check.message)})`\n case 'finite':\n return `.finite(${toTs(check.message)})`\n default:\n type _assertion = util.AssertNever<typeof check>\n return ''\n }\n}\n", "import { primitiveToTypescriptValue as toTs } from '../common/utils'\nimport { ZodBigIntCheck, ZodBigIntDef } from '../../z/types/bigint'\nimport { util } from '../../z'\n\nexport const generateBigIntChecks = (def: ZodBigIntDef): string => {\n const checks = def.checks\n if (checks.length === 0) {\n return ''\n }\n return checks.map(_generateBigIntCheck).join('')\n}\n\nconst _generateBigIntCheck = (check: ZodBigIntCheck): string => {\n switch (check.kind) {\n case 'min':\n return `.min(${toTs(check.value)}, ${toTs(check.message)})`\n case 'max':\n return `.max(${toTs(check.value)}, ${toTs(check.message)})`\n case 'multipleOf':\n return `.multipleOf(${toTs(check.value)}, ${toTs(check.message)})`\n default:\n type _assertion = util.AssertNever<typeof check>\n return ''\n }\n}\n", "import { primitiveToTypescriptValue as toTs } from '../common/utils'\nimport { ZodDateCheck, ZodDateDef } from '../../z/types/date'\nimport { util } from '../../z'\n\nexport const generateDateChecks = (def: ZodDateDef): string => {\n const checks = def.checks\n if (checks.length === 0) {\n return ''\n }\n return checks.map(_generateDateCheck).join('')\n}\n\nconst _generateDateCheck = (check: ZodDateCheck): string => {\n switch (check.kind) {\n case 'min':\n const minDate = dateTs(check.value)\n return `.min(${minDate}, ${toTs(check.message)})`\n case 'max':\n const maxDate = dateTs(check.value)\n return `.max(${maxDate}, ${toTs(check.message)})`\n default:\n type _assertion = util.AssertNever<typeof check>\n return ''\n }\n}\n\nconst dateTs = (d: number): string => {\n return `new Date(${d})`\n}\n", "import { primitiveToTypescriptValue as toTs } from '../common/utils'\nimport { ZodArrayDef } from '../../z/types/array'\n\nexport const generateArrayChecks = (def: ZodArrayDef): string => {\n const checks: string[] = []\n if (def.exactLength) {\n const { value, message } = def.exactLength\n checks.push(`.length(${toTs(value)}, ${toTs(message)})`)\n }\n if (def.minLength) {\n const { value, message } = def.minLength\n checks.push(`.min(${toTs(value)}, ${toTs(message)})`)\n }\n if (def.maxLength) {\n const { value, message } = def.maxLength\n checks.push(`.max(${toTs(value)}, ${toTs(message)})`)\n }\n return checks.join('')\n}\n", "import { primitiveToTypescriptValue as toTs } from '../common/utils'\nimport { ZodSetDef } from '../../z/types/set'\nexport const generateSetChecks = (def: ZodSetDef): string => {\n const checks: string[] = []\n if (def.minSize) {\n const { value, message } = def.minSize\n checks.push(`.min(${toTs(value)}, ${toTs(message)})`)\n }\n if (def.maxSize) {\n const { value, message } = def.maxSize\n checks.push(`.max(${toTs(value)}, ${toTs(message)})`)\n }\n return checks.join('')\n}\n", "import { mapValues } from 'lodash-es'\n\nimport z, { util } from '../../z'\nimport {\n primitiveToTypescriptValue,\n unknownToTypescriptValue,\n recordOfUnknownToTypescriptRecord,\n} from '../common/utils'\nimport * as errors from '../common/errors'\nimport { zuiKey } from '../../ui/constants'\nimport { generateStringChecks } from './string-checks'\nimport { generateNumberChecks } from './number-checks'\nimport { generateBigIntChecks } from './bigint-checks'\nimport { generateDateChecks } from './date-checks'\nimport { generateArrayChecks } from './array-checks'\nimport { generateSetChecks } from './set-checks'\n\n/**\n *\n * @param schema zui schema\n * @param options generation options\n * @returns a typescript program that would construct the given schema if executed\n */\nexport function toTypescriptSchema(schema: z.Schema): string {\n let wrappedSchema: z.Schema = schema\n let dts = sUnwrapZod(wrappedSchema)\n return dts\n}\n\nfunction sUnwrapZod(schema: z.Schema): string {\n const schemaTyped = schema as z.ZodFirstPartySchemaTypes\n const def = schemaTyped._def\n\n switch (def.typeName) {\n case z.ZodFirstPartyTypeKind.ZodString:\n return `z.string()${generateStringChecks(def)}${_addZuiExtensions(def)}${_maybeDescribe(def)}`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodNumber:\n return `z.number()${generateNumberChecks(def)}${_addZuiExtensions(def)}${_maybeDescribe(def)}`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodNaN:\n return `z.nan()${_addZuiExtensions(def)}${_maybeDescribe(def)}`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodBigInt:\n return `z.bigint()${generateBigIntChecks(def)}${_addZuiExtensions(def)}${_maybeDescribe(def)}`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodBoolean:\n return `z.boolean()${_addZuiExtensions(def)}${_maybeDescribe(schema._def)}`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodDate:\n return `z.date()${generateDateChecks(def)}${_addZuiExtensions(def)}${_maybeDescribe(def)}`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodUndefined:\n return `z.undefined()${_addZuiExtensions(def)}${_maybeDescribe(def)}`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodNull:\n return `z.null()${_addZuiExtensions(def)}${_maybeDescribe(def)}`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodAny:\n return `z.any()${_addZuiExtensions(def)}${_maybeDescribe(def)}`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodUnknown:\n return `z.unknown()${_addZuiExtensions(def)}${_maybeDescribe(def)}`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodNever:\n return `z.never()${_addZuiExtensions(def)}${_maybeDescribe(def)}`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodVoid:\n return `z.void()${_addZuiExtensions(def)}${_maybeDescribe(def)}`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodArray:\n return `z.array(${sUnwrapZod(def.type)})${generateArrayChecks(def)}${_addZuiExtensions(def)}${_maybeDescribe(def)}`\n\n case z.ZodFirstPartyTypeKind.ZodObject:\n const props = mapValues(def.shape(), sUnwrapZod)\n const catchall = (schema as z.ZodObject).additionalProperties()\n const catchallString = catchall ? `.catchall(${sUnwrapZod(catchall)})` : ''\n return [\n //\n `z.object({`,\n ...Object.entries(props).map(([key, value]) => ` ${key}: ${value},`),\n `})${catchallString}${_addZuiExtensions(def)}${_maybeDescribe(def)}`,\n ]\n .join('\\n')\n .trim()\n\n case z.ZodFirstPartyTypeKind.ZodUnion:\n const options = def.options.map(sUnwrapZod)\n return `z.union([${options.join(', ')}])${_addZuiExtensions(def)}${_maybeDescribe(def)}`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodDiscriminatedUnion:\n const opts = (def.options as z.ZodSchema[]).map(sUnwrapZod)\n const discriminator = primitiveToTypescriptValue(def.discriminator)\n return `z.discriminatedUnion(${discriminator}, [${opts.join(', ')}])${_addZuiExtensions(def)}${_maybeDescribe(def)}`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodIntersection:\n const left: string = sUnwrapZod(def.left)\n const right: string = sUnwrapZod(def.right)\n return `z.intersection(${left}, ${right})${_addZuiExtensions(def)}${_maybeDescribe(def)}`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodTuple:\n const items = def.items.map(sUnwrapZod)\n return `z.tuple([${items.join(', ')}])${_addZuiExtensions(def)}${_maybeDescribe(def)}`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodRecord:\n const keyType = sUnwrapZod(def.keyType)\n const valueType = sUnwrapZod(def.valueType)\n return `z.record(${keyType}, ${valueType})${_addZuiExtensions(def)}${_maybeDescribe(def)}`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodMap:\n const mapKeyType = sUnwrapZod(def.keyType)\n const mapValueType = sUnwrapZod(def.valueType)\n return `z.map(${mapKeyType}, ${mapValueType})${_addZuiExtensions(def)}${_maybeDescribe(def)}`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodSet:\n return `z.set(${sUnwrapZod(def.valueType)})${generateSetChecks(def)}${_addZuiExtensions(def)}${_maybeDescribe(def)}`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodFunction:\n const args = def.args.items.map(sUnwrapZod)\n const argsString = args.length ? `.args(${args.join(', ')})` : ''\n const returns = sUnwrapZod(def.returns)\n return `z.function()${argsString}.returns(${returns})${_addZuiExtensions(def)}${_maybeDescribe(def)}`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodLazy:\n return `z.lazy(() => ${sUnwrapZod(def.getter())})${_addZuiExtensions(def)}${_maybeDescribe(def)}`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodLiteral:\n const value = primitiveToTypescriptValue(def.value)\n return `z.literal(${value})${_addZuiExtensions(def)}${_maybeDescribe(def)}`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodEnum:\n const values = def.values.map(primitiveToTypescriptValue)\n return `z.enum([${values.join(', ')}])${_addZuiExtensions(def)}${_maybeDescribe(def)}`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodEffects:\n throw new errors.UnsupportedZuiToTypescriptSchemaError(z.ZodFirstPartyTypeKind.ZodEffects)\n\n case z.ZodFirstPartyTypeKind.ZodNativeEnum:\n throw new errors.UnsupportedZuiToTypescriptSchemaError(z.ZodFirstPartyTypeKind.ZodNativeEnum)\n\n case z.ZodFirstPartyTypeKind.ZodOptional:\n return `z.optional(${sUnwrapZod(def.innerType)})${_addZuiExtensions(def)}${_maybeDescribe(def)}`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodNullable:\n return `z.nullable(${sUnwrapZod(def.innerType)})${_addZuiExtensions(def)}${_maybeDescribe(def)}`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodDefault:\n const defaultValue = unknownToTypescriptValue(def.defaultValue())\n // TODO: use z.default() notation\n return `z.default(${sUnwrapZod(def.innerType)}, ${defaultValue})${_addZuiExtensions(def)}${_maybeDescribe(def)}`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodCatch:\n throw new errors.UnsupportedZuiToTypescriptSchemaError(z.ZodFirstPartyTypeKind.ZodCatch)\n\n case z.ZodFirstPartyTypeKind.ZodPromise:\n return `z.promise(${sUnwrapZod(def.type)})${_addZuiExtensions(def)}${_maybeDescribe(def)}`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodBranded:\n throw new errors.UnsupportedZuiToTypescriptSchemaError(z.ZodFirstPartyTypeKind.ZodBranded)\n\n case z.ZodFirstPartyTypeKind.ZodPipeline:\n throw new errors.UnsupportedZuiToTypescriptSchemaError(z.ZodFirstPartyTypeKind.ZodPipeline)\n\n case z.ZodFirstPartyTypeKind.ZodSymbol:\n throw new errors.UnsupportedZuiToTypescriptSchemaError(z.ZodFirstPartyTypeKind.ZodSymbol)\n\n case z.ZodFirstPartyTypeKind.ZodReadonly:\n return `z.readonly(${sUnwrapZod(def.innerType)})${_addZuiExtensions(def)}${_maybeDescribe(def)}`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodRef:\n const uri = primitiveToTypescriptValue(def.uri)\n return `z.ref(${uri})${_addZuiExtensions(def)}${_maybeDescribe(def)}`.trim()\n\n default:\n util.assertNever(def)\n }\n}\n\nconst _maybeDescribe = (def: z.ZodTypeDef) =>\n def.description ? `.describe(${primitiveToTypescriptValue(def.description)})` : ''\n\nconst _addZuiExtensions = (def: z.ZodTypeDef) =>\n `${_maybeTitle(def)}${_maybeDisplayAs(def)}${_maybeDisabled(def)}${_maybeHidden(def)}${_maybePlaceholder(def)}${_maybeSecret(def)}${_maybeSetMetadata(def)}`\n\nconst _maybeTitle = (def: z.ZodTypeDef) =>\n def[zuiKey]?.title ? `.title(${primitiveToTypescriptValue(def[zuiKey].title)})` : ''\n\nconst _maybeDisplayAs = (def: z.ZodTypeDef) =>\n def[zuiKey]?.displayAs\n ? `.displayAs(${recordOfUnknownToTypescriptRecord({ id: def[zuiKey].displayAs[0], params: def[zuiKey].displayAs[1] })})`\n : ''\n\nconst _maybeDisabled = (def: z.ZodTypeDef) => (def[zuiKey]?.disabled ? `.disabled(${def[zuiKey].disabled})` : '')\n\nconst _maybeHidden = (def: z.ZodTypeDef) => (def[zuiKey]?.hidden ? `.hidden(${def[zuiKey].hidden})` : '')\n\nconst _maybePlaceholder = (def: z.ZodTypeDef) =>\n def[zuiKey]?.placeholder ? `.placeholder(${primitiveToTypescriptValue(def[zuiKey].placeholder)})` : ''\n\nconst _maybeSecret = (def: z.ZodTypeDef) => (def[zuiKey]?.secret ? '.secret()' : '')\n\nconst _maybeSetMetadata = (def: z.ZodTypeDef) => {\n const reservedKeys = [\n 'title',\n 'tooltip',\n 'displayAs',\n 'disabled',\n 'hidden',\n 'placeholder',\n 'secret',\n 'coerce',\n ] as const\n const metadata = Object.entries(def[zuiKey] ?? {}).filter(\n ([key]) => !reservedKeys.includes(key as (typeof reservedKeys)[number]),\n )\n\n return metadata.length > 0 ? `.metadata(${recordOfUnknownToTypescriptRecord(Object.fromEntries(metadata))})` : ''\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport z from '../../../z'\nimport * as json from '../../common/json-schema'\n\nexport const zodNumberToJsonNumber = (zodNumber: z.ZodNumber): json.NumberSchema => {\n const schema: json.NumberSchema = {\n type: 'number',\n description: zodNumber.description,\n 'x-zui': zodNumber._def['x-zui'],\n }\n\n if (zodNumber._def[zuiKey]) {\n schema[zuiKey] = zodNumber._def[zuiKey]\n }\n\n for (const check of zodNumber._def.checks) {\n switch (check.kind) {\n case 'min': {\n const key = check.inclusive ? 'minimum' : 'exclusiveMinimum'\n const oppositeKey = check.inclusive ? 'exclusiveMinimum' : 'minimum'\n\n schema[key] = check.value\n delete schema[oppositeKey]\n break\n }\n\n case 'max': {\n const key = check.inclusive ? 'maximum' : 'exclusiveMaximum'\n const oppositeKey = check.inclusive ? 'exclusiveMaximum' : 'maximum'\n\n schema[key] = check.value\n delete schema[oppositeKey]\n break\n }\n\n case 'int':\n schema.type = 'integer'\n break\n\n case 'finite': {\n schema.format = 'finite'\n break\n }\n\n case 'multipleOf':\n schema.multipleOf = check.value\n break\n\n default:\n check satisfies never\n }\n }\n\n return schema\n}\n", "// Adapted from https://stackoverflow.com/a/3143231\n\nconst DATETIME_REGEX_BASE = `\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}`\nconst DATETIME_REGEX_OFFSET = `(([+-]\\\\d{2}(:?\\\\d{2})?)|Z)`\nconst DATETIME_REGEX_OFFSET_NONE = `Z`\nconst DATETIME_REGEX_PRECISION_ARBITRARY = `(\\\\.\\\\d+)?`\nconst DATETIME_REGEX_PRECISION_SPECIFIC_BEGIN = `\\\\.\\\\d{`\nconst DATETIME_REGEX_PRECISION_SPECIFIC_END = `}`\n\ntype DateTimeArgs = { precision: number | null; offset: boolean }\n\nexport const generateDatetimeRegex = (args: DateTimeArgs) => {\n const precision = args.precision\n ? DATETIME_REGEX_PRECISION_SPECIFIC_BEGIN + args.precision + DATETIME_REGEX_PRECISION_SPECIFIC_END\n : args.precision === 0\n ? ''\n : DATETIME_REGEX_PRECISION_ARBITRARY\n\n const offset = args.offset ? DATETIME_REGEX_OFFSET : DATETIME_REGEX_OFFSET_NONE\n\n return new RegExp(`^${DATETIME_REGEX_BASE}${precision}${offset}$`)\n}\n\nexport const extractPrecisionAndOffset = (regexSource: string): DateTimeArgs => ({\n precision: _extractPrecision(regexSource),\n offset: regexSource.endsWith(`${DATETIME_REGEX_OFFSET}$`),\n})\n\nconst _extractPrecision = (regexSource: string): DateTimeArgs['precision'] => {\n const slicedRegex = regexSource.slice(1 + DATETIME_REGEX_BASE.length)\n\n if (slicedRegex.startsWith(DATETIME_REGEX_PRECISION_ARBITRARY)) {\n return null\n } else if (slicedRegex.startsWith(DATETIME_REGEX_PRECISION_SPECIFIC_BEGIN)) {\n // NOTE: If parseInt encounters a character that is not a numeral in the\n // specified radix, it ignores it and all succeeding characters. This\n // means we do not need to know the length of the precision string.\n return parseInt(slicedRegex.slice(DATETIME_REGEX_PRECISION_SPECIFIC_BEGIN.length))\n }\n\n return 0\n}\n", "export { escapeSpecialChars } from './escape-special-chars'\n", "/**\n * Escapes special characters in a string for use in a regular expression.\n * This effectively makes the string completely inert and unable to cause regex\n * injections.\n */\nexport const escapeSpecialChars = (unsafeString: string) => unsafeString.replaceAll(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n", "import { JsonSchema7TypeUnion } from './parseDef'\nimport { Refs } from './Refs'\n\nexport type ErrorMessages<T extends JsonSchema7TypeUnion, OmitProperties extends string = ''> = Partial<\n Omit<{ [key in keyof T]: string }, OmitProperties | 'type' | 'errorMessages'>\n>\n\nexport function addErrorMessage<T extends { errorMessage?: ErrorMessages<any> }>(\n res: T,\n key: keyof T,\n errorMessage: string | undefined,\n refs: Refs,\n) {\n if (!refs?.errorMessages) return\n if (errorMessage) {\n res.errorMessage = {\n ...res.errorMessage,\n [key]: errorMessage,\n }\n }\n}\n\nexport function setResponseValueAndErrors<\n Json7Type extends JsonSchema7TypeUnion & {\n errorMessage?: ErrorMessages<Json7Type>\n },\n Key extends keyof Omit<Json7Type, 'errorMessage'>,\n>(res: Json7Type, key: Key, value: Json7Type[Key], errorMessage: string | undefined, refs: Refs) {\n res[key] = value\n addErrorMessage(res, key, errorMessage, refs)\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport { ZuiExtensionObject } from '../../../ui/types'\nimport { ZodStringDef } from '../../../z/index'\nimport { regexUtils } from '../../common'\nimport { ErrorMessages, setResponseValueAndErrors } from '../errorMessages'\nimport { Refs } from '../Refs'\n\n/**\n * Generated from the .source property of regular expressins found here:\n * https://github.com/colinhacks/zod/blob/master/src/types.ts.\n *\n * Escapes have been doubled, and expressions with /i flag have been changed accordingly\n */\nexport const zodPatterns = {\n /**\n * `c` was changed to `[cC]` to replicate /i flag\n */\n cuid: '^[cC][^\\\\s-]{8,}$',\n cuid2: '^[a-z][a-z0-9]*$',\n ulid: '^[0-9A-HJKMNP-TV-Z]{26}$',\n /**\n * `a-z` was added to replicate /i flag\n */\n email: '^(?!\\\\.)(?!.*\\\\.\\\\.)([a-zA-Z0-9_+-\\\\.]*)[a-zA-Z0-9_+-]@([a-zA-Z0-9][a-zA-Z0-9\\\\-]*\\\\.)+[a-zA-Z]{2,}$',\n emoji: '^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$',\n /**\n * Unused\n */\n uuid: '^[0-9a-fA-F]{8}\\\\b-[0-9a-fA-F]{4}\\\\b-[0-9a-fA-F]{4}\\\\b-[0-9a-fA-F]{4}\\\\b-[0-9a-fA-F]{12}$',\n /**\n * Unused\n */\n ipv4: '^(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))$',\n /**\n * Unused\n */\n ipv6: '^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$',\n} as const\n\nexport type JsonSchema7StringType = {\n type: 'string'\n minLength?: number\n maxLength?: number\n format?: 'email' | 'idn-email' | 'uri' | 'uuid' | 'date-time' | 'ipv4' | 'ipv6'\n pattern?: string\n allOf?: {\n pattern: string\n errorMessage?: ErrorMessages<{ type: 'string'; pattern: string }>\n }[]\n anyOf?: {\n format: string\n errorMessage?: ErrorMessages<{ type: 'string'; format: string }>\n }[]\n errorMessage?: ErrorMessages<JsonSchema7StringType>\n [zuiKey]?: ZuiExtensionObject\n}\n\nexport function parseStringDef(def: ZodStringDef, refs: Refs): JsonSchema7StringType {\n const res: JsonSchema7StringType = {\n type: 'string',\n ...(def.coerce\n ? {\n [zuiKey]: {\n coerce: def.coerce || undefined,\n },\n }\n : {}),\n }\n\n function processPattern(value: string): string {\n return refs.patternStrategy === 'escape' ? regexUtils.escapeSpecialChars(value) : value\n }\n\n if (def.checks) {\n for (const check of def.checks) {\n switch (check.kind) {\n case 'min':\n setResponseValueAndErrors(\n res,\n 'minLength',\n typeof res.minLength === 'number' ? Math.max(res.minLength, check.value) : check.value,\n check.message,\n refs,\n )\n break\n case 'max':\n setResponseValueAndErrors(\n res,\n 'maxLength',\n typeof res.maxLength === 'number' ? Math.min(res.maxLength, check.value) : check.value,\n check.message,\n refs,\n )\n\n break\n case 'email':\n switch (refs.emailStrategy) {\n case 'format:email':\n addFormat(res, 'email', check.message, refs)\n break\n case 'format:idn-email':\n addFormat(res, 'idn-email', check.message, refs)\n break\n case 'pattern:zod':\n addPattern(res, zodPatterns.email, check.message, refs)\n break\n }\n\n break\n case 'url':\n addFormat(res, 'uri', check.message, refs)\n break\n case 'uuid':\n addFormat(res, 'uuid', check.message, refs)\n break\n case 'regex':\n addPattern(res, check.regex.source, check.message, refs)\n break\n case 'cuid':\n addPattern(res, zodPatterns.cuid, check.message, refs)\n break\n case 'cuid2':\n addPattern(res, zodPatterns.cuid2, check.message, refs)\n break\n case 'startsWith':\n addPattern(res, '^' + processPattern(check.value), check.message, refs)\n break\n case 'endsWith':\n addPattern(res, processPattern(check.value) + '$', check.message, refs)\n break\n\n case 'datetime':\n addFormat(res, 'date-time', check.message, refs)\n break\n case 'length':\n setResponseValueAndErrors(\n res,\n 'minLength',\n typeof res.minLength === 'number' ? Math.max(res.minLength, check.value) : check.value,\n check.message,\n refs,\n )\n setResponseValueAndErrors(\n res,\n 'maxLength',\n typeof res.maxLength === 'number' ? Math.min(res.maxLength, check.value) : check.value,\n check.message,\n refs,\n )\n break\n case 'includes': {\n addPattern(res, processPattern(check.value), check.message, refs)\n break\n }\n case 'ip': {\n if (check.version !== 'v6') {\n addFormat(res, 'ipv4', check.message, refs)\n }\n if (check.version !== 'v4') {\n addFormat(res, 'ipv6', check.message, refs)\n }\n break\n }\n case 'emoji':\n addPattern(res, zodPatterns.emoji, check.message, refs)\n break\n case 'ulid': {\n addPattern(res, zodPatterns.ulid, check.message, refs)\n break\n }\n case 'toLowerCase':\n case 'toUpperCase':\n case 'trim':\n // I have no idea why these are checks in Zod 🤷\n break\n default:\n ;((_: never) => {})(check)\n }\n }\n }\n\n return res\n}\n\nconst addFormat = (\n schema: JsonSchema7StringType,\n value: Required<JsonSchema7StringType>['format'],\n message: string | undefined,\n refs: Refs,\n) => {\n if (schema.format || schema.anyOf?.some((x) => x.format)) {\n if (!schema.anyOf) {\n schema.anyOf = []\n }\n\n if (schema.format) {\n schema.anyOf!.push({\n format: schema.format,\n ...(schema.errorMessage &&\n refs.errorMessages && {\n errorMessage: { format: schema.errorMessage.format },\n }),\n })\n delete schema.format\n if (schema.errorMessage) {\n delete schema.errorMessage.format\n if (Object.keys(schema.errorMessage).length === 0) {\n delete schema.errorMessage\n }\n }\n }\n\n schema.anyOf!.push({\n format: value,\n ...(message && refs.errorMessages && { errorMessage: { format: message } }),\n })\n } else {\n setResponseValueAndErrors(schema, 'format', value, message, refs)\n }\n}\n\nconst addPattern = (schema: JsonSchema7StringType, value: string, message: string | undefined, refs: Refs) => {\n if (schema.pattern || schema.allOf?.some((x) => x.pattern)) {\n if (!schema.allOf) {\n schema.allOf = []\n }\n\n if (schema.pattern) {\n schema.allOf!.push({\n pattern: schema.pattern,\n ...(schema.errorMessage &&\n refs.errorMessages && {\n errorMessage: { pattern: schema.errorMessage.pattern },\n }),\n })\n delete schema.pattern\n if (schema.errorMessage) {\n delete schema.errorMessage.pattern\n if (Object.keys(schema.errorMessage).length === 0) {\n delete schema.errorMessage\n }\n }\n }\n\n schema.allOf!.push({\n pattern: value,\n ...(message && refs.errorMessages && { errorMessage: { pattern: message } }),\n })\n } else {\n setResponseValueAndErrors(schema, 'pattern', value, message, refs)\n }\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport z from '../../../z'\nimport { generateDatetimeRegex } from '../../../z/types/string/datetime'\nimport { regexUtils } from '../../common'\nimport * as errors from '../../common/errors'\nimport * as json from '../../common/json-schema'\nimport { zodPatterns } from '../../zui-to-json-schema-legacy/parsers/string'\n\nexport const zodStringToJsonString = (zodString: z.ZodString): json.StringSchema => {\n const schema: json.StringSchema = {\n type: 'string',\n description: zodString.description,\n 'x-zui': zodString._def['x-zui'],\n }\n\n if (zodString._def[zuiKey]) {\n schema[zuiKey] = zodString._def[zuiKey]\n }\n\n for (const check of zodString._def.checks) {\n switch (check.kind) {\n case 'cuid':\n schema.format = 'cuid'\n schema.pattern = zodPatterns.cuid\n break\n case 'cuid2':\n schema.format = 'cuid2'\n schema.pattern = zodPatterns.cuid2\n break\n case 'ulid':\n schema.format = 'ulid'\n schema.pattern = zodPatterns.ulid\n break\n case 'uuid':\n schema.format = 'uuid'\n schema.pattern = zodPatterns.uuid\n break\n case 'emoji':\n schema.format = 'emoji'\n schema.pattern = zodPatterns.emoji\n break\n case 'email':\n schema.format = 'email'\n schema.pattern = zodPatterns.email\n break\n case 'ip':\n schema.format = check.version === 'v6' ? 'ipv6' : 'ipv4'\n schema.pattern = check.version === 'v6' ? zodPatterns.ipv6 : zodPatterns.ipv4\n break\n case 'datetime':\n schema.format = 'date-time'\n if (check.precision !== null || check.offset) {\n schema.pattern = generateDatetimeRegex(check).source\n schema[zuiKey] = { ...schema[zuiKey], precision: check.precision, offset: check.offset }\n }\n break\n case 'url':\n schema.format = 'uri'\n break\n case 'endsWith':\n schema.pattern = `${regexUtils.escapeSpecialChars(check.value)}$`\n break\n case 'startsWith':\n schema.pattern = `^${regexUtils.escapeSpecialChars(check.value)}`\n break\n case 'includes':\n const positionPredicate = check.position && check.position >= 1 ? `^(?:.{${check.position}}).*` : ''\n schema.pattern = `${positionPredicate}${regexUtils.escapeSpecialChars(check.value)}`\n break\n case 'regex':\n schema.pattern = check.regex.source\n break\n case 'length':\n // NOTE: in zod, .length() refers to the exact length\n schema.minLength = schema.maxLength = Math.max(0, check.value)\n break\n case 'min':\n // NOTE: in zod, .min() is always inclusive\n schema.minLength = Math.max(0, check.value)\n break\n case 'max':\n // NOTE: in zod, .max() is always inclusive\n schema.maxLength = Math.max(0, check.value)\n break\n default:\n throw new errors.UnsupportedZuiCheckToJSONSchemaError({\n zodType: z.ZodFirstPartyTypeKind.ZodString,\n checkKind: check.kind,\n })\n }\n }\n\n return schema\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport z from '../../../z'\nimport * as json from '../../common/json-schema'\n\nexport const zodArrayToJsonArray = (\n zodArray: z.ZodArray,\n toSchema: (x: z.ZodTypeAny) => json.Schema,\n): json.ArraySchema => {\n const schema: json.ArraySchema = {\n type: 'array',\n description: zodArray.description,\n items: toSchema(zodArray._def.type),\n 'x-zui': zodArray._def['x-zui'],\n }\n\n if (zodArray._def[zuiKey]) {\n schema[zuiKey] = zodArray._def[zuiKey]\n }\n\n if (zodArray._def.minLength) {\n schema.minItems = zodArray._def.minLength.value\n }\n\n if (zodArray._def.maxLength) {\n schema.maxItems = zodArray._def.maxLength.value\n }\n\n if (zodArray._def.exactLength) {\n schema.minItems = zodArray._def.exactLength.value\n schema.maxItems = zodArray._def.exactLength.value\n }\n\n return schema\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport z from '../../../z'\nimport * as json from '../../common/json-schema'\n\nexport const zodSetToJsonSet = (zodSet: z.ZodSet, toSchema: (x: z.ZodTypeAny) => json.Schema): json.SetSchema => {\n const schema: json.SetSchema = {\n type: 'array',\n description: zodSet.description,\n uniqueItems: true,\n items: toSchema(zodSet._def.valueType),\n 'x-zui': zodSet._def['x-zui'],\n }\n\n if (zodSet._def[zuiKey]) {\n schema[zuiKey] = zodSet._def[zuiKey]\n }\n\n if (zodSet._def.minSize) {\n schema.minItems = zodSet._def.minSize.value\n }\n\n if (zodSet._def.maxSize) {\n schema.maxItems = zodSet._def.maxSize.value\n }\n\n return schema\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport z from '../../../z'\nimport * as json from '../../common/json-schema'\n\nexport const zodTupleToJsonTuple = (\n zodTuple: z.ZodTuple,\n toSchema: (x: z.ZodTypeAny) => json.Schema,\n): json.TupleSchema => {\n const schema: json.TupleSchema = {\n type: 'array',\n description: zodTuple.description,\n items: zodTuple._def.items.map((item) => toSchema(item)),\n }\n\n if (zodTuple._def[zuiKey]) {\n schema[zuiKey] = zodTuple._def[zuiKey]\n }\n\n if (zodTuple._def.rest) {\n schema.additionalItems = toSchema(zodTuple._def.rest)\n }\n\n return schema\n}\n", "import z from '../../z'\nimport * as json from '../common/json-schema'\nimport * as err from '../common/errors'\nimport { zodNumberToJsonNumber } from './type-processors/number'\nimport { zodStringToJsonString } from './type-processors/string'\nimport { zodArrayToJsonArray } from './type-processors/array'\nimport { zodSetToJsonSet } from './type-processors/set'\nimport { zodTupleToJsonTuple } from './type-processors/tuple'\n\n/**\n * Converts a Zui schema to a ZUI flavored JSON schema.\n * @param schema zui schema\n * @returns ZUI flavored JSON schema\n */\nexport function toJSONSchema(schema: z.Schema): json.Schema {\n const schemaTyped = schema as z.ZodFirstPartySchemaTypes\n const def = schemaTyped._def\n\n switch (def.typeName) {\n case z.ZodFirstPartyTypeKind.ZodString:\n return zodStringToJsonString(schemaTyped as z.ZodString) satisfies json.StringSchema\n\n case z.ZodFirstPartyTypeKind.ZodNumber:\n return zodNumberToJsonNumber(schemaTyped as z.ZodNumber) satisfies json.NumberSchema\n\n case z.ZodFirstPartyTypeKind.ZodNaN:\n throw new err.UnsupportedZuiToJSONSchemaError(z.ZodFirstPartyTypeKind.ZodNaN)\n\n case z.ZodFirstPartyTypeKind.ZodBigInt:\n throw new err.UnsupportedZuiToJSONSchemaError(z.ZodFirstPartyTypeKind.ZodBigInt, {\n suggestedAlternative: 'serialize bigint to string',\n })\n\n case z.ZodFirstPartyTypeKind.ZodBoolean:\n return {\n type: 'boolean',\n description: def.description,\n 'x-zui': def['x-zui'],\n } satisfies json.BooleanSchema\n\n case z.ZodFirstPartyTypeKind.ZodDate:\n throw new err.UnsupportedZuiToJSONSchemaError(z.ZodFirstPartyTypeKind.ZodDate, {\n suggestedAlternative: 'use z.string().datetime() instead',\n })\n\n case z.ZodFirstPartyTypeKind.ZodUndefined:\n return undefinedSchema(def)\n\n case z.ZodFirstPartyTypeKind.ZodNull:\n return nullSchema(def)\n\n case z.ZodFirstPartyTypeKind.ZodAny:\n return {\n description: def.description,\n 'x-zui': def['x-zui'],\n } satisfies json.AnySchema\n\n case z.ZodFirstPartyTypeKind.ZodUnknown:\n return {\n description: def.description,\n 'x-zui': { ...def['x-zui'], def: { typeName: z.ZodFirstPartyTypeKind.ZodUnknown } },\n }\n\n case z.ZodFirstPartyTypeKind.ZodNever:\n return {\n not: true,\n description: def.description,\n 'x-zui': def['x-zui'],\n } satisfies json.NeverSchema\n\n case z.ZodFirstPartyTypeKind.ZodVoid:\n throw new err.UnsupportedZuiToJSONSchemaError(z.ZodFirstPartyTypeKind.ZodVoid)\n\n case z.ZodFirstPartyTypeKind.ZodArray:\n return zodArrayToJsonArray(schemaTyped as z.ZodArray, toJSONSchema) satisfies json.ArraySchema\n\n case z.ZodFirstPartyTypeKind.ZodObject:\n const shape = Object.entries(def.shape())\n const requiredProperties = shape.filter(([_, value]) => !value.isOptional())\n const required = requiredProperties.length ? requiredProperties.map(([key]) => key) : undefined\n const properties = shape\n .map(([key, value]) => [key, value.mandatory()] satisfies [string, z.ZodType])\n .map(([key, value]) => [key, toJSONSchema(value)] satisfies [string, json.Schema])\n\n let additionalProperties: json.ObjectSchema['additionalProperties'] = false\n if (def.unknownKeys instanceof z.ZodType) {\n additionalProperties = toJSONSchema(def.unknownKeys)\n } else if (def.unknownKeys === 'passthrough') {\n additionalProperties = true\n }\n\n return {\n type: 'object',\n description: def.description,\n properties: Object.fromEntries(properties),\n required,\n additionalProperties,\n 'x-zui': def['x-zui'],\n } satisfies json.ObjectSchema\n\n case z.ZodFirstPartyTypeKind.ZodUnion:\n return {\n description: def.description,\n anyOf: def.options.map((option) => toJSONSchema(option)),\n 'x-zui': def['x-zui'],\n } satisfies json.UnionSchema\n\n case z.ZodFirstPartyTypeKind.ZodDiscriminatedUnion:\n return {\n description: def.description,\n anyOf: def.options.map((option) => toJSONSchema(option)),\n 'x-zui': {\n ...def['x-zui'],\n def: { typeName: z.ZodFirstPartyTypeKind.ZodDiscriminatedUnion, discriminator: def.discriminator },\n },\n } satisfies json.DiscriminatedUnionSchema\n\n case z.ZodFirstPartyTypeKind.ZodIntersection:\n const left = toJSONSchema(def.left)\n const right = toJSONSchema(def.right)\n\n /**\n * TODO: Potential conflict between `additionalProperties` in the left and right schemas.\n * To avoid this, we currently strip `additionalProperties` from both sides.\n * This is a workaround and results in lost schema information.\n * A proper fix would involve using `unevaluatedProperties`.\n * See: https://json-schema.org/understanding-json-schema/reference/object#unevaluatedproperties\n *\n * – fleur\n */\n if ('additionalProperties' in left) {\n delete left.additionalProperties\n }\n if ('additionalProperties' in right) {\n delete right.additionalProperties\n }\n\n return {\n description: def.description,\n allOf: [left, right],\n 'x-zui': def['x-zui'],\n } satisfies json.IntersectionSchema\n\n case z.ZodFirstPartyTypeKind.ZodTuple:\n return zodTupleToJsonTuple(schemaTyped as z.ZodTuple, toJSONSchema) satisfies json.TupleSchema\n\n case z.ZodFirstPartyTypeKind.ZodRecord:\n return {\n type: 'object',\n description: def.description,\n additionalProperties: toJSONSchema(def.valueType),\n 'x-zui': def['x-zui'],\n } satisfies json.RecordSchema\n\n case z.ZodFirstPartyTypeKind.ZodMap:\n throw new err.UnsupportedZuiToJSONSchemaError(z.ZodFirstPartyTypeKind.ZodMap)\n\n case z.ZodFirstPartyTypeKind.ZodSet:\n return zodSetToJsonSet(schemaTyped as z.ZodSet, toJSONSchema) satisfies json.SetSchema\n\n case z.ZodFirstPartyTypeKind.ZodFunction:\n throw new err.UnsupportedZuiToJSONSchemaError(z.ZodFirstPartyTypeKind.ZodFunction)\n\n case z.ZodFirstPartyTypeKind.ZodLazy:\n throw new err.UnsupportedZuiToJSONSchemaError(z.ZodFirstPartyTypeKind.ZodLazy)\n\n case z.ZodFirstPartyTypeKind.ZodLiteral:\n if (typeof def.value === 'string') {\n return {\n type: 'string',\n description: def.description,\n const: def.value,\n 'x-zui': def['x-zui'],\n } satisfies json.LiteralStringSchema\n } else if (typeof def.value === 'number') {\n return {\n type: 'number',\n description: def.description,\n const: def.value,\n 'x-zui': def['x-zui'],\n } satisfies json.LiteralNumberSchema\n } else if (typeof def.value === 'boolean') {\n return {\n type: 'boolean',\n description: def.description,\n const: def.value,\n 'x-zui': def['x-zui'],\n } satisfies json.LiteralBooleanSchema\n } else if (def.value === null) {\n return nullSchema(def)\n } else if (def.value === undefined) {\n return undefinedSchema(def)\n } else {\n z.util.assertEqual<bigint | symbol, typeof def.value>(true)\n const unsupportedLiteral = typeof def.value\n throw new err.ZuiToJSONSchemaError(`Unsupported literal type: \"${unsupportedLiteral}\"`)\n }\n\n case z.ZodFirstPartyTypeKind.ZodEnum:\n return {\n type: 'string',\n description: def.description,\n enum: def.values,\n 'x-zui': def['x-zui'],\n } satisfies json.EnumSchema\n\n case z.ZodFirstPartyTypeKind.ZodEffects:\n throw new err.UnsupportedZuiToJSONSchemaError(z.ZodFirstPartyTypeKind.ZodEffects)\n\n case z.ZodFirstPartyTypeKind.ZodNativeEnum:\n throw new err.UnsupportedZuiToJSONSchemaError(z.ZodFirstPartyTypeKind.ZodNativeEnum)\n\n case z.ZodFirstPartyTypeKind.ZodOptional:\n return {\n description: def.description,\n anyOf: [toJSONSchema(def.innerType), undefinedSchema()],\n 'x-zui': {\n ...def['x-zui'],\n def: { typeName: z.ZodFirstPartyTypeKind.ZodOptional },\n },\n } satisfies json.OptionalSchema\n\n case z.ZodFirstPartyTypeKind.ZodNullable:\n return {\n anyOf: [toJSONSchema(def.innerType), nullSchema()],\n 'x-zui': {\n ...def['x-zui'],\n def: { typeName: z.ZodFirstPartyTypeKind.ZodNullable },\n },\n } satisfies json.NullableSchema\n\n case z.ZodFirstPartyTypeKind.ZodDefault:\n // ZodDefault is not treated as a metadata root so we don't need to preserve x-zui\n return {\n ...toJSONSchema(def.innerType),\n default: def.defaultValue(),\n }\n\n case z.ZodFirstPartyTypeKind.ZodCatch:\n // TODO: could be supported using if-else json schema\n throw new err.UnsupportedZuiToJSONSchemaError(z.ZodFirstPartyTypeKind.ZodCatch)\n\n case z.ZodFirstPartyTypeKind.ZodPromise:\n throw new err.UnsupportedZuiToJSONSchemaError(z.ZodFirstPartyTypeKind.ZodPromise)\n\n case z.ZodFirstPartyTypeKind.ZodBranded:\n throw new err.UnsupportedZuiToJSONSchemaError(z.ZodFirstPartyTypeKind.ZodBranded)\n\n case z.ZodFirstPartyTypeKind.ZodPipeline:\n throw new err.UnsupportedZuiToJSONSchemaError(z.ZodFirstPartyTypeKind.ZodPipeline)\n\n case z.ZodFirstPartyTypeKind.ZodSymbol:\n throw new err.UnsupportedZuiToJSONSchemaError(z.ZodFirstPartyTypeKind.ZodPipeline)\n\n case z.ZodFirstPartyTypeKind.ZodReadonly:\n // ZodReadonly is not treated as a metadata root so we don't need to preserve x-zui\n return {\n ...toJSONSchema(def.innerType),\n readOnly: true,\n }\n\n case z.ZodFirstPartyTypeKind.ZodRef:\n return {\n $ref: def.uri,\n description: def.description,\n 'x-zui': def['x-zui'],\n }\n\n default:\n z.util.assertNever(def)\n }\n}\n\nconst undefinedSchema = (def?: z.ZodTypeDef): json.UndefinedSchema => ({\n not: true,\n description: def?.description,\n 'x-zui': { ...def?.['x-zui'], def: { typeName: z.ZodFirstPartyTypeKind.ZodUndefined } },\n})\n\nconst nullSchema = (def?: z.ZodTypeDef): json.NullSchema => ({\n type: 'null',\n description: def?.description,\n 'x-zui': def?.['x-zui'],\n})\n", "import type {\n BaseType,\n UIComponentDefinitions,\n ZodKindToBaseType,\n ParseSchema,\n ZuiExtensionObject,\n ZuiMetadata,\n} from '../../../ui/types'\nimport { zuiKey } from '../../../ui/constants'\nimport {\n AsyncParseReturnType,\n getParsedType,\n isAsync,\n IssueData,\n isValid,\n ParseContext,\n ParseInput,\n ParseParams,\n ParsePath,\n ParseReturnType,\n ParseStatus,\n processCreateParams,\n RefinementEffect,\n SyncParseReturnType,\n util,\n ZodArray,\n ZodBranded,\n ZodCatch,\n ZodCustomIssue,\n ZodDefault,\n ZodEffects,\n ZodError,\n ZodErrorMap,\n ZodFirstPartyTypeKind,\n ZodIntersection,\n ZodIssueCode,\n ZodNullable,\n ZodOptional,\n ZodPipeline,\n ZodPromise,\n ZodReadonly,\n ZodUnion,\n} from '../index'\nimport { CatchFn } from '../catch'\nimport { toTypescriptType, TypescriptGenerationOptions } from '../../../transforms/zui-to-typescript-type'\nimport { toTypescriptSchema } from '../../../transforms/zui-to-typescript-schema'\nimport { toJSONSchema } from '../../../transforms/zui-to-json-schema'\nimport { Schema as ZuiJSONSchema } from '../../../transforms/common/json-schema'\n\n/**\n * This type is not part of the original Zod library, it's been added in Zui to:\n * - Brand the type as a ZuiType and avoid conflicts with 'zod' types\n * - Simplify the type checks and inference for `infer`, `input`, and `output`\n *\n * The original `infer` type inference on ZodType takes a lot of compute because the TS compiler has to check all the methods and properties of the class.\n * The fact that we add __type__ here allows the TS compiler to shortcircuit the type inference when it's not present and prevents infinite circular inferences\n */\ntype __ZodType<Output = any, Input = Output> = {\n readonly __type__: 'ZuiType'\n readonly _output: Output\n readonly _input: Input\n}\n\nexport type RefinementCtx = {\n addIssue: (arg: IssueData) => void\n path: (string | number)[]\n}\nexport type ZodRawShape = { [k: string]: ZodTypeAny }\nexport type ZodTypeAny = ZodType<any, any, any>\nexport type TypeOf<T extends __ZodType> = T['_output']\nexport type OfType<O, T extends __ZodType> = T extends __ZodType<O> ? T : never\nexport type input<T extends __ZodType> = T['_input']\nexport type output<T extends __ZodType> = T['_output']\nexport type { TypeOf as infer }\nexport type Maskable<T = any> = boolean | ((shape: T | null) => util.DeepPartialBoolean<T> | boolean)\nexport type CustomErrorParams = Partial<util.Omit<ZodCustomIssue, 'code'>>\nexport interface ZodTypeDef {\n typeName: ZodFirstPartyTypeKind\n errorMap?: ZodErrorMap\n description?: string\n [zuiKey]?: ZuiExtensionObject\n}\n\nexport class ParseInputLazyPath implements ParseInput {\n parent: ParseContext\n data: any\n _path: ParsePath\n _key: string | number | (string | number)[]\n _cachedPath: ParsePath = []\n constructor(parent: ParseContext, value: any, path: ParsePath, key: string | number | (string | number)[]) {\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 (this._key instanceof Array) {\n this._cachedPath.push(...this._path, ...this._key)\n } else {\n this._cachedPath.push(...this._path, this._key)\n }\n }\n\n return this._cachedPath\n }\n}\nconst handleResult = <Input, Output>(\n ctx: ParseContext,\n result: SyncParseReturnType<Output>,\n): { success: true; data: Output } | { success: false; error: ZodError<Input> } => {\n if (isValid(result)) {\n return { success: true, data: result.value }\n } else {\n if (!ctx.common.issues.length) {\n throw new Error('Validation failed but no issues detected.')\n }\n\n return {\n success: false,\n get error() {\n if ((this as any)._error) return (this as any)._error as Error\n const error = new ZodError(ctx.common.issues)\n ;(this as any)._error = error\n return (this as any)._error\n },\n }\n }\n}\n\nexport type RawCreateParams =\n | {\n errorMap?: ZodErrorMap\n invalid_type_error?: string\n required_error?: string\n description?: string\n [zuiKey]?: ZuiExtensionObject\n }\n | undefined\nexport type ProcessedCreateParams = {\n errorMap?: ZodErrorMap\n description?: string\n [zuiKey]?: ZuiExtensionObject\n}\nexport type SafeParseSuccess<Output> = {\n success: true\n data: Output\n error?: never\n}\nexport type SafeParseError<Input> = {\n success: false\n error: ZodError<Input>\n data?: never\n}\n\nexport type SafeParseReturnType<Input, Output> = SafeParseSuccess<Output> | SafeParseError<Input>\n\nexport abstract class ZodType<Output = any, Def extends ZodTypeDef = ZodTypeDef, Input = Output>\n implements __ZodType<Output, Input>\n{\n readonly __type__ = 'ZuiType'\n readonly _type!: Output\n readonly _output!: Output\n readonly _input!: Input\n readonly _def!: Def\n\n get description() {\n return this._metadataRoot._def.description\n }\n\n abstract _parse(input: ParseInput): ParseReturnType<Output>\n\n /** deeply replace all references in the schema */\n dereference(_defs: Record<string, ZodTypeAny>): ZodTypeAny {\n return this\n }\n\n /** deeply scans the schema to check if it contains references */\n getReferences(): string[] {\n return []\n }\n\n clone(): ZodType<Output, Def, Input> {\n const This = (this as any).constructor\n return new This({\n ...this._def,\n })\n }\n\n /** checks if a schema is equal to another */\n abstract isEqual(schema: ZodType): boolean\n\n _getType(input: ParseInput): string {\n return getParsedType(input.data)\n }\n\n _getOrReturnCtx(input: ParseInput, ctx?: ParseContext | undefined): ParseContext {\n return (\n ctx || {\n common: input.parent.common,\n data: input.data,\n\n parsedType: getParsedType(input.data),\n\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n }\n )\n }\n\n _processInputParams(input: ParseInput): {\n status: ParseStatus\n ctx: ParseContext\n } {\n return {\n status: new ParseStatus(),\n ctx: {\n common: input.parent.common,\n data: input.data,\n\n parsedType: getParsedType(input.data),\n\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n },\n }\n }\n\n _parseSync(input: ParseInput): SyncParseReturnType<Output> {\n const result = this._parse(input)\n if (isAsync(result)) {\n throw new Error('Synchronous parse encountered promise.')\n }\n return result\n }\n\n _parseAsync(input: ParseInput): AsyncParseReturnType<Output> {\n const result = this._parse(input)\n return Promise.resolve(result)\n }\n\n parse(data: unknown, params?: Partial<ParseParams>): Output {\n const result = this.safeParse(data, params)\n if (result.success) return result.data\n throw result.error\n }\n\n safeParse(data: unknown, params?: Partial<ParseParams>): SafeParseReturnType<Input, Output> {\n const ctx: ParseContext = {\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\n return handleResult(ctx, result)\n }\n\n async parseAsync(data: unknown, params?: Partial<ParseParams>): Promise<Output> {\n const result = await this.safeParseAsync(data, params)\n if (result.success) return result.data\n throw result.error\n }\n\n async safeParseAsync(data: unknown, params?: Partial<ParseParams>): Promise<SafeParseReturnType<Input, Output>> {\n const ctx: ParseContext = {\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\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\n /** Alias of safeParseAsync */\n spa = this.safeParseAsync\n\n refine<RefinedOutput extends Output>(\n check: (arg: Output) => arg is RefinedOutput,\n message?: string | CustomErrorParams | ((arg: Output) => CustomErrorParams),\n ): ZodEffects<this, RefinedOutput, Input>\n refine(\n check: (arg: Output) => unknown | Promise<unknown>,\n message?: string | CustomErrorParams | ((arg: Output) => CustomErrorParams),\n ): ZodEffects<this, Output, Input>\n refine(\n check: (arg: Output) => unknown,\n message?: string | CustomErrorParams | ((arg: Output) => CustomErrorParams),\n ): ZodEffects<this, Output, Input> {\n const getIssueProperties = (val: Output) => {\n if (typeof message === 'string' || typeof message === 'undefined') {\n return { message }\n } else if (typeof message === 'function') {\n return message(val)\n } else {\n return message\n }\n }\n return this._refinement((val, ctx) => {\n const result = check(val)\n const setError = () =>\n 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 } else {\n return true\n }\n })\n }\n if (!result) {\n setError()\n return false\n } else {\n return true\n }\n })\n }\n\n refinement<RefinedOutput extends Output>(\n check: (arg: Output) => arg is RefinedOutput,\n refinementData: IssueData | ((arg: Output, ctx: RefinementCtx) => IssueData),\n ): ZodEffects<this, RefinedOutput, Input>\n refinement(\n check: (arg: Output) => boolean,\n refinementData: IssueData | ((arg: Output, ctx: RefinementCtx) => IssueData),\n ): ZodEffects<this, Output, Input>\n refinement(\n check: (arg: Output) => unknown,\n refinementData: IssueData | ((arg: Output, ctx: RefinementCtx) => IssueData),\n ): ZodEffects<this, Output, Input> {\n return this._refinement((val, ctx) => {\n if (!check(val)) {\n ctx.addIssue(typeof refinementData === 'function' ? refinementData(val, ctx) : refinementData)\n return false\n } else {\n return true\n }\n })\n }\n\n _refinement(refinement: RefinementEffect<Output>['refinement']): ZodEffects<this, Output, Input> {\n return new ZodEffects({\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: 'refinement', refinement },\n })\n }\n\n superRefine<RefinedOutput extends Output>(\n refinement: (arg: Output, ctx: RefinementCtx) => arg is RefinedOutput,\n ): ZodEffects<this, RefinedOutput, Input>\n superRefine(refinement: (arg: Output, ctx: RefinementCtx) => void): ZodEffects<this, Output, Input>\n superRefine(refinement: (arg: Output, ctx: RefinementCtx) => Promise<void>): ZodEffects<this, Output, Input>\n superRefine(\n refinement: (arg: Output, ctx: RefinementCtx) => unknown | Promise<unknown>,\n ): ZodEffects<this, Output, Input> {\n return this._refinement(refinement)\n }\n\n constructor(def: Def) {\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 }\n\n optional(): ZodOptional<this> {\n return ZodOptional.create(this, this._def)\n }\n nullable(): ZodNullable<this> {\n return ZodNullable.create(this, this._def)\n }\n nullish(): ZodOptional<ZodNullable<this>> {\n return this.nullable().optional()\n }\n array(): ZodArray<this> {\n return ZodArray.create(this, this._def)\n }\n promise(): ZodPromise<this> {\n return ZodPromise.create(this, this._def)\n }\n /**\n * # \\#\\#\\# Experimental \\#\\#\\#\n *\n * @experimental This function is experimental and is subject to breaking changes in the future.\n *\n * Would have been named `required` but a method with that name already exists in ZodObject.\n * Makes the schema required; i.e. not optional or undefined. If the schema is already required than it returns itself.\n * Null is not considered optional and remains unchanged.\n *\n * @example z.string().optional().mandatory() // z.string()\n * @example z.string().nullable().mandatory() // z.string().nullable()\n * @example z.string().or(z.undefined()).mandatory() // z.string()\n * @example z.union([z.string(), z.number(), z.undefined()]).mandatory() // z.union([z.string(), z.number()])\n */\n mandatory(): ZodType {\n return this\n }\n\n or<T extends ZodTypeAny>(option: T): ZodUnion<[this, T]> {\n return ZodUnion.create([this, option], this._def)\n }\n\n and<T extends ZodTypeAny>(incoming: T): ZodIntersection<this, T> {\n return ZodIntersection.create(this, incoming, this._def)\n }\n\n transform<NewOut>(\n transform: (arg: Output, ctx: RefinementCtx) => NewOut | Promise<NewOut>,\n ): ZodEffects<this, NewOut> {\n return new ZodEffects({\n ...processCreateParams(this._def),\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: 'transform', transform },\n })\n }\n\n default(def: util.noUndefined<Input>): ZodDefault<this>\n default(def: () => util.noUndefined<Input>): ZodDefault<this>\n default(def: any) {\n const defaultValueFunc = typeof def === 'function' ? def : () => def\n\n return new ZodDefault({\n ...processCreateParams(this._def),\n innerType: this,\n defaultValue: defaultValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n })\n }\n\n brand<B extends string | number | symbol>(brand?: B): ZodBranded<this, B>\n brand<B extends string | number | symbol>(): ZodBranded<this, B> {\n return new ZodBranded({\n typeName: ZodFirstPartyTypeKind.ZodBranded,\n type: this,\n ...processCreateParams(this._def),\n })\n }\n\n catch(def: Output | CatchFn<Output>) {\n const catchValueFunc = typeof def === 'function' ? (def as CatchFn<Output>) : () => def\n\n return new ZodCatch({\n ...processCreateParams(this._def),\n innerType: this,\n catchValue: catchValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n })\n }\n\n describe(description: string): this {\n const clone = this.clone() as this\n clone._metadataRoot._def.description = description\n return clone\n }\n\n pipe<T extends ZodTypeAny>(target: T): ZodPipeline<this, T> {\n return ZodPipeline.create(this, target)\n }\n\n readonly(): ZodReadonly<this> {\n return ZodReadonly.create(this)\n }\n\n isOptional(): boolean {\n return this.safeParse(undefined).success\n }\n\n isNullable(): boolean {\n return this.safeParse(null).success\n }\n\n // BOTPRESS EXTENSIONS\n\n /** append metadata to the schema */\n metadata(data: Record<string, ZuiMetadata>): this {\n const clone = this.clone() as this\n const root = clone._metadataRoot\n root._def[zuiKey] ??= {}\n for (const [key, value] of Object.entries(data)) {\n root._def[zuiKey] = {\n ...root._def[zuiKey],\n [key]: value,\n }\n }\n return clone\n }\n\n /** get metadata of the schema */\n getMetadata(): Record<string, ZuiMetadata> {\n return { ...this._metadataRoot._def[zuiKey] }\n }\n\n /** set metadata of the schema */\n setMetadata(data: Record<string, ZuiMetadata>): void {\n this._metadataRoot._def[zuiKey] = { ...data }\n }\n\n /**\n * get metadata of the schema\n * @deprecated use `getMetadata()` instead\n */\n get ui(): Record<string, ZuiMetadata> {\n return { ...this._metadataRoot._def[zuiKey] }\n }\n\n /**\n * Some Schemas aren't meant to contain metadata, like ZodDefault.\n * In a zui construction like `z.string().default('hello').title('Hello')`, the user's intention is usually to set a title on the string, not on the default value.\n * Also, in JSON-Schema, default is not a data-type like it is in Zui, but an annotation added on the schema itself. Therefore, only one metadata can apply to both the schema and the default value.\n * This property is used to get the root schema that should contain the metadata.\n */\n get _metadataRoot(): ZodType {\n return this.naked()\n }\n\n /**\n * The type of component to use to display the field and its options\n */\n displayAs<\n UI extends UIComponentDefinitions = UIComponentDefinitions,\n Type extends BaseType = ZodKindToBaseType<this['_def']>,\n >(options: ParseSchema<UI[Type][keyof UI[Type]]>): this {\n return this.metadata({ displayAs: [options.id, options.params] })\n }\n\n /**\n * The title of the field. Defaults to the field name.\n */\n title(title: string): this {\n return this.metadata({ title })\n }\n\n /**\n * Whether the field is hidden in the UI. Useful for internal fields.\n * @default false\n */\n hidden<T extends any = this['_output']>(\n value?: boolean | ((shape: T | null) => util.DeepPartialBoolean<T> | boolean),\n ): this {\n let data: ZuiMetadata\n if (value === undefined) {\n data = true\n } else if (typeof value === 'function') {\n data = value.toString()\n } else {\n data = value\n }\n return this.metadata({ hidden: data })\n }\n\n /**\n * Whether the field is disabled\n * @default false\n */\n disabled<T extends any = this['_output']>(\n value?: boolean | ((shape: T | null) => util.DeepPartialBoolean<T> | boolean),\n ): this {\n let data: ZuiMetadata\n if (value === undefined) {\n data = true\n } else if (typeof value === 'function') {\n data = value.toString()\n } else {\n data = value\n }\n return this.metadata({ disabled: data })\n }\n\n /**\n * Placeholder text for the field\n */\n placeholder(placeholder: string): this {\n return this.metadata({ placeholder })\n }\n\n /**\n *\n * @returns a JSON Schema equivalent to the Zui schema\n */\n toJSONSchema(): ZuiJSONSchema {\n return toJSONSchema(this)\n }\n\n /**\n *\n * @param options generation options\n * @returns a string of the TypeScript type representing the schema\n */\n toTypescriptType(opts?: TypescriptGenerationOptions): string {\n return toTypescriptType(this, opts)\n }\n\n /**\n *\n * @param options generation options\n * @returns a typescript program (a string) that would construct the given schema if executed\n */\n toTypescriptSchema(): string {\n return toTypescriptSchema(this)\n }\n\n /**\n * Allows removing all wrappers around the schema\n * @returns either this or the closest children schema that represents the actual data\n */\n naked(): ZodTypeAny {\n return this\n }\n}\n", "import type {\n ZodAnyDef,\n ZodArrayDef,\n ZodBigIntDef,\n ZodBooleanDef,\n ZodBrandedDef,\n ZodCatchDef,\n ZodDateDef,\n ZodDefaultDef,\n ZodDiscriminatedUnionDef,\n ZodEnumDef,\n ZodFunctionDef,\n ZodIntersectionDef,\n ZodLazyDef,\n ZodLiteralDef,\n ZodMapDef,\n ZodNativeEnumDef,\n ZodNeverDef,\n ZodNullDef,\n ZodNullableDef,\n ZodNumberDef,\n ZodObjectDef,\n ZodOptionalDef,\n ZodPipelineDef,\n ZodPromiseDef,\n ZodReadonlyDef,\n ZodRecordDef,\n ZodStringDef,\n ZodEffectsDef,\n ZodTupleDef,\n ZodUndefinedDef,\n ZodUnionDef,\n ZodUnknownDef,\n ZodVoidDef,\n ZodRefDef,\n ZodSetDef,\n} from './index'\n\nexport type ZodDef =\n | ZodStringDef\n | ZodNumberDef\n | ZodBigIntDef\n | ZodBooleanDef\n | ZodDateDef\n | ZodUndefinedDef\n | ZodNullDef\n | ZodDefaultDef // contains functions\n | ZodCatchDef // contains functions\n | ZodReadonlyDef\n | ZodDiscriminatedUnionDef\n | ZodBrandedDef\n | ZodPipelineDef\n | ZodAnyDef\n | ZodUnknownDef\n | ZodNeverDef\n | ZodVoidDef\n | ZodArrayDef\n | ZodObjectDef // contains functions\n | ZodUnionDef\n | ZodIntersectionDef\n | ZodTupleDef\n | ZodRecordDef\n | ZodMapDef\n | ZodFunctionDef\n | ZodLazyDef // contains functions\n | ZodLiteralDef\n | ZodEnumDef\n | ZodEffectsDef // contains functions\n | ZodNativeEnumDef\n | ZodOptionalDef\n | ZodNullableDef\n | ZodPromiseDef\n | ZodRefDef\n | ZodSetDef\n\nexport enum ZodFirstPartyTypeKind {\n ZodString = 'ZodString',\n ZodNumber = 'ZodNumber',\n ZodNaN = 'ZodNaN',\n ZodBigInt = 'ZodBigInt',\n ZodBoolean = 'ZodBoolean',\n ZodDate = 'ZodDate',\n ZodSymbol = 'ZodSymbol',\n ZodUndefined = 'ZodUndefined',\n ZodNull = 'ZodNull',\n ZodAny = 'ZodAny',\n ZodUnknown = 'ZodUnknown',\n ZodNever = 'ZodNever',\n ZodVoid = 'ZodVoid',\n ZodArray = 'ZodArray',\n ZodObject = 'ZodObject',\n ZodUnion = 'ZodUnion',\n ZodDiscriminatedUnion = 'ZodDiscriminatedUnion',\n ZodIntersection = 'ZodIntersection',\n ZodTuple = 'ZodTuple',\n ZodRecord = 'ZodRecord',\n ZodRef = 'ZodRef',\n ZodMap = 'ZodMap',\n ZodSet = 'ZodSet',\n ZodFunction = 'ZodFunction',\n ZodLazy = 'ZodLazy',\n ZodLiteral = 'ZodLiteral',\n ZodEnum = 'ZodEnum',\n ZodEffects = 'ZodEffects',\n ZodNativeEnum = 'ZodNativeEnum',\n ZodOptional = 'ZodOptional',\n ZodNullable = 'ZodNullable',\n ZodDefault = 'ZodDefault',\n ZodCatch = 'ZodCatch',\n ZodPromise = 'ZodPromise',\n ZodBranded = 'ZodBranded',\n ZodPipeline = 'ZodPipeline',\n ZodReadonly = 'ZodReadonly',\n}\n\nexport type KindToDef<T extends ZodFirstPartyTypeKind> = T extends ZodFirstPartyTypeKind.ZodString\n ? ZodStringDef\n : T extends ZodFirstPartyTypeKind.ZodNumber\n ? ZodNumberDef\n : T extends ZodFirstPartyTypeKind.ZodBigInt\n ? ZodBigIntDef\n : T extends ZodFirstPartyTypeKind.ZodBoolean\n ? ZodBooleanDef\n : T extends ZodFirstPartyTypeKind.ZodDate\n ? ZodDateDef\n : T extends ZodFirstPartyTypeKind.ZodUndefined\n ? ZodUndefinedDef\n : T extends ZodFirstPartyTypeKind.ZodNull\n ? ZodNullDef\n : T extends ZodFirstPartyTypeKind.ZodAny\n ? ZodAnyDef\n : T extends ZodFirstPartyTypeKind.ZodUnknown\n ? ZodUnknownDef\n : T extends ZodFirstPartyTypeKind.ZodNever\n ? ZodNeverDef\n : T extends ZodFirstPartyTypeKind.ZodVoid\n ? ZodVoidDef\n : T extends ZodFirstPartyTypeKind.ZodArray\n ? ZodArrayDef\n : T extends ZodFirstPartyTypeKind.ZodObject\n ? ZodObjectDef\n : T extends ZodFirstPartyTypeKind.ZodUnion\n ? ZodUnionDef\n : T extends ZodFirstPartyTypeKind.ZodIntersection\n ? ZodIntersectionDef\n : T extends ZodFirstPartyTypeKind.ZodTuple\n ? ZodTupleDef\n : T extends ZodFirstPartyTypeKind.ZodRecord\n ? ZodRecordDef\n : T extends ZodFirstPartyTypeKind.ZodMap\n ? ZodMapDef\n : T extends ZodFirstPartyTypeKind.ZodFunction\n ? ZodFunctionDef\n : T extends ZodFirstPartyTypeKind.ZodLazy\n ? ZodLazyDef\n : T extends ZodFirstPartyTypeKind.ZodLiteral\n ? ZodLiteralDef\n : T extends ZodFirstPartyTypeKind.ZodEnum\n ? ZodEnumDef\n : T extends ZodFirstPartyTypeKind.ZodEffects\n ? ZodEffectsDef\n : T extends ZodFirstPartyTypeKind.ZodNativeEnum\n ? ZodNativeEnumDef\n : T extends ZodFirstPartyTypeKind.ZodOptional\n ? ZodOptionalDef\n : T extends ZodFirstPartyTypeKind.ZodNullable\n ? ZodNullableDef\n : T extends ZodFirstPartyTypeKind.ZodPromise\n ? ZodPromiseDef\n : T extends ZodFirstPartyTypeKind.ZodDiscriminatedUnion\n ? ZodDiscriminatedUnionDef<any>\n : T extends ZodFirstPartyTypeKind.ZodCatch\n ? ZodCatchDef\n : T extends ZodFirstPartyTypeKind.ZodDefault\n ? ZodDefaultDef\n : T extends ZodFirstPartyTypeKind.ZodBranded\n ? ZodBrandedDef<any>\n : T extends ZodFirstPartyTypeKind.ZodPipeline\n ? ZodPipelineDef<any, any>\n : T extends ZodFirstPartyTypeKind.ZodReadonly\n ? ZodReadonlyDef\n : never\n", "import { zuiKey } from '../../../ui/constants'\nimport type { ZodErrorMap } from '../error'\nimport type { ProcessedCreateParams, RawCreateParams } from '../index'\n\nexport namespace util {\n export type IsEqual<T, U> = (<V>() => V extends T ? 1 : 2) extends <V>() => V extends U ? 1 : 2 ? true : false\n\n export type isAny<T> = 0 extends 1 & T ? true : false\n export const assertEqual = <A, B>(val: IsEqual<A, B>) => val\n export function assertIs<T>(_arg: T): void {}\n export function assertNever(_x: never): never {\n throw new Error('assertNever called')\n }\n\n export type AssertNever<_T extends never> = true\n export type AssertTrue<_T extends true> = true\n\n export type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>\n export type OmitKeys<T, K extends string> = Pick<T, Exclude<keyof T, K>>\n export type MakePartial<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>\n export type DeepPartialBoolean<T> = {\n [K in keyof T]?: T[K] extends object ? DeepPartialBoolean<T[K]> | boolean : boolean\n }\n\n export const arrayToEnum = <T extends string, U extends [T, ...T[]]>(items: U): { [k in U[number]]: k } => {\n const obj: { [k in U[number]]?: k } = {}\n for (const item of items) {\n obj[item] = item\n }\n return obj as { [k in U[number]]: k }\n }\n\n export const getValidEnumValues = (obj: any) => {\n const validKeys = objectKeys(obj).filter((k: any) => typeof obj[obj[k]] !== 'number')\n const filtered: any = {}\n for (const k of validKeys) {\n filtered[k] = obj[k]\n }\n return objectValues(filtered)\n }\n\n export const objectValues = (obj: any) => {\n return objectKeys(obj).map(function (e) {\n return obj[e]\n })\n }\n\n export const objectKeys: ObjectConstructor['keys'] =\n typeof Object.keys === 'function' // eslint-disable-line ban/ban\n ? (obj: any) => Object.keys(obj) // eslint-disable-line ban/ban\n : (object: any) => {\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\n export const find = <T>(arr: T[], checker: (arg: T) => any): T | undefined => {\n for (const item of arr) {\n if (checker(item)) return item\n }\n return undefined\n }\n\n export type identity<T> = objectUtil.identity<T>\n export type flatten<T> = objectUtil.flatten<T>\n\n export type noUndefined<T> = T extends undefined ? never : T\n\n export const isInteger: NumberConstructor['isInteger'] =\n typeof Number.isInteger === 'function'\n ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n : (val) => typeof val === 'number' && isFinite(val) && Math.floor(val) === val\n\n export function joinValues<T extends any[]>(array: T, separator = ' | '): string {\n return array.map((val) => (typeof val === 'string' ? `'${val}'` : val)).join(separator)\n }\n\n export const jsonStringifyReplacer = (_: string, value: any): any => {\n if (typeof value === 'bigint') {\n return value.toString()\n }\n return value\n }\n\n export const compareFunctions = (a: Function, b: Function) => {\n /**\n * The only proper way to deeply compare functions would be to ensure they return the same value for the same input.\n * This is impossible to do unless the domain of the function is known and the function is pure.\n *\n * Comparing source code is not ideal since 2 function could be equivalent but have different source code,\n * but that's our best option.\n */\n return a.toString() === b.toString()\n }\n\n export const mock = <T>(): T => ({}) as T\n\n export type Satisfies<X extends Y, Y> = X\n\n type NormalizeObject<T extends object> = T extends infer O ? { [K in keyof O]: Normalize<O[K]> } : never\n export type Normalize<T> = T extends (...args: infer A) => infer R\n ? (...args: Normalize<A>) => Normalize<R>\n : T extends Array<infer E>\n ? Array<Normalize<E>>\n : T extends ReadonlyArray<infer E>\n ? ReadonlyArray<Normalize<E>>\n : T extends Promise<infer R>\n ? Promise<Normalize<R>>\n : T extends Buffer\n ? Buffer\n : T extends object\n ? NormalizeObject<T>\n : T\n}\n\nexport namespace objectUtil {\n export type MergeShapes<U, V> = {\n [k in Exclude<keyof U, keyof V>]: U[k]\n } & V\n\n type optionalKeys<T extends object> = {\n [k in keyof T]: undefined extends T[k] ? k : never\n }[keyof T]\n\n type requiredKeys<T extends object> = {\n [k in keyof T]: undefined extends T[k] ? never : k\n }[keyof T]\n\n export type addQuestionMarks<\n T extends object,\n R extends keyof T = requiredKeys<T>,\n O extends keyof T = optionalKeys<T>,\n > = Pick<T, R> & Partial<Pick<T, O>> & { [k in keyof T]?: unknown }\n\n export type identity<T> = T\n export type flatten<T> = identity<{ [k in keyof T]: T[k] }>\n\n export type noNeverKeys<T> = {\n [k in keyof T]: [T[k]] extends [never] ? never : k\n }[keyof T]\n\n export type noNever<T> = identity<{\n [k in noNeverKeys<T>]: k extends keyof T ? T[k] : never\n }>\n\n export const mergeShapes = <U, T>(first: U, second: T): T & U => {\n return {\n ...first,\n ...second, // second overwrites first\n }\n }\n\n export type extendShape<A, B> = flatten<Omit<A, keyof B> & B>\n}\n\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])\n\nexport type ZodParsedType = keyof typeof ZodParsedType\n\nexport const getParsedType = (data: any): ZodParsedType => {\n const t = typeof data\n\n switch (t) {\n case 'undefined':\n return ZodParsedType.undefined\n\n case 'string':\n return ZodParsedType.string\n\n case 'number':\n return isNaN(data) ? ZodParsedType.nan : ZodParsedType.number\n\n case 'boolean':\n return ZodParsedType.boolean\n\n case 'function':\n return ZodParsedType.function\n\n case 'bigint':\n return ZodParsedType.bigint\n\n case 'symbol':\n return ZodParsedType.symbol\n\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\n default:\n return ZodParsedType.unknown\n }\n}\n\nexport function processCreateParams(\n params: RawCreateParams & ({ supportsExtensions?: 'secret'[] } | undefined),\n): ProcessedCreateParams {\n if (!params) return {}\n\n const {\n errorMap,\n invalid_type_error,\n required_error,\n description,\n supportsExtensions,\n [zuiKey]: zuiExtensions,\n } = params\n\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\n const filteredZuiExtensions = zuiExtensions\n ? Object.fromEntries(\n Object.entries(zuiExtensions).filter(([key]) => key !== 'secret' || supportsExtensions?.includes('secret')),\n )\n : undefined\n\n if (errorMap) return { errorMap: errorMap, description, [zuiKey]: filteredZuiExtensions }\n\n const customMap: ZodErrorMap = (iss, ctx) => {\n if (iss.code !== 'invalid_type') return { message: ctx.defaultError }\n if (typeof ctx.data === 'undefined') {\n return { message: required_error ?? ctx.defaultError }\n }\n return { message: invalid_type_error ?? ctx.defaultError }\n }\n return { errorMap: customMap, description, [zuiKey]: filteredZuiExtensions }\n}\n", "import { type ZodErrorMap, util, ZodIssueCode, ZodParsedType } from '../../index'\n\nexport const errorMap: ZodErrorMap = (issue, _ctx) => {\n let message: string\n switch (issue.code) {\n case ZodIssueCode.invalid_type:\n if (issue.received === ZodParsedType.undefined) {\n message = 'Required'\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\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 } else if ('startsWith' in issue.validation) {\n message = `Invalid input: must start with \"${issue.validation.startsWith}\"`\n } else if ('endsWith' in issue.validation) {\n message = `Invalid input: must end with \"${issue.validation.endsWith}\"`\n } else {\n util.assertNever(issue.validation)\n }\n } else if (issue.validation !== 'regex') {\n message = `Invalid ${issue.validation}`\n } else {\n message = 'Invalid'\n }\n break\n case ZodIssueCode.too_small:\n if (issue.type === 'array')\n message = `Array must contain ${\n issue.exact ? 'exactly' : issue.inclusive ? `at least` : `more than`\n } ${issue.minimum} element(s)`\n else if (issue.type === 'string')\n message = `String must contain ${\n issue.exact ? 'exactly' : issue.inclusive ? `at least` : `over`\n } ${issue.minimum} character(s)`\n else if (issue.type === 'number')\n message = `Number must be ${\n issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `\n }${issue.minimum}`\n else if (issue.type === 'date')\n message = `Date must be ${\n issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `\n }${new Date(Number(issue.minimum))}`\n else message = 'Invalid input'\n break\n case ZodIssueCode.too_big:\n if (issue.type === 'array')\n message = `Array must contain ${\n issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`\n } ${issue.maximum} element(s)`\n else if (issue.type === 'string')\n message = `String must contain ${\n issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`\n } ${issue.maximum} character(s)`\n else if (issue.type === 'number')\n message = `Number must be ${\n issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`\n } ${issue.maximum}`\n else if (issue.type === 'bigint')\n message = `BigInt must be ${\n issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`\n } ${issue.maximum}`\n else if (issue.type === 'date')\n message = `Date must be ${\n issue.exact ? `exactly` : issue.inclusive ? `smaller than or equal to` : `smaller than`\n } ${new Date(Number(issue.maximum))}`\n else 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 case ZodIssueCode.unresolved_reference:\n message = 'Unresolved reference'\n break\n default:\n message = _ctx.defaultError\n util.assertNever(issue)\n }\n return { message }\n}\n\nexport default errorMap\n", "import { errorMap as defaultErrorMap } from './locales/en'\nimport { TypeOf, ZodType, ZodParsedType, util, Primitive } from '../index'\n\ntype allKeys<T> = T extends any ? keyof T : never\n\nexport type inferFlattenedErrors<T extends ZodType<any, any, any>, U = string> = typeToFlattenedError<TypeOf<T>, U>\nexport type typeToFlattenedError<T, U = string> = {\n formErrors: U[]\n fieldErrors: {\n [P in allKeys<T>]?: U[]\n }\n}\n\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 'unresolved_reference',\n])\n\nexport type ZodIssueCode = keyof typeof ZodIssueCode\n\nexport type ZodIssueBase = {\n path: (string | number)[]\n message?: string\n}\n\nexport interface ZodInvalidTypeIssue extends ZodIssueBase {\n code: typeof ZodIssueCode.invalid_type\n expected: ZodParsedType\n received: ZodParsedType\n}\n\nexport interface ZodInvalidLiteralIssue extends ZodIssueBase {\n code: typeof ZodIssueCode.invalid_literal\n expected: unknown\n received: unknown\n}\n\nexport interface ZodUnrecognizedKeysIssue extends ZodIssueBase {\n code: typeof ZodIssueCode.unrecognized_keys\n keys: string[]\n}\n\nexport interface ZodInvalidUnionIssue extends ZodIssueBase {\n code: typeof ZodIssueCode.invalid_union\n unionErrors: ZodError[]\n}\n\nexport interface ZodInvalidUnionDiscriminatorIssue extends ZodIssueBase {\n code: typeof ZodIssueCode.invalid_union_discriminator\n options: Primitive[]\n}\n\nexport interface ZodInvalidEnumValueIssue extends ZodIssueBase {\n received: string | number\n code: typeof ZodIssueCode.invalid_enum_value\n options: (string | number)[]\n}\n\nexport interface ZodInvalidArgumentsIssue extends ZodIssueBase {\n code: typeof ZodIssueCode.invalid_arguments\n argumentsError: ZodError\n}\n\nexport interface ZodInvalidReturnTypeIssue extends ZodIssueBase {\n code: typeof ZodIssueCode.invalid_return_type\n returnTypeError: ZodError\n}\n\nexport interface ZodInvalidDateIssue extends ZodIssueBase {\n code: typeof ZodIssueCode.invalid_date\n}\n\nexport type StringValidation =\n | 'email'\n | 'url'\n | 'emoji'\n | 'uuid'\n | 'regex'\n | 'cuid'\n | 'cuid2'\n | 'ulid'\n | 'datetime'\n | 'ip'\n | { includes: string; position?: number }\n | { startsWith: string }\n | { endsWith: string }\n\nexport interface ZodInvalidStringIssue extends ZodIssueBase {\n code: typeof ZodIssueCode.invalid_string\n validation: StringValidation\n}\n\nexport interface ZodTooSmallIssue extends ZodIssueBase {\n code: typeof ZodIssueCode.too_small\n minimum: number | bigint\n inclusive: boolean\n exact?: boolean\n type: 'array' | 'string' | 'number' | 'set' | 'date' | 'bigint'\n}\n\nexport interface ZodTooBigIssue extends ZodIssueBase {\n code: typeof ZodIssueCode.too_big\n maximum: number | bigint\n inclusive: boolean\n exact?: boolean\n type: 'array' | 'string' | 'number' | 'set' | 'date' | 'bigint'\n}\n\nexport interface ZodInvalidIntersectionTypesIssue extends ZodIssueBase {\n code: typeof ZodIssueCode.invalid_intersection_types\n}\n\nexport interface ZodNotMultipleOfIssue extends ZodIssueBase {\n code: typeof ZodIssueCode.not_multiple_of\n multipleOf: number | bigint\n}\n\nexport interface ZodNotFiniteIssue extends ZodIssueBase {\n code: typeof ZodIssueCode.not_finite\n}\n\nexport interface ZodUnresolvedReferenceIssue extends ZodIssueBase {\n code: typeof ZodIssueCode.unresolved_reference\n}\n\nexport interface ZodCustomIssue extends ZodIssueBase {\n code: typeof ZodIssueCode.custom\n params?: { [k: string]: any }\n}\n\nexport type DenormalizedError = { [k: string]: DenormalizedError | string[] }\n\nexport type ZodIssueOptionalMessage =\n | ZodInvalidTypeIssue\n | ZodInvalidLiteralIssue\n | ZodUnrecognizedKeysIssue\n | ZodInvalidUnionIssue\n | ZodInvalidUnionDiscriminatorIssue\n | ZodInvalidEnumValueIssue\n | ZodInvalidArgumentsIssue\n | ZodInvalidReturnTypeIssue\n | ZodInvalidDateIssue\n | ZodInvalidStringIssue\n | ZodTooSmallIssue\n | ZodTooBigIssue\n | ZodInvalidIntersectionTypesIssue\n | ZodNotMultipleOfIssue\n | ZodNotFiniteIssue\n | ZodUnresolvedReferenceIssue\n | ZodCustomIssue\n\nexport type ZodIssue = ZodIssueOptionalMessage & {\n fatal?: boolean\n message: string\n}\n\nexport const quotelessJson = (obj: any) => {\n const json = JSON.stringify(obj, null, 2)\n return json.replace(/\"([^\"]+)\":/g, '$1:')\n}\n\ntype recursiveZodFormattedError<T> = T extends [any, ...any[]]\n ? { [K in keyof T]?: ZodFormattedError<T[K]> }\n : T extends any[]\n ? { [k: number]: ZodFormattedError<T[number]> }\n : T extends object\n ? { [K in keyof T]?: ZodFormattedError<T[K]> }\n : unknown\n\nexport type ZodFormattedError<T, U = string> = {\n _errors: U[]\n} & recursiveZodFormattedError<NonNullable<T>>\n\nexport type inferFormattedError<T extends ZodType<any, any, any>, U = string> = ZodFormattedError<TypeOf<T>, U>\n\nexport class ZodError<T = any> extends Error {\n issues: ZodIssue[] = []\n\n get errors() {\n return this.issues\n }\n\n constructor(issues: ZodIssue[]) {\n super()\n\n const actualProto = new.target.prototype\n if (Object.setPrototypeOf) {\n // eslint-disable-next-line ban/ban\n Object.setPrototypeOf(this, actualProto)\n } else {\n ;(this as any).__proto__ = actualProto\n }\n this.name = 'ZodError'\n this.issues = issues\n }\n\n format(): ZodFormattedError<T>\n format<U>(mapper: (issue: ZodIssue) => U): ZodFormattedError<T, U>\n format(_mapper?: any) {\n const mapper: (issue: ZodIssue) => any =\n _mapper ||\n function (issue: ZodIssue) {\n return issue.message\n }\n const fieldErrors = { _errors: [] } as ZodFormattedError<T>\n const processError = (error: ZodError) => {\n for (const issue of error.issues) {\n if (issue.code === 'invalid_union') {\n issue.unionErrors.map(processError)\n } else if (issue.code === 'invalid_return_type') {\n processError(issue.returnTypeError)\n } else if (issue.code === 'invalid_arguments') {\n processError(issue.argumentsError)\n } else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue))\n } else {\n let curr: any = 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\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 } else {\n curr[el] = curr[el] || { _errors: [] }\n curr[el]._errors.push(mapper(issue))\n }\n\n curr = curr[el]\n i++\n }\n }\n }\n }\n\n processError(this)\n return fieldErrors\n }\n\n static create = (issues: ZodIssue[]) => {\n const error = new ZodError(issues)\n return error\n }\n\n static assert(value: unknown): asserts value is ZodError {\n if (!(value instanceof ZodError)) {\n throw new Error(`Not a ZodError: ${value}`)\n }\n }\n\n toString() {\n return this.message\n }\n get message() {\n return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2)\n }\n\n get isEmpty(): boolean {\n return this.issues.length === 0\n }\n\n addIssue = (sub: ZodIssue) => {\n this.issues = [...this.issues, sub]\n }\n\n addIssues = (subs: ZodIssue[] = []) => {\n this.issues = [...this.issues, ...subs]\n }\n\n flatten(): typeToFlattenedError<T>\n flatten<U>(mapper?: (issue: ZodIssue) => U): typeToFlattenedError<T, U>\n flatten<U = string>(mapper: (issue: ZodIssue) => U = (issue: ZodIssue) => issue.message as U): any {\n const fieldErrors: any = {}\n const formErrors: U[] = []\n for (const sub of this.issues) {\n if (sub.path.length > 0) {\n fieldErrors[sub.path[0]!] = fieldErrors[sub.path[0]!] || []\n fieldErrors[sub.path[0]!].push(mapper(sub))\n } else {\n formErrors.push(mapper(sub))\n }\n }\n return { formErrors, fieldErrors }\n }\n\n get formErrors() {\n return this.flatten()\n }\n}\n\ntype stripPath<T extends object> = T extends any ? util.OmitKeys<T, 'path'> : never\n\nexport type IssueData = stripPath<ZodIssueOptionalMessage> & {\n path?: (string | number)[]\n fatal?: boolean\n}\n\nexport type ErrorMapCtx = {\n defaultError: string\n data: any\n}\n\nexport type ZodErrorMap = (issue: ZodIssueOptionalMessage, _ctx: ErrorMapCtx) => { message: string }\n\nlet overrideErrorMap = defaultErrorMap\nexport { defaultErrorMap }\n\nexport function setErrorMap(map: ZodErrorMap) {\n overrideErrorMap = map\n}\n\nexport function getErrorMap() {\n return overrideErrorMap\n}\n", "import { IssueData, ZodErrorMap, ZodIssue, defaultErrorMap, getErrorMap } from '../error'\nimport type { ZodParsedType } from '.'\n\nexport const makeIssue = (params: {\n data: any\n path: (string | number)[]\n errorMaps: ZodErrorMap[]\n issueData: IssueData\n}): ZodIssue => {\n const { data, path, errorMaps, issueData } = params\n const fullPath = [...path, ...(issueData.path || [])]\n const fullIssue = {\n ...issueData,\n path: fullPath,\n }\n\n let errorMessage = ''\n const maps = errorMaps\n .filter((m) => !!m)\n .slice()\n .reverse() as ZodErrorMap[]\n for (const map of maps) {\n errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message\n }\n\n return {\n ...issueData,\n path: fullPath,\n message: issueData.message ?? errorMessage,\n }\n}\n\nexport type ParseParams = {\n path: (string | number)[]\n errorMap: ZodErrorMap\n async: boolean\n}\n\nexport type ParsePathComponent = string | number\nexport type ParsePath = ParsePathComponent[]\nexport const EMPTY_PATH: ParsePath = []\n\nexport interface ParseContext {\n readonly common: {\n readonly issues: ZodIssue[]\n readonly contextualErrorMap?: ZodErrorMap\n readonly async: boolean\n }\n readonly path: ParsePath\n readonly schemaErrorMap?: ZodErrorMap\n readonly parent: ParseContext | null\n readonly data: any\n readonly parsedType: ZodParsedType\n}\n\nexport type ParseInput = {\n data: any\n path: (string | number)[]\n parent: ParseContext\n}\n\nexport function addIssueToContext(ctx: ParseContext, issueData: IssueData): void {\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 getErrorMap(), // then global override map\n defaultErrorMap, // then global default map\n ].filter((x) => !!x) as ZodErrorMap[],\n })\n ctx.common.issues.push(issue)\n}\n\nexport type ObjectPair = {\n key: SyncParseReturnType<any>\n value: SyncParseReturnType<any>\n}\nexport class ParseStatus {\n value: 'aborted' | 'dirty' | 'valid' = 'valid'\n dirty() {\n if (this.value === 'valid') this.value = 'dirty'\n }\n abort() {\n if (this.value !== 'aborted') this.value = 'aborted'\n }\n\n static mergeArray(status: ParseStatus, results: SyncParseReturnType<any>[]): SyncParseReturnType {\n const arrayValue: any[] = []\n for (const s of results) {\n if (s.status === 'aborted') return INVALID\n if (s.status === 'dirty') status.dirty()\n arrayValue.push(s.value)\n }\n\n return { status: status.value, value: arrayValue }\n }\n\n static async mergeObjectAsync(\n status: ParseStatus,\n pairs: { key: ParseReturnType<any>; value: ParseReturnType<any> }[],\n ): Promise<SyncParseReturnType<any>> {\n const syncPairs: ObjectPair[] = []\n for (const pair of pairs) {\n syncPairs.push({\n key: await pair.key,\n value: await pair.value,\n })\n }\n return ParseStatus.mergeObjectSync(status, syncPairs)\n }\n\n static mergeObjectSync(\n status: ParseStatus,\n pairs: {\n key: SyncParseReturnType<any>\n value: SyncParseReturnType<any>\n alwaysSet?: boolean\n }[],\n ): SyncParseReturnType {\n const finalObject: any = {}\n for (const pair of pairs) {\n const { key, value } = pair\n if (key.status === 'aborted') return INVALID\n if (value.status === 'aborted') return INVALID\n if (key.status === 'dirty') status.dirty()\n if (value.status === 'dirty') status.dirty()\n\n if (key.value !== '__proto__' && (typeof value.value !== 'undefined' || pair.alwaysSet)) {\n finalObject[key.value] = value.value\n }\n }\n\n return { status: status.value, value: finalObject }\n }\n}\nexport interface ParseResult {\n status: 'aborted' | 'dirty' | 'valid'\n data: any\n}\n\nexport type INVALID = { status: 'aborted' }\nexport const INVALID: INVALID = Object.freeze({\n status: 'aborted',\n})\n\nexport type DIRTY<T> = { status: 'dirty'; value: T }\nexport const DIRTY = <T>(value: T): DIRTY<T> => ({ status: 'dirty', value })\n\nexport type OK<T> = { status: 'valid'; value: T }\nexport const OK = <T>(value: T): OK<T> => ({ status: 'valid', value })\n\nexport type SyncParseReturnType<T = any> = OK<T> | DIRTY<T> | INVALID\nexport type AsyncParseReturnType<T> = Promise<SyncParseReturnType<T>>\nexport type ParseReturnType<T> = SyncParseReturnType<T> | AsyncParseReturnType<T>\n\nexport const isAborted = (x: ParseReturnType<any>): x is INVALID => (x as SyncParseReturnType).status === 'aborted'\nexport const isDirty = <T>(x: ParseReturnType<T>): x is OK<T> | DIRTY<T> =>\n (x as SyncParseReturnType).status === 'dirty'\nexport const isValid = <T>(x: ParseReturnType<T>): x is OK<T> => (x as SyncParseReturnType).status === 'valid'\nexport const isAsync = <T>(x: ParseReturnType<T>): x is AsyncParseReturnType<T> =>\n typeof Promise !== 'undefined' && x instanceof Promise\n", "export namespace errorUtil {\n export type ErrMessage = string | { message?: string }\n export const errToObj = (message?: ErrMessage) => (typeof message === 'string' ? { message } : message || {})\n export const toString = (message?: ErrMessage): string | undefined =>\n typeof message === 'string' ? message : message?.message\n}\n", "import {\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeDef,\n OK,\n ParseInput,\n ParseReturnType,\n processCreateParams,\n} from '../index'\n\nexport interface ZodAnyDef extends ZodTypeDef {\n typeName: ZodFirstPartyTypeKind.ZodAny\n}\n\nexport class ZodAny extends ZodType<any, ZodAnyDef> {\n // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n _any = true as const\n _parse(input: ParseInput): ParseReturnType<this['_output']> {\n return OK(input.data)\n }\n static create = (params?: RawCreateParams): ZodAny => {\n return new ZodAny({\n typeName: ZodFirstPartyTypeKind.ZodAny,\n ...processCreateParams(params),\n })\n }\n\n public isEqual(schema: ZodType) {\n return schema instanceof ZodAny\n }\n}\n", "import {\n ZodIssueCode,\n ParseInputLazyPath,\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeAny,\n ZodTypeDef,\n processCreateParams,\n ZodParsedType,\n errorUtil,\n addIssueToContext,\n INVALID,\n ParseInput,\n ParseReturnType,\n ParseStatus,\n} from '../index'\nimport { isEqual } from 'lodash-es'\n\nexport interface ZodArrayDef<T extends ZodTypeAny = ZodTypeAny> extends ZodTypeDef {\n type: T\n typeName: ZodFirstPartyTypeKind.ZodArray\n exactLength: { value: number; message?: string } | null\n minLength: { value: number; message?: string } | null\n maxLength: { value: number; message?: string } | null\n}\n\nexport type ArrayCardinality = 'many' | 'atleastone'\nexport type arrayOutputType<\n T extends ZodTypeAny,\n Cardinality extends ArrayCardinality = 'many',\n> = Cardinality extends 'atleastone' ? [T['_output'], ...T['_output'][]] : T['_output'][]\n\nexport class ZodArray<T extends ZodTypeAny = ZodTypeAny, Cardinality extends ArrayCardinality = 'many'> extends ZodType<\n arrayOutputType<T, Cardinality>,\n ZodArrayDef<T>,\n Cardinality extends 'atleastone' ? [T['_input'], ...T['_input'][]] : T['_input'][]\n> {\n dereference(defs: Record<string, ZodTypeAny>): ZodTypeAny {\n return new ZodArray({\n ...this._def,\n type: this._def.type.dereference(defs),\n })\n }\n\n getReferences(): string[] {\n return this._def.type.getReferences()\n }\n\n clone(): ZodArray<T, Cardinality> {\n return new ZodArray({\n ...this._def,\n type: this._def.type.clone(),\n }) as ZodArray<T, Cardinality>\n }\n\n isEqual(schema: ZodType): boolean {\n if (!(schema instanceof ZodArray)) {\n return false\n }\n return (\n // message is not considered for equality\n isEqual(this._def.exactLength?.value, schema._def.exactLength?.value) &&\n isEqual(this._def.maxLength?.value, schema._def.maxLength?.value) &&\n isEqual(this._def.minLength?.value, schema._def.minLength?.value) &&\n this._def.type.isEqual(schema._def.type)\n )\n }\n\n _parse(input: ParseInput): ParseReturnType<this['_output']> {\n const { ctx, status } = this._processInputParams(input)\n\n const def = this._def\n\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\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) as number,\n maximum: (tooBig ? def.exactLength.value : undefined) as number,\n type: 'array',\n inclusive: true,\n exact: true,\n message: def.exactLength.message,\n })\n status.dirty()\n }\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\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\n if (ctx.common.async) {\n return Promise.all(\n [...ctx.data].map((item, i) => {\n return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i))\n }),\n ).then((result) => {\n return ParseStatus.mergeArray(status, result)\n })\n }\n\n const result = [...ctx.data].map((item, i) => {\n return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i))\n })\n\n return ParseStatus.mergeArray(status, result)\n }\n\n get element() {\n return this._def.type\n }\n\n min(minLength: number, message?: errorUtil.ErrMessage): this {\n return new ZodArray({\n ...this._def,\n minLength: { value: minLength, message: errorUtil.toString(message) },\n }) as this\n }\n\n max(maxLength: number, message?: errorUtil.ErrMessage): this {\n return new ZodArray({\n ...this._def,\n maxLength: { value: maxLength, message: errorUtil.toString(message) },\n }) as this\n }\n\n length(len: number, message?: errorUtil.ErrMessage): this {\n return new ZodArray({\n ...this._def,\n exactLength: { value: len, message: errorUtil.toString(message) },\n }) as this\n }\n\n nonempty(message?: errorUtil.ErrMessage): ZodArray<T, 'atleastone'> {\n return this.min(1, message) as ZodArray<T, 'atleastone'>\n }\n\n static create = <T extends ZodTypeAny>(schema: T, params?: RawCreateParams): ZodArray<T> => {\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 }\n}\n\nexport type ZodNonEmptyArray<T extends ZodTypeAny> = ZodArray<T, 'atleastone'>\n", "import * as lodash from 'lodash-es'\n\n/** Sadly, this type is not exported by lodash, so we must redefine it */\ntype IsEqualCustomizer = (\n value: any,\n other: any,\n indexOrKey: PropertyKey | undefined,\n parent: any,\n otherParent: any,\n stack: any,\n) => boolean | undefined\n\nexport const isEqual = (a: any, b: any): boolean => {\n return _isEqualWithVisitedTracking(a, b, new WeakSet())\n}\n\nconst _isEqualWithVisitedTracking = (a: any, b: any, visited: WeakSet<any>): boolean =>\n lodash.isEqualWith(a, b, _customizerWithVisitedTracking(visited))\n\nconst _customizerWithVisitedTracking =\n (visited: WeakSet<any>): IsEqualCustomizer =>\n (a, b) => {\n if (lodash.isPlainObject(a) && !visited.has(a) && lodash.isPlainObject(b) && !visited.has(b)) {\n const cleanedA = lodash.omitBy(a, lodash.isUndefined)\n const cleanedB = lodash.omitBy(b, lodash.isUndefined)\n\n // Prevent infinite recursion: mark objects as already checked:\n visited.add(cleanedA).add(cleanedB).add(a).add(b)\n\n return _isEqualWithVisitedTracking(cleanedA, cleanedB, visited)\n }\n\n return undefined // Offload to default lodash isEqual comparison\n }\n", "import { isEqual } from './is-equal'\n\nexport type CustomSetOptions<T> = {\n compare: (a: T, b: T) => boolean\n}\n\nconst DEFAULT_OPTIONS: CustomSetOptions<any> = {\n compare: isEqual,\n}\n\nexport class CustomSet<T> {\n private _items: T[]\n private _options: CustomSetOptions<T>\n\n public constructor(items: T[] = [], opt: Partial<CustomSetOptions<T>> = {}) {\n this._options = { ...DEFAULT_OPTIONS, ...opt }\n this._items = []\n for (const i of items) {\n this.add(i)\n }\n }\n\n public get items(): T[] {\n return [...this._items]\n }\n\n public get size(): number {\n return this._items.length\n }\n\n public has(item: T): boolean {\n return this._items.some((i) => this._options.compare(i, item))\n }\n\n public add(item: T): void {\n if (!this.has(item)) {\n this._items.push(item)\n }\n }\n\n public isEqual(other: CustomSet<T>): boolean {\n if (this.size !== other.size) {\n return false\n }\n return this.isSubsetOf(other) && other.isSubsetOf(this)\n }\n\n public isSubsetOf(other: CustomSet<T>): boolean {\n if (this.size > other.size) {\n return false\n }\n return this._items.every((i) => other.has(i))\n }\n}\n", "import {\n addIssueToContext,\n INVALID,\n ParseContext,\n ParseInput,\n ParseReturnType,\n ParseStatus,\n ZodIssueCode,\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeDef,\n processCreateParams,\n util,\n ZodParsedType,\n errorUtil,\n} from '../index'\nimport { CustomSet } from '../utils/custom-set'\n\nexport type ZodBigIntCheck =\n | { kind: 'min'; value: bigint; inclusive: boolean; message?: string }\n | { kind: 'max'; value: bigint; inclusive: boolean; message?: string }\n | { kind: 'multipleOf'; value: bigint; message?: string }\n\nexport interface ZodBigIntDef extends ZodTypeDef {\n checks: ZodBigIntCheck[]\n typeName: ZodFirstPartyTypeKind.ZodBigInt\n coerce: boolean\n}\n\nexport class ZodBigInt extends ZodType<bigint, ZodBigIntDef> {\n _parse(input: ParseInput): ParseReturnType<bigint> {\n if (this._def.coerce) {\n input.data = BigInt(input.data)\n }\n const parsedType = this._getType(input)\n if (parsedType !== ZodParsedType.bigint) {\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\n let ctx: undefined | ParseContext = undefined\n const status = new ParseStatus()\n\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 } 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 } 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 } else {\n util.assertNever(check)\n }\n }\n\n return { status: status.value, value: input.data }\n }\n\n static create = (params?: RawCreateParams & { coerce?: boolean }): ZodBigInt => {\n return new ZodBigInt({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodBigInt,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n })\n }\n\n isEqual(schema: ZodType): boolean {\n if (!(schema instanceof ZodBigInt)) {\n return false\n }\n if (this._def.coerce !== schema._def.coerce) return false\n\n const thisChecks = new CustomSet<ZodBigIntCheck>(this._def.checks)\n const thatChecks = new CustomSet<ZodBigIntCheck>(schema._def.checks)\n\n return thisChecks.isEqual(thatChecks)\n }\n\n gte(value: bigint, message?: errorUtil.ErrMessage) {\n return this.setLimit('min', value, true, errorUtil.toString(message))\n }\n min = this.gte\n\n gt(value: bigint, message?: errorUtil.ErrMessage) {\n return this.setLimit('min', value, false, errorUtil.toString(message))\n }\n\n lte(value: bigint, message?: errorUtil.ErrMessage) {\n return this.setLimit('max', value, true, errorUtil.toString(message))\n }\n max = this.lte\n\n lt(value: bigint, message?: errorUtil.ErrMessage) {\n return this.setLimit('max', value, false, errorUtil.toString(message))\n }\n\n protected setLimit(kind: 'min' | 'max', value: bigint, inclusive: boolean, message?: string) {\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\n _addCheck(check: ZodBigIntCheck) {\n return new ZodBigInt({\n ...this._def,\n checks: [...this._def.checks, check],\n })\n }\n\n positive(message?: errorUtil.ErrMessage) {\n return this._addCheck({\n kind: 'min',\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n })\n }\n\n negative(message?: errorUtil.ErrMessage) {\n return this._addCheck({\n kind: 'max',\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n })\n }\n\n nonpositive(message?: errorUtil.ErrMessage) {\n return this._addCheck({\n kind: 'max',\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n })\n }\n\n nonnegative(message?: errorUtil.ErrMessage) {\n return this._addCheck({\n kind: 'min',\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n })\n }\n\n multipleOf(value: bigint, message?: errorUtil.ErrMessage) {\n return this._addCheck({\n kind: 'multipleOf',\n value,\n message: errorUtil.toString(message),\n })\n }\n\n get minValue() {\n let min: bigint | null = null\n for (const ch of this._def.checks) {\n if (ch.kind === 'min') {\n if (min === null || ch.value > min) min = ch.value\n }\n }\n return min\n }\n\n get maxValue() {\n let max: bigint | null = null\n for (const ch of this._def.checks) {\n if (ch.kind === 'max') {\n if (max === null || ch.value < max) max = ch.value\n }\n }\n return max\n }\n}\n", "import {\n ZodIssueCode,\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeDef,\n processCreateParams,\n ZodParsedType,\n addIssueToContext,\n INVALID,\n OK,\n ParseInput,\n ParseReturnType,\n} from '../index'\n\nexport interface ZodBooleanDef extends ZodTypeDef {\n typeName: ZodFirstPartyTypeKind.ZodBoolean\n coerce: boolean\n}\n\nexport class ZodBoolean extends ZodType<boolean, ZodBooleanDef> {\n _parse(input: ParseInput): ParseReturnType<boolean> {\n if (this._def.coerce) {\n input.data = Boolean(input.data)\n }\n const parsedType = this._getType(input)\n\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\n static create = (params?: RawCreateParams & { coerce?: boolean }): ZodBoolean => {\n return new ZodBoolean({\n typeName: ZodFirstPartyTypeKind.ZodBoolean,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n })\n }\n\n isEqual(schema: ZodType): boolean {\n if (!(schema instanceof ZodBoolean)) return false\n return this._def.coerce === schema._def.coerce\n }\n}\n", "import { ZodFirstPartyTypeKind, ZodType, ZodTypeAny, ZodTypeDef, ParseInput, ParseReturnType } from '../index'\n\ntype Key = string | number | symbol\n\nexport interface ZodBrandedDef<T extends ZodTypeAny = ZodTypeAny> extends ZodTypeDef {\n type: T\n typeName: ZodFirstPartyTypeKind.ZodBranded\n}\n\nexport const BRAND: unique symbol = Symbol('zod_brand')\nexport type BRAND<T extends Key = Key> = {\n [BRAND]: {\n [k in T]: true\n }\n}\n\nexport class ZodBranded<T extends ZodTypeAny = ZodTypeAny, B extends Key = Key> extends ZodType<\n T['_output'] & BRAND<B>,\n ZodBrandedDef<T>,\n T['_input']\n> {\n dereference(defs: Record<string, ZodTypeAny>): ZodTypeAny {\n return new ZodBranded({\n ...this._def,\n type: this._def.type.dereference(defs),\n })\n }\n\n getReferences(): string[] {\n return this._def.type.getReferences()\n }\n\n clone(): ZodBranded<T, B> {\n return new ZodBranded({\n ...this._def,\n type: this._def.type.clone(),\n }) as ZodBranded<T, B>\n }\n\n _parse(input: ParseInput): ParseReturnType<any> {\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\n unwrap() {\n return this._def.type\n }\n\n isEqual(schema: ZodType): boolean {\n if (!(schema instanceof ZodBranded)) return false\n return this._def.type.isEqual(schema._def.type)\n }\n\n naked(): ZodTypeAny {\n return this._def.type.naked()\n }\n\n mandatory(): ZodBranded<ZodTypeAny, B> {\n return new ZodBranded({\n ...this._def,\n type: this._def.type.mandatory(),\n })\n }\n}\n", "import {\n ZodError,\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeAny,\n ZodTypeDef,\n processCreateParams,\n isAsync,\n ParseContext,\n ParseInput,\n ParseReturnType,\n util,\n} from '../index'\n\nexport type CatchFn<Y> = (ctx: { error: ZodError; input: unknown }) => Y\nexport interface ZodCatchDef<T extends ZodTypeAny = ZodTypeAny> extends ZodTypeDef {\n innerType: T\n catchValue: CatchFn<T['_output']>\n typeName: ZodFirstPartyTypeKind.ZodCatch\n}\n\nexport class ZodCatch<T extends ZodTypeAny = ZodTypeAny> extends ZodType<\n T['_output'],\n ZodCatchDef<T>,\n unknown // any input will pass validation // T[\"_input\"]\n> {\n _parse(input: ParseInput): ParseReturnType<this['_output']> {\n const { ctx } = this._processInputParams(input)\n\n // newCtx is used to not collect issues from inner types in ctx\n const newCtx: ParseContext = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n }\n\n const result = this._def.innerType._parse({\n data: newCtx.data,\n path: newCtx.path,\n parent: {\n ...newCtx,\n },\n })\n\n if (isAsync(result)) {\n return result.then((result) => {\n return {\n status: 'valid',\n value:\n 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 } else {\n return {\n status: 'valid',\n value:\n 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\n removeCatch() {\n return this._def.innerType\n }\n\n static create = <T extends ZodTypeAny>(\n type: T,\n params: RawCreateParams & {\n catch: T['_output'] | CatchFn<T['_output']>\n },\n ): ZodCatch<T> => {\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 }\n\n isEqual(schema: ZodType): boolean {\n if (!(schema instanceof ZodCatch)) return false\n return (\n this._def.innerType.isEqual(schema._def.innerType) &&\n util.compareFunctions(this._def.catchValue, schema._def.catchValue)\n )\n }\n\n dereference(defs: Record<string, ZodTypeAny>): ZodTypeAny {\n return new ZodCatch({\n ...this._def,\n innerType: this._def.innerType.dereference(defs),\n })\n }\n\n getReferences(): string[] {\n return this._def.innerType.getReferences()\n }\n\n clone(): ZodCatch<T> {\n return new ZodCatch({\n ...this._def,\n innerType: this._def.innerType.clone(),\n }) as ZodCatch<T>\n }\n\n naked() {\n return this._def.innerType.naked()\n }\n\n mandatory(): ZodCatch<ZodTypeAny> {\n return new ZodCatch({\n ...this._def,\n innerType: this._def.innerType.mandatory(),\n })\n }\n}\n", "import { ZodAny, CustomErrorParams, ZodType } from '../index'\n\nexport type CustomParams = CustomErrorParams & { fatal?: boolean }\n\nexport const custom = <T>(\n check?: (data: unknown) => any,\n params: string | CustomParams | ((input: any) => CustomParams) = {},\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 */\n fatal?: boolean,\n): ZodType<T> => {\n if (check)\n return ZodAny.create().superRefine((data, ctx) => {\n if (!check(data)) {\n const p =\n typeof params === 'function' ? params(data) : typeof params === 'string' ? { message: params } : params\n const _fatal = p.fatal ?? fatal ?? true\n const p2 = typeof p === 'string' ? { message: p } : p\n ctx.addIssue({ code: 'custom', ...p2, fatal: _fatal })\n }\n })\n return ZodAny.create()\n}\n", "import {\n ZodIssueCode,\n processCreateParams,\n util,\n ZodParsedType,\n errorUtil,\n ZodFirstPartyTypeKind,\n ZodTypeDef,\n addIssueToContext,\n INVALID,\n ParseContext,\n ParseInput,\n ParseReturnType,\n ParseStatus,\n ZodType,\n RawCreateParams,\n} from '../index'\nimport { CustomSet } from '../utils/custom-set'\n\nexport type ZodDateCheck =\n | { kind: 'min'; value: number; message?: string }\n | { kind: 'max'; value: number; message?: string }\nexport interface ZodDateDef extends ZodTypeDef {\n checks: ZodDateCheck[]\n coerce: boolean\n typeName: ZodFirstPartyTypeKind.ZodDate\n}\n\nexport class ZodDate extends ZodType<Date, ZodDateDef> {\n _parse(input: ParseInput): ParseReturnType<this['_output']> {\n if (this._def.coerce) {\n input.data = new Date(input.data)\n }\n const parsedType = this._getType(input)\n\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\n if (isNaN(input.data.getTime())) {\n const ctx = this._getOrReturnCtx(input)\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_date,\n })\n return INVALID\n }\n\n const status = new ParseStatus()\n let ctx: undefined | ParseContext = undefined\n\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 } 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 } else {\n util.assertNever(check)\n }\n }\n\n return {\n status: status.value,\n value: new Date((input.data as Date).getTime()),\n }\n }\n\n _addCheck(check: ZodDateCheck) {\n return new ZodDate({\n ...this._def,\n checks: [...this._def.checks, check],\n })\n }\n\n min(minDate: Date, message?: errorUtil.ErrMessage) {\n return this._addCheck({\n kind: 'min',\n value: minDate.getTime(),\n message: errorUtil.toString(message),\n })\n }\n\n max(maxDate: Date, message?: errorUtil.ErrMessage) {\n return this._addCheck({\n kind: 'max',\n value: maxDate.getTime(),\n message: errorUtil.toString(message),\n })\n }\n\n get minDate() {\n let min: number | null = null\n for (const ch of this._def.checks) {\n if (ch.kind === 'min') {\n if (min === null || ch.value > min) min = ch.value\n }\n }\n\n return min != null ? new Date(min) : null\n }\n\n get maxDate() {\n let max: number | null = null\n for (const ch of this._def.checks) {\n if (ch.kind === 'max') {\n if (max === null || ch.value < max) max = ch.value\n }\n }\n\n return max != null ? new Date(max) : null\n }\n\n static create = (params?: RawCreateParams & { coerce?: boolean }): ZodDate => {\n return new ZodDate({\n checks: [],\n coerce: params?.coerce || false,\n typeName: ZodFirstPartyTypeKind.ZodDate,\n ...processCreateParams(params),\n })\n }\n\n isEqual(schema: ZodType): boolean {\n if (!(schema instanceof ZodDate)) return false\n const thisChecks = new CustomSet<ZodDateCheck>(this._def.checks)\n const thatChecks = new CustomSet<ZodDateCheck>(schema._def.checks)\n return thisChecks.isEqual(thatChecks) && this._def.coerce === schema._def.coerce\n }\n}\n", "import { isEqual } from 'lodash-es'\n\nimport {\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeAny,\n ZodTypeDef,\n processCreateParams,\n util,\n ZodParsedType,\n ParseInput,\n ParseReturnType,\n} from '../index'\n\nexport interface ZodDefaultDef<T extends ZodTypeAny = ZodTypeAny> extends ZodTypeDef {\n innerType: T\n defaultValue: () => util.noUndefined<T['_input']>\n typeName: ZodFirstPartyTypeKind.ZodDefault\n}\n\nexport class ZodDefault<T extends ZodTypeAny = ZodTypeAny> extends ZodType<\n util.noUndefined<T['_output']>,\n ZodDefaultDef<T>,\n T['_input'] | undefined\n> {\n _parse(input: ParseInput): ParseReturnType<this['_output']> {\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\n removeDefault() {\n return this._def.innerType\n }\n\n dereference(defs: Record<string, ZodTypeAny>): ZodTypeAny {\n return new ZodDefault({\n ...this._def,\n innerType: this._def.innerType.dereference(defs),\n })\n }\n\n getReferences(): string[] {\n return this._def.innerType.getReferences()\n }\n\n clone(): ZodDefault<T> {\n return new ZodDefault({\n ...this._def,\n innerType: this._def.innerType.clone(),\n }) as ZodDefault<T>\n }\n\n static create = <T extends ZodTypeAny>(\n type: T,\n value: T['_input'] | (() => util.noUndefined<T['_input']>),\n params?: RawCreateParams,\n ): ZodDefault<T> => {\n return new ZodDefault({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n defaultValue: typeof value === 'function' ? value : () => value,\n ...processCreateParams(params),\n })\n }\n\n isEqual(schema: ZodType): boolean {\n if (!(schema instanceof ZodDefault)) return false\n return (\n this._def.innerType.isEqual(schema._def.innerType) &&\n isEqual(this._def.defaultValue(), schema._def.defaultValue())\n )\n }\n\n unwrap() {\n return this._def.innerType\n }\n\n naked() {\n return this._def.innerType.naked()\n }\n\n mandatory(): ZodDefault<ZodTypeAny> {\n return new ZodDefault({\n ...this._def,\n innerType: this._def.innerType.mandatory(),\n })\n }\n}\n", "export type ValueOf<T> = T[keyof T]\n\nexport const unique = <T>(arr: T[]): T[] => {\n return Array.from(new Set(arr))\n}\n", "import { unique } from '../../utils'\nimport {\n ZodBranded,\n ZodCatch,\n ZodDefault,\n ZodEnum,\n ZodIssueCode,\n input,\n output,\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodRawShape,\n ZodType,\n ZodTypeAny,\n ZodTypeDef,\n ZodLazy,\n ZodLiteral,\n ZodNativeEnum,\n ZodNull,\n ZodNullable,\n UnknownKeysParam,\n ZodObject,\n ZodOptional,\n ZodReadonly,\n ZodEffects,\n ZodUndefined,\n processCreateParams,\n util,\n ZodParsedType,\n addIssueToContext,\n INVALID,\n ParseInput,\n ParseReturnType,\n Primitive,\n} from '../index'\nimport { CustomSet } from '../utils/custom-set'\n\nconst getDiscriminator = <T extends ZodTypeAny>(type: T): Primitive[] => {\n if (type instanceof ZodLazy) {\n return getDiscriminator(type.schema)\n } else if (type instanceof ZodEffects) {\n return getDiscriminator(type.innerType())\n } else if (type instanceof ZodLiteral) {\n return [type.value]\n } else if (type instanceof ZodEnum) {\n return type.options\n } else if (type instanceof ZodNativeEnum) {\n // eslint-disable-next-line ban/ban\n return util.objectValues(type.enum)\n } else if (type instanceof ZodDefault) {\n return getDiscriminator(type._def.innerType)\n } else if (type instanceof ZodUndefined) {\n return [undefined]\n } else if (type instanceof ZodNull) {\n return [null]\n } else if (type instanceof ZodOptional) {\n return [undefined, ...getDiscriminator(type.unwrap())]\n } else if (type instanceof ZodNullable) {\n return [null, ...getDiscriminator(type.unwrap())]\n } else if (type instanceof ZodBranded) {\n return getDiscriminator(type.unwrap())\n } else if (type instanceof ZodReadonly) {\n return getDiscriminator(type.unwrap())\n } else if (type instanceof ZodCatch) {\n return getDiscriminator(type._def.innerType)\n } else {\n return []\n }\n}\n\nexport type ZodDiscriminatedUnionOption<Discriminator extends string> = ZodObject<\n {\n [key in Discriminator]: ZodTypeAny\n } & ZodRawShape,\n UnknownKeysParam\n>\n\nexport interface ZodDiscriminatedUnionDef<\n Discriminator extends string = string,\n Options extends ZodDiscriminatedUnionOption<string>[] = ZodDiscriminatedUnionOption<string>[],\n> extends ZodTypeDef {\n discriminator: Discriminator\n options: Options\n optionsMap: Map<Primitive, ZodDiscriminatedUnionOption<any>>\n typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion\n}\n\nexport class ZodDiscriminatedUnion<\n Discriminator extends string = string,\n Options extends ZodDiscriminatedUnionOption<Discriminator>[] = ZodDiscriminatedUnionOption<Discriminator>[],\n> extends ZodType<output<Options[number]>, ZodDiscriminatedUnionDef<Discriminator, Options>, input<Options[number]>> {\n dereference(defs: Record<string, ZodTypeAny>): ZodTypeAny {\n const options = this.options.map((option) => option.dereference(defs)) as [\n ZodDiscriminatedUnionOption<Discriminator>,\n ...ZodDiscriminatedUnionOption<Discriminator>[],\n ]\n\n const optionsMap = ZodDiscriminatedUnion._getOptionsMap(this.discriminator, options)\n\n return new ZodDiscriminatedUnion({\n ...this._def,\n options,\n optionsMap,\n })\n }\n\n getReferences(): string[] {\n return unique(this.options.flatMap((option) => option.getReferences()))\n }\n\n clone(): ZodDiscriminatedUnion<Discriminator, Options> {\n const options: ZodDiscriminatedUnionOption<Discriminator>[] = this.options.map(\n (option) => option.clone() as ZodDiscriminatedUnionOption<Discriminator>,\n )\n return new ZodDiscriminatedUnion({\n ...this._def,\n options: options as [ZodDiscriminatedUnionOption<Discriminator>, ...ZodDiscriminatedUnionOption<Discriminator>[]],\n }) as ZodDiscriminatedUnion<Discriminator, any>\n }\n\n _parse(input: ParseInput): ParseReturnType<this['_output']> {\n const { ctx } = this._processInputParams(input)\n\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\n const discriminator = this.discriminator\n\n const discriminatorValue: string = ctx.data[discriminator]\n\n const option = this.optionsMap.get(discriminatorValue)\n\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\n if (ctx.common.async) {\n return option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }) as ParseReturnType<this['_output']>\n } else {\n return option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }) as ParseReturnType<this['_output']>\n }\n }\n\n get discriminator() {\n return this._def.discriminator\n }\n\n get options() {\n return this._def.options\n }\n\n get optionsMap() {\n return this._def.optionsMap\n }\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<\n Discriminator extends string,\n Types extends [ZodDiscriminatedUnionOption<Discriminator>, ...ZodDiscriminatedUnionOption<Discriminator>[]],\n >(\n discriminator: Discriminator,\n options: Types,\n params?: RawCreateParams,\n ): ZodDiscriminatedUnion<Discriminator, Types> {\n const optionsMap = ZodDiscriminatedUnion._getOptionsMap(discriminator, options)\n return new ZodDiscriminatedUnion<\n Discriminator,\n // DiscriminatorValue,\n Types\n >({\n typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n discriminator,\n options,\n optionsMap,\n ...processCreateParams(params),\n })\n }\n\n private static _getOptionsMap<\n Discriminator extends string,\n Types extends [ZodDiscriminatedUnionOption<Discriminator>, ...ZodDiscriminatedUnionOption<Discriminator>[]],\n >(discriminator: Discriminator, options: Types) {\n // Get all the valid discriminator values\n const optionsMap: Map<Primitive, Types[number]> = new Map()\n\n // try {\n for (const type of options) {\n const discriminatorValues = getDiscriminator(type.shape[discriminator])\n if (!discriminatorValues.length) {\n throw new Error(\n `A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`,\n )\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\n optionsMap.set(value, type)\n }\n }\n\n return optionsMap\n }\n\n isEqual(schema: ZodType): boolean {\n if (!(schema instanceof ZodDiscriminatedUnion)) return false\n if (this._def.discriminator !== schema._def.discriminator) return false\n\n const compare = (a: ZodObject, b: ZodObject) => a.isEqual(b)\n const thisOptions = new CustomSet<ZodObject>(this._def.options, { compare })\n const thatOptions = new CustomSet<ZodObject>(schema._def.options, { compare })\n\n // no need to compare optionsMap, as it is derived from discriminator + options\n\n return thisOptions.isEqual(thatOptions)\n }\n}\n", "import {\n ZodIssueCode,\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeDef,\n processCreateParams,\n util,\n addIssueToContext,\n INVALID,\n OK,\n ParseInput,\n ParseReturnType,\n} from '../index'\nimport { CustomSet } from '../utils/custom-set'\n\nexport type ArrayKeys = keyof any[]\nexport type Indices<T> = Exclude<keyof T, ArrayKeys>\n\nexport type EnumValues = [string, ...string[]]\n\nexport type Values<T extends EnumValues> = {\n [k in T[number]]: k\n}\n\nexport interface ZodEnumDef<T extends EnumValues = EnumValues> extends ZodTypeDef {\n values: T\n typeName: ZodFirstPartyTypeKind.ZodEnum\n}\n\nexport type Writeable<T> = {\n -readonly [P in keyof T]: T[P]\n}\n\nexport type FilterEnum<Values, ToExclude> = Values extends []\n ? []\n : Values extends [infer Head, ...infer Rest]\n ? Head extends ToExclude\n ? FilterEnum<Rest, ToExclude>\n : [Head, ...FilterEnum<Rest, ToExclude>]\n : never\n\nexport type typecast<A, T> = A extends T ? A : never\n\nexport function createZodEnum<U extends string, T extends Readonly<[U, ...U[]]>>(\n values: T,\n params?: RawCreateParams,\n): ZodEnum<Writeable<T>>\nexport function createZodEnum<U extends string, T extends [U, ...U[]]>(values: T, params?: RawCreateParams): ZodEnum<T>\nexport function createZodEnum(values: [string, ...string[]], params?: RawCreateParams) {\n return new ZodEnum({\n values,\n typeName: ZodFirstPartyTypeKind.ZodEnum,\n ...processCreateParams(params),\n })\n}\n\nexport class ZodEnum<T extends [string, ...string[]] = [string, ...string[]]> extends ZodType<\n T[number],\n ZodEnumDef<T>\n> {\n _parse(input: ParseInput): ParseReturnType<this['_output']> {\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) as 'string',\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n })\n return INVALID\n }\n\n if (this._def.values.indexOf(input.data) === -1) {\n const ctx = this._getOrReturnCtx(input)\n const expectedValues = this._def.values\n\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\n get options() {\n return this._def.values\n }\n\n get enum(): Values<T> {\n const enumValues: any = {}\n for (const val of this._def.values) {\n enumValues[val] = val\n }\n return enumValues\n }\n\n get Values(): Values<T> {\n const enumValues: any = {}\n for (const val of this._def.values) {\n enumValues[val] = val\n }\n return enumValues\n }\n\n get Enum(): Values<T> {\n const enumValues: any = {}\n for (const val of this._def.values) {\n enumValues[val] = val\n }\n return enumValues\n }\n\n extract<ToExtract extends readonly [T[number], ...T[number][]]>(\n values: ToExtract,\n newDef: RawCreateParams = this._def,\n ): ZodEnum<Writeable<ToExtract>> {\n return ZodEnum.create(values, {\n ...this._def,\n ...newDef,\n })\n }\n\n exclude<ToExclude extends readonly [T[number], ...T[number][]]>(\n values: ToExclude,\n newDef: RawCreateParams = this._def,\n ): ZodEnum<typecast<Writeable<FilterEnum<T, ToExclude[number]>>, [string, ...string[]]>> {\n return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)) as FilterEnum<T, ToExclude[number]>, {\n ...this._def,\n ...newDef,\n }) as ZodEnum<typecast<Writeable<FilterEnum<T, ToExclude[number]>>, [string, ...string[]]>>\n }\n\n static create = createZodEnum\n\n isEqual(schema: ZodType): boolean {\n if (!(schema instanceof ZodEnum)) return false\n const thisValues = new CustomSet<string>(this._def.values)\n const thatValues = new CustomSet<string>(schema._def.values)\n return thisValues.isEqual(thatValues)\n }\n}\n", "import { unique } from '../../utils'\nimport {\n defaultErrorMap,\n getErrorMap,\n ZodError,\n ZodErrorMap,\n ZodIssue,\n ZodIssueCode,\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeAny,\n ZodTypeDef,\n ZodPromise,\n AnyZodTuple,\n ZodTuple,\n ZodUnknown,\n processCreateParams,\n ZodParsedType,\n addIssueToContext,\n INVALID,\n makeIssue,\n OK,\n ParseInput,\n ParseReturnType,\n} from '../index'\n\nexport interface ZodFunctionDef<Args extends ZodTuple<any, any> = ZodTuple, Returns extends ZodTypeAny = ZodTypeAny>\n extends ZodTypeDef {\n args: Args\n returns: Returns\n typeName: ZodFirstPartyTypeKind.ZodFunction\n}\n\nexport type OuterTypeOfFunction<Args extends ZodTuple<any, any>, Returns extends ZodTypeAny> =\n Args['_input'] extends Array<any> ? (...args: Args['_input']) => Returns['_output'] : never\n\nexport type InnerTypeOfFunction<Args extends ZodTuple<any, any>, Returns extends ZodTypeAny> =\n Args['_output'] extends Array<any> ? (...args: Args['_output']) => Returns['_input'] : never\n\nexport class ZodFunction<\n Args extends ZodTuple<any, any> = ZodTuple,\n Returns extends ZodTypeAny = ZodTypeAny,\n> extends ZodType<\n OuterTypeOfFunction<Args, Returns>,\n ZodFunctionDef<Args, Returns>,\n InnerTypeOfFunction<Args, Returns>\n> {\n dereference(defs: Record<string, ZodTypeAny>): ZodTypeAny {\n const args = this._def.args.dereference(defs) as ZodTuple<[], ZodUnknown>\n const returns = this._def.returns.dereference(defs)\n return new ZodFunction({\n ...this._def,\n args,\n returns,\n })\n }\n\n getReferences(): string[] {\n return unique([...this._def.args.getReferences(), ...this._def.returns.getReferences()])\n }\n\n clone(): ZodFunction<Args, Returns> {\n return new ZodFunction({\n ...this._def,\n args: this._def.args.clone() as ZodTuple<any, any>,\n returns: this._def.returns.clone(),\n }) as ZodFunction<Args, Returns>\n }\n\n _parse(input: ParseInput): ParseReturnType<any> {\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\n function makeArgsIssue(args: any, error: ZodError): ZodIssue {\n return makeIssue({\n data: args,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter(\n (x) => !!x,\n ) as ZodErrorMap[],\n issueData: {\n code: ZodIssueCode.invalid_arguments,\n argumentsError: error,\n },\n })\n }\n\n function makeReturnsIssue(returns: any, error: ZodError): ZodIssue {\n return makeIssue({\n data: returns,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter(\n (x) => !!x,\n ) as ZodErrorMap[],\n issueData: {\n code: ZodIssueCode.invalid_return_type,\n returnTypeError: error,\n },\n })\n }\n\n const params = { errorMap: ctx.common.contextualErrorMap }\n const fn = ctx.data\n\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 (this: any, ...args: any[]) {\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 as unknown as ZodPromise<ZodTypeAny>)._def.type\n .parseAsync(result, params)\n .catch((e) => {\n error.addIssue(makeReturnsIssue(result, e))\n throw error\n })\n return parsedReturns\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 (this: any, ...args: any[]) {\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\n parameters() {\n return this._def.args\n }\n\n returnType() {\n return this._def.returns\n }\n\n args<Items extends Parameters<(typeof ZodTuple)['create']>[0]>(\n ...items: Items\n ): ZodFunction<ZodTuple<Items, ZodUnknown>, Returns> {\n return new ZodFunction({\n ...this._def,\n args: ZodTuple.create(items).rest(ZodUnknown.create()),\n })\n }\n\n returns<NewReturnType extends ZodType<any, any>>(returnType: NewReturnType): ZodFunction<Args, NewReturnType> {\n return new ZodFunction({\n ...this._def,\n returns: returnType,\n })\n }\n\n implement<F extends InnerTypeOfFunction<Args, Returns>>(\n func: F,\n ): ReturnType<F> extends Returns['_output']\n ? (...args: Args['_input']) => ReturnType<F>\n : OuterTypeOfFunction<Args, Returns> {\n const validatedFunc = this.parse(func)\n return validatedFunc\n }\n\n strictImplement(func: InnerTypeOfFunction<Args, Returns>): InnerTypeOfFunction<Args, Returns> {\n const validatedFunc = this.parse(func)\n return validatedFunc\n }\n\n validate = this.implement\n\n static create(): ZodFunction<ZodTuple<[], ZodUnknown>, ZodUnknown>\n static create<T extends AnyZodTuple = ZodTuple<[], ZodUnknown>>(args: T): ZodFunction<T, ZodUnknown>\n static create<T extends AnyZodTuple, U extends ZodTypeAny>(args: T, returns: U): ZodFunction<T, U>\n static create<T extends AnyZodTuple = ZodTuple<[], ZodUnknown>, U extends ZodTypeAny = ZodUnknown>(\n args: T,\n returns: U,\n params?: RawCreateParams,\n ): ZodFunction<T, U>\n static create(args?: AnyZodTuple, returns?: ZodTypeAny, params?: RawCreateParams) {\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\n isEqual(schema: ZodType): boolean {\n return (\n schema instanceof ZodFunction &&\n this._def.args.isEqual(schema._def.args) &&\n this._def.returns.isEqual(schema._def.returns)\n )\n }\n}\n", "import { unique } from '../../utils'\nimport {\n ZodIssueCode,\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeAny,\n ZodTypeDef,\n getParsedType,\n processCreateParams,\n util,\n ZodParsedType,\n addIssueToContext,\n INVALID,\n isAborted,\n isDirty,\n ParseInput,\n ParseReturnType,\n SyncParseReturnType,\n} from '../index'\nimport { CustomSet } from '../utils/custom-set'\n\nexport interface ZodIntersectionDef<T extends ZodTypeAny = ZodTypeAny, U extends ZodTypeAny = ZodTypeAny>\n extends ZodTypeDef {\n left: T\n right: U\n typeName: ZodFirstPartyTypeKind.ZodIntersection\n}\n\nfunction mergeValues(a: any, b: any): { valid: true; data: any } | { valid: false } {\n const aType = getParsedType(a)\n const bType = getParsedType(b)\n\n if (a === b) {\n return { valid: true, data: a }\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\n const newObj: any = { ...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\n return { valid: true, data: newObj }\n } else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {\n if (a.length !== b.length) {\n return { valid: false }\n }\n\n const newArray: unknown[] = []\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\n if (!sharedValue.valid) {\n return { valid: false }\n }\n\n newArray.push(sharedValue.data)\n }\n\n return { valid: true, data: newArray }\n } else if (aType === ZodParsedType.date && bType === ZodParsedType.date && +a === +b) {\n return { valid: true, data: a }\n } else {\n return { valid: false }\n }\n}\n\nexport class ZodIntersection<T extends ZodTypeAny = ZodTypeAny, U extends ZodTypeAny = ZodTypeAny> extends ZodType<\n T['_output'] & U['_output'],\n ZodIntersectionDef<T, U>,\n T['_input'] & U['_input']\n> {\n dereference(defs: Record<string, ZodTypeAny>): ZodTypeAny {\n return new ZodIntersection({\n ...this._def,\n left: this._def.left.dereference(defs),\n right: this._def.right.dereference(defs),\n })\n }\n\n getReferences(): string[] {\n return unique([...this._def.left.getReferences(), ...this._def.right.getReferences()])\n }\n\n clone(): ZodIntersection<T, U> {\n return new ZodIntersection({\n ...this._def,\n left: this._def.left.clone(),\n right: this._def.right.clone(),\n }) as ZodIntersection<T, U>\n }\n\n _parse(input: ParseInput): ParseReturnType<this['_output']> {\n const { status, ctx } = this._processInputParams(input)\n const handleParsed = (\n parsedLeft: SyncParseReturnType,\n parsedRight: SyncParseReturnType,\n ): SyncParseReturnType<T & U> => {\n if (isAborted(parsedLeft) || isAborted(parsedRight)) {\n return INVALID\n }\n\n const merged = mergeValues(parsedLeft.value, parsedRight.value)\n\n if (!merged.valid) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_intersection_types,\n })\n return INVALID\n }\n\n if (isDirty(parsedLeft) || isDirty(parsedRight)) {\n status.dirty()\n }\n\n return { status: status.value, value: merged.data }\n }\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]: any) => handleParsed(left, right))\n } else {\n return handleParsed(\n this._def.left._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n this._def.right._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n )\n }\n }\n\n static create = <T extends ZodTypeAny, U extends ZodTypeAny>(\n left: T,\n right: U,\n params?: RawCreateParams,\n ): ZodIntersection<T, U> => {\n return new ZodIntersection({\n left: left,\n right: right,\n typeName: ZodFirstPartyTypeKind.ZodIntersection,\n ...processCreateParams(params),\n })\n }\n\n isEqual(schema: ZodType): boolean {\n if (!(schema instanceof ZodIntersection)) return false\n\n const compare = (a: ZodType, b: ZodType) => a.isEqual(b)\n const thisItems = new CustomSet<ZodType>([this._def.left, this._def.right], { compare })\n const thatItems = new CustomSet<ZodType>([schema._def.left, schema._def.right], { compare })\n return thisItems.isEqual(thatItems)\n }\n}\n", "import {\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeDef,\n processCreateParams,\n ParseInput,\n ParseReturnType,\n ZodTypeAny,\n output,\n input,\n} from '../index'\n\nexport interface ZodLazyDef<T extends ZodTypeAny = ZodTypeAny> extends ZodTypeDef {\n getter: () => T\n typeName: ZodFirstPartyTypeKind.ZodLazy\n}\n\nexport class ZodLazy<T extends ZodTypeAny = ZodTypeAny> extends ZodType<output<T>, ZodLazyDef<T>, input<T>> {\n get schema(): T {\n return this._def.getter()\n }\n\n dereference(defs: Record<string, ZodTypeAny>): ZodTypeAny {\n return new ZodLazy({\n ...this._def,\n getter: () => this._def.getter().dereference(defs),\n })\n }\n\n getReferences(): string[] {\n return this._def.getter().getReferences()\n }\n\n clone(): ZodLazy<T> {\n return new ZodLazy({\n ...this._def,\n getter: () => this._def.getter().clone(),\n }) as ZodLazy<T>\n }\n\n _parse(input: ParseInput): ParseReturnType<this['_output']> {\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\n static create = <T extends ZodTypeAny>(getter: () => T, params?: RawCreateParams): ZodLazy<T> => {\n return new ZodLazy({\n getter: getter,\n typeName: ZodFirstPartyTypeKind.ZodLazy,\n ...processCreateParams(params),\n })\n }\n\n isEqual(schema: ZodType): boolean {\n if (!(schema instanceof ZodLazy)) return false\n return this._def.getter().isEqual(schema._def.getter())\n }\n\n naked() {\n return this._def.getter().naked()\n }\n\n mandatory(): ZodLazy<ZodTypeAny> {\n return new ZodLazy({\n ...this._def,\n getter: () => this._def.getter().mandatory(),\n })\n }\n}\n", "import { isEqual } from 'lodash-es'\n\nimport {\n ZodIssueCode,\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeDef,\n processCreateParams,\n addIssueToContext,\n INVALID,\n ParseInput,\n ParseReturnType,\n Primitive,\n} from '../index'\n\nexport interface ZodLiteralDef<T extends Primitive = Primitive> extends ZodTypeDef {\n value: T\n typeName: ZodFirstPartyTypeKind.ZodLiteral\n}\n\nexport class ZodLiteral<T extends Primitive = Primitive> extends ZodType<T, ZodLiteralDef<T>> {\n _parse(input: ParseInput): ParseReturnType<this['_output']> {\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\n get value() {\n return this._def.value\n }\n\n static create = <T extends Primitive>(value: T, params?: RawCreateParams): ZodLiteral<T> => {\n return new ZodLiteral({\n value: value,\n typeName: ZodFirstPartyTypeKind.ZodLiteral,\n ...processCreateParams(params),\n })\n }\n\n isEqual(schema: ZodType): boolean {\n if (!(schema instanceof ZodLiteral)) return false\n return isEqual(this._def.value, schema._def.value)\n }\n}\n", "import { unique } from '../../utils'\nimport {\n ZodIssueCode,\n ParseInputLazyPath,\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeAny,\n ZodTypeDef,\n processCreateParams,\n ZodParsedType,\n addIssueToContext,\n INVALID,\n ParseInput,\n ParseReturnType,\n SyncParseReturnType,\n} from '../index'\n\nexport interface ZodMapDef<Key extends ZodTypeAny = ZodTypeAny, Value extends ZodTypeAny = ZodTypeAny>\n extends ZodTypeDef {\n valueType: Value\n keyType: Key\n typeName: ZodFirstPartyTypeKind.ZodMap\n}\n\nexport class ZodMap<Key extends ZodTypeAny = ZodTypeAny, Value extends ZodTypeAny = ZodTypeAny> extends ZodType<\n Map<Key['_output'], Value['_output']>,\n ZodMapDef<Key, Value>,\n Map<Key['_input'], Value['_input']>\n> {\n get keySchema() {\n return this._def.keyType\n }\n get valueSchema() {\n return this._def.valueType\n }\n\n dereference(defs: Record<string, ZodTypeAny>): ZodTypeAny {\n const keyType = this._def.keyType.dereference(defs)\n const valueType = this._def.valueType.dereference(defs)\n return new ZodMap({\n ...this._def,\n keyType,\n valueType,\n })\n }\n\n getReferences(): string[] {\n return unique([...this._def.keyType.getReferences(), ...this._def.valueType.getReferences()])\n }\n\n clone(): ZodMap<Key, Value> {\n return new ZodMap({\n ...this._def,\n keyType: this._def.keyType.clone(),\n valueType: this._def.valueType.clone(),\n }) as ZodMap<Key, Value>\n }\n\n _parse(input: ParseInput): ParseReturnType<this['_output']> {\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\n const keyType = this._def.keyType\n const valueType = this._def.valueType\n\n const pairs = [...(ctx.data as Map<unknown, unknown>).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\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\n finalMap.set(key.value, value.value)\n }\n return { status: status.value, value: finalMap }\n })\n } else {\n const finalMap = new Map()\n for (const pair of pairs) {\n const key = pair.key as SyncParseReturnType\n const value = pair.value as SyncParseReturnType\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\n finalMap.set(key.value, value.value)\n }\n return { status: status.value, value: finalMap }\n }\n }\n static create = <Key extends ZodTypeAny = ZodTypeAny, Value extends ZodTypeAny = ZodTypeAny>(\n keyType: Key,\n valueType: Value,\n params?: RawCreateParams,\n ): ZodMap<Key, Value> => {\n return new ZodMap({\n valueType,\n keyType,\n typeName: ZodFirstPartyTypeKind.ZodMap,\n ...processCreateParams(params),\n })\n }\n\n isEqual(schema: ZodType): boolean {\n if (!(schema instanceof ZodMap)) return false\n if (!this._def.keyType.isEqual(schema._def.keyType)) return false\n if (!this._def.valueType.isEqual(schema._def.valueType)) return false\n return true\n }\n}\n", "import {\n ZodIssueCode,\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeDef,\n processCreateParams,\n ZodParsedType,\n addIssueToContext,\n INVALID,\n ParseInput,\n ParseReturnType,\n} from '../index'\n\nexport interface ZodNaNDef extends ZodTypeDef {\n typeName: ZodFirstPartyTypeKind.ZodNaN\n}\n\nexport class ZodNaN extends ZodType<number, ZodNaNDef> {\n _parse(input: ParseInput): ParseReturnType<any> {\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\n return { status: 'valid', value: input.data }\n }\n\n static create = (params?: RawCreateParams): ZodNaN => {\n return new ZodNaN({\n typeName: ZodFirstPartyTypeKind.ZodNaN,\n ...processCreateParams(params),\n })\n }\n\n isEqual(schema: ZodType): boolean {\n return schema instanceof ZodNaN\n }\n}\n", "import { isEqual } from 'lodash-es'\n\nimport {\n ZodIssueCode,\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeDef,\n processCreateParams,\n util,\n ZodParsedType,\n addIssueToContext,\n INVALID,\n OK,\n ParseInput,\n ParseReturnType,\n} from '../index'\n\nexport interface ZodNativeEnumDef<T extends EnumLike = EnumLike> extends ZodTypeDef {\n values: T\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum\n}\n\nexport type EnumLike = { [k: string]: string | number; [nu: number]: string }\n\nexport class ZodNativeEnum<T extends EnumLike = EnumLike> extends ZodType<T[keyof T], ZodNativeEnumDef<T>> {\n _parse(input: ParseInput): ParseReturnType<T[keyof T]> {\n const nativeEnumValues = util.getValidEnumValues(this._def.values)\n\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) as 'string',\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n })\n return INVALID\n }\n\n if (nativeEnumValues.indexOf(input.data) === -1) {\n const expectedValues = util.objectValues(nativeEnumValues)\n\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\n get enum() {\n return this._def.values\n }\n\n static create = <T extends EnumLike>(values: T, params?: RawCreateParams): ZodNativeEnum<T> => {\n return new ZodNativeEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n ...processCreateParams(params),\n })\n }\n\n isEqual(schema: ZodType): boolean {\n if (!(schema instanceof ZodNativeEnum)) return false\n return isEqual(this._def.values, schema._def.values)\n }\n}\n", "import {\n ZodIssueCode,\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeDef,\n processCreateParams,\n ZodParsedType,\n addIssueToContext,\n INVALID,\n ParseInput,\n ParseReturnType,\n} from '../index'\n\nexport interface ZodNeverDef extends ZodTypeDef {\n typeName: ZodFirstPartyTypeKind.ZodNever\n}\n\nexport class ZodNever extends ZodType<never, ZodNeverDef> {\n _parse(input: ParseInput): ParseReturnType<this['_output']> {\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 static create = (params?: RawCreateParams): ZodNever => {\n return new ZodNever({\n typeName: ZodFirstPartyTypeKind.ZodNever,\n ...processCreateParams(params),\n })\n }\n\n isEqual(schema: ZodType): boolean {\n return schema instanceof ZodNever\n }\n}\n", "import {\n ZodIssueCode,\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeDef,\n processCreateParams,\n ZodParsedType,\n addIssueToContext,\n INVALID,\n OK,\n ParseInput,\n ParseReturnType,\n} from '../index'\n\nexport interface ZodNullDef extends ZodTypeDef {\n typeName: ZodFirstPartyTypeKind.ZodNull\n}\n\nexport class ZodNull extends ZodType<null, ZodNullDef> {\n _parse(input: ParseInput): ParseReturnType<this['_output']> {\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 static create = (params?: RawCreateParams): ZodNull => {\n return new ZodNull({\n typeName: ZodFirstPartyTypeKind.ZodNull,\n ...processCreateParams(params),\n })\n }\n\n isEqual(schema: ZodType): boolean {\n return schema instanceof ZodNull\n }\n}\n", "import {\n OK,\n ParseInput,\n ParseReturnType,\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeAny,\n ZodTypeDef,\n processCreateParams,\n ZodParsedType,\n} from '../index'\n\nexport interface ZodNullableDef<T extends ZodTypeAny = ZodTypeAny> extends ZodTypeDef {\n innerType: T\n typeName: ZodFirstPartyTypeKind.ZodNullable\n}\n\nexport type ZodNullableType<T extends ZodTypeAny> = ZodNullable<T>\n\nexport class ZodNullable<T extends ZodTypeAny = ZodTypeAny> extends ZodType<\n T['_output'] | null,\n ZodNullableDef<T>,\n T['_input'] | null\n> {\n dereference(defs: Record<string, ZodTypeAny>): ZodTypeAny {\n return new ZodNullable({\n ...this._def,\n innerType: this._def.innerType.dereference(defs),\n })\n }\n\n getReferences(): string[] {\n return this._def.innerType.getReferences()\n }\n\n clone(): ZodNullable<T> {\n return new ZodNullable({\n ...this._def,\n innerType: this._def.innerType.clone(),\n }) as ZodNullable<T>\n }\n\n _parse(input: ParseInput): ParseReturnType<this['_output']> {\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\n unwrap() {\n return this._def.innerType\n }\n\n static create = <T extends ZodTypeAny>(type: T, params?: RawCreateParams): ZodNullable<T> => {\n return new ZodNullable({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodNullable,\n ...processCreateParams(params),\n })\n }\n\n isEqual(schema: ZodType): boolean {\n if (!(schema instanceof ZodNullable)) return false\n return this._def.innerType.isEqual(schema._def.innerType)\n }\n\n naked() {\n return this._def.innerType.naked()\n }\n\n mandatory(): ZodNullable<ZodTypeAny> {\n return new ZodNullable({\n ...this._def,\n innerType: this._def.innerType.mandatory(),\n })\n }\n}\n", "import {\n ZodIssueCode,\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeDef,\n processCreateParams,\n util,\n ZodParsedType,\n errorUtil,\n addIssueToContext,\n INVALID,\n ParseContext,\n ParseInput,\n ParseReturnType,\n ParseStatus,\n} from '../index'\nimport { CustomSet } from '../utils/custom-set'\n\nexport type ZodNumberCheck =\n | { kind: 'min'; value: number; inclusive: boolean; message?: string }\n | { kind: 'max'; value: number; inclusive: boolean; message?: string }\n | { kind: 'int'; message?: string }\n | { kind: 'multipleOf'; value: number; message?: string }\n | { kind: 'finite'; message?: string }\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val: number, step: number) {\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 = parseInt(val.toFixed(decCount).replace('.', ''))\n const stepInt = parseInt(step.toFixed(decCount).replace('.', ''))\n return (valInt % stepInt) / Math.pow(10, decCount)\n}\n\nexport interface ZodNumberDef extends ZodTypeDef {\n checks: ZodNumberCheck[]\n typeName: ZodFirstPartyTypeKind.ZodNumber\n coerce: boolean\n}\n\nexport class ZodNumber extends ZodType<number, ZodNumberDef> {\n _parse(input: ParseInput): ParseReturnType<number> {\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\n let ctx: undefined | ParseContext = undefined\n const status = new ParseStatus()\n\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 } 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 } 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 } 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 } 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 } else {\n util.assertNever(check)\n }\n }\n\n return { status: status.value, value: input.data }\n }\n\n static create = (params?: RawCreateParams & { coerce?: boolean }): ZodNumber => {\n return new ZodNumber({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodNumber,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n })\n }\n\n gte(value: number, message?: errorUtil.ErrMessage) {\n return this.setLimit('min', value, true, errorUtil.toString(message))\n }\n min = this.gte\n\n gt(value: number, message?: errorUtil.ErrMessage) {\n return this.setLimit('min', value, false, errorUtil.toString(message))\n }\n\n lte(value: number, message?: errorUtil.ErrMessage) {\n return this.setLimit('max', value, true, errorUtil.toString(message))\n }\n max = this.lte\n\n lt(value: number, message?: errorUtil.ErrMessage) {\n return this.setLimit('max', value, false, errorUtil.toString(message))\n }\n\n protected setLimit(kind: 'min' | 'max', value: number, inclusive: boolean, message?: string) {\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\n _addCheck(check: ZodNumberCheck) {\n return new ZodNumber({\n ...this._def,\n checks: [...this._def.checks, check],\n })\n }\n\n int(message?: errorUtil.ErrMessage) {\n return this._addCheck({\n kind: 'int',\n message: errorUtil.toString(message),\n })\n }\n\n positive(message?: errorUtil.ErrMessage) {\n return this._addCheck({\n kind: 'min',\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n })\n }\n\n negative(message?: errorUtil.ErrMessage) {\n return this._addCheck({\n kind: 'max',\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n })\n }\n\n nonpositive(message?: errorUtil.ErrMessage) {\n return this._addCheck({\n kind: 'max',\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n })\n }\n\n nonnegative(message?: errorUtil.ErrMessage) {\n return this._addCheck({\n kind: 'min',\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n })\n }\n\n multipleOf(value: number, message?: errorUtil.ErrMessage) {\n return this._addCheck({\n kind: 'multipleOf',\n value: value,\n message: errorUtil.toString(message),\n })\n }\n step = this.multipleOf\n\n finite(message?: errorUtil.ErrMessage) {\n return this._addCheck({\n kind: 'finite',\n message: errorUtil.toString(message),\n })\n }\n\n safe(message?: errorUtil.ErrMessage) {\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\n get minValue() {\n let min: number | null = null\n for (const ch of this._def.checks) {\n if (ch.kind === 'min') {\n if (min === null || ch.value > min) min = ch.value\n }\n }\n return min\n }\n\n get maxValue() {\n let max: number | null = null\n for (const ch of this._def.checks) {\n if (ch.kind === 'max') {\n if (max === null || ch.value < max) max = ch.value\n }\n }\n return max\n }\n\n get isInt() {\n return !!this._def.checks.find((ch) => ch.kind === 'int' || (ch.kind === 'multipleOf' && util.isInteger(ch.value)))\n }\n\n get isFinite() {\n let max: number | null = null,\n min: number | null = null\n for (const ch of this._def.checks) {\n if (ch.kind === 'finite' || ch.kind === 'int' || ch.kind === 'multipleOf') {\n return true\n } else if (ch.kind === 'min') {\n if (min === null || ch.value > min) min = ch.value\n } else if (ch.kind === 'max') {\n if (max === null || ch.value < max) max = ch.value\n }\n }\n return Number.isFinite(min) && Number.isFinite(max)\n }\n\n isEqual(schema: ZodType): boolean {\n if (!(schema instanceof ZodNumber)) return false\n const thisChecks = new CustomSet<ZodNumberCheck>(this._def.checks)\n const thatChecks = new CustomSet<ZodNumberCheck>(schema._def.checks)\n return thisChecks.isEqual(thatChecks)\n }\n}\n", "import { unique } from '../../utils'\nimport {\n ZodArray,\n ZodEnum,\n ZodNullable,\n ZodOptional,\n ZodTuple,\n addIssueToContext,\n INVALID,\n objectUtil,\n ParseInput,\n ParseReturnType,\n ParseStatus,\n util,\n ZodIssueCode,\n ZodParsedType,\n ParseInputLazyPath,\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodRawShape,\n ZodType,\n ZodTypeAny,\n ZodTypeDef,\n processCreateParams,\n enumUtil,\n errorUtil,\n partialUtil,\n createZodEnum,\n ZodNever,\n ZodAny,\n} from '../index'\nimport { CustomSet } from '../utils/custom-set'\n\nexport type UnknownKeysParam = 'passthrough' | 'strict' | 'strip' | ZodTypeAny\n\nexport interface ZodObjectDef<\n T extends ZodRawShape = ZodRawShape,\n UnknownKeys extends UnknownKeysParam = UnknownKeysParam,\n> extends ZodTypeDef {\n typeName: ZodFirstPartyTypeKind.ZodObject\n shape: () => T\n unknownKeys: UnknownKeys\n}\n\nexport type mergeTypes<A, B> = {\n [k in keyof A | keyof B]: k extends keyof B ? B[k] : k extends keyof A ? A[k] : never\n}\n\nexport type objectOutputType<\n Shape extends ZodRawShape,\n UnknownKeys extends UnknownKeysParam = UnknownKeysParam,\n> = UnknownKeysOutputType<UnknownKeys> & objectUtil.flatten<objectUtil.addQuestionMarks<baseObjectOutputType<Shape>>>\n\nexport type baseObjectOutputType<Shape extends ZodRawShape> = {\n [k in keyof Shape]: Shape[k]['_output']\n}\n\nexport type objectInputType<\n Shape extends ZodRawShape,\n UnknownKeys extends UnknownKeysParam = UnknownKeysParam,\n> = objectUtil.flatten<baseObjectInputType<Shape>> & UnknownKeysInputType<UnknownKeys>\n\nexport type baseObjectInputType<Shape extends ZodRawShape> = objectUtil.addQuestionMarks<{\n [k in keyof Shape]: Shape[k]['_input']\n}>\n\nexport type UnknownKeysInputType<T extends UnknownKeysParam> = T extends ZodTypeAny\n ? { [k: string]: T['_input'] | unknown } // extra properties cannot contradict the main properties\n : T extends 'passthrough'\n ? { [k: string]: unknown }\n : {}\n\nexport type UnknownKeysOutputType<T extends UnknownKeysParam> = T extends ZodTypeAny\n ? { [k: string]: T['_output'] | unknown } // extra properties cannot contradict the main properties\n : T extends 'passthrough'\n ? { [k: string]: unknown }\n : {}\n\nexport type AdditionalProperties<T extends UnknownKeysParam> = T extends ZodTypeAny\n ? T\n : T extends 'passthrough'\n ? ZodAny\n : T extends 'strict'\n ? ZodNever\n : undefined\n\nexport type deoptional<T extends ZodTypeAny> =\n T extends ZodOptional<infer U> ? deoptional<U> : T extends ZodNullable<infer U> ? ZodNullable<deoptional<U>> : T\n\nexport type SomeZodObject = ZodObject<ZodRawShape, UnknownKeysParam>\n\nexport type noUnrecognized<Obj extends object, Shape extends object> = {\n [k in keyof Obj]: k extends keyof Shape ? Obj[k] : never\n}\nfunction deepPartialify(schema: ZodTypeAny): any {\n if (schema instanceof ZodObject) {\n const newShape: any = {}\n\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 } else if (schema instanceof ZodArray) {\n return new ZodArray({\n ...schema._def,\n type: deepPartialify(schema.element),\n })\n } else if (schema instanceof ZodOptional) {\n return ZodOptional.create(deepPartialify(schema.unwrap()))\n } else if (schema instanceof ZodNullable) {\n return ZodNullable.create(deepPartialify(schema.unwrap()))\n } else if (schema instanceof ZodTuple) {\n return ZodTuple.create(schema.items.map((item: any) => deepPartialify(item)))\n } else {\n return schema\n }\n}\n\nexport class ZodObject<\n T extends ZodRawShape = ZodRawShape,\n UnknownKeys extends UnknownKeysParam = UnknownKeysParam,\n Output = objectOutputType<T, UnknownKeys>,\n Input = objectInputType<T, UnknownKeys>,\n> extends ZodType<Output, ZodObjectDef<T, UnknownKeys>, Input> {\n private _cached: { shape: T; keys: string[] } | null = null\n\n _getCached(): { shape: T; keys: string[] } {\n if (this._cached !== null) return this._cached\n const shape = this._def.shape()\n const keys = util.objectKeys(shape)\n return (this._cached = { shape, keys })\n }\n\n dereference(defs: Record<string, ZodTypeAny>): ZodTypeAny {\n const currentShape = this._def.shape()\n const shape: Record<string, ZodTypeAny> = {}\n for (const key in currentShape) {\n shape[key] = currentShape[key]!.dereference(defs)\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n })\n }\n\n getReferences(): string[] {\n const shape = this._def.shape()\n const refs: string[] = []\n for (const key in shape) {\n refs.push(...shape[key]!.getReferences())\n }\n return unique(refs)\n }\n\n clone(): ZodObject<T, UnknownKeys, Output, Input> {\n const newShape: Record<string, ZodTypeAny> = {}\n const currentShape = this._def.shape()\n for (const [key, value] of Object.entries(currentShape)) {\n newShape[key] = value.clone()\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n }) as ZodObject<T, UnknownKeys, Output, Input>\n }\n\n _parse(input: ParseInput): ParseReturnType<this['_output']> {\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\n const { status, ctx } = this._processInputParams(input)\n\n const { shape, keys: shapeKeys } = this._getCached()\n const extraKeys: string[] = []\n\n if (this._def.unknownKeys !== 'strip') {\n for (const key in ctx.data) {\n if (!shapeKeys.includes(key)) {\n extraKeys.push(key)\n }\n }\n }\n\n const pairs: {\n key: ParseReturnType<any>\n value: ParseReturnType<any>\n alwaysSet?: boolean\n }[] = []\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\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 } 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 } else if (unknownKeys === 'strip') {\n } else {\n // run catchall validation\n for (const key of extraKeys) {\n const value = ctx.data[key]\n pairs.push({\n key: { status: 'valid', value: key },\n value: unknownKeys._parse(\n new ParseInputLazyPath(ctx, value, ctx.path, key), //, ctx.child(key), value, getParsedType(value)\n ),\n alwaysSet: key in ctx.data,\n })\n }\n }\n\n if (ctx.common.async) {\n return Promise.resolve()\n .then(async () => {\n const syncPairs: any[] = []\n for (const pair of pairs) {\n const key = await pair.key\n syncPairs.push({\n key,\n value: await pair.value,\n alwaysSet: pair.alwaysSet,\n })\n }\n return syncPairs\n })\n .then((syncPairs) => {\n return ParseStatus.mergeObjectSync(status, syncPairs)\n })\n } else {\n return ParseStatus.mergeObjectSync(status, pairs as any)\n }\n }\n\n get shape() {\n return this._def.shape()\n }\n\n strict(message?: errorUtil.ErrMessage): ZodObject<T, 'strict'> {\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\n strip(): ZodObject<T, 'strip'> {\n return new ZodObject({\n ...this._def,\n unknownKeys: 'strip',\n })\n }\n\n passthrough(): ZodObject<T, 'passthrough'> {\n return new ZodObject({\n ...this._def,\n unknownKeys: 'passthrough',\n })\n }\n\n /**\n * @returns The ZodType that is used to validate additional properties or undefined if extra keys are stripped.\n */\n additionalProperties(): AdditionalProperties<UnknownKeys> {\n if (this._def.unknownKeys instanceof ZodType) {\n return this._def.unknownKeys as AdditionalProperties<UnknownKeys>\n }\n if (this._def.unknownKeys === 'passthrough') {\n return ZodAny.create() as AdditionalProperties<UnknownKeys>\n }\n if (this._def.unknownKeys === 'strict') {\n return ZodNever.create() as AdditionalProperties<UnknownKeys>\n }\n return undefined as AdditionalProperties<UnknownKeys>\n }\n\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 nonstrict = this.passthrough\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 // })\n // };\n extend<Augmentation extends ZodRawShape>(\n augmentation: Augmentation,\n ): ZodObject<objectUtil.extendShape<T, Augmentation>, UnknownKeys> {\n return new ZodObject({\n ...this._def,\n shape: () => ({\n ...this._def.shape(),\n ...augmentation,\n }),\n })\n }\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 // })\n // }\n /**\n * @deprecated Use `.extend` instead\n * */\n augment = this.extend\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<Incoming extends AnyZodObject, Augmentation extends Incoming['shape']>(\n merging: Incoming,\n ): ZodObject<objectUtil.extendShape<T, Augmentation>, Incoming['_def']['unknownKeys']> {\n const merged: any = new ZodObject({\n unknownKeys: merging._def.unknownKeys,\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 // });\n // return merged;\n // }\n setKey<Key extends string, Schema extends ZodTypeAny>(\n key: Key,\n schema: Schema,\n ): ZodObject<\n T & {\n [k in Key]: Schema\n },\n UnknownKeys\n > {\n return this.augment({ [key]: schema }) as ZodObject<\n T & {\n [k in Key]: Schema\n },\n UnknownKeys\n >\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 // });\n // return merged;\n // }\n catchall<Index extends ZodTypeAny>(index: Index): ZodObject<T, Index> {\n return new ZodObject({\n ...this._def,\n unknownKeys: index,\n })\n }\n\n pick<\n Mask extends {\n [k in keyof T]?: true\n },\n >(mask: Mask): ZodObject<Pick<T, Extract<keyof T, keyof Mask>>, UnknownKeys> {\n const shape: any = {}\n\n util.objectKeys(mask).forEach((key) => {\n if (mask[key] && this.shape[key]) {\n shape[key] = this.shape[key]\n }\n })\n\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n })\n }\n\n omit<\n Mask extends {\n [k in keyof T]?: true\n },\n >(mask: Mask): ZodObject<Omit<T, keyof Mask>, UnknownKeys> {\n const shape: any = {}\n\n util.objectKeys(this.shape).forEach((key) => {\n if (!mask[key]) {\n shape[key] = this.shape[key]\n }\n })\n\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n })\n }\n\n /**\n * @deprecated\n */\n deepPartial(): partialUtil.DeepPartial<this> {\n return deepPartialify(this)\n }\n\n partial(): ZodObject<\n {\n [k in keyof T]: ZodOptional<T[k]>\n },\n UnknownKeys\n >\n partial<\n Mask extends {\n [k in keyof T]?: true\n },\n >(\n mask: Mask,\n ): ZodObject<\n objectUtil.noNever<{\n [k in keyof T]: k extends keyof Mask ? ZodOptional<T[k]> : T[k]\n }>,\n UnknownKeys\n >\n partial(mask?: any) {\n const newShape: Record<string, ZodTypeAny | undefined> = {}\n\n util.objectKeys(this.shape).forEach((key) => {\n const fieldSchema = this.shape[key]\n\n if (mask && !mask[key]) {\n newShape[key] = fieldSchema\n } else {\n newShape[key] = fieldSchema?.optional()\n }\n })\n\n return new ZodObject({\n ...this._def,\n shape: () => newShape as ZodRawShape,\n })\n }\n\n required(): ZodObject<\n {\n [k in keyof T]: deoptional<T[k]>\n },\n UnknownKeys\n >\n required<\n Mask extends {\n [k in keyof T]?: true\n },\n >(\n mask: Mask,\n ): ZodObject<\n objectUtil.noNever<{\n [k in keyof T]: k extends keyof Mask ? deoptional<T[k]> : T[k]\n }>,\n UnknownKeys\n >\n required(mask?: any) {\n const newShape: any = {}\n\n util.objectKeys(this.shape).forEach((key) => {\n if (mask && !mask[key]) {\n newShape[key] = this.shape[key]\n } else {\n const fieldSchema = this.shape[key]\n let newField = fieldSchema\n\n while (newField instanceof ZodOptional) {\n newField = (newField as ZodOptional<any>)._def.innerType\n }\n\n newShape[key] = newField\n }\n })\n\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n })\n }\n\n keyof(): ZodEnum<enumUtil.UnionToTupleString<keyof T>> {\n return createZodEnum(util.objectKeys(this.shape) as [string, ...string[]]) as any\n }\n\n isEqual(schema: ZodType): boolean {\n if (!(schema instanceof ZodObject)) return false\n if (!this._unknownKeysEqual(schema)) return false\n\n const thisShape = this._def.shape()\n const thatShape = schema._def.shape()\n\n type Property = [string, ZodTypeAny]\n const compare = (a: Property, b: Property) => a[0] === b[0] && a[1].isEqual(b[1])\n const thisProps = new CustomSet<Property>(Object.entries(thisShape), { compare })\n const thatProps = new CustomSet<Property>(Object.entries(thatShape), { compare })\n\n return thisProps.isEqual(thatProps)\n }\n\n private _unknownKeysEqual(that: ZodObject): boolean {\n const thisAdditionalProperties = this.additionalProperties()\n const thatAdditionalProperties = that.additionalProperties()\n if (thisAdditionalProperties === undefined || thatAdditionalProperties === undefined) {\n return thisAdditionalProperties === thatAdditionalProperties\n }\n return thisAdditionalProperties.isEqual(thatAdditionalProperties)\n }\n\n static create = <T extends ZodRawShape>(shape: T, params?: RawCreateParams): ZodObject<T, 'strip'> => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: 'strip',\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n })\n }\n\n static strictCreate = <T extends ZodRawShape>(shape: T, params?: RawCreateParams): ZodObject<T, 'strict'> => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: 'strict',\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n })\n }\n\n static lazycreate = <T extends ZodRawShape>(shape: () => T, params?: RawCreateParams): ZodObject<T, 'strip'> => {\n return new ZodObject({\n shape,\n unknownKeys: 'strip',\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n })\n }\n}\n\nexport type AnyZodObject = ZodObject<any, any>\n", "import {\n processCreateParams,\n ZodParsedType,\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeAny,\n ZodTypeDef,\n OK,\n ParseInput,\n ParseReturnType,\n} from '../index'\n\nexport interface ZodOptionalDef<T extends ZodTypeAny = ZodTypeAny> extends ZodTypeDef {\n innerType: T\n typeName: ZodFirstPartyTypeKind.ZodOptional\n}\n\nexport type ZodOptionalType<T extends ZodTypeAny> = ZodOptional<T>\n\nexport class ZodOptional<T extends ZodTypeAny = ZodTypeAny> extends ZodType<\n T['_output'] | undefined,\n ZodOptionalDef<T>,\n T['_input'] | undefined\n> {\n dereference(defs: Record<string, ZodTypeAny>): ZodTypeAny {\n return new ZodOptional({\n ...this._def,\n innerType: this._def.innerType.dereference(defs),\n })\n }\n\n getReferences(): string[] {\n return this._def.innerType.getReferences()\n }\n\n clone(): ZodOptional<T> {\n return new ZodOptional({\n ...this._def,\n innerType: this._def.innerType.clone(),\n }) as ZodOptional<T>\n }\n\n _parse(input: ParseInput): ParseReturnType<this['_output']> {\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\n unwrap() {\n return this._def.innerType\n }\n\n static create = <T extends ZodTypeAny>(type: T, params?: RawCreateParams): ZodOptional<T> => {\n return new ZodOptional({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodOptional,\n ...processCreateParams(params),\n })\n }\n\n isEqual(schema: ZodType): boolean {\n if (!(schema instanceof ZodOptional)) return false\n return this._def.innerType.isEqual(schema._def.innerType)\n }\n\n naked() {\n return this._def.innerType.naked()\n }\n\n mandatory(): ZodTypeAny {\n return this._def.innerType.mandatory()\n }\n}\n", "import { unique } from '../../utils'\nimport {\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeAny,\n ZodTypeDef,\n DIRTY,\n INVALID,\n ParseInput,\n ParseReturnType,\n} from '../index'\n\nexport interface ZodPipelineDef<A extends ZodTypeAny = ZodTypeAny, B extends ZodTypeAny = ZodTypeAny>\n extends ZodTypeDef {\n in: A\n out: B\n typeName: ZodFirstPartyTypeKind.ZodPipeline\n}\n\nexport class ZodPipeline<A extends ZodTypeAny = ZodTypeAny, B extends ZodTypeAny = ZodTypeAny> extends ZodType<\n B['_output'],\n ZodPipelineDef<A, B>,\n A['_input']\n> {\n dereference(defs: Record<string, ZodTypeAny>): ZodTypeAny {\n return new ZodPipeline({\n ...this._def,\n in: this._def.in.dereference(defs),\n out: this._def.out.dereference(defs),\n })\n }\n\n getReferences(): string[] {\n return unique([...this._def.in.getReferences(), ...this._def.out.getReferences()])\n }\n\n clone(): ZodPipeline<A, B> {\n return new ZodPipeline({\n ...this._def,\n in: this._def.in.clone(),\n out: this._def.out.clone(),\n }) as ZodPipeline<A, B>\n }\n\n _parse(input: ParseInput): ParseReturnType<any> {\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') return INVALID\n if (inResult.status === 'dirty') {\n status.dirty()\n return DIRTY(inResult.value)\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 } 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') return INVALID\n if (inResult.status === 'dirty') {\n status.dirty()\n return {\n status: 'dirty',\n value: inResult.value,\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\n static create<A extends ZodTypeAny, B extends ZodTypeAny>(a: A, b: B): ZodPipeline<A, B> {\n return new ZodPipeline({\n in: a,\n out: b,\n typeName: ZodFirstPartyTypeKind.ZodPipeline,\n })\n }\n\n isEqual(schema: ZodType): boolean {\n if (!(schema instanceof ZodPipeline)) return false\n if (!this._def.in.isEqual(schema._def.in)) return false\n if (!this._def.out.isEqual(schema._def.out)) return false\n return true\n }\n}\n", "import {\n ZodIssueCode,\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeAny,\n ZodTypeDef,\n processCreateParams,\n ZodParsedType,\n addIssueToContext,\n INVALID,\n OK,\n ParseInput,\n ParseReturnType,\n} from '../index'\n\nexport interface ZodPromiseDef<T extends ZodTypeAny = ZodTypeAny> extends ZodTypeDef {\n type: T\n typeName: ZodFirstPartyTypeKind.ZodPromise\n}\n\nexport class ZodPromise<T extends ZodTypeAny = ZodTypeAny> extends ZodType<\n Promise<T['_output']>,\n ZodPromiseDef<T>,\n Promise<T['_input']>\n> {\n unwrap() {\n return this._def.type\n }\n\n dereference(defs: Record<string, ZodTypeAny>): ZodTypeAny {\n return new ZodPromise({\n ...this._def,\n type: this._def.type.dereference(defs),\n })\n }\n\n getReferences(): string[] {\n return this._def.type.getReferences()\n }\n\n clone(): ZodPromise<T> {\n return new ZodPromise({\n ...this._def,\n type: this._def.type.clone(),\n }) as ZodPromise<T>\n }\n\n _parse(input: ParseInput): ParseReturnType<this['_output']> {\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\n const promisified = ctx.parsedType === ZodParsedType.promise ? ctx.data : Promise.resolve(ctx.data)\n\n return OK(\n promisified.then((data: any) => {\n return this._def.type.parseAsync(data, {\n path: ctx.path,\n errorMap: ctx.common.contextualErrorMap,\n })\n }),\n )\n }\n\n static create = <T extends ZodTypeAny>(schema: T, params?: RawCreateParams): ZodPromise<T> => {\n return new ZodPromise({\n type: schema,\n typeName: ZodFirstPartyTypeKind.ZodPromise,\n ...processCreateParams(params),\n })\n }\n\n isEqual(schema: ZodTypeAny): boolean {\n if (!(schema instanceof ZodPromise)) return false\n return this._def.type.isEqual(schema._def.type)\n }\n\n naked() {\n return this._def.type.naked()\n }\n}\n", "import {\n processCreateParams,\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeAny,\n ZodTypeDef,\n isValid,\n ParseInput,\n ParseReturnType,\n} from '../index'\n\ntype BuiltIn =\n | (((...args: any[]) => any) | (new (...args: any[]) => any))\n | { readonly [Symbol.toStringTag]: string }\n | Date\n | Error\n | Generator\n | Promise<unknown>\n | RegExp\n\ntype MakeReadonly<T> =\n T extends Map<infer K, infer V>\n ? ReadonlyMap<K, V>\n : T extends Set<infer V>\n ? ReadonlySet<V>\n : T extends [infer Head, ...infer Tail]\n ? readonly [Head, ...Tail]\n : T extends Array<infer V>\n ? ReadonlyArray<V>\n : T extends BuiltIn\n ? T\n : Readonly<T>\n\nexport interface ZodReadonlyDef<T extends ZodTypeAny = ZodTypeAny> extends ZodTypeDef {\n innerType: T\n typeName: ZodFirstPartyTypeKind.ZodReadonly\n}\n\nexport class ZodReadonly<T extends ZodTypeAny = ZodTypeAny> extends ZodType<\n MakeReadonly<T['_output']>,\n ZodReadonlyDef<T>,\n MakeReadonly<T['_input']>\n> {\n dereference(defs: Record<string, ZodTypeAny>): ZodTypeAny {\n return new ZodReadonly({\n ...this._def,\n innerType: this._def.innerType.dereference(defs),\n })\n }\n\n getReferences(): string[] {\n return this._def.innerType.getReferences()\n }\n\n clone(): ZodReadonly<T> {\n return new ZodReadonly({\n ...this._def,\n innerType: this._def.innerType.clone(),\n }) as ZodReadonly<T>\n }\n\n _parse(input: ParseInput): ParseReturnType<this['_output']> {\n const result = this._def.innerType._parse(input)\n if (isValid(result)) {\n result.value = Object.freeze(result.value)\n }\n return result\n }\n\n static create = <T extends ZodTypeAny>(type: T, params?: RawCreateParams): ZodReadonly<T> => {\n return new ZodReadonly({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodReadonly,\n ...processCreateParams(params),\n })\n }\n\n unwrap() {\n return this._def.innerType\n }\n\n isEqual(schema: ZodType): boolean {\n if (!(schema instanceof ZodReadonly)) return false\n return this._def.innerType.isEqual(schema._def.innerType)\n }\n\n naked() {\n return this._def.innerType.naked()\n }\n\n mandatory(): ZodReadonly<ZodTypeAny> {\n return new ZodReadonly({\n ...this._def,\n innerType: this._def.innerType.mandatory(),\n })\n }\n}\n", "import { unique } from '../../utils'\nimport {\n BRAND,\n ZodIssueCode,\n ParseInputLazyPath,\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeAny,\n ZodTypeDef,\n ZodString,\n processCreateParams,\n ZodParsedType,\n addIssueToContext,\n INVALID,\n ParseInput,\n ParseReturnType,\n ParseStatus,\n} from '../index'\n\nexport interface ZodRecordDef<Key extends KeySchema = ZodString, Value extends ZodTypeAny = ZodTypeAny>\n extends ZodTypeDef {\n valueType: Value\n keyType: Key\n typeName: ZodFirstPartyTypeKind.ZodRecord\n}\n\nexport type KeySchema = ZodType<string | number | symbol, any, any>\n\nexport type RecordType<K extends string | number | symbol, V> = [string] extends [K]\n ? Record<K, V>\n : [number] extends [K]\n ? Record<K, V>\n : [symbol] extends [K]\n ? Record<K, V>\n : [BRAND<string | number | symbol>] extends [K]\n ? Record<K, V>\n : Partial<Record<K, V>>\n\nexport class ZodRecord<Key extends KeySchema = ZodString, Value extends ZodTypeAny = ZodTypeAny> extends ZodType<\n RecordType<Key['_output'], Value['_output']>,\n ZodRecordDef<Key, Value>,\n RecordType<Key['_input'], Value['_input']>\n> {\n get keySchema() {\n return this._def.keyType\n }\n get valueSchema() {\n return this._def.valueType\n }\n\n dereference(defs: Record<string, ZodTypeAny>): ZodTypeAny {\n const keyType = this._def.keyType.dereference(defs)\n const valueType = this._def.valueType.dereference(defs)\n return new ZodRecord({\n ...this._def,\n keyType,\n valueType,\n })\n }\n\n getReferences(): string[] {\n return unique([...this._def.keyType.getReferences(), ...this._def.valueType.getReferences()])\n }\n\n clone(): ZodRecord<Key, Value> {\n return new ZodRecord({\n ...this._def,\n keyType: this._def.keyType.clone(),\n valueType: this._def.valueType.clone(),\n }) as ZodRecord<Key, Value>\n }\n\n _parse(input: ParseInput): ParseReturnType<this['_output']> {\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\n const pairs: {\n key: ParseReturnType<any>\n value: ParseReturnType<any>\n }[] = []\n\n const keyType = this._def.keyType\n const valueType = this._def.valueType\n\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 })\n }\n\n if (ctx.common.async) {\n return ParseStatus.mergeObjectAsync(status, pairs)\n } else {\n return ParseStatus.mergeObjectSync(status, pairs as any)\n }\n }\n\n get element() {\n return this._def.valueType\n }\n\n static create<Value extends ZodTypeAny>(valueType: Value, params?: RawCreateParams): ZodRecord<ZodString, Value>\n static create<Keys extends KeySchema, Value extends ZodTypeAny>(\n keySchema: Keys,\n valueType: Value,\n params?: RawCreateParams,\n ): ZodRecord<Keys, Value>\n static create(first: any, second?: any, third?: any): ZodRecord<any, any> {\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\n return new ZodRecord({\n keyType: ZodString.create(),\n valueType: first,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(second),\n })\n }\n\n isEqual(schema: ZodType): boolean {\n if (!(schema instanceof ZodRecord)) return false\n if (!this._def.keyType.isEqual(schema._def.keyType)) return false\n if (!this._def.valueType.isEqual(schema._def.valueType)) return false\n return true\n }\n}\n", "import {\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeDef,\n INVALID,\n ParseInput,\n ParseReturnType,\n ZodTypeAny,\n addIssueToContext,\n ZodIssueCode,\n} from '../index'\n\nexport interface ZodRefDef extends ZodTypeDef {\n typeName: ZodFirstPartyTypeKind.ZodRef\n uri: string\n}\n\ntype ZodRefOutput = NonNullable<unknown>\n\nexport class ZodRef extends ZodType<ZodRefOutput, ZodRefDef> {\n dereference(defs: Record<string, ZodTypeAny>): ZodTypeAny {\n const def = defs[this._def.uri]\n if (!def) {\n return this\n }\n return def\n }\n\n getReferences(): string[] {\n return [this._def.uri]\n }\n\n _parse(input: ParseInput): ParseReturnType<never> {\n // a schema containing references should never be used to parse data\n const ctx = this._getOrReturnCtx(input)\n addIssueToContext(ctx, {\n code: ZodIssueCode.unresolved_reference,\n })\n return INVALID\n }\n\n static create = (uri: string): ZodRef => {\n return new ZodRef({\n typeName: ZodFirstPartyTypeKind.ZodRef,\n uri,\n })\n }\n\n public override isOptional(): boolean {\n return false\n }\n\n public override isNullable(): boolean {\n return false\n }\n\n isEqual(schema: ZodType): boolean {\n if (!(schema instanceof ZodRef)) return false\n return this._def.uri === schema._def.uri\n }\n}\n", "import {\n ZodIssueCode,\n ParseInputLazyPath,\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeAny,\n ZodTypeDef,\n processCreateParams,\n ZodParsedType,\n errorUtil,\n addIssueToContext,\n INVALID,\n ParseInput,\n ParseReturnType,\n SyncParseReturnType,\n} from '../index'\n\nexport interface ZodSetDef<Value extends ZodTypeAny = ZodTypeAny> extends ZodTypeDef {\n valueType: Value\n typeName: ZodFirstPartyTypeKind.ZodSet\n minSize: { value: number; message?: string } | null\n maxSize: { value: number; message?: string } | null\n}\n\nexport class ZodSet<Value extends ZodTypeAny = ZodTypeAny> extends ZodType<\n Set<Value['_output']>,\n ZodSetDef<Value>,\n Set<Value['_input']>\n> {\n dereference(defs: Record<string, ZodTypeAny>): ZodTypeAny {\n return new ZodSet({\n ...this._def,\n valueType: this._def.valueType.dereference(defs),\n })\n }\n\n getReferences(): string[] {\n return this._def.valueType.getReferences()\n }\n\n clone(): ZodSet<Value> {\n return new ZodSet({\n ...this._def,\n valueType: this._def.valueType.clone(),\n }) as ZodSet<Value>\n }\n\n _parse(input: ParseInput): ParseReturnType<this['_output']> {\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\n const def = this._def\n\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\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\n const valueType = this._def.valueType\n\n function finalizeSet(elements: SyncParseReturnType<any>[]) {\n const parsedSet = new Set()\n for (const element of elements) {\n if (element.status === 'aborted') return INVALID\n if (element.status === 'dirty') status.dirty()\n parsedSet.add(element.value)\n }\n return { status: status.value, value: parsedSet }\n }\n\n const elements = [...(ctx.data as Set<unknown>).values()].map((item, i) =>\n valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)),\n )\n\n if (ctx.common.async) {\n return Promise.all(elements).then((elements) => finalizeSet(elements))\n } else {\n return finalizeSet(elements as SyncParseReturnType[])\n }\n }\n\n min(minSize: number, message?: errorUtil.ErrMessage): this {\n return new ZodSet({\n ...this._def,\n minSize: { value: minSize, message: errorUtil.toString(message) },\n }) as this\n }\n\n max(maxSize: number, message?: errorUtil.ErrMessage): this {\n return new ZodSet({\n ...this._def,\n maxSize: { value: maxSize, message: errorUtil.toString(message) },\n }) as this\n }\n\n size(size: number, message?: errorUtil.ErrMessage): this {\n return this.min(size, message).max(size, message) as this\n }\n\n nonempty(message?: errorUtil.ErrMessage): ZodSet<Value> {\n return this.min(1, message) as this\n }\n\n static create = <Value extends ZodTypeAny = ZodTypeAny>(\n valueType: Value,\n params?: RawCreateParams,\n ): ZodSet<Value> => {\n return new ZodSet({\n valueType,\n minSize: null,\n maxSize: null,\n typeName: ZodFirstPartyTypeKind.ZodSet,\n ...processCreateParams(params),\n })\n }\n\n isEqual(schema: ZodType): boolean {\n if (!(schema instanceof ZodSet)) return false\n\n const thisMin = this._def.minSize?.value\n const thatMin = schema._def.minSize?.value\n if (thisMin !== thatMin) return false // min message is not important for equality\n\n const thisMax = this._def.maxSize?.value\n const thatMax = schema._def.maxSize?.value\n if (thisMax !== thatMax) return false // max message is not important for equality\n\n return this._def.valueType.isEqual(schema._def.valueType)\n }\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport {\n StringValidation,\n ZodIssueCode,\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeDef,\n processCreateParams,\n util,\n ZodParsedType,\n errorUtil,\n addIssueToContext,\n INVALID,\n ParseContext,\n ParseInput,\n ParseReturnType,\n ParseStatus,\n} from '../index'\nimport { CustomSet } from '../utils/custom-set'\nimport { generateDatetimeRegex } from './datetime'\n\nexport type IpVersion = 'v4' | 'v6'\nexport type ZodStringCheck =\n | { kind: 'min'; value: number; message?: string }\n | { kind: 'max'; value: number; message?: string }\n | { kind: 'length'; value: number; message?: string }\n | { kind: 'email'; message?: string }\n | { kind: 'url'; message?: string }\n | { kind: 'emoji'; message?: string }\n | { kind: 'uuid'; message?: string }\n | { kind: 'cuid'; message?: string }\n | { kind: 'includes'; value: string; position?: number; message?: string }\n | { kind: 'cuid2'; message?: string }\n | { kind: 'ulid'; message?: string }\n | { kind: 'startsWith'; value: string; message?: string }\n | { kind: 'endsWith'; value: string; message?: string }\n | { kind: 'regex'; regex: RegExp; message?: string }\n | { kind: 'trim'; message?: string }\n | { kind: 'toLowerCase'; message?: string }\n | { kind: 'toUpperCase'; message?: string }\n | {\n kind: 'datetime'\n offset: boolean\n precision: number | null\n message?: string\n }\n | { kind: 'ip'; version?: IpVersion; message?: string }\n\nexport interface ZodStringDef extends ZodTypeDef {\n checks: ZodStringCheck[]\n typeName: ZodFirstPartyTypeKind.ZodString\n coerce: boolean\n}\nexport const cuidRegex = /^c[^\\s-]{8,}$/i\nexport const cuid2Regex = /^[a-z][a-z0-9]*$/\nexport const ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/\nexport const 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\n// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn't support unicode\n\nexport const emailRegex = /^(?!\\.)(?!.*\\.\\.)([A-Z0-9_+-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i\n\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emojiRegex = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`\n\nexport const isEmojiRegex = (value: any) => value === _emojiRegex\n\nlet emojiRegex: RegExp\nexport const ipv4Regex =\n /^(((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}))$/\nexport 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})))$/\n\nfunction isValidIP(ip: string, version?: IpVersion) {\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\n return false\n}\n\nexport class ZodString extends ZodType<string, ZodStringDef> {\n _parse(input: ParseInput): ParseReturnType<string> {\n if (this._def.coerce) {\n input.data = String(input.data)\n }\n const parsedType = this._getType(input)\n\n if (parsedType !== ZodParsedType.string) {\n const ctx = this._getOrReturnCtx(input)\n addIssueToContext(\n ctx,\n {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.string,\n received: ctx.parsedType,\n },\n //\n )\n return INVALID\n }\n\n const status = new ParseStatus()\n let ctx: undefined | ParseContext = undefined\n\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 } 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 } 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 } 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 } 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 } 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 } 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 } 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 } 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 } 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 } else if (check.kind === 'url') {\n try {\n new URL(input.data)\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 } 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 } else if (check.kind === 'trim') {\n input.data = input.data.trim()\n } else if (check.kind === 'includes') {\n if (!(input.data as string).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 } else if (check.kind === 'toLowerCase') {\n input.data = input.data.toLowerCase()\n } else if (check.kind === 'toUpperCase') {\n input.data = input.data.toUpperCase()\n } else if (check.kind === 'startsWith') {\n if (!(input.data as string).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 } else if (check.kind === 'endsWith') {\n if (!(input.data as string).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 } else if (check.kind === 'datetime') {\n const regex = generateDatetimeRegex(check)\n\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 } 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 } else {\n util.assertNever(check)\n }\n }\n\n return { status: status.value, value: input.data }\n }\n\n protected _regex(regex: RegExp, validation: StringValidation, message?: errorUtil.ErrMessage) {\n return this.refinement((data) => regex.test(data), {\n validation,\n code: ZodIssueCode.invalid_string,\n ...errorUtil.errToObj(message),\n })\n }\n\n _addCheck(check: ZodStringCheck) {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, check],\n })\n }\n\n email(message?: errorUtil.ErrMessage) {\n return this._addCheck({ kind: 'email', ...errorUtil.errToObj(message) })\n }\n url(message?: errorUtil.ErrMessage) {\n return this._addCheck({ kind: 'url', ...errorUtil.errToObj(message) })\n }\n emoji(message?: errorUtil.ErrMessage) {\n return this._addCheck({ kind: 'emoji', ...errorUtil.errToObj(message) })\n }\n uuid(message?: errorUtil.ErrMessage) {\n return this._addCheck({ kind: 'uuid', ...errorUtil.errToObj(message) })\n }\n cuid(message?: errorUtil.ErrMessage) {\n return this._addCheck({ kind: 'cuid', ...errorUtil.errToObj(message) })\n }\n cuid2(message?: errorUtil.ErrMessage) {\n return this._addCheck({ kind: 'cuid2', ...errorUtil.errToObj(message) })\n }\n ulid(message?: errorUtil.ErrMessage) {\n return this._addCheck({ kind: 'ulid', ...errorUtil.errToObj(message) })\n }\n\n ip(options?: string | { version?: 'v4' | 'v6'; message?: string }) {\n return this._addCheck({ kind: 'ip', ...errorUtil.errToObj(options) })\n }\n\n datetime(\n options?:\n | string\n | {\n message?: string | undefined\n precision?: number | null\n offset?: boolean\n },\n ) {\n if (typeof options === 'string') {\n return this._addCheck({\n kind: 'datetime',\n precision: null,\n offset: 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 ...errorUtil.errToObj(options?.message),\n })\n }\n\n regex(regex: RegExp, message?: errorUtil.ErrMessage) {\n return this._addCheck({\n kind: 'regex',\n regex: regex,\n ...errorUtil.errToObj(message),\n })\n }\n\n includes(value: string, options?: { message?: string; position?: number }) {\n return this._addCheck({\n kind: 'includes',\n value: value,\n position: options?.position,\n ...errorUtil.errToObj(options?.message),\n })\n }\n\n startsWith(value: string, message?: errorUtil.ErrMessage) {\n return this._addCheck({\n kind: 'startsWith',\n value: value,\n ...errorUtil.errToObj(message),\n })\n }\n\n endsWith(value: string, message?: errorUtil.ErrMessage) {\n return this._addCheck({\n kind: 'endsWith',\n value: value,\n ...errorUtil.errToObj(message),\n })\n }\n\n min(minLength: number, message?: errorUtil.ErrMessage) {\n return this._addCheck({\n kind: 'min',\n value: minLength,\n ...errorUtil.errToObj(message),\n })\n }\n\n max(maxLength: number, message?: errorUtil.ErrMessage) {\n return this._addCheck({\n kind: 'max',\n value: maxLength,\n ...errorUtil.errToObj(message),\n })\n }\n\n length(len: number, message?: errorUtil.ErrMessage) {\n return this._addCheck({\n kind: 'length',\n value: len,\n ...errorUtil.errToObj(message),\n })\n }\n\n /**\n * @deprecated Use z.string().min(1) instead.\n * @see {@link ZodString.min}\n */\n nonempty(message?: errorUtil.ErrMessage) {\n return this.min(1, errorUtil.errToObj(message))\n }\n\n trim() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: 'trim' }],\n })\n }\n\n secret() {\n this._def[zuiKey] = { ...this._def[zuiKey], secret: true }\n return this\n }\n\n toLowerCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: 'toLowerCase' }],\n })\n }\n\n toUpperCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: 'toUpperCase' }],\n })\n }\n\n get isDatetime() {\n return !!this._def.checks.find((ch) => ch.kind === 'datetime')\n }\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 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\n get minLength() {\n let min: number | null = null\n for (const ch of this._def.checks) {\n if (ch.kind === 'min') {\n if (min === null || ch.value > min) min = ch.value\n }\n }\n return min\n }\n get maxLength() {\n let max: number | null = null\n for (const ch of this._def.checks) {\n if (ch.kind === 'max') {\n if (max === null || ch.value < max) max = ch.value\n }\n }\n return max\n }\n\n static create = (params?: RawCreateParams & { coerce?: true }): ZodString => {\n return new ZodString({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodString,\n coerce: params?.coerce ?? false,\n ...processCreateParams({ ...params, supportsExtensions: ['secret'] }),\n })\n }\n\n isEqual(schema: ZodType): boolean {\n if (!(schema instanceof ZodString)) return false\n const thisChecks = new CustomSet<ZodStringCheck>(this._def.checks)\n const thatChecks = new CustomSet<ZodStringCheck>(schema._def.checks)\n return thisChecks.isEqual(thatChecks)\n }\n}\n", "import {\n ZodIssueCode,\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeDef,\n processCreateParams,\n ZodParsedType,\n addIssueToContext,\n INVALID,\n OK,\n ParseInput,\n ParseReturnType,\n} from '../index'\n\nexport interface ZodSymbolDef extends ZodTypeDef {\n typeName: ZodFirstPartyTypeKind.ZodSymbol\n}\n\nexport class ZodSymbol extends ZodType<symbol, ZodSymbolDef, symbol> {\n _parse(input: ParseInput): ParseReturnType<this['_output']> {\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\n return OK(input.data)\n }\n\n static create = (params?: RawCreateParams): ZodSymbol => {\n return new ZodSymbol({\n typeName: ZodFirstPartyTypeKind.ZodSymbol,\n ...processCreateParams(params),\n })\n }\n\n isEqual(schema: ZodType): boolean {\n return schema instanceof ZodSymbol\n }\n}\n", "import {\n IssueData,\n input,\n output,\n RawCreateParams,\n RefinementCtx,\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeAny,\n ZodTypeDef,\n processCreateParams,\n util,\n addIssueToContext,\n DIRTY,\n INVALID,\n isValid,\n ParseInput,\n ParseReturnType,\n} from '../index'\n\nexport type Refinement<T> = (arg: T, ctx: RefinementCtx) => any\nexport type SuperRefinement<T> = (arg: T, ctx: RefinementCtx) => void | Promise<void>\n\nexport type RefinementEffect<T> = {\n type: 'refinement'\n refinement: (arg: T, ctx: RefinementCtx) => any\n}\nexport type TransformEffect<T> = {\n type: 'transform'\n transform: (arg: T, ctx: RefinementCtx) => any\n}\nexport type PreprocessEffect<T> = {\n type: 'preprocess'\n transform: (arg: T, ctx: RefinementCtx) => any\n}\nexport type Effect<T> = RefinementEffect<T> | TransformEffect<T> | PreprocessEffect<T>\n\nexport interface ZodEffectsDef<T extends ZodTypeAny = ZodTypeAny> extends ZodTypeDef {\n schema: T\n typeName: ZodFirstPartyTypeKind.ZodEffects\n effect: Effect<any>\n}\n\nexport class ZodEffects<T extends ZodTypeAny = ZodTypeAny, Output = output<T>, Input = input<T>> extends ZodType<\n Output,\n ZodEffectsDef<T>,\n Input\n> {\n innerType() {\n return this._def.schema\n }\n\n /**\n * @deprecated use naked() instead\n */\n sourceType(): T {\n return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects\n ? (this._def.schema as unknown as ZodEffects<T>).sourceType()\n : (this._def.schema as T)\n }\n\n dereference(defs: Record<string, ZodTypeAny>): ZodTypeAny {\n return new ZodEffects({\n ...this._def,\n schema: this._def.schema.dereference(defs),\n })\n }\n\n getReferences(): string[] {\n return this._def.schema.getReferences()\n }\n\n clone(): ZodEffects<T, Output, Input> {\n return new ZodEffects({\n ...this._def,\n schema: this._def.schema.clone(),\n }) as ZodEffects<T, Output, Input>\n }\n\n _parse(input: ParseInput): ParseReturnType<this['_output']> {\n const { status, ctx } = this._processInputParams(input)\n\n const effect = this._def.effect || null\n\n const checkCtx: RefinementCtx = {\n addIssue: (arg: IssueData) => {\n addIssueToContext(ctx, arg)\n if (arg.fatal) {\n status.abort()\n } else {\n status.dirty()\n }\n },\n get path() {\n return ctx.path\n },\n }\n\n checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx)\n\n if (effect.type === 'preprocess') {\n const processed = effect.transform(ctx.data, checkCtx)\n\n if (ctx.common.async) {\n return Promise.resolve(processed).then(async (processed) => {\n if (status.value === 'aborted') return INVALID\n\n const result = await this._def.schema._parseAsync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n })\n if (result.status === 'aborted') return INVALID\n if (result.status === 'dirty') return DIRTY(result.value)\n if (status.value === 'dirty') return DIRTY(result.value)\n return result\n })\n } else {\n if (status.value === 'aborted') 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') return INVALID\n if (result.status === 'dirty') return DIRTY(result.value)\n if (status.value === 'dirty') return DIRTY(result.value)\n return result\n }\n }\n if (effect.type === 'refinement') {\n const executeRefinement = (acc: unknown): any => {\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\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') return INVALID\n if (inner.status === 'dirty') status.dirty()\n\n // return value is ignored\n executeRefinement(inner.value)\n return { status: status.value, value: inner.value }\n } else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((inner) => {\n if (inner.status === 'aborted') return INVALID\n if (inner.status === 'dirty') status.dirty()\n\n return executeRefinement(inner.value).then(() => {\n return { status: status.value, value: inner.value }\n })\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\n if (!isValid(base)) return base\n\n const result = effect.transform(base.value, checkCtx)\n if (result instanceof Promise) {\n throw new Error(\n `Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`,\n )\n }\n\n return { status: status.value, value: result }\n } else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((base) => {\n if (!isValid(base)) return base\n\n return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({\n status: status.value,\n value: result,\n }))\n })\n }\n }\n\n util.assertNever(effect)\n }\n\n static create = <I extends ZodType>(\n schema: I,\n effect: Effect<I['_output']>,\n params?: RawCreateParams,\n ): ZodEffects<I, I['_output']> => {\n return new ZodEffects({\n schema,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect,\n ...processCreateParams(params),\n })\n }\n\n static createWithPreprocess = <I extends ZodTypeAny>(\n preprocess: (arg: unknown, ctx: RefinementCtx) => unknown,\n schema: I,\n params?: RawCreateParams,\n ): ZodEffects<I, I['_output'], unknown> => {\n return new ZodEffects({\n schema,\n effect: { type: 'preprocess', transform: preprocess },\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n ...processCreateParams(params),\n })\n }\n\n isEqual(schema: ZodType): boolean {\n if (!(schema instanceof ZodEffects)) return false\n if (!this._def.schema.isEqual(schema._def.schema)) return false\n\n if (this._def.effect.type === 'refinement') {\n if (schema._def.effect.type !== 'refinement') return false\n return util.compareFunctions(this._def.effect.refinement, schema._def.effect.refinement)\n }\n\n if (this._def.effect.type === 'transform') {\n if (schema._def.effect.type !== 'transform') return false\n return util.compareFunctions(this._def.effect.transform, schema._def.effect.transform)\n }\n\n if (this._def.effect.type === 'preprocess') {\n if (schema._def.effect.type !== 'preprocess') return false\n return util.compareFunctions(this._def.effect.transform, schema._def.effect.transform)\n }\n\n type _assertion = util.AssertNever<typeof this._def.effect>\n return false\n }\n\n naked() {\n return this._def.schema.naked()\n }\n\n mandatory(): ZodEffects<ZodTypeAny> {\n return new ZodEffects({\n ...this._def,\n schema: this._def.schema.mandatory(),\n })\n }\n}\nexport { ZodEffects as ZodTransformer }\n", "import { unique } from '../../utils'\nimport {\n ZodIssueCode,\n ParseInputLazyPath,\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeAny,\n ZodTypeDef,\n processCreateParams,\n ZodParsedType,\n addIssueToContext,\n INVALID,\n ParseInput,\n ParseReturnType,\n ParseStatus,\n SyncParseReturnType,\n} from '../index'\nimport { CustomSet } from '../utils/custom-set'\n\nexport type ZodTupleItems = [ZodTypeAny, ...ZodTypeAny[]]\nexport type AssertArray<T> = T extends any[] ? T : never\nexport type OutputTypeOfTuple<T extends ZodTupleItems | []> = AssertArray<{\n [k in keyof T]: T[k] extends ZodType<any, any> ? T[k]['_output'] : never\n}>\nexport type OutputTypeOfTupleWithRest<\n T extends ZodTupleItems | [],\n Rest extends ZodTypeAny | null = null,\n> = Rest extends ZodTypeAny ? [...OutputTypeOfTuple<T>, ...Rest['_output'][]] : OutputTypeOfTuple<T>\n\nexport type InputTypeOfTuple<T extends ZodTupleItems | []> = AssertArray<{\n [k in keyof T]: T[k] extends ZodType<any, any> ? T[k]['_input'] : never\n}>\nexport type InputTypeOfTupleWithRest<\n T extends ZodTupleItems | [],\n Rest extends ZodTypeAny | null = null,\n> = Rest extends ZodTypeAny ? [...InputTypeOfTuple<T>, ...Rest['_input'][]] : InputTypeOfTuple<T>\n\nexport interface ZodTupleDef<T extends ZodTupleItems | [] = ZodTupleItems, Rest extends ZodTypeAny | null = null>\n extends ZodTypeDef {\n items: T\n rest: Rest\n typeName: ZodFirstPartyTypeKind.ZodTuple\n}\n\nexport type AnyZodTuple = ZodTuple<[ZodTypeAny, ...ZodTypeAny[]] | [], ZodTypeAny | null>\nexport class ZodTuple<\n T extends [ZodTypeAny, ...ZodTypeAny[]] | [] = [ZodTypeAny, ...ZodTypeAny[]],\n Rest extends ZodTypeAny | null = null,\n> extends ZodType<OutputTypeOfTupleWithRest<T, Rest>, ZodTupleDef<T, Rest>, InputTypeOfTupleWithRest<T, Rest>> {\n dereference(defs: Record<string, ZodTypeAny>): ZodTypeAny {\n const items = this._def.items.map((item) => item.dereference(defs)) as [ZodTypeAny, ...ZodTypeAny[]]\n const rest = this._def.rest ? this._def.rest.dereference(defs) : null\n return new ZodTuple({\n ...this._def,\n items,\n rest,\n })\n }\n\n getReferences(): string[] {\n return unique([\n ...this._def.items.flatMap((item) => item.getReferences()),\n ...(this._def.rest ? this._def.rest.getReferences() : []),\n ])\n }\n\n clone(): ZodTuple<T, Rest> {\n const items = this._def.items.map((item) => item.clone()) as [ZodTypeAny, ...ZodTypeAny[]]\n const rest = this._def.rest ? this._def.rest.clone() : null\n return new ZodTuple({\n ...this._def,\n items,\n rest,\n }) as ZodTuple<T, Rest>\n }\n\n _parse(input: ParseInput): ParseReturnType<this['_output']> {\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\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\n return INVALID\n }\n\n const rest = this._def.rest\n\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\n const items = [...ctx.data]\n .map((item, itemIndex) => {\n const schema = this._def.items[itemIndex] || this._def.rest\n if (!schema) return null\n return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex))\n })\n .filter((x) => !!x) // filter nulls\n\n if (ctx.common.async) {\n return Promise.all(items).then((results) => {\n return ParseStatus.mergeArray(status, results)\n })\n } else {\n return ParseStatus.mergeArray(status, items as SyncParseReturnType[])\n }\n }\n\n get items() {\n return this._def.items\n }\n\n rest<Rest extends ZodTypeAny>(rest: Rest): ZodTuple<T, Rest> {\n return new ZodTuple({\n ...this._def,\n rest,\n })\n }\n\n static create = <T extends [ZodTypeAny, ...ZodTypeAny[]] | []>(\n schemas: T,\n params?: RawCreateParams,\n ): ZodTuple<T, null> => {\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 }\n\n isEqual(schema: ZodType): boolean {\n if (!(schema instanceof ZodTuple)) return false\n if (!this._restEquals(schema)) return false\n\n const compare = (a: ZodType, b: ZodType) => a.isEqual(b)\n const thisItems = new CustomSet<ZodType>(this._def.items, { compare })\n const schemaItems = new CustomSet<ZodType>(schema._def.items, { compare })\n return thisItems.isEqual(schemaItems)\n }\n\n private _restEquals(schema: ZodTuple) {\n if (this._def.rest === null) {\n return schema._def.rest === null\n }\n return schema._def.rest !== null && this._def.rest.isEqual(schema._def.rest)\n }\n}\n", "import {\n ZodIssueCode,\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeDef,\n processCreateParams,\n ZodParsedType,\n addIssueToContext,\n INVALID,\n OK,\n ParseInput,\n ParseReturnType,\n ZodNever,\n} from '../index'\n\nexport interface ZodUndefinedDef extends ZodTypeDef {\n typeName: ZodFirstPartyTypeKind.ZodUndefined\n}\n\nexport class ZodUndefined extends ZodType<undefined, ZodUndefinedDef> {\n _parse(input: ParseInput): ParseReturnType<this['_output']> {\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 params?: RawCreateParams\n\n static create = (params?: RawCreateParams): ZodUndefined => {\n return new ZodUndefined({\n typeName: ZodFirstPartyTypeKind.ZodUndefined,\n ...processCreateParams(params),\n })\n }\n\n isEqual(schema: ZodType): boolean {\n return schema instanceof ZodUndefined\n }\n\n mandatory(): ZodNever {\n return ZodNever.create({\n ...this._def,\n })\n }\n}\n", "import { unique } from '../../utils'\nimport {\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeAny,\n ZodTypeDef,\n ZodError,\n ZodIssue,\n ZodIssueCode,\n processCreateParams,\n addIssueToContext,\n DIRTY,\n INVALID,\n ParseContext,\n ParseInput,\n ParseReturnType,\n SyncParseReturnType,\n ZodUndefined,\n ZodNever,\n} from '../index'\nimport { CustomSet } from '../utils/custom-set'\n\ntype DefaultZodUnionOptions = Readonly<[ZodTypeAny, ZodTypeAny, ...ZodTypeAny[]]>\nexport type ZodUnionOptions = Readonly<[ZodTypeAny, ...ZodTypeAny[]]>\nexport interface ZodUnionDef<T extends ZodUnionOptions = DefaultZodUnionOptions> extends ZodTypeDef {\n options: T\n typeName: ZodFirstPartyTypeKind.ZodUnion\n}\n\nexport class ZodUnion<T extends ZodUnionOptions = DefaultZodUnionOptions> extends ZodType<\n T[number]['_output'],\n ZodUnionDef<T>,\n T[number]['_input']\n> {\n dereference(defs: Record<string, ZodTypeAny>): ZodTypeAny {\n const options = this._def.options.map((option) => option.dereference(defs)) as [\n ZodTypeAny,\n ZodTypeAny,\n ...ZodTypeAny[],\n ]\n return new ZodUnion({\n ...this._def,\n options,\n })\n }\n\n getReferences(): string[] {\n return unique(\n this._def.options.reduce<string[]>((acc, option) => {\n return [...acc, ...option.getReferences()]\n }, []),\n )\n }\n\n clone(): ZodUnion<T> {\n const options = this._def.options.map((option) => option.clone()) as [ZodTypeAny, ...ZodTypeAny[]]\n return new ZodUnion({\n ...this._def,\n options,\n }) as ZodUnion<any>\n }\n\n _parse(input: ParseInput): ParseReturnType<this['_output']> {\n const { ctx } = this._processInputParams(input)\n const options = this._def.options\n\n function handleResults(results: { ctx: ParseContext; result: SyncParseReturnType<any> }[]) {\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\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\n // return invalid\n const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues))\n\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n })\n return INVALID\n }\n\n if (ctx.common.async) {\n return Promise.all(\n options.map(async (option) => {\n const childCtx: ParseContext = {\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 }),\n ).then(handleResults)\n } else {\n let dirty: undefined | { result: DIRTY<any>; ctx: ParseContext } = undefined\n const issues: ZodIssue[][] = []\n for (const option of options) {\n const childCtx: ParseContext = {\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\n if (result.status === 'valid') {\n return result\n } else if (result.status === 'dirty' && !dirty) {\n dirty = { result, ctx: childCtx }\n }\n\n if (childCtx.common.issues.length) {\n issues.push(childCtx.common.issues)\n }\n }\n\n if (dirty) {\n ctx.common.issues.push(...dirty.ctx.common.issues)\n return dirty.result\n }\n\n const unionErrors = issues.map((issues) => new ZodError(issues))\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n })\n\n return INVALID\n }\n }\n\n get options() {\n return this._def.options\n }\n\n static create = <T extends Readonly<[ZodTypeAny, ZodTypeAny, ...ZodTypeAny[]]>>(\n types: T,\n params?: RawCreateParams,\n ): ZodUnion<T> => {\n return new ZodUnion({\n options: types,\n typeName: ZodFirstPartyTypeKind.ZodUnion,\n ...processCreateParams(params),\n })\n }\n\n isEqual(schema: ZodType): boolean {\n if (!(schema instanceof ZodUnion)) return false\n\n const compare = (a: ZodType, b: ZodType) => a.isEqual(b)\n const thisOptions = new CustomSet<ZodType>([...this._def.options], { compare })\n const thatOptions = new CustomSet<ZodType>([...schema._def.options], { compare })\n\n return thisOptions.isEqual(thatOptions)\n }\n\n mandatory(): ZodType {\n const options = this._def.options.filter((o) => !(o instanceof ZodUndefined)).map((option) => option.mandatory())\n const [first, second, ...others] = options\n if (!first) {\n return ZodNever.create({\n ...this._def,\n })\n }\n if (!second) {\n return first\n }\n return new ZodUnion({\n ...this._def,\n options: [first, second, ...others],\n })\n }\n}\n", "import {\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeDef,\n processCreateParams,\n OK,\n ParseInput,\n ParseReturnType,\n} from '../index'\n\nexport interface ZodUnknownDef extends ZodTypeDef {\n typeName: ZodFirstPartyTypeKind.ZodUnknown\n}\n\nexport class ZodUnknown extends ZodType<unknown, ZodUnknownDef> {\n // required\n _unknown = true as const\n _parse(input: ParseInput): ParseReturnType<this['_output']> {\n return OK(input.data)\n }\n\n static create = (params?: RawCreateParams): ZodUnknown => {\n return new ZodUnknown({\n typeName: ZodFirstPartyTypeKind.ZodUnknown,\n ...processCreateParams(params),\n })\n }\n\n isEqual(schema: ZodType): boolean {\n return schema instanceof ZodUnknown\n }\n}\n", "import {\n ZodIssueCode,\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeDef,\n processCreateParams,\n ZodParsedType,\n addIssueToContext,\n INVALID,\n OK,\n ParseInput,\n ParseReturnType,\n} from '../index'\n\nexport interface ZodVoidDef extends ZodTypeDef {\n typeName: ZodFirstPartyTypeKind.ZodVoid\n}\n\nexport class ZodVoid extends ZodType<void, ZodVoidDef> {\n _parse(input: ParseInput): ParseReturnType<this['_output']> {\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\n static create = (params?: RawCreateParams): ZodVoid => {\n return new ZodVoid({\n typeName: ZodFirstPartyTypeKind.ZodVoid,\n ...processCreateParams(params),\n })\n }\n\n isEqual(schema: ZodType): boolean {\n return schema instanceof ZodVoid\n }\n}\n", "import { TypeOf, ZodEnum, ZodString } from './types'\n\nconst AI_MODELS = [\n 'gpt-3.5-turbo',\n 'gpt-3.5-turbo-16k',\n 'gpt-4',\n 'gpt-4-1106-preview',\n 'gpt-4-vision-preview',\n 'gpt-4-0125-preview',\n 'gpt-4-turbo-preview',\n 'gpt-4-turbo',\n 'gpt-4o',\n 'gpt-3.5-turbo-0125',\n 'gpt-3.5-turbo-1106',\n] as const\n\nconst variableType = ZodEnum.create([\n 'any',\n 'string',\n 'number',\n 'boolean',\n 'object',\n 'pattern',\n 'date',\n 'array',\n 'target',\n 'time',\n 'enum',\n])\n\nexport const variable = (opts?: { type?: TypeOf<typeof variableType>; params?: { horizontal?: boolean } }) =>\n ZodString.create().displayAs<any>({ id: 'variable', params: { type: opts?.type || 'any', ...opts?.params } })\n\nexport const conversation = (opts?: { params?: { horizontal?: boolean } }) =>\n ZodString.create().displayAs<any>({ id: 'conversation', params: { ...opts?.params } })\n\nexport const user = (opts?: { params?: { horizontal?: boolean } }) =>\n ZodString.create().displayAs<any>({ id: 'user', params: { ...opts?.params } })\n\nexport const message = (opts?: { params?: { horizontal?: boolean } }) =>\n ZodString.create().displayAs<any>({ id: 'message', params: { ...opts?.params } })\n\nexport const agent = (opts?: { params?: { horizontal?: boolean } }) =>\n ZodString.create().displayAs<any>({ id: 'agent', params: { ...opts?.params } })\n\nexport const event = (opts?: { params?: { horizontal?: boolean } }) =>\n ZodString.create().displayAs<any>({ id: 'event', params: { ...opts?.params } })\n\nexport const table = (opts?: { params?: { horizontal?: boolean } }) =>\n ZodString.create().displayAs<any>({ id: 'table', params: { ...opts?.params } })\n\nexport const tablerow = (opts?: { params?: { horizontal?: boolean } }) =>\n ZodString.create().displayAs<any>({ id: 'tablerow', params: { ...opts?.params } })\n\nexport const intent = (opts?: { params?: { horizontal?: boolean } }) =>\n ZodString.create().displayAs<any>({ id: 'intent', params: { ...opts?.params } })\n\nexport const aimodel = () => ZodEnum.create(AI_MODELS).displayAs<any>({ id: 'dropdown', params: {} })\n\nexport const datasource = (opts?: { horizontal?: boolean }) =>\n ZodString.create().displayAs<any>({ id: 'datasource', params: { ...opts } })\n\nexport const knowledgebase = (opts?: { horizontal?: boolean }) =>\n ZodString.create().displayAs<any>({ id: 'knowledgebase', params: { ...opts } })\n", "import * as z from './z'\nexport * from './z'\nexport { z }\n\nexport default z\n", "import { JsonSchemaObject, JsonSchema, Refs } from '../types'\nimport { parseSchema } from './parseSchema'\n\nexport const parseAnyOf = (schema: JsonSchemaObject & { anyOf: JsonSchema[] }, refs: Refs) => {\n return schema.anyOf.length\n ? schema.anyOf.length === 1\n ? parseSchema(schema.anyOf[0]!, {\n ...refs,\n path: [...refs.path, 'anyOf', 0],\n })\n : `z.union([${schema.anyOf\n .map((schema, i) => parseSchema(schema, { ...refs, path: [...refs.path, 'anyOf', i] }))\n .join(', ')}])`\n : `z.any()`\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport { JsonSchemaObject } from '../types'\n\nexport const parseBoolean = (_schema: JsonSchemaObject & { type: 'boolean' }) => {\n if (_schema[zuiKey]?.coerce) {\n return 'z.coerce.boolean()'\n }\n return 'z.boolean()'\n}\n", "import { JsonSchemaObject } from '../types'\n\nexport const parseDefault = (_schema: JsonSchemaObject) => {\n return 'z.any()'\n}\n", "import { JsonSchemaObject, Refs } from '../types'\nimport { parseSchema } from './parseSchema'\n\nexport const parseMultipleType = (schema: JsonSchemaObject & { type: string[] }, refs: Refs) => {\n return `z.union([${schema.type.map((type) => parseSchema({ ...schema, type }, refs)).join(', ')}])`\n}\n", "import { JsonSchemaObject, JsonSchema, Refs } from '../types'\nimport { parseSchema } from './parseSchema'\n\nexport const parseNot = (schema: JsonSchemaObject & { not: JsonSchema }, refs: Refs) => {\n return `z.any().refine((value) => !${parseSchema(schema.not, {\n ...refs,\n path: [...refs.path, 'not'],\n })}.safeParse(value).success, \"Invalid input: Should NOT be valid against schema\")`\n}\n", "import { JsonSchemaObject } from '../types'\n\nexport const parseNull = (_schema: JsonSchemaObject & { type: 'null' }) => {\n return 'z.null()'\n}\n", "import { JsonSchemaObject } from './types'\n\nexport const half = <T>(arr: T[]): [T[], T[]] => {\n return [arr.slice(0, arr.length / 2), arr.slice(arr.length / 2)]\n}\n\nexport const omit = <T extends object, K extends keyof T>(obj: T, ...keys: K[]): Omit<T, K> =>\n Object.keys(obj).reduce((acc: Record<string, unknown>, key) => {\n if (!keys.includes(key as K)) {\n acc[key] = obj[key as K]\n }\n\n return acc\n }, {}) as Omit<T, K>\n\ntype Opener = string\ntype MessagePrefix = string\ntype Closer = string\n\ntype Builder = [Opener, Closer] | [Opener, MessagePrefix, Closer]\n\nexport function withMessage(\n schema: JsonSchemaObject,\n key: string,\n get: (props: { value: unknown; json: string }) => Builder | void,\n) {\n const value = schema[key as keyof typeof schema]\n\n let r = ''\n\n if (value !== undefined) {\n const got = get({ value, json: JSON.stringify(value) })\n\n if (got) {\n const opener = got[0]\n const prefix = got.length === 3 ? got[1] : ''\n const closer = got.length === 3 ? got[2] : got[1]\n\n r += opener\n\n if (schema.errorMessage?.[key] !== undefined) {\n r += prefix + JSON.stringify(schema.errorMessage[key])\n }\n r\n r += closer\n }\n }\n\n return r\n}\n", "import { parseSchema } from './parseSchema'\nimport { half } from '../utils'\nimport { JsonSchemaObject, JsonSchema, Refs } from '../types'\n\nconst originalIndex = Symbol('Original index')\n\nconst ensureOriginalIndex = (arr: JsonSchema[]) => {\n let newArr = []\n\n for (let i = 0; i < arr.length; i++) {\n const item = arr[i]\n if (typeof item === 'boolean') {\n newArr.push(item ? { [originalIndex]: i } : { [originalIndex]: i, not: {} })\n } else if (originalIndex in item!) {\n return arr\n } else {\n newArr.push({ ...item, [originalIndex]: i })\n }\n }\n\n return newArr\n}\n\nexport function parseAllOf(schema: JsonSchemaObject & { allOf: JsonSchema[] }, refs: Refs): string {\n if (schema.allOf.length === 0) {\n return 'z.never()'\n } else if (schema.allOf.length === 1) {\n const item = schema.allOf[0]\n\n return parseSchema(item!, {\n ...refs,\n path: [...refs.path, 'allOf', (item as any)[originalIndex]],\n })\n } else {\n const [left, right] = half(ensureOriginalIndex(schema.allOf))\n\n return `z.intersection(${parseAllOf({ allOf: left }, refs)}, ${parseAllOf(\n {\n allOf: right,\n },\n refs,\n )})`\n }\n}\n", "import { JsonSchemaObject, Refs } from '../types'\nimport { withMessage } from '../utils'\nimport { parseSchema } from './parseSchema'\n\nexport const parseArray = (schema: JsonSchemaObject & { type: 'array' }, refs: Refs) => {\n if (Array.isArray(schema.items)) {\n return `z.tuple([${schema.items.map((v, i) => parseSchema(v, { ...refs, path: [...refs.path, 'items', i] }))}])`\n }\n\n let r = !schema.items\n ? 'z.array(z.any())'\n : `z.array(${parseSchema(schema.items, {\n ...refs,\n path: [...refs.path, 'items'],\n })})`\n\n r += withMessage(schema, 'minItems', ({ json }) => [`.min(${json}`, ', ', ')'])\n\n r += withMessage(schema, 'maxItems', ({ json }) => [`.max(${json}`, ', ', ')'])\n\n return r\n}\n", "import { JsonSchemaObject, Serializable } from '../types'\n\nexport const parseConst = (schema: JsonSchemaObject & { const: Serializable }) => {\n return `z.literal(${JSON.stringify(schema.const)})`\n}\n", "import { JsonSchemaObject, Serializable } from '../types'\n\nexport const parseEnum = (schema: JsonSchemaObject & { enum: Serializable[] }) => {\n if (schema.enum.length === 0) {\n return 'z.never()'\n } else if (schema.enum.length === 1) {\n // union does not work when there is only one element\n return `z.literal(${JSON.stringify(schema.enum[0])})`\n } else if (schema.enum.every((x) => typeof x === 'string')) {\n return `z.enum([${schema.enum.map((x) => JSON.stringify(x))}])`\n } else {\n return `z.union([${schema.enum.map((x) => `z.literal(${JSON.stringify(x)})`).join(', ')}])`\n }\n}\n", "import { JsonSchemaObject, JsonSchema, Refs } from '../types'\nimport { parseSchema } from './parseSchema'\n\nexport const parseIfThenElse = (\n schema: JsonSchemaObject & {\n if: JsonSchema\n then: JsonSchema\n else: JsonSchema\n },\n refs: Refs,\n): string => {\n const $if = parseSchema(schema.if, { ...refs, path: [...refs.path, 'if'] })\n const $then = parseSchema(schema.then, {\n ...refs,\n path: [...refs.path, 'then'],\n })\n const $else = parseSchema(schema.else, {\n ...refs,\n path: [...refs.path, 'else'],\n })\n return `z.union([${$then}, ${$else}]).superRefine((value,ctx) => {\n const result = ${$if}.safeParse(value).success\n ? ${$then}.safeParse(value)\n : ${$else}.safeParse(value);\n if (!result.success) {\n result.error.errors.forEach((error) => ctx.addIssue(error))\n }\n})`\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport { JsonSchemaObject } from '../types'\nimport { withMessage } from '../utils'\n\nexport const parseNumber = (schema: JsonSchemaObject & { type: 'number' | 'integer' }) => {\n let r = 'z.number()'\n\n if (schema[zuiKey]?.coerce) {\n r = 'z.coerce.number()'\n }\n\n if (schema.type === 'integer') {\n r += withMessage(schema, 'type', () => ['.int(', ')'])\n } else {\n r += withMessage(schema, 'format', ({ value }) => {\n if (value === 'int64') {\n return ['.int(', ')']\n }\n })\n }\n\n r += withMessage(schema, 'multipleOf', ({ value, json }) => {\n if (value === 1) {\n if (r.startsWith('z.number().int(')) {\n return\n }\n\n return ['.int(', ')']\n }\n\n return [`.multipleOf(${json}`, ', ', ')']\n })\n\n if (typeof schema.minimum === 'number') {\n if (schema.exclusiveMinimum === true) {\n r += withMessage(schema, 'minimum', ({ json }) => [`.gt(${json}`, ', ', ')'])\n } else {\n r += withMessage(schema, 'minimum', ({ json }) => [`.gte(${json}`, ', ', ')'])\n }\n } else if (typeof schema.exclusiveMinimum === 'number') {\n r += withMessage(schema, 'exclusiveMinimum', ({ json }) => [`.gt(${json}`, ', ', ')'])\n }\n\n if (typeof schema.maximum === 'number') {\n if (schema.exclusiveMaximum === true) {\n r += withMessage(schema, 'maximum', ({ json }) => [`.lt(${json}`, ', ', ')'])\n } else {\n r += withMessage(schema, 'maximum', ({ json }) => [`.lte(${json}`, ', ', ')'])\n }\n } else if (typeof schema.exclusiveMaximum === 'number') {\n r += withMessage(schema, 'exclusiveMaximum', ({ json }) => [`.lt(${json}`, ', ', ')'])\n }\n\n return r\n}\n", "import { JsonSchemaObject, JsonSchema, Refs } from '../types'\nimport { parseSchema } from './parseSchema'\n\nexport const parseOneOf = (schema: JsonSchemaObject & { oneOf: JsonSchema[] }, refs: Refs) => {\n return schema.oneOf.length\n ? schema.oneOf.length === 1\n ? parseSchema(schema.oneOf[0]!, {\n ...refs,\n path: [...refs.path, 'oneOf', 0],\n })\n : `z.any().superRefine((x, ctx) => {\n const schemas = [${schema.oneOf\n .map((schema, i) =>\n parseSchema(schema, {\n ...refs,\n path: [...refs.path, 'oneOf', i],\n }),\n )\n .join(', ')}];\n const errors = schemas.reduce(\n (errors: z.ZodError[], schema) =>\n ((result) => (\"error\" in result ? [...errors, result.error] : errors))(\n schema.safeParse(x)\n ),\n []\n );\n if (schemas.length - errors.length !== 1) {\n ctx.addIssue({\n path: ctx.path,\n code: \"invalid_union\",\n unionErrors: errors,\n message: \"Invalid input: Should pass single schema\",\n });\n }\n })`\n : 'z.any()'\n}\n", "import { Discriminator, JsonSchemaObject, Refs } from '../types'\nimport { parseAnyOf } from './parseAnyOf'\nimport { parseOneOf } from './parseOneOf'\nimport { its, parseSchema } from './parseSchema'\nimport { parseAllOf } from './parseAllOf'\n\nexport function parseObject(objectSchema: JsonSchemaObject & { type: 'object' } & Discriminator, refs: Refs): string {\n let properties: string | undefined = undefined\n\n if (objectSchema.properties) {\n if (!Object.keys(objectSchema.properties).length) {\n properties = 'z.object({})'\n } else {\n properties = 'z.object({ '\n\n properties += Object.keys(objectSchema.properties)\n .map((key) => {\n const propSchema = objectSchema.properties![key]\n\n const result = `${JSON.stringify(key)}: ${parseSchema(propSchema!, {\n ...refs,\n path: [...refs.path, 'properties', key],\n })}`\n\n const hasDefault =\n (typeof propSchema === 'object' && propSchema.default !== undefined) ||\n (typeof objectSchema.default === 'object' && objectSchema.default !== null && key in objectSchema.default)\n\n const required = Array.isArray(objectSchema.required)\n ? objectSchema.required.includes(key)\n : typeof propSchema === 'object' && propSchema.required === true\n\n const optional = !hasDefault && !required\n\n return optional ? `${result}.optional()` : result\n })\n .join(', ')\n\n properties += ' })'\n }\n }\n\n const additionalProperties =\n objectSchema.additionalProperties !== undefined\n ? parseSchema(objectSchema.additionalProperties, {\n ...refs,\n path: [...refs.path, 'additionalProperties'],\n })\n : undefined\n\n let patternProperties: string | undefined = undefined\n\n if (objectSchema.patternProperties) {\n const parsedPatternProperties = Object.fromEntries(\n Object.entries(objectSchema.patternProperties).map(([key, value]) => {\n return [\n key,\n parseSchema(value, {\n ...refs,\n path: [...refs.path, 'patternProperties', key],\n }),\n ]\n }, {}),\n )\n\n patternProperties = ''\n\n if (properties) {\n if (additionalProperties) {\n patternProperties += `.catchall(z.union([${[\n ...Object.values(parsedPatternProperties),\n additionalProperties,\n ].join(', ')}]))`\n } else if (Object.keys(parsedPatternProperties).length > 1) {\n patternProperties += `.catchall(z.union([${Object.values(parsedPatternProperties).join(', ')}]))`\n } else {\n patternProperties += `.catchall(${Object.values(parsedPatternProperties)})`\n }\n } else {\n if (additionalProperties) {\n patternProperties += `z.record(z.union([${[\n ...Object.values(parsedPatternProperties),\n additionalProperties,\n ].join(', ')}]))`\n } else if (Object.keys(parsedPatternProperties).length > 1) {\n patternProperties += `z.record(z.union([${Object.values(parsedPatternProperties).join(', ')}]))`\n } else {\n patternProperties += `z.record(${Object.values(parsedPatternProperties)})`\n }\n }\n\n patternProperties += '.superRefine((value, ctx) => {\\n'\n\n patternProperties += 'for (const key in value) {\\n'\n\n if (additionalProperties) {\n if (objectSchema.properties) {\n patternProperties += `let evaluated = [${Object.keys(objectSchema.properties)\n .map((key) => JSON.stringify(key))\n .join(', ')}].includes(key)\\n`\n } else {\n patternProperties += `let evaluated = false\\n`\n }\n }\n\n for (const key in objectSchema.patternProperties) {\n patternProperties += 'if (key.match(new RegExp(' + JSON.stringify(key) + '))) {\\n'\n if (additionalProperties) {\n patternProperties += 'evaluated = true\\n'\n }\n patternProperties += 'const result = ' + parsedPatternProperties[key] + '.safeParse(value[key])\\n'\n patternProperties += 'if (!result.success) {\\n'\n\n patternProperties += `ctx.addIssue({\n path: [...ctx.path, key],\n code: 'custom',\n message: \\`Invalid input: Key matching regex /\\${key}/ must match schema\\`,\n params: {\n issues: result.error.issues\n }\n })\\n`\n\n patternProperties += '}\\n'\n patternProperties += '}\\n'\n }\n\n if (additionalProperties) {\n patternProperties += 'if (!evaluated) {\\n'\n patternProperties += 'const result = ' + additionalProperties + '.safeParse(value[key])\\n'\n patternProperties += 'if (!result.success) {\\n'\n\n patternProperties += `ctx.addIssue({\n path: [...ctx.path, key],\n code: 'custom',\n message: \\`Invalid input: must match catchall schema\\`,\n params: {\n issues: result.error.issues\n }\n })\\n`\n\n patternProperties += '}\\n'\n patternProperties += '}\\n'\n }\n patternProperties += '}\\n'\n patternProperties += '})'\n }\n\n let output = properties\n ? patternProperties\n ? properties + patternProperties\n : additionalProperties\n ? additionalProperties === 'z.never()'\n ? properties + '.strict()'\n : properties + `.catchall(${additionalProperties})`\n : properties\n : patternProperties\n ? patternProperties\n : additionalProperties\n ? `z.record(${additionalProperties})`\n : 'z.record(z.any())'\n\n if (its.an.anyOf(objectSchema)) {\n output += `.and(${parseAnyOf(\n {\n ...objectSchema,\n anyOf: objectSchema.anyOf.map((x) =>\n typeof x === 'object' && !x.type && (x.properties || x.additionalProperties || x.patternProperties)\n ? { ...x, type: 'object' }\n : x,\n ),\n },\n refs,\n )})`\n }\n\n if (its.a.oneOf(objectSchema)) {\n output += `.and(${parseOneOf(\n {\n ...objectSchema,\n oneOf: objectSchema.oneOf.map((x) =>\n typeof x === 'object' && !x.type && (x.properties || x.additionalProperties || x.patternProperties)\n ? { ...x, type: 'object' }\n : x,\n ),\n },\n refs,\n )})`\n }\n\n if (its.an.allOf(objectSchema)) {\n output += `.and(${parseAllOf(\n {\n ...objectSchema,\n allOf: objectSchema.allOf.map((x) =>\n typeof x === 'object' && !x.type && (x.properties || x.additionalProperties || x.patternProperties)\n ? { ...x, type: 'object' }\n : x,\n ),\n },\n refs,\n )})`\n }\n\n return output\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport { JsonSchemaObject } from '../types'\nimport { withMessage } from '../utils'\n\nexport const parseString = (schema: JsonSchemaObject & { type: 'string' }) => {\n let r = 'z.string()'\n if (schema[zuiKey]?.coerce) {\n if (schema.format === 'date-time') {\n return 'z.coerce.date()'\n }\n r = 'z.coerce.string()'\n }\n\n r += withMessage(schema, 'format', ({ value }) => {\n switch (value) {\n case 'email':\n return ['.email(', ')']\n case 'ip':\n return ['.ip(', ')']\n case 'ipv4':\n return ['.ip({ version: \"v4\"', ', message: ', ' })']\n case 'ipv6':\n return ['.ip({ version: \"v6\"', ', message: ', ' })']\n case 'uri':\n return ['.url(', ')']\n case 'uuid':\n return ['.uuid(', ')']\n case 'date-time':\n return ['.datetime(', ')']\n }\n })\n\n r += withMessage(schema, 'pattern', ({ json }) => [`.regex(new RegExp(${json})`, ', ', ')'])\n\n r += withMessage(schema, 'minLength', ({ json }) => [`.min(${json}`, ', ', ')'])\n\n r += withMessage(schema, 'maxLength', ({ json }) => [`.max(${json}`, ', ', ')'])\n\n return r\n}\n", "import { JsonSchemaObject, Refs } from '../types'\nimport { omit } from '../utils'\nimport { parseSchema } from './parseSchema'\n\n/**\n * For compatibility with open api 3.0 nullable\n */\nexport const parseNullable = (schema: JsonSchemaObject & { nullable: true }, refs: Refs) => {\n return `${parseSchema(omit(schema, 'nullable'), refs, true)}.nullable()`\n}\n", "import { JsonSchemaObject } from '../types'\n\nexport const parseRef = (schema: JsonSchemaObject & { $ref: string }) => {\n return `z.ref('${schema.$ref}')`\n}\n", "import { JSONSchemaExtended, JsonSchema, Refs } from '../types'\nimport { parseSchema } from './parseSchema'\nimport { parseOneOf } from './parseOneOf'\n\nexport const parseDiscriminator = (schema: JSONSchemaExtended & { oneOf: JsonSchema[] }, refs: Refs) => {\n if (schema.oneOf.length <= 1 || !schema.discriminator?.propertyName) {\n return parseOneOf(schema, refs)\n }\n\n const schemas = schema.oneOf.map((schema, i) =>\n parseSchema(schema, {\n ...refs,\n path: [...refs.path, 'oneOf', i],\n }),\n )\n\n return `z.discriminatedUnion(\"${schema.discriminator?.propertyName}\", [${schemas.join(', ')}])`\n}\n\nexport const __original = (schema: JSONSchemaExtended & { oneOf: JsonSchema[] }, refs: Refs) => {\n return schema.oneOf.length\n ? schema.oneOf.length === 1\n ? parseSchema(schema.oneOf[0]!, {\n ...refs,\n path: [...refs.path, 'oneOf', 0],\n })\n : `z.any().superRefine((x, ctx) => {\n const schemas = [${schema.oneOf.map((schema, i) =>\n parseSchema(schema, {\n ...refs,\n path: [...refs.path, 'oneOf', i],\n }),\n )}];\n const errors = schemas.reduce(\n (errors: z.ZodError[], schema) =>\n ((result) => (\"error\" in result ? [...errors, result.error] : errors))(\n schema.safeParse(x)\n ),\n []\n );\n if (schemas.length - errors.length !== 1) {\n ctx.addIssue({\n path: ctx.path,\n code: \"invalid_union\",\n unionErrors: errors,\n message: \"Invalid input: Should pass single schema\",\n });\n }\n })`\n : 'z.any()'\n}\n", "import { parseAnyOf } from './parseAnyOf'\nimport { parseBoolean } from './parseBoolean'\nimport { parseDefault } from './parseDefault'\nimport { parseMultipleType } from './parseMultipleType'\nimport { parseNot } from './parseNot'\nimport { parseNull } from './parseNull'\nimport { parseAllOf } from './parseAllOf'\nimport { parseArray } from './parseArray'\nimport { parseConst } from './parseConst'\nimport { parseEnum } from './parseEnum'\nimport { parseIfThenElse } from './parseIfThenElse'\nimport { parseNumber } from './parseNumber'\nimport { parseObject } from './parseObject'\nimport { parseString } from './parseString'\nimport { parseOneOf } from './parseOneOf'\nimport { parseNullable } from './parseNullable'\nimport { parseRef } from './parseRef'\nimport { ParserSelector, Refs, JsonSchemaObject, JsonSchema, Serializable, JSONSchemaExtended } from '../types'\nimport { parseDiscriminator } from './parseDiscriminator'\n\nexport const parseSchema = (\n schema: JSONSchemaExtended,\n refs: Refs = { seen: new Map(), path: [] },\n blockMeta?: boolean,\n): string => {\n if (typeof schema !== 'object') return schema ? 'z.any()' : 'z.never()'\n\n if (refs.parserOverride) {\n const custom = refs.parserOverride(schema, refs)\n\n if (typeof custom === 'string') {\n return custom\n }\n }\n\n let seen = refs.seen.get(schema)\n\n if (seen) {\n if (seen.r !== undefined) {\n return seen.r\n }\n\n if (refs.depth === undefined || seen.n >= refs.depth) {\n return 'z.any()'\n }\n\n seen.n += 1\n } else {\n seen = { r: undefined, n: 0 }\n refs.seen.set(schema, seen)\n }\n\n let parsed = selectParser(schema, refs)\n\n if (!blockMeta) {\n parsed = addMeta(schema, parsed)\n\n if (!refs.withoutDefaults) {\n parsed = addDefaults(schema, parsed)\n }\n }\n\n seen.r = parsed\n\n return parsed\n}\n\nconst addMeta = (schema: JsonSchemaObject, parsed: string): string => {\n if (schema.description) {\n parsed += `.describe(${JSON.stringify(schema.description)})`\n }\n\n return parsed\n}\n\nconst addDefaults = (schema: JsonSchemaObject, parsed: string): string => {\n if (schema.default !== undefined) {\n parsed += `.default(${JSON.stringify(schema.default)})`\n }\n\n return parsed\n}\n\nconst selectParser: ParserSelector = (schema, refs) => {\n if (its.a.nullable(schema)) {\n return parseNullable(schema, refs)\n } else if (its.an.object(schema)) {\n return parseObject(schema, refs)\n } else if (its.an.array(schema)) {\n return parseArray(schema, refs)\n } else if (its.an.anyOf(schema)) {\n return parseAnyOf(schema, refs)\n } else if (its.an.allOf(schema)) {\n return parseAllOf(schema, refs)\n } else if (its.a.discriminator(schema)) {\n return parseDiscriminator(schema, refs)\n } else if (its.a.oneOf(schema)) {\n return parseOneOf(schema, refs)\n } else if (its.a.not(schema)) {\n return parseNot(schema, refs)\n } else if (its.an.enum(schema)) {\n return parseEnum(schema) //<-- needs to come before primitives\n } else if (its.a.const(schema)) {\n return parseConst(schema)\n } else if (its.a.multipleType(schema)) {\n return parseMultipleType(schema, refs)\n } else if (its.a.primitive(schema, 'string')) {\n return parseString(schema)\n } else if (its.a.primitive(schema, 'number') || its.a.primitive(schema, 'integer')) {\n return parseNumber(schema)\n } else if (its.a.primitive(schema, 'boolean')) {\n return parseBoolean(schema)\n } else if (its.a.primitive(schema, 'null')) {\n return parseNull(schema)\n } else if (its.a.conditional(schema)) {\n return parseIfThenElse(schema, refs)\n } else if (its.a.ref(schema)) {\n return parseRef(schema)\n } else {\n return parseDefault(schema)\n }\n}\n\nexport const its = {\n an: {\n object: (x: JsonSchemaObject): x is JsonSchemaObject & { type: 'object' } => x.type === 'object',\n array: (x: JsonSchemaObject): x is JsonSchemaObject & { type: 'array' } => x.type === 'array',\n anyOf: (\n x: JsonSchemaObject,\n ): x is JsonSchemaObject & {\n anyOf: JsonSchema[]\n } => x.anyOf !== undefined,\n allOf: (\n x: JsonSchemaObject,\n ): x is JsonSchemaObject & {\n allOf: JsonSchema[]\n } => x.allOf !== undefined,\n enum: (\n x: JsonSchemaObject,\n ): x is JsonSchemaObject & {\n enum: Serializable | Serializable[]\n } => x.enum !== undefined,\n },\n a: {\n nullable: (x: JsonSchemaObject): x is JsonSchemaObject & { nullable: true } => x.nullable === true,\n multipleType: (x: JsonSchemaObject): x is JsonSchemaObject & { type: string[] } => Array.isArray(x.type),\n not: (\n x: JsonSchemaObject,\n ): x is JsonSchemaObject & {\n not: JsonSchema\n } => x.not !== undefined,\n const: (\n x: JsonSchemaObject,\n ): x is JsonSchemaObject & {\n const: Serializable\n } => x.const !== undefined,\n primitive: <T extends 'string' | 'number' | 'integer' | 'boolean' | 'null'>(\n x: JsonSchemaObject,\n p: T,\n ): x is JsonSchemaObject & { type: T } => x.type === p,\n conditional: (\n x: JsonSchemaObject,\n ): x is JsonSchemaObject & {\n if: JsonSchema\n then: JsonSchema\n else: JsonSchema\n } => Boolean('if' in x && x.if && 'then' in x && 'else' in x && x.then && x.else),\n discriminator: (\n x: JsonSchemaObject,\n ): x is JsonSchemaObject & {\n discriminator: { propertyName: string }\n oneOf: JsonSchema[]\n } => x.oneOf !== undefined && x.discriminator?.propertyName !== undefined,\n oneOf: (\n x: JsonSchemaObject,\n ): x is JsonSchemaObject & {\n oneOf: JsonSchema[]\n } => x.oneOf !== undefined,\n ref: (x: JsonSchemaObject): x is JsonSchemaObject & { $ref: string } => x.$ref !== undefined,\n },\n}\n", "import z, { ZodTypeAny } from '../../z'\n\nexport type EvalZuiStringResult =\n | {\n sucess: true\n value: ZodTypeAny\n }\n | {\n sucess: false\n error: string\n }\n\nexport const evalZuiString = (zuiString: string): EvalZuiStringResult => {\n let result: any\n\n try {\n result = new Function('z', `return ${zuiString}`)(z)\n } catch (thrown) {\n const err = thrown instanceof Error ? thrown : new Error(String(thrown))\n return { sucess: false, error: `Failed to evaluate schema: ${err.message}` }\n }\n\n if (!(result instanceof z.ZodType)) {\n return { sucess: false, error: `String \"${zuiString}\" does not evaluate to a Zod schema` }\n }\n\n return {\n sucess: true,\n value: result,\n }\n}\n", "import {\n type ZodAnyDef,\n type ZodArrayDef,\n type ZodBooleanDef,\n ZodFirstPartyTypeKind,\n type ZodLazyDef,\n type ZodNullDef,\n type ZodObjectDef,\n type ZodRecordDef,\n type ZodStringDef,\n type ZodSymbolDef,\n type ZodTypeAny,\n type ZodUndefinedDef,\n type ZodUnionDef,\n ZodNullableDef,\n ZodOptionalDef,\n ZodNumberDef,\n ZodEnumDef,\n ZodDefaultDef,\n z,\n} from '../../z/index'\nimport { zuiKey } from '../../ui/constants'\nimport { JsonSchema7Type } from '../zui-to-json-schema-legacy/parseDef'\nimport { parseSchema } from './parsers/parseSchema'\nimport { ZuiExtensionObject } from '../../ui/types'\nimport { JSONSchemaExtended } from './types'\nimport { evalZuiString } from '../common/eval-zui-string'\nimport * as errors from '../common/errors'\n\nexport const jsonSchemaToZodStr = (schema: JSONSchemaExtended): string => {\n return parseSchema(schema, {\n seen: new Map(),\n path: [],\n })\n}\n\nconst jsonSchemaToZod = (schema: any): ZodTypeAny => {\n let code = jsonSchemaToZodStr(schema)\n code = code.replaceAll('errors: z.ZodError[]', 'errors')\n const evaluationResult = evalZuiString(code)\n if (!evaluationResult.sucess) {\n throw new errors.JSONSchemaToZuiError(evaluationResult.error)\n }\n return evaluationResult.value\n}\n\nconst applyZuiPropsRecursively = (zodField: ZodTypeAny, jsonSchemaField: any) => {\n if (jsonSchemaField[zuiKey] && zodField._def) {\n zodField.naked()._def[zuiKey] = jsonSchemaField[zuiKey]\n }\n\n if (zodField._def?.typeName === 'ZodObject' && jsonSchemaField.type === 'object' && jsonSchemaField.properties) {\n Object.entries(jsonSchemaField.properties).forEach(([key, nestedField]) => {\n const shape = typeof zodField._def.shape === 'function' ? zodField._def.shape() : zodField._def.shape\n\n if (shape[key]) {\n applyZuiPropsRecursively(shape[key], nestedField)\n }\n })\n }\n\n if (\n zodField._def?.typeName === 'ZodRecord' &&\n jsonSchemaField.type === 'object' &&\n jsonSchemaField.additionalProperties\n ) {\n applyZuiPropsRecursively(zodField._def.valueType, jsonSchemaField.additionalProperties)\n }\n\n if (jsonSchemaField.type === 'array' && jsonSchemaField.items) {\n const items = jsonSchemaField.items\n\n if (typeof items === 'object' && !Array.isArray(items)) {\n const arrayShape = zodField._def.type\n\n if (arrayShape) {\n applyZuiPropsRecursively(arrayShape, items)\n }\n } else if (Array.isArray(items)) {\n items.forEach((item, index) => {\n const def: z.ZodDef = zodField._def\n\n if (def.typeName === z.ZodFirstPartyTypeKind.ZodTuple) {\n applyZuiPropsRecursively(def.items[index]!, item)\n }\n })\n }\n }\n}\n\nexport type ZodAllDefs =\n | ZodArrayDef\n | ZodObjectDef\n | ZodBooleanDef\n | ZodNullableDef\n | ZodNumberDef\n | ZodAnyDef\n | ZodSymbolDef\n | ZodLazyDef\n | ZodUndefinedDef\n | ZodNullDef\n | ZodEnumDef\n | ZodUnionDef\n | ZodRecordDef\n | ZodOptionalDef\n | ZodStringDef\n | ZodDefaultDef\n\nexport type ZodTypeKind = `${ZodFirstPartyTypeKind}`\n\nexport type ZodDef<Type extends ZodTypeKind> = Type extends 'ZodObject'\n ? ZodObjectDef\n : Type extends 'ZodArray'\n ? ZodArrayDef\n : Type extends 'ZodBoolean'\n ? ZodBooleanDef\n : Type extends 'ZodString'\n ? ZodStringDef\n : Type extends 'ZodSymbol'\n ? ZodSymbolDef\n : Type extends 'ZodAny'\n ? ZodAnyDef\n : Type extends 'ZodLazy'\n ? ZodLazyDef\n : Type extends 'ZodUndefined'\n ? ZodUndefinedDef\n : Type extends 'ZodNull'\n ? ZodNullDef\n : Type extends 'ZodUnion'\n ? ZodUnionDef\n : Type extends 'ZodRecord'\n ? ZodRecordDef\n : Type extends 'ZodNullable'\n ? ZodNullableDef\n : Type extends 'ZodOptional'\n ? ZodOptionalDef\n : Type extends 'ZodNumber'\n ? ZodNumberDef\n : Type extends 'ZodEnum'\n ? ZodEnumDef\n : Type extends 'ZodDefault'\n ? ZodDefaultDef\n : never\n\nexport const traverseZodDefinitions = (\n def: ZodDef<ZodFirstPartyTypeKind>,\n cb: <T extends ZodTypeKind>(type: T, def: ZodDef<T> & { [zuiKey]?: ZuiExtensionObject }, path: string[]) => void,\n path: string[] = [],\n) => {\n switch (def.typeName) {\n case ZodFirstPartyTypeKind.ZodObject:\n const shape = def.shape()\n cb(ZodFirstPartyTypeKind.ZodObject, def, path)\n Object.entries(shape).forEach(([key, field]) => {\n traverseZodDefinitions(field._def, cb, [...path, key])\n })\n break\n\n case ZodFirstPartyTypeKind.ZodArray:\n cb(ZodFirstPartyTypeKind.ZodArray, def, path)\n traverseZodDefinitions(def.type._def, cb, [...path, '0'])\n break\n\n case ZodFirstPartyTypeKind.ZodLazy:\n cb(ZodFirstPartyTypeKind.ZodLazy, def, path)\n traverseZodDefinitions(def.getter()._def, cb, path)\n break\n\n case ZodFirstPartyTypeKind.ZodUnion:\n cb(ZodFirstPartyTypeKind.ZodUnion, def, path)\n def.options.forEach((option) => {\n traverseZodDefinitions(option._def, cb, path)\n })\n break\n\n case ZodFirstPartyTypeKind.ZodRecord:\n cb(ZodFirstPartyTypeKind.ZodRecord, def, path)\n traverseZodDefinitions(def, cb, [...path])\n break\n\n case ZodFirstPartyTypeKind.ZodUndefined:\n cb(ZodFirstPartyTypeKind.ZodUndefined, def, path)\n break\n\n case ZodFirstPartyTypeKind.ZodNull:\n cb(ZodFirstPartyTypeKind.ZodNull, def, path)\n break\n\n case ZodFirstPartyTypeKind.ZodBoolean:\n cb(ZodFirstPartyTypeKind.ZodBoolean, def, path)\n break\n\n case ZodFirstPartyTypeKind.ZodString:\n cb(ZodFirstPartyTypeKind.ZodString, def, path)\n break\n\n case ZodFirstPartyTypeKind.ZodSymbol:\n cb(ZodFirstPartyTypeKind.ZodSymbol, def, path)\n break\n\n case ZodFirstPartyTypeKind.ZodAny:\n cb(ZodFirstPartyTypeKind.ZodAny, def, path)\n break\n\n case ZodFirstPartyTypeKind.ZodUnion:\n cb(ZodFirstPartyTypeKind.ZodUnion, def, path)\n break\n\n case ZodFirstPartyTypeKind.ZodRecord:\n cb(ZodFirstPartyTypeKind.ZodRecord, def, path)\n break\n\n case ZodFirstPartyTypeKind.ZodNullable:\n cb(ZodFirstPartyTypeKind.ZodNullable, def, path)\n traverseZodDefinitions(def.innerType._def, cb, path)\n break\n case ZodFirstPartyTypeKind.ZodOptional:\n cb(ZodFirstPartyTypeKind.ZodOptional, def, path)\n traverseZodDefinitions(def.innerType._def, cb, path)\n break\n\n case ZodFirstPartyTypeKind.ZodNumber:\n cb(ZodFirstPartyTypeKind.ZodNumber, def, path)\n break\n\n case ZodFirstPartyTypeKind.ZodEnum:\n cb(ZodFirstPartyTypeKind.ZodEnum, def, path)\n break\n\n case ZodFirstPartyTypeKind.ZodDefault:\n cb(ZodFirstPartyTypeKind.ZodDefault, def, path)\n break\n default:\n throw new errors.JSONSchemaToZuiError(`Unknown Zod type: ${(def as any).typeName}`)\n }\n}\n\n/**\n * Converts a JSONSchema to a Zui schema.\n *\n * @deprecated Use the new fromJSONSchema function instead.\n */\nexport const fromJSONSchemaLegacy = (schema: JsonSchema7Type): ZodTypeAny => {\n const zodSchema = jsonSchemaToZod(schema)\n applyZuiPropsRecursively(zodSchema, schema)\n return zodSchema as unknown as ZodTypeAny\n}\n", "import { JSONSchema7 } from 'json-schema'\nimport * as json from '../common/json-schema'\nimport z from '../../z'\n\nexport const isOptionalSchema = (s: JSONSchema7): s is json.OptionalSchema =>\n s.anyOf !== undefined &&\n s.anyOf.length === 2 &&\n s.anyOf.some((s) => typeof s !== 'boolean' && isUndefinedSchema(s)) &&\n (s as json.OptionalSchema)['x-zui']?.def?.typeName === z.ZodFirstPartyTypeKind.ZodOptional\n\nexport const isNullableSchema = (s: JSONSchema7): s is json.NullableSchema =>\n s.anyOf !== undefined &&\n s.anyOf.length === 2 &&\n s.anyOf.some((s) => typeof s !== 'boolean' && s.type === 'null') &&\n (s as json.NullableSchema)['x-zui']?.def?.typeName === z.ZodFirstPartyTypeKind.ZodNullable\n\nexport const isUndefinedSchema = (s: JSONSchema7): s is json.UndefinedSchema =>\n s.not === true && (s as json.UndefinedSchema)['x-zui']?.def?.typeName === z.ZodFirstPartyTypeKind.ZodUndefined\n\nexport const isUnknownSchema = (s: JSONSchema7): s is json.UnknownSchema =>\n !s.not && (s as json.UnknownSchema)['x-zui']?.def?.typeName === z.ZodFirstPartyTypeKind.ZodUnknown\n\nexport const isDiscriminatedUnionSchema = (s: JSONSchema7): s is json.DiscriminatedUnionSchema =>\n s.anyOf !== undefined &&\n (s as json.DiscriminatedUnionSchema)['x-zui']?.def?.typeName === z.ZodFirstPartyTypeKind.ZodDiscriminatedUnion\n", "import { JSONSchema7 } from 'json-schema'\nimport z from '../../../z'\n\nexport const numberJSONSchemaToZuiNumber = ({\n type,\n minimum,\n exclusiveMinimum,\n maximum,\n exclusiveMaximum,\n multipleOf,\n format,\n}: JSONSchema7 & { type: 'number' | 'integer' }): z.ZodNumber => {\n let zodNumber = z.number()\n\n if (type === 'integer') {\n zodNumber = zodNumber.int()\n }\n\n if (format === 'finite') {\n zodNumber = zodNumber.finite()\n }\n\n if (exclusiveMinimum !== undefined) {\n zodNumber = zodNumber.gt(exclusiveMinimum)\n } else if (minimum !== undefined) {\n zodNumber = zodNumber.gte(minimum)\n }\n\n if (exclusiveMaximum !== undefined) {\n zodNumber = zodNumber.lt(exclusiveMaximum)\n } else if (maximum !== undefined) {\n zodNumber = zodNumber.lte(maximum)\n }\n\n if (multipleOf !== undefined) {\n zodNumber = zodNumber.multipleOf(multipleOf)\n }\n\n return zodNumber\n}\n", "import { JSONSchema7 } from 'json-schema'\nimport { zodPatterns } from '../../zui-to-json-schema-legacy/parsers/string'\nimport z from '../../../z'\nimport * as datetime from '../../../z/types/string/datetime'\n\nexport const stringJSONSchemaToZuiString = ({\n format,\n pattern,\n minLength,\n maxLength,\n}: JSONSchema7 & { type: 'string' }): z.ZodString => {\n let zodString = z.string()\n\n if (minLength && maxLength && minLength === maxLength) {\n zodString = zodString.length(minLength)\n } else {\n if (minLength) {\n zodString = zodString.min(minLength)\n }\n if (maxLength) {\n zodString = zodString.max(maxLength)\n }\n }\n\n if (format === 'cuid' || pattern === zodPatterns.cuid) {\n zodString = zodString.cuid()\n } else if (format === 'cuid2' || pattern === zodPatterns.cuid2) {\n zodString = zodString.cuid2()\n } else if (format === 'emoji' || pattern === zodPatterns.emoji) {\n zodString = zodString.emoji()\n } else if (format === 'ulid' || pattern === zodPatterns.ulid) {\n zodString = zodString.ulid()\n } else if (format === 'date-time') {\n const { precision, offset } = pattern ? datetime.extractPrecisionAndOffset(pattern) : {}\n zodString = zodString.datetime({ precision, offset })\n } else if (format === 'email' || pattern === zodPatterns.email) {\n zodString = zodString.email()\n } else if (format === 'ipv4' || pattern === zodPatterns.ipv4) {\n zodString = zodString.ip()\n } else if (format === 'ipv6' || pattern === zodPatterns.ipv6) {\n zodString = zodString.ip('v6')\n } else if (format === 'uri') {\n zodString = zodString.url()\n } else if (format === 'uuid' || pattern === zodPatterns.uuid) {\n zodString = zodString.uuid()\n } else if (pattern) {\n zodString = zodString.regex(new RegExp(pattern))\n }\n\n return zodString\n}\n", "import { JSONSchema7, JSONSchema7Type } from 'json-schema'\nimport * as errs from '../../common/errors'\nimport z from '../../../z'\nimport { numberJSONSchemaToZuiNumber } from './number'\nimport { stringJSONSchemaToZuiString } from './string'\n\ntype ZuiPrimitive = keyof ZuiPrimitiveSchemas\ntype ZuiPrimitiveSchemas = {\n string: z.ZodString\n number: z.ZodNumber\n boolean: z.ZodBoolean\n null: z.ZodNull\n}\ntype ZuiPrimitiveTypes = {\n string: string\n number: number\n boolean: boolean\n null: null\n}\n\ntype ReturnType<T extends ZuiPrimitive> =\n | ZuiPrimitiveSchemas[T]\n | z.ZodLiteral<ZuiPrimitiveTypes[T]>\n | z.ZodUnion<[z.ZodLiteral<ZuiPrimitiveTypes[T]>, ...z.ZodLiteral<ZuiPrimitiveTypes[T]>[]]>\n\nexport const toZuiPrimitive = <T extends ZuiPrimitive>(type: T, schema: JSONSchema7): ReturnType<T> => {\n const values: JSONSchema7Type[] = []\n if (schema.enum !== undefined) {\n values.push(...schema.enum)\n }\n if (schema.const !== undefined) {\n values.push(schema.const)\n }\n\n let zuiPrimitive\n\n const primitiveValues = values.filter((value): value is ZuiPrimitiveTypes[T] => typeof value === type)\n const [first] = primitiveValues\n if (!first) {\n if (type === 'string' && schema.type === 'string') {\n zuiPrimitive = stringJSONSchemaToZuiString(schema as JSONSchema7 & { type: 'string' }) as ZuiPrimitiveSchemas[T]\n }\n if (type === 'number' && (schema.type === 'number' || schema.type === 'integer')) {\n zuiPrimitive = numberJSONSchemaToZuiNumber(\n schema as JSONSchema7 & { type: 'number' | 'integer' },\n ) as ZuiPrimitiveSchemas[T]\n }\n if (type === 'boolean') {\n zuiPrimitive = z.boolean() as ZuiPrimitiveSchemas[T]\n }\n if (type === 'null') {\n zuiPrimitive = z.null() as ZuiPrimitiveSchemas[T]\n }\n\n if (!zuiPrimitive) {\n throw new errs.JSONSchemaToZuiError(`Unknown primitive type: \"${type}\"`)\n }\n } else {\n if (primitiveValues.length === 1) {\n zuiPrimitive = z.literal(first) satisfies z.ZodLiteral<ZuiPrimitiveTypes[T]>\n } else {\n const items = primitiveValues.map((value) => z.literal(value)) as [\n z.ZodLiteral<ZuiPrimitiveTypes[T]>,\n z.ZodLiteral<ZuiPrimitiveTypes[T]>,\n ...z.ZodLiteral<ZuiPrimitiveTypes[T]>[],\n ]\n zuiPrimitive = z.union(items)\n }\n }\n\n if (schema.description) {\n zuiPrimitive = zuiPrimitive.describe(schema.description) as ZuiPrimitiveSchemas[T]\n }\n\n return zuiPrimitive\n}\n", "import { ArraySchema, SetSchema, TupleSchema } from '../../common/json-schema'\nimport z from '../../../z'\nimport { JSONSchema7Definition } from 'json-schema'\n\nexport const arrayJSONSchemaToZuiArray = (\n schema: ArraySchema | SetSchema | TupleSchema,\n toZui: (x: JSONSchema7Definition) => z.ZodTypeAny,\n): z.ZodArray | z.ZodSet | z.ZodTuple =>\n _isTuple(schema)\n ? _handleTuple(schema, toZui)\n : _isSet(schema)\n ? _handleSet(schema, toZui)\n : _handleArray(schema, toZui)\n\nconst _isTuple = (schema: ArraySchema | SetSchema | TupleSchema): schema is TupleSchema => Array.isArray(schema.items)\n\nconst _isSet = (schema: ArraySchema | SetSchema | TupleSchema): schema is SetSchema =>\n schema.items !== undefined && (schema as SetSchema).uniqueItems\n\nconst _handleTuple = (\n { items, additionalItems }: TupleSchema,\n toZui: (x: JSONSchema7Definition) => z.ZodTypeAny,\n): z.ZodTuple => {\n const itemSchemas = items.map(toZui) as [] | [z.ZodType, ...z.ZodType[]]\n let zodTuple: z.ZodTuple<any, any> = z.tuple(itemSchemas)\n\n if (additionalItems !== undefined) {\n zodTuple = zodTuple.rest(toZui(additionalItems))\n }\n\n return zodTuple\n}\n\nconst _handleSet = (\n { items, minItems, maxItems }: SetSchema,\n toZui: (x: JSONSchema7Definition) => z.ZodTypeAny,\n): z.ZodSet => {\n let zodSet = z.set(toZui(items))\n\n if (minItems) {\n zodSet = zodSet.min(minItems)\n }\n\n if (maxItems) {\n zodSet = zodSet.max(maxItems)\n }\n\n return zodSet\n}\n\nconst _handleArray = (\n { minItems, maxItems, items }: ArraySchema,\n toZui: (x: JSONSchema7Definition) => z.ZodTypeAny,\n): z.ZodArray | z.ZodSet | z.ZodTuple => {\n let zodArray = z.array(toZui(items))\n\n if (minItems && minItems === maxItems) {\n return zodArray.length(minItems)\n }\n\n if (minItems) {\n zodArray = zodArray.min(minItems)\n }\n\n if (maxItems) {\n zodArray = zodArray.max(maxItems)\n }\n\n return zodArray\n}\n", "import { JSONSchema7, JSONSchema7Definition } from 'json-schema'\nimport * as errors from '../common/errors'\nimport * as guards from './guards'\nimport z from '../../z'\nimport { toZuiPrimitive } from './primitives'\nimport { arrayJSONSchemaToZuiArray } from './iterables/array'\nimport { ArraySchema, SetSchema, TupleSchema } from '../common/json-schema'\n\nconst DEFAULT_TYPE = z.any()\n\n/**\n * Converts a JSON Schema to a ZUI Schema.\n * @param schema json schema\n * @returns ZUI Schema\n */\nexport function fromJSONSchema(schema: JSONSchema7): z.ZodType {\n return _fromJSONSchema(schema)\n}\n\nfunction _fromJSONSchema(schema: JSONSchema7Definition | undefined): z.ZodType {\n if (schema === undefined) {\n return DEFAULT_TYPE\n }\n\n if (schema === true) {\n return z.any()\n }\n\n if (schema === false) {\n return z.never()\n }\n\n if (schema.default !== undefined) {\n const inner = _fromJSONSchema({ ...schema, default: undefined })\n return inner.default(schema.default)\n }\n if (schema.readOnly) {\n const inner = _fromJSONSchema({ ...schema, readOnly: undefined })\n return inner.readonly()\n }\n if (schema.description !== undefined) {\n const inner = _fromJSONSchema({ ...schema, description: undefined })\n return inner.describe(schema.description)\n }\n\n if (schema.oneOf !== undefined) {\n throw new errors.UnsupportedJSONSchemaToZuiError({ oneOf: schema.oneOf })\n }\n\n if (schema.patternProperties !== undefined) {\n throw new errors.UnsupportedJSONSchemaToZuiError({ patternProperties: schema.patternProperties })\n }\n\n if (schema.propertyNames !== undefined) {\n throw new errors.UnsupportedJSONSchemaToZuiError({ propertyNames: schema.propertyNames })\n }\n\n if (schema.if !== undefined) {\n throw new errors.UnsupportedJSONSchemaToZuiError({ if: schema.if })\n }\n\n if (schema.then !== undefined) {\n // eslint-disable-next-line no-thenable\n throw new errors.UnsupportedJSONSchemaToZuiError({ then: schema.then })\n }\n\n if (schema.else !== undefined) {\n throw new errors.UnsupportedJSONSchemaToZuiError({ else: schema.else })\n }\n\n if (schema.$ref !== undefined) {\n return z.ref(schema.$ref)\n }\n\n if (schema.not !== undefined) {\n if (guards.isUndefinedSchema(schema)) {\n return z.undefined()\n }\n if (schema.not === true) {\n return z.never()\n }\n throw new errors.UnsupportedJSONSchemaToZuiError({ not: schema.not })\n }\n\n if (Array.isArray(schema.type)) {\n if (schema.type.length === 0) {\n return DEFAULT_TYPE\n }\n if (schema.type.length === 1) {\n return _fromJSONSchema({ ...schema, type: schema.type[0] })\n }\n const { type: _, ...tmp } = schema\n const types = schema.type.map((t) => _fromJSONSchema({ ...tmp, type: t })) as [z.ZodType, z.ZodType, ...z.ZodType[]]\n return z.union(types)\n }\n\n if (schema.type === 'string') {\n if (schema.enum && schema.enum.length > 0) {\n return z.enum(schema.enum as [string, ...string[]])\n }\n return toZuiPrimitive('string', schema)\n }\n\n if (schema.type === 'integer') {\n const zSchema = toZuiPrimitive('number', schema)\n if (zSchema instanceof z.ZodNumber) {\n return zSchema.int()\n }\n\n return zSchema\n }\n\n if (schema.type === 'number') {\n return toZuiPrimitive('number', schema)\n }\n\n if (schema.type === 'boolean') {\n return toZuiPrimitive('boolean', schema)\n }\n\n if (schema.type === 'null') {\n return toZuiPrimitive('null', schema)\n }\n\n if (schema.type === 'array') {\n return arrayJSONSchemaToZuiArray(schema as ArraySchema | TupleSchema | SetSchema, _fromJSONSchema)\n }\n\n if (schema.type === 'object') {\n if (schema.additionalProperties !== undefined && schema.properties !== undefined) {\n const catchAll = _fromJSONSchema(schema.additionalProperties)\n const inner = _fromJSONSchema({ ...schema, additionalProperties: undefined }) as z.ZodObject\n return inner.catchall(catchAll)\n }\n\n if (schema.properties !== undefined) {\n const properties: Record<string, z.ZodType> = {}\n for (const [key, value] of Object.entries(schema.properties)) {\n const mapped: z.ZodType = _fromJSONSchema(value)\n const required: string[] = schema.required ?? []\n // If the property is already optional (e.g., has a default value), don't wrap it again\n properties[key] = required.includes(key) ? mapped : mapped.isOptional() ? mapped : mapped.optional()\n }\n return z.object(properties)\n }\n\n if (schema.additionalProperties !== undefined) {\n const inner = _fromJSONSchema(schema.additionalProperties)\n return z.record(inner)\n }\n\n return z.record(DEFAULT_TYPE)\n }\n\n if (schema.anyOf !== undefined) {\n if (schema.anyOf.length === 0) {\n return DEFAULT_TYPE\n }\n\n if (schema.anyOf.length === 1) {\n return _fromJSONSchema(schema.anyOf[0])\n }\n\n if (guards.isOptionalSchema(schema)) {\n const inner = _fromJSONSchema(schema.anyOf[0])\n return inner.optional()\n }\n\n if (guards.isNullableSchema(schema)) {\n const inner = _fromJSONSchema(schema.anyOf[0])\n return inner.nullable()\n }\n\n if (guards.isDiscriminatedUnionSchema(schema) && schema['x-zui']?.def?.discriminator) {\n const { discriminator } = schema['x-zui'].def\n const options = schema.anyOf.map(_fromJSONSchema) as [\n z.ZodDiscriminatedUnionOption<string>,\n z.ZodDiscriminatedUnionOption<string>,\n ...z.ZodDiscriminatedUnionOption<string>[],\n ]\n return z.discriminatedUnion(discriminator, options)\n }\n\n const options = schema.anyOf.map(_fromJSONSchema) as [z.ZodType, z.ZodType, ...z.ZodType[]]\n return z.union(options)\n }\n\n if (schema.allOf !== undefined) {\n if (schema.allOf.length === 0) {\n return DEFAULT_TYPE\n }\n if (schema.allOf.length === 1) {\n return _fromJSONSchema(schema.allOf[0])\n }\n const [left, ...right] = schema.allOf as [JSONSchema7, ...JSONSchema7[]]\n const zLeft = _fromJSONSchema(left)\n const zRight = _fromJSONSchema({ allOf: right })\n return z.intersection(zLeft, zRight)\n }\n\n type _expectUndefined = z.util.AssertTrue<z.util.IsEqual<typeof schema.type, undefined>>\n\n if (guards.isUnknownSchema(schema)) {\n return z.unknown()\n }\n return DEFAULT_TYPE\n}\n", "import { z, SomeZodObject, ZodTypeAny } from '../../z/index'\nimport * as errors from '../common/errors'\n\n// Using a basic regex do determine if it's a date or not to avoid using another lib for that\nconst dateTimeRegex =\n /^\\d{4}-\\d{2}-\\d{2}(T|\\s)?((\\d{2}:\\d{2}:\\d{2}(\\.\\d{1,3})?)|(\\d{2}:\\d{2}))?(\\s?([+-]\\d{2}:\\d{2}|Z))?$/\n\nexport type ObjectToZuiOptions = { optional?: boolean; nullable?: boolean; passtrough?: boolean }\n\n/**\n * Converts a plain object to a Zod schema, by inferring the types of its properties.\n *\n * @param obj - The object to convert.\n * @param opts - Options to customize the Zod schema:\n * @returns A Zod schema representing the object.\n */\nexport const fromObject = (obj: object, opts?: ObjectToZuiOptions, isRoot = true): ZodTypeAny => {\n if (typeof obj !== 'object') {\n throw new errors.ObjectToZuiError('Input must be an object')\n }\n\n const applyOptions = (zodType: any) => {\n let newType = zodType\n if (opts?.nullable) {\n newType = newType.nullable()\n }\n if (opts?.optional) {\n newType = newType.optional()\n }\n if (opts?.passtrough && typeof newType.passthrough === 'function') {\n newType = newType.passthrough()\n }\n return newType\n }\n\n const schema = Object.entries(obj).reduce((acc: any, [key, value]) => {\n if (value === null) {\n acc[key] = applyOptions(z.null())\n } else {\n switch (typeof value) {\n case 'string':\n acc[key] = dateTimeRegex.test(value) ? applyOptions(z.string().datetime()) : applyOptions(z.string())\n break\n case 'number':\n acc[key] = applyOptions(z.number())\n break\n case 'boolean':\n acc[key] = applyOptions(z.boolean())\n break\n case 'object':\n if (Array.isArray(value)) {\n if (value.length === 0) {\n acc[key] = applyOptions(z.array(z.unknown()))\n } else if (typeof value[0] === 'object') {\n acc[key] = applyOptions(z.array(fromObject(value[0], opts, false)))\n } else if (['string', 'number', 'boolean'].includes(typeof value[0])) {\n acc[key] = applyOptions(z.array((z as any)[typeof value[0] as any]()))\n }\n } else {\n acc[key] = applyOptions(fromObject(value, opts, false))\n }\n break\n default:\n throw new errors.ObjectToZuiError(`Unsupported type for key ${key}`)\n }\n }\n return acc\n }, {} as SomeZodObject)\n\n const hasProperties = Object.keys(schema).length > 0\n if (opts?.passtrough || (!isRoot && !hasProperties)) {\n return z.object(schema).passthrough()\n }\n\n return z.object(schema)\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport { ZuiExtensionObject } from '../../../ui/types'\n\nexport type JsonSchema7AnyType = {\n [zuiKey]?: ZuiExtensionObject\n}\n\nexport function parseAnyDef(): JsonSchema7AnyType {\n return {}\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport { ZuiExtensionObject } from '../../../ui/types'\nimport { ZodArrayDef, ZodFirstPartyTypeKind } from '../../../z/index'\nimport { ErrorMessages, setResponseValueAndErrors } from '../errorMessages'\nimport { JsonSchema7Type, parseDef } from '../parseDef'\nimport { Refs } from '../Refs'\n\nexport type JsonSchema7ArrayType = {\n type: 'array'\n items?: JsonSchema7Type\n minItems?: number\n maxItems?: number\n errorMessages?: ErrorMessages<JsonSchema7ArrayType, 'items'>\n [zuiKey]?: ZuiExtensionObject\n}\n\nexport function parseArrayDef(def: ZodArrayDef, refs: Refs) {\n const res: JsonSchema7ArrayType = {\n type: 'array',\n }\n\n if (def.type?._def?.typeName !== ZodFirstPartyTypeKind.ZodAny) {\n res.items = parseDef(def.type._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'items'],\n })\n }\n\n if (def.minLength) {\n setResponseValueAndErrors(res, 'minItems', def.minLength.value, def.minLength.message, refs)\n }\n if (def.maxLength) {\n setResponseValueAndErrors(res, 'maxItems', def.maxLength.value, def.maxLength.message, refs)\n }\n if (def.exactLength) {\n setResponseValueAndErrors(res, 'minItems', def.exactLength.value, def.exactLength.message, refs)\n setResponseValueAndErrors(res, 'maxItems', def.exactLength.value, def.exactLength.message, refs)\n }\n return res\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport { ZuiExtensionObject } from '../../../ui/types'\nimport { ZodBigIntDef } from '../../../z/index'\nimport { Refs } from '../Refs'\nimport { ErrorMessages, setResponseValueAndErrors } from '../errorMessages'\n\nexport type JsonSchema7BigintType = {\n type: 'integer'\n format: 'int64'\n minimum?: BigInt\n exclusiveMinimum?: BigInt\n maximum?: BigInt\n exclusiveMaximum?: BigInt\n multipleOf?: BigInt\n errorMessage?: ErrorMessages<JsonSchema7BigintType>\n [zuiKey]?: ZuiExtensionObject\n}\n\nexport function parseBigintDef(def: ZodBigIntDef, refs: Refs): JsonSchema7BigintType {\n const res: JsonSchema7BigintType = {\n type: 'integer',\n format: 'int64',\n ...(def.coerce\n ? {\n [zuiKey]: {\n coerce: def.coerce || undefined,\n },\n }\n : {}),\n }\n\n if (!def.checks) return res\n\n for (const check of def.checks) {\n switch (check.kind) {\n case 'min':\n if (refs.target === 'jsonSchema7') {\n if (check.inclusive) {\n setResponseValueAndErrors(res, 'minimum', check.value, check.message, refs)\n } else {\n setResponseValueAndErrors(res, 'exclusiveMinimum', check.value, check.message, refs)\n }\n } else {\n if (!check.inclusive) {\n res.exclusiveMinimum = true as any\n }\n setResponseValueAndErrors(res, 'minimum', check.value, check.message, refs)\n }\n break\n case 'max':\n if (refs.target === 'jsonSchema7') {\n if (check.inclusive) {\n setResponseValueAndErrors(res, 'maximum', check.value, check.message, refs)\n } else {\n setResponseValueAndErrors(res, 'exclusiveMaximum', check.value, check.message, refs)\n }\n } else {\n if (!check.inclusive) {\n res.exclusiveMaximum = true as any\n }\n setResponseValueAndErrors(res, 'maximum', check.value, check.message, refs)\n }\n break\n case 'multipleOf':\n setResponseValueAndErrors(res, 'multipleOf', check.value, check.message, refs)\n break\n }\n }\n return res\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport { ZuiExtensionObject } from '../../../ui/types'\nimport { ZodBooleanDef } from '../../../z'\n\nexport type JsonSchema7BooleanType = {\n type: 'boolean'\n [zuiKey]?: ZuiExtensionObject\n}\n\nexport function parseBooleanDef(def: ZodBooleanDef): JsonSchema7BooleanType {\n return {\n type: 'boolean',\n ...(def.coerce\n ? {\n [zuiKey]: {\n coerce: def.coerce || undefined,\n },\n }\n : {}),\n }\n}\n", "import { ZodBrandedDef } from '../../../z/index'\nimport { parseDef } from '../parseDef'\nimport { Refs } from '../Refs'\n\nexport function parseBrandedDef(_def: ZodBrandedDef<any>, refs: Refs) {\n return parseDef(_def.type._def, refs)\n}\n", "import { ZodCatchDef } from '../../../z/index'\nimport { parseDef } from '../parseDef'\nimport { Refs } from '../Refs'\n\nexport const parseCatchDef = (def: ZodCatchDef<any>, refs: Refs) => {\n return parseDef(def.innerType._def, refs)\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport { ZuiExtensionObject } from '../../../ui/types'\nimport { ZodDateDef } from '../../../z/index'\nimport { Refs } from '../Refs'\nimport { ErrorMessages, setResponseValueAndErrors } from '../errorMessages'\nimport { JsonSchema7NumberType } from './number'\n\nexport type JsonSchema7DateType = {\n type: 'integer' | 'string'\n format: 'unix-time' | 'date-time'\n minimum?: number\n maximum?: number\n errorMessage?: ErrorMessages<JsonSchema7NumberType>\n [zuiKey]?: ZuiExtensionObject\n}\n\nexport function parseDateDef(def: ZodDateDef, refs: Refs): JsonSchema7DateType {\n if (refs.dateStrategy == 'integer') {\n return integerDateParser(def, refs)\n } else {\n return {\n type: 'string',\n format: 'date-time',\n ...(def.coerce\n ? {\n [zuiKey]: {\n coerce: def.coerce || undefined,\n },\n }\n : {}),\n }\n }\n}\n\nconst integerDateParser = (def: ZodDateDef, refs: Refs) => {\n const res: JsonSchema7DateType = {\n type: 'integer',\n format: 'unix-time',\n ...(def.coerce\n ? {\n [zuiKey]: {\n coerce: def.coerce || undefined,\n },\n }\n : {}),\n }\n\n for (const check of def.checks) {\n switch (check.kind) {\n case 'min':\n if (refs.target === 'jsonSchema7') {\n setResponseValueAndErrors(\n res,\n 'minimum',\n check.value, // This is in milliseconds\n check.message,\n refs,\n )\n }\n break\n case 'max':\n if (refs.target === 'jsonSchema7') {\n setResponseValueAndErrors(\n res,\n 'maximum',\n check.value, // This is in milliseconds\n check.message,\n refs,\n )\n }\n break\n }\n }\n\n return res\n}\n", "import { ZodDefaultDef } from '../../../z/index'\nimport { JsonSchema7Type, parseDef } from '../parseDef'\nimport { Refs } from '../Refs'\n\nexport function parseDefaultDef(_def: ZodDefaultDef, refs: Refs): JsonSchema7Type & { default: any } {\n return {\n ...parseDef(_def.innerType._def, refs),\n default: _def.defaultValue(),\n }\n}\n", "import { ZodEffectsDef } from '../../../z/index'\nimport { JsonSchema7Type, parseDef } from '../parseDef'\nimport { Refs } from '../Refs'\n\nexport function parseEffectsDef(_def: ZodEffectsDef, refs: Refs): JsonSchema7Type | undefined {\n return refs.effectStrategy === 'input' ? parseDef(_def.schema._def, refs) : {}\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport { ZuiExtensionObject } from '../../../ui/types'\nimport { ZodEnumDef } from '../../../z/index'\n\nexport type JsonSchema7EnumType = {\n type: 'string'\n enum: string[]\n [zuiKey]?: ZuiExtensionObject\n}\n\nexport function parseEnumDef(def: ZodEnumDef): JsonSchema7EnumType {\n return {\n type: 'string',\n enum: def.values,\n }\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport { ZuiExtensionObject } from '../../../ui/types'\nimport { ZodIntersectionDef } from '../../../z/index'\nimport { JsonSchema7Type, parseDef } from '../parseDef'\nimport { Refs } from '../Refs'\nimport { JsonSchema7StringType } from './string'\n\nexport type JsonSchema7AllOfType = {\n allOf: JsonSchema7Type[]\n unevaluatedProperties?: boolean\n [zuiKey]?: ZuiExtensionObject\n}\n\nconst isJsonSchema7AllOfType = (type: JsonSchema7Type | JsonSchema7StringType): type is JsonSchema7AllOfType => {\n if ('type' in type && type.type === 'string') return false\n return 'allOf' in type\n}\n\nexport function parseIntersectionDef(\n def: ZodIntersectionDef,\n refs: Refs,\n): JsonSchema7AllOfType | JsonSchema7Type | undefined {\n const allOf = [\n parseDef(def.left._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'allOf', '0'],\n }),\n parseDef(def.right._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'allOf', '1'],\n }),\n ].filter((x): x is JsonSchema7Type => !!x)\n\n let unevaluatedProperties: Pick<JsonSchema7AllOfType, 'unevaluatedProperties'> | undefined =\n refs.target === 'jsonSchema2019-09' ? { unevaluatedProperties: false } : undefined\n\n const mergedAllOf: JsonSchema7Type[] = []\n // If either of the schemas is an allOf, merge them into a single allOf\n allOf.forEach((schema) => {\n if (isJsonSchema7AllOfType(schema)) {\n mergedAllOf.push(...schema.allOf)\n if (schema.unevaluatedProperties === undefined) {\n // If one of the schemas has no unevaluatedProperties set,\n // the merged schema should also have no unevaluatedProperties set\n unevaluatedProperties = undefined\n }\n } else {\n let nestedSchema: JsonSchema7Type = schema\n if ('additionalProperties' in schema && schema.additionalProperties === false) {\n const { additionalProperties, ...rest } = schema\n nestedSchema = rest\n } else {\n // As soon as one of the schemas has additionalProperties set not to false, we allow unevaluatedProperties\n unevaluatedProperties = undefined\n }\n mergedAllOf.push(nestedSchema)\n }\n })\n return mergedAllOf.length\n ? {\n allOf: mergedAllOf,\n ...unevaluatedProperties,\n }\n : undefined\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport { ZuiExtensionObject } from '../../../ui/types'\nimport { ZodLiteralDef } from '../../../z/index'\nimport { Refs } from '../Refs'\n\nexport type JsonSchema7LiteralType =\n | {\n type: 'string' | 'number' | 'integer' | 'boolean'\n const: string | number | boolean\n [zuiKey]?: ZuiExtensionObject\n }\n | {\n type: 'object' | 'array'\n [zuiKey]?: ZuiExtensionObject\n }\n\nexport function parseLiteralDef(def: ZodLiteralDef, refs: Refs): JsonSchema7LiteralType {\n const parsedType = typeof def.value\n if (parsedType !== 'bigint' && parsedType !== 'number' && parsedType !== 'boolean' && parsedType !== 'string') {\n return {\n type: Array.isArray(def.value) ? 'array' : 'object',\n }\n }\n\n if (refs.target === 'openApi3') {\n return {\n type: parsedType === 'bigint' ? 'integer' : parsedType,\n enum: [def.value],\n } as any\n }\n\n return {\n type: parsedType === 'bigint' ? 'integer' : parsedType,\n const: def.value,\n } as JsonSchema7LiteralType\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport { ZuiExtensionObject } from '../../../ui/types'\nimport { ZodFirstPartyTypeKind, ZodMapDef, ZodRecordDef, ZodTypeAny } from '../../../z/index'\nimport { JsonSchema7Type, parseDef } from '../parseDef'\nimport { Refs } from '../Refs'\nimport { JsonSchema7EnumType } from './enum'\nimport { JsonSchema7ObjectType } from './object'\nimport { JsonSchema7StringType, parseStringDef } from './string'\n\ntype JsonSchema7RecordPropertyNamesType = Omit<JsonSchema7StringType, 'type'> | Omit<JsonSchema7EnumType, 'type'>\n\nexport type JsonSchema7RecordType = {\n type: 'object'\n additionalProperties: JsonSchema7Type\n propertyNames?: JsonSchema7RecordPropertyNamesType\n [zuiKey]?: ZuiExtensionObject\n}\n\nexport function parseRecordDef(\n def: ZodRecordDef<ZodTypeAny, ZodTypeAny> | ZodMapDef,\n refs: Refs,\n): JsonSchema7RecordType {\n if (refs.target === 'openApi3' && def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodEnum) {\n return {\n type: 'object',\n required: def.keyType._def.values,\n properties: def.keyType._def.values.reduce(\n (acc: Record<string, JsonSchema7Type>, key: string) => ({\n ...acc,\n [key]:\n parseDef(def.valueType._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'properties', key],\n }) ?? {},\n }),\n {},\n ),\n additionalProperties: false,\n } satisfies JsonSchema7ObjectType as any\n }\n\n const schema: JsonSchema7RecordType = {\n type: 'object',\n additionalProperties:\n parseDef(def.valueType._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'additionalProperties'],\n }) ?? {},\n }\n\n if (refs.target === 'openApi3') {\n return schema\n }\n\n if (def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodString && def.keyType._def.checks?.length) {\n const keyType: JsonSchema7RecordPropertyNamesType = Object.entries(parseStringDef(def.keyType._def, refs)).reduce(\n (acc, [key, value]) => (key === 'type' ? acc : { ...acc, [key]: value }),\n {},\n )\n\n return {\n ...schema,\n propertyNames: keyType,\n }\n } else if (def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodEnum) {\n return {\n ...schema,\n propertyNames: {\n enum: def.keyType._def.values,\n },\n }\n }\n\n return schema\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport { ZuiExtensionObject } from '../../../ui/types'\nimport { ZodMapDef } from '../../../z/index'\nimport { JsonSchema7Type, parseDef } from '../parseDef'\nimport { Refs } from '../Refs'\nimport { JsonSchema7RecordType, parseRecordDef } from './record'\n\nexport type JsonSchema7MapType = {\n type: 'array'\n maxItems: 125\n items: {\n type: 'array'\n items: [JsonSchema7Type, JsonSchema7Type]\n minItems: 2\n maxItems: 2\n }\n [zuiKey]?: ZuiExtensionObject\n}\n\nexport function parseMapDef(def: ZodMapDef, refs: Refs): JsonSchema7MapType | JsonSchema7RecordType {\n if (refs.mapStrategy === 'record') {\n return parseRecordDef(def, refs)\n }\n\n const keys =\n parseDef(def.keyType._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'items', 'items', '0'],\n }) || {}\n const values =\n parseDef(def.valueType._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'items', 'items', '1'],\n }) || {}\n return {\n type: 'array',\n maxItems: 125,\n items: {\n type: 'array',\n items: [keys, values],\n minItems: 2,\n maxItems: 2,\n },\n }\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport { ZuiExtensionObject } from '../../../ui/types'\nimport { ZodNativeEnumDef } from '../../../z/index'\n\nexport type JsonSchema7NativeEnumType = {\n type: 'string' | 'number' | ['string', 'number']\n enum: (string | number)[]\n [zuiKey]?: ZuiExtensionObject\n}\n\nexport function parseNativeEnumDef(def: ZodNativeEnumDef): JsonSchema7NativeEnumType {\n const object = def.values\n const actualKeys = Object.keys(def.values).filter((key: string) => {\n return typeof object[object[key]!] !== 'number'\n })\n\n const actualValues = actualKeys.map((key: string) => object[key])\n\n const parsedTypes = Array.from(new Set(actualValues.map((values) => typeof values)))\n\n return {\n type: parsedTypes.length === 1 ? (parsedTypes[0] === 'string' ? 'string' : 'number') : ['string', 'number'],\n enum: actualValues.filter(\n (value): value is number | string => typeof value === 'string' || typeof value === 'number',\n ),\n }\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport { ZuiExtensionObject } from '../../../ui/types'\n\nexport type JsonSchema7NeverType = {\n not: {}\n [zuiKey]?: ZuiExtensionObject\n}\n\nexport function parseNeverDef(): JsonSchema7NeverType {\n return {\n not: {},\n }\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport { ZuiExtensionObject } from '../../../ui/types'\nimport { Refs } from '../Refs'\n\nexport type JsonSchema7NullType = {\n type: 'null'\n [zuiKey]?: ZuiExtensionObject\n}\n\nexport function parseNullDef(refs: Refs): JsonSchema7NullType {\n return refs.target === 'openApi3'\n ? ({\n enum: ['null'],\n nullable: true,\n } as any)\n : {\n type: 'null',\n }\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport { ZuiExtensionObject } from '../../../ui/types'\nimport { ZodDiscriminatedUnionDef, ZodLiteralDef, ZodTypeAny, ZodUnionDef } from '../../../z/index'\nimport { JsonSchema7Type, parseDef } from '../parseDef'\nimport { Refs } from '../Refs'\n\nexport const primitiveMappings = {\n ZodString: 'string',\n ZodNumber: 'number',\n ZodBigInt: 'integer',\n ZodBoolean: 'boolean',\n ZodNull: 'null',\n} as const\ntype ZodPrimitive = keyof typeof primitiveMappings\ntype JsonSchema7Primitive = (typeof primitiveMappings)[keyof typeof primitiveMappings]\n\nexport type JsonSchema7UnionType = JsonSchema7PrimitiveUnionType | JsonSchema7AnyOfType | JsonSchema7OneOfType\n\ntype JsonSchema7PrimitiveUnionType =\n | {\n type: JsonSchema7Primitive | JsonSchema7Primitive[]\n [zuiKey]?: ZuiExtensionObject\n }\n | {\n type: JsonSchema7Primitive | JsonSchema7Primitive[]\n enum: (string | number | bigint | boolean | null)[]\n [zuiKey]?: ZuiExtensionObject\n }\n\ntype JsonSchema7AnyOfType = {\n anyOf: JsonSchema7Type[]\n discriminator?: {\n propertyName: string\n }\n}\n\ntype JsonSchema7OneOfType = {\n oneOf: JsonSchema7Type[]\n discriminator?: {\n propertyName: string\n }\n}\n\nexport function parseUnionDef(\n def: ZodUnionDef | ZodDiscriminatedUnionDef<any, any>,\n refs: Refs,\n): JsonSchema7PrimitiveUnionType | JsonSchema7AnyOfType | JsonSchema7OneOfType | undefined {\n if (refs.target === 'openApi3') return asUnionOf(def, refs)\n\n const options: readonly ZodTypeAny[] = def.options instanceof Map ? Array.from(def.options.values()) : def.options\n\n // This blocks tries to look ahead a bit to produce nicer looking schemas with type array instead of anyOf.\n if (options.every((x) => x._def.typeName in primitiveMappings && (!x._def.checks || !x._def.checks.length))) {\n // all types in union are primitive and lack checks, so might as well squash into {type: [...]}\n\n const types = options.reduce((types: JsonSchema7Primitive[], x) => {\n const type = primitiveMappings[x._def.typeName as ZodPrimitive] //Can be safely casted due to row 43\n return type && !types.includes(type) ? [...types, type] : types\n }, [])\n\n return {\n type: types.length > 1 ? types : types[0]!,\n }\n } else if (options.every((x) => x._def.typeName === 'ZodLiteral' && !x.description)) {\n // all options literals\n\n const types = options.reduce((acc: JsonSchema7Primitive[], x: { _def: ZodLiteralDef }) => {\n const type = typeof x._def.value\n switch (type) {\n case 'string':\n case 'number':\n case 'boolean':\n return [...acc, type]\n case 'bigint':\n return [...acc, 'integer' as const]\n case 'object':\n if (x._def.value === null) return [...acc, 'null' as const]\n case 'symbol':\n case 'undefined':\n case 'function':\n default:\n return acc\n }\n }, [])\n\n if (types.length === options.length) {\n // all the literals are primitive, as far as null can be considered primitive\n\n const uniqueTypes = types.filter((x, i, a) => a.indexOf(x) === i)\n return {\n type: uniqueTypes.length > 1 ? uniqueTypes : uniqueTypes[0]!,\n enum: options.reduce(\n (acc, x) => {\n return acc.includes(x._def.value) ? acc : [...acc, x._def.value]\n },\n [] as (string | number | bigint | boolean | null)[],\n ),\n }\n }\n } else if (options.every((x) => x._def.typeName === 'ZodEnum')) {\n return {\n type: 'string',\n enum: options.reduce(\n (acc: string[], x) => [...acc, ...x._def.values.filter((x: string) => !acc.includes(x))],\n [],\n ),\n }\n }\n\n return asUnionOf(def, refs)\n}\n\nconst asUnionOf = (\n def: ZodUnionDef | ZodDiscriminatedUnionDef<any, any>,\n refs: Refs,\n): JsonSchema7PrimitiveUnionType | JsonSchema7AnyOfType | JsonSchema7OneOfType | undefined => {\n const unionOf = ((def.options instanceof Map ? Array.from(def.options.values()) : def.options) as any[])\n .map((x, i) =>\n parseDef(x._def, {\n ...refs,\n currentPath: [...refs.currentPath, refs.unionStrategy, `${i}`],\n }),\n )\n .filter(\n (x): x is JsonSchema7Type => !!x && (!refs.strictUnions || (typeof x === 'object' && Object.keys(x).length > 0)),\n )\n\n const discriminator =\n refs.discriminator && def.typeName === 'ZodDiscriminatedUnion' && typeof def.discriminator === 'string'\n ? ({ discriminator: { propertyName: def.discriminator } } as const)\n : {}\n\n if (!unionOf.length) {\n return undefined\n }\n\n return refs.unionStrategy === 'anyOf' ? { anyOf: unionOf, ...discriminator } : { oneOf: unionOf, ...discriminator }\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport { ZuiExtensionObject } from '../../../ui/types'\nimport { ZodNullableDef } from '../../../z/index'\nimport { addMeta, JsonSchema7Type, parseDef } from '../parseDef'\nimport { Refs } from '../Refs'\nimport { JsonSchema7NullType } from './null'\nimport { primitiveMappings } from './union'\n\nexport type JsonSchema7NullableType =\n | {\n anyOf: [JsonSchema7Type, JsonSchema7NullType]\n [zuiKey]?: ZuiExtensionObject\n }\n | {\n type: [string, 'null']\n [zuiKey]?: ZuiExtensionObject\n }\n\nexport function parseNullableDef(def: ZodNullableDef, refs: Refs): JsonSchema7NullableType | undefined {\n if (\n ['ZodString', 'ZodNumber', 'ZodBigInt', 'ZodBoolean', 'ZodNull'].includes(def.innerType._def.typeName) &&\n (!def.innerType._def.checks || !def.innerType._def.checks.length)\n ) {\n const inner = def.innerType\n if (refs.target === 'openApi3') {\n const schema = {\n type: primitiveMappings[inner._def.typeName as keyof typeof primitiveMappings],\n nullable: true,\n } as any\n return addMeta(inner._def, refs, schema)\n }\n\n const schema: JsonSchema7NullableType = {\n type: [primitiveMappings[inner._def.typeName as keyof typeof primitiveMappings], 'null'],\n }\n return addMeta(inner._def, refs, schema)\n }\n\n if (refs.target === 'openApi3') {\n const base = parseDef(def.innerType._def, {\n ...refs,\n currentPath: [...refs.currentPath],\n })\n\n return base && ({ ...base, nullable: true } as any)\n }\n\n const base = parseDef(def.innerType._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'anyOf', '0'],\n })\n\n return base && { anyOf: [base, { type: 'null' }] }\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport { ZuiExtensionObject } from '../../../ui/types'\nimport { ZodNumberDef } from '../../../z/index'\nimport { addErrorMessage, ErrorMessages, setResponseValueAndErrors } from '../errorMessages'\nimport { Refs } from '../Refs'\n\nexport type JsonSchema7NumberType = {\n type: 'number' | 'integer'\n minimum?: number\n exclusiveMinimum?: number\n maximum?: number\n exclusiveMaximum?: number\n multipleOf?: number\n errorMessage?: ErrorMessages<JsonSchema7NumberType>\n [zuiKey]?: ZuiExtensionObject\n}\n\nexport function parseNumberDef(def: ZodNumberDef, refs: Refs): JsonSchema7NumberType {\n const res: JsonSchema7NumberType = {\n type: 'number',\n ...(def.coerce\n ? {\n [zuiKey]: {\n coerce: def.coerce || undefined,\n },\n }\n : {}),\n }\n\n if (!def.checks) return res\n\n for (const check of def.checks) {\n switch (check.kind) {\n case 'int':\n res.type = 'integer'\n addErrorMessage(res, 'type', check.message, refs)\n break\n case 'min':\n if (refs.target === 'jsonSchema7') {\n if (check.inclusive) {\n setResponseValueAndErrors(res, 'minimum', check.value, check.message, refs)\n } else {\n setResponseValueAndErrors(res, 'exclusiveMinimum', check.value, check.message, refs)\n }\n } else {\n if (!check.inclusive) {\n res.exclusiveMinimum = true as any\n }\n setResponseValueAndErrors(res, 'minimum', check.value, check.message, refs)\n }\n break\n case 'max':\n if (refs.target === 'jsonSchema7') {\n if (check.inclusive) {\n setResponseValueAndErrors(res, 'maximum', check.value, check.message, refs)\n } else {\n setResponseValueAndErrors(res, 'exclusiveMaximum', check.value, check.message, refs)\n }\n } else {\n if (!check.inclusive) {\n res.exclusiveMaximum = true as any\n }\n setResponseValueAndErrors(res, 'maximum', check.value, check.message, refs)\n }\n break\n case 'multipleOf':\n setResponseValueAndErrors(res, 'multipleOf', check.value, check.message, refs)\n break\n }\n }\n return res\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport { ZuiExtensionObject } from '../../../ui/types'\nimport { ZodObjectDef, ZodType } from '../../../z/index'\nimport { JsonSchema7Type, parseDef } from '../parseDef'\nimport { Refs } from '../Refs'\n\nexport type JsonSchema7ObjectType = {\n type: 'object'\n properties: Record<string, JsonSchema7Type>\n additionalProperties: boolean | JsonSchema7Type\n required?: string[]\n [zuiKey]?: ZuiExtensionObject\n}\n\nconst getAdditionalProperties = (def: ZodObjectDef, refs: Refs): boolean | JsonSchema7Type => {\n if (def.unknownKeys instanceof ZodType) {\n return (\n parseDef(def.unknownKeys._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'additionalProperties'],\n }) ?? true\n )\n }\n if (def.unknownKeys === 'passthrough') {\n return true\n }\n return false\n}\n\nexport function parseObjectDefX(def: ZodObjectDef, refs: Refs) {\n Object.keys(def.shape()).reduce(\n (schema: JsonSchema7ObjectType, key) => {\n let prop = def.shape()[key]\n if (typeof prop === 'undefined' || typeof prop._def === 'undefined') {\n return schema\n }\n\n const isOptional = prop.isOptional()\n\n if (!isOptional) {\n prop = { ...prop._def.innerSchema }\n }\n\n const propSchema = parseDef(prop!._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'properties', key],\n propertyPath: [...refs.currentPath, 'properties', key],\n })\n\n if (propSchema !== undefined) {\n schema.properties[key] = propSchema\n\n if (!isOptional) {\n if (!schema.required) {\n schema.required = []\n }\n\n schema.required.push(key)\n }\n }\n\n return schema\n },\n {\n type: 'object',\n properties: {},\n additionalProperties: getAdditionalProperties(def, refs),\n },\n )\n\n const result: JsonSchema7ObjectType = {\n type: 'object',\n ...Object.entries(def.shape()).reduce(\n (\n acc: {\n properties: Record<string, JsonSchema7Type>\n required: string[]\n },\n [propName, propDef],\n ) => {\n if (propDef === undefined || propDef._def === undefined) return acc\n const parsedDef = parseDef(propDef._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'properties', propName],\n propertyPath: [...refs.currentPath, 'properties', propName],\n })\n if (parsedDef === undefined) return acc\n return {\n properties: { ...acc.properties, [propName]: parsedDef },\n required: propDef.isOptional() ? acc.required : [...acc.required, propName],\n }\n },\n { properties: {}, required: [] },\n ),\n additionalProperties: getAdditionalProperties(def, refs),\n }\n if (!result.required!.length) delete result.required\n return result\n}\n\nexport function parseObjectDef(def: ZodObjectDef, refs: Refs) {\n const result: JsonSchema7ObjectType = {\n type: 'object',\n ...Object.entries(def.shape()).reduce(\n (\n acc: {\n properties: Record<string, JsonSchema7Type>\n required: string[]\n },\n [propName, propDef],\n ) => {\n if (propDef === undefined || propDef._def === undefined) return acc\n const parsedDef = parseDef(propDef._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'properties', propName],\n propertyPath: [...refs.currentPath, 'properties', propName],\n })\n if (parsedDef === undefined) return acc\n return {\n properties: { ...acc.properties, [propName]: parsedDef },\n required: propDef.isOptional() ? acc.required : [...acc.required, propName],\n }\n },\n { properties: {}, required: [] },\n ),\n additionalProperties: getAdditionalProperties(def, refs),\n }\n if (!result.required!.length) delete result.required\n return result\n}\n", "import { ZodOptionalDef } from '../../../z/index'\nimport { JsonSchema7Type, parseDef } from '../parseDef'\nimport { Refs } from '../Refs'\n\nexport const parseOptionalDef = (def: ZodOptionalDef, refs: Refs): JsonSchema7Type | undefined => {\n if (refs.currentPath.toString() === refs.propertyPath?.toString()) {\n return parseDef(def.innerType._def, refs)\n }\n\n const innerSchema = parseDef(def.innerType._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'anyOf', '1'],\n })\n\n return innerSchema\n ? {\n anyOf: [\n {\n not: {},\n },\n innerSchema,\n ],\n }\n : {}\n}\n", "import { ZodPipelineDef } from '../../../z/index'\nimport { JsonSchema7Type, parseDef } from '../parseDef'\nimport { Refs } from '../Refs'\nimport { JsonSchema7AllOfType } from './intersection'\n\nexport const parsePipelineDef = (\n def: ZodPipelineDef<any, any>,\n refs: Refs,\n): JsonSchema7AllOfType | JsonSchema7Type | undefined => {\n if (refs.pipeStrategy === 'input') {\n return parseDef(def.in._def, refs)\n } else if (refs.pipeStrategy === 'output') {\n return parseDef(def.out._def, refs)\n }\n\n const a = parseDef(def.in._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'allOf', '0'],\n })\n const b = parseDef(def.out._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'allOf', a ? '1' : '0'],\n })\n\n return {\n allOf: [a, b].filter((x): x is JsonSchema7Type => x !== undefined),\n }\n}\n", "import { ZodPromiseDef } from '../../../z/index'\nimport { JsonSchema7Type, parseDef } from '../parseDef'\nimport { Refs } from '../Refs'\n\nexport function parsePromiseDef(def: ZodPromiseDef, refs: Refs): JsonSchema7Type | undefined {\n return parseDef(def.type._def, refs)\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport { ZuiExtensionObject } from '../../../ui/types'\nimport { ZodSetDef } from '../../../z/index'\nimport { ErrorMessages, setResponseValueAndErrors } from '../errorMessages'\nimport { JsonSchema7Type, parseDef } from '../parseDef'\nimport { Refs } from '../Refs'\n\nexport type JsonSchema7SetType = {\n type: 'array'\n uniqueItems: true\n items?: JsonSchema7Type\n minItems?: number\n maxItems?: number\n errorMessage?: ErrorMessages<JsonSchema7SetType>\n [zuiKey]?: ZuiExtensionObject\n}\n\nexport function parseSetDef(def: ZodSetDef, refs: Refs): JsonSchema7SetType {\n const items = parseDef(def.valueType._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'items'],\n })\n\n const schema: JsonSchema7SetType = {\n type: 'array',\n uniqueItems: true,\n items,\n }\n\n if (def.minSize) {\n setResponseValueAndErrors(schema, 'minItems', def.minSize.value, def.minSize.message, refs)\n }\n\n if (def.maxSize) {\n setResponseValueAndErrors(schema, 'maxItems', def.maxSize.value, def.maxSize.message, refs)\n }\n\n return schema\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport { ZuiExtensionObject } from '../../../ui/types'\nimport { ZodTupleDef, ZodTupleItems, ZodTypeAny } from '../../../z/index'\nimport { JsonSchema7Type, parseDef } from '../parseDef'\nimport { Refs } from '../Refs'\n\nexport type JsonSchema7TupleType = {\n type: 'array'\n minItems: number\n items: JsonSchema7Type[]\n [zuiKey]?: ZuiExtensionObject\n} & (\n | {\n maxItems: number\n }\n | {\n additionalItems?: JsonSchema7Type\n }\n)\n\nexport function parseTupleDef(\n def: ZodTupleDef<ZodTupleItems | [], ZodTypeAny | null>,\n refs: Refs,\n): JsonSchema7TupleType {\n if (def.rest) {\n return {\n type: 'array',\n minItems: def.items.length,\n items: def.items\n .map((x, i) =>\n parseDef(x._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'items', `${i}`],\n }),\n )\n .reduce((acc: JsonSchema7Type[], x) => (x === undefined ? acc : [...acc, x]), []),\n additionalItems: parseDef(def.rest._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'additionalItems'],\n }),\n }\n } else {\n return {\n type: 'array',\n minItems: def.items.length,\n maxItems: def.items.length,\n items: def.items\n .map((x, i) =>\n parseDef(x._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'items', `${i}`],\n }),\n )\n .reduce((acc: JsonSchema7Type[], x) => (x === undefined ? acc : [...acc, x]), []),\n }\n }\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport { ZuiExtensionObject } from '../../../ui/types'\n\nexport type JsonSchema7UndefinedType = {\n not: {}\n [zuiKey]?: ZuiExtensionObject\n}\n\nexport function parseUndefinedDef(): JsonSchema7UndefinedType {\n return {\n not: {},\n }\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport { ZuiExtensionObject } from '../../../ui/types'\n\nexport type JsonSchema7UnknownType = {\n [zuiKey]?: ZuiExtensionObject\n}\n\nexport function parseUnknownDef(): JsonSchema7UnknownType {\n return {}\n}\n", "import { ZodReadonlyDef } from '../../../z/index'\nimport { parseDef } from '../parseDef'\nimport { Refs } from '../Refs'\n\nexport const parseReadonlyDef = (def: ZodReadonlyDef<any>, refs: Refs) => {\n return parseDef(def.innerType._def, refs)\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport { ZuiExtensionObject } from '../../../ui/types'\nimport { ZodRefDef } from '../../../z/types/ref'\n\nexport type JsonSchema7RefType = {\n $ref: string\n [zuiKey]?: ZuiExtensionObject\n}\n\nexport function parseRefDef(def: ZodRefDef): JsonSchema7RefType {\n return {\n $ref: def.uri,\n }\n}\n", "import { ZodFirstPartyTypeKind, ZodTypeDef } from '../../z/index'\nimport { JsonSchema7AnyType, parseAnyDef } from './parsers/any'\nimport { JsonSchema7ArrayType, parseArrayDef } from './parsers/array'\nimport { JsonSchema7BigintType, parseBigintDef } from './parsers/bigint'\nimport { JsonSchema7BooleanType, parseBooleanDef } from './parsers/boolean'\nimport { parseBrandedDef } from './parsers/branded'\nimport { parseCatchDef } from './parsers/catch'\nimport { JsonSchema7DateType, parseDateDef } from './parsers/date'\nimport { parseDefaultDef } from './parsers/default'\nimport { parseEffectsDef } from './parsers/effects'\nimport { JsonSchema7EnumType, parseEnumDef } from './parsers/enum'\nimport { JsonSchema7AllOfType, parseIntersectionDef } from './parsers/intersection'\nimport { JsonSchema7LiteralType, parseLiteralDef } from './parsers/literal'\nimport { JsonSchema7MapType, parseMapDef } from './parsers/map'\nimport { JsonSchema7NativeEnumType, parseNativeEnumDef } from './parsers/nativeEnum'\nimport { JsonSchema7NeverType, parseNeverDef } from './parsers/never'\nimport { JsonSchema7NullType, parseNullDef } from './parsers/null'\nimport { JsonSchema7NullableType, parseNullableDef } from './parsers/nullable'\nimport { JsonSchema7NumberType, parseNumberDef } from './parsers/number'\nimport { JsonSchema7ObjectType, parseObjectDef } from './parsers/object'\nimport { parseOptionalDef } from './parsers/optional'\nimport { parsePipelineDef } from './parsers/pipeline'\nimport { parsePromiseDef } from './parsers/promise'\nimport { JsonSchema7RecordType, parseRecordDef } from './parsers/record'\nimport { JsonSchema7SetType, parseSetDef } from './parsers/set'\nimport { JsonSchema7StringType, parseStringDef } from './parsers/string'\nimport { JsonSchema7TupleType, parseTupleDef } from './parsers/tuple'\nimport { JsonSchema7UndefinedType, parseUndefinedDef } from './parsers/undefined'\nimport { JsonSchema7UnionType, parseUnionDef } from './parsers/union'\nimport { JsonSchema7UnknownType, parseUnknownDef } from './parsers/unknown'\nimport { Refs, Seen } from './Refs'\nimport { parseReadonlyDef } from './parsers/readonly'\nimport { zuiKey } from '../../ui/constants'\nimport { JsonSchema7RefType, parseRefDef } from './parsers/ref'\n\ntype JsonSchema7Meta = {\n default?: any\n description?: string\n markdownDescription?: string\n}\n\nexport type JsonSchema7TypeUnion =\n | JsonSchema7StringType\n | JsonSchema7ArrayType\n | JsonSchema7NumberType\n | JsonSchema7BigintType\n | JsonSchema7BooleanType\n | JsonSchema7DateType\n | JsonSchema7EnumType\n | JsonSchema7LiteralType\n | JsonSchema7NativeEnumType\n | JsonSchema7NullType\n | JsonSchema7NumberType\n | JsonSchema7ObjectType\n | JsonSchema7RecordType\n | JsonSchema7TupleType\n | JsonSchema7UnionType\n | JsonSchema7UndefinedType\n | JsonSchema7RefType\n | JsonSchema7NeverType\n | JsonSchema7MapType\n | JsonSchema7AnyType\n | JsonSchema7NullableType\n | JsonSchema7AllOfType\n | JsonSchema7UnknownType\n | JsonSchema7SetType\n\nexport type JsonSchema7Type = JsonSchema7TypeUnion & JsonSchema7Meta\n\nexport function parseDef(\n def: ZodTypeDef,\n refs: Refs,\n forceResolution = false, // Forces a new schema to be instantiated even though its def has been seen. Used for improving refs in definitions. See https://github.com/StefanTerdell/zod-to-json-schema/pull/61.\n): JsonSchema7Type | undefined {\n const seenItem = refs.seen.get(def)\n\n if (seenItem && !forceResolution) {\n const seenSchema = get$ref(seenItem, refs)\n\n if (seenSchema !== undefined) {\n return seenSchema\n }\n }\n\n const newItem: Seen = { def, path: refs.currentPath, jsonSchema: undefined }\n\n refs.seen.set(def, newItem)\n\n const jsonSchema = selectParser(def, def.typeName, refs)\n\n if (jsonSchema) {\n addMeta(def, refs, jsonSchema)\n }\n\n newItem.jsonSchema = jsonSchema\n\n return jsonSchema\n}\n\nconst get$ref = (\n item: Seen,\n refs: Refs,\n):\n | {\n $ref: string\n }\n | {}\n | undefined => {\n switch (refs.$refStrategy) {\n case 'root':\n return { $ref: item.path.join('/') }\n case 'relative':\n return { $ref: getRelativePath(refs.currentPath, item.path) }\n case 'none':\n case 'seen': {\n if (\n item.path.length < refs.currentPath.length &&\n item.path.every((value, index) => refs.currentPath[index] === value)\n ) {\n console.warn(`Recursive reference detected at ${refs.currentPath.join('/')}! Defaulting to any`)\n\n return {}\n }\n\n return refs.$refStrategy === 'seen' ? {} : undefined\n }\n }\n}\n\nconst getRelativePath = (pathA: string[], pathB: string[]) => {\n let i = 0\n for (; i < pathA.length && i < pathB.length; i++) {\n if (pathA[i] !== pathB[i]) break\n }\n return [(pathA.length - i).toString(), ...pathB.slice(i)].join('/')\n}\n\nconst selectParser = (def: any, typeName: ZodFirstPartyTypeKind, refs: Refs): JsonSchema7Type | undefined => {\n switch (typeName) {\n case ZodFirstPartyTypeKind.ZodString:\n return parseStringDef(def, refs)\n case ZodFirstPartyTypeKind.ZodNumber:\n return parseNumberDef(def, refs)\n case ZodFirstPartyTypeKind.ZodObject:\n return parseObjectDef(def, refs)\n case ZodFirstPartyTypeKind.ZodBigInt:\n return parseBigintDef(def, refs)\n case ZodFirstPartyTypeKind.ZodBoolean:\n return parseBooleanDef(def)\n case ZodFirstPartyTypeKind.ZodDate:\n return parseDateDef(def, refs)\n case ZodFirstPartyTypeKind.ZodUndefined:\n return parseUndefinedDef()\n case ZodFirstPartyTypeKind.ZodNull:\n return parseNullDef(refs)\n case ZodFirstPartyTypeKind.ZodArray:\n return parseArrayDef(def, refs)\n case ZodFirstPartyTypeKind.ZodUnion:\n case ZodFirstPartyTypeKind.ZodDiscriminatedUnion:\n return parseUnionDef(def, refs)\n case ZodFirstPartyTypeKind.ZodIntersection:\n return parseIntersectionDef(def, refs)\n case ZodFirstPartyTypeKind.ZodTuple:\n return parseTupleDef(def, refs)\n case ZodFirstPartyTypeKind.ZodRecord:\n return parseRecordDef(def, refs)\n case ZodFirstPartyTypeKind.ZodRef:\n return parseRefDef(def)\n case ZodFirstPartyTypeKind.ZodLiteral:\n return parseLiteralDef(def, refs)\n case ZodFirstPartyTypeKind.ZodEnum:\n return parseEnumDef(def)\n case ZodFirstPartyTypeKind.ZodNativeEnum:\n return parseNativeEnumDef(def)\n case ZodFirstPartyTypeKind.ZodNullable:\n return parseNullableDef(def, refs)\n case ZodFirstPartyTypeKind.ZodOptional:\n return parseOptionalDef(def, refs)\n case ZodFirstPartyTypeKind.ZodMap:\n return parseMapDef(def, refs)\n case ZodFirstPartyTypeKind.ZodSet:\n return parseSetDef(def, refs)\n case ZodFirstPartyTypeKind.ZodLazy:\n return parseDef(def.getter()._def, refs)\n case ZodFirstPartyTypeKind.ZodPromise:\n return parsePromiseDef(def, refs)\n case ZodFirstPartyTypeKind.ZodNaN:\n case ZodFirstPartyTypeKind.ZodNever:\n return parseNeverDef()\n case ZodFirstPartyTypeKind.ZodEffects:\n return parseEffectsDef(def, refs)\n case ZodFirstPartyTypeKind.ZodAny:\n return parseAnyDef()\n case ZodFirstPartyTypeKind.ZodUnknown:\n return parseUnknownDef()\n case ZodFirstPartyTypeKind.ZodDefault:\n return parseDefaultDef(def, refs)\n case ZodFirstPartyTypeKind.ZodBranded:\n return parseBrandedDef(def, refs)\n case ZodFirstPartyTypeKind.ZodReadonly:\n return parseReadonlyDef(def, refs)\n case ZodFirstPartyTypeKind.ZodCatch:\n return parseCatchDef(def, refs)\n case ZodFirstPartyTypeKind.ZodPipeline:\n return parsePipelineDef(def, refs)\n case ZodFirstPartyTypeKind.ZodFunction:\n case ZodFirstPartyTypeKind.ZodVoid:\n case ZodFirstPartyTypeKind.ZodSymbol:\n return undefined\n default:\n return ((_: never) => undefined)(typeName)\n }\n}\n\nexport const addMeta = <S extends JsonSchema7Type>(def: ZodTypeDef, refs: Refs, jsonSchema: S): S => {\n if (def.description) {\n jsonSchema.description = def.description\n\n if (refs.markdownDescription) {\n jsonSchema.markdownDescription = def.description\n }\n }\n\n Object.assign(jsonSchema, { [zuiKey]: { ...def[zuiKey], ...(jsonSchema as any)[zuiKey] } })\n\n return jsonSchema\n}\n", "import type { ZodSchema } from '../../z/index'\n\nexport type Targets = 'jsonSchema7' | 'jsonSchema2019-09' | 'openApi3'\n\nexport type Options<Target extends Targets = 'jsonSchema7'> = {\n name: string | undefined\n $refStrategy: 'root' | 'relative' | 'none' | 'seen'\n basePath: string[]\n effectStrategy: 'input' | 'any'\n pipeStrategy: 'input' | 'output' | 'all'\n dateStrategy: 'string' | 'integer'\n mapStrategy: 'entries' | 'record'\n target: Target\n strictUnions: boolean\n definitionPath: string\n definitions: Record<string, ZodSchema>\n errorMessages: boolean\n markdownDescription: boolean\n patternStrategy: 'escape' | 'preserve'\n emailStrategy: 'format:email' | 'format:idn-email' | 'pattern:zod'\n discriminator: boolean\n unionStrategy: 'anyOf' | 'oneOf'\n}\n\nexport const defaultOptions: Options = {\n name: undefined,\n $refStrategy: 'root',\n basePath: ['#'],\n effectStrategy: 'input',\n pipeStrategy: 'all',\n dateStrategy: 'string',\n mapStrategy: 'entries',\n definitionPath: 'definitions',\n target: 'jsonSchema7',\n strictUnions: false,\n definitions: {},\n errorMessages: false,\n markdownDescription: false,\n patternStrategy: 'escape',\n emailStrategy: 'format:email',\n discriminator: false,\n unionStrategy: 'anyOf',\n}\n\nexport const getDefaultOptions = <Target extends Targets>(options: Partial<Options<Target>> | string | undefined) =>\n (typeof options === 'string'\n ? {\n ...defaultOptions,\n name: options,\n }\n : {\n ...defaultOptions,\n ...options,\n }) as Options<Target>\n", "import type { ZodTypeDef } from '../../z/index'\nimport { getDefaultOptions, Options, Targets } from './Options'\nimport { JsonSchema7Type } from './parseDef'\n\nexport type Refs = {\n seen: Map<ZodTypeDef, Seen>\n currentPath: string[]\n propertyPath: string[] | undefined\n} & Options<Targets>\n\nexport type Seen = {\n def: ZodTypeDef\n path: string[]\n jsonSchema: JsonSchema7Type | undefined\n}\n\nexport const getRefs = (options?: string | Partial<Options<Targets>>): Refs => {\n const _options = getDefaultOptions(options)\n const currentPath =\n _options.name !== undefined ? [..._options.basePath, _options.definitionPath, _options.name] : _options.basePath\n return {\n ..._options,\n currentPath: currentPath,\n propertyPath: undefined,\n seen: new Map(\n Object.entries(_options.definitions).map(([name, def]) => [\n def._def,\n {\n def: def._def,\n path: [..._options.basePath, _options.definitionPath, name],\n // Resolution of references will be forced even though seen, so it's ok that the schema is undefined here for now.\n jsonSchema: undefined,\n },\n ]),\n ),\n }\n}\n", "import type { ZodSchema } from '../../z/index'\nimport { Options, Targets } from './Options'\nimport { JsonSchema7Type, parseDef } from './parseDef'\nimport { getRefs } from './Refs'\n\nconst zodToJsonSchema = <Target extends Targets = 'jsonSchema7'>(\n schema: ZodSchema<any>,\n options?: Partial<Options<Target>> | string,\n): (Target extends 'jsonSchema7' ? JsonSchema7Type : object) & {\n $schema?: string\n definitions?: {\n [key: string]: Target extends 'jsonSchema7'\n ? JsonSchema7Type\n : Target extends 'jsonSchema2019-09'\n ? JsonSchema7Type\n : object\n }\n} => {\n const refs = getRefs(options)\n\n const definitions =\n typeof options === 'object' && options.definitions\n ? Object.entries(options.definitions).reduce(\n (acc, [name, schema]) => ({\n ...acc,\n [name]:\n parseDef(\n schema._def,\n {\n ...refs,\n currentPath: [...refs.basePath, refs.definitionPath, name],\n },\n true,\n ) ?? {},\n }),\n {},\n )\n : undefined\n\n const name = typeof options === 'string' ? options : options?.name\n\n const main =\n parseDef(\n schema._def,\n name === undefined\n ? refs\n : {\n ...refs,\n currentPath: [...refs.basePath, refs.definitionPath, name],\n },\n false,\n ) ?? {}\n\n const combined: ReturnType<typeof zodToJsonSchema<Target>> =\n name === undefined\n ? definitions\n ? {\n ...main,\n [refs.definitionPath]: definitions,\n }\n : main\n : {\n $ref: [...(refs.$refStrategy === 'relative' ? [] : refs.basePath), refs.definitionPath, name].join('/'),\n [refs.definitionPath]: {\n ...definitions,\n [name]: main,\n },\n }\n\n if (refs.target === 'jsonSchema7') {\n combined.$schema = 'http://json-schema.org/draft-07/schema#'\n } else if (refs.target === 'jsonSchema2019-09') {\n combined.$schema = 'https://json-schema.org/draft/2019-09/schema#'\n }\n\n return combined\n}\n\nexport { zodToJsonSchema }\n", "import { z } from '../../z/index'\nimport { zodToJsonSchema } from './zodToJsonSchema'\nimport { Options } from './Options'\nimport { JSONSchema7 } from 'json-schema'\n\nexport type ZuiSchemaOptions = {\n /**\n * The scope is the full path to the property defined in the JSON schema, the root node being represented by #\n * Objects doesn't have any scope, only its child does\n * @default \"#/properties/\"\n * */\n rootScope?: string\n /**\n * Sets the $schema path. If set to false, it will remove the $schema property from the schema\n */\n $schemaUrl?: string | false\n target?: 'jsonSchema7' | 'openApi3'\n} & Partial<Pick<Options, 'unionStrategy' | 'discriminator'>>\n\n/**\n * Converts a Zod schema to a JSON Schema.\n *\n * @deprecated Use the new toJSONSchema function instead.\n */\nexport const toJSONSchemaLegacy = (\n zuiType: z.ZodTypeAny,\n opts: ZuiSchemaOptions = { target: 'openApi3' },\n): JSONSchema7 => {\n const jsonSchema = zodToJsonSchema(zuiType as z.ZodType, opts)\n if (opts.$schemaUrl === false) {\n delete jsonSchema.$schema\n } else if (typeof opts.$schemaUrl === 'string') {\n jsonSchema.$schema = opts.$schemaUrl\n }\n\n return jsonSchema as JSONSchema7\n}\n", "import { z } from '@bpinternal/zui'\n\nexport * from '@bpinternal/zui'\n\nexport type GenericZuiSchema<\n A extends Record<string, z.ZodTypeAny> = Record<string, z.ZodTypeAny>,\n R extends z.ZodTypeAny = z.ZodTypeAny,\n> = (typeArguments: A) => R\n\nexport type ZuiObjectSchema = z.ZodObject | z.ZodRecord\nexport type ZuiObjectOrRefSchema = ZuiObjectSchema | z.ZodRef\n\nexport const mergeObjectSchemas = (a: ZuiObjectSchema, b: ZuiObjectSchema): ZuiObjectSchema => {\n const aDef = a._def\n const bDef = b._def\n\n if (aDef.typeName === z.ZodFirstPartyTypeKind.ZodObject && bDef.typeName === z.ZodFirstPartyTypeKind.ZodObject) {\n const aShape = aDef.shape()\n const bShape = bDef.shape()\n return z.object({ ...aShape, ...bShape })\n }\n if (aDef.typeName === z.ZodFirstPartyTypeKind.ZodRecord && bDef.typeName === z.ZodFirstPartyTypeKind.ZodRecord) {\n return z.record(z.intersection(aDef.valueType, bDef.valueType))\n }\n // TODO: adress this case\n throw new Error('Cannot merge object schemas with record schemas')\n}\n\nexport default z\n", "// This file contains constants that are exported for public use.\n\nexport const WELL_KNOWN_ATTRIBUTES = {\n HIDDEN_IN_STUDIO: { bpActionHiddenInStudio: 'true' },\n AWAIT_RETURN: { bpActionAwaitReturn: 'true' },\n} as const\n", "import { isNode } from 'browser-or-node'\nimport * as http from 'node:http'\nimport { log } from './log'\n\nexport type Request = {\n body?: string\n path: string\n query: string\n method: string\n headers: { [key: string]: string | undefined }\n}\n\nexport type Response = {\n body?: string\n headers?: { [key: string]: string }\n status?: number\n}\n\nexport type Handler = (req: Request) => Promise<Response | void>\n\nexport function parseBody<T>(req: Request): T {\n if (!req.body) {\n throw new Error('Missing body')\n }\n return JSON.parse(req.body)\n}\n\nexport async function serve(\n handler: Handler,\n port: number = 8072,\n callback: (port: number) => void = defaultCallback\n): Promise<http.Server> {\n if (!isNode) {\n throw new Error('This function can only be called in Node.js')\n }\n\n const httpModule = require('http') as typeof http\n\n /* eslint-disable @typescript-eslint/no-misused-promises */\n const server = httpModule.createServer(async (req, res) => {\n try {\n const request = await mapIncomingMessageToRequest(req)\n if (request.path === '/health') {\n res.writeHead(200).end('ok')\n return\n }\n const response = await handler(request)\n res.writeHead(response?.status ?? 200, response?.headers ?? {}).end(response?.body ?? '{}')\n } catch (thrown: unknown) {\n const error: string = thrown instanceof Error ? thrown.message : String(thrown)\n log.error('Error while handling request', { error: error ?? 'Internal error occured' })\n res.writeHead(500).end(JSON.stringify({ error: error ?? 'Internal error occured' }))\n }\n })\n\n server.listen(port, () => callback(port))\n return server\n}\n\nasync function mapIncomingMessageToRequest(incoming: http.IncomingMessage): Promise<Request> {\n const body = await readBody(incoming)\n const headers = {} as Request['headers']\n\n for (let i = 0; i < incoming.rawHeaders.length; i += 2) {\n const key = incoming.rawHeaders[i]!.toLowerCase()\n const value = incoming.rawHeaders[i + 1]!\n headers[key] = value\n }\n\n const url = new URL(\n incoming.url ?? '',\n incoming.headers.host ? `http://${incoming.headers.host}` : 'http://botpress.cloud'\n )\n\n return {\n body,\n path: url.pathname,\n query: trimPrefix(url.search, '?'),\n headers,\n method: incoming.method?.toUpperCase() ?? 'GET',\n }\n}\n\nfunction trimPrefix(value: string, prefix: string) {\n return value.indexOf(prefix) === 0 ? value.slice(prefix.length) : value\n}\n\nasync function readBody(incoming: http.IncomingMessage) {\n return new Promise<string | undefined>((resolve, reject) => {\n if (incoming.method !== 'POST' && incoming.method !== 'PUT' && incoming.method !== 'PATCH') {\n return resolve(undefined)\n }\n\n let body = ''\n\n incoming.on('data', (chunk) => (body += chunk.toString()))\n incoming.on('error', (e) => reject(e))\n incoming.on('end', () => resolve(body))\n })\n}\n\nfunction defaultCallback(port: number) {\n log.info(`Listening on port ${port}`)\n}\n", "export type Logger = {\n debug(message: string, metadata?: unknown): void\n info(message: string, metadata?: unknown): void\n warn(message: string, metadata?: unknown): void\n error(message: string, metadata?: unknown): void\n}\nexport const log: Logger = console\n", "export const pairs = <K extends string, V>(obj: Record<K, V>) => Object.entries(obj) as [K, V][]\nexport const values = <K extends string, V>(obj: Record<K, V>) => Object.values(obj) as V[]\nexport const mapValues = <K extends string, V, R>(obj: Record<K, V>, fn: (value: V, key: K) => R): Record<K, R> =>\n Object.fromEntries(pairs(obj).map(([key, value]) => [key, fn(value, key)])) as Record<K, R>\nexport const mapKeys = <K1 extends string, K2 extends string, V>(\n obj: Record<K1, V>,\n fn: (key: K1) => K2\n): Record<K2, V> => Object.fromEntries(pairs(obj).map(([key, value]) => [fn(key), value])) as Record<K2, V>\nexport const stripUndefinedProps = <K extends string, V>(obj: Record<K, V | undefined>): Record<K, V> =>\n Object.fromEntries(pairs(obj).filter(([, value]) => value !== undefined)) as Record<K, V>\n\nexport const mergeRecords = <K extends string, V>(\n a: Record<K, V>,\n b: Record<K, V>,\n merge: (v1: V, v2: V) => V\n): Record<K, V> => {\n const allKeys = [...Object.keys(a), ...Object.keys(b)] as K[]\n const uniqueKeys = [...new Set(allKeys)]\n const result: Record<K, V> = {} as Record<K, V>\n for (const key of uniqueKeys) {\n const aValue = a[key]\n const bValue = b[key]\n if (aValue && bValue) {\n result[key] = merge(aValue, bValue)\n } else if (aValue) {\n result[key] = aValue\n } else if (bValue) {\n result[key] = bValue\n }\n }\n return result\n}\n", "export const safePush = <T>(arr: T[] | undefined, ...values: T[]): T[] => (arr ? [...arr, ...values] : [...values])\n\nexport const unique = <T>(arr: T[]): T[] => Array.from(new Set(arr))\n", "export type Func<X extends any[], Y> = (...args: X) => Y\n\nexport const setName = <X extends any[], Y>(f: Func<X, Y>, name: string): Func<X, Y> => {\n Object.defineProperty(f, 'name', { value: name })\n return f\n}\n", "import {\n ActionOverrideProps,\n ChannelOverrideProps,\n EventOverrideProps,\n InterfaceExtension,\n ResolvedInterface,\n} from '../integration'\nimport { InterfacePackage } from '../package'\nimport * as utils from '../utils'\nimport z, { ZuiObjectSchema } from '../zui'\n\ntype ResolveInterfaceInput = InterfacePackage & {\n entities: Record<string, { name: string; schema: ZuiObjectSchema }>\n actions: Record<string, ActionOverrideProps>\n events: Record<string, EventOverrideProps>\n channels: Record<string, ChannelOverrideProps>\n}\n\ntype ResolveInterfaceOutput = {\n resolved: ResolvedInterface\n statement: InterfaceExtension\n}\n\nexport const resolveInterface = (intrface: ResolveInterfaceInput): ResolveInterfaceOutput => {\n const { name, version } = intrface\n\n const resolved: ResolvedInterface = { actions: {}, events: {}, channels: {} }\n const statement: InterfaceExtension = {\n name,\n version,\n entities: utils.records.mapValues(intrface.entities, (entity) => ({ name: entity.name })), // { item: { name: 'issue' } },\n actions: {},\n events: {},\n channels: {},\n }\n\n const entitySchemas = utils.records.mapValues(intrface.entities, (entity) => entity.schema)\n\n // dereference actions\n for (const [actionName, action] of Object.entries(intrface.definition.actions ?? {})) {\n const resolvedInputSchema = action.input.schema.dereference(entitySchemas) as z.AnyZodObject\n const resolvedOutputSchema = action.output.schema.dereference(entitySchemas) as z.AnyZodObject\n\n const newActionName = intrface.actions?.[actionName]?.name ?? actionName\n resolved.actions[newActionName] = {\n ...action,\n ...(intrface.actions?.[actionName] ?? {}),\n input: { schema: resolvedInputSchema },\n output: { schema: resolvedOutputSchema },\n }\n statement.actions[actionName] = { name: newActionName }\n }\n\n // dereference events\n for (const [eventName, event] of Object.entries(intrface.definition.events ?? {})) {\n const resolvedEventSchema = event.schema.dereference(entitySchemas) as z.AnyZodObject\n const newEventName = intrface.events?.[eventName]?.name ?? eventName\n resolved.events[newEventName] = {\n ...event,\n ...(intrface.events?.[eventName] ?? {}),\n schema: resolvedEventSchema,\n }\n statement.events[eventName] = { name: newEventName }\n }\n\n // dereference channels\n for (const [channelName, channel] of Object.entries(intrface.definition.channels ?? {})) {\n const messages: Record<string, { schema: z.AnyZodObject }> = {}\n for (const [messageName, message] of Object.entries(channel.messages)) {\n const resolvedMessageSchema = message.schema.dereference(entitySchemas) as z.AnyZodObject\n // no renaming for messages as they are already contained within a channel that acts as a namespace\n messages[messageName] = { ...message, schema: resolvedMessageSchema }\n }\n const newChannelName = intrface.channels?.[channelName]?.name ?? channelName\n resolved.channels[newChannelName] = {\n ...channel,\n ...(intrface.channels?.[channelName] ?? {}),\n message: {\n ...(channel.message ?? {}),\n tags: {\n ...(channel.message?.tags ?? {}),\n ...(intrface.channels?.[channelName]?.message?.tags ?? {}),\n },\n },\n conversation: {\n ...(channel.conversation ?? {}),\n tags: {\n ...(channel.conversation?.tags ?? {}),\n ...(intrface.channels?.[channelName]?.conversation?.tags ?? {}),\n },\n },\n messages,\n }\n statement.channels[channelName] = { name: newChannelName }\n }\n\n return { resolved, statement }\n}\n", "{\n \"name\": \"@botpress/sdk\",\n \"version\": \"5.0.1\",\n \"description\": \"Botpress SDK\",\n \"main\": \"./dist/index.cjs\",\n \"module\": \"./dist/index.mjs\",\n \"types\": \"./dist/index.d.ts\",\n \"repository\": {\n \"url\": \"https://github.com/botpress/botpress\"\n },\n \"scripts\": {\n \"check:type\": \"tsc -p ./tsconfig.json --noEmit\",\n \"build:type\": \"tsc -p ./tsconfig.package.json --emitDeclarationOnly --declaration\",\n \"build:browser\": \"ts-node -T ./build.ts --browser\",\n \"build:node\": \"ts-node -T ./build.ts --node\",\n \"build\": \"pnpm build:type && pnpm build:node && pnpm build:browser\"\n },\n \"keywords\": [],\n \"author\": \"\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@botpress/client\": \"1.27.2\",\n \"browser-or-node\": \"^2.1.1\",\n \"semver\": \"^7.3.8\"\n },\n \"devDependencies\": {\n \"@types/semver\": \"^7.3.11\",\n \"esbuild\": \"^0.25.10\",\n \"esbuild-plugin-polyfill-node\": \"^0.3.0\",\n \"tsup\": \"^8.0.2\"\n },\n \"peerDependencies\": {\n \"@bpinternal/zui\": \"1.3.1\",\n \"esbuild\": \"^0.16.12\"\n },\n \"peerDependenciesMeta\": {\n \"esbuild\": {\n \"optional\": true\n }\n },\n \"engines\": {\n \"node\": \">=18.0.0\"\n },\n \"packageManager\": \"pnpm@10.12.4\"\n}\n", "import { version } from '../package.json'\n\nexport const SDK_VERSION = version\n", "import * as utils from '../../utils'\nimport { z } from '../../zui'\n\nconst schemaName = Symbol('schemaName')\n\ntype BaseSchemas = Record<string, z.ZodSchema>\n\nexport type SchemaStoreProps<TSchemas extends BaseSchemas = BaseSchemas> = {\n [K in keyof TSchemas]: {\n schema: TSchemas[K]\n }\n}\n\nexport type BrandedSchema<TSchema extends BaseSchemas[string] = BaseSchemas[string]> = {\n schema: TSchema\n [schemaName]: string\n}\n\nexport type SchemaStore<TSchemas extends BaseSchemas = BaseSchemas> = {\n [K in keyof TSchemas]: BrandedSchema<TSchemas[K]>\n}\n\nexport const createStore = <TSchemas extends BaseSchemas>(\n props: SchemaStoreProps<TSchemas> | undefined\n): SchemaStore<TSchemas> => {\n if (!props) {\n return {} as SchemaStore<TSchemas>\n }\n const store: SchemaStore<BaseSchemas> = utils.records.mapValues(props, (e, k) => ({ ...e, [schemaName]: k }))\n return store as SchemaStore<TSchemas>\n}\n\nexport const isBranded = (schema: BrandedSchema | { schema: z.ZodSchema }): schema is BrandedSchema => {\n return schemaName in schema && schema[schemaName] !== undefined\n}\n\nexport const getName = (schema: BrandedSchema): string => {\n return schema[schemaName]\n}\n", "import type * as esbuild from 'esbuild'\nimport { resolveInterface } from '../../interface/resolve'\nimport { InterfacePackage } from '../../package'\nimport * as utils from '../../utils'\nimport { SDK_VERSION } from '../../version'\nimport { mergeObjectSchemas, z } from '../../zui'\nimport { SchemaStore, BrandedSchema, createStore, isBranded, getName } from './branded-schema'\nimport { BaseConfig, BaseEvents, BaseActions, BaseChannels, BaseStates, BaseEntities, BaseConfigs } from './generic'\nimport {\n ConfigurationDefinition,\n EventDefinition,\n ChannelDefinition,\n ActionDefinition,\n StateDefinition,\n UserDefinition,\n SecretDefinition,\n EntityDefinition,\n AdditionalConfigurationDefinition,\n MessageDefinition,\n InterfaceExtension,\n} from './types'\n\nexport * from './types'\n\nexport type IntegrationDefinitionProps<\n TName extends string = string,\n TVersion extends string = string,\n TConfig extends BaseConfig = BaseConfig,\n TConfigs extends BaseConfigs = BaseConfigs,\n TEvents extends BaseEvents = BaseEvents,\n TActions extends BaseActions = BaseActions,\n TChannels extends BaseChannels = BaseChannels,\n TStates extends BaseStates = BaseStates,\n TEntities extends BaseEntities = BaseEntities,\n> = {\n name: TName\n version: TVersion\n\n title?: string\n description?: string\n icon?: string\n readme?: string\n\n attributes?: Record<string, string>\n\n identifier?: {\n extractScript?: string\n fallbackHandlerScript?: string\n }\n\n configuration?: ConfigurationDefinition<TConfig>\n configurations?: {\n [K in keyof TConfigs]: AdditionalConfigurationDefinition<TConfigs[K]>\n }\n\n events?: { [K in keyof TEvents]: EventDefinition<TEvents[K]> }\n\n actions?: {\n [K in keyof TActions]: ActionDefinition<TActions[K]>\n }\n\n channels?: {\n [K in keyof TChannels]: ChannelDefinition<TChannels[K]>\n }\n\n states?: {\n [K in keyof TStates]: StateDefinition<TStates[K]>\n }\n\n user?: UserDefinition\n\n secrets?: Record<string, SecretDefinition>\n\n entities?: {\n [K in keyof TEntities]: EntityDefinition<TEntities[K]>\n }\n\n interfaces?: Record<string, InterfaceExtension>\n\n __advanced?: {\n esbuild?: Partial<esbuild.BuildOptions>\n extraOperations?: Record<string, { enabled: boolean }>\n useLegacyZuiTransformer?: boolean\n }\n}\n\ntype EntitiesOfPackage<TPackage extends InterfacePackage> = {\n [K in keyof TPackage['definition']['entities']]: NonNullable<TPackage['definition']['entities']>[K]['schema']\n}\n\ntype ActionsOfPackage<TPackage extends InterfacePackage> = {\n [K in keyof TPackage['definition']['actions']]: NonNullable<TPackage['definition']['actions']>[K]['input']['schema']\n}\n\ntype EventsOfPackage<TPackage extends InterfacePackage> = {\n [K in keyof TPackage['definition']['events']]: NonNullable<TPackage['definition']['events']>[K]['schema']\n}\n\ntype ChannelsOfPackage<TPackage extends InterfacePackage> = {\n [K in keyof TPackage['definition']['channels']]: {\n [M in keyof NonNullable<TPackage['definition']['channels']>[K]['messages']]: NonNullable<\n NonNullable<TPackage['definition']['channels']>[K]['messages']\n >[M]['schema']\n }\n}\n\nexport type ActionOverrideProps = utils.types.AtLeastOneProperty<\n Pick<Required<ActionDefinition>, 'title' | 'description' | 'billable' | 'cacheable' | 'attributes'> & {\n name: string\n }\n>\nexport type EventOverrideProps = utils.types.AtLeastOneProperty<\n Pick<Required<EventDefinition>, 'title' | 'description' | 'attributes'> & {\n name: string\n }\n>\nexport type ChannelOverrideProps = utils.types.AtLeastOneProperty<\n Pick<Required<ChannelDefinition>, 'title' | 'description'> & {\n name: string\n message: {\n tags: Required<Required<ChannelDefinition>['message']>['tags']\n }\n conversation: {\n tags: Required<Required<ChannelDefinition>['conversation']>['tags']\n }\n }\n>\n\ntype ActionOverrides<TInterfaceActionNames extends string = string> = utils.types.AtLeastOneProperty<\n Record<TInterfaceActionNames, ActionOverrideProps>\n>\ntype EventOverrides<TInterfaceEventNames extends string = string> = utils.types.AtLeastOneProperty<\n Record<TInterfaceEventNames, EventOverrideProps>\n>\ntype ChannelOverrides<TInterfaceChannelNames extends string = string> = utils.types.AtLeastOneProperty<\n Record<TInterfaceChannelNames, ChannelOverrideProps>\n>\n\ntype ExtensionBuilderInput<\n TIntegrationEntities extends BaseEntities,\n _TIntegrationActions extends BaseActions,\n _TIntegrationEvents extends BaseEvents,\n _TIntegrationChannels extends BaseChannels,\n> = {\n entities: SchemaStore<TIntegrationEntities>\n}\n\ntype ExtensionBuilderOutput<\n TInterfaceEntities extends BaseEntities,\n TInterfaceActions extends BaseActions,\n TInterfaceEvents extends BaseEvents,\n TInterfaceChannels extends BaseChannels,\n> = {\n entities: {\n [K in keyof TInterfaceEntities]: BrandedSchema<z.ZodSchema<z.infer<TInterfaceEntities[K]>>>\n }\n actions?: ActionOverrides<Extract<keyof TInterfaceActions, string>>\n events?: EventOverrides<Extract<keyof TInterfaceEvents, string>>\n channels?: ChannelOverrides<Extract<keyof TInterfaceChannels, string>>\n}\n\ntype ExtensionBuilder<\n TIntegrationEntities extends BaseEntities,\n TIntegrationActions extends BaseActions,\n TIntegrationEvents extends BaseEvents,\n TIntegrationChannels extends BaseChannels,\n TInterfaceEntities extends BaseEntities,\n TInterfaceActions extends BaseActions,\n TInterfaceEvents extends BaseEvents,\n TInterfaceChannels extends BaseChannels,\n> = (\n input: ExtensionBuilderInput<TIntegrationEntities, TIntegrationActions, TIntegrationEvents, TIntegrationChannels>\n) => ExtensionBuilderOutput<TInterfaceEntities, TInterfaceActions, TInterfaceEvents, TInterfaceChannels>\n\ntype TypeArgument = { name: string; schema: z.AnyZodObject }\n\nexport class IntegrationDefinition<\n TName extends string = string,\n TVersion extends string = string,\n TConfig extends BaseConfig = BaseConfig,\n TConfigs extends BaseConfigs = BaseConfigs,\n TEvents extends BaseEvents = BaseEvents,\n TActions extends BaseActions = BaseActions,\n TChannels extends BaseChannels = BaseChannels,\n TStates extends BaseStates = BaseStates,\n TEntities extends BaseEntities = BaseEntities,\n> {\n public readonly name: this['props']['name']\n public readonly version: this['props']['version']\n public readonly title: this['props']['title']\n public readonly description: this['props']['description']\n public readonly icon: this['props']['icon']\n public readonly readme: this['props']['readme']\n public readonly configuration: this['props']['configuration']\n public readonly configurations: this['props']['configurations']\n public readonly events: this['props']['events']\n public readonly actions: this['props']['actions']\n public readonly channels: this['props']['channels']\n public readonly states: this['props']['states']\n public readonly user: this['props']['user']\n public readonly secrets: this['props']['secrets']\n public readonly identifier: this['props']['identifier']\n public readonly entities: this['props']['entities']\n public readonly interfaces: this['props']['interfaces']\n public readonly __advanced: this['props']['__advanced']\n public readonly attributes: this['props']['attributes']\n\n public constructor(\n public readonly props: IntegrationDefinitionProps<\n TName,\n TVersion,\n TConfig,\n TConfigs,\n TEvents,\n TActions,\n TChannels,\n TStates,\n TEntities\n >\n ) {\n this.name = props.name\n this.version = props.version\n this.icon = props.icon\n this.readme = props.readme\n this.title = props.title\n this.identifier = props.identifier\n this.description = props.description\n this.configuration = props.configuration\n this.configurations = props.configurations\n this.events = props.events\n this.actions = props.actions\n this.channels = props.channels\n this.states = props.states\n this.user = props.user\n this.secrets = props.secrets\n this.entities = props.entities\n this.interfaces = props.interfaces\n this.__advanced = props.__advanced\n this.attributes = props.attributes\n }\n\n public get metadata() {\n return { sdkVersion: SDK_VERSION } as const\n }\n\n public extend<P extends InterfacePackage>(\n interfacePkg: P,\n builder: ExtensionBuilder<\n TEntities,\n TActions,\n TEvents,\n TChannels,\n EntitiesOfPackage<P>,\n ActionsOfPackage<P>,\n EventsOfPackage<P>,\n ChannelsOfPackage<P>\n >\n ): this {\n const { entities, actions, events, channels } = this._callBuilder(interfacePkg, builder)\n\n const self = this as utils.types.Writable<IntegrationDefinition>\n self.interfaces ??= {}\n\n const entityNames = Object.values(entities).map((e) => e.name)\n\n const key = entityNames.length === 0 ? interfacePkg.name : `${interfacePkg.name}<${entityNames.join(',')}>`\n\n const { resolved, statement } = resolveInterface({\n ...interfacePkg,\n entities,\n actions: utils.records.stripUndefinedProps(actions),\n events: utils.records.stripUndefinedProps(events),\n channels: utils.records.stripUndefinedProps(channels),\n })\n\n /**\n * If an action is defined both in the integration and the interface; we merge both.\n * This allows setting more specific properties in the integration, while staying compatible with the interface.\n * Same goes for channels and events.\n */\n self.actions = utils.records.mergeRecords(self.actions ?? {}, resolved.actions, this._mergeActions)\n self.channels = utils.records.mergeRecords(self.channels ?? {}, resolved.channels, this._mergeChannels)\n self.events = utils.records.mergeRecords(self.events ?? {}, resolved.events, this._mergeEvents)\n\n self.interfaces[key] = {\n id: interfacePkg.id,\n ...statement,\n }\n\n return this\n }\n\n private _callBuilder<P extends InterfacePackage>(\n interfacePkg: P,\n builder: ExtensionBuilder<\n TEntities,\n TActions,\n TEvents,\n TChannels,\n EntitiesOfPackage<P>,\n ActionsOfPackage<P>,\n EventsOfPackage<P>,\n ChannelsOfPackage<P>\n >\n ): {\n entities: Record<string, TypeArgument>\n actions: ActionOverrides\n events: EventOverrides\n channels: ChannelOverrides\n } {\n const entityStore = createStore(this.entities)\n const extensionBuilderInput: ExtensionBuilderInput<TEntities, TActions, TEvents, TChannels> = {\n entities: entityStore,\n }\n const extensionBuilderOutput = builder(extensionBuilderInput)\n const unbrandedEntity = utils.records.pairs(extensionBuilderOutput.entities).find(([_k, e]) => !isBranded(e))\n if (unbrandedEntity) {\n // this means the user tried providing a plain schema without referencing an entity from the integration\n throw new Error(\n `Cannot extend interface \"${interfacePkg.name}\" with entity \"${unbrandedEntity[0]}\"; the provided schema is not part of the integration's entities.`\n )\n }\n const entities = utils.records.mapValues(extensionBuilderOutput.entities, (e) => ({\n name: getName(e),\n schema: e.schema as z.AnyZodObject,\n }))\n return {\n entities,\n actions: extensionBuilderOutput.actions ?? {},\n events: extensionBuilderOutput.events ?? {},\n channels: extensionBuilderOutput.channels ?? {},\n }\n }\n\n private _mergeActions = (a: ActionDefinition, b: ActionDefinition): ActionDefinition => {\n return {\n ...a,\n ...b,\n input: {\n schema: mergeObjectSchemas(a.input.schema, b.input.schema),\n },\n output: {\n schema: mergeObjectSchemas(a.output.schema, b.output.schema),\n },\n }\n }\n\n private _mergeEvents = (a: EventDefinition, b: EventDefinition): EventDefinition => {\n return {\n ...a,\n ...b,\n schema: mergeObjectSchemas(a.schema, b.schema),\n }\n }\n\n private _mergeChannels = (a: ChannelDefinition, b: ChannelDefinition): ChannelDefinition => {\n const messages = utils.records.mergeRecords(a.messages, b.messages, this._mergeMessage)\n\n let conversation: ChannelDefinition['conversation'] = undefined\n if (a.conversation || b.conversation) {\n conversation = {\n tags: {\n ...a.conversation?.tags,\n ...b.conversation?.tags,\n },\n }\n }\n\n let message: ChannelDefinition['message'] = undefined\n if (a.message || b.message) {\n message = {\n tags: {\n ...a.message?.tags,\n ...b.message?.tags,\n },\n }\n }\n\n return {\n ...a,\n ...b,\n messages,\n conversation,\n message,\n }\n }\n\n private _mergeMessage = (a: MessageDefinition, b: MessageDefinition): MessageDefinition => {\n return {\n schema: mergeObjectSchemas(a.schema, b.schema),\n }\n }\n}\n", "import { isApiError, Client, RuntimeError, InvalidPayloadError } from '@botpress/client'\nimport { retryConfig } from '../../retry'\nimport { Request, Response, parseBody } from '../../serve'\nimport { IntegrationSpecificClient } from '../client'\nimport { BaseIntegration } from '../common'\nimport { ActionMetadataStore } from './action-metadata'\nimport { extractContext } from './context'\nimport { IntegrationLogger } from './integration-logger'\nimport {\n CommonHandlerProps,\n IntegrationHandlers,\n WebhookPayload,\n ActionPayload,\n MessagePayload,\n RegisterPayload,\n CreateUserPayload,\n UnregisterPayload,\n CreateConversationPayload,\n IntegrationContext,\n} from './types'\n\nexport * from './types'\nexport * from './integration-logger'\n\ntype ServerProps = CommonHandlerProps<BaseIntegration> & {\n req: Request\n instance: IntegrationHandlers<BaseIntegration>\n}\n\nconst extractTracingHeaders = (headers: Record<string, string | undefined>) => {\n return ['traceparent', 'tracestate', 'sentry-trace'].reduce<Record<string, string>>((acc, header) => {\n if (headers[header]) {\n acc[header] = headers[header]\n }\n return acc\n }, {})\n}\n\nconst getServerProps = (\n ctx: IntegrationContext,\n req: Request,\n instance: IntegrationHandlers<BaseIntegration>\n): ServerProps => {\n const [, traceId] = (req.headers['traceparent'] || '').split('-')\n\n const vanillaClient = new Client({\n botId: ctx.botId,\n integrationId: ctx.integrationId,\n integrationAlias: ctx.integrationAlias,\n retry: retryConfig,\n headers: extractTracingHeaders(req.headers),\n })\n const client = new IntegrationSpecificClient<BaseIntegration>(vanillaClient)\n const logger = new IntegrationLogger({ traceId })\n\n return {\n ctx,\n req,\n client,\n logger,\n instance,\n }\n}\n\nconst handleOperation = async (props: ServerProps) => {\n const { ctx } = props\n switch (ctx.operation) {\n case 'webhook_received':\n return await onWebhook(props)\n case 'register':\n return await onRegister(props)\n case 'unregister':\n return await onUnregister(props)\n case 'message_created':\n return await onMessageCreated(props)\n case 'action_triggered':\n return await onActionTriggered(props)\n case 'ping':\n return await onPing(props)\n case 'create_user':\n return await onCreateUser(props)\n case 'create_conversation':\n return await onCreateConversation(props)\n default:\n throw new InvalidPayloadError(`Unknown operation ${ctx.operation}`)\n }\n}\n\nexport const integrationHandler =\n (instance: IntegrationHandlers<BaseIntegration>) =>\n async (req: Request): Promise<Response | void> => {\n const ctx = extractContext(req.headers)\n const props = getServerProps(ctx, req, instance)\n const { logger } = props\n\n try {\n let response: Response | void\n response = await onUnknownOperationHandler(props)\n if (response) {\n return { ...response, status: response.status ?? 200 }\n }\n\n response = await handleOperation(props)\n return response ? { ...response, status: response.status ?? 200 } : { status: 200 }\n } catch (error) {\n if (isApiError(error)) {\n const runtimeError = error.type === 'Runtime' ? error : new RuntimeError(error.message, error)\n logger.forBot().error(runtimeError.message)\n\n return { status: runtimeError.code, body: JSON.stringify(runtimeError.toJSON()) }\n }\n\n // prints the error in the integration logs\n console.error(error)\n\n const runtimeError = new RuntimeError(\n 'An unexpected error occurred in the integration. Bot owners: Check logs for more informations. Integration owners: throw a RuntimeError to return a custom error message instead.'\n )\n logger.forBot().error(runtimeError.message)\n return { status: runtimeError.code, body: JSON.stringify(runtimeError.toJSON()) }\n }\n }\n\nconst onPing = async (_: ServerProps) => {}\n\nconst onWebhook = async ({ client, ctx, req: incomingRequest, logger, instance }: ServerProps) => {\n const { req } = parseBody<WebhookPayload>(incomingRequest)\n return instance.webhook({ client, ctx, req, logger })\n}\n\nconst onRegister = async ({ client, ctx, req, logger, instance }: ServerProps) => {\n if (!instance.register) {\n return\n }\n const { webhookUrl } = parseBody<RegisterPayload>(req)\n await instance.register({ client, ctx, webhookUrl, logger })\n}\n\nconst onUnregister = async ({ client, ctx, req, logger, instance }: ServerProps) => {\n if (!instance.unregister) {\n return\n }\n const { webhookUrl } = parseBody<UnregisterPayload>(req)\n await instance.unregister({ ctx, webhookUrl, client, logger })\n}\n\nconst onCreateUser = async ({ client, ctx, req, logger, instance }: ServerProps) => {\n if (!instance.createUser) {\n return\n }\n const { tags } = parseBody<CreateUserPayload<BaseIntegration>>(req)\n return await instance.createUser({ ctx, client, tags, logger })\n}\n\nconst onCreateConversation = async ({ client, ctx, req, logger, instance }: ServerProps) => {\n if (!instance.createConversation) {\n return\n }\n const { channel, tags } = parseBody<CreateConversationPayload<BaseIntegration>>(req)\n return await instance.createConversation({ ctx, client, channel, tags, logger })\n}\n\nconst onMessageCreated = async ({ ctx, req, client, logger, instance }: ServerProps) => {\n const { conversation, user, type, payload, message } = parseBody<MessagePayload<BaseIntegration, string, string>>(req)\n\n const channelHandler = instance.channels[conversation.channel]\n\n if (!channelHandler) {\n throw new Error(`Channel ${conversation.channel} not found`)\n }\n\n const messageHandler = channelHandler.messages[type]\n\n if (!messageHandler) {\n throw new Error(`Message of type ${type} not found in channel ${conversation.channel}`)\n }\n\n type UpdateMessageProps = Parameters<(typeof client)['updateMessage']>[0]\n const ack = async ({ tags }: Pick<UpdateMessageProps, 'tags'>) => {\n await client.updateMessage({\n id: message.id,\n tags,\n })\n }\n\n await messageHandler({ ctx, conversation, message, user, type, client, payload, ack, logger })\n}\n\nconst onActionTriggered = async ({ req, ctx, client, logger, instance }: ServerProps) => {\n const { input, type } = parseBody<ActionPayload<string, any>>(req)\n\n if (!type) {\n throw new Error('Missing action type')\n }\n\n const action = instance.actions[type]\n\n if (!action) {\n throw new Error(`Action ${type} not found`)\n }\n\n const metadata = new ActionMetadataStore()\n const output = await action({ ctx, input, client, type, logger, metadata })\n\n const response = { output, meta: metadata.toJSON() }\n return {\n body: JSON.stringify(response),\n }\n}\n\nconst onUnknownOperationHandler = async ({\n instance,\n client,\n ctx,\n logger,\n req,\n}: ServerProps): Promise<Response | void> => {\n const handler = instance.unknownOperationHandler\n if (!handler) {\n return\n }\n return await handler({\n client,\n ctx,\n logger,\n req,\n })\n}\n", "import * as client from '@botpress/client'\n\nexport const retryConfig: client.RetryConfig = {\n retries: 3,\n retryCondition: (err) =>\n client.axiosRetry.isNetworkOrIdempotentRequestError(err) || [429, 502].includes(err.response?.status ?? 0),\n retryDelay: (retryCount, axiosError) => {\n const retryAfterSeconds = _getRetryAfterSeconds(axiosError.response?.headers ?? {})\n return (retryAfterSeconds ?? retryCount) * 1000\n },\n}\n\nconst _getRetryAfterSeconds = (headers: client.axios.RawAxiosResponseHeaders) => {\n const headerNames = [\n // Standard rate limiting headers:\n 'RateLimit-Reset',\n 'X-RateLimit-Reset',\n 'Retry-After',\n\n // Lowercase variants:\n 'ratelimit-reset',\n 'x-ratelimit-reset',\n 'retry-after',\n ] as const\n\n for (const headerName of headerNames) {\n const headerValue: unknown = headers[headerName]\n\n if (headerValue === undefined) {\n continue\n }\n\n return _parseHeaderToSeconds(String(headerValue))\n }\n\n return\n}\n\nconst _parseHeaderToSeconds = (headerValue: string): number | undefined => {\n // NOTE: retry-after can be either a number of seconds or a date string:\n const secondsDiff = _isDateString(headerValue)\n ? _parseDateToSeconds(headerValue)\n : headerValue.length > 0\n ? parseInt(headerValue, 10)\n : undefined\n\n return secondsDiff === undefined || isNaN(secondsDiff) ? undefined : secondsDiff\n}\n\nconst _isDateString = (headerValue: string): boolean => headerValue.includes(' ')\n\nconst _parseDateToSeconds = (headerValue: string): number | undefined => {\n const futureDate = _parseDateString(headerValue)\n if (!futureDate) {\n return\n }\n\n const currentDate = new Date()\n return Math.max(0, Math.floor((futureDate.getTime() - currentDate.getTime()) / 1000))\n}\n\nconst _parseDateString = (headerValue: string): Date | undefined => {\n const date = new Date(headerValue)\n return isNaN(date.getTime()) ? undefined : date\n}\n", "import * as client from '@botpress/client'\nimport * as common from '../common'\nimport * as types from './types'\n\nexport * from './types'\n\n/**\n * Just like the regular botpress client, but typed with the integration's properties.\n */\nexport class IntegrationSpecificClient<TIntegration extends common.BaseIntegration>\n implements types.ClientOperations<TIntegration>\n{\n public constructor(private readonly _client: client.Client) {}\n\n /**\n * Access the underlying Botpress client.\n * This is useful for operations that are not available in the IntegrationSpecificClient.\n * You probably shouldn't use this directly if you don't know what you're doing.\n */\n public get _inner(): client.Client {\n return this._client\n }\n\n public createConversation: types.CreateConversation<TIntegration> = ((x) =>\n this._client.createConversation(x)) as types.CreateConversation<TIntegration>\n public getConversation: types.GetConversation<TIntegration> = ((x) =>\n this._client.getConversation(x)) as types.GetConversation<TIntegration>\n public listConversations: types.ListConversations<TIntegration> = ((x) =>\n this._client.listConversations(x)) as types.ListConversations<TIntegration>\n public getOrCreateConversation: types.GetOrCreateConversation<TIntegration> = ((x) =>\n this._client.getOrCreateConversation(x)) as types.GetOrCreateConversation<TIntegration>\n public updateConversation: types.UpdateConversation<TIntegration> = ((x) =>\n this._client.updateConversation(x)) as types.UpdateConversation<TIntegration>\n public deleteConversation: types.DeleteConversation<TIntegration> = ((x) =>\n this._client.deleteConversation(x)) as types.DeleteConversation<TIntegration>\n\n public listParticipants: types.ListParticipants<TIntegration> = ((x) =>\n this._client.listParticipants(x)) as types.ListParticipants<TIntegration>\n public addParticipant: types.AddParticipant<TIntegration> = ((x) =>\n this._client.addParticipant(x)) as types.AddParticipant<TIntegration>\n public getParticipant: types.GetParticipant<TIntegration> = ((x) =>\n this._client.getParticipant(x)) as types.GetParticipant<TIntegration>\n public removeParticipant: types.RemoveParticipant<TIntegration> = ((x) =>\n this._client.removeParticipant(x)) as types.RemoveParticipant<TIntegration>\n\n public createEvent: types.CreateEvent<TIntegration> = ((x) =>\n this._client.createEvent(x)) as types.CreateEvent<TIntegration>\n public getEvent: types.GetEvent<TIntegration> = ((x) => this._client.getEvent(x)) as types.GetEvent<TIntegration>\n public listEvents: types.ListEvents<TIntegration> = ((x) =>\n this._client.listEvents(x)) as types.ListEvents<TIntegration>\n\n public createMessage: types.CreateMessage<TIntegration> = ((x) =>\n this._client.createMessage(x)) as types.CreateMessage<TIntegration>\n public getOrCreateMessage: types.GetOrCreateMessage<TIntegration> = ((x) =>\n this._client.getOrCreateMessage(x)) as types.GetOrCreateMessage<TIntegration>\n public getMessage: types.GetMessage<TIntegration> = ((x) =>\n this._client.getMessage(x).then((r) => r)) as types.GetMessage<TIntegration>\n public updateMessage: types.UpdateMessage<TIntegration> = ((x) =>\n this._client.updateMessage(x).then((r) => r)) as types.UpdateMessage<TIntegration>\n public listMessages: types.ListMessages<TIntegration> = ((x) =>\n this._client.listMessages(x)) as types.ListMessages<TIntegration>\n public deleteMessage: types.DeleteMessage<TIntegration> = ((x) =>\n this._client.deleteMessage(x)) as types.DeleteMessage<TIntegration>\n\n public createUser: types.CreateUser<TIntegration> = ((x) =>\n this._client.createUser(x)) as types.CreateUser<TIntegration>\n public getUser: types.GetUser<TIntegration> = ((x) => this._client.getUser(x)) as types.GetUser<TIntegration>\n public listUsers: types.ListUsers<TIntegration> = (x) => this._client.listUsers(x)\n public getOrCreateUser: types.GetOrCreateUser<TIntegration> = ((x) =>\n this._client.getOrCreateUser(x)) as types.GetOrCreateUser<TIntegration>\n public updateUser: types.UpdateUser<TIntegration> = ((x) =>\n this._client.updateUser(x)) as types.UpdateUser<TIntegration>\n public deleteUser: types.DeleteUser<TIntegration> = (x) => this._client.deleteUser(x)\n\n public getState: types.GetState<TIntegration> = ((x) => this._client.getState(x)) as types.GetState<TIntegration>\n public setState: types.SetState<TIntegration> = ((x) => this._client.setState(x)) as types.SetState<TIntegration>\n public getOrSetState: types.GetOrSetState<TIntegration> = ((x) =>\n this._client.getOrSetState(x)) as types.GetOrSetState<TIntegration>\n public patchState: types.PatchState<TIntegration> = ((x) =>\n this._client.patchState(x)) as types.PatchState<TIntegration>\n\n public configureIntegration: types.ConfigureIntegration<TIntegration> = (x) => this._client.configureIntegration(x)\n\n public uploadFile: types.UploadFile<TIntegration> = (x) => this._client.uploadFile(x)\n public upsertFile: types.UpsertFile<TIntegration> = (x) => this._client.upsertFile(x)\n public deleteFile: types.DeleteFile<TIntegration> = (x) => this._client.deleteFile(x)\n public listFiles: types.ListFiles<TIntegration> = (x) => this._client.listFiles(x)\n public getFile: types.GetFile<TIntegration> = (x) => this._client.getFile(x)\n public updateFileMetadata: types.UpdateFileMetadata<TIntegration> = (x) => this._client.updateFileMetadata(x)\n public trackAnalytics: types.TrackAnalytics<TIntegration> = (x) => this._client.trackAnalytics(x)\n}\n", "export type ActionMetadata = {\n cost: number\n}\n\nexport class ActionMetadataStore {\n private _cost: number = 0\n\n public get cost(): number {\n return this._cost\n }\n\n public setCost(cost: number): void {\n this._cost = cost\n }\n\n public toJSON(): ActionMetadata {\n return {\n cost: this.cost,\n }\n }\n}\n", "export * from './public-consts'\n\n// This file contains constants that are not exported for public use.\n// They are used internally in the SDK and should not be used outside of it.\n\n// To export a constant, add it to the public-consts.ts file instead.\n\nexport const PLUGIN_PREFIX_SEPARATOR = '#'\n\nexport const BOT_ID_HEADER = 'x-bot-id'\nexport const BOT_USER_ID_HEADER = 'x-bot-user-id'\nexport const INTEGRATION_ID_HEADER = 'x-integration-id'\nexport const INTEGRATION_ALIAS_HEADER = 'x-integration-alias'\nexport const WEBHOOK_ID_HEADER = 'x-webhook-id'\n\nexport const CONFIGURATION_TYPE_HEADER = 'x-bp-configuration-type'\nexport const CONFIGURATION_PAYLOAD_HEADER = 'x-bp-configuration'\nexport const OPERATION_TYPE_HEADER = 'x-bp-operation'\nexport const OPERATION_SUBTYPE_HEADER = 'x-bp-type'\n", "/**\n * Utility to throw an error in ternary or nullish coalescing expressions\n */\nexport const throwError = (thrown: string | Error): never => {\n const error = thrown instanceof Error ? thrown : new Error(thrown)\n throw error\n}\n", "import { z } from '@bpinternal/zui'\nimport {\n BOT_ID_HEADER,\n BOT_USER_ID_HEADER,\n CONFIGURATION_PAYLOAD_HEADER,\n CONFIGURATION_TYPE_HEADER,\n INTEGRATION_ALIAS_HEADER,\n INTEGRATION_ID_HEADER,\n OPERATION_TYPE_HEADER,\n WEBHOOK_ID_HEADER,\n} from '../../consts'\nimport { throwError } from '../../utils/error-utils'\nimport { IntegrationContext } from './types'\n\nexport const integrationOperationSchema = z.enum([\n 'webhook_received',\n 'message_created',\n 'action_triggered',\n 'register',\n 'unregister',\n 'ping',\n 'create_user',\n 'create_conversation',\n])\n\nexport const extractContext = (headers: Record<string, string | undefined>): IntegrationContext => ({\n botId: headers[BOT_ID_HEADER] || throwError('Missing bot header'),\n botUserId: headers[BOT_USER_ID_HEADER] || throwError('Missing bot user header'),\n integrationId: headers[INTEGRATION_ID_HEADER] || throwError('Missing integration header'),\n integrationAlias: headers[INTEGRATION_ALIAS_HEADER] || throwError('Missing integration alias header'),\n webhookId: headers[WEBHOOK_ID_HEADER] || throwError('Missing webhook header'),\n operation: headers[OPERATION_TYPE_HEADER] || throwError('Missing operation header'),\n configurationType: headers[CONFIGURATION_TYPE_HEADER] ?? null,\n configuration: JSON.parse(\n Buffer.from(headers[CONFIGURATION_PAYLOAD_HEADER] || throwError('Missing configuration header'), 'base64').toString(\n 'utf-8'\n )\n ),\n})\n", "import util from 'util'\n\ntype LogLevel = 'info' | 'debug' | 'warn' | 'error'\n\nexport abstract class BaseLogger<TOptions extends object> {\n protected defaultOptions: TOptions\n\n protected constructor(defaultOptions: TOptions) {\n this.defaultOptions = defaultOptions\n }\n\n public abstract with(options: TOptions): BaseLogger<TOptions>\n\n public info(...args: Parameters<typeof console.info>) {\n this._log('info', args)\n }\n\n public debug(...args: Parameters<typeof console.debug>) {\n this._log('debug', args)\n }\n\n public warn(...args: Parameters<typeof console.warn>) {\n this._log('warn', args)\n }\n\n public error(...args: Parameters<typeof console.error>) {\n this._log('error', args)\n }\n\n private _log(level: LogLevel, args: Parameters<typeof console.info>) {\n this._getConsoleMethod(level)(this._serializeMessage(args))\n }\n\n private _serializeMessage(args: Parameters<typeof console.info>) {\n const msg = util.format(...args)\n if (process.env['BP_LOG_FORMAT'] === 'json') {\n return this.getJsonMessage(msg)\n } else {\n return msg\n }\n }\n\n protected getJsonMessage(msg: string) {\n return JSON.stringify({ msg, options: this.defaultOptions })\n }\n\n private _getConsoleMethod(level: LogLevel): (...args: unknown[]) => void {\n switch (level) {\n case 'debug':\n return console.debug\n case 'warn':\n return console.warn\n case 'error':\n return console.error\n default:\n return console.info\n }\n }\n}\n", "import { BaseLogger } from '../../base-logger'\n\ntype IntegrationLogOptions = {\n userId?: string\n conversationId?: string\n traceId?: string\n visibleToBotOwners?: boolean\n}\n\nexport class IntegrationLogger extends BaseLogger<IntegrationLogOptions> {\n public constructor(options?: IntegrationLogOptions) {\n super({\n visibleToBotOwners: true,\n ...options,\n })\n }\n\n public override with(options: IntegrationLogOptions) {\n return new IntegrationLogger({ ...this.defaultOptions, ...options })\n }\n\n public withUserId(userId: string) {\n return this.with({\n userId,\n })\n }\n\n public withConversationId(conversationId: string) {\n return this.with({\n conversationId,\n })\n }\n\n public withVisibleToBotOwners(visibleToBotOwners: boolean) {\n return this.with({\n visibleToBotOwners,\n })\n }\n\n public forBot() {\n return this.withVisibleToBotOwners(true)\n }\n\n protected override getJsonMessage(msg: string) {\n return JSON.stringify({\n msg,\n //We need to have snake case 'visible_to_bot_owner' since that is how we used to differentiate between bot and integration logs\n visible_to_bot_owner: this.defaultOptions.visibleToBotOwners,\n options: this.defaultOptions,\n })\n }\n}\n", "import type { Server } from 'node:http'\nimport { serve } from '../serve'\nimport { BaseIntegration } from './common'\nimport {\n RegisterHandler as RegisterFunction,\n UnregisterHandler as UnregisterFunction,\n WebhookHandler as WebhookFunction,\n CreateUserHandler as CreateUserFunction,\n CreateConversationHandler as CreateConversationFunction,\n ActionHandlers as ActionFunctions,\n ChannelHandlers as ChannelFunctions,\n UnknownOperationHandler as UnknownOperationFunction,\n integrationHandler,\n} from './server'\n\nexport type IntegrationImplementationProps<TIntegration extends BaseIntegration = BaseIntegration> = {\n register: RegisterFunction<TIntegration>\n unregister: UnregisterFunction<TIntegration>\n handler: WebhookFunction<TIntegration>\n /**\n * @deprecated\n */\n createUser?: CreateUserFunction<TIntegration>\n /**\n * @deprecated\n */\n createConversation?: CreateConversationFunction<TIntegration>\n actions: ActionFunctions<TIntegration>\n channels: ChannelFunctions<TIntegration>\n __advanced?: {\n unknownOperationHandler?: UnknownOperationFunction<TIntegration>\n }\n}\n\nexport class IntegrationImplementation<TIntegration extends BaseIntegration = BaseIntegration> {\n public readonly actions: IntegrationImplementationProps<TIntegration>['actions']\n public readonly channels: IntegrationImplementationProps<TIntegration>['channels']\n public readonly register: IntegrationImplementationProps<TIntegration>['register']\n public readonly unregister: IntegrationImplementationProps<TIntegration>['unregister']\n public readonly createUser: IntegrationImplementationProps<TIntegration>['createUser']\n public readonly createConversation: IntegrationImplementationProps<TIntegration>['createConversation']\n public readonly webhook: IntegrationImplementationProps<TIntegration>['handler']\n public readonly unknownOperationHandler: NonNullable<\n IntegrationImplementationProps<TIntegration>['__advanced']\n >['unknownOperationHandler']\n\n public constructor(public readonly props: IntegrationImplementationProps<TIntegration>) {\n this.actions = props.actions\n this.channels = props.channels\n this.register = props.register\n this.unregister = props.unregister\n this.createUser = props.createUser\n this.createConversation = props.createConversation\n this.webhook = props.handler\n this.unknownOperationHandler = props.__advanced?.unknownOperationHandler\n }\n\n public readonly handler = integrationHandler(this as IntegrationImplementation<any>)\n public readonly start = (port?: number): Promise<Server> => serve(this.handler, port)\n}\n", "import { Table } from '@botpress/client'\nimport * as consts from '../consts'\nimport { IntegrationPackage, PluginPackage } from '../package'\nimport { PluginInterfaceExtension, PluginIntegrationExtension } from '../plugin'\nimport { SchemaDefinition } from '../schema'\nimport * as utils from '../utils'\nimport { ValueOf, Writable, Merge, StringKeys } from '../utils/type-utils'\nimport { SDK_VERSION } from '../version'\nimport z, { ZuiObjectSchema, ZuiObjectOrRefSchema } from '../zui'\n\ntype BaseConfig = ZuiObjectSchema\ntype BaseStates = Record<string, ZuiObjectOrRefSchema>\ntype BaseEvents = Record<string, ZuiObjectOrRefSchema>\ntype BaseActions = Record<string, ZuiObjectOrRefSchema>\ntype BaseTables = Record<string, ZuiObjectOrRefSchema>\ntype BaseWorkflows = Record<string, ZuiObjectSchema>\n\nexport type TagDefinition = {\n title?: string\n description?: string\n}\n\nexport type StateType = 'conversation' | 'user' | 'bot' | 'workflow'\n\nexport type StateDefinition<TState extends BaseStates[string] = BaseStates[string]> = SchemaDefinition<TState> & {\n type: StateType\n expiry?: number\n}\n\nexport type RecurringEventDefinition<TEvents extends BaseEvents = BaseEvents> = {\n [K in keyof TEvents]: {\n type: K\n payload: z.infer<TEvents[K]>\n schedule: { cron: string }\n }\n}[keyof TEvents]\n\nexport type EventDefinition<TEvent extends BaseEvents[string] = BaseEvents[string]> = SchemaDefinition<TEvent> & {\n attributes?: Record<string, string>\n}\n\nexport type ConfigurationDefinition<TConfig extends BaseConfig = BaseConfig> = SchemaDefinition<TConfig>\n\nexport type UserDefinition = {\n tags?: Record<string, TagDefinition>\n}\n\nexport type ConversationDefinition = {\n tags?: Record<string, TagDefinition>\n}\n\nexport type MessageDefinition = {\n tags?: Record<string, TagDefinition>\n}\n\nexport type ActionDefinition<TAction extends BaseActions[string] = BaseActions[string]> = {\n title?: string\n description?: string\n input: SchemaDefinition<TAction>\n output: SchemaDefinition<ZuiObjectOrRefSchema> // cannot infer both input and output types (typescript limitation)\n attributes?: Record<string, string>\n}\n\nexport type WorkflowDefinition<TWorkflow extends BaseWorkflows[string] = BaseWorkflows[string]> = {\n title?: string\n description?: string\n input: SchemaDefinition<TWorkflow>\n output: SchemaDefinition<ZuiObjectSchema> // cannot infer both input and output types (typescript limitation)\n tags?: Record<string, TagDefinition>\n}\n\nexport type TableDefinition<TTable extends BaseTables[string] = BaseTables[string]> = Merge<\n Omit<Table, 'id' | 'createdAt' | 'updatedAt' | 'name'>,\n {\n schema: TTable\n }\n>\n\nexport type ResolvedIntegrationConfigInstance<I extends IntegrationPackage = IntegrationPackage> = {\n enabled?: boolean\n alias: string\n disabledChannels?: StringKeys<NonNullable<I['definition']['channels']>>[]\n} & (\n | {\n configurationType?: null\n configuration: z.infer<NonNullable<I['definition']['configuration']>['schema']>\n }\n | ValueOf<{\n [K in StringKeys<NonNullable<I['definition']['configurations']>>]: {\n configurationType: K\n configuration: z.infer<NonNullable<I['definition']['configurations']>[K]['schema']>\n }\n }>\n)\n\ntype IntegrationConfigInstance<I extends IntegrationPackage = IntegrationPackage> = Omit<\n ResolvedIntegrationConfigInstance<I>,\n 'alias'\n> & { alias?: string }\n\ntype _ResolvedPluginConfigInstance<P extends PluginPackage = PluginPackage> = {\n alias: string\n configuration: z.infer<NonNullable<P['definition']['configuration']>['schema']>\n interfaces: {\n [I in keyof NonNullable<P['definition']['interfaces']>]: PluginInterfaceExtension\n }\n integrations: {\n [I in keyof NonNullable<P['definition']['integrations']>]: PluginIntegrationExtension\n }\n}\n\ntype PluginConfigInstance<P extends PluginPackage = PluginPackage> = Omit<\n _ResolvedPluginConfigInstance<P>,\n 'alias' | 'integrations' | 'interfaces'\n> & {\n alias?: string\n /** Backing integrations for the plugin's dependencies */\n dependencies: {\n [K in StringKeys<NonNullable<P['definition']['interfaces']>>]: {\n /**\n * Alias of the integration to use to fullfil this dependency.\n *\n * This is the alias given when adding the integration to the bot\n * via `addIntegration()`.\n */\n integrationAlias: string\n /**\n * Alias of the interface within the integration.\n *\n * This is the alias defined by the integration package for the\n * interface it implements.\n */\n integrationInterfaceAlias: string\n }\n } & {\n [K in StringKeys<NonNullable<P['definition']['integrations']>>]: {\n /**\n * Alias of the integration to use to fullfil this dependency.\n *\n * This is the alias given when adding the integration to the bot\n * via `addIntegration()`.\n */\n integrationAlias: string\n }\n }\n}\n\nexport type IntegrationInstance = IntegrationPackage & ResolvedIntegrationConfigInstance\nexport type PluginInstance = PluginPackage & _ResolvedPluginConfigInstance\n\nexport type BotDefinitionProps<\n TStates extends BaseStates = BaseStates,\n TEvents extends BaseEvents = BaseEvents,\n TActions extends BaseActions = BaseActions,\n TTables extends BaseTables = BaseTables,\n TWorkflows extends BaseWorkflows = BaseWorkflows,\n> = {\n integrations?: {\n [K: string]: IntegrationInstance\n }\n plugins?: {\n [K: string]: PluginInstance\n }\n user?: UserDefinition\n conversation?: ConversationDefinition\n message?: MessageDefinition\n states?: {\n [K in keyof TStates]: StateDefinition<TStates[K]>\n }\n configuration?: ConfigurationDefinition\n events?: {\n [K in keyof TEvents]: EventDefinition<TEvents[K]>\n }\n recurringEvents?: Record<string, RecurringEventDefinition<TEvents>>\n actions?: {\n [K in keyof TActions]: ActionDefinition<TActions[K]>\n }\n tables?: {\n [K in keyof TTables]: TableDefinition<TTables[K]>\n }\n\n /**\n * # EXPERIMENTAL\n * This API is experimental and may change in the future.\n */\n workflows?: {\n [K in keyof TWorkflows]: WorkflowDefinition<TWorkflows[K]>\n }\n\n attributes?: Record<string, string>\n\n __advanced?: {\n useLegacyZuiTransformer?: boolean\n }\n}\n\nexport class BotDefinition<\n TStates extends BaseStates = BaseStates,\n TEvents extends BaseEvents = BaseEvents,\n TActions extends BaseActions = BaseActions,\n TTables extends BaseTables = BaseTables,\n TWorkflows extends BaseWorkflows = BaseWorkflows,\n> {\n public readonly integrations: this['props']['integrations']\n public readonly plugins: this['props']['plugins']\n public readonly user: this['props']['user']\n public readonly conversation: this['props']['conversation']\n public readonly message: this['props']['message']\n public readonly states: this['props']['states']\n public readonly configuration: this['props']['configuration']\n public readonly events: this['props']['events']\n public readonly recurringEvents: this['props']['recurringEvents']\n public readonly actions: this['props']['actions']\n public readonly tables: this['props']['tables']\n public readonly workflows: this['props']['workflows']\n public readonly attributes: this['props']['attributes']\n public readonly __advanced: this['props']['__advanced']\n\n /** Bot definition with plugins merged into it */\n public readonly withPlugins: Pick<\n this['props'],\n 'user' | 'conversation' | 'message' | 'states' | 'events' | 'recurringEvents' | 'actions' | 'tables' | 'workflows'\n >\n\n public constructor(public readonly props: BotDefinitionProps<TStates, TEvents, TActions, TTables, TWorkflows>) {\n this.integrations = props.integrations\n this.plugins = props.plugins\n this.user = props.user\n this.conversation = props.conversation\n this.message = props.message\n this.states = props.states\n this.configuration = props.configuration\n this.events = props.events\n this.recurringEvents = props.recurringEvents\n this.actions = props.actions\n this.tables = props.tables\n this.workflows = props.workflows\n this.attributes = props.attributes\n this.__advanced = props.__advanced\n\n this.withPlugins = {\n user: props.user,\n conversation: props.conversation,\n message: props.message,\n states: props.states,\n events: props.events,\n recurringEvents: props.recurringEvents,\n actions: props.actions,\n tables: props.tables,\n workflows: props.workflows,\n }\n }\n\n public get metadata() {\n return { sdkVersion: SDK_VERSION } as const\n }\n\n public addIntegration<I extends IntegrationPackage>(integrationPkg: I, config?: IntegrationConfigInstance<I>): this {\n const self = this as Writable<BotDefinition>\n if (!self.integrations) {\n self.integrations = {}\n }\n\n const integrationAlias = config?.alias ?? integrationPkg.name\n\n if (self.integrations[integrationAlias]) {\n throw new Error(`Another integration with alias \"${integrationAlias}\" is already installed in the bot`)\n }\n\n self.integrations[integrationAlias] = {\n ...integrationPkg,\n alias: integrationAlias,\n enabled: config?.enabled,\n configurationType: config && 'configurationType' in config ? config.configurationType : undefined,\n configuration: config && 'configuration' in config ? (config.configuration ?? {}) : {},\n disabledChannels: config?.disabledChannels,\n }\n return this\n }\n\n public addPlugin<P extends PluginPackage>(pluginPkg: P, config: PluginConfigInstance<P>): this {\n const self = this as Writable<BotDefinition>\n if (!self.plugins) {\n self.plugins = {}\n }\n\n const pluginAlias = config.alias ?? pluginPkg.name\n\n if (self.plugins[pluginAlias]) {\n throw new Error(`Another plugin with alias \"${pluginAlias}\" is already installed in the bot`)\n }\n // Resolve backing integrations for plugin interfaces:\n const interfaces: Record<string, PluginInterfaceExtension> = Object.fromEntries(\n Object.entries(config.dependencies ?? {})\n .filter(([_, dep]) => 'integrationInterfaceAlias' in dep)\n .map(([pluginIfaceAlias, pluginIfaceConfig]) => {\n const integrationInstance = this.integrations?.[pluginIfaceConfig.integrationAlias]\n\n if (!integrationInstance) {\n const availableIntegrations = Object.keys(this.integrations ?? {}).join(', ') || '(none)'\n\n throw new Error(\n `Interface with alias \"${pluginIfaceAlias}\" of plugin with alias \"${pluginAlias}\" ` +\n `references integration with alias \"${pluginIfaceConfig.integrationAlias}\" which is not installed. ` +\n 'Please make sure to add the integration via addIntegration() before calling addPlugin().\\n' +\n `Available integration aliases: ${availableIntegrations}`\n )\n }\n\n const integrationInterfaceExtension =\n integrationInstance.definition.interfaces?.[pluginIfaceConfig.integrationInterfaceAlias]\n\n if (!integrationInterfaceExtension) {\n const availableInterfaces =\n Object.keys(integrationInstance.definition.interfaces ?? {}).join(', ') || '(none)'\n\n throw new Error(\n `Interface with alias \"${pluginIfaceConfig.integrationInterfaceAlias}\" does not exist in integration ` +\n `\"${integrationInstance.name}\" referenced by interface with alias \"${pluginIfaceAlias}\" of plugin ` +\n `with alias \"${pluginAlias}\".\\nAvailable interface aliases: ${availableInterfaces}`\n )\n }\n\n return [\n pluginIfaceAlias,\n {\n ...integrationInterfaceExtension,\n id: integrationInstance.id,\n name: integrationInstance.name,\n version: integrationInstance.version,\n ...pluginIfaceConfig,\n } satisfies PluginInterfaceExtension,\n ]\n })\n )\n\n // Resolve backing integrations for plugin integrations:\n const integrations: Record<string, PluginIntegrationExtension> = Object.fromEntries(\n Object.entries(config.dependencies ?? {})\n .filter(([_, dep]) => !('integrationInterfaceAlias' in dep))\n .map(([pluginIntegAlias, pluginIntegConfig]) => {\n const integrationInstance = this.integrations?.[pluginIntegConfig.integrationAlias]\n\n if (!integrationInstance) {\n const availableIntegrations = Object.keys(this.integrations ?? {}).join(', ') || '(none)'\n\n throw new Error(\n `Integration with alias \"${pluginIntegAlias}\" of plugin with alias \"${pluginAlias}\" ` +\n `references integration with alias \"${pluginIntegConfig.integrationAlias}\" which is not installed. ` +\n 'Please make sure to add the integration via addIntegration() before calling addPlugin().\\n' +\n `Available integration aliases: ${availableIntegrations}`\n )\n }\n\n return [\n pluginIntegAlias,\n { ...integrationInstance, ...pluginIntegConfig } satisfies PluginIntegrationExtension,\n ]\n })\n )\n\n self.plugins[pluginAlias] = {\n ...pluginPkg,\n alias: pluginAlias,\n configuration: config.configuration ?? {},\n interfaces,\n integrations,\n }\n\n self.withPlugins.user = this._mergeUser(self.withPlugins.user, pluginPkg.definition.user)\n self.withPlugins.conversation = this._mergeConversation(\n self.withPlugins.conversation,\n pluginPkg.definition.conversation\n )\n self.withPlugins.message = this._mergeMessage(self.withPlugins.message, pluginPkg.definition.message)\n self.withPlugins.recurringEvents = this._mergeRecurringEvents(\n self.withPlugins.recurringEvents,\n pluginPkg.definition.recurringEvents\n )\n self.withPlugins.tables = this._mergeTables(self.withPlugins.tables, pluginPkg.definition.tables)\n self.withPlugins.workflows = this._mergeWorkflows(self.withPlugins.workflows, pluginPkg.definition.workflows)\n\n self.withPlugins.states = this._mergeStates(\n self.withPlugins.states,\n this._prefixKeysWithPluginAlias(pluginPkg.definition.states, pluginAlias)\n )\n self.withPlugins.events = this._mergeEvents(\n self.withPlugins.events,\n this._prefixKeysWithPluginAlias(pluginPkg.definition.events, pluginAlias)\n )\n self.withPlugins.actions = this._mergeActions(\n self.withPlugins.actions,\n this._prefixKeysWithPluginAlias(pluginPkg.definition.actions, pluginAlias)\n )\n\n return this\n }\n\n private _mergeUser = (\n user1: BotDefinitionProps['user'],\n user2: BotDefinitionProps['user']\n ): BotDefinitionProps['user'] => {\n return {\n tags: {\n ...user1?.tags,\n ...user2?.tags,\n },\n }\n }\n\n private _mergeConversation = (\n conversation1: BotDefinitionProps['conversation'],\n conversation2: BotDefinitionProps['conversation']\n ): BotDefinitionProps['conversation'] => {\n return {\n tags: {\n ...conversation1?.tags,\n ...conversation2?.tags,\n },\n }\n }\n\n private _mergeMessage = (\n message1: BotDefinitionProps['message'],\n message2: BotDefinitionProps['message']\n ): BotDefinitionProps['message'] => {\n return {\n tags: {\n ...message1?.tags,\n ...message2?.tags,\n },\n }\n }\n\n private _mergeStates = (\n states1: BotDefinitionProps['states'],\n states2: BotDefinitionProps['states']\n ): BotDefinitionProps['states'] => {\n return {\n ...states1,\n ...states2,\n }\n }\n\n private _mergeEvents = (\n events1: BotDefinitionProps['events'],\n events2: BotDefinitionProps['events']\n ): BotDefinitionProps['events'] => {\n return {\n ...events1,\n ...events2,\n }\n }\n\n private _mergeRecurringEvents = (\n recurringEvents1: BotDefinitionProps['recurringEvents'],\n recurringEvents2: BotDefinitionProps['recurringEvents']\n ): BotDefinitionProps['recurringEvents'] => {\n return {\n ...recurringEvents1,\n ...recurringEvents2,\n }\n }\n\n private _mergeActions = (\n actions1: BotDefinitionProps['actions'],\n actions2: BotDefinitionProps['actions']\n ): BotDefinitionProps['actions'] => {\n return {\n ...actions1,\n ...actions2,\n }\n }\n\n private _mergeTables = (\n tables1: BotDefinitionProps['tables'],\n tables2: BotDefinitionProps['tables']\n ): BotDefinitionProps['tables'] => {\n return {\n ...tables1,\n ...tables2,\n }\n }\n\n private _mergeWorkflows = (\n workflows1: BotDefinitionProps['workflows'],\n workflows2: BotDefinitionProps['workflows']\n ): BotDefinitionProps['workflows'] => {\n return {\n ...workflows1,\n ...workflows2,\n }\n }\n\n private _prefixKeysWithPluginAlias = <TRecord extends Record<string, unknown>>(\n obj: TRecord | undefined,\n pluginAlias: string\n ): TRecord =>\n utils.records.mapKeys(obj ?? {}, (key) => `${pluginAlias}${consts.PLUGIN_PREFIX_SEPARATOR}${key}`) as TRecord\n\n /**\n * Returns a copy of the bot definition where all interface entity references\n * are resolved to the base entity schema as extended by the backing\n * integration.\n */\n public dereferencePluginEntities(): this {\n const zuiReferenceMap = this._buildZuiReferenceMap()\n\n return {\n ...this,\n withPlugins: {\n ...this.withPlugins,\n events: this._dereferenceDefinitionSchemas(this.withPlugins.events, zuiReferenceMap),\n states: this._dereferenceDefinitionSchemas(this.withPlugins.states, zuiReferenceMap),\n tables: this._dereferenceDefinitionSchemas(this.withPlugins.tables, zuiReferenceMap),\n actions: this._dereferenceActionDefinitionSchemas(this.withPlugins.actions, zuiReferenceMap),\n },\n plugins: Object.fromEntries(\n (Object.entries(this.plugins ?? {}) as [pluginAlias: string, PluginInstance][]).map(\n ([pluginAlias, pluginInstance]) => [\n pluginAlias,\n {\n ...pluginInstance,\n definition: {\n ...pluginInstance.definition,\n configuration: this._dereferenceDefinitionSchema(\n pluginInstance.definition.configuration,\n zuiReferenceMap\n ),\n events: this._dereferenceDefinitionSchemas(pluginInstance.definition.events, zuiReferenceMap),\n states: this._dereferenceDefinitionSchemas(pluginInstance.definition.states, zuiReferenceMap),\n tables: this._dereferenceDefinitionSchemas(pluginInstance.definition.tables, zuiReferenceMap),\n actions: this._dereferenceActionDefinitionSchemas(pluginInstance.definition.actions, zuiReferenceMap),\n },\n },\n ]\n )\n ),\n } as typeof this\n }\n\n private _buildZuiReferenceMap(): Record<string, z.ZodTypeAny> {\n const zuiReferenceMap: Record<string, z.ZodTypeAny> = {}\n\n const installedPlugins = Object.entries(this.plugins ?? {}) as [pluginAlias: string, PluginInstance][]\n\n for (const [pluginAlias, pluginInstance] of installedPlugins) {\n const pluginInterfaceExtensions = Object.entries(pluginInstance.interfaces ?? {}) as [\n interfaceAlias: string,\n PluginInterfaceExtension,\n ][]\n\n for (const [interfaceAlias, pluginInterfaceExtension] of pluginInterfaceExtensions) {\n const backingIntegration = this.integrations?.[pluginInterfaceExtension.integrationAlias]\n\n if (!backingIntegration) {\n throw new Error(\n `Interface with alias \"${interfaceAlias}\" of plugin with alias \"${pluginAlias}\" references integration \"${pluginInterfaceExtension.name}\" which is not installed`\n )\n }\n\n const entityExtensions = Object.entries(pluginInterfaceExtension.entities ?? {}) as [\n entityAlias: string,\n {\n name: string\n },\n ][]\n\n for (const [entityAlias, { name: interfaceEntityName }] of entityExtensions) {\n const entitySchema = backingIntegration.definition.entities?.[interfaceEntityName]?.schema\n\n if (!entitySchema) {\n // This should never happen\n throw new Error(\n `Interface entity \"${interfaceEntityName}\" does not exist in integration \"${backingIntegration.name}\"`\n )\n }\n\n zuiReferenceMap[`interface:${interfaceAlias}/entities/${entityAlias}`] = entitySchema\n }\n }\n }\n\n return zuiReferenceMap\n }\n\n private _dereferenceZuiSchema(\n schema: ZuiObjectOrRefSchema,\n zuiReferenceMap: Record<string, z.ZodTypeAny>\n ): ZuiObjectSchema {\n return schema.dereference(zuiReferenceMap) as ZuiObjectSchema\n }\n\n private _dereferenceDefinitionSchemas<TDefinitionRecord extends Record<string, { schema: ZuiObjectOrRefSchema }>>(\n definitions: TDefinitionRecord | undefined,\n zuiReferenceMap: Record<string, z.ZodTypeAny>\n ): TDefinitionRecord {\n return Object.fromEntries(\n Object.entries(definitions ?? {}).map(([key, definition]) => [\n key,\n this._dereferenceDefinitionSchema(definition, zuiReferenceMap),\n ])\n ) as TDefinitionRecord\n }\n\n private _dereferenceDefinitionSchema<TDefinition extends { schema: ZuiObjectOrRefSchema } | undefined>(\n definition: TDefinition,\n zuiReferenceMap: Record<string, z.ZodTypeAny>\n ): TDefinition {\n return definition\n ? { ...definition, schema: this._dereferenceZuiSchema(definition.schema, zuiReferenceMap) }\n : definition\n }\n\n private _dereferenceActionDefinitionSchemas<\n TDefinitionRecord extends Record<\n string,\n { input: { schema: ZuiObjectOrRefSchema }; output: { schema: ZuiObjectOrRefSchema } }\n >,\n >(definitions: TDefinitionRecord | undefined, zuiReferenceMap: Record<string, z.ZodTypeAny>): TDefinitionRecord {\n return Object.fromEntries(\n Object.entries(definitions ?? {}).map(([key, definition]) => [\n key,\n {\n ...definition,\n input: { schema: this._dereferenceZuiSchema(definition.input.schema, zuiReferenceMap) },\n output: { schema: this._dereferenceZuiSchema(definition.output.schema, zuiReferenceMap) },\n },\n ])\n ) as TDefinitionRecord\n }\n}\n", "import { isApiError, Client, RuntimeError, Message, State } from '@botpress/client'\nimport { retryConfig } from '../../retry'\nimport { Request, Response, parseBody } from '../../serve'\nimport * as utils from '../../utils/type-utils'\nimport { BotLogger } from '../bot-logger'\nimport { BotSpecificClient } from '../client'\nimport * as common from '../common'\nimport { extractContext } from './context'\nimport { SUCCESS_RESPONSE } from './responses'\nimport * as types from './types'\nimport { handleWorkflowUpdateEvent } from './workflows/update-handler'\n\nexport * from './types'\n\nexport const botHandler =\n (bot: types.BotHandlers<common.BaseBot>) =>\n async (req: Request): Promise<Response | void> => {\n const ctx = extractContext(req.headers)\n const logger = new BotLogger()\n\n const vanillaClient = new Client({\n botId: ctx.botId,\n retry: retryConfig,\n })\n const botClient = new BotSpecificClient<common.BaseBot>(vanillaClient, {\n before: {\n createMessage: async (req) => {\n const beforeOutgoingMessageHooks = bot.hookHandlers.before_outgoing_message[req.type] ?? []\n for (const handler of beforeOutgoingMessageHooks) {\n const client = new BotSpecificClient(vanillaClient)\n const hookOutput = await handler({\n client,\n ctx,\n logger: logger.with({ conversationId: req.conversationId, userId: req.userId }),\n data: req,\n })\n req = hookOutput?.data ?? req\n }\n return req\n },\n callAction: async (req) => {\n const beforeOutgoingCallActionHooks = bot.hookHandlers.before_outgoing_call_action[req.type] ?? []\n for (const handler of beforeOutgoingCallActionHooks) {\n const client = new BotSpecificClient(vanillaClient)\n const hookOutput = await handler({\n client,\n ctx,\n logger,\n data: req,\n })\n req = hookOutput?.data ?? req\n }\n return req\n },\n },\n after: {\n createMessage: async (res) => {\n const afterOutgoingMessageHooks = bot.hookHandlers.after_outgoing_message[res.message.type] ?? []\n for (const handler of afterOutgoingMessageHooks) {\n const client = new BotSpecificClient(vanillaClient)\n const hookOutput = await handler({\n client,\n ctx,\n logger: logger.with({\n messageId: res.message.id,\n conversationId: res.message.conversationId,\n userId: res.message.userId,\n }),\n data: res,\n })\n res = hookOutput?.data ?? res\n }\n return res\n },\n callAction: async (res, req) => {\n const { type } = req\n const afterOutgoingCallActionHooks = bot.hookHandlers.after_outgoing_call_action[type] ?? []\n for (const handler of afterOutgoingCallActionHooks) {\n const client = new BotSpecificClient(vanillaClient)\n const hookOutput = await handler({\n client,\n ctx,\n logger,\n data: {\n type,\n ...res,\n },\n })\n res = hookOutput?.data ?? res\n }\n return res\n },\n },\n })\n\n const props: types.ServerProps = {\n req,\n ctx,\n logger,\n client: botClient,\n self: bot,\n }\n\n try {\n switch (ctx.operation) {\n case 'action_triggered':\n return await onActionTriggered(props)\n case 'event_received':\n return await onEventReceived(props)\n case 'register':\n return await onRegister(props)\n case 'unregister':\n return await onUnregister(props)\n case 'ping':\n return await onPing(props)\n default:\n throw new Error(`Unknown operation ${ctx.operation}`)\n }\n } catch (thrown: unknown) {\n const error = thrown instanceof Error ? thrown : new Error(String(thrown))\n\n if (isApiError(error)) {\n const runtimeError = error.type === 'Runtime' ? error : new RuntimeError(error.message, error)\n logger.error(runtimeError.message)\n\n return { status: runtimeError.code, body: JSON.stringify(runtimeError.toJSON()) }\n }\n\n const runtimeError = new RuntimeError('An unexpected error occurred in the bot.', error)\n logger.error(runtimeError.message, error)\n return { status: runtimeError.code, body: JSON.stringify(runtimeError.toJSON()) }\n }\n }\n\nconst onPing = async (_: types.ServerProps): Promise<Response> => {\n return SUCCESS_RESPONSE\n}\n\nconst onRegister = async (_: types.ServerProps): Promise<Response> => SUCCESS_RESPONSE\n\nconst onUnregister = async (_: types.ServerProps): Promise<Response> => SUCCESS_RESPONSE\n\nconst onEventReceived = async (serverProps: types.ServerProps): Promise<Response> => {\n const { ctx, logger, req, client, self } = serverProps\n const common: types.CommonHandlerProps<common.BaseBot> = { client, ctx, logger }\n\n type AnyEventPayload = utils.ValueOf<types.EventPayloads<common.BaseBot>>\n const body = parseBody<AnyEventPayload>(req)\n\n common.logger = common.logger.with({\n eventId: body.event.id,\n messageId: body.event.messageId,\n conversationId: body.event.conversationId,\n userId: body.event.userId,\n })\n\n if (ctx.type === 'workflow_update') {\n return await handleWorkflowUpdateEvent(serverProps, body.event as types.WorkflowUpdateEvent)\n }\n\n if (ctx.type === 'message_created') {\n const event = body.event\n let message: Message = event.payload.message\n\n common.logger = common.logger.with({\n messageId: message.id,\n conversationId: message.conversationId,\n userId: message.userId,\n })\n\n const beforeIncomingMessageHooks = self.hookHandlers.before_incoming_message[message.type] ?? []\n for (const handler of beforeIncomingMessageHooks) {\n const hookOutput = await handler({\n ...common,\n data: message,\n })\n message = hookOutput?.data ?? message\n if (hookOutput?.stop) {\n return SUCCESS_RESPONSE\n }\n }\n\n const messagePayload: Parameters<(typeof messageHandlers)[number]>[0] = {\n ...common,\n user: event.payload.user,\n conversation: event.payload.conversation,\n message,\n event,\n }\n const messageHandlers = self.messageHandlers[message.type] ?? []\n for (const handler of messageHandlers) {\n await handler(messagePayload)\n }\n\n const afterIncomingMessageHooks = self.hookHandlers.after_incoming_message[message.type] ?? []\n for (const handler of afterIncomingMessageHooks) {\n const hookOutput = await handler({\n ...common,\n data: message,\n })\n message = hookOutput?.data ?? message\n if (hookOutput?.stop) {\n return SUCCESS_RESPONSE\n }\n }\n\n return SUCCESS_RESPONSE\n }\n\n if (ctx.type === 'state_expired') {\n const event = body.event\n const state: State = event.payload.state\n const statePayload: Parameters<(typeof stateHandlers)[number]>[0] = {\n ...common,\n state: state as types.IncomingStates<common.BaseBot>[string],\n }\n\n const stateHandlers = self.stateExpiredHandlers[state.name] ?? []\n for (const handler of stateHandlers) {\n await handler(statePayload)\n }\n\n return SUCCESS_RESPONSE\n }\n\n let event = body.event\n const beforeIncomingEventHooks = self.hookHandlers.before_incoming_event[event.type] ?? []\n for (const handler of beforeIncomingEventHooks) {\n const hookOutput = await handler({\n ...common,\n data: event,\n })\n event = hookOutput?.data ?? event\n if (hookOutput?.stop) {\n return SUCCESS_RESPONSE\n }\n }\n\n const eventPayload: Parameters<(typeof eventHandlers)[number]>[0] = { ...common, event }\n const eventHandlers = self.eventHandlers[event.type] ?? []\n for (const handler of eventHandlers) {\n await handler(eventPayload)\n }\n\n const afterIncomingEventHooks = self.hookHandlers.after_incoming_event[event.type] ?? []\n for (const handler of afterIncomingEventHooks) {\n const hookOutput = await handler({\n ...common,\n data: event,\n })\n event = hookOutput?.data ?? event\n if (hookOutput?.stop) {\n return SUCCESS_RESPONSE\n }\n }\n\n return SUCCESS_RESPONSE\n}\n\nconst onActionTriggered = async ({ ctx, logger, req, client, self }: types.ServerProps): Promise<Response> => {\n type AnyActionPayload = utils.ValueOf<types.ActionHandlerPayloads<common.BaseBot>>\n let { input, type } = parseBody<AnyActionPayload>(req)\n\n if (!type) {\n throw new Error('Missing action type')\n }\n\n // TODO: this should probably run even if the action is called in memory\n const beforeIncomingCallActionHooks = self.hookHandlers.before_incoming_call_action[type] ?? []\n for (const handler of beforeIncomingCallActionHooks) {\n const hookOutput = await handler({\n ctx,\n logger,\n client,\n data: {\n type,\n input,\n },\n })\n input = hookOutput?.data?.input ?? input\n type = hookOutput?.data?.type ?? type\n }\n\n const action = self.actionHandlers[type]\n if (!action) {\n throw new Error(`Action ${type} not found`)\n }\n\n let output = await action({ ctx, logger, input, client, type })\n\n const afterIncomingCallActionHooks = self.hookHandlers.after_incoming_call_action[type] ?? []\n for (const handler of afterIncomingCallActionHooks) {\n const hookOutput = await handler({\n ctx,\n logger,\n client,\n data: {\n type,\n output,\n },\n })\n type = hookOutput?.data?.type ?? type\n output = hookOutput?.data?.output ?? output\n }\n\n const response = { output }\n return {\n status: 200,\n body: JSON.stringify(response),\n }\n}\n", "import { BaseLogger } from '../base-logger'\n\ntype BotLogOptions = {\n userId?: string\n conversationId?: string\n workflowId?: string\n eventId?: string\n messageId?: string\n}\n\nexport class BotLogger extends BaseLogger<BotLogOptions> {\n public constructor(options?: BotLogOptions) {\n super({\n ...options,\n })\n }\n\n public override with(options: BotLogOptions) {\n return new BotLogger({ ...this.defaultOptions, ...options })\n }\n\n public withUserId(userId: string) {\n return this.with({\n userId,\n })\n }\n\n public withConversationId(conversationId: string) {\n return this.with({\n conversationId,\n })\n }\n\n public withWorkflowId(workflowId: string) {\n return this.with({\n workflowId,\n })\n }\n\n public withEventId(eventId: string) {\n return this.with({\n eventId,\n })\n }\n\n public withMessageId(messageId: string) {\n return this.with({\n messageId,\n })\n }\n}\n", "import * as client from '@botpress/client'\nimport * as common from '../common'\nimport * as types from './types'\n\nexport * from './types'\n\n/**\n * Just like the regular botpress client, but typed with the bot's properties.\n */\nexport class BotSpecificClient<TBot extends common.BaseBot> implements types.ClientOperations<TBot> {\n public constructor(\n private _client: client.Client,\n private _hooks: types.ClientHooks = { before: {}, after: {} }\n ) {}\n\n /**\n * Access the underlying Botpress client.\n * This is useful for operations that are not available in the BotSpecificClient.\n * You probably shouldn't use this directly if you don't know what you're doing.\n */\n public get _inner(): client.Client {\n return this._client\n }\n\n public getConversation: types.GetConversation<TBot> = ((x) =>\n this._run('getConversation', x)) as types.GetConversation<TBot>\n public listConversations: types.ListConversations<TBot> = ((x) =>\n this._run('listConversations', x)) as types.ListConversations<TBot>\n public updateConversation: types.UpdateConversation<TBot> = ((x) =>\n this._run('updateConversation', x)) as types.UpdateConversation<TBot>\n public deleteConversation: types.DeleteConversation<TBot> = ((x) =>\n this._run('deleteConversation', x)) as types.DeleteConversation<TBot>\n public listParticipants: types.ListParticipants<TBot> = ((x) =>\n this._run('listParticipants', x)) as types.ListParticipants<TBot>\n public addParticipant: types.AddParticipant<TBot> = ((x) =>\n this._run('addParticipant', x)) as types.AddParticipant<TBot>\n public getParticipant: types.GetParticipant<TBot> = ((x) =>\n this._run('getParticipant', x)) as types.GetParticipant<TBot>\n public removeParticipant: types.RemoveParticipant<TBot> = ((x) =>\n this._run('removeParticipant', x)) as types.RemoveParticipant<TBot>\n public createEvent: types.CreateEvent<TBot> = ((x) => this._run('createEvent', x)) as types.CreateEvent<TBot>\n public getEvent: types.GetEvent<TBot> = ((x) => this._run('getEvent', x)) as types.GetEvent<TBot>\n public listEvents: types.ListEvents<TBot> = ((x) => this._run('listEvents', x)) as types.ListEvents<TBot>\n public createMessage: types.CreateMessage<TBot> = ((x) => this._run('createMessage', x)) as types.CreateMessage<TBot>\n public getOrCreateMessage: types.GetOrCreateMessage<TBot> = ((x) =>\n this._run('getOrCreateMessage', x)) as types.GetOrCreateMessage<TBot>\n public getMessage: types.GetMessage<TBot> = ((x) => this._run('getMessage', x)) as types.GetMessage<TBot>\n public updateMessage: types.UpdateMessage<TBot> = ((x) => this._run('updateMessage', x)) as types.UpdateMessage<TBot>\n public listMessages: types.ListMessages<TBot> = ((x) => this._run('listMessages', x)) as types.ListMessages<TBot>\n public deleteMessage: types.DeleteMessage<TBot> = ((x) => this._run('deleteMessage', x)) as types.DeleteMessage<TBot>\n public getUser: types.GetUser<TBot> = ((x) => this._run('getUser', x)) as types.GetUser<TBot>\n public listUsers: types.ListUsers<TBot> = ((x) => this._run('listUsers', x)) as types.ListUsers<TBot>\n public updateUser: types.UpdateUser<TBot> = ((x) => this._run('updateUser', x)) as types.UpdateUser<TBot>\n public deleteUser: types.DeleteUser<TBot> = ((x) => this._run('deleteUser', x)) as types.DeleteUser<TBot>\n public getState: types.GetState<TBot> = ((x) => this._run('getState', x)) as types.GetState<TBot>\n public setState: types.SetState<TBot> = ((x) => this._run('setState', x)) as types.SetState<TBot>\n public getOrSetState: types.GetOrSetState<TBot> = ((x) => this._run('getOrSetState', x)) as types.GetOrSetState<TBot>\n public patchState: types.PatchState<TBot> = ((x) => this._run('patchState', x)) as types.PatchState<TBot>\n public callAction: types.CallAction<TBot> = ((x) => this._run('callAction', x)) as types.CallAction<TBot>\n public uploadFile: types.UploadFile<TBot> = ((x) => this._run('uploadFile', x)) as types.UploadFile<TBot>\n public upsertFile: types.UpsertFile<TBot> = ((x) => this._run('upsertFile', x)) as types.UpsertFile<TBot>\n public deleteFile: types.DeleteFile<TBot> = ((x) => this._run('deleteFile', x)) as types.DeleteFile<TBot>\n public listFiles: types.ListFiles<TBot> = ((x) => this._run('listFiles', x)) as types.ListFiles<TBot>\n public getFile: types.GetFile<TBot> = ((x) => this._run('getFile', x)) as types.GetFile<TBot>\n public updateFileMetadata: types.UpdateFileMetadata<TBot> = ((x) =>\n this._run('updateFileMetadata', x)) as types.UpdateFileMetadata<TBot>\n public searchFiles: types.SearchFiles<TBot> = ((x) => this._run('searchFiles', x)) as types.SearchFiles<TBot>\n public trackAnalytics: types.TrackAnalytics<TBot> = ((x) =>\n this._run('trackAnalytics', x)) as types.TrackAnalytics<TBot>\n public getTableRow: types.GetTableRow<TBot> = ((x) => this._run('getTableRow', x)) as types.GetTableRow<TBot>\n public createTableRows: types.CreateTableRows<TBot> = ((x) =>\n this._run('createTableRows', x)) as types.CreateTableRows<TBot>\n public findTableRows: types.FindTableRows<TBot> = ((x) => this._run('findTableRows', x)) as types.FindTableRows<TBot>\n public deleteTableRows: types.DeleteTableRows<TBot> = ((x) =>\n this._run('deleteTableRows', x)) as types.DeleteTableRows<TBot>\n public updateTableRows: types.UpdateTableRows<TBot> = ((x) =>\n this._run('updateTableRows', x)) as types.UpdateTableRows<TBot>\n public upsertTableRows: types.UpsertTableRows<TBot> = ((x) =>\n this._run('upsertTableRows', x)) as types.UpsertTableRows<TBot>\n public createWorkflow: types.CreateWorkflow<TBot> = ((x) =>\n this._run('createWorkflow', x)) as types.CreateWorkflow<TBot>\n public getOrCreateWorkflow: types.GetOrCreateWorkflow<TBot> = ((x) =>\n this._run('getOrCreateWorkflow', x)) as types.GetOrCreateWorkflow<TBot>\n public getWorkflow: types.GetWorkflow<TBot> = ((x) => this._run('getWorkflow', x)) as types.GetWorkflow<TBot>\n public updateWorkflow: types.UpdateWorkflow<TBot> = ((x) =>\n this._run('updateWorkflow', x)) as types.UpdateWorkflow<TBot>\n public deleteWorkflow: types.DeleteWorkflow<TBot> = ((x) =>\n this._run('deleteWorkflow', x)) as types.DeleteWorkflow<TBot>\n public listWorkflows: types.ListWorkflows<TBot> = ((x) => this._run('listWorkflows', x)) as types.ListWorkflows<TBot>\n\n /**\n * @deprecated Use `callAction` to delegate the conversation creation to an integration.\n */\n public createConversation: types.CreateConversation<TBot> = (x) => this._client.createConversation(x)\n /**\n * @deprecated Use `callAction` to delegate the conversation creation to an integration.\n */\n public getOrCreateConversation: types.GetOrCreateConversation<TBot> = (x) => this._client.getOrCreateConversation(x)\n /**\n * @deprecated Use `callAction` to delegate the user creation to an integration.\n */\n public createUser: types.CreateUser<TBot> = (x) => this._client.createUser(x)\n /**\n * @deprecated Use `callAction` to delegate the user creation to an integration.\n */\n public getOrCreateUser: types.GetOrCreateUser<TBot> = (x) => this._client.getOrCreateUser(x)\n\n private _run = async <K extends client.Operation>(\n operation: K,\n req: client.ClientInputs[K]\n ): Promise<client.ClientOutputs[K]> => {\n const before = this._hooks.before[operation]\n if (before) {\n req = await before(req)\n }\n\n let res = (await this._client[operation](req as any)) as client.ClientOutputs[K]\n\n const after = this._hooks.after[operation]\n if (after) {\n res = await after(res, req)\n }\n\n return res\n }\n}\n", "import { z } from '@bpinternal/zui'\nimport {\n BOT_ID_HEADER,\n CONFIGURATION_PAYLOAD_HEADER,\n OPERATION_TYPE_HEADER,\n OPERATION_SUBTYPE_HEADER,\n} from '../../consts'\nimport { throwError } from '../../utils/error-utils'\nimport { BotContext } from './types'\n\nconst botOperationSchema = z.enum(['event_received', 'register', 'unregister', 'ping', 'action_triggered'])\n\nexport const extractContext = (headers: Record<string, string | undefined>): BotContext => ({\n botId: headers[BOT_ID_HEADER] || throwError('Missing bot id header'),\n operation: botOperationSchema.parse(headers[OPERATION_TYPE_HEADER]),\n type: headers[OPERATION_SUBTYPE_HEADER] || throwError('Missing type header'),\n configuration: JSON.parse(\n Buffer.from(headers[CONFIGURATION_PAYLOAD_HEADER] || throwError('Missing configuration header'), 'base64').toString(\n 'utf-8'\n )\n ),\n})\n", "export const SUCCESS_RESPONSE = { status: 200 } as const\n", "import * as types from '../types'\n\nexport const bridgeUpdateTypeToSnakeCase = (updateType: types.BridgeWorkflowUpdateType): types.WorkflowUpdateType => {\n switch (updateType) {\n case 'workflow_continued':\n return 'continued'\n case 'workflow_started':\n return 'started'\n case 'workflow_timedout':\n return 'timed_out'\n default:\n throw new Error(`Unsupported workflow update type: ${updateType}`)\n }\n}\n", "import { Response } from '../../../serve'\nimport { SUCCESS_RESPONSE } from '../responses'\nimport * as types from '../types'\nimport { bridgeUpdateTypeToSnakeCase } from './update-type-conv'\n\nconst WORKFLOW_UPDATE_TYPES = [\n 'child_workflow_deleted',\n 'child_workflow_finished',\n 'workflow_timedout',\n 'workflow_started',\n 'workflow_continued',\n] as const\n\nexport const handleWorkflowUpdateEvent = async (\n rawProps: types.ServerProps,\n event: types.WorkflowUpdateEvent\n): Promise<Response> => {\n if (rawProps.ctx.type !== 'workflow_update' || !WORKFLOW_UPDATE_TYPES.includes(event.payload.type)) {\n throw new Error('Unexpected event type')\n }\n\n const props = { ...rawProps, logger: _attachWorkflowContextToLogger(rawProps, event) }\n\n if (!event.payload.workflow.name) {\n props.logger.warn(\n 'Received workflow update event without a workflow name. Assuming this workflow was not defined by the bot.',\n event.payload.workflow\n )\n return SUCCESS_RESPONSE\n }\n\n switch (event.payload.type) {\n case 'child_workflow_deleted':\n case 'child_workflow_finished':\n props.logger.info(\n `Received child workflow event \"${event.payload.type}\", but child workflows are not yet supported`\n )\n break\n case 'workflow_timedout':\n case 'workflow_started':\n case 'workflow_continued':\n return await _handleWorkflowUpdate(props, event)\n default:\n event.payload.type satisfies never\n }\n\n return SUCCESS_RESPONSE\n}\n\nconst _attachWorkflowContextToLogger = (\n props: types.ServerProps,\n event: types.WorkflowUpdateEvent\n): types.ServerProps['logger'] =>\n props.logger.with({\n eventId: event.id,\n workflowId: event.payload.workflow.id,\n conversationId: event.payload.conversation?.id,\n userId: event.payload.user?.id,\n })\n\nconst _handleWorkflowUpdate = async (props: types.ServerProps, event: types.WorkflowUpdateEvent): Promise<Response> => {\n const updateType = bridgeUpdateTypeToSnakeCase(event.payload.type)\n const handlers = props.self.workflowHandlers[updateType]?.[event.payload.workflow.name]\n\n if (!handlers || handlers.length === 0) {\n props.logger.warn(`No ${updateType} handler found for workflow \"${event.payload.workflow.name}\"`)\n return SUCCESS_RESPONSE\n }\n\n const { updatedWorkflow } = await _dispatchToHandlers(props, event)\n\n if (updatedWorkflow.status === 'pending') {\n props.logger.warn(\n `Workflow \"${event.payload.workflow.name}\" is still in pending status after processing \"${updateType}\" event. ` +\n 'This may indicate that the workflow was not properly acknowledged or terminated by the handler. '\n )\n }\n\n return SUCCESS_RESPONSE\n}\n\ntype WorkflowState = types.WorkflowUpdateEventPayload['workflow']\n\nconst _dispatchToHandlers = async (\n props: types.ServerProps,\n event: types.WorkflowUpdateEvent\n): Promise<{ updatedWorkflow: WorkflowState }> => {\n const updateType = bridgeUpdateTypeToSnakeCase(event.payload.type)\n const handlers = props.self.workflowHandlers[updateType]?.[event.payload.workflow.name]\n\n let currentWorkflowState: WorkflowState = structuredClone(event.payload.workflow)\n\n for (const handler of handlers ?? []) {\n currentWorkflowState = await handler({\n ...props,\n event,\n conversation: event.payload.conversation,\n user: event.payload.user,\n workflow: currentWorkflowState,\n })\n }\n\n return { updatedWorkflow: currentWorkflowState }\n}\n", "import { PLUGIN_PREFIX_SEPARATOR } from '../consts'\n\nexport const unprefixTagsOwnedByPlugin = <T extends {} | { tags?: Record<string, string> }>(\n obj: T,\n { alias }: { alias?: string }\n): T => {\n if (!('tags' in obj) || !alias) {\n return obj\n }\n\n const prefix = `${alias}${PLUGIN_PREFIX_SEPARATOR}` as const\n\n const unprefixedTags = Object.fromEntries(\n Object.entries(obj.tags ?? {}).flatMap(([key, value]) =>\n key.startsWith(prefix) ? [[key.slice(prefix.length), value]] : []\n )\n )\n\n return {\n ...obj,\n tags: unprefixedTags,\n }\n}\n\nexport const prefixTagsIfNeeded = <T extends {} | { tags?: Record<string, string> }>(\n obj: T,\n { alias }: { alias?: string }\n): T => {\n if (!('tags' in obj) || !alias) {\n return obj\n }\n\n const prefix = `${alias}${PLUGIN_PREFIX_SEPARATOR}` as const\n\n const prefixedTags = Object.fromEntries(\n Object.entries(obj.tags ?? {}).map(([key, value]) => [key.startsWith(prefix) ? key : `${prefix}${key}`, value])\n )\n\n return {\n ...obj,\n tags: prefixedTags,\n }\n}\n", "type _PageLister<R> = (t: { nextToken?: string }) => Promise<{ items: R[]; meta: { nextToken?: string } }>\n\nclass AsyncCollection<T> implements AsyncIterableIterator<T> {\n private _nextToken?: string\n private _elementsBuffer: T[] = []\n private _isExhausted = false\n\n public constructor(private _list: _PageLister<T>) {}\n\n // Allows iterating with for-await-of loops:\n public [Symbol.asyncIterator](): AsyncIterableIterator<T> {\n return this\n }\n\n /**\n * Get the next element from the collection and advance the iterator.\n */\n public async next(): Promise<IteratorResult<T, undefined>> {\n if (this._bufferIsEmpty && !this._isExhausted) {\n await this._fetchNextPageIntoBuffer()\n }\n\n if (this._bufferIsEmpty) {\n return { done: true, value: undefined }\n }\n\n return { done: false, value: this._elementsBuffer.shift()! }\n }\n\n /**\n * Take the next n elements from the collection, advancing the iterator, and\n * return them as an array.\n */\n public async take(amount: number): Promise<T[]> {\n const arr: T[] = []\n for (let i = 0; i < amount; ++i) {\n const result = await this.next()\n if (result.done) {\n break\n }\n arr.push(result.value)\n }\n return arr\n }\n\n /**\n * Take the next n pages of elements from the collection, advancing the\n * iterator, and return the elements as an array.\n */\n public async takePage(amount: number): Promise<T[]> {\n for (let i = 0; i < amount; ++i) {\n if (!this._isExhausted) {\n await this._fetchNextPageIntoBuffer()\n }\n }\n\n const elements = [...this._elementsBuffer]\n this._elementsBuffer.length = 0\n\n return elements\n }\n\n /**\n * Take all remaining elements from in collection, moving the iterator to the\n * end, and return them as an array.\n */\n public async takeAll(): Promise<T[]> {\n return this.take(Number.POSITIVE_INFINITY)\n }\n\n /**\n * Returns true if there are no more elements to fetch in the collection.\n */\n public get isExhausted() {\n return this._isExhausted\n }\n\n private async _fetchNextPageIntoBuffer(): Promise<void> {\n const { items, meta } = await this._list({ nextToken: this._nextToken })\n\n this._elementsBuffer.push(...items)\n this._nextToken = meta.nextToken\n\n if (!meta.nextToken) {\n this._isExhausted = true\n }\n }\n\n private get _bufferIsEmpty(): boolean {\n return this._elementsBuffer.length === 0\n }\n}\n\nexport type { AsyncCollection }\nexport const createAsyncCollection = <T>(listFn: _PageLister<T>) => new AsyncCollection<T>(listFn)\n", "import type * as client from '@botpress/client'\nimport type { BotSpecificClient } from '../../bot'\nimport { prefixTagsIfNeeded, unprefixTagsOwnedByPlugin } from '../../plugin/tag-prefixer'\nimport { createAsyncCollection } from '../../utils/api-paging-utils'\nimport type * as typeUtils from '../../utils/type-utils'\nimport type { BaseBot } from '../common'\nimport * as botServerTypes from '../server/types'\nimport type { WorkflowProxy, ActionableWorkflow } from './types'\n\n// FIXME: Plugin (and bot) workflow definitions are currently being created on\n// the fly at run time. However, they should be part of the bot/plugin\n// definition. The SDK currently gives the illusion that they are defined\n// at deploy time, but in reality they are not. Nothing about the\n// workflows is sent to the backend at deploy time.\n//\n// This is being tracked as https://linear.app/botpress/issue/KKN-292\n//\n// Since currently each workflow definition is unique to a workflow run,\n// the tags are not prefixed by the plugin instance's alias. This is\n// because the backend's input validation prevents us from having a `#`\n// character in the workflow definition's tag definition. The plugin\n// prefix separator should only be present when we merge a plugin's\n// definitions into a bot (ie when installing a plugin in a bot). It\n// should not be allowed when calling the createWorkflow endpoint\n// directly, which is what the CLI currently does.\n//\n// Once we have proper deploy-time workflow definitions, we should\n// prefix/unprefix the tags like we do in the other plugin proxies.\n//\n// This means removing `undefined /* props.pluginAlias */` and replacing\n// it with `props.pluginAlias` in the calls to `prefixTagsIfNeeded()` and\n// `unprefixTagsOwnedByPlugin()`.\n\nexport const proxyWorkflows = <TBot extends BaseBot>(props: {\n client: BotSpecificClient<TBot> | client.Client\n pluginAlias?: string\n}): WorkflowProxy<TBot> =>\n new Proxy({} as WorkflowProxy<TBot>, {\n get: <TWorkflowName extends typeUtils.StringKeys<TBot['workflows']>>(_: unknown, workflowName: TWorkflowName) =>\n ({\n listInstances: (input) =>\n createAsyncCollection(({ nextToken }) =>\n props.client\n .listWorkflows({\n ...input,\n name: workflowName as typeUtils.Cast<TWorkflowName, string>,\n nextToken,\n })\n .then(({ meta, workflows }) => ({\n meta,\n items: workflows.map((workflow) => wrapWorkflowInstance<TBot, TWorkflowName>({ ...props, workflow })),\n }))\n ),\n startNewInstance: async (input) => {\n const { workflow } = await props.client.createWorkflow({\n name: workflowName as typeUtils.Cast<TWorkflowName, string>,\n status: 'pending',\n ...prefixTagsIfNeeded(input, { alias: undefined /* props.pluginAlias */ }),\n })\n return { workflow: wrapWorkflowInstance<TBot, TWorkflowName>({ ...props, workflow }) }\n },\n }) satisfies WorkflowProxy<TBot>[TWorkflowName],\n })\n\nexport const wrapWorkflowInstance = <\n TBot extends BaseBot,\n TWorkflowName extends typeUtils.StringKeys<TBot['workflows']>,\n>(props: {\n client: BotSpecificClient<TBot> | client.Client\n workflow: client.Workflow\n event?: botServerTypes.WorkflowUpdateEvent\n onWorkflowUpdate?: (newState: client.Workflow) => Promise<void> | void\n pluginAlias?: string\n}): ActionableWorkflow<TBot, TWorkflowName> => {\n let isAcknowledged = false\n\n return {\n ...(unprefixTagsOwnedByPlugin(props.workflow, { alias: undefined /* props.pluginAlias */ }) as ActionableWorkflow<\n TBot,\n TWorkflowName\n >),\n\n async update(x) {\n const { workflow } = await props.client.updateWorkflow({\n id: props.workflow.id,\n ...prefixTagsIfNeeded(x, { alias: undefined /* props.pluginAlias */ }),\n })\n await props.onWorkflowUpdate?.(workflow)\n\n return { workflow: wrapWorkflowInstance<TBot, TWorkflowName>({ ...props, workflow }) }\n },\n\n async acknowledgeStartOfProcessing() {\n if (!props.event || props.workflow.status !== 'pending' || isAcknowledged) {\n return {\n workflow: wrapWorkflowInstance<TBot, TWorkflowName>(props),\n }\n }\n\n const { workflow } = await props.client.updateWorkflow({\n id: props.workflow.id,\n status: 'in_progress',\n eventId: props.event.id,\n })\n isAcknowledged = true\n\n await props.onWorkflowUpdate?.(workflow)\n\n return { workflow: wrapWorkflowInstance<TBot, TWorkflowName>({ ...props, workflow }) }\n },\n\n async setFailed({ failureReason }) {\n const { workflow } = await props.client.updateWorkflow({\n id: props.workflow.id,\n status: 'failed',\n failureReason,\n })\n\n await props.onWorkflowUpdate?.(workflow)\n\n return { workflow: wrapWorkflowInstance<TBot, TWorkflowName>({ ...props, workflow }) }\n },\n\n async setCompleted({ output } = {}) {\n const { workflow } = await props.client.updateWorkflow({ id: props.workflow.id, status: 'completed', output })\n await props.onWorkflowUpdate?.(workflow)\n\n return { workflow: wrapWorkflowInstance<TBot, TWorkflowName>({ ...props, workflow }) }\n },\n\n async cancel() {\n const { workflow } = await props.client.updateWorkflow({ id: props.workflow.id, status: 'cancelled' })\n await props.onWorkflowUpdate?.(workflow)\n\n return { workflow: wrapWorkflowInstance<TBot, TWorkflowName>({ ...props, workflow }) }\n },\n }\n}\n", "import { Workflow } from '@botpress/client'\nimport type { Server } from 'node:http'\nimport { PLUGIN_PREFIX_SEPARATOR } from '../consts'\nimport { BasePlugin, PluginImplementation } from '../plugin'\nimport { serve } from '../serve'\nimport * as utils from '../utils'\nimport { BaseBot } from './common'\nimport {\n botHandler,\n ActionHandlers,\n MessageHandlers,\n EventHandlers,\n StateExpiredHandlers,\n HookHandlers,\n WorkflowHandlers,\n MessageHandlersMap,\n EventHandlersMap,\n StateExpiredHandlersMap,\n HookHandlersMap,\n WorkflowHandlersMap,\n OrderedMessageHandlersMap,\n OrderedEventHandlersMap,\n OrderedStateExpiredHandlersMap,\n OrderedHookHandlersMap,\n OrderedWorkflowHandlersMap,\n BotHandlers,\n UnimplementedActionHandlers,\n WorkflowUpdateType,\n InjectedHandlerProps,\n InjectedBotHandlers,\n} from './server'\nimport { proxyWorkflows, wrapWorkflowInstance } from './workflow-proxy'\n\nexport type BotImplementationProps<TBot extends BaseBot = BaseBot, TPlugins extends Record<string, BasePlugin> = {}> = {\n actions: UnimplementedActionHandlers<TBot, TPlugins>\n plugins: {\n [K in utils.types.StringKeys<TPlugins>]: PluginImplementation<TPlugins[K]>\n }\n}\n\nexport class BotImplementation<TBot extends BaseBot = BaseBot, TPlugins extends Record<string, BasePlugin> = {}>\n implements InjectedBotHandlers<TBot>\n{\n private _actionHandlers: ActionHandlers<any>\n private _messageHandlers: OrderedMessageHandlersMap<any> = {}\n private _eventHandlers: OrderedEventHandlersMap<any> = {}\n private _stateExpiredHandlers: OrderedStateExpiredHandlersMap<any> = {}\n private _hookHandlers: OrderedHookHandlersMap<any> = {\n before_incoming_event: {},\n before_incoming_message: {},\n before_outgoing_message: {},\n before_outgoing_call_action: {},\n before_incoming_call_action: {},\n after_incoming_event: {},\n after_incoming_message: {},\n after_outgoing_message: {},\n after_outgoing_call_action: {},\n after_incoming_call_action: {},\n }\n private _workflowHandlers: OrderedWorkflowHandlersMap<any> = {\n started: {},\n continued: {},\n timed_out: {},\n }\n\n private _plugins: Record<string, PluginImplementation<any>> = {}\n\n private _registerOrder: number = 0\n\n public constructor(public readonly props: BotImplementationProps<TBot, TPlugins>) {\n this._actionHandlers = props.actions as ActionHandlers<TBot>\n this._plugins = props.plugins\n }\n\n public get actionHandlers(): InjectedBotHandlers<TBot>['actionHandlers'] {\n return new Proxy(\n {},\n {\n get: (_, actionName: string) => {\n const action = this._actionHandlers[actionName]\n if (action) {\n return utils.functions.setName(\n (props: Omit<Parameters<typeof action>[0], keyof InjectedHandlerProps<TBot>>) =>\n action({ ...props, workflows: proxyWorkflows(props) }),\n action.name\n )\n }\n\n for (const [pluginAlias, plugin] of Object.entries(this._plugins)) {\n const [actionPrefix, nameWithoutPrefix] = actionName.split(PLUGIN_PREFIX_SEPARATOR)\n if (actionPrefix !== pluginAlias || !nameWithoutPrefix) {\n continue\n }\n return plugin.actionHandlers[nameWithoutPrefix]\n }\n\n return undefined\n },\n }\n ) as InjectedBotHandlers<TBot>['actionHandlers']\n }\n\n public get messageHandlers(): InjectedBotHandlers<TBot>['messageHandlers'] {\n return new Proxy(\n {},\n {\n /** returns both the message handlers for the target type but global as well */\n get: (_, messageName: string) => {\n const pluginHandlers = Object.values(this._plugins).flatMap(\n (plugin) => plugin.messageHandlers[messageName] ?? []\n )\n const selfSpecificHandlers = messageName === '*' ? [] : (this._messageHandlers[messageName] ?? [])\n const selfGlobalHandlers = this._messageHandlers['*'] ?? []\n const selfHandlers = [...selfSpecificHandlers, ...selfGlobalHandlers]\n .sort((a, b) => a.order - b.order)\n .map(({ handler }) =>\n utils.functions.setName(\n (props: Omit<Parameters<typeof handler>[0], keyof InjectedHandlerProps<TBot>>) =>\n handler({ ...props, workflows: proxyWorkflows(props) }),\n handler.name\n )\n )\n\n return utils.arrays.unique([...pluginHandlers, ...selfHandlers])\n },\n }\n ) as InjectedBotHandlers<TBot>['messageHandlers']\n }\n\n public get eventHandlers(): InjectedBotHandlers<TBot>['eventHandlers'] {\n return new Proxy(\n {},\n {\n /** returns both the event handlers for the target type but global as well */\n get: (_, eventName: string) => {\n const pluginHandlers = Object.values(this._plugins).flatMap((plugin) => plugin.eventHandlers[eventName] ?? [])\n\n const selfSpecificHandlers = eventName === '*' ? [] : (this._eventHandlers[eventName] ?? [])\n const selfGlobalHandlers = this._eventHandlers['*'] ?? []\n const selfHandlers = [...selfSpecificHandlers, ...selfGlobalHandlers]\n .sort((a, b) => a.order - b.order)\n .map(({ handler }) =>\n utils.functions.setName(\n (props: Omit<Parameters<typeof handler>[0], keyof InjectedHandlerProps<TBot>>) =>\n handler({ ...props, workflows: proxyWorkflows(props) }),\n handler.name\n )\n )\n\n return utils.arrays.unique([...pluginHandlers, ...selfHandlers])\n },\n }\n ) as InjectedBotHandlers<TBot>['eventHandlers']\n }\n\n public get stateExpiredHandlers(): InjectedBotHandlers<TBot>['stateExpiredHandlers'] {\n return new Proxy(\n {},\n {\n /** returns both the state expired handlers for the target type but global as well */\n get: (_, stateName: string) => {\n const pluginHandlers = Object.values(this._plugins).flatMap(\n (plugin) => plugin.stateExpiredHandlers[stateName] ?? []\n )\n\n const selfSpecificHandlers = stateName === '*' ? [] : (this._stateExpiredHandlers[stateName] ?? [])\n const selfGlobalHandlers = this._stateExpiredHandlers['*'] ?? []\n const selfHandlers = [...selfSpecificHandlers, ...selfGlobalHandlers]\n .sort((a, b) => a.order - b.order)\n .map(({ handler }) =>\n utils.functions.setName(\n (props: Omit<Parameters<typeof handler>[0], keyof InjectedHandlerProps<TBot>>) =>\n handler({ ...props, workflows: proxyWorkflows(props) }),\n handler.name\n )\n )\n\n return utils.arrays.unique([...pluginHandlers, ...selfHandlers])\n },\n }\n ) as InjectedBotHandlers<TBot>['stateExpiredHandlers']\n }\n\n public get hookHandlers(): InjectedBotHandlers<TBot>['hookHandlers'] {\n return new Proxy(\n {},\n {\n get: (_, hookType: utils.types.StringKeys<HookHandlersMap<TBot>>) => {\n const hooks = this._hookHandlers[hookType]\n if (!hooks) {\n return undefined\n }\n\n return new Proxy(\n {},\n {\n get: (_, hookDataName: string) => {\n const pluginHandlers = Object.values(this._plugins).flatMap(\n (plugin) => (plugin.hookHandlers[hookType]?.[hookDataName] ?? []) as typeof selfHandlers\n )\n\n const selfHooks = this._hookHandlers[hookType] ?? {}\n const selfSpecificHandlers = hookDataName === '*' ? [] : (selfHooks[hookDataName] ?? [])\n const selfGlobalHandlers = selfHooks['*'] ?? []\n const selfHandlers = [...selfSpecificHandlers, ...selfGlobalHandlers]\n .sort((a, b) => a.order - b.order)\n .map(({ handler }) =>\n utils.functions.setName(\n (props: any) => handler({ ...props, workflows: proxyWorkflows(props) }),\n handler.name\n )\n )\n\n return utils.arrays.unique([...pluginHandlers, ...selfHandlers])\n },\n }\n )\n },\n }\n ) as InjectedBotHandlers<TBot>['hookHandlers']\n }\n\n public get workflowHandlers(): InjectedBotHandlers<TBot>['workflowHandlers'] {\n return new Proxy(\n {},\n {\n get: (_, updateType: WorkflowUpdateType) => {\n const handlersOfType = this._workflowHandlers[updateType]\n if (!handlersOfType) {\n return undefined\n }\n\n return new Proxy(\n {},\n {\n get: (_, workflowName: string) => {\n const selfHandlers =\n handlersOfType[workflowName]\n ?.sort((a, b) => a.order - b.order)\n .map(({ handler }) =>\n utils.functions.setName(\n async (props: Omit<Parameters<typeof handler>[0], keyof InjectedHandlerProps<TBot>>) => {\n let currentWorkflowState: Workflow = props.workflow\n await handler({\n ...props,\n workflow: wrapWorkflowInstance({\n ...props,\n onWorkflowUpdate(newState) {\n currentWorkflowState = newState\n },\n }),\n workflows: proxyWorkflows(props),\n })\n return currentWorkflowState\n },\n handler.name\n )\n ) ?? []\n\n const pluginHandlers = Object.values(this._plugins).flatMap(\n (plugin) => plugin.workflowHandlers[updateType]?.[workflowName] ?? []\n )\n\n return utils.arrays.unique([...selfHandlers, ...pluginHandlers])\n },\n }\n )\n },\n }\n ) as InjectedBotHandlers<TBot>['workflowHandlers']\n }\n\n public readonly on = {\n message: <T extends utils.types.StringKeys<MessageHandlersMap<TBot>>>(\n type: T,\n handler: MessageHandlers<TBot>[T]\n ): void => {\n this._messageHandlers[type] = utils.arrays.safePush(this._messageHandlers[type], {\n handler: handler as MessageHandlers<any>[string],\n order: this._registerOrder++,\n })\n },\n\n event: <T extends utils.types.StringKeys<EventHandlersMap<TBot>>>(\n type: T,\n handler: EventHandlers<TBot>[T]\n ): void => {\n this._eventHandlers[type] = utils.arrays.safePush(this._eventHandlers[type], {\n handler: handler as EventHandlers<any>[string],\n order: this._registerOrder++,\n })\n },\n stateExpired: <T extends utils.types.StringKeys<StateExpiredHandlersMap<TBot>>>(\n type: T,\n handler: StateExpiredHandlers<TBot>[T]\n ): void => {\n this._stateExpiredHandlers[type] = utils.arrays.safePush(this._stateExpiredHandlers[type], {\n handler: handler as StateExpiredHandlers<any>[string],\n order: this._registerOrder++,\n })\n },\n beforeIncomingEvent: <T extends utils.types.StringKeys<HookHandlersMap<TBot>['before_incoming_event']>>(\n type: T,\n handler: HookHandlers<TBot>['before_incoming_event'][T]\n ) => {\n this._hookHandlers.before_incoming_event[type] = utils.arrays.safePush(\n this._hookHandlers.before_incoming_event[type],\n { handler: handler as HookHandlers<any>['before_incoming_event'][string], order: this._registerOrder++ }\n )\n },\n beforeIncomingMessage: <T extends utils.types.StringKeys<HookHandlersMap<TBot>['before_incoming_message']>>(\n type: T,\n handler: HookHandlers<TBot>['before_incoming_message'][T]\n ) => {\n this._hookHandlers.before_incoming_message[type] = utils.arrays.safePush(\n this._hookHandlers.before_incoming_message[type],\n { handler: handler as HookHandlers<any>['before_incoming_message'][string], order: this._registerOrder++ }\n )\n },\n beforeOutgoingMessage: <T extends utils.types.StringKeys<HookHandlersMap<TBot>['before_outgoing_message']>>(\n type: T,\n handler: HookHandlers<TBot>['before_outgoing_message'][T]\n ) => {\n this._hookHandlers.before_outgoing_message[type] = utils.arrays.safePush(\n this._hookHandlers.before_outgoing_message[type],\n { handler: handler as HookHandlers<any>['before_outgoing_message'][string], order: this._registerOrder++ }\n )\n },\n beforeOutgoingCallAction: <T extends utils.types.StringKeys<HookHandlersMap<TBot>['before_outgoing_call_action']>>(\n type: T,\n handler: HookHandlers<TBot>['before_outgoing_call_action'][T]\n ) => {\n this._hookHandlers.before_outgoing_call_action[type] = utils.arrays.safePush(\n this._hookHandlers.before_outgoing_call_action[type],\n { handler: handler as HookHandlers<any>['before_outgoing_call_action'][string], order: this._registerOrder++ }\n )\n },\n /**\n * # EXPERIMENTAL\n * This API is experimental and may change in the future.\n */\n beforeIncomingCallAction: <T extends utils.types.StringKeys<HookHandlersMap<TBot>['before_incoming_call_action']>>(\n type: T,\n handler: HookHandlers<TBot>['before_incoming_call_action'][T]\n ) => {\n this._hookHandlers.before_incoming_call_action[type] = utils.arrays.safePush(\n this._hookHandlers.before_incoming_call_action[type],\n { handler: handler as HookHandlers<any>['before_incoming_call_action'][string], order: this._registerOrder++ }\n )\n },\n afterIncomingEvent: <T extends utils.types.StringKeys<HookHandlersMap<TBot>['after_incoming_event']>>(\n type: T,\n handler: HookHandlers<TBot>['after_incoming_event'][T]\n ) => {\n this._hookHandlers.after_incoming_event[type] = utils.arrays.safePush(\n this._hookHandlers.after_incoming_event[type],\n { handler: handler as HookHandlers<any>['after_incoming_event'][string], order: this._registerOrder++ }\n )\n },\n afterIncomingMessage: <T extends utils.types.StringKeys<HookHandlersMap<TBot>['after_incoming_message']>>(\n type: T,\n handler: HookHandlers<TBot>['after_incoming_message'][T]\n ) => {\n this._hookHandlers.after_incoming_message[type] = utils.arrays.safePush(\n this._hookHandlers.after_incoming_message[type],\n { handler: handler as HookHandlers<any>['after_incoming_message'][string], order: this._registerOrder++ }\n )\n },\n afterOutgoingMessage: <T extends utils.types.StringKeys<HookHandlersMap<TBot>['after_outgoing_message']>>(\n type: T,\n handler: HookHandlers<TBot>['after_outgoing_message'][T]\n ) => {\n this._hookHandlers.after_outgoing_message[type] = utils.arrays.safePush(\n this._hookHandlers.after_outgoing_message[type],\n { handler: handler as HookHandlers<any>['after_outgoing_message'][string], order: this._registerOrder++ }\n )\n },\n afterOutgoingCallAction: <T extends utils.types.StringKeys<HookHandlersMap<TBot>['after_outgoing_call_action']>>(\n type: T,\n handler: HookHandlers<TBot>['after_outgoing_call_action'][T]\n ) => {\n this._hookHandlers.after_outgoing_call_action[type] = utils.arrays.safePush(\n this._hookHandlers.after_outgoing_call_action[type],\n { handler: handler as HookHandlers<any>['after_outgoing_call_action'][string], order: this._registerOrder++ }\n )\n },\n\n /**\n * # EXPERIMENTAL\n * This API is experimental and may change in the future.\n */\n afterIncomingCallAction: <T extends utils.types.StringKeys<HookHandlersMap<TBot>['after_incoming_call_action']>>(\n type: T,\n handler: HookHandlers<TBot>['after_incoming_call_action'][T]\n ) => {\n this._hookHandlers.after_incoming_call_action[type] = utils.arrays.safePush(\n this._hookHandlers.after_incoming_call_action[type],\n { handler: handler as HookHandlers<any>['after_incoming_call_action'][string], order: this._registerOrder++ }\n )\n },\n\n /**\n * # EXPERIMENTAL\n * This API is experimental and may change in the future.\n */\n workflowStart: <T extends utils.types.StringKeys<WorkflowHandlersMap<TBot>['started']>>(\n type: T,\n handler: WorkflowHandlers<TBot>[T]\n ): void => {\n this._workflowHandlers.started[type] = utils.arrays.safePush(this._workflowHandlers.started[type], {\n handler: handler as WorkflowHandlers<any>[string],\n order: this._registerOrder++,\n })\n },\n\n /**\n * # EXPERIMENTAL\n * This API is experimental and may change in the future.\n */\n workflowContinue: <T extends utils.types.StringKeys<WorkflowHandlersMap<TBot>['continued']>>(\n type: T,\n handler: WorkflowHandlers<TBot>[T]\n ): void => {\n this._workflowHandlers.continued[type] = utils.arrays.safePush(this._workflowHandlers.continued[type], {\n handler: handler as WorkflowHandlers<any>[string],\n order: this._registerOrder++,\n })\n },\n\n /**\n * # EXPERIMENTAL\n * This API is experimental and may change in the future.\n */\n workflowTimeout: <T extends utils.types.StringKeys<WorkflowHandlersMap<TBot>['timed_out']>>(\n type: T,\n handler: WorkflowHandlers<TBot>[T]\n ): void => {\n this._workflowHandlers.timed_out[type] = utils.arrays.safePush(this._workflowHandlers.timed_out[type], {\n handler: handler as WorkflowHandlers<any>[string],\n order: this._registerOrder++,\n })\n },\n }\n\n public readonly handler = botHandler(this as unknown as BotHandlers<any>)\n\n public readonly start = (port?: number): Promise<Server> => serve(this.handler, port)\n}\n", "import { ActionDefinition, ChannelDefinition, EntityDefinition, EventDefinition } from '../integration/definition'\nimport * as utils from '../utils'\nimport { SDK_VERSION } from '../version'\nimport z, { ZuiObjectSchema, GenericZuiSchema, ZodRef } from '../zui'\n\ntype BaseEvents = Record<string, ZuiObjectSchema>\ntype BaseActions = Record<string, ZuiObjectSchema>\ntype BaseMessages = Record<string, ZuiObjectSchema>\ntype BaseChannels = Record<string, BaseMessages>\ntype BaseEntities = Record<string, ZuiObjectSchema>\n\ntype EntityReferences<TEntities extends BaseEntities> = {\n [K in keyof TEntities]: ZodRef\n}\n\ntype GenericEventDefinition<TEntities extends BaseEntities, TEvent extends BaseEvents[string] = BaseEvents[string]> = {\n schema: GenericZuiSchema<EntityReferences<TEntities>, TEvent>\n attributes?: Record<string, string>\n}\n\ntype GenericChannelDefinition<\n TEntities extends BaseEntities,\n TChannel extends BaseChannels[string] = BaseChannels[string],\n> = {\n messages: {\n [K in keyof TChannel]: {\n schema: GenericZuiSchema<EntityReferences<TEntities>, TChannel[K]>\n }\n }\n}\n\ntype GenericActionDefinition<\n TEntities extends BaseEntities,\n TAction extends BaseActions[string] = BaseActions[string],\n> = {\n title?: string\n description?: string\n billable?: boolean\n cacheable?: boolean\n input: { schema: GenericZuiSchema<EntityReferences<TEntities>, TAction> }\n output: { schema: GenericZuiSchema<EntityReferences<TEntities>, ZuiObjectSchema> }\n attributes?: Record<string, string>\n}\n\nexport type InterfaceDefinitionProps<\n TName extends string = string,\n TVersion extends string = string,\n TEntities extends BaseEntities = BaseEntities,\n TActions extends BaseActions = BaseActions,\n TEvents extends BaseEntities = BaseEntities,\n TChannels extends BaseChannels = BaseChannels,\n> = {\n name: TName\n version: TVersion\n\n title?: string\n description?: string\n icon?: string\n readme?: string\n\n attributes?: Record<string, string>\n\n entities?: {\n [K in keyof TEntities]: EntityDefinition<TEntities[K]>\n }\n\n events?: { [K in keyof TEvents]: GenericEventDefinition<TEntities, TEvents[K]> }\n\n actions?: {\n [K in keyof TActions]: GenericActionDefinition<TEntities, TActions[K]>\n }\n\n channels?: {\n [K in keyof TChannels]: GenericChannelDefinition<TEntities, TChannels[K]>\n }\n\n __advanced?: {\n useLegacyZuiTransformer?: boolean\n }\n}\n\nexport class InterfaceDefinition<\n TName extends string = string,\n TVersion extends string = string,\n TEntities extends BaseEntities = BaseEntities,\n TActions extends BaseActions = BaseActions,\n TEvents extends BaseEvents = BaseEvents,\n TChannels extends BaseChannels = BaseChannels,\n> {\n public readonly name: this['props']['name']\n public readonly version: this['props']['version']\n\n public readonly title: this['props']['title']\n public readonly description: this['props']['description']\n public readonly icon: this['props']['icon']\n public readonly readme: this['props']['readme']\n public readonly attributes: this['props']['attributes']\n\n public readonly entities: { [K in keyof TEntities]: EntityDefinition<TEntities[K]> }\n public readonly events: { [K in keyof TEvents]: EventDefinition<TEvents[K]> }\n public readonly actions: { [K in keyof TActions]: ActionDefinition<TActions[K]> }\n public readonly channels: { [K in keyof TChannels]: ChannelDefinition<TChannels[K]> }\n\n public readonly __advanced: this['props']['__advanced']\n\n public constructor(\n public readonly props: InterfaceDefinitionProps<TName, TVersion, TEntities, TActions, TEvents, TChannels>\n ) {\n this.name = props.name\n this.version = props.version\n this.icon = props.icon\n this.title = props.title\n this.description = props.description\n this.readme = props.readme\n this.entities = props.entities ?? ({} as this['entities'])\n this.attributes = props.attributes\n this.__advanced = props.__advanced\n\n const entityReferences = this._getEntityReference(this.entities)\n\n const events: Record<string, EventDefinition> =\n props.events === undefined\n ? {}\n : utils.records.mapValues(\n props.events,\n (event): EventDefinition => ({\n ...event,\n schema: event.schema(entityReferences),\n })\n )\n\n const actions: Record<string, ActionDefinition> =\n props.actions === undefined\n ? {}\n : utils.records.mapValues(\n props.actions,\n (action): ActionDefinition => ({\n ...action,\n input: {\n ...action.input,\n schema: action.input.schema(entityReferences),\n },\n output: {\n ...action.output,\n schema: action.output.schema(entityReferences),\n },\n })\n )\n\n const channels: Record<string, ChannelDefinition> =\n props.channels === undefined\n ? {}\n : utils.records.mapValues(\n props.channels,\n (channel): ChannelDefinition => ({\n ...channel,\n messages: utils.records.mapValues(channel.messages, (message) => ({\n ...message,\n schema: message.schema(entityReferences),\n })),\n })\n )\n\n this.events = events as this['events']\n this.actions = actions as this['actions']\n this.channels = channels as this['channels']\n }\n\n public get metadata() {\n return { sdkVersion: SDK_VERSION } as const\n }\n\n private _getEntityReference = (entities: Record<string, EntityDefinition>): EntityReferences<TEntities> => {\n const entityReferences: Record<string, ZodRef> = {} as EntityReferences<TEntities>\n for (const [entityName, entityDef] of Object.entries(entities)) {\n const title = entityDef.schema._def['x-zui']?.title\n const description = entityDef.schema._def.description\n\n const refSchema = z.ref(entityName)\n if (title) {\n refSchema.title(title)\n }\n if (description) {\n refSchema.describe(description)\n }\n\n entityReferences[entityName] = refSchema\n }\n return entityReferences as EntityReferences<TEntities>\n }\n}\n", "import {\n StateDefinition as BotStateDefinition,\n EventDefinition as BotEventDefinition,\n ConfigurationDefinition as BotConfigurationDefinition,\n UserDefinition,\n ConversationDefinition,\n MessageDefinition,\n ActionDefinition as BotActionDefinition,\n TableDefinition as BotTableDefinition,\n WorkflowDefinition,\n} from '../bot/definition'\nimport { IntegrationPackage, InterfacePackage } from '../package'\nimport * as typeUtils from '../utils/type-utils'\nimport { SDK_VERSION } from '../version'\nimport { ZuiObjectSchema, ZuiObjectOrRefSchema, z } from '../zui'\n\nexport { UserDefinition, ConversationDefinition, MessageDefinition, WorkflowDefinition } from '../bot/definition'\n\ntype BaseConfig = ZuiObjectOrRefSchema\ntype BaseStates = Record<string, ZuiObjectOrRefSchema>\ntype BaseEvents = Record<string, ZuiObjectOrRefSchema>\ntype BaseActions = Record<string, ZuiObjectOrRefSchema>\ntype BaseInterfaces = Record<string, InterfacePackage>\ntype BaseIntegrations = Record<string, IntegrationPackage>\ntype BaseTables = Record<string, ZuiObjectOrRefSchema>\ntype BaseWorkflows = Record<string, ZuiObjectSchema>\n\nexport type TableDefinition<TTable extends BaseTables[string] = BaseTables[string]> = typeUtils.Merge<\n BotTableDefinition,\n {\n schema: TTable\n }\n>\n\nexport type ConfigurationDefinition<TConfig extends BaseConfig = BaseConfig> = typeUtils.Merge<\n BotConfigurationDefinition,\n {\n schema: TConfig\n }\n>\n\nexport type StateDefinition<TState extends BaseStates[string] = BaseStates[string]> = typeUtils.Merge<\n BotStateDefinition,\n {\n schema: TState\n }\n>\n\nexport type EventDefinition<TEvent extends BaseEvents[string] = BaseEvents[string]> = typeUtils.Merge<\n BotEventDefinition,\n {\n schema: TEvent\n }\n>\n\nexport type ActionDefinition<TAction extends BaseActions[string] = BaseActions[string]> = typeUtils.Merge<\n BotActionDefinition,\n {\n input: { schema: TAction }\n output: { schema: ZuiObjectOrRefSchema }\n }\n>\n\nexport type RecurringEventDefinition<TEvents extends BaseEvents = BaseEvents> = {\n [K in keyof TEvents]: {\n type: K\n payload: z.infer<TEvents[K]>\n schedule: {\n cron: string\n }\n }\n}[keyof TEvents]\n\nexport type ZuiSchemaWithEntityReferences<\n TInterfaces extends BaseInterfaces,\n TReturnType extends ZuiObjectOrRefSchema,\n> =\n | ((props: {\n entities: {\n [TInterfaceAlias in keyof TInterfaces]: {\n [TEntityName in keyof TInterfaces[TInterfaceAlias]['definition']['entities']]: z.ZodRef\n }\n }\n }) => TReturnType)\n | TReturnType\n\ntype GenericDefinition<\n TInterfaces extends BaseInterfaces,\n TDefinition extends { schema: ZuiObjectOrRefSchema },\n> = typeUtils.Merge<\n TDefinition,\n {\n schema: ZuiSchemaWithEntityReferences<TInterfaces, TDefinition['schema']>\n }\n>\n\ntype GenericNestedDefinition<\n TInterfaces extends BaseInterfaces,\n TDefinition extends { [k: string]: any },\n TKeys extends string,\n> = Omit<TDefinition, TKeys> & {\n [TKey in TKeys]: Omit<TDefinition[TKey], 'schema'> & {\n schema: ZuiSchemaWithEntityReferences<TInterfaces, TDefinition[TKey]['schema']>\n }\n}\n\nexport type PluginDefinitionProps<\n TName extends string = string,\n TVersion extends string = string,\n TConfig extends BaseConfig = BaseConfig,\n TStates extends BaseStates = BaseStates,\n TEvents extends BaseEvents = BaseEvents,\n TActions extends BaseActions = BaseActions,\n TInterfaces extends BaseInterfaces = BaseInterfaces,\n TIntegrations extends BaseIntegrations = BaseIntegrations,\n TTables extends BaseTables = BaseTables,\n TWorkflows extends BaseWorkflows = BaseWorkflows,\n> = {\n name: TName\n version: TVersion\n\n title?: string\n description?: string\n icon?: string\n readme?: string\n\n attributes?: Record<string, string>\n\n integrations?: TIntegrations\n interfaces?: TInterfaces\n user?: UserDefinition\n conversation?: ConversationDefinition\n message?: MessageDefinition\n states?: {\n [K in keyof TStates]: GenericDefinition<TInterfaces, StateDefinition<TStates[K]>>\n }\n configuration?: GenericDefinition<TInterfaces, ConfigurationDefinition<TConfig>>\n events?: {\n [K in keyof TEvents]: GenericDefinition<TInterfaces, EventDefinition<TEvents[K]>>\n }\n recurringEvents?: Record<string, RecurringEventDefinition<TEvents>>\n actions?: {\n [K in keyof TActions]: GenericNestedDefinition<TInterfaces, ActionDefinition<TActions[K]>, 'input' | 'output'>\n }\n tables?: {\n [K in keyof TTables]: GenericDefinition<TInterfaces, TableDefinition<TTables[K]>>\n }\n\n /**\n * # EXPERIMENTAL\n * This API is experimental and may change in the future.\n */\n workflows?: {\n [K in keyof TWorkflows]: WorkflowDefinition<TWorkflows[K]>\n }\n\n __advanced?: {\n useLegacyZuiTransformer?: boolean\n }\n}\n\nexport class PluginDefinition<\n TName extends string = string,\n TVersion extends string = string,\n TConfig extends BaseConfig = BaseConfig,\n TStates extends BaseStates = BaseStates,\n TEvents extends BaseEvents = BaseEvents,\n TActions extends BaseActions = BaseActions,\n TInterfaces extends BaseInterfaces = BaseInterfaces,\n TIntegrations extends BaseIntegrations = BaseIntegrations,\n TTables extends BaseTables = BaseTables,\n TWorkflows extends BaseWorkflows = BaseWorkflows,\n> {\n public readonly name: this['props']['name']\n public readonly version: this['props']['version']\n\n public readonly title: this['props']['title']\n public readonly description: this['props']['description']\n public readonly icon: this['props']['icon']\n public readonly readme: this['props']['readme']\n\n public readonly attributes: this['props']['attributes']\n\n public readonly integrations: this['props']['integrations']\n public readonly interfaces: this['props']['interfaces']\n\n public readonly user: this['props']['user']\n public readonly conversation: this['props']['conversation']\n public readonly message: this['props']['message']\n public readonly states: {\n [K in keyof TStates]: StateDefinition<TStates[K]>\n }\n public readonly configuration?: ConfigurationDefinition<TConfig>\n public readonly events: {\n [K in keyof TEvents]: EventDefinition<TEvents[K]>\n }\n public readonly recurringEvents: this['props']['recurringEvents']\n public readonly actions: {\n [K in keyof TActions]: ActionDefinition<TActions[K]>\n }\n public readonly tables: {\n [K in keyof TTables]: TableDefinition<TTables[K]>\n }\n public readonly workflows: this['props']['workflows']\n public readonly __advanced: this['props']['__advanced']\n\n public constructor(\n public readonly props: PluginDefinitionProps<\n TName,\n TVersion,\n TConfig,\n TStates,\n TEvents,\n TActions,\n TInterfaces,\n TIntegrations,\n TTables,\n TWorkflows\n >\n ) {\n // entities.<interfaceAlias>.<entityName> -> ZodRef\n const entities = Object.fromEntries(\n Object.entries(props.interfaces ?? {}).map(([interfaceAlias, interfaceDef]) => [\n interfaceAlias,\n Object.fromEntries(\n Object.entries(interfaceDef.definition.entities ?? {}).map(([entityName]) => [\n entityName,\n z.ref(`interface:${interfaceAlias}/entities/${entityName}`),\n ])\n ),\n ])\n ) as {\n [TInterfaceAlias in keyof TInterfaces]: {\n [TEntityName in keyof TInterfaces[TInterfaceAlias]['definition']['entities']]: z.ZodRef\n }\n }\n\n this.name = props.name\n this.version = props.version\n this.icon = props.icon\n this.readme = props.readme\n this.title = props.title\n this.description = props.description\n this.integrations = props.integrations\n this.interfaces = props.interfaces\n this.user = props.user\n this.conversation = props.conversation\n this.message = props.message\n this.recurringEvents = props.recurringEvents\n this.workflows = props.workflows\n this.attributes = props.attributes\n this.__advanced = props.__advanced\n\n const aliases = new Set<string>()\n\n for (const alias of [...Object.keys(props.integrations ?? {}), ...Object.keys(props.interfaces ?? {})]) {\n if (aliases.has(alias)) {\n throw new Error(\n `Duplicate interface or integration alias detected in plugin definition: '${alias}'. ` +\n 'Please use unique aliases for each interface and integration.'\n )\n }\n aliases.add(alias)\n }\n\n this.configuration = props.configuration\n ? {\n ...props.configuration,\n schema:\n typeof props.configuration.schema === 'object'\n ? props.configuration.schema\n : props.configuration.schema({ entities }),\n }\n : undefined\n\n this.states = Object.fromEntries(\n Object.entries(props.states ?? {}).map(\n ([stateName, stateDef]: [keyof TStates, NonNullable<(typeof props)['states']>[keyof TStates]]) => [\n stateName,\n {\n ...stateDef,\n schema: typeof stateDef.schema === 'object' ? stateDef.schema : stateDef.schema({ entities }),\n } as StateDefinition<TStates[keyof TStates]>,\n ]\n )\n ) as { [K in keyof TStates]: StateDefinition<TStates[K]> }\n\n this.events = Object.fromEntries(\n Object.entries(props.events ?? {}).map(\n ([eventName, eventDef]: [keyof TEvents, NonNullable<(typeof props)['events']>[keyof TEvents]]) => [\n eventName,\n {\n ...eventDef,\n schema: typeof eventDef.schema === 'object' ? eventDef.schema : eventDef.schema({ entities }),\n } as EventDefinition<TEvents[keyof TEvents]>,\n ]\n )\n ) as { [K in keyof TEvents]: EventDefinition<TEvents[K]> }\n\n this.actions = Object.fromEntries(\n Object.entries(props.actions ?? {}).map(\n ([actionName, actionDef]: [keyof TActions, NonNullable<(typeof props)['actions']>[keyof TActions]]) => [\n actionName,\n {\n ...actionDef,\n input: {\n ...actionDef.input,\n schema:\n typeof actionDef.input.schema === 'object'\n ? actionDef.input.schema\n : actionDef.input.schema({ entities }),\n },\n output: {\n ...actionDef.output,\n schema:\n typeof actionDef.output.schema === 'object'\n ? actionDef.output.schema\n : actionDef.output.schema({ entities }),\n },\n } as ActionDefinition<TActions[keyof TActions]>,\n ]\n )\n ) as { [K in keyof TActions]: ActionDefinition<TActions[K]> }\n\n this.tables = Object.fromEntries(\n Object.entries(props.tables ?? {}).map(\n ([tableName, tableDef]: [keyof TTables, NonNullable<(typeof props)['tables']>[keyof TTables]]) => [\n tableName,\n {\n ...tableDef,\n schema: typeof tableDef.schema === 'object' ? tableDef.schema : tableDef.schema({ entities }),\n } as TableDefinition<TTables[keyof TTables]>,\n ]\n )\n ) as { [K in keyof TTables]: TableDefinition<TTables[K]> }\n }\n\n public get metadata() {\n return { sdkVersion: SDK_VERSION } as const\n }\n\n /**\n * Returns a copy of the plugin definition where all entity references are\n * resolved to the base entity schema defined by the interface. This does not\n * include any additional properties that may be added to the entity by the\n * backing integration.\n *\n * If `intersectWithUnknownRecord` is `true` (default), the entity schemas\n * will be intersected with `z.record(z.string(), z.unknown())` to make it\n * explicit that the backing integration may have added additional properties.\n */\n public dereferenceEntities(\n { intersectWithUnknownRecord }: { intersectWithUnknownRecord?: boolean } = {\n intersectWithUnknownRecord: true,\n }\n ): this {\n const zuiReferenceMap = this._buildZuiReferenceMap(intersectWithUnknownRecord)\n\n return {\n ...this,\n configuration: this.configuration\n ? {\n ...this.configuration,\n schema: this._dereferenceZuiSchema(this.configuration.schema, zuiReferenceMap),\n }\n : undefined,\n events: this._dereferenceDefinitionSchemas(this.events, zuiReferenceMap),\n states: this._dereferenceDefinitionSchemas(this.states, zuiReferenceMap),\n tables: this._dereferenceDefinitionSchemas(this.tables, zuiReferenceMap),\n actions: this._dereferenceActionDefinitionSchemas(this.actions, zuiReferenceMap),\n } as typeof this\n }\n\n private _buildZuiReferenceMap(intersectWithUnknownRecord?: boolean): Record<string, z.ZodTypeAny> {\n return Object.fromEntries(\n (Object.entries(this.interfaces ?? {}) as [string, InterfacePackage][]).flatMap(\n ([interfaceAlias, interfacePackage]) =>\n Object.entries(interfacePackage.definition.entities ?? {}).map(([entityName, entityDefinition]) => [\n `interface:${interfaceAlias}/entities/${entityName}`,\n intersectWithUnknownRecord\n ? entityDefinition.schema.and(z.record(z.string(), z.unknown()))\n : entityDefinition.schema,\n ])\n )\n )\n }\n\n private _dereferenceZuiSchema(\n schema: ZuiObjectOrRefSchema,\n zuiReferenceMap: Record<string, z.ZodTypeAny>\n ): ZuiObjectSchema {\n return schema.dereference(zuiReferenceMap) as ZuiObjectSchema\n }\n\n private _dereferenceDefinitionSchemas<TDefinitionRecord extends Record<string, { schema: ZuiObjectOrRefSchema }>>(\n definitions: TDefinitionRecord | undefined,\n zuiReferenceMap: Record<string, z.ZodTypeAny>\n ): TDefinitionRecord {\n return Object.fromEntries(\n Object.entries(definitions ?? {}).map(([key, definition]) => [\n key,\n { ...definition, schema: this._dereferenceZuiSchema(definition.schema, zuiReferenceMap) },\n ])\n ) as TDefinitionRecord\n }\n\n private _dereferenceActionDefinitionSchemas<\n TDefinitionRecord extends Record<\n string,\n { input: { schema: ZuiObjectOrRefSchema }; output: { schema: ZuiObjectOrRefSchema } }\n >,\n >(definitions: TDefinitionRecord | undefined, zuiReferenceMap: Record<string, z.ZodTypeAny>): TDefinitionRecord {\n return Object.fromEntries(\n Object.entries(definitions ?? {}).map(([key, definition]) => [\n key,\n {\n ...definition,\n input: { schema: this._dereferenceZuiSchema(definition.input.schema, zuiReferenceMap) },\n output: { schema: this._dereferenceZuiSchema(definition.output.schema, zuiReferenceMap) },\n },\n ])\n ) as TDefinitionRecord\n }\n}\n", "import { Client } from '@botpress/client'\nimport { BotSpecificClient, EnumerateActions } from '../../bot'\nimport type * as typeUtils from '../../utils/type-utils'\nimport { BasePlugin, PluginRuntimeProps } from '../common'\nimport { ActionProxy } from './types'\n\nexport const proxyActions = <TPlugin extends BasePlugin>(\n client: BotSpecificClient<TPlugin> | Client,\n props: PluginRuntimeProps<TPlugin>\n): ActionProxy<TPlugin> =>\n new Proxy<Partial<ActionProxy<TPlugin>>>(\n {},\n {\n get: (_target, integrationOrInterfaceAlias: string) =>\n new Proxy(\n {},\n {\n get: (_target, actionName: string) => (input: Record<string, any>) => {\n const integrationAlias = (\n props.integrations[integrationOrInterfaceAlias] ?? props.interfaces[integrationOrInterfaceAlias]\n )?.integrationAlias\n const actualActionName =\n props.interfaces[integrationOrInterfaceAlias]?.actions?.[actionName]?.name ?? actionName\n\n return client\n .callAction({\n type: `${integrationAlias}:${actualActionName}` as typeUtils.Cast<\n keyof EnumerateActions<TPlugin>,\n string\n >,\n input,\n })\n .then((res) => res.output)\n },\n }\n ),\n }\n ) as ActionProxy<TPlugin>\n", "import type * as client from '@botpress/client'\nimport type { BotSpecificClient } from '../../bot'\nimport type { commonTypes } from '../../common'\nimport { createAsyncCollection } from '../../utils/api-paging-utils'\nimport type * as typeUtils from '../../utils/type-utils'\n\nimport type { BasePlugin, PluginRuntimeProps } from '../common'\nimport { prefixTagsIfNeeded, unprefixTagsOwnedByPlugin } from '../tag-prefixer'\nimport type { ActionableMessage, AnyPluginMessage, MessageFinder } from './types'\n\nexport const proxyMessages = <TPlugin extends BasePlugin>(props: {\n client: BotSpecificClient<TPlugin> | client.Client\n plugin?: PluginRuntimeProps<TPlugin>\n}): MessageFinder<TPlugin> => ({\n async getById({ id }) {\n const response = await (props.client.getMessage({ id }) as Promise<client.ClientOutputs['getMessage']>)\n return proxyMessage({ ...props, message: response.message as client.Message })\n },\n\n list(listProps) {\n return createAsyncCollection(({ nextToken }) =>\n props.client\n .listMessages({\n ...prefixTagsIfNeeded(listProps ?? {}, { alias: props.plugin?.alias }),\n nextToken,\n })\n .then(({ meta, messages }) => ({\n meta,\n items: messages.map((message) => proxyMessage({ ...props, message })),\n }))\n )\n },\n})\n\nexport const proxyMessage = <\n TPlugin extends BasePlugin,\n TMessage extends client.Message | AnyPluginMessage<TPlugin> = AnyPluginMessage<TPlugin>,\n>(props: {\n client: BotSpecificClient<TPlugin> | client.Client\n plugin?: PluginRuntimeProps<TPlugin>\n message: TMessage\n}): ActionableMessage<TPlugin, TMessage> => ({\n ...(unprefixTagsOwnedByPlugin(props.message, { alias: props.plugin?.alias }) as unknown as typeUtils.Merge<\n TMessage,\n {\n tags: commonTypes.ToTags<typeUtils.StringKeys<TPlugin['conversation']['tags']>>\n }\n >),\n\n async delete() {\n await props.client.deleteMessage({ id: props.message.id })\n },\n\n async update(data) {\n const { message: updatedMessage } = await props.client.updateMessage({\n ...prefixTagsIfNeeded(data, { alias: props.plugin?.alias }),\n id: props.message.id,\n })\n\n return proxyMessage({ ...props, message: updatedMessage as TMessage })\n },\n})\n", "import type * as client from '@botpress/client'\nimport type { BotSpecificClient } from '../../bot'\nimport type { commonTypes } from '../../common'\nimport { createAsyncCollection } from '../../utils/api-paging-utils'\nimport type * as typeUtils from '../../utils/type-utils'\nimport type { BasePlugin } from '../common'\nimport { prefixTagsIfNeeded, unprefixTagsOwnedByPlugin } from '../tag-prefixer'\nimport type {\n UserFinder,\n ActionableUser,\n BaseActionableUser,\n ActionableUserWithoutConversation,\n ActionableUserWithConversation,\n} from './types'\n\nexport const proxyUsers = <TPlugin extends BasePlugin>(props: {\n client: BotSpecificClient<TPlugin> | client.Client\n pluginAlias?: string\n}): UserFinder<TPlugin> => ({\n list(listProps) {\n return createAsyncCollection(({ nextToken }) =>\n props.client\n .listUsers({\n ...prefixTagsIfNeeded(listProps ?? {}, { alias: props.pluginAlias }),\n nextToken,\n })\n .then(({ meta, users }) => ({\n meta,\n items: users.map((user) => proxyUser({ ...props, conversationId: listProps?.conversationId, user })),\n }))\n )\n },\n\n async getById({ id }) {\n const response = await props.client.getUser({ id })\n return proxyUser({ ...props, user: response.user, conversationId: undefined })\n },\n})\n\nexport const proxyUser = <TPlugin extends BasePlugin, TConversationId extends string | undefined>(props: {\n client: BotSpecificClient<TPlugin> | client.Client\n conversationId?: TConversationId\n pluginAlias?: string\n user: client.User\n}): ActionableUser<TPlugin, TConversationId> => {\n const baseActionableUser = {\n ...(unprefixTagsOwnedByPlugin(props.user, { alias: props.pluginAlias }) as typeUtils.Merge<\n client.User,\n {\n tags: commonTypes.ToTags<typeUtils.StringKeys<TPlugin['user']['tags']>>\n }\n >),\n\n async update(data) {\n const { user: updatedUser } = await props.client.updateUser({\n ...prefixTagsIfNeeded(data, { alias: props.pluginAlias }),\n id: props.user.id,\n })\n\n return proxyUser({ ...props, user: updatedUser })\n },\n } satisfies BaseActionableUser<TPlugin, TConversationId>\n\n return (\n props.conversationId\n ? ({\n ...baseActionableUser,\n async removeFromConversation() {\n await props.client.removeParticipant({ id: props.conversationId!, userId: props.user.id })\n\n return proxyUser({\n ...props,\n conversationId: undefined,\n })\n },\n } satisfies ActionableUserWithConversation<TPlugin, TConversationId>)\n : ({\n ...baseActionableUser,\n async addToConversation({ conversationId }) {\n const { participant } = await props.client.addParticipant({ id: conversationId, userId: props.user.id })\n\n return proxyUser({\n ...props,\n user: participant,\n conversationId,\n })\n },\n } satisfies ActionableUserWithoutConversation<TPlugin, TConversationId>)\n ) as ActionableUser<TPlugin, TConversationId>\n}\n", "import type * as client from '@botpress/client'\nimport type { BotSpecificClient } from '../../bot'\n\nimport type { commonTypes } from '../../common'\nimport { type AsyncCollection, createAsyncCollection } from '../../utils/api-paging-utils'\nimport type * as typeUtils from '../../utils/type-utils'\nimport type { BasePlugin, PluginRuntimeProps } from '../common'\nimport { proxyMessage } from '../message-proxy/proxy'\nimport { prefixTagsIfNeeded, unprefixTagsOwnedByPlugin } from '../tag-prefixer'\nimport { proxyUser } from '../user-proxy'\nimport type { ActionableConversation, ConversationFinder } from './types'\n\nexport const proxyConversations = <TPlugin extends BasePlugin>(props: {\n client: BotSpecificClient<TPlugin> | client.Client\n plugin?: PluginRuntimeProps<TPlugin>\n}): ConversationFinder<TPlugin> =>\n new Proxy(\n {},\n {\n get: (_target, interfaceOrIntegrationAlias: string) =>\n new Proxy(\n {},\n {\n get: (_target2, channel: string) => {\n return {\n list(listProps): any {\n const integrationName =\n props.plugin?.interfaces[interfaceOrIntegrationAlias]?.integrationAlias ??\n props.plugin?.integrations[interfaceOrIntegrationAlias]?.integrationAlias\n\n const actualChannelName =\n props.plugin?.interfaces[interfaceOrIntegrationAlias]?.channels?.[channel]?.name ?? channel\n\n return createAsyncCollection(({ nextToken }) =>\n props.client\n .listConversations({\n ...prefixTagsIfNeeded(listProps ?? {}, { alias: props.plugin?.alias }),\n channel: actualChannelName === '*' ? undefined : actualChannelName,\n integrationName: integrationName === '*' ? undefined : integrationName,\n nextToken,\n })\n .then(({ meta, conversations }) => ({\n meta,\n items: conversations.map((conversation) => proxyConversation({ ...props, conversation })),\n }))\n ) satisfies AsyncCollection<ActionableConversation<TPlugin>>\n },\n\n async getById({ id }): Promise<any> {\n const response = await props.client.getConversation({ id })\n return proxyConversation({\n ...props,\n conversation: response.conversation,\n }) satisfies ActionableConversation<TPlugin>\n },\n } satisfies ConversationFinder<TPlugin>['*']['*']\n },\n }\n ),\n }\n ) as ConversationFinder<TPlugin>\n\nexport const proxyConversation = <TPlugin extends BasePlugin>(props: {\n client: BotSpecificClient<TPlugin> | client.Client\n plugin?: PluginRuntimeProps<TPlugin>\n conversation: client.Conversation\n}): ActionableConversation<TPlugin> => {\n // Client.GetMessageResponse conflicts with MessageResponse<TPlugin>:\n const vanillaClient = props.client as client.Client\n\n return {\n ...(unprefixTagsOwnedByPlugin(props.conversation, { alias: props.plugin?.alias }) as typeUtils.Merge<\n client.Conversation,\n { tags: commonTypes.ToTags<typeUtils.StringKeys<TPlugin['message']['tags']>> }\n >),\n\n async delete() {\n await vanillaClient.deleteConversation({ id: props.conversation.id })\n },\n\n async update(data) {\n const { conversation: updatedConversation } = await vanillaClient.updateConversation({\n ...prefixTagsIfNeeded(data, { alias: props.plugin?.alias }),\n id: props.conversation.id,\n })\n\n return proxyConversation({ ...props, conversation: updatedConversation })\n },\n\n async getMessage({ id }) {\n const response = await vanillaClient.getMessage({ id })\n return proxyMessage({ ...props, message: response.message })\n },\n\n async getOrCreateMessage(data) {\n const { message } = await vanillaClient.getOrCreateMessage({\n ...prefixTagsIfNeeded(data, { alias: props.plugin?.alias }),\n conversationId: props.conversation.id,\n })\n\n return proxyMessage({ ...props, message })\n },\n\n async createMessage(data) {\n const { message } = await vanillaClient.createMessage({\n ...prefixTagsIfNeeded(data, { alias: props.plugin?.alias }),\n conversationId: props.conversation.id,\n })\n\n return proxyMessage({ ...props, message })\n },\n\n listMessages(listProps) {\n return createAsyncCollection(({ nextToken }) =>\n vanillaClient\n .listMessages({\n ...prefixTagsIfNeeded(listProps ?? {}, { alias: props.plugin?.alias }),\n conversationId: props.conversation.id,\n nextToken,\n })\n .then(({ meta, messages }) => ({\n meta,\n items: messages.map((message) => proxyMessage({ ...props, message })),\n }))\n )\n },\n\n listParticipants() {\n return createAsyncCollection(({ nextToken }) =>\n vanillaClient\n .listParticipants({\n id: props.conversation.id,\n nextToken,\n })\n .then(({ meta, participants }) => ({\n meta,\n items: participants.map((user) =>\n proxyUser<TPlugin, string>({ ...props, user, conversationId: props.conversation.id })\n ),\n }))\n )\n },\n }\n}\n", "import type * as client from '@botpress/client'\nimport { BotSpecificClient } from '../../bot'\nimport * as consts from '../../consts'\nimport { type AsyncCollection, createAsyncCollection } from '../../utils/api-paging-utils'\nimport { BasePlugin, PluginRuntimeProps } from '../common'\nimport { EventProxy, EventSchedule, EventSender } from './types'\n\ntype _EventSenderProps = {\n client: BotSpecificClient<any> | client.Client\n eventName: string\n conversationId?: string\n userId?: string\n messageId?: string\n}\n\nclass _EventSender implements EventSender<object> {\n public constructor(private _props: _EventSenderProps) {}\n\n public async emit(eventPayload: object): Promise<client.Event> {\n const { conversationId, userId, messageId } = this._props\n const { event } = await this._props.client.createEvent({\n type: this._props.eventName,\n payload: eventPayload,\n conversationId,\n userId,\n messageId,\n })\n return event\n }\n\n public async schedule(eventPayload: object, schedule: EventSchedule): Promise<client.Event> {\n const { conversationId, userId, messageId } = this._props\n const { event } = await this._props.client.createEvent({\n type: this._props.eventName,\n payload: eventPayload,\n conversationId,\n userId,\n messageId,\n schedule,\n })\n return event\n }\n\n public withConversationId(conversationId: string): this {\n return new _EventSender({\n ...this._props,\n conversationId,\n }) as this\n }\n\n public withUserId(userId: string): this {\n return new _EventSender({\n ...this._props,\n userId,\n }) as this\n }\n\n public withMessageId(messageId: string): this {\n return new _EventSender({\n ...this._props,\n messageId,\n }) as this\n }\n\n public async getById(props: { id: string }): Promise<client.Event> {\n const response = await this._props.client.getEvent({ id: props.id })\n return response.event\n }\n\n public list(\n props?: Omit<client.ClientInputs['listEvents'], 'type' | 'nextToken' | 'conversationId' | 'messageId' | 'userId'>\n ): AsyncCollection<client.Event> {\n return createAsyncCollection(({ nextToken }) =>\n this._props.client\n .listEvents({\n ...props,\n type: this._props.eventName,\n conversationId: this._props.conversationId,\n userId: this._props.userId,\n messageId: this._props.messageId,\n nextToken,\n })\n .then(({ meta, events }) => ({\n meta,\n items: events,\n }))\n )\n }\n}\n\nexport const proxyEvents = <TPlugin extends BasePlugin>(\n client: BotSpecificClient<TPlugin> | client.Client,\n props: PluginRuntimeProps<TPlugin>\n): EventProxy<TPlugin> =>\n new Proxy(\n {},\n {\n get: (_target, eventName: string) => {\n const actualName =\n props.alias !== undefined ? `${props.alias}${consts.PLUGIN_PREFIX_SEPARATOR}${eventName}` : eventName\n return new _EventSender({\n client,\n eventName: actualName,\n })\n },\n }\n ) as EventProxy<TPlugin>\n", "import { Client } from '@botpress/client'\nimport { BotSpecificClient, StateType } from '../../bot'\nimport * as consts from '../../consts'\nimport { BasePlugin, PluginRuntimeProps } from '../common'\nimport { StateProxy, StateRepo } from './types'\n\nclass _StateRepo<TPayload extends object> implements StateRepo<TPayload> {\n public constructor(\n private _client: BotSpecificClient<any> | Client,\n private _stateType: StateType,\n private _stateName: string\n ) {}\n\n public async get(id: string): Promise<TPayload> {\n return await this._client\n .getState({\n type: this._stateType,\n name: this._stateName,\n id,\n })\n .then((r) => r.state.payload)\n }\n\n public async set(id: string, payload: TPayload, options?: { expiryMs: number }): Promise<void> {\n await this._client.setState({\n type: this._stateType,\n name: this._stateName,\n id,\n payload,\n expiry: options?.expiryMs,\n })\n return\n }\n\n public async getOrSet(id: string, payload: TPayload, options?: { expiryMs: number }): Promise<TPayload> {\n return await this._client\n .getOrSetState({\n type: this._stateType,\n name: this._stateName,\n id,\n payload,\n expiry: options?.expiryMs,\n })\n .then((r) => r.state.payload)\n }\n\n public async delete(id: string): Promise<void> {\n await this._client.setState({\n type: this._stateType,\n name: this._stateName,\n id,\n payload: null,\n })\n return\n }\n\n public async patch(id: string, payload: Partial<TPayload>): Promise<void> {\n await this._client.patchState({\n type: this._stateType,\n name: this._stateName,\n id,\n payload,\n })\n return\n }\n}\n\nexport const proxyStates = <TPlugin extends BasePlugin>(\n client: BotSpecificClient<TPlugin> | Client,\n props: PluginRuntimeProps<TPlugin>\n): StateProxy<TPlugin> =>\n new Proxy<Partial<StateProxy<TPlugin>>>(\n {},\n {\n get: (_target, stateType: StateType) => {\n return new Proxy(\n {},\n {\n get: (_target, stateName: string) => {\n const actualName =\n props.alias !== undefined ? `${props.alias}${consts.PLUGIN_PREFIX_SEPARATOR}${stateName}` : stateName\n return new _StateRepo(client, stateType, actualName)\n },\n }\n )\n },\n }\n ) as StateProxy<TPlugin>\n", "import type {\n MessageHandlersMap as BotMessageHandlersMap,\n EventHandlersMap as BotEventHandlersMap,\n StateExpiredHandlersMap as BotStateExpiredHandlersMap,\n HookHandlersMap as BotHookHandlersMap,\n WorkflowHandlersMap as BotWorkflowHandlersMap,\n ActionHandlersMap as BotActionHandlersMap,\n BotHandlers,\n BotSpecificClient,\n WorkflowUpdateType,\n} from '../bot'\nimport { WorkflowProxy, proxyWorkflows, wrapWorkflowInstance } from '../bot/workflow-proxy'\nimport * as utils from '../utils'\nimport { ActionProxy, proxyActions } from './action-proxy'\nimport { BasePlugin, PluginRuntimeProps } from './common'\nimport { ConversationFinder, proxyConversation, proxyConversations } from './conversation-proxy'\nimport { EventProxy, proxyEvents } from './event-proxy'\nimport { proxyMessage, proxyMessages } from './message-proxy'\nimport {\n ActionHandlers,\n MessageHandlers,\n EventHandlers,\n StateExpiredHandlers,\n HookHandlers,\n WorkflowHandlers,\n HookHandlersMap,\n WorkflowHandlersMap,\n OrderedMessageHandlersMap,\n OrderedEventHandlersMap,\n OrderedStateExpiredHandlersMap,\n OrderedHookHandlersMap,\n OrderedWorkflowHandlersMap,\n HookInputsWithoutInjectedProps,\n ActionHandlerPayloadsWithoutInjectedProps,\n StateExpiredPayloadsWithoutInjectedProps,\n MessagePayloadsWithoutInjectedProps,\n EventPayloadsWithoutInjectedProps,\n WorkflowPayloadsWithoutInjectedProps,\n InjectedHandlerProps,\n} from './server/types'\nimport { proxyStates, StateProxy } from './state-proxy'\nimport { unprefixTagsOwnedByPlugin } from './tag-prefixer'\nimport { proxyUser, proxyUsers, type UserFinder } from './user-proxy'\n\nexport type PluginImplementationProps<TPlugin extends BasePlugin = BasePlugin> = {\n actions: ActionHandlers<TPlugin>\n}\n\ntype Tools<TPlugin extends BasePlugin = BasePlugin> = InjectedHandlerProps<TPlugin>\n\nexport class PluginImplementation<TPlugin extends BasePlugin = BasePlugin> implements BotHandlers<TPlugin> {\n private _runtimeProps: PluginRuntimeProps<TPlugin> | undefined\n\n private _actionHandlers: ActionHandlers<any>\n private _messageHandlers: OrderedMessageHandlersMap<any> = {}\n private _eventHandlers: OrderedEventHandlersMap<any> = {}\n private _stateExpiredHandlers: OrderedStateExpiredHandlersMap<any> = {}\n private _hookHandlers: OrderedHookHandlersMap<any> = {\n before_incoming_event: {},\n before_incoming_message: {},\n before_outgoing_message: {},\n before_outgoing_call_action: {},\n before_incoming_call_action: {},\n after_incoming_event: {},\n after_incoming_message: {},\n after_outgoing_message: {},\n after_outgoing_call_action: {},\n after_incoming_call_action: {},\n }\n private _workflowHandlers: OrderedWorkflowHandlersMap<any> = {\n started: {},\n continued: {},\n timed_out: {},\n }\n\n private _registerOrder: number = 0\n\n public constructor(public readonly props: PluginImplementationProps<TPlugin>) {\n this._actionHandlers = props.actions\n }\n\n public initialize(props: PluginRuntimeProps<TPlugin>): this {\n this._runtimeProps = props\n return this\n }\n\n private get _runtime() {\n if (!this._runtimeProps) {\n throw new Error(\n 'Plugin not correctly initialized. This is likely because you access your plugin config outside of an handler.'\n )\n }\n return this._runtimeProps\n }\n\n private _getTools(client: BotSpecificClient<any>): Tools {\n const { configuration, interfaces, integrations, alias } = this._runtime\n const actions = proxyActions(client, this._runtime) as ActionProxy<BasePlugin>\n const states = proxyStates(client, this._runtime) as StateProxy<BasePlugin>\n const workflows = proxyWorkflows({ client, pluginAlias: this._runtime.alias }) as WorkflowProxy<BasePlugin>\n const events = proxyEvents(client, this._runtime) as EventProxy<BasePlugin>\n const users = proxyUsers({ client, pluginAlias: this._runtime.alias }) as UserFinder<BasePlugin>\n const conversations = proxyConversations({ client, plugin: this._runtime }) as ConversationFinder<BasePlugin>\n const messages = proxyMessages({ client, plugin: this._runtime })\n\n return {\n configuration,\n interfaces,\n integrations,\n actions,\n states,\n alias,\n workflows,\n events,\n users,\n conversations,\n messages,\n }\n }\n\n public get actionHandlers(): BotActionHandlersMap<TPlugin> {\n return new Proxy(\n {},\n {\n get: (_: unknown, actionName: string) => {\n actionName = this._stripAliasPrefix(actionName)\n const handler = this._actionHandlers[actionName]\n if (!handler) {\n return undefined\n }\n return utils.functions.setName(\n (input: utils.types.ValueOf<ActionHandlerPayloadsWithoutInjectedProps<TPlugin>>) =>\n handler({ ...input, ...this._getTools(input.client) }),\n handler.name\n )\n },\n }\n ) as BotActionHandlersMap<TPlugin>\n }\n\n public get messageHandlers(): BotMessageHandlersMap<TPlugin> {\n return new Proxy(\n {},\n {\n get: (_: unknown, messageName: string) => {\n messageName = this._stripAliasPrefix(messageName as string)\n const specificHandlers = messageName === '*' ? [] : (this._messageHandlers[messageName] ?? [])\n const globalHandlers = this._messageHandlers['*'] ?? []\n const allHandlers = utils.arrays\n .unique([...specificHandlers, ...globalHandlers])\n .sort((a, b) => a.order - b.order)\n return allHandlers.map(({ handler }) =>\n utils.functions.setName(\n (input: utils.types.ValueOf<MessagePayloadsWithoutInjectedProps<TPlugin>>) =>\n handler({\n ...input,\n user: proxyUser({\n ...input,\n conversationId: input.conversation.id,\n pluginAlias: this._runtime.alias,\n }),\n message: proxyMessage<BasePlugin>({\n ...input,\n plugin: this._runtime,\n message: input.message,\n }),\n conversation: proxyConversation({\n ...input,\n plugin: this._runtime,\n conversation: input.conversation,\n }),\n ...this._getTools(input.client),\n }),\n handler.name\n )\n )\n },\n }\n ) as BotMessageHandlersMap<TPlugin>\n }\n\n public get eventHandlers(): BotEventHandlersMap<TPlugin> {\n return new Proxy(\n {},\n {\n get: (_: unknown, eventName: string) => {\n eventName = this._stripAliasPrefix(eventName)\n\n // if prop is \"github:prOpened\", include both \"github:prOpened\" and \"creatable:itemCreated\"\n\n const specificHandlers = eventName === '*' ? [] : (this._eventHandlers[eventName] ?? [])\n\n const interfaceHandlers = Object.entries(this._eventHandlers)\n .filter(([e]) => this._eventResolvesTo(e, eventName))\n .flatMap(([, handlers]) => handlers ?? [])\n\n const globalHandlers = this._eventHandlers['*'] ?? []\n const allHandlers = utils.arrays\n .unique([...specificHandlers, ...interfaceHandlers, ...globalHandlers])\n .sort((a, b) => a.order - b.order)\n\n return allHandlers.map(({ handler }) =>\n utils.functions.setName(\n (input: utils.types.ValueOf<EventPayloadsWithoutInjectedProps<TPlugin>>) =>\n handler({ ...input, ...this._getTools(input.client) }),\n handler.name\n )\n )\n },\n }\n ) as BotEventHandlersMap<TPlugin>\n }\n\n public get stateExpiredHandlers(): BotStateExpiredHandlersMap<TPlugin> {\n return new Proxy(\n {},\n {\n get: (_: unknown, stateName: string) => {\n stateName = this._stripAliasPrefix(stateName)\n\n const specificHandlers = stateName === '*' ? [] : (this._stateExpiredHandlers[stateName] ?? [])\n const globalHandlers = this._stateExpiredHandlers['*'] ?? []\n const allHandlers = utils.arrays\n .unique([...specificHandlers, ...globalHandlers])\n .sort((a, b) => a.order - b.order)\n return allHandlers.map(({ handler }) =>\n utils.functions.setName(\n (input: utils.types.ValueOf<StateExpiredPayloadsWithoutInjectedProps<TPlugin>>) =>\n handler({ ...input, ...this._getTools(input.client) }),\n handler.name\n )\n )\n },\n }\n ) as BotStateExpiredHandlersMap<TPlugin>\n }\n\n public get hookHandlers(): BotHookHandlersMap<TPlugin> {\n return new Proxy(\n {},\n {\n get: (_, hookType: utils.types.StringKeys<HookHandlersMap<TPlugin>>) => {\n const hooks = this._hookHandlers[hookType]\n if (!hooks) {\n return undefined\n }\n return new Proxy(\n {},\n {\n get: (_: unknown, hookDataName: string) => {\n hookDataName = this._stripAliasPrefix(hookDataName)\n\n const specificHandlers = hookDataName === '*' ? [] : (hooks[hookDataName] ?? [])\n\n // for \"before_incoming_event\", \"after_incoming_event\" and other event related hooks\n const interfaceHandlers = Object.entries(hooks)\n .filter(([e]) => this._eventResolvesTo(e, hookDataName))\n .flatMap(([, handlers]) => handlers ?? [])\n\n const globalHandlers = hooks['*'] ?? []\n const handlers = utils.arrays\n .unique([...specificHandlers, ...interfaceHandlers, ...globalHandlers])\n .sort((a, b) => a.order - b.order)\n\n return handlers.map(({ handler }) =>\n utils.functions.setName(\n (input: utils.types.ValueOf<HookInputsWithoutInjectedProps<TPlugin>>['*']) =>\n handler({\n ...input,\n data: unprefixTagsOwnedByPlugin(input.data, { alias: this._runtime.alias }),\n ...this._getTools(input.client),\n }),\n handler.name\n )\n )\n },\n }\n )\n },\n }\n ) as BotHookHandlersMap<TPlugin>\n }\n\n public get workflowHandlers(): BotWorkflowHandlersMap<TPlugin> {\n return new Proxy(\n {},\n {\n get: (_, updateType: WorkflowUpdateType) => {\n const handlersOfType = this._workflowHandlers[updateType]\n if (!handlersOfType) {\n return undefined\n }\n\n return new Proxy(\n {},\n {\n get: (_, workflowName: string) => {\n const selfHandlers = handlersOfType[workflowName]?.sort((a, b) => a.order - b.order) ?? []\n\n return selfHandlers.map(({ handler }) =>\n utils.functions.setName(\n async (input: utils.types.ValueOf<WorkflowPayloadsWithoutInjectedProps<TPlugin>>) => {\n let currentWorkflowState = input.workflow\n await handler({\n ...input,\n workflow: wrapWorkflowInstance({\n ...input,\n workflow: currentWorkflowState,\n onWorkflowUpdate(newState) {\n currentWorkflowState = newState\n },\n pluginAlias: this._runtime.alias,\n }),\n ...this._getTools(input.client),\n })\n return currentWorkflowState\n },\n handler.name\n )\n )\n },\n }\n )\n },\n }\n ) as BotWorkflowHandlersMap<TPlugin>\n }\n\n public readonly on = {\n message: <T extends utils.types.StringKeys<MessageHandlers<TPlugin>>>(\n type: T,\n handler: MessageHandlers<TPlugin>[T]\n ): void => {\n this._messageHandlers[type] = utils.arrays.safePush(this._messageHandlers[type], {\n handler: handler as unknown as MessageHandlers<any>[string],\n order: this._registerOrder++,\n })\n },\n\n event: <T extends utils.types.StringKeys<EventHandlers<TPlugin>>>(\n type: T,\n handler: EventHandlers<TPlugin>[T]\n ): void => {\n this._eventHandlers[type] = utils.arrays.safePush(this._eventHandlers[type], {\n handler: handler as unknown as EventHandlers<any>[string],\n order: this._registerOrder++,\n })\n },\n\n stateExpired: <T extends utils.types.StringKeys<StateExpiredHandlers<TPlugin>>>(\n type: T,\n handler: StateExpiredHandlers<TPlugin>[T]\n ): void => {\n this._stateExpiredHandlers[type] = utils.arrays.safePush(this._stateExpiredHandlers[type], {\n handler: handler as unknown as StateExpiredHandlers<any>[string],\n order: this._registerOrder++,\n })\n },\n\n beforeIncomingEvent: <T extends utils.types.StringKeys<HookHandlersMap<TPlugin>['before_incoming_event']>>(\n type: T,\n handler: HookHandlers<TPlugin>['before_incoming_event'][T]\n ) => {\n this._hookHandlers.before_incoming_event[type] = utils.arrays.safePush(\n this._hookHandlers.before_incoming_event[type],\n {\n handler: handler as unknown as HookHandlers<any>['before_incoming_event'][string],\n order: this._registerOrder++,\n }\n )\n },\n\n beforeIncomingMessage: <T extends utils.types.StringKeys<HookHandlersMap<TPlugin>['before_incoming_message']>>(\n type: T,\n handler: HookHandlers<TPlugin>['before_incoming_message'][T]\n ) => {\n this._hookHandlers.before_incoming_message[type] = utils.arrays.safePush(\n this._hookHandlers.before_incoming_message[type],\n {\n handler: handler as unknown as HookHandlers<any>['before_incoming_message'][string],\n order: this._registerOrder++,\n }\n )\n },\n\n beforeOutgoingMessage: <T extends utils.types.StringKeys<HookHandlersMap<TPlugin>['before_outgoing_message']>>(\n type: T,\n handler: HookHandlers<TPlugin>['before_outgoing_message'][T]\n ) => {\n this._hookHandlers.before_outgoing_message[type] = utils.arrays.safePush(\n this._hookHandlers.before_outgoing_message[type],\n {\n handler: handler as unknown as HookHandlers<any>['before_outgoing_message'][string],\n order: this._registerOrder++,\n }\n )\n },\n\n beforeOutgoingCallAction: <\n T extends utils.types.StringKeys<HookHandlersMap<TPlugin>['before_outgoing_call_action']>,\n >(\n type: T,\n handler: HookHandlers<TPlugin>['before_outgoing_call_action'][T]\n ) => {\n this._hookHandlers.before_outgoing_call_action[type] = utils.arrays.safePush(\n this._hookHandlers.before_outgoing_call_action[type],\n {\n handler: handler as unknown as HookHandlers<any>['before_outgoing_call_action'][string],\n order: this._registerOrder++,\n }\n )\n },\n\n /**\n * # EXPERIMENTAL\n * This API is experimental and may change in the future.\n */\n beforeIncomingCallAction: <\n T extends utils.types.StringKeys<HookHandlersMap<TPlugin>['before_incoming_call_action']>,\n >(\n type: T,\n handler: HookHandlers<TPlugin>['before_incoming_call_action'][T]\n ) => {\n this._hookHandlers.before_incoming_call_action[type] = utils.arrays.safePush(\n this._hookHandlers.before_incoming_call_action[type],\n {\n handler: handler as unknown as HookHandlers<any>['before_incoming_call_action'][string],\n order: this._registerOrder++,\n }\n )\n },\n\n afterIncomingEvent: <T extends utils.types.StringKeys<HookHandlersMap<TPlugin>['after_incoming_event']>>(\n type: T,\n handler: HookHandlers<TPlugin>['after_incoming_event'][T]\n ) => {\n this._hookHandlers.after_incoming_event[type] = utils.arrays.safePush(\n this._hookHandlers.after_incoming_event[type],\n {\n handler: handler as unknown as HookHandlers<any>['after_incoming_event'][string],\n order: this._registerOrder++,\n }\n )\n },\n\n afterIncomingMessage: <T extends utils.types.StringKeys<HookHandlersMap<TPlugin>['after_incoming_message']>>(\n type: T,\n handler: HookHandlers<TPlugin>['after_incoming_message'][T]\n ) => {\n this._hookHandlers.after_incoming_message[type] = utils.arrays.safePush(\n this._hookHandlers.after_incoming_message[type],\n {\n handler: handler as unknown as HookHandlers<any>['after_incoming_message'][string],\n order: this._registerOrder++,\n }\n )\n },\n\n afterOutgoingMessage: <T extends utils.types.StringKeys<HookHandlersMap<TPlugin>['after_outgoing_message']>>(\n type: T,\n handler: HookHandlers<TPlugin>['after_outgoing_message'][T]\n ) => {\n this._hookHandlers.after_outgoing_message[type] = utils.arrays.safePush(\n this._hookHandlers.after_outgoing_message[type],\n {\n handler: handler as unknown as HookHandlers<any>['after_outgoing_message'][string],\n order: this._registerOrder++,\n }\n )\n },\n\n afterOutgoingCallAction: <T extends utils.types.StringKeys<HookHandlersMap<TPlugin>['after_outgoing_call_action']>>(\n type: T,\n handler: HookHandlers<TPlugin>['after_outgoing_call_action'][T]\n ) => {\n this._hookHandlers.after_outgoing_call_action[type] = utils.arrays.safePush(\n this._hookHandlers.after_outgoing_call_action[type],\n {\n handler: handler as unknown as HookHandlers<any>['after_outgoing_call_action'][string],\n order: this._registerOrder++,\n }\n )\n },\n\n /**\n * # EXPERIMENTAL\n * This API is experimental and may change in the future.\n */\n afterIncomingCallAction: <T extends utils.types.StringKeys<HookHandlersMap<TPlugin>['after_incoming_call_action']>>(\n type: T,\n handler: HookHandlers<TPlugin>['after_incoming_call_action'][T]\n ) => {\n this._hookHandlers.after_incoming_call_action[type] = utils.arrays.safePush(\n this._hookHandlers.after_incoming_call_action[type],\n {\n handler: handler as unknown as HookHandlers<any>['after_incoming_call_action'][string],\n order: this._registerOrder++,\n }\n )\n },\n\n /**\n * # EXPERIMENTAL\n * This API is experimental and may change in the future.\n */\n workflowStart: <T extends utils.types.StringKeys<WorkflowHandlersMap<TPlugin>['started']>>(\n type: T,\n handler: WorkflowHandlers<TPlugin>[T]\n ): void => {\n this._workflowHandlers.started[type] = utils.arrays.safePush(this._workflowHandlers.started[type], {\n handler: handler as unknown as WorkflowHandlers<any>[string],\n order: this._registerOrder++,\n })\n },\n\n /**\n * # EXPERIMENTAL\n * This API is experimental and may change in the future.\n */\n workflowContinue: <T extends utils.types.StringKeys<WorkflowHandlersMap<TPlugin>['continued']>>(\n type: T,\n handler: WorkflowHandlers<TPlugin>[T]\n ): void => {\n this._workflowHandlers.continued[type] = utils.arrays.safePush(this._workflowHandlers.continued[type], {\n handler: handler as unknown as WorkflowHandlers<any>[string],\n order: this._registerOrder++,\n })\n },\n\n /**\n * # EXPERIMENTAL\n * This API is experimental and may change in the future.\n */\n workflowTimeout: <T extends utils.types.StringKeys<WorkflowHandlersMap<TPlugin>['timed_out']>>(\n type: T,\n handler: WorkflowHandlers<TPlugin>[T]\n ): void => {\n this._workflowHandlers.timed_out[type] = utils.arrays.safePush(this._workflowHandlers.timed_out[type], {\n handler: handler as unknown as WorkflowHandlers<any>[string],\n order: this._registerOrder++,\n })\n },\n }\n\n /**\n * checks if the actual event resolves to the target event\n */\n private _eventResolvesTo = (actualEventRef: string, targetEventRef: string) => {\n const NAMESPACE_SEPARATOR = ':'\n const [pluginIfaceOrIntAlias, ifaceOrIntEvent] = actualEventRef.split(NAMESPACE_SEPARATOR)\n if (!pluginIfaceOrIntAlias || !ifaceOrIntEvent) {\n return false\n }\n\n // match '<plugin-iface-alias>:<iface-event>' => '<bot-int-alias>:<int-event>':\n const iface = this._runtime.interfaces[pluginIfaceOrIntAlias]\n\n if (\n iface &&\n targetEventRef === `${iface.integrationAlias}${NAMESPACE_SEPARATOR}${iface?.events?.[ifaceOrIntEvent]?.name}`\n ) {\n return true\n }\n\n const integration = this._runtime.integrations[pluginIfaceOrIntAlias]\n\n // match '<plugin-int-alias>:<int-event>' => '<bot-int-alias>:<int-event>':\n if (integration && targetEventRef === `${integration.integrationAlias}${NAMESPACE_SEPARATOR}${ifaceOrIntEvent}`) {\n return true\n }\n\n return false\n }\n\n private _stripAliasPrefix = (prop: string) => {\n const { alias } = this._runtime\n if (!alias) {\n return prop\n }\n const prefix = `${alias}#`\n return prop.startsWith(prefix) ? prop.slice(prefix.length) : prop\n }\n}\n", "import * as semver from 'semver'\nimport { Package } from './package'\nimport { PluginDefinition } from './plugin/definition'\n\ntype GenericPackage = Exclude<Package, PluginDefinition>\n\n/**\n * Returns the major version range for a given package.\n * Version utility helpers are only intended to be used with plugins.\n **/\nexport function allWithinMajorOf<T extends GenericPackage>(pkg: T): T & { version: string } {\n const major = semver.major(pkg.version)\n return { ...pkg, version: `>=${major}.0.0 <${major + 1}.0.0` }\n}\n\n/**\n * Returns the minor version range for a given package.\n * Version utility helpers are only intended to be used with plugins.\n **/\nexport function allWithinMinorOf<T extends GenericPackage>(pkg: T): T & { version: string } {\n const major = semver.major(pkg.version)\n const minor = semver.minor(pkg.version)\n return {\n ...pkg,\n version: `>=${major}.${minor}.0 <${major}.${minor + 1}.0`,\n }\n}\n"],
|
|
4
|
+
"sourcesContent": ["export * as messages from './message'\nexport * from './public-consts'\nexport * from './serve'\nexport * from './zui'\n\nexport {\n //\n isApiError,\n RuntimeError,\n} from '@botpress/client'\n\nexport {\n DefaultIntegration,\n IntegrationDefinition,\n IntegrationDefinitionProps,\n IntegrationImplementation as Integration,\n IntegrationImplementationProps as IntegrationProps,\n IntegrationLogger,\n IntegrationSpecificClient,\n TagDefinition,\n ConfigurationDefinition,\n AdditionalConfigurationDefinition,\n EventDefinition,\n ChannelDefinition,\n MessageDefinition,\n ActionDefinition,\n StateDefinition,\n UserDefinition,\n SecretDefinition,\n EntityDefinition,\n} from './integration'\n\nexport {\n /**\n * @deprecated use Context exported from '.botpress' instead\n */\n IntegrationContext,\n} from './integration/server'\n\nexport {\n DefaultBot,\n BotDefinition,\n BotDefinitionProps,\n BotImplementation as Bot,\n BotImplementationProps as BotProps,\n BotSpecificClient,\n // NOTE: BotHandlers is needed by the Studio, and InjectedBotHandlers is\n // needed for the code generation in the CLI\n BotHandlers,\n InjectedBotHandlers,\n TagDefinition as BotTagDefinition,\n StateType as BotStateType,\n StateDefinition as BotStateDefinition,\n RecurringEventDefinition as BotRecurringEventDefinition,\n EventDefinition as BotEventDefinition,\n ConfigurationDefinition as BotConfigurationDefinition,\n UserDefinition as BotUserDefinition,\n ConversationDefinition as BotConversationDefinition,\n MessageDefinition as BotMessageDefinition,\n ActionDefinition as BotActionDefinition,\n TableDefinition as BotTableDefinition,\n WorkflowDefinition as BotWorkflowDefinition,\n BotLogger,\n} from './bot'\n\nexport {\n //\n InterfaceDefinition,\n InterfaceDefinitionProps,\n} from './interface'\n\nexport {\n //\n DefaultPlugin,\n PluginDefinition,\n PluginDefinitionProps,\n PluginImplementation as Plugin,\n PluginImplementationProps as PluginProps,\n PluginRuntimeProps,\n PluginHandlers,\n InjectedPluginHandlers,\n} from './plugin'\n\nexport * as version from './version-utils'\n\nexport {\n //\n IntegrationPackage,\n InterfacePackage,\n PluginPackage,\n Package,\n} from './package'\n", "import { z } from './zui'\n\nconst NonEmptyString = z.string().min(1)\n\nconst textMessageSchema = z.object({\n text: NonEmptyString,\n})\n\n/**\n * @deprecated\n */\nconst markdownMessageSchema = z.object({\n markdown: NonEmptyString,\n})\n\nconst imageMessageSchema = z.object({\n imageUrl: NonEmptyString,\n})\n\nconst audioMessageSchema = z.object({\n audioUrl: NonEmptyString,\n})\n\nconst videoMessageSchema = z.object({\n videoUrl: NonEmptyString,\n})\n\nconst fileMessageSchema = z.object({\n fileUrl: NonEmptyString,\n title: NonEmptyString.optional(),\n})\n\nconst locationMessageSchema = z.object({\n latitude: z.number(),\n longitude: z.number(),\n address: z.string().optional(),\n title: z.string().optional(),\n})\n\nconst cardSchema = z.object({\n title: NonEmptyString,\n subtitle: NonEmptyString.optional(),\n imageUrl: NonEmptyString.optional(),\n actions: z.array(\n z.object({\n action: z.enum(['postback', 'url', 'say']),\n label: NonEmptyString,\n value: NonEmptyString,\n })\n ),\n})\n\nconst choiceSchema = z.object({\n text: NonEmptyString,\n options: z.array(\n z.object({\n label: NonEmptyString,\n value: NonEmptyString,\n })\n ),\n})\n\nconst carouselSchema = z.object({\n items: z.array(cardSchema),\n})\n\nconst blocItemSchema = z.union([\n z.object({ type: z.literal('text'), payload: textMessageSchema }),\n z.object({ type: z.literal('image'), payload: imageMessageSchema }),\n z.object({ type: z.literal('audio'), payload: audioMessageSchema }),\n z.object({ type: z.literal('video'), payload: videoMessageSchema }),\n z.object({ type: z.literal('file'), payload: fileMessageSchema }),\n z.object({ type: z.literal('location'), payload: locationMessageSchema }),\n])\n\nconst blocSchema = z.object({\n items: z.array(blocItemSchema),\n})\n\n/**\n * @deprecated use `text` instead\n */\nexport const markdown = {\n schema: markdownMessageSchema,\n}\n\n/**\n * Bloc message that still includes markdown as an item\n *\n * @deprecated use `bloc` instead\n */\nexport const markdownBloc = {\n schema: z.object({\n items: z.array(\n z.union([\n //\n ...blocItemSchema.options,\n z.object({ type: z.literal('markdown'), payload: markdownMessageSchema }),\n ])\n ),\n }),\n}\n\nexport const defaults = {\n text: { schema: textMessageSchema },\n image: { schema: imageMessageSchema },\n audio: { schema: audioMessageSchema },\n video: { schema: videoMessageSchema },\n file: { schema: fileMessageSchema },\n location: { schema: locationMessageSchema },\n carousel: { schema: carouselSchema },\n card: { schema: cardSchema },\n dropdown: { schema: choiceSchema },\n choice: { schema: choiceSchema },\n bloc: { schema: blocSchema },\n} as const // should use satisfies operator but this works for older versions of TS\n", "import { JSONSchema7 } from 'json-schema'\nimport { util } from '../../z/types/utils'\nimport z from '../../z'\nimport { ZuiExtensionObject } from '../../ui/types'\n\n/**\n * Definitions:\n *\n * Mutiple zui schemas map to the same JSON schema; undefined/never, any/unknown, union/discriminated-union\n * Adding some ZodDef to the ZuiExtension allows us to differentiate between them\n */\ntype NullableDef = util.Satisfies<{ typeName: z.ZodFirstPartyTypeKind.ZodNullable }, Partial<z.ZodNullableDef>>\ntype OptionalDef = util.Satisfies<{ typeName: z.ZodFirstPartyTypeKind.ZodOptional }, Partial<z.ZodOptionalDef>>\ntype UndefinedDef = util.Satisfies<{ typeName: z.ZodFirstPartyTypeKind.ZodUndefined }, Partial<z.ZodUndefinedDef>>\ntype UnknownDef = util.Satisfies<{ typeName: z.ZodFirstPartyTypeKind.ZodUnknown }, Partial<z.ZodUnknownDef>>\ntype DiscriminatedUnionDef = util.Satisfies<\n { typeName: z.ZodFirstPartyTypeKind.ZodDiscriminatedUnion; discriminator?: string },\n Partial<z.ZodDiscriminatedUnionDef>\n>\n\n/**\n * ZuiJSONSchema:\n *\n * A ZUI flavored subset of JSONSchema7\n */\n\ntype ZuiExtension<Def extends Partial<z.ZodDef> = {}> = { def?: Def } & ZuiExtensionObject\ntype JsonData = string | number | boolean | null | JsonData[] | { [key: string]: JsonData }\ntype BaseZuiJSONSchema<Def extends Partial<z.ZodDef> = {}> = util.Satisfies<\n {\n description?: string\n readOnly?: boolean\n default?: JsonData\n ['x-zui']?: ZuiExtension<Def>\n },\n JSONSchema7\n>\n\n// From the JSON Schema spec: \"Format is not limited to a specific set of valid values or types. Users may define their own custom keywords\"\ntype _ZodSpecificStringFormat = 'cuid' | 'cuid2' | 'emoji' | 'ulid'\ntype _JSONSchemaStringFormat = 'date-time' | 'email' | 'ipv4' | 'ipv6' | 'uri' | 'uuid'\ntype _StringSchema = util.Satisfies<\n {\n type: 'string'\n pattern?: string\n format?: _JSONSchemaStringFormat | _ZodSpecificStringFormat\n minLength?: number\n maxLength?: number\n },\n JSONSchema7\n>\ntype _ZodSpecificNumberFormat = 'finite'\ntype _NumberSchema = util.Satisfies<\n {\n type: 'number' | 'integer'\n minimum?: number\n exclusiveMinimum?: number\n maximum?: number\n exclusiveMaximum?: number\n multipleOf?: number\n format?: _ZodSpecificNumberFormat\n },\n JSONSchema7\n>\ntype _BooleanSchema = util.Satisfies<{ type: 'boolean' }, JSONSchema7>\ntype _NullSchema = util.Satisfies<{ type: 'null' }, JSONSchema7>\ntype _UndefinedSchema = util.Satisfies<{ not: true }, JSONSchema7>\ntype _NeverSchema = util.Satisfies<{ not: true }, JSONSchema7>\ntype _ArraySchema = util.Satisfies<{ type: 'array'; items: Schema; minItems?: number; maxItems?: number }, JSONSchema7>\ntype _UnionSchema = util.Satisfies<{ anyOf: Schema[] }, JSONSchema7>\ntype _DiscriminatedUnionSchema = util.Satisfies<{ anyOf: Schema[] }, JSONSchema7>\ntype _IntersectionSchema = util.Satisfies<{ allOf: Schema[] }, JSONSchema7>\ntype _SetSchema = util.Satisfies<\n { type: 'array'; items: Schema; uniqueItems: true; minItems?: number; maxItems?: number },\n JSONSchema7\n>\ntype _EnumSchema = util.Satisfies<{ type: 'string'; enum: string[] }, JSONSchema7>\ntype _RefSchema = util.Satisfies<{ $ref: string }, JSONSchema7>\ntype _ObjectSchema = util.Satisfies<\n {\n type: 'object'\n properties: { [key: string]: Schema }\n additionalProperties?: Schema | boolean\n required?: string[]\n },\n JSONSchema7\n>\ntype _TupleSchema = util.Satisfies<{ type: 'array'; items: Schema[]; additionalItems?: Schema }, JSONSchema7>\ntype _RecordSchema = util.Satisfies<{ type: 'object'; additionalProperties: Schema }, JSONSchema7>\ntype _LiteralStringSchema = util.Satisfies<{ type: 'string'; const: string }, JSONSchema7>\ntype _LiteralNumberSchema = util.Satisfies<{ type: 'number'; const: number }, JSONSchema7>\ntype _LiteralBooleanSchema = util.Satisfies<{ type: 'boolean'; const: boolean }, JSONSchema7>\ntype _OptionalSchema = util.Satisfies<{ anyOf: [Schema, UndefinedSchema] }, JSONSchema7>\ntype _NullableSchema = util.Satisfies<{ anyOf: [Schema, NullSchema] }, JSONSchema7>\n\nexport type StringSchema = _StringSchema & BaseZuiJSONSchema\nexport type NumberSchema = _NumberSchema & BaseZuiJSONSchema\nexport type BooleanSchema = _BooleanSchema & BaseZuiJSONSchema\nexport type NullSchema = _NullSchema & BaseZuiJSONSchema\nexport type UndefinedSchema = _UndefinedSchema & BaseZuiJSONSchema<UndefinedDef>\nexport type NeverSchema = _NeverSchema & BaseZuiJSONSchema\nexport type AnySchema = BaseZuiJSONSchema\nexport type UnknownSchema = BaseZuiJSONSchema<UnknownDef>\nexport type ArraySchema = _ArraySchema & BaseZuiJSONSchema\nexport type UnionSchema = _UnionSchema & BaseZuiJSONSchema\nexport type DiscriminatedUnionSchema = _DiscriminatedUnionSchema & BaseZuiJSONSchema<DiscriminatedUnionDef>\nexport type IntersectionSchema = _IntersectionSchema & BaseZuiJSONSchema\nexport type SetSchema = _SetSchema & BaseZuiJSONSchema\nexport type EnumSchema = _EnumSchema & BaseZuiJSONSchema\nexport type RefSchema = _RefSchema & BaseZuiJSONSchema\nexport type ObjectSchema = _ObjectSchema & BaseZuiJSONSchema\nexport type TupleSchema = _TupleSchema & BaseZuiJSONSchema\nexport type RecordSchema = _RecordSchema & BaseZuiJSONSchema\nexport type LiteralStringSchema = _LiteralStringSchema & BaseZuiJSONSchema\nexport type LiteralNumberSchema = _LiteralNumberSchema & BaseZuiJSONSchema\nexport type LiteralBooleanSchema = _LiteralBooleanSchema & BaseZuiJSONSchema\nexport type OptionalSchema = _OptionalSchema & BaseZuiJSONSchema<OptionalDef>\nexport type NullableSchema = _NullableSchema & BaseZuiJSONSchema<NullableDef>\nexport type LiteralSchema = LiteralStringSchema | LiteralNumberSchema | LiteralBooleanSchema\n\n/**\n * Zui flavored JSON Schema; a subset of JSONSchema7 that includes Zui extensions\n */\nexport type Schema =\n | StringSchema\n | NumberSchema\n | BooleanSchema\n | UndefinedSchema\n | NullSchema\n | AnySchema\n | UnknownSchema\n | NeverSchema\n | ArraySchema\n | ObjectSchema\n | UnionSchema\n | DiscriminatedUnionSchema\n | IntersectionSchema\n | TupleSchema\n | RecordSchema\n | SetSchema\n | LiteralSchema\n | EnumSchema\n | RefSchema\n | OptionalSchema\n | NullableSchema\n", "export { fromJSONSchemaLegacy } from './zui-from-json-schema-legacy'\nexport { fromJSONSchema } from './zui-from-json-schema'\nexport { fromObject } from './zui-from-object'\n\nexport { toJSONSchemaLegacy } from './zui-to-json-schema-legacy'\nexport { toJSONSchema } from './zui-to-json-schema'\nexport { toTypescriptType, type TypescriptGenerationOptions } from './zui-to-typescript-type'\nexport { toTypescriptSchema } from './zui-to-typescript-schema'\n\nexport * as errors from './common/errors'\n", "import {\n custom,\n CustomParams,\n INVALID,\n ZodAny,\n ZodArray,\n ZodBigInt,\n ZodBoolean,\n ZodBranded,\n ZodCatch,\n ZodDate,\n ZodDefault,\n ZodDiscriminatedUnion,\n ZodEffects,\n ZodEnum,\n ZodFunction,\n ZodIntersection,\n ZodLazy,\n ZodLiteral,\n ZodMap,\n ZodNaN,\n ZodNativeEnum,\n ZodNever,\n ZodNull,\n ZodNullable,\n ZodNumber,\n ZodObject,\n ZodOptional,\n ZodPipeline,\n ZodPromise,\n ZodReadonly,\n ZodRecord,\n ZodRef,\n ZodSet,\n ZodString,\n ZodSymbol,\n ZodTuple,\n ZodType,\n ZodUndefined,\n ZodUnion,\n ZodUnknown,\n ZodVoid,\n} from './types'\n\nexport { ZodType as Schema, ZodType as ZodSchema }\n\nexport const late = {\n object: ZodObject.lazycreate,\n}\n\nexport type ZodFirstPartySchemaTypes =\n | ZodString\n | ZodNumber\n | ZodNaN\n | ZodBigInt\n | ZodBoolean\n | ZodDate\n | ZodUndefined\n | ZodNull\n | ZodAny\n | ZodUnknown\n | ZodNever\n | ZodVoid\n | ZodArray\n | ZodObject\n | ZodUnion\n | ZodDiscriminatedUnion\n | ZodIntersection\n | ZodTuple\n | ZodRecord\n | ZodMap\n | ZodSet\n | ZodFunction\n | ZodLazy\n | ZodLiteral\n | ZodEnum\n | ZodEffects\n | ZodNativeEnum\n | ZodOptional\n | ZodNullable\n | ZodDefault\n | ZodCatch\n | ZodPromise\n | ZodBranded\n | ZodPipeline\n | ZodReadonly\n | ZodSymbol\n | ZodRef\n\n// requires TS 4.4+\nabstract class Class {\n constructor(..._: any[]) {}\n}\nconst instanceOfType = <T extends typeof Class>(\n // const instanceOfType = <T extends new (...args: any[]) => any>(\n cls: T,\n params: CustomParams = {\n message: `Input not instance of ${cls.name}`,\n },\n) => custom<InstanceType<T>>((data) => data instanceof cls, params)\n\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 refType = ZodRef.create\nconst readonlyType = ZodReadonly.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 defaultType = ZodDefault.create\nconst preprocessType = ZodEffects.createWithPreprocess\nconst pipelineType = ZodPipeline.create\nconst ostring = () => stringType().optional()\nconst onumber = () => numberType().optional()\nconst oboolean = () => booleanType().optional()\n\nexport const coerce = {\n string: ((arg) => ZodString.create({ ...arg, coerce: true })) as (typeof ZodString)['create'],\n number: ((arg) => ZodNumber.create({ ...arg, coerce: true })) as (typeof ZodNumber)['create'],\n boolean: ((arg) =>\n ZodBoolean.create({\n ...arg,\n coerce: true,\n })) as (typeof ZodBoolean)['create'],\n bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })) as (typeof ZodBigInt)['create'],\n date: ((arg) => ZodDate.create({ ...arg, coerce: true })) as (typeof ZodDate)['create'],\n}\n\nexport {\n anyType as any,\n arrayType as array,\n bigIntType as bigint,\n booleanType as boolean,\n dateType as date,\n defaultType as default,\n discriminatedUnionType as discriminatedUnion,\n effectsType as effect,\n enumType as enum,\n functionType as function,\n instanceOfType as instanceof,\n intersectionType as intersection,\n lazyType as lazy,\n literalType as literal,\n mapType as map,\n nanType as nan,\n nativeEnumType as nativeEnum,\n neverType as never,\n nullType as null,\n nullableType as nullable,\n numberType as number,\n objectType as object,\n oboolean,\n onumber,\n optionalType as optional,\n ostring,\n pipelineType as pipeline,\n preprocessType as preprocess,\n promiseType as promise,\n recordType as record,\n refType as ref,\n readonlyType as readonly,\n setType as set,\n strictObjectType as strictObject,\n stringType as string,\n symbolType as symbol,\n effectsType as transformer,\n tupleType as tuple,\n undefinedType as undefined,\n unionType as union,\n unknownType as unknown,\n voidType as void,\n}\n\nexport const NEVER = INVALID as never\n\nexport * from './types'\nexport * from './types/error'\nexport * from './types/utils'\nexport * from './types/utils/parseUtil'\nexport * from './types/utils/typeAliases'\nexport * from './extensions'\n", "export const zuiKey = 'x-zui' as const\n", "import { Primitive } from '../../z'\n\n/**\n * @returns a valid typescript literal type usable in `type MyType = ${x}`\n */\nexport function primitiveToTypscriptLiteralType(x: Primitive): string {\n if (typeof x === 'symbol') {\n return 'symbol' // there's no way to represent a symbol literal in a single line with typescript\n }\n if (typeof x === 'bigint') {\n const str = x.toString()\n return `${str}n`\n }\n return primitiveToTypescriptValue(x)\n}\n\n/**\n * @returns a valid typescript primitive value usable in `const myValue = ${x}`\n */\nexport function primitiveToTypescriptValue(x: Primitive): string {\n if (typeof x === 'undefined') {\n return 'undefined'\n }\n if (typeof x === 'symbol') {\n if (x.description) {\n return `Symbol(${primitiveToTypescriptValue(x.description)})`\n }\n return 'Symbol()'\n }\n if (typeof x === 'bigint') {\n const str = x.toString()\n return `BigInt(${str})`\n }\n if (typeof x === 'string') {\n return escapeString(x)\n }\n\n return JSON.stringify(x)\n}\n\n/**\n * @returns a valid typescript value usable in `const myValue = ${x}`\n */\nexport function unknownToTypescriptValue(x: unknown): string {\n if (typeof x === 'undefined') {\n return 'undefined'\n }\n // will fail or not behave as expected if x contains a symbol or a bigint\n return JSON.stringify(x)\n}\n\n/**\n * @returns a valid typescript value usable in `const myValue = ${x}`\n */\nexport const arrayOfUnknownToTypescriptArray = (arr: Primitive[], asConst?: boolean) => {\n const maybeAsConst = asConst ? ' as const' : ''\n\n return `[ ${arr.map(unknownToTypescriptValue).join(', ')} ]${maybeAsConst}`\n}\n\n/**\n * @returns a valid typescript value usable in `const myValue = ${x}`\n */\nexport const recordOfUnknownToTypescriptRecord = (\n record: Record<string | number | symbol, unknown>,\n asConst?: boolean,\n) => {\n const entries = Object.entries(record)\n const maybeAsConst = asConst ? ' as const' : ''\n\n return `{ ${entries\n .map(([key, value]) => `${toPropertyKey(key)}: ${unknownToTypescriptValue(value)}`)\n .join(', ')} }${maybeAsConst}`\n}\n\nexport const toPropertyKey = (key: string) => {\n if (/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(key)) {\n return key\n }\n\n return primitiveToTypescriptValue(key)\n}\n\nconst capitalize = (s: string): string => s.charAt(0).toUpperCase() + s.slice(1)\n\nexport const toTypeArgumentName = (name: string) => {\n const nonAlphaNumeric = /[^a-zA-Z0-9_]/g\n const tokens = name\n .split(nonAlphaNumeric)\n .map(capitalize)\n .filter((t) => !!t)\n return tokens.join('')\n}\n\nconst trimEmptyLinesInPlace = (lines: string[]) => {\n while (lines.length && !lines[0]?.trim()) {\n lines.shift()\n }\n\n while (lines.length && !lines[lines.length - 1]!.trim()) {\n lines.pop()\n }\n}\n\nexport const getMultilineComment = (description?: string) => {\n // Remove too many empty lines (more than 2)\n description = description?.replace(/(\\n(\\s*)?){3,}/g, '\\n\\n')\n\n const ensureLineStartsWithAsterisk = (line: string) => (line.startsWith('* ') ? ` ${line}` : ` * ${line}`)\n const escapeCommentEnd = (line: string) => line.replace(/\\*\\//g, '*\\\\/')\n\n const descLines = (description ?? '').split('\\n').map((line) => line.trim())\n\n trimEmptyLinesInPlace(descLines)\n\n if (descLines.length) {\n descLines[0] = descLines[0]!.replace(/^\\/\\*\\*?/, '')\n descLines[descLines.length - 1] = descLines[descLines.length - 1]!.replace(/\\*\\/$/, '')\n }\n\n trimEmptyLinesInPlace(descLines)\n\n return descLines.length === 0\n ? ''\n : descLines.length === 1\n ? `/** ${escapeCommentEnd(descLines[0]!)} */`\n : `/**\\n${descLines.map(ensureLineStartsWithAsterisk).map(escapeCommentEnd).join('\\n')}\\n */`\n}\n\nexport function escapeString(str: string): string {\n if (typeof str !== 'string') {\n return ''\n }\n\n // Use String.raw to get the raw string with escapes preserved\n const rawStr = String.raw`${str}`\n\n // Escape newlines and other special characters\n const escapedStr = rawStr.replace(/\\\\/g, '\\\\\\\\').replace(/\\n/g, '\\\\n').replace(/\"/g, '\\\\\"').replace(/'/g, \"\\\\'\")\n\n // Determine the appropriate quote style\n if (escapedStr.includes('`')) {\n return `\"${escapedStr}\"`\n } else if (escapedStr.includes(\"'\")) {\n return `\"${escapedStr}\"`\n } else {\n return `'${escapedStr}'`\n }\n}\n", "import { JSONSchema7 } from 'json-schema'\nimport { ZodFirstPartyTypeKind } from '../../z'\n\ntype Transform =\n | 'json-schema-to-zui'\n | 'object-to-zui'\n | 'zui-to-json-schema'\n | 'zui-to-typescript-schema'\n | 'zui-to-typescript-type'\n\nexport abstract class ZuiTransformError extends Error {\n public constructor(\n public readonly transform: Transform,\n message?: string,\n ) {\n super(message)\n }\n}\n\n// json-schema-to-zui-error\nexport class JSONSchemaToZuiError extends ZuiTransformError {\n public constructor(message?: string) {\n super('json-schema-to-zui', message)\n }\n}\n\n// object-to-zui-error\nexport class ObjectToZuiError extends ZuiTransformError {\n public constructor(message?: string) {\n super('object-to-zui', message)\n }\n}\n\n// zui-to-json-schema-error\nexport class ZuiToJSONSchemaError extends ZuiTransformError {\n public constructor(message?: string) {\n super('zui-to-json-schema', message)\n }\n}\nexport class UnsupportedZuiToJSONSchemaError extends ZuiToJSONSchemaError {\n public constructor(type: ZodFirstPartyTypeKind, { suggestedAlternative }: { suggestedAlternative?: string } = {}) {\n super(\n `Zod type ${type} cannot be transformed to JSON Schema.` +\n (suggestedAlternative ? ` Suggested alternative: ${suggestedAlternative}` : ''),\n )\n }\n}\nexport class UnsupportedZuiCheckToJSONSchemaError extends ZuiToJSONSchemaError {\n public constructor({ zodType, checkKind }: { zodType: ZodFirstPartyTypeKind; checkKind: string }) {\n super(`Zod check .${checkKind}() of type ${zodType} cannot be transformed to JSON Schema.`)\n }\n}\n\nexport class UnsupportedJSONSchemaToZuiError extends JSONSchemaToZuiError {\n public constructor(schema: JSONSchema7) {\n super(`JSON Schema ${JSON.stringify(schema)} cannot be transformed to ZUI type.`)\n }\n}\n\n// zui-to-typescript-schema-error\nexport class ZuiToTypescriptSchemaError extends ZuiTransformError {\n public constructor(message?: string) {\n super('zui-to-typescript-schema', message)\n }\n}\nexport class UnsupportedZuiToTypescriptSchemaError extends ZuiToTypescriptSchemaError {\n public constructor(type: ZodFirstPartyTypeKind) {\n super(`Zod type ${type} cannot be transformed to TypeScript schema.`)\n }\n}\n\n// zui-to-typescript-type-error\nexport class ZuiToTypescriptTypeError extends ZuiTransformError {\n public constructor(message?: string) {\n super('zui-to-typescript-type', message)\n }\n}\nexport class UnsupportedZuiToTypescriptTypeError extends ZuiToTypescriptTypeError {\n public constructor(type: ZodFirstPartyTypeKind) {\n super(`Zod type ${type} cannot be transformed to TypeScript type.`)\n }\n}\n\nexport class UntitledDeclarationError extends ZuiToTypescriptTypeError {\n public constructor() {\n super('Schema must have a title to be transformed to a TypeScript type with a declaration.')\n }\n}\n\nexport class UnrepresentableGenericError extends ZuiToTypescriptTypeError {\n public constructor() {\n super(`${ZodFirstPartyTypeKind.ZodRef} can only be transformed to a TypeScript type with a \"type\" declaration.`)\n }\n}\n", "import z, { util } from '../../z'\nimport {\n primitiveToTypescriptValue,\n getMultilineComment,\n toPropertyKey,\n toTypeArgumentName,\n primitiveToTypscriptLiteralType,\n} from '../common/utils'\nimport * as errors from '../common/errors'\n\nconst Primitives = [\n 'string',\n 'number',\n 'boolean',\n 'unknown',\n 'void',\n 'any',\n 'null',\n 'undefined',\n 'never',\n 'bigint',\n 'symbol',\n 'object',\n]\n\nconst LARGE_DECLARATION_LINES = 5\n\nconst isPrimitive = (type: string) => Primitives.includes(type)\nconst isArrayOfPrimitives = (type: string) => Primitives.map((p) => `${p}[]`).includes(type)\n\nconst stripSpaces = (typings: string) => typings.replace(/ +/g, ' ').trim()\n\nclass KeyValue {\n constructor(\n public key: string,\n public value: z.Schema,\n ) {}\n}\n\nclass FnParameters {\n constructor(public schema: z.Schema) {}\n}\n\nclass FnReturn {\n constructor(public schema: z.Schema) {}\n}\n\nclass Declaration {\n constructor(public props: DeclarationProps) {}\n}\n\ntype DeclarationProps =\n | {\n type: 'variable'\n schema: z.Schema\n identifier: string\n }\n | {\n type: 'type'\n schema: z.Schema\n identifier: string\n args: string[] // type arguments / generics\n }\n | {\n type: 'none'\n schema: z.Schema\n }\n\nexport type TypescriptDeclarationType = DeclarationProps['type']\nexport type TypescriptGenerationOptions = {\n formatter?: (typing: string) => string\n declaration?: boolean | TypescriptDeclarationType\n /**\n * Whether to include closing tags in the generated TypeScript declarations when they exceed 5 lines.\n * This improves readability for large type declarations by adding comments like \"// end of TypeName\".\n */\n includeClosingTags?: boolean\n treatDefaultAsOptional?: boolean\n}\n\ntype SchemaTypes = z.Schema | KeyValue | FnParameters | Declaration | null\n\ntype InternalOptions = {\n parent?: SchemaTypes\n declaration?: boolean | TypescriptDeclarationType\n includeClosingTags?: boolean\n treatDefaultAsOptional?: boolean\n}\n\n/**\n *\n * @param schema zui schema\n * @param options generation options\n * @returns a string of the TypeScript **type** representing the schema\n */\nexport function toTypescriptType(schema: z.Schema, options: TypescriptGenerationOptions = {}): string {\n const wrappedSchema: Declaration = getDeclarationProps(schema, options)\n\n let dts = sUnwrapZod(wrappedSchema, options)\n\n if (options.formatter) {\n dts = options.formatter(dts)\n }\n\n return dts\n}\n\nconst _optionalKey = (key: string): string => (key.endsWith('?') ? key : `${key}?`)\n\nfunction sUnwrapZod(schema: z.Schema | KeyValue | FnParameters | Declaration | null, config: InternalOptions): string {\n const newConfig: InternalOptions = {\n ...config,\n declaration: false,\n parent: schema,\n }\n\n if (schema === null) {\n return ''\n }\n\n if (schema instanceof Declaration) {\n return unwrapDeclaration(schema, newConfig)\n }\n\n if (schema instanceof KeyValue) {\n let optionalValue: z.ZodOptional | undefined = undefined\n if (schema.value instanceof z.ZodOptional) {\n optionalValue = schema.value\n } else if (schema.value instanceof z.ZodDefault && config.treatDefaultAsOptional) {\n optionalValue = schema.value._def.innerType.optional()\n }\n\n if (optionalValue) {\n let innerType = optionalValue._def.innerType as z.Schema\n if (innerType instanceof z.Schema && !innerType.description && optionalValue.description) {\n innerType = innerType?.describe(optionalValue.description)\n }\n\n return sUnwrapZod(new KeyValue(_optionalKey(schema.key), innerType), newConfig)\n }\n\n const description = getMultilineComment(schema.value._def.description || schema.value.description)\n const delimiter = description?.trim().length > 0 ? '\\n' : ''\n const withoutDesc = schema.value.describe('')\n\n const isOptional = schema.value instanceof z.ZodAny // any is treated as optional for backwards compatibility\n const key = isOptional ? _optionalKey(schema.key) : schema.key\n return `${delimiter}${description}${delimiter}${key}: ${sUnwrapZod(withoutDesc, newConfig)}${delimiter}`\n }\n\n if (schema instanceof FnParameters) {\n if (schema.schema instanceof z.ZodTuple) {\n let args = ''\n for (let i = 0; i < schema.schema.items.length; i++) {\n const argName = schema.schema.items[i]?.ui?.title ?? `arg${i}`\n const item = schema.schema.items[i]\n args += `${sUnwrapZod(new KeyValue(toPropertyKey(argName), item), newConfig)}${i < schema.schema.items.length - 1 ? ', ' : ''} `\n }\n\n return args\n }\n\n const isLiteral = schema.schema.naked() instanceof z.ZodLiteral\n\n const typings = sUnwrapZod(schema.schema, newConfig).trim()\n const startsWithPairs =\n (typings.startsWith('{') && typings.endsWith('}')) ||\n (typings.startsWith('[') && typings.endsWith(']')) ||\n (typings.startsWith('(') && typings.endsWith(')')) ||\n (typings.startsWith('Array<') && typings.endsWith('>')) ||\n (typings.startsWith('Record<') && typings.endsWith('>')) ||\n isArrayOfPrimitives(typings)\n\n if (startsWithPairs || isLiteral) {\n return `args: ${typings}`\n } else {\n return typings\n }\n }\n\n if (schema instanceof FnReturn) {\n if (schema.schema instanceof z.ZodOptional) {\n return `${sUnwrapZod(schema.schema.unwrap(), newConfig)} | undefined`\n }\n\n return sUnwrapZod(schema.schema, newConfig)\n }\n\n const schemaTyped = schema as z.ZodFirstPartySchemaTypes\n const def = schemaTyped._def\n\n switch (def.typeName) {\n case z.ZodFirstPartyTypeKind.ZodString:\n return `${getMultilineComment(schemaTyped.description)} string`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodNumber:\n case z.ZodFirstPartyTypeKind.ZodNaN:\n case z.ZodFirstPartyTypeKind.ZodBigInt:\n return `${getMultilineComment(schemaTyped.description)} number`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodBoolean:\n return `${getMultilineComment(schemaTyped.description)} boolean`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodDate:\n return `${getMultilineComment(schemaTyped.description)} Date`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodUndefined:\n return `${getMultilineComment(schemaTyped.description)} undefined`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodNull:\n return `${getMultilineComment(schemaTyped.description)} null`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodAny:\n return `${getMultilineComment(schemaTyped.description)} any`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodUnknown:\n return `${getMultilineComment(schemaTyped.description)} unknown`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodNever:\n return `${getMultilineComment(schemaTyped.description)} never`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodVoid:\n return `${getMultilineComment(schemaTyped.description)} void`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodArray:\n const item = sUnwrapZod(def.type, newConfig)\n\n if (isPrimitive(item)) {\n return `${item}[]`\n }\n\n return `Array<${item}>`\n\n case z.ZodFirstPartyTypeKind.ZodObject:\n const props = Object.entries(def.shape()).map(([key, value]) => {\n if (value instanceof z.Schema) {\n return sUnwrapZod(new KeyValue(toPropertyKey(key), value), newConfig)\n }\n return `${key}: unknown`\n })\n\n return `{ ${props.join('; ')} }`\n\n case z.ZodFirstPartyTypeKind.ZodUnion:\n const options = def.options.map((option) => {\n return sUnwrapZod(option, newConfig)\n })\n return `${getMultilineComment(schemaTyped.description)}\n${options.join(' | ')}`\n\n case z.ZodFirstPartyTypeKind.ZodDiscriminatedUnion:\n const opts = def.options.map((option) => {\n return sUnwrapZod(option, newConfig)\n })\n return `${getMultilineComment(schemaTyped.description)}\n${opts.join(' | ')}`\n\n case z.ZodFirstPartyTypeKind.ZodIntersection:\n return `${sUnwrapZod(def.left, newConfig)} & ${sUnwrapZod(def.right, newConfig)}`\n\n case z.ZodFirstPartyTypeKind.ZodTuple:\n if (def.items.length === 0) {\n return '[]'\n }\n\n const items = def.items.map((i: any) => sUnwrapZod(i, newConfig))\n return `[${items.join(', ')}]`\n\n case z.ZodFirstPartyTypeKind.ZodRecord:\n const keyType = sUnwrapZod(def.keyType, newConfig)\n const valueType = sUnwrapZod(def.valueType, newConfig)\n return `${getMultilineComment(schemaTyped.description)} { [key: ${keyType}]: ${valueType} }`\n\n case z.ZodFirstPartyTypeKind.ZodMap:\n return `Map<${sUnwrapZod(def.keyType, newConfig)}, ${sUnwrapZod(def.valueType, newConfig)}>`\n\n case z.ZodFirstPartyTypeKind.ZodSet:\n return `Set<${sUnwrapZod(def.valueType, newConfig)}>`\n\n case z.ZodFirstPartyTypeKind.ZodFunction:\n const input = sUnwrapZod(new FnParameters(def.args), newConfig)\n const output = sUnwrapZod(new FnReturn(def.returns), newConfig)\n const parentIsType = config?.parent instanceof Declaration && config?.parent.props.type === 'type'\n\n if (config?.declaration && !parentIsType) {\n return `${getMultilineComment(schemaTyped.description)}\n(${input}): ${output}`\n }\n\n return `${getMultilineComment(schemaTyped.description)}\n(${input}) => ${output}`\n\n case z.ZodFirstPartyTypeKind.ZodLazy:\n return sUnwrapZod(def.getter(), newConfig)\n\n case z.ZodFirstPartyTypeKind.ZodLiteral:\n const value: string = primitiveToTypscriptLiteralType(def.value)\n return `${getMultilineComment(schemaTyped.description)}\n${value}`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodEnum:\n const values = def.values.map(primitiveToTypescriptValue)\n return values.join(' | ')\n\n case z.ZodFirstPartyTypeKind.ZodEffects:\n return sUnwrapZod(def.schema, newConfig)\n\n case z.ZodFirstPartyTypeKind.ZodNativeEnum:\n throw new errors.UnsupportedZuiToTypescriptTypeError(z.ZodFirstPartyTypeKind.ZodNativeEnum)\n\n case z.ZodFirstPartyTypeKind.ZodOptional:\n return `${sUnwrapZod(def.innerType, newConfig)} | undefined`\n\n case z.ZodFirstPartyTypeKind.ZodNullable:\n return `${sUnwrapZod(def.innerType, newConfig)} | null`\n\n case z.ZodFirstPartyTypeKind.ZodDefault:\n const defaultInnerType = config.treatDefaultAsOptional ? def.innerType.optional() : def.innerType\n return sUnwrapZod(defaultInnerType, newConfig)\n\n case z.ZodFirstPartyTypeKind.ZodCatch:\n return sUnwrapZod(def.innerType, newConfig)\n\n case z.ZodFirstPartyTypeKind.ZodPromise:\n return `Promise<${sUnwrapZod(def.type, newConfig)}>`\n\n case z.ZodFirstPartyTypeKind.ZodBranded:\n return sUnwrapZod(def.type, newConfig)\n\n case z.ZodFirstPartyTypeKind.ZodPipeline:\n return sUnwrapZod(def.in, newConfig)\n\n case z.ZodFirstPartyTypeKind.ZodSymbol:\n return `${getMultilineComment(schemaTyped.description)} symbol`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodReadonly:\n return `Readonly<${sUnwrapZod(def.innerType, newConfig)}>`\n\n case z.ZodFirstPartyTypeKind.ZodRef:\n return toTypeArgumentName(def.uri)\n\n default:\n util.assertNever(def)\n }\n}\n\nconst unwrapDeclaration = (declaration: Declaration, options: InternalOptions): string => {\n if (declaration.props.type === 'none') {\n return sUnwrapZod(declaration.props.schema, options)\n }\n\n const { schema, identifier } = declaration.props\n const description = getMultilineComment(schema.description)\n const withoutDesc = schema.describe('')\n const typings = sUnwrapZod(withoutDesc, { ...options, declaration: true })\n\n const isLargeDeclaration = typings.split('\\n').length >= LARGE_DECLARATION_LINES\n const closingTag = isLargeDeclaration && options.includeClosingTags ? `// end of ${identifier}` : ''\n\n if (declaration.props.type !== 'type' && schema instanceof z.ZodFunction) {\n return stripSpaces(`${description}\ndeclare function ${identifier}${typings};${closingTag}`)\n }\n\n if (declaration.props.type === 'variable') {\n return stripSpaces(`${description}declare const ${identifier}: ${typings};${closingTag}`)\n }\n\n const generics =\n declaration.props.args.length > 0 ? `<${declaration.props.args.map(toTypeArgumentName).join(', ')}>` : ''\n return stripSpaces(`${description}type ${declaration.props.identifier}${generics} = ${typings};${closingTag}`)\n}\n\nconst getDeclarationType = (options: TypescriptGenerationOptions): TypescriptDeclarationType => {\n if (!options.declaration) {\n return 'none'\n }\n if (options.declaration === true) {\n return 'variable'\n }\n return options.declaration\n}\n\nconst getDeclarationProps = (schema: z.Schema, options: TypescriptGenerationOptions): Declaration => {\n const declarationType = getDeclarationType(options)\n const args = schema.getReferences()\n\n if (declarationType === 'none') {\n if (args.length > 0) {\n throw new errors.UnrepresentableGenericError()\n }\n\n return new Declaration({ type: 'none', schema })\n }\n\n const title = 'title' in schema.ui ? (schema.ui.title as string) : null\n if (!title) {\n throw new errors.UntitledDeclarationError()\n }\n\n if (declarationType === 'variable') {\n if (args.length > 0) {\n throw new errors.UnrepresentableGenericError()\n }\n\n return new Declaration({ type: 'variable', identifier: title, schema })\n }\n\n return new Declaration({ type: 'type', identifier: title, schema, args })\n}\n", "/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n", "import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n", "import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n", "import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n", "/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n", "import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n", "/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n", "import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n", "/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nexport default arrayMap;\n", "/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n", "import Symbol from './_Symbol.js';\nimport arrayMap from './_arrayMap.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default baseToString;\n", "/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n", "/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nexport default identity;\n", "import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n", "import root from './_root.js';\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nexport default coreJsData;\n", "import coreJsData from './_coreJsData.js';\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nexport default isMasked;\n", "/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nexport default toSource;\n", "import isFunction from './isFunction.js';\nimport isMasked from './_isMasked.js';\nimport isObject from './isObject.js';\nimport toSource from './_toSource.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nexport default baseIsNative;\n", "/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nexport default getValue;\n", "import baseIsNative from './_baseIsNative.js';\nimport getValue from './_getValue.js';\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nexport default getNative;\n", "import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nexport default WeakMap;\n", "import getNative from './_getNative.js';\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nexport default defineProperty;\n", "/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nexport default isIndex;\n", "import defineProperty from './_defineProperty.js';\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nexport default baseAssignValue;\n", "/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n", "import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nexport default assignValue;\n", "/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isLength;\n", "import isFunction from './isFunction.js';\nimport isLength from './isLength.js';\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nexport default isArrayLike;\n", "/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nexport default isPrototype;\n", "/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nexport default baseTimes;\n", "import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nexport default baseIsArguments;\n", "import baseIsArguments from './_baseIsArguments.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nexport default isArguments;\n", "/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nexport default stubFalse;\n", "import root from './_root.js';\nimport stubFalse from './stubFalse.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nexport default isBuffer;\n", "import baseGetTag from './_baseGetTag.js';\nimport isLength from './isLength.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nexport default baseIsTypedArray;\n", "/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nexport default baseUnary;\n", "import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nexport default nodeUtil;\n", "import baseIsTypedArray from './_baseIsTypedArray.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nexport default isTypedArray;\n", "import baseTimes from './_baseTimes.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isIndex from './_isIndex.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default arrayLikeKeys;\n", "/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nexport default overArg;\n", "import overArg from './_overArg.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nexport default nativeKeys;\n", "import isPrototype from './_isPrototype.js';\nimport nativeKeys from './_nativeKeys.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeys;\n", "import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeys from './_baseKeys.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nexport default keys;\n", "/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default nativeKeysIn;\n", "import isObject from './isObject.js';\nimport isPrototype from './_isPrototype.js';\nimport nativeKeysIn from './_nativeKeysIn.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeysIn;\n", "import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeysIn from './_baseKeysIn.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nexport default keysIn;\n", "import isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nexport default isKey;\n", "import getNative from './_getNative.js';\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nexport default nativeCreate;\n", "import nativeCreate from './_nativeCreate.js';\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nexport default hashClear;\n", "/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default hashDelete;\n", "import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nexport default hashGet;\n", "import nativeCreate from './_nativeCreate.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nexport default hashHas;\n", "import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nexport default hashSet;\n", "import hashClear from './_hashClear.js';\nimport hashDelete from './_hashDelete.js';\nimport hashGet from './_hashGet.js';\nimport hashHas from './_hashHas.js';\nimport hashSet from './_hashSet.js';\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nexport default Hash;\n", "/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nexport default listCacheClear;\n", "import eq from './eq.js';\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nexport default assocIndexOf;\n", "import assocIndexOf from './_assocIndexOf.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nexport default listCacheDelete;\n", "import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nexport default listCacheGet;\n", "import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nexport default listCacheHas;\n", "import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nexport default listCacheSet;\n", "import listCacheClear from './_listCacheClear.js';\nimport listCacheDelete from './_listCacheDelete.js';\nimport listCacheGet from './_listCacheGet.js';\nimport listCacheHas from './_listCacheHas.js';\nimport listCacheSet from './_listCacheSet.js';\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nexport default ListCache;\n", "import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nexport default Map;\n", "import Hash from './_Hash.js';\nimport ListCache from './_ListCache.js';\nimport Map from './_Map.js';\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nexport default mapCacheClear;\n", "/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nexport default isKeyable;\n", "import isKeyable from './_isKeyable.js';\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nexport default getMapData;\n", "import getMapData from './_getMapData.js';\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default mapCacheDelete;\n", "import getMapData from './_getMapData.js';\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nexport default mapCacheGet;\n", "import getMapData from './_getMapData.js';\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nexport default mapCacheHas;\n", "import getMapData from './_getMapData.js';\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nexport default mapCacheSet;\n", "import mapCacheClear from './_mapCacheClear.js';\nimport mapCacheDelete from './_mapCacheDelete.js';\nimport mapCacheGet from './_mapCacheGet.js';\nimport mapCacheHas from './_mapCacheHas.js';\nimport mapCacheSet from './_mapCacheSet.js';\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nexport default MapCache;\n", "import MapCache from './_MapCache.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nexport default memoize;\n", "import memoize from './memoize.js';\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nexport default memoizeCapped;\n", "import memoizeCapped from './_memoizeCapped.js';\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nexport default stringToPath;\n", "import baseToString from './_baseToString.js';\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nexport default toString;\n", "import isArray from './isArray.js';\nimport isKey from './_isKey.js';\nimport stringToPath from './_stringToPath.js';\nimport toString from './toString.js';\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nexport default castPath;\n", "import isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default toKey;\n", "import castPath from './_castPath.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nexport default baseGet;\n", "import baseGet from './_baseGet.js';\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nexport default get;\n", "/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nexport default arrayPush;\n", "import overArg from './_overArg.js';\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nexport default getPrototype;\n", "import baseGetTag from './_baseGetTag.js';\nimport getPrototype from './_getPrototype.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nexport default isPlainObject;\n", "import ListCache from './_ListCache.js';\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nexport default stackClear;\n", "/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nexport default stackDelete;\n", "/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nexport default stackGet;\n", "/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nexport default stackHas;\n", "import ListCache from './_ListCache.js';\nimport Map from './_Map.js';\nimport MapCache from './_MapCache.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nexport default stackSet;\n", "import ListCache from './_ListCache.js';\nimport stackClear from './_stackClear.js';\nimport stackDelete from './_stackDelete.js';\nimport stackGet from './_stackGet.js';\nimport stackHas from './_stackHas.js';\nimport stackSet from './_stackSet.js';\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nexport default Stack;\n", "/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nexport default arrayFilter;\n", "/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nexport default stubArray;\n", "import arrayFilter from './_arrayFilter.js';\nimport stubArray from './stubArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nexport default getSymbols;\n", "import arrayPush from './_arrayPush.js';\nimport getPrototype from './_getPrototype.js';\nimport getSymbols from './_getSymbols.js';\nimport stubArray from './stubArray.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nexport default getSymbolsIn;\n", "import arrayPush from './_arrayPush.js';\nimport isArray from './isArray.js';\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nexport default baseGetAllKeys;\n", "import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbols from './_getSymbols.js';\nimport keys from './keys.js';\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nexport default getAllKeys;\n", "import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nexport default getAllKeysIn;\n", "import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nexport default DataView;\n", "import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nexport default Promise;\n", "import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nexport default Set;\n", "import DataView from './_DataView.js';\nimport Map from './_Map.js';\nimport Promise from './_Promise.js';\nimport Set from './_Set.js';\nimport WeakMap from './_WeakMap.js';\nimport baseGetTag from './_baseGetTag.js';\nimport toSource from './_toSource.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nexport default getTag;\n", "import root from './_root.js';\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nexport default Uint8Array;\n", "/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nexport default setCacheAdd;\n", "/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nexport default setCacheHas;\n", "import MapCache from './_MapCache.js';\nimport setCacheAdd from './_setCacheAdd.js';\nimport setCacheHas from './_setCacheHas.js';\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nexport default SetCache;\n", "/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nexport default arraySome;\n", "/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nexport default cacheHas;\n", "import SetCache from './_SetCache.js';\nimport arraySome from './_arraySome.js';\nimport cacheHas from './_cacheHas.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nexport default equalArrays;\n", "/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nexport default mapToArray;\n", "/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nexport default setToArray;\n", "import Symbol from './_Symbol.js';\nimport Uint8Array from './_Uint8Array.js';\nimport eq from './eq.js';\nimport equalArrays from './_equalArrays.js';\nimport mapToArray from './_mapToArray.js';\nimport setToArray from './_setToArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nexport default equalByTag;\n", "import getAllKeys from './_getAllKeys.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nexport default equalObjects;\n", "import Stack from './_Stack.js';\nimport equalArrays from './_equalArrays.js';\nimport equalByTag from './_equalByTag.js';\nimport equalObjects from './_equalObjects.js';\nimport getTag from './_getTag.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nexport default baseIsEqualDeep;\n", "import baseIsEqualDeep from './_baseIsEqualDeep.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nexport default baseIsEqual;\n", "import Stack from './_Stack.js';\nimport baseIsEqual from './_baseIsEqual.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nexport default baseIsMatch;\n", "import isObject from './isObject.js';\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nexport default isStrictComparable;\n", "import isStrictComparable from './_isStrictComparable.js';\nimport keys from './keys.js';\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nexport default getMatchData;\n", "/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nexport default matchesStrictComparable;\n", "import baseIsMatch from './_baseIsMatch.js';\nimport getMatchData from './_getMatchData.js';\nimport matchesStrictComparable from './_matchesStrictComparable.js';\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nexport default baseMatches;\n", "/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nexport default baseHasIn;\n", "import castPath from './_castPath.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isIndex from './_isIndex.js';\nimport isLength from './isLength.js';\nimport toKey from './_toKey.js';\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nexport default hasPath;\n", "import baseHasIn from './_baseHasIn.js';\nimport hasPath from './_hasPath.js';\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nexport default hasIn;\n", "import baseIsEqual from './_baseIsEqual.js';\nimport get from './get.js';\nimport hasIn from './hasIn.js';\nimport isKey from './_isKey.js';\nimport isStrictComparable from './_isStrictComparable.js';\nimport matchesStrictComparable from './_matchesStrictComparable.js';\nimport toKey from './_toKey.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nexport default baseMatchesProperty;\n", "/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nexport default baseProperty;\n", "import baseGet from './_baseGet.js';\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nexport default basePropertyDeep;\n", "import baseProperty from './_baseProperty.js';\nimport basePropertyDeep from './_basePropertyDeep.js';\nimport isKey from './_isKey.js';\nimport toKey from './_toKey.js';\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nexport default property;\n", "import baseMatches from './_baseMatches.js';\nimport baseMatchesProperty from './_baseMatchesProperty.js';\nimport identity from './identity.js';\nimport isArray from './isArray.js';\nimport property from './property.js';\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nexport default baseIteratee;\n", "/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nexport default createBaseFor;\n", "import createBaseFor from './_createBaseFor.js';\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nexport default baseFor;\n", "import baseFor from './_baseFor.js';\nimport keys from './keys.js';\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nexport default baseForOwn;\n", "import baseIsEqual from './_baseIsEqual.js';\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nexport default isEqual;\n", "import baseIsEqual from './_baseIsEqual.js';\n\n/**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\nfunction isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n}\n\nexport default isEqualWith;\n", "/**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\nfunction isUndefined(value) {\n return value === undefined;\n}\n\nexport default isUndefined;\n", "import baseAssignValue from './_baseAssignValue.js';\nimport baseForOwn from './_baseForOwn.js';\nimport baseIteratee from './_baseIteratee.js';\n\n/**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\nfunction mapValues(object, iteratee) {\n var result = {};\n iteratee = baseIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n}\n\nexport default mapValues;\n", "/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\nfunction negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n}\n\nexport default negate;\n", "import assignValue from './_assignValue.js';\nimport castPath from './_castPath.js';\nimport isIndex from './_isIndex.js';\nimport isObject from './isObject.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n}\n\nexport default baseSet;\n", "import baseGet from './_baseGet.js';\nimport baseSet from './_baseSet.js';\nimport castPath from './_castPath.js';\n\n/**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n}\n\nexport default basePickBy;\n", "import arrayMap from './_arrayMap.js';\nimport baseIteratee from './_baseIteratee.js';\nimport basePickBy from './_basePickBy.js';\nimport getAllKeysIn from './_getAllKeysIn.js';\n\n/**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\nfunction pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = baseIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n}\n\nexport default pickBy;\n", "import baseIteratee from './_baseIteratee.js';\nimport negate from './negate.js';\nimport pickBy from './pickBy.js';\n\n/**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\nfunction omitBy(object, predicate) {\n return pickBy(object, negate(baseIteratee(predicate)));\n}\n\nexport default omitBy;\n", "import { primitiveToTypescriptValue as toTs, unknownToTypescriptValue } from '../common/utils'\nimport { ZodStringCheck, ZodStringDef } from '../../z/types/string'\nimport { util } from '../../z'\n\nexport const generateStringChecks = (def: ZodStringDef): string => {\n const checks = def.checks\n if (checks.length === 0) {\n return ''\n }\n return checks.map(_generateStringCheck).join('')\n}\n\nconst _generateStringCheck = (check: ZodStringCheck): string => {\n switch (check.kind) {\n case 'min':\n return `.min(${toTs(check.value)}, ${toTs(check.message)})`\n case 'max':\n return `.max(${toTs(check.value)}, ${toTs(check.message)})`\n case 'length':\n return `.length(${toTs(check.value)}, ${toTs(check.message)})`\n case 'email':\n return `.email(${toTs(check.message)})`\n case 'url':\n return `.url(${toTs(check.message)})`\n case 'emoji':\n return `.emoji(${toTs(check.message)})`\n case 'uuid':\n return `.uuid(${toTs(check.message)})`\n case 'cuid':\n return `.cuid(${toTs(check.message)})`\n case 'cuid2':\n return `.cuid2(${toTs(check.message)})`\n case 'ulid':\n return `.ulid(${toTs(check.message)})`\n case 'includes':\n const includesOptions = unknownToTypescriptValue({ message: check.message, position: check.position })\n return `.includes(${toTs(check.value)}, ${includesOptions})`\n case 'startsWith':\n return `.startsWith(${toTs(check.value)}, ${toTs(check.message)})`\n case 'endsWith':\n return `.endsWith(${toTs(check.value)}, ${toTs(check.message)})`\n case 'regex':\n const tsRegex = String(check.regex)\n return `.regex(${tsRegex}, ${toTs(check.message)})`\n case 'trim':\n return `.trim()`\n case 'toLowerCase':\n return `.toLowerCase()`\n case 'toUpperCase':\n return `.toUpperCase()`\n case 'datetime':\n const datetimePrecision = check.precision === null ? undefined : check.precision\n const dateTimeOptions = unknownToTypescriptValue({\n message: check.message,\n precision: datetimePrecision,\n offset: check.offset,\n })\n return `.datetime(${dateTimeOptions})`\n case 'ip':\n const ipOptions = unknownToTypescriptValue({ message: check.message, version: check.version })\n return `.ip(${ipOptions})`\n default:\n type _assertion = util.AssertNever<typeof check>\n return ''\n }\n}\n", "import { primitiveToTypescriptValue as toTs } from '../common/utils'\nimport { ZodNumberCheck, ZodNumberDef } from '../../z/types/number'\nimport { util } from '../../z'\n\nexport const generateNumberChecks = (def: ZodNumberDef): string => {\n const checks = def.checks\n if (checks.length === 0) {\n return ''\n }\n return checks.map(_generateNumberCheck).join('')\n}\n\nconst _generateNumberCheck = (check: ZodNumberCheck): string => {\n switch (check.kind) {\n case 'min':\n return `.min(${toTs(check.value)}, ${toTs(check.message)})`\n case 'max':\n return `.max(${toTs(check.value)}, ${toTs(check.message)})`\n case 'int':\n return `.int(${toTs(check.message)})`\n case 'multipleOf':\n return `.multipleOf(${toTs(check.value)}, ${toTs(check.message)})`\n case 'finite':\n return `.finite(${toTs(check.message)})`\n default:\n type _assertion = util.AssertNever<typeof check>\n return ''\n }\n}\n", "import { primitiveToTypescriptValue as toTs } from '../common/utils'\nimport { ZodBigIntCheck, ZodBigIntDef } from '../../z/types/bigint'\nimport { util } from '../../z'\n\nexport const generateBigIntChecks = (def: ZodBigIntDef): string => {\n const checks = def.checks\n if (checks.length === 0) {\n return ''\n }\n return checks.map(_generateBigIntCheck).join('')\n}\n\nconst _generateBigIntCheck = (check: ZodBigIntCheck): string => {\n switch (check.kind) {\n case 'min':\n return `.min(${toTs(check.value)}, ${toTs(check.message)})`\n case 'max':\n return `.max(${toTs(check.value)}, ${toTs(check.message)})`\n case 'multipleOf':\n return `.multipleOf(${toTs(check.value)}, ${toTs(check.message)})`\n default:\n type _assertion = util.AssertNever<typeof check>\n return ''\n }\n}\n", "import { primitiveToTypescriptValue as toTs } from '../common/utils'\nimport { ZodDateCheck, ZodDateDef } from '../../z/types/date'\nimport { util } from '../../z'\n\nexport const generateDateChecks = (def: ZodDateDef): string => {\n const checks = def.checks\n if (checks.length === 0) {\n return ''\n }\n return checks.map(_generateDateCheck).join('')\n}\n\nconst _generateDateCheck = (check: ZodDateCheck): string => {\n switch (check.kind) {\n case 'min':\n const minDate = dateTs(check.value)\n return `.min(${minDate}, ${toTs(check.message)})`\n case 'max':\n const maxDate = dateTs(check.value)\n return `.max(${maxDate}, ${toTs(check.message)})`\n default:\n type _assertion = util.AssertNever<typeof check>\n return ''\n }\n}\n\nconst dateTs = (d: number): string => {\n return `new Date(${d})`\n}\n", "import { primitiveToTypescriptValue as toTs } from '../common/utils'\nimport { ZodArrayDef } from '../../z/types/array'\n\nexport const generateArrayChecks = (def: ZodArrayDef): string => {\n const checks: string[] = []\n if (def.exactLength) {\n const { value, message } = def.exactLength\n checks.push(`.length(${toTs(value)}, ${toTs(message)})`)\n }\n if (def.minLength) {\n const { value, message } = def.minLength\n checks.push(`.min(${toTs(value)}, ${toTs(message)})`)\n }\n if (def.maxLength) {\n const { value, message } = def.maxLength\n checks.push(`.max(${toTs(value)}, ${toTs(message)})`)\n }\n return checks.join('')\n}\n", "import { primitiveToTypescriptValue as toTs } from '../common/utils'\nimport { ZodSetDef } from '../../z/types/set'\nexport const generateSetChecks = (def: ZodSetDef): string => {\n const checks: string[] = []\n if (def.minSize) {\n const { value, message } = def.minSize\n checks.push(`.min(${toTs(value)}, ${toTs(message)})`)\n }\n if (def.maxSize) {\n const { value, message } = def.maxSize\n checks.push(`.max(${toTs(value)}, ${toTs(message)})`)\n }\n return checks.join('')\n}\n", "import { mapValues } from 'lodash-es'\n\nimport z, { util } from '../../z'\nimport {\n primitiveToTypescriptValue,\n unknownToTypescriptValue,\n recordOfUnknownToTypescriptRecord,\n} from '../common/utils'\nimport * as errors from '../common/errors'\nimport { zuiKey } from '../../ui/constants'\nimport { generateStringChecks } from './string-checks'\nimport { generateNumberChecks } from './number-checks'\nimport { generateBigIntChecks } from './bigint-checks'\nimport { generateDateChecks } from './date-checks'\nimport { generateArrayChecks } from './array-checks'\nimport { generateSetChecks } from './set-checks'\n\n/**\n *\n * @param schema zui schema\n * @param options generation options\n * @returns a typescript program that would construct the given schema if executed\n */\nexport function toTypescriptSchema(schema: z.Schema): string {\n let wrappedSchema: z.Schema = schema\n let dts = sUnwrapZod(wrappedSchema)\n return dts\n}\n\nfunction sUnwrapZod(schema: z.Schema): string {\n const schemaTyped = schema as z.ZodFirstPartySchemaTypes\n const def = schemaTyped._def\n\n switch (def.typeName) {\n case z.ZodFirstPartyTypeKind.ZodString:\n return `z.string()${generateStringChecks(def)}${_addZuiExtensions(def)}${_maybeDescribe(def)}`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodNumber:\n return `z.number()${generateNumberChecks(def)}${_addZuiExtensions(def)}${_maybeDescribe(def)}`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodNaN:\n return `z.nan()${_addZuiExtensions(def)}${_maybeDescribe(def)}`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodBigInt:\n return `z.bigint()${generateBigIntChecks(def)}${_addZuiExtensions(def)}${_maybeDescribe(def)}`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodBoolean:\n return `z.boolean()${_addZuiExtensions(def)}${_maybeDescribe(schema._def)}`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodDate:\n return `z.date()${generateDateChecks(def)}${_addZuiExtensions(def)}${_maybeDescribe(def)}`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodUndefined:\n return `z.undefined()${_addZuiExtensions(def)}${_maybeDescribe(def)}`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodNull:\n return `z.null()${_addZuiExtensions(def)}${_maybeDescribe(def)}`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodAny:\n return `z.any()${_addZuiExtensions(def)}${_maybeDescribe(def)}`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodUnknown:\n return `z.unknown()${_addZuiExtensions(def)}${_maybeDescribe(def)}`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodNever:\n return `z.never()${_addZuiExtensions(def)}${_maybeDescribe(def)}`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodVoid:\n return `z.void()${_addZuiExtensions(def)}${_maybeDescribe(def)}`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodArray:\n return `z.array(${sUnwrapZod(def.type)})${generateArrayChecks(def)}${_addZuiExtensions(def)}${_maybeDescribe(def)}`\n\n case z.ZodFirstPartyTypeKind.ZodObject:\n const props = mapValues(def.shape(), sUnwrapZod)\n const catchall = (schema as z.ZodObject).additionalProperties()\n const catchallString = catchall ? `.catchall(${sUnwrapZod(catchall)})` : ''\n return [\n //\n `z.object({`,\n ...Object.entries(props).map(([key, value]) => ` ${key}: ${value},`),\n `})${catchallString}${_addZuiExtensions(def)}${_maybeDescribe(def)}`,\n ]\n .join('\\n')\n .trim()\n\n case z.ZodFirstPartyTypeKind.ZodUnion:\n const options = def.options.map(sUnwrapZod)\n return `z.union([${options.join(', ')}])${_addZuiExtensions(def)}${_maybeDescribe(def)}`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodDiscriminatedUnion:\n const opts = (def.options as z.ZodSchema[]).map(sUnwrapZod)\n const discriminator = primitiveToTypescriptValue(def.discriminator)\n return `z.discriminatedUnion(${discriminator}, [${opts.join(', ')}])${_addZuiExtensions(def)}${_maybeDescribe(def)}`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodIntersection:\n const left: string = sUnwrapZod(def.left)\n const right: string = sUnwrapZod(def.right)\n return `z.intersection(${left}, ${right})${_addZuiExtensions(def)}${_maybeDescribe(def)}`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodTuple:\n const items = def.items.map(sUnwrapZod)\n return `z.tuple([${items.join(', ')}])${_addZuiExtensions(def)}${_maybeDescribe(def)}`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodRecord:\n const keyType = sUnwrapZod(def.keyType)\n const valueType = sUnwrapZod(def.valueType)\n return `z.record(${keyType}, ${valueType})${_addZuiExtensions(def)}${_maybeDescribe(def)}`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodMap:\n const mapKeyType = sUnwrapZod(def.keyType)\n const mapValueType = sUnwrapZod(def.valueType)\n return `z.map(${mapKeyType}, ${mapValueType})${_addZuiExtensions(def)}${_maybeDescribe(def)}`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodSet:\n return `z.set(${sUnwrapZod(def.valueType)})${generateSetChecks(def)}${_addZuiExtensions(def)}${_maybeDescribe(def)}`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodFunction:\n const args = def.args.items.map(sUnwrapZod)\n const argsString = args.length ? `.args(${args.join(', ')})` : ''\n const returns = sUnwrapZod(def.returns)\n return `z.function()${argsString}.returns(${returns})${_addZuiExtensions(def)}${_maybeDescribe(def)}`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodLazy:\n return `z.lazy(() => ${sUnwrapZod(def.getter())})${_addZuiExtensions(def)}${_maybeDescribe(def)}`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodLiteral:\n const value = primitiveToTypescriptValue(def.value)\n return `z.literal(${value})${_addZuiExtensions(def)}${_maybeDescribe(def)}`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodEnum:\n const values = def.values.map(primitiveToTypescriptValue)\n return `z.enum([${values.join(', ')}])${_addZuiExtensions(def)}${_maybeDescribe(def)}`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodEffects:\n throw new errors.UnsupportedZuiToTypescriptSchemaError(z.ZodFirstPartyTypeKind.ZodEffects)\n\n case z.ZodFirstPartyTypeKind.ZodNativeEnum:\n throw new errors.UnsupportedZuiToTypescriptSchemaError(z.ZodFirstPartyTypeKind.ZodNativeEnum)\n\n case z.ZodFirstPartyTypeKind.ZodOptional:\n return `z.optional(${sUnwrapZod(def.innerType)})${_addZuiExtensions(def)}${_maybeDescribe(def)}`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodNullable:\n return `z.nullable(${sUnwrapZod(def.innerType)})${_addZuiExtensions(def)}${_maybeDescribe(def)}`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodDefault:\n const defaultValue = unknownToTypescriptValue(def.defaultValue())\n // TODO: use z.default() notation\n return `z.default(${sUnwrapZod(def.innerType)}, ${defaultValue})${_addZuiExtensions(def)}${_maybeDescribe(def)}`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodCatch:\n throw new errors.UnsupportedZuiToTypescriptSchemaError(z.ZodFirstPartyTypeKind.ZodCatch)\n\n case z.ZodFirstPartyTypeKind.ZodPromise:\n return `z.promise(${sUnwrapZod(def.type)})${_addZuiExtensions(def)}${_maybeDescribe(def)}`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodBranded:\n throw new errors.UnsupportedZuiToTypescriptSchemaError(z.ZodFirstPartyTypeKind.ZodBranded)\n\n case z.ZodFirstPartyTypeKind.ZodPipeline:\n throw new errors.UnsupportedZuiToTypescriptSchemaError(z.ZodFirstPartyTypeKind.ZodPipeline)\n\n case z.ZodFirstPartyTypeKind.ZodSymbol:\n throw new errors.UnsupportedZuiToTypescriptSchemaError(z.ZodFirstPartyTypeKind.ZodSymbol)\n\n case z.ZodFirstPartyTypeKind.ZodReadonly:\n return `z.readonly(${sUnwrapZod(def.innerType)})${_addZuiExtensions(def)}${_maybeDescribe(def)}`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodRef:\n const uri = primitiveToTypescriptValue(def.uri)\n return `z.ref(${uri})${_addZuiExtensions(def)}${_maybeDescribe(def)}`.trim()\n\n default:\n util.assertNever(def)\n }\n}\n\nconst _maybeDescribe = (def: z.ZodTypeDef) =>\n def.description ? `.describe(${primitiveToTypescriptValue(def.description)})` : ''\n\nconst _addZuiExtensions = (def: z.ZodTypeDef) =>\n `${_maybeTitle(def)}${_maybeDisplayAs(def)}${_maybeDisabled(def)}${_maybeHidden(def)}${_maybePlaceholder(def)}${_maybeSecret(def)}${_maybeSetMetadata(def)}`\n\nconst _maybeTitle = (def: z.ZodTypeDef) =>\n def[zuiKey]?.title ? `.title(${primitiveToTypescriptValue(def[zuiKey].title)})` : ''\n\nconst _maybeDisplayAs = (def: z.ZodTypeDef) =>\n def[zuiKey]?.displayAs\n ? `.displayAs(${recordOfUnknownToTypescriptRecord({ id: def[zuiKey].displayAs[0], params: def[zuiKey].displayAs[1] })})`\n : ''\n\nconst _maybeDisabled = (def: z.ZodTypeDef) => (def[zuiKey]?.disabled ? `.disabled(${def[zuiKey].disabled})` : '')\n\nconst _maybeHidden = (def: z.ZodTypeDef) => (def[zuiKey]?.hidden ? `.hidden(${def[zuiKey].hidden})` : '')\n\nconst _maybePlaceholder = (def: z.ZodTypeDef) =>\n def[zuiKey]?.placeholder ? `.placeholder(${primitiveToTypescriptValue(def[zuiKey].placeholder)})` : ''\n\nconst _maybeSecret = (def: z.ZodTypeDef) => (def[zuiKey]?.secret ? '.secret()' : '')\n\nconst _maybeSetMetadata = (def: z.ZodTypeDef) => {\n const reservedKeys = [\n 'title',\n 'tooltip',\n 'displayAs',\n 'disabled',\n 'hidden',\n 'placeholder',\n 'secret',\n 'coerce',\n ] as const\n const metadata = Object.entries(def[zuiKey] ?? {}).filter(\n ([key]) => !reservedKeys.includes(key as (typeof reservedKeys)[number]),\n )\n\n return metadata.length > 0 ? `.metadata(${recordOfUnknownToTypescriptRecord(Object.fromEntries(metadata))})` : ''\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport z from '../../../z'\nimport * as json from '../../common/json-schema'\n\nexport const zodNumberToJsonNumber = (zodNumber: z.ZodNumber): json.NumberSchema => {\n const schema: json.NumberSchema = {\n type: 'number',\n description: zodNumber.description,\n 'x-zui': zodNumber._def['x-zui'],\n }\n\n if (zodNumber._def[zuiKey]) {\n schema[zuiKey] = zodNumber._def[zuiKey]\n }\n\n for (const check of zodNumber._def.checks) {\n switch (check.kind) {\n case 'min': {\n const key = check.inclusive ? 'minimum' : 'exclusiveMinimum'\n const oppositeKey = check.inclusive ? 'exclusiveMinimum' : 'minimum'\n\n schema[key] = check.value\n delete schema[oppositeKey]\n break\n }\n\n case 'max': {\n const key = check.inclusive ? 'maximum' : 'exclusiveMaximum'\n const oppositeKey = check.inclusive ? 'exclusiveMaximum' : 'maximum'\n\n schema[key] = check.value\n delete schema[oppositeKey]\n break\n }\n\n case 'int':\n schema.type = 'integer'\n break\n\n case 'finite': {\n schema.format = 'finite'\n break\n }\n\n case 'multipleOf':\n schema.multipleOf = check.value\n break\n\n default:\n check satisfies never\n }\n }\n\n return schema\n}\n", "// Adapted from https://stackoverflow.com/a/3143231\n\nconst DATETIME_REGEX_BASE = `\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}`\nconst DATETIME_REGEX_OFFSET = `(([+-]\\\\d{2}(:?\\\\d{2})?)|Z)`\nconst DATETIME_REGEX_OFFSET_NONE = `Z`\nconst DATETIME_REGEX_PRECISION_ARBITRARY = `(\\\\.\\\\d+)?`\nconst DATETIME_REGEX_PRECISION_SPECIFIC_BEGIN = `\\\\.\\\\d{`\nconst DATETIME_REGEX_PRECISION_SPECIFIC_END = `}`\n\ntype DateTimeArgs = { precision: number | null; offset: boolean }\n\nexport const generateDatetimeRegex = (args: DateTimeArgs) => {\n const precision = args.precision\n ? DATETIME_REGEX_PRECISION_SPECIFIC_BEGIN + args.precision + DATETIME_REGEX_PRECISION_SPECIFIC_END\n : args.precision === 0\n ? ''\n : DATETIME_REGEX_PRECISION_ARBITRARY\n\n const offset = args.offset ? DATETIME_REGEX_OFFSET : DATETIME_REGEX_OFFSET_NONE\n\n return new RegExp(`^${DATETIME_REGEX_BASE}${precision}${offset}$`)\n}\n\nexport const extractPrecisionAndOffset = (regexSource: string): DateTimeArgs => ({\n precision: _extractPrecision(regexSource),\n offset: regexSource.endsWith(`${DATETIME_REGEX_OFFSET}$`),\n})\n\nconst _extractPrecision = (regexSource: string): DateTimeArgs['precision'] => {\n const slicedRegex = regexSource.slice(1 + DATETIME_REGEX_BASE.length)\n\n if (slicedRegex.startsWith(DATETIME_REGEX_PRECISION_ARBITRARY)) {\n return null\n } else if (slicedRegex.startsWith(DATETIME_REGEX_PRECISION_SPECIFIC_BEGIN)) {\n // NOTE: If parseInt encounters a character that is not a numeral in the\n // specified radix, it ignores it and all succeeding characters. This\n // means we do not need to know the length of the precision string.\n return parseInt(slicedRegex.slice(DATETIME_REGEX_PRECISION_SPECIFIC_BEGIN.length))\n }\n\n return 0\n}\n", "export { escapeSpecialChars } from './escape-special-chars'\n", "/**\n * Escapes special characters in a string for use in a regular expression.\n * This effectively makes the string completely inert and unable to cause regex\n * injections.\n */\nexport const escapeSpecialChars = (unsafeString: string) => unsafeString.replaceAll(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n", "import { JsonSchema7TypeUnion } from './parseDef'\nimport { Refs } from './Refs'\n\nexport type ErrorMessages<T extends JsonSchema7TypeUnion, OmitProperties extends string = ''> = Partial<\n Omit<{ [key in keyof T]: string }, OmitProperties | 'type' | 'errorMessages'>\n>\n\nexport function addErrorMessage<T extends { errorMessage?: ErrorMessages<any> }>(\n res: T,\n key: keyof T,\n errorMessage: string | undefined,\n refs: Refs,\n) {\n if (!refs?.errorMessages) return\n if (errorMessage) {\n res.errorMessage = {\n ...res.errorMessage,\n [key]: errorMessage,\n }\n }\n}\n\nexport function setResponseValueAndErrors<\n Json7Type extends JsonSchema7TypeUnion & {\n errorMessage?: ErrorMessages<Json7Type>\n },\n Key extends keyof Omit<Json7Type, 'errorMessage'>,\n>(res: Json7Type, key: Key, value: Json7Type[Key], errorMessage: string | undefined, refs: Refs) {\n res[key] = value\n addErrorMessage(res, key, errorMessage, refs)\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport { ZuiExtensionObject } from '../../../ui/types'\nimport { ZodStringDef } from '../../../z/index'\nimport { regexUtils } from '../../common'\nimport { ErrorMessages, setResponseValueAndErrors } from '../errorMessages'\nimport { Refs } from '../Refs'\n\n/**\n * Generated from the .source property of regular expressins found here:\n * https://github.com/colinhacks/zod/blob/master/src/types.ts.\n *\n * Escapes have been doubled, and expressions with /i flag have been changed accordingly\n */\nexport const zodPatterns = {\n /**\n * `c` was changed to `[cC]` to replicate /i flag\n */\n cuid: '^[cC][^\\\\s-]{8,}$',\n cuid2: '^[a-z][a-z0-9]*$',\n ulid: '^[0-9A-HJKMNP-TV-Z]{26}$',\n /**\n * `a-z` was added to replicate /i flag\n */\n email: '^(?!\\\\.)(?!.*\\\\.\\\\.)([a-zA-Z0-9_+-\\\\.]*)[a-zA-Z0-9_+-]@([a-zA-Z0-9][a-zA-Z0-9\\\\-]*\\\\.)+[a-zA-Z]{2,}$',\n emoji: '^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$',\n /**\n * Unused\n */\n uuid: '^[0-9a-fA-F]{8}\\\\b-[0-9a-fA-F]{4}\\\\b-[0-9a-fA-F]{4}\\\\b-[0-9a-fA-F]{4}\\\\b-[0-9a-fA-F]{12}$',\n /**\n * Unused\n */\n ipv4: '^(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))$',\n /**\n * Unused\n */\n ipv6: '^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$',\n} as const\n\nexport type JsonSchema7StringType = {\n type: 'string'\n minLength?: number\n maxLength?: number\n format?: 'email' | 'idn-email' | 'uri' | 'uuid' | 'date-time' | 'ipv4' | 'ipv6'\n pattern?: string\n allOf?: {\n pattern: string\n errorMessage?: ErrorMessages<{ type: 'string'; pattern: string }>\n }[]\n anyOf?: {\n format: string\n errorMessage?: ErrorMessages<{ type: 'string'; format: string }>\n }[]\n errorMessage?: ErrorMessages<JsonSchema7StringType>\n [zuiKey]?: ZuiExtensionObject\n}\n\nexport function parseStringDef(def: ZodStringDef, refs: Refs): JsonSchema7StringType {\n const res: JsonSchema7StringType = {\n type: 'string',\n ...(def.coerce\n ? {\n [zuiKey]: {\n coerce: def.coerce || undefined,\n },\n }\n : {}),\n }\n\n function processPattern(value: string): string {\n return refs.patternStrategy === 'escape' ? regexUtils.escapeSpecialChars(value) : value\n }\n\n if (def.checks) {\n for (const check of def.checks) {\n switch (check.kind) {\n case 'min':\n setResponseValueAndErrors(\n res,\n 'minLength',\n typeof res.minLength === 'number' ? Math.max(res.minLength, check.value) : check.value,\n check.message,\n refs,\n )\n break\n case 'max':\n setResponseValueAndErrors(\n res,\n 'maxLength',\n typeof res.maxLength === 'number' ? Math.min(res.maxLength, check.value) : check.value,\n check.message,\n refs,\n )\n\n break\n case 'email':\n switch (refs.emailStrategy) {\n case 'format:email':\n addFormat(res, 'email', check.message, refs)\n break\n case 'format:idn-email':\n addFormat(res, 'idn-email', check.message, refs)\n break\n case 'pattern:zod':\n addPattern(res, zodPatterns.email, check.message, refs)\n break\n }\n\n break\n case 'url':\n addFormat(res, 'uri', check.message, refs)\n break\n case 'uuid':\n addFormat(res, 'uuid', check.message, refs)\n break\n case 'regex':\n addPattern(res, check.regex.source, check.message, refs)\n break\n case 'cuid':\n addPattern(res, zodPatterns.cuid, check.message, refs)\n break\n case 'cuid2':\n addPattern(res, zodPatterns.cuid2, check.message, refs)\n break\n case 'startsWith':\n addPattern(res, '^' + processPattern(check.value), check.message, refs)\n break\n case 'endsWith':\n addPattern(res, processPattern(check.value) + '$', check.message, refs)\n break\n\n case 'datetime':\n addFormat(res, 'date-time', check.message, refs)\n break\n case 'length':\n setResponseValueAndErrors(\n res,\n 'minLength',\n typeof res.minLength === 'number' ? Math.max(res.minLength, check.value) : check.value,\n check.message,\n refs,\n )\n setResponseValueAndErrors(\n res,\n 'maxLength',\n typeof res.maxLength === 'number' ? Math.min(res.maxLength, check.value) : check.value,\n check.message,\n refs,\n )\n break\n case 'includes': {\n addPattern(res, processPattern(check.value), check.message, refs)\n break\n }\n case 'ip': {\n if (check.version !== 'v6') {\n addFormat(res, 'ipv4', check.message, refs)\n }\n if (check.version !== 'v4') {\n addFormat(res, 'ipv6', check.message, refs)\n }\n break\n }\n case 'emoji':\n addPattern(res, zodPatterns.emoji, check.message, refs)\n break\n case 'ulid': {\n addPattern(res, zodPatterns.ulid, check.message, refs)\n break\n }\n case 'toLowerCase':\n case 'toUpperCase':\n case 'trim':\n // I have no idea why these are checks in Zod 🤷\n break\n default:\n ;((_: never) => {})(check)\n }\n }\n }\n\n return res\n}\n\nconst addFormat = (\n schema: JsonSchema7StringType,\n value: Required<JsonSchema7StringType>['format'],\n message: string | undefined,\n refs: Refs,\n) => {\n if (schema.format || schema.anyOf?.some((x) => x.format)) {\n if (!schema.anyOf) {\n schema.anyOf = []\n }\n\n if (schema.format) {\n schema.anyOf!.push({\n format: schema.format,\n ...(schema.errorMessage &&\n refs.errorMessages && {\n errorMessage: { format: schema.errorMessage.format },\n }),\n })\n delete schema.format\n if (schema.errorMessage) {\n delete schema.errorMessage.format\n if (Object.keys(schema.errorMessage).length === 0) {\n delete schema.errorMessage\n }\n }\n }\n\n schema.anyOf!.push({\n format: value,\n ...(message && refs.errorMessages && { errorMessage: { format: message } }),\n })\n } else {\n setResponseValueAndErrors(schema, 'format', value, message, refs)\n }\n}\n\nconst addPattern = (schema: JsonSchema7StringType, value: string, message: string | undefined, refs: Refs) => {\n if (schema.pattern || schema.allOf?.some((x) => x.pattern)) {\n if (!schema.allOf) {\n schema.allOf = []\n }\n\n if (schema.pattern) {\n schema.allOf!.push({\n pattern: schema.pattern,\n ...(schema.errorMessage &&\n refs.errorMessages && {\n errorMessage: { pattern: schema.errorMessage.pattern },\n }),\n })\n delete schema.pattern\n if (schema.errorMessage) {\n delete schema.errorMessage.pattern\n if (Object.keys(schema.errorMessage).length === 0) {\n delete schema.errorMessage\n }\n }\n }\n\n schema.allOf!.push({\n pattern: value,\n ...(message && refs.errorMessages && { errorMessage: { pattern: message } }),\n })\n } else {\n setResponseValueAndErrors(schema, 'pattern', value, message, refs)\n }\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport z from '../../../z'\nimport { generateDatetimeRegex } from '../../../z/types/string/datetime'\nimport { regexUtils } from '../../common'\nimport * as errors from '../../common/errors'\nimport * as json from '../../common/json-schema'\nimport { zodPatterns } from '../../zui-to-json-schema-legacy/parsers/string'\n\nexport const zodStringToJsonString = (zodString: z.ZodString): json.StringSchema => {\n const schema: json.StringSchema = {\n type: 'string',\n description: zodString.description,\n 'x-zui': zodString._def['x-zui'],\n }\n\n if (zodString._def[zuiKey]) {\n schema[zuiKey] = zodString._def[zuiKey]\n }\n\n for (const check of zodString._def.checks) {\n switch (check.kind) {\n case 'cuid':\n schema.format = 'cuid'\n schema.pattern = zodPatterns.cuid\n break\n case 'cuid2':\n schema.format = 'cuid2'\n schema.pattern = zodPatterns.cuid2\n break\n case 'ulid':\n schema.format = 'ulid'\n schema.pattern = zodPatterns.ulid\n break\n case 'uuid':\n schema.format = 'uuid'\n schema.pattern = zodPatterns.uuid\n break\n case 'emoji':\n schema.format = 'emoji'\n schema.pattern = zodPatterns.emoji\n break\n case 'email':\n schema.format = 'email'\n schema.pattern = zodPatterns.email\n break\n case 'ip':\n schema.format = check.version === 'v6' ? 'ipv6' : 'ipv4'\n schema.pattern = check.version === 'v6' ? zodPatterns.ipv6 : zodPatterns.ipv4\n break\n case 'datetime':\n schema.format = 'date-time'\n if (check.precision !== null || check.offset) {\n schema.pattern = generateDatetimeRegex(check).source\n schema[zuiKey] = { ...schema[zuiKey], precision: check.precision, offset: check.offset }\n }\n break\n case 'url':\n schema.format = 'uri'\n break\n case 'endsWith':\n schema.pattern = `${regexUtils.escapeSpecialChars(check.value)}$`\n break\n case 'startsWith':\n schema.pattern = `^${regexUtils.escapeSpecialChars(check.value)}`\n break\n case 'includes':\n const positionPredicate = check.position && check.position >= 1 ? `^(?:.{${check.position}}).*` : ''\n schema.pattern = `${positionPredicate}${regexUtils.escapeSpecialChars(check.value)}`\n break\n case 'regex':\n schema.pattern = check.regex.source\n break\n case 'length':\n // NOTE: in zod, .length() refers to the exact length\n schema.minLength = schema.maxLength = Math.max(0, check.value)\n break\n case 'min':\n // NOTE: in zod, .min() is always inclusive\n schema.minLength = Math.max(0, check.value)\n break\n case 'max':\n // NOTE: in zod, .max() is always inclusive\n schema.maxLength = Math.max(0, check.value)\n break\n default:\n throw new errors.UnsupportedZuiCheckToJSONSchemaError({\n zodType: z.ZodFirstPartyTypeKind.ZodString,\n checkKind: check.kind,\n })\n }\n }\n\n return schema\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport z from '../../../z'\nimport * as json from '../../common/json-schema'\n\nexport const zodArrayToJsonArray = (\n zodArray: z.ZodArray,\n toSchema: (x: z.ZodTypeAny) => json.Schema,\n): json.ArraySchema => {\n const schema: json.ArraySchema = {\n type: 'array',\n description: zodArray.description,\n items: toSchema(zodArray._def.type),\n 'x-zui': zodArray._def['x-zui'],\n }\n\n if (zodArray._def[zuiKey]) {\n schema[zuiKey] = zodArray._def[zuiKey]\n }\n\n if (zodArray._def.minLength) {\n schema.minItems = zodArray._def.minLength.value\n }\n\n if (zodArray._def.maxLength) {\n schema.maxItems = zodArray._def.maxLength.value\n }\n\n if (zodArray._def.exactLength) {\n schema.minItems = zodArray._def.exactLength.value\n schema.maxItems = zodArray._def.exactLength.value\n }\n\n return schema\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport z from '../../../z'\nimport * as json from '../../common/json-schema'\n\nexport const zodSetToJsonSet = (zodSet: z.ZodSet, toSchema: (x: z.ZodTypeAny) => json.Schema): json.SetSchema => {\n const schema: json.SetSchema = {\n type: 'array',\n description: zodSet.description,\n uniqueItems: true,\n items: toSchema(zodSet._def.valueType),\n 'x-zui': zodSet._def['x-zui'],\n }\n\n if (zodSet._def[zuiKey]) {\n schema[zuiKey] = zodSet._def[zuiKey]\n }\n\n if (zodSet._def.minSize) {\n schema.minItems = zodSet._def.minSize.value\n }\n\n if (zodSet._def.maxSize) {\n schema.maxItems = zodSet._def.maxSize.value\n }\n\n return schema\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport z from '../../../z'\nimport * as json from '../../common/json-schema'\n\nexport const zodTupleToJsonTuple = (\n zodTuple: z.ZodTuple,\n toSchema: (x: z.ZodTypeAny) => json.Schema,\n): json.TupleSchema => {\n const schema: json.TupleSchema = {\n type: 'array',\n description: zodTuple.description,\n items: zodTuple._def.items.map((item) => toSchema(item)),\n }\n\n if (zodTuple._def[zuiKey]) {\n schema[zuiKey] = zodTuple._def[zuiKey]\n }\n\n if (zodTuple._def.rest) {\n schema.additionalItems = toSchema(zodTuple._def.rest)\n }\n\n return schema\n}\n", "import z from '../../z'\nimport * as json from '../common/json-schema'\nimport * as err from '../common/errors'\nimport { zodNumberToJsonNumber } from './type-processors/number'\nimport { zodStringToJsonString } from './type-processors/string'\nimport { zodArrayToJsonArray } from './type-processors/array'\nimport { zodSetToJsonSet } from './type-processors/set'\nimport { zodTupleToJsonTuple } from './type-processors/tuple'\n\n/**\n * Converts a Zui schema to a ZUI flavored JSON schema.\n * @param schema zui schema\n * @returns ZUI flavored JSON schema\n */\nexport function toJSONSchema(schema: z.Schema): json.Schema {\n const schemaTyped = schema as z.ZodFirstPartySchemaTypes\n const def = schemaTyped._def\n\n switch (def.typeName) {\n case z.ZodFirstPartyTypeKind.ZodString:\n return zodStringToJsonString(schemaTyped as z.ZodString) satisfies json.StringSchema\n\n case z.ZodFirstPartyTypeKind.ZodNumber:\n return zodNumberToJsonNumber(schemaTyped as z.ZodNumber) satisfies json.NumberSchema\n\n case z.ZodFirstPartyTypeKind.ZodNaN:\n throw new err.UnsupportedZuiToJSONSchemaError(z.ZodFirstPartyTypeKind.ZodNaN)\n\n case z.ZodFirstPartyTypeKind.ZodBigInt:\n throw new err.UnsupportedZuiToJSONSchemaError(z.ZodFirstPartyTypeKind.ZodBigInt, {\n suggestedAlternative: 'serialize bigint to string',\n })\n\n case z.ZodFirstPartyTypeKind.ZodBoolean:\n return {\n type: 'boolean',\n description: def.description,\n 'x-zui': def['x-zui'],\n } satisfies json.BooleanSchema\n\n case z.ZodFirstPartyTypeKind.ZodDate:\n throw new err.UnsupportedZuiToJSONSchemaError(z.ZodFirstPartyTypeKind.ZodDate, {\n suggestedAlternative: 'use z.string().datetime() instead',\n })\n\n case z.ZodFirstPartyTypeKind.ZodUndefined:\n return undefinedSchema(def)\n\n case z.ZodFirstPartyTypeKind.ZodNull:\n return nullSchema(def)\n\n case z.ZodFirstPartyTypeKind.ZodAny:\n return {\n description: def.description,\n 'x-zui': def['x-zui'],\n } satisfies json.AnySchema\n\n case z.ZodFirstPartyTypeKind.ZodUnknown:\n return {\n description: def.description,\n 'x-zui': { ...def['x-zui'], def: { typeName: z.ZodFirstPartyTypeKind.ZodUnknown } },\n }\n\n case z.ZodFirstPartyTypeKind.ZodNever:\n return {\n not: true,\n description: def.description,\n 'x-zui': def['x-zui'],\n } satisfies json.NeverSchema\n\n case z.ZodFirstPartyTypeKind.ZodVoid:\n throw new err.UnsupportedZuiToJSONSchemaError(z.ZodFirstPartyTypeKind.ZodVoid)\n\n case z.ZodFirstPartyTypeKind.ZodArray:\n return zodArrayToJsonArray(schemaTyped as z.ZodArray, toJSONSchema) satisfies json.ArraySchema\n\n case z.ZodFirstPartyTypeKind.ZodObject:\n const shape = Object.entries(def.shape())\n const requiredProperties = shape.filter(([_, value]) => !value.isOptional())\n const required = requiredProperties.length ? requiredProperties.map(([key]) => key) : undefined\n const properties = shape\n .map(([key, value]) => [key, value.mandatory()] satisfies [string, z.ZodType])\n .map(([key, value]) => [key, toJSONSchema(value)] satisfies [string, json.Schema])\n\n let additionalProperties: json.ObjectSchema['additionalProperties'] = false\n if (def.unknownKeys instanceof z.ZodType) {\n additionalProperties = toJSONSchema(def.unknownKeys)\n } else if (def.unknownKeys === 'passthrough') {\n additionalProperties = true\n }\n\n return {\n type: 'object',\n description: def.description,\n properties: Object.fromEntries(properties),\n required,\n additionalProperties,\n 'x-zui': def['x-zui'],\n } satisfies json.ObjectSchema\n\n case z.ZodFirstPartyTypeKind.ZodUnion:\n return {\n description: def.description,\n anyOf: def.options.map((option) => toJSONSchema(option)),\n 'x-zui': def['x-zui'],\n } satisfies json.UnionSchema\n\n case z.ZodFirstPartyTypeKind.ZodDiscriminatedUnion:\n return {\n description: def.description,\n anyOf: def.options.map((option) => toJSONSchema(option)),\n 'x-zui': {\n ...def['x-zui'],\n def: { typeName: z.ZodFirstPartyTypeKind.ZodDiscriminatedUnion, discriminator: def.discriminator },\n },\n } satisfies json.DiscriminatedUnionSchema\n\n case z.ZodFirstPartyTypeKind.ZodIntersection:\n const left = toJSONSchema(def.left)\n const right = toJSONSchema(def.right)\n\n /**\n * TODO: Potential conflict between `additionalProperties` in the left and right schemas.\n * To avoid this, we currently strip `additionalProperties` from both sides.\n * This is a workaround and results in lost schema information.\n * A proper fix would involve using `unevaluatedProperties`.\n * See: https://json-schema.org/understanding-json-schema/reference/object#unevaluatedproperties\n *\n * – fleur\n */\n if ('additionalProperties' in left) {\n delete left.additionalProperties\n }\n if ('additionalProperties' in right) {\n delete right.additionalProperties\n }\n\n return {\n description: def.description,\n allOf: [left, right],\n 'x-zui': def['x-zui'],\n } satisfies json.IntersectionSchema\n\n case z.ZodFirstPartyTypeKind.ZodTuple:\n return zodTupleToJsonTuple(schemaTyped as z.ZodTuple, toJSONSchema) satisfies json.TupleSchema\n\n case z.ZodFirstPartyTypeKind.ZodRecord:\n return {\n type: 'object',\n description: def.description,\n additionalProperties: toJSONSchema(def.valueType),\n 'x-zui': def['x-zui'],\n } satisfies json.RecordSchema\n\n case z.ZodFirstPartyTypeKind.ZodMap:\n throw new err.UnsupportedZuiToJSONSchemaError(z.ZodFirstPartyTypeKind.ZodMap)\n\n case z.ZodFirstPartyTypeKind.ZodSet:\n return zodSetToJsonSet(schemaTyped as z.ZodSet, toJSONSchema) satisfies json.SetSchema\n\n case z.ZodFirstPartyTypeKind.ZodFunction:\n throw new err.UnsupportedZuiToJSONSchemaError(z.ZodFirstPartyTypeKind.ZodFunction)\n\n case z.ZodFirstPartyTypeKind.ZodLazy:\n throw new err.UnsupportedZuiToJSONSchemaError(z.ZodFirstPartyTypeKind.ZodLazy)\n\n case z.ZodFirstPartyTypeKind.ZodLiteral:\n if (typeof def.value === 'string') {\n return {\n type: 'string',\n description: def.description,\n const: def.value,\n 'x-zui': def['x-zui'],\n } satisfies json.LiteralStringSchema\n } else if (typeof def.value === 'number') {\n return {\n type: 'number',\n description: def.description,\n const: def.value,\n 'x-zui': def['x-zui'],\n } satisfies json.LiteralNumberSchema\n } else if (typeof def.value === 'boolean') {\n return {\n type: 'boolean',\n description: def.description,\n const: def.value,\n 'x-zui': def['x-zui'],\n } satisfies json.LiteralBooleanSchema\n } else if (def.value === null) {\n return nullSchema(def)\n } else if (def.value === undefined) {\n return undefinedSchema(def)\n } else {\n z.util.assertEqual<bigint | symbol, typeof def.value>(true)\n const unsupportedLiteral = typeof def.value\n throw new err.ZuiToJSONSchemaError(`Unsupported literal type: \"${unsupportedLiteral}\"`)\n }\n\n case z.ZodFirstPartyTypeKind.ZodEnum:\n return {\n type: 'string',\n description: def.description,\n enum: def.values,\n 'x-zui': def['x-zui'],\n } satisfies json.EnumSchema\n\n case z.ZodFirstPartyTypeKind.ZodEffects:\n throw new err.UnsupportedZuiToJSONSchemaError(z.ZodFirstPartyTypeKind.ZodEffects)\n\n case z.ZodFirstPartyTypeKind.ZodNativeEnum:\n throw new err.UnsupportedZuiToJSONSchemaError(z.ZodFirstPartyTypeKind.ZodNativeEnum)\n\n case z.ZodFirstPartyTypeKind.ZodOptional:\n return {\n description: def.description,\n anyOf: [toJSONSchema(def.innerType), undefinedSchema()],\n 'x-zui': {\n ...def['x-zui'],\n def: { typeName: z.ZodFirstPartyTypeKind.ZodOptional },\n },\n } satisfies json.OptionalSchema\n\n case z.ZodFirstPartyTypeKind.ZodNullable:\n return {\n anyOf: [toJSONSchema(def.innerType), nullSchema()],\n 'x-zui': {\n ...def['x-zui'],\n def: { typeName: z.ZodFirstPartyTypeKind.ZodNullable },\n },\n } satisfies json.NullableSchema\n\n case z.ZodFirstPartyTypeKind.ZodDefault:\n // ZodDefault is not treated as a metadata root so we don't need to preserve x-zui\n return {\n ...toJSONSchema(def.innerType),\n default: def.defaultValue(),\n }\n\n case z.ZodFirstPartyTypeKind.ZodCatch:\n // TODO: could be supported using if-else json schema\n throw new err.UnsupportedZuiToJSONSchemaError(z.ZodFirstPartyTypeKind.ZodCatch)\n\n case z.ZodFirstPartyTypeKind.ZodPromise:\n throw new err.UnsupportedZuiToJSONSchemaError(z.ZodFirstPartyTypeKind.ZodPromise)\n\n case z.ZodFirstPartyTypeKind.ZodBranded:\n throw new err.UnsupportedZuiToJSONSchemaError(z.ZodFirstPartyTypeKind.ZodBranded)\n\n case z.ZodFirstPartyTypeKind.ZodPipeline:\n throw new err.UnsupportedZuiToJSONSchemaError(z.ZodFirstPartyTypeKind.ZodPipeline)\n\n case z.ZodFirstPartyTypeKind.ZodSymbol:\n throw new err.UnsupportedZuiToJSONSchemaError(z.ZodFirstPartyTypeKind.ZodPipeline)\n\n case z.ZodFirstPartyTypeKind.ZodReadonly:\n // ZodReadonly is not treated as a metadata root so we don't need to preserve x-zui\n return {\n ...toJSONSchema(def.innerType),\n readOnly: true,\n }\n\n case z.ZodFirstPartyTypeKind.ZodRef:\n return {\n $ref: def.uri,\n description: def.description,\n 'x-zui': def['x-zui'],\n }\n\n default:\n z.util.assertNever(def)\n }\n}\n\nconst undefinedSchema = (def?: z.ZodTypeDef): json.UndefinedSchema => ({\n not: true,\n description: def?.description,\n 'x-zui': { ...def?.['x-zui'], def: { typeName: z.ZodFirstPartyTypeKind.ZodUndefined } },\n})\n\nconst nullSchema = (def?: z.ZodTypeDef): json.NullSchema => ({\n type: 'null',\n description: def?.description,\n 'x-zui': def?.['x-zui'],\n})\n", "import type {\n BaseType,\n UIComponentDefinitions,\n ZodKindToBaseType,\n ParseSchema,\n ZuiExtensionObject,\n ZuiMetadata,\n} from '../../../ui/types'\nimport { zuiKey } from '../../../ui/constants'\nimport {\n AsyncParseReturnType,\n getParsedType,\n isAsync,\n IssueData,\n isValid,\n ParseContext,\n ParseInput,\n ParseParams,\n ParsePath,\n ParseReturnType,\n ParseStatus,\n processCreateParams,\n RefinementEffect,\n SyncParseReturnType,\n util,\n ZodArray,\n ZodBranded,\n ZodCatch,\n ZodCustomIssue,\n ZodDefault,\n ZodEffects,\n ZodError,\n ZodErrorMap,\n ZodFirstPartyTypeKind,\n ZodIntersection,\n ZodIssueCode,\n ZodNullable,\n ZodOptional,\n ZodPipeline,\n ZodPromise,\n ZodReadonly,\n ZodUnion,\n} from '../index'\nimport { CatchFn } from '../catch'\nimport { toTypescriptType, TypescriptGenerationOptions } from '../../../transforms/zui-to-typescript-type'\nimport { toTypescriptSchema } from '../../../transforms/zui-to-typescript-schema'\nimport { toJSONSchema } from '../../../transforms/zui-to-json-schema'\nimport { Schema as ZuiJSONSchema } from '../../../transforms/common/json-schema'\n\n/**\n * This type is not part of the original Zod library, it's been added in Zui to:\n * - Brand the type as a ZuiType and avoid conflicts with 'zod' types\n * - Simplify the type checks and inference for `infer`, `input`, and `output`\n *\n * The original `infer` type inference on ZodType takes a lot of compute because the TS compiler has to check all the methods and properties of the class.\n * The fact that we add __type__ here allows the TS compiler to shortcircuit the type inference when it's not present and prevents infinite circular inferences\n */\ntype __ZodType<Output = any, Input = Output> = {\n readonly __type__: 'ZuiType'\n readonly _output: Output\n readonly _input: Input\n}\n\nexport type RefinementCtx = {\n addIssue: (arg: IssueData) => void\n path: (string | number)[]\n}\nexport type ZodRawShape = { [k: string]: ZodTypeAny }\nexport type ZodTypeAny = ZodType<any, any, any>\nexport type TypeOf<T extends __ZodType> = T['_output']\nexport type OfType<O, T extends __ZodType> = T extends __ZodType<O> ? T : never\nexport type input<T extends __ZodType> = T['_input']\nexport type output<T extends __ZodType> = T['_output']\nexport type { TypeOf as infer }\nexport type Maskable<T = any> = boolean | ((shape: T | null) => util.DeepPartialBoolean<T> | boolean)\nexport type CustomErrorParams = Partial<util.Omit<ZodCustomIssue, 'code'>>\nexport interface ZodTypeDef {\n typeName: ZodFirstPartyTypeKind\n errorMap?: ZodErrorMap\n description?: string\n [zuiKey]?: ZuiExtensionObject\n}\n\nexport class ParseInputLazyPath implements ParseInput {\n parent: ParseContext\n data: any\n _path: ParsePath\n _key: string | number | (string | number)[]\n _cachedPath: ParsePath = []\n constructor(parent: ParseContext, value: any, path: ParsePath, key: string | number | (string | number)[]) {\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 (this._key instanceof Array) {\n this._cachedPath.push(...this._path, ...this._key)\n } else {\n this._cachedPath.push(...this._path, this._key)\n }\n }\n\n return this._cachedPath\n }\n}\nconst handleResult = <Input, Output>(\n ctx: ParseContext,\n result: SyncParseReturnType<Output>,\n): { success: true; data: Output } | { success: false; error: ZodError<Input> } => {\n if (isValid(result)) {\n return { success: true, data: result.value }\n } else {\n if (!ctx.common.issues.length) {\n throw new Error('Validation failed but no issues detected.')\n }\n\n return {\n success: false,\n get error() {\n if ((this as any)._error) return (this as any)._error as Error\n const error = new ZodError(ctx.common.issues)\n ;(this as any)._error = error\n return (this as any)._error\n },\n }\n }\n}\n\nexport type RawCreateParams =\n | {\n errorMap?: ZodErrorMap\n invalid_type_error?: string\n required_error?: string\n description?: string\n [zuiKey]?: ZuiExtensionObject\n }\n | undefined\nexport type ProcessedCreateParams = {\n errorMap?: ZodErrorMap\n description?: string\n [zuiKey]?: ZuiExtensionObject\n}\nexport type SafeParseSuccess<Output> = {\n success: true\n data: Output\n error?: never\n}\nexport type SafeParseError<Input> = {\n success: false\n error: ZodError<Input>\n data?: never\n}\n\nexport type SafeParseReturnType<Input, Output> = SafeParseSuccess<Output> | SafeParseError<Input>\n\nexport abstract class ZodType<Output = any, Def extends ZodTypeDef = ZodTypeDef, Input = Output>\n implements __ZodType<Output, Input>\n{\n readonly __type__ = 'ZuiType'\n readonly _type!: Output\n readonly _output!: Output\n readonly _input!: Input\n readonly _def!: Def\n\n get description() {\n return this._metadataRoot._def.description\n }\n\n abstract _parse(input: ParseInput): ParseReturnType<Output>\n\n /** deeply replace all references in the schema */\n dereference(_defs: Record<string, ZodTypeAny>): ZodTypeAny {\n return this\n }\n\n /** deeply scans the schema to check if it contains references */\n getReferences(): string[] {\n return []\n }\n\n clone(): ZodType<Output, Def, Input> {\n const This = (this as any).constructor\n return new This({\n ...this._def,\n })\n }\n\n /** checks if a schema is equal to another */\n abstract isEqual(schema: ZodType): boolean\n\n _getType(input: ParseInput): string {\n return getParsedType(input.data)\n }\n\n _getOrReturnCtx(input: ParseInput, ctx?: ParseContext | undefined): ParseContext {\n return (\n ctx || {\n common: input.parent.common,\n data: input.data,\n\n parsedType: getParsedType(input.data),\n\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n }\n )\n }\n\n _processInputParams(input: ParseInput): {\n status: ParseStatus\n ctx: ParseContext\n } {\n return {\n status: new ParseStatus(),\n ctx: {\n common: input.parent.common,\n data: input.data,\n\n parsedType: getParsedType(input.data),\n\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n },\n }\n }\n\n _parseSync(input: ParseInput): SyncParseReturnType<Output> {\n const result = this._parse(input)\n if (isAsync(result)) {\n throw new Error('Synchronous parse encountered promise.')\n }\n return result\n }\n\n _parseAsync(input: ParseInput): AsyncParseReturnType<Output> {\n const result = this._parse(input)\n return Promise.resolve(result)\n }\n\n parse(data: unknown, params?: Partial<ParseParams>): Output {\n const result = this.safeParse(data, params)\n if (result.success) return result.data\n throw result.error\n }\n\n safeParse(data: unknown, params?: Partial<ParseParams>): SafeParseReturnType<Input, Output> {\n const ctx: ParseContext = {\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\n return handleResult(ctx, result)\n }\n\n async parseAsync(data: unknown, params?: Partial<ParseParams>): Promise<Output> {\n const result = await this.safeParseAsync(data, params)\n if (result.success) return result.data\n throw result.error\n }\n\n async safeParseAsync(data: unknown, params?: Partial<ParseParams>): Promise<SafeParseReturnType<Input, Output>> {\n const ctx: ParseContext = {\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\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\n /** Alias of safeParseAsync */\n spa = this.safeParseAsync\n\n refine<RefinedOutput extends Output>(\n check: (arg: Output) => arg is RefinedOutput,\n message?: string | CustomErrorParams | ((arg: Output) => CustomErrorParams),\n ): ZodEffects<this, RefinedOutput, Input>\n refine(\n check: (arg: Output) => unknown | Promise<unknown>,\n message?: string | CustomErrorParams | ((arg: Output) => CustomErrorParams),\n ): ZodEffects<this, Output, Input>\n refine(\n check: (arg: Output) => unknown,\n message?: string | CustomErrorParams | ((arg: Output) => CustomErrorParams),\n ): ZodEffects<this, Output, Input> {\n const getIssueProperties = (val: Output) => {\n if (typeof message === 'string' || typeof message === 'undefined') {\n return { message }\n } else if (typeof message === 'function') {\n return message(val)\n } else {\n return message\n }\n }\n return this._refinement((val, ctx) => {\n const result = check(val)\n const setError = () =>\n 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 } else {\n return true\n }\n })\n }\n if (!result) {\n setError()\n return false\n } else {\n return true\n }\n })\n }\n\n refinement<RefinedOutput extends Output>(\n check: (arg: Output) => arg is RefinedOutput,\n refinementData: IssueData | ((arg: Output, ctx: RefinementCtx) => IssueData),\n ): ZodEffects<this, RefinedOutput, Input>\n refinement(\n check: (arg: Output) => boolean,\n refinementData: IssueData | ((arg: Output, ctx: RefinementCtx) => IssueData),\n ): ZodEffects<this, Output, Input>\n refinement(\n check: (arg: Output) => unknown,\n refinementData: IssueData | ((arg: Output, ctx: RefinementCtx) => IssueData),\n ): ZodEffects<this, Output, Input> {\n return this._refinement((val, ctx) => {\n if (!check(val)) {\n ctx.addIssue(typeof refinementData === 'function' ? refinementData(val, ctx) : refinementData)\n return false\n } else {\n return true\n }\n })\n }\n\n _refinement(refinement: RefinementEffect<Output>['refinement']): ZodEffects<this, Output, Input> {\n return new ZodEffects({\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: 'refinement', refinement },\n })\n }\n\n superRefine<RefinedOutput extends Output>(\n refinement: (arg: Output, ctx: RefinementCtx) => arg is RefinedOutput,\n ): ZodEffects<this, RefinedOutput, Input>\n superRefine(refinement: (arg: Output, ctx: RefinementCtx) => void): ZodEffects<this, Output, Input>\n superRefine(refinement: (arg: Output, ctx: RefinementCtx) => Promise<void>): ZodEffects<this, Output, Input>\n superRefine(\n refinement: (arg: Output, ctx: RefinementCtx) => unknown | Promise<unknown>,\n ): ZodEffects<this, Output, Input> {\n return this._refinement(refinement)\n }\n\n constructor(def: Def) {\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 }\n\n optional(): ZodOptional<this> {\n return ZodOptional.create(this, this._def)\n }\n nullable(): ZodNullable<this> {\n return ZodNullable.create(this, this._def)\n }\n nullish(): ZodOptional<ZodNullable<this>> {\n return this.nullable().optional()\n }\n array(): ZodArray<this> {\n return ZodArray.create(this, this._def)\n }\n promise(): ZodPromise<this> {\n return ZodPromise.create(this, this._def)\n }\n /**\n * # \\#\\#\\# Experimental \\#\\#\\#\n *\n * @experimental This function is experimental and is subject to breaking changes in the future.\n *\n * Would have been named `required` but a method with that name already exists in ZodObject.\n * Makes the schema required; i.e. not optional or undefined. If the schema is already required than it returns itself.\n * Null is not considered optional and remains unchanged.\n *\n * @example z.string().optional().mandatory() // z.string()\n * @example z.string().nullable().mandatory() // z.string().nullable()\n * @example z.string().or(z.undefined()).mandatory() // z.string()\n * @example z.union([z.string(), z.number(), z.undefined()]).mandatory() // z.union([z.string(), z.number()])\n */\n mandatory(): ZodType {\n return this\n }\n\n or<T extends ZodTypeAny>(option: T): ZodUnion<[this, T]> {\n return ZodUnion.create([this, option], this._def)\n }\n\n and<T extends ZodTypeAny>(incoming: T): ZodIntersection<this, T> {\n return ZodIntersection.create(this, incoming, this._def)\n }\n\n transform<NewOut>(\n transform: (arg: Output, ctx: RefinementCtx) => NewOut | Promise<NewOut>,\n ): ZodEffects<this, NewOut> {\n return new ZodEffects({\n ...processCreateParams(this._def),\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: 'transform', transform },\n })\n }\n\n default(def: util.noUndefined<Input>): ZodDefault<this>\n default(def: () => util.noUndefined<Input>): ZodDefault<this>\n default(def: any) {\n const defaultValueFunc = typeof def === 'function' ? def : () => def\n\n return new ZodDefault({\n ...processCreateParams(this._def),\n innerType: this,\n defaultValue: defaultValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n })\n }\n\n brand<B extends string | number | symbol>(brand?: B): ZodBranded<this, B>\n brand<B extends string | number | symbol>(): ZodBranded<this, B> {\n return new ZodBranded({\n typeName: ZodFirstPartyTypeKind.ZodBranded,\n type: this,\n ...processCreateParams(this._def),\n })\n }\n\n catch(def: Output | CatchFn<Output>) {\n const catchValueFunc = typeof def === 'function' ? (def as CatchFn<Output>) : () => def\n\n return new ZodCatch({\n ...processCreateParams(this._def),\n innerType: this,\n catchValue: catchValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n })\n }\n\n describe(description: string): this {\n const clone = this.clone() as this\n clone._metadataRoot._def.description = description\n return clone\n }\n\n pipe<T extends ZodTypeAny>(target: T): ZodPipeline<this, T> {\n return ZodPipeline.create(this, target)\n }\n\n readonly(): ZodReadonly<this> {\n return ZodReadonly.create(this)\n }\n\n isOptional(): boolean {\n return this.safeParse(undefined).success\n }\n\n isNullable(): boolean {\n return this.safeParse(null).success\n }\n\n // BOTPRESS EXTENSIONS\n\n /** append metadata to the schema */\n metadata(data: Record<string, ZuiMetadata>): this {\n const clone = this.clone() as this\n const root = clone._metadataRoot\n root._def[zuiKey] ??= {}\n for (const [key, value] of Object.entries(data)) {\n root._def[zuiKey] = {\n ...root._def[zuiKey],\n [key]: value,\n }\n }\n return clone\n }\n\n /** get metadata of the schema */\n getMetadata(): Record<string, ZuiMetadata> {\n return { ...this._metadataRoot._def[zuiKey] }\n }\n\n /** set metadata of the schema */\n setMetadata(data: Record<string, ZuiMetadata>): void {\n this._metadataRoot._def[zuiKey] = { ...data }\n }\n\n /**\n * get metadata of the schema\n * @deprecated use `getMetadata()` instead\n */\n get ui(): Record<string, ZuiMetadata> {\n return { ...this._metadataRoot._def[zuiKey] }\n }\n\n /**\n * Some Schemas aren't meant to contain metadata, like ZodDefault.\n * In a zui construction like `z.string().default('hello').title('Hello')`, the user's intention is usually to set a title on the string, not on the default value.\n * Also, in JSON-Schema, default is not a data-type like it is in Zui, but an annotation added on the schema itself. Therefore, only one metadata can apply to both the schema and the default value.\n * This property is used to get the root schema that should contain the metadata.\n */\n get _metadataRoot(): ZodType {\n return this.naked()\n }\n\n /**\n * The type of component to use to display the field and its options\n */\n displayAs<\n UI extends UIComponentDefinitions = UIComponentDefinitions,\n Type extends BaseType = ZodKindToBaseType<this['_def']>,\n >(options: ParseSchema<UI[Type][keyof UI[Type]]>): this {\n return this.metadata({ displayAs: [options.id, options.params] })\n }\n\n /**\n * The title of the field. Defaults to the field name.\n */\n title(title: string): this {\n return this.metadata({ title })\n }\n\n /**\n * Whether the field is hidden in the UI. Useful for internal fields.\n * @default false\n */\n hidden<T extends any = this['_output']>(\n value?: boolean | ((shape: T | null) => util.DeepPartialBoolean<T> | boolean),\n ): this {\n let data: ZuiMetadata\n if (value === undefined) {\n data = true\n } else if (typeof value === 'function') {\n data = value.toString()\n } else {\n data = value\n }\n return this.metadata({ hidden: data })\n }\n\n /**\n * Whether the field is disabled\n * @default false\n */\n disabled<T extends any = this['_output']>(\n value?: boolean | ((shape: T | null) => util.DeepPartialBoolean<T> | boolean),\n ): this {\n let data: ZuiMetadata\n if (value === undefined) {\n data = true\n } else if (typeof value === 'function') {\n data = value.toString()\n } else {\n data = value\n }\n return this.metadata({ disabled: data })\n }\n\n /**\n * Placeholder text for the field\n */\n placeholder(placeholder: string): this {\n return this.metadata({ placeholder })\n }\n\n /**\n *\n * @returns a JSON Schema equivalent to the Zui schema\n */\n toJSONSchema(): ZuiJSONSchema {\n return toJSONSchema(this)\n }\n\n /**\n *\n * @param options generation options\n * @returns a string of the TypeScript type representing the schema\n */\n toTypescriptType(opts?: TypescriptGenerationOptions): string {\n return toTypescriptType(this, opts)\n }\n\n /**\n *\n * @param options generation options\n * @returns a typescript program (a string) that would construct the given schema if executed\n */\n toTypescriptSchema(): string {\n return toTypescriptSchema(this)\n }\n\n /**\n * Allows removing all wrappers around the schema\n * @returns either this or the closest children schema that represents the actual data\n */\n naked(): ZodTypeAny {\n return this\n }\n}\n", "import type {\n ZodAnyDef,\n ZodArrayDef,\n ZodBigIntDef,\n ZodBooleanDef,\n ZodBrandedDef,\n ZodCatchDef,\n ZodDateDef,\n ZodDefaultDef,\n ZodDiscriminatedUnionDef,\n ZodEnumDef,\n ZodFunctionDef,\n ZodIntersectionDef,\n ZodLazyDef,\n ZodLiteralDef,\n ZodMapDef,\n ZodNativeEnumDef,\n ZodNeverDef,\n ZodNullDef,\n ZodNullableDef,\n ZodNumberDef,\n ZodObjectDef,\n ZodOptionalDef,\n ZodPipelineDef,\n ZodPromiseDef,\n ZodReadonlyDef,\n ZodRecordDef,\n ZodStringDef,\n ZodEffectsDef,\n ZodTupleDef,\n ZodUndefinedDef,\n ZodUnionDef,\n ZodUnknownDef,\n ZodVoidDef,\n ZodRefDef,\n ZodSetDef,\n} from './index'\n\nexport type ZodDef =\n | ZodStringDef\n | ZodNumberDef\n | ZodBigIntDef\n | ZodBooleanDef\n | ZodDateDef\n | ZodUndefinedDef\n | ZodNullDef\n | ZodDefaultDef // contains functions\n | ZodCatchDef // contains functions\n | ZodReadonlyDef\n | ZodDiscriminatedUnionDef\n | ZodBrandedDef\n | ZodPipelineDef\n | ZodAnyDef\n | ZodUnknownDef\n | ZodNeverDef\n | ZodVoidDef\n | ZodArrayDef\n | ZodObjectDef // contains functions\n | ZodUnionDef\n | ZodIntersectionDef\n | ZodTupleDef\n | ZodRecordDef\n | ZodMapDef\n | ZodFunctionDef\n | ZodLazyDef // contains functions\n | ZodLiteralDef\n | ZodEnumDef\n | ZodEffectsDef // contains functions\n | ZodNativeEnumDef\n | ZodOptionalDef\n | ZodNullableDef\n | ZodPromiseDef\n | ZodRefDef\n | ZodSetDef\n\nexport enum ZodFirstPartyTypeKind {\n ZodString = 'ZodString',\n ZodNumber = 'ZodNumber',\n ZodNaN = 'ZodNaN',\n ZodBigInt = 'ZodBigInt',\n ZodBoolean = 'ZodBoolean',\n ZodDate = 'ZodDate',\n ZodSymbol = 'ZodSymbol',\n ZodUndefined = 'ZodUndefined',\n ZodNull = 'ZodNull',\n ZodAny = 'ZodAny',\n ZodUnknown = 'ZodUnknown',\n ZodNever = 'ZodNever',\n ZodVoid = 'ZodVoid',\n ZodArray = 'ZodArray',\n ZodObject = 'ZodObject',\n ZodUnion = 'ZodUnion',\n ZodDiscriminatedUnion = 'ZodDiscriminatedUnion',\n ZodIntersection = 'ZodIntersection',\n ZodTuple = 'ZodTuple',\n ZodRecord = 'ZodRecord',\n ZodRef = 'ZodRef',\n ZodMap = 'ZodMap',\n ZodSet = 'ZodSet',\n ZodFunction = 'ZodFunction',\n ZodLazy = 'ZodLazy',\n ZodLiteral = 'ZodLiteral',\n ZodEnum = 'ZodEnum',\n ZodEffects = 'ZodEffects',\n ZodNativeEnum = 'ZodNativeEnum',\n ZodOptional = 'ZodOptional',\n ZodNullable = 'ZodNullable',\n ZodDefault = 'ZodDefault',\n ZodCatch = 'ZodCatch',\n ZodPromise = 'ZodPromise',\n ZodBranded = 'ZodBranded',\n ZodPipeline = 'ZodPipeline',\n ZodReadonly = 'ZodReadonly',\n}\n\nexport type KindToDef<T extends ZodFirstPartyTypeKind> = T extends ZodFirstPartyTypeKind.ZodString\n ? ZodStringDef\n : T extends ZodFirstPartyTypeKind.ZodNumber\n ? ZodNumberDef\n : T extends ZodFirstPartyTypeKind.ZodBigInt\n ? ZodBigIntDef\n : T extends ZodFirstPartyTypeKind.ZodBoolean\n ? ZodBooleanDef\n : T extends ZodFirstPartyTypeKind.ZodDate\n ? ZodDateDef\n : T extends ZodFirstPartyTypeKind.ZodUndefined\n ? ZodUndefinedDef\n : T extends ZodFirstPartyTypeKind.ZodNull\n ? ZodNullDef\n : T extends ZodFirstPartyTypeKind.ZodAny\n ? ZodAnyDef\n : T extends ZodFirstPartyTypeKind.ZodUnknown\n ? ZodUnknownDef\n : T extends ZodFirstPartyTypeKind.ZodNever\n ? ZodNeverDef\n : T extends ZodFirstPartyTypeKind.ZodVoid\n ? ZodVoidDef\n : T extends ZodFirstPartyTypeKind.ZodArray\n ? ZodArrayDef\n : T extends ZodFirstPartyTypeKind.ZodObject\n ? ZodObjectDef\n : T extends ZodFirstPartyTypeKind.ZodUnion\n ? ZodUnionDef\n : T extends ZodFirstPartyTypeKind.ZodIntersection\n ? ZodIntersectionDef\n : T extends ZodFirstPartyTypeKind.ZodTuple\n ? ZodTupleDef\n : T extends ZodFirstPartyTypeKind.ZodRecord\n ? ZodRecordDef\n : T extends ZodFirstPartyTypeKind.ZodMap\n ? ZodMapDef\n : T extends ZodFirstPartyTypeKind.ZodFunction\n ? ZodFunctionDef\n : T extends ZodFirstPartyTypeKind.ZodLazy\n ? ZodLazyDef\n : T extends ZodFirstPartyTypeKind.ZodLiteral\n ? ZodLiteralDef\n : T extends ZodFirstPartyTypeKind.ZodEnum\n ? ZodEnumDef\n : T extends ZodFirstPartyTypeKind.ZodEffects\n ? ZodEffectsDef\n : T extends ZodFirstPartyTypeKind.ZodNativeEnum\n ? ZodNativeEnumDef\n : T extends ZodFirstPartyTypeKind.ZodOptional\n ? ZodOptionalDef\n : T extends ZodFirstPartyTypeKind.ZodNullable\n ? ZodNullableDef\n : T extends ZodFirstPartyTypeKind.ZodPromise\n ? ZodPromiseDef\n : T extends ZodFirstPartyTypeKind.ZodDiscriminatedUnion\n ? ZodDiscriminatedUnionDef<any>\n : T extends ZodFirstPartyTypeKind.ZodCatch\n ? ZodCatchDef\n : T extends ZodFirstPartyTypeKind.ZodDefault\n ? ZodDefaultDef\n : T extends ZodFirstPartyTypeKind.ZodBranded\n ? ZodBrandedDef<any>\n : T extends ZodFirstPartyTypeKind.ZodPipeline\n ? ZodPipelineDef<any, any>\n : T extends ZodFirstPartyTypeKind.ZodReadonly\n ? ZodReadonlyDef\n : never\n", "import { zuiKey } from '../../../ui/constants'\nimport type { ZodErrorMap } from '../error'\nimport type { ProcessedCreateParams, RawCreateParams } from '../index'\n\nexport namespace util {\n export type IsEqual<T, U> = (<V>() => V extends T ? 1 : 2) extends <V>() => V extends U ? 1 : 2 ? true : false\n\n export type isAny<T> = 0 extends 1 & T ? true : false\n export const assertEqual = <A, B>(val: IsEqual<A, B>) => val\n export function assertIs<T>(_arg: T): void {}\n export function assertNever(_x: never): never {\n throw new Error('assertNever called')\n }\n\n export type AssertNever<_T extends never> = true\n export type AssertTrue<_T extends true> = true\n\n export type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>\n export type OmitKeys<T, K extends string> = Pick<T, Exclude<keyof T, K>>\n export type MakePartial<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>\n export type DeepPartialBoolean<T> = {\n [K in keyof T]?: T[K] extends object ? DeepPartialBoolean<T[K]> | boolean : boolean\n }\n\n export const arrayToEnum = <T extends string, U extends [T, ...T[]]>(items: U): { [k in U[number]]: k } => {\n const obj: { [k in U[number]]?: k } = {}\n for (const item of items) {\n obj[item] = item\n }\n return obj as { [k in U[number]]: k }\n }\n\n export const getValidEnumValues = (obj: any) => {\n const validKeys = objectKeys(obj).filter((k: any) => typeof obj[obj[k]] !== 'number')\n const filtered: any = {}\n for (const k of validKeys) {\n filtered[k] = obj[k]\n }\n return objectValues(filtered)\n }\n\n export const objectValues = (obj: any) => {\n return objectKeys(obj).map(function (e) {\n return obj[e]\n })\n }\n\n export const objectKeys: ObjectConstructor['keys'] =\n typeof Object.keys === 'function' // eslint-disable-line ban/ban\n ? (obj: any) => Object.keys(obj) // eslint-disable-line ban/ban\n : (object: any) => {\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\n export const find = <T>(arr: T[], checker: (arg: T) => any): T | undefined => {\n for (const item of arr) {\n if (checker(item)) return item\n }\n return undefined\n }\n\n export type identity<T> = objectUtil.identity<T>\n export type flatten<T> = objectUtil.flatten<T>\n\n export type noUndefined<T> = T extends undefined ? never : T\n\n export const isInteger: NumberConstructor['isInteger'] =\n typeof Number.isInteger === 'function'\n ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n : (val) => typeof val === 'number' && isFinite(val) && Math.floor(val) === val\n\n export function joinValues<T extends any[]>(array: T, separator = ' | '): string {\n return array.map((val) => (typeof val === 'string' ? `'${val}'` : val)).join(separator)\n }\n\n export const jsonStringifyReplacer = (_: string, value: any): any => {\n if (typeof value === 'bigint') {\n return value.toString()\n }\n return value\n }\n\n export const compareFunctions = (a: Function, b: Function) => {\n /**\n * The only proper way to deeply compare functions would be to ensure they return the same value for the same input.\n * This is impossible to do unless the domain of the function is known and the function is pure.\n *\n * Comparing source code is not ideal since 2 function could be equivalent but have different source code,\n * but that's our best option.\n */\n return a.toString() === b.toString()\n }\n\n export const mock = <T>(): T => ({}) as T\n\n export type Satisfies<X extends Y, Y> = X\n\n type NormalizeObject<T extends object> = T extends infer O ? { [K in keyof O]: Normalize<O[K]> } : never\n export type Normalize<T> = T extends (...args: infer A) => infer R\n ? (...args: Normalize<A>) => Normalize<R>\n : T extends Array<infer E>\n ? Array<Normalize<E>>\n : T extends ReadonlyArray<infer E>\n ? ReadonlyArray<Normalize<E>>\n : T extends Promise<infer R>\n ? Promise<Normalize<R>>\n : T extends Buffer\n ? Buffer\n : T extends object\n ? NormalizeObject<T>\n : T\n}\n\nexport namespace objectUtil {\n export type MergeShapes<U, V> = {\n [k in Exclude<keyof U, keyof V>]: U[k]\n } & V\n\n type optionalKeys<T extends object> = {\n [k in keyof T]: undefined extends T[k] ? k : never\n }[keyof T]\n\n type requiredKeys<T extends object> = {\n [k in keyof T]: undefined extends T[k] ? never : k\n }[keyof T]\n\n export type addQuestionMarks<\n T extends object,\n R extends keyof T = requiredKeys<T>,\n O extends keyof T = optionalKeys<T>,\n > = Pick<T, R> & Partial<Pick<T, O>> & { [k in keyof T]?: unknown }\n\n export type identity<T> = T\n export type flatten<T> = identity<{ [k in keyof T]: T[k] }>\n\n export type noNeverKeys<T> = {\n [k in keyof T]: [T[k]] extends [never] ? never : k\n }[keyof T]\n\n export type noNever<T> = identity<{\n [k in noNeverKeys<T>]: k extends keyof T ? T[k] : never\n }>\n\n export const mergeShapes = <U, T>(first: U, second: T): T & U => {\n return {\n ...first,\n ...second, // second overwrites first\n }\n }\n\n export type extendShape<A, B> = flatten<Omit<A, keyof B> & B>\n}\n\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])\n\nexport type ZodParsedType = keyof typeof ZodParsedType\n\nexport const getParsedType = (data: any): ZodParsedType => {\n const t = typeof data\n\n switch (t) {\n case 'undefined':\n return ZodParsedType.undefined\n\n case 'string':\n return ZodParsedType.string\n\n case 'number':\n return isNaN(data) ? ZodParsedType.nan : ZodParsedType.number\n\n case 'boolean':\n return ZodParsedType.boolean\n\n case 'function':\n return ZodParsedType.function\n\n case 'bigint':\n return ZodParsedType.bigint\n\n case 'symbol':\n return ZodParsedType.symbol\n\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\n default:\n return ZodParsedType.unknown\n }\n}\n\nexport function processCreateParams(\n params: RawCreateParams & ({ supportsExtensions?: 'secret'[] } | undefined),\n): ProcessedCreateParams {\n if (!params) return {}\n\n const {\n errorMap,\n invalid_type_error,\n required_error,\n description,\n supportsExtensions,\n [zuiKey]: zuiExtensions,\n } = params\n\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\n const filteredZuiExtensions = zuiExtensions\n ? Object.fromEntries(\n Object.entries(zuiExtensions).filter(([key]) => key !== 'secret' || supportsExtensions?.includes('secret')),\n )\n : undefined\n\n if (errorMap) return { errorMap: errorMap, description, [zuiKey]: filteredZuiExtensions }\n\n const customMap: ZodErrorMap = (iss, ctx) => {\n if (iss.code !== 'invalid_type') return { message: ctx.defaultError }\n if (typeof ctx.data === 'undefined') {\n return { message: required_error ?? ctx.defaultError }\n }\n return { message: invalid_type_error ?? ctx.defaultError }\n }\n return { errorMap: customMap, description, [zuiKey]: filteredZuiExtensions }\n}\n", "import { type ZodErrorMap, util, ZodIssueCode, ZodParsedType } from '../../index'\n\nexport const errorMap: ZodErrorMap = (issue, _ctx) => {\n let message: string\n switch (issue.code) {\n case ZodIssueCode.invalid_type:\n if (issue.received === ZodParsedType.undefined) {\n message = 'Required'\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\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 } else if ('startsWith' in issue.validation) {\n message = `Invalid input: must start with \"${issue.validation.startsWith}\"`\n } else if ('endsWith' in issue.validation) {\n message = `Invalid input: must end with \"${issue.validation.endsWith}\"`\n } else {\n util.assertNever(issue.validation)\n }\n } else if (issue.validation !== 'regex') {\n message = `Invalid ${issue.validation}`\n } else {\n message = 'Invalid'\n }\n break\n case ZodIssueCode.too_small:\n if (issue.type === 'array')\n message = `Array must contain ${\n issue.exact ? 'exactly' : issue.inclusive ? `at least` : `more than`\n } ${issue.minimum} element(s)`\n else if (issue.type === 'string')\n message = `String must contain ${\n issue.exact ? 'exactly' : issue.inclusive ? `at least` : `over`\n } ${issue.minimum} character(s)`\n else if (issue.type === 'number')\n message = `Number must be ${\n issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `\n }${issue.minimum}`\n else if (issue.type === 'date')\n message = `Date must be ${\n issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `\n }${new Date(Number(issue.minimum))}`\n else message = 'Invalid input'\n break\n case ZodIssueCode.too_big:\n if (issue.type === 'array')\n message = `Array must contain ${\n issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`\n } ${issue.maximum} element(s)`\n else if (issue.type === 'string')\n message = `String must contain ${\n issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`\n } ${issue.maximum} character(s)`\n else if (issue.type === 'number')\n message = `Number must be ${\n issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`\n } ${issue.maximum}`\n else if (issue.type === 'bigint')\n message = `BigInt must be ${\n issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`\n } ${issue.maximum}`\n else if (issue.type === 'date')\n message = `Date must be ${\n issue.exact ? `exactly` : issue.inclusive ? `smaller than or equal to` : `smaller than`\n } ${new Date(Number(issue.maximum))}`\n else 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 case ZodIssueCode.unresolved_reference:\n message = 'Unresolved reference'\n break\n default:\n message = _ctx.defaultError\n util.assertNever(issue)\n }\n return { message }\n}\n\nexport default errorMap\n", "import { errorMap as defaultErrorMap } from './locales/en'\nimport { TypeOf, ZodType, ZodParsedType, util, Primitive } from '../index'\n\ntype allKeys<T> = T extends any ? keyof T : never\n\nexport type inferFlattenedErrors<T extends ZodType<any, any, any>, U = string> = typeToFlattenedError<TypeOf<T>, U>\nexport type typeToFlattenedError<T, U = string> = {\n formErrors: U[]\n fieldErrors: {\n [P in allKeys<T>]?: U[]\n }\n}\n\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 'unresolved_reference',\n])\n\nexport type ZodIssueCode = keyof typeof ZodIssueCode\n\nexport type ZodIssueBase = {\n path: (string | number)[]\n message?: string\n}\n\nexport interface ZodInvalidTypeIssue extends ZodIssueBase {\n code: typeof ZodIssueCode.invalid_type\n expected: ZodParsedType\n received: ZodParsedType\n}\n\nexport interface ZodInvalidLiteralIssue extends ZodIssueBase {\n code: typeof ZodIssueCode.invalid_literal\n expected: unknown\n received: unknown\n}\n\nexport interface ZodUnrecognizedKeysIssue extends ZodIssueBase {\n code: typeof ZodIssueCode.unrecognized_keys\n keys: string[]\n}\n\nexport interface ZodInvalidUnionIssue extends ZodIssueBase {\n code: typeof ZodIssueCode.invalid_union\n unionErrors: ZodError[]\n}\n\nexport interface ZodInvalidUnionDiscriminatorIssue extends ZodIssueBase {\n code: typeof ZodIssueCode.invalid_union_discriminator\n options: Primitive[]\n}\n\nexport interface ZodInvalidEnumValueIssue extends ZodIssueBase {\n received: string | number\n code: typeof ZodIssueCode.invalid_enum_value\n options: (string | number)[]\n}\n\nexport interface ZodInvalidArgumentsIssue extends ZodIssueBase {\n code: typeof ZodIssueCode.invalid_arguments\n argumentsError: ZodError\n}\n\nexport interface ZodInvalidReturnTypeIssue extends ZodIssueBase {\n code: typeof ZodIssueCode.invalid_return_type\n returnTypeError: ZodError\n}\n\nexport interface ZodInvalidDateIssue extends ZodIssueBase {\n code: typeof ZodIssueCode.invalid_date\n}\n\nexport type StringValidation =\n | 'email'\n | 'url'\n | 'emoji'\n | 'uuid'\n | 'regex'\n | 'cuid'\n | 'cuid2'\n | 'ulid'\n | 'datetime'\n | 'ip'\n | { includes: string; position?: number }\n | { startsWith: string }\n | { endsWith: string }\n\nexport interface ZodInvalidStringIssue extends ZodIssueBase {\n code: typeof ZodIssueCode.invalid_string\n validation: StringValidation\n}\n\nexport interface ZodTooSmallIssue extends ZodIssueBase {\n code: typeof ZodIssueCode.too_small\n minimum: number | bigint\n inclusive: boolean\n exact?: boolean\n type: 'array' | 'string' | 'number' | 'set' | 'date' | 'bigint'\n}\n\nexport interface ZodTooBigIssue extends ZodIssueBase {\n code: typeof ZodIssueCode.too_big\n maximum: number | bigint\n inclusive: boolean\n exact?: boolean\n type: 'array' | 'string' | 'number' | 'set' | 'date' | 'bigint'\n}\n\nexport interface ZodInvalidIntersectionTypesIssue extends ZodIssueBase {\n code: typeof ZodIssueCode.invalid_intersection_types\n}\n\nexport interface ZodNotMultipleOfIssue extends ZodIssueBase {\n code: typeof ZodIssueCode.not_multiple_of\n multipleOf: number | bigint\n}\n\nexport interface ZodNotFiniteIssue extends ZodIssueBase {\n code: typeof ZodIssueCode.not_finite\n}\n\nexport interface ZodUnresolvedReferenceIssue extends ZodIssueBase {\n code: typeof ZodIssueCode.unresolved_reference\n}\n\nexport interface ZodCustomIssue extends ZodIssueBase {\n code: typeof ZodIssueCode.custom\n params?: { [k: string]: any }\n}\n\nexport type DenormalizedError = { [k: string]: DenormalizedError | string[] }\n\nexport type ZodIssueOptionalMessage =\n | ZodInvalidTypeIssue\n | ZodInvalidLiteralIssue\n | ZodUnrecognizedKeysIssue\n | ZodInvalidUnionIssue\n | ZodInvalidUnionDiscriminatorIssue\n | ZodInvalidEnumValueIssue\n | ZodInvalidArgumentsIssue\n | ZodInvalidReturnTypeIssue\n | ZodInvalidDateIssue\n | ZodInvalidStringIssue\n | ZodTooSmallIssue\n | ZodTooBigIssue\n | ZodInvalidIntersectionTypesIssue\n | ZodNotMultipleOfIssue\n | ZodNotFiniteIssue\n | ZodUnresolvedReferenceIssue\n | ZodCustomIssue\n\nexport type ZodIssue = ZodIssueOptionalMessage & {\n fatal?: boolean\n message: string\n}\n\nexport const quotelessJson = (obj: any) => {\n const json = JSON.stringify(obj, null, 2)\n return json.replace(/\"([^\"]+)\":/g, '$1:')\n}\n\ntype recursiveZodFormattedError<T> = T extends [any, ...any[]]\n ? { [K in keyof T]?: ZodFormattedError<T[K]> }\n : T extends any[]\n ? { [k: number]: ZodFormattedError<T[number]> }\n : T extends object\n ? { [K in keyof T]?: ZodFormattedError<T[K]> }\n : unknown\n\nexport type ZodFormattedError<T, U = string> = {\n _errors: U[]\n} & recursiveZodFormattedError<NonNullable<T>>\n\nexport type inferFormattedError<T extends ZodType<any, any, any>, U = string> = ZodFormattedError<TypeOf<T>, U>\n\nexport class ZodError<T = any> extends Error {\n issues: ZodIssue[] = []\n\n get errors() {\n return this.issues\n }\n\n constructor(issues: ZodIssue[]) {\n super()\n\n const actualProto = new.target.prototype\n if (Object.setPrototypeOf) {\n // eslint-disable-next-line ban/ban\n Object.setPrototypeOf(this, actualProto)\n } else {\n ;(this as any).__proto__ = actualProto\n }\n this.name = 'ZodError'\n this.issues = issues\n }\n\n format(): ZodFormattedError<T>\n format<U>(mapper: (issue: ZodIssue) => U): ZodFormattedError<T, U>\n format(_mapper?: any) {\n const mapper: (issue: ZodIssue) => any =\n _mapper ||\n function (issue: ZodIssue) {\n return issue.message\n }\n const fieldErrors = { _errors: [] } as ZodFormattedError<T>\n const processError = (error: ZodError) => {\n for (const issue of error.issues) {\n if (issue.code === 'invalid_union') {\n issue.unionErrors.map(processError)\n } else if (issue.code === 'invalid_return_type') {\n processError(issue.returnTypeError)\n } else if (issue.code === 'invalid_arguments') {\n processError(issue.argumentsError)\n } else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue))\n } else {\n let curr: any = 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\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 } else {\n curr[el] = curr[el] || { _errors: [] }\n curr[el]._errors.push(mapper(issue))\n }\n\n curr = curr[el]\n i++\n }\n }\n }\n }\n\n processError(this)\n return fieldErrors\n }\n\n static create = (issues: ZodIssue[]) => {\n const error = new ZodError(issues)\n return error\n }\n\n static assert(value: unknown): asserts value is ZodError {\n if (!(value instanceof ZodError)) {\n throw new Error(`Not a ZodError: ${value}`)\n }\n }\n\n toString() {\n return this.message\n }\n get message() {\n return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2)\n }\n\n get isEmpty(): boolean {\n return this.issues.length === 0\n }\n\n addIssue = (sub: ZodIssue) => {\n this.issues = [...this.issues, sub]\n }\n\n addIssues = (subs: ZodIssue[] = []) => {\n this.issues = [...this.issues, ...subs]\n }\n\n flatten(): typeToFlattenedError<T>\n flatten<U>(mapper?: (issue: ZodIssue) => U): typeToFlattenedError<T, U>\n flatten<U = string>(mapper: (issue: ZodIssue) => U = (issue: ZodIssue) => issue.message as U): any {\n const fieldErrors: any = {}\n const formErrors: U[] = []\n for (const sub of this.issues) {\n if (sub.path.length > 0) {\n fieldErrors[sub.path[0]!] = fieldErrors[sub.path[0]!] || []\n fieldErrors[sub.path[0]!].push(mapper(sub))\n } else {\n formErrors.push(mapper(sub))\n }\n }\n return { formErrors, fieldErrors }\n }\n\n get formErrors() {\n return this.flatten()\n }\n}\n\ntype stripPath<T extends object> = T extends any ? util.OmitKeys<T, 'path'> : never\n\nexport type IssueData = stripPath<ZodIssueOptionalMessage> & {\n path?: (string | number)[]\n fatal?: boolean\n}\n\nexport type ErrorMapCtx = {\n defaultError: string\n data: any\n}\n\nexport type ZodErrorMap = (issue: ZodIssueOptionalMessage, _ctx: ErrorMapCtx) => { message: string }\n\nlet overrideErrorMap = defaultErrorMap\nexport { defaultErrorMap }\n\nexport function setErrorMap(map: ZodErrorMap) {\n overrideErrorMap = map\n}\n\nexport function getErrorMap() {\n return overrideErrorMap\n}\n", "import { IssueData, ZodErrorMap, ZodIssue, defaultErrorMap, getErrorMap } from '../error'\nimport type { ZodParsedType } from '.'\n\nexport const makeIssue = (params: {\n data: any\n path: (string | number)[]\n errorMaps: ZodErrorMap[]\n issueData: IssueData\n}): ZodIssue => {\n const { data, path, errorMaps, issueData } = params\n const fullPath = [...path, ...(issueData.path || [])]\n const fullIssue = {\n ...issueData,\n path: fullPath,\n }\n\n let errorMessage = ''\n const maps = errorMaps\n .filter((m) => !!m)\n .slice()\n .reverse() as ZodErrorMap[]\n for (const map of maps) {\n errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message\n }\n\n return {\n ...issueData,\n path: fullPath,\n message: issueData.message ?? errorMessage,\n }\n}\n\nexport type ParseParams = {\n path: (string | number)[]\n errorMap: ZodErrorMap\n async: boolean\n}\n\nexport type ParsePathComponent = string | number\nexport type ParsePath = ParsePathComponent[]\nexport const EMPTY_PATH: ParsePath = []\n\nexport interface ParseContext {\n readonly common: {\n readonly issues: ZodIssue[]\n readonly contextualErrorMap?: ZodErrorMap\n readonly async: boolean\n }\n readonly path: ParsePath\n readonly schemaErrorMap?: ZodErrorMap\n readonly parent: ParseContext | null\n readonly data: any\n readonly parsedType: ZodParsedType\n}\n\nexport type ParseInput = {\n data: any\n path: (string | number)[]\n parent: ParseContext\n}\n\nexport function addIssueToContext(ctx: ParseContext, issueData: IssueData): void {\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 getErrorMap(), // then global override map\n defaultErrorMap, // then global default map\n ].filter((x) => !!x) as ZodErrorMap[],\n })\n ctx.common.issues.push(issue)\n}\n\nexport type ObjectPair = {\n key: SyncParseReturnType<any>\n value: SyncParseReturnType<any>\n}\nexport class ParseStatus {\n value: 'aborted' | 'dirty' | 'valid' = 'valid'\n dirty() {\n if (this.value === 'valid') this.value = 'dirty'\n }\n abort() {\n if (this.value !== 'aborted') this.value = 'aborted'\n }\n\n static mergeArray(status: ParseStatus, results: SyncParseReturnType<any>[]): SyncParseReturnType {\n const arrayValue: any[] = []\n for (const s of results) {\n if (s.status === 'aborted') return INVALID\n if (s.status === 'dirty') status.dirty()\n arrayValue.push(s.value)\n }\n\n return { status: status.value, value: arrayValue }\n }\n\n static async mergeObjectAsync(\n status: ParseStatus,\n pairs: { key: ParseReturnType<any>; value: ParseReturnType<any> }[],\n ): Promise<SyncParseReturnType<any>> {\n const syncPairs: ObjectPair[] = []\n for (const pair of pairs) {\n syncPairs.push({\n key: await pair.key,\n value: await pair.value,\n })\n }\n return ParseStatus.mergeObjectSync(status, syncPairs)\n }\n\n static mergeObjectSync(\n status: ParseStatus,\n pairs: {\n key: SyncParseReturnType<any>\n value: SyncParseReturnType<any>\n alwaysSet?: boolean\n }[],\n ): SyncParseReturnType {\n const finalObject: any = {}\n for (const pair of pairs) {\n const { key, value } = pair\n if (key.status === 'aborted') return INVALID\n if (value.status === 'aborted') return INVALID\n if (key.status === 'dirty') status.dirty()\n if (value.status === 'dirty') status.dirty()\n\n if (key.value !== '__proto__' && (typeof value.value !== 'undefined' || pair.alwaysSet)) {\n finalObject[key.value] = value.value\n }\n }\n\n return { status: status.value, value: finalObject }\n }\n}\nexport interface ParseResult {\n status: 'aborted' | 'dirty' | 'valid'\n data: any\n}\n\nexport type INVALID = { status: 'aborted' }\nexport const INVALID: INVALID = Object.freeze({\n status: 'aborted',\n})\n\nexport type DIRTY<T> = { status: 'dirty'; value: T }\nexport const DIRTY = <T>(value: T): DIRTY<T> => ({ status: 'dirty', value })\n\nexport type OK<T> = { status: 'valid'; value: T }\nexport const OK = <T>(value: T): OK<T> => ({ status: 'valid', value })\n\nexport type SyncParseReturnType<T = any> = OK<T> | DIRTY<T> | INVALID\nexport type AsyncParseReturnType<T> = Promise<SyncParseReturnType<T>>\nexport type ParseReturnType<T> = SyncParseReturnType<T> | AsyncParseReturnType<T>\n\nexport const isAborted = (x: ParseReturnType<any>): x is INVALID => (x as SyncParseReturnType).status === 'aborted'\nexport const isDirty = <T>(x: ParseReturnType<T>): x is OK<T> | DIRTY<T> =>\n (x as SyncParseReturnType).status === 'dirty'\nexport const isValid = <T>(x: ParseReturnType<T>): x is OK<T> => (x as SyncParseReturnType).status === 'valid'\nexport const isAsync = <T>(x: ParseReturnType<T>): x is AsyncParseReturnType<T> =>\n typeof Promise !== 'undefined' && x instanceof Promise\n", "export namespace errorUtil {\n export type ErrMessage = string | { message?: string }\n export const errToObj = (message?: ErrMessage) => (typeof message === 'string' ? { message } : message || {})\n export const toString = (message?: ErrMessage): string | undefined =>\n typeof message === 'string' ? message : message?.message\n}\n", "import {\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeDef,\n OK,\n ParseInput,\n ParseReturnType,\n processCreateParams,\n} from '../index'\n\nexport interface ZodAnyDef extends ZodTypeDef {\n typeName: ZodFirstPartyTypeKind.ZodAny\n}\n\nexport class ZodAny extends ZodType<any, ZodAnyDef> {\n // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n _any = true as const\n _parse(input: ParseInput): ParseReturnType<this['_output']> {\n return OK(input.data)\n }\n static create = (params?: RawCreateParams): ZodAny => {\n return new ZodAny({\n typeName: ZodFirstPartyTypeKind.ZodAny,\n ...processCreateParams(params),\n })\n }\n\n public isEqual(schema: ZodType) {\n return schema instanceof ZodAny\n }\n}\n", "import {\n ZodIssueCode,\n ParseInputLazyPath,\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeAny,\n ZodTypeDef,\n processCreateParams,\n ZodParsedType,\n errorUtil,\n addIssueToContext,\n INVALID,\n ParseInput,\n ParseReturnType,\n ParseStatus,\n} from '../index'\nimport { isEqual } from 'lodash-es'\n\nexport interface ZodArrayDef<T extends ZodTypeAny = ZodTypeAny> extends ZodTypeDef {\n type: T\n typeName: ZodFirstPartyTypeKind.ZodArray\n exactLength: { value: number; message?: string } | null\n minLength: { value: number; message?: string } | null\n maxLength: { value: number; message?: string } | null\n}\n\nexport type ArrayCardinality = 'many' | 'atleastone'\nexport type arrayOutputType<\n T extends ZodTypeAny,\n Cardinality extends ArrayCardinality = 'many',\n> = Cardinality extends 'atleastone' ? [T['_output'], ...T['_output'][]] : T['_output'][]\n\nexport class ZodArray<T extends ZodTypeAny = ZodTypeAny, Cardinality extends ArrayCardinality = 'many'> extends ZodType<\n arrayOutputType<T, Cardinality>,\n ZodArrayDef<T>,\n Cardinality extends 'atleastone' ? [T['_input'], ...T['_input'][]] : T['_input'][]\n> {\n dereference(defs: Record<string, ZodTypeAny>): ZodTypeAny {\n return new ZodArray({\n ...this._def,\n type: this._def.type.dereference(defs),\n })\n }\n\n getReferences(): string[] {\n return this._def.type.getReferences()\n }\n\n clone(): ZodArray<T, Cardinality> {\n return new ZodArray({\n ...this._def,\n type: this._def.type.clone(),\n }) as ZodArray<T, Cardinality>\n }\n\n isEqual(schema: ZodType): boolean {\n if (!(schema instanceof ZodArray)) {\n return false\n }\n return (\n // message is not considered for equality\n isEqual(this._def.exactLength?.value, schema._def.exactLength?.value) &&\n isEqual(this._def.maxLength?.value, schema._def.maxLength?.value) &&\n isEqual(this._def.minLength?.value, schema._def.minLength?.value) &&\n this._def.type.isEqual(schema._def.type)\n )\n }\n\n _parse(input: ParseInput): ParseReturnType<this['_output']> {\n const { ctx, status } = this._processInputParams(input)\n\n const def = this._def\n\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\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) as number,\n maximum: (tooBig ? def.exactLength.value : undefined) as number,\n type: 'array',\n inclusive: true,\n exact: true,\n message: def.exactLength.message,\n })\n status.dirty()\n }\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\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\n if (ctx.common.async) {\n return Promise.all(\n [...ctx.data].map((item, i) => {\n return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i))\n }),\n ).then((result) => {\n return ParseStatus.mergeArray(status, result)\n })\n }\n\n const result = [...ctx.data].map((item, i) => {\n return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i))\n })\n\n return ParseStatus.mergeArray(status, result)\n }\n\n get element() {\n return this._def.type\n }\n\n min(minLength: number, message?: errorUtil.ErrMessage): this {\n return new ZodArray({\n ...this._def,\n minLength: { value: minLength, message: errorUtil.toString(message) },\n }) as this\n }\n\n max(maxLength: number, message?: errorUtil.ErrMessage): this {\n return new ZodArray({\n ...this._def,\n maxLength: { value: maxLength, message: errorUtil.toString(message) },\n }) as this\n }\n\n length(len: number, message?: errorUtil.ErrMessage): this {\n return new ZodArray({\n ...this._def,\n exactLength: { value: len, message: errorUtil.toString(message) },\n }) as this\n }\n\n nonempty(message?: errorUtil.ErrMessage): ZodArray<T, 'atleastone'> {\n return this.min(1, message) as ZodArray<T, 'atleastone'>\n }\n\n static create = <T extends ZodTypeAny>(schema: T, params?: RawCreateParams): ZodArray<T> => {\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 }\n}\n\nexport type ZodNonEmptyArray<T extends ZodTypeAny> = ZodArray<T, 'atleastone'>\n", "import * as lodash from 'lodash-es'\n\n/** Sadly, this type is not exported by lodash, so we must redefine it */\ntype IsEqualCustomizer = (\n value: any,\n other: any,\n indexOrKey: PropertyKey | undefined,\n parent: any,\n otherParent: any,\n stack: any,\n) => boolean | undefined\n\nexport const isEqual = (a: any, b: any): boolean => {\n return _isEqualWithVisitedTracking(a, b, new WeakSet())\n}\n\nconst _isEqualWithVisitedTracking = (a: any, b: any, visited: WeakSet<any>): boolean =>\n lodash.isEqualWith(a, b, _customizerWithVisitedTracking(visited))\n\nconst _customizerWithVisitedTracking =\n (visited: WeakSet<any>): IsEqualCustomizer =>\n (a, b) => {\n if (lodash.isPlainObject(a) && !visited.has(a) && lodash.isPlainObject(b) && !visited.has(b)) {\n const cleanedA = lodash.omitBy(a, lodash.isUndefined)\n const cleanedB = lodash.omitBy(b, lodash.isUndefined)\n\n // Prevent infinite recursion: mark objects as already checked:\n visited.add(cleanedA).add(cleanedB).add(a).add(b)\n\n return _isEqualWithVisitedTracking(cleanedA, cleanedB, visited)\n }\n\n return undefined // Offload to default lodash isEqual comparison\n }\n", "import { isEqual } from './is-equal'\n\nexport type CustomSetOptions<T> = {\n compare: (a: T, b: T) => boolean\n}\n\nconst DEFAULT_OPTIONS: CustomSetOptions<any> = {\n compare: isEqual,\n}\n\nexport class CustomSet<T> {\n private _items: T[]\n private _options: CustomSetOptions<T>\n\n public constructor(items: T[] = [], opt: Partial<CustomSetOptions<T>> = {}) {\n this._options = { ...DEFAULT_OPTIONS, ...opt }\n this._items = []\n for (const i of items) {\n this.add(i)\n }\n }\n\n public get items(): T[] {\n return [...this._items]\n }\n\n public get size(): number {\n return this._items.length\n }\n\n public has(item: T): boolean {\n return this._items.some((i) => this._options.compare(i, item))\n }\n\n public add(item: T): void {\n if (!this.has(item)) {\n this._items.push(item)\n }\n }\n\n public isEqual(other: CustomSet<T>): boolean {\n if (this.size !== other.size) {\n return false\n }\n return this.isSubsetOf(other) && other.isSubsetOf(this)\n }\n\n public isSubsetOf(other: CustomSet<T>): boolean {\n if (this.size > other.size) {\n return false\n }\n return this._items.every((i) => other.has(i))\n }\n}\n", "import {\n addIssueToContext,\n INVALID,\n ParseContext,\n ParseInput,\n ParseReturnType,\n ParseStatus,\n ZodIssueCode,\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeDef,\n processCreateParams,\n util,\n ZodParsedType,\n errorUtil,\n} from '../index'\nimport { CustomSet } from '../utils/custom-set'\n\nexport type ZodBigIntCheck =\n | { kind: 'min'; value: bigint; inclusive: boolean; message?: string }\n | { kind: 'max'; value: bigint; inclusive: boolean; message?: string }\n | { kind: 'multipleOf'; value: bigint; message?: string }\n\nexport interface ZodBigIntDef extends ZodTypeDef {\n checks: ZodBigIntCheck[]\n typeName: ZodFirstPartyTypeKind.ZodBigInt\n coerce: boolean\n}\n\nexport class ZodBigInt extends ZodType<bigint, ZodBigIntDef> {\n _parse(input: ParseInput): ParseReturnType<bigint> {\n if (this._def.coerce) {\n input.data = BigInt(input.data)\n }\n const parsedType = this._getType(input)\n if (parsedType !== ZodParsedType.bigint) {\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\n let ctx: undefined | ParseContext = undefined\n const status = new ParseStatus()\n\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 } 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 } 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 } else {\n util.assertNever(check)\n }\n }\n\n return { status: status.value, value: input.data }\n }\n\n static create = (params?: RawCreateParams & { coerce?: boolean }): ZodBigInt => {\n return new ZodBigInt({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodBigInt,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n })\n }\n\n isEqual(schema: ZodType): boolean {\n if (!(schema instanceof ZodBigInt)) {\n return false\n }\n if (this._def.coerce !== schema._def.coerce) return false\n\n const thisChecks = new CustomSet<ZodBigIntCheck>(this._def.checks)\n const thatChecks = new CustomSet<ZodBigIntCheck>(schema._def.checks)\n\n return thisChecks.isEqual(thatChecks)\n }\n\n gte(value: bigint, message?: errorUtil.ErrMessage) {\n return this.setLimit('min', value, true, errorUtil.toString(message))\n }\n min = this.gte\n\n gt(value: bigint, message?: errorUtil.ErrMessage) {\n return this.setLimit('min', value, false, errorUtil.toString(message))\n }\n\n lte(value: bigint, message?: errorUtil.ErrMessage) {\n return this.setLimit('max', value, true, errorUtil.toString(message))\n }\n max = this.lte\n\n lt(value: bigint, message?: errorUtil.ErrMessage) {\n return this.setLimit('max', value, false, errorUtil.toString(message))\n }\n\n protected setLimit(kind: 'min' | 'max', value: bigint, inclusive: boolean, message?: string) {\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\n _addCheck(check: ZodBigIntCheck) {\n return new ZodBigInt({\n ...this._def,\n checks: [...this._def.checks, check],\n })\n }\n\n positive(message?: errorUtil.ErrMessage) {\n return this._addCheck({\n kind: 'min',\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n })\n }\n\n negative(message?: errorUtil.ErrMessage) {\n return this._addCheck({\n kind: 'max',\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n })\n }\n\n nonpositive(message?: errorUtil.ErrMessage) {\n return this._addCheck({\n kind: 'max',\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n })\n }\n\n nonnegative(message?: errorUtil.ErrMessage) {\n return this._addCheck({\n kind: 'min',\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n })\n }\n\n multipleOf(value: bigint, message?: errorUtil.ErrMessage) {\n return this._addCheck({\n kind: 'multipleOf',\n value,\n message: errorUtil.toString(message),\n })\n }\n\n get minValue() {\n let min: bigint | null = null\n for (const ch of this._def.checks) {\n if (ch.kind === 'min') {\n if (min === null || ch.value > min) min = ch.value\n }\n }\n return min\n }\n\n get maxValue() {\n let max: bigint | null = null\n for (const ch of this._def.checks) {\n if (ch.kind === 'max') {\n if (max === null || ch.value < max) max = ch.value\n }\n }\n return max\n }\n}\n", "import {\n ZodIssueCode,\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeDef,\n processCreateParams,\n ZodParsedType,\n addIssueToContext,\n INVALID,\n OK,\n ParseInput,\n ParseReturnType,\n} from '../index'\n\nexport interface ZodBooleanDef extends ZodTypeDef {\n typeName: ZodFirstPartyTypeKind.ZodBoolean\n coerce: boolean\n}\n\nexport class ZodBoolean extends ZodType<boolean, ZodBooleanDef> {\n _parse(input: ParseInput): ParseReturnType<boolean> {\n if (this._def.coerce) {\n input.data = Boolean(input.data)\n }\n const parsedType = this._getType(input)\n\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\n static create = (params?: RawCreateParams & { coerce?: boolean }): ZodBoolean => {\n return new ZodBoolean({\n typeName: ZodFirstPartyTypeKind.ZodBoolean,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n })\n }\n\n isEqual(schema: ZodType): boolean {\n if (!(schema instanceof ZodBoolean)) return false\n return this._def.coerce === schema._def.coerce\n }\n}\n", "import { ZodFirstPartyTypeKind, ZodType, ZodTypeAny, ZodTypeDef, ParseInput, ParseReturnType } from '../index'\n\ntype Key = string | number | symbol\n\nexport interface ZodBrandedDef<T extends ZodTypeAny = ZodTypeAny> extends ZodTypeDef {\n type: T\n typeName: ZodFirstPartyTypeKind.ZodBranded\n}\n\nexport const BRAND: unique symbol = Symbol('zod_brand')\nexport type BRAND<T extends Key = Key> = {\n [BRAND]: {\n [k in T]: true\n }\n}\n\nexport class ZodBranded<T extends ZodTypeAny = ZodTypeAny, B extends Key = Key> extends ZodType<\n T['_output'] & BRAND<B>,\n ZodBrandedDef<T>,\n T['_input']\n> {\n dereference(defs: Record<string, ZodTypeAny>): ZodTypeAny {\n return new ZodBranded({\n ...this._def,\n type: this._def.type.dereference(defs),\n })\n }\n\n getReferences(): string[] {\n return this._def.type.getReferences()\n }\n\n clone(): ZodBranded<T, B> {\n return new ZodBranded({\n ...this._def,\n type: this._def.type.clone(),\n }) as ZodBranded<T, B>\n }\n\n _parse(input: ParseInput): ParseReturnType<any> {\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\n unwrap() {\n return this._def.type\n }\n\n isEqual(schema: ZodType): boolean {\n if (!(schema instanceof ZodBranded)) return false\n return this._def.type.isEqual(schema._def.type)\n }\n\n naked(): ZodTypeAny {\n return this._def.type.naked()\n }\n\n mandatory(): ZodBranded<ZodTypeAny, B> {\n return new ZodBranded({\n ...this._def,\n type: this._def.type.mandatory(),\n })\n }\n}\n", "import {\n ZodError,\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeAny,\n ZodTypeDef,\n processCreateParams,\n isAsync,\n ParseContext,\n ParseInput,\n ParseReturnType,\n util,\n} from '../index'\n\nexport type CatchFn<Y> = (ctx: { error: ZodError; input: unknown }) => Y\nexport interface ZodCatchDef<T extends ZodTypeAny = ZodTypeAny> extends ZodTypeDef {\n innerType: T\n catchValue: CatchFn<T['_output']>\n typeName: ZodFirstPartyTypeKind.ZodCatch\n}\n\nexport class ZodCatch<T extends ZodTypeAny = ZodTypeAny> extends ZodType<\n T['_output'],\n ZodCatchDef<T>,\n unknown // any input will pass validation // T[\"_input\"]\n> {\n _parse(input: ParseInput): ParseReturnType<this['_output']> {\n const { ctx } = this._processInputParams(input)\n\n // newCtx is used to not collect issues from inner types in ctx\n const newCtx: ParseContext = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n }\n\n const result = this._def.innerType._parse({\n data: newCtx.data,\n path: newCtx.path,\n parent: {\n ...newCtx,\n },\n })\n\n if (isAsync(result)) {\n return result.then((result) => {\n return {\n status: 'valid',\n value:\n 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 } else {\n return {\n status: 'valid',\n value:\n 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\n removeCatch() {\n return this._def.innerType\n }\n\n static create = <T extends ZodTypeAny>(\n type: T,\n params: RawCreateParams & {\n catch: T['_output'] | CatchFn<T['_output']>\n },\n ): ZodCatch<T> => {\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 }\n\n isEqual(schema: ZodType): boolean {\n if (!(schema instanceof ZodCatch)) return false\n return (\n this._def.innerType.isEqual(schema._def.innerType) &&\n util.compareFunctions(this._def.catchValue, schema._def.catchValue)\n )\n }\n\n dereference(defs: Record<string, ZodTypeAny>): ZodTypeAny {\n return new ZodCatch({\n ...this._def,\n innerType: this._def.innerType.dereference(defs),\n })\n }\n\n getReferences(): string[] {\n return this._def.innerType.getReferences()\n }\n\n clone(): ZodCatch<T> {\n return new ZodCatch({\n ...this._def,\n innerType: this._def.innerType.clone(),\n }) as ZodCatch<T>\n }\n\n naked() {\n return this._def.innerType.naked()\n }\n\n mandatory(): ZodCatch<ZodTypeAny> {\n return new ZodCatch({\n ...this._def,\n innerType: this._def.innerType.mandatory(),\n })\n }\n}\n", "import { ZodAny, CustomErrorParams, ZodType } from '../index'\n\nexport type CustomParams = CustomErrorParams & { fatal?: boolean }\n\nexport const custom = <T>(\n check?: (data: unknown) => any,\n params: string | CustomParams | ((input: any) => CustomParams) = {},\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 */\n fatal?: boolean,\n): ZodType<T> => {\n if (check)\n return ZodAny.create().superRefine((data, ctx) => {\n if (!check(data)) {\n const p =\n typeof params === 'function' ? params(data) : typeof params === 'string' ? { message: params } : params\n const _fatal = p.fatal ?? fatal ?? true\n const p2 = typeof p === 'string' ? { message: p } : p\n ctx.addIssue({ code: 'custom', ...p2, fatal: _fatal })\n }\n })\n return ZodAny.create()\n}\n", "import {\n ZodIssueCode,\n processCreateParams,\n util,\n ZodParsedType,\n errorUtil,\n ZodFirstPartyTypeKind,\n ZodTypeDef,\n addIssueToContext,\n INVALID,\n ParseContext,\n ParseInput,\n ParseReturnType,\n ParseStatus,\n ZodType,\n RawCreateParams,\n} from '../index'\nimport { CustomSet } from '../utils/custom-set'\n\nexport type ZodDateCheck =\n | { kind: 'min'; value: number; message?: string }\n | { kind: 'max'; value: number; message?: string }\nexport interface ZodDateDef extends ZodTypeDef {\n checks: ZodDateCheck[]\n coerce: boolean\n typeName: ZodFirstPartyTypeKind.ZodDate\n}\n\nexport class ZodDate extends ZodType<Date, ZodDateDef> {\n _parse(input: ParseInput): ParseReturnType<this['_output']> {\n if (this._def.coerce) {\n input.data = new Date(input.data)\n }\n const parsedType = this._getType(input)\n\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\n if (isNaN(input.data.getTime())) {\n const ctx = this._getOrReturnCtx(input)\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_date,\n })\n return INVALID\n }\n\n const status = new ParseStatus()\n let ctx: undefined | ParseContext = undefined\n\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 } 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 } else {\n util.assertNever(check)\n }\n }\n\n return {\n status: status.value,\n value: new Date((input.data as Date).getTime()),\n }\n }\n\n _addCheck(check: ZodDateCheck) {\n return new ZodDate({\n ...this._def,\n checks: [...this._def.checks, check],\n })\n }\n\n min(minDate: Date, message?: errorUtil.ErrMessage) {\n return this._addCheck({\n kind: 'min',\n value: minDate.getTime(),\n message: errorUtil.toString(message),\n })\n }\n\n max(maxDate: Date, message?: errorUtil.ErrMessage) {\n return this._addCheck({\n kind: 'max',\n value: maxDate.getTime(),\n message: errorUtil.toString(message),\n })\n }\n\n get minDate() {\n let min: number | null = null\n for (const ch of this._def.checks) {\n if (ch.kind === 'min') {\n if (min === null || ch.value > min) min = ch.value\n }\n }\n\n return min != null ? new Date(min) : null\n }\n\n get maxDate() {\n let max: number | null = null\n for (const ch of this._def.checks) {\n if (ch.kind === 'max') {\n if (max === null || ch.value < max) max = ch.value\n }\n }\n\n return max != null ? new Date(max) : null\n }\n\n static create = (params?: RawCreateParams & { coerce?: boolean }): ZodDate => {\n return new ZodDate({\n checks: [],\n coerce: params?.coerce || false,\n typeName: ZodFirstPartyTypeKind.ZodDate,\n ...processCreateParams(params),\n })\n }\n\n isEqual(schema: ZodType): boolean {\n if (!(schema instanceof ZodDate)) return false\n const thisChecks = new CustomSet<ZodDateCheck>(this._def.checks)\n const thatChecks = new CustomSet<ZodDateCheck>(schema._def.checks)\n return thisChecks.isEqual(thatChecks) && this._def.coerce === schema._def.coerce\n }\n}\n", "import { isEqual } from 'lodash-es'\n\nimport {\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeAny,\n ZodTypeDef,\n processCreateParams,\n util,\n ZodParsedType,\n ParseInput,\n ParseReturnType,\n} from '../index'\n\nexport interface ZodDefaultDef<T extends ZodTypeAny = ZodTypeAny> extends ZodTypeDef {\n innerType: T\n defaultValue: () => util.noUndefined<T['_input']>\n typeName: ZodFirstPartyTypeKind.ZodDefault\n}\n\nexport class ZodDefault<T extends ZodTypeAny = ZodTypeAny> extends ZodType<\n util.noUndefined<T['_output']>,\n ZodDefaultDef<T>,\n T['_input'] | undefined\n> {\n _parse(input: ParseInput): ParseReturnType<this['_output']> {\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\n removeDefault() {\n return this._def.innerType\n }\n\n dereference(defs: Record<string, ZodTypeAny>): ZodTypeAny {\n return new ZodDefault({\n ...this._def,\n innerType: this._def.innerType.dereference(defs),\n })\n }\n\n getReferences(): string[] {\n return this._def.innerType.getReferences()\n }\n\n clone(): ZodDefault<T> {\n return new ZodDefault({\n ...this._def,\n innerType: this._def.innerType.clone(),\n }) as ZodDefault<T>\n }\n\n static create = <T extends ZodTypeAny>(\n type: T,\n value: T['_input'] | (() => util.noUndefined<T['_input']>),\n params?: RawCreateParams,\n ): ZodDefault<T> => {\n return new ZodDefault({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n defaultValue: typeof value === 'function' ? value : () => value,\n ...processCreateParams(params),\n })\n }\n\n isEqual(schema: ZodType): boolean {\n if (!(schema instanceof ZodDefault)) return false\n return (\n this._def.innerType.isEqual(schema._def.innerType) &&\n isEqual(this._def.defaultValue(), schema._def.defaultValue())\n )\n }\n\n unwrap() {\n return this._def.innerType\n }\n\n naked() {\n return this._def.innerType.naked()\n }\n\n mandatory(): ZodDefault<ZodTypeAny> {\n return new ZodDefault({\n ...this._def,\n innerType: this._def.innerType.mandatory(),\n })\n }\n}\n", "export type ValueOf<T> = T[keyof T]\n\nexport const unique = <T>(arr: T[]): T[] => {\n return Array.from(new Set(arr))\n}\n", "import { unique } from '../../utils'\nimport {\n ZodBranded,\n ZodCatch,\n ZodDefault,\n ZodEnum,\n ZodIssueCode,\n input,\n output,\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodRawShape,\n ZodType,\n ZodTypeAny,\n ZodTypeDef,\n ZodLazy,\n ZodLiteral,\n ZodNativeEnum,\n ZodNull,\n ZodNullable,\n UnknownKeysParam,\n ZodObject,\n ZodOptional,\n ZodReadonly,\n ZodEffects,\n ZodUndefined,\n processCreateParams,\n util,\n ZodParsedType,\n addIssueToContext,\n INVALID,\n ParseInput,\n ParseReturnType,\n Primitive,\n} from '../index'\nimport { CustomSet } from '../utils/custom-set'\n\nconst getDiscriminator = <T extends ZodTypeAny>(type: T): Primitive[] => {\n if (type instanceof ZodLazy) {\n return getDiscriminator(type.schema)\n } else if (type instanceof ZodEffects) {\n return getDiscriminator(type.innerType())\n } else if (type instanceof ZodLiteral) {\n return [type.value]\n } else if (type instanceof ZodEnum) {\n return type.options\n } else if (type instanceof ZodNativeEnum) {\n // eslint-disable-next-line ban/ban\n return util.objectValues(type.enum)\n } else if (type instanceof ZodDefault) {\n return getDiscriminator(type._def.innerType)\n } else if (type instanceof ZodUndefined) {\n return [undefined]\n } else if (type instanceof ZodNull) {\n return [null]\n } else if (type instanceof ZodOptional) {\n return [undefined, ...getDiscriminator(type.unwrap())]\n } else if (type instanceof ZodNullable) {\n return [null, ...getDiscriminator(type.unwrap())]\n } else if (type instanceof ZodBranded) {\n return getDiscriminator(type.unwrap())\n } else if (type instanceof ZodReadonly) {\n return getDiscriminator(type.unwrap())\n } else if (type instanceof ZodCatch) {\n return getDiscriminator(type._def.innerType)\n } else {\n return []\n }\n}\n\nexport type ZodDiscriminatedUnionOption<Discriminator extends string> = ZodObject<\n {\n [key in Discriminator]: ZodTypeAny\n } & ZodRawShape,\n UnknownKeysParam\n>\n\nexport interface ZodDiscriminatedUnionDef<\n Discriminator extends string = string,\n Options extends ZodDiscriminatedUnionOption<string>[] = ZodDiscriminatedUnionOption<string>[],\n> extends ZodTypeDef {\n discriminator: Discriminator\n options: Options\n optionsMap: Map<Primitive, ZodDiscriminatedUnionOption<any>>\n typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion\n}\n\nexport class ZodDiscriminatedUnion<\n Discriminator extends string = string,\n Options extends ZodDiscriminatedUnionOption<Discriminator>[] = ZodDiscriminatedUnionOption<Discriminator>[],\n> extends ZodType<output<Options[number]>, ZodDiscriminatedUnionDef<Discriminator, Options>, input<Options[number]>> {\n dereference(defs: Record<string, ZodTypeAny>): ZodTypeAny {\n const options = this.options.map((option) => option.dereference(defs)) as [\n ZodDiscriminatedUnionOption<Discriminator>,\n ...ZodDiscriminatedUnionOption<Discriminator>[],\n ]\n\n const optionsMap = ZodDiscriminatedUnion._getOptionsMap(this.discriminator, options)\n\n return new ZodDiscriminatedUnion({\n ...this._def,\n options,\n optionsMap,\n })\n }\n\n getReferences(): string[] {\n return unique(this.options.flatMap((option) => option.getReferences()))\n }\n\n clone(): ZodDiscriminatedUnion<Discriminator, Options> {\n const options: ZodDiscriminatedUnionOption<Discriminator>[] = this.options.map(\n (option) => option.clone() as ZodDiscriminatedUnionOption<Discriminator>,\n )\n return new ZodDiscriminatedUnion({\n ...this._def,\n options: options as [ZodDiscriminatedUnionOption<Discriminator>, ...ZodDiscriminatedUnionOption<Discriminator>[]],\n }) as ZodDiscriminatedUnion<Discriminator, any>\n }\n\n _parse(input: ParseInput): ParseReturnType<this['_output']> {\n const { ctx } = this._processInputParams(input)\n\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\n const discriminator = this.discriminator\n\n const discriminatorValue: string = ctx.data[discriminator]\n\n const option = this.optionsMap.get(discriminatorValue)\n\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\n if (ctx.common.async) {\n return option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }) as ParseReturnType<this['_output']>\n } else {\n return option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }) as ParseReturnType<this['_output']>\n }\n }\n\n get discriminator() {\n return this._def.discriminator\n }\n\n get options() {\n return this._def.options\n }\n\n get optionsMap() {\n return this._def.optionsMap\n }\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<\n Discriminator extends string,\n Types extends [ZodDiscriminatedUnionOption<Discriminator>, ...ZodDiscriminatedUnionOption<Discriminator>[]],\n >(\n discriminator: Discriminator,\n options: Types,\n params?: RawCreateParams,\n ): ZodDiscriminatedUnion<Discriminator, Types> {\n const optionsMap = ZodDiscriminatedUnion._getOptionsMap(discriminator, options)\n return new ZodDiscriminatedUnion<\n Discriminator,\n // DiscriminatorValue,\n Types\n >({\n typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n discriminator,\n options,\n optionsMap,\n ...processCreateParams(params),\n })\n }\n\n private static _getOptionsMap<\n Discriminator extends string,\n Types extends [ZodDiscriminatedUnionOption<Discriminator>, ...ZodDiscriminatedUnionOption<Discriminator>[]],\n >(discriminator: Discriminator, options: Types) {\n // Get all the valid discriminator values\n const optionsMap: Map<Primitive, Types[number]> = new Map()\n\n // try {\n for (const type of options) {\n const discriminatorValues = getDiscriminator(type.shape[discriminator])\n if (!discriminatorValues.length) {\n throw new Error(\n `A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`,\n )\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\n optionsMap.set(value, type)\n }\n }\n\n return optionsMap\n }\n\n isEqual(schema: ZodType): boolean {\n if (!(schema instanceof ZodDiscriminatedUnion)) return false\n if (this._def.discriminator !== schema._def.discriminator) return false\n\n const compare = (a: ZodObject, b: ZodObject) => a.isEqual(b)\n const thisOptions = new CustomSet<ZodObject>(this._def.options, { compare })\n const thatOptions = new CustomSet<ZodObject>(schema._def.options, { compare })\n\n // no need to compare optionsMap, as it is derived from discriminator + options\n\n return thisOptions.isEqual(thatOptions)\n }\n}\n", "import {\n ZodIssueCode,\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeDef,\n processCreateParams,\n util,\n addIssueToContext,\n INVALID,\n OK,\n ParseInput,\n ParseReturnType,\n} from '../index'\nimport { CustomSet } from '../utils/custom-set'\n\nexport type ArrayKeys = keyof any[]\nexport type Indices<T> = Exclude<keyof T, ArrayKeys>\n\nexport type EnumValues = [string, ...string[]]\n\nexport type Values<T extends EnumValues> = {\n [k in T[number]]: k\n}\n\nexport interface ZodEnumDef<T extends EnumValues = EnumValues> extends ZodTypeDef {\n values: T\n typeName: ZodFirstPartyTypeKind.ZodEnum\n}\n\nexport type Writeable<T> = {\n -readonly [P in keyof T]: T[P]\n}\n\nexport type FilterEnum<Values, ToExclude> = Values extends []\n ? []\n : Values extends [infer Head, ...infer Rest]\n ? Head extends ToExclude\n ? FilterEnum<Rest, ToExclude>\n : [Head, ...FilterEnum<Rest, ToExclude>]\n : never\n\nexport type typecast<A, T> = A extends T ? A : never\n\nexport function createZodEnum<U extends string, T extends Readonly<[U, ...U[]]>>(\n values: T,\n params?: RawCreateParams,\n): ZodEnum<Writeable<T>>\nexport function createZodEnum<U extends string, T extends [U, ...U[]]>(values: T, params?: RawCreateParams): ZodEnum<T>\nexport function createZodEnum(values: [string, ...string[]], params?: RawCreateParams) {\n return new ZodEnum({\n values,\n typeName: ZodFirstPartyTypeKind.ZodEnum,\n ...processCreateParams(params),\n })\n}\n\nexport class ZodEnum<T extends [string, ...string[]] = [string, ...string[]]> extends ZodType<\n T[number],\n ZodEnumDef<T>\n> {\n _parse(input: ParseInput): ParseReturnType<this['_output']> {\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) as 'string',\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n })\n return INVALID\n }\n\n if (this._def.values.indexOf(input.data) === -1) {\n const ctx = this._getOrReturnCtx(input)\n const expectedValues = this._def.values\n\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\n get options() {\n return this._def.values\n }\n\n get enum(): Values<T> {\n const enumValues: any = {}\n for (const val of this._def.values) {\n enumValues[val] = val\n }\n return enumValues\n }\n\n get Values(): Values<T> {\n const enumValues: any = {}\n for (const val of this._def.values) {\n enumValues[val] = val\n }\n return enumValues\n }\n\n get Enum(): Values<T> {\n const enumValues: any = {}\n for (const val of this._def.values) {\n enumValues[val] = val\n }\n return enumValues\n }\n\n extract<ToExtract extends readonly [T[number], ...T[number][]]>(\n values: ToExtract,\n newDef: RawCreateParams = this._def,\n ): ZodEnum<Writeable<ToExtract>> {\n return ZodEnum.create(values, {\n ...this._def,\n ...newDef,\n })\n }\n\n exclude<ToExclude extends readonly [T[number], ...T[number][]]>(\n values: ToExclude,\n newDef: RawCreateParams = this._def,\n ): ZodEnum<typecast<Writeable<FilterEnum<T, ToExclude[number]>>, [string, ...string[]]>> {\n return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)) as FilterEnum<T, ToExclude[number]>, {\n ...this._def,\n ...newDef,\n }) as ZodEnum<typecast<Writeable<FilterEnum<T, ToExclude[number]>>, [string, ...string[]]>>\n }\n\n static create = createZodEnum\n\n isEqual(schema: ZodType): boolean {\n if (!(schema instanceof ZodEnum)) return false\n const thisValues = new CustomSet<string>(this._def.values)\n const thatValues = new CustomSet<string>(schema._def.values)\n return thisValues.isEqual(thatValues)\n }\n}\n", "import { unique } from '../../utils'\nimport {\n defaultErrorMap,\n getErrorMap,\n ZodError,\n ZodErrorMap,\n ZodIssue,\n ZodIssueCode,\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeAny,\n ZodTypeDef,\n ZodPromise,\n AnyZodTuple,\n ZodTuple,\n ZodUnknown,\n processCreateParams,\n ZodParsedType,\n addIssueToContext,\n INVALID,\n makeIssue,\n OK,\n ParseInput,\n ParseReturnType,\n} from '../index'\n\nexport interface ZodFunctionDef<Args extends ZodTuple<any, any> = ZodTuple, Returns extends ZodTypeAny = ZodTypeAny>\n extends ZodTypeDef {\n args: Args\n returns: Returns\n typeName: ZodFirstPartyTypeKind.ZodFunction\n}\n\nexport type OuterTypeOfFunction<Args extends ZodTuple<any, any>, Returns extends ZodTypeAny> =\n Args['_input'] extends Array<any> ? (...args: Args['_input']) => Returns['_output'] : never\n\nexport type InnerTypeOfFunction<Args extends ZodTuple<any, any>, Returns extends ZodTypeAny> =\n Args['_output'] extends Array<any> ? (...args: Args['_output']) => Returns['_input'] : never\n\nexport class ZodFunction<\n Args extends ZodTuple<any, any> = ZodTuple,\n Returns extends ZodTypeAny = ZodTypeAny,\n> extends ZodType<\n OuterTypeOfFunction<Args, Returns>,\n ZodFunctionDef<Args, Returns>,\n InnerTypeOfFunction<Args, Returns>\n> {\n dereference(defs: Record<string, ZodTypeAny>): ZodTypeAny {\n const args = this._def.args.dereference(defs) as ZodTuple<[], ZodUnknown>\n const returns = this._def.returns.dereference(defs)\n return new ZodFunction({\n ...this._def,\n args,\n returns,\n })\n }\n\n getReferences(): string[] {\n return unique([...this._def.args.getReferences(), ...this._def.returns.getReferences()])\n }\n\n clone(): ZodFunction<Args, Returns> {\n return new ZodFunction({\n ...this._def,\n args: this._def.args.clone() as ZodTuple<any, any>,\n returns: this._def.returns.clone(),\n }) as ZodFunction<Args, Returns>\n }\n\n _parse(input: ParseInput): ParseReturnType<any> {\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\n function makeArgsIssue(args: any, error: ZodError): ZodIssue {\n return makeIssue({\n data: args,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter(\n (x) => !!x,\n ) as ZodErrorMap[],\n issueData: {\n code: ZodIssueCode.invalid_arguments,\n argumentsError: error,\n },\n })\n }\n\n function makeReturnsIssue(returns: any, error: ZodError): ZodIssue {\n return makeIssue({\n data: returns,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter(\n (x) => !!x,\n ) as ZodErrorMap[],\n issueData: {\n code: ZodIssueCode.invalid_return_type,\n returnTypeError: error,\n },\n })\n }\n\n const params = { errorMap: ctx.common.contextualErrorMap }\n const fn = ctx.data\n\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 (this: any, ...args: any[]) {\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 as unknown as ZodPromise<ZodTypeAny>)._def.type\n .parseAsync(result, params)\n .catch((e) => {\n error.addIssue(makeReturnsIssue(result, e))\n throw error\n })\n return parsedReturns\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 (this: any, ...args: any[]) {\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\n parameters() {\n return this._def.args\n }\n\n returnType() {\n return this._def.returns\n }\n\n args<Items extends Parameters<(typeof ZodTuple)['create']>[0]>(\n ...items: Items\n ): ZodFunction<ZodTuple<Items, ZodUnknown>, Returns> {\n return new ZodFunction({\n ...this._def,\n args: ZodTuple.create(items).rest(ZodUnknown.create()),\n })\n }\n\n returns<NewReturnType extends ZodType<any, any>>(returnType: NewReturnType): ZodFunction<Args, NewReturnType> {\n return new ZodFunction({\n ...this._def,\n returns: returnType,\n })\n }\n\n implement<F extends InnerTypeOfFunction<Args, Returns>>(\n func: F,\n ): ReturnType<F> extends Returns['_output']\n ? (...args: Args['_input']) => ReturnType<F>\n : OuterTypeOfFunction<Args, Returns> {\n const validatedFunc = this.parse(func)\n return validatedFunc\n }\n\n strictImplement(func: InnerTypeOfFunction<Args, Returns>): InnerTypeOfFunction<Args, Returns> {\n const validatedFunc = this.parse(func)\n return validatedFunc\n }\n\n validate = this.implement\n\n static create(): ZodFunction<ZodTuple<[], ZodUnknown>, ZodUnknown>\n static create<T extends AnyZodTuple = ZodTuple<[], ZodUnknown>>(args: T): ZodFunction<T, ZodUnknown>\n static create<T extends AnyZodTuple, U extends ZodTypeAny>(args: T, returns: U): ZodFunction<T, U>\n static create<T extends AnyZodTuple = ZodTuple<[], ZodUnknown>, U extends ZodTypeAny = ZodUnknown>(\n args: T,\n returns: U,\n params?: RawCreateParams,\n ): ZodFunction<T, U>\n static create(args?: AnyZodTuple, returns?: ZodTypeAny, params?: RawCreateParams) {\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\n isEqual(schema: ZodType): boolean {\n return (\n schema instanceof ZodFunction &&\n this._def.args.isEqual(schema._def.args) &&\n this._def.returns.isEqual(schema._def.returns)\n )\n }\n}\n", "import { unique } from '../../utils'\nimport {\n ZodIssueCode,\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeAny,\n ZodTypeDef,\n getParsedType,\n processCreateParams,\n util,\n ZodParsedType,\n addIssueToContext,\n INVALID,\n isAborted,\n isDirty,\n ParseInput,\n ParseReturnType,\n SyncParseReturnType,\n} from '../index'\nimport { CustomSet } from '../utils/custom-set'\n\nexport interface ZodIntersectionDef<T extends ZodTypeAny = ZodTypeAny, U extends ZodTypeAny = ZodTypeAny>\n extends ZodTypeDef {\n left: T\n right: U\n typeName: ZodFirstPartyTypeKind.ZodIntersection\n}\n\nfunction mergeValues(a: any, b: any): { valid: true; data: any } | { valid: false } {\n const aType = getParsedType(a)\n const bType = getParsedType(b)\n\n if (a === b) {\n return { valid: true, data: a }\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\n const newObj: any = { ...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\n return { valid: true, data: newObj }\n } else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {\n if (a.length !== b.length) {\n return { valid: false }\n }\n\n const newArray: unknown[] = []\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\n if (!sharedValue.valid) {\n return { valid: false }\n }\n\n newArray.push(sharedValue.data)\n }\n\n return { valid: true, data: newArray }\n } else if (aType === ZodParsedType.date && bType === ZodParsedType.date && +a === +b) {\n return { valid: true, data: a }\n } else {\n return { valid: false }\n }\n}\n\nexport class ZodIntersection<T extends ZodTypeAny = ZodTypeAny, U extends ZodTypeAny = ZodTypeAny> extends ZodType<\n T['_output'] & U['_output'],\n ZodIntersectionDef<T, U>,\n T['_input'] & U['_input']\n> {\n dereference(defs: Record<string, ZodTypeAny>): ZodTypeAny {\n return new ZodIntersection({\n ...this._def,\n left: this._def.left.dereference(defs),\n right: this._def.right.dereference(defs),\n })\n }\n\n getReferences(): string[] {\n return unique([...this._def.left.getReferences(), ...this._def.right.getReferences()])\n }\n\n clone(): ZodIntersection<T, U> {\n return new ZodIntersection({\n ...this._def,\n left: this._def.left.clone(),\n right: this._def.right.clone(),\n }) as ZodIntersection<T, U>\n }\n\n _parse(input: ParseInput): ParseReturnType<this['_output']> {\n const { status, ctx } = this._processInputParams(input)\n const handleParsed = (\n parsedLeft: SyncParseReturnType,\n parsedRight: SyncParseReturnType,\n ): SyncParseReturnType<T & U> => {\n if (isAborted(parsedLeft) || isAborted(parsedRight)) {\n return INVALID\n }\n\n const merged = mergeValues(parsedLeft.value, parsedRight.value)\n\n if (!merged.valid) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_intersection_types,\n })\n return INVALID\n }\n\n if (isDirty(parsedLeft) || isDirty(parsedRight)) {\n status.dirty()\n }\n\n return { status: status.value, value: merged.data }\n }\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]: any) => handleParsed(left, right))\n } else {\n return handleParsed(\n this._def.left._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n this._def.right._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n )\n }\n }\n\n static create = <T extends ZodTypeAny, U extends ZodTypeAny>(\n left: T,\n right: U,\n params?: RawCreateParams,\n ): ZodIntersection<T, U> => {\n return new ZodIntersection({\n left: left,\n right: right,\n typeName: ZodFirstPartyTypeKind.ZodIntersection,\n ...processCreateParams(params),\n })\n }\n\n isEqual(schema: ZodType): boolean {\n if (!(schema instanceof ZodIntersection)) return false\n\n const compare = (a: ZodType, b: ZodType) => a.isEqual(b)\n const thisItems = new CustomSet<ZodType>([this._def.left, this._def.right], { compare })\n const thatItems = new CustomSet<ZodType>([schema._def.left, schema._def.right], { compare })\n return thisItems.isEqual(thatItems)\n }\n}\n", "import {\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeDef,\n processCreateParams,\n ParseInput,\n ParseReturnType,\n ZodTypeAny,\n output,\n input,\n} from '../index'\n\nexport interface ZodLazyDef<T extends ZodTypeAny = ZodTypeAny> extends ZodTypeDef {\n getter: () => T\n typeName: ZodFirstPartyTypeKind.ZodLazy\n}\n\nexport class ZodLazy<T extends ZodTypeAny = ZodTypeAny> extends ZodType<output<T>, ZodLazyDef<T>, input<T>> {\n get schema(): T {\n return this._def.getter()\n }\n\n dereference(defs: Record<string, ZodTypeAny>): ZodTypeAny {\n return new ZodLazy({\n ...this._def,\n getter: () => this._def.getter().dereference(defs),\n })\n }\n\n getReferences(): string[] {\n return this._def.getter().getReferences()\n }\n\n clone(): ZodLazy<T> {\n return new ZodLazy({\n ...this._def,\n getter: () => this._def.getter().clone(),\n }) as ZodLazy<T>\n }\n\n _parse(input: ParseInput): ParseReturnType<this['_output']> {\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\n static create = <T extends ZodTypeAny>(getter: () => T, params?: RawCreateParams): ZodLazy<T> => {\n return new ZodLazy({\n getter: getter,\n typeName: ZodFirstPartyTypeKind.ZodLazy,\n ...processCreateParams(params),\n })\n }\n\n isEqual(schema: ZodType): boolean {\n if (!(schema instanceof ZodLazy)) return false\n return this._def.getter().isEqual(schema._def.getter())\n }\n\n naked() {\n return this._def.getter().naked()\n }\n\n mandatory(): ZodLazy<ZodTypeAny> {\n return new ZodLazy({\n ...this._def,\n getter: () => this._def.getter().mandatory(),\n })\n }\n}\n", "import { isEqual } from 'lodash-es'\n\nimport {\n ZodIssueCode,\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeDef,\n processCreateParams,\n addIssueToContext,\n INVALID,\n ParseInput,\n ParseReturnType,\n Primitive,\n} from '../index'\n\nexport interface ZodLiteralDef<T extends Primitive = Primitive> extends ZodTypeDef {\n value: T\n typeName: ZodFirstPartyTypeKind.ZodLiteral\n}\n\nexport class ZodLiteral<T extends Primitive = Primitive> extends ZodType<T, ZodLiteralDef<T>> {\n _parse(input: ParseInput): ParseReturnType<this['_output']> {\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\n get value() {\n return this._def.value\n }\n\n static create = <T extends Primitive>(value: T, params?: RawCreateParams): ZodLiteral<T> => {\n return new ZodLiteral({\n value: value,\n typeName: ZodFirstPartyTypeKind.ZodLiteral,\n ...processCreateParams(params),\n })\n }\n\n isEqual(schema: ZodType): boolean {\n if (!(schema instanceof ZodLiteral)) return false\n return isEqual(this._def.value, schema._def.value)\n }\n}\n", "import { unique } from '../../utils'\nimport {\n ZodIssueCode,\n ParseInputLazyPath,\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeAny,\n ZodTypeDef,\n processCreateParams,\n ZodParsedType,\n addIssueToContext,\n INVALID,\n ParseInput,\n ParseReturnType,\n SyncParseReturnType,\n} from '../index'\n\nexport interface ZodMapDef<Key extends ZodTypeAny = ZodTypeAny, Value extends ZodTypeAny = ZodTypeAny>\n extends ZodTypeDef {\n valueType: Value\n keyType: Key\n typeName: ZodFirstPartyTypeKind.ZodMap\n}\n\nexport class ZodMap<Key extends ZodTypeAny = ZodTypeAny, Value extends ZodTypeAny = ZodTypeAny> extends ZodType<\n Map<Key['_output'], Value['_output']>,\n ZodMapDef<Key, Value>,\n Map<Key['_input'], Value['_input']>\n> {\n get keySchema() {\n return this._def.keyType\n }\n get valueSchema() {\n return this._def.valueType\n }\n\n dereference(defs: Record<string, ZodTypeAny>): ZodTypeAny {\n const keyType = this._def.keyType.dereference(defs)\n const valueType = this._def.valueType.dereference(defs)\n return new ZodMap({\n ...this._def,\n keyType,\n valueType,\n })\n }\n\n getReferences(): string[] {\n return unique([...this._def.keyType.getReferences(), ...this._def.valueType.getReferences()])\n }\n\n clone(): ZodMap<Key, Value> {\n return new ZodMap({\n ...this._def,\n keyType: this._def.keyType.clone(),\n valueType: this._def.valueType.clone(),\n }) as ZodMap<Key, Value>\n }\n\n _parse(input: ParseInput): ParseReturnType<this['_output']> {\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\n const keyType = this._def.keyType\n const valueType = this._def.valueType\n\n const pairs = [...(ctx.data as Map<unknown, unknown>).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\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\n finalMap.set(key.value, value.value)\n }\n return { status: status.value, value: finalMap }\n })\n } else {\n const finalMap = new Map()\n for (const pair of pairs) {\n const key = pair.key as SyncParseReturnType\n const value = pair.value as SyncParseReturnType\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\n finalMap.set(key.value, value.value)\n }\n return { status: status.value, value: finalMap }\n }\n }\n static create = <Key extends ZodTypeAny = ZodTypeAny, Value extends ZodTypeAny = ZodTypeAny>(\n keyType: Key,\n valueType: Value,\n params?: RawCreateParams,\n ): ZodMap<Key, Value> => {\n return new ZodMap({\n valueType,\n keyType,\n typeName: ZodFirstPartyTypeKind.ZodMap,\n ...processCreateParams(params),\n })\n }\n\n isEqual(schema: ZodType): boolean {\n if (!(schema instanceof ZodMap)) return false\n if (!this._def.keyType.isEqual(schema._def.keyType)) return false\n if (!this._def.valueType.isEqual(schema._def.valueType)) return false\n return true\n }\n}\n", "import {\n ZodIssueCode,\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeDef,\n processCreateParams,\n ZodParsedType,\n addIssueToContext,\n INVALID,\n ParseInput,\n ParseReturnType,\n} from '../index'\n\nexport interface ZodNaNDef extends ZodTypeDef {\n typeName: ZodFirstPartyTypeKind.ZodNaN\n}\n\nexport class ZodNaN extends ZodType<number, ZodNaNDef> {\n _parse(input: ParseInput): ParseReturnType<any> {\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\n return { status: 'valid', value: input.data }\n }\n\n static create = (params?: RawCreateParams): ZodNaN => {\n return new ZodNaN({\n typeName: ZodFirstPartyTypeKind.ZodNaN,\n ...processCreateParams(params),\n })\n }\n\n isEqual(schema: ZodType): boolean {\n return schema instanceof ZodNaN\n }\n}\n", "import { isEqual } from 'lodash-es'\n\nimport {\n ZodIssueCode,\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeDef,\n processCreateParams,\n util,\n ZodParsedType,\n addIssueToContext,\n INVALID,\n OK,\n ParseInput,\n ParseReturnType,\n} from '../index'\n\nexport interface ZodNativeEnumDef<T extends EnumLike = EnumLike> extends ZodTypeDef {\n values: T\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum\n}\n\nexport type EnumLike = { [k: string]: string | number; [nu: number]: string }\n\nexport class ZodNativeEnum<T extends EnumLike = EnumLike> extends ZodType<T[keyof T], ZodNativeEnumDef<T>> {\n _parse(input: ParseInput): ParseReturnType<T[keyof T]> {\n const nativeEnumValues = util.getValidEnumValues(this._def.values)\n\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) as 'string',\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n })\n return INVALID\n }\n\n if (nativeEnumValues.indexOf(input.data) === -1) {\n const expectedValues = util.objectValues(nativeEnumValues)\n\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\n get enum() {\n return this._def.values\n }\n\n static create = <T extends EnumLike>(values: T, params?: RawCreateParams): ZodNativeEnum<T> => {\n return new ZodNativeEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n ...processCreateParams(params),\n })\n }\n\n isEqual(schema: ZodType): boolean {\n if (!(schema instanceof ZodNativeEnum)) return false\n return isEqual(this._def.values, schema._def.values)\n }\n}\n", "import {\n ZodIssueCode,\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeDef,\n processCreateParams,\n ZodParsedType,\n addIssueToContext,\n INVALID,\n ParseInput,\n ParseReturnType,\n} from '../index'\n\nexport interface ZodNeverDef extends ZodTypeDef {\n typeName: ZodFirstPartyTypeKind.ZodNever\n}\n\nexport class ZodNever extends ZodType<never, ZodNeverDef> {\n _parse(input: ParseInput): ParseReturnType<this['_output']> {\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 static create = (params?: RawCreateParams): ZodNever => {\n return new ZodNever({\n typeName: ZodFirstPartyTypeKind.ZodNever,\n ...processCreateParams(params),\n })\n }\n\n isEqual(schema: ZodType): boolean {\n return schema instanceof ZodNever\n }\n}\n", "import {\n ZodIssueCode,\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeDef,\n processCreateParams,\n ZodParsedType,\n addIssueToContext,\n INVALID,\n OK,\n ParseInput,\n ParseReturnType,\n} from '../index'\n\nexport interface ZodNullDef extends ZodTypeDef {\n typeName: ZodFirstPartyTypeKind.ZodNull\n}\n\nexport class ZodNull extends ZodType<null, ZodNullDef> {\n _parse(input: ParseInput): ParseReturnType<this['_output']> {\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 static create = (params?: RawCreateParams): ZodNull => {\n return new ZodNull({\n typeName: ZodFirstPartyTypeKind.ZodNull,\n ...processCreateParams(params),\n })\n }\n\n isEqual(schema: ZodType): boolean {\n return schema instanceof ZodNull\n }\n}\n", "import {\n OK,\n ParseInput,\n ParseReturnType,\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeAny,\n ZodTypeDef,\n processCreateParams,\n ZodParsedType,\n} from '../index'\n\nexport interface ZodNullableDef<T extends ZodTypeAny = ZodTypeAny> extends ZodTypeDef {\n innerType: T\n typeName: ZodFirstPartyTypeKind.ZodNullable\n}\n\nexport type ZodNullableType<T extends ZodTypeAny> = ZodNullable<T>\n\nexport class ZodNullable<T extends ZodTypeAny = ZodTypeAny> extends ZodType<\n T['_output'] | null,\n ZodNullableDef<T>,\n T['_input'] | null\n> {\n dereference(defs: Record<string, ZodTypeAny>): ZodTypeAny {\n return new ZodNullable({\n ...this._def,\n innerType: this._def.innerType.dereference(defs),\n })\n }\n\n getReferences(): string[] {\n return this._def.innerType.getReferences()\n }\n\n clone(): ZodNullable<T> {\n return new ZodNullable({\n ...this._def,\n innerType: this._def.innerType.clone(),\n }) as ZodNullable<T>\n }\n\n _parse(input: ParseInput): ParseReturnType<this['_output']> {\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\n unwrap() {\n return this._def.innerType\n }\n\n static create = <T extends ZodTypeAny>(type: T, params?: RawCreateParams): ZodNullable<T> => {\n return new ZodNullable({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodNullable,\n ...processCreateParams(params),\n })\n }\n\n isEqual(schema: ZodType): boolean {\n if (!(schema instanceof ZodNullable)) return false\n return this._def.innerType.isEqual(schema._def.innerType)\n }\n\n naked() {\n return this._def.innerType.naked()\n }\n\n mandatory(): ZodNullable<ZodTypeAny> {\n return new ZodNullable({\n ...this._def,\n innerType: this._def.innerType.mandatory(),\n })\n }\n}\n", "import {\n ZodIssueCode,\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeDef,\n processCreateParams,\n util,\n ZodParsedType,\n errorUtil,\n addIssueToContext,\n INVALID,\n ParseContext,\n ParseInput,\n ParseReturnType,\n ParseStatus,\n} from '../index'\nimport { CustomSet } from '../utils/custom-set'\n\nexport type ZodNumberCheck =\n | { kind: 'min'; value: number; inclusive: boolean; message?: string }\n | { kind: 'max'; value: number; inclusive: boolean; message?: string }\n | { kind: 'int'; message?: string }\n | { kind: 'multipleOf'; value: number; message?: string }\n | { kind: 'finite'; message?: string }\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val: number, step: number) {\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 = parseInt(val.toFixed(decCount).replace('.', ''))\n const stepInt = parseInt(step.toFixed(decCount).replace('.', ''))\n return (valInt % stepInt) / Math.pow(10, decCount)\n}\n\nexport interface ZodNumberDef extends ZodTypeDef {\n checks: ZodNumberCheck[]\n typeName: ZodFirstPartyTypeKind.ZodNumber\n coerce: boolean\n}\n\nexport class ZodNumber extends ZodType<number, ZodNumberDef> {\n _parse(input: ParseInput): ParseReturnType<number> {\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\n let ctx: undefined | ParseContext = undefined\n const status = new ParseStatus()\n\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 } 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 } 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 } 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 } 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 } else {\n util.assertNever(check)\n }\n }\n\n return { status: status.value, value: input.data }\n }\n\n static create = (params?: RawCreateParams & { coerce?: boolean }): ZodNumber => {\n return new ZodNumber({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodNumber,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n })\n }\n\n gte(value: number, message?: errorUtil.ErrMessage) {\n return this.setLimit('min', value, true, errorUtil.toString(message))\n }\n min = this.gte\n\n gt(value: number, message?: errorUtil.ErrMessage) {\n return this.setLimit('min', value, false, errorUtil.toString(message))\n }\n\n lte(value: number, message?: errorUtil.ErrMessage) {\n return this.setLimit('max', value, true, errorUtil.toString(message))\n }\n max = this.lte\n\n lt(value: number, message?: errorUtil.ErrMessage) {\n return this.setLimit('max', value, false, errorUtil.toString(message))\n }\n\n protected setLimit(kind: 'min' | 'max', value: number, inclusive: boolean, message?: string) {\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\n _addCheck(check: ZodNumberCheck) {\n return new ZodNumber({\n ...this._def,\n checks: [...this._def.checks, check],\n })\n }\n\n int(message?: errorUtil.ErrMessage) {\n return this._addCheck({\n kind: 'int',\n message: errorUtil.toString(message),\n })\n }\n\n positive(message?: errorUtil.ErrMessage) {\n return this._addCheck({\n kind: 'min',\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n })\n }\n\n negative(message?: errorUtil.ErrMessage) {\n return this._addCheck({\n kind: 'max',\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n })\n }\n\n nonpositive(message?: errorUtil.ErrMessage) {\n return this._addCheck({\n kind: 'max',\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n })\n }\n\n nonnegative(message?: errorUtil.ErrMessage) {\n return this._addCheck({\n kind: 'min',\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n })\n }\n\n multipleOf(value: number, message?: errorUtil.ErrMessage) {\n return this._addCheck({\n kind: 'multipleOf',\n value: value,\n message: errorUtil.toString(message),\n })\n }\n step = this.multipleOf\n\n finite(message?: errorUtil.ErrMessage) {\n return this._addCheck({\n kind: 'finite',\n message: errorUtil.toString(message),\n })\n }\n\n safe(message?: errorUtil.ErrMessage) {\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\n get minValue() {\n let min: number | null = null\n for (const ch of this._def.checks) {\n if (ch.kind === 'min') {\n if (min === null || ch.value > min) min = ch.value\n }\n }\n return min\n }\n\n get maxValue() {\n let max: number | null = null\n for (const ch of this._def.checks) {\n if (ch.kind === 'max') {\n if (max === null || ch.value < max) max = ch.value\n }\n }\n return max\n }\n\n get isInt() {\n return !!this._def.checks.find((ch) => ch.kind === 'int' || (ch.kind === 'multipleOf' && util.isInteger(ch.value)))\n }\n\n get isFinite() {\n let max: number | null = null,\n min: number | null = null\n for (const ch of this._def.checks) {\n if (ch.kind === 'finite' || ch.kind === 'int' || ch.kind === 'multipleOf') {\n return true\n } else if (ch.kind === 'min') {\n if (min === null || ch.value > min) min = ch.value\n } else if (ch.kind === 'max') {\n if (max === null || ch.value < max) max = ch.value\n }\n }\n return Number.isFinite(min) && Number.isFinite(max)\n }\n\n isEqual(schema: ZodType): boolean {\n if (!(schema instanceof ZodNumber)) return false\n const thisChecks = new CustomSet<ZodNumberCheck>(this._def.checks)\n const thatChecks = new CustomSet<ZodNumberCheck>(schema._def.checks)\n return thisChecks.isEqual(thatChecks)\n }\n}\n", "import { unique } from '../../utils'\nimport {\n ZodArray,\n ZodEnum,\n ZodNullable,\n ZodOptional,\n ZodTuple,\n addIssueToContext,\n INVALID,\n objectUtil,\n ParseInput,\n ParseReturnType,\n ParseStatus,\n util,\n ZodIssueCode,\n ZodParsedType,\n ParseInputLazyPath,\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodRawShape,\n ZodType,\n ZodTypeAny,\n ZodTypeDef,\n processCreateParams,\n enumUtil,\n errorUtil,\n partialUtil,\n createZodEnum,\n ZodNever,\n ZodAny,\n} from '../index'\nimport { CustomSet } from '../utils/custom-set'\n\nexport type UnknownKeysParam = 'passthrough' | 'strict' | 'strip' | ZodTypeAny\n\nexport interface ZodObjectDef<\n T extends ZodRawShape = ZodRawShape,\n UnknownKeys extends UnknownKeysParam = UnknownKeysParam,\n> extends ZodTypeDef {\n typeName: ZodFirstPartyTypeKind.ZodObject\n shape: () => T\n unknownKeys: UnknownKeys\n}\n\nexport type mergeTypes<A, B> = {\n [k in keyof A | keyof B]: k extends keyof B ? B[k] : k extends keyof A ? A[k] : never\n}\n\nexport type objectOutputType<\n Shape extends ZodRawShape,\n UnknownKeys extends UnknownKeysParam = UnknownKeysParam,\n> = UnknownKeysOutputType<UnknownKeys> & objectUtil.flatten<objectUtil.addQuestionMarks<baseObjectOutputType<Shape>>>\n\nexport type baseObjectOutputType<Shape extends ZodRawShape> = {\n [k in keyof Shape]: Shape[k]['_output']\n}\n\nexport type objectInputType<\n Shape extends ZodRawShape,\n UnknownKeys extends UnknownKeysParam = UnknownKeysParam,\n> = objectUtil.flatten<baseObjectInputType<Shape>> & UnknownKeysInputType<UnknownKeys>\n\nexport type baseObjectInputType<Shape extends ZodRawShape> = objectUtil.addQuestionMarks<{\n [k in keyof Shape]: Shape[k]['_input']\n}>\n\nexport type UnknownKeysInputType<T extends UnknownKeysParam> = T extends ZodTypeAny\n ? { [k: string]: T['_input'] | unknown } // extra properties cannot contradict the main properties\n : T extends 'passthrough'\n ? { [k: string]: unknown }\n : {}\n\nexport type UnknownKeysOutputType<T extends UnknownKeysParam> = T extends ZodTypeAny\n ? { [k: string]: T['_output'] | unknown } // extra properties cannot contradict the main properties\n : T extends 'passthrough'\n ? { [k: string]: unknown }\n : {}\n\nexport type AdditionalProperties<T extends UnknownKeysParam> = T extends ZodTypeAny\n ? T\n : T extends 'passthrough'\n ? ZodAny\n : T extends 'strict'\n ? ZodNever\n : undefined\n\nexport type deoptional<T extends ZodTypeAny> =\n T extends ZodOptional<infer U> ? deoptional<U> : T extends ZodNullable<infer U> ? ZodNullable<deoptional<U>> : T\n\nexport type SomeZodObject = ZodObject<ZodRawShape, UnknownKeysParam>\n\nexport type noUnrecognized<Obj extends object, Shape extends object> = {\n [k in keyof Obj]: k extends keyof Shape ? Obj[k] : never\n}\nfunction deepPartialify(schema: ZodTypeAny): any {\n if (schema instanceof ZodObject) {\n const newShape: any = {}\n\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 } else if (schema instanceof ZodArray) {\n return new ZodArray({\n ...schema._def,\n type: deepPartialify(schema.element),\n })\n } else if (schema instanceof ZodOptional) {\n return ZodOptional.create(deepPartialify(schema.unwrap()))\n } else if (schema instanceof ZodNullable) {\n return ZodNullable.create(deepPartialify(schema.unwrap()))\n } else if (schema instanceof ZodTuple) {\n return ZodTuple.create(schema.items.map((item: any) => deepPartialify(item)))\n } else {\n return schema\n }\n}\n\nexport class ZodObject<\n T extends ZodRawShape = ZodRawShape,\n UnknownKeys extends UnknownKeysParam = UnknownKeysParam,\n Output = objectOutputType<T, UnknownKeys>,\n Input = objectInputType<T, UnknownKeys>,\n> extends ZodType<Output, ZodObjectDef<T, UnknownKeys>, Input> {\n private _cached: { shape: T; keys: string[] } | null = null\n\n _getCached(): { shape: T; keys: string[] } {\n if (this._cached !== null) return this._cached\n const shape = this._def.shape()\n const keys = util.objectKeys(shape)\n return (this._cached = { shape, keys })\n }\n\n dereference(defs: Record<string, ZodTypeAny>): ZodTypeAny {\n const currentShape = this._def.shape()\n const shape: Record<string, ZodTypeAny> = {}\n for (const key in currentShape) {\n shape[key] = currentShape[key]!.dereference(defs)\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n })\n }\n\n getReferences(): string[] {\n const shape = this._def.shape()\n const refs: string[] = []\n for (const key in shape) {\n refs.push(...shape[key]!.getReferences())\n }\n return unique(refs)\n }\n\n clone(): ZodObject<T, UnknownKeys, Output, Input> {\n const newShape: Record<string, ZodTypeAny> = {}\n const currentShape = this._def.shape()\n for (const [key, value] of Object.entries(currentShape)) {\n newShape[key] = value.clone()\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n }) as ZodObject<T, UnknownKeys, Output, Input>\n }\n\n _parse(input: ParseInput): ParseReturnType<this['_output']> {\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\n const { status, ctx } = this._processInputParams(input)\n\n const { shape, keys: shapeKeys } = this._getCached()\n const extraKeys: string[] = []\n\n if (this._def.unknownKeys !== 'strip') {\n for (const key in ctx.data) {\n if (!shapeKeys.includes(key)) {\n extraKeys.push(key)\n }\n }\n }\n\n const pairs: {\n key: ParseReturnType<any>\n value: ParseReturnType<any>\n alwaysSet?: boolean\n }[] = []\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\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 } 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 } else if (unknownKeys === 'strip') {\n } else {\n // run catchall validation\n for (const key of extraKeys) {\n const value = ctx.data[key]\n pairs.push({\n key: { status: 'valid', value: key },\n value: unknownKeys._parse(\n new ParseInputLazyPath(ctx, value, ctx.path, key), //, ctx.child(key), value, getParsedType(value)\n ),\n alwaysSet: key in ctx.data,\n })\n }\n }\n\n if (ctx.common.async) {\n return Promise.resolve()\n .then(async () => {\n const syncPairs: any[] = []\n for (const pair of pairs) {\n const key = await pair.key\n syncPairs.push({\n key,\n value: await pair.value,\n alwaysSet: pair.alwaysSet,\n })\n }\n return syncPairs\n })\n .then((syncPairs) => {\n return ParseStatus.mergeObjectSync(status, syncPairs)\n })\n } else {\n return ParseStatus.mergeObjectSync(status, pairs as any)\n }\n }\n\n get shape() {\n return this._def.shape()\n }\n\n strict(message?: errorUtil.ErrMessage): ZodObject<T, 'strict'> {\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\n strip(): ZodObject<T, 'strip'> {\n return new ZodObject({\n ...this._def,\n unknownKeys: 'strip',\n })\n }\n\n passthrough(): ZodObject<T, 'passthrough'> {\n return new ZodObject({\n ...this._def,\n unknownKeys: 'passthrough',\n })\n }\n\n /**\n * @returns The ZodType that is used to validate additional properties or undefined if extra keys are stripped.\n */\n additionalProperties(): AdditionalProperties<UnknownKeys> {\n if (this._def.unknownKeys instanceof ZodType) {\n return this._def.unknownKeys as AdditionalProperties<UnknownKeys>\n }\n if (this._def.unknownKeys === 'passthrough') {\n return ZodAny.create() as AdditionalProperties<UnknownKeys>\n }\n if (this._def.unknownKeys === 'strict') {\n return ZodNever.create() as AdditionalProperties<UnknownKeys>\n }\n return undefined as AdditionalProperties<UnknownKeys>\n }\n\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 nonstrict = this.passthrough\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 // })\n // };\n extend<Augmentation extends ZodRawShape>(\n augmentation: Augmentation,\n ): ZodObject<objectUtil.extendShape<T, Augmentation>, UnknownKeys> {\n return new ZodObject({\n ...this._def,\n shape: () => ({\n ...this._def.shape(),\n ...augmentation,\n }),\n })\n }\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 // })\n // }\n /**\n * @deprecated Use `.extend` instead\n * */\n augment = this.extend\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<Incoming extends AnyZodObject, Augmentation extends Incoming['shape']>(\n merging: Incoming,\n ): ZodObject<objectUtil.extendShape<T, Augmentation>, Incoming['_def']['unknownKeys']> {\n const merged: any = new ZodObject({\n unknownKeys: merging._def.unknownKeys,\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 // });\n // return merged;\n // }\n setKey<Key extends string, Schema extends ZodTypeAny>(\n key: Key,\n schema: Schema,\n ): ZodObject<\n T & {\n [k in Key]: Schema\n },\n UnknownKeys\n > {\n return this.augment({ [key]: schema }) as ZodObject<\n T & {\n [k in Key]: Schema\n },\n UnknownKeys\n >\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 // });\n // return merged;\n // }\n catchall<Index extends ZodTypeAny>(index: Index): ZodObject<T, Index> {\n return new ZodObject({\n ...this._def,\n unknownKeys: index,\n })\n }\n\n pick<\n Mask extends {\n [k in keyof T]?: true\n },\n >(mask: Mask): ZodObject<Pick<T, Extract<keyof T, keyof Mask>>, UnknownKeys> {\n const shape: any = {}\n\n util.objectKeys(mask).forEach((key) => {\n if (mask[key] && this.shape[key]) {\n shape[key] = this.shape[key]\n }\n })\n\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n })\n }\n\n omit<\n Mask extends {\n [k in keyof T]?: true\n },\n >(mask: Mask): ZodObject<Omit<T, keyof Mask>, UnknownKeys> {\n const shape: any = {}\n\n util.objectKeys(this.shape).forEach((key) => {\n if (!mask[key]) {\n shape[key] = this.shape[key]\n }\n })\n\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n })\n }\n\n /**\n * @deprecated\n */\n deepPartial(): partialUtil.DeepPartial<this> {\n return deepPartialify(this)\n }\n\n partial(): ZodObject<\n {\n [k in keyof T]: ZodOptional<T[k]>\n },\n UnknownKeys\n >\n partial<\n Mask extends {\n [k in keyof T]?: true\n },\n >(\n mask: Mask,\n ): ZodObject<\n objectUtil.noNever<{\n [k in keyof T]: k extends keyof Mask ? ZodOptional<T[k]> : T[k]\n }>,\n UnknownKeys\n >\n partial(mask?: any) {\n const newShape: Record<string, ZodTypeAny | undefined> = {}\n\n util.objectKeys(this.shape).forEach((key) => {\n const fieldSchema = this.shape[key]\n\n if (mask && !mask[key]) {\n newShape[key] = fieldSchema\n } else {\n newShape[key] = fieldSchema?.optional()\n }\n })\n\n return new ZodObject({\n ...this._def,\n shape: () => newShape as ZodRawShape,\n })\n }\n\n required(): ZodObject<\n {\n [k in keyof T]: deoptional<T[k]>\n },\n UnknownKeys\n >\n required<\n Mask extends {\n [k in keyof T]?: true\n },\n >(\n mask: Mask,\n ): ZodObject<\n objectUtil.noNever<{\n [k in keyof T]: k extends keyof Mask ? deoptional<T[k]> : T[k]\n }>,\n UnknownKeys\n >\n required(mask?: any) {\n const newShape: any = {}\n\n util.objectKeys(this.shape).forEach((key) => {\n if (mask && !mask[key]) {\n newShape[key] = this.shape[key]\n } else {\n const fieldSchema = this.shape[key]\n let newField = fieldSchema\n\n while (newField instanceof ZodOptional) {\n newField = (newField as ZodOptional<any>)._def.innerType\n }\n\n newShape[key] = newField\n }\n })\n\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n })\n }\n\n keyof(): ZodEnum<enumUtil.UnionToTupleString<keyof T>> {\n return createZodEnum(util.objectKeys(this.shape) as [string, ...string[]]) as any\n }\n\n isEqual(schema: ZodType): boolean {\n if (!(schema instanceof ZodObject)) return false\n if (!this._unknownKeysEqual(schema)) return false\n\n const thisShape = this._def.shape()\n const thatShape = schema._def.shape()\n\n type Property = [string, ZodTypeAny]\n const compare = (a: Property, b: Property) => a[0] === b[0] && a[1].isEqual(b[1])\n const thisProps = new CustomSet<Property>(Object.entries(thisShape), { compare })\n const thatProps = new CustomSet<Property>(Object.entries(thatShape), { compare })\n\n return thisProps.isEqual(thatProps)\n }\n\n private _unknownKeysEqual(that: ZodObject): boolean {\n const thisAdditionalProperties = this.additionalProperties()\n const thatAdditionalProperties = that.additionalProperties()\n if (thisAdditionalProperties === undefined || thatAdditionalProperties === undefined) {\n return thisAdditionalProperties === thatAdditionalProperties\n }\n return thisAdditionalProperties.isEqual(thatAdditionalProperties)\n }\n\n static create = <T extends ZodRawShape>(shape: T, params?: RawCreateParams): ZodObject<T, 'strip'> => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: 'strip',\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n })\n }\n\n static strictCreate = <T extends ZodRawShape>(shape: T, params?: RawCreateParams): ZodObject<T, 'strict'> => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: 'strict',\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n })\n }\n\n static lazycreate = <T extends ZodRawShape>(shape: () => T, params?: RawCreateParams): ZodObject<T, 'strip'> => {\n return new ZodObject({\n shape,\n unknownKeys: 'strip',\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n })\n }\n}\n\nexport type AnyZodObject = ZodObject<any, any>\n", "import {\n processCreateParams,\n ZodParsedType,\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeAny,\n ZodTypeDef,\n OK,\n ParseInput,\n ParseReturnType,\n} from '../index'\n\nexport interface ZodOptionalDef<T extends ZodTypeAny = ZodTypeAny> extends ZodTypeDef {\n innerType: T\n typeName: ZodFirstPartyTypeKind.ZodOptional\n}\n\nexport type ZodOptionalType<T extends ZodTypeAny> = ZodOptional<T>\n\nexport class ZodOptional<T extends ZodTypeAny = ZodTypeAny> extends ZodType<\n T['_output'] | undefined,\n ZodOptionalDef<T>,\n T['_input'] | undefined\n> {\n dereference(defs: Record<string, ZodTypeAny>): ZodTypeAny {\n return new ZodOptional({\n ...this._def,\n innerType: this._def.innerType.dereference(defs),\n })\n }\n\n getReferences(): string[] {\n return this._def.innerType.getReferences()\n }\n\n clone(): ZodOptional<T> {\n return new ZodOptional({\n ...this._def,\n innerType: this._def.innerType.clone(),\n }) as ZodOptional<T>\n }\n\n _parse(input: ParseInput): ParseReturnType<this['_output']> {\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\n unwrap() {\n return this._def.innerType\n }\n\n static create = <T extends ZodTypeAny>(type: T, params?: RawCreateParams): ZodOptional<T> => {\n return new ZodOptional({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodOptional,\n ...processCreateParams(params),\n })\n }\n\n isEqual(schema: ZodType): boolean {\n if (!(schema instanceof ZodOptional)) return false\n return this._def.innerType.isEqual(schema._def.innerType)\n }\n\n naked() {\n return this._def.innerType.naked()\n }\n\n mandatory(): ZodTypeAny {\n return this._def.innerType.mandatory()\n }\n}\n", "import { unique } from '../../utils'\nimport {\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeAny,\n ZodTypeDef,\n DIRTY,\n INVALID,\n ParseInput,\n ParseReturnType,\n} from '../index'\n\nexport interface ZodPipelineDef<A extends ZodTypeAny = ZodTypeAny, B extends ZodTypeAny = ZodTypeAny>\n extends ZodTypeDef {\n in: A\n out: B\n typeName: ZodFirstPartyTypeKind.ZodPipeline\n}\n\nexport class ZodPipeline<A extends ZodTypeAny = ZodTypeAny, B extends ZodTypeAny = ZodTypeAny> extends ZodType<\n B['_output'],\n ZodPipelineDef<A, B>,\n A['_input']\n> {\n dereference(defs: Record<string, ZodTypeAny>): ZodTypeAny {\n return new ZodPipeline({\n ...this._def,\n in: this._def.in.dereference(defs),\n out: this._def.out.dereference(defs),\n })\n }\n\n getReferences(): string[] {\n return unique([...this._def.in.getReferences(), ...this._def.out.getReferences()])\n }\n\n clone(): ZodPipeline<A, B> {\n return new ZodPipeline({\n ...this._def,\n in: this._def.in.clone(),\n out: this._def.out.clone(),\n }) as ZodPipeline<A, B>\n }\n\n _parse(input: ParseInput): ParseReturnType<any> {\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') return INVALID\n if (inResult.status === 'dirty') {\n status.dirty()\n return DIRTY(inResult.value)\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 } 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') return INVALID\n if (inResult.status === 'dirty') {\n status.dirty()\n return {\n status: 'dirty',\n value: inResult.value,\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\n static create<A extends ZodTypeAny, B extends ZodTypeAny>(a: A, b: B): ZodPipeline<A, B> {\n return new ZodPipeline({\n in: a,\n out: b,\n typeName: ZodFirstPartyTypeKind.ZodPipeline,\n })\n }\n\n isEqual(schema: ZodType): boolean {\n if (!(schema instanceof ZodPipeline)) return false\n if (!this._def.in.isEqual(schema._def.in)) return false\n if (!this._def.out.isEqual(schema._def.out)) return false\n return true\n }\n}\n", "import {\n ZodIssueCode,\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeAny,\n ZodTypeDef,\n processCreateParams,\n ZodParsedType,\n addIssueToContext,\n INVALID,\n OK,\n ParseInput,\n ParseReturnType,\n} from '../index'\n\nexport interface ZodPromiseDef<T extends ZodTypeAny = ZodTypeAny> extends ZodTypeDef {\n type: T\n typeName: ZodFirstPartyTypeKind.ZodPromise\n}\n\nexport class ZodPromise<T extends ZodTypeAny = ZodTypeAny> extends ZodType<\n Promise<T['_output']>,\n ZodPromiseDef<T>,\n Promise<T['_input']>\n> {\n unwrap() {\n return this._def.type\n }\n\n dereference(defs: Record<string, ZodTypeAny>): ZodTypeAny {\n return new ZodPromise({\n ...this._def,\n type: this._def.type.dereference(defs),\n })\n }\n\n getReferences(): string[] {\n return this._def.type.getReferences()\n }\n\n clone(): ZodPromise<T> {\n return new ZodPromise({\n ...this._def,\n type: this._def.type.clone(),\n }) as ZodPromise<T>\n }\n\n _parse(input: ParseInput): ParseReturnType<this['_output']> {\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\n const promisified = ctx.parsedType === ZodParsedType.promise ? ctx.data : Promise.resolve(ctx.data)\n\n return OK(\n promisified.then((data: any) => {\n return this._def.type.parseAsync(data, {\n path: ctx.path,\n errorMap: ctx.common.contextualErrorMap,\n })\n }),\n )\n }\n\n static create = <T extends ZodTypeAny>(schema: T, params?: RawCreateParams): ZodPromise<T> => {\n return new ZodPromise({\n type: schema,\n typeName: ZodFirstPartyTypeKind.ZodPromise,\n ...processCreateParams(params),\n })\n }\n\n isEqual(schema: ZodTypeAny): boolean {\n if (!(schema instanceof ZodPromise)) return false\n return this._def.type.isEqual(schema._def.type)\n }\n\n naked() {\n return this._def.type.naked()\n }\n}\n", "import {\n processCreateParams,\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeAny,\n ZodTypeDef,\n isValid,\n ParseInput,\n ParseReturnType,\n} from '../index'\n\ntype BuiltIn =\n | (((...args: any[]) => any) | (new (...args: any[]) => any))\n | { readonly [Symbol.toStringTag]: string }\n | Date\n | Error\n | Generator\n | Promise<unknown>\n | RegExp\n\ntype MakeReadonly<T> =\n T extends Map<infer K, infer V>\n ? ReadonlyMap<K, V>\n : T extends Set<infer V>\n ? ReadonlySet<V>\n : T extends [infer Head, ...infer Tail]\n ? readonly [Head, ...Tail]\n : T extends Array<infer V>\n ? ReadonlyArray<V>\n : T extends BuiltIn\n ? T\n : Readonly<T>\n\nexport interface ZodReadonlyDef<T extends ZodTypeAny = ZodTypeAny> extends ZodTypeDef {\n innerType: T\n typeName: ZodFirstPartyTypeKind.ZodReadonly\n}\n\nexport class ZodReadonly<T extends ZodTypeAny = ZodTypeAny> extends ZodType<\n MakeReadonly<T['_output']>,\n ZodReadonlyDef<T>,\n MakeReadonly<T['_input']>\n> {\n dereference(defs: Record<string, ZodTypeAny>): ZodTypeAny {\n return new ZodReadonly({\n ...this._def,\n innerType: this._def.innerType.dereference(defs),\n })\n }\n\n getReferences(): string[] {\n return this._def.innerType.getReferences()\n }\n\n clone(): ZodReadonly<T> {\n return new ZodReadonly({\n ...this._def,\n innerType: this._def.innerType.clone(),\n }) as ZodReadonly<T>\n }\n\n _parse(input: ParseInput): ParseReturnType<this['_output']> {\n const result = this._def.innerType._parse(input)\n if (isValid(result)) {\n result.value = Object.freeze(result.value)\n }\n return result\n }\n\n static create = <T extends ZodTypeAny>(type: T, params?: RawCreateParams): ZodReadonly<T> => {\n return new ZodReadonly({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodReadonly,\n ...processCreateParams(params),\n })\n }\n\n unwrap() {\n return this._def.innerType\n }\n\n isEqual(schema: ZodType): boolean {\n if (!(schema instanceof ZodReadonly)) return false\n return this._def.innerType.isEqual(schema._def.innerType)\n }\n\n naked() {\n return this._def.innerType.naked()\n }\n\n mandatory(): ZodReadonly<ZodTypeAny> {\n return new ZodReadonly({\n ...this._def,\n innerType: this._def.innerType.mandatory(),\n })\n }\n}\n", "import { unique } from '../../utils'\nimport {\n BRAND,\n ZodIssueCode,\n ParseInputLazyPath,\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeAny,\n ZodTypeDef,\n ZodString,\n processCreateParams,\n ZodParsedType,\n addIssueToContext,\n INVALID,\n ParseInput,\n ParseReturnType,\n ParseStatus,\n} from '../index'\n\nexport interface ZodRecordDef<Key extends KeySchema = ZodString, Value extends ZodTypeAny = ZodTypeAny>\n extends ZodTypeDef {\n valueType: Value\n keyType: Key\n typeName: ZodFirstPartyTypeKind.ZodRecord\n}\n\nexport type KeySchema = ZodType<string | number | symbol, any, any>\n\nexport type RecordType<K extends string | number | symbol, V> = [string] extends [K]\n ? Record<K, V>\n : [number] extends [K]\n ? Record<K, V>\n : [symbol] extends [K]\n ? Record<K, V>\n : [BRAND<string | number | symbol>] extends [K]\n ? Record<K, V>\n : Partial<Record<K, V>>\n\nexport class ZodRecord<Key extends KeySchema = ZodString, Value extends ZodTypeAny = ZodTypeAny> extends ZodType<\n RecordType<Key['_output'], Value['_output']>,\n ZodRecordDef<Key, Value>,\n RecordType<Key['_input'], Value['_input']>\n> {\n get keySchema() {\n return this._def.keyType\n }\n get valueSchema() {\n return this._def.valueType\n }\n\n dereference(defs: Record<string, ZodTypeAny>): ZodTypeAny {\n const keyType = this._def.keyType.dereference(defs)\n const valueType = this._def.valueType.dereference(defs)\n return new ZodRecord({\n ...this._def,\n keyType,\n valueType,\n })\n }\n\n getReferences(): string[] {\n return unique([...this._def.keyType.getReferences(), ...this._def.valueType.getReferences()])\n }\n\n clone(): ZodRecord<Key, Value> {\n return new ZodRecord({\n ...this._def,\n keyType: this._def.keyType.clone(),\n valueType: this._def.valueType.clone(),\n }) as ZodRecord<Key, Value>\n }\n\n _parse(input: ParseInput): ParseReturnType<this['_output']> {\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\n const pairs: {\n key: ParseReturnType<any>\n value: ParseReturnType<any>\n }[] = []\n\n const keyType = this._def.keyType\n const valueType = this._def.valueType\n\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 })\n }\n\n if (ctx.common.async) {\n return ParseStatus.mergeObjectAsync(status, pairs)\n } else {\n return ParseStatus.mergeObjectSync(status, pairs as any)\n }\n }\n\n get element() {\n return this._def.valueType\n }\n\n static create<Value extends ZodTypeAny>(valueType: Value, params?: RawCreateParams): ZodRecord<ZodString, Value>\n static create<Keys extends KeySchema, Value extends ZodTypeAny>(\n keySchema: Keys,\n valueType: Value,\n params?: RawCreateParams,\n ): ZodRecord<Keys, Value>\n static create(first: any, second?: any, third?: any): ZodRecord<any, any> {\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\n return new ZodRecord({\n keyType: ZodString.create(),\n valueType: first,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(second),\n })\n }\n\n isEqual(schema: ZodType): boolean {\n if (!(schema instanceof ZodRecord)) return false\n if (!this._def.keyType.isEqual(schema._def.keyType)) return false\n if (!this._def.valueType.isEqual(schema._def.valueType)) return false\n return true\n }\n}\n", "import {\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeDef,\n INVALID,\n ParseInput,\n ParseReturnType,\n ZodTypeAny,\n addIssueToContext,\n ZodIssueCode,\n} from '../index'\n\nexport interface ZodRefDef extends ZodTypeDef {\n typeName: ZodFirstPartyTypeKind.ZodRef\n uri: string\n}\n\ntype ZodRefOutput = NonNullable<unknown>\n\nexport class ZodRef extends ZodType<ZodRefOutput, ZodRefDef> {\n dereference(defs: Record<string, ZodTypeAny>): ZodTypeAny {\n const def = defs[this._def.uri]\n if (!def) {\n return this\n }\n return def\n }\n\n getReferences(): string[] {\n return [this._def.uri]\n }\n\n _parse(input: ParseInput): ParseReturnType<never> {\n // a schema containing references should never be used to parse data\n const ctx = this._getOrReturnCtx(input)\n addIssueToContext(ctx, {\n code: ZodIssueCode.unresolved_reference,\n })\n return INVALID\n }\n\n static create = (uri: string): ZodRef => {\n return new ZodRef({\n typeName: ZodFirstPartyTypeKind.ZodRef,\n uri,\n })\n }\n\n public override isOptional(): boolean {\n return false\n }\n\n public override isNullable(): boolean {\n return false\n }\n\n isEqual(schema: ZodType): boolean {\n if (!(schema instanceof ZodRef)) return false\n return this._def.uri === schema._def.uri\n }\n}\n", "import {\n ZodIssueCode,\n ParseInputLazyPath,\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeAny,\n ZodTypeDef,\n processCreateParams,\n ZodParsedType,\n errorUtil,\n addIssueToContext,\n INVALID,\n ParseInput,\n ParseReturnType,\n SyncParseReturnType,\n} from '../index'\n\nexport interface ZodSetDef<Value extends ZodTypeAny = ZodTypeAny> extends ZodTypeDef {\n valueType: Value\n typeName: ZodFirstPartyTypeKind.ZodSet\n minSize: { value: number; message?: string } | null\n maxSize: { value: number; message?: string } | null\n}\n\nexport class ZodSet<Value extends ZodTypeAny = ZodTypeAny> extends ZodType<\n Set<Value['_output']>,\n ZodSetDef<Value>,\n Set<Value['_input']>\n> {\n dereference(defs: Record<string, ZodTypeAny>): ZodTypeAny {\n return new ZodSet({\n ...this._def,\n valueType: this._def.valueType.dereference(defs),\n })\n }\n\n getReferences(): string[] {\n return this._def.valueType.getReferences()\n }\n\n clone(): ZodSet<Value> {\n return new ZodSet({\n ...this._def,\n valueType: this._def.valueType.clone(),\n }) as ZodSet<Value>\n }\n\n _parse(input: ParseInput): ParseReturnType<this['_output']> {\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\n const def = this._def\n\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\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\n const valueType = this._def.valueType\n\n function finalizeSet(elements: SyncParseReturnType<any>[]) {\n const parsedSet = new Set()\n for (const element of elements) {\n if (element.status === 'aborted') return INVALID\n if (element.status === 'dirty') status.dirty()\n parsedSet.add(element.value)\n }\n return { status: status.value, value: parsedSet }\n }\n\n const elements = [...(ctx.data as Set<unknown>).values()].map((item, i) =>\n valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)),\n )\n\n if (ctx.common.async) {\n return Promise.all(elements).then((elements) => finalizeSet(elements))\n } else {\n return finalizeSet(elements as SyncParseReturnType[])\n }\n }\n\n min(minSize: number, message?: errorUtil.ErrMessage): this {\n return new ZodSet({\n ...this._def,\n minSize: { value: minSize, message: errorUtil.toString(message) },\n }) as this\n }\n\n max(maxSize: number, message?: errorUtil.ErrMessage): this {\n return new ZodSet({\n ...this._def,\n maxSize: { value: maxSize, message: errorUtil.toString(message) },\n }) as this\n }\n\n size(size: number, message?: errorUtil.ErrMessage): this {\n return this.min(size, message).max(size, message) as this\n }\n\n nonempty(message?: errorUtil.ErrMessage): ZodSet<Value> {\n return this.min(1, message) as this\n }\n\n static create = <Value extends ZodTypeAny = ZodTypeAny>(\n valueType: Value,\n params?: RawCreateParams,\n ): ZodSet<Value> => {\n return new ZodSet({\n valueType,\n minSize: null,\n maxSize: null,\n typeName: ZodFirstPartyTypeKind.ZodSet,\n ...processCreateParams(params),\n })\n }\n\n isEqual(schema: ZodType): boolean {\n if (!(schema instanceof ZodSet)) return false\n\n const thisMin = this._def.minSize?.value\n const thatMin = schema._def.minSize?.value\n if (thisMin !== thatMin) return false // min message is not important for equality\n\n const thisMax = this._def.maxSize?.value\n const thatMax = schema._def.maxSize?.value\n if (thisMax !== thatMax) return false // max message is not important for equality\n\n return this._def.valueType.isEqual(schema._def.valueType)\n }\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport {\n StringValidation,\n ZodIssueCode,\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeDef,\n processCreateParams,\n util,\n ZodParsedType,\n errorUtil,\n addIssueToContext,\n INVALID,\n ParseContext,\n ParseInput,\n ParseReturnType,\n ParseStatus,\n} from '../index'\nimport { CustomSet } from '../utils/custom-set'\nimport { generateDatetimeRegex } from './datetime'\n\nexport type IpVersion = 'v4' | 'v6'\nexport type ZodStringCheck =\n | { kind: 'min'; value: number; message?: string }\n | { kind: 'max'; value: number; message?: string }\n | { kind: 'length'; value: number; message?: string }\n | { kind: 'email'; message?: string }\n | { kind: 'url'; message?: string }\n | { kind: 'emoji'; message?: string }\n | { kind: 'uuid'; message?: string }\n | { kind: 'cuid'; message?: string }\n | { kind: 'includes'; value: string; position?: number; message?: string }\n | { kind: 'cuid2'; message?: string }\n | { kind: 'ulid'; message?: string }\n | { kind: 'startsWith'; value: string; message?: string }\n | { kind: 'endsWith'; value: string; message?: string }\n | { kind: 'regex'; regex: RegExp; message?: string }\n | { kind: 'trim'; message?: string }\n | { kind: 'toLowerCase'; message?: string }\n | { kind: 'toUpperCase'; message?: string }\n | {\n kind: 'datetime'\n offset: boolean\n precision: number | null\n message?: string\n }\n | { kind: 'ip'; version?: IpVersion; message?: string }\n\nexport interface ZodStringDef extends ZodTypeDef {\n checks: ZodStringCheck[]\n typeName: ZodFirstPartyTypeKind.ZodString\n coerce: boolean\n}\nexport const cuidRegex = /^c[^\\s-]{8,}$/i\nexport const cuid2Regex = /^[a-z][a-z0-9]*$/\nexport const ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/\nexport const 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\n// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn't support unicode\n\nexport const emailRegex = /^(?!\\.)(?!.*\\.\\.)([A-Z0-9_+-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i\n\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emojiRegex = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`\n\nexport const isEmojiRegex = (value: any) => value === _emojiRegex\n\nlet emojiRegex: RegExp\nexport const ipv4Regex =\n /^(((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}))$/\nexport 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})))$/\n\nfunction isValidIP(ip: string, version?: IpVersion) {\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\n return false\n}\n\nexport class ZodString extends ZodType<string, ZodStringDef> {\n _parse(input: ParseInput): ParseReturnType<string> {\n if (this._def.coerce) {\n input.data = String(input.data)\n }\n const parsedType = this._getType(input)\n\n if (parsedType !== ZodParsedType.string) {\n const ctx = this._getOrReturnCtx(input)\n addIssueToContext(\n ctx,\n {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.string,\n received: ctx.parsedType,\n },\n //\n )\n return INVALID\n }\n\n const status = new ParseStatus()\n let ctx: undefined | ParseContext = undefined\n\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 } 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 } 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 } 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 } 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 } 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 } 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 } 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 } 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 } 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 } else if (check.kind === 'url') {\n try {\n new URL(input.data)\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 } 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 } else if (check.kind === 'trim') {\n input.data = input.data.trim()\n } else if (check.kind === 'includes') {\n if (!(input.data as string).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 } else if (check.kind === 'toLowerCase') {\n input.data = input.data.toLowerCase()\n } else if (check.kind === 'toUpperCase') {\n input.data = input.data.toUpperCase()\n } else if (check.kind === 'startsWith') {\n if (!(input.data as string).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 } else if (check.kind === 'endsWith') {\n if (!(input.data as string).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 } else if (check.kind === 'datetime') {\n const regex = generateDatetimeRegex(check)\n\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 } 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 } else {\n util.assertNever(check)\n }\n }\n\n return { status: status.value, value: input.data }\n }\n\n protected _regex(regex: RegExp, validation: StringValidation, message?: errorUtil.ErrMessage) {\n return this.refinement((data) => regex.test(data), {\n validation,\n code: ZodIssueCode.invalid_string,\n ...errorUtil.errToObj(message),\n })\n }\n\n _addCheck(check: ZodStringCheck) {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, check],\n })\n }\n\n email(message?: errorUtil.ErrMessage) {\n return this._addCheck({ kind: 'email', ...errorUtil.errToObj(message) })\n }\n url(message?: errorUtil.ErrMessage) {\n return this._addCheck({ kind: 'url', ...errorUtil.errToObj(message) })\n }\n emoji(message?: errorUtil.ErrMessage) {\n return this._addCheck({ kind: 'emoji', ...errorUtil.errToObj(message) })\n }\n uuid(message?: errorUtil.ErrMessage) {\n return this._addCheck({ kind: 'uuid', ...errorUtil.errToObj(message) })\n }\n cuid(message?: errorUtil.ErrMessage) {\n return this._addCheck({ kind: 'cuid', ...errorUtil.errToObj(message) })\n }\n cuid2(message?: errorUtil.ErrMessage) {\n return this._addCheck({ kind: 'cuid2', ...errorUtil.errToObj(message) })\n }\n ulid(message?: errorUtil.ErrMessage) {\n return this._addCheck({ kind: 'ulid', ...errorUtil.errToObj(message) })\n }\n\n ip(options?: string | { version?: 'v4' | 'v6'; message?: string }) {\n return this._addCheck({ kind: 'ip', ...errorUtil.errToObj(options) })\n }\n\n datetime(\n options?:\n | string\n | {\n message?: string | undefined\n precision?: number | null\n offset?: boolean\n },\n ) {\n if (typeof options === 'string') {\n return this._addCheck({\n kind: 'datetime',\n precision: null,\n offset: 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 ...errorUtil.errToObj(options?.message),\n })\n }\n\n regex(regex: RegExp, message?: errorUtil.ErrMessage) {\n return this._addCheck({\n kind: 'regex',\n regex: regex,\n ...errorUtil.errToObj(message),\n })\n }\n\n includes(value: string, options?: { message?: string; position?: number }) {\n return this._addCheck({\n kind: 'includes',\n value: value,\n position: options?.position,\n ...errorUtil.errToObj(options?.message),\n })\n }\n\n startsWith(value: string, message?: errorUtil.ErrMessage) {\n return this._addCheck({\n kind: 'startsWith',\n value: value,\n ...errorUtil.errToObj(message),\n })\n }\n\n endsWith(value: string, message?: errorUtil.ErrMessage) {\n return this._addCheck({\n kind: 'endsWith',\n value: value,\n ...errorUtil.errToObj(message),\n })\n }\n\n min(minLength: number, message?: errorUtil.ErrMessage) {\n return this._addCheck({\n kind: 'min',\n value: minLength,\n ...errorUtil.errToObj(message),\n })\n }\n\n max(maxLength: number, message?: errorUtil.ErrMessage) {\n return this._addCheck({\n kind: 'max',\n value: maxLength,\n ...errorUtil.errToObj(message),\n })\n }\n\n length(len: number, message?: errorUtil.ErrMessage) {\n return this._addCheck({\n kind: 'length',\n value: len,\n ...errorUtil.errToObj(message),\n })\n }\n\n /**\n * @deprecated Use z.string().min(1) instead.\n * @see {@link ZodString.min}\n */\n nonempty(message?: errorUtil.ErrMessage) {\n return this.min(1, errorUtil.errToObj(message))\n }\n\n trim() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: 'trim' }],\n })\n }\n\n secret() {\n this._def[zuiKey] = { ...this._def[zuiKey], secret: true }\n return this\n }\n\n toLowerCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: 'toLowerCase' }],\n })\n }\n\n toUpperCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: 'toUpperCase' }],\n })\n }\n\n get isDatetime() {\n return !!this._def.checks.find((ch) => ch.kind === 'datetime')\n }\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 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\n get minLength() {\n let min: number | null = null\n for (const ch of this._def.checks) {\n if (ch.kind === 'min') {\n if (min === null || ch.value > min) min = ch.value\n }\n }\n return min\n }\n get maxLength() {\n let max: number | null = null\n for (const ch of this._def.checks) {\n if (ch.kind === 'max') {\n if (max === null || ch.value < max) max = ch.value\n }\n }\n return max\n }\n\n static create = (params?: RawCreateParams & { coerce?: true }): ZodString => {\n return new ZodString({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodString,\n coerce: params?.coerce ?? false,\n ...processCreateParams({ ...params, supportsExtensions: ['secret'] }),\n })\n }\n\n isEqual(schema: ZodType): boolean {\n if (!(schema instanceof ZodString)) return false\n const thisChecks = new CustomSet<ZodStringCheck>(this._def.checks)\n const thatChecks = new CustomSet<ZodStringCheck>(schema._def.checks)\n return thisChecks.isEqual(thatChecks)\n }\n}\n", "import {\n ZodIssueCode,\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeDef,\n processCreateParams,\n ZodParsedType,\n addIssueToContext,\n INVALID,\n OK,\n ParseInput,\n ParseReturnType,\n} from '../index'\n\nexport interface ZodSymbolDef extends ZodTypeDef {\n typeName: ZodFirstPartyTypeKind.ZodSymbol\n}\n\nexport class ZodSymbol extends ZodType<symbol, ZodSymbolDef, symbol> {\n _parse(input: ParseInput): ParseReturnType<this['_output']> {\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\n return OK(input.data)\n }\n\n static create = (params?: RawCreateParams): ZodSymbol => {\n return new ZodSymbol({\n typeName: ZodFirstPartyTypeKind.ZodSymbol,\n ...processCreateParams(params),\n })\n }\n\n isEqual(schema: ZodType): boolean {\n return schema instanceof ZodSymbol\n }\n}\n", "import {\n IssueData,\n input,\n output,\n RawCreateParams,\n RefinementCtx,\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeAny,\n ZodTypeDef,\n processCreateParams,\n util,\n addIssueToContext,\n DIRTY,\n INVALID,\n isValid,\n ParseInput,\n ParseReturnType,\n} from '../index'\n\nexport type Refinement<T> = (arg: T, ctx: RefinementCtx) => any\nexport type SuperRefinement<T> = (arg: T, ctx: RefinementCtx) => void | Promise<void>\n\nexport type RefinementEffect<T> = {\n type: 'refinement'\n refinement: (arg: T, ctx: RefinementCtx) => any\n}\nexport type TransformEffect<T> = {\n type: 'transform'\n transform: (arg: T, ctx: RefinementCtx) => any\n}\nexport type PreprocessEffect<T> = {\n type: 'preprocess'\n transform: (arg: T, ctx: RefinementCtx) => any\n}\nexport type Effect<T> = RefinementEffect<T> | TransformEffect<T> | PreprocessEffect<T>\n\nexport interface ZodEffectsDef<T extends ZodTypeAny = ZodTypeAny> extends ZodTypeDef {\n schema: T\n typeName: ZodFirstPartyTypeKind.ZodEffects\n effect: Effect<any>\n}\n\nexport class ZodEffects<T extends ZodTypeAny = ZodTypeAny, Output = output<T>, Input = input<T>> extends ZodType<\n Output,\n ZodEffectsDef<T>,\n Input\n> {\n innerType() {\n return this._def.schema\n }\n\n /**\n * @deprecated use naked() instead\n */\n sourceType(): T {\n return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects\n ? (this._def.schema as unknown as ZodEffects<T>).sourceType()\n : (this._def.schema as T)\n }\n\n dereference(defs: Record<string, ZodTypeAny>): ZodTypeAny {\n return new ZodEffects({\n ...this._def,\n schema: this._def.schema.dereference(defs),\n })\n }\n\n getReferences(): string[] {\n return this._def.schema.getReferences()\n }\n\n clone(): ZodEffects<T, Output, Input> {\n return new ZodEffects({\n ...this._def,\n schema: this._def.schema.clone(),\n }) as ZodEffects<T, Output, Input>\n }\n\n _parse(input: ParseInput): ParseReturnType<this['_output']> {\n const { status, ctx } = this._processInputParams(input)\n\n const effect = this._def.effect || null\n\n const checkCtx: RefinementCtx = {\n addIssue: (arg: IssueData) => {\n addIssueToContext(ctx, arg)\n if (arg.fatal) {\n status.abort()\n } else {\n status.dirty()\n }\n },\n get path() {\n return ctx.path\n },\n }\n\n checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx)\n\n if (effect.type === 'preprocess') {\n const processed = effect.transform(ctx.data, checkCtx)\n\n if (ctx.common.async) {\n return Promise.resolve(processed).then(async (processed) => {\n if (status.value === 'aborted') return INVALID\n\n const result = await this._def.schema._parseAsync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n })\n if (result.status === 'aborted') return INVALID\n if (result.status === 'dirty') return DIRTY(result.value)\n if (status.value === 'dirty') return DIRTY(result.value)\n return result\n })\n } else {\n if (status.value === 'aborted') 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') return INVALID\n if (result.status === 'dirty') return DIRTY(result.value)\n if (status.value === 'dirty') return DIRTY(result.value)\n return result\n }\n }\n if (effect.type === 'refinement') {\n const executeRefinement = (acc: unknown): any => {\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\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') return INVALID\n if (inner.status === 'dirty') status.dirty()\n\n // return value is ignored\n executeRefinement(inner.value)\n return { status: status.value, value: inner.value }\n } else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((inner) => {\n if (inner.status === 'aborted') return INVALID\n if (inner.status === 'dirty') status.dirty()\n\n return executeRefinement(inner.value).then(() => {\n return { status: status.value, value: inner.value }\n })\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\n if (!isValid(base)) return base\n\n const result = effect.transform(base.value, checkCtx)\n if (result instanceof Promise) {\n throw new Error(\n `Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`,\n )\n }\n\n return { status: status.value, value: result }\n } else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((base) => {\n if (!isValid(base)) return base\n\n return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({\n status: status.value,\n value: result,\n }))\n })\n }\n }\n\n util.assertNever(effect)\n }\n\n static create = <I extends ZodType>(\n schema: I,\n effect: Effect<I['_output']>,\n params?: RawCreateParams,\n ): ZodEffects<I, I['_output']> => {\n return new ZodEffects({\n schema,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect,\n ...processCreateParams(params),\n })\n }\n\n static createWithPreprocess = <I extends ZodTypeAny>(\n preprocess: (arg: unknown, ctx: RefinementCtx) => unknown,\n schema: I,\n params?: RawCreateParams,\n ): ZodEffects<I, I['_output'], unknown> => {\n return new ZodEffects({\n schema,\n effect: { type: 'preprocess', transform: preprocess },\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n ...processCreateParams(params),\n })\n }\n\n isEqual(schema: ZodType): boolean {\n if (!(schema instanceof ZodEffects)) return false\n if (!this._def.schema.isEqual(schema._def.schema)) return false\n\n if (this._def.effect.type === 'refinement') {\n if (schema._def.effect.type !== 'refinement') return false\n return util.compareFunctions(this._def.effect.refinement, schema._def.effect.refinement)\n }\n\n if (this._def.effect.type === 'transform') {\n if (schema._def.effect.type !== 'transform') return false\n return util.compareFunctions(this._def.effect.transform, schema._def.effect.transform)\n }\n\n if (this._def.effect.type === 'preprocess') {\n if (schema._def.effect.type !== 'preprocess') return false\n return util.compareFunctions(this._def.effect.transform, schema._def.effect.transform)\n }\n\n type _assertion = util.AssertNever<typeof this._def.effect>\n return false\n }\n\n naked() {\n return this._def.schema.naked()\n }\n\n mandatory(): ZodEffects<ZodTypeAny> {\n return new ZodEffects({\n ...this._def,\n schema: this._def.schema.mandatory(),\n })\n }\n}\nexport { ZodEffects as ZodTransformer }\n", "import { unique } from '../../utils'\nimport {\n ZodIssueCode,\n ParseInputLazyPath,\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeAny,\n ZodTypeDef,\n processCreateParams,\n ZodParsedType,\n addIssueToContext,\n INVALID,\n ParseInput,\n ParseReturnType,\n ParseStatus,\n SyncParseReturnType,\n} from '../index'\nimport { CustomSet } from '../utils/custom-set'\n\nexport type ZodTupleItems = [ZodTypeAny, ...ZodTypeAny[]]\nexport type AssertArray<T> = T extends any[] ? T : never\nexport type OutputTypeOfTuple<T extends ZodTupleItems | []> = AssertArray<{\n [k in keyof T]: T[k] extends ZodType<any, any> ? T[k]['_output'] : never\n}>\nexport type OutputTypeOfTupleWithRest<\n T extends ZodTupleItems | [],\n Rest extends ZodTypeAny | null = null,\n> = Rest extends ZodTypeAny ? [...OutputTypeOfTuple<T>, ...Rest['_output'][]] : OutputTypeOfTuple<T>\n\nexport type InputTypeOfTuple<T extends ZodTupleItems | []> = AssertArray<{\n [k in keyof T]: T[k] extends ZodType<any, any> ? T[k]['_input'] : never\n}>\nexport type InputTypeOfTupleWithRest<\n T extends ZodTupleItems | [],\n Rest extends ZodTypeAny | null = null,\n> = Rest extends ZodTypeAny ? [...InputTypeOfTuple<T>, ...Rest['_input'][]] : InputTypeOfTuple<T>\n\nexport interface ZodTupleDef<T extends ZodTupleItems | [] = ZodTupleItems, Rest extends ZodTypeAny | null = null>\n extends ZodTypeDef {\n items: T\n rest: Rest\n typeName: ZodFirstPartyTypeKind.ZodTuple\n}\n\nexport type AnyZodTuple = ZodTuple<[ZodTypeAny, ...ZodTypeAny[]] | [], ZodTypeAny | null>\nexport class ZodTuple<\n T extends [ZodTypeAny, ...ZodTypeAny[]] | [] = [ZodTypeAny, ...ZodTypeAny[]],\n Rest extends ZodTypeAny | null = null,\n> extends ZodType<OutputTypeOfTupleWithRest<T, Rest>, ZodTupleDef<T, Rest>, InputTypeOfTupleWithRest<T, Rest>> {\n dereference(defs: Record<string, ZodTypeAny>): ZodTypeAny {\n const items = this._def.items.map((item) => item.dereference(defs)) as [ZodTypeAny, ...ZodTypeAny[]]\n const rest = this._def.rest ? this._def.rest.dereference(defs) : null\n return new ZodTuple({\n ...this._def,\n items,\n rest,\n })\n }\n\n getReferences(): string[] {\n return unique([\n ...this._def.items.flatMap((item) => item.getReferences()),\n ...(this._def.rest ? this._def.rest.getReferences() : []),\n ])\n }\n\n clone(): ZodTuple<T, Rest> {\n const items = this._def.items.map((item) => item.clone()) as [ZodTypeAny, ...ZodTypeAny[]]\n const rest = this._def.rest ? this._def.rest.clone() : null\n return new ZodTuple({\n ...this._def,\n items,\n rest,\n }) as ZodTuple<T, Rest>\n }\n\n _parse(input: ParseInput): ParseReturnType<this['_output']> {\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\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\n return INVALID\n }\n\n const rest = this._def.rest\n\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\n const items = [...ctx.data]\n .map((item, itemIndex) => {\n const schema = this._def.items[itemIndex] || this._def.rest\n if (!schema) return null\n return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex))\n })\n .filter((x) => !!x) // filter nulls\n\n if (ctx.common.async) {\n return Promise.all(items).then((results) => {\n return ParseStatus.mergeArray(status, results)\n })\n } else {\n return ParseStatus.mergeArray(status, items as SyncParseReturnType[])\n }\n }\n\n get items() {\n return this._def.items\n }\n\n rest<Rest extends ZodTypeAny>(rest: Rest): ZodTuple<T, Rest> {\n return new ZodTuple({\n ...this._def,\n rest,\n })\n }\n\n static create = <T extends [ZodTypeAny, ...ZodTypeAny[]] | []>(\n schemas: T,\n params?: RawCreateParams,\n ): ZodTuple<T, null> => {\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 }\n\n isEqual(schema: ZodType): boolean {\n if (!(schema instanceof ZodTuple)) return false\n if (!this._restEquals(schema)) return false\n\n const compare = (a: ZodType, b: ZodType) => a.isEqual(b)\n const thisItems = new CustomSet<ZodType>(this._def.items, { compare })\n const schemaItems = new CustomSet<ZodType>(schema._def.items, { compare })\n return thisItems.isEqual(schemaItems)\n }\n\n private _restEquals(schema: ZodTuple) {\n if (this._def.rest === null) {\n return schema._def.rest === null\n }\n return schema._def.rest !== null && this._def.rest.isEqual(schema._def.rest)\n }\n}\n", "import {\n ZodIssueCode,\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeDef,\n processCreateParams,\n ZodParsedType,\n addIssueToContext,\n INVALID,\n OK,\n ParseInput,\n ParseReturnType,\n ZodNever,\n} from '../index'\n\nexport interface ZodUndefinedDef extends ZodTypeDef {\n typeName: ZodFirstPartyTypeKind.ZodUndefined\n}\n\nexport class ZodUndefined extends ZodType<undefined, ZodUndefinedDef> {\n _parse(input: ParseInput): ParseReturnType<this['_output']> {\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 params?: RawCreateParams\n\n static create = (params?: RawCreateParams): ZodUndefined => {\n return new ZodUndefined({\n typeName: ZodFirstPartyTypeKind.ZodUndefined,\n ...processCreateParams(params),\n })\n }\n\n isEqual(schema: ZodType): boolean {\n return schema instanceof ZodUndefined\n }\n\n mandatory(): ZodNever {\n return ZodNever.create({\n ...this._def,\n })\n }\n}\n", "import { unique } from '../../utils'\nimport {\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeAny,\n ZodTypeDef,\n ZodError,\n ZodIssue,\n ZodIssueCode,\n processCreateParams,\n addIssueToContext,\n DIRTY,\n INVALID,\n ParseContext,\n ParseInput,\n ParseReturnType,\n SyncParseReturnType,\n ZodUndefined,\n ZodNever,\n} from '../index'\nimport { CustomSet } from '../utils/custom-set'\n\ntype DefaultZodUnionOptions = Readonly<[ZodTypeAny, ZodTypeAny, ...ZodTypeAny[]]>\nexport type ZodUnionOptions = Readonly<[ZodTypeAny, ...ZodTypeAny[]]>\nexport interface ZodUnionDef<T extends ZodUnionOptions = DefaultZodUnionOptions> extends ZodTypeDef {\n options: T\n typeName: ZodFirstPartyTypeKind.ZodUnion\n}\n\nexport class ZodUnion<T extends ZodUnionOptions = DefaultZodUnionOptions> extends ZodType<\n T[number]['_output'],\n ZodUnionDef<T>,\n T[number]['_input']\n> {\n dereference(defs: Record<string, ZodTypeAny>): ZodTypeAny {\n const options = this._def.options.map((option) => option.dereference(defs)) as [\n ZodTypeAny,\n ZodTypeAny,\n ...ZodTypeAny[],\n ]\n return new ZodUnion({\n ...this._def,\n options,\n })\n }\n\n getReferences(): string[] {\n return unique(\n this._def.options.reduce<string[]>((acc, option) => {\n return [...acc, ...option.getReferences()]\n }, []),\n )\n }\n\n clone(): ZodUnion<T> {\n const options = this._def.options.map((option) => option.clone()) as [ZodTypeAny, ...ZodTypeAny[]]\n return new ZodUnion({\n ...this._def,\n options,\n }) as ZodUnion<any>\n }\n\n _parse(input: ParseInput): ParseReturnType<this['_output']> {\n const { ctx } = this._processInputParams(input)\n const options = this._def.options\n\n function handleResults(results: { ctx: ParseContext; result: SyncParseReturnType<any> }[]) {\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\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\n // return invalid\n const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues))\n\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n })\n return INVALID\n }\n\n if (ctx.common.async) {\n return Promise.all(\n options.map(async (option) => {\n const childCtx: ParseContext = {\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 }),\n ).then(handleResults)\n } else {\n let dirty: undefined | { result: DIRTY<any>; ctx: ParseContext } = undefined\n const issues: ZodIssue[][] = []\n for (const option of options) {\n const childCtx: ParseContext = {\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\n if (result.status === 'valid') {\n return result\n } else if (result.status === 'dirty' && !dirty) {\n dirty = { result, ctx: childCtx }\n }\n\n if (childCtx.common.issues.length) {\n issues.push(childCtx.common.issues)\n }\n }\n\n if (dirty) {\n ctx.common.issues.push(...dirty.ctx.common.issues)\n return dirty.result\n }\n\n const unionErrors = issues.map((issues) => new ZodError(issues))\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n })\n\n return INVALID\n }\n }\n\n get options() {\n return this._def.options\n }\n\n static create = <T extends Readonly<[ZodTypeAny, ZodTypeAny, ...ZodTypeAny[]]>>(\n types: T,\n params?: RawCreateParams,\n ): ZodUnion<T> => {\n return new ZodUnion({\n options: types,\n typeName: ZodFirstPartyTypeKind.ZodUnion,\n ...processCreateParams(params),\n })\n }\n\n isEqual(schema: ZodType): boolean {\n if (!(schema instanceof ZodUnion)) return false\n\n const compare = (a: ZodType, b: ZodType) => a.isEqual(b)\n const thisOptions = new CustomSet<ZodType>([...this._def.options], { compare })\n const thatOptions = new CustomSet<ZodType>([...schema._def.options], { compare })\n\n return thisOptions.isEqual(thatOptions)\n }\n\n mandatory(): ZodType {\n const options = this._def.options.filter((o) => !(o instanceof ZodUndefined)).map((option) => option.mandatory())\n const [first, second, ...others] = options\n if (!first) {\n return ZodNever.create({\n ...this._def,\n })\n }\n if (!second) {\n return first\n }\n return new ZodUnion({\n ...this._def,\n options: [first, second, ...others],\n })\n }\n}\n", "import {\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeDef,\n processCreateParams,\n OK,\n ParseInput,\n ParseReturnType,\n} from '../index'\n\nexport interface ZodUnknownDef extends ZodTypeDef {\n typeName: ZodFirstPartyTypeKind.ZodUnknown\n}\n\nexport class ZodUnknown extends ZodType<unknown, ZodUnknownDef> {\n // required\n _unknown = true as const\n _parse(input: ParseInput): ParseReturnType<this['_output']> {\n return OK(input.data)\n }\n\n static create = (params?: RawCreateParams): ZodUnknown => {\n return new ZodUnknown({\n typeName: ZodFirstPartyTypeKind.ZodUnknown,\n ...processCreateParams(params),\n })\n }\n\n isEqual(schema: ZodType): boolean {\n return schema instanceof ZodUnknown\n }\n}\n", "import {\n ZodIssueCode,\n RawCreateParams,\n ZodFirstPartyTypeKind,\n ZodType,\n ZodTypeDef,\n processCreateParams,\n ZodParsedType,\n addIssueToContext,\n INVALID,\n OK,\n ParseInput,\n ParseReturnType,\n} from '../index'\n\nexport interface ZodVoidDef extends ZodTypeDef {\n typeName: ZodFirstPartyTypeKind.ZodVoid\n}\n\nexport class ZodVoid extends ZodType<void, ZodVoidDef> {\n _parse(input: ParseInput): ParseReturnType<this['_output']> {\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\n static create = (params?: RawCreateParams): ZodVoid => {\n return new ZodVoid({\n typeName: ZodFirstPartyTypeKind.ZodVoid,\n ...processCreateParams(params),\n })\n }\n\n isEqual(schema: ZodType): boolean {\n return schema instanceof ZodVoid\n }\n}\n", "import { TypeOf, ZodEnum, ZodString } from './types'\n\nconst AI_MODELS = [\n 'gpt-3.5-turbo',\n 'gpt-3.5-turbo-16k',\n 'gpt-4',\n 'gpt-4-1106-preview',\n 'gpt-4-vision-preview',\n 'gpt-4-0125-preview',\n 'gpt-4-turbo-preview',\n 'gpt-4-turbo',\n 'gpt-4o',\n 'gpt-3.5-turbo-0125',\n 'gpt-3.5-turbo-1106',\n] as const\n\nconst variableType = ZodEnum.create([\n 'any',\n 'string',\n 'number',\n 'boolean',\n 'object',\n 'pattern',\n 'date',\n 'array',\n 'target',\n 'time',\n 'enum',\n])\n\nexport const variable = (opts?: { type?: TypeOf<typeof variableType>; params?: { horizontal?: boolean } }) =>\n ZodString.create().displayAs<any>({ id: 'variable', params: { type: opts?.type || 'any', ...opts?.params } })\n\nexport const conversation = (opts?: { params?: { horizontal?: boolean } }) =>\n ZodString.create().displayAs<any>({ id: 'conversation', params: { ...opts?.params } })\n\nexport const user = (opts?: { params?: { horizontal?: boolean } }) =>\n ZodString.create().displayAs<any>({ id: 'user', params: { ...opts?.params } })\n\nexport const message = (opts?: { params?: { horizontal?: boolean } }) =>\n ZodString.create().displayAs<any>({ id: 'message', params: { ...opts?.params } })\n\nexport const agent = (opts?: { params?: { horizontal?: boolean } }) =>\n ZodString.create().displayAs<any>({ id: 'agent', params: { ...opts?.params } })\n\nexport const event = (opts?: { params?: { horizontal?: boolean } }) =>\n ZodString.create().displayAs<any>({ id: 'event', params: { ...opts?.params } })\n\nexport const table = (opts?: { params?: { horizontal?: boolean } }) =>\n ZodString.create().displayAs<any>({ id: 'table', params: { ...opts?.params } })\n\nexport const tablerow = (opts?: { params?: { horizontal?: boolean } }) =>\n ZodString.create().displayAs<any>({ id: 'tablerow', params: { ...opts?.params } })\n\nexport const intent = (opts?: { params?: { horizontal?: boolean } }) =>\n ZodString.create().displayAs<any>({ id: 'intent', params: { ...opts?.params } })\n\nexport const aimodel = () => ZodEnum.create(AI_MODELS).displayAs<any>({ id: 'dropdown', params: {} })\n\nexport const datasource = (opts?: { horizontal?: boolean }) =>\n ZodString.create().displayAs<any>({ id: 'datasource', params: { ...opts } })\n\nexport const knowledgebase = (opts?: { horizontal?: boolean }) =>\n ZodString.create().displayAs<any>({ id: 'knowledgebase', params: { ...opts } })\n", "import * as z from './z'\nexport * from './z'\nexport { z }\n\nexport default z\n", "import { JsonSchemaObject, JsonSchema, Refs } from '../types'\nimport { parseSchema } from './parseSchema'\n\nexport const parseAnyOf = (schema: JsonSchemaObject & { anyOf: JsonSchema[] }, refs: Refs) => {\n return schema.anyOf.length\n ? schema.anyOf.length === 1\n ? parseSchema(schema.anyOf[0]!, {\n ...refs,\n path: [...refs.path, 'anyOf', 0],\n })\n : `z.union([${schema.anyOf\n .map((schema, i) => parseSchema(schema, { ...refs, path: [...refs.path, 'anyOf', i] }))\n .join(', ')}])`\n : `z.any()`\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport { JsonSchemaObject } from '../types'\n\nexport const parseBoolean = (_schema: JsonSchemaObject & { type: 'boolean' }) => {\n if (_schema[zuiKey]?.coerce) {\n return 'z.coerce.boolean()'\n }\n return 'z.boolean()'\n}\n", "import { JsonSchemaObject } from '../types'\n\nexport const parseDefault = (_schema: JsonSchemaObject) => {\n return 'z.any()'\n}\n", "import { JsonSchemaObject, Refs } from '../types'\nimport { parseSchema } from './parseSchema'\n\nexport const parseMultipleType = (schema: JsonSchemaObject & { type: string[] }, refs: Refs) => {\n return `z.union([${schema.type.map((type) => parseSchema({ ...schema, type }, refs)).join(', ')}])`\n}\n", "import { JsonSchemaObject, JsonSchema, Refs } from '../types'\nimport { parseSchema } from './parseSchema'\n\nexport const parseNot = (schema: JsonSchemaObject & { not: JsonSchema }, refs: Refs) => {\n return `z.any().refine((value) => !${parseSchema(schema.not, {\n ...refs,\n path: [...refs.path, 'not'],\n })}.safeParse(value).success, \"Invalid input: Should NOT be valid against schema\")`\n}\n", "import { JsonSchemaObject } from '../types'\n\nexport const parseNull = (_schema: JsonSchemaObject & { type: 'null' }) => {\n return 'z.null()'\n}\n", "import { JsonSchemaObject } from './types'\n\nexport const half = <T>(arr: T[]): [T[], T[]] => {\n return [arr.slice(0, arr.length / 2), arr.slice(arr.length / 2)]\n}\n\nexport const omit = <T extends object, K extends keyof T>(obj: T, ...keys: K[]): Omit<T, K> =>\n Object.keys(obj).reduce((acc: Record<string, unknown>, key) => {\n if (!keys.includes(key as K)) {\n acc[key] = obj[key as K]\n }\n\n return acc\n }, {}) as Omit<T, K>\n\ntype Opener = string\ntype MessagePrefix = string\ntype Closer = string\n\ntype Builder = [Opener, Closer] | [Opener, MessagePrefix, Closer]\n\nexport function withMessage(\n schema: JsonSchemaObject,\n key: string,\n get: (props: { value: unknown; json: string }) => Builder | void,\n) {\n const value = schema[key as keyof typeof schema]\n\n let r = ''\n\n if (value !== undefined) {\n const got = get({ value, json: JSON.stringify(value) })\n\n if (got) {\n const opener = got[0]\n const prefix = got.length === 3 ? got[1] : ''\n const closer = got.length === 3 ? got[2] : got[1]\n\n r += opener\n\n if (schema.errorMessage?.[key] !== undefined) {\n r += prefix + JSON.stringify(schema.errorMessage[key])\n }\n r\n r += closer\n }\n }\n\n return r\n}\n", "import { parseSchema } from './parseSchema'\nimport { half } from '../utils'\nimport { JsonSchemaObject, JsonSchema, Refs } from '../types'\n\nconst originalIndex = Symbol('Original index')\n\nconst ensureOriginalIndex = (arr: JsonSchema[]) => {\n let newArr = []\n\n for (let i = 0; i < arr.length; i++) {\n const item = arr[i]\n if (typeof item === 'boolean') {\n newArr.push(item ? { [originalIndex]: i } : { [originalIndex]: i, not: {} })\n } else if (originalIndex in item!) {\n return arr\n } else {\n newArr.push({ ...item, [originalIndex]: i })\n }\n }\n\n return newArr\n}\n\nexport function parseAllOf(schema: JsonSchemaObject & { allOf: JsonSchema[] }, refs: Refs): string {\n if (schema.allOf.length === 0) {\n return 'z.never()'\n } else if (schema.allOf.length === 1) {\n const item = schema.allOf[0]\n\n return parseSchema(item!, {\n ...refs,\n path: [...refs.path, 'allOf', (item as any)[originalIndex]],\n })\n } else {\n const [left, right] = half(ensureOriginalIndex(schema.allOf))\n\n return `z.intersection(${parseAllOf({ allOf: left }, refs)}, ${parseAllOf(\n {\n allOf: right,\n },\n refs,\n )})`\n }\n}\n", "import { JsonSchemaObject, Refs } from '../types'\nimport { withMessage } from '../utils'\nimport { parseSchema } from './parseSchema'\n\nexport const parseArray = (schema: JsonSchemaObject & { type: 'array' }, refs: Refs) => {\n if (Array.isArray(schema.items)) {\n return `z.tuple([${schema.items.map((v, i) => parseSchema(v, { ...refs, path: [...refs.path, 'items', i] }))}])`\n }\n\n let r = !schema.items\n ? 'z.array(z.any())'\n : `z.array(${parseSchema(schema.items, {\n ...refs,\n path: [...refs.path, 'items'],\n })})`\n\n r += withMessage(schema, 'minItems', ({ json }) => [`.min(${json}`, ', ', ')'])\n\n r += withMessage(schema, 'maxItems', ({ json }) => [`.max(${json}`, ', ', ')'])\n\n return r\n}\n", "import { JsonSchemaObject, Serializable } from '../types'\n\nexport const parseConst = (schema: JsonSchemaObject & { const: Serializable }) => {\n return `z.literal(${JSON.stringify(schema.const)})`\n}\n", "import { JsonSchemaObject, Serializable } from '../types'\n\nexport const parseEnum = (schema: JsonSchemaObject & { enum: Serializable[] }) => {\n if (schema.enum.length === 0) {\n return 'z.never()'\n } else if (schema.enum.length === 1) {\n // union does not work when there is only one element\n return `z.literal(${JSON.stringify(schema.enum[0])})`\n } else if (schema.enum.every((x) => typeof x === 'string')) {\n return `z.enum([${schema.enum.map((x) => JSON.stringify(x))}])`\n } else {\n return `z.union([${schema.enum.map((x) => `z.literal(${JSON.stringify(x)})`).join(', ')}])`\n }\n}\n", "import { JsonSchemaObject, JsonSchema, Refs } from '../types'\nimport { parseSchema } from './parseSchema'\n\nexport const parseIfThenElse = (\n schema: JsonSchemaObject & {\n if: JsonSchema\n then: JsonSchema\n else: JsonSchema\n },\n refs: Refs,\n): string => {\n const $if = parseSchema(schema.if, { ...refs, path: [...refs.path, 'if'] })\n const $then = parseSchema(schema.then, {\n ...refs,\n path: [...refs.path, 'then'],\n })\n const $else = parseSchema(schema.else, {\n ...refs,\n path: [...refs.path, 'else'],\n })\n return `z.union([${$then}, ${$else}]).superRefine((value,ctx) => {\n const result = ${$if}.safeParse(value).success\n ? ${$then}.safeParse(value)\n : ${$else}.safeParse(value);\n if (!result.success) {\n result.error.errors.forEach((error) => ctx.addIssue(error))\n }\n})`\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport { JsonSchemaObject } from '../types'\nimport { withMessage } from '../utils'\n\nexport const parseNumber = (schema: JsonSchemaObject & { type: 'number' | 'integer' }) => {\n let r = 'z.number()'\n\n if (schema[zuiKey]?.coerce) {\n r = 'z.coerce.number()'\n }\n\n if (schema.type === 'integer') {\n r += withMessage(schema, 'type', () => ['.int(', ')'])\n } else {\n r += withMessage(schema, 'format', ({ value }) => {\n if (value === 'int64') {\n return ['.int(', ')']\n }\n })\n }\n\n r += withMessage(schema, 'multipleOf', ({ value, json }) => {\n if (value === 1) {\n if (r.startsWith('z.number().int(')) {\n return\n }\n\n return ['.int(', ')']\n }\n\n return [`.multipleOf(${json}`, ', ', ')']\n })\n\n if (typeof schema.minimum === 'number') {\n if (schema.exclusiveMinimum === true) {\n r += withMessage(schema, 'minimum', ({ json }) => [`.gt(${json}`, ', ', ')'])\n } else {\n r += withMessage(schema, 'minimum', ({ json }) => [`.gte(${json}`, ', ', ')'])\n }\n } else if (typeof schema.exclusiveMinimum === 'number') {\n r += withMessage(schema, 'exclusiveMinimum', ({ json }) => [`.gt(${json}`, ', ', ')'])\n }\n\n if (typeof schema.maximum === 'number') {\n if (schema.exclusiveMaximum === true) {\n r += withMessage(schema, 'maximum', ({ json }) => [`.lt(${json}`, ', ', ')'])\n } else {\n r += withMessage(schema, 'maximum', ({ json }) => [`.lte(${json}`, ', ', ')'])\n }\n } else if (typeof schema.exclusiveMaximum === 'number') {\n r += withMessage(schema, 'exclusiveMaximum', ({ json }) => [`.lt(${json}`, ', ', ')'])\n }\n\n return r\n}\n", "import { JsonSchemaObject, JsonSchema, Refs } from '../types'\nimport { parseSchema } from './parseSchema'\n\nexport const parseOneOf = (schema: JsonSchemaObject & { oneOf: JsonSchema[] }, refs: Refs) => {\n return schema.oneOf.length\n ? schema.oneOf.length === 1\n ? parseSchema(schema.oneOf[0]!, {\n ...refs,\n path: [...refs.path, 'oneOf', 0],\n })\n : `z.any().superRefine((x, ctx) => {\n const schemas = [${schema.oneOf\n .map((schema, i) =>\n parseSchema(schema, {\n ...refs,\n path: [...refs.path, 'oneOf', i],\n }),\n )\n .join(', ')}];\n const errors = schemas.reduce(\n (errors: z.ZodError[], schema) =>\n ((result) => (\"error\" in result ? [...errors, result.error] : errors))(\n schema.safeParse(x)\n ),\n []\n );\n if (schemas.length - errors.length !== 1) {\n ctx.addIssue({\n path: ctx.path,\n code: \"invalid_union\",\n unionErrors: errors,\n message: \"Invalid input: Should pass single schema\",\n });\n }\n })`\n : 'z.any()'\n}\n", "import { Discriminator, JsonSchemaObject, Refs } from '../types'\nimport { parseAnyOf } from './parseAnyOf'\nimport { parseOneOf } from './parseOneOf'\nimport { its, parseSchema } from './parseSchema'\nimport { parseAllOf } from './parseAllOf'\n\nexport function parseObject(objectSchema: JsonSchemaObject & { type: 'object' } & Discriminator, refs: Refs): string {\n let properties: string | undefined = undefined\n\n if (objectSchema.properties) {\n if (!Object.keys(objectSchema.properties).length) {\n properties = 'z.object({})'\n } else {\n properties = 'z.object({ '\n\n properties += Object.keys(objectSchema.properties)\n .map((key) => {\n const propSchema = objectSchema.properties![key]\n\n const result = `${JSON.stringify(key)}: ${parseSchema(propSchema!, {\n ...refs,\n path: [...refs.path, 'properties', key],\n })}`\n\n const hasDefault =\n (typeof propSchema === 'object' && propSchema.default !== undefined) ||\n (typeof objectSchema.default === 'object' && objectSchema.default !== null && key in objectSchema.default)\n\n const required = Array.isArray(objectSchema.required)\n ? objectSchema.required.includes(key)\n : typeof propSchema === 'object' && propSchema.required === true\n\n const optional = !hasDefault && !required\n\n return optional ? `${result}.optional()` : result\n })\n .join(', ')\n\n properties += ' })'\n }\n }\n\n const additionalProperties =\n objectSchema.additionalProperties !== undefined\n ? parseSchema(objectSchema.additionalProperties, {\n ...refs,\n path: [...refs.path, 'additionalProperties'],\n })\n : undefined\n\n let patternProperties: string | undefined = undefined\n\n if (objectSchema.patternProperties) {\n const parsedPatternProperties = Object.fromEntries(\n Object.entries(objectSchema.patternProperties).map(([key, value]) => {\n return [\n key,\n parseSchema(value, {\n ...refs,\n path: [...refs.path, 'patternProperties', key],\n }),\n ]\n }, {}),\n )\n\n patternProperties = ''\n\n if (properties) {\n if (additionalProperties) {\n patternProperties += `.catchall(z.union([${[\n ...Object.values(parsedPatternProperties),\n additionalProperties,\n ].join(', ')}]))`\n } else if (Object.keys(parsedPatternProperties).length > 1) {\n patternProperties += `.catchall(z.union([${Object.values(parsedPatternProperties).join(', ')}]))`\n } else {\n patternProperties += `.catchall(${Object.values(parsedPatternProperties)})`\n }\n } else {\n if (additionalProperties) {\n patternProperties += `z.record(z.union([${[\n ...Object.values(parsedPatternProperties),\n additionalProperties,\n ].join(', ')}]))`\n } else if (Object.keys(parsedPatternProperties).length > 1) {\n patternProperties += `z.record(z.union([${Object.values(parsedPatternProperties).join(', ')}]))`\n } else {\n patternProperties += `z.record(${Object.values(parsedPatternProperties)})`\n }\n }\n\n patternProperties += '.superRefine((value, ctx) => {\\n'\n\n patternProperties += 'for (const key in value) {\\n'\n\n if (additionalProperties) {\n if (objectSchema.properties) {\n patternProperties += `let evaluated = [${Object.keys(objectSchema.properties)\n .map((key) => JSON.stringify(key))\n .join(', ')}].includes(key)\\n`\n } else {\n patternProperties += `let evaluated = false\\n`\n }\n }\n\n for (const key in objectSchema.patternProperties) {\n patternProperties += 'if (key.match(new RegExp(' + JSON.stringify(key) + '))) {\\n'\n if (additionalProperties) {\n patternProperties += 'evaluated = true\\n'\n }\n patternProperties += 'const result = ' + parsedPatternProperties[key] + '.safeParse(value[key])\\n'\n patternProperties += 'if (!result.success) {\\n'\n\n patternProperties += `ctx.addIssue({\n path: [...ctx.path, key],\n code: 'custom',\n message: \\`Invalid input: Key matching regex /\\${key}/ must match schema\\`,\n params: {\n issues: result.error.issues\n }\n })\\n`\n\n patternProperties += '}\\n'\n patternProperties += '}\\n'\n }\n\n if (additionalProperties) {\n patternProperties += 'if (!evaluated) {\\n'\n patternProperties += 'const result = ' + additionalProperties + '.safeParse(value[key])\\n'\n patternProperties += 'if (!result.success) {\\n'\n\n patternProperties += `ctx.addIssue({\n path: [...ctx.path, key],\n code: 'custom',\n message: \\`Invalid input: must match catchall schema\\`,\n params: {\n issues: result.error.issues\n }\n })\\n`\n\n patternProperties += '}\\n'\n patternProperties += '}\\n'\n }\n patternProperties += '}\\n'\n patternProperties += '})'\n }\n\n let output = properties\n ? patternProperties\n ? properties + patternProperties\n : additionalProperties\n ? additionalProperties === 'z.never()'\n ? properties + '.strict()'\n : properties + `.catchall(${additionalProperties})`\n : properties\n : patternProperties\n ? patternProperties\n : additionalProperties\n ? `z.record(${additionalProperties})`\n : 'z.record(z.any())'\n\n if (its.an.anyOf(objectSchema)) {\n output += `.and(${parseAnyOf(\n {\n ...objectSchema,\n anyOf: objectSchema.anyOf.map((x) =>\n typeof x === 'object' && !x.type && (x.properties || x.additionalProperties || x.patternProperties)\n ? { ...x, type: 'object' }\n : x,\n ),\n },\n refs,\n )})`\n }\n\n if (its.a.oneOf(objectSchema)) {\n output += `.and(${parseOneOf(\n {\n ...objectSchema,\n oneOf: objectSchema.oneOf.map((x) =>\n typeof x === 'object' && !x.type && (x.properties || x.additionalProperties || x.patternProperties)\n ? { ...x, type: 'object' }\n : x,\n ),\n },\n refs,\n )})`\n }\n\n if (its.an.allOf(objectSchema)) {\n output += `.and(${parseAllOf(\n {\n ...objectSchema,\n allOf: objectSchema.allOf.map((x) =>\n typeof x === 'object' && !x.type && (x.properties || x.additionalProperties || x.patternProperties)\n ? { ...x, type: 'object' }\n : x,\n ),\n },\n refs,\n )})`\n }\n\n return output\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport { JsonSchemaObject } from '../types'\nimport { withMessage } from '../utils'\n\nexport const parseString = (schema: JsonSchemaObject & { type: 'string' }) => {\n let r = 'z.string()'\n if (schema[zuiKey]?.coerce) {\n if (schema.format === 'date-time') {\n return 'z.coerce.date()'\n }\n r = 'z.coerce.string()'\n }\n\n r += withMessage(schema, 'format', ({ value }) => {\n switch (value) {\n case 'email':\n return ['.email(', ')']\n case 'ip':\n return ['.ip(', ')']\n case 'ipv4':\n return ['.ip({ version: \"v4\"', ', message: ', ' })']\n case 'ipv6':\n return ['.ip({ version: \"v6\"', ', message: ', ' })']\n case 'uri':\n return ['.url(', ')']\n case 'uuid':\n return ['.uuid(', ')']\n case 'date-time':\n return ['.datetime(', ')']\n }\n })\n\n r += withMessage(schema, 'pattern', ({ json }) => [`.regex(new RegExp(${json})`, ', ', ')'])\n\n r += withMessage(schema, 'minLength', ({ json }) => [`.min(${json}`, ', ', ')'])\n\n r += withMessage(schema, 'maxLength', ({ json }) => [`.max(${json}`, ', ', ')'])\n\n return r\n}\n", "import { JsonSchemaObject, Refs } from '../types'\nimport { omit } from '../utils'\nimport { parseSchema } from './parseSchema'\n\n/**\n * For compatibility with open api 3.0 nullable\n */\nexport const parseNullable = (schema: JsonSchemaObject & { nullable: true }, refs: Refs) => {\n return `${parseSchema(omit(schema, 'nullable'), refs, true)}.nullable()`\n}\n", "import { JsonSchemaObject } from '../types'\n\nexport const parseRef = (schema: JsonSchemaObject & { $ref: string }) => {\n return `z.ref('${schema.$ref}')`\n}\n", "import { JSONSchemaExtended, JsonSchema, Refs } from '../types'\nimport { parseSchema } from './parseSchema'\nimport { parseOneOf } from './parseOneOf'\n\nexport const parseDiscriminator = (schema: JSONSchemaExtended & { oneOf: JsonSchema[] }, refs: Refs) => {\n if (schema.oneOf.length <= 1 || !schema.discriminator?.propertyName) {\n return parseOneOf(schema, refs)\n }\n\n const schemas = schema.oneOf.map((schema, i) =>\n parseSchema(schema, {\n ...refs,\n path: [...refs.path, 'oneOf', i],\n }),\n )\n\n return `z.discriminatedUnion(\"${schema.discriminator?.propertyName}\", [${schemas.join(', ')}])`\n}\n\nexport const __original = (schema: JSONSchemaExtended & { oneOf: JsonSchema[] }, refs: Refs) => {\n return schema.oneOf.length\n ? schema.oneOf.length === 1\n ? parseSchema(schema.oneOf[0]!, {\n ...refs,\n path: [...refs.path, 'oneOf', 0],\n })\n : `z.any().superRefine((x, ctx) => {\n const schemas = [${schema.oneOf.map((schema, i) =>\n parseSchema(schema, {\n ...refs,\n path: [...refs.path, 'oneOf', i],\n }),\n )}];\n const errors = schemas.reduce(\n (errors: z.ZodError[], schema) =>\n ((result) => (\"error\" in result ? [...errors, result.error] : errors))(\n schema.safeParse(x)\n ),\n []\n );\n if (schemas.length - errors.length !== 1) {\n ctx.addIssue({\n path: ctx.path,\n code: \"invalid_union\",\n unionErrors: errors,\n message: \"Invalid input: Should pass single schema\",\n });\n }\n })`\n : 'z.any()'\n}\n", "import { parseAnyOf } from './parseAnyOf'\nimport { parseBoolean } from './parseBoolean'\nimport { parseDefault } from './parseDefault'\nimport { parseMultipleType } from './parseMultipleType'\nimport { parseNot } from './parseNot'\nimport { parseNull } from './parseNull'\nimport { parseAllOf } from './parseAllOf'\nimport { parseArray } from './parseArray'\nimport { parseConst } from './parseConst'\nimport { parseEnum } from './parseEnum'\nimport { parseIfThenElse } from './parseIfThenElse'\nimport { parseNumber } from './parseNumber'\nimport { parseObject } from './parseObject'\nimport { parseString } from './parseString'\nimport { parseOneOf } from './parseOneOf'\nimport { parseNullable } from './parseNullable'\nimport { parseRef } from './parseRef'\nimport { ParserSelector, Refs, JsonSchemaObject, JsonSchema, Serializable, JSONSchemaExtended } from '../types'\nimport { parseDiscriminator } from './parseDiscriminator'\n\nexport const parseSchema = (\n schema: JSONSchemaExtended,\n refs: Refs = { seen: new Map(), path: [] },\n blockMeta?: boolean,\n): string => {\n if (typeof schema !== 'object') return schema ? 'z.any()' : 'z.never()'\n\n if (refs.parserOverride) {\n const custom = refs.parserOverride(schema, refs)\n\n if (typeof custom === 'string') {\n return custom\n }\n }\n\n let seen = refs.seen.get(schema)\n\n if (seen) {\n if (seen.r !== undefined) {\n return seen.r\n }\n\n if (refs.depth === undefined || seen.n >= refs.depth) {\n return 'z.any()'\n }\n\n seen.n += 1\n } else {\n seen = { r: undefined, n: 0 }\n refs.seen.set(schema, seen)\n }\n\n let parsed = selectParser(schema, refs)\n\n if (!blockMeta) {\n parsed = addMeta(schema, parsed)\n\n if (!refs.withoutDefaults) {\n parsed = addDefaults(schema, parsed)\n }\n }\n\n seen.r = parsed\n\n return parsed\n}\n\nconst addMeta = (schema: JsonSchemaObject, parsed: string): string => {\n if (schema.description) {\n parsed += `.describe(${JSON.stringify(schema.description)})`\n }\n\n return parsed\n}\n\nconst addDefaults = (schema: JsonSchemaObject, parsed: string): string => {\n if (schema.default !== undefined) {\n parsed += `.default(${JSON.stringify(schema.default)})`\n }\n\n return parsed\n}\n\nconst selectParser: ParserSelector = (schema, refs) => {\n if (its.a.nullable(schema)) {\n return parseNullable(schema, refs)\n } else if (its.an.object(schema)) {\n return parseObject(schema, refs)\n } else if (its.an.array(schema)) {\n return parseArray(schema, refs)\n } else if (its.an.anyOf(schema)) {\n return parseAnyOf(schema, refs)\n } else if (its.an.allOf(schema)) {\n return parseAllOf(schema, refs)\n } else if (its.a.discriminator(schema)) {\n return parseDiscriminator(schema, refs)\n } else if (its.a.oneOf(schema)) {\n return parseOneOf(schema, refs)\n } else if (its.a.not(schema)) {\n return parseNot(schema, refs)\n } else if (its.an.enum(schema)) {\n return parseEnum(schema) //<-- needs to come before primitives\n } else if (its.a.const(schema)) {\n return parseConst(schema)\n } else if (its.a.multipleType(schema)) {\n return parseMultipleType(schema, refs)\n } else if (its.a.primitive(schema, 'string')) {\n return parseString(schema)\n } else if (its.a.primitive(schema, 'number') || its.a.primitive(schema, 'integer')) {\n return parseNumber(schema)\n } else if (its.a.primitive(schema, 'boolean')) {\n return parseBoolean(schema)\n } else if (its.a.primitive(schema, 'null')) {\n return parseNull(schema)\n } else if (its.a.conditional(schema)) {\n return parseIfThenElse(schema, refs)\n } else if (its.a.ref(schema)) {\n return parseRef(schema)\n } else {\n return parseDefault(schema)\n }\n}\n\nexport const its = {\n an: {\n object: (x: JsonSchemaObject): x is JsonSchemaObject & { type: 'object' } => x.type === 'object',\n array: (x: JsonSchemaObject): x is JsonSchemaObject & { type: 'array' } => x.type === 'array',\n anyOf: (\n x: JsonSchemaObject,\n ): x is JsonSchemaObject & {\n anyOf: JsonSchema[]\n } => x.anyOf !== undefined,\n allOf: (\n x: JsonSchemaObject,\n ): x is JsonSchemaObject & {\n allOf: JsonSchema[]\n } => x.allOf !== undefined,\n enum: (\n x: JsonSchemaObject,\n ): x is JsonSchemaObject & {\n enum: Serializable | Serializable[]\n } => x.enum !== undefined,\n },\n a: {\n nullable: (x: JsonSchemaObject): x is JsonSchemaObject & { nullable: true } => x.nullable === true,\n multipleType: (x: JsonSchemaObject): x is JsonSchemaObject & { type: string[] } => Array.isArray(x.type),\n not: (\n x: JsonSchemaObject,\n ): x is JsonSchemaObject & {\n not: JsonSchema\n } => x.not !== undefined,\n const: (\n x: JsonSchemaObject,\n ): x is JsonSchemaObject & {\n const: Serializable\n } => x.const !== undefined,\n primitive: <T extends 'string' | 'number' | 'integer' | 'boolean' | 'null'>(\n x: JsonSchemaObject,\n p: T,\n ): x is JsonSchemaObject & { type: T } => x.type === p,\n conditional: (\n x: JsonSchemaObject,\n ): x is JsonSchemaObject & {\n if: JsonSchema\n then: JsonSchema\n else: JsonSchema\n } => Boolean('if' in x && x.if && 'then' in x && 'else' in x && x.then && x.else),\n discriminator: (\n x: JsonSchemaObject,\n ): x is JsonSchemaObject & {\n discriminator: { propertyName: string }\n oneOf: JsonSchema[]\n } => x.oneOf !== undefined && x.discriminator?.propertyName !== undefined,\n oneOf: (\n x: JsonSchemaObject,\n ): x is JsonSchemaObject & {\n oneOf: JsonSchema[]\n } => x.oneOf !== undefined,\n ref: (x: JsonSchemaObject): x is JsonSchemaObject & { $ref: string } => x.$ref !== undefined,\n },\n}\n", "import z, { ZodTypeAny } from '../../z'\n\nexport type EvalZuiStringResult =\n | {\n sucess: true\n value: ZodTypeAny\n }\n | {\n sucess: false\n error: string\n }\n\nexport const evalZuiString = (zuiString: string): EvalZuiStringResult => {\n let result: any\n\n try {\n result = new Function('z', `return ${zuiString}`)(z)\n } catch (thrown) {\n const err = thrown instanceof Error ? thrown : new Error(String(thrown))\n return { sucess: false, error: `Failed to evaluate schema: ${err.message}` }\n }\n\n if (!(result instanceof z.ZodType)) {\n return { sucess: false, error: `String \"${zuiString}\" does not evaluate to a Zod schema` }\n }\n\n return {\n sucess: true,\n value: result,\n }\n}\n", "import {\n type ZodAnyDef,\n type ZodArrayDef,\n type ZodBooleanDef,\n ZodFirstPartyTypeKind,\n type ZodLazyDef,\n type ZodNullDef,\n type ZodObjectDef,\n type ZodRecordDef,\n type ZodStringDef,\n type ZodSymbolDef,\n type ZodTypeAny,\n type ZodUndefinedDef,\n type ZodUnionDef,\n ZodNullableDef,\n ZodOptionalDef,\n ZodNumberDef,\n ZodEnumDef,\n ZodDefaultDef,\n z,\n} from '../../z/index'\nimport { zuiKey } from '../../ui/constants'\nimport { JsonSchema7Type } from '../zui-to-json-schema-legacy/parseDef'\nimport { parseSchema } from './parsers/parseSchema'\nimport { ZuiExtensionObject } from '../../ui/types'\nimport { JSONSchemaExtended } from './types'\nimport { evalZuiString } from '../common/eval-zui-string'\nimport * as errors from '../common/errors'\n\nexport const jsonSchemaToZodStr = (schema: JSONSchemaExtended): string => {\n return parseSchema(schema, {\n seen: new Map(),\n path: [],\n })\n}\n\nconst jsonSchemaToZod = (schema: any): ZodTypeAny => {\n let code = jsonSchemaToZodStr(schema)\n code = code.replaceAll('errors: z.ZodError[]', 'errors')\n const evaluationResult = evalZuiString(code)\n if (!evaluationResult.sucess) {\n throw new errors.JSONSchemaToZuiError(evaluationResult.error)\n }\n return evaluationResult.value\n}\n\nconst applyZuiPropsRecursively = (zodField: ZodTypeAny, jsonSchemaField: any) => {\n if (jsonSchemaField[zuiKey] && zodField._def) {\n zodField.naked()._def[zuiKey] = jsonSchemaField[zuiKey]\n }\n\n if (zodField._def?.typeName === 'ZodObject' && jsonSchemaField.type === 'object' && jsonSchemaField.properties) {\n Object.entries(jsonSchemaField.properties).forEach(([key, nestedField]) => {\n const shape = typeof zodField._def.shape === 'function' ? zodField._def.shape() : zodField._def.shape\n\n if (shape[key]) {\n applyZuiPropsRecursively(shape[key], nestedField)\n }\n })\n }\n\n if (\n zodField._def?.typeName === 'ZodRecord' &&\n jsonSchemaField.type === 'object' &&\n jsonSchemaField.additionalProperties\n ) {\n applyZuiPropsRecursively(zodField._def.valueType, jsonSchemaField.additionalProperties)\n }\n\n if (jsonSchemaField.type === 'array' && jsonSchemaField.items) {\n const items = jsonSchemaField.items\n\n if (typeof items === 'object' && !Array.isArray(items)) {\n const arrayShape = zodField._def.type\n\n if (arrayShape) {\n applyZuiPropsRecursively(arrayShape, items)\n }\n } else if (Array.isArray(items)) {\n items.forEach((item, index) => {\n const def: z.ZodDef = zodField._def\n\n if (def.typeName === z.ZodFirstPartyTypeKind.ZodTuple) {\n applyZuiPropsRecursively(def.items[index]!, item)\n }\n })\n }\n }\n}\n\nexport type ZodAllDefs =\n | ZodArrayDef\n | ZodObjectDef\n | ZodBooleanDef\n | ZodNullableDef\n | ZodNumberDef\n | ZodAnyDef\n | ZodSymbolDef\n | ZodLazyDef\n | ZodUndefinedDef\n | ZodNullDef\n | ZodEnumDef\n | ZodUnionDef\n | ZodRecordDef\n | ZodOptionalDef\n | ZodStringDef\n | ZodDefaultDef\n\nexport type ZodTypeKind = `${ZodFirstPartyTypeKind}`\n\nexport type ZodDef<Type extends ZodTypeKind> = Type extends 'ZodObject'\n ? ZodObjectDef\n : Type extends 'ZodArray'\n ? ZodArrayDef\n : Type extends 'ZodBoolean'\n ? ZodBooleanDef\n : Type extends 'ZodString'\n ? ZodStringDef\n : Type extends 'ZodSymbol'\n ? ZodSymbolDef\n : Type extends 'ZodAny'\n ? ZodAnyDef\n : Type extends 'ZodLazy'\n ? ZodLazyDef\n : Type extends 'ZodUndefined'\n ? ZodUndefinedDef\n : Type extends 'ZodNull'\n ? ZodNullDef\n : Type extends 'ZodUnion'\n ? ZodUnionDef\n : Type extends 'ZodRecord'\n ? ZodRecordDef\n : Type extends 'ZodNullable'\n ? ZodNullableDef\n : Type extends 'ZodOptional'\n ? ZodOptionalDef\n : Type extends 'ZodNumber'\n ? ZodNumberDef\n : Type extends 'ZodEnum'\n ? ZodEnumDef\n : Type extends 'ZodDefault'\n ? ZodDefaultDef\n : never\n\nexport const traverseZodDefinitions = (\n def: ZodDef<ZodFirstPartyTypeKind>,\n cb: <T extends ZodTypeKind>(type: T, def: ZodDef<T> & { [zuiKey]?: ZuiExtensionObject }, path: string[]) => void,\n path: string[] = [],\n) => {\n switch (def.typeName) {\n case ZodFirstPartyTypeKind.ZodObject:\n const shape = def.shape()\n cb(ZodFirstPartyTypeKind.ZodObject, def, path)\n Object.entries(shape).forEach(([key, field]) => {\n traverseZodDefinitions(field._def, cb, [...path, key])\n })\n break\n\n case ZodFirstPartyTypeKind.ZodArray:\n cb(ZodFirstPartyTypeKind.ZodArray, def, path)\n traverseZodDefinitions(def.type._def, cb, [...path, '0'])\n break\n\n case ZodFirstPartyTypeKind.ZodLazy:\n cb(ZodFirstPartyTypeKind.ZodLazy, def, path)\n traverseZodDefinitions(def.getter()._def, cb, path)\n break\n\n case ZodFirstPartyTypeKind.ZodUnion:\n cb(ZodFirstPartyTypeKind.ZodUnion, def, path)\n def.options.forEach((option) => {\n traverseZodDefinitions(option._def, cb, path)\n })\n break\n\n case ZodFirstPartyTypeKind.ZodRecord:\n cb(ZodFirstPartyTypeKind.ZodRecord, def, path)\n traverseZodDefinitions(def, cb, [...path])\n break\n\n case ZodFirstPartyTypeKind.ZodUndefined:\n cb(ZodFirstPartyTypeKind.ZodUndefined, def, path)\n break\n\n case ZodFirstPartyTypeKind.ZodNull:\n cb(ZodFirstPartyTypeKind.ZodNull, def, path)\n break\n\n case ZodFirstPartyTypeKind.ZodBoolean:\n cb(ZodFirstPartyTypeKind.ZodBoolean, def, path)\n break\n\n case ZodFirstPartyTypeKind.ZodString:\n cb(ZodFirstPartyTypeKind.ZodString, def, path)\n break\n\n case ZodFirstPartyTypeKind.ZodSymbol:\n cb(ZodFirstPartyTypeKind.ZodSymbol, def, path)\n break\n\n case ZodFirstPartyTypeKind.ZodAny:\n cb(ZodFirstPartyTypeKind.ZodAny, def, path)\n break\n\n case ZodFirstPartyTypeKind.ZodUnion:\n cb(ZodFirstPartyTypeKind.ZodUnion, def, path)\n break\n\n case ZodFirstPartyTypeKind.ZodRecord:\n cb(ZodFirstPartyTypeKind.ZodRecord, def, path)\n break\n\n case ZodFirstPartyTypeKind.ZodNullable:\n cb(ZodFirstPartyTypeKind.ZodNullable, def, path)\n traverseZodDefinitions(def.innerType._def, cb, path)\n break\n case ZodFirstPartyTypeKind.ZodOptional:\n cb(ZodFirstPartyTypeKind.ZodOptional, def, path)\n traverseZodDefinitions(def.innerType._def, cb, path)\n break\n\n case ZodFirstPartyTypeKind.ZodNumber:\n cb(ZodFirstPartyTypeKind.ZodNumber, def, path)\n break\n\n case ZodFirstPartyTypeKind.ZodEnum:\n cb(ZodFirstPartyTypeKind.ZodEnum, def, path)\n break\n\n case ZodFirstPartyTypeKind.ZodDefault:\n cb(ZodFirstPartyTypeKind.ZodDefault, def, path)\n break\n default:\n throw new errors.JSONSchemaToZuiError(`Unknown Zod type: ${(def as any).typeName}`)\n }\n}\n\n/**\n * Converts a JSONSchema to a Zui schema.\n *\n * @deprecated Use the new fromJSONSchema function instead.\n */\nexport const fromJSONSchemaLegacy = (schema: JsonSchema7Type): ZodTypeAny => {\n const zodSchema = jsonSchemaToZod(schema)\n applyZuiPropsRecursively(zodSchema, schema)\n return zodSchema as unknown as ZodTypeAny\n}\n", "import { JSONSchema7 } from 'json-schema'\nimport * as json from '../common/json-schema'\nimport z from '../../z'\n\nexport const isOptionalSchema = (s: JSONSchema7): s is json.OptionalSchema =>\n s.anyOf !== undefined &&\n s.anyOf.length === 2 &&\n s.anyOf.some((s) => typeof s !== 'boolean' && isUndefinedSchema(s)) &&\n (s as json.OptionalSchema)['x-zui']?.def?.typeName === z.ZodFirstPartyTypeKind.ZodOptional\n\nexport const isNullableSchema = (s: JSONSchema7): s is json.NullableSchema =>\n s.anyOf !== undefined &&\n s.anyOf.length === 2 &&\n s.anyOf.some((s) => typeof s !== 'boolean' && s.type === 'null') &&\n (s as json.NullableSchema)['x-zui']?.def?.typeName === z.ZodFirstPartyTypeKind.ZodNullable\n\nexport const isUndefinedSchema = (s: JSONSchema7): s is json.UndefinedSchema =>\n s.not === true && (s as json.UndefinedSchema)['x-zui']?.def?.typeName === z.ZodFirstPartyTypeKind.ZodUndefined\n\nexport const isUnknownSchema = (s: JSONSchema7): s is json.UnknownSchema =>\n !s.not && (s as json.UnknownSchema)['x-zui']?.def?.typeName === z.ZodFirstPartyTypeKind.ZodUnknown\n\nexport const isDiscriminatedUnionSchema = (s: JSONSchema7): s is json.DiscriminatedUnionSchema =>\n s.anyOf !== undefined &&\n (s as json.DiscriminatedUnionSchema)['x-zui']?.def?.typeName === z.ZodFirstPartyTypeKind.ZodDiscriminatedUnion\n", "import { JSONSchema7 } from 'json-schema'\nimport z from '../../../z'\n\nexport const numberJSONSchemaToZuiNumber = ({\n type,\n minimum,\n exclusiveMinimum,\n maximum,\n exclusiveMaximum,\n multipleOf,\n format,\n}: JSONSchema7 & { type: 'number' | 'integer' }): z.ZodNumber => {\n let zodNumber = z.number()\n\n if (type === 'integer') {\n zodNumber = zodNumber.int()\n }\n\n if (format === 'finite') {\n zodNumber = zodNumber.finite()\n }\n\n if (exclusiveMinimum !== undefined) {\n zodNumber = zodNumber.gt(exclusiveMinimum)\n } else if (minimum !== undefined) {\n zodNumber = zodNumber.gte(minimum)\n }\n\n if (exclusiveMaximum !== undefined) {\n zodNumber = zodNumber.lt(exclusiveMaximum)\n } else if (maximum !== undefined) {\n zodNumber = zodNumber.lte(maximum)\n }\n\n if (multipleOf !== undefined) {\n zodNumber = zodNumber.multipleOf(multipleOf)\n }\n\n return zodNumber\n}\n", "import { JSONSchema7 } from 'json-schema'\nimport { zodPatterns } from '../../zui-to-json-schema-legacy/parsers/string'\nimport z from '../../../z'\nimport * as datetime from '../../../z/types/string/datetime'\n\nexport const stringJSONSchemaToZuiString = ({\n format,\n pattern,\n minLength,\n maxLength,\n}: JSONSchema7 & { type: 'string' }): z.ZodString => {\n let zodString = z.string()\n\n if (minLength && maxLength && minLength === maxLength) {\n zodString = zodString.length(minLength)\n } else {\n if (minLength) {\n zodString = zodString.min(minLength)\n }\n if (maxLength) {\n zodString = zodString.max(maxLength)\n }\n }\n\n if (format === 'cuid' || pattern === zodPatterns.cuid) {\n zodString = zodString.cuid()\n } else if (format === 'cuid2' || pattern === zodPatterns.cuid2) {\n zodString = zodString.cuid2()\n } else if (format === 'emoji' || pattern === zodPatterns.emoji) {\n zodString = zodString.emoji()\n } else if (format === 'ulid' || pattern === zodPatterns.ulid) {\n zodString = zodString.ulid()\n } else if (format === 'date-time') {\n const { precision, offset } = pattern ? datetime.extractPrecisionAndOffset(pattern) : {}\n zodString = zodString.datetime({ precision, offset })\n } else if (format === 'email' || pattern === zodPatterns.email) {\n zodString = zodString.email()\n } else if (format === 'ipv4' || pattern === zodPatterns.ipv4) {\n zodString = zodString.ip()\n } else if (format === 'ipv6' || pattern === zodPatterns.ipv6) {\n zodString = zodString.ip('v6')\n } else if (format === 'uri') {\n zodString = zodString.url()\n } else if (format === 'uuid' || pattern === zodPatterns.uuid) {\n zodString = zodString.uuid()\n } else if (pattern) {\n zodString = zodString.regex(new RegExp(pattern))\n }\n\n return zodString\n}\n", "import { JSONSchema7, JSONSchema7Type } from 'json-schema'\nimport * as errs from '../../common/errors'\nimport z from '../../../z'\nimport { numberJSONSchemaToZuiNumber } from './number'\nimport { stringJSONSchemaToZuiString } from './string'\n\ntype ZuiPrimitive = keyof ZuiPrimitiveSchemas\ntype ZuiPrimitiveSchemas = {\n string: z.ZodString\n number: z.ZodNumber\n boolean: z.ZodBoolean\n null: z.ZodNull\n}\ntype ZuiPrimitiveTypes = {\n string: string\n number: number\n boolean: boolean\n null: null\n}\n\ntype ReturnType<T extends ZuiPrimitive> =\n | ZuiPrimitiveSchemas[T]\n | z.ZodLiteral<ZuiPrimitiveTypes[T]>\n | z.ZodUnion<[z.ZodLiteral<ZuiPrimitiveTypes[T]>, ...z.ZodLiteral<ZuiPrimitiveTypes[T]>[]]>\n\nexport const toZuiPrimitive = <T extends ZuiPrimitive>(type: T, schema: JSONSchema7): ReturnType<T> => {\n const values: JSONSchema7Type[] = []\n if (schema.enum !== undefined) {\n values.push(...schema.enum)\n }\n if (schema.const !== undefined) {\n values.push(schema.const)\n }\n\n let zuiPrimitive\n\n const primitiveValues = values.filter((value): value is ZuiPrimitiveTypes[T] => typeof value === type)\n const [first] = primitiveValues\n if (!first) {\n if (type === 'string' && schema.type === 'string') {\n zuiPrimitive = stringJSONSchemaToZuiString(schema as JSONSchema7 & { type: 'string' }) as ZuiPrimitiveSchemas[T]\n }\n if (type === 'number' && (schema.type === 'number' || schema.type === 'integer')) {\n zuiPrimitive = numberJSONSchemaToZuiNumber(\n schema as JSONSchema7 & { type: 'number' | 'integer' },\n ) as ZuiPrimitiveSchemas[T]\n }\n if (type === 'boolean') {\n zuiPrimitive = z.boolean() as ZuiPrimitiveSchemas[T]\n }\n if (type === 'null') {\n zuiPrimitive = z.null() as ZuiPrimitiveSchemas[T]\n }\n\n if (!zuiPrimitive) {\n throw new errs.JSONSchemaToZuiError(`Unknown primitive type: \"${type}\"`)\n }\n } else {\n if (primitiveValues.length === 1) {\n zuiPrimitive = z.literal(first) satisfies z.ZodLiteral<ZuiPrimitiveTypes[T]>\n } else {\n const items = primitiveValues.map((value) => z.literal(value)) as [\n z.ZodLiteral<ZuiPrimitiveTypes[T]>,\n z.ZodLiteral<ZuiPrimitiveTypes[T]>,\n ...z.ZodLiteral<ZuiPrimitiveTypes[T]>[],\n ]\n zuiPrimitive = z.union(items)\n }\n }\n\n if (schema.description) {\n zuiPrimitive = zuiPrimitive.describe(schema.description) as ZuiPrimitiveSchemas[T]\n }\n\n return zuiPrimitive\n}\n", "import { ArraySchema, SetSchema, TupleSchema } from '../../common/json-schema'\nimport z from '../../../z'\nimport { JSONSchema7Definition } from 'json-schema'\n\nexport const arrayJSONSchemaToZuiArray = (\n schema: ArraySchema | SetSchema | TupleSchema,\n toZui: (x: JSONSchema7Definition) => z.ZodTypeAny,\n): z.ZodArray | z.ZodSet | z.ZodTuple =>\n _isTuple(schema)\n ? _handleTuple(schema, toZui)\n : _isSet(schema)\n ? _handleSet(schema, toZui)\n : _handleArray(schema, toZui)\n\nconst _isTuple = (schema: ArraySchema | SetSchema | TupleSchema): schema is TupleSchema => Array.isArray(schema.items)\n\nconst _isSet = (schema: ArraySchema | SetSchema | TupleSchema): schema is SetSchema =>\n schema.items !== undefined && (schema as SetSchema).uniqueItems\n\nconst _handleTuple = (\n { items, additionalItems }: TupleSchema,\n toZui: (x: JSONSchema7Definition) => z.ZodTypeAny,\n): z.ZodTuple => {\n const itemSchemas = items.map(toZui) as [] | [z.ZodType, ...z.ZodType[]]\n let zodTuple: z.ZodTuple<any, any> = z.tuple(itemSchemas)\n\n if (additionalItems !== undefined) {\n zodTuple = zodTuple.rest(toZui(additionalItems))\n }\n\n return zodTuple\n}\n\nconst _handleSet = (\n { items, minItems, maxItems }: SetSchema,\n toZui: (x: JSONSchema7Definition) => z.ZodTypeAny,\n): z.ZodSet => {\n let zodSet = z.set(toZui(items))\n\n if (minItems) {\n zodSet = zodSet.min(minItems)\n }\n\n if (maxItems) {\n zodSet = zodSet.max(maxItems)\n }\n\n return zodSet\n}\n\nconst _handleArray = (\n { minItems, maxItems, items }: ArraySchema,\n toZui: (x: JSONSchema7Definition) => z.ZodTypeAny,\n): z.ZodArray | z.ZodSet | z.ZodTuple => {\n let zodArray = z.array(toZui(items))\n\n if (minItems && minItems === maxItems) {\n return zodArray.length(minItems)\n }\n\n if (minItems) {\n zodArray = zodArray.min(minItems)\n }\n\n if (maxItems) {\n zodArray = zodArray.max(maxItems)\n }\n\n return zodArray\n}\n", "import { JSONSchema7, JSONSchema7Definition } from 'json-schema'\nimport * as errors from '../common/errors'\nimport * as guards from './guards'\nimport z from '../../z'\nimport { toZuiPrimitive } from './primitives'\nimport { arrayJSONSchemaToZuiArray } from './iterables/array'\nimport { ArraySchema, SetSchema, TupleSchema } from '../common/json-schema'\n\nconst DEFAULT_TYPE = z.any()\n\n/**\n * Converts a JSON Schema to a ZUI Schema.\n * @param schema json schema\n * @returns ZUI Schema\n */\nexport function fromJSONSchema(schema: JSONSchema7): z.ZodType {\n return _fromJSONSchema(schema)\n}\n\nfunction _fromJSONSchema(schema: JSONSchema7Definition | undefined): z.ZodType {\n if (schema === undefined) {\n return DEFAULT_TYPE\n }\n\n if (schema === true) {\n return z.any()\n }\n\n if (schema === false) {\n return z.never()\n }\n\n if (schema.default !== undefined) {\n const inner = _fromJSONSchema({ ...schema, default: undefined })\n return inner.default(schema.default)\n }\n if (schema.readOnly) {\n const inner = _fromJSONSchema({ ...schema, readOnly: undefined })\n return inner.readonly()\n }\n if (schema.description !== undefined) {\n const inner = _fromJSONSchema({ ...schema, description: undefined })\n return inner.describe(schema.description)\n }\n\n if (schema.oneOf !== undefined) {\n throw new errors.UnsupportedJSONSchemaToZuiError({ oneOf: schema.oneOf })\n }\n\n if (schema.patternProperties !== undefined) {\n throw new errors.UnsupportedJSONSchemaToZuiError({ patternProperties: schema.patternProperties })\n }\n\n if (schema.propertyNames !== undefined) {\n throw new errors.UnsupportedJSONSchemaToZuiError({ propertyNames: schema.propertyNames })\n }\n\n if (schema.if !== undefined) {\n throw new errors.UnsupportedJSONSchemaToZuiError({ if: schema.if })\n }\n\n if (schema.then !== undefined) {\n // eslint-disable-next-line no-thenable\n throw new errors.UnsupportedJSONSchemaToZuiError({ then: schema.then })\n }\n\n if (schema.else !== undefined) {\n throw new errors.UnsupportedJSONSchemaToZuiError({ else: schema.else })\n }\n\n if (schema.$ref !== undefined) {\n return z.ref(schema.$ref)\n }\n\n if (schema.not !== undefined) {\n if (guards.isUndefinedSchema(schema)) {\n return z.undefined()\n }\n if (schema.not === true) {\n return z.never()\n }\n throw new errors.UnsupportedJSONSchemaToZuiError({ not: schema.not })\n }\n\n if (Array.isArray(schema.type)) {\n if (schema.type.length === 0) {\n return DEFAULT_TYPE\n }\n if (schema.type.length === 1) {\n return _fromJSONSchema({ ...schema, type: schema.type[0] })\n }\n const { type: _, ...tmp } = schema\n const types = schema.type.map((t) => _fromJSONSchema({ ...tmp, type: t })) as [z.ZodType, z.ZodType, ...z.ZodType[]]\n return z.union(types)\n }\n\n if (schema.type === 'string') {\n if (schema.enum && schema.enum.length > 0) {\n return z.enum(schema.enum as [string, ...string[]])\n }\n return toZuiPrimitive('string', schema)\n }\n\n if (schema.type === 'integer') {\n const zSchema = toZuiPrimitive('number', schema)\n if (zSchema instanceof z.ZodNumber) {\n return zSchema.int()\n }\n\n return zSchema\n }\n\n if (schema.type === 'number') {\n return toZuiPrimitive('number', schema)\n }\n\n if (schema.type === 'boolean') {\n return toZuiPrimitive('boolean', schema)\n }\n\n if (schema.type === 'null') {\n return toZuiPrimitive('null', schema)\n }\n\n if (schema.type === 'array') {\n return arrayJSONSchemaToZuiArray(schema as ArraySchema | TupleSchema | SetSchema, _fromJSONSchema)\n }\n\n if (schema.type === 'object') {\n if (schema.additionalProperties !== undefined && schema.properties !== undefined) {\n const catchAll = _fromJSONSchema(schema.additionalProperties)\n const inner = _fromJSONSchema({ ...schema, additionalProperties: undefined }) as z.ZodObject\n return inner.catchall(catchAll)\n }\n\n if (schema.properties !== undefined) {\n const properties: Record<string, z.ZodType> = {}\n for (const [key, value] of Object.entries(schema.properties)) {\n const mapped: z.ZodType = _fromJSONSchema(value)\n const required: string[] = schema.required ?? []\n // If the property is already optional (e.g., has a default value), don't wrap it again\n properties[key] = required.includes(key) ? mapped : mapped.isOptional() ? mapped : mapped.optional()\n }\n return z.object(properties)\n }\n\n if (schema.additionalProperties !== undefined) {\n const inner = _fromJSONSchema(schema.additionalProperties)\n return z.record(inner)\n }\n\n return z.record(DEFAULT_TYPE)\n }\n\n if (schema.anyOf !== undefined) {\n if (schema.anyOf.length === 0) {\n return DEFAULT_TYPE\n }\n\n if (schema.anyOf.length === 1) {\n return _fromJSONSchema(schema.anyOf[0])\n }\n\n if (guards.isOptionalSchema(schema)) {\n const inner = _fromJSONSchema(schema.anyOf[0])\n return inner.optional()\n }\n\n if (guards.isNullableSchema(schema)) {\n const inner = _fromJSONSchema(schema.anyOf[0])\n return inner.nullable()\n }\n\n if (guards.isDiscriminatedUnionSchema(schema) && schema['x-zui']?.def?.discriminator) {\n const { discriminator } = schema['x-zui'].def\n const options = schema.anyOf.map(_fromJSONSchema) as [\n z.ZodDiscriminatedUnionOption<string>,\n z.ZodDiscriminatedUnionOption<string>,\n ...z.ZodDiscriminatedUnionOption<string>[],\n ]\n return z.discriminatedUnion(discriminator, options)\n }\n\n const options = schema.anyOf.map(_fromJSONSchema) as [z.ZodType, z.ZodType, ...z.ZodType[]]\n return z.union(options)\n }\n\n if (schema.allOf !== undefined) {\n if (schema.allOf.length === 0) {\n return DEFAULT_TYPE\n }\n if (schema.allOf.length === 1) {\n return _fromJSONSchema(schema.allOf[0])\n }\n const [left, ...right] = schema.allOf as [JSONSchema7, ...JSONSchema7[]]\n const zLeft = _fromJSONSchema(left)\n const zRight = _fromJSONSchema({ allOf: right })\n return z.intersection(zLeft, zRight)\n }\n\n type _expectUndefined = z.util.AssertTrue<z.util.IsEqual<typeof schema.type, undefined>>\n\n if (guards.isUnknownSchema(schema)) {\n return z.unknown()\n }\n return DEFAULT_TYPE\n}\n", "import { z, SomeZodObject, ZodTypeAny } from '../../z/index'\nimport * as errors from '../common/errors'\n\n// Using a basic regex do determine if it's a date or not to avoid using another lib for that\nconst dateTimeRegex =\n /^\\d{4}-\\d{2}-\\d{2}(T|\\s)?((\\d{2}:\\d{2}:\\d{2}(\\.\\d{1,3})?)|(\\d{2}:\\d{2}))?(\\s?([+-]\\d{2}:\\d{2}|Z))?$/\n\nexport type ObjectToZuiOptions = { optional?: boolean; nullable?: boolean; passtrough?: boolean }\n\n/**\n * Converts a plain object to a Zod schema, by inferring the types of its properties.\n *\n * @param obj - The object to convert.\n * @param opts - Options to customize the Zod schema:\n * @returns A Zod schema representing the object.\n */\nexport const fromObject = (obj: object, opts?: ObjectToZuiOptions, isRoot = true): ZodTypeAny => {\n if (typeof obj !== 'object') {\n throw new errors.ObjectToZuiError('Input must be an object')\n }\n\n const applyOptions = (zodType: any) => {\n let newType = zodType\n if (opts?.nullable) {\n newType = newType.nullable()\n }\n if (opts?.optional) {\n newType = newType.optional()\n }\n if (opts?.passtrough && typeof newType.passthrough === 'function') {\n newType = newType.passthrough()\n }\n return newType\n }\n\n const schema = Object.entries(obj).reduce((acc: any, [key, value]) => {\n if (value === null) {\n acc[key] = applyOptions(z.null())\n } else {\n switch (typeof value) {\n case 'string':\n acc[key] = dateTimeRegex.test(value) ? applyOptions(z.string().datetime()) : applyOptions(z.string())\n break\n case 'number':\n acc[key] = applyOptions(z.number())\n break\n case 'boolean':\n acc[key] = applyOptions(z.boolean())\n break\n case 'object':\n if (Array.isArray(value)) {\n if (value.length === 0) {\n acc[key] = applyOptions(z.array(z.unknown()))\n } else if (typeof value[0] === 'object') {\n acc[key] = applyOptions(z.array(fromObject(value[0], opts, false)))\n } else if (['string', 'number', 'boolean'].includes(typeof value[0])) {\n acc[key] = applyOptions(z.array((z as any)[typeof value[0] as any]()))\n }\n } else {\n acc[key] = applyOptions(fromObject(value, opts, false))\n }\n break\n default:\n throw new errors.ObjectToZuiError(`Unsupported type for key ${key}`)\n }\n }\n return acc\n }, {} as SomeZodObject)\n\n const hasProperties = Object.keys(schema).length > 0\n if (opts?.passtrough || (!isRoot && !hasProperties)) {\n return z.object(schema).passthrough()\n }\n\n return z.object(schema)\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport { ZuiExtensionObject } from '../../../ui/types'\n\nexport type JsonSchema7AnyType = {\n [zuiKey]?: ZuiExtensionObject\n}\n\nexport function parseAnyDef(): JsonSchema7AnyType {\n return {}\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport { ZuiExtensionObject } from '../../../ui/types'\nimport { ZodArrayDef, ZodFirstPartyTypeKind } from '../../../z/index'\nimport { ErrorMessages, setResponseValueAndErrors } from '../errorMessages'\nimport { JsonSchema7Type, parseDef } from '../parseDef'\nimport { Refs } from '../Refs'\n\nexport type JsonSchema7ArrayType = {\n type: 'array'\n items?: JsonSchema7Type\n minItems?: number\n maxItems?: number\n errorMessages?: ErrorMessages<JsonSchema7ArrayType, 'items'>\n [zuiKey]?: ZuiExtensionObject\n}\n\nexport function parseArrayDef(def: ZodArrayDef, refs: Refs) {\n const res: JsonSchema7ArrayType = {\n type: 'array',\n }\n\n if (def.type?._def?.typeName !== ZodFirstPartyTypeKind.ZodAny) {\n res.items = parseDef(def.type._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'items'],\n })\n }\n\n if (def.minLength) {\n setResponseValueAndErrors(res, 'minItems', def.minLength.value, def.minLength.message, refs)\n }\n if (def.maxLength) {\n setResponseValueAndErrors(res, 'maxItems', def.maxLength.value, def.maxLength.message, refs)\n }\n if (def.exactLength) {\n setResponseValueAndErrors(res, 'minItems', def.exactLength.value, def.exactLength.message, refs)\n setResponseValueAndErrors(res, 'maxItems', def.exactLength.value, def.exactLength.message, refs)\n }\n return res\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport { ZuiExtensionObject } from '../../../ui/types'\nimport { ZodBigIntDef } from '../../../z/index'\nimport { Refs } from '../Refs'\nimport { ErrorMessages, setResponseValueAndErrors } from '../errorMessages'\n\nexport type JsonSchema7BigintType = {\n type: 'integer'\n format: 'int64'\n minimum?: BigInt\n exclusiveMinimum?: BigInt\n maximum?: BigInt\n exclusiveMaximum?: BigInt\n multipleOf?: BigInt\n errorMessage?: ErrorMessages<JsonSchema7BigintType>\n [zuiKey]?: ZuiExtensionObject\n}\n\nexport function parseBigintDef(def: ZodBigIntDef, refs: Refs): JsonSchema7BigintType {\n const res: JsonSchema7BigintType = {\n type: 'integer',\n format: 'int64',\n ...(def.coerce\n ? {\n [zuiKey]: {\n coerce: def.coerce || undefined,\n },\n }\n : {}),\n }\n\n if (!def.checks) return res\n\n for (const check of def.checks) {\n switch (check.kind) {\n case 'min':\n if (refs.target === 'jsonSchema7') {\n if (check.inclusive) {\n setResponseValueAndErrors(res, 'minimum', check.value, check.message, refs)\n } else {\n setResponseValueAndErrors(res, 'exclusiveMinimum', check.value, check.message, refs)\n }\n } else {\n if (!check.inclusive) {\n res.exclusiveMinimum = true as any\n }\n setResponseValueAndErrors(res, 'minimum', check.value, check.message, refs)\n }\n break\n case 'max':\n if (refs.target === 'jsonSchema7') {\n if (check.inclusive) {\n setResponseValueAndErrors(res, 'maximum', check.value, check.message, refs)\n } else {\n setResponseValueAndErrors(res, 'exclusiveMaximum', check.value, check.message, refs)\n }\n } else {\n if (!check.inclusive) {\n res.exclusiveMaximum = true as any\n }\n setResponseValueAndErrors(res, 'maximum', check.value, check.message, refs)\n }\n break\n case 'multipleOf':\n setResponseValueAndErrors(res, 'multipleOf', check.value, check.message, refs)\n break\n }\n }\n return res\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport { ZuiExtensionObject } from '../../../ui/types'\nimport { ZodBooleanDef } from '../../../z'\n\nexport type JsonSchema7BooleanType = {\n type: 'boolean'\n [zuiKey]?: ZuiExtensionObject\n}\n\nexport function parseBooleanDef(def: ZodBooleanDef): JsonSchema7BooleanType {\n return {\n type: 'boolean',\n ...(def.coerce\n ? {\n [zuiKey]: {\n coerce: def.coerce || undefined,\n },\n }\n : {}),\n }\n}\n", "import { ZodBrandedDef } from '../../../z/index'\nimport { parseDef } from '../parseDef'\nimport { Refs } from '../Refs'\n\nexport function parseBrandedDef(_def: ZodBrandedDef<any>, refs: Refs) {\n return parseDef(_def.type._def, refs)\n}\n", "import { ZodCatchDef } from '../../../z/index'\nimport { parseDef } from '../parseDef'\nimport { Refs } from '../Refs'\n\nexport const parseCatchDef = (def: ZodCatchDef<any>, refs: Refs) => {\n return parseDef(def.innerType._def, refs)\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport { ZuiExtensionObject } from '../../../ui/types'\nimport { ZodDateDef } from '../../../z/index'\nimport { Refs } from '../Refs'\nimport { ErrorMessages, setResponseValueAndErrors } from '../errorMessages'\nimport { JsonSchema7NumberType } from './number'\n\nexport type JsonSchema7DateType = {\n type: 'integer' | 'string'\n format: 'unix-time' | 'date-time'\n minimum?: number\n maximum?: number\n errorMessage?: ErrorMessages<JsonSchema7NumberType>\n [zuiKey]?: ZuiExtensionObject\n}\n\nexport function parseDateDef(def: ZodDateDef, refs: Refs): JsonSchema7DateType {\n if (refs.dateStrategy == 'integer') {\n return integerDateParser(def, refs)\n } else {\n return {\n type: 'string',\n format: 'date-time',\n ...(def.coerce\n ? {\n [zuiKey]: {\n coerce: def.coerce || undefined,\n },\n }\n : {}),\n }\n }\n}\n\nconst integerDateParser = (def: ZodDateDef, refs: Refs) => {\n const res: JsonSchema7DateType = {\n type: 'integer',\n format: 'unix-time',\n ...(def.coerce\n ? {\n [zuiKey]: {\n coerce: def.coerce || undefined,\n },\n }\n : {}),\n }\n\n for (const check of def.checks) {\n switch (check.kind) {\n case 'min':\n if (refs.target === 'jsonSchema7') {\n setResponseValueAndErrors(\n res,\n 'minimum',\n check.value, // This is in milliseconds\n check.message,\n refs,\n )\n }\n break\n case 'max':\n if (refs.target === 'jsonSchema7') {\n setResponseValueAndErrors(\n res,\n 'maximum',\n check.value, // This is in milliseconds\n check.message,\n refs,\n )\n }\n break\n }\n }\n\n return res\n}\n", "import { ZodDefaultDef } from '../../../z/index'\nimport { JsonSchema7Type, parseDef } from '../parseDef'\nimport { Refs } from '../Refs'\n\nexport function parseDefaultDef(_def: ZodDefaultDef, refs: Refs): JsonSchema7Type & { default: any } {\n return {\n ...parseDef(_def.innerType._def, refs),\n default: _def.defaultValue(),\n }\n}\n", "import { ZodEffectsDef } from '../../../z/index'\nimport { JsonSchema7Type, parseDef } from '../parseDef'\nimport { Refs } from '../Refs'\n\nexport function parseEffectsDef(_def: ZodEffectsDef, refs: Refs): JsonSchema7Type | undefined {\n return refs.effectStrategy === 'input' ? parseDef(_def.schema._def, refs) : {}\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport { ZuiExtensionObject } from '../../../ui/types'\nimport { ZodEnumDef } from '../../../z/index'\n\nexport type JsonSchema7EnumType = {\n type: 'string'\n enum: string[]\n [zuiKey]?: ZuiExtensionObject\n}\n\nexport function parseEnumDef(def: ZodEnumDef): JsonSchema7EnumType {\n return {\n type: 'string',\n enum: def.values,\n }\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport { ZuiExtensionObject } from '../../../ui/types'\nimport { ZodIntersectionDef } from '../../../z/index'\nimport { JsonSchema7Type, parseDef } from '../parseDef'\nimport { Refs } from '../Refs'\nimport { JsonSchema7StringType } from './string'\n\nexport type JsonSchema7AllOfType = {\n allOf: JsonSchema7Type[]\n unevaluatedProperties?: boolean\n [zuiKey]?: ZuiExtensionObject\n}\n\nconst isJsonSchema7AllOfType = (type: JsonSchema7Type | JsonSchema7StringType): type is JsonSchema7AllOfType => {\n if ('type' in type && type.type === 'string') return false\n return 'allOf' in type\n}\n\nexport function parseIntersectionDef(\n def: ZodIntersectionDef,\n refs: Refs,\n): JsonSchema7AllOfType | JsonSchema7Type | undefined {\n const allOf = [\n parseDef(def.left._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'allOf', '0'],\n }),\n parseDef(def.right._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'allOf', '1'],\n }),\n ].filter((x): x is JsonSchema7Type => !!x)\n\n let unevaluatedProperties: Pick<JsonSchema7AllOfType, 'unevaluatedProperties'> | undefined =\n refs.target === 'jsonSchema2019-09' ? { unevaluatedProperties: false } : undefined\n\n const mergedAllOf: JsonSchema7Type[] = []\n // If either of the schemas is an allOf, merge them into a single allOf\n allOf.forEach((schema) => {\n if (isJsonSchema7AllOfType(schema)) {\n mergedAllOf.push(...schema.allOf)\n if (schema.unevaluatedProperties === undefined) {\n // If one of the schemas has no unevaluatedProperties set,\n // the merged schema should also have no unevaluatedProperties set\n unevaluatedProperties = undefined\n }\n } else {\n let nestedSchema: JsonSchema7Type = schema\n if ('additionalProperties' in schema && schema.additionalProperties === false) {\n const { additionalProperties, ...rest } = schema\n nestedSchema = rest\n } else {\n // As soon as one of the schemas has additionalProperties set not to false, we allow unevaluatedProperties\n unevaluatedProperties = undefined\n }\n mergedAllOf.push(nestedSchema)\n }\n })\n return mergedAllOf.length\n ? {\n allOf: mergedAllOf,\n ...unevaluatedProperties,\n }\n : undefined\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport { ZuiExtensionObject } from '../../../ui/types'\nimport { ZodLiteralDef } from '../../../z/index'\nimport { Refs } from '../Refs'\n\nexport type JsonSchema7LiteralType =\n | {\n type: 'string' | 'number' | 'integer' | 'boolean'\n const: string | number | boolean\n [zuiKey]?: ZuiExtensionObject\n }\n | {\n type: 'object' | 'array'\n [zuiKey]?: ZuiExtensionObject\n }\n\nexport function parseLiteralDef(def: ZodLiteralDef, refs: Refs): JsonSchema7LiteralType {\n const parsedType = typeof def.value\n if (parsedType !== 'bigint' && parsedType !== 'number' && parsedType !== 'boolean' && parsedType !== 'string') {\n return {\n type: Array.isArray(def.value) ? 'array' : 'object',\n }\n }\n\n if (refs.target === 'openApi3') {\n return {\n type: parsedType === 'bigint' ? 'integer' : parsedType,\n enum: [def.value],\n } as any\n }\n\n return {\n type: parsedType === 'bigint' ? 'integer' : parsedType,\n const: def.value,\n } as JsonSchema7LiteralType\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport { ZuiExtensionObject } from '../../../ui/types'\nimport { ZodFirstPartyTypeKind, ZodMapDef, ZodRecordDef, ZodTypeAny } from '../../../z/index'\nimport { JsonSchema7Type, parseDef } from '../parseDef'\nimport { Refs } from '../Refs'\nimport { JsonSchema7EnumType } from './enum'\nimport { JsonSchema7ObjectType } from './object'\nimport { JsonSchema7StringType, parseStringDef } from './string'\n\ntype JsonSchema7RecordPropertyNamesType = Omit<JsonSchema7StringType, 'type'> | Omit<JsonSchema7EnumType, 'type'>\n\nexport type JsonSchema7RecordType = {\n type: 'object'\n additionalProperties: JsonSchema7Type\n propertyNames?: JsonSchema7RecordPropertyNamesType\n [zuiKey]?: ZuiExtensionObject\n}\n\nexport function parseRecordDef(\n def: ZodRecordDef<ZodTypeAny, ZodTypeAny> | ZodMapDef,\n refs: Refs,\n): JsonSchema7RecordType {\n if (refs.target === 'openApi3' && def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodEnum) {\n return {\n type: 'object',\n required: def.keyType._def.values,\n properties: def.keyType._def.values.reduce(\n (acc: Record<string, JsonSchema7Type>, key: string) => ({\n ...acc,\n [key]:\n parseDef(def.valueType._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'properties', key],\n }) ?? {},\n }),\n {},\n ),\n additionalProperties: false,\n } satisfies JsonSchema7ObjectType as any\n }\n\n const schema: JsonSchema7RecordType = {\n type: 'object',\n additionalProperties:\n parseDef(def.valueType._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'additionalProperties'],\n }) ?? {},\n }\n\n if (refs.target === 'openApi3') {\n return schema\n }\n\n if (def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodString && def.keyType._def.checks?.length) {\n const keyType: JsonSchema7RecordPropertyNamesType = Object.entries(parseStringDef(def.keyType._def, refs)).reduce(\n (acc, [key, value]) => (key === 'type' ? acc : { ...acc, [key]: value }),\n {},\n )\n\n return {\n ...schema,\n propertyNames: keyType,\n }\n } else if (def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodEnum) {\n return {\n ...schema,\n propertyNames: {\n enum: def.keyType._def.values,\n },\n }\n }\n\n return schema\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport { ZuiExtensionObject } from '../../../ui/types'\nimport { ZodMapDef } from '../../../z/index'\nimport { JsonSchema7Type, parseDef } from '../parseDef'\nimport { Refs } from '../Refs'\nimport { JsonSchema7RecordType, parseRecordDef } from './record'\n\nexport type JsonSchema7MapType = {\n type: 'array'\n maxItems: 125\n items: {\n type: 'array'\n items: [JsonSchema7Type, JsonSchema7Type]\n minItems: 2\n maxItems: 2\n }\n [zuiKey]?: ZuiExtensionObject\n}\n\nexport function parseMapDef(def: ZodMapDef, refs: Refs): JsonSchema7MapType | JsonSchema7RecordType {\n if (refs.mapStrategy === 'record') {\n return parseRecordDef(def, refs)\n }\n\n const keys =\n parseDef(def.keyType._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'items', 'items', '0'],\n }) || {}\n const values =\n parseDef(def.valueType._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'items', 'items', '1'],\n }) || {}\n return {\n type: 'array',\n maxItems: 125,\n items: {\n type: 'array',\n items: [keys, values],\n minItems: 2,\n maxItems: 2,\n },\n }\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport { ZuiExtensionObject } from '../../../ui/types'\nimport { ZodNativeEnumDef } from '../../../z/index'\n\nexport type JsonSchema7NativeEnumType = {\n type: 'string' | 'number' | ['string', 'number']\n enum: (string | number)[]\n [zuiKey]?: ZuiExtensionObject\n}\n\nexport function parseNativeEnumDef(def: ZodNativeEnumDef): JsonSchema7NativeEnumType {\n const object = def.values\n const actualKeys = Object.keys(def.values).filter((key: string) => {\n return typeof object[object[key]!] !== 'number'\n })\n\n const actualValues = actualKeys.map((key: string) => object[key])\n\n const parsedTypes = Array.from(new Set(actualValues.map((values) => typeof values)))\n\n return {\n type: parsedTypes.length === 1 ? (parsedTypes[0] === 'string' ? 'string' : 'number') : ['string', 'number'],\n enum: actualValues.filter(\n (value): value is number | string => typeof value === 'string' || typeof value === 'number',\n ),\n }\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport { ZuiExtensionObject } from '../../../ui/types'\n\nexport type JsonSchema7NeverType = {\n not: {}\n [zuiKey]?: ZuiExtensionObject\n}\n\nexport function parseNeverDef(): JsonSchema7NeverType {\n return {\n not: {},\n }\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport { ZuiExtensionObject } from '../../../ui/types'\nimport { Refs } from '../Refs'\n\nexport type JsonSchema7NullType = {\n type: 'null'\n [zuiKey]?: ZuiExtensionObject\n}\n\nexport function parseNullDef(refs: Refs): JsonSchema7NullType {\n return refs.target === 'openApi3'\n ? ({\n enum: ['null'],\n nullable: true,\n } as any)\n : {\n type: 'null',\n }\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport { ZuiExtensionObject } from '../../../ui/types'\nimport { ZodDiscriminatedUnionDef, ZodLiteralDef, ZodTypeAny, ZodUnionDef } from '../../../z/index'\nimport { JsonSchema7Type, parseDef } from '../parseDef'\nimport { Refs } from '../Refs'\n\nexport const primitiveMappings = {\n ZodString: 'string',\n ZodNumber: 'number',\n ZodBigInt: 'integer',\n ZodBoolean: 'boolean',\n ZodNull: 'null',\n} as const\ntype ZodPrimitive = keyof typeof primitiveMappings\ntype JsonSchema7Primitive = (typeof primitiveMappings)[keyof typeof primitiveMappings]\n\nexport type JsonSchema7UnionType = JsonSchema7PrimitiveUnionType | JsonSchema7AnyOfType | JsonSchema7OneOfType\n\ntype JsonSchema7PrimitiveUnionType =\n | {\n type: JsonSchema7Primitive | JsonSchema7Primitive[]\n [zuiKey]?: ZuiExtensionObject\n }\n | {\n type: JsonSchema7Primitive | JsonSchema7Primitive[]\n enum: (string | number | bigint | boolean | null)[]\n [zuiKey]?: ZuiExtensionObject\n }\n\ntype JsonSchema7AnyOfType = {\n anyOf: JsonSchema7Type[]\n discriminator?: {\n propertyName: string\n }\n}\n\ntype JsonSchema7OneOfType = {\n oneOf: JsonSchema7Type[]\n discriminator?: {\n propertyName: string\n }\n}\n\nexport function parseUnionDef(\n def: ZodUnionDef | ZodDiscriminatedUnionDef<any, any>,\n refs: Refs,\n): JsonSchema7PrimitiveUnionType | JsonSchema7AnyOfType | JsonSchema7OneOfType | undefined {\n if (refs.target === 'openApi3') return asUnionOf(def, refs)\n\n const options: readonly ZodTypeAny[] = def.options instanceof Map ? Array.from(def.options.values()) : def.options\n\n // This blocks tries to look ahead a bit to produce nicer looking schemas with type array instead of anyOf.\n if (options.every((x) => x._def.typeName in primitiveMappings && (!x._def.checks || !x._def.checks.length))) {\n // all types in union are primitive and lack checks, so might as well squash into {type: [...]}\n\n const types = options.reduce((types: JsonSchema7Primitive[], x) => {\n const type = primitiveMappings[x._def.typeName as ZodPrimitive] //Can be safely casted due to row 43\n return type && !types.includes(type) ? [...types, type] : types\n }, [])\n\n return {\n type: types.length > 1 ? types : types[0]!,\n }\n } else if (options.every((x) => x._def.typeName === 'ZodLiteral' && !x.description)) {\n // all options literals\n\n const types = options.reduce((acc: JsonSchema7Primitive[], x: { _def: ZodLiteralDef }) => {\n const type = typeof x._def.value\n switch (type) {\n case 'string':\n case 'number':\n case 'boolean':\n return [...acc, type]\n case 'bigint':\n return [...acc, 'integer' as const]\n case 'object':\n if (x._def.value === null) return [...acc, 'null' as const]\n case 'symbol':\n case 'undefined':\n case 'function':\n default:\n return acc\n }\n }, [])\n\n if (types.length === options.length) {\n // all the literals are primitive, as far as null can be considered primitive\n\n const uniqueTypes = types.filter((x, i, a) => a.indexOf(x) === i)\n return {\n type: uniqueTypes.length > 1 ? uniqueTypes : uniqueTypes[0]!,\n enum: options.reduce(\n (acc, x) => {\n return acc.includes(x._def.value) ? acc : [...acc, x._def.value]\n },\n [] as (string | number | bigint | boolean | null)[],\n ),\n }\n }\n } else if (options.every((x) => x._def.typeName === 'ZodEnum')) {\n return {\n type: 'string',\n enum: options.reduce(\n (acc: string[], x) => [...acc, ...x._def.values.filter((x: string) => !acc.includes(x))],\n [],\n ),\n }\n }\n\n return asUnionOf(def, refs)\n}\n\nconst asUnionOf = (\n def: ZodUnionDef | ZodDiscriminatedUnionDef<any, any>,\n refs: Refs,\n): JsonSchema7PrimitiveUnionType | JsonSchema7AnyOfType | JsonSchema7OneOfType | undefined => {\n const unionOf = ((def.options instanceof Map ? Array.from(def.options.values()) : def.options) as any[])\n .map((x, i) =>\n parseDef(x._def, {\n ...refs,\n currentPath: [...refs.currentPath, refs.unionStrategy, `${i}`],\n }),\n )\n .filter(\n (x): x is JsonSchema7Type => !!x && (!refs.strictUnions || (typeof x === 'object' && Object.keys(x).length > 0)),\n )\n\n const discriminator =\n refs.discriminator && def.typeName === 'ZodDiscriminatedUnion' && typeof def.discriminator === 'string'\n ? ({ discriminator: { propertyName: def.discriminator } } as const)\n : {}\n\n if (!unionOf.length) {\n return undefined\n }\n\n return refs.unionStrategy === 'anyOf' ? { anyOf: unionOf, ...discriminator } : { oneOf: unionOf, ...discriminator }\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport { ZuiExtensionObject } from '../../../ui/types'\nimport { ZodNullableDef } from '../../../z/index'\nimport { addMeta, JsonSchema7Type, parseDef } from '../parseDef'\nimport { Refs } from '../Refs'\nimport { JsonSchema7NullType } from './null'\nimport { primitiveMappings } from './union'\n\nexport type JsonSchema7NullableType =\n | {\n anyOf: [JsonSchema7Type, JsonSchema7NullType]\n [zuiKey]?: ZuiExtensionObject\n }\n | {\n type: [string, 'null']\n [zuiKey]?: ZuiExtensionObject\n }\n\nexport function parseNullableDef(def: ZodNullableDef, refs: Refs): JsonSchema7NullableType | undefined {\n if (\n ['ZodString', 'ZodNumber', 'ZodBigInt', 'ZodBoolean', 'ZodNull'].includes(def.innerType._def.typeName) &&\n (!def.innerType._def.checks || !def.innerType._def.checks.length)\n ) {\n const inner = def.innerType\n if (refs.target === 'openApi3') {\n const schema = {\n type: primitiveMappings[inner._def.typeName as keyof typeof primitiveMappings],\n nullable: true,\n } as any\n return addMeta(inner._def, refs, schema)\n }\n\n const schema: JsonSchema7NullableType = {\n type: [primitiveMappings[inner._def.typeName as keyof typeof primitiveMappings], 'null'],\n }\n return addMeta(inner._def, refs, schema)\n }\n\n if (refs.target === 'openApi3') {\n const base = parseDef(def.innerType._def, {\n ...refs,\n currentPath: [...refs.currentPath],\n })\n\n return base && ({ ...base, nullable: true } as any)\n }\n\n const base = parseDef(def.innerType._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'anyOf', '0'],\n })\n\n return base && { anyOf: [base, { type: 'null' }] }\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport { ZuiExtensionObject } from '../../../ui/types'\nimport { ZodNumberDef } from '../../../z/index'\nimport { addErrorMessage, ErrorMessages, setResponseValueAndErrors } from '../errorMessages'\nimport { Refs } from '../Refs'\n\nexport type JsonSchema7NumberType = {\n type: 'number' | 'integer'\n minimum?: number\n exclusiveMinimum?: number\n maximum?: number\n exclusiveMaximum?: number\n multipleOf?: number\n errorMessage?: ErrorMessages<JsonSchema7NumberType>\n [zuiKey]?: ZuiExtensionObject\n}\n\nexport function parseNumberDef(def: ZodNumberDef, refs: Refs): JsonSchema7NumberType {\n const res: JsonSchema7NumberType = {\n type: 'number',\n ...(def.coerce\n ? {\n [zuiKey]: {\n coerce: def.coerce || undefined,\n },\n }\n : {}),\n }\n\n if (!def.checks) return res\n\n for (const check of def.checks) {\n switch (check.kind) {\n case 'int':\n res.type = 'integer'\n addErrorMessage(res, 'type', check.message, refs)\n break\n case 'min':\n if (refs.target === 'jsonSchema7') {\n if (check.inclusive) {\n setResponseValueAndErrors(res, 'minimum', check.value, check.message, refs)\n } else {\n setResponseValueAndErrors(res, 'exclusiveMinimum', check.value, check.message, refs)\n }\n } else {\n if (!check.inclusive) {\n res.exclusiveMinimum = true as any\n }\n setResponseValueAndErrors(res, 'minimum', check.value, check.message, refs)\n }\n break\n case 'max':\n if (refs.target === 'jsonSchema7') {\n if (check.inclusive) {\n setResponseValueAndErrors(res, 'maximum', check.value, check.message, refs)\n } else {\n setResponseValueAndErrors(res, 'exclusiveMaximum', check.value, check.message, refs)\n }\n } else {\n if (!check.inclusive) {\n res.exclusiveMaximum = true as any\n }\n setResponseValueAndErrors(res, 'maximum', check.value, check.message, refs)\n }\n break\n case 'multipleOf':\n setResponseValueAndErrors(res, 'multipleOf', check.value, check.message, refs)\n break\n }\n }\n return res\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport { ZuiExtensionObject } from '../../../ui/types'\nimport { ZodObjectDef, ZodType } from '../../../z/index'\nimport { JsonSchema7Type, parseDef } from '../parseDef'\nimport { Refs } from '../Refs'\n\nexport type JsonSchema7ObjectType = {\n type: 'object'\n properties: Record<string, JsonSchema7Type>\n additionalProperties: boolean | JsonSchema7Type\n required?: string[]\n [zuiKey]?: ZuiExtensionObject\n}\n\nconst getAdditionalProperties = (def: ZodObjectDef, refs: Refs): boolean | JsonSchema7Type => {\n if (def.unknownKeys instanceof ZodType) {\n return (\n parseDef(def.unknownKeys._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'additionalProperties'],\n }) ?? true\n )\n }\n if (def.unknownKeys === 'passthrough') {\n return true\n }\n return false\n}\n\nexport function parseObjectDefX(def: ZodObjectDef, refs: Refs) {\n Object.keys(def.shape()).reduce(\n (schema: JsonSchema7ObjectType, key) => {\n let prop = def.shape()[key]\n if (typeof prop === 'undefined' || typeof prop._def === 'undefined') {\n return schema\n }\n\n const isOptional = prop.isOptional()\n\n if (!isOptional) {\n prop = { ...prop._def.innerSchema }\n }\n\n const propSchema = parseDef(prop!._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'properties', key],\n propertyPath: [...refs.currentPath, 'properties', key],\n })\n\n if (propSchema !== undefined) {\n schema.properties[key] = propSchema\n\n if (!isOptional) {\n if (!schema.required) {\n schema.required = []\n }\n\n schema.required.push(key)\n }\n }\n\n return schema\n },\n {\n type: 'object',\n properties: {},\n additionalProperties: getAdditionalProperties(def, refs),\n },\n )\n\n const result: JsonSchema7ObjectType = {\n type: 'object',\n ...Object.entries(def.shape()).reduce(\n (\n acc: {\n properties: Record<string, JsonSchema7Type>\n required: string[]\n },\n [propName, propDef],\n ) => {\n if (propDef === undefined || propDef._def === undefined) return acc\n const parsedDef = parseDef(propDef._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'properties', propName],\n propertyPath: [...refs.currentPath, 'properties', propName],\n })\n if (parsedDef === undefined) return acc\n return {\n properties: { ...acc.properties, [propName]: parsedDef },\n required: propDef.isOptional() ? acc.required : [...acc.required, propName],\n }\n },\n { properties: {}, required: [] },\n ),\n additionalProperties: getAdditionalProperties(def, refs),\n }\n if (!result.required!.length) delete result.required\n return result\n}\n\nexport function parseObjectDef(def: ZodObjectDef, refs: Refs) {\n const result: JsonSchema7ObjectType = {\n type: 'object',\n ...Object.entries(def.shape()).reduce(\n (\n acc: {\n properties: Record<string, JsonSchema7Type>\n required: string[]\n },\n [propName, propDef],\n ) => {\n if (propDef === undefined || propDef._def === undefined) return acc\n const parsedDef = parseDef(propDef._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'properties', propName],\n propertyPath: [...refs.currentPath, 'properties', propName],\n })\n if (parsedDef === undefined) return acc\n return {\n properties: { ...acc.properties, [propName]: parsedDef },\n required: propDef.isOptional() ? acc.required : [...acc.required, propName],\n }\n },\n { properties: {}, required: [] },\n ),\n additionalProperties: getAdditionalProperties(def, refs),\n }\n if (!result.required!.length) delete result.required\n return result\n}\n", "import { ZodOptionalDef } from '../../../z/index'\nimport { JsonSchema7Type, parseDef } from '../parseDef'\nimport { Refs } from '../Refs'\n\nexport const parseOptionalDef = (def: ZodOptionalDef, refs: Refs): JsonSchema7Type | undefined => {\n if (refs.currentPath.toString() === refs.propertyPath?.toString()) {\n return parseDef(def.innerType._def, refs)\n }\n\n const innerSchema = parseDef(def.innerType._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'anyOf', '1'],\n })\n\n return innerSchema\n ? {\n anyOf: [\n {\n not: {},\n },\n innerSchema,\n ],\n }\n : {}\n}\n", "import { ZodPipelineDef } from '../../../z/index'\nimport { JsonSchema7Type, parseDef } from '../parseDef'\nimport { Refs } from '../Refs'\nimport { JsonSchema7AllOfType } from './intersection'\n\nexport const parsePipelineDef = (\n def: ZodPipelineDef<any, any>,\n refs: Refs,\n): JsonSchema7AllOfType | JsonSchema7Type | undefined => {\n if (refs.pipeStrategy === 'input') {\n return parseDef(def.in._def, refs)\n } else if (refs.pipeStrategy === 'output') {\n return parseDef(def.out._def, refs)\n }\n\n const a = parseDef(def.in._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'allOf', '0'],\n })\n const b = parseDef(def.out._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'allOf', a ? '1' : '0'],\n })\n\n return {\n allOf: [a, b].filter((x): x is JsonSchema7Type => x !== undefined),\n }\n}\n", "import { ZodPromiseDef } from '../../../z/index'\nimport { JsonSchema7Type, parseDef } from '../parseDef'\nimport { Refs } from '../Refs'\n\nexport function parsePromiseDef(def: ZodPromiseDef, refs: Refs): JsonSchema7Type | undefined {\n return parseDef(def.type._def, refs)\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport { ZuiExtensionObject } from '../../../ui/types'\nimport { ZodSetDef } from '../../../z/index'\nimport { ErrorMessages, setResponseValueAndErrors } from '../errorMessages'\nimport { JsonSchema7Type, parseDef } from '../parseDef'\nimport { Refs } from '../Refs'\n\nexport type JsonSchema7SetType = {\n type: 'array'\n uniqueItems: true\n items?: JsonSchema7Type\n minItems?: number\n maxItems?: number\n errorMessage?: ErrorMessages<JsonSchema7SetType>\n [zuiKey]?: ZuiExtensionObject\n}\n\nexport function parseSetDef(def: ZodSetDef, refs: Refs): JsonSchema7SetType {\n const items = parseDef(def.valueType._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'items'],\n })\n\n const schema: JsonSchema7SetType = {\n type: 'array',\n uniqueItems: true,\n items,\n }\n\n if (def.minSize) {\n setResponseValueAndErrors(schema, 'minItems', def.minSize.value, def.minSize.message, refs)\n }\n\n if (def.maxSize) {\n setResponseValueAndErrors(schema, 'maxItems', def.maxSize.value, def.maxSize.message, refs)\n }\n\n return schema\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport { ZuiExtensionObject } from '../../../ui/types'\nimport { ZodTupleDef, ZodTupleItems, ZodTypeAny } from '../../../z/index'\nimport { JsonSchema7Type, parseDef } from '../parseDef'\nimport { Refs } from '../Refs'\n\nexport type JsonSchema7TupleType = {\n type: 'array'\n minItems: number\n items: JsonSchema7Type[]\n [zuiKey]?: ZuiExtensionObject\n} & (\n | {\n maxItems: number\n }\n | {\n additionalItems?: JsonSchema7Type\n }\n)\n\nexport function parseTupleDef(\n def: ZodTupleDef<ZodTupleItems | [], ZodTypeAny | null>,\n refs: Refs,\n): JsonSchema7TupleType {\n if (def.rest) {\n return {\n type: 'array',\n minItems: def.items.length,\n items: def.items\n .map((x, i) =>\n parseDef(x._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'items', `${i}`],\n }),\n )\n .reduce((acc: JsonSchema7Type[], x) => (x === undefined ? acc : [...acc, x]), []),\n additionalItems: parseDef(def.rest._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'additionalItems'],\n }),\n }\n } else {\n return {\n type: 'array',\n minItems: def.items.length,\n maxItems: def.items.length,\n items: def.items\n .map((x, i) =>\n parseDef(x._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'items', `${i}`],\n }),\n )\n .reduce((acc: JsonSchema7Type[], x) => (x === undefined ? acc : [...acc, x]), []),\n }\n }\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport { ZuiExtensionObject } from '../../../ui/types'\n\nexport type JsonSchema7UndefinedType = {\n not: {}\n [zuiKey]?: ZuiExtensionObject\n}\n\nexport function parseUndefinedDef(): JsonSchema7UndefinedType {\n return {\n not: {},\n }\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport { ZuiExtensionObject } from '../../../ui/types'\n\nexport type JsonSchema7UnknownType = {\n [zuiKey]?: ZuiExtensionObject\n}\n\nexport function parseUnknownDef(): JsonSchema7UnknownType {\n return {}\n}\n", "import { ZodReadonlyDef } from '../../../z/index'\nimport { parseDef } from '../parseDef'\nimport { Refs } from '../Refs'\n\nexport const parseReadonlyDef = (def: ZodReadonlyDef<any>, refs: Refs) => {\n return parseDef(def.innerType._def, refs)\n}\n", "import { zuiKey } from '../../../ui/constants'\nimport { ZuiExtensionObject } from '../../../ui/types'\nimport { ZodRefDef } from '../../../z/types/ref'\n\nexport type JsonSchema7RefType = {\n $ref: string\n [zuiKey]?: ZuiExtensionObject\n}\n\nexport function parseRefDef(def: ZodRefDef): JsonSchema7RefType {\n return {\n $ref: def.uri,\n }\n}\n", "import { ZodFirstPartyTypeKind, ZodTypeDef } from '../../z/index'\nimport { JsonSchema7AnyType, parseAnyDef } from './parsers/any'\nimport { JsonSchema7ArrayType, parseArrayDef } from './parsers/array'\nimport { JsonSchema7BigintType, parseBigintDef } from './parsers/bigint'\nimport { JsonSchema7BooleanType, parseBooleanDef } from './parsers/boolean'\nimport { parseBrandedDef } from './parsers/branded'\nimport { parseCatchDef } from './parsers/catch'\nimport { JsonSchema7DateType, parseDateDef } from './parsers/date'\nimport { parseDefaultDef } from './parsers/default'\nimport { parseEffectsDef } from './parsers/effects'\nimport { JsonSchema7EnumType, parseEnumDef } from './parsers/enum'\nimport { JsonSchema7AllOfType, parseIntersectionDef } from './parsers/intersection'\nimport { JsonSchema7LiteralType, parseLiteralDef } from './parsers/literal'\nimport { JsonSchema7MapType, parseMapDef } from './parsers/map'\nimport { JsonSchema7NativeEnumType, parseNativeEnumDef } from './parsers/nativeEnum'\nimport { JsonSchema7NeverType, parseNeverDef } from './parsers/never'\nimport { JsonSchema7NullType, parseNullDef } from './parsers/null'\nimport { JsonSchema7NullableType, parseNullableDef } from './parsers/nullable'\nimport { JsonSchema7NumberType, parseNumberDef } from './parsers/number'\nimport { JsonSchema7ObjectType, parseObjectDef } from './parsers/object'\nimport { parseOptionalDef } from './parsers/optional'\nimport { parsePipelineDef } from './parsers/pipeline'\nimport { parsePromiseDef } from './parsers/promise'\nimport { JsonSchema7RecordType, parseRecordDef } from './parsers/record'\nimport { JsonSchema7SetType, parseSetDef } from './parsers/set'\nimport { JsonSchema7StringType, parseStringDef } from './parsers/string'\nimport { JsonSchema7TupleType, parseTupleDef } from './parsers/tuple'\nimport { JsonSchema7UndefinedType, parseUndefinedDef } from './parsers/undefined'\nimport { JsonSchema7UnionType, parseUnionDef } from './parsers/union'\nimport { JsonSchema7UnknownType, parseUnknownDef } from './parsers/unknown'\nimport { Refs, Seen } from './Refs'\nimport { parseReadonlyDef } from './parsers/readonly'\nimport { zuiKey } from '../../ui/constants'\nimport { JsonSchema7RefType, parseRefDef } from './parsers/ref'\n\ntype JsonSchema7Meta = {\n default?: any\n description?: string\n markdownDescription?: string\n}\n\nexport type JsonSchema7TypeUnion =\n | JsonSchema7StringType\n | JsonSchema7ArrayType\n | JsonSchema7NumberType\n | JsonSchema7BigintType\n | JsonSchema7BooleanType\n | JsonSchema7DateType\n | JsonSchema7EnumType\n | JsonSchema7LiteralType\n | JsonSchema7NativeEnumType\n | JsonSchema7NullType\n | JsonSchema7NumberType\n | JsonSchema7ObjectType\n | JsonSchema7RecordType\n | JsonSchema7TupleType\n | JsonSchema7UnionType\n | JsonSchema7UndefinedType\n | JsonSchema7RefType\n | JsonSchema7NeverType\n | JsonSchema7MapType\n | JsonSchema7AnyType\n | JsonSchema7NullableType\n | JsonSchema7AllOfType\n | JsonSchema7UnknownType\n | JsonSchema7SetType\n\nexport type JsonSchema7Type = JsonSchema7TypeUnion & JsonSchema7Meta\n\nexport function parseDef(\n def: ZodTypeDef,\n refs: Refs,\n forceResolution = false, // Forces a new schema to be instantiated even though its def has been seen. Used for improving refs in definitions. See https://github.com/StefanTerdell/zod-to-json-schema/pull/61.\n): JsonSchema7Type | undefined {\n const seenItem = refs.seen.get(def)\n\n if (seenItem && !forceResolution) {\n const seenSchema = get$ref(seenItem, refs)\n\n if (seenSchema !== undefined) {\n return seenSchema\n }\n }\n\n const newItem: Seen = { def, path: refs.currentPath, jsonSchema: undefined }\n\n refs.seen.set(def, newItem)\n\n const jsonSchema = selectParser(def, def.typeName, refs)\n\n if (jsonSchema) {\n addMeta(def, refs, jsonSchema)\n }\n\n newItem.jsonSchema = jsonSchema\n\n return jsonSchema\n}\n\nconst get$ref = (\n item: Seen,\n refs: Refs,\n):\n | {\n $ref: string\n }\n | {}\n | undefined => {\n switch (refs.$refStrategy) {\n case 'root':\n return { $ref: item.path.join('/') }\n case 'relative':\n return { $ref: getRelativePath(refs.currentPath, item.path) }\n case 'none':\n case 'seen': {\n if (\n item.path.length < refs.currentPath.length &&\n item.path.every((value, index) => refs.currentPath[index] === value)\n ) {\n console.warn(`Recursive reference detected at ${refs.currentPath.join('/')}! Defaulting to any`)\n\n return {}\n }\n\n return refs.$refStrategy === 'seen' ? {} : undefined\n }\n }\n}\n\nconst getRelativePath = (pathA: string[], pathB: string[]) => {\n let i = 0\n for (; i < pathA.length && i < pathB.length; i++) {\n if (pathA[i] !== pathB[i]) break\n }\n return [(pathA.length - i).toString(), ...pathB.slice(i)].join('/')\n}\n\nconst selectParser = (def: any, typeName: ZodFirstPartyTypeKind, refs: Refs): JsonSchema7Type | undefined => {\n switch (typeName) {\n case ZodFirstPartyTypeKind.ZodString:\n return parseStringDef(def, refs)\n case ZodFirstPartyTypeKind.ZodNumber:\n return parseNumberDef(def, refs)\n case ZodFirstPartyTypeKind.ZodObject:\n return parseObjectDef(def, refs)\n case ZodFirstPartyTypeKind.ZodBigInt:\n return parseBigintDef(def, refs)\n case ZodFirstPartyTypeKind.ZodBoolean:\n return parseBooleanDef(def)\n case ZodFirstPartyTypeKind.ZodDate:\n return parseDateDef(def, refs)\n case ZodFirstPartyTypeKind.ZodUndefined:\n return parseUndefinedDef()\n case ZodFirstPartyTypeKind.ZodNull:\n return parseNullDef(refs)\n case ZodFirstPartyTypeKind.ZodArray:\n return parseArrayDef(def, refs)\n case ZodFirstPartyTypeKind.ZodUnion:\n case ZodFirstPartyTypeKind.ZodDiscriminatedUnion:\n return parseUnionDef(def, refs)\n case ZodFirstPartyTypeKind.ZodIntersection:\n return parseIntersectionDef(def, refs)\n case ZodFirstPartyTypeKind.ZodTuple:\n return parseTupleDef(def, refs)\n case ZodFirstPartyTypeKind.ZodRecord:\n return parseRecordDef(def, refs)\n case ZodFirstPartyTypeKind.ZodRef:\n return parseRefDef(def)\n case ZodFirstPartyTypeKind.ZodLiteral:\n return parseLiteralDef(def, refs)\n case ZodFirstPartyTypeKind.ZodEnum:\n return parseEnumDef(def)\n case ZodFirstPartyTypeKind.ZodNativeEnum:\n return parseNativeEnumDef(def)\n case ZodFirstPartyTypeKind.ZodNullable:\n return parseNullableDef(def, refs)\n case ZodFirstPartyTypeKind.ZodOptional:\n return parseOptionalDef(def, refs)\n case ZodFirstPartyTypeKind.ZodMap:\n return parseMapDef(def, refs)\n case ZodFirstPartyTypeKind.ZodSet:\n return parseSetDef(def, refs)\n case ZodFirstPartyTypeKind.ZodLazy:\n return parseDef(def.getter()._def, refs)\n case ZodFirstPartyTypeKind.ZodPromise:\n return parsePromiseDef(def, refs)\n case ZodFirstPartyTypeKind.ZodNaN:\n case ZodFirstPartyTypeKind.ZodNever:\n return parseNeverDef()\n case ZodFirstPartyTypeKind.ZodEffects:\n return parseEffectsDef(def, refs)\n case ZodFirstPartyTypeKind.ZodAny:\n return parseAnyDef()\n case ZodFirstPartyTypeKind.ZodUnknown:\n return parseUnknownDef()\n case ZodFirstPartyTypeKind.ZodDefault:\n return parseDefaultDef(def, refs)\n case ZodFirstPartyTypeKind.ZodBranded:\n return parseBrandedDef(def, refs)\n case ZodFirstPartyTypeKind.ZodReadonly:\n return parseReadonlyDef(def, refs)\n case ZodFirstPartyTypeKind.ZodCatch:\n return parseCatchDef(def, refs)\n case ZodFirstPartyTypeKind.ZodPipeline:\n return parsePipelineDef(def, refs)\n case ZodFirstPartyTypeKind.ZodFunction:\n case ZodFirstPartyTypeKind.ZodVoid:\n case ZodFirstPartyTypeKind.ZodSymbol:\n return undefined\n default:\n return ((_: never) => undefined)(typeName)\n }\n}\n\nexport const addMeta = <S extends JsonSchema7Type>(def: ZodTypeDef, refs: Refs, jsonSchema: S): S => {\n if (def.description) {\n jsonSchema.description = def.description\n\n if (refs.markdownDescription) {\n jsonSchema.markdownDescription = def.description\n }\n }\n\n Object.assign(jsonSchema, { [zuiKey]: { ...def[zuiKey], ...(jsonSchema as any)[zuiKey] } })\n\n return jsonSchema\n}\n", "import type { ZodSchema } from '../../z/index'\n\nexport type Targets = 'jsonSchema7' | 'jsonSchema2019-09' | 'openApi3'\n\nexport type Options<Target extends Targets = 'jsonSchema7'> = {\n name: string | undefined\n $refStrategy: 'root' | 'relative' | 'none' | 'seen'\n basePath: string[]\n effectStrategy: 'input' | 'any'\n pipeStrategy: 'input' | 'output' | 'all'\n dateStrategy: 'string' | 'integer'\n mapStrategy: 'entries' | 'record'\n target: Target\n strictUnions: boolean\n definitionPath: string\n definitions: Record<string, ZodSchema>\n errorMessages: boolean\n markdownDescription: boolean\n patternStrategy: 'escape' | 'preserve'\n emailStrategy: 'format:email' | 'format:idn-email' | 'pattern:zod'\n discriminator: boolean\n unionStrategy: 'anyOf' | 'oneOf'\n}\n\nexport const defaultOptions: Options = {\n name: undefined,\n $refStrategy: 'root',\n basePath: ['#'],\n effectStrategy: 'input',\n pipeStrategy: 'all',\n dateStrategy: 'string',\n mapStrategy: 'entries',\n definitionPath: 'definitions',\n target: 'jsonSchema7',\n strictUnions: false,\n definitions: {},\n errorMessages: false,\n markdownDescription: false,\n patternStrategy: 'escape',\n emailStrategy: 'format:email',\n discriminator: false,\n unionStrategy: 'anyOf',\n}\n\nexport const getDefaultOptions = <Target extends Targets>(options: Partial<Options<Target>> | string | undefined) =>\n (typeof options === 'string'\n ? {\n ...defaultOptions,\n name: options,\n }\n : {\n ...defaultOptions,\n ...options,\n }) as Options<Target>\n", "import type { ZodTypeDef } from '../../z/index'\nimport { getDefaultOptions, Options, Targets } from './Options'\nimport { JsonSchema7Type } from './parseDef'\n\nexport type Refs = {\n seen: Map<ZodTypeDef, Seen>\n currentPath: string[]\n propertyPath: string[] | undefined\n} & Options<Targets>\n\nexport type Seen = {\n def: ZodTypeDef\n path: string[]\n jsonSchema: JsonSchema7Type | undefined\n}\n\nexport const getRefs = (options?: string | Partial<Options<Targets>>): Refs => {\n const _options = getDefaultOptions(options)\n const currentPath =\n _options.name !== undefined ? [..._options.basePath, _options.definitionPath, _options.name] : _options.basePath\n return {\n ..._options,\n currentPath: currentPath,\n propertyPath: undefined,\n seen: new Map(\n Object.entries(_options.definitions).map(([name, def]) => [\n def._def,\n {\n def: def._def,\n path: [..._options.basePath, _options.definitionPath, name],\n // Resolution of references will be forced even though seen, so it's ok that the schema is undefined here for now.\n jsonSchema: undefined,\n },\n ]),\n ),\n }\n}\n", "import type { ZodSchema } from '../../z/index'\nimport { Options, Targets } from './Options'\nimport { JsonSchema7Type, parseDef } from './parseDef'\nimport { getRefs } from './Refs'\n\nconst zodToJsonSchema = <Target extends Targets = 'jsonSchema7'>(\n schema: ZodSchema<any>,\n options?: Partial<Options<Target>> | string,\n): (Target extends 'jsonSchema7' ? JsonSchema7Type : object) & {\n $schema?: string\n definitions?: {\n [key: string]: Target extends 'jsonSchema7'\n ? JsonSchema7Type\n : Target extends 'jsonSchema2019-09'\n ? JsonSchema7Type\n : object\n }\n} => {\n const refs = getRefs(options)\n\n const definitions =\n typeof options === 'object' && options.definitions\n ? Object.entries(options.definitions).reduce(\n (acc, [name, schema]) => ({\n ...acc,\n [name]:\n parseDef(\n schema._def,\n {\n ...refs,\n currentPath: [...refs.basePath, refs.definitionPath, name],\n },\n true,\n ) ?? {},\n }),\n {},\n )\n : undefined\n\n const name = typeof options === 'string' ? options : options?.name\n\n const main =\n parseDef(\n schema._def,\n name === undefined\n ? refs\n : {\n ...refs,\n currentPath: [...refs.basePath, refs.definitionPath, name],\n },\n false,\n ) ?? {}\n\n const combined: ReturnType<typeof zodToJsonSchema<Target>> =\n name === undefined\n ? definitions\n ? {\n ...main,\n [refs.definitionPath]: definitions,\n }\n : main\n : {\n $ref: [...(refs.$refStrategy === 'relative' ? [] : refs.basePath), refs.definitionPath, name].join('/'),\n [refs.definitionPath]: {\n ...definitions,\n [name]: main,\n },\n }\n\n if (refs.target === 'jsonSchema7') {\n combined.$schema = 'http://json-schema.org/draft-07/schema#'\n } else if (refs.target === 'jsonSchema2019-09') {\n combined.$schema = 'https://json-schema.org/draft/2019-09/schema#'\n }\n\n return combined\n}\n\nexport { zodToJsonSchema }\n", "import { z } from '../../z/index'\nimport { zodToJsonSchema } from './zodToJsonSchema'\nimport { Options } from './Options'\nimport { JSONSchema7 } from 'json-schema'\n\nexport type ZuiSchemaOptions = {\n /**\n * The scope is the full path to the property defined in the JSON schema, the root node being represented by #\n * Objects doesn't have any scope, only its child does\n * @default \"#/properties/\"\n * */\n rootScope?: string\n /**\n * Sets the $schema path. If set to false, it will remove the $schema property from the schema\n */\n $schemaUrl?: string | false\n target?: 'jsonSchema7' | 'openApi3'\n} & Partial<Pick<Options, 'unionStrategy' | 'discriminator'>>\n\n/**\n * Converts a Zod schema to a JSON Schema.\n *\n * @deprecated Use the new toJSONSchema function instead.\n */\nexport const toJSONSchemaLegacy = (\n zuiType: z.ZodTypeAny,\n opts: ZuiSchemaOptions = { target: 'openApi3' },\n): JSONSchema7 => {\n const jsonSchema = zodToJsonSchema(zuiType as z.ZodType, opts)\n if (opts.$schemaUrl === false) {\n delete jsonSchema.$schema\n } else if (typeof opts.$schemaUrl === 'string') {\n jsonSchema.$schema = opts.$schemaUrl\n }\n\n return jsonSchema as JSONSchema7\n}\n", "import { z } from '@bpinternal/zui'\n\nexport * from '@bpinternal/zui'\n\nexport type GenericZuiSchema<\n A extends Record<string, z.ZodTypeAny> = Record<string, z.ZodTypeAny>,\n R extends z.ZodTypeAny = z.ZodTypeAny,\n> = (typeArguments: A) => R\n\nexport type ZuiObjectSchema = z.ZodObject | z.ZodRecord\nexport type ZuiObjectOrRefSchema = ZuiObjectSchema | z.ZodRef\n\nexport const mergeObjectSchemas = (a: ZuiObjectSchema, b: ZuiObjectSchema): ZuiObjectSchema => {\n const aDef = a._def\n const bDef = b._def\n\n if (aDef.typeName === z.ZodFirstPartyTypeKind.ZodObject && bDef.typeName === z.ZodFirstPartyTypeKind.ZodObject) {\n const aShape = aDef.shape()\n const bShape = bDef.shape()\n return z.object({ ...aShape, ...bShape })\n }\n if (aDef.typeName === z.ZodFirstPartyTypeKind.ZodRecord && bDef.typeName === z.ZodFirstPartyTypeKind.ZodRecord) {\n return z.record(z.intersection(aDef.valueType, bDef.valueType))\n }\n // TODO: adress this case\n throw new Error('Cannot merge object schemas with record schemas')\n}\n\nexport default z\n", "// This file contains constants that are exported for public use.\n\nexport const WELL_KNOWN_ATTRIBUTES = {\n HIDDEN_IN_STUDIO: { bpActionHiddenInStudio: 'true' },\n AWAIT_RETURN: { bpActionAwaitReturn: 'true' },\n} as const\n", "import { isNode } from 'browser-or-node'\nimport * as http from 'node:http'\nimport { log } from './log'\n\nexport type Request = {\n body?: string\n path: string\n query: string\n method: string\n headers: { [key: string]: string | undefined }\n}\n\nexport type Response = {\n body?: string\n headers?: { [key: string]: string }\n status?: number\n}\n\nexport type Handler = (req: Request) => Promise<Response | void>\n\nexport function parseBody<T>(req: Request): T {\n if (!req.body) {\n throw new Error('Missing body')\n }\n return JSON.parse(req.body)\n}\n\nexport async function serve(\n handler: Handler,\n port: number = 8072,\n callback: (port: number) => void = defaultCallback\n): Promise<http.Server> {\n if (!isNode) {\n throw new Error('This function can only be called in Node.js')\n }\n\n const httpModule = require('http') as typeof http\n\n /* eslint-disable @typescript-eslint/no-misused-promises */\n const server = httpModule.createServer(async (req, res) => {\n try {\n const request = await mapIncomingMessageToRequest(req)\n if (request.path === '/health') {\n res.writeHead(200).end('ok')\n return\n }\n const response = await handler(request)\n res.writeHead(response?.status ?? 200, response?.headers ?? {}).end(response?.body ?? '{}')\n } catch (thrown: unknown) {\n const error: string = thrown instanceof Error ? thrown.message : String(thrown)\n log.error('Error while handling request', { error: error ?? 'Internal error occured' })\n res.writeHead(500).end(JSON.stringify({ error: error ?? 'Internal error occured' }))\n }\n })\n\n server.listen(port, () => callback(port))\n return server\n}\n\nasync function mapIncomingMessageToRequest(incoming: http.IncomingMessage): Promise<Request> {\n const body = await readBody(incoming)\n const headers = {} as Request['headers']\n\n for (let i = 0; i < incoming.rawHeaders.length; i += 2) {\n const key = incoming.rawHeaders[i]!.toLowerCase()\n const value = incoming.rawHeaders[i + 1]!\n headers[key] = value\n }\n\n const url = new URL(\n incoming.url ?? '',\n incoming.headers.host ? `http://${incoming.headers.host}` : 'http://botpress.cloud'\n )\n\n return {\n body,\n path: url.pathname,\n query: trimPrefix(url.search, '?'),\n headers,\n method: incoming.method?.toUpperCase() ?? 'GET',\n }\n}\n\nfunction trimPrefix(value: string, prefix: string) {\n return value.indexOf(prefix) === 0 ? value.slice(prefix.length) : value\n}\n\nasync function readBody(incoming: http.IncomingMessage) {\n return new Promise<string | undefined>((resolve, reject) => {\n if (incoming.method !== 'POST' && incoming.method !== 'PUT' && incoming.method !== 'PATCH') {\n return resolve(undefined)\n }\n\n let body = ''\n\n incoming.on('data', (chunk) => (body += chunk.toString()))\n incoming.on('error', (e) => reject(e))\n incoming.on('end', () => resolve(body))\n })\n}\n\nfunction defaultCallback(port: number) {\n log.info(`Listening on port ${port}`)\n}\n", "export type Logger = {\n debug(message: string, metadata?: unknown): void\n info(message: string, metadata?: unknown): void\n warn(message: string, metadata?: unknown): void\n error(message: string, metadata?: unknown): void\n}\nexport const log: Logger = console\n", "export const pairs = <K extends string, V>(obj: Record<K, V>) => Object.entries(obj) as [K, V][]\nexport const values = <K extends string, V>(obj: Record<K, V>) => Object.values(obj) as V[]\nexport const mapValues = <K extends string, V, R>(obj: Record<K, V>, fn: (value: V, key: K) => R): Record<K, R> =>\n Object.fromEntries(pairs(obj).map(([key, value]) => [key, fn(value, key)])) as Record<K, R>\nexport const mapKeys = <K1 extends string, K2 extends string, V>(\n obj: Record<K1, V>,\n fn: (key: K1) => K2\n): Record<K2, V> => Object.fromEntries(pairs(obj).map(([key, value]) => [fn(key), value])) as Record<K2, V>\nexport const stripUndefinedProps = <K extends string, V>(obj: Record<K, V | undefined>): Record<K, V> =>\n Object.fromEntries(pairs(obj).filter(([, value]) => value !== undefined)) as Record<K, V>\n\nexport const mergeRecords = <K extends string, V>(\n a: Record<K, V>,\n b: Record<K, V>,\n merge: (v1: V, v2: V) => V\n): Record<K, V> => {\n const allKeys = [...Object.keys(a), ...Object.keys(b)] as K[]\n const uniqueKeys = [...new Set(allKeys)]\n const result: Record<K, V> = {} as Record<K, V>\n for (const key of uniqueKeys) {\n const aValue = a[key]\n const bValue = b[key]\n if (aValue && bValue) {\n result[key] = merge(aValue, bValue)\n } else if (aValue) {\n result[key] = aValue\n } else if (bValue) {\n result[key] = bValue\n }\n }\n return result\n}\n", "export const safePush = <T>(arr: T[] | undefined, ...values: T[]): T[] => (arr ? [...arr, ...values] : [...values])\n\nexport const unique = <T>(arr: T[]): T[] => Array.from(new Set(arr))\n", "export type Func<X extends any[], Y> = (...args: X) => Y\n\nexport const setName = <X extends any[], Y>(f: Func<X, Y>, name: string): Func<X, Y> => {\n Object.defineProperty(f, 'name', { value: name })\n return f\n}\n", "import {\n ActionOverrideProps,\n ChannelOverrideProps,\n EventOverrideProps,\n InterfaceExtension,\n ResolvedInterface,\n} from '../integration'\nimport { InterfacePackage } from '../package'\nimport * as utils from '../utils'\nimport z, { ZuiObjectSchema } from '../zui'\n\ntype ResolveInterfaceInput = InterfacePackage & {\n entities: Record<string, { name: string; schema: ZuiObjectSchema }>\n actions: Record<string, ActionOverrideProps>\n events: Record<string, EventOverrideProps>\n channels: Record<string, ChannelOverrideProps>\n}\n\ntype ResolveInterfaceOutput = {\n resolved: ResolvedInterface\n statement: InterfaceExtension\n}\n\nexport const resolveInterface = (intrface: ResolveInterfaceInput): ResolveInterfaceOutput => {\n const { name, version } = intrface\n\n const resolved: ResolvedInterface = { actions: {}, events: {}, channels: {} }\n const statement: InterfaceExtension = {\n name,\n version,\n entities: utils.records.mapValues(intrface.entities, (entity) => ({ name: entity.name })), // { item: { name: 'issue' } },\n actions: {},\n events: {},\n channels: {},\n }\n\n const entitySchemas = utils.records.mapValues(intrface.entities, (entity) => entity.schema)\n\n // dereference actions\n for (const [actionName, action] of Object.entries(intrface.definition.actions ?? {})) {\n const resolvedInputSchema = action.input.schema.dereference(entitySchemas) as z.AnyZodObject\n const resolvedOutputSchema = action.output.schema.dereference(entitySchemas) as z.AnyZodObject\n\n const newActionName = intrface.actions?.[actionName]?.name ?? actionName\n resolved.actions[newActionName] = {\n ...action,\n ...(intrface.actions?.[actionName] ?? {}),\n input: { schema: resolvedInputSchema },\n output: { schema: resolvedOutputSchema },\n }\n statement.actions[actionName] = { name: newActionName }\n }\n\n // dereference events\n for (const [eventName, event] of Object.entries(intrface.definition.events ?? {})) {\n const resolvedEventSchema = event.schema.dereference(entitySchemas) as z.AnyZodObject\n const newEventName = intrface.events?.[eventName]?.name ?? eventName\n resolved.events[newEventName] = {\n ...event,\n ...(intrface.events?.[eventName] ?? {}),\n schema: resolvedEventSchema,\n }\n statement.events[eventName] = { name: newEventName }\n }\n\n // dereference channels\n for (const [channelName, channel] of Object.entries(intrface.definition.channels ?? {})) {\n const messages: Record<string, { schema: z.AnyZodObject }> = {}\n for (const [messageName, message] of Object.entries(channel.messages)) {\n const resolvedMessageSchema = message.schema.dereference(entitySchemas) as z.AnyZodObject\n // no renaming for messages as they are already contained within a channel that acts as a namespace\n messages[messageName] = { ...message, schema: resolvedMessageSchema }\n }\n const newChannelName = intrface.channels?.[channelName]?.name ?? channelName\n resolved.channels[newChannelName] = {\n ...channel,\n ...(intrface.channels?.[channelName] ?? {}),\n message: {\n ...(channel.message ?? {}),\n tags: {\n ...(channel.message?.tags ?? {}),\n ...(intrface.channels?.[channelName]?.message?.tags ?? {}),\n },\n },\n conversation: {\n ...(channel.conversation ?? {}),\n tags: {\n ...(channel.conversation?.tags ?? {}),\n ...(intrface.channels?.[channelName]?.conversation?.tags ?? {}),\n },\n },\n messages,\n }\n statement.channels[channelName] = { name: newChannelName }\n }\n\n return { resolved, statement }\n}\n", "{\n \"name\": \"@botpress/sdk\",\n \"version\": \"5.0.2\",\n \"description\": \"Botpress SDK\",\n \"main\": \"./dist/index.cjs\",\n \"module\": \"./dist/index.mjs\",\n \"types\": \"./dist/index.d.ts\",\n \"repository\": {\n \"url\": \"https://github.com/botpress/botpress\"\n },\n \"scripts\": {\n \"check:type\": \"tsc -p ./tsconfig.json --noEmit\",\n \"build:type\": \"tsc -p ./tsconfig.package.json --emitDeclarationOnly --declaration\",\n \"build:browser\": \"ts-node -T ./build.ts --browser\",\n \"build:node\": \"ts-node -T ./build.ts --node\",\n \"build\": \"pnpm build:type && pnpm build:node && pnpm build:browser\"\n },\n \"keywords\": [],\n \"author\": \"\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@botpress/client\": \"1.28.0\",\n \"browser-or-node\": \"^2.1.1\",\n \"semver\": \"^7.3.8\"\n },\n \"devDependencies\": {\n \"@types/semver\": \"^7.3.11\",\n \"esbuild\": \"^0.25.10\",\n \"esbuild-plugin-polyfill-node\": \"^0.3.0\",\n \"tsup\": \"^8.0.2\"\n },\n \"peerDependencies\": {\n \"@bpinternal/zui\": \"1.3.1\",\n \"esbuild\": \"^0.16.12\"\n },\n \"peerDependenciesMeta\": {\n \"esbuild\": {\n \"optional\": true\n }\n },\n \"engines\": {\n \"node\": \">=18.0.0\"\n },\n \"packageManager\": \"pnpm@10.12.4\"\n}\n", "import { version } from '../package.json'\n\nexport const SDK_VERSION = version\n", "import * as utils from '../../utils'\nimport { z } from '../../zui'\n\nconst schemaName = Symbol('schemaName')\n\ntype BaseSchemas = Record<string, z.ZodSchema>\n\nexport type SchemaStoreProps<TSchemas extends BaseSchemas = BaseSchemas> = {\n [K in keyof TSchemas]: {\n schema: TSchemas[K]\n }\n}\n\nexport type BrandedSchema<TSchema extends BaseSchemas[string] = BaseSchemas[string]> = {\n schema: TSchema\n [schemaName]: string\n}\n\nexport type SchemaStore<TSchemas extends BaseSchemas = BaseSchemas> = {\n [K in keyof TSchemas]: BrandedSchema<TSchemas[K]>\n}\n\nexport const createStore = <TSchemas extends BaseSchemas>(\n props: SchemaStoreProps<TSchemas> | undefined\n): SchemaStore<TSchemas> => {\n if (!props) {\n return {} as SchemaStore<TSchemas>\n }\n const store: SchemaStore<BaseSchemas> = utils.records.mapValues(props, (e, k) => ({ ...e, [schemaName]: k }))\n return store as SchemaStore<TSchemas>\n}\n\nexport const isBranded = (schema: BrandedSchema | { schema: z.ZodSchema }): schema is BrandedSchema => {\n return schemaName in schema && schema[schemaName] !== undefined\n}\n\nexport const getName = (schema: BrandedSchema): string => {\n return schema[schemaName]\n}\n", "import type * as esbuild from 'esbuild'\nimport { resolveInterface } from '../../interface/resolve'\nimport { InterfacePackage } from '../../package'\nimport * as utils from '../../utils'\nimport { SDK_VERSION } from '../../version'\nimport { mergeObjectSchemas, z } from '../../zui'\nimport { SchemaStore, BrandedSchema, createStore, isBranded, getName } from './branded-schema'\nimport { BaseConfig, BaseEvents, BaseActions, BaseChannels, BaseStates, BaseEntities, BaseConfigs } from './generic'\nimport {\n ConfigurationDefinition,\n EventDefinition,\n ChannelDefinition,\n ActionDefinition,\n StateDefinition,\n UserDefinition,\n SecretDefinition,\n EntityDefinition,\n AdditionalConfigurationDefinition,\n MessageDefinition,\n InterfaceExtension,\n} from './types'\n\nexport * from './types'\n\nexport type IntegrationDefinitionProps<\n TName extends string = string,\n TVersion extends string = string,\n TConfig extends BaseConfig = BaseConfig,\n TConfigs extends BaseConfigs = BaseConfigs,\n TEvents extends BaseEvents = BaseEvents,\n TActions extends BaseActions = BaseActions,\n TChannels extends BaseChannels = BaseChannels,\n TStates extends BaseStates = BaseStates,\n TEntities extends BaseEntities = BaseEntities,\n> = {\n name: TName\n version: TVersion\n\n title?: string\n description?: string\n icon?: string\n readme?: string\n\n attributes?: Record<string, string>\n\n identifier?: {\n extractScript?: string\n fallbackHandlerScript?: string\n }\n\n configuration?: ConfigurationDefinition<TConfig>\n configurations?: {\n [K in keyof TConfigs]: AdditionalConfigurationDefinition<TConfigs[K]>\n }\n\n events?: { [K in keyof TEvents]: EventDefinition<TEvents[K]> }\n\n actions?: {\n [K in keyof TActions]: ActionDefinition<TActions[K]>\n }\n\n channels?: {\n [K in keyof TChannels]: ChannelDefinition<TChannels[K]>\n }\n\n states?: {\n [K in keyof TStates]: StateDefinition<TStates[K]>\n }\n\n user?: UserDefinition\n\n secrets?: Record<string, SecretDefinition>\n\n entities?: {\n [K in keyof TEntities]: EntityDefinition<TEntities[K]>\n }\n\n interfaces?: Record<string, InterfaceExtension>\n\n __advanced?: {\n esbuild?: Partial<esbuild.BuildOptions>\n extraOperations?: Record<string, { enabled: boolean }>\n useLegacyZuiTransformer?: boolean\n }\n}\n\ntype EntitiesOfPackage<TPackage extends InterfacePackage> = {\n [K in keyof TPackage['definition']['entities']]: NonNullable<TPackage['definition']['entities']>[K]['schema']\n}\n\ntype ActionsOfPackage<TPackage extends InterfacePackage> = {\n [K in keyof TPackage['definition']['actions']]: NonNullable<TPackage['definition']['actions']>[K]['input']['schema']\n}\n\ntype EventsOfPackage<TPackage extends InterfacePackage> = {\n [K in keyof TPackage['definition']['events']]: NonNullable<TPackage['definition']['events']>[K]['schema']\n}\n\ntype ChannelsOfPackage<TPackage extends InterfacePackage> = {\n [K in keyof TPackage['definition']['channels']]: {\n [M in keyof NonNullable<TPackage['definition']['channels']>[K]['messages']]: NonNullable<\n NonNullable<TPackage['definition']['channels']>[K]['messages']\n >[M]['schema']\n }\n}\n\nexport type ActionOverrideProps = utils.types.AtLeastOneProperty<\n Pick<Required<ActionDefinition>, 'title' | 'description' | 'billable' | 'cacheable' | 'attributes'> & {\n name: string\n }\n>\nexport type EventOverrideProps = utils.types.AtLeastOneProperty<\n Pick<Required<EventDefinition>, 'title' | 'description' | 'attributes'> & {\n name: string\n }\n>\nexport type ChannelOverrideProps = utils.types.AtLeastOneProperty<\n Pick<Required<ChannelDefinition>, 'title' | 'description'> & {\n name: string\n message: {\n tags: Required<Required<ChannelDefinition>['message']>['tags']\n }\n conversation: {\n tags: Required<Required<ChannelDefinition>['conversation']>['tags']\n }\n }\n>\n\ntype ActionOverrides<TInterfaceActionNames extends string = string> = utils.types.AtLeastOneProperty<\n Record<TInterfaceActionNames, ActionOverrideProps>\n>\ntype EventOverrides<TInterfaceEventNames extends string = string> = utils.types.AtLeastOneProperty<\n Record<TInterfaceEventNames, EventOverrideProps>\n>\ntype ChannelOverrides<TInterfaceChannelNames extends string = string> = utils.types.AtLeastOneProperty<\n Record<TInterfaceChannelNames, ChannelOverrideProps>\n>\n\ntype ExtensionBuilderInput<\n TIntegrationEntities extends BaseEntities,\n _TIntegrationActions extends BaseActions,\n _TIntegrationEvents extends BaseEvents,\n _TIntegrationChannels extends BaseChannels,\n> = {\n entities: SchemaStore<TIntegrationEntities>\n}\n\ntype ExtensionBuilderOutput<\n TInterfaceEntities extends BaseEntities,\n TInterfaceActions extends BaseActions,\n TInterfaceEvents extends BaseEvents,\n TInterfaceChannels extends BaseChannels,\n> = {\n entities: {\n [K in keyof TInterfaceEntities]: BrandedSchema<z.ZodSchema<z.infer<TInterfaceEntities[K]>>>\n }\n actions?: ActionOverrides<Extract<keyof TInterfaceActions, string>>\n events?: EventOverrides<Extract<keyof TInterfaceEvents, string>>\n channels?: ChannelOverrides<Extract<keyof TInterfaceChannels, string>>\n}\n\ntype ExtensionBuilder<\n TIntegrationEntities extends BaseEntities,\n TIntegrationActions extends BaseActions,\n TIntegrationEvents extends BaseEvents,\n TIntegrationChannels extends BaseChannels,\n TInterfaceEntities extends BaseEntities,\n TInterfaceActions extends BaseActions,\n TInterfaceEvents extends BaseEvents,\n TInterfaceChannels extends BaseChannels,\n> = (\n input: ExtensionBuilderInput<TIntegrationEntities, TIntegrationActions, TIntegrationEvents, TIntegrationChannels>\n) => ExtensionBuilderOutput<TInterfaceEntities, TInterfaceActions, TInterfaceEvents, TInterfaceChannels>\n\ntype TypeArgument = { name: string; schema: z.AnyZodObject }\n\nexport class IntegrationDefinition<\n TName extends string = string,\n TVersion extends string = string,\n TConfig extends BaseConfig = BaseConfig,\n TConfigs extends BaseConfigs = BaseConfigs,\n TEvents extends BaseEvents = BaseEvents,\n TActions extends BaseActions = BaseActions,\n TChannels extends BaseChannels = BaseChannels,\n TStates extends BaseStates = BaseStates,\n TEntities extends BaseEntities = BaseEntities,\n> {\n public readonly name: this['props']['name']\n public readonly version: this['props']['version']\n public readonly title: this['props']['title']\n public readonly description: this['props']['description']\n public readonly icon: this['props']['icon']\n public readonly readme: this['props']['readme']\n public readonly configuration: this['props']['configuration']\n public readonly configurations: this['props']['configurations']\n public readonly events: this['props']['events']\n public readonly actions: this['props']['actions']\n public readonly channels: this['props']['channels']\n public readonly states: this['props']['states']\n public readonly user: this['props']['user']\n public readonly secrets: this['props']['secrets']\n public readonly identifier: this['props']['identifier']\n public readonly entities: this['props']['entities']\n public readonly interfaces: this['props']['interfaces']\n public readonly __advanced: this['props']['__advanced']\n public readonly attributes: this['props']['attributes']\n\n public constructor(\n public readonly props: IntegrationDefinitionProps<\n TName,\n TVersion,\n TConfig,\n TConfigs,\n TEvents,\n TActions,\n TChannels,\n TStates,\n TEntities\n >\n ) {\n this.name = props.name\n this.version = props.version\n this.icon = props.icon\n this.readme = props.readme\n this.title = props.title\n this.identifier = props.identifier\n this.description = props.description\n this.configuration = props.configuration\n this.configurations = props.configurations\n this.events = props.events\n this.actions = props.actions\n this.channels = props.channels\n this.states = props.states\n this.user = props.user\n this.secrets = props.secrets\n this.entities = props.entities\n this.interfaces = props.interfaces\n this.__advanced = props.__advanced\n this.attributes = props.attributes\n }\n\n public get metadata() {\n return { sdkVersion: SDK_VERSION } as const\n }\n\n public extend<P extends InterfacePackage>(\n interfacePkg: P,\n builder: ExtensionBuilder<\n TEntities,\n TActions,\n TEvents,\n TChannels,\n EntitiesOfPackage<P>,\n ActionsOfPackage<P>,\n EventsOfPackage<P>,\n ChannelsOfPackage<P>\n >\n ): this {\n const { entities, actions, events, channels } = this._callBuilder(interfacePkg, builder)\n\n const self = this as utils.types.Writable<IntegrationDefinition>\n self.interfaces ??= {}\n\n const entityNames = Object.values(entities).map((e) => e.name)\n\n const key = entityNames.length === 0 ? interfacePkg.name : `${interfacePkg.name}<${entityNames.join(',')}>`\n\n const { resolved, statement } = resolveInterface({\n ...interfacePkg,\n entities,\n actions: utils.records.stripUndefinedProps(actions),\n events: utils.records.stripUndefinedProps(events),\n channels: utils.records.stripUndefinedProps(channels),\n })\n\n /**\n * If an action is defined both in the integration and the interface; we merge both.\n * This allows setting more specific properties in the integration, while staying compatible with the interface.\n * Same goes for channels and events.\n */\n self.actions = utils.records.mergeRecords(self.actions ?? {}, resolved.actions, this._mergeActions)\n self.channels = utils.records.mergeRecords(self.channels ?? {}, resolved.channels, this._mergeChannels)\n self.events = utils.records.mergeRecords(self.events ?? {}, resolved.events, this._mergeEvents)\n\n self.interfaces[key] = {\n id: interfacePkg.id,\n ...statement,\n }\n\n return this\n }\n\n private _callBuilder<P extends InterfacePackage>(\n interfacePkg: P,\n builder: ExtensionBuilder<\n TEntities,\n TActions,\n TEvents,\n TChannels,\n EntitiesOfPackage<P>,\n ActionsOfPackage<P>,\n EventsOfPackage<P>,\n ChannelsOfPackage<P>\n >\n ): {\n entities: Record<string, TypeArgument>\n actions: ActionOverrides\n events: EventOverrides\n channels: ChannelOverrides\n } {\n const entityStore = createStore(this.entities)\n const extensionBuilderInput: ExtensionBuilderInput<TEntities, TActions, TEvents, TChannels> = {\n entities: entityStore,\n }\n const extensionBuilderOutput = builder(extensionBuilderInput)\n const unbrandedEntity = utils.records.pairs(extensionBuilderOutput.entities).find(([_k, e]) => !isBranded(e))\n if (unbrandedEntity) {\n // this means the user tried providing a plain schema without referencing an entity from the integration\n throw new Error(\n `Cannot extend interface \"${interfacePkg.name}\" with entity \"${unbrandedEntity[0]}\"; the provided schema is not part of the integration's entities.`\n )\n }\n const entities = utils.records.mapValues(extensionBuilderOutput.entities, (e) => ({\n name: getName(e),\n schema: e.schema as z.AnyZodObject,\n }))\n return {\n entities,\n actions: extensionBuilderOutput.actions ?? {},\n events: extensionBuilderOutput.events ?? {},\n channels: extensionBuilderOutput.channels ?? {},\n }\n }\n\n private _mergeActions = (a: ActionDefinition, b: ActionDefinition): ActionDefinition => {\n return {\n ...a,\n ...b,\n input: {\n schema: mergeObjectSchemas(a.input.schema, b.input.schema),\n },\n output: {\n schema: mergeObjectSchemas(a.output.schema, b.output.schema),\n },\n }\n }\n\n private _mergeEvents = (a: EventDefinition, b: EventDefinition): EventDefinition => {\n return {\n ...a,\n ...b,\n schema: mergeObjectSchemas(a.schema, b.schema),\n }\n }\n\n private _mergeChannels = (a: ChannelDefinition, b: ChannelDefinition): ChannelDefinition => {\n const messages = utils.records.mergeRecords(a.messages, b.messages, this._mergeMessage)\n\n let conversation: ChannelDefinition['conversation'] = undefined\n if (a.conversation || b.conversation) {\n conversation = {\n tags: {\n ...a.conversation?.tags,\n ...b.conversation?.tags,\n },\n }\n }\n\n let message: ChannelDefinition['message'] = undefined\n if (a.message || b.message) {\n message = {\n tags: {\n ...a.message?.tags,\n ...b.message?.tags,\n },\n }\n }\n\n return {\n ...a,\n ...b,\n messages,\n conversation,\n message,\n }\n }\n\n private _mergeMessage = (a: MessageDefinition, b: MessageDefinition): MessageDefinition => {\n return {\n schema: mergeObjectSchemas(a.schema, b.schema),\n }\n }\n}\n", "import { isApiError, Client, RuntimeError, InvalidPayloadError } from '@botpress/client'\nimport { retryConfig } from '../../retry'\nimport { Request, Response, parseBody } from '../../serve'\nimport { IntegrationSpecificClient } from '../client'\nimport { BaseIntegration } from '../common'\nimport { ActionMetadataStore } from './action-metadata'\nimport { extractContext } from './context'\nimport { IntegrationLogger } from './integration-logger'\nimport {\n CommonHandlerProps,\n IntegrationHandlers,\n WebhookPayload,\n ActionPayload,\n MessagePayload,\n RegisterPayload,\n CreateUserPayload,\n UnregisterPayload,\n CreateConversationPayload,\n IntegrationContext,\n} from './types'\n\nexport * from './types'\nexport * from './integration-logger'\n\ntype ServerProps = CommonHandlerProps<BaseIntegration> & {\n req: Request\n instance: IntegrationHandlers<BaseIntegration>\n}\n\nconst extractTracingHeaders = (headers: Record<string, string | undefined>) => {\n return ['traceparent', 'tracestate', 'sentry-trace'].reduce<Record<string, string>>((acc, header) => {\n if (headers[header]) {\n acc[header] = headers[header]\n }\n return acc\n }, {})\n}\n\nconst getServerProps = (\n ctx: IntegrationContext,\n req: Request,\n instance: IntegrationHandlers<BaseIntegration>\n): ServerProps => {\n const [, traceId] = (req.headers['traceparent'] || '').split('-')\n\n const vanillaClient = new Client({\n botId: ctx.botId,\n integrationId: ctx.integrationId,\n integrationAlias: ctx.integrationAlias,\n retry: retryConfig,\n headers: extractTracingHeaders(req.headers),\n })\n const client = new IntegrationSpecificClient<BaseIntegration>(vanillaClient)\n const logger = new IntegrationLogger({ traceId })\n\n return {\n ctx,\n req,\n client,\n logger,\n instance,\n }\n}\n\nconst handleOperation = async (props: ServerProps) => {\n const { ctx } = props\n switch (ctx.operation) {\n case 'webhook_received':\n return await onWebhook(props)\n case 'register':\n return await onRegister(props)\n case 'unregister':\n return await onUnregister(props)\n case 'message_created':\n return await onMessageCreated(props)\n case 'action_triggered':\n return await onActionTriggered(props)\n case 'ping':\n return await onPing(props)\n case 'create_user':\n return await onCreateUser(props)\n case 'create_conversation':\n return await onCreateConversation(props)\n default:\n throw new InvalidPayloadError(`Unknown operation ${ctx.operation}`)\n }\n}\n\nexport const integrationHandler =\n (instance: IntegrationHandlers<BaseIntegration>) =>\n async (req: Request): Promise<Response | void> => {\n const ctx = extractContext(req.headers)\n const props = getServerProps(ctx, req, instance)\n const { logger } = props\n\n try {\n let response: Response | void\n response = await onUnknownOperationHandler(props)\n if (response) {\n return { ...response, status: response.status ?? 200 }\n }\n\n response = await handleOperation(props)\n return response ? { ...response, status: response.status ?? 200 } : { status: 200 }\n } catch (error) {\n if (isApiError(error)) {\n const runtimeError = error.type === 'Runtime' ? error : new RuntimeError(error.message, error)\n logger.forBot().error(runtimeError.message)\n\n return { status: runtimeError.code, body: JSON.stringify(runtimeError.toJSON()) }\n }\n\n // prints the error in the integration logs\n console.error(error)\n\n const runtimeError = new RuntimeError(\n 'An unexpected error occurred in the integration. Bot owners: Check logs for more informations. Integration owners: throw a RuntimeError to return a custom error message instead.'\n )\n logger.forBot().error(runtimeError.message)\n return { status: runtimeError.code, body: JSON.stringify(runtimeError.toJSON()) }\n }\n }\n\nconst onPing = async (_: ServerProps) => {}\n\nconst onWebhook = async ({ client, ctx, req: incomingRequest, logger, instance }: ServerProps) => {\n const { req } = parseBody<WebhookPayload>(incomingRequest)\n return instance.webhook({ client, ctx, req, logger })\n}\n\nconst onRegister = async ({ client, ctx, req, logger, instance }: ServerProps) => {\n if (!instance.register) {\n return\n }\n const { webhookUrl } = parseBody<RegisterPayload>(req)\n await instance.register({ client, ctx, webhookUrl, logger })\n}\n\nconst onUnregister = async ({ client, ctx, req, logger, instance }: ServerProps) => {\n if (!instance.unregister) {\n return\n }\n const { webhookUrl } = parseBody<UnregisterPayload>(req)\n await instance.unregister({ ctx, webhookUrl, client, logger })\n}\n\nconst onCreateUser = async ({ client, ctx, req, logger, instance }: ServerProps) => {\n if (!instance.createUser) {\n return\n }\n const { tags } = parseBody<CreateUserPayload<BaseIntegration>>(req)\n return await instance.createUser({ ctx, client, tags, logger })\n}\n\nconst onCreateConversation = async ({ client, ctx, req, logger, instance }: ServerProps) => {\n if (!instance.createConversation) {\n return\n }\n const { channel, tags } = parseBody<CreateConversationPayload<BaseIntegration>>(req)\n return await instance.createConversation({ ctx, client, channel, tags, logger })\n}\n\nconst onMessageCreated = async ({ ctx, req, client, logger, instance }: ServerProps) => {\n const { conversation, user, type, payload, message } = parseBody<MessagePayload<BaseIntegration, string, string>>(req)\n\n const channelHandler = instance.channels[conversation.channel]\n\n if (!channelHandler) {\n throw new Error(`Channel ${conversation.channel} not found`)\n }\n\n const messageHandler = channelHandler.messages[type]\n\n if (!messageHandler) {\n throw new Error(`Message of type ${type} not found in channel ${conversation.channel}`)\n }\n\n type UpdateMessageProps = Parameters<(typeof client)['updateMessage']>[0]\n const ack = async ({ tags }: Pick<UpdateMessageProps, 'tags'>) => {\n await client.updateMessage({\n id: message.id,\n tags,\n })\n }\n\n await messageHandler({ ctx, conversation, message, user, type, client, payload, ack, logger })\n}\n\nconst onActionTriggered = async ({ req, ctx, client, logger, instance }: ServerProps) => {\n const { input, type } = parseBody<ActionPayload<string, any>>(req)\n\n if (!type) {\n throw new Error('Missing action type')\n }\n\n const action = instance.actions[type]\n\n if (!action) {\n throw new Error(`Action ${type} not found`)\n }\n\n const metadata = new ActionMetadataStore()\n const output = await action({ ctx, input, client, type, logger, metadata })\n\n const response = { output, meta: metadata.toJSON() }\n return {\n body: JSON.stringify(response),\n }\n}\n\nconst onUnknownOperationHandler = async ({\n instance,\n client,\n ctx,\n logger,\n req,\n}: ServerProps): Promise<Response | void> => {\n const handler = instance.unknownOperationHandler\n if (!handler) {\n return\n }\n return await handler({\n client,\n ctx,\n logger,\n req,\n })\n}\n", "import * as client from '@botpress/client'\n\nexport const retryConfig: client.RetryConfig = {\n retries: 3,\n retryCondition: (err) =>\n client.axiosRetry.isNetworkOrIdempotentRequestError(err) || [429, 502].includes(err.response?.status ?? 0),\n retryDelay: (retryCount, axiosError) => {\n const retryAfterSeconds = _getRetryAfterSeconds(axiosError.response?.headers ?? {})\n return (retryAfterSeconds ?? retryCount) * 1000\n },\n}\n\nconst _getRetryAfterSeconds = (headers: client.axios.RawAxiosResponseHeaders) => {\n const headerNames = [\n // Standard rate limiting headers:\n 'RateLimit-Reset',\n 'X-RateLimit-Reset',\n 'Retry-After',\n\n // Lowercase variants:\n 'ratelimit-reset',\n 'x-ratelimit-reset',\n 'retry-after',\n ] as const\n\n for (const headerName of headerNames) {\n const headerValue: unknown = headers[headerName]\n\n if (headerValue === undefined) {\n continue\n }\n\n return _parseHeaderToSeconds(String(headerValue))\n }\n\n return\n}\n\nconst _parseHeaderToSeconds = (headerValue: string): number | undefined => {\n // NOTE: retry-after can be either a number of seconds or a date string:\n const secondsDiff = _isDateString(headerValue)\n ? _parseDateToSeconds(headerValue)\n : headerValue.length > 0\n ? parseInt(headerValue, 10)\n : undefined\n\n return secondsDiff === undefined || isNaN(secondsDiff) ? undefined : secondsDiff\n}\n\nconst _isDateString = (headerValue: string): boolean => headerValue.includes(' ')\n\nconst _parseDateToSeconds = (headerValue: string): number | undefined => {\n const futureDate = _parseDateString(headerValue)\n if (!futureDate) {\n return\n }\n\n const currentDate = new Date()\n return Math.max(0, Math.floor((futureDate.getTime() - currentDate.getTime()) / 1000))\n}\n\nconst _parseDateString = (headerValue: string): Date | undefined => {\n const date = new Date(headerValue)\n return isNaN(date.getTime()) ? undefined : date\n}\n", "import * as client from '@botpress/client'\nimport * as common from '../common'\nimport * as types from './types'\n\nexport * from './types'\n\n/**\n * Just like the regular botpress client, but typed with the integration's properties.\n */\nexport class IntegrationSpecificClient<TIntegration extends common.BaseIntegration>\n implements types.ClientOperations<TIntegration>\n{\n public constructor(private readonly _client: client.Client) {}\n\n /**\n * Access the underlying Botpress client.\n * This is useful for operations that are not available in the IntegrationSpecificClient.\n * You probably shouldn't use this directly if you don't know what you're doing.\n */\n public get _inner(): client.Client {\n return this._client\n }\n\n public createConversation: types.CreateConversation<TIntegration> = ((x) =>\n this._client.createConversation(x)) as types.CreateConversation<TIntegration>\n public getConversation: types.GetConversation<TIntegration> = ((x) =>\n this._client.getConversation(x)) as types.GetConversation<TIntegration>\n public listConversations: types.ListConversations<TIntegration> = ((x) =>\n this._client.listConversations(x)) as types.ListConversations<TIntegration>\n public getOrCreateConversation: types.GetOrCreateConversation<TIntegration> = ((x) =>\n this._client.getOrCreateConversation(x)) as types.GetOrCreateConversation<TIntegration>\n public updateConversation: types.UpdateConversation<TIntegration> = ((x) =>\n this._client.updateConversation(x)) as types.UpdateConversation<TIntegration>\n public deleteConversation: types.DeleteConversation<TIntegration> = ((x) =>\n this._client.deleteConversation(x)) as types.DeleteConversation<TIntegration>\n\n public listParticipants: types.ListParticipants<TIntegration> = ((x) =>\n this._client.listParticipants(x)) as types.ListParticipants<TIntegration>\n public addParticipant: types.AddParticipant<TIntegration> = ((x) =>\n this._client.addParticipant(x)) as types.AddParticipant<TIntegration>\n public getParticipant: types.GetParticipant<TIntegration> = ((x) =>\n this._client.getParticipant(x)) as types.GetParticipant<TIntegration>\n public removeParticipant: types.RemoveParticipant<TIntegration> = ((x) =>\n this._client.removeParticipant(x)) as types.RemoveParticipant<TIntegration>\n\n public createEvent: types.CreateEvent<TIntegration> = ((x) =>\n this._client.createEvent(x)) as types.CreateEvent<TIntegration>\n public getEvent: types.GetEvent<TIntegration> = ((x) => this._client.getEvent(x)) as types.GetEvent<TIntegration>\n public listEvents: types.ListEvents<TIntegration> = ((x) =>\n this._client.listEvents(x)) as types.ListEvents<TIntegration>\n\n public createMessage: types.CreateMessage<TIntegration> = ((x) =>\n this._client.createMessage(x)) as types.CreateMessage<TIntegration>\n public getOrCreateMessage: types.GetOrCreateMessage<TIntegration> = ((x) =>\n this._client.getOrCreateMessage(x)) as types.GetOrCreateMessage<TIntegration>\n public getMessage: types.GetMessage<TIntegration> = ((x) =>\n this._client.getMessage(x).then((r) => r)) as types.GetMessage<TIntegration>\n public updateMessage: types.UpdateMessage<TIntegration> = ((x) =>\n this._client.updateMessage(x).then((r) => r)) as types.UpdateMessage<TIntegration>\n public listMessages: types.ListMessages<TIntegration> = ((x) =>\n this._client.listMessages(x)) as types.ListMessages<TIntegration>\n public deleteMessage: types.DeleteMessage<TIntegration> = ((x) =>\n this._client.deleteMessage(x)) as types.DeleteMessage<TIntegration>\n\n public createUser: types.CreateUser<TIntegration> = ((x) =>\n this._client.createUser(x)) as types.CreateUser<TIntegration>\n public getUser: types.GetUser<TIntegration> = ((x) => this._client.getUser(x)) as types.GetUser<TIntegration>\n public listUsers: types.ListUsers<TIntegration> = (x) => this._client.listUsers(x)\n public getOrCreateUser: types.GetOrCreateUser<TIntegration> = ((x) =>\n this._client.getOrCreateUser(x)) as types.GetOrCreateUser<TIntegration>\n public updateUser: types.UpdateUser<TIntegration> = ((x) =>\n this._client.updateUser(x)) as types.UpdateUser<TIntegration>\n public deleteUser: types.DeleteUser<TIntegration> = (x) => this._client.deleteUser(x)\n\n public getState: types.GetState<TIntegration> = ((x) => this._client.getState(x)) as types.GetState<TIntegration>\n public setState: types.SetState<TIntegration> = ((x) => this._client.setState(x)) as types.SetState<TIntegration>\n public getOrSetState: types.GetOrSetState<TIntegration> = ((x) =>\n this._client.getOrSetState(x)) as types.GetOrSetState<TIntegration>\n public patchState: types.PatchState<TIntegration> = ((x) =>\n this._client.patchState(x)) as types.PatchState<TIntegration>\n\n public configureIntegration: types.ConfigureIntegration<TIntegration> = (x) => this._client.configureIntegration(x)\n\n public uploadFile: types.UploadFile<TIntegration> = (x) => this._client.uploadFile(x)\n public upsertFile: types.UpsertFile<TIntegration> = (x) => this._client.upsertFile(x)\n public deleteFile: types.DeleteFile<TIntegration> = (x) => this._client.deleteFile(x)\n public listFiles: types.ListFiles<TIntegration> = (x) => this._client.listFiles(x)\n public getFile: types.GetFile<TIntegration> = (x) => this._client.getFile(x)\n public updateFileMetadata: types.UpdateFileMetadata<TIntegration> = (x) => this._client.updateFileMetadata(x)\n public trackAnalytics: types.TrackAnalytics<TIntegration> = (x) => this._client.trackAnalytics(x)\n}\n", "export type ActionMetadata = {\n cost: number\n}\n\nexport class ActionMetadataStore {\n private _cost: number = 0\n\n public get cost(): number {\n return this._cost\n }\n\n public setCost(cost: number): void {\n this._cost = cost\n }\n\n public toJSON(): ActionMetadata {\n return {\n cost: this.cost,\n }\n }\n}\n", "export * from './public-consts'\n\n// This file contains constants that are not exported for public use.\n// They are used internally in the SDK and should not be used outside of it.\n\n// To export a constant, add it to the public-consts.ts file instead.\n\nexport const PLUGIN_PREFIX_SEPARATOR = '#'\n\nexport const BOT_ID_HEADER = 'x-bot-id'\nexport const BOT_USER_ID_HEADER = 'x-bot-user-id'\nexport const INTEGRATION_ID_HEADER = 'x-integration-id'\nexport const INTEGRATION_ALIAS_HEADER = 'x-integration-alias'\nexport const WEBHOOK_ID_HEADER = 'x-webhook-id'\n\nexport const CONFIGURATION_TYPE_HEADER = 'x-bp-configuration-type'\nexport const CONFIGURATION_PAYLOAD_HEADER = 'x-bp-configuration'\nexport const OPERATION_TYPE_HEADER = 'x-bp-operation'\nexport const OPERATION_SUBTYPE_HEADER = 'x-bp-type'\n", "/**\n * Utility to throw an error in ternary or nullish coalescing expressions\n */\nexport const throwError = (thrown: string | Error): never => {\n const error = thrown instanceof Error ? thrown : new Error(thrown)\n throw error\n}\n", "import { z } from '@bpinternal/zui'\nimport {\n BOT_ID_HEADER,\n BOT_USER_ID_HEADER,\n CONFIGURATION_PAYLOAD_HEADER,\n CONFIGURATION_TYPE_HEADER,\n INTEGRATION_ALIAS_HEADER,\n INTEGRATION_ID_HEADER,\n OPERATION_TYPE_HEADER,\n WEBHOOK_ID_HEADER,\n} from '../../consts'\nimport { throwError } from '../../utils/error-utils'\nimport { IntegrationContext } from './types'\n\nexport const integrationOperationSchema = z.enum([\n 'webhook_received',\n 'message_created',\n 'action_triggered',\n 'register',\n 'unregister',\n 'ping',\n 'create_user',\n 'create_conversation',\n])\n\nexport const extractContext = (headers: Record<string, string | undefined>): IntegrationContext => ({\n botId: headers[BOT_ID_HEADER] || throwError('Missing bot header'),\n botUserId: headers[BOT_USER_ID_HEADER] || throwError('Missing bot user header'),\n integrationId: headers[INTEGRATION_ID_HEADER] || throwError('Missing integration header'),\n integrationAlias: headers[INTEGRATION_ALIAS_HEADER] || throwError('Missing integration alias header'),\n webhookId: headers[WEBHOOK_ID_HEADER] || throwError('Missing webhook header'),\n operation: headers[OPERATION_TYPE_HEADER] || throwError('Missing operation header'),\n configurationType: headers[CONFIGURATION_TYPE_HEADER] ?? null,\n configuration: JSON.parse(\n Buffer.from(headers[CONFIGURATION_PAYLOAD_HEADER] || throwError('Missing configuration header'), 'base64').toString(\n 'utf-8'\n )\n ),\n})\n", "import util from 'util'\n\ntype LogLevel = 'info' | 'debug' | 'warn' | 'error'\n\nexport abstract class BaseLogger<TOptions extends object> {\n protected defaultOptions: TOptions\n\n protected constructor(defaultOptions: TOptions) {\n this.defaultOptions = defaultOptions\n }\n\n public abstract with(options: TOptions): BaseLogger<TOptions>\n\n public info(...args: Parameters<typeof console.info>) {\n this._log('info', args)\n }\n\n public debug(...args: Parameters<typeof console.debug>) {\n this._log('debug', args)\n }\n\n public warn(...args: Parameters<typeof console.warn>) {\n this._log('warn', args)\n }\n\n public error(...args: Parameters<typeof console.error>) {\n this._log('error', args)\n }\n\n private _log(level: LogLevel, args: Parameters<typeof console.info>) {\n this._getConsoleMethod(level)(this._serializeMessage(args))\n }\n\n private _serializeMessage(args: Parameters<typeof console.info>) {\n const msg = util.format(...args)\n if (process.env['BP_LOG_FORMAT'] === 'json') {\n return this.getJsonMessage(msg)\n } else {\n return msg\n }\n }\n\n protected getJsonMessage(msg: string) {\n return JSON.stringify({ msg, options: this.defaultOptions })\n }\n\n private _getConsoleMethod(level: LogLevel): (...args: unknown[]) => void {\n switch (level) {\n case 'debug':\n return console.debug\n case 'warn':\n return console.warn\n case 'error':\n return console.error\n default:\n return console.info\n }\n }\n}\n", "import { BaseLogger } from '../../base-logger'\n\ntype IntegrationLogOptions = {\n userId?: string\n conversationId?: string\n traceId?: string\n visibleToBotOwners?: boolean\n}\n\nexport class IntegrationLogger extends BaseLogger<IntegrationLogOptions> {\n public constructor(options?: IntegrationLogOptions) {\n super({\n visibleToBotOwners: true,\n ...options,\n })\n }\n\n public override with(options: IntegrationLogOptions) {\n return new IntegrationLogger({ ...this.defaultOptions, ...options })\n }\n\n public withUserId(userId: string) {\n return this.with({\n userId,\n })\n }\n\n public withConversationId(conversationId: string) {\n return this.with({\n conversationId,\n })\n }\n\n public withVisibleToBotOwners(visibleToBotOwners: boolean) {\n return this.with({\n visibleToBotOwners,\n })\n }\n\n public forBot() {\n return this.withVisibleToBotOwners(true)\n }\n\n protected override getJsonMessage(msg: string) {\n return JSON.stringify({\n msg,\n //We need to have snake case 'visible_to_bot_owner' since that is how we used to differentiate between bot and integration logs\n visible_to_bot_owner: this.defaultOptions.visibleToBotOwners,\n options: this.defaultOptions,\n })\n }\n}\n", "import type { Server } from 'node:http'\nimport { serve } from '../serve'\nimport { BaseIntegration } from './common'\nimport {\n RegisterHandler as RegisterFunction,\n UnregisterHandler as UnregisterFunction,\n WebhookHandler as WebhookFunction,\n CreateUserHandler as CreateUserFunction,\n CreateConversationHandler as CreateConversationFunction,\n ActionHandlers as ActionFunctions,\n ChannelHandlers as ChannelFunctions,\n UnknownOperationHandler as UnknownOperationFunction,\n integrationHandler,\n} from './server'\n\nexport type IntegrationImplementationProps<TIntegration extends BaseIntegration = BaseIntegration> = {\n register: RegisterFunction<TIntegration>\n unregister: UnregisterFunction<TIntegration>\n handler: WebhookFunction<TIntegration>\n /**\n * @deprecated\n */\n createUser?: CreateUserFunction<TIntegration>\n /**\n * @deprecated\n */\n createConversation?: CreateConversationFunction<TIntegration>\n actions: ActionFunctions<TIntegration>\n channels: ChannelFunctions<TIntegration>\n __advanced?: {\n unknownOperationHandler?: UnknownOperationFunction<TIntegration>\n }\n}\n\nexport class IntegrationImplementation<TIntegration extends BaseIntegration = BaseIntegration> {\n public readonly actions: IntegrationImplementationProps<TIntegration>['actions']\n public readonly channels: IntegrationImplementationProps<TIntegration>['channels']\n public readonly register: IntegrationImplementationProps<TIntegration>['register']\n public readonly unregister: IntegrationImplementationProps<TIntegration>['unregister']\n public readonly createUser: IntegrationImplementationProps<TIntegration>['createUser']\n public readonly createConversation: IntegrationImplementationProps<TIntegration>['createConversation']\n public readonly webhook: IntegrationImplementationProps<TIntegration>['handler']\n public readonly unknownOperationHandler: NonNullable<\n IntegrationImplementationProps<TIntegration>['__advanced']\n >['unknownOperationHandler']\n\n public constructor(public readonly props: IntegrationImplementationProps<TIntegration>) {\n this.actions = props.actions\n this.channels = props.channels\n this.register = props.register\n this.unregister = props.unregister\n this.createUser = props.createUser\n this.createConversation = props.createConversation\n this.webhook = props.handler\n this.unknownOperationHandler = props.__advanced?.unknownOperationHandler\n }\n\n public readonly handler = integrationHandler(this as IntegrationImplementation<any>)\n public readonly start = (port?: number): Promise<Server> => serve(this.handler, port)\n}\n", "import { Table } from '@botpress/client'\nimport * as consts from '../consts'\nimport { IntegrationPackage, PluginPackage } from '../package'\nimport { PluginInterfaceExtension, PluginIntegrationExtension } from '../plugin'\nimport { SchemaDefinition } from '../schema'\nimport * as utils from '../utils'\nimport { ValueOf, Writable, Merge, StringKeys } from '../utils/type-utils'\nimport { SDK_VERSION } from '../version'\nimport z, { ZuiObjectSchema, ZuiObjectOrRefSchema } from '../zui'\n\ntype BaseConfig = ZuiObjectSchema\ntype BaseStates = Record<string, ZuiObjectOrRefSchema>\ntype BaseEvents = Record<string, ZuiObjectOrRefSchema>\ntype BaseActions = Record<string, ZuiObjectOrRefSchema>\ntype BaseTables = Record<string, ZuiObjectOrRefSchema>\ntype BaseWorkflows = Record<string, ZuiObjectSchema>\n\nexport type TagDefinition = {\n title?: string\n description?: string\n}\n\nexport type StateType = 'conversation' | 'user' | 'bot' | 'workflow'\n\nexport type StateDefinition<TState extends BaseStates[string] = BaseStates[string]> = SchemaDefinition<TState> & {\n type: StateType\n expiry?: number\n}\n\nexport type RecurringEventDefinition<TEvents extends BaseEvents = BaseEvents> = {\n [K in keyof TEvents]: {\n type: K\n payload: z.infer<TEvents[K]>\n schedule: { cron: string }\n }\n}[keyof TEvents]\n\nexport type EventDefinition<TEvent extends BaseEvents[string] = BaseEvents[string]> = SchemaDefinition<TEvent> & {\n attributes?: Record<string, string>\n}\n\nexport type ConfigurationDefinition<TConfig extends BaseConfig = BaseConfig> = SchemaDefinition<TConfig>\n\nexport type UserDefinition = {\n tags?: Record<string, TagDefinition>\n}\n\nexport type ConversationDefinition = {\n tags?: Record<string, TagDefinition>\n}\n\nexport type MessageDefinition = {\n tags?: Record<string, TagDefinition>\n}\n\nexport type ActionDefinition<TAction extends BaseActions[string] = BaseActions[string]> = {\n title?: string\n description?: string\n input: SchemaDefinition<TAction>\n output: SchemaDefinition<ZuiObjectOrRefSchema> // cannot infer both input and output types (typescript limitation)\n attributes?: Record<string, string>\n}\n\nexport type WorkflowDefinition<TWorkflow extends BaseWorkflows[string] = BaseWorkflows[string]> = {\n title?: string\n description?: string\n input: SchemaDefinition<TWorkflow>\n output: SchemaDefinition<ZuiObjectSchema> // cannot infer both input and output types (typescript limitation)\n tags?: Record<string, TagDefinition>\n}\n\nexport type TableDefinition<TTable extends BaseTables[string] = BaseTables[string]> = Merge<\n Omit<Table, 'id' | 'createdAt' | 'updatedAt' | 'name'>,\n {\n schema: TTable\n }\n>\n\nexport type ResolvedIntegrationConfigInstance<I extends IntegrationPackage = IntegrationPackage> = {\n enabled?: boolean\n alias: string\n disabledChannels?: StringKeys<NonNullable<I['definition']['channels']>>[]\n} & (\n | {\n configurationType?: null\n configuration: z.infer<NonNullable<I['definition']['configuration']>['schema']>\n }\n | ValueOf<{\n [K in StringKeys<NonNullable<I['definition']['configurations']>>]: {\n configurationType: K\n configuration: z.infer<NonNullable<I['definition']['configurations']>[K]['schema']>\n }\n }>\n)\n\ntype IntegrationConfigInstance<I extends IntegrationPackage = IntegrationPackage> = Omit<\n ResolvedIntegrationConfigInstance<I>,\n 'alias'\n> & { alias?: string }\n\ntype _ResolvedPluginConfigInstance<P extends PluginPackage = PluginPackage> = {\n alias: string\n configuration: z.infer<NonNullable<P['definition']['configuration']>['schema']>\n interfaces: {\n [I in keyof NonNullable<P['definition']['interfaces']>]: PluginInterfaceExtension\n }\n integrations: {\n [I in keyof NonNullable<P['definition']['integrations']>]: PluginIntegrationExtension\n }\n}\n\ntype PluginConfigInstance<P extends PluginPackage = PluginPackage> = Omit<\n _ResolvedPluginConfigInstance<P>,\n 'alias' | 'integrations' | 'interfaces'\n> & {\n alias?: string\n /** Backing integrations for the plugin's dependencies */\n dependencies: {\n [K in StringKeys<NonNullable<P['definition']['interfaces']>>]: {\n /**\n * Alias of the integration to use to fullfil this dependency.\n *\n * This is the alias given when adding the integration to the bot\n * via `addIntegration()`.\n */\n integrationAlias: string\n /**\n * Alias of the interface within the integration.\n *\n * This is the alias defined by the integration package for the\n * interface it implements.\n */\n integrationInterfaceAlias: string\n }\n } & {\n [K in StringKeys<NonNullable<P['definition']['integrations']>>]: {\n /**\n * Alias of the integration to use to fullfil this dependency.\n *\n * This is the alias given when adding the integration to the bot\n * via `addIntegration()`.\n */\n integrationAlias: string\n }\n }\n}\n\nexport type IntegrationInstance = IntegrationPackage & ResolvedIntegrationConfigInstance\nexport type PluginInstance = PluginPackage & _ResolvedPluginConfigInstance\n\nexport type BotDefinitionProps<\n TStates extends BaseStates = BaseStates,\n TEvents extends BaseEvents = BaseEvents,\n TActions extends BaseActions = BaseActions,\n TTables extends BaseTables = BaseTables,\n TWorkflows extends BaseWorkflows = BaseWorkflows,\n> = {\n integrations?: {\n [K: string]: IntegrationInstance\n }\n plugins?: {\n [K: string]: PluginInstance\n }\n user?: UserDefinition\n conversation?: ConversationDefinition\n message?: MessageDefinition\n states?: {\n [K in keyof TStates]: StateDefinition<TStates[K]>\n }\n configuration?: ConfigurationDefinition\n events?: {\n [K in keyof TEvents]: EventDefinition<TEvents[K]>\n }\n recurringEvents?: Record<string, RecurringEventDefinition<TEvents>>\n actions?: {\n [K in keyof TActions]: ActionDefinition<TActions[K]>\n }\n tables?: {\n [K in keyof TTables]: TableDefinition<TTables[K]>\n }\n\n /**\n * # EXPERIMENTAL\n * This API is experimental and may change in the future.\n */\n workflows?: {\n [K in keyof TWorkflows]: WorkflowDefinition<TWorkflows[K]>\n }\n\n attributes?: Record<string, string>\n\n __advanced?: {\n useLegacyZuiTransformer?: boolean\n }\n}\n\nexport class BotDefinition<\n TStates extends BaseStates = BaseStates,\n TEvents extends BaseEvents = BaseEvents,\n TActions extends BaseActions = BaseActions,\n TTables extends BaseTables = BaseTables,\n TWorkflows extends BaseWorkflows = BaseWorkflows,\n> {\n public readonly integrations: this['props']['integrations']\n public readonly plugins: this['props']['plugins']\n public readonly user: this['props']['user']\n public readonly conversation: this['props']['conversation']\n public readonly message: this['props']['message']\n public readonly states: this['props']['states']\n public readonly configuration: this['props']['configuration']\n public readonly events: this['props']['events']\n public readonly recurringEvents: this['props']['recurringEvents']\n public readonly actions: this['props']['actions']\n public readonly tables: this['props']['tables']\n public readonly workflows: this['props']['workflows']\n public readonly attributes: this['props']['attributes']\n public readonly __advanced: this['props']['__advanced']\n\n /** Bot definition with plugins merged into it */\n public readonly withPlugins: Pick<\n this['props'],\n 'user' | 'conversation' | 'message' | 'states' | 'events' | 'recurringEvents' | 'actions' | 'tables' | 'workflows'\n >\n\n public constructor(public readonly props: BotDefinitionProps<TStates, TEvents, TActions, TTables, TWorkflows>) {\n this.integrations = props.integrations\n this.plugins = props.plugins\n this.user = props.user\n this.conversation = props.conversation\n this.message = props.message\n this.states = props.states\n this.configuration = props.configuration\n this.events = props.events\n this.recurringEvents = props.recurringEvents\n this.actions = props.actions\n this.tables = props.tables\n this.workflows = props.workflows\n this.attributes = props.attributes\n this.__advanced = props.__advanced\n\n this.withPlugins = {\n user: props.user,\n conversation: props.conversation,\n message: props.message,\n states: props.states,\n events: props.events,\n recurringEvents: props.recurringEvents,\n actions: props.actions,\n tables: props.tables,\n workflows: props.workflows,\n }\n }\n\n public get metadata() {\n return { sdkVersion: SDK_VERSION } as const\n }\n\n public addIntegration<I extends IntegrationPackage>(integrationPkg: I, config?: IntegrationConfigInstance<I>): this {\n const self = this as Writable<BotDefinition>\n if (!self.integrations) {\n self.integrations = {}\n }\n\n const integrationAlias = config?.alias ?? integrationPkg.name\n\n if (self.integrations[integrationAlias]) {\n throw new Error(`Another integration with alias \"${integrationAlias}\" is already installed in the bot`)\n }\n\n self.integrations[integrationAlias] = {\n ...integrationPkg,\n alias: integrationAlias,\n enabled: config?.enabled,\n configurationType: config && 'configurationType' in config ? config.configurationType : undefined,\n configuration: config && 'configuration' in config ? (config.configuration ?? {}) : {},\n disabledChannels: config?.disabledChannels,\n }\n return this\n }\n\n public addPlugin<P extends PluginPackage>(pluginPkg: P, config: PluginConfigInstance<P>): this {\n const self = this as Writable<BotDefinition>\n if (!self.plugins) {\n self.plugins = {}\n }\n\n const pluginAlias = config.alias ?? pluginPkg.name\n\n if (self.plugins[pluginAlias]) {\n throw new Error(`Another plugin with alias \"${pluginAlias}\" is already installed in the bot`)\n }\n // Resolve backing integrations for plugin interfaces:\n const interfaces: Record<string, PluginInterfaceExtension> = Object.fromEntries(\n Object.entries(config.dependencies ?? {})\n .filter(([_, dep]) => 'integrationInterfaceAlias' in dep)\n .map(([pluginIfaceAlias, pluginIfaceConfig]) => {\n const integrationInstance = this.integrations?.[pluginIfaceConfig.integrationAlias]\n\n if (!integrationInstance) {\n const availableIntegrations = Object.keys(this.integrations ?? {}).join(', ') || '(none)'\n\n throw new Error(\n `Interface with alias \"${pluginIfaceAlias}\" of plugin with alias \"${pluginAlias}\" ` +\n `references integration with alias \"${pluginIfaceConfig.integrationAlias}\" which is not installed. ` +\n 'Please make sure to add the integration via addIntegration() before calling addPlugin().\\n' +\n `Available integration aliases: ${availableIntegrations}`\n )\n }\n\n const integrationInterfaceExtension =\n integrationInstance.definition.interfaces?.[pluginIfaceConfig.integrationInterfaceAlias]\n\n if (!integrationInterfaceExtension) {\n const availableInterfaces =\n Object.keys(integrationInstance.definition.interfaces ?? {}).join(', ') || '(none)'\n\n throw new Error(\n `Interface with alias \"${pluginIfaceConfig.integrationInterfaceAlias}\" does not exist in integration ` +\n `\"${integrationInstance.name}\" referenced by interface with alias \"${pluginIfaceAlias}\" of plugin ` +\n `with alias \"${pluginAlias}\".\\nAvailable interface aliases: ${availableInterfaces}`\n )\n }\n\n return [\n pluginIfaceAlias,\n {\n ...integrationInterfaceExtension,\n id: integrationInstance.id,\n name: integrationInstance.name,\n version: integrationInstance.version,\n ...pluginIfaceConfig,\n } satisfies PluginInterfaceExtension,\n ]\n })\n )\n\n // Resolve backing integrations for plugin integrations:\n const integrations: Record<string, PluginIntegrationExtension> = Object.fromEntries(\n Object.entries(config.dependencies ?? {})\n .filter(([_, dep]) => !('integrationInterfaceAlias' in dep))\n .map(([pluginIntegAlias, pluginIntegConfig]) => {\n const integrationInstance = this.integrations?.[pluginIntegConfig.integrationAlias]\n\n if (!integrationInstance) {\n const availableIntegrations = Object.keys(this.integrations ?? {}).join(', ') || '(none)'\n\n throw new Error(\n `Integration with alias \"${pluginIntegAlias}\" of plugin with alias \"${pluginAlias}\" ` +\n `references integration with alias \"${pluginIntegConfig.integrationAlias}\" which is not installed. ` +\n 'Please make sure to add the integration via addIntegration() before calling addPlugin().\\n' +\n `Available integration aliases: ${availableIntegrations}`\n )\n }\n\n return [\n pluginIntegAlias,\n { ...integrationInstance, ...pluginIntegConfig } satisfies PluginIntegrationExtension,\n ]\n })\n )\n\n self.plugins[pluginAlias] = {\n ...pluginPkg,\n alias: pluginAlias,\n configuration: config.configuration ?? {},\n interfaces,\n integrations,\n }\n\n self.withPlugins.user = this._mergeUser(self.withPlugins.user, pluginPkg.definition.user)\n self.withPlugins.conversation = this._mergeConversation(\n self.withPlugins.conversation,\n pluginPkg.definition.conversation\n )\n self.withPlugins.message = this._mergeMessage(self.withPlugins.message, pluginPkg.definition.message)\n self.withPlugins.recurringEvents = this._mergeRecurringEvents(\n self.withPlugins.recurringEvents,\n pluginPkg.definition.recurringEvents\n )\n self.withPlugins.tables = this._mergeTables(self.withPlugins.tables, pluginPkg.definition.tables)\n self.withPlugins.workflows = this._mergeWorkflows(self.withPlugins.workflows, pluginPkg.definition.workflows)\n\n self.withPlugins.states = this._mergeStates(\n self.withPlugins.states,\n this._prefixKeysWithPluginAlias(pluginPkg.definition.states, pluginAlias)\n )\n self.withPlugins.events = this._mergeEvents(\n self.withPlugins.events,\n this._prefixKeysWithPluginAlias(pluginPkg.definition.events, pluginAlias)\n )\n self.withPlugins.actions = this._mergeActions(\n self.withPlugins.actions,\n this._prefixKeysWithPluginAlias(pluginPkg.definition.actions, pluginAlias)\n )\n\n return this\n }\n\n private _mergeUser = (\n user1: BotDefinitionProps['user'],\n user2: BotDefinitionProps['user']\n ): BotDefinitionProps['user'] => {\n return {\n tags: {\n ...user1?.tags,\n ...user2?.tags,\n },\n }\n }\n\n private _mergeConversation = (\n conversation1: BotDefinitionProps['conversation'],\n conversation2: BotDefinitionProps['conversation']\n ): BotDefinitionProps['conversation'] => {\n return {\n tags: {\n ...conversation1?.tags,\n ...conversation2?.tags,\n },\n }\n }\n\n private _mergeMessage = (\n message1: BotDefinitionProps['message'],\n message2: BotDefinitionProps['message']\n ): BotDefinitionProps['message'] => {\n return {\n tags: {\n ...message1?.tags,\n ...message2?.tags,\n },\n }\n }\n\n private _mergeStates = (\n states1: BotDefinitionProps['states'],\n states2: BotDefinitionProps['states']\n ): BotDefinitionProps['states'] => {\n return {\n ...states1,\n ...states2,\n }\n }\n\n private _mergeEvents = (\n events1: BotDefinitionProps['events'],\n events2: BotDefinitionProps['events']\n ): BotDefinitionProps['events'] => {\n return {\n ...events1,\n ...events2,\n }\n }\n\n private _mergeRecurringEvents = (\n recurringEvents1: BotDefinitionProps['recurringEvents'],\n recurringEvents2: BotDefinitionProps['recurringEvents']\n ): BotDefinitionProps['recurringEvents'] => {\n return {\n ...recurringEvents1,\n ...recurringEvents2,\n }\n }\n\n private _mergeActions = (\n actions1: BotDefinitionProps['actions'],\n actions2: BotDefinitionProps['actions']\n ): BotDefinitionProps['actions'] => {\n return {\n ...actions1,\n ...actions2,\n }\n }\n\n private _mergeTables = (\n tables1: BotDefinitionProps['tables'],\n tables2: BotDefinitionProps['tables']\n ): BotDefinitionProps['tables'] => {\n return {\n ...tables1,\n ...tables2,\n }\n }\n\n private _mergeWorkflows = (\n workflows1: BotDefinitionProps['workflows'],\n workflows2: BotDefinitionProps['workflows']\n ): BotDefinitionProps['workflows'] => {\n return {\n ...workflows1,\n ...workflows2,\n }\n }\n\n private _prefixKeysWithPluginAlias = <TRecord extends Record<string, unknown>>(\n obj: TRecord | undefined,\n pluginAlias: string\n ): TRecord =>\n utils.records.mapKeys(obj ?? {}, (key) => `${pluginAlias}${consts.PLUGIN_PREFIX_SEPARATOR}${key}`) as TRecord\n\n /**\n * Returns a copy of the bot definition where all interface entity references\n * are resolved to the base entity schema as extended by the backing\n * integration.\n */\n public dereferencePluginEntities(): this {\n const zuiReferenceMap = this._buildZuiReferenceMap()\n\n return {\n ...this,\n withPlugins: {\n ...this.withPlugins,\n events: this._dereferenceDefinitionSchemas(this.withPlugins.events, zuiReferenceMap),\n states: this._dereferenceDefinitionSchemas(this.withPlugins.states, zuiReferenceMap),\n tables: this._dereferenceDefinitionSchemas(this.withPlugins.tables, zuiReferenceMap),\n actions: this._dereferenceActionDefinitionSchemas(this.withPlugins.actions, zuiReferenceMap),\n },\n plugins: Object.fromEntries(\n (Object.entries(this.plugins ?? {}) as [pluginAlias: string, PluginInstance][]).map(\n ([pluginAlias, pluginInstance]) => [\n pluginAlias,\n {\n ...pluginInstance,\n definition: {\n ...pluginInstance.definition,\n configuration: this._dereferenceDefinitionSchema(\n pluginInstance.definition.configuration,\n zuiReferenceMap\n ),\n events: this._dereferenceDefinitionSchemas(pluginInstance.definition.events, zuiReferenceMap),\n states: this._dereferenceDefinitionSchemas(pluginInstance.definition.states, zuiReferenceMap),\n tables: this._dereferenceDefinitionSchemas(pluginInstance.definition.tables, zuiReferenceMap),\n actions: this._dereferenceActionDefinitionSchemas(pluginInstance.definition.actions, zuiReferenceMap),\n },\n },\n ]\n )\n ),\n } as typeof this\n }\n\n private _buildZuiReferenceMap(): Record<string, z.ZodTypeAny> {\n const zuiReferenceMap: Record<string, z.ZodTypeAny> = {}\n\n const installedPlugins = Object.entries(this.plugins ?? {}) as [pluginAlias: string, PluginInstance][]\n\n for (const [pluginAlias, pluginInstance] of installedPlugins) {\n const pluginInterfaceExtensions = Object.entries(pluginInstance.interfaces ?? {}) as [\n interfaceAlias: string,\n PluginInterfaceExtension,\n ][]\n\n for (const [interfaceAlias, pluginInterfaceExtension] of pluginInterfaceExtensions) {\n const backingIntegration = this.integrations?.[pluginInterfaceExtension.integrationAlias]\n\n if (!backingIntegration) {\n throw new Error(\n `Interface with alias \"${interfaceAlias}\" of plugin with alias \"${pluginAlias}\" references integration \"${pluginInterfaceExtension.name}\" which is not installed`\n )\n }\n\n const entityExtensions = Object.entries(pluginInterfaceExtension.entities ?? {}) as [\n entityAlias: string,\n {\n name: string\n },\n ][]\n\n for (const [entityAlias, { name: interfaceEntityName }] of entityExtensions) {\n const entitySchema = backingIntegration.definition.entities?.[interfaceEntityName]?.schema\n\n if (!entitySchema) {\n // This should never happen\n throw new Error(\n `Interface entity \"${interfaceEntityName}\" does not exist in integration \"${backingIntegration.name}\"`\n )\n }\n\n zuiReferenceMap[`interface:${interfaceAlias}/entities/${entityAlias}`] = entitySchema\n }\n }\n }\n\n return zuiReferenceMap\n }\n\n private _dereferenceZuiSchema(\n schema: ZuiObjectOrRefSchema,\n zuiReferenceMap: Record<string, z.ZodTypeAny>\n ): ZuiObjectSchema {\n return schema.dereference(zuiReferenceMap) as ZuiObjectSchema\n }\n\n private _dereferenceDefinitionSchemas<TDefinitionRecord extends Record<string, { schema: ZuiObjectOrRefSchema }>>(\n definitions: TDefinitionRecord | undefined,\n zuiReferenceMap: Record<string, z.ZodTypeAny>\n ): TDefinitionRecord {\n return Object.fromEntries(\n Object.entries(definitions ?? {}).map(([key, definition]) => [\n key,\n this._dereferenceDefinitionSchema(definition, zuiReferenceMap),\n ])\n ) as TDefinitionRecord\n }\n\n private _dereferenceDefinitionSchema<TDefinition extends { schema: ZuiObjectOrRefSchema } | undefined>(\n definition: TDefinition,\n zuiReferenceMap: Record<string, z.ZodTypeAny>\n ): TDefinition {\n return definition\n ? { ...definition, schema: this._dereferenceZuiSchema(definition.schema, zuiReferenceMap) }\n : definition\n }\n\n private _dereferenceActionDefinitionSchemas<\n TDefinitionRecord extends Record<\n string,\n { input: { schema: ZuiObjectOrRefSchema }; output: { schema: ZuiObjectOrRefSchema } }\n >,\n >(definitions: TDefinitionRecord | undefined, zuiReferenceMap: Record<string, z.ZodTypeAny>): TDefinitionRecord {\n return Object.fromEntries(\n Object.entries(definitions ?? {}).map(([key, definition]) => [\n key,\n {\n ...definition,\n input: { schema: this._dereferenceZuiSchema(definition.input.schema, zuiReferenceMap) },\n output: { schema: this._dereferenceZuiSchema(definition.output.schema, zuiReferenceMap) },\n },\n ])\n ) as TDefinitionRecord\n }\n}\n", "import { isApiError, Client, RuntimeError, Message, State } from '@botpress/client'\nimport { retryConfig } from '../../retry'\nimport { Request, Response, parseBody } from '../../serve'\nimport * as utils from '../../utils/type-utils'\nimport { BotLogger } from '../bot-logger'\nimport { BotSpecificClient } from '../client'\nimport * as common from '../common'\nimport { extractContext } from './context'\nimport { SUCCESS_RESPONSE } from './responses'\nimport * as types from './types'\nimport { handleWorkflowUpdateEvent } from './workflows/update-handler'\n\nexport * from './types'\n\nexport const botHandler =\n (bot: types.BotHandlers<common.BaseBot>) =>\n async (req: Request): Promise<Response | void> => {\n const ctx = extractContext(req.headers)\n const logger = new BotLogger()\n\n const vanillaClient = new Client({\n botId: ctx.botId,\n retry: retryConfig,\n })\n const botClient = new BotSpecificClient<common.BaseBot>(vanillaClient, {\n before: {\n createMessage: async (req) => {\n const beforeOutgoingMessageHooks = bot.hookHandlers.before_outgoing_message[req.type] ?? []\n for (const handler of beforeOutgoingMessageHooks) {\n const client = new BotSpecificClient(vanillaClient)\n const hookOutput = await handler({\n client,\n ctx,\n logger: logger.with({ conversationId: req.conversationId, userId: req.userId }),\n data: req,\n })\n req = hookOutput?.data ?? req\n }\n return req\n },\n callAction: async (req) => {\n const beforeOutgoingCallActionHooks = bot.hookHandlers.before_outgoing_call_action[req.type] ?? []\n for (const handler of beforeOutgoingCallActionHooks) {\n const client = new BotSpecificClient(vanillaClient)\n const hookOutput = await handler({\n client,\n ctx,\n logger,\n data: req,\n })\n req = hookOutput?.data ?? req\n }\n return req\n },\n },\n after: {\n createMessage: async (res) => {\n const afterOutgoingMessageHooks = bot.hookHandlers.after_outgoing_message[res.message.type] ?? []\n for (const handler of afterOutgoingMessageHooks) {\n const client = new BotSpecificClient(vanillaClient)\n const hookOutput = await handler({\n client,\n ctx,\n logger: logger.with({\n messageId: res.message.id,\n conversationId: res.message.conversationId,\n userId: res.message.userId,\n }),\n data: res,\n })\n res = hookOutput?.data ?? res\n }\n return res\n },\n callAction: async (res, req) => {\n const { type } = req\n const afterOutgoingCallActionHooks = bot.hookHandlers.after_outgoing_call_action[type] ?? []\n for (const handler of afterOutgoingCallActionHooks) {\n const client = new BotSpecificClient(vanillaClient)\n const hookOutput = await handler({\n client,\n ctx,\n logger,\n data: {\n type,\n ...res,\n },\n })\n res = hookOutput?.data ?? res\n }\n return res\n },\n },\n })\n\n const props: types.ServerProps = {\n req,\n ctx,\n logger,\n client: botClient,\n self: bot,\n }\n\n try {\n switch (ctx.operation) {\n case 'action_triggered':\n return await onActionTriggered(props)\n case 'event_received':\n return await onEventReceived(props)\n case 'register':\n return await onRegister(props)\n case 'unregister':\n return await onUnregister(props)\n case 'ping':\n return await onPing(props)\n default:\n throw new Error(`Unknown operation ${ctx.operation}`)\n }\n } catch (thrown: unknown) {\n const error = thrown instanceof Error ? thrown : new Error(String(thrown))\n\n if (isApiError(error)) {\n const runtimeError = error.type === 'Runtime' ? error : new RuntimeError(error.message, error)\n logger.error(runtimeError.message)\n\n return { status: runtimeError.code, body: JSON.stringify(runtimeError.toJSON()) }\n }\n\n const runtimeError = new RuntimeError('An unexpected error occurred in the bot.', error)\n logger.error(runtimeError.message, error)\n return { status: runtimeError.code, body: JSON.stringify(runtimeError.toJSON()) }\n }\n }\n\nconst onPing = async (_: types.ServerProps): Promise<Response> => {\n return SUCCESS_RESPONSE\n}\n\nconst onRegister = async (_: types.ServerProps): Promise<Response> => SUCCESS_RESPONSE\n\nconst onUnregister = async (_: types.ServerProps): Promise<Response> => SUCCESS_RESPONSE\n\nconst onEventReceived = async (serverProps: types.ServerProps): Promise<Response> => {\n const { ctx, logger, req, client, self } = serverProps\n const common: types.CommonHandlerProps<common.BaseBot> = { client, ctx, logger }\n\n type AnyEventPayload = utils.ValueOf<types.EventPayloads<common.BaseBot>>\n const body = parseBody<AnyEventPayload>(req)\n\n common.logger = common.logger.with({\n eventId: body.event.id,\n messageId: body.event.messageId,\n conversationId: body.event.conversationId,\n userId: body.event.userId,\n })\n\n if (ctx.type === 'workflow_update') {\n return await handleWorkflowUpdateEvent(serverProps, body.event as types.WorkflowUpdateEvent)\n }\n\n if (ctx.type === 'message_created') {\n const event = body.event\n let message: Message = event.payload.message\n\n common.logger = common.logger.with({\n messageId: message.id,\n conversationId: message.conversationId,\n userId: message.userId,\n })\n\n const beforeIncomingMessageHooks = self.hookHandlers.before_incoming_message[message.type] ?? []\n for (const handler of beforeIncomingMessageHooks) {\n const hookOutput = await handler({\n ...common,\n data: message,\n })\n message = hookOutput?.data ?? message\n if (hookOutput?.stop) {\n return SUCCESS_RESPONSE\n }\n }\n\n const messagePayload: Parameters<(typeof messageHandlers)[number]>[0] = {\n ...common,\n user: event.payload.user,\n conversation: event.payload.conversation,\n message,\n event,\n }\n const messageHandlers = self.messageHandlers[message.type] ?? []\n for (const handler of messageHandlers) {\n await handler(messagePayload)\n }\n\n const afterIncomingMessageHooks = self.hookHandlers.after_incoming_message[message.type] ?? []\n for (const handler of afterIncomingMessageHooks) {\n const hookOutput = await handler({\n ...common,\n data: message,\n })\n message = hookOutput?.data ?? message\n if (hookOutput?.stop) {\n return SUCCESS_RESPONSE\n }\n }\n\n return SUCCESS_RESPONSE\n }\n\n if (ctx.type === 'state_expired') {\n const event = body.event\n const state: State = event.payload.state\n const statePayload: Parameters<(typeof stateHandlers)[number]>[0] = {\n ...common,\n state: state as types.IncomingStates<common.BaseBot>[string],\n }\n\n const stateHandlers = self.stateExpiredHandlers[state.name] ?? []\n for (const handler of stateHandlers) {\n await handler(statePayload)\n }\n\n return SUCCESS_RESPONSE\n }\n\n let event = body.event\n const beforeIncomingEventHooks = self.hookHandlers.before_incoming_event[event.type] ?? []\n for (const handler of beforeIncomingEventHooks) {\n const hookOutput = await handler({\n ...common,\n data: event,\n })\n event = hookOutput?.data ?? event\n if (hookOutput?.stop) {\n return SUCCESS_RESPONSE\n }\n }\n\n const eventPayload: Parameters<(typeof eventHandlers)[number]>[0] = { ...common, event }\n const eventHandlers = self.eventHandlers[event.type] ?? []\n for (const handler of eventHandlers) {\n await handler(eventPayload)\n }\n\n const afterIncomingEventHooks = self.hookHandlers.after_incoming_event[event.type] ?? []\n for (const handler of afterIncomingEventHooks) {\n const hookOutput = await handler({\n ...common,\n data: event,\n })\n event = hookOutput?.data ?? event\n if (hookOutput?.stop) {\n return SUCCESS_RESPONSE\n }\n }\n\n return SUCCESS_RESPONSE\n}\n\nconst onActionTriggered = async ({ ctx, logger, req, client, self }: types.ServerProps): Promise<Response> => {\n type AnyActionPayload = utils.ValueOf<types.ActionHandlerPayloads<common.BaseBot>>\n let { input, type } = parseBody<AnyActionPayload>(req)\n\n if (!type) {\n throw new Error('Missing action type')\n }\n\n // TODO: this should probably run even if the action is called in memory\n const beforeIncomingCallActionHooks = self.hookHandlers.before_incoming_call_action[type] ?? []\n for (const handler of beforeIncomingCallActionHooks) {\n const hookOutput = await handler({\n ctx,\n logger,\n client,\n data: {\n type,\n input,\n },\n })\n input = hookOutput?.data?.input ?? input\n type = hookOutput?.data?.type ?? type\n }\n\n const action = self.actionHandlers[type]\n if (!action) {\n throw new Error(`Action ${type} not found`)\n }\n\n let output = await action({ ctx, logger, input, client, type })\n\n const afterIncomingCallActionHooks = self.hookHandlers.after_incoming_call_action[type] ?? []\n for (const handler of afterIncomingCallActionHooks) {\n const hookOutput = await handler({\n ctx,\n logger,\n client,\n data: {\n type,\n output,\n },\n })\n type = hookOutput?.data?.type ?? type\n output = hookOutput?.data?.output ?? output\n }\n\n const response = { output }\n return {\n status: 200,\n body: JSON.stringify(response),\n }\n}\n", "import { BaseLogger } from '../base-logger'\n\ntype BotLogOptions = {\n userId?: string\n conversationId?: string\n workflowId?: string\n eventId?: string\n messageId?: string\n}\n\nexport class BotLogger extends BaseLogger<BotLogOptions> {\n public constructor(options?: BotLogOptions) {\n super({\n ...options,\n })\n }\n\n public override with(options: BotLogOptions) {\n return new BotLogger({ ...this.defaultOptions, ...options })\n }\n\n public withUserId(userId: string) {\n return this.with({\n userId,\n })\n }\n\n public withConversationId(conversationId: string) {\n return this.with({\n conversationId,\n })\n }\n\n public withWorkflowId(workflowId: string) {\n return this.with({\n workflowId,\n })\n }\n\n public withEventId(eventId: string) {\n return this.with({\n eventId,\n })\n }\n\n public withMessageId(messageId: string) {\n return this.with({\n messageId,\n })\n }\n}\n", "import * as client from '@botpress/client'\nimport * as common from '../common'\nimport * as types from './types'\n\nexport * from './types'\n\n/**\n * Just like the regular botpress client, but typed with the bot's properties.\n */\nexport class BotSpecificClient<TBot extends common.BaseBot> implements types.ClientOperations<TBot> {\n public constructor(\n private _client: client.Client,\n private _hooks: types.ClientHooks = { before: {}, after: {} }\n ) {}\n\n /**\n * Access the underlying Botpress client.\n * This is useful for operations that are not available in the BotSpecificClient.\n * You probably shouldn't use this directly if you don't know what you're doing.\n */\n public get _inner(): client.Client {\n return this._client\n }\n\n public getConversation: types.GetConversation<TBot> = ((x) =>\n this._run('getConversation', x)) as types.GetConversation<TBot>\n public listConversations: types.ListConversations<TBot> = ((x) =>\n this._run('listConversations', x)) as types.ListConversations<TBot>\n public updateConversation: types.UpdateConversation<TBot> = ((x) =>\n this._run('updateConversation', x)) as types.UpdateConversation<TBot>\n public deleteConversation: types.DeleteConversation<TBot> = ((x) =>\n this._run('deleteConversation', x)) as types.DeleteConversation<TBot>\n public listParticipants: types.ListParticipants<TBot> = ((x) =>\n this._run('listParticipants', x)) as types.ListParticipants<TBot>\n public addParticipant: types.AddParticipant<TBot> = ((x) =>\n this._run('addParticipant', x)) as types.AddParticipant<TBot>\n public getParticipant: types.GetParticipant<TBot> = ((x) =>\n this._run('getParticipant', x)) as types.GetParticipant<TBot>\n public removeParticipant: types.RemoveParticipant<TBot> = ((x) =>\n this._run('removeParticipant', x)) as types.RemoveParticipant<TBot>\n public createEvent: types.CreateEvent<TBot> = ((x) => this._run('createEvent', x)) as types.CreateEvent<TBot>\n public getEvent: types.GetEvent<TBot> = ((x) => this._run('getEvent', x)) as types.GetEvent<TBot>\n public listEvents: types.ListEvents<TBot> = ((x) => this._run('listEvents', x)) as types.ListEvents<TBot>\n public createMessage: types.CreateMessage<TBot> = ((x) => this._run('createMessage', x)) as types.CreateMessage<TBot>\n public getOrCreateMessage: types.GetOrCreateMessage<TBot> = ((x) =>\n this._run('getOrCreateMessage', x)) as types.GetOrCreateMessage<TBot>\n public getMessage: types.GetMessage<TBot> = ((x) => this._run('getMessage', x)) as types.GetMessage<TBot>\n public updateMessage: types.UpdateMessage<TBot> = ((x) => this._run('updateMessage', x)) as types.UpdateMessage<TBot>\n public listMessages: types.ListMessages<TBot> = ((x) => this._run('listMessages', x)) as types.ListMessages<TBot>\n public deleteMessage: types.DeleteMessage<TBot> = ((x) => this._run('deleteMessage', x)) as types.DeleteMessage<TBot>\n public getUser: types.GetUser<TBot> = ((x) => this._run('getUser', x)) as types.GetUser<TBot>\n public listUsers: types.ListUsers<TBot> = ((x) => this._run('listUsers', x)) as types.ListUsers<TBot>\n public updateUser: types.UpdateUser<TBot> = ((x) => this._run('updateUser', x)) as types.UpdateUser<TBot>\n public deleteUser: types.DeleteUser<TBot> = ((x) => this._run('deleteUser', x)) as types.DeleteUser<TBot>\n public getState: types.GetState<TBot> = ((x) => this._run('getState', x)) as types.GetState<TBot>\n public setState: types.SetState<TBot> = ((x) => this._run('setState', x)) as types.SetState<TBot>\n public getOrSetState: types.GetOrSetState<TBot> = ((x) => this._run('getOrSetState', x)) as types.GetOrSetState<TBot>\n public patchState: types.PatchState<TBot> = ((x) => this._run('patchState', x)) as types.PatchState<TBot>\n public callAction: types.CallAction<TBot> = ((x) => this._run('callAction', x)) as types.CallAction<TBot>\n public uploadFile: types.UploadFile<TBot> = ((x) => this._run('uploadFile', x)) as types.UploadFile<TBot>\n public upsertFile: types.UpsertFile<TBot> = ((x) => this._run('upsertFile', x)) as types.UpsertFile<TBot>\n public deleteFile: types.DeleteFile<TBot> = ((x) => this._run('deleteFile', x)) as types.DeleteFile<TBot>\n public listFiles: types.ListFiles<TBot> = ((x) => this._run('listFiles', x)) as types.ListFiles<TBot>\n public getFile: types.GetFile<TBot> = ((x) => this._run('getFile', x)) as types.GetFile<TBot>\n public updateFileMetadata: types.UpdateFileMetadata<TBot> = ((x) =>\n this._run('updateFileMetadata', x)) as types.UpdateFileMetadata<TBot>\n public searchFiles: types.SearchFiles<TBot> = ((x) => this._run('searchFiles', x)) as types.SearchFiles<TBot>\n public trackAnalytics: types.TrackAnalytics<TBot> = ((x) =>\n this._run('trackAnalytics', x)) as types.TrackAnalytics<TBot>\n public getTableRow: types.GetTableRow<TBot> = ((x) => this._run('getTableRow', x)) as types.GetTableRow<TBot>\n public createTableRows: types.CreateTableRows<TBot> = ((x) =>\n this._run('createTableRows', x)) as types.CreateTableRows<TBot>\n public findTableRows: types.FindTableRows<TBot> = ((x) => this._run('findTableRows', x)) as types.FindTableRows<TBot>\n public deleteTableRows: types.DeleteTableRows<TBot> = ((x) =>\n this._run('deleteTableRows', x)) as types.DeleteTableRows<TBot>\n public updateTableRows: types.UpdateTableRows<TBot> = ((x) =>\n this._run('updateTableRows', x)) as types.UpdateTableRows<TBot>\n public upsertTableRows: types.UpsertTableRows<TBot> = ((x) =>\n this._run('upsertTableRows', x)) as types.UpsertTableRows<TBot>\n public createWorkflow: types.CreateWorkflow<TBot> = ((x) =>\n this._run('createWorkflow', x)) as types.CreateWorkflow<TBot>\n public getOrCreateWorkflow: types.GetOrCreateWorkflow<TBot> = ((x) =>\n this._run('getOrCreateWorkflow', x)) as types.GetOrCreateWorkflow<TBot>\n public getWorkflow: types.GetWorkflow<TBot> = ((x) => this._run('getWorkflow', x)) as types.GetWorkflow<TBot>\n public updateWorkflow: types.UpdateWorkflow<TBot> = ((x) =>\n this._run('updateWorkflow', x)) as types.UpdateWorkflow<TBot>\n public deleteWorkflow: types.DeleteWorkflow<TBot> = ((x) =>\n this._run('deleteWorkflow', x)) as types.DeleteWorkflow<TBot>\n public listWorkflows: types.ListWorkflows<TBot> = ((x) => this._run('listWorkflows', x)) as types.ListWorkflows<TBot>\n\n /**\n * @deprecated Use `callAction` to delegate the conversation creation to an integration.\n */\n public createConversation: types.CreateConversation<TBot> = (x) => this._client.createConversation(x)\n /**\n * @deprecated Use `callAction` to delegate the conversation creation to an integration.\n */\n public getOrCreateConversation: types.GetOrCreateConversation<TBot> = (x) => this._client.getOrCreateConversation(x)\n /**\n * @deprecated Use `callAction` to delegate the user creation to an integration.\n */\n public createUser: types.CreateUser<TBot> = (x) => this._client.createUser(x)\n /**\n * @deprecated Use `callAction` to delegate the user creation to an integration.\n */\n public getOrCreateUser: types.GetOrCreateUser<TBot> = (x) => this._client.getOrCreateUser(x)\n\n private _run = async <K extends client.Operation>(\n operation: K,\n req: client.ClientInputs[K]\n ): Promise<client.ClientOutputs[K]> => {\n const before = this._hooks.before[operation]\n if (before) {\n req = await before(req)\n }\n\n let res = (await this._client[operation](req as any)) as client.ClientOutputs[K]\n\n const after = this._hooks.after[operation]\n if (after) {\n res = await after(res, req)\n }\n\n return res\n }\n}\n", "import { z } from '@bpinternal/zui'\nimport {\n BOT_ID_HEADER,\n CONFIGURATION_PAYLOAD_HEADER,\n OPERATION_TYPE_HEADER,\n OPERATION_SUBTYPE_HEADER,\n} from '../../consts'\nimport { throwError } from '../../utils/error-utils'\nimport { BotContext } from './types'\n\nconst botOperationSchema = z.enum(['event_received', 'register', 'unregister', 'ping', 'action_triggered'])\n\nexport const extractContext = (headers: Record<string, string | undefined>): BotContext => ({\n botId: headers[BOT_ID_HEADER] || throwError('Missing bot id header'),\n operation: botOperationSchema.parse(headers[OPERATION_TYPE_HEADER]),\n type: headers[OPERATION_SUBTYPE_HEADER] || throwError('Missing type header'),\n configuration: JSON.parse(\n Buffer.from(headers[CONFIGURATION_PAYLOAD_HEADER] || throwError('Missing configuration header'), 'base64').toString(\n 'utf-8'\n )\n ),\n})\n", "export const SUCCESS_RESPONSE = { status: 200 } as const\n", "import * as types from '../types'\n\nexport const bridgeUpdateTypeToSnakeCase = (updateType: types.BridgeWorkflowUpdateType): types.WorkflowUpdateType => {\n switch (updateType) {\n case 'workflow_continued':\n return 'continued'\n case 'workflow_started':\n return 'started'\n case 'workflow_timedout':\n return 'timed_out'\n default:\n throw new Error(`Unsupported workflow update type: ${updateType}`)\n }\n}\n", "import { Response } from '../../../serve'\nimport { SUCCESS_RESPONSE } from '../responses'\nimport * as types from '../types'\nimport { bridgeUpdateTypeToSnakeCase } from './update-type-conv'\n\nconst WORKFLOW_UPDATE_TYPES = [\n 'child_workflow_deleted',\n 'child_workflow_finished',\n 'workflow_timedout',\n 'workflow_started',\n 'workflow_continued',\n] as const\n\nexport const handleWorkflowUpdateEvent = async (\n rawProps: types.ServerProps,\n event: types.WorkflowUpdateEvent\n): Promise<Response> => {\n if (rawProps.ctx.type !== 'workflow_update' || !WORKFLOW_UPDATE_TYPES.includes(event.payload.type)) {\n throw new Error('Unexpected event type')\n }\n\n const props = { ...rawProps, logger: _attachWorkflowContextToLogger(rawProps, event) }\n\n if (!event.payload.workflow.name) {\n props.logger.warn(\n 'Received workflow update event without a workflow name. Assuming this workflow was not defined by the bot.',\n event.payload.workflow\n )\n return SUCCESS_RESPONSE\n }\n\n switch (event.payload.type) {\n case 'child_workflow_deleted':\n case 'child_workflow_finished':\n props.logger.info(\n `Received child workflow event \"${event.payload.type}\", but child workflows are not yet supported`\n )\n break\n case 'workflow_timedout':\n case 'workflow_started':\n case 'workflow_continued':\n return await _handleWorkflowUpdate(props, event)\n default:\n event.payload.type satisfies never\n }\n\n return SUCCESS_RESPONSE\n}\n\nconst _attachWorkflowContextToLogger = (\n props: types.ServerProps,\n event: types.WorkflowUpdateEvent\n): types.ServerProps['logger'] =>\n props.logger.with({\n eventId: event.id,\n workflowId: event.payload.workflow.id,\n conversationId: event.payload.conversation?.id,\n userId: event.payload.user?.id,\n })\n\nconst _handleWorkflowUpdate = async (props: types.ServerProps, event: types.WorkflowUpdateEvent): Promise<Response> => {\n const updateType = bridgeUpdateTypeToSnakeCase(event.payload.type)\n const handlers = props.self.workflowHandlers[updateType]?.[event.payload.workflow.name]\n\n if (!handlers || handlers.length === 0) {\n props.logger.warn(`No ${updateType} handler found for workflow \"${event.payload.workflow.name}\"`)\n return SUCCESS_RESPONSE\n }\n\n const { updatedWorkflow } = await _dispatchToHandlers(props, event)\n\n if (updatedWorkflow.status === 'pending') {\n props.logger.warn(\n `Workflow \"${event.payload.workflow.name}\" is still in pending status after processing \"${updateType}\" event. ` +\n 'This may indicate that the workflow was not properly acknowledged or terminated by the handler. '\n )\n }\n\n return SUCCESS_RESPONSE\n}\n\ntype WorkflowState = types.WorkflowUpdateEventPayload['workflow']\n\nconst _dispatchToHandlers = async (\n props: types.ServerProps,\n event: types.WorkflowUpdateEvent\n): Promise<{ updatedWorkflow: WorkflowState }> => {\n const updateType = bridgeUpdateTypeToSnakeCase(event.payload.type)\n const handlers = props.self.workflowHandlers[updateType]?.[event.payload.workflow.name]\n\n let currentWorkflowState: WorkflowState = structuredClone(event.payload.workflow)\n\n for (const handler of handlers ?? []) {\n currentWorkflowState = await handler({\n ...props,\n event,\n conversation: event.payload.conversation,\n user: event.payload.user,\n workflow: currentWorkflowState,\n })\n }\n\n return { updatedWorkflow: currentWorkflowState }\n}\n", "import { PLUGIN_PREFIX_SEPARATOR } from '../consts'\n\nexport const unprefixTagsOwnedByPlugin = <T extends {} | { tags?: Record<string, string> }>(\n obj: T,\n { alias }: { alias?: string }\n): T => {\n if (!('tags' in obj) || !alias) {\n return obj\n }\n\n const prefix = `${alias}${PLUGIN_PREFIX_SEPARATOR}` as const\n\n const unprefixedTags = Object.fromEntries(\n Object.entries(obj.tags ?? {}).flatMap(([key, value]) =>\n key.startsWith(prefix) ? [[key.slice(prefix.length), value]] : []\n )\n )\n\n return {\n ...obj,\n tags: unprefixedTags,\n }\n}\n\nexport const prefixTagsIfNeeded = <T extends {} | { tags?: Record<string, string> }>(\n obj: T,\n { alias }: { alias?: string }\n): T => {\n if (!('tags' in obj) || !alias) {\n return obj\n }\n\n const prefix = `${alias}${PLUGIN_PREFIX_SEPARATOR}` as const\n\n const prefixedTags = Object.fromEntries(\n Object.entries(obj.tags ?? {}).map(([key, value]) => [key.startsWith(prefix) ? key : `${prefix}${key}`, value])\n )\n\n return {\n ...obj,\n tags: prefixedTags,\n }\n}\n", "type _PageLister<R> = (t: { nextToken?: string }) => Promise<{ items: R[]; meta: { nextToken?: string } }>\n\nclass AsyncCollection<T> implements AsyncIterableIterator<T> {\n private _nextToken?: string\n private _elementsBuffer: T[] = []\n private _isExhausted = false\n\n public constructor(private _list: _PageLister<T>) {}\n\n // Allows iterating with for-await-of loops:\n public [Symbol.asyncIterator](): AsyncIterableIterator<T> {\n return this\n }\n\n /**\n * Get the next element from the collection and advance the iterator.\n */\n public async next(): Promise<IteratorResult<T, undefined>> {\n if (this._bufferIsEmpty && !this._isExhausted) {\n await this._fetchNextPageIntoBuffer()\n }\n\n if (this._bufferIsEmpty) {\n return { done: true, value: undefined }\n }\n\n return { done: false, value: this._elementsBuffer.shift()! }\n }\n\n /**\n * Take the next n elements from the collection, advancing the iterator, and\n * return them as an array.\n */\n public async take(amount: number): Promise<T[]> {\n const arr: T[] = []\n for (let i = 0; i < amount; ++i) {\n const result = await this.next()\n if (result.done) {\n break\n }\n arr.push(result.value)\n }\n return arr\n }\n\n /**\n * Take the next n pages of elements from the collection, advancing the\n * iterator, and return the elements as an array.\n */\n public async takePage(amount: number): Promise<T[]> {\n for (let i = 0; i < amount; ++i) {\n if (!this._isExhausted) {\n await this._fetchNextPageIntoBuffer()\n }\n }\n\n const elements = [...this._elementsBuffer]\n this._elementsBuffer.length = 0\n\n return elements\n }\n\n /**\n * Take all remaining elements from in collection, moving the iterator to the\n * end, and return them as an array.\n */\n public async takeAll(): Promise<T[]> {\n return this.take(Number.POSITIVE_INFINITY)\n }\n\n /**\n * Returns true if there are no more elements to fetch in the collection.\n */\n public get isExhausted() {\n return this._isExhausted\n }\n\n private async _fetchNextPageIntoBuffer(): Promise<void> {\n const { items, meta } = await this._list({ nextToken: this._nextToken })\n\n this._elementsBuffer.push(...items)\n this._nextToken = meta.nextToken\n\n if (!meta.nextToken) {\n this._isExhausted = true\n }\n }\n\n private get _bufferIsEmpty(): boolean {\n return this._elementsBuffer.length === 0\n }\n}\n\nexport type { AsyncCollection }\nexport const createAsyncCollection = <T>(listFn: _PageLister<T>) => new AsyncCollection<T>(listFn)\n", "import type * as client from '@botpress/client'\nimport type { BotSpecificClient } from '../../bot'\nimport { prefixTagsIfNeeded, unprefixTagsOwnedByPlugin } from '../../plugin/tag-prefixer'\nimport { createAsyncCollection } from '../../utils/api-paging-utils'\nimport type * as typeUtils from '../../utils/type-utils'\nimport type { BaseBot } from '../common'\nimport * as botServerTypes from '../server/types'\nimport type { WorkflowProxy, ActionableWorkflow } from './types'\n\n// FIXME: Plugin (and bot) workflow definitions are currently being created on\n// the fly at run time. However, they should be part of the bot/plugin\n// definition. The SDK currently gives the illusion that they are defined\n// at deploy time, but in reality they are not. Nothing about the\n// workflows is sent to the backend at deploy time.\n//\n// This is being tracked as https://linear.app/botpress/issue/KKN-292\n//\n// Since currently each workflow definition is unique to a workflow run,\n// the tags are not prefixed by the plugin instance's alias. This is\n// because the backend's input validation prevents us from having a `#`\n// character in the workflow definition's tag definition. The plugin\n// prefix separator should only be present when we merge a plugin's\n// definitions into a bot (ie when installing a plugin in a bot). It\n// should not be allowed when calling the createWorkflow endpoint\n// directly, which is what the CLI currently does.\n//\n// Once we have proper deploy-time workflow definitions, we should\n// prefix/unprefix the tags like we do in the other plugin proxies.\n//\n// This means removing `undefined /* props.pluginAlias */` and replacing\n// it with `props.pluginAlias` in the calls to `prefixTagsIfNeeded()` and\n// `unprefixTagsOwnedByPlugin()`.\n\nexport const proxyWorkflows = <TBot extends BaseBot>(props: {\n client: BotSpecificClient<TBot> | client.Client\n pluginAlias?: string\n}): WorkflowProxy<TBot> =>\n new Proxy({} as WorkflowProxy<TBot>, {\n get: <TWorkflowName extends typeUtils.StringKeys<TBot['workflows']>>(_: unknown, workflowName: TWorkflowName) =>\n ({\n listInstances: (input) =>\n createAsyncCollection(({ nextToken }) =>\n props.client\n .listWorkflows({\n ...input,\n name: workflowName as typeUtils.Cast<TWorkflowName, string>,\n nextToken,\n })\n .then(({ meta, workflows }) => ({\n meta,\n items: workflows.map((workflow) => wrapWorkflowInstance<TBot, TWorkflowName>({ ...props, workflow })),\n }))\n ),\n startNewInstance: async (input) => {\n const { workflow } = await props.client.createWorkflow({\n name: workflowName as typeUtils.Cast<TWorkflowName, string>,\n status: 'pending',\n ...prefixTagsIfNeeded(input, { alias: undefined /* props.pluginAlias */ }),\n })\n return { workflow: wrapWorkflowInstance<TBot, TWorkflowName>({ ...props, workflow }) }\n },\n }) satisfies WorkflowProxy<TBot>[TWorkflowName],\n })\n\nexport const wrapWorkflowInstance = <\n TBot extends BaseBot,\n TWorkflowName extends typeUtils.StringKeys<TBot['workflows']>,\n>(props: {\n client: BotSpecificClient<TBot> | client.Client\n workflow: client.Workflow\n event?: botServerTypes.WorkflowUpdateEvent\n onWorkflowUpdate?: (newState: client.Workflow) => Promise<void> | void\n pluginAlias?: string\n}): ActionableWorkflow<TBot, TWorkflowName> => {\n let isAcknowledged = false\n\n return {\n ...(unprefixTagsOwnedByPlugin(props.workflow, { alias: undefined /* props.pluginAlias */ }) as ActionableWorkflow<\n TBot,\n TWorkflowName\n >),\n\n async update(x) {\n const { workflow } = await props.client.updateWorkflow({\n id: props.workflow.id,\n ...prefixTagsIfNeeded(x, { alias: undefined /* props.pluginAlias */ }),\n })\n await props.onWorkflowUpdate?.(workflow)\n\n return { workflow: wrapWorkflowInstance<TBot, TWorkflowName>({ ...props, workflow }) }\n },\n\n async acknowledgeStartOfProcessing() {\n if (!props.event || props.workflow.status !== 'pending' || isAcknowledged) {\n return {\n workflow: wrapWorkflowInstance<TBot, TWorkflowName>(props),\n }\n }\n\n const { workflow } = await props.client.updateWorkflow({\n id: props.workflow.id,\n status: 'in_progress',\n eventId: props.event.id,\n })\n isAcknowledged = true\n\n await props.onWorkflowUpdate?.(workflow)\n\n return { workflow: wrapWorkflowInstance<TBot, TWorkflowName>({ ...props, workflow }) }\n },\n\n async setFailed({ failureReason }) {\n const { workflow } = await props.client.updateWorkflow({\n id: props.workflow.id,\n status: 'failed',\n failureReason,\n })\n\n await props.onWorkflowUpdate?.(workflow)\n\n return { workflow: wrapWorkflowInstance<TBot, TWorkflowName>({ ...props, workflow }) }\n },\n\n async setCompleted({ output } = {}) {\n const { workflow } = await props.client.updateWorkflow({ id: props.workflow.id, status: 'completed', output })\n await props.onWorkflowUpdate?.(workflow)\n\n return { workflow: wrapWorkflowInstance<TBot, TWorkflowName>({ ...props, workflow }) }\n },\n\n async cancel() {\n const { workflow } = await props.client.updateWorkflow({ id: props.workflow.id, status: 'cancelled' })\n await props.onWorkflowUpdate?.(workflow)\n\n return { workflow: wrapWorkflowInstance<TBot, TWorkflowName>({ ...props, workflow }) }\n },\n }\n}\n", "import { Workflow } from '@botpress/client'\nimport type { Server } from 'node:http'\nimport { PLUGIN_PREFIX_SEPARATOR } from '../consts'\nimport { BasePlugin, PluginImplementation } from '../plugin'\nimport { serve } from '../serve'\nimport * as utils from '../utils'\nimport { BaseBot } from './common'\nimport {\n botHandler,\n ActionHandlers,\n MessageHandlers,\n EventHandlers,\n StateExpiredHandlers,\n HookHandlers,\n WorkflowHandlers,\n MessageHandlersMap,\n EventHandlersMap,\n StateExpiredHandlersMap,\n HookHandlersMap,\n WorkflowHandlersMap,\n OrderedMessageHandlersMap,\n OrderedEventHandlersMap,\n OrderedStateExpiredHandlersMap,\n OrderedHookHandlersMap,\n OrderedWorkflowHandlersMap,\n BotHandlers,\n UnimplementedActionHandlers,\n WorkflowUpdateType,\n InjectedHandlerProps,\n InjectedBotHandlers,\n} from './server'\nimport { proxyWorkflows, wrapWorkflowInstance } from './workflow-proxy'\n\nexport type BotImplementationProps<TBot extends BaseBot = BaseBot, TPlugins extends Record<string, BasePlugin> = {}> = {\n actions: UnimplementedActionHandlers<TBot, TPlugins>\n plugins: {\n [K in utils.types.StringKeys<TPlugins>]: PluginImplementation<TPlugins[K]>\n }\n}\n\nexport class BotImplementation<TBot extends BaseBot = BaseBot, TPlugins extends Record<string, BasePlugin> = {}>\n implements InjectedBotHandlers<TBot>\n{\n private _actionHandlers: ActionHandlers<any>\n private _messageHandlers: OrderedMessageHandlersMap<any> = {}\n private _eventHandlers: OrderedEventHandlersMap<any> = {}\n private _stateExpiredHandlers: OrderedStateExpiredHandlersMap<any> = {}\n private _hookHandlers: OrderedHookHandlersMap<any> = {\n before_incoming_event: {},\n before_incoming_message: {},\n before_outgoing_message: {},\n before_outgoing_call_action: {},\n before_incoming_call_action: {},\n after_incoming_event: {},\n after_incoming_message: {},\n after_outgoing_message: {},\n after_outgoing_call_action: {},\n after_incoming_call_action: {},\n }\n private _workflowHandlers: OrderedWorkflowHandlersMap<any> = {\n started: {},\n continued: {},\n timed_out: {},\n }\n\n private _plugins: Record<string, PluginImplementation<any>> = {}\n\n private _registerOrder: number = 0\n\n public constructor(public readonly props: BotImplementationProps<TBot, TPlugins>) {\n this._actionHandlers = props.actions as ActionHandlers<TBot>\n this._plugins = props.plugins\n }\n\n public get actionHandlers(): InjectedBotHandlers<TBot>['actionHandlers'] {\n return new Proxy(\n {},\n {\n get: (_, actionName: string) => {\n const action = this._actionHandlers[actionName]\n if (action) {\n return utils.functions.setName(\n (props: Omit<Parameters<typeof action>[0], keyof InjectedHandlerProps<TBot>>) =>\n action({ ...props, workflows: proxyWorkflows(props) }),\n action.name\n )\n }\n\n for (const [pluginAlias, plugin] of Object.entries(this._plugins)) {\n const [actionPrefix, nameWithoutPrefix] = actionName.split(PLUGIN_PREFIX_SEPARATOR)\n if (actionPrefix !== pluginAlias || !nameWithoutPrefix) {\n continue\n }\n return plugin.actionHandlers[nameWithoutPrefix]\n }\n\n return undefined\n },\n }\n ) as InjectedBotHandlers<TBot>['actionHandlers']\n }\n\n public get messageHandlers(): InjectedBotHandlers<TBot>['messageHandlers'] {\n return new Proxy(\n {},\n {\n /** returns both the message handlers for the target type but global as well */\n get: (_, messageName: string) => {\n const pluginHandlers = Object.values(this._plugins).flatMap(\n (plugin) => plugin.messageHandlers[messageName] ?? []\n )\n const selfSpecificHandlers = messageName === '*' ? [] : (this._messageHandlers[messageName] ?? [])\n const selfGlobalHandlers = this._messageHandlers['*'] ?? []\n const selfHandlers = [...selfSpecificHandlers, ...selfGlobalHandlers]\n .sort((a, b) => a.order - b.order)\n .map(({ handler }) =>\n utils.functions.setName(\n (props: Omit<Parameters<typeof handler>[0], keyof InjectedHandlerProps<TBot>>) =>\n handler({ ...props, workflows: proxyWorkflows(props) }),\n handler.name\n )\n )\n\n return utils.arrays.unique([...pluginHandlers, ...selfHandlers])\n },\n }\n ) as InjectedBotHandlers<TBot>['messageHandlers']\n }\n\n public get eventHandlers(): InjectedBotHandlers<TBot>['eventHandlers'] {\n return new Proxy(\n {},\n {\n /** returns both the event handlers for the target type but global as well */\n get: (_, eventName: string) => {\n const pluginHandlers = Object.values(this._plugins).flatMap((plugin) => plugin.eventHandlers[eventName] ?? [])\n\n const selfSpecificHandlers = eventName === '*' ? [] : (this._eventHandlers[eventName] ?? [])\n const selfGlobalHandlers = this._eventHandlers['*'] ?? []\n const selfHandlers = [...selfSpecificHandlers, ...selfGlobalHandlers]\n .sort((a, b) => a.order - b.order)\n .map(({ handler }) =>\n utils.functions.setName(\n (props: Omit<Parameters<typeof handler>[0], keyof InjectedHandlerProps<TBot>>) =>\n handler({ ...props, workflows: proxyWorkflows(props) }),\n handler.name\n )\n )\n\n return utils.arrays.unique([...pluginHandlers, ...selfHandlers])\n },\n }\n ) as InjectedBotHandlers<TBot>['eventHandlers']\n }\n\n public get stateExpiredHandlers(): InjectedBotHandlers<TBot>['stateExpiredHandlers'] {\n return new Proxy(\n {},\n {\n /** returns both the state expired handlers for the target type but global as well */\n get: (_, stateName: string) => {\n const pluginHandlers = Object.values(this._plugins).flatMap(\n (plugin) => plugin.stateExpiredHandlers[stateName] ?? []\n )\n\n const selfSpecificHandlers = stateName === '*' ? [] : (this._stateExpiredHandlers[stateName] ?? [])\n const selfGlobalHandlers = this._stateExpiredHandlers['*'] ?? []\n const selfHandlers = [...selfSpecificHandlers, ...selfGlobalHandlers]\n .sort((a, b) => a.order - b.order)\n .map(({ handler }) =>\n utils.functions.setName(\n (props: Omit<Parameters<typeof handler>[0], keyof InjectedHandlerProps<TBot>>) =>\n handler({ ...props, workflows: proxyWorkflows(props) }),\n handler.name\n )\n )\n\n return utils.arrays.unique([...pluginHandlers, ...selfHandlers])\n },\n }\n ) as InjectedBotHandlers<TBot>['stateExpiredHandlers']\n }\n\n public get hookHandlers(): InjectedBotHandlers<TBot>['hookHandlers'] {\n return new Proxy(\n {},\n {\n get: (_, hookType: utils.types.StringKeys<HookHandlersMap<TBot>>) => {\n const hooks = this._hookHandlers[hookType]\n if (!hooks) {\n return undefined\n }\n\n return new Proxy(\n {},\n {\n get: (_, hookDataName: string) => {\n const pluginHandlers = Object.values(this._plugins).flatMap(\n (plugin) => (plugin.hookHandlers[hookType]?.[hookDataName] ?? []) as typeof selfHandlers\n )\n\n const selfHooks = this._hookHandlers[hookType] ?? {}\n const selfSpecificHandlers = hookDataName === '*' ? [] : (selfHooks[hookDataName] ?? [])\n const selfGlobalHandlers = selfHooks['*'] ?? []\n const selfHandlers = [...selfSpecificHandlers, ...selfGlobalHandlers]\n .sort((a, b) => a.order - b.order)\n .map(({ handler }) =>\n utils.functions.setName(\n (props: any) => handler({ ...props, workflows: proxyWorkflows(props) }),\n handler.name\n )\n )\n\n return utils.arrays.unique([...pluginHandlers, ...selfHandlers])\n },\n }\n )\n },\n }\n ) as InjectedBotHandlers<TBot>['hookHandlers']\n }\n\n public get workflowHandlers(): InjectedBotHandlers<TBot>['workflowHandlers'] {\n return new Proxy(\n {},\n {\n get: (_, updateType: WorkflowUpdateType) => {\n const handlersOfType = this._workflowHandlers[updateType]\n if (!handlersOfType) {\n return undefined\n }\n\n return new Proxy(\n {},\n {\n get: (_, workflowName: string) => {\n const selfHandlers =\n handlersOfType[workflowName]\n ?.sort((a, b) => a.order - b.order)\n .map(({ handler }) =>\n utils.functions.setName(\n async (props: Omit<Parameters<typeof handler>[0], keyof InjectedHandlerProps<TBot>>) => {\n let currentWorkflowState: Workflow = props.workflow\n await handler({\n ...props,\n workflow: wrapWorkflowInstance({\n ...props,\n onWorkflowUpdate(newState) {\n currentWorkflowState = newState\n },\n }),\n workflows: proxyWorkflows(props),\n })\n return currentWorkflowState\n },\n handler.name\n )\n ) ?? []\n\n const pluginHandlers = Object.values(this._plugins).flatMap(\n (plugin) => plugin.workflowHandlers[updateType]?.[workflowName] ?? []\n )\n\n return utils.arrays.unique([...selfHandlers, ...pluginHandlers])\n },\n }\n )\n },\n }\n ) as InjectedBotHandlers<TBot>['workflowHandlers']\n }\n\n public readonly on = {\n message: <T extends utils.types.StringKeys<MessageHandlersMap<TBot>>>(\n type: T,\n handler: MessageHandlers<TBot>[T]\n ): void => {\n this._messageHandlers[type] = utils.arrays.safePush(this._messageHandlers[type], {\n handler: handler as MessageHandlers<any>[string],\n order: this._registerOrder++,\n })\n },\n\n event: <T extends utils.types.StringKeys<EventHandlersMap<TBot>>>(\n type: T,\n handler: EventHandlers<TBot>[T]\n ): void => {\n this._eventHandlers[type] = utils.arrays.safePush(this._eventHandlers[type], {\n handler: handler as EventHandlers<any>[string],\n order: this._registerOrder++,\n })\n },\n stateExpired: <T extends utils.types.StringKeys<StateExpiredHandlersMap<TBot>>>(\n type: T,\n handler: StateExpiredHandlers<TBot>[T]\n ): void => {\n this._stateExpiredHandlers[type] = utils.arrays.safePush(this._stateExpiredHandlers[type], {\n handler: handler as StateExpiredHandlers<any>[string],\n order: this._registerOrder++,\n })\n },\n beforeIncomingEvent: <T extends utils.types.StringKeys<HookHandlersMap<TBot>['before_incoming_event']>>(\n type: T,\n handler: HookHandlers<TBot>['before_incoming_event'][T]\n ) => {\n this._hookHandlers.before_incoming_event[type] = utils.arrays.safePush(\n this._hookHandlers.before_incoming_event[type],\n { handler: handler as HookHandlers<any>['before_incoming_event'][string], order: this._registerOrder++ }\n )\n },\n beforeIncomingMessage: <T extends utils.types.StringKeys<HookHandlersMap<TBot>['before_incoming_message']>>(\n type: T,\n handler: HookHandlers<TBot>['before_incoming_message'][T]\n ) => {\n this._hookHandlers.before_incoming_message[type] = utils.arrays.safePush(\n this._hookHandlers.before_incoming_message[type],\n { handler: handler as HookHandlers<any>['before_incoming_message'][string], order: this._registerOrder++ }\n )\n },\n beforeOutgoingMessage: <T extends utils.types.StringKeys<HookHandlersMap<TBot>['before_outgoing_message']>>(\n type: T,\n handler: HookHandlers<TBot>['before_outgoing_message'][T]\n ) => {\n this._hookHandlers.before_outgoing_message[type] = utils.arrays.safePush(\n this._hookHandlers.before_outgoing_message[type],\n { handler: handler as HookHandlers<any>['before_outgoing_message'][string], order: this._registerOrder++ }\n )\n },\n beforeOutgoingCallAction: <T extends utils.types.StringKeys<HookHandlersMap<TBot>['before_outgoing_call_action']>>(\n type: T,\n handler: HookHandlers<TBot>['before_outgoing_call_action'][T]\n ) => {\n this._hookHandlers.before_outgoing_call_action[type] = utils.arrays.safePush(\n this._hookHandlers.before_outgoing_call_action[type],\n { handler: handler as HookHandlers<any>['before_outgoing_call_action'][string], order: this._registerOrder++ }\n )\n },\n /**\n * # EXPERIMENTAL\n * This API is experimental and may change in the future.\n */\n beforeIncomingCallAction: <T extends utils.types.StringKeys<HookHandlersMap<TBot>['before_incoming_call_action']>>(\n type: T,\n handler: HookHandlers<TBot>['before_incoming_call_action'][T]\n ) => {\n this._hookHandlers.before_incoming_call_action[type] = utils.arrays.safePush(\n this._hookHandlers.before_incoming_call_action[type],\n { handler: handler as HookHandlers<any>['before_incoming_call_action'][string], order: this._registerOrder++ }\n )\n },\n afterIncomingEvent: <T extends utils.types.StringKeys<HookHandlersMap<TBot>['after_incoming_event']>>(\n type: T,\n handler: HookHandlers<TBot>['after_incoming_event'][T]\n ) => {\n this._hookHandlers.after_incoming_event[type] = utils.arrays.safePush(\n this._hookHandlers.after_incoming_event[type],\n { handler: handler as HookHandlers<any>['after_incoming_event'][string], order: this._registerOrder++ }\n )\n },\n afterIncomingMessage: <T extends utils.types.StringKeys<HookHandlersMap<TBot>['after_incoming_message']>>(\n type: T,\n handler: HookHandlers<TBot>['after_incoming_message'][T]\n ) => {\n this._hookHandlers.after_incoming_message[type] = utils.arrays.safePush(\n this._hookHandlers.after_incoming_message[type],\n { handler: handler as HookHandlers<any>['after_incoming_message'][string], order: this._registerOrder++ }\n )\n },\n afterOutgoingMessage: <T extends utils.types.StringKeys<HookHandlersMap<TBot>['after_outgoing_message']>>(\n type: T,\n handler: HookHandlers<TBot>['after_outgoing_message'][T]\n ) => {\n this._hookHandlers.after_outgoing_message[type] = utils.arrays.safePush(\n this._hookHandlers.after_outgoing_message[type],\n { handler: handler as HookHandlers<any>['after_outgoing_message'][string], order: this._registerOrder++ }\n )\n },\n afterOutgoingCallAction: <T extends utils.types.StringKeys<HookHandlersMap<TBot>['after_outgoing_call_action']>>(\n type: T,\n handler: HookHandlers<TBot>['after_outgoing_call_action'][T]\n ) => {\n this._hookHandlers.after_outgoing_call_action[type] = utils.arrays.safePush(\n this._hookHandlers.after_outgoing_call_action[type],\n { handler: handler as HookHandlers<any>['after_outgoing_call_action'][string], order: this._registerOrder++ }\n )\n },\n\n /**\n * # EXPERIMENTAL\n * This API is experimental and may change in the future.\n */\n afterIncomingCallAction: <T extends utils.types.StringKeys<HookHandlersMap<TBot>['after_incoming_call_action']>>(\n type: T,\n handler: HookHandlers<TBot>['after_incoming_call_action'][T]\n ) => {\n this._hookHandlers.after_incoming_call_action[type] = utils.arrays.safePush(\n this._hookHandlers.after_incoming_call_action[type],\n { handler: handler as HookHandlers<any>['after_incoming_call_action'][string], order: this._registerOrder++ }\n )\n },\n\n /**\n * # EXPERIMENTAL\n * This API is experimental and may change in the future.\n */\n workflowStart: <T extends utils.types.StringKeys<WorkflowHandlersMap<TBot>['started']>>(\n type: T,\n handler: WorkflowHandlers<TBot>[T]\n ): void => {\n this._workflowHandlers.started[type] = utils.arrays.safePush(this._workflowHandlers.started[type], {\n handler: handler as WorkflowHandlers<any>[string],\n order: this._registerOrder++,\n })\n },\n\n /**\n * # EXPERIMENTAL\n * This API is experimental and may change in the future.\n */\n workflowContinue: <T extends utils.types.StringKeys<WorkflowHandlersMap<TBot>['continued']>>(\n type: T,\n handler: WorkflowHandlers<TBot>[T]\n ): void => {\n this._workflowHandlers.continued[type] = utils.arrays.safePush(this._workflowHandlers.continued[type], {\n handler: handler as WorkflowHandlers<any>[string],\n order: this._registerOrder++,\n })\n },\n\n /**\n * # EXPERIMENTAL\n * This API is experimental and may change in the future.\n */\n workflowTimeout: <T extends utils.types.StringKeys<WorkflowHandlersMap<TBot>['timed_out']>>(\n type: T,\n handler: WorkflowHandlers<TBot>[T]\n ): void => {\n this._workflowHandlers.timed_out[type] = utils.arrays.safePush(this._workflowHandlers.timed_out[type], {\n handler: handler as WorkflowHandlers<any>[string],\n order: this._registerOrder++,\n })\n },\n }\n\n public readonly handler = botHandler(this as unknown as BotHandlers<any>)\n\n public readonly start = (port?: number): Promise<Server> => serve(this.handler, port)\n}\n", "import { ActionDefinition, ChannelDefinition, EntityDefinition, EventDefinition } from '../integration/definition'\nimport * as utils from '../utils'\nimport { SDK_VERSION } from '../version'\nimport z, { ZuiObjectSchema, GenericZuiSchema, ZodRef } from '../zui'\n\ntype BaseEvents = Record<string, ZuiObjectSchema>\ntype BaseActions = Record<string, ZuiObjectSchema>\ntype BaseMessages = Record<string, ZuiObjectSchema>\ntype BaseChannels = Record<string, BaseMessages>\ntype BaseEntities = Record<string, ZuiObjectSchema>\n\ntype EntityReferences<TEntities extends BaseEntities> = {\n [K in keyof TEntities]: ZodRef\n}\n\ntype GenericEventDefinition<TEntities extends BaseEntities, TEvent extends BaseEvents[string] = BaseEvents[string]> = {\n schema: GenericZuiSchema<EntityReferences<TEntities>, TEvent>\n attributes?: Record<string, string>\n}\n\ntype GenericChannelDefinition<\n TEntities extends BaseEntities,\n TChannel extends BaseChannels[string] = BaseChannels[string],\n> = {\n messages: {\n [K in keyof TChannel]: {\n schema: GenericZuiSchema<EntityReferences<TEntities>, TChannel[K]>\n }\n }\n}\n\ntype GenericActionDefinition<\n TEntities extends BaseEntities,\n TAction extends BaseActions[string] = BaseActions[string],\n> = {\n title?: string\n description?: string\n billable?: boolean\n cacheable?: boolean\n input: { schema: GenericZuiSchema<EntityReferences<TEntities>, TAction> }\n output: { schema: GenericZuiSchema<EntityReferences<TEntities>, ZuiObjectSchema> }\n attributes?: Record<string, string>\n}\n\nexport type InterfaceDefinitionProps<\n TName extends string = string,\n TVersion extends string = string,\n TEntities extends BaseEntities = BaseEntities,\n TActions extends BaseActions = BaseActions,\n TEvents extends BaseEntities = BaseEntities,\n TChannels extends BaseChannels = BaseChannels,\n> = {\n name: TName\n version: TVersion\n\n title?: string\n description?: string\n icon?: string\n readme?: string\n\n attributes?: Record<string, string>\n\n entities?: {\n [K in keyof TEntities]: EntityDefinition<TEntities[K]>\n }\n\n events?: { [K in keyof TEvents]: GenericEventDefinition<TEntities, TEvents[K]> }\n\n actions?: {\n [K in keyof TActions]: GenericActionDefinition<TEntities, TActions[K]>\n }\n\n channels?: {\n [K in keyof TChannels]: GenericChannelDefinition<TEntities, TChannels[K]>\n }\n\n __advanced?: {\n useLegacyZuiTransformer?: boolean\n }\n}\n\nexport class InterfaceDefinition<\n TName extends string = string,\n TVersion extends string = string,\n TEntities extends BaseEntities = BaseEntities,\n TActions extends BaseActions = BaseActions,\n TEvents extends BaseEvents = BaseEvents,\n TChannels extends BaseChannels = BaseChannels,\n> {\n public readonly name: this['props']['name']\n public readonly version: this['props']['version']\n\n public readonly title: this['props']['title']\n public readonly description: this['props']['description']\n public readonly icon: this['props']['icon']\n public readonly readme: this['props']['readme']\n public readonly attributes: this['props']['attributes']\n\n public readonly entities: { [K in keyof TEntities]: EntityDefinition<TEntities[K]> }\n public readonly events: { [K in keyof TEvents]: EventDefinition<TEvents[K]> }\n public readonly actions: { [K in keyof TActions]: ActionDefinition<TActions[K]> }\n public readonly channels: { [K in keyof TChannels]: ChannelDefinition<TChannels[K]> }\n\n public readonly __advanced: this['props']['__advanced']\n\n public constructor(\n public readonly props: InterfaceDefinitionProps<TName, TVersion, TEntities, TActions, TEvents, TChannels>\n ) {\n this.name = props.name\n this.version = props.version\n this.icon = props.icon\n this.title = props.title\n this.description = props.description\n this.readme = props.readme\n this.entities = props.entities ?? ({} as this['entities'])\n this.attributes = props.attributes\n this.__advanced = props.__advanced\n\n const entityReferences = this._getEntityReference(this.entities)\n\n const events: Record<string, EventDefinition> =\n props.events === undefined\n ? {}\n : utils.records.mapValues(\n props.events,\n (event): EventDefinition => ({\n ...event,\n schema: event.schema(entityReferences),\n })\n )\n\n const actions: Record<string, ActionDefinition> =\n props.actions === undefined\n ? {}\n : utils.records.mapValues(\n props.actions,\n (action): ActionDefinition => ({\n ...action,\n input: {\n ...action.input,\n schema: action.input.schema(entityReferences),\n },\n output: {\n ...action.output,\n schema: action.output.schema(entityReferences),\n },\n })\n )\n\n const channels: Record<string, ChannelDefinition> =\n props.channels === undefined\n ? {}\n : utils.records.mapValues(\n props.channels,\n (channel): ChannelDefinition => ({\n ...channel,\n messages: utils.records.mapValues(channel.messages, (message) => ({\n ...message,\n schema: message.schema(entityReferences),\n })),\n })\n )\n\n this.events = events as this['events']\n this.actions = actions as this['actions']\n this.channels = channels as this['channels']\n }\n\n public get metadata() {\n return { sdkVersion: SDK_VERSION } as const\n }\n\n private _getEntityReference = (entities: Record<string, EntityDefinition>): EntityReferences<TEntities> => {\n const entityReferences: Record<string, ZodRef> = {} as EntityReferences<TEntities>\n for (const [entityName, entityDef] of Object.entries(entities)) {\n const title = entityDef.schema._def['x-zui']?.title\n const description = entityDef.schema._def.description\n\n const refSchema = z.ref(entityName)\n if (title) {\n refSchema.title(title)\n }\n if (description) {\n refSchema.describe(description)\n }\n\n entityReferences[entityName] = refSchema\n }\n return entityReferences as EntityReferences<TEntities>\n }\n}\n", "import {\n StateDefinition as BotStateDefinition,\n EventDefinition as BotEventDefinition,\n ConfigurationDefinition as BotConfigurationDefinition,\n UserDefinition,\n ConversationDefinition,\n MessageDefinition,\n ActionDefinition as BotActionDefinition,\n TableDefinition as BotTableDefinition,\n WorkflowDefinition,\n} from '../bot/definition'\nimport { IntegrationPackage, InterfacePackage } from '../package'\nimport * as typeUtils from '../utils/type-utils'\nimport { SDK_VERSION } from '../version'\nimport { ZuiObjectSchema, ZuiObjectOrRefSchema, z } from '../zui'\n\nexport { UserDefinition, ConversationDefinition, MessageDefinition, WorkflowDefinition } from '../bot/definition'\n\ntype BaseConfig = ZuiObjectOrRefSchema\ntype BaseStates = Record<string, ZuiObjectOrRefSchema>\ntype BaseEvents = Record<string, ZuiObjectOrRefSchema>\ntype BaseActions = Record<string, ZuiObjectOrRefSchema>\ntype BaseInterfaces = Record<string, InterfacePackage>\ntype BaseIntegrations = Record<string, IntegrationPackage>\ntype BaseTables = Record<string, ZuiObjectOrRefSchema>\ntype BaseWorkflows = Record<string, ZuiObjectSchema>\n\nexport type TableDefinition<TTable extends BaseTables[string] = BaseTables[string]> = typeUtils.Merge<\n BotTableDefinition,\n {\n schema: TTable\n }\n>\n\nexport type ConfigurationDefinition<TConfig extends BaseConfig = BaseConfig> = typeUtils.Merge<\n BotConfigurationDefinition,\n {\n schema: TConfig\n }\n>\n\nexport type StateDefinition<TState extends BaseStates[string] = BaseStates[string]> = typeUtils.Merge<\n BotStateDefinition,\n {\n schema: TState\n }\n>\n\nexport type EventDefinition<TEvent extends BaseEvents[string] = BaseEvents[string]> = typeUtils.Merge<\n BotEventDefinition,\n {\n schema: TEvent\n }\n>\n\nexport type ActionDefinition<TAction extends BaseActions[string] = BaseActions[string]> = typeUtils.Merge<\n BotActionDefinition,\n {\n input: { schema: TAction }\n output: { schema: ZuiObjectOrRefSchema }\n }\n>\n\nexport type RecurringEventDefinition<TEvents extends BaseEvents = BaseEvents> = {\n [K in keyof TEvents]: {\n type: K\n payload: z.infer<TEvents[K]>\n schedule: {\n cron: string\n }\n }\n}[keyof TEvents]\n\nexport type ZuiSchemaWithEntityReferences<\n TInterfaces extends BaseInterfaces,\n TReturnType extends ZuiObjectOrRefSchema,\n> =\n | ((props: {\n entities: {\n [TInterfaceAlias in keyof TInterfaces]: {\n [TEntityName in keyof TInterfaces[TInterfaceAlias]['definition']['entities']]: z.ZodRef\n }\n }\n }) => TReturnType)\n | TReturnType\n\ntype GenericDefinition<\n TInterfaces extends BaseInterfaces,\n TDefinition extends { schema: ZuiObjectOrRefSchema },\n> = typeUtils.Merge<\n TDefinition,\n {\n schema: ZuiSchemaWithEntityReferences<TInterfaces, TDefinition['schema']>\n }\n>\n\ntype GenericNestedDefinition<\n TInterfaces extends BaseInterfaces,\n TDefinition extends { [k: string]: any },\n TKeys extends string,\n> = Omit<TDefinition, TKeys> & {\n [TKey in TKeys]: Omit<TDefinition[TKey], 'schema'> & {\n schema: ZuiSchemaWithEntityReferences<TInterfaces, TDefinition[TKey]['schema']>\n }\n}\n\nexport type PluginDefinitionProps<\n TName extends string = string,\n TVersion extends string = string,\n TConfig extends BaseConfig = BaseConfig,\n TStates extends BaseStates = BaseStates,\n TEvents extends BaseEvents = BaseEvents,\n TActions extends BaseActions = BaseActions,\n TInterfaces extends BaseInterfaces = BaseInterfaces,\n TIntegrations extends BaseIntegrations = BaseIntegrations,\n TTables extends BaseTables = BaseTables,\n TWorkflows extends BaseWorkflows = BaseWorkflows,\n> = {\n name: TName\n version: TVersion\n\n title?: string\n description?: string\n icon?: string\n readme?: string\n\n attributes?: Record<string, string>\n\n integrations?: TIntegrations\n interfaces?: TInterfaces\n user?: UserDefinition\n conversation?: ConversationDefinition\n message?: MessageDefinition\n states?: {\n [K in keyof TStates]: GenericDefinition<TInterfaces, StateDefinition<TStates[K]>>\n }\n configuration?: GenericDefinition<TInterfaces, ConfigurationDefinition<TConfig>>\n events?: {\n [K in keyof TEvents]: GenericDefinition<TInterfaces, EventDefinition<TEvents[K]>>\n }\n recurringEvents?: Record<string, RecurringEventDefinition<TEvents>>\n actions?: {\n [K in keyof TActions]: GenericNestedDefinition<TInterfaces, ActionDefinition<TActions[K]>, 'input' | 'output'>\n }\n tables?: {\n [K in keyof TTables]: GenericDefinition<TInterfaces, TableDefinition<TTables[K]>>\n }\n\n /**\n * # EXPERIMENTAL\n * This API is experimental and may change in the future.\n */\n workflows?: {\n [K in keyof TWorkflows]: WorkflowDefinition<TWorkflows[K]>\n }\n\n __advanced?: {\n useLegacyZuiTransformer?: boolean\n }\n}\n\nexport class PluginDefinition<\n TName extends string = string,\n TVersion extends string = string,\n TConfig extends BaseConfig = BaseConfig,\n TStates extends BaseStates = BaseStates,\n TEvents extends BaseEvents = BaseEvents,\n TActions extends BaseActions = BaseActions,\n TInterfaces extends BaseInterfaces = BaseInterfaces,\n TIntegrations extends BaseIntegrations = BaseIntegrations,\n TTables extends BaseTables = BaseTables,\n TWorkflows extends BaseWorkflows = BaseWorkflows,\n> {\n public readonly name: this['props']['name']\n public readonly version: this['props']['version']\n\n public readonly title: this['props']['title']\n public readonly description: this['props']['description']\n public readonly icon: this['props']['icon']\n public readonly readme: this['props']['readme']\n\n public readonly attributes: this['props']['attributes']\n\n public readonly integrations: this['props']['integrations']\n public readonly interfaces: this['props']['interfaces']\n\n public readonly user: this['props']['user']\n public readonly conversation: this['props']['conversation']\n public readonly message: this['props']['message']\n public readonly states: {\n [K in keyof TStates]: StateDefinition<TStates[K]>\n }\n public readonly configuration?: ConfigurationDefinition<TConfig>\n public readonly events: {\n [K in keyof TEvents]: EventDefinition<TEvents[K]>\n }\n public readonly recurringEvents: this['props']['recurringEvents']\n public readonly actions: {\n [K in keyof TActions]: ActionDefinition<TActions[K]>\n }\n public readonly tables: {\n [K in keyof TTables]: TableDefinition<TTables[K]>\n }\n public readonly workflows: this['props']['workflows']\n public readonly __advanced: this['props']['__advanced']\n\n public constructor(\n public readonly props: PluginDefinitionProps<\n TName,\n TVersion,\n TConfig,\n TStates,\n TEvents,\n TActions,\n TInterfaces,\n TIntegrations,\n TTables,\n TWorkflows\n >\n ) {\n // entities.<interfaceAlias>.<entityName> -> ZodRef\n const entities = Object.fromEntries(\n Object.entries(props.interfaces ?? {}).map(([interfaceAlias, interfaceDef]) => [\n interfaceAlias,\n Object.fromEntries(\n Object.entries(interfaceDef.definition.entities ?? {}).map(([entityName]) => [\n entityName,\n z.ref(`interface:${interfaceAlias}/entities/${entityName}`),\n ])\n ),\n ])\n ) as {\n [TInterfaceAlias in keyof TInterfaces]: {\n [TEntityName in keyof TInterfaces[TInterfaceAlias]['definition']['entities']]: z.ZodRef\n }\n }\n\n this.name = props.name\n this.version = props.version\n this.icon = props.icon\n this.readme = props.readme\n this.title = props.title\n this.description = props.description\n this.integrations = props.integrations\n this.interfaces = props.interfaces\n this.user = props.user\n this.conversation = props.conversation\n this.message = props.message\n this.recurringEvents = props.recurringEvents\n this.workflows = props.workflows\n this.attributes = props.attributes\n this.__advanced = props.__advanced\n\n const aliases = new Set<string>()\n\n for (const alias of [...Object.keys(props.integrations ?? {}), ...Object.keys(props.interfaces ?? {})]) {\n if (aliases.has(alias)) {\n throw new Error(\n `Duplicate interface or integration alias detected in plugin definition: '${alias}'. ` +\n 'Please use unique aliases for each interface and integration.'\n )\n }\n aliases.add(alias)\n }\n\n this.configuration = props.configuration\n ? {\n ...props.configuration,\n schema:\n typeof props.configuration.schema === 'object'\n ? props.configuration.schema\n : props.configuration.schema({ entities }),\n }\n : undefined\n\n this.states = Object.fromEntries(\n Object.entries(props.states ?? {}).map(\n ([stateName, stateDef]: [keyof TStates, NonNullable<(typeof props)['states']>[keyof TStates]]) => [\n stateName,\n {\n ...stateDef,\n schema: typeof stateDef.schema === 'object' ? stateDef.schema : stateDef.schema({ entities }),\n } as StateDefinition<TStates[keyof TStates]>,\n ]\n )\n ) as { [K in keyof TStates]: StateDefinition<TStates[K]> }\n\n this.events = Object.fromEntries(\n Object.entries(props.events ?? {}).map(\n ([eventName, eventDef]: [keyof TEvents, NonNullable<(typeof props)['events']>[keyof TEvents]]) => [\n eventName,\n {\n ...eventDef,\n schema: typeof eventDef.schema === 'object' ? eventDef.schema : eventDef.schema({ entities }),\n } as EventDefinition<TEvents[keyof TEvents]>,\n ]\n )\n ) as { [K in keyof TEvents]: EventDefinition<TEvents[K]> }\n\n this.actions = Object.fromEntries(\n Object.entries(props.actions ?? {}).map(\n ([actionName, actionDef]: [keyof TActions, NonNullable<(typeof props)['actions']>[keyof TActions]]) => [\n actionName,\n {\n ...actionDef,\n input: {\n ...actionDef.input,\n schema:\n typeof actionDef.input.schema === 'object'\n ? actionDef.input.schema\n : actionDef.input.schema({ entities }),\n },\n output: {\n ...actionDef.output,\n schema:\n typeof actionDef.output.schema === 'object'\n ? actionDef.output.schema\n : actionDef.output.schema({ entities }),\n },\n } as ActionDefinition<TActions[keyof TActions]>,\n ]\n )\n ) as { [K in keyof TActions]: ActionDefinition<TActions[K]> }\n\n this.tables = Object.fromEntries(\n Object.entries(props.tables ?? {}).map(\n ([tableName, tableDef]: [keyof TTables, NonNullable<(typeof props)['tables']>[keyof TTables]]) => [\n tableName,\n {\n ...tableDef,\n schema: typeof tableDef.schema === 'object' ? tableDef.schema : tableDef.schema({ entities }),\n } as TableDefinition<TTables[keyof TTables]>,\n ]\n )\n ) as { [K in keyof TTables]: TableDefinition<TTables[K]> }\n }\n\n public get metadata() {\n return { sdkVersion: SDK_VERSION } as const\n }\n\n /**\n * Returns a copy of the plugin definition where all entity references are\n * resolved to the base entity schema defined by the interface. This does not\n * include any additional properties that may be added to the entity by the\n * backing integration.\n *\n * If `intersectWithUnknownRecord` is `true` (default), the entity schemas\n * will be intersected with `z.record(z.string(), z.unknown())` to make it\n * explicit that the backing integration may have added additional properties.\n */\n public dereferenceEntities(\n { intersectWithUnknownRecord }: { intersectWithUnknownRecord?: boolean } = {\n intersectWithUnknownRecord: true,\n }\n ): this {\n const zuiReferenceMap = this._buildZuiReferenceMap(intersectWithUnknownRecord)\n\n return {\n ...this,\n configuration: this.configuration\n ? {\n ...this.configuration,\n schema: this._dereferenceZuiSchema(this.configuration.schema, zuiReferenceMap),\n }\n : undefined,\n events: this._dereferenceDefinitionSchemas(this.events, zuiReferenceMap),\n states: this._dereferenceDefinitionSchemas(this.states, zuiReferenceMap),\n tables: this._dereferenceDefinitionSchemas(this.tables, zuiReferenceMap),\n actions: this._dereferenceActionDefinitionSchemas(this.actions, zuiReferenceMap),\n } as typeof this\n }\n\n private _buildZuiReferenceMap(intersectWithUnknownRecord?: boolean): Record<string, z.ZodTypeAny> {\n return Object.fromEntries(\n (Object.entries(this.interfaces ?? {}) as [string, InterfacePackage][]).flatMap(\n ([interfaceAlias, interfacePackage]) =>\n Object.entries(interfacePackage.definition.entities ?? {}).map(([entityName, entityDefinition]) => [\n `interface:${interfaceAlias}/entities/${entityName}`,\n intersectWithUnknownRecord\n ? entityDefinition.schema.and(z.record(z.string(), z.unknown()))\n : entityDefinition.schema,\n ])\n )\n )\n }\n\n private _dereferenceZuiSchema(\n schema: ZuiObjectOrRefSchema,\n zuiReferenceMap: Record<string, z.ZodTypeAny>\n ): ZuiObjectSchema {\n return schema.dereference(zuiReferenceMap) as ZuiObjectSchema\n }\n\n private _dereferenceDefinitionSchemas<TDefinitionRecord extends Record<string, { schema: ZuiObjectOrRefSchema }>>(\n definitions: TDefinitionRecord | undefined,\n zuiReferenceMap: Record<string, z.ZodTypeAny>\n ): TDefinitionRecord {\n return Object.fromEntries(\n Object.entries(definitions ?? {}).map(([key, definition]) => [\n key,\n { ...definition, schema: this._dereferenceZuiSchema(definition.schema, zuiReferenceMap) },\n ])\n ) as TDefinitionRecord\n }\n\n private _dereferenceActionDefinitionSchemas<\n TDefinitionRecord extends Record<\n string,\n { input: { schema: ZuiObjectOrRefSchema }; output: { schema: ZuiObjectOrRefSchema } }\n >,\n >(definitions: TDefinitionRecord | undefined, zuiReferenceMap: Record<string, z.ZodTypeAny>): TDefinitionRecord {\n return Object.fromEntries(\n Object.entries(definitions ?? {}).map(([key, definition]) => [\n key,\n {\n ...definition,\n input: { schema: this._dereferenceZuiSchema(definition.input.schema, zuiReferenceMap) },\n output: { schema: this._dereferenceZuiSchema(definition.output.schema, zuiReferenceMap) },\n },\n ])\n ) as TDefinitionRecord\n }\n}\n", "import { Client } from '@botpress/client'\nimport { BotSpecificClient, EnumerateActions } from '../../bot'\nimport type * as typeUtils from '../../utils/type-utils'\nimport { BasePlugin, PluginRuntimeProps } from '../common'\nimport { ActionProxy } from './types'\n\nexport const proxyActions = <TPlugin extends BasePlugin>(\n client: BotSpecificClient<TPlugin> | Client,\n props: PluginRuntimeProps<TPlugin>\n): ActionProxy<TPlugin> =>\n new Proxy<Partial<ActionProxy<TPlugin>>>(\n {},\n {\n get: (_target, integrationOrInterfaceAlias: string) =>\n new Proxy(\n {},\n {\n get: (_target, actionName: string) => (input: Record<string, any>) => {\n const integrationAlias = (\n props.integrations[integrationOrInterfaceAlias] ?? props.interfaces[integrationOrInterfaceAlias]\n )?.integrationAlias\n const actualActionName =\n props.interfaces[integrationOrInterfaceAlias]?.actions?.[actionName]?.name ?? actionName\n\n return client\n .callAction({\n type: `${integrationAlias}:${actualActionName}` as typeUtils.Cast<\n keyof EnumerateActions<TPlugin>,\n string\n >,\n input,\n })\n .then((res) => res.output)\n },\n }\n ),\n }\n ) as ActionProxy<TPlugin>\n", "import type * as client from '@botpress/client'\nimport type { BotSpecificClient } from '../../bot'\nimport type { commonTypes } from '../../common'\nimport { createAsyncCollection } from '../../utils/api-paging-utils'\nimport type * as typeUtils from '../../utils/type-utils'\n\nimport type { BasePlugin, PluginRuntimeProps } from '../common'\nimport { prefixTagsIfNeeded, unprefixTagsOwnedByPlugin } from '../tag-prefixer'\nimport type { ActionableMessage, AnyPluginMessage, MessageFinder } from './types'\n\nexport const proxyMessages = <TPlugin extends BasePlugin>(props: {\n client: BotSpecificClient<TPlugin> | client.Client\n plugin?: PluginRuntimeProps<TPlugin>\n}): MessageFinder<TPlugin> => ({\n async getById({ id }) {\n const response = await (props.client.getMessage({ id }) as Promise<client.ClientOutputs['getMessage']>)\n return proxyMessage({ ...props, message: response.message as client.Message })\n },\n\n list(listProps) {\n return createAsyncCollection(({ nextToken }) =>\n props.client\n .listMessages({\n ...prefixTagsIfNeeded(listProps ?? {}, { alias: props.plugin?.alias }),\n nextToken,\n })\n .then(({ meta, messages }) => ({\n meta,\n items: messages.map((message) => proxyMessage({ ...props, message })),\n }))\n )\n },\n})\n\nexport const proxyMessage = <\n TPlugin extends BasePlugin,\n TMessage extends client.Message | AnyPluginMessage<TPlugin> = AnyPluginMessage<TPlugin>,\n>(props: {\n client: BotSpecificClient<TPlugin> | client.Client\n plugin?: PluginRuntimeProps<TPlugin>\n message: TMessage\n}): ActionableMessage<TPlugin, TMessage> => ({\n ...(unprefixTagsOwnedByPlugin(props.message, { alias: props.plugin?.alias }) as unknown as typeUtils.Merge<\n TMessage,\n {\n tags: commonTypes.ToTags<typeUtils.StringKeys<TPlugin['conversation']['tags']>>\n }\n >),\n\n async delete() {\n await props.client.deleteMessage({ id: props.message.id })\n },\n\n async update(data) {\n const { message: updatedMessage } = await props.client.updateMessage({\n ...prefixTagsIfNeeded(data, { alias: props.plugin?.alias }),\n id: props.message.id,\n })\n\n return proxyMessage({ ...props, message: updatedMessage as TMessage })\n },\n})\n", "import type * as client from '@botpress/client'\nimport type { BotSpecificClient } from '../../bot'\nimport type { commonTypes } from '../../common'\nimport { createAsyncCollection } from '../../utils/api-paging-utils'\nimport type * as typeUtils from '../../utils/type-utils'\nimport type { BasePlugin } from '../common'\nimport { prefixTagsIfNeeded, unprefixTagsOwnedByPlugin } from '../tag-prefixer'\nimport type {\n UserFinder,\n ActionableUser,\n BaseActionableUser,\n ActionableUserWithoutConversation,\n ActionableUserWithConversation,\n} from './types'\n\nexport const proxyUsers = <TPlugin extends BasePlugin>(props: {\n client: BotSpecificClient<TPlugin> | client.Client\n pluginAlias?: string\n}): UserFinder<TPlugin> => ({\n list(listProps) {\n return createAsyncCollection(({ nextToken }) =>\n props.client\n .listUsers({\n ...prefixTagsIfNeeded(listProps ?? {}, { alias: props.pluginAlias }),\n nextToken,\n })\n .then(({ meta, users }) => ({\n meta,\n items: users.map((user) => proxyUser({ ...props, conversationId: listProps?.conversationId, user })),\n }))\n )\n },\n\n async getById({ id }) {\n const response = await props.client.getUser({ id })\n return proxyUser({ ...props, user: response.user, conversationId: undefined })\n },\n})\n\nexport const proxyUser = <TPlugin extends BasePlugin, TConversationId extends string | undefined>(props: {\n client: BotSpecificClient<TPlugin> | client.Client\n conversationId?: TConversationId\n pluginAlias?: string\n user: client.User\n}): ActionableUser<TPlugin, TConversationId> => {\n const baseActionableUser = {\n ...(unprefixTagsOwnedByPlugin(props.user, { alias: props.pluginAlias }) as typeUtils.Merge<\n client.User,\n {\n tags: commonTypes.ToTags<typeUtils.StringKeys<TPlugin['user']['tags']>>\n }\n >),\n\n async update(data) {\n const { user: updatedUser } = await props.client.updateUser({\n ...prefixTagsIfNeeded(data, { alias: props.pluginAlias }),\n id: props.user.id,\n })\n\n return proxyUser({ ...props, user: updatedUser })\n },\n } satisfies BaseActionableUser<TPlugin, TConversationId>\n\n return (\n props.conversationId\n ? ({\n ...baseActionableUser,\n async removeFromConversation() {\n await props.client.removeParticipant({ id: props.conversationId!, userId: props.user.id })\n\n return proxyUser({\n ...props,\n conversationId: undefined,\n })\n },\n } satisfies ActionableUserWithConversation<TPlugin, TConversationId>)\n : ({\n ...baseActionableUser,\n async addToConversation({ conversationId }) {\n const { participant } = await props.client.addParticipant({ id: conversationId, userId: props.user.id })\n\n return proxyUser({\n ...props,\n user: participant,\n conversationId,\n })\n },\n } satisfies ActionableUserWithoutConversation<TPlugin, TConversationId>)\n ) as ActionableUser<TPlugin, TConversationId>\n}\n", "import type * as client from '@botpress/client'\nimport type { BotSpecificClient } from '../../bot'\n\nimport type { commonTypes } from '../../common'\nimport { type AsyncCollection, createAsyncCollection } from '../../utils/api-paging-utils'\nimport type * as typeUtils from '../../utils/type-utils'\nimport type { BasePlugin, PluginRuntimeProps } from '../common'\nimport { proxyMessage } from '../message-proxy/proxy'\nimport { prefixTagsIfNeeded, unprefixTagsOwnedByPlugin } from '../tag-prefixer'\nimport { proxyUser } from '../user-proxy'\nimport type { ActionableConversation, ConversationFinder } from './types'\n\nexport const proxyConversations = <TPlugin extends BasePlugin>(props: {\n client: BotSpecificClient<TPlugin> | client.Client\n plugin?: PluginRuntimeProps<TPlugin>\n}): ConversationFinder<TPlugin> =>\n new Proxy(\n {},\n {\n get: (_target, interfaceOrIntegrationAlias: string) =>\n new Proxy(\n {},\n {\n get: (_target2, channel: string) => {\n return {\n list(listProps): any {\n const integrationName =\n props.plugin?.interfaces[interfaceOrIntegrationAlias]?.integrationAlias ??\n props.plugin?.integrations[interfaceOrIntegrationAlias]?.integrationAlias\n\n const actualChannelName =\n props.plugin?.interfaces[interfaceOrIntegrationAlias]?.channels?.[channel]?.name ?? channel\n\n return createAsyncCollection(({ nextToken }) =>\n props.client\n .listConversations({\n ...prefixTagsIfNeeded(listProps ?? {}, { alias: props.plugin?.alias }),\n channel: actualChannelName === '*' ? undefined : actualChannelName,\n integrationName: integrationName === '*' ? undefined : integrationName,\n nextToken,\n })\n .then(({ meta, conversations }) => ({\n meta,\n items: conversations.map((conversation) => proxyConversation({ ...props, conversation })),\n }))\n ) satisfies AsyncCollection<ActionableConversation<TPlugin>>\n },\n\n async getById({ id }): Promise<any> {\n const response = await props.client.getConversation({ id })\n return proxyConversation({\n ...props,\n conversation: response.conversation,\n }) satisfies ActionableConversation<TPlugin>\n },\n } satisfies ConversationFinder<TPlugin>['*']['*']\n },\n }\n ),\n }\n ) as ConversationFinder<TPlugin>\n\nexport const proxyConversation = <TPlugin extends BasePlugin>(props: {\n client: BotSpecificClient<TPlugin> | client.Client\n plugin?: PluginRuntimeProps<TPlugin>\n conversation: client.Conversation\n}): ActionableConversation<TPlugin> => {\n // Client.GetMessageResponse conflicts with MessageResponse<TPlugin>:\n const vanillaClient = props.client as client.Client\n\n return {\n ...(unprefixTagsOwnedByPlugin(props.conversation, { alias: props.plugin?.alias }) as typeUtils.Merge<\n client.Conversation,\n { tags: commonTypes.ToTags<typeUtils.StringKeys<TPlugin['message']['tags']>> }\n >),\n\n async delete() {\n await vanillaClient.deleteConversation({ id: props.conversation.id })\n },\n\n async update(data) {\n const { conversation: updatedConversation } = await vanillaClient.updateConversation({\n ...prefixTagsIfNeeded(data, { alias: props.plugin?.alias }),\n id: props.conversation.id,\n })\n\n return proxyConversation({ ...props, conversation: updatedConversation })\n },\n\n async getMessage({ id }) {\n const response = await vanillaClient.getMessage({ id })\n return proxyMessage({ ...props, message: response.message })\n },\n\n async getOrCreateMessage(data) {\n const { message } = await vanillaClient.getOrCreateMessage({\n ...prefixTagsIfNeeded(data, { alias: props.plugin?.alias }),\n conversationId: props.conversation.id,\n })\n\n return proxyMessage({ ...props, message })\n },\n\n async createMessage(data) {\n const { message } = await vanillaClient.createMessage({\n ...prefixTagsIfNeeded(data, { alias: props.plugin?.alias }),\n conversationId: props.conversation.id,\n })\n\n return proxyMessage({ ...props, message })\n },\n\n listMessages(listProps) {\n return createAsyncCollection(({ nextToken }) =>\n vanillaClient\n .listMessages({\n ...prefixTagsIfNeeded(listProps ?? {}, { alias: props.plugin?.alias }),\n conversationId: props.conversation.id,\n nextToken,\n })\n .then(({ meta, messages }) => ({\n meta,\n items: messages.map((message) => proxyMessage({ ...props, message })),\n }))\n )\n },\n\n listParticipants() {\n return createAsyncCollection(({ nextToken }) =>\n vanillaClient\n .listParticipants({\n id: props.conversation.id,\n nextToken,\n })\n .then(({ meta, participants }) => ({\n meta,\n items: participants.map((user) =>\n proxyUser<TPlugin, string>({ ...props, user, conversationId: props.conversation.id })\n ),\n }))\n )\n },\n }\n}\n", "import type * as client from '@botpress/client'\nimport { BotSpecificClient } from '../../bot'\nimport * as consts from '../../consts'\nimport { type AsyncCollection, createAsyncCollection } from '../../utils/api-paging-utils'\nimport { BasePlugin, PluginRuntimeProps } from '../common'\nimport { EventProxy, EventSchedule, EventSender } from './types'\n\ntype _EventSenderProps = {\n client: BotSpecificClient<any> | client.Client\n eventName: string\n conversationId?: string\n userId?: string\n messageId?: string\n}\n\nclass _EventSender implements EventSender<object> {\n public constructor(private _props: _EventSenderProps) {}\n\n public async emit(eventPayload: object): Promise<client.Event> {\n const { conversationId, userId, messageId } = this._props\n const { event } = await this._props.client.createEvent({\n type: this._props.eventName,\n payload: eventPayload,\n conversationId,\n userId,\n messageId,\n })\n return event\n }\n\n public async schedule(eventPayload: object, schedule: EventSchedule): Promise<client.Event> {\n const { conversationId, userId, messageId } = this._props\n const { event } = await this._props.client.createEvent({\n type: this._props.eventName,\n payload: eventPayload,\n conversationId,\n userId,\n messageId,\n schedule,\n })\n return event\n }\n\n public withConversationId(conversationId: string): this {\n return new _EventSender({\n ...this._props,\n conversationId,\n }) as this\n }\n\n public withUserId(userId: string): this {\n return new _EventSender({\n ...this._props,\n userId,\n }) as this\n }\n\n public withMessageId(messageId: string): this {\n return new _EventSender({\n ...this._props,\n messageId,\n }) as this\n }\n\n public async getById(props: { id: string }): Promise<client.Event> {\n const response = await this._props.client.getEvent({ id: props.id })\n return response.event\n }\n\n public list(\n props?: Omit<client.ClientInputs['listEvents'], 'type' | 'nextToken' | 'conversationId' | 'messageId' | 'userId'>\n ): AsyncCollection<client.Event> {\n return createAsyncCollection(({ nextToken }) =>\n this._props.client\n .listEvents({\n ...props,\n type: this._props.eventName,\n conversationId: this._props.conversationId,\n userId: this._props.userId,\n messageId: this._props.messageId,\n nextToken,\n })\n .then(({ meta, events }) => ({\n meta,\n items: events,\n }))\n )\n }\n}\n\nexport const proxyEvents = <TPlugin extends BasePlugin>(\n client: BotSpecificClient<TPlugin> | client.Client,\n props: PluginRuntimeProps<TPlugin>\n): EventProxy<TPlugin> =>\n new Proxy(\n {},\n {\n get: (_target, eventName: string) => {\n const actualName =\n props.alias !== undefined ? `${props.alias}${consts.PLUGIN_PREFIX_SEPARATOR}${eventName}` : eventName\n return new _EventSender({\n client,\n eventName: actualName,\n })\n },\n }\n ) as EventProxy<TPlugin>\n", "import { Client } from '@botpress/client'\nimport { BotSpecificClient, StateType } from '../../bot'\nimport * as consts from '../../consts'\nimport { BasePlugin, PluginRuntimeProps } from '../common'\nimport { StateProxy, StateRepo } from './types'\n\nclass _StateRepo<TPayload extends object> implements StateRepo<TPayload> {\n public constructor(\n private _client: BotSpecificClient<any> | Client,\n private _stateType: StateType,\n private _stateName: string\n ) {}\n\n public async get(id: string): Promise<TPayload> {\n return await this._client\n .getState({\n type: this._stateType,\n name: this._stateName,\n id,\n })\n .then((r) => r.state.payload)\n }\n\n public async set(id: string, payload: TPayload, options?: { expiryMs: number }): Promise<void> {\n await this._client.setState({\n type: this._stateType,\n name: this._stateName,\n id,\n payload,\n expiry: options?.expiryMs,\n })\n return\n }\n\n public async getOrSet(id: string, payload: TPayload, options?: { expiryMs: number }): Promise<TPayload> {\n return await this._client\n .getOrSetState({\n type: this._stateType,\n name: this._stateName,\n id,\n payload,\n expiry: options?.expiryMs,\n })\n .then((r) => r.state.payload)\n }\n\n public async delete(id: string): Promise<void> {\n await this._client.setState({\n type: this._stateType,\n name: this._stateName,\n id,\n payload: null,\n })\n return\n }\n\n public async patch(id: string, payload: Partial<TPayload>): Promise<void> {\n await this._client.patchState({\n type: this._stateType,\n name: this._stateName,\n id,\n payload,\n })\n return\n }\n}\n\nexport const proxyStates = <TPlugin extends BasePlugin>(\n client: BotSpecificClient<TPlugin> | Client,\n props: PluginRuntimeProps<TPlugin>\n): StateProxy<TPlugin> =>\n new Proxy<Partial<StateProxy<TPlugin>>>(\n {},\n {\n get: (_target, stateType: StateType) => {\n return new Proxy(\n {},\n {\n get: (_target, stateName: string) => {\n const actualName =\n props.alias !== undefined ? `${props.alias}${consts.PLUGIN_PREFIX_SEPARATOR}${stateName}` : stateName\n return new _StateRepo(client, stateType, actualName)\n },\n }\n )\n },\n }\n ) as StateProxy<TPlugin>\n", "import type {\n MessageHandlersMap as BotMessageHandlersMap,\n EventHandlersMap as BotEventHandlersMap,\n StateExpiredHandlersMap as BotStateExpiredHandlersMap,\n HookHandlersMap as BotHookHandlersMap,\n WorkflowHandlersMap as BotWorkflowHandlersMap,\n ActionHandlersMap as BotActionHandlersMap,\n BotHandlers,\n BotSpecificClient,\n WorkflowUpdateType,\n} from '../bot'\nimport { WorkflowProxy, proxyWorkflows, wrapWorkflowInstance } from '../bot/workflow-proxy'\nimport * as utils from '../utils'\nimport { ActionProxy, proxyActions } from './action-proxy'\nimport { BasePlugin, PluginRuntimeProps } from './common'\nimport { ConversationFinder, proxyConversation, proxyConversations } from './conversation-proxy'\nimport { EventProxy, proxyEvents } from './event-proxy'\nimport { proxyMessage, proxyMessages } from './message-proxy'\nimport {\n ActionHandlers,\n MessageHandlers,\n EventHandlers,\n StateExpiredHandlers,\n HookHandlers,\n WorkflowHandlers,\n HookHandlersMap,\n WorkflowHandlersMap,\n OrderedMessageHandlersMap,\n OrderedEventHandlersMap,\n OrderedStateExpiredHandlersMap,\n OrderedHookHandlersMap,\n OrderedWorkflowHandlersMap,\n HookInputsWithoutInjectedProps,\n ActionHandlerPayloadsWithoutInjectedProps,\n StateExpiredPayloadsWithoutInjectedProps,\n MessagePayloadsWithoutInjectedProps,\n EventPayloadsWithoutInjectedProps,\n WorkflowPayloadsWithoutInjectedProps,\n InjectedHandlerProps,\n} from './server/types'\nimport { proxyStates, StateProxy } from './state-proxy'\nimport { unprefixTagsOwnedByPlugin } from './tag-prefixer'\nimport { proxyUser, proxyUsers, type UserFinder } from './user-proxy'\n\nexport type PluginImplementationProps<TPlugin extends BasePlugin = BasePlugin> = {\n actions: ActionHandlers<TPlugin>\n}\n\ntype Tools<TPlugin extends BasePlugin = BasePlugin> = InjectedHandlerProps<TPlugin>\n\nexport class PluginImplementation<TPlugin extends BasePlugin = BasePlugin> implements BotHandlers<TPlugin> {\n private _runtimeProps: PluginRuntimeProps<TPlugin> | undefined\n\n private _actionHandlers: ActionHandlers<any>\n private _messageHandlers: OrderedMessageHandlersMap<any> = {}\n private _eventHandlers: OrderedEventHandlersMap<any> = {}\n private _stateExpiredHandlers: OrderedStateExpiredHandlersMap<any> = {}\n private _hookHandlers: OrderedHookHandlersMap<any> = {\n before_incoming_event: {},\n before_incoming_message: {},\n before_outgoing_message: {},\n before_outgoing_call_action: {},\n before_incoming_call_action: {},\n after_incoming_event: {},\n after_incoming_message: {},\n after_outgoing_message: {},\n after_outgoing_call_action: {},\n after_incoming_call_action: {},\n }\n private _workflowHandlers: OrderedWorkflowHandlersMap<any> = {\n started: {},\n continued: {},\n timed_out: {},\n }\n\n private _registerOrder: number = 0\n\n public constructor(public readonly props: PluginImplementationProps<TPlugin>) {\n this._actionHandlers = props.actions\n }\n\n public initialize(props: PluginRuntimeProps<TPlugin>): this {\n this._runtimeProps = props\n return this\n }\n\n private get _runtime() {\n if (!this._runtimeProps) {\n throw new Error(\n 'Plugin not correctly initialized. This is likely because you access your plugin config outside of an handler.'\n )\n }\n return this._runtimeProps\n }\n\n private _getTools(client: BotSpecificClient<any>): Tools {\n const { configuration, interfaces, integrations, alias } = this._runtime\n const actions = proxyActions(client, this._runtime) as ActionProxy<BasePlugin>\n const states = proxyStates(client, this._runtime) as StateProxy<BasePlugin>\n const workflows = proxyWorkflows({ client, pluginAlias: this._runtime.alias }) as WorkflowProxy<BasePlugin>\n const events = proxyEvents(client, this._runtime) as EventProxy<BasePlugin>\n const users = proxyUsers({ client, pluginAlias: this._runtime.alias }) as UserFinder<BasePlugin>\n const conversations = proxyConversations({ client, plugin: this._runtime }) as ConversationFinder<BasePlugin>\n const messages = proxyMessages({ client, plugin: this._runtime })\n\n return {\n configuration,\n interfaces,\n integrations,\n actions,\n states,\n alias,\n workflows,\n events,\n users,\n conversations,\n messages,\n }\n }\n\n public get actionHandlers(): BotActionHandlersMap<TPlugin> {\n return new Proxy(\n {},\n {\n get: (_: unknown, actionName: string) => {\n actionName = this._stripAliasPrefix(actionName)\n const handler = this._actionHandlers[actionName]\n if (!handler) {\n return undefined\n }\n return utils.functions.setName(\n (input: utils.types.ValueOf<ActionHandlerPayloadsWithoutInjectedProps<TPlugin>>) =>\n handler({ ...input, ...this._getTools(input.client) }),\n handler.name\n )\n },\n }\n ) as BotActionHandlersMap<TPlugin>\n }\n\n public get messageHandlers(): BotMessageHandlersMap<TPlugin> {\n return new Proxy(\n {},\n {\n get: (_: unknown, messageName: string) => {\n messageName = this._stripAliasPrefix(messageName as string)\n const specificHandlers = messageName === '*' ? [] : (this._messageHandlers[messageName] ?? [])\n const globalHandlers = this._messageHandlers['*'] ?? []\n const allHandlers = utils.arrays\n .unique([...specificHandlers, ...globalHandlers])\n .sort((a, b) => a.order - b.order)\n return allHandlers.map(({ handler }) =>\n utils.functions.setName(\n (input: utils.types.ValueOf<MessagePayloadsWithoutInjectedProps<TPlugin>>) =>\n handler({\n ...input,\n user: proxyUser({\n ...input,\n conversationId: input.conversation.id,\n pluginAlias: this._runtime.alias,\n }),\n message: proxyMessage<BasePlugin>({\n ...input,\n plugin: this._runtime,\n message: input.message,\n }),\n conversation: proxyConversation({\n ...input,\n plugin: this._runtime,\n conversation: input.conversation,\n }),\n ...this._getTools(input.client),\n }),\n handler.name\n )\n )\n },\n }\n ) as BotMessageHandlersMap<TPlugin>\n }\n\n public get eventHandlers(): BotEventHandlersMap<TPlugin> {\n return new Proxy(\n {},\n {\n get: (_: unknown, eventName: string) => {\n eventName = this._stripAliasPrefix(eventName)\n\n // if prop is \"github:prOpened\", include both \"github:prOpened\" and \"creatable:itemCreated\"\n\n const specificHandlers = eventName === '*' ? [] : (this._eventHandlers[eventName] ?? [])\n\n const interfaceHandlers = Object.entries(this._eventHandlers)\n .filter(([e]) => this._eventResolvesTo(e, eventName))\n .flatMap(([, handlers]) => handlers ?? [])\n\n const globalHandlers = this._eventHandlers['*'] ?? []\n const allHandlers = utils.arrays\n .unique([...specificHandlers, ...interfaceHandlers, ...globalHandlers])\n .sort((a, b) => a.order - b.order)\n\n return allHandlers.map(({ handler }) =>\n utils.functions.setName(\n (input: utils.types.ValueOf<EventPayloadsWithoutInjectedProps<TPlugin>>) =>\n handler({ ...input, ...this._getTools(input.client) }),\n handler.name\n )\n )\n },\n }\n ) as BotEventHandlersMap<TPlugin>\n }\n\n public get stateExpiredHandlers(): BotStateExpiredHandlersMap<TPlugin> {\n return new Proxy(\n {},\n {\n get: (_: unknown, stateName: string) => {\n stateName = this._stripAliasPrefix(stateName)\n\n const specificHandlers = stateName === '*' ? [] : (this._stateExpiredHandlers[stateName] ?? [])\n const globalHandlers = this._stateExpiredHandlers['*'] ?? []\n const allHandlers = utils.arrays\n .unique([...specificHandlers, ...globalHandlers])\n .sort((a, b) => a.order - b.order)\n return allHandlers.map(({ handler }) =>\n utils.functions.setName(\n (input: utils.types.ValueOf<StateExpiredPayloadsWithoutInjectedProps<TPlugin>>) =>\n handler({ ...input, ...this._getTools(input.client) }),\n handler.name\n )\n )\n },\n }\n ) as BotStateExpiredHandlersMap<TPlugin>\n }\n\n public get hookHandlers(): BotHookHandlersMap<TPlugin> {\n return new Proxy(\n {},\n {\n get: (_, hookType: utils.types.StringKeys<HookHandlersMap<TPlugin>>) => {\n const hooks = this._hookHandlers[hookType]\n if (!hooks) {\n return undefined\n }\n return new Proxy(\n {},\n {\n get: (_: unknown, hookDataName: string) => {\n hookDataName = this._stripAliasPrefix(hookDataName)\n\n const specificHandlers = hookDataName === '*' ? [] : (hooks[hookDataName] ?? [])\n\n // for \"before_incoming_event\", \"after_incoming_event\" and other event related hooks\n const interfaceHandlers = Object.entries(hooks)\n .filter(([e]) => this._eventResolvesTo(e, hookDataName))\n .flatMap(([, handlers]) => handlers ?? [])\n\n const globalHandlers = hooks['*'] ?? []\n const handlers = utils.arrays\n .unique([...specificHandlers, ...interfaceHandlers, ...globalHandlers])\n .sort((a, b) => a.order - b.order)\n\n return handlers.map(({ handler }) =>\n utils.functions.setName(\n (input: utils.types.ValueOf<HookInputsWithoutInjectedProps<TPlugin>>['*']) =>\n handler({\n ...input,\n data: unprefixTagsOwnedByPlugin(input.data, { alias: this._runtime.alias }),\n ...this._getTools(input.client),\n }),\n handler.name\n )\n )\n },\n }\n )\n },\n }\n ) as BotHookHandlersMap<TPlugin>\n }\n\n public get workflowHandlers(): BotWorkflowHandlersMap<TPlugin> {\n return new Proxy(\n {},\n {\n get: (_, updateType: WorkflowUpdateType) => {\n const handlersOfType = this._workflowHandlers[updateType]\n if (!handlersOfType) {\n return undefined\n }\n\n return new Proxy(\n {},\n {\n get: (_, workflowName: string) => {\n const selfHandlers = handlersOfType[workflowName]?.sort((a, b) => a.order - b.order) ?? []\n\n return selfHandlers.map(({ handler }) =>\n utils.functions.setName(\n async (input: utils.types.ValueOf<WorkflowPayloadsWithoutInjectedProps<TPlugin>>) => {\n let currentWorkflowState = input.workflow\n await handler({\n ...input,\n workflow: wrapWorkflowInstance({\n ...input,\n workflow: currentWorkflowState,\n onWorkflowUpdate(newState) {\n currentWorkflowState = newState\n },\n pluginAlias: this._runtime.alias,\n }),\n ...this._getTools(input.client),\n })\n return currentWorkflowState\n },\n handler.name\n )\n )\n },\n }\n )\n },\n }\n ) as BotWorkflowHandlersMap<TPlugin>\n }\n\n public readonly on = {\n message: <T extends utils.types.StringKeys<MessageHandlers<TPlugin>>>(\n type: T,\n handler: MessageHandlers<TPlugin>[T]\n ): void => {\n this._messageHandlers[type] = utils.arrays.safePush(this._messageHandlers[type], {\n handler: handler as unknown as MessageHandlers<any>[string],\n order: this._registerOrder++,\n })\n },\n\n event: <T extends utils.types.StringKeys<EventHandlers<TPlugin>>>(\n type: T,\n handler: EventHandlers<TPlugin>[T]\n ): void => {\n this._eventHandlers[type] = utils.arrays.safePush(this._eventHandlers[type], {\n handler: handler as unknown as EventHandlers<any>[string],\n order: this._registerOrder++,\n })\n },\n\n stateExpired: <T extends utils.types.StringKeys<StateExpiredHandlers<TPlugin>>>(\n type: T,\n handler: StateExpiredHandlers<TPlugin>[T]\n ): void => {\n this._stateExpiredHandlers[type] = utils.arrays.safePush(this._stateExpiredHandlers[type], {\n handler: handler as unknown as StateExpiredHandlers<any>[string],\n order: this._registerOrder++,\n })\n },\n\n beforeIncomingEvent: <T extends utils.types.StringKeys<HookHandlersMap<TPlugin>['before_incoming_event']>>(\n type: T,\n handler: HookHandlers<TPlugin>['before_incoming_event'][T]\n ) => {\n this._hookHandlers.before_incoming_event[type] = utils.arrays.safePush(\n this._hookHandlers.before_incoming_event[type],\n {\n handler: handler as unknown as HookHandlers<any>['before_incoming_event'][string],\n order: this._registerOrder++,\n }\n )\n },\n\n beforeIncomingMessage: <T extends utils.types.StringKeys<HookHandlersMap<TPlugin>['before_incoming_message']>>(\n type: T,\n handler: HookHandlers<TPlugin>['before_incoming_message'][T]\n ) => {\n this._hookHandlers.before_incoming_message[type] = utils.arrays.safePush(\n this._hookHandlers.before_incoming_message[type],\n {\n handler: handler as unknown as HookHandlers<any>['before_incoming_message'][string],\n order: this._registerOrder++,\n }\n )\n },\n\n beforeOutgoingMessage: <T extends utils.types.StringKeys<HookHandlersMap<TPlugin>['before_outgoing_message']>>(\n type: T,\n handler: HookHandlers<TPlugin>['before_outgoing_message'][T]\n ) => {\n this._hookHandlers.before_outgoing_message[type] = utils.arrays.safePush(\n this._hookHandlers.before_outgoing_message[type],\n {\n handler: handler as unknown as HookHandlers<any>['before_outgoing_message'][string],\n order: this._registerOrder++,\n }\n )\n },\n\n beforeOutgoingCallAction: <\n T extends utils.types.StringKeys<HookHandlersMap<TPlugin>['before_outgoing_call_action']>,\n >(\n type: T,\n handler: HookHandlers<TPlugin>['before_outgoing_call_action'][T]\n ) => {\n this._hookHandlers.before_outgoing_call_action[type] = utils.arrays.safePush(\n this._hookHandlers.before_outgoing_call_action[type],\n {\n handler: handler as unknown as HookHandlers<any>['before_outgoing_call_action'][string],\n order: this._registerOrder++,\n }\n )\n },\n\n /**\n * # EXPERIMENTAL\n * This API is experimental and may change in the future.\n */\n beforeIncomingCallAction: <\n T extends utils.types.StringKeys<HookHandlersMap<TPlugin>['before_incoming_call_action']>,\n >(\n type: T,\n handler: HookHandlers<TPlugin>['before_incoming_call_action'][T]\n ) => {\n this._hookHandlers.before_incoming_call_action[type] = utils.arrays.safePush(\n this._hookHandlers.before_incoming_call_action[type],\n {\n handler: handler as unknown as HookHandlers<any>['before_incoming_call_action'][string],\n order: this._registerOrder++,\n }\n )\n },\n\n afterIncomingEvent: <T extends utils.types.StringKeys<HookHandlersMap<TPlugin>['after_incoming_event']>>(\n type: T,\n handler: HookHandlers<TPlugin>['after_incoming_event'][T]\n ) => {\n this._hookHandlers.after_incoming_event[type] = utils.arrays.safePush(\n this._hookHandlers.after_incoming_event[type],\n {\n handler: handler as unknown as HookHandlers<any>['after_incoming_event'][string],\n order: this._registerOrder++,\n }\n )\n },\n\n afterIncomingMessage: <T extends utils.types.StringKeys<HookHandlersMap<TPlugin>['after_incoming_message']>>(\n type: T,\n handler: HookHandlers<TPlugin>['after_incoming_message'][T]\n ) => {\n this._hookHandlers.after_incoming_message[type] = utils.arrays.safePush(\n this._hookHandlers.after_incoming_message[type],\n {\n handler: handler as unknown as HookHandlers<any>['after_incoming_message'][string],\n order: this._registerOrder++,\n }\n )\n },\n\n afterOutgoingMessage: <T extends utils.types.StringKeys<HookHandlersMap<TPlugin>['after_outgoing_message']>>(\n type: T,\n handler: HookHandlers<TPlugin>['after_outgoing_message'][T]\n ) => {\n this._hookHandlers.after_outgoing_message[type] = utils.arrays.safePush(\n this._hookHandlers.after_outgoing_message[type],\n {\n handler: handler as unknown as HookHandlers<any>['after_outgoing_message'][string],\n order: this._registerOrder++,\n }\n )\n },\n\n afterOutgoingCallAction: <T extends utils.types.StringKeys<HookHandlersMap<TPlugin>['after_outgoing_call_action']>>(\n type: T,\n handler: HookHandlers<TPlugin>['after_outgoing_call_action'][T]\n ) => {\n this._hookHandlers.after_outgoing_call_action[type] = utils.arrays.safePush(\n this._hookHandlers.after_outgoing_call_action[type],\n {\n handler: handler as unknown as HookHandlers<any>['after_outgoing_call_action'][string],\n order: this._registerOrder++,\n }\n )\n },\n\n /**\n * # EXPERIMENTAL\n * This API is experimental and may change in the future.\n */\n afterIncomingCallAction: <T extends utils.types.StringKeys<HookHandlersMap<TPlugin>['after_incoming_call_action']>>(\n type: T,\n handler: HookHandlers<TPlugin>['after_incoming_call_action'][T]\n ) => {\n this._hookHandlers.after_incoming_call_action[type] = utils.arrays.safePush(\n this._hookHandlers.after_incoming_call_action[type],\n {\n handler: handler as unknown as HookHandlers<any>['after_incoming_call_action'][string],\n order: this._registerOrder++,\n }\n )\n },\n\n /**\n * # EXPERIMENTAL\n * This API is experimental and may change in the future.\n */\n workflowStart: <T extends utils.types.StringKeys<WorkflowHandlersMap<TPlugin>['started']>>(\n type: T,\n handler: WorkflowHandlers<TPlugin>[T]\n ): void => {\n this._workflowHandlers.started[type] = utils.arrays.safePush(this._workflowHandlers.started[type], {\n handler: handler as unknown as WorkflowHandlers<any>[string],\n order: this._registerOrder++,\n })\n },\n\n /**\n * # EXPERIMENTAL\n * This API is experimental and may change in the future.\n */\n workflowContinue: <T extends utils.types.StringKeys<WorkflowHandlersMap<TPlugin>['continued']>>(\n type: T,\n handler: WorkflowHandlers<TPlugin>[T]\n ): void => {\n this._workflowHandlers.continued[type] = utils.arrays.safePush(this._workflowHandlers.continued[type], {\n handler: handler as unknown as WorkflowHandlers<any>[string],\n order: this._registerOrder++,\n })\n },\n\n /**\n * # EXPERIMENTAL\n * This API is experimental and may change in the future.\n */\n workflowTimeout: <T extends utils.types.StringKeys<WorkflowHandlersMap<TPlugin>['timed_out']>>(\n type: T,\n handler: WorkflowHandlers<TPlugin>[T]\n ): void => {\n this._workflowHandlers.timed_out[type] = utils.arrays.safePush(this._workflowHandlers.timed_out[type], {\n handler: handler as unknown as WorkflowHandlers<any>[string],\n order: this._registerOrder++,\n })\n },\n }\n\n /**\n * checks if the actual event resolves to the target event\n */\n private _eventResolvesTo = (actualEventRef: string, targetEventRef: string) => {\n const NAMESPACE_SEPARATOR = ':'\n const [pluginIfaceOrIntAlias, ifaceOrIntEvent] = actualEventRef.split(NAMESPACE_SEPARATOR)\n if (!pluginIfaceOrIntAlias || !ifaceOrIntEvent) {\n return false\n }\n\n // match '<plugin-iface-alias>:<iface-event>' => '<bot-int-alias>:<int-event>':\n const iface = this._runtime.interfaces[pluginIfaceOrIntAlias]\n\n if (\n iface &&\n targetEventRef === `${iface.integrationAlias}${NAMESPACE_SEPARATOR}${iface?.events?.[ifaceOrIntEvent]?.name}`\n ) {\n return true\n }\n\n const integration = this._runtime.integrations[pluginIfaceOrIntAlias]\n\n // match '<plugin-int-alias>:<int-event>' => '<bot-int-alias>:<int-event>':\n if (integration && targetEventRef === `${integration.integrationAlias}${NAMESPACE_SEPARATOR}${ifaceOrIntEvent}`) {\n return true\n }\n\n return false\n }\n\n private _stripAliasPrefix = (prop: string) => {\n const { alias } = this._runtime\n if (!alias) {\n return prop\n }\n const prefix = `${alias}#`\n return prop.startsWith(prefix) ? prop.slice(prefix.length) : prop\n }\n}\n", "import * as semver from 'semver'\nimport { Package } from './package'\nimport { PluginDefinition } from './plugin/definition'\n\ntype GenericPackage = Exclude<Package, PluginDefinition>\n\n/**\n * Returns the major version range for a given package.\n * Version utility helpers are only intended to be used with plugins.\n **/\nexport function allWithinMajorOf<T extends GenericPackage>(pkg: T): T & { version: string } {\n const major = semver.major(pkg.version)\n return { ...pkg, version: `>=${major}.0.0 <${major + 1}.0.0` }\n}\n\n/**\n * Returns the minor version range for a given package.\n * Version utility helpers are only intended to be used with plugins.\n **/\nexport function allWithinMinorOf<T extends GenericPackage>(pkg: T): T & { version: string } {\n const major = semver.major(pkg.version)\n const minor = semver.minor(pkg.version)\n return {\n ...pkg,\n version: `>=${major}.${minor}.0 <${major}.${minor + 1}.0`,\n }\n}\n"],
|
|
5
5
|
"mappings": "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",
|
|
6
6
|
"names": ["index_exports", "__export", "BRAND", "BotImplementation", "BotDefinition", "BotLogger", "BotSpecificClient", "DIRTY", "EMPTY_PATH", "INVALID", "IntegrationImplementation", "IntegrationDefinition", "IntegrationLogger", "IntegrationSpecificClient", "InterfaceDefinition", "NEVER", "OK", "ParseInputLazyPath", "ParseStatus", "PluginImplementation", "PluginDefinition", "ZodType", "WELL_KNOWN_ATTRIBUTES", "ZodAny", "ZodArray", "ZodBigInt", "ZodBoolean", "ZodBranded", "ZodCatch", "ZodDate", "ZodDefault", "ZodDiscriminatedUnion", "ZodEffects", "ZodEnum", "ZodError", "ZodFirstPartyTypeKind", "ZodFunction", "ZodIntersection", "ZodIssueCode", "ZodLazy", "ZodLiteral", "ZodMap", "ZodNaN", "ZodNativeEnum", "ZodNever", "ZodNull", "ZodNullable", "ZodNumber", "ZodObject2", "ZodOptional", "ZodParsedType", "ZodPipeline", "ZodPromise", "ZodReadonly", "ZodRecord", "ZodRef", "ZodSet", "ZodString", "ZodSymbol", "ZodTuple", "ZodUndefined", "ZodUnion", "ZodUnknown", "ZodVoid", "addIssueToContext", "agent", "aimodel", "anyType", "arrayType", "bigIntType", "booleanType", "coerce", "conversation", "createZodEnum", "cuid2Regex", "cuidRegex", "custom", "datasource", "dateType", "discriminatedUnionType", "effectsType", "emailRegex", "enumType", "errorUtil", "event", "functionType", "getErrorMap", "getParsedType", "instanceOfType", "intent", "intersectionType", "ipv4Regex", "ipv6Regex", "isAborted", "isAsync", "isDirty", "isEmojiRegex", "isValid", "json_schema_exports", "knowledgebase", "late", "lazyType", "literalType", "makeIssue", "mapType", "mergeObjectSchemas", "message", "message_exports", "nanType", "nativeEnumType", "neverType", "nullType", "nullableType", "numberType", "objectType", "objectUtil", "oboolean", "onumber", "optionalType", "ostring", "parseBody", "pipelineType", "preprocessType", "processCreateParams", "promiseType", "quotelessJson", "readonlyType", "recordType", "refType", "serve", "setType", "setErrorMap", "strictObjectType", "stringType", "symbolType", "table", "tablerow", "transforms_exports", "tupleType", "ulidRegex", "undefinedType", "unionType", "unknownType", "user", "util", "uuidRegex", "variable", "version_utils_exports", "voidType", "z_exports", "__toCommonJS", "message_exports", "__export", "defaults", "markdown", "markdownBloc", "json_schema_exports", "transforms_exports", "__export", "errors_exports", "fromJSONSchema", "fromJSONSchemaLegacy", "fromObject", "toJSONSchema", "toJSONSchemaLegacy", "toTypescriptSchema", "toTypescriptType", "z_exports", "BRAND", "DIRTY", "EMPTY_PATH", "INVALID", "NEVER", "OK", "ParseInputLazyPath", "ParseStatus", "ZodType", "ZodAny", "ZodArray", "ZodBigInt", "ZodBoolean", "ZodBranded", "ZodCatch", "ZodDate", "ZodDefault", "ZodDiscriminatedUnion", "ZodEffects", "ZodEnum", "ZodError", "ZodFirstPartyTypeKind", "ZodFunction", "ZodIntersection", "ZodIssueCode", "ZodLazy", "ZodLiteral", "ZodMap", "ZodNaN", "ZodNativeEnum", "ZodNever", "ZodNull", "ZodNullable", "ZodNumber", "ZodObject", "ZodOptional", "ZodParsedType", "ZodPipeline", "ZodPromise", "ZodReadonly", "ZodRecord", "ZodRef", "ZodSet", "ZodString", "ZodSymbol", "ZodTuple", "ZodUndefined", "ZodUnion", "ZodUnknown", "ZodVoid", "addIssueToContext", "agent", "aimodel", "anyType", "arrayType", "bigIntType", "booleanType", "coerce", "conversation", "createZodEnum", "cuid2Regex", "cuidRegex", "custom", "datasource", "dateType", "defaultType", "discriminatedUnionType", "effectsType", "emailRegex", "enumType", "errorUtil", "event", "functionType", "getErrorMap", "getParsedType", "instanceOfType", "intent", "intersectionType", "ipv4Regex", "ipv6Regex", "isAborted", "isAsync", "isDirty", "isEmojiRegex", "isValid", "knowledgebase", "late", "lazyType", "literalType", "makeIssue", "mapType", "message", "nanType", "nativeEnumType", "neverType", "nullType", "nullableType", "numberType", "objectType", "objectUtil", "oboolean", "onumber", "optionalType", "ostring", "pipelineType", "preprocessType", "processCreateParams", "promiseType", "quotelessJson", "readonlyType", "recordType", "refType", "setType", "setErrorMap", "strictObjectType", "stringType", "symbolType", "table", "tablerow", "tupleType", "ulidRegex", "undefinedType", "unionType", "unknownType", "user", "util", "uuidRegex", "variable", "voidType", "zuiKey", "primitiveToTypscriptLiteralType", "x", "primitiveToTypescriptValue", "__name", "escapeString", "unknownToTypescriptValue", "recordOfUnknownToTypescriptRecord", "record", "asConst", "entries", "maybeAsConst", "key", "value", "toPropertyKey", "capitalize", "s", "toTypeArgumentName", "name", "nonAlphaNumeric", "t", "trimEmptyLinesInPlace", "lines", "_a", "getMultilineComment", "description", "ensureLineStartsWithAsterisk", "line", "escapeCommentEnd", "descLines", "str", "escapedStr", "JSONSchemaToZuiError", "ObjectToZuiError", "UnrepresentableGenericError", "UnsupportedJSONSchemaToZuiError", "UnsupportedZuiCheckToJSONSchemaError", "UnsupportedZuiToJSONSchemaError", "UnsupportedZuiToTypescriptSchemaError", "UnsupportedZuiToTypescriptTypeError", "UntitledDeclarationError", "ZuiToJSONSchemaError", "ZuiToTypescriptSchemaError", "ZuiToTypescriptTypeError", "ZuiTransformError", "_ZuiTransformError", "transform", "_JSONSchemaToZuiError", "_ObjectToZuiError", "_ZuiToJSONSchemaError", "_UnsupportedZuiToJSONSchemaError", "type", "suggestedAlternative", "_UnsupportedZuiCheckToJSONSchemaError", "zodType", "checkKind", "_UnsupportedJSONSchemaToZuiError", "schema", "_ZuiToTypescriptSchemaError", "_UnsupportedZuiToTypescriptSchemaError", "_ZuiToTypescriptTypeError", "_UnsupportedZuiToTypescriptTypeError", "_UntitledDeclarationError", "_UnrepresentableGenericError", "Primitives", "LARGE_DECLARATION_LINES", "isPrimitive", "isArrayOfPrimitives", "p", "stripSpaces", "typings", "_KeyValue", "KeyValue", "_FnParameters", "FnParameters", "_FnReturn", "FnReturn", "_Declaration", "props", "Declaration", "options", "wrappedSchema", "getDeclarationProps", "dts", "sUnwrapZod", "_optionalKey", "config", "_b", "_c", "newConfig", "__spreadProps", "__spreadValues", "unwrapDeclaration", "optionalValue", "z_default", "innerType", "delimiter", "withoutDesc", "args", "i", "argName", "item", "isLiteral", "schemaTyped", "def", "option", "opts", "keyType", "valueType", "input", "output", "parentIsType", "defaultInnerType", "declaration", "identifier", "closingTag", "generics", "getDeclarationType", "declarationType", "title", "freeGlobal", "freeGlobal_default", "freeSelf", "root", "root_default", "Symbol", "Symbol_default", "objectProto", "hasOwnProperty", "nativeObjectToString", "symToStringTag", "getRawTag", "isOwn", "tag", "unmasked", "result", "getRawTag_default", "objectToString", "objectToString_default", "nullTag", "undefinedTag", "baseGetTag", "baseGetTag_default", "isObjectLike", "isObjectLike_default", "symbolTag", "isSymbol", "isSymbol_default", "arrayMap", "array", "iteratee", "index", "length", "arrayMap_default", "isArray", "isArray_default", "INFINITY", "symbolProto", "symbolToString", "baseToString", "baseToString_default", "isObject", "isObject_default", "identity", "identity_default", "asyncTag", "funcTag", "genTag", "proxyTag", "isFunction", "isFunction_default", "coreJsData", "coreJsData_default", "maskSrcKey", "uid", "isMasked", "func", "isMasked_default", "funcProto", "funcToString", "toSource", "toSource_default", "reRegExpChar", "reIsHostCtor", "reIsNative", "baseIsNative", "pattern", "baseIsNative_default", "getValue", "object", "getValue_default", "getNative", "getNative_default", "WeakMap", "WeakMap_default", "defineProperty", "defineProperty_default", "MAX_SAFE_INTEGER", "reIsUint", "isIndex", "isIndex_default", "baseAssignValue", "baseAssignValue_default", "eq", "other", "eq_default", "assignValue", "objValue", "assignValue_default", "isLength", "isLength_default", "isArrayLike", "isArrayLike_default", "isPrototype", "Ctor", "proto", "isPrototype_default", "baseTimes", "n", "baseTimes_default", "argsTag", "baseIsArguments", "baseIsArguments_default", "propertyIsEnumerable", "isArguments", "isArguments_default", "stubFalse", "stubFalse_default", "freeExports", "freeModule", "moduleExports", "Buffer", "nativeIsBuffer", "isBuffer", "isBuffer_default", "arrayTag", "boolTag", "dateTag", "errorTag", "mapTag", "numberTag", "objectTag", "regexpTag", "setTag", "stringTag", "weakMapTag", "arrayBufferTag", "dataViewTag", "float32Tag", "float64Tag", "int8Tag", "int16Tag", "int32Tag", "uint8Tag", "uint8ClampedTag", "uint16Tag", "uint32Tag", "typedArrayTags", "baseIsTypedArray", "baseIsTypedArray_default", "baseUnary", "baseUnary_default", "freeProcess", "nodeUtil", "types", "nodeUtil_default", "nodeIsTypedArray", "isTypedArray", "isTypedArray_default", "arrayLikeKeys", "inherited", "isArr", "isArg", "isBuff", "isType", "skipIndexes", "arrayLikeKeys_default", "overArg", "arg", "overArg_default", "nativeKeys", "nativeKeys_default", "baseKeys", "baseKeys_default", "keys", "keys_default", "nativeKeysIn", "nativeKeysIn_default", "baseKeysIn", "isProto", "baseKeysIn_default", "keysIn", "keysIn_default", "reIsDeepProp", "reIsPlainProp", "isKey", "isKey_default", "nativeCreate", "nativeCreate_default", "hashClear", "hashClear_default", "hashDelete", "hashDelete_default", "HASH_UNDEFINED", "hashGet", "data", "hashGet_default", "hashHas", "hashHas_default", "hashSet", "hashSet_default", "Hash", "entry", "Hash_default", "listCacheClear", "listCacheClear_default", "assocIndexOf", "assocIndexOf_default", "arrayProto", "splice", "listCacheDelete", "lastIndex", "listCacheDelete_default", "listCacheGet", "listCacheGet_default", "listCacheHas", "listCacheHas_default", "listCacheSet", "listCacheSet_default", "ListCache", "ListCache_default", "Map", "Map_default", "mapCacheClear", "mapCacheClear_default", "isKeyable", "isKeyable_default", "getMapData", "map", "getMapData_default", "mapCacheDelete", "mapCacheDelete_default", "mapCacheGet", "mapCacheGet_default", "mapCacheHas", "mapCacheHas_default", "mapCacheSet", "size", "mapCacheSet_default", "MapCache", "MapCache_default", "FUNC_ERROR_TEXT", "memoize", "resolver", "memoized", "cache", "memoize_default", "MAX_MEMOIZE_SIZE", "memoizeCapped", "memoizeCapped_default", "rePropName", "reEscapeChar", "stringToPath", "string", "match", "number", "quote", "subString", "stringToPath_default", "toString", "toString_default", "castPath", "castPath_default", "toKey", "toKey_default", "baseGet", "path", "baseGet_default", "get", "defaultValue", "get_default", "arrayPush", "values", "offset", "arrayPush_default", "getPrototype", "getPrototype_default", "objectCtorString", "isPlainObject", "isPlainObject_default", "stackClear", "stackClear_default", "stackDelete", "stackDelete_default", "stackGet", "stackGet_default", "stackHas", "stackHas_default", "LARGE_ARRAY_SIZE", "stackSet", "pairs", "stackSet_default", "Stack", "Stack_default", "arrayFilter", "predicate", "resIndex", "arrayFilter_default", "stubArray", "stubArray_default", "nativeGetSymbols", "getSymbols", "symbol", "getSymbols_default", "getSymbolsIn", "getSymbolsIn_default", "baseGetAllKeys", "keysFunc", "symbolsFunc", "baseGetAllKeys_default", "getAllKeys", "getAllKeys_default", "getAllKeysIn", "getAllKeysIn_default", "DataView", "DataView_default", "Promise", "Promise_default", "Set", "Set_default", "promiseTag", "dataViewCtorString", "mapCtorString", "promiseCtorString", "setCtorString", "weakMapCtorString", "getTag", "ctorString", "getTag_default", "Uint8Array", "Uint8Array_default", "setCacheAdd", "setCacheAdd_default", "setCacheHas", "setCacheHas_default", "SetCache", "SetCache_default", "arraySome", "arraySome_default", "cacheHas", "cacheHas_default", "COMPARE_PARTIAL_FLAG", "COMPARE_UNORDERED_FLAG", "equalArrays", "bitmask", "customizer", "equalFunc", "stack", "isPartial", "arrLength", "othLength", "arrStacked", "othStacked", "seen", "arrValue", "othValue", "compared", "othIndex", "equalArrays_default", "mapToArray", "mapToArray_default", "setToArray", "set", "setToArray_default", "symbolValueOf", "equalByTag", "convert", "stacked", "equalByTag_default", "equalObjects", "objProps", "objLength", "othProps", "objStacked", "skipCtor", "objCtor", "othCtor", "equalObjects_default", "baseIsEqualDeep", "objIsArr", "othIsArr", "objTag", "othTag", "objIsObj", "othIsObj", "isSameTag", "objIsWrapped", "othIsWrapped", "objUnwrapped", "othUnwrapped", "baseIsEqualDeep_default", "baseIsEqual", "baseIsEqual_default", "baseIsMatch", "source", "matchData", "noCustomizer", "srcValue", "baseIsMatch_default", "isStrictComparable", "isStrictComparable_default", "getMatchData", "getMatchData_default", "matchesStrictComparable", "matchesStrictComparable_default", "baseMatches", "baseMatches_default", "baseHasIn", "baseHasIn_default", "hasPath", "hasFunc", "hasPath_default", "hasIn", "hasIn_default", "baseMatchesProperty", "baseMatchesProperty_default", "baseProperty", "baseProperty_default", "basePropertyDeep", "basePropertyDeep_default", "property", "property_default", "baseIteratee", "baseIteratee_default", "createBaseFor", "fromRight", "iterable", "createBaseFor_default", "baseFor", "baseFor_default", "baseForOwn", "baseForOwn_default", "isEqual", "isEqual_default", "isEqualWith", "isEqualWith_default", "isUndefined", "isUndefined_default", "mapValues", "mapValues_default", "negate", "negate_default", "baseSet", "nested", "newValue", "baseSet_default", "basePickBy", "paths", "basePickBy_default", "pickBy", "prop", "pickBy_default", "omitBy", "omitBy_default", "generateStringChecks", "checks", "_generateStringCheck", "check", "includesOptions", "datetimePrecision", "generateNumberChecks", "_generateNumberCheck", "generateBigIntChecks", "_generateBigIntCheck", "generateDateChecks", "_generateDateCheck", "dateTs", "d", "generateArrayChecks", "generateSetChecks", "_addZuiExtensions", "_maybeDescribe", "catchall", "catchallString", "left", "right", "mapKeyType", "mapValueType", "argsString", "returns", "_maybeTitle", "_maybeDisplayAs", "_maybeDisabled", "_maybeHidden", "_maybePlaceholder", "_maybeSecret", "_maybeSetMetadata", "reservedKeys", "metadata", "zodNumberToJsonNumber", "zodNumber", "oppositeKey", "DATETIME_REGEX_BASE", "DATETIME_REGEX_OFFSET", "DATETIME_REGEX_OFFSET_NONE", "DATETIME_REGEX_PRECISION_ARBITRARY", "DATETIME_REGEX_PRECISION_SPECIFIC_BEGIN", "DATETIME_REGEX_PRECISION_SPECIFIC_END", "generateDatetimeRegex", "precision", "extractPrecisionAndOffset", "regexSource", "_extractPrecision", "slicedRegex", "regex_utils_exports", "escapeSpecialChars", "unsafeString", "addErrorMessage", "res", "errorMessage", "refs", "setResponseValueAndErrors", "zodPatterns", "parseStringDef", "processPattern", "addFormat", "addPattern", "zodStringToJsonString", "zodString", "positionPredicate", "zodArrayToJsonArray", "zodArray", "toSchema", "zodSetToJsonSet", "zodSet", "zodTupleToJsonTuple", "zodTuple", "undefinedSchema", "nullSchema", "shape", "requiredProperties", "_", "required", "properties", "additionalProperties", "unsupportedLiteral", "_ParseInputLazyPath", "parent", "handleResult", "ctx", "error", "_ZodType", "_defs", "This", "params", "maybeAsyncResult", "getIssueProperties", "val", "setError", "refinementData", "refinement", "incoming", "defaultValueFunc", "catchValueFunc", "clone", "target", "placeholder", "assertIs", "_arg", "assertNever", "_x", "items", "obj", "validKeys", "k", "filtered", "e", "arr", "checker", "joinValues", "separator", "a", "b", "first", "second", "errorMap", "invalid_type_error", "required_error", "supportsExtensions", "zuiExtensions", "filteredZuiExtensions", "iss", "issue", "_ctx", "en_default", "_ZodError", "issues", "sub", "subs", "actualProto", "_mapper", "mapper", "fieldErrors", "processError", "curr", "el", "formErrors", "overrideErrorMap", "errorMaps", "issueData", "fullPath", "fullIssue", "maps", "m", "_ParseStatus", "status", "results", "arrayValue", "syncPairs", "pair", "finalObject", "_ZodAny", "_ZodArray", "defs", "_d", "_e", "_f", "tooBig", "tooSmall", "minLength", "maxLength", "len", "_isEqualWithVisitedTracking", "visited", "_customizerWithVisitedTracking", "cleanedA", "cleanedB", "DEFAULT_OPTIONS", "_CustomSet", "opt", "CustomSet", "_ZodBigInt", "thisChecks", "thatChecks", "kind", "inclusive", "min", "ch", "max", "_ZodBoolean", "_ZodBranded", "_ZodCatch", "newCtx", "fatal", "_fatal", "p2", "_ZodDate", "minDate", "maxDate", "_ZodDefault", "unique", "getDiscriminator", "_ZodDiscriminatedUnion", "optionsMap", "discriminator", "discriminatorValue", "discriminatorValues", "compare", "thisOptions", "thatOptions", "_ZodEnum", "expectedValues", "enumValues", "newDef", "thisValues", "thatValues", "_ZodFunction", "makeArgsIssue", "makeReturnsIssue", "fn", "me", "parsedArgs", "parsedReturns", "returnType", "mergeValues", "aType", "bType", "bKeys", "sharedKeys", "newObj", "sharedValue", "newArray", "itemA", "itemB", "_ZodIntersection", "handleParsed", "parsedLeft", "parsedRight", "merged", "thisItems", "thatItems", "_ZodLazy", "getter", "_ZodLiteral", "_ZodMap", "finalMap", "_ZodNaN", "_ZodNativeEnum", "nativeEnumValues", "_ZodNever", "_ZodNull", "_ZodNullable", "floatSafeRemainder", "step", "valDecCount", "stepDecCount", "decCount", "valInt", "stepInt", "_ZodNumber", "deepPartialify", "newShape", "fieldSchema", "_ZodObject", "currentShape", "shapeKeys", "extraKeys", "keyValidator", "unknownKeys", "defaultError", "augmentation", "merging", "mask", "newField", "thisShape", "thatShape", "thisProps", "thatProps", "that", "thisAdditionalProperties", "thatAdditionalProperties", "_ZodOptional", "_ZodPipeline", "inResult", "_ZodPromise", "promisified", "_ZodReadonly", "_ZodRecord", "third", "_ZodRef", "uri", "_ZodSet", "finalizeSet", "elements", "parsedSet", "element", "minSize", "maxSize", "thisMin", "thatMin", "thisMax", "thatMax", "_emojiRegex", "emojiRegex", "isValidIP", "ip", "version", "_ZodString", "regex", "validation", "_ZodSymbol", "_ZodEffects", "effect", "checkCtx", "processed", "executeRefinement", "acc", "inner", "base", "preprocess", "_ZodTuple", "rest", "itemIndex", "schemaItems", "schemas", "_ZodUndefined", "_ZodUnion", "handleResults", "unionErrors", "childCtx", "dirty", "o", "others", "_ZodUnknown", "_ZodVoid", "AI_MODELS", "variableType", "cls", "parseAnyOf", "parseSchema", "parseBoolean", "_schema", "parseDefault", "parseMultipleType", "parseNot", "parseNull", "half", "omit", "withMessage", "r", "got", "opener", "prefix", "closer", "originalIndex", "ensureOriginalIndex", "newArr", "parseAllOf", "parseArray", "v", "json", "parseConst", "parseEnum", "parseIfThenElse", "$if", "$then", "$else", "parseNumber", "parseOneOf", "parseObject", "objectSchema", "propSchema", "hasDefault", "patternProperties", "parsedPatternProperties", "its", "parseString", "parseNullable", "parseRef", "parseDiscriminator", "blockMeta", "parsed", "selectParser", "addMeta", "addDefaults", "evalZuiString", "zuiString", "thrown", "jsonSchemaToZodStr", "jsonSchemaToZod", "code", "evaluationResult", "applyZuiPropsRecursively", "zodField", "jsonSchemaField", "nestedField", "arrayShape", "zodSchema", "isOptionalSchema", "isUndefinedSchema", "isNullableSchema", "isUnknownSchema", "isDiscriminatedUnionSchema", "numberJSONSchemaToZuiNumber", "minimum", "exclusiveMinimum", "maximum", "exclusiveMaximum", "multipleOf", "format", "stringJSONSchemaToZuiString", "toZuiPrimitive", "zuiPrimitive", "primitiveValues", "arrayJSONSchemaToZuiArray", "toZui", "_isTuple", "_handleTuple", "_isSet", "_handleSet", "_handleArray", "additionalItems", "itemSchemas", "minItems", "maxItems", "DEFAULT_TYPE", "_fromJSONSchema", "tmp", "__objRest", "zSchema", "catchAll", "mapped", "zLeft", "zRight", "dateTimeRegex", "isRoot", "applyOptions", "newType", "hasProperties", "parseAnyDef", "parseArrayDef", "parseDef", "parseBigintDef", "parseBooleanDef", "parseBrandedDef", "_def", "parseCatchDef", "parseDateDef", "integerDateParser", "parseDefaultDef", "parseEffectsDef", "parseEnumDef", "isJsonSchema7AllOfType", "parseIntersectionDef", "allOf", "unevaluatedProperties", "mergedAllOf", "nestedSchema", "parseLiteralDef", "parsedType", "parseRecordDef", "parseMapDef", "parseNativeEnumDef", "actualValues", "parsedTypes", "parseNeverDef", "parseNullDef", "primitiveMappings", "parseUnionDef", "asUnionOf", "uniqueTypes", "unionOf", "parseNullableDef", "parseNumberDef", "getAdditionalProperties", "parseObjectDef", "propName", "propDef", "parsedDef", "parseOptionalDef", "innerSchema", "parsePipelineDef", "parsePromiseDef", "parseSetDef", "parseTupleDef", "parseUndefinedDef", "parseUnknownDef", "parseReadonlyDef", "parseRefDef", "forceResolution", "seenItem", "seenSchema", "get$ref", "newItem", "jsonSchema", "getRelativePath", "pathA", "pathB", "typeName", "defaultOptions", "getDefaultOptions", "getRefs", "_options", "currentPath", "zodToJsonSchema", "definitions", "main", "combined", "zuiType", "mergeObjectSchemas", "a", "b", "aDef", "bDef", "z_exports", "aShape", "bShape", "zui_default", "NonEmptyString", "z_exports", "textMessageSchema", "markdownMessageSchema", "imageMessageSchema", "audioMessageSchema", "videoMessageSchema", "fileMessageSchema", "locationMessageSchema", "cardSchema", "choiceSchema", "carouselSchema", "blocItemSchema", "blocSchema", "markdown", "markdownBloc", "defaults", "WELL_KNOWN_ATTRIBUTES", "import_browser_or_node", "log", "parseBody", "req", "serve", "handler", "port", "callback", "defaultCallback", "server", "res", "request", "mapIncomingMessageToRequest", "response", "thrown", "error", "log", "incoming", "body", "readBody", "headers", "key", "value", "url", "trimPrefix", "prefix", "resolve", "reject", "chunk", "e", "import_client", "record_utils_exports", "__export", "mapKeys", "mapValues", "mergeRecords", "pairs", "stripUndefinedProps", "values", "obj", "fn", "key", "value", "a", "b", "merge", "allKeys", "uniqueKeys", "result", "aValue", "bValue", "array_utils_exports", "__export", "safePush", "unique", "arr", "values", "function_utils_exports", "__export", "setName", "f", "name", "resolveInterface", "intrface", "name", "version", "resolved", "statement", "record_utils_exports", "entity", "entitySchemas", "actionName", "action", "resolvedInputSchema", "resolvedOutputSchema", "newActionName", "eventName", "event", "resolvedEventSchema", "newEventName", "channelName", "channel", "messages", "messageName", "message", "resolvedMessageSchema", "newChannelName", "version", "SDK_VERSION", "version", "schemaName", "createStore", "props", "record_utils_exports", "e", "k", "isBranded", "schema", "getName", "IntegrationDefinition", "props", "SDK_VERSION", "interfacePkg", "builder", "entities", "actions", "events", "channels", "self", "entityNames", "e", "key", "resolved", "statement", "resolveInterface", "record_utils_exports", "extensionBuilderInput", "createStore", "extensionBuilderOutput", "unbrandedEntity", "_k", "isBranded", "getName", "a", "b", "mergeObjectSchemas", "messages", "conversation", "message", "import_client", "client", "retryConfig", "err", "retryCount", "axiosError", "_getRetryAfterSeconds", "headers", "headerNames", "headerName", "headerValue", "_parseHeaderToSeconds", "secondsDiff", "_isDateString", "_parseDateToSeconds", "futureDate", "_parseDateString", "currentDate", "date", "IntegrationSpecificClient", "_client", "x", "r", "ActionMetadataStore", "cost", "PLUGIN_PREFIX_SEPARATOR", "BOT_ID_HEADER", "BOT_USER_ID_HEADER", "INTEGRATION_ID_HEADER", "INTEGRATION_ALIAS_HEADER", "WEBHOOK_ID_HEADER", "CONFIGURATION_TYPE_HEADER", "CONFIGURATION_PAYLOAD_HEADER", "OPERATION_TYPE_HEADER", "OPERATION_SUBTYPE_HEADER", "throwError", "thrown", "integrationOperationSchema", "z_exports", "extractContext", "headers", "BOT_ID_HEADER", "throwError", "BOT_USER_ID_HEADER", "INTEGRATION_ID_HEADER", "INTEGRATION_ALIAS_HEADER", "WEBHOOK_ID_HEADER", "OPERATION_TYPE_HEADER", "CONFIGURATION_TYPE_HEADER", "CONFIGURATION_PAYLOAD_HEADER", "import_util", "BaseLogger", "defaultOptions", "args", "level", "msg", "util", "IntegrationLogger", "_IntegrationLogger", "BaseLogger", "options", "userId", "conversationId", "visibleToBotOwners", "msg", "extractTracingHeaders", "headers", "acc", "header", "getServerProps", "ctx", "req", "instance", "traceId", "vanillaClient", "retryConfig", "client", "IntegrationSpecificClient", "logger", "IntegrationLogger", "handleOperation", "props", "onWebhook", "onRegister", "onUnregister", "onMessageCreated", "onActionTriggered", "onPing", "onCreateUser", "onCreateConversation", "integrationHandler", "extractContext", "response", "onUnknownOperationHandler", "error", "runtimeError", "_", "incomingRequest", "parseBody", "webhookUrl", "tags", "channel", "conversation", "user", "type", "payload", "message", "channelHandler", "messageHandler", "input", "action", "metadata", "ActionMetadataStore", "handler", "IntegrationImplementation", "props", "integrationHandler", "port", "serve", "BotDefinition", "props", "SDK_VERSION", "integrationPkg", "config", "self", "integrationAlias", "pluginPkg", "pluginAlias", "interfaces", "_", "dep", "pluginIfaceAlias", "pluginIfaceConfig", "integrationInstance", "availableIntegrations", "integrationInterfaceExtension", "availableInterfaces", "integrations", "pluginIntegAlias", "pluginIntegConfig", "user1", "user2", "conversation1", "conversation2", "message1", "message2", "states1", "states2", "events1", "events2", "recurringEvents1", "recurringEvents2", "actions1", "actions2", "tables1", "tables2", "workflows1", "workflows2", "obj", "record_utils_exports", "key", "PLUGIN_PREFIX_SEPARATOR", "zuiReferenceMap", "pluginInstance", "installedPlugins", "pluginInterfaceExtensions", "interfaceAlias", "pluginInterfaceExtension", "backingIntegration", "entityExtensions", "entityAlias", "interfaceEntityName", "entitySchema", "schema", "definitions", "definition", "import_client", "BotLogger", "_BotLogger", "BaseLogger", "options", "userId", "conversationId", "workflowId", "eventId", "messageId", "BotSpecificClient", "_client", "_hooks", "x", "operation", "req", "before", "res", "after", "botOperationSchema", "z_exports", "extractContext", "headers", "BOT_ID_HEADER", "throwError", "OPERATION_TYPE_HEADER", "OPERATION_SUBTYPE_HEADER", "CONFIGURATION_PAYLOAD_HEADER", "SUCCESS_RESPONSE", "bridgeUpdateTypeToSnakeCase", "updateType", "WORKFLOW_UPDATE_TYPES", "handleWorkflowUpdateEvent", "rawProps", "event", "props", "_attachWorkflowContextToLogger", "SUCCESS_RESPONSE", "_handleWorkflowUpdate", "updateType", "bridgeUpdateTypeToSnakeCase", "handlers", "updatedWorkflow", "_dispatchToHandlers", "currentWorkflowState", "handler", "botHandler", "bot", "req", "ctx", "extractContext", "logger", "BotLogger", "vanillaClient", "retryConfig", "botClient", "BotSpecificClient", "beforeOutgoingMessageHooks", "handler", "client", "beforeOutgoingCallActionHooks", "res", "afterOutgoingMessageHooks", "type", "afterOutgoingCallActionHooks", "props", "onActionTriggered", "onEventReceived", "onRegister", "onUnregister", "onPing", "thrown", "error", "runtimeError", "_", "SUCCESS_RESPONSE", "serverProps", "self", "common", "body", "parseBody", "handleWorkflowUpdateEvent", "event", "message", "beforeIncomingMessageHooks", "hookOutput", "messagePayload", "messageHandlers", "afterIncomingMessageHooks", "state", "statePayload", "stateHandlers", "beforeIncomingEventHooks", "eventPayload", "eventHandlers", "afterIncomingEventHooks", "input", "beforeIncomingCallActionHooks", "action", "output", "afterIncomingCallActionHooks", "unprefixTagsOwnedByPlugin", "obj", "alias", "prefix", "PLUGIN_PREFIX_SEPARATOR", "unprefixedTags", "key", "value", "prefixTagsIfNeeded", "prefixedTags", "AsyncCollection", "_list", "amount", "arr", "i", "result", "elements", "items", "meta", "createAsyncCollection", "listFn", "proxyWorkflows", "props", "_", "workflowName", "input", "createAsyncCollection", "nextToken", "meta", "workflows", "workflow", "wrapWorkflowInstance", "prefixTagsIfNeeded", "isAcknowledged", "unprefixTagsOwnedByPlugin", "x", "failureReason", "output", "BotImplementation", "props", "_", "actionName", "action", "function_utils_exports", "proxyWorkflows", "pluginAlias", "plugin", "actionPrefix", "nameWithoutPrefix", "PLUGIN_PREFIX_SEPARATOR", "messageName", "pluginHandlers", "selfSpecificHandlers", "selfGlobalHandlers", "selfHandlers", "a", "b", "handler", "array_utils_exports", "eventName", "stateName", "hookType", "hookDataName", "selfHooks", "updateType", "handlersOfType", "workflowName", "currentWorkflowState", "wrapWorkflowInstance", "newState", "type", "botHandler", "port", "serve", "InterfaceDefinition", "props", "entityReferences", "events", "record_utils_exports", "event", "actions", "action", "channels", "channel", "message", "SDK_VERSION", "entities", "entityName", "entityDef", "title", "description", "refSchema", "zui_default", "PluginDefinition", "props", "entities", "interfaceAlias", "interfaceDef", "entityName", "z_exports", "aliases", "alias", "stateName", "stateDef", "eventName", "eventDef", "actionName", "actionDef", "tableName", "tableDef", "SDK_VERSION", "intersectWithUnknownRecord", "zuiReferenceMap", "interfacePackage", "entityDefinition", "schema", "definitions", "key", "definition", "proxyActions", "client", "props", "_target", "integrationOrInterfaceAlias", "actionName", "input", "integrationAlias", "actualActionName", "res", "proxyMessages", "props", "id", "response", "proxyMessage", "listProps", "createAsyncCollection", "nextToken", "prefixTagsIfNeeded", "meta", "messages", "message", "unprefixTagsOwnedByPlugin", "data", "updatedMessage", "proxyUsers", "props", "listProps", "createAsyncCollection", "nextToken", "prefixTagsIfNeeded", "meta", "users", "user", "proxyUser", "id", "response", "baseActionableUser", "unprefixTagsOwnedByPlugin", "data", "updatedUser", "conversationId", "participant", "proxyConversations", "props", "_target", "interfaceOrIntegrationAlias", "_target2", "channel", "listProps", "integrationName", "actualChannelName", "createAsyncCollection", "nextToken", "prefixTagsIfNeeded", "meta", "conversations", "conversation", "proxyConversation", "id", "response", "vanillaClient", "unprefixTagsOwnedByPlugin", "data", "updatedConversation", "proxyMessage", "message", "messages", "participants", "user", "proxyUser", "_EventSender", "__EventSender", "_props", "eventPayload", "conversationId", "userId", "messageId", "event", "schedule", "props", "createAsyncCollection", "nextToken", "meta", "events", "proxyEvents", "client", "_target", "eventName", "actualName", "PLUGIN_PREFIX_SEPARATOR", "_StateRepo", "_client", "_stateType", "_stateName", "id", "r", "payload", "options", "proxyStates", "client", "props", "_target", "stateType", "stateName", "actualName", "PLUGIN_PREFIX_SEPARATOR", "PluginImplementation", "props", "client", "configuration", "interfaces", "integrations", "alias", "actions", "proxyActions", "states", "proxyStates", "workflows", "proxyWorkflows", "events", "proxyEvents", "users", "proxyUsers", "conversations", "proxyConversations", "messages", "proxyMessages", "_", "actionName", "handler", "function_utils_exports", "input", "messageName", "specificHandlers", "globalHandlers", "array_utils_exports", "b", "proxyUser", "proxyMessage", "proxyConversation", "eventName", "interfaceHandlers", "e", "handlers", "a", "stateName", "hookType", "hooks", "hookDataName", "unprefixTagsOwnedByPlugin", "updateType", "handlersOfType", "workflowName", "currentWorkflowState", "wrapWorkflowInstance", "newState", "type", "actualEventRef", "targetEventRef", "pluginIfaceOrIntAlias", "ifaceOrIntEvent", "iface", "integration", "prop", "prefix", "version_utils_exports", "__export", "allWithinMajorOf", "allWithinMinorOf", "semver", "pkg", "major", "minor"]
|
|
7
7
|
}
|