UNPKG

@n1k1t/mock-server

Version:

Powerful util to setup mocks over HTTP APIs

47 lines 1.6 kB
"use strict"; 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