@orpc/shared
Advanced tools
Comparing version 0.0.0-next.55d0b4f to 0.0.0-next.6a8bf13
@@ -1,73 +0,11 @@ | ||
// src/error.ts | ||
import { ZodError } from "zod"; | ||
var ORPC_ERROR_CODE_STATUSES = { | ||
BAD_REQUEST: 400, | ||
UNAUTHORIZED: 401, | ||
FORBIDDEN: 403, | ||
NOT_FOUND: 404, | ||
METHOD_NOT_SUPPORTED: 405, | ||
NOT_ACCEPTABLE: 406, | ||
TIMEOUT: 408, | ||
CONFLICT: 409, | ||
PRECONDITION_FAILED: 412, | ||
PAYLOAD_TOO_LARGE: 413, | ||
UNSUPPORTED_MEDIA_TYPE: 415, | ||
UNPROCESSABLE_CONTENT: 422, | ||
TOO_MANY_REQUESTS: 429, | ||
CLIENT_CLOSED_REQUEST: 499, | ||
INTERNAL_SERVER_ERROR: 500, | ||
NOT_IMPLEMENTED: 501, | ||
BAD_GATEWAY: 502, | ||
SERVICE_UNAVAILABLE: 503, | ||
GATEWAY_TIMEOUT: 504 | ||
}; | ||
var ORPCError = class _ORPCError extends Error { | ||
constructor(zz$oe) { | ||
if (zz$oe.status && (zz$oe.status < 400 || zz$oe.status >= 600)) { | ||
throw new Error("The ORPCError status code must be in the 400-599 range."); | ||
} | ||
super(zz$oe.message, { cause: zz$oe.cause }); | ||
this.zz$oe = zz$oe; | ||
} | ||
get code() { | ||
return this.zz$oe.code; | ||
} | ||
get status() { | ||
return this.zz$oe.status ?? ORPC_ERROR_CODE_STATUSES[this.code]; | ||
} | ||
get data() { | ||
return this.zz$oe.data; | ||
} | ||
get issues() { | ||
if (this.code === "BAD_REQUEST" && this.zz$oe.cause instanceof ZodError) { | ||
return this.zz$oe.cause.issues; | ||
} | ||
return void 0; | ||
} | ||
toJSON() { | ||
return { | ||
code: this.code, | ||
status: this.status, | ||
message: this.message, | ||
data: this.data, | ||
issues: this.issues | ||
}; | ||
} | ||
static fromJSON(json) { | ||
if (typeof json !== "object" || json === null || !("code" in json) || !Object.keys(ORPC_ERROR_CODE_STATUSES).find((key) => json.code === key) || !("status" in json) || typeof json.status !== "number" || "message" in json && json.message !== void 0 && typeof json.message !== "string" || "issues" in json && json.issues !== void 0 && !Array.isArray(json.issues)) { | ||
return void 0; | ||
} | ||
return new _ORPCError({ | ||
code: json.code, | ||
status: json.status, | ||
message: Reflect.get(json, "message"), | ||
data: Reflect.get(json, "data"), | ||
cause: "issues" in json ? new ZodError(json.issues) : void 0 | ||
}); | ||
} | ||
}; | ||
import { | ||
ORPCError, | ||
ORPC_ERROR_CODE_STATUSES, | ||
convertToStandardError | ||
} from "./chunk-4KZEIATV.js"; | ||
export { | ||
ORPCError, | ||
ORPC_ERROR_CODE_STATUSES | ||
ORPC_ERROR_CODE_STATUSES, | ||
convertToStandardError | ||
}; | ||
//# sourceMappingURL=error.js.map |
@@ -0,1 +1,63 @@ | ||
import { | ||
convertToStandardError | ||
} from "./chunk-4KZEIATV.js"; | ||
// src/hook.ts | ||
async function executeWithHooks(options) { | ||
const executes = convertToArray(options.hooks?.execute); | ||
const onStarts = convertToArray(options.hooks?.onStart); | ||
const onSuccesses = convertToArray(options.hooks?.onSuccess); | ||
const onErrors = convertToArray(options.hooks?.onError); | ||
const onFinishes = convertToArray(options.hooks?.onFinish); | ||
let currentExecuteIndex = 0; | ||
const next = async () => { | ||
const execute = executes[currentExecuteIndex]; | ||
if (execute) { | ||
currentExecuteIndex++; | ||
return await execute(options.input, options.context, { | ||
...options.meta, | ||
next | ||
}); | ||
} | ||
let state = { status: "pending", input: options.input, output: void 0, error: void 0 }; | ||
try { | ||
for (const onStart of onStarts) { | ||
await onStart(state, options.context, options.meta); | ||
} | ||
const output = await options.execute(); | ||
state = { status: "success", input: options.input, output, error: void 0 }; | ||
for (let i = onSuccesses.length - 1; i >= 0; i--) { | ||
await onSuccesses[i](state, options.context, options.meta); | ||
} | ||
} catch (e) { | ||
state = { status: "error", input: options.input, error: convertToStandardError(e), output: void 0 }; | ||
for (let i = onErrors.length - 1; i >= 0; i--) { | ||
try { | ||
await onErrors[i](state, options.context, options.meta); | ||
} catch (e2) { | ||
state = { status: "error", input: options.input, error: convertToStandardError(e2), output: void 0 }; | ||
} | ||
} | ||
} | ||
for (let i = onFinishes.length - 1; i >= 0; i--) { | ||
try { | ||
await onFinishes[i](state, options.context, options.meta); | ||
} catch (e) { | ||
state = { status: "error", input: options.input, error: convertToStandardError(e), output: void 0 }; | ||
} | ||
} | ||
if (state.status === "error") { | ||
throw state.error; | ||
} | ||
return state.output; | ||
}; | ||
return await next(); | ||
} | ||
function convertToArray(value2) { | ||
if (value2 === void 0) { | ||
return []; | ||
} | ||
return Array.isArray(value2) ? value2 : [value2]; | ||
} | ||
// src/json.ts | ||
@@ -69,2 +131,4 @@ function parseJSONSafely(text) { | ||
export { | ||
convertToArray, | ||
executeWithHooks, | ||
findDeepMatches, | ||
@@ -71,0 +135,0 @@ get, |
@@ -24,2 +24,11 @@ import { type ZodIssue } from 'zod'; | ||
export type ORPCErrorCode = keyof typeof ORPC_ERROR_CODE_STATUSES; | ||
export interface ORPCErrorJSON<TCode extends ORPCErrorCode, TData> { | ||
code: TCode; | ||
status: number; | ||
message: string; | ||
data: TData; | ||
issues?: ZodIssue[]; | ||
} | ||
export type ANY_ORPC_ERROR_JSON = ORPCErrorJSON<any, any>; | ||
export type WELL_ORPC_ERROR_JSON = ORPCErrorJSON<ORPCErrorCode, unknown>; | ||
export declare class ORPCError<TCode extends ORPCErrorCode, TData> extends Error { | ||
@@ -50,11 +59,7 @@ zz$oe: { | ||
get issues(): ZodIssue[] | undefined; | ||
toJSON(): { | ||
code: TCode; | ||
status: number; | ||
message: string; | ||
data: TData; | ||
issues?: ZodIssue[]; | ||
}; | ||
toJSON(): ORPCErrorJSON<TCode, TData>; | ||
static fromJSON(json: unknown): ORPCError<ORPCErrorCode, any> | undefined; | ||
} | ||
export type WELL_ORPC_ERROR = ORPCError<ORPCErrorCode, unknown>; | ||
export declare function convertToStandardError(error: unknown): Error; | ||
//# sourceMappingURL=error.d.ts.map |
@@ -0,1 +1,2 @@ | ||
export * from './hook'; | ||
export * from './json'; | ||
@@ -2,0 +3,0 @@ export * from './object'; |
{ | ||
"name": "@orpc/shared", | ||
"type": "module", | ||
"version": "0.0.0-next.55d0b4f", | ||
"version": "0.0.0-next.6a8bf13", | ||
"license": "MIT", | ||
@@ -6,0 +6,0 @@ "homepage": "https://orpc.unnoq.com", |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
14111
11
361
1