UNPKG

@n1k1t/mock-server

Version:

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

76 lines 2.36 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.cut = exports.formatHeaders = exports.parseJsonSafe = exports.serializeRegExp = exports.buildCounter = exports.wait = exports.cast = void 0; const lodash_1 = __importDefault(require("lodash")); const cast = (payload) => payload; exports.cast = cast; const wait = (ms) => { const context = { isCanceled: false, timeout: undefined, }; const promise = new Promise((resolve) => context.isCanceled ? resolve() : (context.timeout = setTimeout(resolve, ms))); return Object.assign(promise, { value: ms, abort: () => { context.isCanceled = true; clearTimeout(context.timeout); }, }); }; exports.wait = wait; /** * @example * ```ts * const counter = buildCounter(5); * * counter() // 6 * counter() // 7 * counter(2) // 9 * ``` */ const buildCounter = (initial = 0, step = 1) => (value = step) => (initial += value); exports.buildCounter = buildCounter; const serializeRegExp = (exp) => ({ source: exp.source, flags: exp.flags, }); exports.serializeRegExp = serializeRegExp; const parseJsonSafe = (serializedJson) => { try { return { status: 'OK', result: JSON.parse(serializedJson), }; } catch (error) { return { status: 'ERROR', error: error instanceof Error ? error : new Error('Unknown'), }; } }; exports.parseJsonSafe = parseJsonSafe; /** Joins propeties arrays and renames keys to lower case */ const formatHeaders = (headers) => Object.entries(headers).reduce((acc, [key, value]) => lodash_1.default.set(acc, key.toLowerCase(), Array.isArray(value) ? value.join(',') : String(value)), {}); exports.formatHeaders = formatHeaders; /** * Cuts massive string to a cunks with limited length * * @example * ```ts * cut('foobarbaz', 3) // ['foo', 'bar', 'baz'] * ``` */ const cut = (value, length) => { const result = []; for (let i = 0; i < Math.ceil(value.length / length); i++) { result.push(value.substring(i * length, (i + 1) * length)); } return result; }; exports.cut = cut; //# sourceMappingURL=common.js.map