@n1k1t/mock-server
Version:
The ultimate toolkit to intercept, transform, and simulate HTTP/WS traffic with type-safe expectations
50 lines • 1.75 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.ProvidersStorage = void 0;
const system_1 = require("./system");
const model_1 = require("./model");
const logger_1 = require("../../../logger");
const logger = logger_1.Logger.build('ProvidersStorage');
class ProvidersStorage extends Map {
constructor(server) {
super();
this.server = server;
this.default = model_1.Provider.build({ group: 'default' });
this.system = system_1.SystemProvider.build({ group: 'system', history: { limit: Infinity } });
}
extract() {
return [...this.values(), this.default];
}
register(provider) {
const existent = this.get(provider.group);
provider.assign({ server: this.server });
this.system.distribute(provider);
if (this.default === provider) {
return this;
}
if (existent) {
if (existent === provider) {
return this;
}
logger.warn(`Provider group [${provider.group}] is already registered. Extending...`);
existent.extend(provider);
return this;
}
logger.info(`Provider group [${provider.group}] has registered`);
return this.set(provider.group, provider);
}
/** Deletes provider from storage */
unregister(provider) {
this.delete(provider.group);
return this;
}
expired() {
const timestamp = Date.now();
return [...this.values()].filter((provider) => provider.checkIsExpired(timestamp));
}
static build(server) {
return new ProvidersStorage(server);
}
}
exports.ProvidersStorage = ProvidersStorage;
//# sourceMappingURL=storage.js.map