@jsstudio/development-api-interceptor
Version:
development-api-interceptor
57 lines • 2.87 kB
JavaScript
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