@orpc/shared
Advanced tools
Comparing version 0.35.1 to 0.36.0
@@ -38,60 +38,2 @@ // src/constants.ts | ||
// src/hook.ts | ||
async function executeWithHooks(options) { | ||
const interceptors = convertToArray(options.hooks?.interceptor); | ||
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 = interceptors[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 onStart2 of onStarts) { | ||
await onStart2(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: toError(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: toError(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: toError(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/interceptor.ts | ||
@@ -138,13 +80,13 @@ function onStart(callback) { | ||
let index = 0; | ||
const next = async (nextOptions = options) => { | ||
const next = async (options2) => { | ||
const interceptor = interceptors[index++]; | ||
if (!interceptor) { | ||
return await main(nextOptions); | ||
return await main(options2); | ||
} | ||
return await interceptor({ | ||
...nextOptions, | ||
next | ||
...options2, | ||
next: (newOptions = options2) => next(newOptions) | ||
}); | ||
}; | ||
return await next(); | ||
return await next(options); | ||
} | ||
@@ -250,5 +192,3 @@ | ||
ORPC_HANDLER_VALUE, | ||
convertToArray, | ||
createCallableObject, | ||
executeWithHooks, | ||
findDeepMatches, | ||
@@ -255,0 +195,0 @@ get, |
@@ -5,3 +5,2 @@ export * from './chain'; | ||
export * from './function'; | ||
export * from './hook'; | ||
export * from './interceptor'; | ||
@@ -8,0 +7,0 @@ export * from './json'; |
{ | ||
"name": "@orpc/shared", | ||
"type": "module", | ||
"version": "0.35.1", | ||
"version": "0.36.0", | ||
"license": "MIT", | ||
@@ -6,0 +6,0 @@ "homepage": "https://orpc.unnoq.com", |
11928
13
282