@n1k1t/mock-server
Version:
Powerful util to setup mocks over HTTP APIs
50 lines • 1.85 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Router = void 0;
const minimatch_1 = __importDefault(require("minimatch"));
const lodash_1 = __importDefault(require("lodash"));
class Router extends Map {
constructor(server) {
super();
this.server = server;
}
default(transport) {
return {
provider: this.server.providers.default,
transport: this.server.transports.get(transport),
};
}
register(pattern, configuration) {
this.server.providers.register(configuration.provider);
const types = Array.isArray(configuration.transports)
? configuration.transports
: configuration.transports
? Object.keys(configuration.transports)
: [...this.server.transports.keys()];
return this.set(pattern, {
provider: configuration.provider,
transports: types.reduce((acc, type) => lodash_1.default.set(acc, type, Array.isArray(configuration.transports)
? this.server.transports.get(type)
: configuration.transports?.[type] ?? this.server.transports.get(type)), {}),
});
}
*match(transport, path) {
for (const [pattern, route] of this.entries()) {
if ((0, minimatch_1.default)(path, pattern)) {
yield {
provider: route.provider,
transport: route.transports[transport],
};
}
}
yield this.default(transport);
}
static build(server) {
return new Router(server);
}
}
exports.Router = Router;
//# sourceMappingURL=router.js.map