monorepo-shared-assets
Version:
Shared assets used by various packages from nodemonorepo
44 lines • 2.07 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const immutable_1 = tslib_1.__importDefault(require("immutable"));
const array_1 = require("@tsfun/array");
function partition(iterable, classifiers) {
return partition.fromClassifierList(new Set(iterable), new Set(classifiers));
}
exports.partition = partition;
(function (partition) {
function fromClassifierList(values, classifiers) {
return fromClassifierList.iterable(values, classifiers);
}
partition.fromClassifierList = fromClassifierList;
(function (fromClassifierList) {
function iterable(values, classifiers) {
const result = array(Array.from(values), Array.from(classifiers));
const classified = immutable_1.default
.Map(result.classified)
.map(x => new Set(x))
.toObject();
const untouched = new Set(result.untouched);
return { classified, untouched };
}
fromClassifierList.iterable = iterable;
function array(list, classifiers) {
if (!classifiers.length)
return { classified: {}, untouched: list };
const [[target, func], ...nextClassifiers] = classifiers;
const [value, nextList] = array_1.partition(Array.from(list), func);
const nextPartition = array(nextList, nextClassifiers);
const classified = Object.assign({ [target]: value }, nextPartition.classified);
const untouched = nextPartition.untouched;
return { classified, untouched };
}
fromClassifierList.array = array;
})(fromClassifierList = partition.fromClassifierList || (partition.fromClassifierList = {}));
function fromClassifierDict(list, classifiers) {
return partition(list, Object.entries(classifiers));
}
partition.fromClassifierDict = fromClassifierDict;
})(partition = exports.partition || (exports.partition = {}));
exports.default = partition;
//# sourceMappingURL=index.js.map
;