This repository has been archived on 2026-03-28. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files

48 lines
5.2 KiB
JavaScript

"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<T>
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=