@kitiumai/utils-ts
Version:
Comprehensive TypeScript utilities for KitiumAI projects
116 lines • 3.17 kB
JavaScript
/**
* 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