39 lines
4.2 KiB
JavaScript
39 lines
4.2 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.set = exports.SetType = void 0;
|
|
const result_1 = require("../result");
|
|
const type_1 = require("../type");
|
|
class SetType extends type_1.Type {
|
|
constructor(v) {
|
|
super();
|
|
this.valueType = v;
|
|
}
|
|
check(val) {
|
|
if (!(val instanceof Set))
|
|
return new result_1.Err(`${val} is not an instance of Set`);
|
|
for (const v of val) {
|
|
const result = this.valueType.check(v);
|
|
if (result instanceof result_1.Err)
|
|
return new result_1.Err(`{val} failed set check on value ${v}: ${result.message}`);
|
|
}
|
|
return val;
|
|
}
|
|
sliceResult(val) {
|
|
if (!(val instanceof Set))
|
|
return new result_1.Err(`${val} is not an instance of Set`);
|
|
const result = new Set();
|
|
for (const v of val) {
|
|
const sliced = this.valueType.sliceResult(v);
|
|
if (sliced instanceof result_1.Err)
|
|
return new result_1.Err(`{val} failed set check on value ${v}: ${sliced.message}`);
|
|
result.add(sliced);
|
|
}
|
|
return result;
|
|
}
|
|
}
|
|
exports.SetType = SetType;
|
|
function set(v) {
|
|
return new SetType(v);
|
|
}
|
|
exports.set = set;
|
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL2NoZWNrcy9zZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsc0NBQXdDO0FBQ3hDLGtDQUErQjtBQUUvQixNQUFhLE9BQVcsU0FBUSxXQUFZO0lBRzFDLFlBQVksQ0FBVTtRQUNwQixLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxLQUFLLENBQUMsR0FBUTtRQUNaLElBQUcsQ0FBQyxDQUFDLEdBQUcsWUFBWSxHQUFHLENBQUM7WUFBRSxPQUFPLElBQUksWUFBRyxDQUFDLEdBQUcsR0FBRyw0QkFBNEIsQ0FBQyxDQUFDO1FBQzdFLEtBQUksTUFBTSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7WUFDbkIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkMsSUFBRyxNQUFNLFlBQVksWUFBRztnQkFBRSxPQUFPLElBQUksWUFBRyxDQUFDLG1DQUFtQyxDQUFDLEtBQUssTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDdEcsQ0FBQztRQUNELE9BQU8sR0FBYSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxXQUFXLENBQUMsR0FBUTtRQUNsQixJQUFHLENBQUMsQ0FBQyxHQUFHLFlBQVksR0FBRyxDQUFDO1lBQUUsT0FBTyxJQUFJLFlBQUcsQ0FBQyxHQUFHLEdBQUcsNEJBQTRCLENBQUMsQ0FBQztRQUM3RSxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBSyxDQUFDO1FBQzVCLEtBQUksTUFBTSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7WUFDbkIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDN0MsSUFBRyxNQUFNLFlBQVksWUFBRztnQkFBRSxPQUFPLElBQUksWUFBRyxDQUFDLG1DQUFtQyxDQUFDLEtBQUssTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDcEcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyQixDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztDQUNGO0FBM0JELDBCQTJCQztBQUVELFNBQWdCLEdBQUcsQ0FBSSxDQUFVO0lBQy9CLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEIsQ0FBQztBQUZELGtCQUVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXJyLCBSZXN1bHQgfSBmcm9tIFwiLi4vcmVzdWx0XCI7XG5pbXBvcnQgeyBUeXBlIH0gZnJvbSBcIi4uL3R5cGVcIjtcblxuZXhwb3J0IGNsYXNzIFNldFR5cGU8Vj4gZXh0ZW5kcyBUeXBlPFNldDxWPj4ge1xuICByZWFkb25seSB2YWx1ZVR5cGU6IFR5cGU8Vj47XG5cbiAgY29uc3RydWN0b3IodjogVHlwZTxWPikge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy52YWx1ZVR5cGUgPSB2O1xuICB9XG5cbiAgY2hlY2sodmFsOiBhbnkpOiBSZXN1bHQ8U2V0PFY+PiB7XG4gICAgaWYoISh2YWwgaW5zdGFuY2VvZiBTZXQpKSByZXR1cm4gbmV3IEVycihgJHt2YWx9IGlzIG5vdCBhbiBpbnN0YW5jZSBvZiBTZXRgKTtcbiAgICBmb3IoY29uc3QgdiBvZiB2YWwpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMudmFsdWVUeXBlLmNoZWNrKHYpO1xuICAgICAgaWYocmVzdWx0IGluc3RhbmNlb2YgRXJyKSByZXR1cm4gbmV3IEVycihge3ZhbH0gZmFpbGVkIHNldCBjaGVjayBvbiB2YWx1ZSAke3Z9OiAke3Jlc3VsdC5tZXNzYWdlfWApO1xuICAgIH1cbiAgICByZXR1cm4gdmFsIGFzIFNldDxWPjtcbiAgfVxuXG4gIHNsaWNlUmVzdWx0KHZhbDogYW55KTogUmVzdWx0PFNldDxWPj4ge1xuICAgIGlmKCEodmFsIGluc3RhbmNlb2YgU2V0KSkgcmV0dXJuIG5ldyBFcnIoYCR7dmFsfSBpcyBub3QgYW4gaW5zdGFuY2Ugb2YgU2V0YCk7XG4gICAgY29uc3QgcmVzdWx0ID0gbmV3IFNldDxWPigpO1xuICAgIGZvcihjb25zdCB2IG9mIHZhbCkge1xuICAgICAgY29uc3Qgc2xpY2VkID0gdGhpcy52YWx1ZVR5cGUuc2xpY2VSZXN1bHQodik7XG4gICAgICBpZihzbGljZWQgaW5zdGFuY2VvZiBFcnIpIHJldHVybiBuZXcgRXJyKGB7dmFsfSBmYWlsZWQgc2V0IGNoZWNrIG9uIHZhbHVlICR7dn06ICR7c2xpY2VkLm1lc3NhZ2V9YCk7XG4gICAgICByZXN1bHQuYWRkKHNsaWNlZCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldDxWPih2OiBUeXBlPFY+KTogU2V0VHlwZTxWPiB7XG4gIHJldHVybiBuZXcgU2V0VHlwZSh2KTtcbn1cbiJdfQ==
|