UNPKG

@n1k1t/mock-server

Version:

The ultimate toolkit to intercept, transform, and simulate HTTP/WS traffic with type-safe expectations

106 lines 4.05 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.RequestContextSnapshot = void 0; const rfdc_1 = __importDefault(require("rfdc")); const lodash_1 = __importDefault(require("lodash")); const clone = (0, rfdc_1.default)(); class RequestContextSnapshot { constructor(provided) { this.provided = provided; this.transport = this.provided.transport; this.flags = this.provided.flags; this.storage = this.provided.storage; this.cache = this.provided.cache ?? { isEnabled: false }; this.state = this.provided.state ?? {}; this.incoming = this.provided.incoming; this.outgoing = this.provided.outgoing; this.messages = this.provided.messages ?? []; /** Expectation schema overrides */ this.overrides = this.provided.overrides; this.forwarded = this.provided.forwarded; this.error = this.provided.error; this.container = this.provided.container; this.seed = this.provided.seed; } assign(payload) { return Object.assign(this, payload); } pick(keys) { return lodash_1.default.pick(this, keys); } omit(keys) { return lodash_1.default.omit(this, keys); } unset(keys) { keys.forEach((key) => lodash_1.default.unset(this, key)); return this; } clone() { return RequestContextSnapshot.build({ ...lodash_1.default.omit(this, ['incoming', 'outgoing']), incoming: Object.assign(clone(lodash_1.default.omit(this.incoming, ['stream', 'raw'])), { stream: this.incoming.stream, raw: { data: this.incoming.raw.data?.subarray(), }, }), outgoing: Object.assign(clone(lodash_1.default.omit(this.outgoing, ['stream', 'raw'])), { stream: this.outgoing.stream, raw: { data: this.outgoing.raw.data?.subarray(), }, }), }); } toPlain() { return { transport: this.transport, flags: this.flags, error: this.error, overrides: this.overrides, state: this.state, cache: this.cache, seed: this.seed, container: this.container?.toPlain(), messages: this.messages.map((message) => message.toPlain()), incoming: lodash_1.default.omit(this.incoming, ['stream', 'raw']), outgoing: lodash_1.default.omit(this.outgoing, ['stream', 'raw']), ...(this.forwarded && { forwarded: { schema: this.forwarded.schema, incoming: lodash_1.default.omit(this.forwarded.incoming, ['raw']), ...(this.forwarded.outgoing && { outgoing: lodash_1.default.omit(this.forwarded.outgoing, ['raw']), }), messages: this.forwarded.messages?.map((message) => message.toPlain()), }, }), }; } toCache() { const outoging = this.forwarded?.outgoing ?? { type: 'plain', status: 200, headers: {}, raw: {}, }; return { messages: (this.forwarded?.messages ?? []) .filter((message) => message.direction === 'outgoing') .map((message) => message.toCache()), outgoing: Object.assign(lodash_1.default.omit(outoging, ['stream', 'raw']), { raw: { data: outoging.raw.data?.toString('base64'), }, }), }; } static build(configuration) { return new RequestContextSnapshot(configuration); } } exports.RequestContextSnapshot = RequestContextSnapshot; //# sourceMappingURL=snapshot.js.map