UNPKG

@macrof/shared

Version:

React MicroFrontend Shared, Typescript, Webpack 5, ModuleFederation

120 lines (119 loc) 5.35 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Response = void 0; const fp_ts_1 = require("fp-ts"); const function_1 = require("fp-ts/lib/function"); const inversify_1 = require("inversify"); const t = __importStar(require("io-ts")); const io_ts_reporters_1 = __importStar(require("io-ts-reporters")); const isPlainObject_1 = __importDefault(require("lodash/isPlainObject")); const __1 = require("../.."); let Response = class Response { getResponseData(response, typeName) { if (!(0, __1.isAxiosResponse)(response)) { this.logger.toConsole('warn', 'There is no data field in response object'); return response; } if (typeName !== undefined) { this.checkType(response.data, typeName).forEach(val => this.handleTypeError(val, response.data)); } return response.data; } getDtoResponse(DTO) { return ({ data }) => (0, __1.plainToNew)(DTO, data); } decodeResponseData(type = t.any) { return ({ data }) => (0, function_1.pipe)(type.decode(data), fp_ts_1.either.mapLeft(io_ts_reporters_1.formatValidationErrors), fp_ts_1.either.fold(errors => { errors.forEach(val => this.handleTypeError(val, data)); return data; }, t.identity)); } getResponseStatus(response) { if ('status' in response) { return response.status; } this.logger.toConsole('warn', 'There is no status field in response object'); return response; } getResponseError(error) { var _a, _b, _c; if ((0, isPlainObject_1.default)(error) && 'response' in error) { return Promise.reject(Error(`${(_a = error === null || error === void 0 ? void 0 : error.response) === null || _a === void 0 ? void 0 : _a.statusText} ${(_b = error === null || error === void 0 ? void 0 : error.response) === null || _b === void 0 ? void 0 : _b.status}` || `Unknown error ${(_c = error === null || error === void 0 ? void 0 : error.response) === null || _c === void 0 ? void 0 : _c.status}`)); } return Promise.reject(error); } processStatus(status, successMessage, failedMessage = 'An error occurred while executing the request') { const success = [200]; const failure = [404, 403]; if (success.includes(status)) { this.logger.toMessage('info', successMessage); return true; } if (failure.includes(status)) { this.logger.toMessage('error', failedMessage); return false; } return undefined; } checkType(value, type) { let report = []; if (Array.isArray(value)) { value.forEach(x => { const validation = type.decode(x); report = [...report, ...io_ts_reporters_1.default.report(validation)]; }); } else { const validation = type.decode(value); report = io_ts_reporters_1.default.report(validation); } return report; } handleTypeError(x, data) { this.logger.toError(x, 'Type Error', data); } }; __decorate([ (0, inversify_1.inject)(__1.MF_TYPES.ILogger), __metadata("design:type", Object) ], Response.prototype, "logger", void 0); Response = __decorate([ (0, inversify_1.injectable)() ], Response); exports.Response = Response;