{"version":3,"file":"json-to-zod.cjs","names":["its"],"sources":["../src/json-to-zod.ts"],"sourcesContent":["import type { JsonSchema, JsonSchemaObject, Options, Refs } from 'json-schema-to-zod';\nimport jsonSchemaToZodOriginal, {\n  addJsdocs,\n  its,\n  parseAllOf,\n  parseAnyOf,\n  parseOneOf,\n  parseSchema,\n} from 'json-schema-to-zod';\n\nfunction parseObject(objectSchema: JsonSchemaObject & { type: 'object' }, 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          let result = `${JSON.stringify(key)}: ${parseSchema(propSchema!, {\n            ...refs,\n            path: [...refs.path, 'properties', key],\n          })}`;\n\n          if (refs.withJsdocs && typeof propSchema === 'object') {\n            result = addJsdocs(propSchema, result);\n          }\n\n          const hasDefault = typeof propSchema === 'object' && propSchema.default !== undefined;\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 && objectSchema.additionalProperties !== false\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\nconst parserOverride = (schema: JsonSchemaObject, refs: Refs) => {\n  let parsed = '';\n  let seen = refs.seen.get(schema);\n  if (its.an.anyOf(schema)) {\n    const allObjects = schema.anyOf.every(\n      item => typeof item === 'object' && its.an.object(item) && item.properties !== undefined,\n    );\n    if (schema.anyOf.length > 1 && allObjects) {\n      const propertiesWithConst: string[][] = schema.anyOf.reduce((acc, item) => {\n        if (typeof item === 'object' && its.an.object(item)) {\n          const propertyWithConst = Object.entries(item.properties ?? {}).filter(\n            ([_, value]) => typeof value === 'object' && (value as any)?.const !== undefined,\n          );\n          if (propertyWithConst?.length) {\n            const ppties = propertyWithConst.map(([key, _]) => key);\n            acc.push(ppties);\n          }\n        }\n        return acc;\n      }, [] as string[][]);\n\n      if (propertiesWithConst.length === schema.anyOf.length) {\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        const discriminators =\n          propertiesWithConst.length > 0 && propertiesWithConst[0]\n            ? propertiesWithConst.reduce((common, properties) => {\n                return common.filter(prop => properties.includes(prop));\n              }, propertiesWithConst[0])\n            : [];\n\n        if (discriminators.length > 0) {\n          const discriminator = discriminators[0];\n          if (discriminator) {\n            parsed = `z.discriminatedUnion(\"${discriminator}\", [${schema.anyOf\n              .map((schema, i) =>\n                parseSchema(schema, {\n                  ...refs,\n                  path: [...refs.path, 'anyOf', i],\n                }),\n              )\n              .join(', ')}])`;\n          }\n        }\n      }\n    }\n  } else if (its.an.object(schema)) {\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    parsed = parseObject(schema, refs);\n  }\n  if (parsed) {\n    if (!refs.withoutDescribes) {\n      parsed = addDescribes(schema, parsed);\n    }\n\n    if (!refs.withoutDefaults) {\n      parsed = addDefaults(schema, parsed);\n    }\n\n    parsed = addAnnotations(schema, parsed);\n\n    if (seen) {\n      seen.r = parsed;\n    }\n\n    return parsed;\n  }\n};\n\nconst addDescribes = (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 addAnnotations = (schema: JsonSchemaObject, parsed: string): string => {\n  if (schema.readOnly) {\n    parsed += '.readonly()';\n  }\n\n  return parsed;\n};\n\nexport function jsonSchemaToZod(schema: JsonSchema, options: Options = {}): string {\n  const result = jsonSchemaToZodOriginal(schema, { ...options, parserOverride });\n\n  // Fix: The upstream json-schema-to-zod generates TypeScript syntax `reduce<z.ZodError[]>`\n  // in parseOneOf which fails when evaluated at runtime with Function().\n  // This catches any oneOf usage that bypasses our parserOverride (e.g., non-object contexts).\n  // See: https://github.com/mastra-ai/mastra/issues/11610\n  return result.replace(/\\.reduce<[^>]+>/g, '.reduce');\n}\n\n// Re-export all named exports from json-schema-to-zod (excluding the default export)\nexport * from 'json-schema-to-zod';\n"],"mappings":"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"}