every-plugin
Version:
165 lines (163 loc) • 4.17 kB
JavaScript
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
const require_runtime = require('./_virtual/_rolldown/runtime.cjs');
require('./zod.cjs');
const require_errors = require('./runtime/errors.cjs');
let zod = require("zod");
//#region src/errors.ts
/**
* Error pattern constants for categorizing infrastructure errors
*/
const ERROR_PATTERNS = {
CONNECTION_REFUSED: ["ECONNREFUSED"],
HOST_NOT_FOUND: ["ENOTFOUND", "EHOSTUNREACH"],
TIMEOUT: [
"ETIMEDOUT",
"ESOCKETTIMEDOUT",
"timeout"
],
CONNECTION_RESET: ["ECONNRESET", "EPIPE"],
PERMISSION: [
"EACCES",
"EPERM",
"permission denied"
],
AUTH: [
"401",
"unauthorized",
"authentication failed"
],
RATE_LIMITED: [
"429",
"too many requests",
"rate limit"
],
SERVICE_UNAVAILABLE: ["503", "service unavailable"]
};
/**
* Common error schemas for plugin contracts.
* Import individually or use the grouped PluginErrors export.
*
* @example
* ```typescript
* import { NOT_FOUND, FORBIDDEN, UNAUTHORIZED } from "every-plugin/errors";
*
* export const contract = oc.router({
* getData: oc.route(...)
* .errors({ NOT_FOUND, FORBIDDEN, UNAUTHORIZED })
* });
* ```
*/
const UNAUTHORIZED = {
status: 401,
data: zod.object({
apiKeyProvided: zod.boolean(),
provider: zod.string().optional(),
authType: zod.enum([
"apiKey",
"oauth",
"token"
]).optional()
})
};
const RATE_LIMITED = {
status: 429,
data: zod.object({
retryAfter: zod.number().int().min(1),
remainingRequests: zod.number().int().min(0).optional(),
resetTime: zod.string().datetime().optional(),
limitType: zod.enum([
"requests",
"tokens",
"bandwidth"
]).optional()
})
};
const SERVICE_UNAVAILABLE = {
status: 503,
data: zod.object({
retryAfter: zod.number().int().optional(),
maintenanceWindow: zod.boolean().default(false),
estimatedUptime: zod.string().datetime().optional()
})
};
const BAD_REQUEST = {
status: 400,
data: zod.object({
invalidFields: zod.array(zod.string()).optional(),
validationErrors: zod.array(zod.object({
field: zod.string(),
message: zod.string(),
code: zod.string().optional()
})).optional()
})
};
const NOT_FOUND = {
status: 404,
data: zod.object({
resource: zod.string().optional(),
resourceId: zod.string().optional()
})
};
const FORBIDDEN = {
status: 403,
data: zod.object({
requiredPermissions: zod.array(zod.string()).optional(),
action: zod.string().optional()
})
};
const TIMEOUT = {
status: 504,
data: zod.object({
timeoutMs: zod.number().int().min(0).optional(),
operation: zod.string().optional(),
retryable: zod.boolean().default(true)
})
};
const CONNECTION_ERROR = {
status: 502,
data: zod.object({
errorCode: zod.string().optional(),
host: zod.string().optional(),
port: zod.number().int().optional(),
suggestion: zod.string().optional()
})
};
/**
* Grouped export for all plugin errors.
* Use individual imports for cleaner code.
*/
const PluginErrors = {
UNAUTHORIZED,
RATE_LIMITED,
SERVICE_UNAVAILABLE,
BAD_REQUEST,
NOT_FOUND,
FORBIDDEN,
TIMEOUT,
CONNECTION_ERROR
};
/**
* @deprecated Use individual imports or PluginErrors instead
*/
const CommonPluginErrors = PluginErrors;
//#endregion
exports.BAD_REQUEST = BAD_REQUEST;
exports.CONNECTION_ERROR = CONNECTION_ERROR;
exports.CommonPluginErrors = CommonPluginErrors;
exports.ERROR_PATTERNS = ERROR_PATTERNS;
exports.FORBIDDEN = FORBIDDEN;
exports.ModuleFederationError = require_errors.ModuleFederationError;
exports.NOT_FOUND = NOT_FOUND;
exports.PluginErrors = PluginErrors;
exports.PluginRuntimeError = require_errors.PluginRuntimeError;
exports.RATE_LIMITED = RATE_LIMITED;
exports.SERVICE_UNAVAILABLE = SERVICE_UNAVAILABLE;
exports.TIMEOUT = TIMEOUT;
exports.UNAUTHORIZED = UNAUTHORIZED;
exports.ValidationError = require_errors.ValidationError;
exports.extractFromFiberFailure = require_errors.extractFromFiberFailure;
exports.formatORPCError = require_errors.formatORPCError;
exports.isRetryableORPCCode = require_errors.isRetryableORPCCode;
exports.toPluginRuntimeError = require_errors.toPluginRuntimeError;
exports.wrapORPCError = require_errors.wrapORPCError;
//# sourceMappingURL=errors.cjs.map