UNPKG

@kitiumai/utils-ts

Version:

Comprehensive TypeScript utilities for KitiumAI projects

116 lines 3.17 kB
/** * Integration with @kitiumai/error package * Provides utilities to convert UtilsError to KitiumError format */ import { createUtilsError, isUtilsError, } from '../runtime/error.js'; /** * Check if @kitiumai/error package is available */ export async function isKitiumErrorAvailable() { try { // Try to dynamically import the package await import('@kitiumai/error'); return true; } catch { return false; } } /** * Convert UtilsError to KitiumError shape */ export function toKitiumErrorShape(error) { const shape = { code: `utils/${error.code.toLowerCase()}`, message: error.message, statusCode: 400, // Bad request for utility errors severity: 'error', kind: 'validation', retryable: false, source: '@kitiumai/utils-ts', }; // Only add optional properties if they have values if (error.details) { Object.assign(shape, { context: error.details }); } if (error.cause) { Object.assign(shape, { cause: error.cause }); } return shape; } /** * Create a KitiumError from UtilsError (requires @kitiumai/error as peer dependency) */ export async function toKitiumError(error) { try { // Dynamically import @kitiumai/error const errorModule = await import('@kitiumai/error'); const shape = toKitiumErrorShape(error); return new errorModule.KitiumError(shape); } catch { // Fallback to original error if import fails return error; } } /** * Create a utility error with optional KitiumError conversion */ export async function createUtilsErrorWithKitium(init, convertToKitium = false) { const utilsError = createUtilsError(init); if (convertToKitium) { try { return await toKitiumError(utilsError); } catch { return utilsError; } } return utilsError; } /** * Enrich a UtilsError with KitiumError context (if available) */ export async function enrichUtilsError(error, context) { try { // Try to use enrichError from @kitiumai/error const errorModule = await import('@kitiumai/error'); const kitiumError = await toKitiumError(error); // Check if the converted error is a KitiumError instance if (kitiumError instanceof errorModule.KitiumError) { return errorModule.enrichError(kitiumError, context); } return kitiumError; } catch { // Fallback to local enrichment return createUtilsError({ code: error.code, message: error.message, details: { ...(error.details ?? {}), ...context }, cause: error.cause, }); } } /** * Error mapper utilities */ export const errorMapper = { /** * Check if error is a UtilsError */ isUtilsError, /** * Convert to KitiumError shape */ toKitiumErrorShape, /** * Convert to KitiumError instance */ toKitiumError, /** * Check if KitiumError package is available */ isKitiumErrorAvailable, }; //# sourceMappingURL=error.js.map