UNPKG

@jsstudio/development-api-interceptor

Version:
57 lines 2.87 kB
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; import { rest, setupWorker } from 'msw'; import { Methods } from './Methods'; export class Interceptor { constructor(tables) { this.tables = tables; this.interceptorMethods = new Methods(); } initialize() { const handlers = this.generateEndpoints(); const worker = setupWorker(...handlers); worker.start(); } generateEndpoints() { const handlerArray = []; for (const table of this.tables) { const endPoints = this.getEndpoints(table); handlerArray.push(...endPoints); } return handlerArray; } getEndpoints(tableName) { return [ rest.post(`/api/${tableName}`, (req, res, ctx) => __awaiter(this, void 0, void 0, function* () { const response = yield this.interceptorMethods.create(tableName, req.body, req.method); return res(ctx.json(response)); })), // GET ALL DATA rest.get(`/api/${tableName}`, (req, res, ctx) => __awaiter(this, void 0, void 0, function* () { const response = yield this.interceptorMethods.getAll(tableName); return res(ctx.json(response)); })), // GET DATA BY ID rest.get(`/api/${tableName}/:id`, (req, res, ctx) => __awaiter(this, void 0, void 0, function* () { const response = yield this.interceptorMethods.getById(tableName, parseInt(req.params.id, 10)); return res(ctx.json(response)); })), rest.put(`/api/${tableName}/:id`, (req, res, ctx) => __awaiter(this, void 0, void 0, function* () { const response = yield this.interceptorMethods.update(tableName, req.body, parseInt(req.params.id, 10), req.method); return res(ctx.json(response)); })), rest.delete(`/api/${tableName}/:id`, (req, res, ctx) => __awaiter(this, void 0, void 0, function* () { const response = yield this.interceptorMethods.delete(tableName, parseInt(req.params.id, 10)); return res(ctx.json(response)); })), ]; } } //# sourceMappingURL=index.js.map