@n1k1t/mock-server
Version:
The ultimate toolkit to intercept, transform, and simulate HTTP/WS traffic with type-safe expectations
50 lines • 1.7 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.HistoryStorage = void 0;
const model_1 = require("./model");
const config_1 = __importDefault(require("../../../config"));
class HistoryStorage extends Map {
constructor(configuration) {
super();
this.configuration = configuration;
this.stack = [];
}
/** Extends this storage with another */
extend(storage) {
for (const [name, history] of storage.entries()) {
this.set(name, history);
}
return this;
}
/** Registers history item */
register(predicate) {
const history = predicate instanceof model_1.History ? predicate : model_1.History.build({
status: 'registered',
group: this.configuration.group,
snapshot: predicate.snapshot,
});
this.set(history.id, history);
if (this.stack.push(history.id) > (this.configuration.limit ?? config_1.default.get('history').limit)) {
this.delete(this.stack.shift());
}
return history;
}
/** Removes history item from storage and marks it as `unregistred` */
unregister(history) {
if (history) {
this.delete(history.switch('unregistered').id);
this.stack.splice(this.stack.indexOf(history.id), 1);
}
return this;
}
/** Clears storage */
clear() {
this.stack = [];
super.clear();
}
}
exports.HistoryStorage = HistoryStorage;
//# sourceMappingURL=storage.js.map