{"version":3,"file":"adapter.cjs","names":["isStandardJSONSchema","isStandardSchema"],"sources":["../../src/state/adapter.ts"],"sourcesContent":["/**\n * Adapter utilities for working with Standard Schema.\n */\nimport type { SerializableSchema } from \"./types.js\";\nimport { isStandardJSONSchema, isStandardSchema } from \"./types.js\";\n\n/**\n * Get the JSON schema from a SerializableSchema.\n */\nexport function getJsonSchemaFromSchema(\n  schema: SerializableSchema | unknown\n): Record<string, unknown> | undefined {\n  if (isStandardJSONSchema(schema)) {\n    try {\n      const standard = schema[\"~standard\"];\n      return standard.jsonSchema.input({ target: \"draft-07\" });\n    } catch {\n      return undefined;\n    }\n  }\n  return undefined;\n}\n\n/**\n * Detect if a schema has a default value by validating `undefined`.\n *\n * Uses the Standard Schema `~standard.validate` API to detect defaults.\n * If the schema accepts `undefined` and returns a value, that value is the default.\n *\n * This approach is library-agnostic and works with any Standard Schema compliant\n * library (Zod, Valibot, ArkType, etc.) without needing to introspect internals.\n *\n * @param schema - The schema to check for a default value.\n * @returns A factory function returning the default, or undefined if no default exists.\n *\n * @example\n * ```ts\n * const getter = getSchemaDefaultGetter(z.string().default(\"hello\"));\n * getter?.(); // \"hello\"\n *\n * const noDefault = getSchemaDefaultGetter(z.string());\n * noDefault; // undefined\n * ```\n */\nexport function getSchemaDefaultGetter(\n  schema: SerializableSchema | unknown\n): (() => unknown) | undefined {\n  if (schema == null) {\n    return undefined;\n  }\n\n  if (!isStandardSchema(schema)) {\n    return undefined;\n  }\n\n  try {\n    const result = schema[\"~standard\"].validate(undefined);\n\n    // Handle sync result (not a Promise)\n    // Default values are always synchronous - async validation only happens\n    // with async refinements, which don't affect default value resolution.\n    if (\n      result &&\n      typeof result === \"object\" &&\n      !(\"then\" in result && typeof result.then === \"function\")\n    ) {\n      const syncResult = result as { issues?: unknown; value?: unknown };\n      if (!syncResult.issues) {\n        const defaultValue = syncResult.value;\n        return () => defaultValue;\n      }\n    }\n  } catch {\n    // Validation threw - no default\n  }\n\n  return undefined;\n}\n"],"mappings":";;;;;AASA,SAAgB,wBACd,QACqC;AACrC,KAAIA,cAAAA,qBAAqB,OAAO,CAC9B,KAAI;AAEF,SADiB,OAAO,aACR,WAAW,MAAM,EAAE,QAAQ,YAAY,CAAC;SAClD;AACN;;;;;;;;;;;;;;;;;;;;;;;;AA2BN,SAAgB,uBACd,QAC6B;AAC7B,KAAI,UAAU,KACZ;AAGF,KAAI,CAACC,cAAAA,iBAAiB,OAAO,CAC3B;AAGF,KAAI;EACF,MAAM,SAAS,OAAO,aAAa,SAAS,KAAA,EAAU;AAKtD,MACE,UACA,OAAO,WAAW,YAClB,EAAE,UAAU,UAAU,OAAO,OAAO,SAAS,aAC7C;GACA,MAAM,aAAa;AACnB,OAAI,CAAC,WAAW,QAAQ;IACtB,MAAM,eAAe,WAAW;AAChC,iBAAa;;;SAGX"}