@botpress/sdk 4.6.0 → 4.7.0

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.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react.production.min.js", "../../../node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react.development.js", "../../../node_modules/.pnpm/react@18.3.1/node_modules/react/index.js", "../src/index.ts", "../src/message.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/z/z.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/ui/constants.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/ui/hooks/useDiscriminator.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/ui/hooks/useFormData.tsx", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/ui/utils.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/common/utils.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/common/errors.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/zui-to-typescript-type/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_freeGlobal.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_root.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_Symbol.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_getRawTag.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_objectToString.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseGetTag.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isObjectLike.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isSymbol.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_arrayMap.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isArray.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseToString.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isObject.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/identity.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isFunction.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_coreJsData.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_isMasked.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_toSource.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseIsNative.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_getValue.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_getNative.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_WeakMap.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_defineProperty.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_isIndex.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseAssignValue.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/eq.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isLength.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isArrayLike.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_isPrototype.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseTimes.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseIsArguments.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isArguments.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/stubFalse.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isBuffer.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseIsTypedArray.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseUnary.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_nodeUtil.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isTypedArray.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_arrayLikeKeys.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_overArg.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_nativeKeys.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseKeys.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/keys.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_isKey.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_nativeCreate.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_hashClear.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_hashDelete.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_hashGet.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_hashHas.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_hashSet.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_Hash.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_listCacheClear.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_assocIndexOf.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_listCacheDelete.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_listCacheGet.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_listCacheHas.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_listCacheSet.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_ListCache.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_Map.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_mapCacheClear.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_isKeyable.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_getMapData.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_mapCacheDelete.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_mapCacheGet.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_mapCacheHas.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_mapCacheSet.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_MapCache.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/memoize.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_memoizeCapped.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_stringToPath.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/toString.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_castPath.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_toKey.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseGet.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/get.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_arrayPush.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_stackClear.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_stackDelete.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_stackGet.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_stackHas.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_stackSet.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_Stack.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_arrayFilter.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/stubArray.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_getSymbols.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseGetAllKeys.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_getAllKeys.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_DataView.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_Promise.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_Set.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_getTag.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_Uint8Array.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_setCacheAdd.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_setCacheHas.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_SetCache.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_arraySome.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_cacheHas.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_equalArrays.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_mapToArray.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_setToArray.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_equalByTag.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_equalObjects.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseIsEqualDeep.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseIsEqual.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseIsMatch.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_isStrictComparable.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_getMatchData.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_matchesStrictComparable.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseMatches.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseHasIn.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_hasPath.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/hasIn.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseMatchesProperty.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseProperty.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_basePropertyDeep.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/property.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseIteratee.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_createBaseFor.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseFor.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/_baseForOwn.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/isEqual.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es/mapValues.js", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/zui-to-typescript-schema/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/z/types/basetype/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/z/types/defs.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/z/types/utils/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/z/types/error/locales/en.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/z/types/error/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/z/types/utils/parseUtil.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/z/types/utils/errorUtil.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/z/types/any/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/z/types/array/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/z/types/utils/custom-set.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/z/types/bigint/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/z/types/boolean/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/z/types/branded/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/z/types/catch/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/z/types/custom/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/z/types/date/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/z/types/default/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/z/utils.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/z/types/discriminatedUnion/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/z/types/enum/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/z/types/function/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/z/types/intersection/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/z/types/lazy/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/z/types/literal/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/z/types/map/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/z/types/nan/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/z/types/nativeEnum/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/z/types/never/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/z/types/null/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/z/types/nullable/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/z/types/number/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/z/types/object/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/z/types/optional/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/z/types/pipeline/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/z/types/promise/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/z/types/readonly/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/z/types/record/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/z/types/ref/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/z/types/set/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/z/types/string/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/z/types/symbol/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/z/types/transformer/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/z/types/tuple/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/z/types/undefined/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/z/types/union/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/z/types/unknown/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/z/types/void/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/object-to-zui/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema/parsers/any.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema/errorMessages.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema/parsers/array.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema/parsers/bigint.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema/parsers/boolean.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema/parsers/branded.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema/parsers/catch.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema/parsers/date.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema/parsers/default.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema/parsers/effects.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema/parsers/enum.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema/parsers/intersection.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema/parsers/literal.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema/parsers/string.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema/parsers/record.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema/parsers/map.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema/parsers/nativeEnum.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema/parsers/never.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema/parsers/null.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema/parsers/union.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema/parsers/nullable.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema/parsers/number.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema/parsers/object.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema/parsers/optional.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema/parsers/pipeline.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema/parsers/promise.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema/parsers/set.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema/parsers/tuple.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema/parsers/undefined.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema/parsers/unknown.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema/parsers/readonly.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema/parsers/ref.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema/parseDef.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema/Options.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema/Refs.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema/zodToJsonSchema.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/zui-to-json-schema/zui-extension.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/z/extensions.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/z/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/json-schema-to-zui/parsers/parseAnyOf.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/json-schema-to-zui/parsers/parseBoolean.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/json-schema-to-zui/parsers/parseDefault.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/json-schema-to-zui/parsers/parseMultipleType.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/json-schema-to-zui/parsers/parseNot.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/json-schema-to-zui/parsers/parseNull.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/json-schema-to-zui/utils.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/json-schema-to-zui/parsers/parseAllOf.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/json-schema-to-zui/parsers/parseArray.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/json-schema-to-zui/parsers/parseConst.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/json-schema-to-zui/parsers/parseEnum.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/json-schema-to-zui/parsers/parseIfThenElse.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/json-schema-to-zui/parsers/parseNumber.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/json-schema-to-zui/parsers/parseOneOf.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/json-schema-to-zui/parsers/parseObject.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/json-schema-to-zui/parsers/parseString.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/json-schema-to-zui/parsers/parseNullable.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/json-schema-to-zui/parsers/parseRef.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/json-schema-to-zui/parsers/parseDiscriminator.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/json-schema-to-zui/parsers/parseSchema.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/common/eval-zui-string.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/transforms/json-schema-to-zui/index.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/ui/Form.tsx", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/ui/ErrorBoundary.tsx", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/ui/ElementRenderer.tsx", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/ui/component-definitions.ts", "../../../node_modules/.pnpm/@bpinternal+zui@0.13.5/node_modules/@bpinternal/zui/src/index.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", "../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/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/workflow-proxy/proxy.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/bot/implementation.ts", "../src/interface/definition.ts", "../src/plugin/definition.ts", "../src/plugin/interface-resolution.ts", "../src/plugin/action-proxy/proxy.ts", "../src/plugin/state-proxy/proxy.ts", "../src/plugin/implementation.ts"],
4
- "sourcesContent": ["/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1<g){for(var f=Array(g),m=0;m<g;m++)f[m]=arguments[m+2];c.children=f}if(a&&a.defaultProps)for(d in g=a.defaultProps,g)void 0===c[d]&&(c[d]=g[d]);return{$$typeof:l,type:a,key:k,ref:h,props:c,_owner:K.current}}\nfunction N(a,b){return{$$typeof:l,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function O(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===l}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+a.replace(/[=:]/g,function(a){return b[a]})}var P=/\\/+/g;function Q(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(\"\"+a.key):b.toString(36)}\nfunction R(a,b,e,d,c){var k=typeof a;if(\"undefined\"===k||\"boolean\"===k)a=null;var h=!1;if(null===a)h=!0;else switch(k){case \"string\":case \"number\":h=!0;break;case \"object\":switch(a.$$typeof){case l:case n:h=!0}}if(h)return h=a,c=c(h),a=\"\"===d?\".\"+Q(h,0):d,I(c)?(e=\"\",null!=a&&(e=a.replace(P,\"$&/\")+\"/\"),R(c,b,e,\"\",function(a){return a})):null!=c&&(O(c)&&(c=N(c,e+(!c.key||h&&h.key===c.key?\"\":(\"\"+c.key).replace(P,\"$&/\")+\"/\")+a)),b.push(c)),1;h=0;d=\"\"===d?\".\":d+\":\";if(I(a))for(var g=0;g<a.length;g++){k=\na[g];var f=d+Q(k,g);h+=R(k,b,e,f,c)}else if(f=A(a),\"function\"===typeof f)for(a=f.call(a),g=0;!(k=a.next()).done;)k=k.value,f=d+Q(k,g++),h+=R(k,b,e,f,c);else if(\"object\"===k)throw b=String(a),Error(\"Objects are not valid as a React child (found: \"+(\"[object Object]\"===b?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":b)+\"). If you meant to render a collection of children, use an array instead.\");return h}\nfunction S(a,b,e){if(null==a)return a;var d=[],c=0;R(a,d,\"\",\"\",function(a){return b.call(e,a,c++)});return d}function T(a){if(-1===a._status){var b=a._result;b=b();b.then(function(b){if(0===a._status||-1===a._status)a._status=1,a._result=b},function(b){if(0===a._status||-1===a._status)a._status=2,a._result=b});-1===a._status&&(a._status=0,a._result=b)}if(1===a._status)return a._result.default;throw a._result;}\nvar U={current:null},V={transition:null},W={ReactCurrentDispatcher:U,ReactCurrentBatchConfig:V,ReactCurrentOwner:K};function X(){throw Error(\"act(...) is not supported in production builds of React.\");}\nexports.Children={map:S,forEach:function(a,b,e){S(a,function(){b.apply(this,arguments)},e)},count:function(a){var b=0;S(a,function(){b++});return b},toArray:function(a){return S(a,function(a){return a})||[]},only:function(a){if(!O(a))throw Error(\"React.Children.only expected to receive a single React element child.\");return a}};exports.Component=E;exports.Fragment=p;exports.Profiler=r;exports.PureComponent=G;exports.StrictMode=q;exports.Suspense=w;\nexports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=W;exports.act=X;\nexports.cloneElement=function(a,b,e){if(null===a||void 0===a)throw Error(\"React.cloneElement(...): The argument must be a React element, but you passed \"+a+\".\");var d=C({},a.props),c=a.key,k=a.ref,h=a._owner;if(null!=b){void 0!==b.ref&&(k=b.ref,h=K.current);void 0!==b.key&&(c=\"\"+b.key);if(a.type&&a.type.defaultProps)var g=a.type.defaultProps;for(f in b)J.call(b,f)&&!L.hasOwnProperty(f)&&(d[f]=void 0===b[f]&&void 0!==g?g[f]:b[f])}var f=arguments.length-2;if(1===f)d.children=e;else if(1<f){g=Array(f);\nfor(var m=0;m<f;m++)g[m]=arguments[m+2];d.children=g}return{$$typeof:l,type:a.type,key:c,ref:k,props:d,_owner:h}};exports.createContext=function(a){a={$$typeof:u,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null};a.Provider={$$typeof:t,_context:a};return a.Consumer=a};exports.createElement=M;exports.createFactory=function(a){var b=M.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};\nexports.forwardRef=function(a){return{$$typeof:v,render:a}};exports.isValidElement=O;exports.lazy=function(a){return{$$typeof:y,_payload:{_status:-1,_result:a},_init:T}};exports.memo=function(a,b){return{$$typeof:x,type:a,compare:void 0===b?null:b}};exports.startTransition=function(a){var b=V.transition;V.transition={};try{a()}finally{V.transition=b}};exports.unstable_act=X;exports.useCallback=function(a,b){return U.current.useCallback(a,b)};exports.useContext=function(a){return U.current.useContext(a)};\nexports.useDebugValue=function(){};exports.useDeferredValue=function(a){return U.current.useDeferredValue(a)};exports.useEffect=function(a,b){return U.current.useEffect(a,b)};exports.useId=function(){return U.current.useId()};exports.useImperativeHandle=function(a,b,e){return U.current.useImperativeHandle(a,b,e)};exports.useInsertionEffect=function(a,b){return U.current.useInsertionEffect(a,b)};exports.useLayoutEffect=function(a,b){return U.current.useLayoutEffect(a,b)};\nexports.useMemo=function(a,b){return U.current.useMemo(a,b)};exports.useReducer=function(a,b,e){return U.current.useReducer(a,b,e)};exports.useRef=function(a){return U.current.useRef(a)};exports.useState=function(a){return U.current.useState(a)};exports.useSyncExternalStore=function(a,b,e){return U.current.useSyncExternalStore(a,b,e)};exports.useTransition=function(){return U.current.useTransition()};exports.version=\"18.3.1\";\n", "/**\n * @license React\n * react.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n\n 'use strict';\n\n/* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart ===\n 'function'\n) {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error());\n}\n var ReactVersion = '18.3.1';\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types.\nvar REACT_ELEMENT_TYPE = Symbol.for('react.element');\nvar REACT_PORTAL_TYPE = Symbol.for('react.portal');\nvar REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');\nvar REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');\nvar REACT_PROFILER_TYPE = Symbol.for('react.profiler');\nvar REACT_PROVIDER_TYPE = Symbol.for('react.provider');\nvar REACT_CONTEXT_TYPE = Symbol.for('react.context');\nvar REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');\nvar REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');\nvar REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');\nvar REACT_MEMO_TYPE = Symbol.for('react.memo');\nvar REACT_LAZY_TYPE = Symbol.for('react.lazy');\nvar REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');\nvar MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator';\nfunction getIteratorFn(maybeIterable) {\n if (maybeIterable === null || typeof maybeIterable !== 'object') {\n return null;\n }\n\n var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];\n\n if (typeof maybeIterator === 'function') {\n return maybeIterator;\n }\n\n return null;\n}\n\n/**\n * Keeps track of the current dispatcher.\n */\nvar ReactCurrentDispatcher = {\n /**\n * @internal\n * @type {ReactComponent}\n */\n current: null\n};\n\n/**\n * Keeps track of the current batch's configuration such as how long an update\n * should suspend for if it needs to.\n */\nvar ReactCurrentBatchConfig = {\n transition: null\n};\n\nvar ReactCurrentActQueue = {\n current: null,\n // Used to reproduce behavior of `batchedUpdates` in legacy mode.\n isBatchingLegacy: false,\n didScheduleLegacyUpdate: false\n};\n\n/**\n * Keeps track of the current owner.\n *\n * The current owner is the component who should own any components that are\n * currently being constructed.\n */\nvar ReactCurrentOwner = {\n /**\n * @internal\n * @type {ReactComponent}\n */\n current: null\n};\n\nvar ReactDebugCurrentFrame = {};\nvar currentExtraStackFrame = null;\nfunction setExtraStackFrame(stack) {\n {\n currentExtraStackFrame = stack;\n }\n}\n\n{\n ReactDebugCurrentFrame.setExtraStackFrame = function (stack) {\n {\n currentExtraStackFrame = stack;\n }\n }; // Stack implementation injected by the current renderer.\n\n\n ReactDebugCurrentFrame.getCurrentStack = null;\n\n ReactDebugCurrentFrame.getStackAddendum = function () {\n var stack = ''; // Add an extra top frame while an element is being validated\n\n if (currentExtraStackFrame) {\n stack += currentExtraStackFrame;\n } // Delegate to the injected renderer-specific implementation\n\n\n var impl = ReactDebugCurrentFrame.getCurrentStack;\n\n if (impl) {\n stack += impl() || '';\n }\n\n return stack;\n };\n}\n\n// -----------------------------------------------------------------------------\n\nvar enableScopeAPI = false; // Experimental Create Event Handle API.\nvar enableCacheElement = false;\nvar enableTransitionTracing = false; // No known bugs, but needs performance testing\n\nvar enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber\n// stuff. Intended to enable React core members to more easily debug scheduling\n// issues in DEV builds.\n\nvar enableDebugTracing = false; // Track which Fiber(s) schedule render work.\n\nvar ReactSharedInternals = {\n ReactCurrentDispatcher: ReactCurrentDispatcher,\n ReactCurrentBatchConfig: ReactCurrentBatchConfig,\n ReactCurrentOwner: ReactCurrentOwner\n};\n\n{\n ReactSharedInternals.ReactDebugCurrentFrame = ReactDebugCurrentFrame;\n ReactSharedInternals.ReactCurrentActQueue = ReactCurrentActQueue;\n}\n\n// by calls to these methods by a Babel plugin.\n//\n// In PROD (or in packages without access to React internals),\n// they are left as they are instead.\n\nfunction warn(format) {\n {\n {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n printWarning('warn', format, args);\n }\n }\n}\nfunction error(format) {\n {\n {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n printWarning('error', format, args);\n }\n }\n}\n\nfunction printWarning(level, format, args) {\n // When changing this logic, you might want to also\n // update consoleWithStackDev.www.js as well.\n {\n var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n var stack = ReactDebugCurrentFrame.getStackAddendum();\n\n if (stack !== '') {\n format += '%s';\n args = args.concat([stack]);\n } // eslint-disable-next-line react-internal/safe-string-coercion\n\n\n var argsWithFormat = args.map(function (item) {\n return String(item);\n }); // Careful: RN currently depends on this prefix\n\n argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it\n // breaks IE9: https://github.com/facebook/react/issues/13610\n // eslint-disable-next-line react-internal/no-production-logging\n\n Function.prototype.apply.call(console[level], console, argsWithFormat);\n }\n}\n\nvar didWarnStateUpdateForUnmountedComponent = {};\n\nfunction warnNoop(publicInstance, callerName) {\n {\n var _constructor = publicInstance.constructor;\n var componentName = _constructor && (_constructor.displayName || _constructor.name) || 'ReactClass';\n var warningKey = componentName + \".\" + callerName;\n\n if (didWarnStateUpdateForUnmountedComponent[warningKey]) {\n return;\n }\n\n error(\"Can't call %s on a component that is not yet mounted. \" + 'This is a no-op, but it might indicate a bug in your application. ' + 'Instead, assign to `this.state` directly or define a `state = {};` ' + 'class property with the desired state in the %s component.', callerName, componentName);\n\n didWarnStateUpdateForUnmountedComponent[warningKey] = true;\n }\n}\n/**\n * This is the abstract API for an update queue.\n */\n\n\nvar ReactNoopUpdateQueue = {\n /**\n * Checks whether or not this composite component is mounted.\n * @param {ReactClass} publicInstance The instance we want to test.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function (publicInstance) {\n return false;\n },\n\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {?function} callback Called after component is updated.\n * @param {?string} callerName name of the calling function in the public API.\n * @internal\n */\n enqueueForceUpdate: function (publicInstance, callback, callerName) {\n warnNoop(publicInstance, 'forceUpdate');\n },\n\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} completeState Next state.\n * @param {?function} callback Called after component is updated.\n * @param {?string} callerName name of the calling function in the public API.\n * @internal\n */\n enqueueReplaceState: function (publicInstance, completeState, callback, callerName) {\n warnNoop(publicInstance, 'replaceState');\n },\n\n /**\n * Sets a subset of the state. This only exists because _pendingState is\n * internal. This provides a merging strategy that is not available to deep\n * properties which is confusing. TODO: Expose pendingState or don't use it\n * during the merge.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} partialState Next partial state to be merged with state.\n * @param {?function} callback Called after component is updated.\n * @param {?string} Name of the calling function in the public API.\n * @internal\n */\n enqueueSetState: function (publicInstance, partialState, callback, callerName) {\n warnNoop(publicInstance, 'setState');\n }\n};\n\nvar assign = Object.assign;\n\nvar emptyObject = {};\n\n{\n Object.freeze(emptyObject);\n}\n/**\n * Base class helpers for the updating state of a component.\n */\n\n\nfunction Component(props, context, updater) {\n this.props = props;\n this.context = context; // If a component has string refs, we will assign a different object later.\n\n this.refs = emptyObject; // We initialize the default updater but the real one gets injected by the\n // renderer.\n\n this.updater = updater || ReactNoopUpdateQueue;\n}\n\nComponent.prototype.isReactComponent = {};\n/**\n * Sets a subset of the state. Always use this to mutate\n * state. You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * There is no guarantee that calls to `setState` will run synchronously,\n * as they may eventually be batched together. You can provide an optional\n * callback that will be executed when the call to setState is actually\n * completed.\n *\n * When a function is provided to setState, it will be called at some point in\n * the future (not synchronously). It will be called with the up to date\n * component arguments (state, props, context). These values can be different\n * from this.* because your function may be called after receiveProps but before\n * shouldComponentUpdate, and this new state, props, and context will not yet be\n * assigned to this.\n *\n * @param {object|function} partialState Next partial state or function to\n * produce next partial state to be merged with current state.\n * @param {?function} callback Called after state is updated.\n * @final\n * @protected\n */\n\nComponent.prototype.setState = function (partialState, callback) {\n if (typeof partialState !== 'object' && typeof partialState !== 'function' && partialState != null) {\n throw new Error('setState(...): takes an object of state variables to update or a ' + 'function which returns an object of state variables.');\n }\n\n this.updater.enqueueSetState(this, partialState, callback, 'setState');\n};\n/**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {?function} callback Called after update is complete.\n * @final\n * @protected\n */\n\n\nComponent.prototype.forceUpdate = function (callback) {\n this.updater.enqueueForceUpdate(this, callback, 'forceUpdate');\n};\n/**\n * Deprecated APIs. These APIs used to exist on classic React classes but since\n * we would like to deprecate them, we're not going to move them over to this\n * modern base class. Instead, we define a getter that warns if it's accessed.\n */\n\n\n{\n var deprecatedAPIs = {\n isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'],\n replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).']\n };\n\n var defineDeprecationWarning = function (methodName, info) {\n Object.defineProperty(Component.prototype, methodName, {\n get: function () {\n warn('%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]);\n\n return undefined;\n }\n });\n };\n\n for (var fnName in deprecatedAPIs) {\n if (deprecatedAPIs.hasOwnProperty(fnName)) {\n defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);\n }\n }\n}\n\nfunction ComponentDummy() {}\n\nComponentDummy.prototype = Component.prototype;\n/**\n * Convenience component with default shallow equality check for sCU.\n */\n\nfunction PureComponent(props, context, updater) {\n this.props = props;\n this.context = context; // If a component has string refs, we will assign a different object later.\n\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n}\n\nvar pureComponentPrototype = PureComponent.prototype = new ComponentDummy();\npureComponentPrototype.constructor = PureComponent; // Avoid an extra prototype jump for these methods.\n\nassign(pureComponentPrototype, Component.prototype);\npureComponentPrototype.isPureReactComponent = true;\n\n// an immutable object with a single mutable value\nfunction createRef() {\n var refObject = {\n current: null\n };\n\n {\n Object.seal(refObject);\n }\n\n return refObject;\n}\n\nvar isArrayImpl = Array.isArray; // eslint-disable-next-line no-redeclare\n\nfunction isArray(a) {\n return isArrayImpl(a);\n}\n\n/*\n * The `'' + value` pattern (used in in perf-sensitive code) throws for Symbol\n * and Temporal.* types. See https://github.com/facebook/react/pull/22064.\n *\n * The functions in this module will throw an easier-to-understand,\n * easier-to-debug exception with a clear errors message message explaining the\n * problem. (Instead of a confusing exception thrown inside the implementation\n * of the `value` object).\n */\n// $FlowFixMe only called in DEV, so void return is not possible.\nfunction typeName(value) {\n {\n // toStringTag is needed for namespaced types like Temporal.Instant\n var hasToStringTag = typeof Symbol === 'function' && Symbol.toStringTag;\n var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || 'Object';\n return type;\n }\n} // $FlowFixMe only called in DEV, so void return is not possible.\n\n\nfunction willCoercionThrow(value) {\n {\n try {\n testStringCoercion(value);\n return false;\n } catch (e) {\n return true;\n }\n }\n}\n\nfunction testStringCoercion(value) {\n // If you ended up here by following an exception call stack, here's what's\n // happened: you supplied an object or symbol value to React (as a prop, key,\n // DOM attribute, CSS property, string ref, etc.) and when React tried to\n // coerce it to a string using `'' + value`, an exception was thrown.\n //\n // The most common types that will cause this exception are `Symbol` instances\n // and Temporal objects like `Temporal.Instant`. But any object that has a\n // `valueOf` or `[Symbol.toPrimitive]` method that throws will also cause this\n // exception. (Library authors do this to prevent users from using built-in\n // numeric operators like `+` or comparison operators like `>=` because custom\n // methods are needed to perform accurate arithmetic or comparison.)\n //\n // To fix the problem, coerce this object or symbol value to a string before\n // passing it to React. The most reliable way is usually `String(value)`.\n //\n // To find which value is throwing, check the browser or debugger console.\n // Before this exception was thrown, there should be `console.error` output\n // that shows the type (Symbol, Temporal.PlainDate, etc.) that caused the\n // problem and how that type was used: key, atrribute, input value prop, etc.\n // In most cases, this console output also shows the component and its\n // ancestor components where the exception happened.\n //\n // eslint-disable-next-line react-internal/safe-string-coercion\n return '' + value;\n}\nfunction checkKeyStringCoercion(value) {\n {\n if (willCoercionThrow(value)) {\n error('The provided key is an unsupported type %s.' + ' This value must be coerced to a string before before using it here.', typeName(value));\n\n return testStringCoercion(value); // throw (to help callers find troubleshooting comments)\n }\n }\n}\n\nfunction getWrappedName(outerType, innerType, wrapperName) {\n var displayName = outerType.displayName;\n\n if (displayName) {\n return displayName;\n }\n\n var functionName = innerType.displayName || innerType.name || '';\n return functionName !== '' ? wrapperName + \"(\" + functionName + \")\" : wrapperName;\n} // Keep in sync with react-reconciler/getComponentNameFromFiber\n\n\nfunction getContextName(type) {\n return type.displayName || 'Context';\n} // Note that the reconciler package should generally prefer to use getComponentNameFromFiber() instead.\n\n\nfunction getComponentNameFromType(type) {\n if (type == null) {\n // Host root, text node or just invalid type.\n return null;\n }\n\n {\n if (typeof type.tag === 'number') {\n error('Received an unexpected object in getComponentNameFromType(). ' + 'This is likely a bug in React. Please file an issue.');\n }\n }\n\n if (typeof type === 'function') {\n return type.displayName || type.name || null;\n }\n\n if (typeof type === 'string') {\n return type;\n }\n\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return 'Fragment';\n\n case REACT_PORTAL_TYPE:\n return 'Portal';\n\n case REACT_PROFILER_TYPE:\n return 'Profiler';\n\n case REACT_STRICT_MODE_TYPE:\n return 'StrictMode';\n\n case REACT_SUSPENSE_TYPE:\n return 'Suspense';\n\n case REACT_SUSPENSE_LIST_TYPE:\n return 'SuspenseList';\n\n }\n\n if (typeof type === 'object') {\n switch (type.$$typeof) {\n case REACT_CONTEXT_TYPE:\n var context = type;\n return getContextName(context) + '.Consumer';\n\n case REACT_PROVIDER_TYPE:\n var provider = type;\n return getContextName(provider._context) + '.Provider';\n\n case REACT_FORWARD_REF_TYPE:\n return getWrappedName(type, type.render, 'ForwardRef');\n\n case REACT_MEMO_TYPE:\n var outerName = type.displayName || null;\n\n if (outerName !== null) {\n return outerName;\n }\n\n return getComponentNameFromType(type.type) || 'Memo';\n\n case REACT_LAZY_TYPE:\n {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n\n try {\n return getComponentNameFromType(init(payload));\n } catch (x) {\n return null;\n }\n }\n\n // eslint-disable-next-line no-fallthrough\n }\n }\n\n return null;\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar RESERVED_PROPS = {\n key: true,\n ref: true,\n __self: true,\n __source: true\n};\nvar specialPropKeyWarningShown, specialPropRefWarningShown, didWarnAboutStringRefs;\n\n{\n didWarnAboutStringRefs = {};\n}\n\nfunction hasValidRef(config) {\n {\n if (hasOwnProperty.call(config, 'ref')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;\n\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n\n return config.ref !== undefined;\n}\n\nfunction hasValidKey(config) {\n {\n if (hasOwnProperty.call(config, 'key')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'key').get;\n\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n\n return config.key !== undefined;\n}\n\nfunction defineKeyPropWarningGetter(props, displayName) {\n var warnAboutAccessingKey = function () {\n {\n if (!specialPropKeyWarningShown) {\n specialPropKeyWarningShown = true;\n\n error('%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n }\n }\n };\n\n warnAboutAccessingKey.isReactWarning = true;\n Object.defineProperty(props, 'key', {\n get: warnAboutAccessingKey,\n configurable: true\n });\n}\n\nfunction defineRefPropWarningGetter(props, displayName) {\n var warnAboutAccessingRef = function () {\n {\n if (!specialPropRefWarningShown) {\n specialPropRefWarningShown = true;\n\n error('%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n }\n }\n };\n\n warnAboutAccessingRef.isReactWarning = true;\n Object.defineProperty(props, 'ref', {\n get: warnAboutAccessingRef,\n configurable: true\n });\n}\n\nfunction warnIfStringRefCannotBeAutoConverted(config) {\n {\n if (typeof config.ref === 'string' && ReactCurrentOwner.current && config.__self && ReactCurrentOwner.current.stateNode !== config.__self) {\n var componentName = getComponentNameFromType(ReactCurrentOwner.current.type);\n\n if (!didWarnAboutStringRefs[componentName]) {\n error('Component \"%s\" contains the string ref \"%s\". ' + 'Support for string refs will be removed in a future major release. ' + 'This case cannot be automatically converted to an arrow function. ' + 'We ask you to manually fix this case by using useRef() or createRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-string-ref', componentName, config.ref);\n\n didWarnAboutStringRefs[componentName] = true;\n }\n }\n }\n}\n/**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, instanceof check\n * will not work. Instead test $$typeof field against Symbol.for('react.element') to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} props\n * @param {*} key\n * @param {string|object} ref\n * @param {*} owner\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @internal\n */\n\n\nvar ReactElement = function (type, key, ref, self, source, owner, props) {\n var element = {\n // This tag allows us to uniquely identify this as a React Element\n $$typeof: REACT_ELEMENT_TYPE,\n // Built-in properties that belong on the element\n type: type,\n key: key,\n ref: ref,\n props: props,\n // Record the component responsible for creating this element.\n _owner: owner\n };\n\n {\n // The validation flag is currently mutative. We put it on\n // an external backing store so that we can freeze the whole object.\n // This can be replaced with a WeakMap once they are implemented in\n // commonly used development environments.\n element._store = {}; // To make comparing ReactElements easier for testing purposes, we make\n // the validation flag non-enumerable (where possible, which should\n // include every environment we run tests in), so the test framework\n // ignores it.\n\n Object.defineProperty(element._store, 'validated', {\n configurable: false,\n enumerable: false,\n writable: true,\n value: false\n }); // self and source are DEV only properties.\n\n Object.defineProperty(element, '_self', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: self\n }); // Two elements created in two different places should be considered\n // equal for testing purposes and therefore we hide it from enumeration.\n\n Object.defineProperty(element, '_source', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: source\n });\n\n if (Object.freeze) {\n Object.freeze(element.props);\n Object.freeze(element);\n }\n }\n\n return element;\n};\n/**\n * Create and return a new ReactElement of the given type.\n * See https://reactjs.org/docs/react-api.html#createelement\n */\n\nfunction createElement(type, config, children) {\n var propName; // Reserved names are extracted\n\n var props = {};\n var key = null;\n var ref = null;\n var self = null;\n var source = null;\n\n if (config != null) {\n if (hasValidRef(config)) {\n ref = config.ref;\n\n {\n warnIfStringRefCannotBeAutoConverted(config);\n }\n }\n\n if (hasValidKey(config)) {\n {\n checkKeyStringCoercion(config.key);\n }\n\n key = '' + config.key;\n }\n\n self = config.__self === undefined ? null : config.__self;\n source = config.__source === undefined ? null : config.__source; // Remaining properties are added to a new props object\n\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n props[propName] = config[propName];\n }\n }\n } // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n\n\n var childrenLength = arguments.length - 2;\n\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n\n {\n if (Object.freeze) {\n Object.freeze(childArray);\n }\n }\n\n props.children = childArray;\n } // Resolve default props\n\n\n if (type && type.defaultProps) {\n var defaultProps = type.defaultProps;\n\n for (propName in defaultProps) {\n if (props[propName] === undefined) {\n props[propName] = defaultProps[propName];\n }\n }\n }\n\n {\n if (key || ref) {\n var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;\n\n if (key) {\n defineKeyPropWarningGetter(props, displayName);\n }\n\n if (ref) {\n defineRefPropWarningGetter(props, displayName);\n }\n }\n }\n\n return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\n}\nfunction cloneAndReplaceKey(oldElement, newKey) {\n var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props);\n return newElement;\n}\n/**\n * Clone and return a new ReactElement using element as the starting point.\n * See https://reactjs.org/docs/react-api.html#cloneelement\n */\n\nfunction cloneElement(element, config, children) {\n if (element === null || element === undefined) {\n throw new Error(\"React.cloneElement(...): The argument must be a React element, but you passed \" + element + \".\");\n }\n\n var propName; // Original props are copied\n\n var props = assign({}, element.props); // Reserved names are extracted\n\n var key = element.key;\n var ref = element.ref; // Self is preserved since the owner is preserved.\n\n var self = element._self; // Source is preserved since cloneElement is unlikely to be targeted by a\n // transpiler, and the original source is probably a better indicator of the\n // true owner.\n\n var source = element._source; // Owner will be preserved, unless ref is overridden\n\n var owner = element._owner;\n\n if (config != null) {\n if (hasValidRef(config)) {\n // Silently steal the ref from the parent.\n ref = config.ref;\n owner = ReactCurrentOwner.current;\n }\n\n if (hasValidKey(config)) {\n {\n checkKeyStringCoercion(config.key);\n }\n\n key = '' + config.key;\n } // Remaining properties override existing props\n\n\n var defaultProps;\n\n if (element.type && element.type.defaultProps) {\n defaultProps = element.type.defaultProps;\n }\n\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n if (config[propName] === undefined && defaultProps !== undefined) {\n // Resolve default props\n props[propName] = defaultProps[propName];\n } else {\n props[propName] = config[propName];\n }\n }\n }\n } // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n\n\n var childrenLength = arguments.length - 2;\n\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n\n props.children = childArray;\n }\n\n return ReactElement(element.type, key, ref, self, source, owner, props);\n}\n/**\n * Verifies the object is a ReactElement.\n * See https://reactjs.org/docs/react-api.html#isvalidelement\n * @param {?object} object\n * @return {boolean} True if `object` is a ReactElement.\n * @final\n */\n\nfunction isValidElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\n\nvar SEPARATOR = '.';\nvar SUBSEPARATOR = ':';\n/**\n * Escape and wrap key so it is safe to use as a reactid\n *\n * @param {string} key to be escaped.\n * @return {string} the escaped key.\n */\n\nfunction escape(key) {\n var escapeRegex = /[=:]/g;\n var escaperLookup = {\n '=': '=0',\n ':': '=2'\n };\n var escapedString = key.replace(escapeRegex, function (match) {\n return escaperLookup[match];\n });\n return '$' + escapedString;\n}\n/**\n * TODO: Test that a single child and an array with one item have the same key\n * pattern.\n */\n\n\nvar didWarnAboutMaps = false;\nvar userProvidedKeyEscapeRegex = /\\/+/g;\n\nfunction escapeUserProvidedKey(text) {\n return text.replace(userProvidedKeyEscapeRegex, '$&/');\n}\n/**\n * Generate a key string that identifies a element within a set.\n *\n * @param {*} element A element that could contain a manual key.\n * @param {number} index Index that is used if a manual key is not provided.\n * @return {string}\n */\n\n\nfunction getElementKey(element, index) {\n // Do some typechecking here since we call this blindly. We want to ensure\n // that we don't block potential future ES APIs.\n if (typeof element === 'object' && element !== null && element.key != null) {\n // Explicit key\n {\n checkKeyStringCoercion(element.key);\n }\n\n return escape('' + element.key);\n } // Implicit key determined by the index in the set\n\n\n return index.toString(36);\n}\n\nfunction mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {\n var type = typeof children;\n\n if (type === 'undefined' || type === 'boolean') {\n // All of the above are perceived as null.\n children = null;\n }\n\n var invokeCallback = false;\n\n if (children === null) {\n invokeCallback = true;\n } else {\n switch (type) {\n case 'string':\n case 'number':\n invokeCallback = true;\n break;\n\n case 'object':\n switch (children.$$typeof) {\n case REACT_ELEMENT_TYPE:\n case REACT_PORTAL_TYPE:\n invokeCallback = true;\n }\n\n }\n }\n\n if (invokeCallback) {\n var _child = children;\n var mappedChild = callback(_child); // If it's the only child, treat the name as if it was wrapped in an array\n // so that it's consistent if the number of children grows:\n\n var childKey = nameSoFar === '' ? SEPARATOR + getElementKey(_child, 0) : nameSoFar;\n\n if (isArray(mappedChild)) {\n var escapedChildKey = '';\n\n if (childKey != null) {\n escapedChildKey = escapeUserProvidedKey(childKey) + '/';\n }\n\n mapIntoArray(mappedChild, array, escapedChildKey, '', function (c) {\n return c;\n });\n } else if (mappedChild != null) {\n if (isValidElement(mappedChild)) {\n {\n // The `if` statement here prevents auto-disabling of the safe\n // coercion ESLint rule, so we must manually disable it below.\n // $FlowFixMe Flow incorrectly thinks React.Portal doesn't have a key\n if (mappedChild.key && (!_child || _child.key !== mappedChild.key)) {\n checkKeyStringCoercion(mappedChild.key);\n }\n }\n\n mappedChild = cloneAndReplaceKey(mappedChild, // Keep both the (mapped) and old keys if they differ, just as\n // traverseAllChildren used to do for objects as children\n escapedPrefix + ( // $FlowFixMe Flow incorrectly thinks React.Portal doesn't have a key\n mappedChild.key && (!_child || _child.key !== mappedChild.key) ? // $FlowFixMe Flow incorrectly thinks existing element's key can be a number\n // eslint-disable-next-line react-internal/safe-string-coercion\n escapeUserProvidedKey('' + mappedChild.key) + '/' : '') + childKey);\n }\n\n array.push(mappedChild);\n }\n\n return 1;\n }\n\n var child;\n var nextName;\n var subtreeCount = 0; // Count of children found in the current subtree.\n\n var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;\n\n if (isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n nextName = nextNamePrefix + getElementKey(child, i);\n subtreeCount += mapIntoArray(child, array, escapedPrefix, nextName, callback);\n }\n } else {\n var iteratorFn = getIteratorFn(children);\n\n if (typeof iteratorFn === 'function') {\n var iterableChildren = children;\n\n {\n // Warn about using Maps as children\n if (iteratorFn === iterableChildren.entries) {\n if (!didWarnAboutMaps) {\n warn('Using Maps as children is not supported. ' + 'Use an array of keyed ReactElements instead.');\n }\n\n didWarnAboutMaps = true;\n }\n }\n\n var iterator = iteratorFn.call(iterableChildren);\n var step;\n var ii = 0;\n\n while (!(step = iterator.next()).done) {\n child = step.value;\n nextName = nextNamePrefix + getElementKey(child, ii++);\n subtreeCount += mapIntoArray(child, array, escapedPrefix, nextName, callback);\n }\n } else if (type === 'object') {\n // eslint-disable-next-line react-internal/safe-string-coercion\n var childrenString = String(children);\n throw new Error(\"Objects are not valid as a React child (found: \" + (childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString) + \"). \" + 'If you meant to render a collection of children, use an array ' + 'instead.');\n }\n }\n\n return subtreeCount;\n}\n\n/**\n * Maps children that are typically specified as `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrenmap\n *\n * The provided mapFunction(child, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} func The map function.\n * @param {*} context Context for mapFunction.\n * @return {object} Object containing the ordered map of results.\n */\nfunction mapChildren(children, func, context) {\n if (children == null) {\n return children;\n }\n\n var result = [];\n var count = 0;\n mapIntoArray(children, result, '', '', function (child) {\n return func.call(context, child, count++);\n });\n return result;\n}\n/**\n * Count the number of children that are typically specified as\n * `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrencount\n *\n * @param {?*} children Children tree container.\n * @return {number} The number of children.\n */\n\n\nfunction countChildren(children) {\n var n = 0;\n mapChildren(children, function () {\n n++; // Don't return anything\n });\n return n;\n}\n\n/**\n * Iterates through children that are typically specified as `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrenforeach\n *\n * The provided forEachFunc(child, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} forEachFunc\n * @param {*} forEachContext Context for forEachContext.\n */\nfunction forEachChildren(children, forEachFunc, forEachContext) {\n mapChildren(children, function () {\n forEachFunc.apply(this, arguments); // Don't return anything.\n }, forEachContext);\n}\n/**\n * Flatten a children object (typically specified as `props.children`) and\n * return an array with appropriately re-keyed children.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrentoarray\n */\n\n\nfunction toArray(children) {\n return mapChildren(children, function (child) {\n return child;\n }) || [];\n}\n/**\n * Returns the first child in a collection of children and verifies that there\n * is only one child in the collection.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrenonly\n *\n * The current implementation of this function assumes that a single child gets\n * passed without a wrapper, but the purpose of this helper function is to\n * abstract away the particular structure of children.\n *\n * @param {?object} children Child collection structure.\n * @return {ReactElement} The first and only `ReactElement` contained in the\n * structure.\n */\n\n\nfunction onlyChild(children) {\n if (!isValidElement(children)) {\n throw new Error('React.Children.only expected to receive a single React element child.');\n }\n\n return children;\n}\n\nfunction createContext(defaultValue) {\n // TODO: Second argument used to be an optional `calculateChangedBits`\n // function. Warn to reserve for future use?\n var context = {\n $$typeof: REACT_CONTEXT_TYPE,\n // As a workaround to support multiple concurrent renderers, we categorize\n // some renderers as primary and others as secondary. We only expect\n // there to be two concurrent renderers at most: React Native (primary) and\n // Fabric (secondary); React DOM (primary) and React ART (secondary).\n // Secondary renderers store their context values on separate fields.\n _currentValue: defaultValue,\n _currentValue2: defaultValue,\n // Used to track how many concurrent renderers this context currently\n // supports within in a single renderer. Such as parallel server rendering.\n _threadCount: 0,\n // These are circular\n Provider: null,\n Consumer: null,\n // Add these to use same hidden class in VM as ServerContext\n _defaultValue: null,\n _globalName: null\n };\n context.Provider = {\n $$typeof: REACT_PROVIDER_TYPE,\n _context: context\n };\n var hasWarnedAboutUsingNestedContextConsumers = false;\n var hasWarnedAboutUsingConsumerProvider = false;\n var hasWarnedAboutDisplayNameOnConsumer = false;\n\n {\n // A separate object, but proxies back to the original context object for\n // backwards compatibility. It has a different $$typeof, so we can properly\n // warn for the incorrect usage of Context as a Consumer.\n var Consumer = {\n $$typeof: REACT_CONTEXT_TYPE,\n _context: context\n }; // $FlowFixMe: Flow complains about not setting a value, which is intentional here\n\n Object.defineProperties(Consumer, {\n Provider: {\n get: function () {\n if (!hasWarnedAboutUsingConsumerProvider) {\n hasWarnedAboutUsingConsumerProvider = true;\n\n error('Rendering <Context.Consumer.Provider> is not supported and will be removed in ' + 'a future major release. Did you mean to render <Context.Provider> instead?');\n }\n\n return context.Provider;\n },\n set: function (_Provider) {\n context.Provider = _Provider;\n }\n },\n _currentValue: {\n get: function () {\n return context._currentValue;\n },\n set: function (_currentValue) {\n context._currentValue = _currentValue;\n }\n },\n _currentValue2: {\n get: function () {\n return context._currentValue2;\n },\n set: function (_currentValue2) {\n context._currentValue2 = _currentValue2;\n }\n },\n _threadCount: {\n get: function () {\n return context._threadCount;\n },\n set: function (_threadCount) {\n context._threadCount = _threadCount;\n }\n },\n Consumer: {\n get: function () {\n if (!hasWarnedAboutUsingNestedContextConsumers) {\n hasWarnedAboutUsingNestedContextConsumers = true;\n\n error('Rendering <Context.Consumer.Consumer> is not supported and will be removed in ' + 'a future major release. Did you mean to render <Context.Consumer> instead?');\n }\n\n return context.Consumer;\n }\n },\n displayName: {\n get: function () {\n return context.displayName;\n },\n set: function (displayName) {\n if (!hasWarnedAboutDisplayNameOnConsumer) {\n warn('Setting `displayName` on Context.Consumer has no effect. ' + \"You should set it directly on the context with Context.displayName = '%s'.\", displayName);\n\n hasWarnedAboutDisplayNameOnConsumer = true;\n }\n }\n }\n }); // $FlowFixMe: Flow complains about missing properties because it doesn't understand defineProperty\n\n context.Consumer = Consumer;\n }\n\n {\n context._currentRenderer = null;\n context._currentRenderer2 = null;\n }\n\n return context;\n}\n\nvar Uninitialized = -1;\nvar Pending = 0;\nvar Resolved = 1;\nvar Rejected = 2;\n\nfunction lazyInitializer(payload) {\n if (payload._status === Uninitialized) {\n var ctor = payload._result;\n var thenable = ctor(); // Transition to the next state.\n // This might throw either because it's missing or throws. If so, we treat it\n // as still uninitialized and try again next time. Which is the same as what\n // happens if the ctor or any wrappers processing the ctor throws. This might\n // end up fixing it if the resolution was a concurrency bug.\n\n thenable.then(function (moduleObject) {\n if (payload._status === Pending || payload._status === Uninitialized) {\n // Transition to the next state.\n var resolved = payload;\n resolved._status = Resolved;\n resolved._result = moduleObject;\n }\n }, function (error) {\n if (payload._status === Pending || payload._status === Uninitialized) {\n // Transition to the next state.\n var rejected = payload;\n rejected._status = Rejected;\n rejected._result = error;\n }\n });\n\n if (payload._status === Uninitialized) {\n // In case, we're still uninitialized, then we're waiting for the thenable\n // to resolve. Set it as pending in the meantime.\n var pending = payload;\n pending._status = Pending;\n pending._result = thenable;\n }\n }\n\n if (payload._status === Resolved) {\n var moduleObject = payload._result;\n\n {\n if (moduleObject === undefined) {\n error('lazy: Expected the result of a dynamic imp' + 'ort() call. ' + 'Instead received: %s\\n\\nYour code should look like: \\n ' + // Break up imports to avoid accidentally parsing them as dependencies.\n 'const MyComponent = lazy(() => imp' + \"ort('./MyComponent'))\\n\\n\" + 'Did you accidentally put curly braces around the import?', moduleObject);\n }\n }\n\n {\n if (!('default' in moduleObject)) {\n error('lazy: Expected the result of a dynamic imp' + 'ort() call. ' + 'Instead received: %s\\n\\nYour code should look like: \\n ' + // Break up imports to avoid accidentally parsing them as dependencies.\n 'const MyComponent = lazy(() => imp' + \"ort('./MyComponent'))\", moduleObject);\n }\n }\n\n return moduleObject.default;\n } else {\n throw payload._result;\n }\n}\n\nfunction lazy(ctor) {\n var payload = {\n // We use these fields to store the result.\n _status: Uninitialized,\n _result: ctor\n };\n var lazyType = {\n $$typeof: REACT_LAZY_TYPE,\n _payload: payload,\n _init: lazyInitializer\n };\n\n {\n // In production, this would just set it on the object.\n var defaultProps;\n var propTypes; // $FlowFixMe\n\n Object.defineProperties(lazyType, {\n defaultProps: {\n configurable: true,\n get: function () {\n return defaultProps;\n },\n set: function (newDefaultProps) {\n error('React.lazy(...): It is not supported to assign `defaultProps` to ' + 'a lazy component import. Either specify them where the component ' + 'is defined, or create a wrapping component around it.');\n\n defaultProps = newDefaultProps; // Match production behavior more closely:\n // $FlowFixMe\n\n Object.defineProperty(lazyType, 'defaultProps', {\n enumerable: true\n });\n }\n },\n propTypes: {\n configurable: true,\n get: function () {\n return propTypes;\n },\n set: function (newPropTypes) {\n error('React.lazy(...): It is not supported to assign `propTypes` to ' + 'a lazy component import. Either specify them where the component ' + 'is defined, or create a wrapping component around it.');\n\n propTypes = newPropTypes; // Match production behavior more closely:\n // $FlowFixMe\n\n Object.defineProperty(lazyType, 'propTypes', {\n enumerable: true\n });\n }\n }\n });\n }\n\n return lazyType;\n}\n\nfunction forwardRef(render) {\n {\n if (render != null && render.$$typeof === REACT_MEMO_TYPE) {\n error('forwardRef requires a render function but received a `memo` ' + 'component. Instead of forwardRef(memo(...)), use ' + 'memo(forwardRef(...)).');\n } else if (typeof render !== 'function') {\n error('forwardRef requires a render function but was given %s.', render === null ? 'null' : typeof render);\n } else {\n if (render.length !== 0 && render.length !== 2) {\n error('forwardRef render functions accept exactly two parameters: props and ref. %s', render.length === 1 ? 'Did you forget to use the ref parameter?' : 'Any additional parameter will be undefined.');\n }\n }\n\n if (render != null) {\n if (render.defaultProps != null || render.propTypes != null) {\n error('forwardRef render functions do not support propTypes or defaultProps. ' + 'Did you accidentally pass a React component?');\n }\n }\n }\n\n var elementType = {\n $$typeof: REACT_FORWARD_REF_TYPE,\n render: render\n };\n\n {\n var ownName;\n Object.defineProperty(elementType, 'displayName', {\n enumerable: false,\n configurable: true,\n get: function () {\n return ownName;\n },\n set: function (name) {\n ownName = name; // The inner component shouldn't inherit this display name in most cases,\n // because the component may be used elsewhere.\n // But it's nice for anonymous functions to inherit the name,\n // so that our component-stack generation logic will display their frames.\n // An anonymous function generally suggests a pattern like:\n // React.forwardRef((props, ref) => {...});\n // This kind of inner function is not used elsewhere so the side effect is okay.\n\n if (!render.name && !render.displayName) {\n render.displayName = name;\n }\n }\n });\n }\n\n return elementType;\n}\n\nvar REACT_MODULE_REFERENCE;\n\n{\n REACT_MODULE_REFERENCE = Symbol.for('react.module.reference');\n}\n\nfunction isValidElementType(type) {\n if (typeof type === 'string' || typeof type === 'function') {\n return true;\n } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n\n\n if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing ) {\n return true;\n }\n\n if (typeof type === 'object' && type !== null) {\n if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\n // types supported by any Flight configuration anywhere since\n // we don't know which Flight build this will end up being used\n // with.\n type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction memo(type, compare) {\n {\n if (!isValidElementType(type)) {\n error('memo: The first argument must be a component. Instead ' + 'received: %s', type === null ? 'null' : typeof type);\n }\n }\n\n var elementType = {\n $$typeof: REACT_MEMO_TYPE,\n type: type,\n compare: compare === undefined ? null : compare\n };\n\n {\n var ownName;\n Object.defineProperty(elementType, 'displayName', {\n enumerable: false,\n configurable: true,\n get: function () {\n return ownName;\n },\n set: function (name) {\n ownName = name; // The inner component shouldn't inherit this display name in most cases,\n // because the component may be used elsewhere.\n // But it's nice for anonymous functions to inherit the name,\n // so that our component-stack generation logic will display their frames.\n // An anonymous function generally suggests a pattern like:\n // React.memo((props) => {...});\n // This kind of inner function is not used elsewhere so the side effect is okay.\n\n if (!type.name && !type.displayName) {\n type.displayName = name;\n }\n }\n });\n }\n\n return elementType;\n}\n\nfunction resolveDispatcher() {\n var dispatcher = ReactCurrentDispatcher.current;\n\n {\n if (dispatcher === null) {\n error('Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for' + ' one of the following reasons:\\n' + '1. You might have mismatching versions of React and the renderer (such as React DOM)\\n' + '2. You might be breaking the Rules of Hooks\\n' + '3. You might have more than one copy of React in the same app\\n' + 'See https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.');\n }\n } // Will result in a null access error if accessed outside render phase. We\n // intentionally don't throw our own error because this is in a hot path.\n // Also helps ensure this is inlined.\n\n\n return dispatcher;\n}\nfunction useContext(Context) {\n var dispatcher = resolveDispatcher();\n\n {\n // TODO: add a more generic warning for invalid values.\n if (Context._context !== undefined) {\n var realContext = Context._context; // Don't deduplicate because this legitimately causes bugs\n // and nobody should be using this in existing code.\n\n if (realContext.Consumer === Context) {\n error('Calling useContext(Context.Consumer) is not supported, may cause bugs, and will be ' + 'removed in a future major release. Did you mean to call useContext(Context) instead?');\n } else if (realContext.Provider === Context) {\n error('Calling useContext(Context.Provider) is not supported. ' + 'Did you mean to call useContext(Context) instead?');\n }\n }\n }\n\n return dispatcher.useContext(Context);\n}\nfunction useState(initialState) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useState(initialState);\n}\nfunction useReducer(reducer, initialArg, init) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useReducer(reducer, initialArg, init);\n}\nfunction useRef(initialValue) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useRef(initialValue);\n}\nfunction useEffect(create, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useEffect(create, deps);\n}\nfunction useInsertionEffect(create, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useInsertionEffect(create, deps);\n}\nfunction useLayoutEffect(create, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useLayoutEffect(create, deps);\n}\nfunction useCallback(callback, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useCallback(callback, deps);\n}\nfunction useMemo(create, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useMemo(create, deps);\n}\nfunction useImperativeHandle(ref, create, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useImperativeHandle(ref, create, deps);\n}\nfunction useDebugValue(value, formatterFn) {\n {\n var dispatcher = resolveDispatcher();\n return dispatcher.useDebugValue(value, formatterFn);\n }\n}\nfunction useTransition() {\n var dispatcher = resolveDispatcher();\n return dispatcher.useTransition();\n}\nfunction useDeferredValue(value) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useDeferredValue(value);\n}\nfunction useId() {\n var dispatcher = resolveDispatcher();\n return dispatcher.useId();\n}\nfunction useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n}\n\n// Helpers to patch console.logs to avoid logging during side-effect free\n// replaying on render function. This currently only patches the object\n// lazily which won't cover if the log function was extracted eagerly.\n// We could also eagerly patch the method.\nvar disabledDepth = 0;\nvar prevLog;\nvar prevInfo;\nvar prevWarn;\nvar prevError;\nvar prevGroup;\nvar prevGroupCollapsed;\nvar prevGroupEnd;\n\nfunction disabledLog() {}\n\ndisabledLog.__reactDisabledLog = true;\nfunction disableLogs() {\n {\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */\n prevLog = console.log;\n prevInfo = console.info;\n prevWarn = console.warn;\n prevError = console.error;\n prevGroup = console.group;\n prevGroupCollapsed = console.groupCollapsed;\n prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099\n\n var props = {\n configurable: true,\n enumerable: true,\n value: disabledLog,\n writable: true\n }; // $FlowFixMe Flow thinks console is immutable.\n\n Object.defineProperties(console, {\n info: props,\n log: props,\n warn: props,\n error: props,\n group: props,\n groupCollapsed: props,\n groupEnd: props\n });\n /* eslint-enable react-internal/no-production-logging */\n }\n\n disabledDepth++;\n }\n}\nfunction reenableLogs() {\n {\n disabledDepth--;\n\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */\n var props = {\n configurable: true,\n enumerable: true,\n writable: true\n }; // $FlowFixMe Flow thinks console is immutable.\n\n Object.defineProperties(console, {\n log: assign({}, props, {\n value: prevLog\n }),\n info: assign({}, props, {\n value: prevInfo\n }),\n warn: assign({}, props, {\n value: prevWarn\n }),\n error: assign({}, props, {\n value: prevError\n }),\n group: assign({}, props, {\n value: prevGroup\n }),\n groupCollapsed: assign({}, props, {\n value: prevGroupCollapsed\n }),\n groupEnd: assign({}, props, {\n value: prevGroupEnd\n })\n });\n /* eslint-enable react-internal/no-production-logging */\n }\n\n if (disabledDepth < 0) {\n error('disabledDepth fell below zero. ' + 'This is a bug in React. Please file an issue.');\n }\n }\n}\n\nvar ReactCurrentDispatcher$1 = ReactSharedInternals.ReactCurrentDispatcher;\nvar prefix;\nfunction describeBuiltInComponentFrame(name, source, ownerFn) {\n {\n if (prefix === undefined) {\n // Extract the VM specific prefix used by each line.\n try {\n throw Error();\n } catch (x) {\n var match = x.stack.trim().match(/\\n( *(at )?)/);\n prefix = match && match[1] || '';\n }\n } // We use the prefix to ensure our stacks line up with native stack frames.\n\n\n return '\\n' + prefix + name;\n }\n}\nvar reentry = false;\nvar componentFrameCache;\n\n{\n var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map;\n componentFrameCache = new PossiblyWeakMap();\n}\n\nfunction describeNativeComponentFrame(fn, construct) {\n // If something asked for a stack inside a fake render, it should get ignored.\n if ( !fn || reentry) {\n return '';\n }\n\n {\n var frame = componentFrameCache.get(fn);\n\n if (frame !== undefined) {\n return frame;\n }\n }\n\n var control;\n reentry = true;\n var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe It does accept undefined.\n\n Error.prepareStackTrace = undefined;\n var previousDispatcher;\n\n {\n previousDispatcher = ReactCurrentDispatcher$1.current; // Set the dispatcher in DEV because this might be call in the render function\n // for warnings.\n\n ReactCurrentDispatcher$1.current = null;\n disableLogs();\n }\n\n try {\n // This should throw.\n if (construct) {\n // Something should be setting the props in the constructor.\n var Fake = function () {\n throw Error();\n }; // $FlowFixMe\n\n\n Object.defineProperty(Fake.prototype, 'props', {\n set: function () {\n // We use a throwing setter instead of frozen or non-writable props\n // because that won't throw in a non-strict mode function.\n throw Error();\n }\n });\n\n if (typeof Reflect === 'object' && Reflect.construct) {\n // We construct a different control for this case to include any extra\n // frames added by the construct call.\n try {\n Reflect.construct(Fake, []);\n } catch (x) {\n control = x;\n }\n\n Reflect.construct(fn, [], Fake);\n } else {\n try {\n Fake.call();\n } catch (x) {\n control = x;\n }\n\n fn.call(Fake.prototype);\n }\n } else {\n try {\n throw Error();\n } catch (x) {\n control = x;\n }\n\n fn();\n }\n } catch (sample) {\n // This is inlined manually because closure doesn't do it for us.\n if (sample && control && typeof sample.stack === 'string') {\n // This extracts the first frame from the sample that isn't also in the control.\n // Skipping one frame that we assume is the frame that calls the two.\n var sampleLines = sample.stack.split('\\n');\n var controlLines = control.stack.split('\\n');\n var s = sampleLines.length - 1;\n var c = controlLines.length - 1;\n\n while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) {\n // We expect at least one stack frame to be shared.\n // Typically this will be the root most one. However, stack frames may be\n // cut off due to maximum stack limits. In this case, one maybe cut off\n // earlier than the other. We assume that the sample is longer or the same\n // and there for cut off earlier. So we should find the root most frame in\n // the sample somewhere in the control.\n c--;\n }\n\n for (; s >= 1 && c >= 0; s--, c--) {\n // Next we find the first one that isn't the same which should be the\n // frame that called our sample function and the control.\n if (sampleLines[s] !== controlLines[c]) {\n // In V8, the first line is describing the message but other VMs don't.\n // If we're about to return the first line, and the control is also on the same\n // line, that's a pretty good indicator that our sample threw at same line as\n // the control. I.e. before we entered the sample frame. So we ignore this result.\n // This can happen if you passed a class to function component, or non-function.\n if (s !== 1 || c !== 1) {\n do {\n s--;\n c--; // We may still have similar intermediate frames from the construct call.\n // The next one that isn't the same should be our match though.\n\n if (c < 0 || sampleLines[s] !== controlLines[c]) {\n // V8 adds a \"new\" prefix for native classes. Let's remove it to make it prettier.\n var _frame = '\\n' + sampleLines[s].replace(' at new ', ' at '); // If our component frame is labeled \"<anonymous>\"\n // but we have a user-provided \"displayName\"\n // splice it in to make the stack more readable.\n\n\n if (fn.displayName && _frame.includes('<anonymous>')) {\n _frame = _frame.replace('<anonymous>', fn.displayName);\n }\n\n {\n if (typeof fn === 'function') {\n componentFrameCache.set(fn, _frame);\n }\n } // Return the line we found.\n\n\n return _frame;\n }\n } while (s >= 1 && c >= 0);\n }\n\n break;\n }\n }\n }\n } finally {\n reentry = false;\n\n {\n ReactCurrentDispatcher$1.current = previousDispatcher;\n reenableLogs();\n }\n\n Error.prepareStackTrace = previousPrepareStackTrace;\n } // Fallback to just using the name if we couldn't make it throw.\n\n\n var name = fn ? fn.displayName || fn.name : '';\n var syntheticFrame = name ? describeBuiltInComponentFrame(name) : '';\n\n {\n if (typeof fn === 'function') {\n componentFrameCache.set(fn, syntheticFrame);\n }\n }\n\n return syntheticFrame;\n}\nfunction describeFunctionComponentFrame(fn, source, ownerFn) {\n {\n return describeNativeComponentFrame(fn, false);\n }\n}\n\nfunction shouldConstruct(Component) {\n var prototype = Component.prototype;\n return !!(prototype && prototype.isReactComponent);\n}\n\nfunction describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {\n\n if (type == null) {\n return '';\n }\n\n if (typeof type === 'function') {\n {\n return describeNativeComponentFrame(type, shouldConstruct(type));\n }\n }\n\n if (typeof type === 'string') {\n return describeBuiltInComponentFrame(type);\n }\n\n switch (type) {\n case REACT_SUSPENSE_TYPE:\n return describeBuiltInComponentFrame('Suspense');\n\n case REACT_SUSPENSE_LIST_TYPE:\n return describeBuiltInComponentFrame('SuspenseList');\n }\n\n if (typeof type === 'object') {\n switch (type.$$typeof) {\n case REACT_FORWARD_REF_TYPE:\n return describeFunctionComponentFrame(type.render);\n\n case REACT_MEMO_TYPE:\n // Memo may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);\n\n case REACT_LAZY_TYPE:\n {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n\n try {\n // Lazy may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);\n } catch (x) {}\n }\n }\n }\n\n return '';\n}\n\nvar loggedTypeFailures = {};\nvar ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement(element) {\n {\n if (element) {\n var owner = element._owner;\n var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n ReactDebugCurrentFrame$1.setExtraStackFrame(stack);\n } else {\n ReactDebugCurrentFrame$1.setExtraStackFrame(null);\n }\n }\n}\n\nfunction checkPropTypes(typeSpecs, values, location, componentName, element) {\n {\n // $FlowFixMe This is okay but Flow doesn't know it.\n var has = Function.call.bind(hasOwnProperty);\n\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error$1 = void 0; // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n // eslint-disable-next-line react-internal/prod-error-codes\n var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');\n err.name = 'Invariant Violation';\n throw err;\n }\n\n error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED');\n } catch (ex) {\n error$1 = ex;\n }\n\n if (error$1 && !(error$1 instanceof Error)) {\n setCurrentlyValidatingElement(element);\n\n error('%s: type specification of %s' + ' `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error$1);\n\n setCurrentlyValidatingElement(null);\n }\n\n if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error$1.message] = true;\n setCurrentlyValidatingElement(element);\n\n error('Failed %s type: %s', location, error$1.message);\n\n setCurrentlyValidatingElement(null);\n }\n }\n }\n }\n}\n\nfunction setCurrentlyValidatingElement$1(element) {\n {\n if (element) {\n var owner = element._owner;\n var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n setExtraStackFrame(stack);\n } else {\n setExtraStackFrame(null);\n }\n }\n}\n\nvar propTypesMisspellWarningShown;\n\n{\n propTypesMisspellWarningShown = false;\n}\n\nfunction getDeclarationErrorAddendum() {\n if (ReactCurrentOwner.current) {\n var name = getComponentNameFromType(ReactCurrentOwner.current.type);\n\n if (name) {\n return '\\n\\nCheck the render method of `' + name + '`.';\n }\n }\n\n return '';\n}\n\nfunction getSourceInfoErrorAddendum(source) {\n if (source !== undefined) {\n var fileName = source.fileName.replace(/^.*[\\\\\\/]/, '');\n var lineNumber = source.lineNumber;\n return '\\n\\nCheck your code at ' + fileName + ':' + lineNumber + '.';\n }\n\n return '';\n}\n\nfunction getSourceInfoErrorAddendumForProps(elementProps) {\n if (elementProps !== null && elementProps !== undefined) {\n return getSourceInfoErrorAddendum(elementProps.__source);\n }\n\n return '';\n}\n/**\n * Warn if there's no key explicitly set on dynamic arrays of children or\n * object keys are not valid. This allows us to keep track of children between\n * updates.\n */\n\n\nvar ownerHasKeyUseWarning = {};\n\nfunction getCurrentComponentErrorInfo(parentType) {\n var info = getDeclarationErrorAddendum();\n\n if (!info) {\n var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name;\n\n if (parentName) {\n info = \"\\n\\nCheck the top-level render call using <\" + parentName + \">.\";\n }\n }\n\n return info;\n}\n/**\n * Warn if the element doesn't have an explicit key assigned to it.\n * This element is in an array. The array could grow and shrink or be\n * reordered. All children that haven't already been validated are required to\n * have a \"key\" property assigned to it. Error statuses are cached so a warning\n * will only be shown once.\n *\n * @internal\n * @param {ReactElement} element Element that requires a key.\n * @param {*} parentType element's parent's type.\n */\n\n\nfunction validateExplicitKey(element, parentType) {\n if (!element._store || element._store.validated || element.key != null) {\n return;\n }\n\n element._store.validated = true;\n var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);\n\n if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {\n return;\n }\n\n ownerHasKeyUseWarning[currentComponentErrorInfo] = true; // Usually the current owner is the offender, but if it accepts children as a\n // property, it may be the creator of the child that's responsible for\n // assigning it a key.\n\n var childOwner = '';\n\n if (element && element._owner && element._owner !== ReactCurrentOwner.current) {\n // Give the component that originally created this child.\n childOwner = \" It was passed a child from \" + getComponentNameFromType(element._owner.type) + \".\";\n }\n\n {\n setCurrentlyValidatingElement$1(element);\n\n error('Each child in a list should have a unique \"key\" prop.' + '%s%s See https://reactjs.org/link/warning-keys for more information.', currentComponentErrorInfo, childOwner);\n\n setCurrentlyValidatingElement$1(null);\n }\n}\n/**\n * Ensure that every element either is passed in a static location, in an\n * array with an explicit keys property defined, or in an object literal\n * with valid key property.\n *\n * @internal\n * @param {ReactNode} node Statically passed child of any type.\n * @param {*} parentType node's parent's type.\n */\n\n\nfunction validateChildKeys(node, parentType) {\n if (typeof node !== 'object') {\n return;\n }\n\n if (isArray(node)) {\n for (var i = 0; i < node.length; i++) {\n var child = node[i];\n\n if (isValidElement(child)) {\n validateExplicitKey(child, parentType);\n }\n }\n } else if (isValidElement(node)) {\n // This element was passed in a valid location.\n if (node._store) {\n node._store.validated = true;\n }\n } else if (node) {\n var iteratorFn = getIteratorFn(node);\n\n if (typeof iteratorFn === 'function') {\n // Entry iterators used to provide implicit keys,\n // but now we print a separate warning for them later.\n if (iteratorFn !== node.entries) {\n var iterator = iteratorFn.call(node);\n var step;\n\n while (!(step = iterator.next()).done) {\n if (isValidElement(step.value)) {\n validateExplicitKey(step.value, parentType);\n }\n }\n }\n }\n }\n}\n/**\n * Given an element, validate that its props follow the propTypes definition,\n * provided by the type.\n *\n * @param {ReactElement} element\n */\n\n\nfunction validatePropTypes(element) {\n {\n var type = element.type;\n\n if (type === null || type === undefined || typeof type === 'string') {\n return;\n }\n\n var propTypes;\n\n if (typeof type === 'function') {\n propTypes = type.propTypes;\n } else if (typeof type === 'object' && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here.\n // Inner props are checked in the reconciler.\n type.$$typeof === REACT_MEMO_TYPE)) {\n propTypes = type.propTypes;\n } else {\n return;\n }\n\n if (propTypes) {\n // Intentionally inside to avoid triggering lazy initializers:\n var name = getComponentNameFromType(type);\n checkPropTypes(propTypes, element.props, 'prop', name, element);\n } else if (type.PropTypes !== undefined && !propTypesMisspellWarningShown) {\n propTypesMisspellWarningShown = true; // Intentionally inside to avoid triggering lazy initializers:\n\n var _name = getComponentNameFromType(type);\n\n error('Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', _name || 'Unknown');\n }\n\n if (typeof type.getDefaultProps === 'function' && !type.getDefaultProps.isReactClassApproved) {\n error('getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.');\n }\n }\n}\n/**\n * Given a fragment, validate that it can only be provided with fragment props\n * @param {ReactElement} fragment\n */\n\n\nfunction validateFragmentProps(fragment) {\n {\n var keys = Object.keys(fragment.props);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n\n if (key !== 'children' && key !== 'key') {\n setCurrentlyValidatingElement$1(fragment);\n\n error('Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.', key);\n\n setCurrentlyValidatingElement$1(null);\n break;\n }\n }\n\n if (fragment.ref !== null) {\n setCurrentlyValidatingElement$1(fragment);\n\n error('Invalid attribute `ref` supplied to `React.Fragment`.');\n\n setCurrentlyValidatingElement$1(null);\n }\n }\n}\nfunction createElementWithValidation(type, props, children) {\n var validType = isValidElementType(type); // We warn in this case but don't throw. We expect the element creation to\n // succeed and there will likely be errors in render.\n\n if (!validType) {\n var info = '';\n\n if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n info += ' You likely forgot to export your component from the file ' + \"it's defined in, or you might have mixed up default and named imports.\";\n }\n\n var sourceInfo = getSourceInfoErrorAddendumForProps(props);\n\n if (sourceInfo) {\n info += sourceInfo;\n } else {\n info += getDeclarationErrorAddendum();\n }\n\n var typeString;\n\n if (type === null) {\n typeString = 'null';\n } else if (isArray(type)) {\n typeString = 'array';\n } else if (type !== undefined && type.$$typeof === REACT_ELEMENT_TYPE) {\n typeString = \"<\" + (getComponentNameFromType(type.type) || 'Unknown') + \" />\";\n info = ' Did you accidentally export a JSX literal instead of a component?';\n } else {\n typeString = typeof type;\n }\n\n {\n error('React.createElement: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', typeString, info);\n }\n }\n\n var element = createElement.apply(this, arguments); // The result can be nullish if a mock or a custom function is used.\n // TODO: Drop this when these are no longer allowed as the type argument.\n\n if (element == null) {\n return element;\n } // Skip key warning if the type isn't valid since our key validation logic\n // doesn't expect a non-string/function type and can throw confusing errors.\n // We don't want exception behavior to differ between dev and prod.\n // (Rendering will throw with a helpful message and as soon as the type is\n // fixed, the key warnings will appear.)\n\n\n if (validType) {\n for (var i = 2; i < arguments.length; i++) {\n validateChildKeys(arguments[i], type);\n }\n }\n\n if (type === REACT_FRAGMENT_TYPE) {\n validateFragmentProps(element);\n } else {\n validatePropTypes(element);\n }\n\n return element;\n}\nvar didWarnAboutDeprecatedCreateFactory = false;\nfunction createFactoryWithValidation(type) {\n var validatedFactory = createElementWithValidation.bind(null, type);\n validatedFactory.type = type;\n\n {\n if (!didWarnAboutDeprecatedCreateFactory) {\n didWarnAboutDeprecatedCreateFactory = true;\n\n warn('React.createFactory() is deprecated and will be removed in ' + 'a future major release. Consider using JSX ' + 'or use React.createElement() directly instead.');\n } // Legacy hook: remove it\n\n\n Object.defineProperty(validatedFactory, 'type', {\n enumerable: false,\n get: function () {\n warn('Factory.type is deprecated. Access the class directly ' + 'before passing it to createFactory.');\n\n Object.defineProperty(this, 'type', {\n value: type\n });\n return type;\n }\n });\n }\n\n return validatedFactory;\n}\nfunction cloneElementWithValidation(element, props, children) {\n var newElement = cloneElement.apply(this, arguments);\n\n for (var i = 2; i < arguments.length; i++) {\n validateChildKeys(arguments[i], newElement.type);\n }\n\n validatePropTypes(newElement);\n return newElement;\n}\n\nfunction startTransition(scope, options) {\n var prevTransition = ReactCurrentBatchConfig.transition;\n ReactCurrentBatchConfig.transition = {};\n var currentTransition = ReactCurrentBatchConfig.transition;\n\n {\n ReactCurrentBatchConfig.transition._updatedFibers = new Set();\n }\n\n try {\n scope();\n } finally {\n ReactCurrentBatchConfig.transition = prevTransition;\n\n {\n if (prevTransition === null && currentTransition._updatedFibers) {\n var updatedFibersCount = currentTransition._updatedFibers.size;\n\n if (updatedFibersCount > 10) {\n warn('Detected a large number of updates inside startTransition. ' + 'If this is due to a subscription please re-write it to use React provided hooks. ' + 'Otherwise concurrent mode guarantees are off the table.');\n }\n\n currentTransition._updatedFibers.clear();\n }\n }\n }\n}\n\nvar didWarnAboutMessageChannel = false;\nvar enqueueTaskImpl = null;\nfunction enqueueTask(task) {\n if (enqueueTaskImpl === null) {\n try {\n // read require off the module object to get around the bundlers.\n // we don't want them to detect a require and bundle a Node polyfill.\n var requireString = ('require' + Math.random()).slice(0, 7);\n var nodeRequire = module && module[requireString]; // assuming we're in node, let's try to get node's\n // version of setImmediate, bypassing fake timers if any.\n\n enqueueTaskImpl = nodeRequire.call(module, 'timers').setImmediate;\n } catch (_err) {\n // we're in a browser\n // we can't use regular timers because they may still be faked\n // so we try MessageChannel+postMessage instead\n enqueueTaskImpl = function (callback) {\n {\n if (didWarnAboutMessageChannel === false) {\n didWarnAboutMessageChannel = true;\n\n if (typeof MessageChannel === 'undefined') {\n error('This browser does not have a MessageChannel implementation, ' + 'so enqueuing tasks via await act(async () => ...) will fail. ' + 'Please file an issue at https://github.com/facebook/react/issues ' + 'if you encounter this warning.');\n }\n }\n }\n\n var channel = new MessageChannel();\n channel.port1.onmessage = callback;\n channel.port2.postMessage(undefined);\n };\n }\n }\n\n return enqueueTaskImpl(task);\n}\n\nvar actScopeDepth = 0;\nvar didWarnNoAwaitAct = false;\nfunction act(callback) {\n {\n // `act` calls can be nested, so we track the depth. This represents the\n // number of `act` scopes on the stack.\n var prevActScopeDepth = actScopeDepth;\n actScopeDepth++;\n\n if (ReactCurrentActQueue.current === null) {\n // This is the outermost `act` scope. Initialize the queue. The reconciler\n // will detect the queue and use it instead of Scheduler.\n ReactCurrentActQueue.current = [];\n }\n\n var prevIsBatchingLegacy = ReactCurrentActQueue.isBatchingLegacy;\n var result;\n\n try {\n // Used to reproduce behavior of `batchedUpdates` in legacy mode. Only\n // set to `true` while the given callback is executed, not for updates\n // triggered during an async event, because this is how the legacy\n // implementation of `act` behaved.\n ReactCurrentActQueue.isBatchingLegacy = true;\n result = callback(); // Replicate behavior of original `act` implementation in legacy mode,\n // which flushed updates immediately after the scope function exits, even\n // if it's an async function.\n\n if (!prevIsBatchingLegacy && ReactCurrentActQueue.didScheduleLegacyUpdate) {\n var queue = ReactCurrentActQueue.current;\n\n if (queue !== null) {\n ReactCurrentActQueue.didScheduleLegacyUpdate = false;\n flushActQueue(queue);\n }\n }\n } catch (error) {\n popActScope(prevActScopeDepth);\n throw error;\n } finally {\n ReactCurrentActQueue.isBatchingLegacy = prevIsBatchingLegacy;\n }\n\n if (result !== null && typeof result === 'object' && typeof result.then === 'function') {\n var thenableResult = result; // The callback is an async function (i.e. returned a promise). Wait\n // for it to resolve before exiting the current scope.\n\n var wasAwaited = false;\n var thenable = {\n then: function (resolve, reject) {\n wasAwaited = true;\n thenableResult.then(function (returnValue) {\n popActScope(prevActScopeDepth);\n\n if (actScopeDepth === 0) {\n // We've exited the outermost act scope. Recursively flush the\n // queue until there's no remaining work.\n recursivelyFlushAsyncActWork(returnValue, resolve, reject);\n } else {\n resolve(returnValue);\n }\n }, function (error) {\n // The callback threw an error.\n popActScope(prevActScopeDepth);\n reject(error);\n });\n }\n };\n\n {\n if (!didWarnNoAwaitAct && typeof Promise !== 'undefined') {\n // eslint-disable-next-line no-undef\n Promise.resolve().then(function () {}).then(function () {\n if (!wasAwaited) {\n didWarnNoAwaitAct = true;\n\n error('You called act(async () => ...) without await. ' + 'This could lead to unexpected testing behaviour, ' + 'interleaving multiple act calls and mixing their ' + 'scopes. ' + 'You should - await act(async () => ...);');\n }\n });\n }\n }\n\n return thenable;\n } else {\n var returnValue = result; // The callback is not an async function. Exit the current scope\n // immediately, without awaiting.\n\n popActScope(prevActScopeDepth);\n\n if (actScopeDepth === 0) {\n // Exiting the outermost act scope. Flush the queue.\n var _queue = ReactCurrentActQueue.current;\n\n if (_queue !== null) {\n flushActQueue(_queue);\n ReactCurrentActQueue.current = null;\n } // Return a thenable. If the user awaits it, we'll flush again in\n // case additional work was scheduled by a microtask.\n\n\n var _thenable = {\n then: function (resolve, reject) {\n // Confirm we haven't re-entered another `act` scope, in case\n // the user does something weird like await the thenable\n // multiple times.\n if (ReactCurrentActQueue.current === null) {\n // Recursively flush the queue until there's no remaining work.\n ReactCurrentActQueue.current = [];\n recursivelyFlushAsyncActWork(returnValue, resolve, reject);\n } else {\n resolve(returnValue);\n }\n }\n };\n return _thenable;\n } else {\n // Since we're inside a nested `act` scope, the returned thenable\n // immediately resolves. The outer scope will flush the queue.\n var _thenable2 = {\n then: function (resolve, reject) {\n resolve(returnValue);\n }\n };\n return _thenable2;\n }\n }\n }\n}\n\nfunction popActScope(prevActScopeDepth) {\n {\n if (prevActScopeDepth !== actScopeDepth - 1) {\n error('You seem to have overlapping act() calls, this is not supported. ' + 'Be sure to await previous act() calls before making a new one. ');\n }\n\n actScopeDepth = prevActScopeDepth;\n }\n}\n\nfunction recursivelyFlushAsyncActWork(returnValue, resolve, reject) {\n {\n var queue = ReactCurrentActQueue.current;\n\n if (queue !== null) {\n try {\n flushActQueue(queue);\n enqueueTask(function () {\n if (queue.length === 0) {\n // No additional work was scheduled. Finish.\n ReactCurrentActQueue.current = null;\n resolve(returnValue);\n } else {\n // Keep flushing work until there's none left.\n recursivelyFlushAsyncActWork(returnValue, resolve, reject);\n }\n });\n } catch (error) {\n reject(error);\n }\n } else {\n resolve(returnValue);\n }\n }\n}\n\nvar isFlushing = false;\n\nfunction flushActQueue(queue) {\n {\n if (!isFlushing) {\n // Prevent re-entrance.\n isFlushing = true;\n var i = 0;\n\n try {\n for (; i < queue.length; i++) {\n var callback = queue[i];\n\n do {\n callback = callback(true);\n } while (callback !== null);\n }\n\n queue.length = 0;\n } catch (error) {\n // If something throws, leave the remaining callbacks on the queue.\n queue = queue.slice(i + 1);\n throw error;\n } finally {\n isFlushing = false;\n }\n }\n }\n}\n\nvar createElement$1 = createElementWithValidation ;\nvar cloneElement$1 = cloneElementWithValidation ;\nvar createFactory = createFactoryWithValidation ;\nvar Children = {\n map: mapChildren,\n forEach: forEachChildren,\n count: countChildren,\n toArray: toArray,\n only: onlyChild\n};\n\nexports.Children = Children;\nexports.Component = Component;\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.Profiler = REACT_PROFILER_TYPE;\nexports.PureComponent = PureComponent;\nexports.StrictMode = REACT_STRICT_MODE_TYPE;\nexports.Suspense = REACT_SUSPENSE_TYPE;\nexports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = ReactSharedInternals;\nexports.act = act;\nexports.cloneElement = cloneElement$1;\nexports.createContext = createContext;\nexports.createElement = createElement$1;\nexports.createFactory = createFactory;\nexports.createRef = createRef;\nexports.forwardRef = forwardRef;\nexports.isValidElement = isValidElement;\nexports.lazy = lazy;\nexports.memo = memo;\nexports.startTransition = startTransition;\nexports.unstable_act = act;\nexports.useCallback = useCallback;\nexports.useContext = useContext;\nexports.useDebugValue = useDebugValue;\nexports.useDeferredValue = useDeferredValue;\nexports.useEffect = useEffect;\nexports.useId = useId;\nexports.useImperativeHandle = useImperativeHandle;\nexports.useInsertionEffect = useInsertionEffect;\nexports.useLayoutEffect = useLayoutEffect;\nexports.useMemo = useMemo;\nexports.useReducer = useReducer;\nexports.useRef = useRef;\nexports.useState = useState;\nexports.useSyncExternalStore = useSyncExternalStore;\nexports.useTransition = useTransition;\nexports.version = ReactVersion;\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop ===\n 'function'\n) {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error());\n}\n \n })();\n}\n", "'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n", "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 BotHandlers,\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} from './plugin'\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\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 blocSchema = z.union([\n z.object({ type: z.literal('text'), payload: textMessageSchema }),\n z.object({ type: z.literal('markdown'), payload: markdownMessageSchema }),\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 blocsSchema = z.object({\n items: z.array(blocSchema),\n})\n\n/**\n * @deprecated use `text` instead\n */\nexport const markdown = { schema: markdownMessageSchema }\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: blocsSchema },\n} as const // should use satisfies operator but this works for older versions of TS\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()\nconst fromJsonSchema = ZodType.fromJsonSchema\nconst fromObject = ZodType.fromObject\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 fromJsonSchema,\n fromObject,\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 { useMemo, useEffect } from 'react'\nimport { JSONSchema, ObjectSchema, Path } from '../types'\nimport { useFormData } from './useFormData'\nimport { zuiKey } from '../constants'\n\nexport const useDiscriminator = (fieldSchema: JSONSchema, path: Path) => {\n const { handlePropertyChange, data } = useFormData(fieldSchema, path)\n\n const { discriminator, value, discriminatedSchema } = useMemo(() => {\n const discriminator = resolveDiscriminator(fieldSchema.anyOf)\n const value = discriminator?.key ? data?.[discriminator.key] : fieldSchema.default || null\n const discriminatedSchema = resolveDiscriminatedSchema(discriminator?.key || null, value, fieldSchema.anyOf)\n return {\n discriminator,\n value,\n discriminatedSchema,\n }\n }, [fieldSchema.anyOf, data])\n\n useEffect(() => {\n if (\n discriminator?.key &&\n discriminator?.values.length &&\n Object.keys(data || {}).length < 1 &&\n !fieldSchema.default\n ) {\n handlePropertyChange(path, { [discriminator.key]: discriminator.values[0] })\n }\n }, [])\n\n return { discriminator, discriminatorValue: value, discriminatedSchema }\n}\n\nexport const resolveDiscriminator = (anyOf: ObjectSchema['anyOf']) => {\n const output = anyOf\n ?.map((schema) => {\n if (schema.type !== 'object') {\n return null\n }\n if (!schema.properties) {\n return null\n }\n return Object.entries(schema.properties)\n .map(([key, def]) => {\n if (def.type === 'string' && def.enum?.length) {\n return { key, value: def.enum[0] }\n }\n return null\n })\n .filter((v): v is { key: string; value: string } => !!v)\n })\n .flat()\n .reduce(\n (acc, data) => {\n if (!data) {\n return acc\n }\n const { key, value } = data\n if (acc.key === null) {\n acc.key = key\n }\n if (acc.key === key) {\n acc.values.push(value)\n }\n\n return acc\n },\n { key: null as string | null, values: [] as string[] },\n )\n\n if (output?.key === null || !output?.values.length) {\n return null\n }\n return output\n}\n\nexport const resolveDiscriminatedSchema = (key: string | null, value: string | null, anyOf: ObjectSchema['anyOf']) => {\n if (!anyOf?.length || !key || !value) {\n return null\n }\n for (const schema of anyOf) {\n if (schema.type !== 'object') {\n continue\n }\n const discriminator = schema.properties?.[key]\n if (discriminator?.type === 'string' && discriminator.enum?.length && discriminator.enum[0] === value) {\n return {\n ...schema,\n properties: {\n ...schema.properties,\n [key]: { ...discriminator, [zuiKey]: { hidden: true } },\n },\n } as ObjectSchema\n }\n }\n return null\n}\n", "import React, { PropsWithChildren, createContext, useCallback, useContext, useEffect, useMemo, useState } from 'react'\nimport { ArraySchema, FormError, FormValidation, JSONSchema, Path } from '../types'\nimport { jsonSchemaToZui } from '../../transforms/json-schema-to-zui'\nimport { zuiKey } from '../constants'\nimport { Maskable } from '../../z'\nimport { pathMatches } from '../utils'\n\nexport type FormDataContextProps = {\n /**\n * The current form data\n * */\n formData: any\n formSchema: JSONSchema | any\n /**\n * Function to update the form data, takes a callback that receives the form data with the new values\n * */\n setFormData: (callback: (formData: any) => void) => void\n\n /**\n * hiddenState is an object that contains the hidden state of the form fields\n */\n hiddenState: object\n /**\n * Function to update the hidden state, takes a callback that receives the hidden state with the new values\n * */\n setHiddenState: (callback: (hiddenState: any) => void) => void\n /**\n * disabledState is an object that contains the disabled state of the form fields\n */\n disabledState: object\n /**\n * Function to update the disabled state, takes a callback that receives the disabled state with the new values\n * */\n setDisabledState: (callback: (disabledState: any) => void) => void\n\n /**\n * Validation state of the form\n */\n validation: FormValidation\n\n disableValidation?: boolean\n\n /**\n * Function to transform the form data before validation and computation of hidden/disabled states\n * useful for cases where the underlying form data does not match the schema\n */\n dataTransform?: (formData: any) => any\n\n onValidation?: (validation: FormValidation) => void\n}\n\nexport type FormDataProviderProps = Omit<\n FormDataContextProps,\n 'setHiddenState' | 'setDisabledState' | 'hiddenState' | 'disabledState' | 'validation'\n>\n\nexport const FormDataContext = createContext<FormDataContextProps>({\n formData: undefined,\n formSchema: undefined,\n setFormData: () => {\n throw new Error('Must be within a FormDataProvider')\n },\n setHiddenState: () => {\n throw new Error('Must be within a FormDataProvider')\n },\n setDisabledState: () => {\n throw new Error('Must be within a FormDataProvider')\n },\n hiddenState: {},\n disabledState: {},\n validation: { formValid: null, formErrors: null },\n})\n\nconst parseMaskableField = (key: 'hidden' | 'disabled', fieldSchema: JSONSchema, data: any): Maskable => {\n const value = fieldSchema[zuiKey]?.[key]\n if (typeof value === 'undefined') {\n return false\n }\n\n if (typeof value === 'boolean') {\n return value\n }\n\n if (typeof value === 'string') {\n if (typeof window === 'undefined') {\n console.warn('Function evaluation is not supported in server side rendering')\n return false\n }\n const func = new Function('return ' + value)()\n const result = func(data)\n\n switch (typeof result) {\n case 'object':\n case 'boolean':\n return result\n default:\n return false\n }\n }\n return false\n}\n\nexport const useFormData = (fieldSchema: JSONSchema, path: Path) => {\n const formContext = useContext(FormDataContext)\n if (formContext === undefined) {\n throw new Error('useFormData must be used within a FormDataProvider')\n }\n\n const data = useMemo(() => getPathData(formContext.formData, path), [formContext.formData, path])\n\n const validation: FormValidation = useMemo(() => {\n if (formContext.validation.formValid === null) {\n return { formValid: null, formErrors: null }\n }\n if (formContext.validation.formValid === false) {\n return {\n formValid: false,\n formErrors:\n formContext.validation.formErrors\n ?.filter((issue) => pathMatches(issue.path, path))\n .map<FormError>((issue) => ({\n message: issue.message,\n code: issue.code,\n path: path,\n })) || null,\n }\n }\n return { formValid: true, formErrors: [] }\n }, [formContext.validation.formValid, formContext.validation.formErrors, path])\n\n const transformedData = formContext.dataTransform ? formContext.dataTransform(data) : data\n\n const hiddenMask = useMemo(\n () => parseMaskableField('hidden', fieldSchema, transformedData),\n [fieldSchema, transformedData],\n )\n const disabledMask = useMemo(\n () => parseMaskableField('disabled', fieldSchema, transformedData),\n [fieldSchema, transformedData],\n )\n\n useEffect(() => {\n formContext.setHiddenState((hiddenState) => setObjectPath(hiddenState, path, hiddenMask || {}))\n formContext.setDisabledState((disabledState) => setObjectPath(disabledState, path, disabledMask || {}))\n }, [JSON.stringify({ fieldSchema, data })])\n\n const { disabled, hidden } = useMemo(() => {\n const hidden = hiddenMask === true || getPathData(formContext.hiddenState, path)\n const disabled = disabledMask === true || getPathData(formContext.disabledState, path)\n return { hidden: hidden === true, disabled: disabled === true }\n }, [formContext.hiddenState, formContext.disabledState, hiddenMask, disabledMask, path])\n\n const handlePropertyChange = useCallback(\n (path: Path, data: any) => {\n formContext.setFormData((formData) => setObjectPath(formData, path, data))\n },\n [formContext.setFormData],\n )\n const addArrayItem = useCallback(\n (path: Path, data: any = undefined) => {\n const defaultData = getDefaultValues((fieldSchema as ArraySchema).items)\n\n formContext.setFormData((formData) => {\n const currentData = getPathData(formData, path) || []\n if (data === undefined) {\n data = defaultData\n }\n return setObjectPath(formData, path, Array.isArray(currentData) ? [...currentData, data] : [data])\n })\n },\n [formContext.setFormData],\n )\n\n const removeArrayItem = useCallback(\n (path: Path, index: number) => {\n formContext.setFormData((formData) => {\n const currentData = getPathData(formData, path) || []\n\n if (!Array.isArray(currentData)) {\n return formData\n }\n\n currentData.splice(index, 1)\n return setObjectPath(formData, path, currentData)\n })\n },\n [formContext.setFormData],\n )\n\n return { ...formContext, data, disabled, hidden, handlePropertyChange, addArrayItem, removeArrayItem, ...validation }\n}\n\nexport function setObjectPath(obj: any, path: Path, data: any): any {\n if (path.length === 0) {\n return data\n }\n\n const pathLength = path.length\n\n path.reduce((current: any, key: string | number, index: number) => {\n if (index === pathLength - 1) {\n current[key] = data\n } else {\n if (!current[key]) {\n current[key] = isNaN(Number(key)) ? {} : []\n }\n }\n return current[key]\n }, obj ?? {})\n return { ...obj }\n}\n\nexport const getDefaultValues = (schema: JSONSchema | JSONSchema[], optional?: boolean): any => {\n if (Array.isArray(schema)) {\n return getDefaultValues(schema[0]!)\n }\n\n if (schema.default) {\n return schema.default\n }\n\n if (schema.nullable) {\n return null\n }\n\n if (optional) {\n return undefined\n }\n\n if (schema.anyOf?.length) {\n return getDefaultValues(schema.anyOf[0]!)\n }\n\n if (schema.type === 'object') {\n if (schema.properties) {\n const data: Record<string, any> = {}\n Object.entries(schema.properties).map(([key, fieldSchema]) => {\n data[key] = getDefaultValues(fieldSchema, !schema.required?.includes(key) || isOptional(fieldSchema) || false)\n })\n return data\n }\n }\n\n if (schema.type === 'array') {\n if (schema.minItems && schema.minItems > 0) {\n return [getDefaultValues(schema.items)]\n }\n\n return []\n }\n\n if (schema.type === 'string') {\n if (schema.enum?.length) {\n return schema.enum[0]\n }\n return ''\n }\n\n if (schema.type === 'number') {\n if (schema.enum?.length) {\n return schema.enum[0]\n }\n return 0\n }\n\n if (schema.type === 'boolean') {\n if (schema.enum?.length) {\n return schema.enum[0]\n }\n return false\n }\n\n return undefined\n}\n\nexport const FormDataProvider: React.FC<PropsWithChildren<FormDataProviderProps>> = ({\n children,\n setFormData,\n formData,\n formSchema,\n disableValidation,\n onValidation,\n dataTransform,\n}) => {\n const [hiddenState, setHiddenState] = useState({})\n const [disabledState, setDisabledState] = useState({})\n\n const transformedData = dataTransform ? dataTransform(formData) : formData\n\n const validation: FormValidation = useMemo(() => {\n if (disableValidation) {\n return { formValid: null, formErrors: null }\n }\n\n if (!formSchema) {\n return { formValid: null, formErrors: null }\n }\n\n const validation = jsonSchemaToZui(formSchema).safeParse(transformedData)\n\n if (!validation.success) {\n return {\n formValid: false,\n formErrors: validation.error.issues,\n }\n }\n return {\n formValid: true,\n formErrors: [],\n }\n }, [JSON.stringify({ transformedData })])\n\n useEffect(() => {\n if (onValidation) {\n onValidation(validation)\n }\n }, [validation])\n\n return (\n <FormDataContext.Provider\n value={{\n formData,\n setFormData,\n formSchema,\n validation,\n hiddenState,\n setHiddenState,\n disabledState,\n setDisabledState,\n dataTransform,\n }}\n >\n {children}\n </FormDataContext.Provider>\n )\n}\n\nexport function getPathData(object: any, path: Path): any {\n return path.reduce((prev, curr) => {\n return prev ? prev[curr] : null\n }, object)\n}\n\nexport function isOptional(schema: JSONSchema): boolean {\n return schema.anyOf?.some((s) => s.not && Object.keys(s.not).length === 0) || false\n}\n\ntype AnyObject = { [key: string]: any }\n\nexport function deepMerge(target: AnyObject, source: AnyObject): AnyObject {\n const output = { ...target }\n\n for (const key in source) {\n if (source.hasOwnProperty(key)) {\n if (typeof source[key] === 'object' && source[key] !== null && !Array.isArray(source[key])) {\n if (typeof output[key] === 'object' && output[key] !== null && !Array.isArray(output[key])) {\n output[key] = deepMerge(output[key], source[key])\n } else {\n output[key] = deepMerge({}, source[key])\n }\n } else {\n output[key] = source[key]\n }\n }\n }\n\n return output\n}\n", "import { zuiKey } from './constants'\nimport { resolveDiscriminator } from './hooks/useDiscriminator'\nimport { BaseType, JSONSchema, Path, ZuiComponentMap, ZuiReactComponent } from './types'\n\ntype ComponentMeta<Type extends BaseType = BaseType> = {\n type: Type\n Component: ZuiReactComponent<Type, 'default', any>\n id: string\n params: any\n}\n\nexport const getSchemaType = (schema: JSONSchema): BaseType => {\n if (schema.anyOf?.length) {\n const discriminator = resolveDiscriminator(schema.anyOf)\n return discriminator ? 'discriminatedUnion' : 'object'\n }\n if (schema.type === 'integer') {\n return 'number'\n }\n\n return schema.type\n}\n\nexport const resolveComponent = <Type extends BaseType>(\n components: ZuiComponentMap<any> | undefined,\n fieldSchema: JSONSchema,\n): ComponentMeta<Type> | null => {\n const type = getSchemaType(fieldSchema)\n const uiDefinition = fieldSchema[zuiKey]?.displayAs || null\n\n if (!uiDefinition || !Array.isArray(uiDefinition) || uiDefinition.length < 2) {\n const defaultComponent = components?.[type]?.default\n\n if (!defaultComponent) {\n return null\n }\n\n return {\n Component: defaultComponent as ZuiReactComponent<Type, 'default', any>,\n type: type as Type,\n id: 'default',\n params: {},\n }\n }\n\n const componentID: string = uiDefinition[0]\n\n const Component = components?.[type]?.[componentID] || null\n\n if (!Component) {\n console.warn(`Component ${type}.${componentID} not found`)\n return null\n }\n\n const params = uiDefinition[1] || {}\n\n return {\n Component: Component as ZuiReactComponent<Type, 'default', any>,\n type: type as Type,\n id: componentID,\n params,\n }\n}\n\nexport function pathMatches(path1: Path, path2: Path): boolean {\n if (path1.length !== path2.length) return false\n return path1.every((part, index) => part === path2[index])\n}\n\nexport function formatTitle(title: string, separator?: RegExp): string {\n if (!separator) separator = new RegExp('/s|-|_| ', 'g')\n return decamelize(title).split(separator).map(capitalize).map(handleSpecialWords).reduce(combine)\n}\n\nfunction capitalize(word: string): string {\n return word.charAt(0).toUpperCase() + word.substring(1)\n}\n\nfunction combine(acc: string, text: string): string {\n return `${acc} ${text}`\n}\n\nfunction decamelize(text: string): string {\n return text\n .replace(/([a-z\\d])([A-Z])/g, '$1_$2')\n .replace(/([A-Z]+)([A-Z][a-z\\d]+)/g, '$1_$2')\n .toLowerCase()\n}\n\nfunction handleSpecialWords(text: string, index: number, words: string[]): string {\n const lowercaseStr = text.toLowerCase()\n const uppercaseStr = text.toUpperCase()\n for (const special of specialCase) {\n if (special.toLowerCase() === lowercaseStr) return special\n }\n if (acronyms.includes(uppercaseStr)) return uppercaseStr\n // If the word is the first word in the sentence, but it's not a specially\n // cased word or an acronym, return the capitalized string\n if (index === 0) return text\n // If the word is the last word in the sentence, but it's not a specially\n // cased word or an acronym, return the capitalized string\n if (index === words.length - 1) return text\n // Return the word capitalized if it's 4 characters or more\n if (text.length >= 4) return text\n if (prepositions.includes(lowercaseStr)) return lowercaseStr\n if (conjunctions.includes(lowercaseStr)) return lowercaseStr\n if (articles.includes(lowercaseStr)) return lowercaseStr\n return text\n}\n\nexport const words = (string: string): string[] => {\n const hasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/\n const unicodeWords = /[A-Z]?[a-z]+|[A-Z]+(?=[A-Z][a-z]|\\d|\\W)|[0-9]+/g\n const asciiWords = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g\n\n return hasUnicodeWord.test(string) ? string.match(unicodeWords) || [] : string.match(asciiWords) || []\n}\n\nconst deburredLetters: { [key: string]: string } = {\n // Latin-1 Supplement block\n '\\xc0': 'A',\n '\\xc1': 'A',\n '\\xc2': 'A',\n '\\xc3': 'A',\n '\\xc4': 'A',\n '\\xc5': 'A',\n '\\xe0': 'a',\n '\\xe1': 'a',\n '\\xe2': 'a',\n '\\xe3': 'a',\n '\\xe4': 'a',\n '\\xe5': 'a',\n '\\xc7': 'C',\n '\\xe7': 'c',\n '\\xd0': 'D',\n '\\xf0': 'd',\n '\\xc8': 'E',\n '\\xc9': 'E',\n '\\xca': 'E',\n '\\xcb': 'E',\n '\\xe8': 'e',\n '\\xe9': 'e',\n '\\xea': 'e',\n '\\xeb': 'e',\n '\\xcc': 'I',\n '\\xcd': 'I',\n '\\xce': 'I',\n '\\xcf': 'I',\n '\\xec': 'i',\n '\\xed': 'i',\n '\\xee': 'i',\n '\\xef': 'i',\n '\\xd1': 'N',\n '\\xf1': 'n',\n '\\xd2': 'O',\n '\\xd3': 'O',\n '\\xd4': 'O',\n '\\xd5': 'O',\n '\\xd6': 'O',\n '\\xd8': 'O',\n '\\xf2': 'o',\n '\\xf3': 'o',\n '\\xf4': 'o',\n '\\xf5': 'o',\n '\\xf6': 'o',\n '\\xf8': 'o',\n '\\xd9': 'U',\n '\\xda': 'U',\n '\\xdb': 'U',\n '\\xdc': 'U',\n '\\xf9': 'u',\n '\\xfa': 'u',\n '\\xfb': 'u',\n '\\xfc': 'u',\n '\\xdd': 'Y',\n '\\xfd': 'y',\n '\\xff': 'y',\n '\\xc6': 'Ae',\n '\\xe6': 'ae',\n '\\xde': 'Th',\n '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block\n '\\u0100': 'A',\n '\\u0102': 'A',\n '\\u0104': 'A',\n '\\u0101': 'a',\n '\\u0103': 'a',\n '\\u0105': 'a',\n '\\u0106': 'C',\n '\\u0108': 'C',\n '\\u010a': 'C',\n '\\u010c': 'C',\n '\\u0107': 'c',\n '\\u0109': 'c',\n '\\u010b': 'c',\n '\\u010d': 'c',\n '\\u010e': 'D',\n '\\u0110': 'D',\n '\\u010f': 'd',\n '\\u0111': 'd',\n '\\u0112': 'E',\n '\\u0114': 'E',\n '\\u0116': 'E',\n '\\u0118': 'E',\n '\\u011a': 'E',\n '\\u0113': 'e',\n '\\u0115': 'e',\n '\\u0117': 'e',\n '\\u0119': 'e',\n '\\u011b': 'e',\n '\\u011c': 'G',\n '\\u011e': 'G',\n '\\u0120': 'G',\n '\\u0122': 'G',\n '\\u011d': 'g',\n '\\u011f': 'g',\n '\\u0121': 'g',\n '\\u0123': 'g',\n '\\u0124': 'H',\n '\\u0126': 'H',\n '\\u0125': 'h',\n '\\u0127': 'h',\n '\\u0128': 'I',\n '\\u012a': 'I',\n '\\u012c': 'I',\n '\\u012e': 'I',\n '\\u0130': 'I',\n '\\u0129': 'i',\n '\\u012b': 'i',\n '\\u012d': 'i',\n '\\u012f': 'i',\n '\\u0131': 'i',\n '\\u0134': 'J',\n '\\u0135': 'j',\n '\\u0136': 'K',\n '\\u0137': 'k',\n '\\u0138': 'k',\n '\\u0139': 'L',\n '\\u013b': 'L',\n '\\u013d': 'L',\n '\\u013f': 'L',\n '\\u0141': 'L',\n '\\u013a': 'l',\n '\\u013c': 'l',\n '\\u013e': 'l',\n '\\u0140': 'l',\n '\\u0142': 'l',\n '\\u0143': 'N',\n '\\u0145': 'N',\n '\\u0147': 'N',\n '\\u014a': 'N',\n '\\u0144': 'n',\n '\\u0146': 'n',\n '\\u0148': 'n',\n '\\u014b': 'n',\n '\\u014c': 'O',\n '\\u014e': 'O',\n '\\u0150': 'O',\n '\\u014d': 'o',\n '\\u014f': 'o',\n '\\u0151': 'o',\n '\\u0154': 'R',\n '\\u0156': 'R',\n '\\u0158': 'R',\n '\\u0155': 'r',\n '\\u0157': 'r',\n '\\u0159': 'r',\n '\\u015a': 'S',\n '\\u015c': 'S',\n '\\u015e': 'S',\n '\\u0160': 'S',\n '\\u015b': 's',\n '\\u015d': 's',\n '\\u015f': 's',\n '\\u0161': 's',\n '\\u0162': 'T',\n '\\u0164': 'T',\n '\\u0166': 'T',\n '\\u0163': 't',\n '\\u0165': 't',\n '\\u0167': 't',\n '\\u0168': 'U',\n '\\u016a': 'U',\n '\\u016c': 'U',\n '\\u016e': 'U',\n '\\u0170': 'U',\n '\\u0172': 'U',\n '\\u0169': 'u',\n '\\u016b': 'u',\n '\\u016d': 'u',\n '\\u016f': 'u',\n '\\u0171': 'u',\n '\\u0173': 'u',\n '\\u0174': 'W',\n '\\u0175': 'w',\n '\\u0176': 'Y',\n '\\u0177': 'y',\n '\\u0178': 'Y',\n '\\u0179': 'Z',\n '\\u017b': 'Z',\n '\\u017d': 'Z',\n '\\u017a': 'z',\n '\\u017c': 'z',\n '\\u017e': 'z',\n '\\u0132': 'IJ',\n '\\u0133': 'ij',\n '\\u0152': 'Oe',\n '\\u0153': 'oe',\n '\\u0149': \"'n\",\n '\\u017f': 's',\n}\n\nexport const deburr = (string: string): string => {\n return string.replace(/[^\\u0000-\\u007E]/g, (char) => deburredLetters[char] || char)\n}\n\nexport const camelCase = (string: string): string => {\n return words(deburr(string.replace(/['\\u2019]/g, ''))).reduce((result: string, word: string, index: number) => {\n word = word.toLowerCase()\n return result + (index ? capitalize(word) : word)\n }, '')\n}\n\nconst acronyms = [\n '2D',\n '3D',\n '4WD',\n 'A2O',\n 'API',\n 'BIOS',\n 'CCTV',\n 'CC',\n 'CCV',\n 'CD',\n 'CD-ROM',\n 'COBOL',\n 'CIA',\n 'CMS',\n 'CSS',\n 'CSV',\n 'CV',\n 'DIY',\n 'DVD',\n 'DB',\n 'DNA',\n 'E3',\n 'EIN',\n 'ESPN',\n 'FAQ',\n 'FAQs',\n 'FTP',\n 'FPS',\n 'FORTRAN',\n 'FBI',\n 'HTML',\n 'HTTP',\n 'ID',\n 'IP',\n 'ISO',\n 'JS',\n 'JSON',\n 'LASER',\n 'M2A',\n 'M2M',\n 'M2MM',\n 'M2O',\n 'MMORPG',\n 'NAFTA',\n 'NASA',\n 'NDA',\n 'O2M',\n 'PDF',\n 'PHP',\n 'POP',\n 'RAM',\n 'RNGR',\n 'ROM',\n 'RPG',\n 'RTFM',\n 'RTS',\n 'SCUBA',\n 'SITCOM',\n 'SKU',\n 'SMTP',\n 'SQL',\n 'SSN',\n 'SWAT',\n 'TBS',\n 'TTL',\n 'TV',\n 'TNA',\n 'UI',\n 'URL',\n 'USB',\n 'UWP',\n 'VIP',\n 'W3C',\n 'WYSIWYG',\n 'WWW',\n 'WWE',\n 'WWF',\n]\n\nconst articles = ['a', 'an', 'the']\n\nconst conjunctions = [\n 'and',\n 'that',\n 'but',\n 'or',\n 'as',\n 'if',\n 'when',\n 'than',\n 'because',\n 'while',\n 'where',\n 'after',\n 'so',\n 'though',\n 'since',\n 'until',\n 'whether',\n 'before',\n 'although',\n 'nor',\n 'like',\n 'once',\n 'unless',\n 'now',\n 'except',\n]\n\nconst prepositions = [\n 'about',\n 'above',\n 'across',\n 'after',\n 'against',\n 'along',\n 'among',\n 'around',\n 'at',\n 'because of',\n 'before',\n 'behind',\n 'below',\n 'beneath',\n 'beside',\n 'besides',\n 'between',\n 'beyond',\n 'but',\n 'by',\n 'concerning',\n 'despite',\n 'down',\n 'during',\n 'except',\n 'excepting',\n 'for',\n 'from',\n 'in',\n 'in front of',\n 'inside',\n 'in spite of',\n 'instead of',\n 'into',\n 'like',\n 'near',\n 'of',\n 'off',\n 'on',\n 'onto',\n 'out',\n 'outside',\n 'over',\n 'past',\n 'regarding',\n 'since',\n 'through',\n 'throughout',\n 'to',\n 'toward',\n 'under',\n 'underneath',\n 'until',\n 'up',\n 'upon',\n 'up to',\n 'with',\n 'within',\n 'without',\n 'with regard to',\n 'with respect to',\n]\n\nconst specialCase = [\n '2FA',\n '3D',\n '4K',\n '5K',\n '8K',\n 'AGI',\n 'BI',\n 'ChatGPT',\n 'CTA',\n 'DateTime',\n 'GitHub',\n 'GPT',\n 'HD',\n 'IBMid',\n 'ID',\n 'IDs',\n 'iMac',\n 'IMAX',\n 'iOS',\n 'IP',\n 'iPad',\n 'iPhone',\n 'iPod',\n 'LDAP',\n 'LinkedIn',\n 'LLM',\n 'M2M',\n 'M2O',\n 'macOS',\n 'McDonalds',\n 'ML',\n 'MySQL',\n 'NLG',\n 'NLP',\n 'NLU',\n 'O2M',\n 'OpenAI',\n 'PDFs',\n 'PEFT',\n 'pH',\n 'PostgreSQL',\n 'SEO',\n 'TTS',\n 'UHD',\n 'UUID',\n 'XSS',\n 'YouTube',\n]\n", "import { camelCase, deburr } from '../../ui/utils'\nimport { 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 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\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\nexport const getMultilineComment = (description?: string) => {\n const descLines = (description ?? '').split('\\n').filter((l) => l.trim().length > 0)\n return descLines.length === 0\n ? ''\n : descLines.length === 1\n ? `/** ${descLines[0]} */`\n : `/**\\n * ${descLines.join('\\n * ')}\\n */`\n}\n\nexport const toValidFunctionName = (str: string) => {\n let name = deburr(str)\n name = name.replace(/[^a-zA-Z0-9_$]/g, '')\n\n if (!/^[a-zA-Z_$]/.test(name)) {\n name = `_${name}`\n }\n\n return camelCase(name)\n}\n", "import { 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) {\n super(`Zod type ${type} cannot be transformed to JSON Schema.`)\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 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 public optional: boolean = false,\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} & {\n declaration?: boolean | TypescriptDeclarationType\n}\n\ntype SchemaTypes = z.Schema | KeyValue | FnParameters | Declaration | null\n\ntype InternalOptions = {\n parent?: SchemaTypes\n}\n\n// TODO: rename this transform to `toTypescriptType`\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 toTypescript(schema: z.Schema, options: TypescriptGenerationOptions = {}): string {\n const wrappedSchema: Declaration = getDeclarationProps(schema, options)\n\n let dts = sUnwrapZod(wrappedSchema, {})\n\n if (options.formatter) {\n dts = options.formatter(dts)\n }\n\n return dts\n}\n\nfunction sUnwrapZod(schema: z.Schema | KeyValue | FnParameters | Declaration | null, config: InternalOptions): string {\n const newConfig: InternalOptions = {\n ...config,\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 if (schema.value instanceof z.ZodOptional) {\n let innerType = schema.value._def.innerType as z.Schema\n if (innerType instanceof z.Schema && !innerType.description && schema.value.description) {\n innerType = innerType?.describe(schema.value.description)\n }\n return sUnwrapZod(new KeyValue(schema.key, innerType, true), newConfig)\n }\n\n const description = getMultilineComment(schema.value._def.description)\n const delimiter = description?.trim().length > 0 ? '\\n' : ''\n const withoutDesc = schema.value.describe('')\n\n // either we are children of a z.ZodOptional or there is a z.ZodOptional in the children\n const isOptional = schema.optional || schema.value.isOptional()\n const optionalModifier = isOptional ? '?' : ''\n return `${delimiter}${description}${delimiter}${schema.key}${optionalModifier}: ${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 typings = sUnwrapZod(schema.schema, newConfig)\n\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) {\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(def.description)} string`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodNumber:\n case z.ZodFirstPartyTypeKind.ZodNaN:\n case z.ZodFirstPartyTypeKind.ZodBigInt:\n return `${getMultilineComment(def.description)} number`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodBoolean:\n return `${getMultilineComment(schema._def.description)} boolean`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodDate:\n return `${getMultilineComment(def.description)} Date`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodUndefined:\n return `${getMultilineComment(def.description)} undefined`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodNull:\n return `${getMultilineComment(def.description)} null`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodAny:\n return `${getMultilineComment(def.description)} any`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodUnknown:\n return `${getMultilineComment(def.description)} unknown`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodNever:\n return `${getMultilineComment(def.description)} never`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodVoid:\n return `${getMultilineComment(def.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 return sUnwrapZod(new KeyValue(toPropertyKey(key), value), newConfig)\n })\n\n return `{ ${props.join('; ')} }`\n case z.ZodFirstPartyTypeKind.ZodUnion:\n const options = def.options.map((option) => {\n return sUnwrapZod(option, newConfig)\n })\n return `${getMultilineComment(def.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(schema._def.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(def.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\n return `${getMultilineComment(def.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(def.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 return sUnwrapZod(def.innerType, 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(def.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 description = getMultilineComment(declaration.props.schema.description)\n const withoutDesc = declaration.props.schema.describe('')\n const typings = sUnwrapZod(withoutDesc, options)\n\n if (declaration.props.type === 'variable') {\n return stripSpaces(`${description}declare const ${declaration.props.identifier}: ${typings};`)\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};`)\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", "/** 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", "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 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 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 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 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", "import { mapValues } from 'lodash-es'\n\nimport z, { util } from '../../z'\nimport { primitiveToTypescriptValue, getMultilineComment, unknownToTypescriptValue } from '../common/utils'\nimport * as errors from '../common/errors'\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 `${getMultilineComment(def.description)}z.string()`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodNumber:\n return `${getMultilineComment(def.description)}z.number()`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodNaN:\n return `${getMultilineComment(def.description)}z.nan()`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodBigInt:\n return `${getMultilineComment(def.description)}z.bigint()`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodBoolean:\n return `${getMultilineComment(schema._def.description)}z.boolean()`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodDate:\n return `${getMultilineComment(def.description)}z.date()`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodUndefined:\n return `${getMultilineComment(def.description)}z.undefined()`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodNull:\n return `${getMultilineComment(def.description)}z.null()`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodAny:\n return `${getMultilineComment(def.description)}z.any()`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodUnknown:\n return `${getMultilineComment(def.description)}z.unknown()`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodNever:\n return `${getMultilineComment(def.description)}z.never()`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodVoid:\n return `${getMultilineComment(def.description)}z.void()`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodArray:\n return `z.array(${sUnwrapZod(def.type)})`\n\n case z.ZodFirstPartyTypeKind.ZodObject:\n const props = mapValues(def.shape(), (value) => {\n if (value instanceof z.Schema) {\n return sUnwrapZod(value)\n }\n return `z.any()`\n })\n return [\n //\n `${getMultilineComment(def.description)}z.object({`,\n ...Object.entries(props).map(([key, value]) => ` ${key}: ${value},`),\n `})`,\n ]\n .join('\\n')\n .trim()\n\n case z.ZodFirstPartyTypeKind.ZodUnion:\n const options = def.options.map(sUnwrapZod)\n return `${getMultilineComment(def.description)}z.union([${options.join(', ')}])`.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 `${getMultilineComment(def.description)}z.discriminatedUnion(${discriminator}, [${opts.join(', ')}])`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodIntersection:\n const left: string = sUnwrapZod(def.left)\n const right: string = sUnwrapZod(def.right)\n return `${getMultilineComment(def.description)}z.intersection(${left}, ${right})`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodTuple:\n const items = def.items.map(sUnwrapZod)\n return `${getMultilineComment(def.description)}z.tuple([${items.join(', ')}])`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodRecord:\n const keyType = sUnwrapZod(def.keyType)\n const valueType = sUnwrapZod(def.valueType)\n return `${getMultilineComment(def.description)}z.record(${keyType}, ${valueType})`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodMap:\n const mapKeyType = sUnwrapZod(def.keyType)\n const mapValueType = sUnwrapZod(def.valueType)\n return `${getMultilineComment(def.description)}z.map(${mapKeyType}, ${mapValueType})`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodSet:\n return `${getMultilineComment(def.description)}z.set(${sUnwrapZod(def.valueType)})`.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 `${getMultilineComment(def.description)}z.function()${argsString}.returns(${returns})`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodLazy:\n return `${getMultilineComment(def.description)}z.lazy(() => ${sUnwrapZod(def.getter())})`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodLiteral:\n const value = primitiveToTypescriptValue(def.value)\n return `${getMultilineComment(def.description)}z.literal(${value})`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodEnum:\n const values = def.values.map(primitiveToTypescriptValue)\n return `${getMultilineComment(def.description)}z.enum([${values.join(', ')}])`.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 `${getMultilineComment(def.description)}z.optional(${sUnwrapZod(def.innerType)})`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodNullable:\n return `${getMultilineComment(def.description)}z.nullable(${sUnwrapZod(def.innerType)})`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodDefault:\n const defaultValue = unknownToTypescriptValue(def.defaultValue())\n // TODO: use z.default() notation\n return `${getMultilineComment(def.description)}${sUnwrapZod(def.innerType)}.default(${defaultValue})`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodCatch:\n throw new errors.UnsupportedZuiToTypescriptSchemaError(z.ZodFirstPartyTypeKind.ZodCatch)\n\n case z.ZodFirstPartyTypeKind.ZodPromise:\n return `${getMultilineComment(def.description)}z.promise(${sUnwrapZod(def.type)})`.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 `${getMultilineComment(def.description)}z.readonly(${sUnwrapZod(def.innerType)})`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodRef:\n const uri = primitiveToTypescriptValue(def.uri)\n return `${getMultilineComment(def.description)}z.ref(${uri})`.trim()\n\n default:\n util.assertNever(def)\n }\n}\n", "import type {\n BaseType,\n UIComponentDefinitions,\n ZodKindToBaseType,\n JSONSchema,\n ParseSchema,\n EmptyComponentDefinitions,\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 jsonSchemaToZui,\n zuiToJsonSchema,\n objectToZui,\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 KindToDef,\n} from '../index'\nimport { CatchFn } from '../catch'\nimport type { ZuiSchemaOptions } from '../../../transforms/zui-to-json-schema/zui-extension'\nimport type { ObjectToZuiOptions } from '../../../transforms/object-to-zui'\nimport { TypescriptGenerationOptions, toTypescript } from '../../../transforms/zui-to-typescript-type'\nimport { toTypescriptSchema } from '../../../transforms/zui-to-typescript-schema'\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<any, any, any>> = T['_output']\nexport type input<T extends ZodType<any, any, any>> = T['_input']\nexport type output<T extends ZodType<any, any, any>> = 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]?: any\n }\n | undefined\nexport type ProcessedCreateParams = {\n errorMap?: ZodErrorMap\n description?: string\n [zuiKey]?: any\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 readonly _type!: Output\n readonly _output!: Output\n readonly _input!: Input\n readonly _def!: Def\n\n get description() {\n return this._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 /** 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) as any\n }\n nullable(): ZodNullable<this> {\n return ZodNullable.create(this, this._def) as any\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 or<T extends ZodTypeAny>(option: T): ZodUnion<[this, T]> {\n return ZodUnion.create([this, option], this._def) as any\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 }) as any\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 This = (this as any).constructor\n return new This({\n ...this._def,\n description,\n })\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 object */\n metadata(data: Record<string, ZuiMetadata>): this {\n for (const [key, value] of Object.entries(data)) {\n this._def[zuiKey] = {\n ...this._def[zuiKey],\n [key]: value,\n }\n }\n return this\n }\n\n /** get metadata of object */\n getMetadata(): Record<string, ZuiMetadata> {\n return { ...this._def[zuiKey] }\n }\n\n /** set metadata of object */\n setMetadata(data: Record<string, ZuiMetadata>): void {\n this._def[zuiKey] = { ...data }\n }\n\n /**\n * @deprecated use `getMetadata` instead\n */\n get ui(): Record<string, ZuiMetadata> {\n const root = this._getMetadataRoot()\n return { ...root._def[zuiKey] }\n }\n\n private _setZuiMeta(key: string, value: ZuiMetadata) {\n const root = this._getMetadataRoot()\n root._def[zuiKey] = {\n ...root._def[zuiKey],\n [key]: value,\n }\n }\n\n private _getMetadataRoot(): ZodType {\n // TODO: this kind of logic should be handled in the UI layer, not here\n const def = this._def as KindToDef<any>\n switch (def.typeName) {\n case ZodFirstPartyTypeKind.ZodNullable:\n case ZodFirstPartyTypeKind.ZodDefault:\n case ZodFirstPartyTypeKind.ZodOptional:\n case ZodFirstPartyTypeKind.ZodReadonly:\n return def.innerType\n case ZodFirstPartyTypeKind.ZodEffects:\n return def.schema\n default:\n return this\n }\n }\n\n /**\n * The type of component to use to display the field and its options\n */\n displayAs<\n UI extends UIComponentDefinitions = EmptyComponentDefinitions,\n Type extends BaseType = ZodKindToBaseType<this['_def']>,\n >(options: ParseSchema<UI[Type][keyof UI[Type]]>): this {\n this._def[zuiKey] ??= {}\n this._def[zuiKey].displayAs = [options.id, options.params]\n return this\n }\n\n /**\n * The title of the field. Defaults to the field name.\n */\n title(title: string): this {\n this._setZuiMeta('title', title)\n return this\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 this._setZuiMeta('hidden', data)\n return this\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 this._setZuiMeta('disabled', data)\n return this\n }\n\n /**\n * Placeholder text for the field\n */\n placeholder(placeholder: string): this {\n this._setZuiMeta('placeholder', placeholder)\n return this\n }\n\n toJsonSchema(opts?: ZuiSchemaOptions): JSONSchema {\n return zuiToJsonSchema(this, opts)\n }\n\n /**\n *\n * @param options generation options\n * @returns a string of the TypeScript type representing the schema\n */\n toTypescript(opts?: TypescriptGenerationOptions): string {\n return toTypescript(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 async toTypescriptAsync(\n opts?: Omit<TypescriptGenerationOptions, 'formatter'> & {\n formatter?: (typing: string) => Promise<string> | string\n },\n ): Promise<string> {\n let result = toTypescript(this, { ...opts, formatter: undefined })\n if (opts?.formatter) {\n result = await opts.formatter(result)\n }\n return result\n }\n\n static fromObject(obj: any, opts?: ObjectToZuiOptions) {\n return objectToZui(obj, opts)\n }\n\n static fromJsonSchema(schema: JSONSchema | any) {\n return jsonSchemaToZui(schema)\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} from './index'\n\nexport type ZodDef =\n | ZodStringDef\n | ZodNumberDef\n | ZodBigIntDef\n | ZodBooleanDef\n | ZodDateDef\n | ZodUndefinedDef\n | ZodNullDef\n | ZodDefaultDef\n | ZodCatchDef\n | ZodReadonlyDef\n | ZodDiscriminatedUnionDef<any>\n | ZodBrandedDef<any>\n | ZodPipelineDef<any, any>\n | ZodAnyDef\n | ZodUnknownDef\n | ZodNeverDef\n | ZodVoidDef\n | ZodArrayDef\n | ZodObjectDef\n | ZodUnionDef\n | ZodIntersectionDef\n | ZodTupleDef\n | ZodRecordDef\n | ZodMapDef\n | ZodFunctionDef\n | ZodLazyDef\n | ZodLiteralDef\n | ZodEnumDef\n | ZodEffectsDef\n | ZodNativeEnumDef\n | ZodOptionalDef\n | ZodNullableDef\n | ZodPromiseDef\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 type AssertEqual<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: AssertEqual<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 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: any = {}\n for (const item of items) {\n obj[item] = item\n }\n return obj as any\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\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}\nexport function processCreateParams(params: RawCreateParams): ProcessedCreateParams {\n if (!params) return {}\n\n const { errorMap, invalid_type_error, required_error, description } = 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 if (errorMap) return { errorMap: errorMap, description, [zuiKey]: params?.[zuiKey] }\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]: params?.[zuiKey] }\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: ZodFormattedError<T> = { _errors: [] } as any\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 as any)._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 any): 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 any).status === 'aborted'\nexport const isDirty = <T>(x: ParseReturnType<T>): x is OK<T> | DIRTY<T> => (x as any).status === 'dirty'\nexport const isValid = <T>(x: ParseReturnType<T>): x is OK<T> => (x as any).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 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] as any[]).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] as any[]).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 any\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 any\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 any\n }\n\n nonempty(message?: errorUtil.ErrMessage): ZodArray<T, 'atleastone'> {\n return this.min(1, message) as any\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 { isEqual } from 'lodash-es'\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> 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 _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", "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", "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 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 as any,\n ...processCreateParams(params),\n }) as any\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", "export 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 as any)\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 ZodTypeAny\n>\n\nexport interface ZodDiscriminatedUnionDef<\n Discriminator extends 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 _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 any\n } else {\n return option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }) as any\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 as any\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 as any\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 as any\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 }) as any\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 any\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 _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 as any)\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 }) as any\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()) as any,\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 as any\n }\n\n strictImplement(func: InnerTypeOfFunction<Args, Returns>): InnerTypeOfFunction<Args, Returns> {\n const validatedFunc = this.parse(func)\n return validatedFunc as any\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())) as any,\n returns: returns || ZodUnknown.create(),\n typeName: ZodFirstPartyTypeKind.ZodFunction,\n ...processCreateParams(params),\n }) as any\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 _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 as any }\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 _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", "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 _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 as any)\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 _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 }) as any\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", "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 ZodNever,\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} from '../index'\nimport { CustomSet } from '../utils/custom-set'\n\nexport type UnknownKeysParam = 'passthrough' | 'strict' | 'strip'\n\nexport interface ZodObjectDef<\n T extends ZodRawShape = ZodRawShape,\n UnknownKeys extends UnknownKeysParam = UnknownKeysParam,\n Catchall extends ZodTypeAny = ZodTypeAny,\n> extends ZodTypeDef {\n typeName: ZodFirstPartyTypeKind.ZodObject\n shape: () => T\n catchall: Catchall\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 Catchall extends ZodTypeAny,\n UnknownKeys extends UnknownKeysParam = UnknownKeysParam,\n> = objectUtil.flatten<objectUtil.addQuestionMarks<baseObjectOutputType<Shape>>> &\n CatchallOutput<Catchall> &\n PassthroughType<UnknownKeys>\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 Catchall extends ZodTypeAny,\n UnknownKeys extends UnknownKeysParam = UnknownKeysParam,\n> = objectUtil.flatten<baseObjectInputType<Shape>> & CatchallInput<Catchall> & PassthroughType<UnknownKeys>\nexport type baseObjectInputType<Shape extends ZodRawShape> = objectUtil.addQuestionMarks<{\n [k in keyof Shape]: Shape[k]['_input']\n}>\n\nexport type CatchallOutput<T extends ZodType> = ZodType extends T ? unknown : { [k: string]: T['_output'] }\n\nexport type CatchallInput<T extends ZodType> = ZodType extends T ? unknown : { [k: string]: T['_input'] }\n\nexport type PassthroughType<T extends UnknownKeysParam> = T extends 'passthrough' ? { [k: string]: unknown } : unknown\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, ZodTypeAny>\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 }) as any\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 Catchall extends ZodTypeAny = ZodTypeAny,\n Output = objectOutputType<T, Catchall, UnknownKeys>,\n Input = objectInputType<T, Catchall, UnknownKeys>,\n> extends ZodType<Output, ZodObjectDef<T, UnknownKeys, Catchall>, 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 _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.catchall instanceof ZodNever && this._def.unknownKeys === 'strip')) {\n for (const key in ctx.data) {\n if (!shapeKeys.includes(key)) {\n extraKeys.push(key)\n }\n }\n }\n\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 if (this._def.catchall instanceof ZodNever) {\n const unknownKeys = this._def.unknownKeys\n\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 throw new Error(`Internal ZodObject error: invalid unknownKeys value.`)\n }\n } else {\n // run catchall validation\n const catchall = this._def.catchall\n\n for (const key of extraKeys) {\n const value = ctx.data[key]\n pairs.push({\n key: { status: 'valid', value: key },\n value: catchall._parse(\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', Catchall> {\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 }) as any\n }\n\n strip(): ZodObject<T, 'strip', Catchall> {\n return new ZodObject({\n ...this._def,\n unknownKeys: 'strip',\n }) as any\n }\n\n passthrough(): ZodObject<T, 'passthrough', Catchall> {\n return new ZodObject({\n ...this._def,\n unknownKeys: 'passthrough',\n }) as any\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 // }) as any;\n // };\n extend<Augmentation extends ZodRawShape>(\n augmentation: Augmentation,\n ): ZodObject<objectUtil.extendShape<T, Augmentation>, UnknownKeys, Catchall> {\n return new ZodObject({\n ...this._def,\n shape: () => ({\n ...this._def.shape(),\n ...augmentation,\n }),\n }) as any\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 // }) as any;\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'], Incoming['_def']['catchall']> {\n const merged: any = new ZodObject({\n unknownKeys: merging._def.unknownKeys,\n catchall: merging._def.catchall,\n shape: () => ({\n ...this._def.shape(),\n ...merging._def.shape(),\n }),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n }) as any\n return merged\n }\n // merge<\n // Incoming extends AnyZodObject,\n // Augmentation extends Incoming[\"shape\"],\n // NewOutput extends {\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // },\n // NewInput extends {\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }\n // >(\n // merging: Incoming\n // ): ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"],\n // NewOutput,\n // NewInput\n // > {\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n setKey<Key extends string, Schema extends ZodTypeAny>(\n key: Key,\n schema: Schema,\n ): ZodObject<\n T & {\n [k in Key]: Schema\n },\n UnknownKeys,\n Catchall\n > {\n return this.augment({ [key]: schema }) as any\n }\n // merge<Incoming extends AnyZodObject>(\n // merging: Incoming\n // ): //ZodObject<T & Incoming[\"_shape\"], UnknownKeys, Catchall> = (merging) => {\n // ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"]\n // > {\n // // const mergedShape = objectUtil.mergeShapes(\n // // this._def.shape(),\n // // merging._def.shape()\n // // );\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n catchall<Index extends ZodTypeAny>(index: Index): ZodObject<T, UnknownKeys, Index> {\n return new ZodObject({\n ...this._def,\n catchall: index,\n }) as any\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, Catchall> {\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 }) as any\n }\n\n omit<\n Mask extends {\n [k in keyof T]?: true\n },\n >(mask: Mask): ZodObject<Omit<T, keyof Mask>, UnknownKeys, Catchall> {\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 }) as any\n }\n\n /**\n * @deprecated\n */\n deepPartial(): partialUtil.DeepPartial<this> {\n return deepPartialify(this) as any\n }\n\n partial(): ZodObject<\n {\n [k in keyof T]: ZodOptional<T[k]>\n },\n UnknownKeys,\n Catchall\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 Catchall\n >\n partial(mask?: any) {\n const newShape: any = {}\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,\n }) as any\n }\n\n required(): ZodObject<\n {\n [k in keyof T]: deoptional<T[k]>\n },\n UnknownKeys,\n Catchall\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 Catchall\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 }) as any\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._def.catchall.isEqual(schema._def.catchall)) return false\n if (this._def.unknownKeys !== schema._def.unknownKeys) 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 static create = <T extends ZodRawShape>(shape: T, params?: RawCreateParams): ZodObject<T, 'strip'> => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: 'strip',\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n }) as any\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 catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n }) as any\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 catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n }) as any\n }\n}\n\nexport type AnyZodObject = ZodObject<any, 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 _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 }) as any\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", "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 _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 _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", "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 _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 }) as any\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", "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 _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 _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 any\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 any\n }\n\n size(size: number, message?: errorUtil.ErrMessage): this {\n return this.min(size, message).max(size, message) as any\n }\n\n nonempty(message?: errorUtil.ErrMessage): ZodSet<Value> {\n return this.min(1, message) as any\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'\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// Adapted from https://stackoverflow.com/a/3143231\nexport const datetimeRegex = (args: { precision: number | null; offset: boolean }) => {\n if (args.precision) {\n if (args.offset) {\n return new RegExp(\n `^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}\\\\.\\\\d{${args.precision}}(([+-]\\\\d{2}(:?\\\\d{2})?)|Z)$`,\n )\n } else {\n return new RegExp(`^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}\\\\.\\\\d{${args.precision}}Z$`)\n }\n } else if (args.precision === 0) {\n if (args.offset) {\n return new RegExp(`^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}(([+-]\\\\d{2}(:?\\\\d{2})?)|Z)$`)\n } else {\n return new RegExp(`^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}Z$`)\n }\n } else {\n if (args.offset) {\n return new RegExp(`^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}(\\\\.\\\\d+)?(([+-]\\\\d{2}(:?\\\\d{2})?)|Z)$`)\n } else {\n return new RegExp(`^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}(\\\\.\\\\d+)?Z$`)\n }\n }\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 = datetimeRegex(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),\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 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 _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 util.assertNever(this._def.effect)\n return false\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 _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] as any[])\n .map((item, itemIndex) => {\n const schema = this._def.items[itemIndex] || this._def.rest\n if (!schema) return null as any as SyncParseReturnType<any>\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} 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", "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} 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 _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", "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 { 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\nexport const objectToZui = (obj: any, 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(objectToZui(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(objectToZui(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 { 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 { 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 { ZodStringDef } from '../../../z/index'\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' ? escapeNonAlphaNumeric(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 escapeNonAlphaNumeric = (value: string) =>\n Array.from(value)\n .map((c) => (/[a-zA-Z0-9]/.test(c) ? c : `\\\\${c}`))\n .join('')\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 { 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 { 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 if (refs.target === 'openApi3') {\n return {\n type: primitiveMappings[def.innerType._def.typeName as keyof typeof primitiveMappings],\n nullable: true,\n } as any\n }\n\n return {\n type: [primitiveMappings[def.innerType._def.typeName as keyof typeof primitiveMappings], 'null'],\n }\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 } 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\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:\n def.catchall._def.typeName === 'ZodNever'\n ? def.unknownKeys === 'passthrough'\n : (parseDef(def.catchall._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'additionalProperties'],\n }) ?? true),\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:\n def.catchall._def.typeName === 'ZodNever'\n ? def.unknownKeys === 'passthrough'\n : (parseDef(def.catchall._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'additionalProperties'],\n }) ?? true),\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:\n def.catchall._def.typeName === 'ZodNever'\n ? def.unknownKeys === 'passthrough'\n : (parseDef(def.catchall._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'additionalProperties'],\n }) ?? true),\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\nconst addMeta = (def: ZodTypeDef, refs: Refs, jsonSchema: JsonSchema7Type): JsonSchema7Type => {\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 { JSONSchema } from '../../ui/types'\nimport { z } from '../../z/index'\nimport { zodToJsonSchema } from './zodToJsonSchema'\nimport { Options } from './Options'\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\nexport const zuiToJsonSchema = (zuiType: z.ZodTypeAny, opts: ZuiSchemaOptions = { target: 'openApi3' }): JSONSchema => {\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 JSONSchema\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 } as any, 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 any\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)) as any\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 ) as any,\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 ) as any,\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 ) as any,\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 as any).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/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._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\nexport const jsonSchemaToZui = (schema: JsonSchema7Type | any): ZodTypeAny => {\n const zodSchema = jsonSchemaToZod(schema)\n applyZuiPropsRecursively(zodSchema, schema)\n return zodSchema as unknown as ZodTypeAny\n}\n", "import React, { useState, useEffect } from 'react'\nimport { BoundaryFallbackComponent, ErrorBoundary } from './ErrorBoundary'\nimport { FormDataProvider, deepMerge, getDefaultValues } from './hooks/useFormData'\nimport { FormValidation, EmptyComponentDefinitions, JSONSchema, UIComponentDefinitions, ZuiComponentMap } from './types'\nimport { FormElementRenderer } from './ElementRenderer'\n\nexport type ZuiFormProps<UI extends UIComponentDefinitions = EmptyComponentDefinitions> = {\n schema: JSONSchema\n components: ZuiComponentMap<UI>\n value: any\n onChange: (value: any) => void\n disableValidation?: boolean\n fallback?: BoundaryFallbackComponent\n dataTransform?: (data: any) => any\n onValidation?: (validation: FormValidation) => void\n}\n\nexport const ZuiForm = <UI extends UIComponentDefinitions = EmptyComponentDefinitions>({\n schema,\n components,\n onChange,\n value,\n disableValidation,\n fallback,\n dataTransform,\n onValidation,\n}: ZuiFormProps<UI>): JSX.Element | null => {\n const [formData, setFormData] = useState<object>(value)\n\n useEffect(() => {\n onChange(formData)\n }, [formData])\n\n useEffect(() => {\n const defaults = getDefaultValues(schema)\n setFormData((prev) => deepMerge(defaults, prev))\n }, [JSON.stringify(schema), setFormData])\n\n return (\n <FormDataProvider\n formData={formData}\n setFormData={setFormData}\n formSchema={schema}\n disableValidation={disableValidation || false}\n dataTransform={dataTransform}\n onValidation={onValidation}\n >\n <ErrorBoundary fallback={fallback} fieldSchema={schema} path={[]}>\n <FormElementRenderer\n components={components}\n fieldSchema={schema}\n path={[]}\n fallback={fallback}\n required={true}\n isArrayChild={false}\n />\n </ErrorBoundary>\n </FormDataProvider>\n )\n}\n", "import React, { Component, ErrorInfo, FC, ReactNode } from 'react'\nimport { JSONSchema, Path } from './types'\n\nexport type BoundaryFallbackComponent = FC<{ error: Error; schema: JSONSchema }>\n\nexport type ErrorBoundaryProps = {\n children?: ReactNode\n fallback?: BoundaryFallbackComponent\n fieldSchema: JSONSchema\n path: Path\n}\ntype State =\n | {\n hasError: true\n error: Error\n }\n | {\n hasError: false\n error: null\n }\n\nexport class ErrorBoundary extends Component<ErrorBoundaryProps, State> {\n public state: State = {\n hasError: false,\n error: null,\n }\n\n public static getDerivedStateFromError(error: Error): State {\n // Update state so the next render will show the fallback UI.\n return { hasError: true, error }\n }\n\n public componentDidCatch(error: Error, errorInfo: ErrorInfo) {\n console.error('Uncaught error:', error, errorInfo)\n }\n\n public render() {\n if (this.state.hasError && this.props.fallback) {\n return <this.props.fallback error={this.state.error} schema={this.props.fieldSchema} />\n }\n\n return this.props.children\n }\n}\n\nexport function withErrorBoundary<P = any>(Component: FC<P>, fallback?: BoundaryFallbackComponent) {\n return (props: P & ErrorBoundaryProps) => (\n <ErrorBoundary fallback={fallback} fieldSchema={props.fieldSchema} path={props.path}>\n <Component {...props} />\n </ErrorBoundary>\n )\n}\n", "import React, { FC, useMemo } from 'react'\nimport {\n ArraySchema,\n BaseType,\n JSONSchema,\n ObjectSchema,\n PrimitiveSchema,\n ZuiComponentMap,\n ZuiReactArrayChildProps,\n ZuiReactComponent,\n ZuiReactComponentBaseProps,\n ZuiReactComponentProps,\n ZuiReactControlComponentProps,\n} from './types'\nimport { BoundaryFallbackComponent, ErrorBoundary } from './ErrorBoundary'\nimport { getPathData, useFormData } from './hooks/useFormData'\nimport { formatTitle, resolveComponent } from './utils'\nimport { useDiscriminator } from './hooks/useDiscriminator'\nimport { zuiKey } from './constants'\n\ntype FormRendererProps = {\n components: ZuiComponentMap<any>\n fieldSchema: JSONSchema\n path: string[]\n required: boolean\n fallback?: BoundaryFallbackComponent\n} & ZuiReactArrayChildProps\n\nexport const FormElementRenderer: FC<FormRendererProps> = ({\n components,\n fieldSchema,\n path,\n required,\n fallback,\n ...childProps\n}) => {\n const { formData, disabled, hidden, handlePropertyChange, addArrayItem, removeArrayItem, formErrors, formValid } =\n useFormData(fieldSchema, path)\n const data = useMemo(() => getPathData(formData, path), [formData, path])\n const componentMeta = useMemo(() => resolveComponent(components, fieldSchema), [fieldSchema, components])\n const { discriminator, discriminatedSchema, discriminatorValue } = useDiscriminator(fieldSchema, path)\n\n if (!componentMeta) {\n return null\n }\n\n if (hidden === true) {\n return null\n }\n\n const { Component: _component, type } = componentMeta\n\n const baseProps: Omit<ZuiReactComponentBaseProps<BaseType, string, any>, 'data' | 'isArrayChild'> = {\n type,\n componentID: componentMeta.id,\n scope: path.join('.'),\n context: {\n path,\n readonly: false,\n formData,\n formErrors,\n formValid,\n updateForm: handlePropertyChange,\n updateFormData: (data) => handlePropertyChange([], data),\n },\n onChange: (data: any) => handlePropertyChange(path, data),\n disabled,\n errors: formErrors?.filter((e) => e.path === path) || [],\n label: fieldSchema[zuiKey]?.title || formatTitle(path[path.length - 1]?.toString() || ''),\n params: componentMeta.params,\n schema: fieldSchema,\n zuiProps: fieldSchema[zuiKey],\n }\n\n if (fieldSchema.type === 'array' && type === 'array') {\n const Component = _component as any as ZuiReactComponent<'array', string, any>\n const schema = baseProps.schema as ArraySchema\n const dataArray = Array.isArray(data) ? data : typeof data === 'object' ? data : []\n const props: Omit<ZuiReactComponentProps<'array', string, any>, 'children'> = {\n ...baseProps,\n type,\n schema,\n data: dataArray,\n addItem: (data) => addArrayItem(path, data),\n removeItem: (index) => removeArrayItem(path, index),\n ...childProps,\n }\n\n // Tuple\n if (Array.isArray(fieldSchema.items)) {\n return null\n }\n\n return (\n <Component key={baseProps.scope} {...props} isArrayChild={props.isArrayChild as any}>\n {Array.isArray(props.data)\n ? props.data.map((_, index) => {\n const childPath = [...path, index.toString()]\n return (\n <ErrorBoundary\n key={childPath.join('.')}\n fallback={fallback}\n fieldSchema={fieldSchema.items as JSONSchema}\n path={childPath}\n >\n <FormElementRenderer\n key={childPath.join('.')}\n components={components}\n fieldSchema={fieldSchema.items as JSONSchema}\n path={childPath}\n required={required}\n isArrayChild={true}\n index={index}\n removeSelf={() => removeArrayItem(path, index)}\n fallback={fallback}\n />\n </ErrorBoundary>\n )\n })\n : []}\n </Component>\n )\n }\n\n if (fieldSchema.type === 'object' && type === 'object' && fieldSchema.properties) {\n const Component = _component as any as ZuiReactComponent<'object', string, any>\n const props: Omit<ZuiReactComponentProps<'object', string, any>, 'children'> = {\n ...baseProps,\n type,\n schema: baseProps.schema as any as ObjectSchema,\n data: data || {},\n ...childProps,\n }\n return (\n <Component key={baseProps.scope} {...props} isArrayChild={props.isArrayChild as any}>\n {Object.entries(fieldSchema.properties).map(([fieldName, childSchema]) => {\n const childPath = [...path, fieldName]\n return (\n <ErrorBoundary key={childPath.join('.')} fallback={fallback} fieldSchema={childSchema} path={childPath}>\n <FormElementRenderer\n key={childPath.join('.')}\n components={components}\n fieldSchema={childSchema}\n path={childPath}\n required={fieldSchema.required?.includes(fieldName) || false}\n isArrayChild={false}\n fallback={fallback}\n />\n </ErrorBoundary>\n )\n })}\n </Component>\n )\n }\n\n if (type === 'discriminatedUnion') {\n const Component = _component as any as ZuiReactComponent<'discriminatedUnion', string, any>\n\n const props: Omit<ZuiReactComponentProps<'discriminatedUnion', string, any>, 'children'> = {\n ...baseProps,\n type,\n schema: baseProps.schema as any as ObjectSchema,\n data: data || {},\n discriminatorKey: discriminator?.key || null,\n discriminatorLabel: formatTitle(discriminator?.key || 'Unknown'),\n discriminatorOptions: discriminator?.values || null,\n discriminatorValue,\n setDiscriminator: (disc: string) => {\n if (!discriminator?.key) {\n console.warn('No discriminator key found, cannot set discriminator')\n return\n }\n handlePropertyChange(path, { [discriminator.key]: disc })\n },\n ...childProps,\n }\n\n return (\n <Component key={baseProps.scope} {...props} isArrayChild={props.isArrayChild as any}>\n {discriminatedSchema && (\n <ErrorBoundary key={path.join('.')} fallback={fallback} fieldSchema={discriminatedSchema} path={path}>\n <FormElementRenderer\n components={components}\n fieldSchema={discriminatedSchema}\n path={path}\n required={required}\n isArrayChild={false}\n fallback={fallback}\n />\n </ErrorBoundary>\n )}\n </Component>\n )\n }\n const Component = _component as any as ZuiReactComponent<any, any>\n\n const props: ZuiReactControlComponentProps<'boolean' | 'number' | 'string', string, any> = {\n ...baseProps,\n type: type as any as 'boolean' | 'number' | 'string',\n schema: baseProps.schema as any as PrimitiveSchema,\n config: {},\n required,\n data,\n description: fieldSchema.description,\n ...childProps,\n }\n\n return <Component {...props} />\n}\n", "import z from '../z'\nimport { UIComponentDefinitions } from './types'\n\nexport const defaultComponentDefinitions = {\n string: {},\n number: {\n slider: {\n id: 'slider',\n params: z.object({}),\n },\n },\n boolean: {\n switch: {\n id: 'switch',\n params: z.object({}),\n },\n },\n array: {},\n object: {},\n discriminatedUnion: {},\n} as const satisfies UIComponentDefinitions\n\nexport type DefaultComponentDefinitions = typeof defaultComponentDefinitions\n", "import { jsonSchemaToZui } from './transforms/json-schema-to-zui'\nimport { zuiToJsonSchema } from './transforms/zui-to-json-schema'\nimport { objectToZui } from './transforms/object-to-zui'\nimport { toTypescript, TypescriptGenerationOptions } from './transforms/zui-to-typescript-type'\nimport { toTypescriptSchema } from './transforms/zui-to-typescript-schema'\nimport * as transformErrors from './transforms/common/errors'\n\nexport * from './ui'\nexport * from './z'\n\nexport const transforms = {\n errors: transformErrors,\n jsonSchemaToZui,\n zuiToJsonSchema,\n objectToZui,\n toTypescript,\n toTypescriptSchema,\n}\n\nexport { type TypescriptGenerationOptions }\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\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 botIdHeader = 'x-bot-id'\nexport const botUserIdHeader = 'x-bot-user-id'\nexport const integrationIdHeader = 'x-integration-id'\nexport const webhookIdHeader = 'x-webhook-id'\n\nexport const configurationTypeHeader = 'x-bp-configuration-type'\nexport const configurationHeader = 'x-bp-configuration'\nexport const operationHeader = 'x-bp-operation'\nexport const typeHeader = 'x-bp-type'\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 (e: any) {\n log.error('Error while handling request', { error: e?.message ?? 'Internal error occured' })\n res.writeHead(500).end(JSON.stringify({ error: e?.message ?? '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?: any): void\n info(message: string, metadata?: any): void\n warn(message: string, metadata?: any): void\n error(message: string, metadata?: any): 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", "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 { 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 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 }\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 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 }\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 } 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} 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\nexport const integrationHandler =\n (instance: IntegrationHandlers<BaseIntegration>) =>\n async (req: Request): Promise<Response | void> => {\n const ctx = extractContext(req.headers)\n\n const [, traceId] = (req.headers['traceparent'] || '').split('-')\n\n const vanillaClient = new Client({\n botId: ctx.botId,\n integrationId: ctx.integrationId,\n retry: retryConfig,\n headers: extractTracingHeaders(req.headers),\n })\n const client = new IntegrationSpecificClient<BaseIntegration>(vanillaClient)\n const logger = new IntegrationLogger({ traceId })\n\n const props = {\n ctx,\n req,\n client,\n logger,\n instance,\n }\n\n try {\n let response: Response | void\n switch (ctx.operation) {\n case 'webhook_received':\n response = await onWebhook(props)\n break\n case 'register':\n response = await onRegister(props)\n break\n case 'unregister':\n response = await onUnregister(props)\n break\n case 'message_created':\n response = await onMessageCreated(props)\n break\n case 'action_triggered':\n response = await onActionTriggered(props)\n break\n case 'ping':\n response = await onPing(props)\n break\n case 'create_user':\n response = await onCreateUser(props)\n break\n case 'create_conversation':\n response = await onCreateConversation(props)\n break\n default:\n throw new Error(`Unknown operation ${ctx.operation}`)\n }\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", "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 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)) as types.GetMessage<TIntegration>\n public updateMessage: types.UpdateMessage<TIntegration> = ((x) =>\n this._client.updateMessage(x)) 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}\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", "import { z } from '@bpinternal/zui'\nimport {\n botIdHeader,\n botUserIdHeader,\n configurationHeader,\n configurationTypeHeader,\n integrationIdHeader,\n operationHeader,\n webhookIdHeader,\n} from '../../consts'\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 const botId = headers[botIdHeader]\n const botUserId = headers[botUserIdHeader]\n const integrationId = headers[integrationIdHeader]\n const webhookId = headers[webhookIdHeader]\n const configurationType = headers[configurationTypeHeader]\n const base64Configuration = headers[configurationHeader]\n const operation = integrationOperationSchema.parse(headers[operationHeader])\n\n if (!botId) {\n throw new Error('Missing bot headers')\n }\n\n if (!botUserId) {\n throw new Error('Missing bot user headers')\n }\n\n if (!integrationId) {\n throw new Error('Missing integration headers')\n }\n\n if (!webhookId) {\n throw new Error('Missing webhook headers')\n }\n\n if (!base64Configuration) {\n throw new Error('Missing configuration headers')\n }\n\n if (!operation) {\n throw new Error('Missing operation headers')\n }\n\n return {\n botId,\n botUserId,\n integrationId,\n webhookId,\n operation,\n configurationType: configurationType ?? null,\n configuration: base64Configuration ? JSON.parse(Buffer.from(base64Configuration, 'base64').toString('utf-8')) : {},\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: any[]) => 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 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}\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\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 }\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 } from '../plugin'\nimport { SchemaDefinition } from '../schema'\nimport * as utils from '../utils'\nimport { ValueOf, Writable, Merge, StringKeys } from '../utils/type-utils'\nimport z, { ZuiObjectSchema } from '../zui'\n\ntype BaseConfig = ZuiObjectSchema\ntype BaseStates = Record<string, ZuiObjectSchema>\ntype BaseEvents = Record<string, ZuiObjectSchema>\ntype BaseActions = Record<string, ZuiObjectSchema>\ntype BaseTables = Record<string, ZuiObjectSchema>\ntype BaseWorkflows = Record<string, ZuiObjectSchema>\n\nexport type TagDefinition = {\n title?: string\n description?: string\n}\n\nexport type StateType = 'conversation' | 'user' | 'bot'\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<ZuiObjectSchema> // 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 IntegrationConfigInstance<I extends IntegrationPackage = IntegrationPackage> = {\n enabled: boolean\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\nexport type PluginConfigInstance<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}\n\nexport type IntegrationInstance = IntegrationPackage & IntegrationConfigInstance\nexport type PluginInstance = PluginPackage & PluginConfigInstance\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\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 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 }\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 self.integrations[integrationPkg.name] = {\n enabled: config.enabled,\n ...integrationPkg,\n configurationType: config.configurationType,\n configuration: 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 key = config.alias ?? pluginPkg.name\n self.plugins[key] = {\n ...pluginPkg,\n alias: config.alias,\n configuration: config.configuration,\n interfaces: config.interfaces,\n }\n\n self.user = this._mergeUser(self.user, pluginPkg.definition.user)\n self.conversation = this._mergeConversation(self.conversation, pluginPkg.definition.conversation)\n self.message = this._mergeMessage(self.message, pluginPkg.definition.message)\n self.recurringEvents = this._mergeRecurringEvents(self.recurringEvents, pluginPkg.definition.recurringEvents)\n self.tables = this._mergeTables(self.tables, pluginPkg.definition.tables)\n self.workflows = this._mergeWorkflows(self.workflows, pluginPkg.definition.workflows)\n\n self.states = this._mergeStates(self.states, this._prefixKeys(pluginPkg.definition.states, config.alias))\n self.events = this._mergeEvents(self.events, this._prefixKeys(pluginPkg.definition.events, config.alias))\n self.actions = this._mergeActions(self.actions, this._prefixKeys(pluginPkg.definition.actions, config.alias))\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 _prefixKeys = <T extends Record<string, any> | undefined>(obj: T, alias: string | undefined): T => {\n if (!obj || !alias) {\n return obj\n }\n return utils.records.mapKeys(obj, (key) => `${alias}${consts.PLUGIN_PREFIX_SEPARATOR}${key}`) as T\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 { proxyWorkflows } from '../workflow-proxy'\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 ..._getBotTools({ client }),\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 ..._getBotTools({ client }),\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 ..._getBotTools({ client }),\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 ..._getBotTools({ client }),\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 (error) {\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.')\n logger.error(runtimeError.message)\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, ..._getBotTools({ client }) }\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: utils.ValueOf<types.MessagePayloads<common.BaseBot>> = {\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: utils.ValueOf<types.StateExpiredPayloads<common.BaseBot>> = {\n ...common,\n state: state as types.IncomingStates<common.BaseBot>[string],\n }\n\n const stateHandlers = self.stateExpiredHandlers['*'] ?? []\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: utils.ValueOf<types.EventPayloads<common.BaseBot>> = { ...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 ..._getBotTools({ client }),\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, ..._getBotTools({ client }) })\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 ..._getBotTools({ client }),\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\nconst _getBotTools = (\n props: Pick<types.CommonHandlerProps<common.BaseBot>, 'client'>\n): Pick<types.CommonHandlerProps<common.BaseBot>, 'workflows'> => ({\n workflows: proxyWorkflows(props.client),\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 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 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 type * as client from '@botpress/client'\nimport type { BotSpecificClient } from '../../bot'\nimport type * as typeUtils from '../../utils/type-utils'\nimport type { BaseBot } from '../common'\nimport type { WorkflowProxy, WorkflowWithUtilities } from './types'\n\nexport const proxyWorkflows = <TBot extends BaseBot>(\n client: BotSpecificClient<TBot> | client.Client\n): WorkflowProxy<TBot> =>\n new Proxy({} as WorkflowProxy<TBot>, {\n get: <TWorkflowName extends typeUtils.StringKeys<TBot['workflows']>>(_: unknown, workflowName: TWorkflowName) =>\n ({\n listInstances: {\n all: (input) => _listWorkflows({ workflowName, client, input }),\n running: (input) => _listWorkflows({ workflowName, client, input, statuses: ['in_progress'] }),\n scheduled: (input) => _listWorkflows({ workflowName, client, input, statuses: ['pending', 'listening'] }),\n allFinished: (input) =>\n _listWorkflows({\n workflowName,\n client,\n input,\n statuses: ['completed', 'cancelled', 'failed', 'timedout'],\n }),\n cancelled: (input) => _listWorkflows({ workflowName, client, input, statuses: ['cancelled'] }),\n failed: (input) => _listWorkflows({ workflowName, client, input, statuses: ['failed'] }),\n succeeded: (input) => _listWorkflows({ workflowName, client, input, statuses: ['completed'] }),\n timedOut: (input) => _listWorkflows({ workflowName, client, input, statuses: ['timedout'] }),\n },\n startNewInstance: async (input) => {\n const { workflow } = await client.createWorkflow({\n name: workflowName as typeUtils.Cast<TWorkflowName, string>,\n status: 'pending',\n ...input,\n })\n return { workflow: wrapWorkflowInstance<TBot, TWorkflowName>({ client, workflow }) }\n },\n }) satisfies WorkflowProxy<TBot>[TWorkflowName],\n })\n\nconst _listWorkflows = async <\n TBot extends BaseBot,\n TWorkflowName extends typeUtils.StringKeys<TBot['workflows']>,\n>(props: {\n workflowName: TWorkflowName\n client: BotSpecificClient<TBot> | client.Client\n statuses?: client.ClientInputs['listWorkflows']['statuses']\n input?: Pick<client.ClientInputs['listWorkflows'], 'nextToken' | 'conversationId' | 'userId'> & {\n tags?: typeUtils.AtLeastOneProperty<TBot['workflows'][TWorkflowName]['tags']>\n }\n}) => {\n const ret = await props.client.listWorkflows({\n name: props.workflowName as any,\n statuses: props.statuses,\n ...props.input,\n })\n return {\n ...ret,\n workflows: ret.workflows.map((workflow) =>\n wrapWorkflowInstance<TBot, TWorkflowName>({ client: props.client, workflow })\n ),\n }\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}): WorkflowWithUtilities<TBot, TWorkflowName> => ({\n ...(props.workflow as WorkflowWithUtilities<TBot, TWorkflowName>),\n\n async update(x) {\n const { workflow } = await props.client.updateWorkflow({ id: props.workflow.id, ...x })\n return { workflow: wrapWorkflowInstance<TBot, TWorkflowName>({ client: props.client, 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 return { workflow: wrapWorkflowInstance<TBot, TWorkflowName>({ client: props.client, workflow }) }\n },\n\n async setCompleted({ output } = {}) {\n const { workflow } = await props.client.updateWorkflow({ id: props.workflow.id, status: 'completed', output })\n return { workflow: wrapWorkflowInstance<TBot, TWorkflowName>({ client: props.client, workflow }) }\n },\n\n async cancel() {\n const { workflow } = await props.client.updateWorkflow({ id: props.workflow.id, status: 'cancelled' })\n return { workflow: wrapWorkflowInstance<TBot, TWorkflowName>({ client: props.client, workflow }) }\n },\n})\n", "import { z } from '@bpinternal/zui'\nimport { botIdHeader, configurationHeader, operationHeader, typeHeader } from '../../consts'\nimport { BotContext } from './types'\n\nconst botOperationSchema = z.enum(['event_received', 'register', 'unregister', 'ping', 'action_triggered'])\nexport const extractContext = (headers: Record<string, string | undefined>): BotContext => {\n const botId = headers[botIdHeader]\n const base64Configuration = headers[configurationHeader]\n const type = headers[typeHeader]\n const operation = botOperationSchema.parse(headers[operationHeader])\n\n if (!botId) {\n throw new Error('Missing bot headers')\n }\n\n if (!type) {\n throw new Error('Missing type headers')\n }\n\n if (!base64Configuration) {\n throw new Error('Missing configuration headers')\n }\n\n if (!operation) {\n throw new Error('Missing operation headers')\n }\n\n return {\n botId,\n operation,\n type,\n configuration: base64Configuration ? JSON.parse(Buffer.from(base64Configuration, 'base64').toString('utf-8')) : {},\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 { proxyWorkflows, wrapWorkflowInstance } from '../../workflow-proxy'\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 await _acknowledgeWorkflowStart(props, event)\n await _dispatchToHandlers(props, event)\n\n return SUCCESS_RESPONSE\n}\n\nconst _acknowledgeWorkflowStart = async (props: types.ServerProps, event: types.WorkflowUpdateEvent): Promise<void> => {\n if (event.payload.workflow.status !== 'pending') {\n return\n }\n\n // Acknowledge start of workflow processing:\n await props.client.updateWorkflow({ id: event.payload.workflow.id, status: 'in_progress', eventId: event.id })\n}\n\nconst _dispatchToHandlers = async (props: types.ServerProps, event: types.WorkflowUpdateEvent): Promise<void> => {\n const updateType = bridgeUpdateTypeToSnakeCase(event.payload.type)\n const handlers = props.self.workflowHandlers[updateType]?.[event.payload.workflow.name]\n\n for (const handler of handlers!) {\n await handler({\n ...props,\n conversation: event.payload.conversation,\n user: event.payload.user,\n workflow: wrapWorkflowInstance({ ...props, workflow: event.payload.workflow }),\n workflows: proxyWorkflows(props.client),\n })\n }\n}\n", "import type { Server } from 'node:http'\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} from './server'\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 BotHandlers<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(): ActionHandlers<TBot> {\n return new Proxy(\n {},\n {\n get: (_, actionName: string) => {\n let action = this._actionHandlers[actionName]\n if (action) {\n return action\n }\n\n for (const plugin of Object.values(this._plugins)) {\n action = plugin.actionHandlers[actionName]\n if (action) {\n return action\n }\n }\n\n return undefined\n },\n }\n ) as ActionHandlers<TBot>\n }\n\n public get messageHandlers(): MessageHandlersMap<TBot> {\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 = this._messageHandlers[messageName] ?? []\n const selfGlobalHandlers = this._messageHandlers['*'] ?? []\n const selfHandlers = [...selfSpecificHandlers, ...selfGlobalHandlers]\n .sort((a, b) => a.order - b.order)\n .map(({ handler }) => handler)\n return utils.arrays.unique([...pluginHandlers, ...selfHandlers])\n },\n }\n ) as MessageHandlersMap<TBot>\n }\n\n public get eventHandlers(): EventHandlersMap<TBot> {\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 const selfSpecificHandlers = this._eventHandlers[eventName as keyof EventHandlersMap<TBot>] ?? []\n const selfGlobalHandlers = this._eventHandlers['*'] ?? []\n const selfHandlers = [...selfSpecificHandlers, ...selfGlobalHandlers]\n .sort((a, b) => a.order - b.order)\n .map(({ handler }) => handler)\n return utils.arrays.unique([...pluginHandlers, ...selfHandlers])\n },\n }\n ) as EventHandlersMap<TBot>\n }\n\n public get stateExpiredHandlers(): StateExpiredHandlersMap<TBot> {\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 const selfSpecificHandlers =\n this._stateExpiredHandlers[stateName as keyof StateExpiredHandlersMap<TBot>] ?? []\n const selfGlobalHandlers = this._stateExpiredHandlers['*'] ?? []\n const selfHandlers = [...selfSpecificHandlers, ...selfGlobalHandlers]\n .sort((a, b) => a.order - b.order)\n .map(({ handler }) => handler)\n return utils.arrays.unique([...pluginHandlers, ...selfHandlers])\n },\n }\n ) as StateExpiredHandlersMap<TBot>\n }\n\n public get hookHandlers(): HookHandlersMap<TBot> {\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 Function[]) // FIXME: fix typings here\n )\n\n const selfHooks = this._hookHandlers[hookType] ?? {}\n const selfSpecificHandlers = selfHooks[hookDataName] ?? []\n const selfGlobalHandlers = selfHooks['*'] ?? []\n const selfHandlers = [...selfSpecificHandlers, ...selfGlobalHandlers]\n .sort((a, b) => a.order - b.order)\n .map(({ handler }) => handler)\n\n return utils.arrays.unique([...pluginHandlers, ...selfHandlers])\n },\n }\n )\n },\n }\n ) as HookHandlersMap<TBot>\n }\n\n public get workflowHandlers(): WorkflowHandlersMap<TBot> {\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]?.sort((a, b) => a.order - b.order).map(({ handler }) => handler) ?? []\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 WorkflowHandlersMap<TBot>\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 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 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 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\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\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 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\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 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,\n RecurringEventDefinition,\n EventDefinition,\n ConfigurationDefinition,\n UserDefinition,\n ConversationDefinition,\n MessageDefinition,\n ActionDefinition,\n TableDefinition,\n WorkflowDefinition,\n} from '../bot/definition'\nimport { IntegrationPackage, InterfacePackage } from '../package'\nimport { ZuiObjectSchema } from '../zui'\n\nexport {\n StateDefinition,\n RecurringEventDefinition,\n EventDefinition,\n ConfigurationDefinition,\n UserDefinition,\n ConversationDefinition,\n MessageDefinition,\n ActionDefinition,\n TableDefinition,\n IntegrationConfigInstance,\n WorkflowDefinition,\n} from '../bot/definition'\n\ntype BaseConfig = ZuiObjectSchema\ntype BaseStates = Record<string, ZuiObjectSchema>\ntype BaseEvents = Record<string, ZuiObjectSchema>\ntype BaseActions = Record<string, ZuiObjectSchema>\ntype BaseInterfaces = Record<string, any>\ntype BaseIntegrations = Record<string, any>\ntype BaseTables = Record<string, ZuiObjectSchema>\ntype BaseWorkflows = Record<string, ZuiObjectSchema>\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 integrations?: {\n [K in keyof TIntegrations]: IntegrationPackage\n }\n interfaces?: {\n [K in keyof TInterfaces]: InterfacePackage\n }\n user?: UserDefinition\n conversation?: ConversationDefinition\n message?: MessageDefinition\n states?: {\n [K in keyof TStates]: StateDefinition<TStates[K]>\n }\n configuration?: ConfigurationDefinition<TConfig>\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\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 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: 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\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 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.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 }\n}\n", "import { PluginInterfaceExtensions } from './common'\n\nexport type ParsedActionRef = {\n namespace: string // interface or integration name\n actionName: string\n}\n\nexport type ParsedEventRef = {\n namespace: string // interface or integration name\n eventName: string\n}\n\nconst NAMESPACE_SEPARATOR = ':'\n\nexport const parseActionRef = (actionRef: string): ParsedActionRef | null => {\n const [namespace, method] = actionRef.split(NAMESPACE_SEPARATOR)\n if (!namespace || !method) {\n return null\n }\n return { namespace, actionName: method }\n}\n\nexport const parseEventRef = (eventRef: string): ParsedEventRef | null => {\n const [namespace, event] = eventRef.split(NAMESPACE_SEPARATOR)\n if (!namespace || !event) {\n return null\n }\n return { namespace, eventName: event }\n}\n\nexport const formatActionRef = (actionRef: ParsedActionRef): string => {\n return `${actionRef.namespace}${NAMESPACE_SEPARATOR}${actionRef.actionName}`\n}\n\nexport const formatEventRef = (eventRef: ParsedEventRef): string => {\n return `${eventRef.namespace}${NAMESPACE_SEPARATOR}${eventRef.eventName}`\n}\n\nexport const resolveAction = (\n actionRef: ParsedActionRef,\n interfaces: PluginInterfaceExtensions<any>\n): ParsedActionRef => {\n const interfaceExtension = interfaces[actionRef.namespace] ?? {\n name: actionRef.namespace,\n version: '0.0.0',\n entities: {},\n actions: {},\n events: {},\n channels: {},\n }\n const namespace = interfaceExtension.name\n const actionName = interfaceExtension.actions[actionRef.actionName]?.name ?? actionRef.actionName\n return { namespace, actionName }\n}\n\nexport const resolveEvent = (eventRef: ParsedEventRef, interfaces: PluginInterfaceExtensions<any>): ParsedEventRef => {\n const interfaceExtension = interfaces[eventRef.namespace] ?? {\n name: eventRef.namespace,\n version: '0.0.0',\n entities: {},\n actions: {},\n events: {},\n channels: {},\n }\n const namespace = interfaceExtension.name\n const eventName = interfaceExtension.events[eventRef.eventName]?.name ?? eventRef.eventName\n return { namespace, eventName }\n}\n", "import { Client } from '@botpress/client'\nimport { BotSpecificClient } from '../../bot'\nimport { BasePlugin, PluginInterfaceExtensions, PluginRuntimeProps } from '../common'\nimport { resolveAction, formatActionRef } from '../interface-resolution'\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, prop1) => {\n return new Proxy(\n {},\n {\n get: (_target, prop2) => {\n return (input: Record<string, any>) =>\n _callAction({\n client,\n interfaces: props.interfaces,\n integrationOrInterfaceName: prop1 as string,\n methodName: prop2 as string,\n input,\n })\n },\n }\n )\n },\n }\n ) as ActionProxy<TPlugin>\n\ntype CallActionsProps = {\n client: BotSpecificClient<any> | Client\n interfaces: PluginInterfaceExtensions<any>\n integrationOrInterfaceName: string\n methodName: string\n input: Record<string, any>\n}\nconst _callAction = async ({ client, interfaces, integrationOrInterfaceName, methodName, input }: CallActionsProps) => {\n const resolvedAction = resolveAction(\n {\n namespace: integrationOrInterfaceName,\n actionName: methodName,\n },\n interfaces\n )\n const type = formatActionRef(resolvedAction)\n const response = await client.callAction({\n type,\n input,\n })\n return response.output\n}\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): Promise<void> {\n await this._client.setState({\n type: this._stateType,\n name: this._stateName,\n id,\n payload,\n })\n return\n }\n\n public async getOrSet(id: string, payload: TPayload): Promise<TPayload> {\n return await this._client\n .getOrSetState({\n type: this._stateType,\n name: this._stateName,\n id,\n payload,\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 ActionHandlers as BotActionHandlers,\n BotHandlers,\n BotSpecificClient,\n WorkflowUpdateType,\n} from '../bot'\nimport { WorkflowProxy, proxyWorkflows } from '../bot/workflow-proxy'\nimport * as utils from '../utils'\nimport { ActionProxy, proxyActions } from './action-proxy'\nimport { BasePlugin, PluginConfiguration, PluginInterfaceExtensions, PluginRuntimeProps } from './common'\nimport { formatEventRef, parseEventRef, resolveEvent } from './interface-resolution'\nimport {\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 ActionHandlerPayloads,\n MessagePayloads,\n EventPayloads,\n StateExpiredPayloads,\n HookInputs as HookPayloads,\n WorkflowPayloads,\n HookDefinitionType,\n} from './server/types'\nimport { proxyStates, StateProxy } from './state-proxy'\n\nexport type PluginImplementationProps<TPlugin extends BasePlugin = BasePlugin> = {\n actions: ActionHandlers<TPlugin>\n}\n\ntype Tools<TPlugin extends BasePlugin = BasePlugin> = {\n configuration: PluginConfiguration<TPlugin>\n interfaces: PluginInterfaceExtensions<TPlugin>\n actions: ActionProxy<TPlugin>\n states: StateProxy<TPlugin>\n workflows: WorkflowProxy<TPlugin>\n alias?: string\n}\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, 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) as WorkflowProxy<BasePlugin>\n\n return {\n configuration,\n interfaces,\n actions,\n states,\n alias,\n workflows,\n }\n }\n\n public get actionHandlers(): BotActionHandlers<TPlugin> {\n return new Proxy(\n {},\n {\n get: (_, 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: ActionHandlerPayloads<any>[string]) => handler({ ...input, ...this._getTools(input.client) }),\n handler.name\n )\n },\n }\n ) as BotActionHandlers<TPlugin>\n }\n\n public get messageHandlers(): BotMessageHandlersMap<TPlugin> {\n return new Proxy(\n {},\n {\n get: (_, messageName: string) => {\n messageName = this._stripAliasPrefix(messageName)\n const specificHandlers = 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: MessagePayloads<any>[string]) => handler({ ...input, ...this._getTools(input.client) }),\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: (_, 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 = 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: EventPayloads<any>[string]) => 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: (_, stateName: string) => {\n stateName = this._stripAliasPrefix(stateName)\n\n const specificHandlers = 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: StateExpiredPayloads<any>[string]) => 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: (_, hookDataName: string) => {\n hookDataName = this._stripAliasPrefix(hookDataName)\n\n const specificHandlers = hooks[hookDataName] ?? []\n\n // for \"before_incoming_event\", \"after_incoming_event\" and other event related hooks\n const interfaceHandlers = Object.entries(\n hooks as Record<string, { handler: Function; order: number }[]> // TODO: fix typing here\n )\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: HookPayloads<any>[HookDefinitionType][string]) =>\n handler({ ...input, ...this._getTools(input.client) }),\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 (input: WorkflowPayloads<any>[string]) => handler({ ...input, ...this._getTools(input.client) }),\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<MessageHandlersMap<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 MessageHandlers<any>[string],\n order: this._registerOrder++,\n })\n },\n\n event: <T extends utils.types.StringKeys<EventHandlersMap<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 EventHandlers<any>[string],\n order: this._registerOrder++,\n })\n },\n\n stateExpired: <T extends utils.types.StringKeys<StateExpiredHandlersMap<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 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 { handler: handler as HookHandlers<any>['before_incoming_event'][string], order: this._registerOrder++ }\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 { handler: handler as HookHandlers<any>['before_incoming_message'][string], order: this._registerOrder++ }\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 { handler: handler as HookHandlers<any>['before_outgoing_message'][string], order: this._registerOrder++ }\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 { handler: handler as HookHandlers<any>['before_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 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 { handler: handler as HookHandlers<any>['before_incoming_call_action'][string], order: this._registerOrder++ }\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 { handler: handler as HookHandlers<any>['after_incoming_event'][string], order: this._registerOrder++ }\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 { handler: handler as HookHandlers<any>['after_incoming_message'][string], order: this._registerOrder++ }\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 { handler: handler as HookHandlers<any>['after_outgoing_message'][string], order: this._registerOrder++ }\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 { 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<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 { 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<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 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 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 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 parsedRef = parseEventRef(actualEventRef)\n if (!parsedRef) {\n return false\n }\n const resolvedRef = resolveEvent(parsedRef, this._runtime.interfaces)\n const formattedRef = formatEventRef(resolvedRef)\n return formattedRef === targetEventRef\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"],
4
+ "sourcesContent": ["/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1<g){for(var f=Array(g),m=0;m<g;m++)f[m]=arguments[m+2];c.children=f}if(a&&a.defaultProps)for(d in g=a.defaultProps,g)void 0===c[d]&&(c[d]=g[d]);return{$$typeof:l,type:a,key:k,ref:h,props:c,_owner:K.current}}\nfunction N(a,b){return{$$typeof:l,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function O(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===l}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+a.replace(/[=:]/g,function(a){return b[a]})}var P=/\\/+/g;function Q(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(\"\"+a.key):b.toString(36)}\nfunction R(a,b,e,d,c){var k=typeof a;if(\"undefined\"===k||\"boolean\"===k)a=null;var h=!1;if(null===a)h=!0;else switch(k){case \"string\":case \"number\":h=!0;break;case \"object\":switch(a.$$typeof){case l:case n:h=!0}}if(h)return h=a,c=c(h),a=\"\"===d?\".\"+Q(h,0):d,I(c)?(e=\"\",null!=a&&(e=a.replace(P,\"$&/\")+\"/\"),R(c,b,e,\"\",function(a){return a})):null!=c&&(O(c)&&(c=N(c,e+(!c.key||h&&h.key===c.key?\"\":(\"\"+c.key).replace(P,\"$&/\")+\"/\")+a)),b.push(c)),1;h=0;d=\"\"===d?\".\":d+\":\";if(I(a))for(var g=0;g<a.length;g++){k=\na[g];var f=d+Q(k,g);h+=R(k,b,e,f,c)}else if(f=A(a),\"function\"===typeof f)for(a=f.call(a),g=0;!(k=a.next()).done;)k=k.value,f=d+Q(k,g++),h+=R(k,b,e,f,c);else if(\"object\"===k)throw b=String(a),Error(\"Objects are not valid as a React child (found: \"+(\"[object Object]\"===b?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":b)+\"). If you meant to render a collection of children, use an array instead.\");return h}\nfunction S(a,b,e){if(null==a)return a;var d=[],c=0;R(a,d,\"\",\"\",function(a){return b.call(e,a,c++)});return d}function T(a){if(-1===a._status){var b=a._result;b=b();b.then(function(b){if(0===a._status||-1===a._status)a._status=1,a._result=b},function(b){if(0===a._status||-1===a._status)a._status=2,a._result=b});-1===a._status&&(a._status=0,a._result=b)}if(1===a._status)return a._result.default;throw a._result;}\nvar U={current:null},V={transition:null},W={ReactCurrentDispatcher:U,ReactCurrentBatchConfig:V,ReactCurrentOwner:K};function X(){throw Error(\"act(...) is not supported in production builds of React.\");}\nexports.Children={map:S,forEach:function(a,b,e){S(a,function(){b.apply(this,arguments)},e)},count:function(a){var b=0;S(a,function(){b++});return b},toArray:function(a){return S(a,function(a){return a})||[]},only:function(a){if(!O(a))throw Error(\"React.Children.only expected to receive a single React element child.\");return a}};exports.Component=E;exports.Fragment=p;exports.Profiler=r;exports.PureComponent=G;exports.StrictMode=q;exports.Suspense=w;\nexports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=W;exports.act=X;\nexports.cloneElement=function(a,b,e){if(null===a||void 0===a)throw Error(\"React.cloneElement(...): The argument must be a React element, but you passed \"+a+\".\");var d=C({},a.props),c=a.key,k=a.ref,h=a._owner;if(null!=b){void 0!==b.ref&&(k=b.ref,h=K.current);void 0!==b.key&&(c=\"\"+b.key);if(a.type&&a.type.defaultProps)var g=a.type.defaultProps;for(f in b)J.call(b,f)&&!L.hasOwnProperty(f)&&(d[f]=void 0===b[f]&&void 0!==g?g[f]:b[f])}var f=arguments.length-2;if(1===f)d.children=e;else if(1<f){g=Array(f);\nfor(var m=0;m<f;m++)g[m]=arguments[m+2];d.children=g}return{$$typeof:l,type:a.type,key:c,ref:k,props:d,_owner:h}};exports.createContext=function(a){a={$$typeof:u,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null};a.Provider={$$typeof:t,_context:a};return a.Consumer=a};exports.createElement=M;exports.createFactory=function(a){var b=M.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};\nexports.forwardRef=function(a){return{$$typeof:v,render:a}};exports.isValidElement=O;exports.lazy=function(a){return{$$typeof:y,_payload:{_status:-1,_result:a},_init:T}};exports.memo=function(a,b){return{$$typeof:x,type:a,compare:void 0===b?null:b}};exports.startTransition=function(a){var b=V.transition;V.transition={};try{a()}finally{V.transition=b}};exports.unstable_act=X;exports.useCallback=function(a,b){return U.current.useCallback(a,b)};exports.useContext=function(a){return U.current.useContext(a)};\nexports.useDebugValue=function(){};exports.useDeferredValue=function(a){return U.current.useDeferredValue(a)};exports.useEffect=function(a,b){return U.current.useEffect(a,b)};exports.useId=function(){return U.current.useId()};exports.useImperativeHandle=function(a,b,e){return U.current.useImperativeHandle(a,b,e)};exports.useInsertionEffect=function(a,b){return U.current.useInsertionEffect(a,b)};exports.useLayoutEffect=function(a,b){return U.current.useLayoutEffect(a,b)};\nexports.useMemo=function(a,b){return U.current.useMemo(a,b)};exports.useReducer=function(a,b,e){return U.current.useReducer(a,b,e)};exports.useRef=function(a){return U.current.useRef(a)};exports.useState=function(a){return U.current.useState(a)};exports.useSyncExternalStore=function(a,b,e){return U.current.useSyncExternalStore(a,b,e)};exports.useTransition=function(){return U.current.useTransition()};exports.version=\"18.3.1\";\n", "/**\n * @license React\n * react.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n\n 'use strict';\n\n/* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart ===\n 'function'\n) {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error());\n}\n var ReactVersion = '18.3.1';\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types.\nvar REACT_ELEMENT_TYPE = Symbol.for('react.element');\nvar REACT_PORTAL_TYPE = Symbol.for('react.portal');\nvar REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');\nvar REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');\nvar REACT_PROFILER_TYPE = Symbol.for('react.profiler');\nvar REACT_PROVIDER_TYPE = Symbol.for('react.provider');\nvar REACT_CONTEXT_TYPE = Symbol.for('react.context');\nvar REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');\nvar REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');\nvar REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');\nvar REACT_MEMO_TYPE = Symbol.for('react.memo');\nvar REACT_LAZY_TYPE = Symbol.for('react.lazy');\nvar REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');\nvar MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator';\nfunction getIteratorFn(maybeIterable) {\n if (maybeIterable === null || typeof maybeIterable !== 'object') {\n return null;\n }\n\n var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];\n\n if (typeof maybeIterator === 'function') {\n return maybeIterator;\n }\n\n return null;\n}\n\n/**\n * Keeps track of the current dispatcher.\n */\nvar ReactCurrentDispatcher = {\n /**\n * @internal\n * @type {ReactComponent}\n */\n current: null\n};\n\n/**\n * Keeps track of the current batch's configuration such as how long an update\n * should suspend for if it needs to.\n */\nvar ReactCurrentBatchConfig = {\n transition: null\n};\n\nvar ReactCurrentActQueue = {\n current: null,\n // Used to reproduce behavior of `batchedUpdates` in legacy mode.\n isBatchingLegacy: false,\n didScheduleLegacyUpdate: false\n};\n\n/**\n * Keeps track of the current owner.\n *\n * The current owner is the component who should own any components that are\n * currently being constructed.\n */\nvar ReactCurrentOwner = {\n /**\n * @internal\n * @type {ReactComponent}\n */\n current: null\n};\n\nvar ReactDebugCurrentFrame = {};\nvar currentExtraStackFrame = null;\nfunction setExtraStackFrame(stack) {\n {\n currentExtraStackFrame = stack;\n }\n}\n\n{\n ReactDebugCurrentFrame.setExtraStackFrame = function (stack) {\n {\n currentExtraStackFrame = stack;\n }\n }; // Stack implementation injected by the current renderer.\n\n\n ReactDebugCurrentFrame.getCurrentStack = null;\n\n ReactDebugCurrentFrame.getStackAddendum = function () {\n var stack = ''; // Add an extra top frame while an element is being validated\n\n if (currentExtraStackFrame) {\n stack += currentExtraStackFrame;\n } // Delegate to the injected renderer-specific implementation\n\n\n var impl = ReactDebugCurrentFrame.getCurrentStack;\n\n if (impl) {\n stack += impl() || '';\n }\n\n return stack;\n };\n}\n\n// -----------------------------------------------------------------------------\n\nvar enableScopeAPI = false; // Experimental Create Event Handle API.\nvar enableCacheElement = false;\nvar enableTransitionTracing = false; // No known bugs, but needs performance testing\n\nvar enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber\n// stuff. Intended to enable React core members to more easily debug scheduling\n// issues in DEV builds.\n\nvar enableDebugTracing = false; // Track which Fiber(s) schedule render work.\n\nvar ReactSharedInternals = {\n ReactCurrentDispatcher: ReactCurrentDispatcher,\n ReactCurrentBatchConfig: ReactCurrentBatchConfig,\n ReactCurrentOwner: ReactCurrentOwner\n};\n\n{\n ReactSharedInternals.ReactDebugCurrentFrame = ReactDebugCurrentFrame;\n ReactSharedInternals.ReactCurrentActQueue = ReactCurrentActQueue;\n}\n\n// by calls to these methods by a Babel plugin.\n//\n// In PROD (or in packages without access to React internals),\n// they are left as they are instead.\n\nfunction warn(format) {\n {\n {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n printWarning('warn', format, args);\n }\n }\n}\nfunction error(format) {\n {\n {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n printWarning('error', format, args);\n }\n }\n}\n\nfunction printWarning(level, format, args) {\n // When changing this logic, you might want to also\n // update consoleWithStackDev.www.js as well.\n {\n var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n var stack = ReactDebugCurrentFrame.getStackAddendum();\n\n if (stack !== '') {\n format += '%s';\n args = args.concat([stack]);\n } // eslint-disable-next-line react-internal/safe-string-coercion\n\n\n var argsWithFormat = args.map(function (item) {\n return String(item);\n }); // Careful: RN currently depends on this prefix\n\n argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it\n // breaks IE9: https://github.com/facebook/react/issues/13610\n // eslint-disable-next-line react-internal/no-production-logging\n\n Function.prototype.apply.call(console[level], console, argsWithFormat);\n }\n}\n\nvar didWarnStateUpdateForUnmountedComponent = {};\n\nfunction warnNoop(publicInstance, callerName) {\n {\n var _constructor = publicInstance.constructor;\n var componentName = _constructor && (_constructor.displayName || _constructor.name) || 'ReactClass';\n var warningKey = componentName + \".\" + callerName;\n\n if (didWarnStateUpdateForUnmountedComponent[warningKey]) {\n return;\n }\n\n error(\"Can't call %s on a component that is not yet mounted. \" + 'This is a no-op, but it might indicate a bug in your application. ' + 'Instead, assign to `this.state` directly or define a `state = {};` ' + 'class property with the desired state in the %s component.', callerName, componentName);\n\n didWarnStateUpdateForUnmountedComponent[warningKey] = true;\n }\n}\n/**\n * This is the abstract API for an update queue.\n */\n\n\nvar ReactNoopUpdateQueue = {\n /**\n * Checks whether or not this composite component is mounted.\n * @param {ReactClass} publicInstance The instance we want to test.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function (publicInstance) {\n return false;\n },\n\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {?function} callback Called after component is updated.\n * @param {?string} callerName name of the calling function in the public API.\n * @internal\n */\n enqueueForceUpdate: function (publicInstance, callback, callerName) {\n warnNoop(publicInstance, 'forceUpdate');\n },\n\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} completeState Next state.\n * @param {?function} callback Called after component is updated.\n * @param {?string} callerName name of the calling function in the public API.\n * @internal\n */\n enqueueReplaceState: function (publicInstance, completeState, callback, callerName) {\n warnNoop(publicInstance, 'replaceState');\n },\n\n /**\n * Sets a subset of the state. This only exists because _pendingState is\n * internal. This provides a merging strategy that is not available to deep\n * properties which is confusing. TODO: Expose pendingState or don't use it\n * during the merge.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} partialState Next partial state to be merged with state.\n * @param {?function} callback Called after component is updated.\n * @param {?string} Name of the calling function in the public API.\n * @internal\n */\n enqueueSetState: function (publicInstance, partialState, callback, callerName) {\n warnNoop(publicInstance, 'setState');\n }\n};\n\nvar assign = Object.assign;\n\nvar emptyObject = {};\n\n{\n Object.freeze(emptyObject);\n}\n/**\n * Base class helpers for the updating state of a component.\n */\n\n\nfunction Component(props, context, updater) {\n this.props = props;\n this.context = context; // If a component has string refs, we will assign a different object later.\n\n this.refs = emptyObject; // We initialize the default updater but the real one gets injected by the\n // renderer.\n\n this.updater = updater || ReactNoopUpdateQueue;\n}\n\nComponent.prototype.isReactComponent = {};\n/**\n * Sets a subset of the state. Always use this to mutate\n * state. You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * There is no guarantee that calls to `setState` will run synchronously,\n * as they may eventually be batched together. You can provide an optional\n * callback that will be executed when the call to setState is actually\n * completed.\n *\n * When a function is provided to setState, it will be called at some point in\n * the future (not synchronously). It will be called with the up to date\n * component arguments (state, props, context). These values can be different\n * from this.* because your function may be called after receiveProps but before\n * shouldComponentUpdate, and this new state, props, and context will not yet be\n * assigned to this.\n *\n * @param {object|function} partialState Next partial state or function to\n * produce next partial state to be merged with current state.\n * @param {?function} callback Called after state is updated.\n * @final\n * @protected\n */\n\nComponent.prototype.setState = function (partialState, callback) {\n if (typeof partialState !== 'object' && typeof partialState !== 'function' && partialState != null) {\n throw new Error('setState(...): takes an object of state variables to update or a ' + 'function which returns an object of state variables.');\n }\n\n this.updater.enqueueSetState(this, partialState, callback, 'setState');\n};\n/**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {?function} callback Called after update is complete.\n * @final\n * @protected\n */\n\n\nComponent.prototype.forceUpdate = function (callback) {\n this.updater.enqueueForceUpdate(this, callback, 'forceUpdate');\n};\n/**\n * Deprecated APIs. These APIs used to exist on classic React classes but since\n * we would like to deprecate them, we're not going to move them over to this\n * modern base class. Instead, we define a getter that warns if it's accessed.\n */\n\n\n{\n var deprecatedAPIs = {\n isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'],\n replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).']\n };\n\n var defineDeprecationWarning = function (methodName, info) {\n Object.defineProperty(Component.prototype, methodName, {\n get: function () {\n warn('%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]);\n\n return undefined;\n }\n });\n };\n\n for (var fnName in deprecatedAPIs) {\n if (deprecatedAPIs.hasOwnProperty(fnName)) {\n defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);\n }\n }\n}\n\nfunction ComponentDummy() {}\n\nComponentDummy.prototype = Component.prototype;\n/**\n * Convenience component with default shallow equality check for sCU.\n */\n\nfunction PureComponent(props, context, updater) {\n this.props = props;\n this.context = context; // If a component has string refs, we will assign a different object later.\n\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n}\n\nvar pureComponentPrototype = PureComponent.prototype = new ComponentDummy();\npureComponentPrototype.constructor = PureComponent; // Avoid an extra prototype jump for these methods.\n\nassign(pureComponentPrototype, Component.prototype);\npureComponentPrototype.isPureReactComponent = true;\n\n// an immutable object with a single mutable value\nfunction createRef() {\n var refObject = {\n current: null\n };\n\n {\n Object.seal(refObject);\n }\n\n return refObject;\n}\n\nvar isArrayImpl = Array.isArray; // eslint-disable-next-line no-redeclare\n\nfunction isArray(a) {\n return isArrayImpl(a);\n}\n\n/*\n * The `'' + value` pattern (used in in perf-sensitive code) throws for Symbol\n * and Temporal.* types. See https://github.com/facebook/react/pull/22064.\n *\n * The functions in this module will throw an easier-to-understand,\n * easier-to-debug exception with a clear errors message message explaining the\n * problem. (Instead of a confusing exception thrown inside the implementation\n * of the `value` object).\n */\n// $FlowFixMe only called in DEV, so void return is not possible.\nfunction typeName(value) {\n {\n // toStringTag is needed for namespaced types like Temporal.Instant\n var hasToStringTag = typeof Symbol === 'function' && Symbol.toStringTag;\n var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || 'Object';\n return type;\n }\n} // $FlowFixMe only called in DEV, so void return is not possible.\n\n\nfunction willCoercionThrow(value) {\n {\n try {\n testStringCoercion(value);\n return false;\n } catch (e) {\n return true;\n }\n }\n}\n\nfunction testStringCoercion(value) {\n // If you ended up here by following an exception call stack, here's what's\n // happened: you supplied an object or symbol value to React (as a prop, key,\n // DOM attribute, CSS property, string ref, etc.) and when React tried to\n // coerce it to a string using `'' + value`, an exception was thrown.\n //\n // The most common types that will cause this exception are `Symbol` instances\n // and Temporal objects like `Temporal.Instant`. But any object that has a\n // `valueOf` or `[Symbol.toPrimitive]` method that throws will also cause this\n // exception. (Library authors do this to prevent users from using built-in\n // numeric operators like `+` or comparison operators like `>=` because custom\n // methods are needed to perform accurate arithmetic or comparison.)\n //\n // To fix the problem, coerce this object or symbol value to a string before\n // passing it to React. The most reliable way is usually `String(value)`.\n //\n // To find which value is throwing, check the browser or debugger console.\n // Before this exception was thrown, there should be `console.error` output\n // that shows the type (Symbol, Temporal.PlainDate, etc.) that caused the\n // problem and how that type was used: key, atrribute, input value prop, etc.\n // In most cases, this console output also shows the component and its\n // ancestor components where the exception happened.\n //\n // eslint-disable-next-line react-internal/safe-string-coercion\n return '' + value;\n}\nfunction checkKeyStringCoercion(value) {\n {\n if (willCoercionThrow(value)) {\n error('The provided key is an unsupported type %s.' + ' This value must be coerced to a string before before using it here.', typeName(value));\n\n return testStringCoercion(value); // throw (to help callers find troubleshooting comments)\n }\n }\n}\n\nfunction getWrappedName(outerType, innerType, wrapperName) {\n var displayName = outerType.displayName;\n\n if (displayName) {\n return displayName;\n }\n\n var functionName = innerType.displayName || innerType.name || '';\n return functionName !== '' ? wrapperName + \"(\" + functionName + \")\" : wrapperName;\n} // Keep in sync with react-reconciler/getComponentNameFromFiber\n\n\nfunction getContextName(type) {\n return type.displayName || 'Context';\n} // Note that the reconciler package should generally prefer to use getComponentNameFromFiber() instead.\n\n\nfunction getComponentNameFromType(type) {\n if (type == null) {\n // Host root, text node or just invalid type.\n return null;\n }\n\n {\n if (typeof type.tag === 'number') {\n error('Received an unexpected object in getComponentNameFromType(). ' + 'This is likely a bug in React. Please file an issue.');\n }\n }\n\n if (typeof type === 'function') {\n return type.displayName || type.name || null;\n }\n\n if (typeof type === 'string') {\n return type;\n }\n\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return 'Fragment';\n\n case REACT_PORTAL_TYPE:\n return 'Portal';\n\n case REACT_PROFILER_TYPE:\n return 'Profiler';\n\n case REACT_STRICT_MODE_TYPE:\n return 'StrictMode';\n\n case REACT_SUSPENSE_TYPE:\n return 'Suspense';\n\n case REACT_SUSPENSE_LIST_TYPE:\n return 'SuspenseList';\n\n }\n\n if (typeof type === 'object') {\n switch (type.$$typeof) {\n case REACT_CONTEXT_TYPE:\n var context = type;\n return getContextName(context) + '.Consumer';\n\n case REACT_PROVIDER_TYPE:\n var provider = type;\n return getContextName(provider._context) + '.Provider';\n\n case REACT_FORWARD_REF_TYPE:\n return getWrappedName(type, type.render, 'ForwardRef');\n\n case REACT_MEMO_TYPE:\n var outerName = type.displayName || null;\n\n if (outerName !== null) {\n return outerName;\n }\n\n return getComponentNameFromType(type.type) || 'Memo';\n\n case REACT_LAZY_TYPE:\n {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n\n try {\n return getComponentNameFromType(init(payload));\n } catch (x) {\n return null;\n }\n }\n\n // eslint-disable-next-line no-fallthrough\n }\n }\n\n return null;\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar RESERVED_PROPS = {\n key: true,\n ref: true,\n __self: true,\n __source: true\n};\nvar specialPropKeyWarningShown, specialPropRefWarningShown, didWarnAboutStringRefs;\n\n{\n didWarnAboutStringRefs = {};\n}\n\nfunction hasValidRef(config) {\n {\n if (hasOwnProperty.call(config, 'ref')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;\n\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n\n return config.ref !== undefined;\n}\n\nfunction hasValidKey(config) {\n {\n if (hasOwnProperty.call(config, 'key')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'key').get;\n\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n\n return config.key !== undefined;\n}\n\nfunction defineKeyPropWarningGetter(props, displayName) {\n var warnAboutAccessingKey = function () {\n {\n if (!specialPropKeyWarningShown) {\n specialPropKeyWarningShown = true;\n\n error('%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n }\n }\n };\n\n warnAboutAccessingKey.isReactWarning = true;\n Object.defineProperty(props, 'key', {\n get: warnAboutAccessingKey,\n configurable: true\n });\n}\n\nfunction defineRefPropWarningGetter(props, displayName) {\n var warnAboutAccessingRef = function () {\n {\n if (!specialPropRefWarningShown) {\n specialPropRefWarningShown = true;\n\n error('%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n }\n }\n };\n\n warnAboutAccessingRef.isReactWarning = true;\n Object.defineProperty(props, 'ref', {\n get: warnAboutAccessingRef,\n configurable: true\n });\n}\n\nfunction warnIfStringRefCannotBeAutoConverted(config) {\n {\n if (typeof config.ref === 'string' && ReactCurrentOwner.current && config.__self && ReactCurrentOwner.current.stateNode !== config.__self) {\n var componentName = getComponentNameFromType(ReactCurrentOwner.current.type);\n\n if (!didWarnAboutStringRefs[componentName]) {\n error('Component \"%s\" contains the string ref \"%s\". ' + 'Support for string refs will be removed in a future major release. ' + 'This case cannot be automatically converted to an arrow function. ' + 'We ask you to manually fix this case by using useRef() or createRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-string-ref', componentName, config.ref);\n\n didWarnAboutStringRefs[componentName] = true;\n }\n }\n }\n}\n/**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, instanceof check\n * will not work. Instead test $$typeof field against Symbol.for('react.element') to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} props\n * @param {*} key\n * @param {string|object} ref\n * @param {*} owner\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @internal\n */\n\n\nvar ReactElement = function (type, key, ref, self, source, owner, props) {\n var element = {\n // This tag allows us to uniquely identify this as a React Element\n $$typeof: REACT_ELEMENT_TYPE,\n // Built-in properties that belong on the element\n type: type,\n key: key,\n ref: ref,\n props: props,\n // Record the component responsible for creating this element.\n _owner: owner\n };\n\n {\n // The validation flag is currently mutative. We put it on\n // an external backing store so that we can freeze the whole object.\n // This can be replaced with a WeakMap once they are implemented in\n // commonly used development environments.\n element._store = {}; // To make comparing ReactElements easier for testing purposes, we make\n // the validation flag non-enumerable (where possible, which should\n // include every environment we run tests in), so the test framework\n // ignores it.\n\n Object.defineProperty(element._store, 'validated', {\n configurable: false,\n enumerable: false,\n writable: true,\n value: false\n }); // self and source are DEV only properties.\n\n Object.defineProperty(element, '_self', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: self\n }); // Two elements created in two different places should be considered\n // equal for testing purposes and therefore we hide it from enumeration.\n\n Object.defineProperty(element, '_source', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: source\n });\n\n if (Object.freeze) {\n Object.freeze(element.props);\n Object.freeze(element);\n }\n }\n\n return element;\n};\n/**\n * Create and return a new ReactElement of the given type.\n * See https://reactjs.org/docs/react-api.html#createelement\n */\n\nfunction createElement(type, config, children) {\n var propName; // Reserved names are extracted\n\n var props = {};\n var key = null;\n var ref = null;\n var self = null;\n var source = null;\n\n if (config != null) {\n if (hasValidRef(config)) {\n ref = config.ref;\n\n {\n warnIfStringRefCannotBeAutoConverted(config);\n }\n }\n\n if (hasValidKey(config)) {\n {\n checkKeyStringCoercion(config.key);\n }\n\n key = '' + config.key;\n }\n\n self = config.__self === undefined ? null : config.__self;\n source = config.__source === undefined ? null : config.__source; // Remaining properties are added to a new props object\n\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n props[propName] = config[propName];\n }\n }\n } // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n\n\n var childrenLength = arguments.length - 2;\n\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n\n {\n if (Object.freeze) {\n Object.freeze(childArray);\n }\n }\n\n props.children = childArray;\n } // Resolve default props\n\n\n if (type && type.defaultProps) {\n var defaultProps = type.defaultProps;\n\n for (propName in defaultProps) {\n if (props[propName] === undefined) {\n props[propName] = defaultProps[propName];\n }\n }\n }\n\n {\n if (key || ref) {\n var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;\n\n if (key) {\n defineKeyPropWarningGetter(props, displayName);\n }\n\n if (ref) {\n defineRefPropWarningGetter(props, displayName);\n }\n }\n }\n\n return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\n}\nfunction cloneAndReplaceKey(oldElement, newKey) {\n var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props);\n return newElement;\n}\n/**\n * Clone and return a new ReactElement using element as the starting point.\n * See https://reactjs.org/docs/react-api.html#cloneelement\n */\n\nfunction cloneElement(element, config, children) {\n if (element === null || element === undefined) {\n throw new Error(\"React.cloneElement(...): The argument must be a React element, but you passed \" + element + \".\");\n }\n\n var propName; // Original props are copied\n\n var props = assign({}, element.props); // Reserved names are extracted\n\n var key = element.key;\n var ref = element.ref; // Self is preserved since the owner is preserved.\n\n var self = element._self; // Source is preserved since cloneElement is unlikely to be targeted by a\n // transpiler, and the original source is probably a better indicator of the\n // true owner.\n\n var source = element._source; // Owner will be preserved, unless ref is overridden\n\n var owner = element._owner;\n\n if (config != null) {\n if (hasValidRef(config)) {\n // Silently steal the ref from the parent.\n ref = config.ref;\n owner = ReactCurrentOwner.current;\n }\n\n if (hasValidKey(config)) {\n {\n checkKeyStringCoercion(config.key);\n }\n\n key = '' + config.key;\n } // Remaining properties override existing props\n\n\n var defaultProps;\n\n if (element.type && element.type.defaultProps) {\n defaultProps = element.type.defaultProps;\n }\n\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n if (config[propName] === undefined && defaultProps !== undefined) {\n // Resolve default props\n props[propName] = defaultProps[propName];\n } else {\n props[propName] = config[propName];\n }\n }\n }\n } // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n\n\n var childrenLength = arguments.length - 2;\n\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n\n props.children = childArray;\n }\n\n return ReactElement(element.type, key, ref, self, source, owner, props);\n}\n/**\n * Verifies the object is a ReactElement.\n * See https://reactjs.org/docs/react-api.html#isvalidelement\n * @param {?object} object\n * @return {boolean} True if `object` is a ReactElement.\n * @final\n */\n\nfunction isValidElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\n\nvar SEPARATOR = '.';\nvar SUBSEPARATOR = ':';\n/**\n * Escape and wrap key so it is safe to use as a reactid\n *\n * @param {string} key to be escaped.\n * @return {string} the escaped key.\n */\n\nfunction escape(key) {\n var escapeRegex = /[=:]/g;\n var escaperLookup = {\n '=': '=0',\n ':': '=2'\n };\n var escapedString = key.replace(escapeRegex, function (match) {\n return escaperLookup[match];\n });\n return '$' + escapedString;\n}\n/**\n * TODO: Test that a single child and an array with one item have the same key\n * pattern.\n */\n\n\nvar didWarnAboutMaps = false;\nvar userProvidedKeyEscapeRegex = /\\/+/g;\n\nfunction escapeUserProvidedKey(text) {\n return text.replace(userProvidedKeyEscapeRegex, '$&/');\n}\n/**\n * Generate a key string that identifies a element within a set.\n *\n * @param {*} element A element that could contain a manual key.\n * @param {number} index Index that is used if a manual key is not provided.\n * @return {string}\n */\n\n\nfunction getElementKey(element, index) {\n // Do some typechecking here since we call this blindly. We want to ensure\n // that we don't block potential future ES APIs.\n if (typeof element === 'object' && element !== null && element.key != null) {\n // Explicit key\n {\n checkKeyStringCoercion(element.key);\n }\n\n return escape('' + element.key);\n } // Implicit key determined by the index in the set\n\n\n return index.toString(36);\n}\n\nfunction mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {\n var type = typeof children;\n\n if (type === 'undefined' || type === 'boolean') {\n // All of the above are perceived as null.\n children = null;\n }\n\n var invokeCallback = false;\n\n if (children === null) {\n invokeCallback = true;\n } else {\n switch (type) {\n case 'string':\n case 'number':\n invokeCallback = true;\n break;\n\n case 'object':\n switch (children.$$typeof) {\n case REACT_ELEMENT_TYPE:\n case REACT_PORTAL_TYPE:\n invokeCallback = true;\n }\n\n }\n }\n\n if (invokeCallback) {\n var _child = children;\n var mappedChild = callback(_child); // If it's the only child, treat the name as if it was wrapped in an array\n // so that it's consistent if the number of children grows:\n\n var childKey = nameSoFar === '' ? SEPARATOR + getElementKey(_child, 0) : nameSoFar;\n\n if (isArray(mappedChild)) {\n var escapedChildKey = '';\n\n if (childKey != null) {\n escapedChildKey = escapeUserProvidedKey(childKey) + '/';\n }\n\n mapIntoArray(mappedChild, array, escapedChildKey, '', function (c) {\n return c;\n });\n } else if (mappedChild != null) {\n if (isValidElement(mappedChild)) {\n {\n // The `if` statement here prevents auto-disabling of the safe\n // coercion ESLint rule, so we must manually disable it below.\n // $FlowFixMe Flow incorrectly thinks React.Portal doesn't have a key\n if (mappedChild.key && (!_child || _child.key !== mappedChild.key)) {\n checkKeyStringCoercion(mappedChild.key);\n }\n }\n\n mappedChild = cloneAndReplaceKey(mappedChild, // Keep both the (mapped) and old keys if they differ, just as\n // traverseAllChildren used to do for objects as children\n escapedPrefix + ( // $FlowFixMe Flow incorrectly thinks React.Portal doesn't have a key\n mappedChild.key && (!_child || _child.key !== mappedChild.key) ? // $FlowFixMe Flow incorrectly thinks existing element's key can be a number\n // eslint-disable-next-line react-internal/safe-string-coercion\n escapeUserProvidedKey('' + mappedChild.key) + '/' : '') + childKey);\n }\n\n array.push(mappedChild);\n }\n\n return 1;\n }\n\n var child;\n var nextName;\n var subtreeCount = 0; // Count of children found in the current subtree.\n\n var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;\n\n if (isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n nextName = nextNamePrefix + getElementKey(child, i);\n subtreeCount += mapIntoArray(child, array, escapedPrefix, nextName, callback);\n }\n } else {\n var iteratorFn = getIteratorFn(children);\n\n if (typeof iteratorFn === 'function') {\n var iterableChildren = children;\n\n {\n // Warn about using Maps as children\n if (iteratorFn === iterableChildren.entries) {\n if (!didWarnAboutMaps) {\n warn('Using Maps as children is not supported. ' + 'Use an array of keyed ReactElements instead.');\n }\n\n didWarnAboutMaps = true;\n }\n }\n\n var iterator = iteratorFn.call(iterableChildren);\n var step;\n var ii = 0;\n\n while (!(step = iterator.next()).done) {\n child = step.value;\n nextName = nextNamePrefix + getElementKey(child, ii++);\n subtreeCount += mapIntoArray(child, array, escapedPrefix, nextName, callback);\n }\n } else if (type === 'object') {\n // eslint-disable-next-line react-internal/safe-string-coercion\n var childrenString = String(children);\n throw new Error(\"Objects are not valid as a React child (found: \" + (childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString) + \"). \" + 'If you meant to render a collection of children, use an array ' + 'instead.');\n }\n }\n\n return subtreeCount;\n}\n\n/**\n * Maps children that are typically specified as `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrenmap\n *\n * The provided mapFunction(child, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} func The map function.\n * @param {*} context Context for mapFunction.\n * @return {object} Object containing the ordered map of results.\n */\nfunction mapChildren(children, func, context) {\n if (children == null) {\n return children;\n }\n\n var result = [];\n var count = 0;\n mapIntoArray(children, result, '', '', function (child) {\n return func.call(context, child, count++);\n });\n return result;\n}\n/**\n * Count the number of children that are typically specified as\n * `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrencount\n *\n * @param {?*} children Children tree container.\n * @return {number} The number of children.\n */\n\n\nfunction countChildren(children) {\n var n = 0;\n mapChildren(children, function () {\n n++; // Don't return anything\n });\n return n;\n}\n\n/**\n * Iterates through children that are typically specified as `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrenforeach\n *\n * The provided forEachFunc(child, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} forEachFunc\n * @param {*} forEachContext Context for forEachContext.\n */\nfunction forEachChildren(children, forEachFunc, forEachContext) {\n mapChildren(children, function () {\n forEachFunc.apply(this, arguments); // Don't return anything.\n }, forEachContext);\n}\n/**\n * Flatten a children object (typically specified as `props.children`) and\n * return an array with appropriately re-keyed children.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrentoarray\n */\n\n\nfunction toArray(children) {\n return mapChildren(children, function (child) {\n return child;\n }) || [];\n}\n/**\n * Returns the first child in a collection of children and verifies that there\n * is only one child in the collection.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrenonly\n *\n * The current implementation of this function assumes that a single child gets\n * passed without a wrapper, but the purpose of this helper function is to\n * abstract away the particular structure of children.\n *\n * @param {?object} children Child collection structure.\n * @return {ReactElement} The first and only `ReactElement` contained in the\n * structure.\n */\n\n\nfunction onlyChild(children) {\n if (!isValidElement(children)) {\n throw new Error('React.Children.only expected to receive a single React element child.');\n }\n\n return children;\n}\n\nfunction createContext(defaultValue) {\n // TODO: Second argument used to be an optional `calculateChangedBits`\n // function. Warn to reserve for future use?\n var context = {\n $$typeof: REACT_CONTEXT_TYPE,\n // As a workaround to support multiple concurrent renderers, we categorize\n // some renderers as primary and others as secondary. We only expect\n // there to be two concurrent renderers at most: React Native (primary) and\n // Fabric (secondary); React DOM (primary) and React ART (secondary).\n // Secondary renderers store their context values on separate fields.\n _currentValue: defaultValue,\n _currentValue2: defaultValue,\n // Used to track how many concurrent renderers this context currently\n // supports within in a single renderer. Such as parallel server rendering.\n _threadCount: 0,\n // These are circular\n Provider: null,\n Consumer: null,\n // Add these to use same hidden class in VM as ServerContext\n _defaultValue: null,\n _globalName: null\n };\n context.Provider = {\n $$typeof: REACT_PROVIDER_TYPE,\n _context: context\n };\n var hasWarnedAboutUsingNestedContextConsumers = false;\n var hasWarnedAboutUsingConsumerProvider = false;\n var hasWarnedAboutDisplayNameOnConsumer = false;\n\n {\n // A separate object, but proxies back to the original context object for\n // backwards compatibility. It has a different $$typeof, so we can properly\n // warn for the incorrect usage of Context as a Consumer.\n var Consumer = {\n $$typeof: REACT_CONTEXT_TYPE,\n _context: context\n }; // $FlowFixMe: Flow complains about not setting a value, which is intentional here\n\n Object.defineProperties(Consumer, {\n Provider: {\n get: function () {\n if (!hasWarnedAboutUsingConsumerProvider) {\n hasWarnedAboutUsingConsumerProvider = true;\n\n error('Rendering <Context.Consumer.Provider> is not supported and will be removed in ' + 'a future major release. Did you mean to render <Context.Provider> instead?');\n }\n\n return context.Provider;\n },\n set: function (_Provider) {\n context.Provider = _Provider;\n }\n },\n _currentValue: {\n get: function () {\n return context._currentValue;\n },\n set: function (_currentValue) {\n context._currentValue = _currentValue;\n }\n },\n _currentValue2: {\n get: function () {\n return context._currentValue2;\n },\n set: function (_currentValue2) {\n context._currentValue2 = _currentValue2;\n }\n },\n _threadCount: {\n get: function () {\n return context._threadCount;\n },\n set: function (_threadCount) {\n context._threadCount = _threadCount;\n }\n },\n Consumer: {\n get: function () {\n if (!hasWarnedAboutUsingNestedContextConsumers) {\n hasWarnedAboutUsingNestedContextConsumers = true;\n\n error('Rendering <Context.Consumer.Consumer> is not supported and will be removed in ' + 'a future major release. Did you mean to render <Context.Consumer> instead?');\n }\n\n return context.Consumer;\n }\n },\n displayName: {\n get: function () {\n return context.displayName;\n },\n set: function (displayName) {\n if (!hasWarnedAboutDisplayNameOnConsumer) {\n warn('Setting `displayName` on Context.Consumer has no effect. ' + \"You should set it directly on the context with Context.displayName = '%s'.\", displayName);\n\n hasWarnedAboutDisplayNameOnConsumer = true;\n }\n }\n }\n }); // $FlowFixMe: Flow complains about missing properties because it doesn't understand defineProperty\n\n context.Consumer = Consumer;\n }\n\n {\n context._currentRenderer = null;\n context._currentRenderer2 = null;\n }\n\n return context;\n}\n\nvar Uninitialized = -1;\nvar Pending = 0;\nvar Resolved = 1;\nvar Rejected = 2;\n\nfunction lazyInitializer(payload) {\n if (payload._status === Uninitialized) {\n var ctor = payload._result;\n var thenable = ctor(); // Transition to the next state.\n // This might throw either because it's missing or throws. If so, we treat it\n // as still uninitialized and try again next time. Which is the same as what\n // happens if the ctor or any wrappers processing the ctor throws. This might\n // end up fixing it if the resolution was a concurrency bug.\n\n thenable.then(function (moduleObject) {\n if (payload._status === Pending || payload._status === Uninitialized) {\n // Transition to the next state.\n var resolved = payload;\n resolved._status = Resolved;\n resolved._result = moduleObject;\n }\n }, function (error) {\n if (payload._status === Pending || payload._status === Uninitialized) {\n // Transition to the next state.\n var rejected = payload;\n rejected._status = Rejected;\n rejected._result = error;\n }\n });\n\n if (payload._status === Uninitialized) {\n // In case, we're still uninitialized, then we're waiting for the thenable\n // to resolve. Set it as pending in the meantime.\n var pending = payload;\n pending._status = Pending;\n pending._result = thenable;\n }\n }\n\n if (payload._status === Resolved) {\n var moduleObject = payload._result;\n\n {\n if (moduleObject === undefined) {\n error('lazy: Expected the result of a dynamic imp' + 'ort() call. ' + 'Instead received: %s\\n\\nYour code should look like: \\n ' + // Break up imports to avoid accidentally parsing them as dependencies.\n 'const MyComponent = lazy(() => imp' + \"ort('./MyComponent'))\\n\\n\" + 'Did you accidentally put curly braces around the import?', moduleObject);\n }\n }\n\n {\n if (!('default' in moduleObject)) {\n error('lazy: Expected the result of a dynamic imp' + 'ort() call. ' + 'Instead received: %s\\n\\nYour code should look like: \\n ' + // Break up imports to avoid accidentally parsing them as dependencies.\n 'const MyComponent = lazy(() => imp' + \"ort('./MyComponent'))\", moduleObject);\n }\n }\n\n return moduleObject.default;\n } else {\n throw payload._result;\n }\n}\n\nfunction lazy(ctor) {\n var payload = {\n // We use these fields to store the result.\n _status: Uninitialized,\n _result: ctor\n };\n var lazyType = {\n $$typeof: REACT_LAZY_TYPE,\n _payload: payload,\n _init: lazyInitializer\n };\n\n {\n // In production, this would just set it on the object.\n var defaultProps;\n var propTypes; // $FlowFixMe\n\n Object.defineProperties(lazyType, {\n defaultProps: {\n configurable: true,\n get: function () {\n return defaultProps;\n },\n set: function (newDefaultProps) {\n error('React.lazy(...): It is not supported to assign `defaultProps` to ' + 'a lazy component import. Either specify them where the component ' + 'is defined, or create a wrapping component around it.');\n\n defaultProps = newDefaultProps; // Match production behavior more closely:\n // $FlowFixMe\n\n Object.defineProperty(lazyType, 'defaultProps', {\n enumerable: true\n });\n }\n },\n propTypes: {\n configurable: true,\n get: function () {\n return propTypes;\n },\n set: function (newPropTypes) {\n error('React.lazy(...): It is not supported to assign `propTypes` to ' + 'a lazy component import. Either specify them where the component ' + 'is defined, or create a wrapping component around it.');\n\n propTypes = newPropTypes; // Match production behavior more closely:\n // $FlowFixMe\n\n Object.defineProperty(lazyType, 'propTypes', {\n enumerable: true\n });\n }\n }\n });\n }\n\n return lazyType;\n}\n\nfunction forwardRef(render) {\n {\n if (render != null && render.$$typeof === REACT_MEMO_TYPE) {\n error('forwardRef requires a render function but received a `memo` ' + 'component. Instead of forwardRef(memo(...)), use ' + 'memo(forwardRef(...)).');\n } else if (typeof render !== 'function') {\n error('forwardRef requires a render function but was given %s.', render === null ? 'null' : typeof render);\n } else {\n if (render.length !== 0 && render.length !== 2) {\n error('forwardRef render functions accept exactly two parameters: props and ref. %s', render.length === 1 ? 'Did you forget to use the ref parameter?' : 'Any additional parameter will be undefined.');\n }\n }\n\n if (render != null) {\n if (render.defaultProps != null || render.propTypes != null) {\n error('forwardRef render functions do not support propTypes or defaultProps. ' + 'Did you accidentally pass a React component?');\n }\n }\n }\n\n var elementType = {\n $$typeof: REACT_FORWARD_REF_TYPE,\n render: render\n };\n\n {\n var ownName;\n Object.defineProperty(elementType, 'displayName', {\n enumerable: false,\n configurable: true,\n get: function () {\n return ownName;\n },\n set: function (name) {\n ownName = name; // The inner component shouldn't inherit this display name in most cases,\n // because the component may be used elsewhere.\n // But it's nice for anonymous functions to inherit the name,\n // so that our component-stack generation logic will display their frames.\n // An anonymous function generally suggests a pattern like:\n // React.forwardRef((props, ref) => {...});\n // This kind of inner function is not used elsewhere so the side effect is okay.\n\n if (!render.name && !render.displayName) {\n render.displayName = name;\n }\n }\n });\n }\n\n return elementType;\n}\n\nvar REACT_MODULE_REFERENCE;\n\n{\n REACT_MODULE_REFERENCE = Symbol.for('react.module.reference');\n}\n\nfunction isValidElementType(type) {\n if (typeof type === 'string' || typeof type === 'function') {\n return true;\n } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n\n\n if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing ) {\n return true;\n }\n\n if (typeof type === 'object' && type !== null) {\n if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\n // types supported by any Flight configuration anywhere since\n // we don't know which Flight build this will end up being used\n // with.\n type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction memo(type, compare) {\n {\n if (!isValidElementType(type)) {\n error('memo: The first argument must be a component. Instead ' + 'received: %s', type === null ? 'null' : typeof type);\n }\n }\n\n var elementType = {\n $$typeof: REACT_MEMO_TYPE,\n type: type,\n compare: compare === undefined ? null : compare\n };\n\n {\n var ownName;\n Object.defineProperty(elementType, 'displayName', {\n enumerable: false,\n configurable: true,\n get: function () {\n return ownName;\n },\n set: function (name) {\n ownName = name; // The inner component shouldn't inherit this display name in most cases,\n // because the component may be used elsewhere.\n // But it's nice for anonymous functions to inherit the name,\n // so that our component-stack generation logic will display their frames.\n // An anonymous function generally suggests a pattern like:\n // React.memo((props) => {...});\n // This kind of inner function is not used elsewhere so the side effect is okay.\n\n if (!type.name && !type.displayName) {\n type.displayName = name;\n }\n }\n });\n }\n\n return elementType;\n}\n\nfunction resolveDispatcher() {\n var dispatcher = ReactCurrentDispatcher.current;\n\n {\n if (dispatcher === null) {\n error('Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for' + ' one of the following reasons:\\n' + '1. You might have mismatching versions of React and the renderer (such as React DOM)\\n' + '2. You might be breaking the Rules of Hooks\\n' + '3. You might have more than one copy of React in the same app\\n' + 'See https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.');\n }\n } // Will result in a null access error if accessed outside render phase. We\n // intentionally don't throw our own error because this is in a hot path.\n // Also helps ensure this is inlined.\n\n\n return dispatcher;\n}\nfunction useContext(Context) {\n var dispatcher = resolveDispatcher();\n\n {\n // TODO: add a more generic warning for invalid values.\n if (Context._context !== undefined) {\n var realContext = Context._context; // Don't deduplicate because this legitimately causes bugs\n // and nobody should be using this in existing code.\n\n if (realContext.Consumer === Context) {\n error('Calling useContext(Context.Consumer) is not supported, may cause bugs, and will be ' + 'removed in a future major release. Did you mean to call useContext(Context) instead?');\n } else if (realContext.Provider === Context) {\n error('Calling useContext(Context.Provider) is not supported. ' + 'Did you mean to call useContext(Context) instead?');\n }\n }\n }\n\n return dispatcher.useContext(Context);\n}\nfunction useState(initialState) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useState(initialState);\n}\nfunction useReducer(reducer, initialArg, init) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useReducer(reducer, initialArg, init);\n}\nfunction useRef(initialValue) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useRef(initialValue);\n}\nfunction useEffect(create, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useEffect(create, deps);\n}\nfunction useInsertionEffect(create, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useInsertionEffect(create, deps);\n}\nfunction useLayoutEffect(create, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useLayoutEffect(create, deps);\n}\nfunction useCallback(callback, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useCallback(callback, deps);\n}\nfunction useMemo(create, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useMemo(create, deps);\n}\nfunction useImperativeHandle(ref, create, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useImperativeHandle(ref, create, deps);\n}\nfunction useDebugValue(value, formatterFn) {\n {\n var dispatcher = resolveDispatcher();\n return dispatcher.useDebugValue(value, formatterFn);\n }\n}\nfunction useTransition() {\n var dispatcher = resolveDispatcher();\n return dispatcher.useTransition();\n}\nfunction useDeferredValue(value) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useDeferredValue(value);\n}\nfunction useId() {\n var dispatcher = resolveDispatcher();\n return dispatcher.useId();\n}\nfunction useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n}\n\n// Helpers to patch console.logs to avoid logging during side-effect free\n// replaying on render function. This currently only patches the object\n// lazily which won't cover if the log function was extracted eagerly.\n// We could also eagerly patch the method.\nvar disabledDepth = 0;\nvar prevLog;\nvar prevInfo;\nvar prevWarn;\nvar prevError;\nvar prevGroup;\nvar prevGroupCollapsed;\nvar prevGroupEnd;\n\nfunction disabledLog() {}\n\ndisabledLog.__reactDisabledLog = true;\nfunction disableLogs() {\n {\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */\n prevLog = console.log;\n prevInfo = console.info;\n prevWarn = console.warn;\n prevError = console.error;\n prevGroup = console.group;\n prevGroupCollapsed = console.groupCollapsed;\n prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099\n\n var props = {\n configurable: true,\n enumerable: true,\n value: disabledLog,\n writable: true\n }; // $FlowFixMe Flow thinks console is immutable.\n\n Object.defineProperties(console, {\n info: props,\n log: props,\n warn: props,\n error: props,\n group: props,\n groupCollapsed: props,\n groupEnd: props\n });\n /* eslint-enable react-internal/no-production-logging */\n }\n\n disabledDepth++;\n }\n}\nfunction reenableLogs() {\n {\n disabledDepth--;\n\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */\n var props = {\n configurable: true,\n enumerable: true,\n writable: true\n }; // $FlowFixMe Flow thinks console is immutable.\n\n Object.defineProperties(console, {\n log: assign({}, props, {\n value: prevLog\n }),\n info: assign({}, props, {\n value: prevInfo\n }),\n warn: assign({}, props, {\n value: prevWarn\n }),\n error: assign({}, props, {\n value: prevError\n }),\n group: assign({}, props, {\n value: prevGroup\n }),\n groupCollapsed: assign({}, props, {\n value: prevGroupCollapsed\n }),\n groupEnd: assign({}, props, {\n value: prevGroupEnd\n })\n });\n /* eslint-enable react-internal/no-production-logging */\n }\n\n if (disabledDepth < 0) {\n error('disabledDepth fell below zero. ' + 'This is a bug in React. Please file an issue.');\n }\n }\n}\n\nvar ReactCurrentDispatcher$1 = ReactSharedInternals.ReactCurrentDispatcher;\nvar prefix;\nfunction describeBuiltInComponentFrame(name, source, ownerFn) {\n {\n if (prefix === undefined) {\n // Extract the VM specific prefix used by each line.\n try {\n throw Error();\n } catch (x) {\n var match = x.stack.trim().match(/\\n( *(at )?)/);\n prefix = match && match[1] || '';\n }\n } // We use the prefix to ensure our stacks line up with native stack frames.\n\n\n return '\\n' + prefix + name;\n }\n}\nvar reentry = false;\nvar componentFrameCache;\n\n{\n var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map;\n componentFrameCache = new PossiblyWeakMap();\n}\n\nfunction describeNativeComponentFrame(fn, construct) {\n // If something asked for a stack inside a fake render, it should get ignored.\n if ( !fn || reentry) {\n return '';\n }\n\n {\n var frame = componentFrameCache.get(fn);\n\n if (frame !== undefined) {\n return frame;\n }\n }\n\n var control;\n reentry = true;\n var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe It does accept undefined.\n\n Error.prepareStackTrace = undefined;\n var previousDispatcher;\n\n {\n previousDispatcher = ReactCurrentDispatcher$1.current; // Set the dispatcher in DEV because this might be call in the render function\n // for warnings.\n\n ReactCurrentDispatcher$1.current = null;\n disableLogs();\n }\n\n try {\n // This should throw.\n if (construct) {\n // Something should be setting the props in the constructor.\n var Fake = function () {\n throw Error();\n }; // $FlowFixMe\n\n\n Object.defineProperty(Fake.prototype, 'props', {\n set: function () {\n // We use a throwing setter instead of frozen or non-writable props\n // because that won't throw in a non-strict mode function.\n throw Error();\n }\n });\n\n if (typeof Reflect === 'object' && Reflect.construct) {\n // We construct a different control for this case to include any extra\n // frames added by the construct call.\n try {\n Reflect.construct(Fake, []);\n } catch (x) {\n control = x;\n }\n\n Reflect.construct(fn, [], Fake);\n } else {\n try {\n Fake.call();\n } catch (x) {\n control = x;\n }\n\n fn.call(Fake.prototype);\n }\n } else {\n try {\n throw Error();\n } catch (x) {\n control = x;\n }\n\n fn();\n }\n } catch (sample) {\n // This is inlined manually because closure doesn't do it for us.\n if (sample && control && typeof sample.stack === 'string') {\n // This extracts the first frame from the sample that isn't also in the control.\n // Skipping one frame that we assume is the frame that calls the two.\n var sampleLines = sample.stack.split('\\n');\n var controlLines = control.stack.split('\\n');\n var s = sampleLines.length - 1;\n var c = controlLines.length - 1;\n\n while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) {\n // We expect at least one stack frame to be shared.\n // Typically this will be the root most one. However, stack frames may be\n // cut off due to maximum stack limits. In this case, one maybe cut off\n // earlier than the other. We assume that the sample is longer or the same\n // and there for cut off earlier. So we should find the root most frame in\n // the sample somewhere in the control.\n c--;\n }\n\n for (; s >= 1 && c >= 0; s--, c--) {\n // Next we find the first one that isn't the same which should be the\n // frame that called our sample function and the control.\n if (sampleLines[s] !== controlLines[c]) {\n // In V8, the first line is describing the message but other VMs don't.\n // If we're about to return the first line, and the control is also on the same\n // line, that's a pretty good indicator that our sample threw at same line as\n // the control. I.e. before we entered the sample frame. So we ignore this result.\n // This can happen if you passed a class to function component, or non-function.\n if (s !== 1 || c !== 1) {\n do {\n s--;\n c--; // We may still have similar intermediate frames from the construct call.\n // The next one that isn't the same should be our match though.\n\n if (c < 0 || sampleLines[s] !== controlLines[c]) {\n // V8 adds a \"new\" prefix for native classes. Let's remove it to make it prettier.\n var _frame = '\\n' + sampleLines[s].replace(' at new ', ' at '); // If our component frame is labeled \"<anonymous>\"\n // but we have a user-provided \"displayName\"\n // splice it in to make the stack more readable.\n\n\n if (fn.displayName && _frame.includes('<anonymous>')) {\n _frame = _frame.replace('<anonymous>', fn.displayName);\n }\n\n {\n if (typeof fn === 'function') {\n componentFrameCache.set(fn, _frame);\n }\n } // Return the line we found.\n\n\n return _frame;\n }\n } while (s >= 1 && c >= 0);\n }\n\n break;\n }\n }\n }\n } finally {\n reentry = false;\n\n {\n ReactCurrentDispatcher$1.current = previousDispatcher;\n reenableLogs();\n }\n\n Error.prepareStackTrace = previousPrepareStackTrace;\n } // Fallback to just using the name if we couldn't make it throw.\n\n\n var name = fn ? fn.displayName || fn.name : '';\n var syntheticFrame = name ? describeBuiltInComponentFrame(name) : '';\n\n {\n if (typeof fn === 'function') {\n componentFrameCache.set(fn, syntheticFrame);\n }\n }\n\n return syntheticFrame;\n}\nfunction describeFunctionComponentFrame(fn, source, ownerFn) {\n {\n return describeNativeComponentFrame(fn, false);\n }\n}\n\nfunction shouldConstruct(Component) {\n var prototype = Component.prototype;\n return !!(prototype && prototype.isReactComponent);\n}\n\nfunction describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {\n\n if (type == null) {\n return '';\n }\n\n if (typeof type === 'function') {\n {\n return describeNativeComponentFrame(type, shouldConstruct(type));\n }\n }\n\n if (typeof type === 'string') {\n return describeBuiltInComponentFrame(type);\n }\n\n switch (type) {\n case REACT_SUSPENSE_TYPE:\n return describeBuiltInComponentFrame('Suspense');\n\n case REACT_SUSPENSE_LIST_TYPE:\n return describeBuiltInComponentFrame('SuspenseList');\n }\n\n if (typeof type === 'object') {\n switch (type.$$typeof) {\n case REACT_FORWARD_REF_TYPE:\n return describeFunctionComponentFrame(type.render);\n\n case REACT_MEMO_TYPE:\n // Memo may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);\n\n case REACT_LAZY_TYPE:\n {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n\n try {\n // Lazy may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);\n } catch (x) {}\n }\n }\n }\n\n return '';\n}\n\nvar loggedTypeFailures = {};\nvar ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement(element) {\n {\n if (element) {\n var owner = element._owner;\n var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n ReactDebugCurrentFrame$1.setExtraStackFrame(stack);\n } else {\n ReactDebugCurrentFrame$1.setExtraStackFrame(null);\n }\n }\n}\n\nfunction checkPropTypes(typeSpecs, values, location, componentName, element) {\n {\n // $FlowFixMe This is okay but Flow doesn't know it.\n var has = Function.call.bind(hasOwnProperty);\n\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error$1 = void 0; // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n // eslint-disable-next-line react-internal/prod-error-codes\n var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');\n err.name = 'Invariant Violation';\n throw err;\n }\n\n error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED');\n } catch (ex) {\n error$1 = ex;\n }\n\n if (error$1 && !(error$1 instanceof Error)) {\n setCurrentlyValidatingElement(element);\n\n error('%s: type specification of %s' + ' `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error$1);\n\n setCurrentlyValidatingElement(null);\n }\n\n if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error$1.message] = true;\n setCurrentlyValidatingElement(element);\n\n error('Failed %s type: %s', location, error$1.message);\n\n setCurrentlyValidatingElement(null);\n }\n }\n }\n }\n}\n\nfunction setCurrentlyValidatingElement$1(element) {\n {\n if (element) {\n var owner = element._owner;\n var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n setExtraStackFrame(stack);\n } else {\n setExtraStackFrame(null);\n }\n }\n}\n\nvar propTypesMisspellWarningShown;\n\n{\n propTypesMisspellWarningShown = false;\n}\n\nfunction getDeclarationErrorAddendum() {\n if (ReactCurrentOwner.current) {\n var name = getComponentNameFromType(ReactCurrentOwner.current.type);\n\n if (name) {\n return '\\n\\nCheck the render method of `' + name + '`.';\n }\n }\n\n return '';\n}\n\nfunction getSourceInfoErrorAddendum(source) {\n if (source !== undefined) {\n var fileName = source.fileName.replace(/^.*[\\\\\\/]/, '');\n var lineNumber = source.lineNumber;\n return '\\n\\nCheck your code at ' + fileName + ':' + lineNumber + '.';\n }\n\n return '';\n}\n\nfunction getSourceInfoErrorAddendumForProps(elementProps) {\n if (elementProps !== null && elementProps !== undefined) {\n return getSourceInfoErrorAddendum(elementProps.__source);\n }\n\n return '';\n}\n/**\n * Warn if there's no key explicitly set on dynamic arrays of children or\n * object keys are not valid. This allows us to keep track of children between\n * updates.\n */\n\n\nvar ownerHasKeyUseWarning = {};\n\nfunction getCurrentComponentErrorInfo(parentType) {\n var info = getDeclarationErrorAddendum();\n\n if (!info) {\n var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name;\n\n if (parentName) {\n info = \"\\n\\nCheck the top-level render call using <\" + parentName + \">.\";\n }\n }\n\n return info;\n}\n/**\n * Warn if the element doesn't have an explicit key assigned to it.\n * This element is in an array. The array could grow and shrink or be\n * reordered. All children that haven't already been validated are required to\n * have a \"key\" property assigned to it. Error statuses are cached so a warning\n * will only be shown once.\n *\n * @internal\n * @param {ReactElement} element Element that requires a key.\n * @param {*} parentType element's parent's type.\n */\n\n\nfunction validateExplicitKey(element, parentType) {\n if (!element._store || element._store.validated || element.key != null) {\n return;\n }\n\n element._store.validated = true;\n var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);\n\n if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {\n return;\n }\n\n ownerHasKeyUseWarning[currentComponentErrorInfo] = true; // Usually the current owner is the offender, but if it accepts children as a\n // property, it may be the creator of the child that's responsible for\n // assigning it a key.\n\n var childOwner = '';\n\n if (element && element._owner && element._owner !== ReactCurrentOwner.current) {\n // Give the component that originally created this child.\n childOwner = \" It was passed a child from \" + getComponentNameFromType(element._owner.type) + \".\";\n }\n\n {\n setCurrentlyValidatingElement$1(element);\n\n error('Each child in a list should have a unique \"key\" prop.' + '%s%s See https://reactjs.org/link/warning-keys for more information.', currentComponentErrorInfo, childOwner);\n\n setCurrentlyValidatingElement$1(null);\n }\n}\n/**\n * Ensure that every element either is passed in a static location, in an\n * array with an explicit keys property defined, or in an object literal\n * with valid key property.\n *\n * @internal\n * @param {ReactNode} node Statically passed child of any type.\n * @param {*} parentType node's parent's type.\n */\n\n\nfunction validateChildKeys(node, parentType) {\n if (typeof node !== 'object') {\n return;\n }\n\n if (isArray(node)) {\n for (var i = 0; i < node.length; i++) {\n var child = node[i];\n\n if (isValidElement(child)) {\n validateExplicitKey(child, parentType);\n }\n }\n } else if (isValidElement(node)) {\n // This element was passed in a valid location.\n if (node._store) {\n node._store.validated = true;\n }\n } else if (node) {\n var iteratorFn = getIteratorFn(node);\n\n if (typeof iteratorFn === 'function') {\n // Entry iterators used to provide implicit keys,\n // but now we print a separate warning for them later.\n if (iteratorFn !== node.entries) {\n var iterator = iteratorFn.call(node);\n var step;\n\n while (!(step = iterator.next()).done) {\n if (isValidElement(step.value)) {\n validateExplicitKey(step.value, parentType);\n }\n }\n }\n }\n }\n}\n/**\n * Given an element, validate that its props follow the propTypes definition,\n * provided by the type.\n *\n * @param {ReactElement} element\n */\n\n\nfunction validatePropTypes(element) {\n {\n var type = element.type;\n\n if (type === null || type === undefined || typeof type === 'string') {\n return;\n }\n\n var propTypes;\n\n if (typeof type === 'function') {\n propTypes = type.propTypes;\n } else if (typeof type === 'object' && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here.\n // Inner props are checked in the reconciler.\n type.$$typeof === REACT_MEMO_TYPE)) {\n propTypes = type.propTypes;\n } else {\n return;\n }\n\n if (propTypes) {\n // Intentionally inside to avoid triggering lazy initializers:\n var name = getComponentNameFromType(type);\n checkPropTypes(propTypes, element.props, 'prop', name, element);\n } else if (type.PropTypes !== undefined && !propTypesMisspellWarningShown) {\n propTypesMisspellWarningShown = true; // Intentionally inside to avoid triggering lazy initializers:\n\n var _name = getComponentNameFromType(type);\n\n error('Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', _name || 'Unknown');\n }\n\n if (typeof type.getDefaultProps === 'function' && !type.getDefaultProps.isReactClassApproved) {\n error('getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.');\n }\n }\n}\n/**\n * Given a fragment, validate that it can only be provided with fragment props\n * @param {ReactElement} fragment\n */\n\n\nfunction validateFragmentProps(fragment) {\n {\n var keys = Object.keys(fragment.props);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n\n if (key !== 'children' && key !== 'key') {\n setCurrentlyValidatingElement$1(fragment);\n\n error('Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.', key);\n\n setCurrentlyValidatingElement$1(null);\n break;\n }\n }\n\n if (fragment.ref !== null) {\n setCurrentlyValidatingElement$1(fragment);\n\n error('Invalid attribute `ref` supplied to `React.Fragment`.');\n\n setCurrentlyValidatingElement$1(null);\n }\n }\n}\nfunction createElementWithValidation(type, props, children) {\n var validType = isValidElementType(type); // We warn in this case but don't throw. We expect the element creation to\n // succeed and there will likely be errors in render.\n\n if (!validType) {\n var info = '';\n\n if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n info += ' You likely forgot to export your component from the file ' + \"it's defined in, or you might have mixed up default and named imports.\";\n }\n\n var sourceInfo = getSourceInfoErrorAddendumForProps(props);\n\n if (sourceInfo) {\n info += sourceInfo;\n } else {\n info += getDeclarationErrorAddendum();\n }\n\n var typeString;\n\n if (type === null) {\n typeString = 'null';\n } else if (isArray(type)) {\n typeString = 'array';\n } else if (type !== undefined && type.$$typeof === REACT_ELEMENT_TYPE) {\n typeString = \"<\" + (getComponentNameFromType(type.type) || 'Unknown') + \" />\";\n info = ' Did you accidentally export a JSX literal instead of a component?';\n } else {\n typeString = typeof type;\n }\n\n {\n error('React.createElement: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', typeString, info);\n }\n }\n\n var element = createElement.apply(this, arguments); // The result can be nullish if a mock or a custom function is used.\n // TODO: Drop this when these are no longer allowed as the type argument.\n\n if (element == null) {\n return element;\n } // Skip key warning if the type isn't valid since our key validation logic\n // doesn't expect a non-string/function type and can throw confusing errors.\n // We don't want exception behavior to differ between dev and prod.\n // (Rendering will throw with a helpful message and as soon as the type is\n // fixed, the key warnings will appear.)\n\n\n if (validType) {\n for (var i = 2; i < arguments.length; i++) {\n validateChildKeys(arguments[i], type);\n }\n }\n\n if (type === REACT_FRAGMENT_TYPE) {\n validateFragmentProps(element);\n } else {\n validatePropTypes(element);\n }\n\n return element;\n}\nvar didWarnAboutDeprecatedCreateFactory = false;\nfunction createFactoryWithValidation(type) {\n var validatedFactory = createElementWithValidation.bind(null, type);\n validatedFactory.type = type;\n\n {\n if (!didWarnAboutDeprecatedCreateFactory) {\n didWarnAboutDeprecatedCreateFactory = true;\n\n warn('React.createFactory() is deprecated and will be removed in ' + 'a future major release. Consider using JSX ' + 'or use React.createElement() directly instead.');\n } // Legacy hook: remove it\n\n\n Object.defineProperty(validatedFactory, 'type', {\n enumerable: false,\n get: function () {\n warn('Factory.type is deprecated. Access the class directly ' + 'before passing it to createFactory.');\n\n Object.defineProperty(this, 'type', {\n value: type\n });\n return type;\n }\n });\n }\n\n return validatedFactory;\n}\nfunction cloneElementWithValidation(element, props, children) {\n var newElement = cloneElement.apply(this, arguments);\n\n for (var i = 2; i < arguments.length; i++) {\n validateChildKeys(arguments[i], newElement.type);\n }\n\n validatePropTypes(newElement);\n return newElement;\n}\n\nfunction startTransition(scope, options) {\n var prevTransition = ReactCurrentBatchConfig.transition;\n ReactCurrentBatchConfig.transition = {};\n var currentTransition = ReactCurrentBatchConfig.transition;\n\n {\n ReactCurrentBatchConfig.transition._updatedFibers = new Set();\n }\n\n try {\n scope();\n } finally {\n ReactCurrentBatchConfig.transition = prevTransition;\n\n {\n if (prevTransition === null && currentTransition._updatedFibers) {\n var updatedFibersCount = currentTransition._updatedFibers.size;\n\n if (updatedFibersCount > 10) {\n warn('Detected a large number of updates inside startTransition. ' + 'If this is due to a subscription please re-write it to use React provided hooks. ' + 'Otherwise concurrent mode guarantees are off the table.');\n }\n\n currentTransition._updatedFibers.clear();\n }\n }\n }\n}\n\nvar didWarnAboutMessageChannel = false;\nvar enqueueTaskImpl = null;\nfunction enqueueTask(task) {\n if (enqueueTaskImpl === null) {\n try {\n // read require off the module object to get around the bundlers.\n // we don't want them to detect a require and bundle a Node polyfill.\n var requireString = ('require' + Math.random()).slice(0, 7);\n var nodeRequire = module && module[requireString]; // assuming we're in node, let's try to get node's\n // version of setImmediate, bypassing fake timers if any.\n\n enqueueTaskImpl = nodeRequire.call(module, 'timers').setImmediate;\n } catch (_err) {\n // we're in a browser\n // we can't use regular timers because they may still be faked\n // so we try MessageChannel+postMessage instead\n enqueueTaskImpl = function (callback) {\n {\n if (didWarnAboutMessageChannel === false) {\n didWarnAboutMessageChannel = true;\n\n if (typeof MessageChannel === 'undefined') {\n error('This browser does not have a MessageChannel implementation, ' + 'so enqueuing tasks via await act(async () => ...) will fail. ' + 'Please file an issue at https://github.com/facebook/react/issues ' + 'if you encounter this warning.');\n }\n }\n }\n\n var channel = new MessageChannel();\n channel.port1.onmessage = callback;\n channel.port2.postMessage(undefined);\n };\n }\n }\n\n return enqueueTaskImpl(task);\n}\n\nvar actScopeDepth = 0;\nvar didWarnNoAwaitAct = false;\nfunction act(callback) {\n {\n // `act` calls can be nested, so we track the depth. This represents the\n // number of `act` scopes on the stack.\n var prevActScopeDepth = actScopeDepth;\n actScopeDepth++;\n\n if (ReactCurrentActQueue.current === null) {\n // This is the outermost `act` scope. Initialize the queue. The reconciler\n // will detect the queue and use it instead of Scheduler.\n ReactCurrentActQueue.current = [];\n }\n\n var prevIsBatchingLegacy = ReactCurrentActQueue.isBatchingLegacy;\n var result;\n\n try {\n // Used to reproduce behavior of `batchedUpdates` in legacy mode. Only\n // set to `true` while the given callback is executed, not for updates\n // triggered during an async event, because this is how the legacy\n // implementation of `act` behaved.\n ReactCurrentActQueue.isBatchingLegacy = true;\n result = callback(); // Replicate behavior of original `act` implementation in legacy mode,\n // which flushed updates immediately after the scope function exits, even\n // if it's an async function.\n\n if (!prevIsBatchingLegacy && ReactCurrentActQueue.didScheduleLegacyUpdate) {\n var queue = ReactCurrentActQueue.current;\n\n if (queue !== null) {\n ReactCurrentActQueue.didScheduleLegacyUpdate = false;\n flushActQueue(queue);\n }\n }\n } catch (error) {\n popActScope(prevActScopeDepth);\n throw error;\n } finally {\n ReactCurrentActQueue.isBatchingLegacy = prevIsBatchingLegacy;\n }\n\n if (result !== null && typeof result === 'object' && typeof result.then === 'function') {\n var thenableResult = result; // The callback is an async function (i.e. returned a promise). Wait\n // for it to resolve before exiting the current scope.\n\n var wasAwaited = false;\n var thenable = {\n then: function (resolve, reject) {\n wasAwaited = true;\n thenableResult.then(function (returnValue) {\n popActScope(prevActScopeDepth);\n\n if (actScopeDepth === 0) {\n // We've exited the outermost act scope. Recursively flush the\n // queue until there's no remaining work.\n recursivelyFlushAsyncActWork(returnValue, resolve, reject);\n } else {\n resolve(returnValue);\n }\n }, function (error) {\n // The callback threw an error.\n popActScope(prevActScopeDepth);\n reject(error);\n });\n }\n };\n\n {\n if (!didWarnNoAwaitAct && typeof Promise !== 'undefined') {\n // eslint-disable-next-line no-undef\n Promise.resolve().then(function () {}).then(function () {\n if (!wasAwaited) {\n didWarnNoAwaitAct = true;\n\n error('You called act(async () => ...) without await. ' + 'This could lead to unexpected testing behaviour, ' + 'interleaving multiple act calls and mixing their ' + 'scopes. ' + 'You should - await act(async () => ...);');\n }\n });\n }\n }\n\n return thenable;\n } else {\n var returnValue = result; // The callback is not an async function. Exit the current scope\n // immediately, without awaiting.\n\n popActScope(prevActScopeDepth);\n\n if (actScopeDepth === 0) {\n // Exiting the outermost act scope. Flush the queue.\n var _queue = ReactCurrentActQueue.current;\n\n if (_queue !== null) {\n flushActQueue(_queue);\n ReactCurrentActQueue.current = null;\n } // Return a thenable. If the user awaits it, we'll flush again in\n // case additional work was scheduled by a microtask.\n\n\n var _thenable = {\n then: function (resolve, reject) {\n // Confirm we haven't re-entered another `act` scope, in case\n // the user does something weird like await the thenable\n // multiple times.\n if (ReactCurrentActQueue.current === null) {\n // Recursively flush the queue until there's no remaining work.\n ReactCurrentActQueue.current = [];\n recursivelyFlushAsyncActWork(returnValue, resolve, reject);\n } else {\n resolve(returnValue);\n }\n }\n };\n return _thenable;\n } else {\n // Since we're inside a nested `act` scope, the returned thenable\n // immediately resolves. The outer scope will flush the queue.\n var _thenable2 = {\n then: function (resolve, reject) {\n resolve(returnValue);\n }\n };\n return _thenable2;\n }\n }\n }\n}\n\nfunction popActScope(prevActScopeDepth) {\n {\n if (prevActScopeDepth !== actScopeDepth - 1) {\n error('You seem to have overlapping act() calls, this is not supported. ' + 'Be sure to await previous act() calls before making a new one. ');\n }\n\n actScopeDepth = prevActScopeDepth;\n }\n}\n\nfunction recursivelyFlushAsyncActWork(returnValue, resolve, reject) {\n {\n var queue = ReactCurrentActQueue.current;\n\n if (queue !== null) {\n try {\n flushActQueue(queue);\n enqueueTask(function () {\n if (queue.length === 0) {\n // No additional work was scheduled. Finish.\n ReactCurrentActQueue.current = null;\n resolve(returnValue);\n } else {\n // Keep flushing work until there's none left.\n recursivelyFlushAsyncActWork(returnValue, resolve, reject);\n }\n });\n } catch (error) {\n reject(error);\n }\n } else {\n resolve(returnValue);\n }\n }\n}\n\nvar isFlushing = false;\n\nfunction flushActQueue(queue) {\n {\n if (!isFlushing) {\n // Prevent re-entrance.\n isFlushing = true;\n var i = 0;\n\n try {\n for (; i < queue.length; i++) {\n var callback = queue[i];\n\n do {\n callback = callback(true);\n } while (callback !== null);\n }\n\n queue.length = 0;\n } catch (error) {\n // If something throws, leave the remaining callbacks on the queue.\n queue = queue.slice(i + 1);\n throw error;\n } finally {\n isFlushing = false;\n }\n }\n }\n}\n\nvar createElement$1 = createElementWithValidation ;\nvar cloneElement$1 = cloneElementWithValidation ;\nvar createFactory = createFactoryWithValidation ;\nvar Children = {\n map: mapChildren,\n forEach: forEachChildren,\n count: countChildren,\n toArray: toArray,\n only: onlyChild\n};\n\nexports.Children = Children;\nexports.Component = Component;\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.Profiler = REACT_PROFILER_TYPE;\nexports.PureComponent = PureComponent;\nexports.StrictMode = REACT_STRICT_MODE_TYPE;\nexports.Suspense = REACT_SUSPENSE_TYPE;\nexports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = ReactSharedInternals;\nexports.act = act;\nexports.cloneElement = cloneElement$1;\nexports.createContext = createContext;\nexports.createElement = createElement$1;\nexports.createFactory = createFactory;\nexports.createRef = createRef;\nexports.forwardRef = forwardRef;\nexports.isValidElement = isValidElement;\nexports.lazy = lazy;\nexports.memo = memo;\nexports.startTransition = startTransition;\nexports.unstable_act = act;\nexports.useCallback = useCallback;\nexports.useContext = useContext;\nexports.useDebugValue = useDebugValue;\nexports.useDeferredValue = useDeferredValue;\nexports.useEffect = useEffect;\nexports.useId = useId;\nexports.useImperativeHandle = useImperativeHandle;\nexports.useInsertionEffect = useInsertionEffect;\nexports.useLayoutEffect = useLayoutEffect;\nexports.useMemo = useMemo;\nexports.useReducer = useReducer;\nexports.useRef = useRef;\nexports.useState = useState;\nexports.useSyncExternalStore = useSyncExternalStore;\nexports.useTransition = useTransition;\nexports.version = ReactVersion;\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop ===\n 'function'\n) {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error());\n}\n \n })();\n}\n", "'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n", "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 BotHandlers,\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} from './plugin'\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\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 blocSchema = z.union([\n z.object({ type: z.literal('text'), payload: textMessageSchema }),\n z.object({ type: z.literal('markdown'), payload: markdownMessageSchema }),\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 blocsSchema = z.object({\n items: z.array(blocSchema),\n})\n\n/**\n * @deprecated use `text` instead\n */\nexport const markdown = { schema: markdownMessageSchema }\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: blocsSchema },\n} as const // should use satisfies operator but this works for older versions of TS\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()\nconst fromJsonSchema = ZodType.fromJsonSchema\nconst fromObject = ZodType.fromObject\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 fromJsonSchema,\n fromObject,\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 { useMemo, useEffect } from 'react'\nimport { JSONSchema, ObjectSchema, Path } from '../types'\nimport { useFormData } from './useFormData'\nimport { zuiKey } from '../constants'\n\nexport const useDiscriminator = (fieldSchema: JSONSchema, path: Path) => {\n const { handlePropertyChange, data } = useFormData(fieldSchema, path)\n\n const { discriminator, value, discriminatedSchema } = useMemo(() => {\n const discriminator = resolveDiscriminator(fieldSchema.anyOf)\n const value = discriminator?.key ? data?.[discriminator.key] : fieldSchema.default || null\n const discriminatedSchema = resolveDiscriminatedSchema(discriminator?.key || null, value, fieldSchema.anyOf)\n return {\n discriminator,\n value,\n discriminatedSchema,\n }\n }, [fieldSchema.anyOf, data])\n\n useEffect(() => {\n if (\n discriminator?.key &&\n discriminator?.values.length &&\n Object.keys(data || {}).length < 1 &&\n !fieldSchema.default\n ) {\n handlePropertyChange(path, { [discriminator.key]: discriminator.values[0] })\n }\n }, [])\n\n return { discriminator, discriminatorValue: value, discriminatedSchema }\n}\n\nexport const resolveDiscriminator = (anyOf: ObjectSchema['anyOf']) => {\n const output = anyOf\n ?.map((schema) => {\n if (schema.type !== 'object') {\n return null\n }\n if (!schema.properties) {\n return null\n }\n return Object.entries(schema.properties)\n .map(([key, def]) => {\n if (def.type === 'string' && def.enum?.length) {\n return { key, value: def.enum[0] }\n }\n return null\n })\n .filter((v): v is { key: string; value: string } => !!v)\n })\n .flat()\n .reduce(\n (acc, data) => {\n if (!data) {\n return acc\n }\n const { key, value } = data\n if (acc.key === null) {\n acc.key = key\n }\n if (acc.key === key) {\n acc.values.push(value)\n }\n\n return acc\n },\n { key: null as string | null, values: [] as string[] },\n )\n\n if (output?.key === null || !output?.values.length) {\n return null\n }\n return output\n}\n\nexport const resolveDiscriminatedSchema = (key: string | null, value: string | null, anyOf: ObjectSchema['anyOf']) => {\n if (!anyOf?.length || !key || !value) {\n return null\n }\n for (const schema of anyOf) {\n if (schema.type !== 'object') {\n continue\n }\n const discriminator = schema.properties?.[key]\n if (discriminator?.type === 'string' && discriminator.enum?.length && discriminator.enum[0] === value) {\n return {\n ...schema,\n properties: {\n ...schema.properties,\n [key]: { ...discriminator, [zuiKey]: { hidden: true } },\n },\n } as ObjectSchema\n }\n }\n return null\n}\n", "import React, { PropsWithChildren, createContext, useCallback, useContext, useEffect, useMemo, useState } from 'react'\nimport { ArraySchema, FormError, FormValidation, JSONSchema, Path } from '../types'\nimport { jsonSchemaToZui } from '../../transforms/json-schema-to-zui'\nimport { zuiKey } from '../constants'\nimport { Maskable } from '../../z'\nimport { pathMatches } from '../utils'\n\nexport type FormDataContextProps = {\n /**\n * The current form data\n * */\n formData: any\n formSchema: JSONSchema | any\n /**\n * Function to update the form data, takes a callback that receives the form data with the new values\n * */\n setFormData: (callback: (formData: any) => void) => void\n\n /**\n * hiddenState is an object that contains the hidden state of the form fields\n */\n hiddenState: object\n /**\n * Function to update the hidden state, takes a callback that receives the hidden state with the new values\n * */\n setHiddenState: (callback: (hiddenState: any) => void) => void\n /**\n * disabledState is an object that contains the disabled state of the form fields\n */\n disabledState: object\n /**\n * Function to update the disabled state, takes a callback that receives the disabled state with the new values\n * */\n setDisabledState: (callback: (disabledState: any) => void) => void\n\n /**\n * Validation state of the form\n */\n validation: FormValidation\n\n disableValidation?: boolean\n\n /**\n * Function to transform the form data before validation and computation of hidden/disabled states\n * useful for cases where the underlying form data does not match the schema\n */\n dataTransform?: (formData: any) => any\n\n onValidation?: (validation: FormValidation) => void\n}\n\nexport type FormDataProviderProps = Omit<\n FormDataContextProps,\n 'setHiddenState' | 'setDisabledState' | 'hiddenState' | 'disabledState' | 'validation'\n>\n\nexport const FormDataContext = createContext<FormDataContextProps>({\n formData: undefined,\n formSchema: undefined,\n setFormData: () => {\n throw new Error('Must be within a FormDataProvider')\n },\n setHiddenState: () => {\n throw new Error('Must be within a FormDataProvider')\n },\n setDisabledState: () => {\n throw new Error('Must be within a FormDataProvider')\n },\n hiddenState: {},\n disabledState: {},\n validation: { formValid: null, formErrors: null },\n})\n\nconst parseMaskableField = (key: 'hidden' | 'disabled', fieldSchema: JSONSchema, data: any): Maskable => {\n const value = fieldSchema[zuiKey]?.[key]\n if (typeof value === 'undefined') {\n return false\n }\n\n if (typeof value === 'boolean') {\n return value\n }\n\n if (typeof value === 'string') {\n if (typeof window === 'undefined') {\n console.warn('Function evaluation is not supported in server side rendering')\n return false\n }\n const func = new Function('return ' + value)()\n const result = func(data)\n\n switch (typeof result) {\n case 'object':\n case 'boolean':\n return result\n default:\n return false\n }\n }\n return false\n}\n\nexport const useFormData = (fieldSchema: JSONSchema, path: Path) => {\n const formContext = useContext(FormDataContext)\n if (formContext === undefined) {\n throw new Error('useFormData must be used within a FormDataProvider')\n }\n\n const data = useMemo(() => getPathData(formContext.formData, path), [formContext.formData, path])\n\n const validation: FormValidation = useMemo(() => {\n if (formContext.validation.formValid === null) {\n return { formValid: null, formErrors: null }\n }\n if (formContext.validation.formValid === false) {\n return {\n formValid: false,\n formErrors:\n formContext.validation.formErrors\n ?.filter((issue) => pathMatches(issue.path, path))\n .map<FormError>((issue) => ({\n message: issue.message,\n code: issue.code,\n path: path,\n })) || null,\n }\n }\n return { formValid: true, formErrors: [] }\n }, [formContext.validation.formValid, formContext.validation.formErrors, path])\n\n const transformedData = formContext.dataTransform ? formContext.dataTransform(data) : data\n\n const hiddenMask = useMemo(\n () => parseMaskableField('hidden', fieldSchema, transformedData),\n [fieldSchema, transformedData],\n )\n const disabledMask = useMemo(\n () => parseMaskableField('disabled', fieldSchema, transformedData),\n [fieldSchema, transformedData],\n )\n\n useEffect(() => {\n formContext.setHiddenState((hiddenState) => setObjectPath(hiddenState, path, hiddenMask || {}))\n formContext.setDisabledState((disabledState) => setObjectPath(disabledState, path, disabledMask || {}))\n }, [JSON.stringify({ fieldSchema, data })])\n\n const { disabled, hidden } = useMemo(() => {\n const hidden = hiddenMask === true || getPathData(formContext.hiddenState, path)\n const disabled = disabledMask === true || getPathData(formContext.disabledState, path)\n return { hidden: hidden === true, disabled: disabled === true }\n }, [formContext.hiddenState, formContext.disabledState, hiddenMask, disabledMask, path])\n\n const handlePropertyChange = useCallback(\n (path: Path, data: any) => {\n formContext.setFormData((formData) => setObjectPath(formData, path, data))\n },\n [formContext.setFormData],\n )\n const addArrayItem = useCallback(\n (path: Path, data: any = undefined) => {\n const defaultData = getDefaultValues((fieldSchema as ArraySchema).items)\n\n formContext.setFormData((formData) => {\n const currentData = getPathData(formData, path) || []\n if (data === undefined) {\n data = defaultData\n }\n return setObjectPath(formData, path, Array.isArray(currentData) ? [...currentData, data] : [data])\n })\n },\n [formContext.setFormData],\n )\n\n const removeArrayItem = useCallback(\n (path: Path, index: number) => {\n formContext.setFormData((formData) => {\n const currentData = getPathData(formData, path) || []\n\n if (!Array.isArray(currentData)) {\n return formData\n }\n\n currentData.splice(index, 1)\n return setObjectPath(formData, path, currentData)\n })\n },\n [formContext.setFormData],\n )\n\n return { ...formContext, data, disabled, hidden, handlePropertyChange, addArrayItem, removeArrayItem, ...validation }\n}\n\nexport function setObjectPath(obj: any, path: Path, data: any): any {\n if (path.length === 0) {\n return data\n }\n\n const pathLength = path.length\n\n path.reduce((current: any, key: string | number, index: number) => {\n if (index === pathLength - 1) {\n current[key] = data\n } else {\n if (!current[key]) {\n current[key] = isNaN(Number(key)) ? {} : []\n }\n }\n return current[key]\n }, obj ?? {})\n return { ...obj }\n}\n\nexport const getDefaultValues = (schema: JSONSchema | JSONSchema[], optional?: boolean): any => {\n if (Array.isArray(schema)) {\n return getDefaultValues(schema[0]!)\n }\n\n if (schema.default) {\n return schema.default\n }\n\n if (schema.nullable) {\n return null\n }\n\n if (optional) {\n return undefined\n }\n\n if (schema.anyOf?.length) {\n return getDefaultValues(schema.anyOf[0]!)\n }\n\n if (schema.type === 'object') {\n if (schema.properties) {\n const data: Record<string, any> = {}\n Object.entries(schema.properties).map(([key, fieldSchema]) => {\n data[key] = getDefaultValues(fieldSchema, !schema.required?.includes(key) || isOptional(fieldSchema) || false)\n })\n return data\n }\n }\n\n if (schema.type === 'array') {\n if (schema.minItems && schema.minItems > 0) {\n return [getDefaultValues(schema.items)]\n }\n\n return []\n }\n\n if (schema.type === 'string') {\n if (schema.enum?.length) {\n return schema.enum[0]\n }\n return ''\n }\n\n if (schema.type === 'number') {\n if (schema.enum?.length) {\n return schema.enum[0]\n }\n return 0\n }\n\n if (schema.type === 'boolean') {\n if (schema.enum?.length) {\n return schema.enum[0]\n }\n return false\n }\n\n return undefined\n}\n\nexport const FormDataProvider: React.FC<PropsWithChildren<FormDataProviderProps>> = ({\n children,\n setFormData,\n formData,\n formSchema,\n disableValidation,\n onValidation,\n dataTransform,\n}) => {\n const [hiddenState, setHiddenState] = useState({})\n const [disabledState, setDisabledState] = useState({})\n\n const transformedData = dataTransform ? dataTransform(formData) : formData\n\n const validation: FormValidation = useMemo(() => {\n if (disableValidation) {\n return { formValid: null, formErrors: null }\n }\n\n if (!formSchema) {\n return { formValid: null, formErrors: null }\n }\n\n const validation = jsonSchemaToZui(formSchema).safeParse(transformedData)\n\n if (!validation.success) {\n return {\n formValid: false,\n formErrors: validation.error.issues,\n }\n }\n return {\n formValid: true,\n formErrors: [],\n }\n }, [JSON.stringify({ transformedData })])\n\n useEffect(() => {\n if (onValidation) {\n onValidation(validation)\n }\n }, [validation])\n\n return (\n <FormDataContext.Provider\n value={{\n formData,\n setFormData,\n formSchema,\n validation,\n hiddenState,\n setHiddenState,\n disabledState,\n setDisabledState,\n dataTransform,\n }}\n >\n {children}\n </FormDataContext.Provider>\n )\n}\n\nexport function getPathData(object: any, path: Path): any {\n return path.reduce((prev, curr) => {\n return prev ? prev[curr] : null\n }, object)\n}\n\nexport function isOptional(schema: JSONSchema): boolean {\n return schema.anyOf?.some((s) => s.not && Object.keys(s.not).length === 0) || false\n}\n\ntype AnyObject = { [key: string]: any }\n\nexport function deepMerge(target: AnyObject, source: AnyObject): AnyObject {\n const output = { ...target }\n\n for (const key in source) {\n if (source.hasOwnProperty(key)) {\n if (typeof source[key] === 'object' && source[key] !== null && !Array.isArray(source[key])) {\n if (typeof output[key] === 'object' && output[key] !== null && !Array.isArray(output[key])) {\n output[key] = deepMerge(output[key], source[key])\n } else {\n output[key] = deepMerge({}, source[key])\n }\n } else {\n output[key] = source[key]\n }\n }\n }\n\n return output\n}\n", "import { zuiKey } from './constants'\nimport { resolveDiscriminator } from './hooks/useDiscriminator'\nimport { BaseType, JSONSchema, Path, ZuiComponentMap, ZuiReactComponent } from './types'\n\ntype ComponentMeta<Type extends BaseType = BaseType> = {\n type: Type\n Component: ZuiReactComponent<Type, 'default', any>\n id: string\n params: any\n}\n\nexport const getSchemaType = (schema: JSONSchema): BaseType => {\n if (schema.anyOf?.length) {\n const discriminator = resolveDiscriminator(schema.anyOf)\n return discriminator ? 'discriminatedUnion' : 'object'\n }\n if (schema.type === 'integer') {\n return 'number'\n }\n\n return schema.type\n}\n\nexport const resolveComponent = <Type extends BaseType>(\n components: ZuiComponentMap<any> | undefined,\n fieldSchema: JSONSchema,\n): ComponentMeta<Type> | null => {\n const type = getSchemaType(fieldSchema)\n const uiDefinition = fieldSchema[zuiKey]?.displayAs || null\n\n if (!uiDefinition || !Array.isArray(uiDefinition) || uiDefinition.length < 2) {\n const defaultComponent = components?.[type]?.default\n\n if (!defaultComponent) {\n return null\n }\n\n return {\n Component: defaultComponent as ZuiReactComponent<Type, 'default', any>,\n type: type as Type,\n id: 'default',\n params: {},\n }\n }\n\n const componentID: string = uiDefinition[0]\n\n const Component = components?.[type]?.[componentID] || null\n\n if (!Component) {\n console.warn(`Component ${type}.${componentID} not found`)\n return null\n }\n\n const params = uiDefinition[1] || {}\n\n return {\n Component: Component as ZuiReactComponent<Type, 'default', any>,\n type: type as Type,\n id: componentID,\n params,\n }\n}\n\nexport function pathMatches(path1: Path, path2: Path): boolean {\n if (path1.length !== path2.length) return false\n return path1.every((part, index) => part === path2[index])\n}\n\nexport function formatTitle(title: string, separator?: RegExp): string {\n if (!separator) separator = new RegExp('/s|-|_| ', 'g')\n return decamelize(title).split(separator).map(capitalize).map(handleSpecialWords).reduce(combine)\n}\n\nfunction capitalize(word: string): string {\n return word.charAt(0).toUpperCase() + word.substring(1)\n}\n\nfunction combine(acc: string, text: string): string {\n return `${acc} ${text}`\n}\n\nfunction decamelize(text: string): string {\n return text\n .replace(/([a-z\\d])([A-Z])/g, '$1_$2')\n .replace(/([A-Z]+)([A-Z][a-z\\d]+)/g, '$1_$2')\n .toLowerCase()\n}\n\nfunction handleSpecialWords(text: string, index: number, words: string[]): string {\n const lowercaseStr = text.toLowerCase()\n const uppercaseStr = text.toUpperCase()\n for (const special of specialCase) {\n if (special.toLowerCase() === lowercaseStr) return special\n }\n if (acronyms.includes(uppercaseStr)) return uppercaseStr\n // If the word is the first word in the sentence, but it's not a specially\n // cased word or an acronym, return the capitalized string\n if (index === 0) return text\n // If the word is the last word in the sentence, but it's not a specially\n // cased word or an acronym, return the capitalized string\n if (index === words.length - 1) return text\n // Return the word capitalized if it's 4 characters or more\n if (text.length >= 4) return text\n if (prepositions.includes(lowercaseStr)) return lowercaseStr\n if (conjunctions.includes(lowercaseStr)) return lowercaseStr\n if (articles.includes(lowercaseStr)) return lowercaseStr\n return text\n}\n\nexport const words = (string: string): string[] => {\n const hasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/\n const unicodeWords = /[A-Z]?[a-z]+|[A-Z]+(?=[A-Z][a-z]|\\d|\\W)|[0-9]+/g\n const asciiWords = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g\n\n return hasUnicodeWord.test(string) ? string.match(unicodeWords) || [] : string.match(asciiWords) || []\n}\n\nconst deburredLetters: { [key: string]: string } = {\n // Latin-1 Supplement block\n '\\xc0': 'A',\n '\\xc1': 'A',\n '\\xc2': 'A',\n '\\xc3': 'A',\n '\\xc4': 'A',\n '\\xc5': 'A',\n '\\xe0': 'a',\n '\\xe1': 'a',\n '\\xe2': 'a',\n '\\xe3': 'a',\n '\\xe4': 'a',\n '\\xe5': 'a',\n '\\xc7': 'C',\n '\\xe7': 'c',\n '\\xd0': 'D',\n '\\xf0': 'd',\n '\\xc8': 'E',\n '\\xc9': 'E',\n '\\xca': 'E',\n '\\xcb': 'E',\n '\\xe8': 'e',\n '\\xe9': 'e',\n '\\xea': 'e',\n '\\xeb': 'e',\n '\\xcc': 'I',\n '\\xcd': 'I',\n '\\xce': 'I',\n '\\xcf': 'I',\n '\\xec': 'i',\n '\\xed': 'i',\n '\\xee': 'i',\n '\\xef': 'i',\n '\\xd1': 'N',\n '\\xf1': 'n',\n '\\xd2': 'O',\n '\\xd3': 'O',\n '\\xd4': 'O',\n '\\xd5': 'O',\n '\\xd6': 'O',\n '\\xd8': 'O',\n '\\xf2': 'o',\n '\\xf3': 'o',\n '\\xf4': 'o',\n '\\xf5': 'o',\n '\\xf6': 'o',\n '\\xf8': 'o',\n '\\xd9': 'U',\n '\\xda': 'U',\n '\\xdb': 'U',\n '\\xdc': 'U',\n '\\xf9': 'u',\n '\\xfa': 'u',\n '\\xfb': 'u',\n '\\xfc': 'u',\n '\\xdd': 'Y',\n '\\xfd': 'y',\n '\\xff': 'y',\n '\\xc6': 'Ae',\n '\\xe6': 'ae',\n '\\xde': 'Th',\n '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block\n '\\u0100': 'A',\n '\\u0102': 'A',\n '\\u0104': 'A',\n '\\u0101': 'a',\n '\\u0103': 'a',\n '\\u0105': 'a',\n '\\u0106': 'C',\n '\\u0108': 'C',\n '\\u010a': 'C',\n '\\u010c': 'C',\n '\\u0107': 'c',\n '\\u0109': 'c',\n '\\u010b': 'c',\n '\\u010d': 'c',\n '\\u010e': 'D',\n '\\u0110': 'D',\n '\\u010f': 'd',\n '\\u0111': 'd',\n '\\u0112': 'E',\n '\\u0114': 'E',\n '\\u0116': 'E',\n '\\u0118': 'E',\n '\\u011a': 'E',\n '\\u0113': 'e',\n '\\u0115': 'e',\n '\\u0117': 'e',\n '\\u0119': 'e',\n '\\u011b': 'e',\n '\\u011c': 'G',\n '\\u011e': 'G',\n '\\u0120': 'G',\n '\\u0122': 'G',\n '\\u011d': 'g',\n '\\u011f': 'g',\n '\\u0121': 'g',\n '\\u0123': 'g',\n '\\u0124': 'H',\n '\\u0126': 'H',\n '\\u0125': 'h',\n '\\u0127': 'h',\n '\\u0128': 'I',\n '\\u012a': 'I',\n '\\u012c': 'I',\n '\\u012e': 'I',\n '\\u0130': 'I',\n '\\u0129': 'i',\n '\\u012b': 'i',\n '\\u012d': 'i',\n '\\u012f': 'i',\n '\\u0131': 'i',\n '\\u0134': 'J',\n '\\u0135': 'j',\n '\\u0136': 'K',\n '\\u0137': 'k',\n '\\u0138': 'k',\n '\\u0139': 'L',\n '\\u013b': 'L',\n '\\u013d': 'L',\n '\\u013f': 'L',\n '\\u0141': 'L',\n '\\u013a': 'l',\n '\\u013c': 'l',\n '\\u013e': 'l',\n '\\u0140': 'l',\n '\\u0142': 'l',\n '\\u0143': 'N',\n '\\u0145': 'N',\n '\\u0147': 'N',\n '\\u014a': 'N',\n '\\u0144': 'n',\n '\\u0146': 'n',\n '\\u0148': 'n',\n '\\u014b': 'n',\n '\\u014c': 'O',\n '\\u014e': 'O',\n '\\u0150': 'O',\n '\\u014d': 'o',\n '\\u014f': 'o',\n '\\u0151': 'o',\n '\\u0154': 'R',\n '\\u0156': 'R',\n '\\u0158': 'R',\n '\\u0155': 'r',\n '\\u0157': 'r',\n '\\u0159': 'r',\n '\\u015a': 'S',\n '\\u015c': 'S',\n '\\u015e': 'S',\n '\\u0160': 'S',\n '\\u015b': 's',\n '\\u015d': 's',\n '\\u015f': 's',\n '\\u0161': 's',\n '\\u0162': 'T',\n '\\u0164': 'T',\n '\\u0166': 'T',\n '\\u0163': 't',\n '\\u0165': 't',\n '\\u0167': 't',\n '\\u0168': 'U',\n '\\u016a': 'U',\n '\\u016c': 'U',\n '\\u016e': 'U',\n '\\u0170': 'U',\n '\\u0172': 'U',\n '\\u0169': 'u',\n '\\u016b': 'u',\n '\\u016d': 'u',\n '\\u016f': 'u',\n '\\u0171': 'u',\n '\\u0173': 'u',\n '\\u0174': 'W',\n '\\u0175': 'w',\n '\\u0176': 'Y',\n '\\u0177': 'y',\n '\\u0178': 'Y',\n '\\u0179': 'Z',\n '\\u017b': 'Z',\n '\\u017d': 'Z',\n '\\u017a': 'z',\n '\\u017c': 'z',\n '\\u017e': 'z',\n '\\u0132': 'IJ',\n '\\u0133': 'ij',\n '\\u0152': 'Oe',\n '\\u0153': 'oe',\n '\\u0149': \"'n\",\n '\\u017f': 's',\n}\n\nexport const deburr = (string: string): string => {\n return string.replace(/[^\\u0000-\\u007E]/g, (char) => deburredLetters[char] || char)\n}\n\nexport const camelCase = (string: string): string => {\n return words(deburr(string.replace(/['\\u2019]/g, ''))).reduce((result: string, word: string, index: number) => {\n word = word.toLowerCase()\n return result + (index ? capitalize(word) : word)\n }, '')\n}\n\nconst acronyms = [\n '2D',\n '3D',\n '4WD',\n 'A2O',\n 'API',\n 'BIOS',\n 'CCTV',\n 'CC',\n 'CCV',\n 'CD',\n 'CD-ROM',\n 'COBOL',\n 'CIA',\n 'CMS',\n 'CSS',\n 'CSV',\n 'CV',\n 'DIY',\n 'DVD',\n 'DB',\n 'DNA',\n 'E3',\n 'EIN',\n 'ESPN',\n 'FAQ',\n 'FAQs',\n 'FTP',\n 'FPS',\n 'FORTRAN',\n 'FBI',\n 'HTML',\n 'HTTP',\n 'ID',\n 'IP',\n 'ISO',\n 'JS',\n 'JSON',\n 'LASER',\n 'M2A',\n 'M2M',\n 'M2MM',\n 'M2O',\n 'MMORPG',\n 'NAFTA',\n 'NASA',\n 'NDA',\n 'O2M',\n 'PDF',\n 'PHP',\n 'POP',\n 'RAM',\n 'RNGR',\n 'ROM',\n 'RPG',\n 'RTFM',\n 'RTS',\n 'SCUBA',\n 'SITCOM',\n 'SKU',\n 'SMTP',\n 'SQL',\n 'SSN',\n 'SWAT',\n 'TBS',\n 'TTL',\n 'TV',\n 'TNA',\n 'UI',\n 'URL',\n 'USB',\n 'UWP',\n 'VIP',\n 'W3C',\n 'WYSIWYG',\n 'WWW',\n 'WWE',\n 'WWF',\n]\n\nconst articles = ['a', 'an', 'the']\n\nconst conjunctions = [\n 'and',\n 'that',\n 'but',\n 'or',\n 'as',\n 'if',\n 'when',\n 'than',\n 'because',\n 'while',\n 'where',\n 'after',\n 'so',\n 'though',\n 'since',\n 'until',\n 'whether',\n 'before',\n 'although',\n 'nor',\n 'like',\n 'once',\n 'unless',\n 'now',\n 'except',\n]\n\nconst prepositions = [\n 'about',\n 'above',\n 'across',\n 'after',\n 'against',\n 'along',\n 'among',\n 'around',\n 'at',\n 'because of',\n 'before',\n 'behind',\n 'below',\n 'beneath',\n 'beside',\n 'besides',\n 'between',\n 'beyond',\n 'but',\n 'by',\n 'concerning',\n 'despite',\n 'down',\n 'during',\n 'except',\n 'excepting',\n 'for',\n 'from',\n 'in',\n 'in front of',\n 'inside',\n 'in spite of',\n 'instead of',\n 'into',\n 'like',\n 'near',\n 'of',\n 'off',\n 'on',\n 'onto',\n 'out',\n 'outside',\n 'over',\n 'past',\n 'regarding',\n 'since',\n 'through',\n 'throughout',\n 'to',\n 'toward',\n 'under',\n 'underneath',\n 'until',\n 'up',\n 'upon',\n 'up to',\n 'with',\n 'within',\n 'without',\n 'with regard to',\n 'with respect to',\n]\n\nconst specialCase = [\n '2FA',\n '3D',\n '4K',\n '5K',\n '8K',\n 'AGI',\n 'BI',\n 'ChatGPT',\n 'CTA',\n 'DateTime',\n 'GitHub',\n 'GPT',\n 'HD',\n 'IBMid',\n 'ID',\n 'IDs',\n 'iMac',\n 'IMAX',\n 'iOS',\n 'IP',\n 'iPad',\n 'iPhone',\n 'iPod',\n 'LDAP',\n 'LinkedIn',\n 'LLM',\n 'M2M',\n 'M2O',\n 'macOS',\n 'McDonalds',\n 'ML',\n 'MySQL',\n 'NLG',\n 'NLP',\n 'NLU',\n 'O2M',\n 'OpenAI',\n 'PDFs',\n 'PEFT',\n 'pH',\n 'PostgreSQL',\n 'SEO',\n 'TTS',\n 'UHD',\n 'UUID',\n 'XSS',\n 'YouTube',\n]\n", "import { camelCase, deburr } from '../../ui/utils'\nimport { 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 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\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\nexport const getMultilineComment = (description?: string) => {\n const descLines = (description ?? '').split('\\n').filter((l) => l.trim().length > 0)\n return descLines.length === 0\n ? ''\n : descLines.length === 1\n ? `/** ${descLines[0]} */`\n : `/**\\n * ${descLines.join('\\n * ')}\\n */`\n}\n\nexport const toValidFunctionName = (str: string) => {\n let name = deburr(str)\n name = name.replace(/[^a-zA-Z0-9_$]/g, '')\n\n if (!/^[a-zA-Z_$]/.test(name)) {\n name = `_${name}`\n }\n\n return camelCase(name)\n}\n", "import { 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) {\n super(`Zod type ${type} cannot be transformed to JSON Schema.`)\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 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 public optional: boolean = false,\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} & {\n declaration?: boolean | TypescriptDeclarationType\n}\n\ntype SchemaTypes = z.Schema | KeyValue | FnParameters | Declaration | null\n\ntype InternalOptions = {\n parent?: SchemaTypes\n}\n\n// TODO: rename this transform to `toTypescriptType`\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 toTypescript(schema: z.Schema, options: TypescriptGenerationOptions = {}): string {\n const wrappedSchema: Declaration = getDeclarationProps(schema, options)\n\n let dts = sUnwrapZod(wrappedSchema, {})\n\n if (options.formatter) {\n dts = options.formatter(dts)\n }\n\n return dts\n}\n\nfunction sUnwrapZod(schema: z.Schema | KeyValue | FnParameters | Declaration | null, config: InternalOptions): string {\n const newConfig: InternalOptions = {\n ...config,\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 if (schema.value instanceof z.ZodOptional) {\n let innerType = schema.value._def.innerType as z.Schema\n if (innerType instanceof z.Schema && !innerType.description && schema.value.description) {\n innerType = innerType?.describe(schema.value.description)\n }\n return sUnwrapZod(new KeyValue(schema.key, innerType, true), newConfig)\n }\n\n const description = getMultilineComment(schema.value._def.description)\n const delimiter = description?.trim().length > 0 ? '\\n' : ''\n const withoutDesc = schema.value.describe('')\n\n // either we are children of a z.ZodOptional or there is a z.ZodOptional in the children\n const isOptional = schema.optional || schema.value.isOptional()\n const optionalModifier = isOptional ? '?' : ''\n return `${delimiter}${description}${delimiter}${schema.key}${optionalModifier}: ${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 typings = sUnwrapZod(schema.schema, newConfig)\n\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) {\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(def.description)} string`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodNumber:\n case z.ZodFirstPartyTypeKind.ZodNaN:\n case z.ZodFirstPartyTypeKind.ZodBigInt:\n return `${getMultilineComment(def.description)} number`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodBoolean:\n return `${getMultilineComment(schema._def.description)} boolean`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodDate:\n return `${getMultilineComment(def.description)} Date`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodUndefined:\n return `${getMultilineComment(def.description)} undefined`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodNull:\n return `${getMultilineComment(def.description)} null`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodAny:\n return `${getMultilineComment(def.description)} any`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodUnknown:\n return `${getMultilineComment(def.description)} unknown`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodNever:\n return `${getMultilineComment(def.description)} never`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodVoid:\n return `${getMultilineComment(def.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 return sUnwrapZod(new KeyValue(toPropertyKey(key), value), newConfig)\n })\n\n return `{ ${props.join('; ')} }`\n case z.ZodFirstPartyTypeKind.ZodUnion:\n const options = def.options.map((option) => {\n return sUnwrapZod(option, newConfig)\n })\n return `${getMultilineComment(def.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(schema._def.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(def.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\n return `${getMultilineComment(def.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(def.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 return sUnwrapZod(def.innerType, 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(def.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 description = getMultilineComment(declaration.props.schema.description)\n const withoutDesc = declaration.props.schema.describe('')\n const typings = sUnwrapZod(withoutDesc, options)\n\n if (declaration.props.type === 'variable') {\n return stripSpaces(`${description}declare const ${declaration.props.identifier}: ${typings};`)\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};`)\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", "/** 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", "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 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 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 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 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", "import { mapValues } from 'lodash-es'\n\nimport z, { util } from '../../z'\nimport { primitiveToTypescriptValue, getMultilineComment, unknownToTypescriptValue } from '../common/utils'\nimport * as errors from '../common/errors'\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 `${getMultilineComment(def.description)}z.string()`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodNumber:\n return `${getMultilineComment(def.description)}z.number()`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodNaN:\n return `${getMultilineComment(def.description)}z.nan()`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodBigInt:\n return `${getMultilineComment(def.description)}z.bigint()`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodBoolean:\n return `${getMultilineComment(schema._def.description)}z.boolean()`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodDate:\n return `${getMultilineComment(def.description)}z.date()`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodUndefined:\n return `${getMultilineComment(def.description)}z.undefined()`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodNull:\n return `${getMultilineComment(def.description)}z.null()`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodAny:\n return `${getMultilineComment(def.description)}z.any()`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodUnknown:\n return `${getMultilineComment(def.description)}z.unknown()`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodNever:\n return `${getMultilineComment(def.description)}z.never()`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodVoid:\n return `${getMultilineComment(def.description)}z.void()`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodArray:\n return `z.array(${sUnwrapZod(def.type)})`\n\n case z.ZodFirstPartyTypeKind.ZodObject:\n const props = mapValues(def.shape(), (value) => {\n if (value instanceof z.Schema) {\n return sUnwrapZod(value)\n }\n return `z.any()`\n })\n return [\n //\n `${getMultilineComment(def.description)}z.object({`,\n ...Object.entries(props).map(([key, value]) => ` ${key}: ${value},`),\n `})`,\n ]\n .join('\\n')\n .trim()\n\n case z.ZodFirstPartyTypeKind.ZodUnion:\n const options = def.options.map(sUnwrapZod)\n return `${getMultilineComment(def.description)}z.union([${options.join(', ')}])`.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 `${getMultilineComment(def.description)}z.discriminatedUnion(${discriminator}, [${opts.join(', ')}])`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodIntersection:\n const left: string = sUnwrapZod(def.left)\n const right: string = sUnwrapZod(def.right)\n return `${getMultilineComment(def.description)}z.intersection(${left}, ${right})`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodTuple:\n const items = def.items.map(sUnwrapZod)\n return `${getMultilineComment(def.description)}z.tuple([${items.join(', ')}])`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodRecord:\n const keyType = sUnwrapZod(def.keyType)\n const valueType = sUnwrapZod(def.valueType)\n return `${getMultilineComment(def.description)}z.record(${keyType}, ${valueType})`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodMap:\n const mapKeyType = sUnwrapZod(def.keyType)\n const mapValueType = sUnwrapZod(def.valueType)\n return `${getMultilineComment(def.description)}z.map(${mapKeyType}, ${mapValueType})`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodSet:\n return `${getMultilineComment(def.description)}z.set(${sUnwrapZod(def.valueType)})`.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 `${getMultilineComment(def.description)}z.function()${argsString}.returns(${returns})`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodLazy:\n return `${getMultilineComment(def.description)}z.lazy(() => ${sUnwrapZod(def.getter())})`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodLiteral:\n const value = primitiveToTypescriptValue(def.value)\n return `${getMultilineComment(def.description)}z.literal(${value})`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodEnum:\n const values = def.values.map(primitiveToTypescriptValue)\n return `${getMultilineComment(def.description)}z.enum([${values.join(', ')}])`.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 `${getMultilineComment(def.description)}z.optional(${sUnwrapZod(def.innerType)})`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodNullable:\n return `${getMultilineComment(def.description)}z.nullable(${sUnwrapZod(def.innerType)})`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodDefault:\n const defaultValue = unknownToTypescriptValue(def.defaultValue())\n // TODO: use z.default() notation\n return `${getMultilineComment(def.description)}${sUnwrapZod(def.innerType)}.default(${defaultValue})`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodCatch:\n throw new errors.UnsupportedZuiToTypescriptSchemaError(z.ZodFirstPartyTypeKind.ZodCatch)\n\n case z.ZodFirstPartyTypeKind.ZodPromise:\n return `${getMultilineComment(def.description)}z.promise(${sUnwrapZod(def.type)})`.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 `${getMultilineComment(def.description)}z.readonly(${sUnwrapZod(def.innerType)})`.trim()\n\n case z.ZodFirstPartyTypeKind.ZodRef:\n const uri = primitiveToTypescriptValue(def.uri)\n return `${getMultilineComment(def.description)}z.ref(${uri})`.trim()\n\n default:\n util.assertNever(def)\n }\n}\n", "import type {\n BaseType,\n UIComponentDefinitions,\n ZodKindToBaseType,\n JSONSchema,\n ParseSchema,\n EmptyComponentDefinitions,\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 jsonSchemaToZui,\n zuiToJsonSchema,\n objectToZui,\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 KindToDef,\n} from '../index'\nimport { CatchFn } from '../catch'\nimport type { ZuiSchemaOptions } from '../../../transforms/zui-to-json-schema/zui-extension'\nimport type { ObjectToZuiOptions } from '../../../transforms/object-to-zui'\nimport { TypescriptGenerationOptions, toTypescript } from '../../../transforms/zui-to-typescript-type'\nimport { toTypescriptSchema } from '../../../transforms/zui-to-typescript-schema'\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<any, any, any>> = T['_output']\nexport type input<T extends ZodType<any, any, any>> = T['_input']\nexport type output<T extends ZodType<any, any, any>> = 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]?: any\n }\n | undefined\nexport type ProcessedCreateParams = {\n errorMap?: ZodErrorMap\n description?: string\n [zuiKey]?: any\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 readonly _type!: Output\n readonly _output!: Output\n readonly _input!: Input\n readonly _def!: Def\n\n get description() {\n return this._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 /** 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) as any\n }\n nullable(): ZodNullable<this> {\n return ZodNullable.create(this, this._def) as any\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 or<T extends ZodTypeAny>(option: T): ZodUnion<[this, T]> {\n return ZodUnion.create([this, option], this._def) as any\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 }) as any\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 This = (this as any).constructor\n return new This({\n ...this._def,\n description,\n })\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 object */\n metadata(data: Record<string, ZuiMetadata>): this {\n for (const [key, value] of Object.entries(data)) {\n this._def[zuiKey] = {\n ...this._def[zuiKey],\n [key]: value,\n }\n }\n return this\n }\n\n /** get metadata of object */\n getMetadata(): Record<string, ZuiMetadata> {\n return { ...this._def[zuiKey] }\n }\n\n /** set metadata of object */\n setMetadata(data: Record<string, ZuiMetadata>): void {\n this._def[zuiKey] = { ...data }\n }\n\n /**\n * @deprecated use `getMetadata` instead\n */\n get ui(): Record<string, ZuiMetadata> {\n const root = this._getMetadataRoot()\n return { ...root._def[zuiKey] }\n }\n\n private _setZuiMeta(key: string, value: ZuiMetadata) {\n const root = this._getMetadataRoot()\n root._def[zuiKey] = {\n ...root._def[zuiKey],\n [key]: value,\n }\n }\n\n private _getMetadataRoot(): ZodType {\n // TODO: this kind of logic should be handled in the UI layer, not here\n const def = this._def as KindToDef<any>\n switch (def.typeName) {\n case ZodFirstPartyTypeKind.ZodNullable:\n case ZodFirstPartyTypeKind.ZodDefault:\n case ZodFirstPartyTypeKind.ZodOptional:\n case ZodFirstPartyTypeKind.ZodReadonly:\n return def.innerType\n case ZodFirstPartyTypeKind.ZodEffects:\n return def.schema\n default:\n return this\n }\n }\n\n /**\n * The type of component to use to display the field and its options\n */\n displayAs<\n UI extends UIComponentDefinitions = EmptyComponentDefinitions,\n Type extends BaseType = ZodKindToBaseType<this['_def']>,\n >(options: ParseSchema<UI[Type][keyof UI[Type]]>): this {\n this._def[zuiKey] ??= {}\n this._def[zuiKey].displayAs = [options.id, options.params]\n return this\n }\n\n /**\n * The title of the field. Defaults to the field name.\n */\n title(title: string): this {\n this._setZuiMeta('title', title)\n return this\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 this._setZuiMeta('hidden', data)\n return this\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 this._setZuiMeta('disabled', data)\n return this\n }\n\n /**\n * Placeholder text for the field\n */\n placeholder(placeholder: string): this {\n this._setZuiMeta('placeholder', placeholder)\n return this\n }\n\n toJsonSchema(opts?: ZuiSchemaOptions): JSONSchema {\n return zuiToJsonSchema(this, opts)\n }\n\n /**\n *\n * @param options generation options\n * @returns a string of the TypeScript type representing the schema\n */\n toTypescript(opts?: TypescriptGenerationOptions): string {\n return toTypescript(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 async toTypescriptAsync(\n opts?: Omit<TypescriptGenerationOptions, 'formatter'> & {\n formatter?: (typing: string) => Promise<string> | string\n },\n ): Promise<string> {\n let result = toTypescript(this, { ...opts, formatter: undefined })\n if (opts?.formatter) {\n result = await opts.formatter(result)\n }\n return result\n }\n\n static fromObject(obj: any, opts?: ObjectToZuiOptions) {\n return objectToZui(obj, opts)\n }\n\n static fromJsonSchema(schema: JSONSchema | any) {\n return jsonSchemaToZui(schema)\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} from './index'\n\nexport type ZodDef =\n | ZodStringDef\n | ZodNumberDef\n | ZodBigIntDef\n | ZodBooleanDef\n | ZodDateDef\n | ZodUndefinedDef\n | ZodNullDef\n | ZodDefaultDef\n | ZodCatchDef\n | ZodReadonlyDef\n | ZodDiscriminatedUnionDef<any>\n | ZodBrandedDef<any>\n | ZodPipelineDef<any, any>\n | ZodAnyDef\n | ZodUnknownDef\n | ZodNeverDef\n | ZodVoidDef\n | ZodArrayDef\n | ZodObjectDef\n | ZodUnionDef\n | ZodIntersectionDef\n | ZodTupleDef\n | ZodRecordDef\n | ZodMapDef\n | ZodFunctionDef\n | ZodLazyDef\n | ZodLiteralDef\n | ZodEnumDef\n | ZodEffectsDef\n | ZodNativeEnumDef\n | ZodOptionalDef\n | ZodNullableDef\n | ZodPromiseDef\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 type AssertEqual<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: AssertEqual<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 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: any = {}\n for (const item of items) {\n obj[item] = item\n }\n return obj as any\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\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}\nexport function processCreateParams(params: RawCreateParams): ProcessedCreateParams {\n if (!params) return {}\n\n const { errorMap, invalid_type_error, required_error, description } = 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 if (errorMap) return { errorMap: errorMap, description, [zuiKey]: params?.[zuiKey] }\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]: params?.[zuiKey] }\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: ZodFormattedError<T> = { _errors: [] } as any\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 as any)._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 any): 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 any).status === 'aborted'\nexport const isDirty = <T>(x: ParseReturnType<T>): x is OK<T> | DIRTY<T> => (x as any).status === 'dirty'\nexport const isValid = <T>(x: ParseReturnType<T>): x is OK<T> => (x as any).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 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] as any[]).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] as any[]).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 any\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 any\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 any\n }\n\n nonempty(message?: errorUtil.ErrMessage): ZodArray<T, 'atleastone'> {\n return this.min(1, message) as any\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 { isEqual } from 'lodash-es'\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> 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 _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", "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", "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 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 as any,\n ...processCreateParams(params),\n }) as any\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", "export 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 as any)\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 ZodTypeAny\n>\n\nexport interface ZodDiscriminatedUnionDef<\n Discriminator extends 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 _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 any\n } else {\n return option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }) as any\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 as any\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 as any\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 as any\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 }) as any\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 any\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 _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 as any)\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 }) as any\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()) as any,\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 as any\n }\n\n strictImplement(func: InnerTypeOfFunction<Args, Returns>): InnerTypeOfFunction<Args, Returns> {\n const validatedFunc = this.parse(func)\n return validatedFunc as any\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())) as any,\n returns: returns || ZodUnknown.create(),\n typeName: ZodFirstPartyTypeKind.ZodFunction,\n ...processCreateParams(params),\n }) as any\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 _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 as any }\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 _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", "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 _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 as any)\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 _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 }) as any\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", "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 ZodNever,\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} from '../index'\nimport { CustomSet } from '../utils/custom-set'\n\nexport type UnknownKeysParam = 'passthrough' | 'strict' | 'strip'\n\nexport interface ZodObjectDef<\n T extends ZodRawShape = ZodRawShape,\n UnknownKeys extends UnknownKeysParam = UnknownKeysParam,\n Catchall extends ZodTypeAny = ZodTypeAny,\n> extends ZodTypeDef {\n typeName: ZodFirstPartyTypeKind.ZodObject\n shape: () => T\n catchall: Catchall\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 Catchall extends ZodTypeAny,\n UnknownKeys extends UnknownKeysParam = UnknownKeysParam,\n> = objectUtil.flatten<objectUtil.addQuestionMarks<baseObjectOutputType<Shape>>> &\n CatchallOutput<Catchall> &\n PassthroughType<UnknownKeys>\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 Catchall extends ZodTypeAny,\n UnknownKeys extends UnknownKeysParam = UnknownKeysParam,\n> = objectUtil.flatten<baseObjectInputType<Shape>> & CatchallInput<Catchall> & PassthroughType<UnknownKeys>\nexport type baseObjectInputType<Shape extends ZodRawShape> = objectUtil.addQuestionMarks<{\n [k in keyof Shape]: Shape[k]['_input']\n}>\n\nexport type CatchallOutput<T extends ZodType> = ZodType extends T ? unknown : { [k: string]: T['_output'] }\n\nexport type CatchallInput<T extends ZodType> = ZodType extends T ? unknown : { [k: string]: T['_input'] }\n\nexport type PassthroughType<T extends UnknownKeysParam> = T extends 'passthrough' ? { [k: string]: unknown } : unknown\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, ZodTypeAny>\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 }) as any\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 Catchall extends ZodTypeAny = ZodTypeAny,\n Output = objectOutputType<T, Catchall, UnknownKeys>,\n Input = objectInputType<T, Catchall, UnknownKeys>,\n> extends ZodType<Output, ZodObjectDef<T, UnknownKeys, Catchall>, 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 _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.catchall instanceof ZodNever && this._def.unknownKeys === 'strip')) {\n for (const key in ctx.data) {\n if (!shapeKeys.includes(key)) {\n extraKeys.push(key)\n }\n }\n }\n\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 if (this._def.catchall instanceof ZodNever) {\n const unknownKeys = this._def.unknownKeys\n\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 throw new Error(`Internal ZodObject error: invalid unknownKeys value.`)\n }\n } else {\n // run catchall validation\n const catchall = this._def.catchall\n\n for (const key of extraKeys) {\n const value = ctx.data[key]\n pairs.push({\n key: { status: 'valid', value: key },\n value: catchall._parse(\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', Catchall> {\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 }) as any\n }\n\n strip(): ZodObject<T, 'strip', Catchall> {\n return new ZodObject({\n ...this._def,\n unknownKeys: 'strip',\n }) as any\n }\n\n passthrough(): ZodObject<T, 'passthrough', Catchall> {\n return new ZodObject({\n ...this._def,\n unknownKeys: 'passthrough',\n }) as any\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 // }) as any;\n // };\n extend<Augmentation extends ZodRawShape>(\n augmentation: Augmentation,\n ): ZodObject<objectUtil.extendShape<T, Augmentation>, UnknownKeys, Catchall> {\n return new ZodObject({\n ...this._def,\n shape: () => ({\n ...this._def.shape(),\n ...augmentation,\n }),\n }) as any\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 // }) as any;\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'], Incoming['_def']['catchall']> {\n const merged: any = new ZodObject({\n unknownKeys: merging._def.unknownKeys,\n catchall: merging._def.catchall,\n shape: () => ({\n ...this._def.shape(),\n ...merging._def.shape(),\n }),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n }) as any\n return merged\n }\n // merge<\n // Incoming extends AnyZodObject,\n // Augmentation extends Incoming[\"shape\"],\n // NewOutput extends {\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // },\n // NewInput extends {\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }\n // >(\n // merging: Incoming\n // ): ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"],\n // NewOutput,\n // NewInput\n // > {\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n setKey<Key extends string, Schema extends ZodTypeAny>(\n key: Key,\n schema: Schema,\n ): ZodObject<\n T & {\n [k in Key]: Schema\n },\n UnknownKeys,\n Catchall\n > {\n return this.augment({ [key]: schema }) as any\n }\n // merge<Incoming extends AnyZodObject>(\n // merging: Incoming\n // ): //ZodObject<T & Incoming[\"_shape\"], UnknownKeys, Catchall> = (merging) => {\n // ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"]\n // > {\n // // const mergedShape = objectUtil.mergeShapes(\n // // this._def.shape(),\n // // merging._def.shape()\n // // );\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n catchall<Index extends ZodTypeAny>(index: Index): ZodObject<T, UnknownKeys, Index> {\n return new ZodObject({\n ...this._def,\n catchall: index,\n }) as any\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, Catchall> {\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 }) as any\n }\n\n omit<\n Mask extends {\n [k in keyof T]?: true\n },\n >(mask: Mask): ZodObject<Omit<T, keyof Mask>, UnknownKeys, Catchall> {\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 }) as any\n }\n\n /**\n * @deprecated\n */\n deepPartial(): partialUtil.DeepPartial<this> {\n return deepPartialify(this) as any\n }\n\n partial(): ZodObject<\n {\n [k in keyof T]: ZodOptional<T[k]>\n },\n UnknownKeys,\n Catchall\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 Catchall\n >\n partial(mask?: any) {\n const newShape: any = {}\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,\n }) as any\n }\n\n required(): ZodObject<\n {\n [k in keyof T]: deoptional<T[k]>\n },\n UnknownKeys,\n Catchall\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 Catchall\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 }) as any\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._def.catchall.isEqual(schema._def.catchall)) return false\n if (this._def.unknownKeys !== schema._def.unknownKeys) 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 static create = <T extends ZodRawShape>(shape: T, params?: RawCreateParams): ZodObject<T, 'strip'> => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: 'strip',\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n }) as any\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 catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n }) as any\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 catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n }) as any\n }\n}\n\nexport type AnyZodObject = ZodObject<any, 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 _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 }) as any\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", "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 _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 _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", "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 _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 }) as any\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", "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 _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 _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 any\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 any\n }\n\n size(size: number, message?: errorUtil.ErrMessage): this {\n return this.min(size, message).max(size, message) as any\n }\n\n nonempty(message?: errorUtil.ErrMessage): ZodSet<Value> {\n return this.min(1, message) as any\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'\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// Adapted from https://stackoverflow.com/a/3143231\nexport const datetimeRegex = (args: { precision: number | null; offset: boolean }) => {\n if (args.precision) {\n if (args.offset) {\n return new RegExp(\n `^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}\\\\.\\\\d{${args.precision}}(([+-]\\\\d{2}(:?\\\\d{2})?)|Z)$`,\n )\n } else {\n return new RegExp(`^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}\\\\.\\\\d{${args.precision}}Z$`)\n }\n } else if (args.precision === 0) {\n if (args.offset) {\n return new RegExp(`^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}(([+-]\\\\d{2}(:?\\\\d{2})?)|Z)$`)\n } else {\n return new RegExp(`^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}Z$`)\n }\n } else {\n if (args.offset) {\n return new RegExp(`^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}(\\\\.\\\\d+)?(([+-]\\\\d{2}(:?\\\\d{2})?)|Z)$`)\n } else {\n return new RegExp(`^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}(\\\\.\\\\d+)?Z$`)\n }\n }\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 = datetimeRegex(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),\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 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 _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 util.assertNever(this._def.effect)\n return false\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 _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] as any[])\n .map((item, itemIndex) => {\n const schema = this._def.items[itemIndex] || this._def.rest\n if (!schema) return null as any as SyncParseReturnType<any>\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} 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", "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} 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 _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", "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 { 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\nexport const objectToZui = (obj: any, 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(objectToZui(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(objectToZui(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 { 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 { 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 { ZodStringDef } from '../../../z/index'\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' ? escapeNonAlphaNumeric(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 escapeNonAlphaNumeric = (value: string) =>\n Array.from(value)\n .map((c) => (/[a-zA-Z0-9]/.test(c) ? c : `\\\\${c}`))\n .join('')\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 { 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 { 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 if (refs.target === 'openApi3') {\n return {\n type: primitiveMappings[def.innerType._def.typeName as keyof typeof primitiveMappings],\n nullable: true,\n } as any\n }\n\n return {\n type: [primitiveMappings[def.innerType._def.typeName as keyof typeof primitiveMappings], 'null'],\n }\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 } 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\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:\n def.catchall._def.typeName === 'ZodNever'\n ? def.unknownKeys === 'passthrough'\n : (parseDef(def.catchall._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'additionalProperties'],\n }) ?? true),\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:\n def.catchall._def.typeName === 'ZodNever'\n ? def.unknownKeys === 'passthrough'\n : (parseDef(def.catchall._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'additionalProperties'],\n }) ?? true),\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:\n def.catchall._def.typeName === 'ZodNever'\n ? def.unknownKeys === 'passthrough'\n : (parseDef(def.catchall._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'additionalProperties'],\n }) ?? true),\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\nconst addMeta = (def: ZodTypeDef, refs: Refs, jsonSchema: JsonSchema7Type): JsonSchema7Type => {\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 { JSONSchema } from '../../ui/types'\nimport { z } from '../../z/index'\nimport { zodToJsonSchema } from './zodToJsonSchema'\nimport { Options } from './Options'\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\nexport const zuiToJsonSchema = (zuiType: z.ZodTypeAny, opts: ZuiSchemaOptions = { target: 'openApi3' }): JSONSchema => {\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 JSONSchema\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 } as any, 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 any\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)) as any\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 ) as any,\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 ) as any,\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 ) as any,\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 as any).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/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._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\nexport const jsonSchemaToZui = (schema: JsonSchema7Type | any): ZodTypeAny => {\n const zodSchema = jsonSchemaToZod(schema)\n applyZuiPropsRecursively(zodSchema, schema)\n return zodSchema as unknown as ZodTypeAny\n}\n", "import React, { useState, useEffect } from 'react'\nimport { BoundaryFallbackComponent, ErrorBoundary } from './ErrorBoundary'\nimport { FormDataProvider, deepMerge, getDefaultValues } from './hooks/useFormData'\nimport { FormValidation, EmptyComponentDefinitions, JSONSchema, UIComponentDefinitions, ZuiComponentMap } from './types'\nimport { FormElementRenderer } from './ElementRenderer'\n\nexport type ZuiFormProps<UI extends UIComponentDefinitions = EmptyComponentDefinitions> = {\n schema: JSONSchema\n components: ZuiComponentMap<UI>\n value: any\n onChange: (value: any) => void\n disableValidation?: boolean\n fallback?: BoundaryFallbackComponent\n dataTransform?: (data: any) => any\n onValidation?: (validation: FormValidation) => void\n}\n\nexport const ZuiForm = <UI extends UIComponentDefinitions = EmptyComponentDefinitions>({\n schema,\n components,\n onChange,\n value,\n disableValidation,\n fallback,\n dataTransform,\n onValidation,\n}: ZuiFormProps<UI>): JSX.Element | null => {\n const [formData, setFormData] = useState<object>(value)\n\n useEffect(() => {\n onChange(formData)\n }, [formData])\n\n useEffect(() => {\n const defaults = getDefaultValues(schema)\n setFormData((prev) => deepMerge(defaults, prev))\n }, [JSON.stringify(schema), setFormData])\n\n return (\n <FormDataProvider\n formData={formData}\n setFormData={setFormData}\n formSchema={schema}\n disableValidation={disableValidation || false}\n dataTransform={dataTransform}\n onValidation={onValidation}\n >\n <ErrorBoundary fallback={fallback} fieldSchema={schema} path={[]}>\n <FormElementRenderer\n components={components}\n fieldSchema={schema}\n path={[]}\n fallback={fallback}\n required={true}\n isArrayChild={false}\n />\n </ErrorBoundary>\n </FormDataProvider>\n )\n}\n", "import React, { Component, ErrorInfo, FC, ReactNode } from 'react'\nimport { JSONSchema, Path } from './types'\n\nexport type BoundaryFallbackComponent = FC<{ error: Error; schema: JSONSchema }>\n\nexport type ErrorBoundaryProps = {\n children?: ReactNode\n fallback?: BoundaryFallbackComponent\n fieldSchema: JSONSchema\n path: Path\n}\ntype State =\n | {\n hasError: true\n error: Error\n }\n | {\n hasError: false\n error: null\n }\n\nexport class ErrorBoundary extends Component<ErrorBoundaryProps, State> {\n public state: State = {\n hasError: false,\n error: null,\n }\n\n public static getDerivedStateFromError(error: Error): State {\n // Update state so the next render will show the fallback UI.\n return { hasError: true, error }\n }\n\n public componentDidCatch(error: Error, errorInfo: ErrorInfo) {\n console.error('Uncaught error:', error, errorInfo)\n }\n\n public render() {\n if (this.state.hasError && this.props.fallback) {\n return <this.props.fallback error={this.state.error} schema={this.props.fieldSchema} />\n }\n\n return this.props.children\n }\n}\n\nexport function withErrorBoundary<P = any>(Component: FC<P>, fallback?: BoundaryFallbackComponent) {\n return (props: P & ErrorBoundaryProps) => (\n <ErrorBoundary fallback={fallback} fieldSchema={props.fieldSchema} path={props.path}>\n <Component {...props} />\n </ErrorBoundary>\n )\n}\n", "import React, { FC, useMemo } from 'react'\nimport {\n ArraySchema,\n BaseType,\n JSONSchema,\n ObjectSchema,\n PrimitiveSchema,\n ZuiComponentMap,\n ZuiReactArrayChildProps,\n ZuiReactComponent,\n ZuiReactComponentBaseProps,\n ZuiReactComponentProps,\n ZuiReactControlComponentProps,\n} from './types'\nimport { BoundaryFallbackComponent, ErrorBoundary } from './ErrorBoundary'\nimport { getPathData, useFormData } from './hooks/useFormData'\nimport { formatTitle, resolveComponent } from './utils'\nimport { useDiscriminator } from './hooks/useDiscriminator'\nimport { zuiKey } from './constants'\n\ntype FormRendererProps = {\n components: ZuiComponentMap<any>\n fieldSchema: JSONSchema\n path: string[]\n required: boolean\n fallback?: BoundaryFallbackComponent\n} & ZuiReactArrayChildProps\n\nexport const FormElementRenderer: FC<FormRendererProps> = ({\n components,\n fieldSchema,\n path,\n required,\n fallback,\n ...childProps\n}) => {\n const { formData, disabled, hidden, handlePropertyChange, addArrayItem, removeArrayItem, formErrors, formValid } =\n useFormData(fieldSchema, path)\n const data = useMemo(() => getPathData(formData, path), [formData, path])\n const componentMeta = useMemo(() => resolveComponent(components, fieldSchema), [fieldSchema, components])\n const { discriminator, discriminatedSchema, discriminatorValue } = useDiscriminator(fieldSchema, path)\n\n if (!componentMeta) {\n return null\n }\n\n if (hidden === true) {\n return null\n }\n\n const { Component: _component, type } = componentMeta\n\n const baseProps: Omit<ZuiReactComponentBaseProps<BaseType, string, any>, 'data' | 'isArrayChild'> = {\n type,\n componentID: componentMeta.id,\n scope: path.join('.'),\n context: {\n path,\n readonly: false,\n formData,\n formErrors,\n formValid,\n updateForm: handlePropertyChange,\n updateFormData: (data) => handlePropertyChange([], data),\n },\n onChange: (data: any) => handlePropertyChange(path, data),\n disabled,\n errors: formErrors?.filter((e) => e.path === path) || [],\n label: fieldSchema[zuiKey]?.title || formatTitle(path[path.length - 1]?.toString() || ''),\n params: componentMeta.params,\n schema: fieldSchema,\n zuiProps: fieldSchema[zuiKey],\n }\n\n if (fieldSchema.type === 'array' && type === 'array') {\n const Component = _component as any as ZuiReactComponent<'array', string, any>\n const schema = baseProps.schema as ArraySchema\n const dataArray = Array.isArray(data) ? data : typeof data === 'object' ? data : []\n const props: Omit<ZuiReactComponentProps<'array', string, any>, 'children'> = {\n ...baseProps,\n type,\n schema,\n data: dataArray,\n addItem: (data) => addArrayItem(path, data),\n removeItem: (index) => removeArrayItem(path, index),\n ...childProps,\n }\n\n // Tuple\n if (Array.isArray(fieldSchema.items)) {\n return null\n }\n\n return (\n <Component key={baseProps.scope} {...props} isArrayChild={props.isArrayChild as any}>\n {Array.isArray(props.data)\n ? props.data.map((_, index) => {\n const childPath = [...path, index.toString()]\n return (\n <ErrorBoundary\n key={childPath.join('.')}\n fallback={fallback}\n fieldSchema={fieldSchema.items as JSONSchema}\n path={childPath}\n >\n <FormElementRenderer\n key={childPath.join('.')}\n components={components}\n fieldSchema={fieldSchema.items as JSONSchema}\n path={childPath}\n required={required}\n isArrayChild={true}\n index={index}\n removeSelf={() => removeArrayItem(path, index)}\n fallback={fallback}\n />\n </ErrorBoundary>\n )\n })\n : []}\n </Component>\n )\n }\n\n if (fieldSchema.type === 'object' && type === 'object' && fieldSchema.properties) {\n const Component = _component as any as ZuiReactComponent<'object', string, any>\n const props: Omit<ZuiReactComponentProps<'object', string, any>, 'children'> = {\n ...baseProps,\n type,\n schema: baseProps.schema as any as ObjectSchema,\n data: data || {},\n ...childProps,\n }\n return (\n <Component key={baseProps.scope} {...props} isArrayChild={props.isArrayChild as any}>\n {Object.entries(fieldSchema.properties).map(([fieldName, childSchema]) => {\n const childPath = [...path, fieldName]\n return (\n <ErrorBoundary key={childPath.join('.')} fallback={fallback} fieldSchema={childSchema} path={childPath}>\n <FormElementRenderer\n key={childPath.join('.')}\n components={components}\n fieldSchema={childSchema}\n path={childPath}\n required={fieldSchema.required?.includes(fieldName) || false}\n isArrayChild={false}\n fallback={fallback}\n />\n </ErrorBoundary>\n )\n })}\n </Component>\n )\n }\n\n if (type === 'discriminatedUnion') {\n const Component = _component as any as ZuiReactComponent<'discriminatedUnion', string, any>\n\n const props: Omit<ZuiReactComponentProps<'discriminatedUnion', string, any>, 'children'> = {\n ...baseProps,\n type,\n schema: baseProps.schema as any as ObjectSchema,\n data: data || {},\n discriminatorKey: discriminator?.key || null,\n discriminatorLabel: formatTitle(discriminator?.key || 'Unknown'),\n discriminatorOptions: discriminator?.values || null,\n discriminatorValue,\n setDiscriminator: (disc: string) => {\n if (!discriminator?.key) {\n console.warn('No discriminator key found, cannot set discriminator')\n return\n }\n handlePropertyChange(path, { [discriminator.key]: disc })\n },\n ...childProps,\n }\n\n return (\n <Component key={baseProps.scope} {...props} isArrayChild={props.isArrayChild as any}>\n {discriminatedSchema && (\n <ErrorBoundary key={path.join('.')} fallback={fallback} fieldSchema={discriminatedSchema} path={path}>\n <FormElementRenderer\n components={components}\n fieldSchema={discriminatedSchema}\n path={path}\n required={required}\n isArrayChild={false}\n fallback={fallback}\n />\n </ErrorBoundary>\n )}\n </Component>\n )\n }\n const Component = _component as any as ZuiReactComponent<any, any>\n\n const props: ZuiReactControlComponentProps<'boolean' | 'number' | 'string', string, any> = {\n ...baseProps,\n type: type as any as 'boolean' | 'number' | 'string',\n schema: baseProps.schema as any as PrimitiveSchema,\n config: {},\n required,\n data,\n description: fieldSchema.description,\n ...childProps,\n }\n\n return <Component {...props} />\n}\n", "import z from '../z'\nimport { UIComponentDefinitions } from './types'\n\nexport const defaultComponentDefinitions = {\n string: {},\n number: {\n slider: {\n id: 'slider',\n params: z.object({}),\n },\n },\n boolean: {\n switch: {\n id: 'switch',\n params: z.object({}),\n },\n },\n array: {},\n object: {},\n discriminatedUnion: {},\n} as const satisfies UIComponentDefinitions\n\nexport type DefaultComponentDefinitions = typeof defaultComponentDefinitions\n", "import { jsonSchemaToZui } from './transforms/json-schema-to-zui'\nimport { zuiToJsonSchema } from './transforms/zui-to-json-schema'\nimport { objectToZui } from './transforms/object-to-zui'\nimport { toTypescript, TypescriptGenerationOptions } from './transforms/zui-to-typescript-type'\nimport { toTypescriptSchema } from './transforms/zui-to-typescript-schema'\nimport * as transformErrors from './transforms/common/errors'\n\nexport * from './ui'\nexport * from './z'\n\nexport const transforms = {\n errors: transformErrors,\n jsonSchemaToZui,\n zuiToJsonSchema,\n objectToZui,\n toTypescript,\n toTypescriptSchema,\n}\n\nexport { type TypescriptGenerationOptions }\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\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 botIdHeader = 'x-bot-id'\nexport const botUserIdHeader = 'x-bot-user-id'\nexport const integrationIdHeader = 'x-integration-id'\nexport const webhookIdHeader = 'x-webhook-id'\n\nexport const configurationTypeHeader = 'x-bp-configuration-type'\nexport const configurationHeader = 'x-bp-configuration'\nexport const operationHeader = 'x-bp-operation'\nexport const typeHeader = 'x-bp-type'\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 (e: any) {\n log.error('Error while handling request', { error: e?.message ?? 'Internal error occured' })\n res.writeHead(500).end(JSON.stringify({ error: e?.message ?? '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?: any): void\n info(message: string, metadata?: any): void\n warn(message: string, metadata?: any): void\n error(message: string, metadata?: any): 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", "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 { 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 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 }\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 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 }\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 } 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} 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\nexport const integrationHandler =\n (instance: IntegrationHandlers<BaseIntegration>) =>\n async (req: Request): Promise<Response | void> => {\n const ctx = extractContext(req.headers)\n\n const [, traceId] = (req.headers['traceparent'] || '').split('-')\n\n const vanillaClient = new Client({\n botId: ctx.botId,\n integrationId: ctx.integrationId,\n retry: retryConfig,\n headers: extractTracingHeaders(req.headers),\n })\n const client = new IntegrationSpecificClient<BaseIntegration>(vanillaClient)\n const logger = new IntegrationLogger({ traceId })\n\n const props = {\n ctx,\n req,\n client,\n logger,\n instance,\n }\n\n try {\n let response: Response | void\n switch (ctx.operation) {\n case 'webhook_received':\n response = await onWebhook(props)\n break\n case 'register':\n response = await onRegister(props)\n break\n case 'unregister':\n response = await onUnregister(props)\n break\n case 'message_created':\n response = await onMessageCreated(props)\n break\n case 'action_triggered':\n response = await onActionTriggered(props)\n break\n case 'ping':\n response = await onPing(props)\n break\n case 'create_user':\n response = await onCreateUser(props)\n break\n case 'create_conversation':\n response = await onCreateConversation(props)\n break\n default:\n throw new Error(`Unknown operation ${ctx.operation}`)\n }\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", "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 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)) as types.GetMessage<TIntegration>\n public updateMessage: types.UpdateMessage<TIntegration> = ((x) =>\n this._client.updateMessage(x)) 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}\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", "import { z } from '@bpinternal/zui'\nimport {\n botIdHeader,\n botUserIdHeader,\n configurationHeader,\n configurationTypeHeader,\n integrationIdHeader,\n operationHeader,\n webhookIdHeader,\n} from '../../consts'\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 const botId = headers[botIdHeader]\n const botUserId = headers[botUserIdHeader]\n const integrationId = headers[integrationIdHeader]\n const webhookId = headers[webhookIdHeader]\n const configurationType = headers[configurationTypeHeader]\n const base64Configuration = headers[configurationHeader]\n const operation = integrationOperationSchema.parse(headers[operationHeader])\n\n if (!botId) {\n throw new Error('Missing bot headers')\n }\n\n if (!botUserId) {\n throw new Error('Missing bot user headers')\n }\n\n if (!integrationId) {\n throw new Error('Missing integration headers')\n }\n\n if (!webhookId) {\n throw new Error('Missing webhook headers')\n }\n\n if (!base64Configuration) {\n throw new Error('Missing configuration headers')\n }\n\n if (!operation) {\n throw new Error('Missing operation headers')\n }\n\n return {\n botId,\n botUserId,\n integrationId,\n webhookId,\n operation,\n configurationType: configurationType ?? null,\n configuration: base64Configuration ? JSON.parse(Buffer.from(base64Configuration, 'base64').toString('utf-8')) : {},\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: any[]) => 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 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}\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\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 }\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 } from '../plugin'\nimport { SchemaDefinition } from '../schema'\nimport * as utils from '../utils'\nimport { ValueOf, Writable, Merge, StringKeys } from '../utils/type-utils'\nimport z, { ZuiObjectSchema } from '../zui'\n\ntype BaseConfig = ZuiObjectSchema\ntype BaseStates = Record<string, ZuiObjectSchema>\ntype BaseEvents = Record<string, ZuiObjectSchema>\ntype BaseActions = Record<string, ZuiObjectSchema>\ntype BaseTables = Record<string, ZuiObjectSchema>\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<ZuiObjectSchema> // 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 IntegrationConfigInstance<I extends IntegrationPackage = IntegrationPackage> = {\n enabled: boolean\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\nexport type PluginConfigInstance<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}\n\nexport type IntegrationInstance = IntegrationPackage & IntegrationConfigInstance\nexport type PluginInstance = PluginPackage & PluginConfigInstance\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\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 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 }\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 self.integrations[integrationPkg.name] = {\n enabled: config.enabled,\n ...integrationPkg,\n configurationType: config.configurationType,\n configuration: 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 key = config.alias ?? pluginPkg.name\n self.plugins[key] = {\n ...pluginPkg,\n alias: config.alias,\n configuration: config.configuration,\n interfaces: config.interfaces,\n }\n\n self.user = this._mergeUser(self.user, pluginPkg.definition.user)\n self.conversation = this._mergeConversation(self.conversation, pluginPkg.definition.conversation)\n self.message = this._mergeMessage(self.message, pluginPkg.definition.message)\n self.recurringEvents = this._mergeRecurringEvents(self.recurringEvents, pluginPkg.definition.recurringEvents)\n self.tables = this._mergeTables(self.tables, pluginPkg.definition.tables)\n self.workflows = this._mergeWorkflows(self.workflows, pluginPkg.definition.workflows)\n\n self.states = this._mergeStates(self.states, this._prefixKeys(pluginPkg.definition.states, config.alias))\n self.events = this._mergeEvents(self.events, this._prefixKeys(pluginPkg.definition.events, config.alias))\n self.actions = this._mergeActions(self.actions, this._prefixKeys(pluginPkg.definition.actions, config.alias))\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 _prefixKeys = <T extends Record<string, any> | undefined>(obj: T, alias: string | undefined): T => {\n if (!obj || !alias) {\n return obj\n }\n return utils.records.mapKeys(obj, (key) => `${alias}${consts.PLUGIN_PREFIX_SEPARATOR}${key}`) as T\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 { proxyWorkflows } from '../workflow-proxy'\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 ..._getBotTools({ client }),\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 ..._getBotTools({ client }),\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 ..._getBotTools({ client }),\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 ..._getBotTools({ client }),\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 (error) {\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.')\n logger.error(runtimeError.message)\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, ..._getBotTools({ client }) }\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: utils.ValueOf<types.MessagePayloads<common.BaseBot>> = {\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: utils.ValueOf<types.StateExpiredPayloads<common.BaseBot>> = {\n ...common,\n state: state as types.IncomingStates<common.BaseBot>[string],\n }\n\n const stateHandlers = self.stateExpiredHandlers['*'] ?? []\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: utils.ValueOf<types.EventPayloads<common.BaseBot>> = { ...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 ..._getBotTools({ client }),\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, ..._getBotTools({ client }) })\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 ..._getBotTools({ client }),\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\nconst _getBotTools = (\n props: Pick<types.CommonHandlerProps<common.BaseBot>, 'client'>\n): Pick<types.CommonHandlerProps<common.BaseBot>, 'workflows'> => ({\n workflows: proxyWorkflows(props.client),\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 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 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 type * as client from '@botpress/client'\nimport type { BotSpecificClient } from '../../bot'\nimport type * as typeUtils from '../../utils/type-utils'\nimport type { BaseBot } from '../common'\nimport type { WorkflowProxy, WorkflowWithUtilities } from './types'\n\nexport const proxyWorkflows = <TBot extends BaseBot>(\n client: BotSpecificClient<TBot> | client.Client\n): WorkflowProxy<TBot> =>\n new Proxy({} as WorkflowProxy<TBot>, {\n get: <TWorkflowName extends typeUtils.StringKeys<TBot['workflows']>>(_: unknown, workflowName: TWorkflowName) =>\n ({\n listInstances: {\n all: (input) => _listWorkflows({ workflowName, client, input }),\n running: (input) => _listWorkflows({ workflowName, client, input, statuses: ['in_progress'] }),\n scheduled: (input) => _listWorkflows({ workflowName, client, input, statuses: ['pending', 'listening'] }),\n allFinished: (input) =>\n _listWorkflows({\n workflowName,\n client,\n input,\n statuses: ['completed', 'cancelled', 'failed', 'timedout'],\n }),\n cancelled: (input) => _listWorkflows({ workflowName, client, input, statuses: ['cancelled'] }),\n failed: (input) => _listWorkflows({ workflowName, client, input, statuses: ['failed'] }),\n succeeded: (input) => _listWorkflows({ workflowName, client, input, statuses: ['completed'] }),\n timedOut: (input) => _listWorkflows({ workflowName, client, input, statuses: ['timedout'] }),\n },\n startNewInstance: async (input) => {\n const { workflow } = await client.createWorkflow({\n name: workflowName as typeUtils.Cast<TWorkflowName, string>,\n status: 'pending',\n ...input,\n })\n return { workflow: wrapWorkflowInstance<TBot, TWorkflowName>({ client, workflow }) }\n },\n }) satisfies WorkflowProxy<TBot>[TWorkflowName],\n })\n\nconst _listWorkflows = async <\n TBot extends BaseBot,\n TWorkflowName extends typeUtils.StringKeys<TBot['workflows']>,\n>(props: {\n workflowName: TWorkflowName\n client: BotSpecificClient<TBot> | client.Client\n statuses?: client.ClientInputs['listWorkflows']['statuses']\n input?: Pick<client.ClientInputs['listWorkflows'], 'nextToken' | 'conversationId' | 'userId'> & {\n tags?: typeUtils.AtLeastOneProperty<TBot['workflows'][TWorkflowName]['tags']>\n }\n}) => {\n const ret = await props.client.listWorkflows({\n name: props.workflowName as any,\n statuses: props.statuses,\n ...props.input,\n })\n return {\n ...ret,\n workflows: ret.workflows.map((workflow) =>\n wrapWorkflowInstance<TBot, TWorkflowName>({ client: props.client, workflow })\n ),\n }\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}): WorkflowWithUtilities<TBot, TWorkflowName> => ({\n ...(props.workflow as WorkflowWithUtilities<TBot, TWorkflowName>),\n\n async update(x) {\n const { workflow } = await props.client.updateWorkflow({ id: props.workflow.id, ...x })\n return { workflow: wrapWorkflowInstance<TBot, TWorkflowName>({ client: props.client, 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 return { workflow: wrapWorkflowInstance<TBot, TWorkflowName>({ client: props.client, workflow }) }\n },\n\n async setCompleted({ output } = {}) {\n const { workflow } = await props.client.updateWorkflow({ id: props.workflow.id, status: 'completed', output })\n return { workflow: wrapWorkflowInstance<TBot, TWorkflowName>({ client: props.client, workflow }) }\n },\n\n async cancel() {\n const { workflow } = await props.client.updateWorkflow({ id: props.workflow.id, status: 'cancelled' })\n return { workflow: wrapWorkflowInstance<TBot, TWorkflowName>({ client: props.client, workflow }) }\n },\n})\n", "import { z } from '@bpinternal/zui'\nimport { botIdHeader, configurationHeader, operationHeader, typeHeader } from '../../consts'\nimport { BotContext } from './types'\n\nconst botOperationSchema = z.enum(['event_received', 'register', 'unregister', 'ping', 'action_triggered'])\nexport const extractContext = (headers: Record<string, string | undefined>): BotContext => {\n const botId = headers[botIdHeader]\n const base64Configuration = headers[configurationHeader]\n const type = headers[typeHeader]\n const operation = botOperationSchema.parse(headers[operationHeader])\n\n if (!botId) {\n throw new Error('Missing bot headers')\n }\n\n if (!type) {\n throw new Error('Missing type headers')\n }\n\n if (!base64Configuration) {\n throw new Error('Missing configuration headers')\n }\n\n if (!operation) {\n throw new Error('Missing operation headers')\n }\n\n return {\n botId,\n operation,\n type,\n configuration: base64Configuration ? JSON.parse(Buffer.from(base64Configuration, 'base64').toString('utf-8')) : {},\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 { proxyWorkflows, wrapWorkflowInstance } from '../../workflow-proxy'\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 await _acknowledgeWorkflowStart(props, event)\n await _dispatchToHandlers(props, event)\n\n return SUCCESS_RESPONSE\n}\n\nconst _acknowledgeWorkflowStart = async (props: types.ServerProps, event: types.WorkflowUpdateEvent): Promise<void> => {\n if (event.payload.workflow.status !== 'pending') {\n return\n }\n\n // Acknowledge start of workflow processing:\n await props.client.updateWorkflow({ id: event.payload.workflow.id, status: 'in_progress', eventId: event.id })\n}\n\nconst _dispatchToHandlers = async (props: types.ServerProps, event: types.WorkflowUpdateEvent): Promise<void> => {\n const updateType = bridgeUpdateTypeToSnakeCase(event.payload.type)\n const handlers = props.self.workflowHandlers[updateType]?.[event.payload.workflow.name]\n\n for (const handler of handlers!) {\n await handler({\n ...props,\n conversation: event.payload.conversation,\n user: event.payload.user,\n workflow: wrapWorkflowInstance({ ...props, workflow: event.payload.workflow }),\n workflows: proxyWorkflows(props.client),\n })\n }\n}\n", "import type { Server } from 'node:http'\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} from './server'\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 BotHandlers<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(): ActionHandlers<TBot> {\n return new Proxy(\n {},\n {\n get: (_, actionName: string) => {\n let action = this._actionHandlers[actionName]\n if (action) {\n return action\n }\n\n for (const plugin of Object.values(this._plugins)) {\n action = plugin.actionHandlers[actionName]\n if (action) {\n return action\n }\n }\n\n return undefined\n },\n }\n ) as ActionHandlers<TBot>\n }\n\n public get messageHandlers(): MessageHandlersMap<TBot> {\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 = this._messageHandlers[messageName] ?? []\n const selfGlobalHandlers = this._messageHandlers['*'] ?? []\n const selfHandlers = [...selfSpecificHandlers, ...selfGlobalHandlers]\n .sort((a, b) => a.order - b.order)\n .map(({ handler }) => handler)\n return utils.arrays.unique([...pluginHandlers, ...selfHandlers])\n },\n }\n ) as MessageHandlersMap<TBot>\n }\n\n public get eventHandlers(): EventHandlersMap<TBot> {\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 const selfSpecificHandlers = this._eventHandlers[eventName as keyof EventHandlersMap<TBot>] ?? []\n const selfGlobalHandlers = this._eventHandlers['*'] ?? []\n const selfHandlers = [...selfSpecificHandlers, ...selfGlobalHandlers]\n .sort((a, b) => a.order - b.order)\n .map(({ handler }) => handler)\n return utils.arrays.unique([...pluginHandlers, ...selfHandlers])\n },\n }\n ) as EventHandlersMap<TBot>\n }\n\n public get stateExpiredHandlers(): StateExpiredHandlersMap<TBot> {\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 const selfSpecificHandlers =\n this._stateExpiredHandlers[stateName as keyof StateExpiredHandlersMap<TBot>] ?? []\n const selfGlobalHandlers = this._stateExpiredHandlers['*'] ?? []\n const selfHandlers = [...selfSpecificHandlers, ...selfGlobalHandlers]\n .sort((a, b) => a.order - b.order)\n .map(({ handler }) => handler)\n return utils.arrays.unique([...pluginHandlers, ...selfHandlers])\n },\n }\n ) as StateExpiredHandlersMap<TBot>\n }\n\n public get hookHandlers(): HookHandlersMap<TBot> {\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 Function[]) // FIXME: fix typings here\n )\n\n const selfHooks = this._hookHandlers[hookType] ?? {}\n const selfSpecificHandlers = selfHooks[hookDataName] ?? []\n const selfGlobalHandlers = selfHooks['*'] ?? []\n const selfHandlers = [...selfSpecificHandlers, ...selfGlobalHandlers]\n .sort((a, b) => a.order - b.order)\n .map(({ handler }) => handler)\n\n return utils.arrays.unique([...pluginHandlers, ...selfHandlers])\n },\n }\n )\n },\n }\n ) as HookHandlersMap<TBot>\n }\n\n public get workflowHandlers(): WorkflowHandlersMap<TBot> {\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]?.sort((a, b) => a.order - b.order).map(({ handler }) => handler) ?? []\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 WorkflowHandlersMap<TBot>\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 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 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 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\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\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 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\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 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,\n RecurringEventDefinition,\n EventDefinition,\n ConfigurationDefinition,\n UserDefinition,\n ConversationDefinition,\n MessageDefinition,\n ActionDefinition,\n TableDefinition,\n WorkflowDefinition,\n} from '../bot/definition'\nimport { IntegrationPackage, InterfacePackage } from '../package'\nimport { ZuiObjectSchema } from '../zui'\n\nexport {\n StateDefinition,\n RecurringEventDefinition,\n EventDefinition,\n ConfigurationDefinition,\n UserDefinition,\n ConversationDefinition,\n MessageDefinition,\n ActionDefinition,\n TableDefinition,\n IntegrationConfigInstance,\n WorkflowDefinition,\n} from '../bot/definition'\n\ntype BaseConfig = ZuiObjectSchema\ntype BaseStates = Record<string, ZuiObjectSchema>\ntype BaseEvents = Record<string, ZuiObjectSchema>\ntype BaseActions = Record<string, ZuiObjectSchema>\ntype BaseInterfaces = Record<string, any>\ntype BaseIntegrations = Record<string, any>\ntype BaseTables = Record<string, ZuiObjectSchema>\ntype BaseWorkflows = Record<string, ZuiObjectSchema>\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 integrations?: {\n [K in keyof TIntegrations]: IntegrationPackage\n }\n interfaces?: {\n [K in keyof TInterfaces]: InterfacePackage\n }\n user?: UserDefinition\n conversation?: ConversationDefinition\n message?: MessageDefinition\n states?: {\n [K in keyof TStates]: StateDefinition<TStates[K]>\n }\n configuration?: ConfigurationDefinition<TConfig>\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\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 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: 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\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 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.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 }\n}\n", "import { PluginInterfaceExtensions } from './common'\n\nexport type ParsedActionRef = {\n namespace: string // interface or integration name\n actionName: string\n}\n\nexport type ParsedEventRef = {\n namespace: string // interface or integration name\n eventName: string\n}\n\nconst NAMESPACE_SEPARATOR = ':'\n\nexport const parseActionRef = (actionRef: string): ParsedActionRef | null => {\n const [namespace, method] = actionRef.split(NAMESPACE_SEPARATOR)\n if (!namespace || !method) {\n return null\n }\n return { namespace, actionName: method }\n}\n\nexport const parseEventRef = (eventRef: string): ParsedEventRef | null => {\n const [namespace, event] = eventRef.split(NAMESPACE_SEPARATOR)\n if (!namespace || !event) {\n return null\n }\n return { namespace, eventName: event }\n}\n\nexport const formatActionRef = (actionRef: ParsedActionRef): string => {\n return `${actionRef.namespace}${NAMESPACE_SEPARATOR}${actionRef.actionName}`\n}\n\nexport const formatEventRef = (eventRef: ParsedEventRef): string => {\n return `${eventRef.namespace}${NAMESPACE_SEPARATOR}${eventRef.eventName}`\n}\n\nexport const resolveAction = (\n actionRef: ParsedActionRef,\n interfaces: PluginInterfaceExtensions<any>\n): ParsedActionRef => {\n const interfaceExtension = interfaces[actionRef.namespace] ?? {\n name: actionRef.namespace,\n version: '0.0.0',\n entities: {},\n actions: {},\n events: {},\n channels: {},\n }\n const namespace = interfaceExtension.name\n const actionName = interfaceExtension.actions[actionRef.actionName]?.name ?? actionRef.actionName\n return { namespace, actionName }\n}\n\nexport const resolveEvent = (eventRef: ParsedEventRef, interfaces: PluginInterfaceExtensions<any>): ParsedEventRef => {\n const interfaceExtension = interfaces[eventRef.namespace] ?? {\n name: eventRef.namespace,\n version: '0.0.0',\n entities: {},\n actions: {},\n events: {},\n channels: {},\n }\n const namespace = interfaceExtension.name\n const eventName = interfaceExtension.events[eventRef.eventName]?.name ?? eventRef.eventName\n return { namespace, eventName }\n}\n", "import { Client } from '@botpress/client'\nimport { BotSpecificClient } from '../../bot'\nimport { BasePlugin, PluginInterfaceExtensions, PluginRuntimeProps } from '../common'\nimport { resolveAction, formatActionRef } from '../interface-resolution'\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, prop1) => {\n return new Proxy(\n {},\n {\n get: (_target, prop2) => {\n return (input: Record<string, any>) =>\n _callAction({\n client,\n interfaces: props.interfaces,\n integrationOrInterfaceName: prop1 as string,\n methodName: prop2 as string,\n input,\n })\n },\n }\n )\n },\n }\n ) as ActionProxy<TPlugin>\n\ntype CallActionsProps = {\n client: BotSpecificClient<any> | Client\n interfaces: PluginInterfaceExtensions<any>\n integrationOrInterfaceName: string\n methodName: string\n input: Record<string, any>\n}\nconst _callAction = async ({ client, interfaces, integrationOrInterfaceName, methodName, input }: CallActionsProps) => {\n const resolvedAction = resolveAction(\n {\n namespace: integrationOrInterfaceName,\n actionName: methodName,\n },\n interfaces\n )\n const type = formatActionRef(resolvedAction)\n const response = await client.callAction({\n type,\n input,\n })\n return response.output\n}\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): Promise<void> {\n await this._client.setState({\n type: this._stateType,\n name: this._stateName,\n id,\n payload,\n })\n return\n }\n\n public async getOrSet(id: string, payload: TPayload): Promise<TPayload> {\n return await this._client\n .getOrSetState({\n type: this._stateType,\n name: this._stateName,\n id,\n payload,\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 ActionHandlers as BotActionHandlers,\n BotHandlers,\n BotSpecificClient,\n WorkflowUpdateType,\n} from '../bot'\nimport { WorkflowProxy, proxyWorkflows } from '../bot/workflow-proxy'\nimport * as utils from '../utils'\nimport { ActionProxy, proxyActions } from './action-proxy'\nimport { BasePlugin, PluginConfiguration, PluginInterfaceExtensions, PluginRuntimeProps } from './common'\nimport { formatEventRef, parseEventRef, resolveEvent } from './interface-resolution'\nimport {\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 ActionHandlerPayloads,\n MessagePayloads,\n EventPayloads,\n StateExpiredPayloads,\n HookInputs as HookPayloads,\n WorkflowPayloads,\n HookDefinitionType,\n} from './server/types'\nimport { proxyStates, StateProxy } from './state-proxy'\n\nexport type PluginImplementationProps<TPlugin extends BasePlugin = BasePlugin> = {\n actions: ActionHandlers<TPlugin>\n}\n\ntype Tools<TPlugin extends BasePlugin = BasePlugin> = {\n configuration: PluginConfiguration<TPlugin>\n interfaces: PluginInterfaceExtensions<TPlugin>\n actions: ActionProxy<TPlugin>\n states: StateProxy<TPlugin>\n workflows: WorkflowProxy<TPlugin>\n alias?: string\n}\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, 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) as WorkflowProxy<BasePlugin>\n\n return {\n configuration,\n interfaces,\n actions,\n states,\n alias,\n workflows,\n }\n }\n\n public get actionHandlers(): BotActionHandlers<TPlugin> {\n return new Proxy(\n {},\n {\n get: (_, 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: ActionHandlerPayloads<any>[string]) => handler({ ...input, ...this._getTools(input.client) }),\n handler.name\n )\n },\n }\n ) as BotActionHandlers<TPlugin>\n }\n\n public get messageHandlers(): BotMessageHandlersMap<TPlugin> {\n return new Proxy(\n {},\n {\n get: (_, messageName: string) => {\n messageName = this._stripAliasPrefix(messageName)\n const specificHandlers = 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: MessagePayloads<any>[string]) => handler({ ...input, ...this._getTools(input.client) }),\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: (_, 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 = 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: EventPayloads<any>[string]) => 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: (_, stateName: string) => {\n stateName = this._stripAliasPrefix(stateName)\n\n const specificHandlers = 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: StateExpiredPayloads<any>[string]) => 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: (_, hookDataName: string) => {\n hookDataName = this._stripAliasPrefix(hookDataName)\n\n const specificHandlers = hooks[hookDataName] ?? []\n\n // for \"before_incoming_event\", \"after_incoming_event\" and other event related hooks\n const interfaceHandlers = Object.entries(\n hooks as Record<string, { handler: Function; order: number }[]> // TODO: fix typing here\n )\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: HookPayloads<any>[HookDefinitionType][string]) =>\n handler({ ...input, ...this._getTools(input.client) }),\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 (input: WorkflowPayloads<any>[string]) => handler({ ...input, ...this._getTools(input.client) }),\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<MessageHandlersMap<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 MessageHandlers<any>[string],\n order: this._registerOrder++,\n })\n },\n\n event: <T extends utils.types.StringKeys<EventHandlersMap<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 EventHandlers<any>[string],\n order: this._registerOrder++,\n })\n },\n\n stateExpired: <T extends utils.types.StringKeys<StateExpiredHandlersMap<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 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 { handler: handler as HookHandlers<any>['before_incoming_event'][string], order: this._registerOrder++ }\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 { handler: handler as HookHandlers<any>['before_incoming_message'][string], order: this._registerOrder++ }\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 { handler: handler as HookHandlers<any>['before_outgoing_message'][string], order: this._registerOrder++ }\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 { handler: handler as HookHandlers<any>['before_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 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 { handler: handler as HookHandlers<any>['before_incoming_call_action'][string], order: this._registerOrder++ }\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 { handler: handler as HookHandlers<any>['after_incoming_event'][string], order: this._registerOrder++ }\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 { handler: handler as HookHandlers<any>['after_incoming_message'][string], order: this._registerOrder++ }\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 { handler: handler as HookHandlers<any>['after_outgoing_message'][string], order: this._registerOrder++ }\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 { 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<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 { 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<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 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 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 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 parsedRef = parseEventRef(actualEventRef)\n if (!parsedRef) {\n return false\n }\n const resolvedRef = resolveEvent(parsedRef, this._runtime.interfaces)\n const formattedRef = formatEventRef(resolvedRef)\n return formattedRef === targetEventRef\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"],
5
5
  "mappings": "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ACA,MACA,KACA,MACA,KACA,MACA,MACA,MACA,MACA,MACA,UACA,MACA,MACA,KACF,EAEMG,GAAW,CAAC,IAAK,KAAM,KAAK,EAE5BD,GAAe,CACnB,MACA,OACA,MACA,KACA,KACA,KACA,OACA,OACA,UACA,QACA,QACA,QACA,KACA,SACA,QACA,QACA,UACA,SACA,WACA,MACA,OACA,OACA,SACA,MACA,QACF,EAEMD,GAAe,CACnB,QACA,QACA,SACA,QACA,UACA,QACA,QACA,SACA,KACA,aACA,SACA,SACA,QACA,UACA,SACA,UACA,UACA,SACA,MACA,KACA,aACA,UACA,OACA,SACA,SACA,YACA,MACA,OACA,KACA,cACA,SACA,cACA,aACA,OACA,OACA,OACA,KACA,MACA,KACA,OACA,MACA,UACA,OACA,OACA,YACA,QACA,UACA,aACA,KACA,SACA,QACA,aACA,QACA,KACA,OACA,QACA,OACA,SACA,UACA,iBACA,iBACF,EAEMF,GAAc,CAClB,MACA,KACA,KACA,KACA,KACA,MACA,KACA,UACA,MACA,WACA,SACA,MACA,KACA,QACA,KACA,MACA,OACA,OACA,MACA,KACA,OACA,SACA,OACA,OACA,WACA,MACA,MACA,MACA,QACA,YACA,KACA,QACA,MACA,MACA,MACA,MACA,SACA,OACA,OACA,KACA,aACA,MACA,MACA,MACA,OACA,MACA,SACF,EC5hBO,SAASK,GAAgCC,EAAsB,CACpE,OAAI,OAAOA,GAAM,SACR,SAEL,OAAOA,GAAM,SAER,GADKA,EAAE,SAAS,KAGlBC,GAA2BD,CAAC,CACrC,CATgBtG,EAAAqG,GAAA,iCAAA,EAcT,SAASE,GAA2BD,EAAsB,CAC/D,OAAI,OAAOA,EAAM,IACR,YAEL,OAAOA,GAAM,SACXA,EAAE,YACG,UAAUC,GAA2BD,EAAE,WAAW,KAEpD,WAEL,OAAOA,GAAM,SAER,UADKA,EAAE,SAAS,KAGlB,KAAK,UAAUA,CAAC,CACzB,CAfgBtG,EAAAuG,GAAA,4BAAA,EAoBT,SAASC,GAAyBF,EAAoB,CAC3D,OAAI,O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",
6
6
  "names": ["require_react_production_min", "__commonJSMin", "exports", "l", "n", "p", "q", "r", "t", "u", "v", "w", "x", "y", "z", "A", "a", "B", "C", "D", "E", "b", "e", "F", "G", "H", "I", "J", "K", "L", "M", "d", "c", "k", "h", "g", "f", "m", "N", "O", "escape", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "require_react_development", "__commonJSMin", "exports", "module", "ReactVersion", "REACT_ELEMENT_TYPE", "REACT_PORTAL_TYPE", "REACT_FRAGMENT_TYPE", "REACT_STRICT_MODE_TYPE", "REACT_PROFILER_TYPE", "REACT_PROVIDER_TYPE", "REACT_CONTEXT_TYPE", "REACT_FORWARD_REF_TYPE", "REACT_SUSPENSE_TYPE", "REACT_SUSPENSE_LIST_TYPE", "REACT_MEMO_TYPE", "REACT_LAZY_TYPE", "REACT_OFFSCREEN_TYPE", "MAYBE_ITERATOR_SYMBOL", "FAUX_ITERATOR_SYMBOL", "getIteratorFn", "maybeIterable", "maybeIterator", "ReactCurrentDispatcher", "ReactCurrentBatchConfig", "ReactCurrentActQueue", "ReactCurrentOwner", "ReactDebugCurrentFrame", "currentExtraStackFrame", "setExtraStackFrame", "stack", "impl", "enableScopeAPI", "enableCacheElement", "enableTransitionTracing", "enableLegacyHidden", "enableDebugTracing", "ReactSharedInternals", "warn", "format", "_len", "args", "_key", "printWarning", "error", "_len2", "_key2", "level", "argsWithFormat", "item", "didWarnStateUpdateForUnmountedComponent", "warnNoop", "publicInstance", "callerName", "_constructor", "componentName", "warningKey", "ReactNoopUpdateQueue", "callback", "completeState", "partialState", "assign", "emptyObject", "Component", "props", "context", "updater", "deprecatedAPIs", "defineDeprecationWarning", "methodName", "info", "fnName", "ComponentDummy", "PureComponent", "pureComponentPrototype", "createRef", "refObject", "isArrayImpl", "isArray", "a", "typeName", "value", "hasToStringTag", "type", "willCoercionThrow", "testStringCoercion", "checkKeyStringCoercion", "getWrappedName", "outerType", "innerType", "wrapperName", "displayName", "functionName", "getContextName", "getComponentNameFromType", "provider", "outerName", "lazyComponent", "payload", "init", "hasOwnProperty", "RESERVED_PROPS", "specialPropKeyWarningShown", "specialPropRefWarningShown", "didWarnAboutStringRefs", "hasValidRef", "config", "getter", "hasValidKey", "defineKeyPropWarningGetter", "warnAboutAccessingKey", "defineRefPropWarningGetter", "warnAboutAccessingRef", "warnIfStringRefCannotBeAutoConverted", "ReactElement", "key", "ref", "self", "source", "owner", "element", "createElement", "children", "propName", "childrenLength", "childArray", "i", "defaultProps", "cloneAndReplaceKey", "oldElement", "newKey", "newElement", "cloneElement", "isValidElement", "object", "SEPARATOR", "SUBSEPARATOR", "escape", "escapeRegex", "escaperLookup", "escapedString", "match", "didWarnAboutMaps", "userProvidedKeyEscapeRegex", "escapeUserProvidedKey", "text", "getElementKey", "index", "mapIntoArray", "array", "escapedPrefix", "nameSoFar", "invokeCallback", "_child", "mappedChild", "childKey", "escapedChildKey", "c", "child", "nextName", "subtreeCount", "nextNamePrefix", "iteratorFn", "iterableChildren", "iterator", "step", "ii", "childrenString", "mapChildren", "func", "result", "count", "countChildren", "n", "forEachChildren", "forEachFunc", "forEachContext", "toArray", "onlyChild", "createContext", "defaultValue", "hasWarnedAboutUsingNestedContextConsumers", "hasWarnedAboutUsingConsumerProvider", "hasWarnedAboutDisplayNameOnConsumer", "Consumer", "_Provider", "_currentValue", "_currentValue2", "_threadCount", "Uninitialized", "Pending", "Resolved", "Rejected", "lazyInitializer", "ctor", "thenable", "moduleObject", "resolved", "rejected", "pending", "lazy", "lazyType", "propTypes", "newDefaultProps", "newPropTypes", "forwardRef", "render", "elementType", "ownName", "name", "REACT_MODULE_REFERENCE", "isValidElementType", "memo", "compare", "resolveDispatcher", "dispatcher", "useContext", "Context", "realContext", "useState", "initialState", "useReducer", "reducer", "initialArg", "useRef", "initialValue", "useEffect", "create", "deps", "useInsertionEffect", "useLayoutEffect", "useCallback", "useMemo", "useImperativeHandle", "useDebugValue", "formatterFn", "useTransition", "useDeferredValue", "useId", "useSyncExternalStore", "subscribe", "getSnapshot", "getServerSnapshot", "disabledDepth", "prevLog", "prevInfo", "prevWarn", "prevError", "prevGroup", "prevGroupCollapsed", "prevGroupEnd", "disabledLog", "disableLogs", "reenableLogs", "ReactCurrentDispatcher$1", "prefix", "describeBuiltInComponentFrame", "ownerFn", "x", "reentry", "componentFrameCache", "PossiblyWeakMap", "describeNativeComponentFrame", "fn", "construct", "frame", "control", "previousPrepareStackTrace", "previousDispatcher", "Fake", "sample", "sampleLines", "controlLines", "s", "_frame", "syntheticFrame", "describeFunctionComponentFrame", "shouldConstruct", "prototype", "describeUnknownElementTypeFrameInDEV", "loggedTypeFailures", "ReactDebugCurrentFrame$1", "setCurrentlyValidatingElement", "checkPropTypes", "typeSpecs", "values", "location", "has", "typeSpecName", "error$1", "err", "ex", "setCurrentlyValidatingElement$1", "propTypesMisspellWarningShown", "getDeclarationErrorAddendum", "getSourceInfoErrorAddendum", "fileName", "lineNumber", "getSourceInfoErrorAddendumForProps", "elementProps", "ownerHasKeyUseWarning", "getCurrentComponentErrorInfo", "parentType", "parentName", "validateExplicitKey", "currentComponentErrorInfo", "childOwner", "validateChildKeys", "node", "validatePropTypes", "_name", "validateFragmentProps", "fragment", "keys", "createElementWithValidation", "validType", "sourceInfo", "typeString", "didWarnAboutDeprecatedCreateFactory", "createFactoryWithValidation", "validatedFactory", "cloneElementWithValidation", "startTransition", "scope", "options", "prevTransition", "currentTransition", "updatedFibersCount", "didWarnAboutMessageChannel", "enqueueTaskImpl", "enqueueTask", "task", "requireString", "nodeRequire", "channel", "actScopeDepth", "didWarnNoAwaitAct", "act", "prevActScopeDepth", "prevIsBatchingLegacy", "queue", "flushActQueue", "popActScope", "thenableResult", "wasAwaited", "resolve", "reject", "returnValue", "recursivelyFlushAsyncActWork", "_queue", "_thenable", "_thenable2", "isFlushing", "createElement$1", "cloneElement$1", "createFactory", "Children", "require_react", "__commonJSMin", "exports", "module", "src_exports", "__export", "BRAND", "BotImplementation", "BotDefinition", "BotLogger", "BotSpecificClient", "DIRTY", "EMPTY_PATH", "ErrorBoundary", "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", "ZuiForm", "addIssueToContext", "agent", "aimodel", "anyType", "arrayType", "bigIntType", "booleanType", "botIdHeader", "botUserIdHeader", "coerce", "configurationHeader", "configurationTypeHeader", "conversation", "createZodEnum", "cuid2Regex", "cuidRegex", "custom", "datasource", "dateType", "datetimeRegex", "defaultComponentDefinitions", "discriminatedUnionType", "effectsType", "emailRegex", "enumType", "errorUtil", "event", "fromJsonSchema", "fromObject", "functionType", "getErrorMap", "getParsedType", "instanceOfType", "integrationIdHeader", "intent", "intersectionType", "ipv4Regex", "ipv6Regex", "isAborted", "isAsync", "isDirty", "isEmojiRegex", "isValid", "jsonSchemaToZui", "knowledgebase", "late", "lazyType", "literalType", "makeIssue", "mapType", "mergeObjectSchemas", "message", "message_exports", "nanType", "nativeEnumType", "neverType", "nullType", "nullableType", "numberType", "objectType", "objectToZui", "objectUtil", "oboolean", "onumber", "operationHeader", "optionalType", "ostring", "parseBody", "pipelineType", "preprocessType", "processCreateParams", "promiseType", "quotelessJson", "readonlyType", "recordType", "refType", "serve", "setType", "setErrorMap", "strictObjectType", "stringType", "symbolType", "table", "tablerow", "transforms", "tupleType", "typeHeader", "ulidRegex", "undefinedType", "unionType", "unknownType", "user", "util", "uuidRegex", "variable", "voidType", "webhookIdHeader", "withErrorBoundary", "z_exports", "zuiToJsonSchema", "__toCommonJS", "message_exports", "__export", "defaults", "markdown", "import_react", "z_exports", "__export", "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", "datetimeRegex", "defaultType", "discriminatedUnionType", "effectsType", "emailRegex", "enumType", "errorUtil", "event", "fromJsonSchema", "fromObject", "functionType", "getErrorMap", "getParsedType", "instanceOfType", "intent", "intersectionType", "ipv4Regex", "ipv6Regex", "isAborted", "isAsync", "isDirty", "isEmojiRegex", "isValid", "jsonSchemaToZui", "knowledgebase", "late", "lazyType", "literalType", "makeIssue", "mapType", "message", "nanType", "nativeEnumType", "neverType", "nullType", "nullableType", "numberType", "objectType", "objectToZui", "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", "zuiToJsonSchema", "zuiKey", "FormDataContext", "__name", "parseMaskableField", "key", "fieldSchema", "data", "_a", "value", "result", "useFormData", "path", "formContext", "getPathData", "validation", "issue", "pathMatches", "transformedData", "hiddenMask", "disabledMask", "hiddenState", "setObjectPath", "disabledState", "disabled", "hidden", "handlePropertyChange", "formData", "addArrayItem", "defaultData", "getDefaultValues", "currentData", "removeArrayItem", "index", "__spreadValues", "__spreadProps", "obj", "pathLength", "current", "schema", "optional", "_b", "_c", "_d", "isOptional", "FormDataProvider", "children", "setFormData", "formSchema", "disableValidation", "onValidation", "dataTransform", "setHiddenState", "setDisabledState", "React", "object", "prev", "curr", "s", "deepMerge", "target", "source", "output", "useDiscriminator", "discriminator", "discriminatedSchema", "useMemo", "resolveDiscriminator", "resolveDiscriminatedSchema", "useEffect", "anyOf", "def", "v", "acc", "getSchemaType", "resolveComponent", "components", "type", "uiDefinition", "defaultComponent", "componentID", "Component", "params", "path1", "path2", "part", "formatTitle", "title", "separator", "decamelize", "capitalize", "handleSpecialWords", "combine", "word", "text", "words", "lowercaseStr", "uppercaseStr", "special", "specialCase", "acronyms", "prepositions", "conjunctions", "articles", "primitiveToTypscriptLiteralType", "x", "primitiveToTypescriptValue", "unknownToTypescriptValue", "toPropertyKey", "toTypeArgumentName", "name", "nonAlphaNumeric", "t", "getMultilineComment", "description", "descLines", "l", "errors_exports", "JsonSchemaToZuiError", "ObjectToZuiError", "UnrepresentableGenericError", "UnsupportedZuiToJsonSchemaError", "UnsupportedZuiToTypescriptSchemaError", "UnsupportedZuiToTypescriptTypeError", "UntitledDeclarationError", "ZuiToJsonSchemaError", "ZuiToTypescriptSchemaError", "ZuiToTypescriptTypeError", "ZuiTransformError", "_ZuiTransformError", "transform", "_JsonSchemaToZuiError", "_ObjectToZuiError", "_ZuiToJsonSchemaError", "_UnsupportedZuiToJsonSchemaError", "_ZuiToTypescriptSchemaError", "_UnsupportedZuiToTypescriptSchemaError", "_ZuiToTypescriptTypeError", "_UnsupportedZuiToTypescriptTypeError", "_UntitledDeclarationError", "_UnrepresentableGenericError", "Primitives", "isPrimitive", "isArrayOfPrimitives", "p", "stripSpaces", "typings", "_KeyValue", "KeyValue", "_FnParameters", "FnParameters", "_FnReturn", "FnReturn", "_Declaration", "props", "Declaration", "toTypescript", "options", "wrappedSchema", "getDeclarationProps", "dts", "sUnwrapZod", "config", "newConfig", "unwrapDeclaration", "z_default", "innerType", "delimiter", "withoutDesc", "optionalModifier", "args", "i", "argName", "item", "option", "opts", "keyType", "valueType", "input", "declaration", "generics", "getDeclarationType", "declarationType", "freeGlobal", "freeGlobal_default", "freeSelf", "root", "root_default", "Symbol", "Symbol_default", "objectProto", "hasOwnProperty", "nativeObjectToString", "symToStringTag", "getRawTag", "isOwn", "tag", "unmasked", "getRawTag_default", "objectToString", "objectToString_default", "nullTag", "undefinedTag", "baseGetTag", "baseGetTag_default", "isObjectLike", "isObjectLike_default", "symbolTag", "isSymbol", "isSymbol_default", "arrayMap", "array", "iteratee", "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", "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", "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", "reIsDeepProp", "reIsPlainProp", "isKey", "isKey_default", "nativeCreate", "nativeCreate_default", "hashClear", "hashClear_default", "hashDelete", "hashDelete_default", "HASH_UNDEFINED", "hashGet", "hashGet_default", "hashHas", "hashHas_default", "hashSet", "hashSet_default", "Hash", "entries", "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", "baseGet_default", "get", "defaultValue", "get_default", "arrayPush", "values", "offset", "arrayPush_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", "baseGetAllKeys", "keysFunc", "symbolsFunc", "baseGetAllKeys_default", "getAllKeys", "getAllKeys_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", "objValue", "objCtor", "othCtor", "equalObjects_default", "baseIsEqualDeep", "objIsArr", "othIsArr", "objTag", "othTag", "objIsObj", "othIsObj", "isSameTag", "objIsWrapped", "othIsWrapped", "objUnwrapped", "othUnwrapped", "baseIsEqualDeep_default", "baseIsEqual", "baseIsEqual_default", "baseIsMatch", "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", "mapValues", "mapValues_default", "toTypescriptSchema", "left", "right", "items", "mapKeyType", "mapValueType", "argsString", "returns", "uri", "_ParseInputLazyPath", "parent", "handleResult", "ctx", "error", "_ZodType", "_defs", "maybeAsyncResult", "check", "getIssueProperties", "val", "setError", "refinementData", "refinement", "incoming", "defaultValueFunc", "catchValueFunc", "This", "placeholder", "assertIs", "_arg", "assertNever", "_x", "validKeys", "k", "filtered", "e", "arr", "checker", "joinValues", "_", "b", "first", "second", "errorMap", "invalid_type_error", "required_error", "iss", "_ctx", "en_default", "_ZodError", "issues", "sub", "subs", "actualProto", "_mapper", "mapper", "fieldErrors", "processError", "el", "formErrors", "overrideErrorMap", "errorMaps", "issueData", "fullPath", "fullIssue", "errorMessage", "maps", "_ParseStatus", "status", "results", "arrayValue", "syncPairs", "pair", "finalObject", "_ZodAny", "_ZodArray", "defs", "_e", "_f", "tooBig", "tooSmall", "minLength", "maxLength", "len", "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", "discriminatorValue", "discriminatorValues", "compare", "a", "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", "_ZodObject", "shape", "currentShape", "refs", "shapeKeys", "extraKeys", "keyValidator", "unknownKeys", "catchall", "defaultError", "augmentation", "merging", "mask", "newField", "thisShape", "thatShape", "thisProps", "thatProps", "_ZodOptional", "_ZodPipeline", "inResult", "_ZodPromise", "promisified", "_ZodReadonly", "_ZodRecord", "third", "_ZodRef", "_ZodSet", "finalizeSet", "elements", "parsedSet", "element", "minSize", "maxSize", "thisMin", "thatMin", "thisMax", "thatMax", "_emojiRegex", "emojiRegex", "isValidIP", "ip", "version", "_ZodString", "regex", "_ZodSymbol", "_ZodEffects", "effect", "checkCtx", "processed", "executeRefinement", "inner", "base", "preprocess", "_ZodTuple", "rest", "itemIndex", "schemaItems", "schemas", "_ZodUndefined", "_ZodUnion", "handleResults", "unionErrors", "childCtx", "dirty", "_ZodUnknown", "_ZodVoid", "dateTimeRegex", "isRoot", "applyOptions", "zodType", "newType", "hasProperties", "parseAnyDef", "addErrorMessage", "res", "setResponseValueAndErrors", "parseArrayDef", "parseDef", "parseBigintDef", "parseBooleanDef", "parseBrandedDef", "_def", "parseCatchDef", "parseDateDef", "integerDateParser", "parseDefaultDef", "parseEffectsDef", "parseEnumDef", "isJsonSchema7AllOfType", "parseIntersectionDef", "allOf", "unevaluatedProperties", "mergedAllOf", "nestedSchema", "additionalProperties", "__objRest", "parseLiteralDef", "parsedType", "zodPatterns", "parseStringDef", "processPattern", "escapeNonAlphaNumeric", "addFormat", "addPattern", "c", "parseRecordDef", "parseMapDef", "parseNativeEnumDef", "actualValues", "parsedTypes", "parseNeverDef", "parseNullDef", "primitiveMappings", "parseUnionDef", "asUnionOf", "uniqueTypes", "unionOf", "parseNullableDef", "parseNumberDef", "parseObjectDef", "propName", "propDef", "parsedDef", "parseOptionalDef", "innerSchema", "parsePipelineDef", "parsePromiseDef", "parseSetDef", "parseTupleDef", "parseUndefinedDef", "parseUnknownDef", "parseReadonlyDef", "parseRefDef", "forceResolution", "seenItem", "seenSchema", "get$ref", "newItem", "jsonSchema", "selectParser", "addMeta", "getRelativePath", "pathA", "pathB", "typeName", "defaultOptions", "getDefaultOptions", "getRefs", "_options", "currentPath", "zodToJsonSchema", "definitions", "main", "combined", "zuiType", "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", "json", "parseConst", "parseEnum", "parseIfThenElse", "$if", "$then", "$else", "parseNumber", "parseOneOf", "parseObject", "objectSchema", "properties", "propSchema", "hasDefault", "required", "patternProperties", "parsedPatternProperties", "its", "parseString", "parseNullable", "parseRef", "parseDiscriminator", "blockMeta", "parsed", "addDefaults", "evalZuiString", "zuiString", "thrown", "jsonSchemaToZodStr", "jsonSchemaToZod", "code", "evaluationResult", "applyZuiPropsRecursively", "zodField", "jsonSchemaField", "nestedField", "arrayShape", "zodSchema", "_ErrorBoundary", "errorInfo", "ErrorBoundary", "withErrorBoundary", "fallback", "FormElementRenderer", "childProps", "formValid", "componentMeta", "_component", "baseProps", "dataArray", "childPath", "fieldName", "childSchema", "disc", "ZuiForm", "onChange", "useState", "defaults", "defaultComponentDefinitions", "transforms", "mergeObjectSchemas", "a", "b", "aDef", "bDef", "z_exports", "aShape", "bShape", "zui_default", "NonEmptyString", "z_exports", "textMessageSchema", "markdownMessageSchema", "imageMessageSchema", "audioMessageSchema", "videoMessageSchema", "fileMessageSchema", "locationMessageSchema", "cardSchema", "choiceSchema", "carouselSchema", "blocSchema", "blocsSchema", "markdown", "defaults", "botIdHeader", "botUserIdHeader", "integrationIdHeader", "webhookIdHeader", "configurationTypeHeader", "configurationHeader", "operationHeader", "typeHeader", "WELL_KNOWN_ATTRIBUTES", "import_browser_or_node", "log", "parseBody", "req", "serve", "handler", "port", "callback", "defaultCallback", "server", "res", "request", "mapIncomingMessageToRequest", "response", "e", "log", "incoming", "body", "readBody", "headers", "i", "key", "value", "url", "trimPrefix", "prefix", "resolve", "reject", "chunk", "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", "schemaName", "createStore", "props", "record_utils_exports", "e", "k", "isBranded", "schema", "getName", "IntegrationDefinition", "props", "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", "ActionMetadataStore", "cost", "PLUGIN_PREFIX_SEPARATOR", "integrationOperationSchema", "z_exports", "extractContext", "headers", "botId", "botIdHeader", "botUserId", "botUserIdHeader", "integrationId", "integrationIdHeader", "webhookId", "webhookIdHeader", "configurationType", "configurationTypeHeader", "base64Configuration", "configurationHeader", "operation", "operationHeader", "import_util", "BaseLogger", "defaultOptions", "args", "level", "msg", "util", "IntegrationLogger", "BaseLogger", "options", "userId", "conversationId", "visibleToBotOwners", "msg", "extractTracingHeaders", "headers", "acc", "header", "integrationHandler", "instance", "req", "ctx", "extractContext", "traceId", "vanillaClient", "retryConfig", "client", "IntegrationSpecificClient", "logger", "IntegrationLogger", "props", "response", "onWebhook", "onRegister", "onUnregister", "onMessageCreated", "onActionTriggered", "onPing", "onCreateUser", "onCreateConversation", "error", "runtimeError", "_", "incomingRequest", "parseBody", "webhookUrl", "tags", "channel", "conversation", "user", "type", "payload", "message", "channelHandler", "messageHandler", "input", "action", "metadata", "ActionMetadataStore", "IntegrationImplementation", "props", "integrationHandler", "port", "serve", "BotDefinition", "props", "integrationPkg", "config", "self", "pluginPkg", "key", "user1", "user2", "conversation1", "conversation2", "message1", "message2", "states1", "states2", "events1", "events2", "recurringEvents1", "recurringEvents2", "actions1", "actions2", "tables1", "tables2", "workflows1", "workflows2", "obj", "alias", "record_utils_exports", "PLUGIN_PREFIX_SEPARATOR", "import_client", "BotLogger", "BaseLogger", "options", "userId", "conversationId", "workflowId", "eventId", "messageId", "BotSpecificClient", "_client", "_hooks", "x", "operation", "req", "before", "res", "after", "proxyWorkflows", "client", "_", "workflowName", "input", "_listWorkflows", "workflow", "wrapWorkflowInstance", "props", "ret", "x", "failureReason", "output", "botOperationSchema", "z_exports", "extractContext", "headers", "botId", "botIdHeader", "base64Configuration", "configurationHeader", "type", "typeHeader", "operation", "operationHeader", "SUCCESS_RESPONSE", "bridgeUpdateTypeToSnakeCase", "updateType", "WORKFLOW_UPDATE_TYPES", "handleWorkflowUpdateEvent", "rawProps", "event", "props", "_attachWorkflowContextToLogger", "SUCCESS_RESPONSE", "_handleWorkflowUpdate", "updateType", "bridgeUpdateTypeToSnakeCase", "handlers", "_acknowledgeWorkflowStart", "_dispatchToHandlers", "handler", "wrapWorkflowInstance", "proxyWorkflows", "botHandler", "bot", "req", "ctx", "extractContext", "logger", "BotLogger", "vanillaClient", "retryConfig", "botClient", "BotSpecificClient", "beforeOutgoingMessageHooks", "handler", "client", "_getBotTools", "beforeOutgoingCallActionHooks", "res", "afterOutgoingMessageHooks", "type", "afterOutgoingCallActionHooks", "props", "onActionTriggered", "onEventReceived", "onRegister", "onUnregister", "onPing", "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", "proxyWorkflows", "BotImplementation", "props", "_", "actionName", "action", "plugin", "messageName", "pluginHandlers", "selfSpecificHandlers", "selfGlobalHandlers", "selfHandlers", "a", "b", "handler", "array_utils_exports", "eventName", "stateName", "hookType", "hookDataName", "selfHooks", "updateType", "handlersOfType", "workflowName", "type", "botHandler", "port", "serve", "InterfaceDefinition", "props", "entityReferences", "events", "record_utils_exports", "event", "actions", "action", "channels", "channel", "message", "entities", "entityName", "entityDef", "title", "description", "refSchema", "zui_default", "PluginDefinition", "props", "NAMESPACE_SEPARATOR", "parseEventRef", "eventRef", "namespace", "event", "NAMESPACE_SEPARATOR", "formatActionRef", "actionRef", "formatEventRef", "resolveAction", "interfaces", "interfaceExtension", "actionName", "resolveEvent", "eventName", "proxyActions", "client", "props", "_target", "prop1", "prop2", "input", "_callAction", "interfaces", "integrationOrInterfaceName", "methodName", "resolvedAction", "resolveAction", "type", "formatActionRef", "_StateRepo", "_client", "_stateType", "_stateName", "id", "payload", "r", "proxyStates", "client", "props", "_target", "stateType", "stateName", "actualName", "PLUGIN_PREFIX_SEPARATOR", "PluginImplementation", "props", "client", "configuration", "interfaces", "alias", "actions", "proxyActions", "states", "proxyStates", "workflows", "proxyWorkflows", "_", "actionName", "handler", "function_utils_exports", "input", "messageName", "specificHandlers", "globalHandlers", "array_utils_exports", "a", "b", "eventName", "interfaceHandlers", "e", "handlers", "stateName", "hookType", "hooks", "hookDataName", "updateType", "handlersOfType", "workflowName", "type", "actualEventRef", "targetEventRef", "parsedRef", "parseEventRef", "resolvedRef", "resolveEvent", "formatEventRef", "prop", "prefix"]
7
7
  }