File size: 868 Bytes
96af7c9 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.pathWalk = pathWalk;
function produce(producer) {
return producer();
}
function pathWalk(path, initialProducers, shrink) {
const producers = initialProducers;
const segments = path.split(':').map((text) => +text);
if (segments.length === 0) {
return producers.map(produce);
}
if (!segments.every((v) => !Number.isNaN(v))) {
throw new Error(`Unable to replay, got invalid path=${path}`);
}
let values = producers.drop(segments[0]).map(produce);
for (const s of segments.slice(1)) {
const valueToShrink = values.getNthOrLast(0);
if (valueToShrink === null) {
throw new Error(`Unable to replay, got wrong path=${path}`);
}
values = shrink(valueToShrink).drop(s);
}
return values;
}
|