UNPKG

@appello/services

Version:

Services package with api / graphql

41 lines (40 loc) 1.89 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createProcessApiErrorResponse = createProcessApiErrorResponse; const common_1 = require("@appello/common"); const consts_1 = require("../../consts"); function resolveField(field, fields) { if (Array.isArray(fields)) { return fields.includes(field) ? field : undefined; } return fields === null || fields === void 0 ? void 0 : fields[field]; } function createProcessApiErrorResponse(config) { return function processApiError({ errors, fields, setFormError, setFieldError, onGlobalError = config.onGlobalError, onUnknownErrors = config.onUnknownErrors, onManualHandleError = config.onManualHandleError, }) { const unknownErrors = []; if (onManualHandleError) { onManualHandleError(errors); return; } if (errors[consts_1.ApiErrorCodeEnum.GLOBAL_ERROR]) { onGlobalError(errors[consts_1.ApiErrorCodeEnum.GLOBAL_ERROR], errors); return; } (0, common_1.entries)(errors).forEach(([field, error]) => { const formField = resolveField(field, fields); if (formField && (setFieldError || setFormError)) { const setError = setFieldError !== null && setFieldError !== void 0 ? setFieldError : ((name, message) => setFormError === null || setFormError === void 0 ? void 0 : setFormError(name, { message })); setError(formField, error); } else { unknownErrors.push({ name: field, value: error }); } }); if (unknownErrors.length) { const message = unknownErrors.map(({ name, value }) => `${name}: ${value}`).join('; '); onUnknownErrors(`${consts_1.ApiErrorMessagesEnum.UNKNOWN_ERROR}: ${message}`, errors); } }; }