UNPKG

@ai2070/l0

Version:

L0: The Missing Reliability Substrate for AI

85 lines (84 loc) 2.31 kB
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 !== void 0 && typeof schema.pipe === "function"; } function isEffectParseError(error) { if (!error || typeof error !== "object") return false; const err = error; return err._tag === "ParseError" && "issue" in err; } function isEffectRight(result) { return result._tag === "Right"; } function isEffectLeft(result) { return result._tag === "Left"; } let effectAdapter = null; function registerEffectSchemaAdapter(adapter) { effectAdapter = adapter; } function unregisterEffectSchemaAdapter() { effectAdapter = null; } function hasEffectSchemaAdapter() { return effectAdapter !== null; } function getEffectSchemaAdapter() { if (!effectAdapter) { throw new Error( "Effect Schema adapter not registered. Call registerEffectSchemaAdapter() first." ); } return effectAdapter; } 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 }; } } function getEffectErrorMessage(error) { if (effectAdapter) { return effectAdapter.formatError(error); } return error.message || "Schema validation failed"; } 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)) }; } } }; } export { getEffectErrorMessage, getEffectSchemaAdapter, hasEffectSchemaAdapter, isEffectLeft, isEffectParseError, isEffectRight, isEffectSchema, registerEffectSchemaAdapter, safeDecodeEffectSchema, unregisterEffectSchemaAdapter, wrapEffectSchema }; //# sourceMappingURL=effectSchemaCompat.js.map