You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

47 lines
5.0 KiB

3 weeks ago
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.createMembershipSet = createMembershipSet;
exports.membershipAdd = membershipAdd;
exports.membershipHas = membershipHas;
exports.membershipDelete = membershipDelete;
exports.membershipClear = membershipClear;
exports.membershipFromArray = membershipFromArray;
exports.membershipToArray = membershipToArray;
exports.membershipDedupeArray = membershipDedupeArray;
exports.membershipForEach = membershipForEach;
function createMembershipSet() {
return new Map();
}
function membershipAdd(set, key) {
set.set(key, true);
return set;
}
function membershipHas(set, key) {
return set.has(key);
}
function membershipDelete(set, key) {
return set.delete(key);
}
function membershipClear(set) {
set.clear();
}
function membershipFromArray(items) {
const set = createMembershipSet();
for (const item of items) {
set.set(item, true);
}
return set;
}
function membershipToArray(set) {
return [...set.keys()];
}
/** 去重数组(替代 Array.from(new Set(...)) / [...new Set(...)]) */
function membershipDedupeArray(items) {
return membershipToArray(membershipFromArray(items));
}
function membershipForEach(set, fn) {
for (const key of set.keys()) {
fn(key);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWVtYmVyc2hpcFNldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NvdXJjZS9NZW1iZXJzaGlwU2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBT0Esa0RBRUM7QUFFRCxzQ0FHQztBQUVELHNDQUVDO0FBRUQsNENBRUM7QUFFRCwwQ0FFQztBQUVELGtEQU1DO0FBRUQsOENBRUM7QUFHRCxzREFFQztBQUVELDhDQUlDO0FBMUNELFNBQWdCLG1CQUFtQjtJQUMvQixPQUFPLElBQUksR0FBRyxFQUFXLENBQUM7QUFDOUIsQ0FBQztBQUVELFNBQWdCLGFBQWEsQ0FBSSxHQUFxQixFQUFFLEdBQU07SUFDMUQsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDbkIsT0FBTyxHQUFHLENBQUM7QUFDZixDQUFDO0FBRUQsU0FBZ0IsYUFBYSxDQUFJLEdBQTZCLEVBQUUsR0FBTTtJQUNsRSxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDeEIsQ0FBQztBQUVELFNBQWdCLGdCQUFnQixDQUFJLEdBQXFCLEVBQUUsR0FBTTtJQUM3RCxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDM0IsQ0FBQztBQUVELFNBQWdCLGVBQWUsQ0FBSSxHQUFxQjtJQUNwRCxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDaEIsQ0FBQztBQUVELFNBQWdCLG1CQUFtQixDQUFJLEtBQWtCO0lBQ3JELE1BQU0sR0FBRyxHQUFHLG1CQUFtQixFQUFLLENBQUM7SUFDckMsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUN2QixHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDZixDQUFDO0FBRUQsU0FBZ0IsaUJBQWlCLENBQUksR0FBNkI7SUFDOUQsT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7QUFDM0IsQ0FBQztBQUVELDREQUE0RDtBQUM1RCxTQUFnQixxQkFBcUIsQ0FBSSxLQUFrQjtJQUN2RCxPQUFPLGlCQUFpQixDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDekQsQ0FBQztBQUVELFNBQWdCLGlCQUFpQixDQUFJLEdBQTZCLEVBQUUsRUFBb0I7SUFDcEYsS0FBSyxNQUFNLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUMzQixFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDWixDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiDpobnnm67npoHnlKjljp/nlJ8gU2V077yI5bCP5ri45oiP6L+Q6KGM5pe25a+56YOo5YiGIFNldCDnlKjms5XkuI3nqLPlrprvvInjgIJcclxuICog55SoIE1hcDxLLCB0cnVlPiDooajnpLrmiJDlkZjpm4blkIjvvIxBUEkg5LiOIFNldCDlr7npvZDjgIJcclxuICovXHJcbmV4cG9ydCB0eXBlIE1lbWJlcnNoaXBTZXQ8Sz4gPSBNYXA8SywgdHJ1ZT47XHJcbmV4cG9ydCB0eXBlIFJlYWRvbmx5TWVtYmVyc2hpcFNldDxLPiA9IFJlYWRvbmx5TWFwPEssIHRydWU+O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1lbWJlcnNoaXBTZXQ8Sz4oKTogTWVtYmVyc2hpcFNldDxLPiB7XHJcbiAgICByZXR1cm4gbmV3IE1hcDxLLCB0cnVlPigpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbWVtYmVyc2hpcEFkZDxLPihzZXQ6IE1lbWJlcnNoaXBTZXQ8Sz4sIGtleTogSyk6IE1lbWJlcnNoaXBTZXQ8Sz4ge1xyXG4gICAgc2V0LnNldChrZXksIHRydWUpO1xyXG4gICAgcmV0dXJuIHNldDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIG1lbWJlcnNoaXBIYXM8Sz4oc2V0OiBSZWFkb25seU1lbWJlcnNoaXBTZXQ8Sz4sIGtleTogSyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHNldC5oYXMoa2V5KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIG1lbWJlcnNoaXBEZWxldGU8Sz4oc2V0OiBNZW1iZXJzaGlwU2V0PEs+LCBrZXk6IEspOiBib29sZWFuIHtcclxuICAgIHJldHVybiBzZXQuZGVsZXRlKGtleSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBtZW1iZXJzaGlwQ2xlYXI8Sz4oc2V0OiBNZW1iZXJzaGlwU2V0PEs+KTogdm9pZCB7XHJcbiAgICBzZXQuY2xlYXIoKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIG1lbWJlcnNoaXBGcm9tQXJyYXk8Sz4oaXRlbXM6IEl0ZXJhYmxlPEs+KTogTWVtYmVyc2hpcFNldDxLPiB7XHJcbiAgICBjb25zdCBzZXQgPSBjcmVhdGVNZW1iZXJzaGlwU2V0PEs+KCk7XHJcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcclxuICAgICAgICBzZXQuc2V0KGl0ZW0sIHRydWUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHNldDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIG1lbWJlcnNoaXBUb0FycmF5PEs+KHNldDogUmVhZG9ubHlNZW1iZXJzaGlwU2V0PEs+KTogS1tdIHtcclxuICAgIHJldHVybiBbLi4uc2V0LmtleXMoKV07XHJcbn1cclxuXHJcbi8qKiDljrvph43mlbDnu4TvvIjmm7/ku6MgQXJyYXkuZnJvbShuZXcgU2V0KC4uLikpIC8gWy4uLm5ldyBTZXQoLi4uKV3vvIkgKi9cclxuZXhwb3J0IGZ1bmN0aW9uIG1lbWJlcnNoaXBEZWR1cGVBcnJheTxLPihpdGVtczogSXRlcmFibGU8Sz4pOiBLW10ge1xyXG4gICAgcmV0dXJuIG1lbWJlcnNoaXBUb0FycmF5KG1lbWJlcnNoaXBGcm9tQXJyYXkoaXRlbXMpKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIG1lbWJlcnNoaXBGb3JFYWNoPEs+KHNldDogUmVhZG9ubHlNZW1iZXJzaGlwU2V0PEs+LCBmbjogKGtleTogSykgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgZm9yIChjb25zdCBrZXkgb2Ygc2V0LmtleXMoKSkge1xyXG4gICAgICAgIGZuKGtleSk7XHJcbiAgICB9XHJcbn1cclxuIl19