export const deserializerMiddleware = (options, deserializer) => (next, context) => async (args) => { const { response } = await next(args); try { const parsed = await deserializer(response, options); return { response, output: parsed, }; } catch (error) { Object.defineProperty(error, "$response", { value: response, }); if (!("$metadata" in error)) { const hint = `Deserialization error: to see the raw response, inspect the hidden field {error}.$response on this object.`; try { error.message += "\n " + hint; } catch (e) { if (!context.logger || context.logger?.constructor?.name === "NoOpLogger") { console.warn(hint); } else { context.logger?.warn?.(hint); } } if (typeof error.$responseBodyText !== "undefined") { if (error.$response) { error.$response.body = error.$responseBodyText; } } } throw error; } };