@dgac/nmb2b-client
Version:
EUROCONTROL Network Manager B2B SOAP client
1 lines • 2.57 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","names":[],"sources":["../../../src/utils/hooks/index.ts"],"sourcesContent":["import type { SoapOptions } from '../../soap.js';\nimport type { SoapQueryHook } from './hooks.js';\n\ntype SoapQuery<Input, Output> = (\n input: Input,\n options?: SoapOptions,\n) => Promise<Output>;\n\nexport function applyHooks<TInput, TOutput>({\n service,\n query,\n hooks,\n queryFn,\n}: {\n service: string;\n query: string;\n hooks: Array<SoapQueryHook>;\n queryFn: SoapQuery<TInput, TOutput>;\n}) {\n async function executeOnStartHooks({ input }: { input: TInput }) {\n const onSuccessHooks = [];\n const onErrorHooks = [];\n\n for (const onRequestStart of hooks) {\n const hookResult = await onRequestStart({ service, query, input });\n\n if (hookResult?.onRequestSuccess) {\n onSuccessHooks.unshift(hookResult.onRequestSuccess);\n }\n\n if (hookResult?.onRequestError) {\n onErrorHooks.unshift(hookResult.onRequestError);\n }\n }\n\n return { onSuccessHooks, onErrorHooks };\n }\n\n const executeQuery: SoapQuery<TInput, TOutput> = async function (\n input,\n options,\n ) {\n const { onSuccessHooks, onErrorHooks } = await executeOnStartHooks({\n input,\n });\n\n try {\n const result = await queryFn(input, options);\n\n for (const onSuccess of onSuccessHooks) {\n await onSuccess({\n service,\n query,\n response: result,\n });\n }\n\n return result;\n } catch (err: unknown) {\n for (const onError of onErrorHooks) {\n await onError({\n service,\n query,\n error:\n err instanceof Error\n ? err\n : new Error('Unknown error', { cause: err }),\n });\n }\n\n throw err;\n }\n };\n\n return executeQuery;\n}\n"],"mappings":";AAQA,SAAgB,WAA4B,EAC1C,SACA,OACA,OACA,WAMC;CACD,eAAe,oBAAoB,EAAE,SAA4B;EAC/D,MAAM,iBAAiB,EAAE;EACzB,MAAM,eAAe,EAAE;AAEvB,OAAK,MAAM,kBAAkB,OAAO;GAClC,MAAM,aAAa,MAAM,eAAe;IAAE;IAAS;IAAO;IAAO,CAAC;AAElE,OAAI,YAAY,iBACd,gBAAe,QAAQ,WAAW,iBAAiB;AAGrD,OAAI,YAAY,eACd,cAAa,QAAQ,WAAW,eAAe;;AAInD,SAAO;GAAE;GAAgB;GAAc;;CAGzC,MAAM,eAA2C,eAC/C,OACA,SACA;EACA,MAAM,EAAE,gBAAgB,iBAAiB,MAAM,oBAAoB,EACjE,OACD,CAAC;AAEF,MAAI;GACF,MAAM,SAAS,MAAM,QAAQ,OAAO,QAAQ;AAE5C,QAAK,MAAM,aAAa,eACtB,OAAM,UAAU;IACd;IACA;IACA,UAAU;IACX,CAAC;AAGJ,UAAO;WACA,KAAc;AACrB,QAAK,MAAM,WAAW,aACpB,OAAM,QAAQ;IACZ;IACA;IACA,OACE,eAAe,QACX,MACA,IAAI,MAAM,iBAAiB,EAAE,OAAO,KAAK,CAAC;IACjD,CAAC;AAGJ,SAAM;;;AAIV,QAAO"}