{"version":3,"file":"to-standard.cjs","names":["BaseSchema","StringSchemaType","NumberSchemaType","BooleanSchemaType","ObjectSchemaType","OptionalSchema"],"sources":["../src/to-standard.ts"],"sourcesContent":["import type { StandardJSONSchemaV1 } from \"@standard-schema/spec\";\nimport { BaseSchema, OptionalSchema } from \"./core/base\";\nimport type { AnySchema, Schema, SchemaDefinition } from \"./core/types\";\nimport { BooleanSchemaType } from \"./schemas/boolean\";\nimport { NumberSchemaType } from \"./schemas/number\";\nimport { ObjectSchemaType } from \"./schemas/object\";\nimport { StringSchemaType } from \"./schemas/string\";\n\n/**\n * Normalize an `AnySchema` (primitive name, BaseSchema, or schema definition)\n * to a Standard-Schema-compatible object.\n *\n * @param {AnySchema} schema Schema or schema-like value.\n * @returns {Schema<unknown, T>} Standard-schema-shaped object.\n */\nexport function toStandard<T>(schema: AnySchema): Schema<unknown, T> {\n  let standardSchema: Schema<unknown, T>;\n\n  if (schema instanceof BaseSchema) {\n    standardSchema = schema as Schema<unknown, T>;\n  } else if (typeof schema === \"string\") {\n    if (schema === \"string\") {\n      standardSchema = new StringSchemaType() as unknown as Schema<unknown, T>;\n    } else if (schema === \"number\") {\n      standardSchema = new NumberSchemaType() as unknown as Schema<unknown, T>;\n    } else if (schema === \"boolean\") {\n      standardSchema = new BooleanSchemaType() as unknown as Schema<unknown, T>;\n    } else {\n      throw new Error(\"Invalid schema type provided to toStandard\");\n    }\n  } else if (typeof schema === \"object\" && schema !== null && !Array.isArray(schema)) {\n    standardSchema = new ObjectSchemaType<any>(schema as SchemaDefinition) as Schema<unknown, T>;\n  } else {\n    throw new Error(\"Invalid schema type provided to toStandard\");\n  }\n\n  return {\n    ...standardSchema,\n    inferred: null as unknown as T,\n    \"~standard\": standardSchema[\"~standard\"],\n    jsonSchema: standardSchema.jsonSchema,\n    schema: standardSchema,\n    optional: () => new OptionalSchema<unknown, T>(standardSchema),\n    enum: standardSchema.enum.bind(standardSchema),\n    array: standardSchema.array.bind(standardSchema),\n    instanceOf: standardSchema.instanceOf.bind(standardSchema),\n    parse: standardSchema.parse.bind(standardSchema),\n    safeParse: standardSchema.safeParse.bind(standardSchema),\n  };\n}\n\n/**\n * Convert any validation schema to a JSON Schema document.\n *\n * @param {AnySchema} schema Schema to convert.\n * @param {object} [options] Conversion options.\n * @param {string} [options.target=\"draft-2020-12\"] Target JSON Schema draft.\n * @returns {Record<string, unknown>} JSON Schema object.\n */\nexport function getJsonSchema(\n  schema: AnySchema,\n  options: { target?: string } = {},\n): Record<string, unknown> {\n  const std = toStandard(schema);\n  return std[\"~standard\"].jsonSchema.output({\n    target: (options.target ?? \"draft-2020-12\") as StandardJSONSchemaV1.Target,\n  });\n}\n"],"mappings":";;;;;;;;;;;;;AAeA,SAAgB,WAAc,QAAuC;CACnE,IAAI;CAEJ,IAAI,kBAAkBA,aAAAA,YACpB,iBAAiB;MACZ,IAAI,OAAO,WAAW,UAC3B,IAAI,WAAW,UACb,iBAAiB,IAAIC,eAAAA,iBAAiB;MACjC,IAAI,WAAW,UACpB,iBAAiB,IAAIC,eAAAA,iBAAiB;MACjC,IAAI,WAAW,WACpB,iBAAiB,IAAIC,gBAAAA,kBAAkB;MAEvC,MAAM,IAAI,MAAM,4CAA4C;MAEzD,IAAI,OAAO,WAAW,YAAY,WAAW,QAAQ,CAAC,MAAM,QAAQ,MAAM,GAC/E,iBAAiB,IAAIC,eAAAA,iBAAsB,MAA0B;MAErE,MAAM,IAAI,MAAM,4CAA4C;CAG9D,OAAO;EACL,GAAG;EACH,UAAU;EACV,aAAa,eAAe;EAC5B,YAAY,eAAe;EAC3B,QAAQ;EACR,gBAAgB,IAAIC,aAAAA,eAA2B,cAAc;EAC7D,MAAM,eAAe,KAAK,KAAK,cAAc;EAC7C,OAAO,eAAe,MAAM,KAAK,cAAc;EAC/C,YAAY,eAAe,WAAW,KAAK,cAAc;EACzD,OAAO,eAAe,MAAM,KAAK,cAAc;EAC/C,WAAW,eAAe,UAAU,KAAK,cAAc;CACzD;AACF;;;;;;;;;AAUA,SAAgB,cACd,QACA,UAA+B,CAAC,GACP;CAEzB,OADY,WAAW,MACd,CAAC,CAAC,YAAY,CAAC,WAAW,OAAO,EACxC,QAAS,QAAQ,UAAU,gBAC7B,CAAC;AACH"}