@specifai-net/appsync-template-tester
Version:
Unit test AppSync VTL resolvers, with popular frameworks such as Jest
95 lines • 10.4 kB
JavaScript
"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==