UNPKG

@dgac/nmb2b-client

Version:

EUROCONTROL Network Manager B2B SOAP client

44 lines (43 loc) 1.18 kB
//#region src/utils/hooks/index.ts function applyHooks({ service, query, hooks, queryFn }) { async function executeOnStartHooks({ input }) { const onSuccessHooks = []; const onErrorHooks = []; for (const onRequestStart of hooks) { const hookResult = await onRequestStart({ service, query, input }); if (hookResult?.onRequestSuccess) onSuccessHooks.unshift(hookResult.onRequestSuccess); if (hookResult?.onRequestError) onErrorHooks.unshift(hookResult.onRequestError); } return { onSuccessHooks, onErrorHooks }; } const executeQuery = async function(input, options) { const { onSuccessHooks, onErrorHooks } = await executeOnStartHooks({ input }); try { const result = await queryFn(input, options); for (const onSuccess of onSuccessHooks) await onSuccess({ service, query, response: result }); return result; } catch (err) { for (const onError of onErrorHooks) await onError({ service, query, error: err instanceof Error ? err : new Error("Unknown error", { cause: err }) }); throw err; } }; return executeQuery; } //#endregion export { applyHooks }; //# sourceMappingURL=index.mjs.map