UNPKG

treblle

Version:
57 lines (53 loc) 1.54 kB
const { sendPayload } = require("./send-payload"); const { generateFieldsToMaskMap } = require("../maskFields"); const moduleWorkerTreblle = function ({ sdkToken, apiKey, additionalFieldsToMask = [], debug = false, }) { const fieldsToMaskMap = generateFieldsToMaskMap(additionalFieldsToMask); return (fetch) => { return async (request, env, context) => { let response = null; let error = null; let requestClone; const requestStartTime = Date.now(); try { requestClone = request.clone(); } catch (err) { console.error("Error in Treblle middleware while cloning request", err); } try { response = await fetch(request, env, context); } catch (err) { error = err; } const requestEndTime = Date.now(); try { await sendPayload(requestClone, response ? response.clone() : null, { sdkToken, apiKey, fieldsToMaskMap, debug, requestExecutionTime: requestEndTime - requestStartTime, error, }); } catch (err) { // Just catch and log Treblle error - we do not want to crash app on Treblle's failure console.error( "Error occurred when sending payload to Treblle, have you set appropriate headers for your content type?", err ); } if (error) { // Rethrow application errors throw error; } return response; }; }; }; module.exports = { moduleWorkerTreblle, };