@n1k1t/mock-server
Version:
Powerful util to setup mocks over HTTP APIs
47 lines • 1.6 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ContainersStorage = void 0;
const utils_1 = require("./utils");
const model_1 = require("./model");
class ContainersStorage {
constructor() {
this.storage = new Map();
}
get size() {
return this.storage.size;
}
register(configuration) {
const key = (0, utils_1.compileContainerLink)(configuration.key);
const container = model_1.Container.build({
key,
payload: configuration.payload,
timestamp: Date.now(),
ttl: configuration?.ttl ?? 3600,
hooks: {
onUnbind: (target) => this.storage.delete(target.key),
onBind: (key, target) => {
const alias = model_1.Container.build({ ...target.provided, key });
this.storage.set(alias.key, alias);
},
},
});
this.storage.set(container.key, container);
return container;
}
provide(configuration) {
return this.find(configuration.key) ?? this.register(configuration);
}
find(key) {
return this.storage.get((0, utils_1.compileContainerLink)(key));
}
delete(key) {
this.storage.delete((0, utils_1.compileContainerLink)(key));
return this;
}
getExpired() {
const timestamp = Date.now();
return [...this.storage.values()].filter((container) => container.expiresAt < timestamp);
}
}
exports.ContainersStorage = ContainersStorage;
//# sourceMappingURL=storage.js.map