@specifai-net/appsync-template-tester
Version:
Unit test AppSync VTL resolvers, with popular frameworks such as Jest
60 lines • 5.88 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.JavaArray = void 0;
const to_json_1 = require("./to-json");
class JavaArray extends Array {
constructor(values, mapper) {
let val = values;
if (!Array.isArray(values)) {
// splice sends a single object
val = [values];
}
if (val.length !== 1) {
super(...val);
}
else {
super();
this.push(val[0]);
}
Object.setPrototypeOf(this, Object.create(JavaArray.prototype));
this.mapper = mapper;
}
add(value) {
this.push(this.mapper(value));
return value;
}
addAll(value) {
value.forEach((val) => this.push(this.mapper(val)));
}
clear() {
this.length = 0;
}
contains(value) {
const val = value && value.toJSON ? value.toJSON() : value;
return this.toJSON().indexOf(val) !== -1;
}
containsAll(value = []) {
return value.every((v) => this.contains(v));
}
isEmpty() {
return this.length === 0;
}
remove(value) {
const idx = this.indexOf(value);
if (idx === -1)
return;
this.splice(idx, 1);
}
removeAll(value) {
const self = this;
value.forEach((val) => self.remove(val));
}
size() {
return this.length;
}
toJSON() {
return Array.from(this).map(to_json_1.toJSON);
}
}
exports.JavaArray = JavaArray;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdmFsdWUtbWFwcGVyL2FycmF5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHVDQUFtQztBQUVuQyxNQUFhLFNBQVUsU0FBUSxLQUFVO0lBR3ZDLFlBQVksTUFBVyxFQUFFLE1BQWdCO1FBQ3ZDLElBQUksR0FBRyxHQUFHLE1BQU0sQ0FBQztRQUNqQixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUMxQiwrQkFBK0I7WUFDL0IsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDaEI7UUFDRCxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3BCLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1NBQ2Y7YUFBTTtZQUNMLEtBQUssRUFBRSxDQUFDO1lBQ1IsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNuQjtRQUNELE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUVELEdBQUcsQ0FBQyxLQUFVO1FBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDOUIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQVU7UUFDZixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFVO1FBQ2pCLE1BQU0sR0FBRyxHQUFHLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUMzRCxPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELFdBQVcsQ0FBQyxRQUFvQixFQUFFO1FBQ2hDLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxPQUFPO1FBQ0wsT0FBTyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQVU7UUFDZixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQztZQUFFLE9BQU87UUFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFVO1FBQ2xCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQztRQUNsQixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELElBQUk7UUFDRixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUVELE1BQU07UUFDSixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLGdCQUFNLENBQUMsQ0FBQztJQUN0QyxDQUFDO0NBQ0Y7QUEvREQsOEJBK0RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdG9KU09OIH0gZnJvbSBcIi4vdG8tanNvblwiO1xuXG5leHBvcnQgY2xhc3MgSmF2YUFycmF5IGV4dGVuZHMgQXJyYXk8YW55PiB7XG4gIHByaXZhdGUgbWFwcGVyOiBGdW5jdGlvbjtcblxuICBjb25zdHJ1Y3Rvcih2YWx1ZXM6IGFueSwgbWFwcGVyOiBGdW5jdGlvbikge1xuICAgIGxldCB2YWwgPSB2YWx1ZXM7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlcykpIHtcbiAgICAgIC8vIHNwbGljZSBzZW5kcyBhIHNpbmdsZSBvYmplY3RcbiAgICAgIHZhbCA9IFt2YWx1ZXNdO1xuICAgIH1cbiAgICBpZiAodmFsLmxlbmd0aCAhPT0gMSkge1xuICAgICAgc3VwZXIoLi4udmFsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3VwZXIoKTtcbiAgICAgIHRoaXMucHVzaCh2YWxbMF0pO1xuICAgIH1cbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgT2JqZWN0LmNyZWF0ZShKYXZhQXJyYXkucHJvdG90eXBlKSk7XG4gICAgdGhpcy5tYXBwZXIgPSBtYXBwZXI7XG4gIH1cblxuICBhZGQodmFsdWU6IGFueSkge1xuICAgIHRoaXMucHVzaCh0aGlzLm1hcHBlcih2YWx1ZSkpO1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIGFkZEFsbCh2YWx1ZTogYW55KSB7XG4gICAgdmFsdWUuZm9yRWFjaCgodmFsOiBhbnkpID0+IHRoaXMucHVzaCh0aGlzLm1hcHBlcih2YWwpKSk7XG4gIH1cblxuICBjbGVhcigpIHtcbiAgICB0aGlzLmxlbmd0aCA9IDA7XG4gIH1cblxuICBjb250YWlucyh2YWx1ZTogYW55KSB7XG4gICAgY29uc3QgdmFsID0gdmFsdWUgJiYgdmFsdWUudG9KU09OID8gdmFsdWUudG9KU09OKCkgOiB2YWx1ZTtcbiAgICByZXR1cm4gdGhpcy50b0pTT04oKS5pbmRleE9mKHZhbCkgIT09IC0xO1xuICB9XG5cbiAgY29udGFpbnNBbGwodmFsdWU6IEFycmF5PGFueT4gPSBbXSkge1xuICAgIHJldHVybiB2YWx1ZS5ldmVyeSgodikgPT4gdGhpcy5jb250YWlucyh2KSk7XG4gIH1cblxuICBpc0VtcHR5KCkge1xuICAgIHJldHVybiB0aGlzLmxlbmd0aCA9PT0gMDtcbiAgfVxuXG4gIHJlbW92ZSh2YWx1ZTogYW55KSB7XG4gICAgY29uc3QgaWR4ID0gdGhpcy5pbmRleE9mKHZhbHVlKTtcbiAgICBpZiAoaWR4ID09PSAtMSkgcmV0dXJuO1xuICAgIHRoaXMuc3BsaWNlKGlkeCwgMSk7XG4gIH1cblxuICByZW1vdmVBbGwodmFsdWU6IGFueSkge1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIHZhbHVlLmZvckVhY2goKHZhbDogYW55KSA9PiBzZWxmLnJlbW92ZSh2YWwpKTtcbiAgfVxuXG4gIHNpemUoKSB7XG4gICAgcmV0dXJuIHRoaXMubGVuZ3RoO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMpLm1hcCh0b0pTT04pO1xuICB9XG59XG4iXX0=