UNPKG

@n1k1t/mock-server

Version:

Powerful util to setup mocks over HTTP APIs

48 lines 1.84 kB
"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