UNPKG

@ai2070/l0

Version:

L0: The Missing Reliability Substrate for AI

76 lines 2.33 kB
export function isEffectSchema(value) { if (!value) return false; if (typeof value !== "object" && typeof value !== "function") return false; const schema = value; return ("ast" in schema && schema.ast !== undefined && typeof schema.pipe === "function"); } export function isEffectParseError(error) { if (!error || typeof error !== "object") return false; const err = error; return err._tag === "ParseError" && "issue" in err; } export function isEffectRight(result) { return result._tag === "Right"; } export function isEffectLeft(result) { return result._tag === "Left"; } let effectAdapter = null; export function registerEffectSchemaAdapter(adapter) { effectAdapter = adapter; } export function unregisterEffectSchemaAdapter() { effectAdapter = null; } export function hasEffectSchemaAdapter() { return effectAdapter !== null; } export function getEffectSchemaAdapter() { if (!effectAdapter) { throw new Error("Effect Schema adapter not registered. Call registerEffectSchemaAdapter() first."); } return effectAdapter; } export function safeDecodeEffectSchema(schema, data) { const adapter = getEffectSchemaAdapter(); const result = adapter.decodeUnknownEither(schema, data); if (isEffectRight(result)) { return { success: true, data: result.right }; } else { return { success: false, error: result.left }; } } export function getEffectErrorMessage(error) { if (effectAdapter) { return effectAdapter.formatError(error); } return error.message || "Schema validation failed"; } export function wrapEffectSchema(schema) { return { _tag: "effect", parse(data) { const adapter = getEffectSchemaAdapter(); return adapter.decodeUnknownSync(schema, data); }, safeParse(data) { const result = safeDecodeEffectSchema(schema, data); if (result.success) { return { success: true, data: result.data }; } else { return { success: false, error: new Error(getEffectErrorMessage(result.error)), }; } }, }; } //# sourceMappingURL=effectSchemaCompat.js.map