"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.array = exports.Arr = void 0; const result_1 = require("../result"); const type_1 = require("../type"); class Arr extends type_1.Type { constructor(t) { super(); this.elementType = t; } check(val) { if (!Array.isArray(val)) return new result_1.Err(`${val} is not an array`); for (const el of val) { const result = this.elementType.check(el); // Don't bother collecting all errors in an array: for long arrays this is very obnoxious if (result instanceof result_1.Err) return new result_1.Err(result.message); } // If we got this far, there were no errors; it's an Array return val; } sliceResult(val) { if (!Array.isArray(val)) return new result_1.Err(`${val} is not an array`); const result = []; for (const el of val) { const sliced = this.elementType.sliceResult(el); // Don't bother collecting all errors in an array: for long arrays this is very obnoxious if (sliced instanceof result_1.Err) return new result_1.Err(sliced.message); result.push(sliced); } return result; } and(t) { // Oddly, TypeScript merges arrays together by simply taking the left hand side if (t instanceof Arr) return this; return super.and(t); } } exports.Arr = Arr; function array(t) { return new Arr(t); } exports.array = array; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvY2hlY2tzL2FycmF5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHNDQUF3QztBQUN4QyxrQ0FBK0I7QUFFL0IsTUFBYSxHQUFPLFNBQVEsV0FBYztJQUd4QyxZQUFZLENBQVU7UUFDcEIsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRUQsS0FBSyxDQUFDLEdBQVE7UUFDWixJQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7WUFBRSxPQUFPLElBQUksWUFBRyxDQUFDLEdBQUcsR0FBRyxrQkFBa0IsQ0FBQyxDQUFDO1FBRWpFLEtBQUksTUFBTSxFQUFFLElBQUksR0FBRyxFQUFFLENBQUM7WUFDcEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDMUMseUZBQXlGO1lBQ3pGLElBQUcsTUFBTSxZQUFZLFlBQUc7Z0JBQUUsT0FBTyxJQUFJLFlBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDM0QsQ0FBQztRQUVELDZEQUE2RDtRQUM3RCxPQUFPLEdBQWUsQ0FBQztJQUN6QixDQUFDO0lBRUQsV0FBVyxDQUFDLEdBQVE7UUFDbEIsSUFBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO1lBQUUsT0FBTyxJQUFJLFlBQUcsQ0FBQyxHQUFHLEdBQUcsa0JBQWtCLENBQUMsQ0FBQztRQUVqRSxNQUFNLE1BQU0sR0FBUSxFQUFFLENBQUM7UUFDdkIsS0FBSSxNQUFNLEVBQUUsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNwQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNoRCx5RkFBeUY7WUFDekYsSUFBRyxNQUFNLFlBQVksWUFBRztnQkFBRSxPQUFPLElBQUksWUFBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN6RCxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RCLENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsR0FBRyxDQUFJLENBQVU7UUFDZiwrRUFBK0U7UUFDL0UsSUFBRyxDQUFDLFlBQVksR0FBRztZQUFFLE9BQU8sSUFBcUMsQ0FBQztRQUNsRSxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEIsQ0FBQztDQUNGO0FBeENELGtCQXdDQztBQUVELFNBQWdCLEtBQUssQ0FBSSxDQUFVO0lBQ2pDLE9BQU8sSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEIsQ0FBQztBQUZELHNCQUVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXJyLCBSZXN1bHQgfSBmcm9tIFwiLi4vcmVzdWx0XCI7XG5pbXBvcnQgeyBUeXBlIH0gZnJvbSBcIi4uL3R5cGVcIjtcblxuZXhwb3J0IGNsYXNzIEFycjxUPiBleHRlbmRzIFR5cGU8QXJyYXk8VD4+IHtcbiAgcmVhZG9ubHkgZWxlbWVudFR5cGU6IFR5cGU8VD47XG5cbiAgY29uc3RydWN0b3IodDogVHlwZTxUPikge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5lbGVtZW50VHlwZSA9IHQ7XG4gIH1cblxuICBjaGVjayh2YWw6IGFueSk6IFJlc3VsdDxBcnJheTxUPj4ge1xuICAgIGlmKCFBcnJheS5pc0FycmF5KHZhbCkpIHJldHVybiBuZXcgRXJyKGAke3ZhbH0gaXMgbm90IGFuIGFycmF5YCk7XG5cbiAgICBmb3IoY29uc3QgZWwgb2YgdmFsKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmVsZW1lbnRUeXBlLmNoZWNrKGVsKTtcbiAgICAgIC8vIERvbid0IGJvdGhlciBjb2xsZWN0aW5nIGFsbCBlcnJvcnMgaW4gYW4gYXJyYXk6IGZvciBsb25nIGFycmF5cyB0aGlzIGlzIHZlcnkgb2Jub3hpb3VzXG4gICAgICBpZihyZXN1bHQgaW5zdGFuY2VvZiBFcnIpIHJldHVybiBuZXcgRXJyKHJlc3VsdC5tZXNzYWdlKTtcbiAgICB9XG5cbiAgICAvLyBJZiB3ZSBnb3QgdGhpcyBmYXIsIHRoZXJlIHdlcmUgbm8gZXJyb3JzOyBpdCdzIGFuIEFycmF5PFQ+XG4gICAgcmV0dXJuIHZhbCBhcyBBcnJheTxUPjtcbiAgfVxuXG4gIHNsaWNlUmVzdWx0KHZhbDogYW55KTogUmVzdWx0PEFycmF5PFQ+PiB7XG4gICAgaWYoIUFycmF5LmlzQXJyYXkodmFsKSkgcmV0dXJuIG5ldyBFcnIoYCR7dmFsfSBpcyBub3QgYW4gYXJyYXlgKTtcblxuICAgIGNvbnN0IHJlc3VsdDogVFtdID0gW107XG4gICAgZm9yKGNvbnN0IGVsIG9mIHZhbCkge1xuICAgICAgY29uc3Qgc2xpY2VkID0gdGhpcy5lbGVtZW50VHlwZS5zbGljZVJlc3VsdChlbCk7XG4gICAgICAvLyBEb24ndCBib3RoZXIgY29sbGVjdGluZyBhbGwgZXJyb3JzIGluIGFuIGFycmF5OiBmb3IgbG9uZyBhcnJheXMgdGhpcyBpcyB2ZXJ5IG9ibm94aW91c1xuICAgICAgaWYoc2xpY2VkIGluc3RhbmNlb2YgRXJyKSByZXR1cm4gbmV3IEVycihzbGljZWQubWVzc2FnZSk7XG4gICAgICByZXN1bHQucHVzaChzbGljZWQpO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBhbmQ8Uj4odDogVHlwZTxSPik6IFR5cGU8QXJyYXk8VD4mUj4ge1xuICAgIC8vIE9kZGx5LCBUeXBlU2NyaXB0IG1lcmdlcyBhcnJheXMgdG9nZXRoZXIgYnkgc2ltcGx5IHRha2luZyB0aGUgbGVmdCBoYW5kIHNpZGVcbiAgICBpZih0IGluc3RhbmNlb2YgQXJyKSByZXR1cm4gdGhpcyBhcyB1bmtub3duIGFzIFR5cGU8QXJyYXk8VD4gJiBSPjtcbiAgICByZXR1cm4gc3VwZXIuYW5kKHQpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcnJheTxUPih0OiBUeXBlPFQ+KTogQXJyPFQ+IHtcbiAgcmV0dXJuIG5ldyBBcnIodCk7XG59XG4iXX0=