@mitre/nuxt-smartscript
Version:
Smart typography transformations for Nuxt - automatic superscript, subscript, and symbol formatting
56 lines (55 loc) • 1.41 kB
JavaScript
export class SmartScriptError extends Error {
constructor(message, code, details) {
super(message);
this.code = code;
this.details = details;
this.name = "SmartScriptError";
Error.captureStackTrace(this, SmartScriptError);
}
}
export const ErrorCodes = {
CONFIG_INVALID: "CONFIG_INVALID",
PATTERN_INVALID: "PATTERN_INVALID",
DOM_OPERATION_FAILED: "DOM_OPERATION_FAILED",
OBSERVER_FAILED: "OBSERVER_FAILED",
PROCESSING_FAILED: "PROCESSING_FAILED"
};
export function handleError(error, context) {
if (process.env.NODE_ENV === "development") {
console.error(`[SmartScript] ${context}:`, error);
} else {
console.warn(`[SmartScript] ${context}`);
}
}
export function safeExecute(operation, fallback, context) {
try {
return operation();
} catch (error) {
handleError(error, context);
return fallback;
}
}
export async function safeExecuteAsync(operation, fallback, context) {
try {
return await operation();
} catch (error) {
handleError(error, context);
return fallback;
}
}
export function sanitizeSelector(selector) {
try {
document.querySelector(selector);
return selector;
} catch {
return null;
}
}
export function withTimeout(promise, timeoutMs, timeoutError) {
return Promise.race([
promise,
new Promise(
(_, reject) => setTimeout(() => reject(timeoutError), timeoutMs)
)
]);
}