@n1k1t/mock-server
Version:
The ultimate toolkit to intercept, transform, and simulate HTTP/WS traffic with type-safe expectations
76 lines • 2.36 kB
JavaScript
;
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