UNPKG

@specifai-net/appsync-template-tester

Version:

Unit test AppSync VTL resolvers, with popular frameworks such as Jest

95 lines 10.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.JavaMap = exports.createMapProxy = void 0; const array_1 = require("./array"); const to_json_1 = require("./to-json"); function createMapProxy(map) { return new Proxy(map, { get(obj, prop) { if (map.map.has(prop)) { return map.get(prop); } return map[prop]; }, set(obj, prop, val) { if (typeof val !== "function") { map.map.set(prop, val); } return true; }, }); } exports.createMapProxy = createMapProxy; class JavaMap { constructor(obj, mapper) { this.mapper = mapper; this.map = new Map(); Object.entries(obj).forEach(([key, value]) => { this.map.set(key, value); }); } clear() { this.map.clear(); } containsKey(key) { return this.map.has(key); } containsValue(value) { return Array.from(this.map.values()).indexOf(value) !== -1; } entrySet() { const entries = Array.from(this.map.entries()).map(([key, value]) => createMapProxy(new JavaMap({ key, value, }, this.mapper))); return new array_1.JavaArray(entries, this.mapper); } equals(value) { return Array.from(this.map.entries()).every(([key, v]) => value.get(key) === v); } get(key) { if (this.map.has(key.toString())) { return this.map.get(key.toString()); } return null; } isEmpty() { return this.map.size === 0; } keySet() { return new array_1.JavaArray(Array.from(this.map.keys()).map(this.mapper), this.mapper); } put(key, value) { const saveValue = this.mapper(value); this.map.set(key, saveValue); return saveValue; } putAll(map) { const m = (0, to_json_1.toJSON)(map); Object.entries(m).forEach(([key, value]) => { this.put(key, value); }); } remove(key) { if (!this.map.has(key)) { return null; } const value = this.map.get(key); this.map.delete(key); return value; } size() { return this.map.size; } values() { return new array_1.JavaArray(Array.from(this.map.values()), this.mapper); } toJSON() { return Array.from(this.map.entries()).reduce((sum, [key, value]) => ({ ...sum, [key]: (0, to_json_1.toJSON)(value), }), {}); } } exports.JavaMap = JavaMap; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3ZhbHVlLW1hcHBlci9tYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQW9DO0FBQ3BDLHVDQUFtQztBQUVuQyxTQUFnQixjQUFjLENBQUMsR0FBUTtJQUNyQyxPQUFPLElBQUksS0FBSyxDQUFDLEdBQUcsRUFBRTtRQUNwQixHQUFHLENBQUMsR0FBRyxFQUFFLElBQUk7WUFDWCxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNyQixPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDdEI7WUFDRCxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQixDQUFDO1FBQ0QsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRztZQUNoQixJQUFJLE9BQU8sR0FBRyxLQUFLLFVBQVUsRUFBRTtnQkFDN0IsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO2FBQ3hCO1lBQ0QsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQWZELHdDQWVDO0FBRUQsTUFBYSxPQUFPO0lBS2xCLFlBQVksR0FBUSxFQUFFLE1BQWdCO1FBQ3BDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNyQixNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUU7WUFDM0MsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDO0lBQ0ws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SSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDckIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsSUFBSTtRQUNGLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUM7SUFDdkIsQ0FBQztJQUVELE1BQU07UUFDSixPQUFPLElBQUksaUJBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVELE1BQU07UUFDSixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FDMUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDdEIsR0FBRyxHQUFHO1lBQ04sQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFBLGdCQUFNLEVBQUMsS0FBSyxDQUFDO1NBQ3JCLENBQUMsRUFDRixFQUFFLENBQ0gsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQXhHRCwwQkF3R0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBKYXZhQXJyYXkgfSBmcm9tIFwiLi9hcnJheVwiO1xuaW1wb3J0IHsgdG9KU09OIH0gZnJvbSBcIi4vdG8tanNvblwiO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTWFwUHJveHkobWFwOiBhbnkpIHtcbiAgcmV0dXJuIG5ldyBQcm94eShtYXAsIHtcbiAgICBnZXQob2JqLCBwcm9wKSB7XG4gICAgICBpZiAobWFwLm1hcC5oYXMocHJvcCkpIHtcbiAgICAgICAgcmV0dXJuIG1hcC5nZXQocHJvcCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbWFwW3Byb3BdO1xuICAgIH0sXG4gICAgc2V0KG9iaiwgcHJvcCwgdmFsKSB7XG4gICAgICBpZiAodHlwZW9mIHZhbCAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIG1hcC5tYXAuc2V0KHByb3AsIHZhbCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9LFxuICB9KTtcbn1cblxuZXhwb3J0IGNsYXNzIEphdmFNYXAge1xuICBwcml2YXRlIG1hcDogTWFwPHN0cmluZywgYW55PjtcblxuICBwcml2YXRlIG1hcHBlcjogRnVuY3Rpb247XG5cbiAgY29uc3RydWN0b3Iob2JqOiBhbnksIG1hcHBlcjogRnVuY3Rpb24pIHtcbiAgICB0aGlzLm1hcHBlciA9IG1hcHBlcjtcbiAgICB0aGlzLm1hcCA9IG5ldyBNYXAoKTtcbiAgICBPYmplY3QuZW50cmllcyhvYmopLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgdGhpcy5tYXAuc2V0KGtleSwgdmFsdWUpO1xuICAgIH0pO1xuICB9XG5cbiAgY2xlYXIoKSB7XG4gICAgdGhpcy5tYXAuY2xlYXIoKTtcbiAgfVxuXG4gIGNvbnRhaW5zS2V5KGtleTogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMubWFwLmhhcyhrZXkpO1xuICB9XG5cbiAgY29udGFpbnNWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5tYXAudmFsdWVzKCkpLmluZGV4T2YodmFsdWUpICE9PSAtMTtcbiAgfVxuXG4gIGVudHJ5U2V0KCkge1xuICAgIGNvbnN0IGVudHJpZXMgPSBBcnJheS5mcm9tKHRoaXMubWFwLmVudHJpZXMoKSkubWFwKChba2V5LCB2YWx1ZV0pID0+XG4gICAgICBjcmVhdGVNYXBQcm94eShcbiAgICAgICAgbmV3IEphdmFNYXAoXG4gICAgICAgICAge1xuICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB0aGlzLm1hcHBlclxuICAgICAgICApXG4gICAgICApXG4gICAgKTtcblxuICAgIHJldHVybiBuZXcgSmF2YUFycmF5KGVudHJpZXMsIHRoaXMubWFwcGVyKTtcbiAgfVxuXG4gIGVxdWFscyh2YWx1ZTogYW55KSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5tYXAuZW50cmllcygpKS5ldmVyeShcbiAgICAgIChba2V5LCB2XSkgPT4gdmFsdWUuZ2V0KGtleSkgPT09IHZcbiAgICApO1xuICB9XG5cbiAgZ2V0KGtleTogYW55KSB7XG4gICAgaWYgKHRoaXMubWFwLmhhcyhrZXkudG9TdHJpbmcoKSkpIHtcbiAgICAgIHJldHVybiB0aGlzLm1hcC5nZXQoa2V5LnRvU3RyaW5nKCkpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGlzRW1wdHkoKSB7XG4gICAgcmV0dXJuIHRoaXMubWFwLnNpemUgPT09IDA7XG4gIH1cblxuICBrZXlTZXQoKSB7XG4gICAgcmV0dXJuIG5ldyBKYXZhQXJyYXkoXG4gICAgICBBcnJheS5mcm9tKHRoaXMubWFwLmtleXMoKSkubWFwKHRoaXMubWFwcGVyIGFzIGFueSksXG4gICAgICB0aGlzLm1hcHBlclxuICAgICk7XG4gIH1cblxuICBwdXQoa2V5OiBhbnksIHZhbHVlOiBhbnkpIHtcbiAgICBjb25zdCBzYXZlVmFsdWUgPSB0aGlzLm1hcHBlcih2YWx1ZSk7XG4gICAgdGhpcy5tYXAuc2V0KGtleSwgc2F2ZVZhbHVlKTtcbiAgICByZXR1cm4gc2F2ZVZhbHVlO1xuICB9XG5cbiAgcHV0QWxsKG1hcDogb2JqZWN0IHwgSmF2YU1hcCkge1xuICAgIGNvbnN0IG0gPSB0b0pTT04obWFwKTtcbiAgICBPYmplY3QuZW50cmllcyhtKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgIHRoaXMucHV0KGtleSwgdmFsdWUpO1xuICAgIH0pO1xuICB9XG5cbiAgcmVtb3ZlKGtleTogYW55KSB7XG4gICAgaWYgKCF0aGlzLm1hcC5oYXMoa2V5KSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5tYXAuZ2V0KGtleSk7XG4gICAgdGhpcy5tYXAuZGVsZXRlKGtleSk7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgc2l6ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5tYXAuc2l6ZTtcbiAgfVxuXG4gIHZhbHVlcygpIHtcbiAgICByZXR1cm4gbmV3IEphdmFBcnJheShBcnJheS5mcm9tKHRoaXMubWFwLnZhbHVlcygpKSwgdGhpcy5tYXBwZXIpO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMubWFwLmVudHJpZXMoKSkucmVkdWNlKFxuICAgICAgKHN1bSwgW2tleSwgdmFsdWVdKSA9PiAoe1xuICAgICAgICAuLi5zdW0sXG4gICAgICAgIFtrZXldOiB0b0pTT04odmFsdWUpLFxuICAgICAgfSksXG4gICAgICB7fVxuICAgICk7XG4gIH1cbn1cbiJdfQ==