@n1k1t/mock-server
Version:
Powerful util to setup mocks over HTTP APIs
48 lines • 1.84 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.Container = void 0;
const deepmerge_1 = __importDefault(require("deepmerge"));
const rfdc_1 = __importDefault(require("rfdc"));
const lodash_1 = __importDefault(require("lodash"));
const utils_1 = require("./utils");
const clone = (0, rfdc_1.default)();
class Container {
constructor(provided) {
this.provided = provided;
this.ttl = this.provided.ttl;
this.expiresAt = this.provided.timestamp + this.ttl * 1000;
this.payload = this.provided.payload;
this.prefix = this.provided.prefix;
this.key = (this.prefix ?? '') + this.provided.key;
}
assign(predicate) {
const payload = Object.assign(this.payload, typeof predicate === 'function' ? predicate(this.payload) : predicate);
return Object.assign(this, { payload });
}
merge(predicate) {
const payload = (0, deepmerge_1.default)(this.payload, (typeof predicate === 'function' ? predicate(this.payload) : predicate), { arrayMerge: (target, source) => source });
return Object.assign(this, { payload });
}
bind(key) {
this.provided.hooks?.onBind?.((0, utils_1.compileContainerLink)(key), this);
return this;
}
unbind() {
this.provided.hooks?.onUnbind?.(this);
return this;
}
clone() {
return new Container({ ...this.provided, payload: clone(this.payload) });
}
toPlain() {
return lodash_1.default.pick(this, ['key', 'prefix', 'payload', 'ttl']);
}
static build(provided) {
return new Container(provided);
}
}
exports.Container = Container;
//# sourceMappingURL=model.js.map