mockit-cli
Version:
Mock any API in seconds. Config-driven. CLI-powered. No backend required.
46 lines (45 loc) • 1.83 kB
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.createServer = createServer;
const polka_1 = __importDefault(require("polka"));
function registerRoutes(app, routes, isRandomize) {
routes.forEach(({ path, method, response, delay }) => {
const httpMethod = method.toLowerCase();
app[httpMethod](path, (req, res) => {
const outcome = isRandomize ? (Math.random() < 0.5 ? 'success' : 'error') : 'success';
const status = response[outcome].status;
const responseBody = response[outcome];
const log = `[${status}] ${method.toUpperCase()} ${path}${delay ? ` (delay: ${delay}ms)` : ''}`;
console.log(log);
if (delay) {
setTimeout(() => {
res.writeHead(status, { 'Content-Type': 'application/json' });
res.end(JSON.stringify(responseBody));
}, delay);
}
else {
res.writeHead(status, { 'Content-Type': 'application/json' });
res.end(JSON.stringify(responseBody));
}
});
});
}
function createServer({ host, port }, config, isRandomize) {
const app = (0, polka_1.default)();
return new Promise((resolve, reject) => {
registerRoutes(app, config, isRandomize);
app.listen(port, host, (err) => {
if (err) {
console.error(`❌ Failed to start server:`, err.message);
reject(err);
}
else {
console.log(`✅ Mock server running at http://${host}:${port}`);
resolve();
}
});
});
}
;