contentful-sdk-core
Version:
Core modules for the Contentful JS SDKs
1 lines • 4.34 kB
Source Map (JSON)
{"version":3,"file":"error-handler.js","sources":["../../src/error-handler.ts"],"sourcesContent":["import isPlainObject from 'lodash/isPlainObject.js'\nimport type { ContentfulErrorData } from './types.js'\n\nfunction obscureHeaders(config: any) {\n // Management, Delivery and Preview API tokens\n if (config?.headers?.['Authorization']) {\n const token = `...${config.headers['Authorization'].toString().substr(-5)}`\n config.headers['Authorization'] = `Bearer ${token}`\n }\n // Encoded Delivery or Preview token map for Cross-Space References\n if (config?.headers?.['X-Contentful-Resource-Resolution']) {\n const token = `...${config.headers['X-Contentful-Resource-Resolution'].toString().substr(-5)}`\n config.headers['X-Contentful-Resource-Resolution'] = token\n }\n}\n\n/**\n * Handles errors received from the server. Parses the error into a more useful\n * format, places it in an exception and throws it.\n * See https://www.contentful.com/developers/docs/references/errors/\n * for more details on the data received on the errorResponse.data property\n * and the expected error codes.\n * @private\n */\nexport default function errorHandler(errorResponse: any): never {\n const { config, response } = errorResponse\n let errorName\n\n obscureHeaders(config)\n\n if (!isPlainObject(response) || !isPlainObject(config)) {\n throw errorResponse\n }\n\n const data = response?.data\n\n const errorData: ContentfulErrorData = {\n status: response?.status,\n statusText: response?.statusText,\n message: '',\n details: {},\n }\n\n if (config && isPlainObject(config)) {\n errorData.request = {\n url: config.url,\n headers: config.headers,\n method: config.method,\n payloadData: config.data,\n }\n }\n if (data && typeof data === 'object') {\n if ('requestId' in data) {\n errorData.requestId = data.requestId || 'UNKNOWN'\n }\n if ('message' in data) {\n errorData.message = data.message || ''\n }\n if ('details' in data) {\n errorData.details = data.details || {}\n }\n errorName = data.sys?.id\n }\n\n const error = new Error()\n error.name =\n errorName && errorName !== 'Unknown' ? errorName : `${response?.status} ${response?.statusText}`\n\n try {\n error.message = JSON.stringify(errorData, null, ' ')\n } catch {\n error.message = errorData?.message ?? ''\n }\n throw error\n}\n"],"names":[],"mappings":";;AAGA,SAAS,cAAc,CAAC,MAAW,EAAA;;IAEjC,IAAI,MAAM,EAAE,OAAO,GAAG,eAAe,CAAC,EAAE;AACtC,QAAA,MAAM,KAAK,GAAG,CAAA,GAAA,EAAM,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;QAC3E,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,CAAA,OAAA,EAAU,KAAK,CAAA,CAAE;IACrD;;IAEA,IAAI,MAAM,EAAE,OAAO,GAAG,kCAAkC,CAAC,EAAE;AACzD,QAAA,MAAM,KAAK,GAAG,CAAA,GAAA,EAAM,MAAM,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;AAC9F,QAAA,MAAM,CAAC,OAAO,CAAC,kCAAkC,CAAC,GAAG,KAAK;IAC5D;AACF;AAEA;;;;;;;AAOG;AACW,SAAU,YAAY,CAAC,aAAkB,EAAA;AACrD,IAAA,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,aAAa;AAC1C,IAAA,IAAI,SAAS;IAEb,cAAc,CAAC,MAAM,CAAC;AAEtB,IAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE;AACtD,QAAA,MAAM,aAAa;IACrB;AAEA,IAAA,MAAM,IAAI,GAAG,QAAQ,EAAE,IAAI;AAE3B,IAAA,MAAM,SAAS,GAAwB;QACrC,MAAM,EAAE,QAAQ,EAAE,MAAM;QACxB,UAAU,EAAE,QAAQ,EAAE,UAAU;AAChC,QAAA,OAAO,EAAE,EAAE;AACX,QAAA,OAAO,EAAE,EAAE;KACZ;AAED,IAAA,IAAI,MAAM,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE;QACnC,SAAS,CAAC,OAAO,GAAG;YAClB,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,WAAW,EAAE,MAAM,CAAC,IAAI;SACzB;IACH;AACA,IAAA,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AACpC,QAAA,IAAI,WAAW,IAAI,IAAI,EAAE;YACvB,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,SAAS;QACnD;AACA,QAAA,IAAI,SAAS,IAAI,IAAI,EAAE;YACrB,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE;QACxC;AACA,QAAA,IAAI,SAAS,IAAI,IAAI,EAAE;YACrB,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE;QACxC;AACA,QAAA,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE;IAC1B;AAEA,IAAA,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE;AACzB,IAAA,KAAK,CAAC,IAAI;QACR,SAAS,IAAI,SAAS,KAAK,SAAS,GAAG,SAAS,GAAG,CAAA,EAAG,QAAQ,EAAE,MAAM,CAAA,CAAA,EAAI,QAAQ,EAAE,UAAU,EAAE;AAElG,IAAA,IAAI;AACF,QAAA,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC;IACvD;AAAE,IAAA,MAAM;QACN,KAAK,CAAC,OAAO,GAAG,SAAS,EAAE,OAAO,IAAI,EAAE;IAC1C;AACA,IAAA,MAAM,KAAK;AACb;;;;"}