earljs
Version:
Ergonomic, modern and type-safe assertion library
54 lines (53 loc) • 2.32 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.formatMapEntries = void 0;
const formatUnknown_1 = require("./formatUnknown");
const getOptionsWith_1 = require("./getOptionsWith");
function formatMapEntries(value, sibling, options, valueStack, siblingStack) {
var _a, _b;
let inOrder = value;
if (sibling instanceof Map) {
inOrder = new Map();
for (const key of sibling.keys()) {
if (value.has(key)) {
inOrder.set(key, value.get(key));
}
}
for (const [key, keyValue] of value) {
if (!sibling.has(key)) {
inOrder.set(key, keyValue);
}
}
}
const valueItems = [...inOrder];
const siblingItems = sibling instanceof Map ? [...sibling] : [];
const keyOptions = (0, getOptionsWith_1.getOptionsWith)(options, {
skipMatcherReplacement: true,
requireStrictEquality: true,
maxLineLength: options.maxLineLength - 10,
});
const passedValueOptions = (0, getOptionsWith_1.getOptionsWith)(options, {
requireStrictEquality: false,
maxLineLength: options.maxLineLength - 10,
});
const entries = [];
for (let i = 0; i < valueItems.length; i++) {
const keyFormat = (0, formatUnknown_1.formatUnknown)(valueItems[i][0], (_a = siblingItems[i]) === null || _a === void 0 ? void 0 : _a[0], keyOptions, valueStack, siblingStack);
for (const line of keyFormat) {
line[0] += 1;
}
const valueOptions = (0, getOptionsWith_1.getOptionsWith)(passedValueOptions, {
skipMatcherReplacement: passedValueOptions.skipMatcherReplacement || (sibling instanceof Map && !sibling.has(valueItems[i][0])),
});
const valueFormat = (0, formatUnknown_1.formatUnknown)(valueItems[i][1], (_b = siblingItems[i]) === null || _b === void 0 ? void 0 : _b[1], valueOptions, valueStack, siblingStack);
for (const line of valueFormat) {
line[0] += 1;
}
const joint = [...keyFormat];
joint[joint.length - 1][1] = `${joint[joint.length - 1][1]} => ${valueFormat[0][1]}`;
joint.push(...valueFormat.slice(1));
entries.push(...joint);
}
return entries;
}
exports.formatMapEntries = formatMapEntries;
;