46 lines
5.6 KiB
JavaScript
46 lines
5.6 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.map = exports.MapType = void 0;
|
|
const result_1 = require("../result");
|
|
const type_1 = require("../type");
|
|
class MapType extends type_1.Type {
|
|
constructor(k, v) {
|
|
super();
|
|
this.keyType = k;
|
|
this.valueType = v;
|
|
}
|
|
check(val) {
|
|
if (!(val instanceof Map))
|
|
return new result_1.Err(`${val} is not an instance of Map`);
|
|
for (const [k, v] of val) {
|
|
const kResult = this.keyType.check(k);
|
|
if (kResult instanceof result_1.Err)
|
|
return new result_1.Err(`{val} key error: ${kResult.message}`);
|
|
const vResult = this.valueType.check(v);
|
|
if (vResult instanceof result_1.Err)
|
|
return new result_1.Err(`{val} value error: ${vResult.message}`);
|
|
}
|
|
return val;
|
|
}
|
|
sliceResult(val) {
|
|
if (!(val instanceof Map))
|
|
return new result_1.Err(`${val} is not an instance of Map`);
|
|
const result = new Map();
|
|
for (const [k, v] of val) {
|
|
const kResult = this.keyType.sliceResult(k);
|
|
if (kResult instanceof result_1.Err)
|
|
return new result_1.Err(`{val} key error: ${kResult.message}`);
|
|
const vResult = this.valueType.sliceResult(v);
|
|
if (vResult instanceof result_1.Err)
|
|
return new result_1.Err(`{val} value error: ${vResult.message}`);
|
|
result.set(kResult, vResult);
|
|
}
|
|
return result;
|
|
}
|
|
}
|
|
exports.MapType = MapType;
|
|
function map(k, v) {
|
|
return new MapType(k, v);
|
|
}
|
|
exports.map = map;
|
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL2NoZWNrcy9tYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsc0NBQXdDO0FBQ3hDLGtDQUErQjtBQUUvQixNQUFhLE9BQWMsU0FBUSxXQUFlO0lBSWhELFlBQVksQ0FBVSxFQUFFLENBQVU7UUFDaEMsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsS0FBSyxDQUFDLEdBQVE7UUFDWixJQUFHLENBQUMsQ0FBQyxHQUFHLFlBQVksR0FBRyxDQUFDO1lBQUUsT0FBTyxJQUFJLFlBQUcsQ0FBQyxHQUFHLEdBQUcsNEJBQTRCLENBQUMsQ0FBQztRQUU3RSxLQUFJLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7WUFDeEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEMsSUFBRyxPQUFPLFlBQVksWUFBRztnQkFBRSxPQUFPLElBQUksWUFBRyxDQUFDLG9CQUFvQixPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUNqRixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN4QyxJQUFHLE9BQU8sWUFBWSxZQUFHO2dCQUFFLE9BQU8sSUFBSSxZQUFHLENBQUMsc0JBQXNCLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3JGLENBQUM7UUFFRCxPQUFPLEdBQWdCLENBQUM7SUFDMUIsQ0FBQztJQUVELFdBQVcsQ0FBQyxHQUFRO1FBQ2xCLElBQUcsQ0FBQyxDQUFDLEdBQUcsWUFBWSxHQUFHLENBQUM7WUFBRSxPQUFPLElBQUksWUFBRyxDQUFDLEdBQUcsR0FBRyw0QkFBNEIsQ0FBQyxDQUFDO1FBRTdFLE1BQU0sTUFBTSxHQUFjLElBQUksR0FBRyxFQUFFLENBQUM7UUFFcEMsS0FBSSxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ3hCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVDLElBQUcsT0FBTyxZQUFZLFlBQUc7Z0JBQUUsT0FBTyxJQUFJLFlBQUcsQ0FBQyxvQkFBb0IsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDakYsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUMsSUFBRyxPQUFPLFlBQVksWUFBRztnQkFBRSxPQUFPLElBQUksWUFBRyxDQUFDLHNCQUFzQixPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUNuRixNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUMvQixDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztDQUNGO0FBdENELDBCQXNDQztBQUVELFNBQWdCLEdBQUcsQ0FBTyxDQUFVLEVBQUUsQ0FBVTtJQUM5QyxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMzQixDQUFDO0FBRkQsa0JBRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFcnIsIFJlc3VsdCB9IGZyb20gXCIuLi9yZXN1bHRcIjtcbmltcG9ydCB7IFR5cGUgfSBmcm9tIFwiLi4vdHlwZVwiO1xuXG5leHBvcnQgY2xhc3MgTWFwVHlwZTxLLCBWPiBleHRlbmRzIFR5cGU8TWFwPEssIFY+PiB7XG4gIHJlYWRvbmx5IGtleVR5cGU6IFR5cGU8Sz47XG4gIHJlYWRvbmx5IHZhbHVlVHlwZTogVHlwZTxWPjtcblxuICBjb25zdHJ1Y3RvcihrOiBUeXBlPEs+LCB2OiBUeXBlPFY+KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmtleVR5cGUgPSBrO1xuICAgIHRoaXMudmFsdWVUeXBlID0gdjtcbiAgfVxuXG4gIGNoZWNrKHZhbDogYW55KTogUmVzdWx0PE1hcDxLLCBWPj4ge1xuICAgIGlmKCEodmFsIGluc3RhbmNlb2YgTWFwKSkgcmV0dXJuIG5ldyBFcnIoYCR7dmFsfSBpcyBub3QgYW4gaW5zdGFuY2Ugb2YgTWFwYCk7XG5cbiAgICBmb3IoY29uc3QgW2ssIHZdIG9mIHZhbCkge1xuICAgICAgY29uc3Qga1Jlc3VsdCA9IHRoaXMua2V5VHlwZS5jaGVjayhrKTtcbiAgICAgIGlmKGtSZXN1bHQgaW5zdGFuY2VvZiBFcnIpIHJldHVybiBuZXcgRXJyKGB7dmFsfSBrZXkgZXJyb3I6ICR7a1Jlc3VsdC5tZXNzYWdlfWApO1xuICAgICAgY29uc3QgdlJlc3VsdCA9IHRoaXMudmFsdWVUeXBlLmNoZWNrKHYpO1xuICAgICAgaWYodlJlc3VsdCBpbnN0YW5jZW9mIEVycikgcmV0dXJuIG5ldyBFcnIoYHt2YWx9IHZhbHVlIGVycm9yOiAke3ZSZXN1bHQubWVzc2FnZX1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsIGFzIE1hcDxLLCBWPjtcbiAgfVxuXG4gIHNsaWNlUmVzdWx0KHZhbDogYW55KTogUmVzdWx0PE1hcDxLLCBWPj4ge1xuICAgIGlmKCEodmFsIGluc3RhbmNlb2YgTWFwKSkgcmV0dXJuIG5ldyBFcnIoYCR7dmFsfSBpcyBub3QgYW4gaW5zdGFuY2Ugb2YgTWFwYCk7XG5cbiAgICBjb25zdCByZXN1bHQ6IE1hcDxLLCBWPiA9IG5ldyBNYXAoKTtcblxuICAgIGZvcihjb25zdCBbaywgdl0gb2YgdmFsKSB7XG4gICAgICBjb25zdCBrUmVzdWx0ID0gdGhpcy5rZXlUeXBlLnNsaWNlUmVzdWx0KGspO1xuICAgICAgaWYoa1Jlc3VsdCBpbnN0YW5jZW9mIEVycikgcmV0dXJuIG5ldyBFcnIoYHt2YWx9IGtleSBlcnJvcjogJHtrUmVzdWx0Lm1lc3NhZ2V9YCk7XG4gICAgICBjb25zdCB2UmVzdWx0ID0gdGhpcy52YWx1ZVR5cGUuc2xpY2VSZXN1bHQodik7XG4gICAgICBpZih2UmVzdWx0IGluc3RhbmNlb2YgRXJyKSByZXR1cm4gbmV3IEVycihge3ZhbH0gdmFsdWUgZXJyb3I6ICR7dlJlc3VsdC5tZXNzYWdlfWApO1xuICAgICAgcmVzdWx0LnNldChrUmVzdWx0LCB2UmVzdWx0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXA8SywgVj4oazogVHlwZTxLPiwgdjogVHlwZTxWPik6IE1hcFR5cGU8SywgVj4ge1xuICByZXR1cm4gbmV3IE1hcFR5cGUoaywgdik7XG59XG4iXX0=
|