@specifai-net/appsync-template-tester
Version:
Unit test AppSync VTL resolvers, with popular frameworks such as Jest
33 lines • 3.91 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.valueMapper = void 0;
const map_1 = require("./map");
const array_1 = require("./array");
const string_1 = require("./string");
function isPlainObject(value) {
return Object.prototype.toString.call(value) === "[object Object]";
}
function valueMapper(value) {
if (value instanceof map_1.JavaMap)
return value;
if (value instanceof array_1.JavaArray)
return value;
if (Array.isArray(value)) {
return new array_1.JavaArray(value.map((x) => valueMapper(x)), valueMapper);
}
if (isPlainObject(value)) {
return (0, map_1.createMapProxy)(new map_1.JavaMap(Object.entries(value).reduce((sum, [k, v]) => {
return {
...sum,
[k]: valueMapper(v),
};
}, {}), valueMapper));
}
if (typeof value === "string" && !(value instanceof string_1.JavaString)) {
return new string_1.JavaString(value);
}
// for now we don't handle number.
return value;
}
exports.valueMapper = valueMapper;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwcGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3ZhbHVlLW1hcHBlci9tYXBwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsK0JBQWdEO0FBQ2hELG1DQUFvQztBQUNwQyxxQ0FBc0M7QUFFdEMsU0FBUyxhQUFhLENBQUMsS0FBVTtJQUMvQixPQUFPLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxpQkFBaUIsQ0FBQztBQUNyRSxDQUFDO0FBRUQsU0FBZ0IsV0FBVyxDQUFDLEtBQVU7SUFDcEMsSUFBSSxLQUFLLFlBQVksYUFBTztRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQzNDLElBQUksS0FBSyxZQUFZLGlCQUFTO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDN0MsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQ3hCLE9BQU8sSUFBSSxpQkFBUyxDQUNsQixLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDaEMsV0FBVyxDQUNaLENBQUM7S0FDSDtJQUNELElBQUksYUFBYSxDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQ3hCLE9BQU8sSUFBQSxvQkFBYyxFQUNuQixJQUFJLGFBQU8sQ0FDVCxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQzNDLE9BQU87Z0JBQ0wsR0FBRyxHQUFHO2dCQUNOLENBQUMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQzthQUNwQixDQUFDO1FBQ0osQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUNOLFdBQVcsQ0FDWixDQUNGLENBQUM7S0FDSDtJQUVELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLENBQUMsQ0FBRSxLQUFhLFlBQVksbUJBQVUsQ0FBQyxFQUFFO1FBQ3hFLE9BQU8sSUFBSSxtQkFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQzlCO0lBRUQsa0NBQWtDO0lBQ2xDLE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQTdCRCxrQ0E2QkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBKYXZhTWFwLCBjcmVhdGVNYXBQcm94eSB9IGZyb20gXCIuL21hcFwiO1xuaW1wb3J0IHsgSmF2YUFycmF5IH0gZnJvbSBcIi4vYXJyYXlcIjtcbmltcG9ydCB7IEphdmFTdHJpbmcgfSBmcm9tIFwiLi9zdHJpbmdcIjtcblxuZnVuY3Rpb24gaXNQbGFpbk9iamVjdCh2YWx1ZTogYW55KSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpID09PSBcIltvYmplY3QgT2JqZWN0XVwiO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsdWVNYXBwZXIodmFsdWU6IGFueSk6IGFueSB7XG4gIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEphdmFNYXApIHJldHVybiB2YWx1ZTtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgSmF2YUFycmF5KSByZXR1cm4gdmFsdWU7XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiBuZXcgSmF2YUFycmF5KFxuICAgICAgdmFsdWUubWFwKCh4KSA9PiB2YWx1ZU1hcHBlcih4KSksXG4gICAgICB2YWx1ZU1hcHBlclxuICAgICk7XG4gIH1cbiAgaWYgKGlzUGxhaW5PYmplY3QodmFsdWUpKSB7XG4gICAgcmV0dXJuIGNyZWF0ZU1hcFByb3h5KFxuICAgICAgbmV3IEphdmFNYXAoXG4gICAgICAgIE9iamVjdC5lbnRyaWVzKHZhbHVlKS5yZWR1Y2UoKHN1bSwgW2ssIHZdKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnN1bSxcbiAgICAgICAgICAgIFtrXTogdmFsdWVNYXBwZXIodiksXG4gICAgICAgICAgfTtcbiAgICAgICAgfSwge30pLFxuICAgICAgICB2YWx1ZU1hcHBlclxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiICYmICEoKHZhbHVlIGFzIGFueSkgaW5zdGFuY2VvZiBKYXZhU3RyaW5nKSkge1xuICAgIHJldHVybiBuZXcgSmF2YVN0cmluZyh2YWx1ZSk7XG4gIH1cblxuICAvLyBmb3Igbm93IHdlIGRvbid0IGhhbmRsZSBudW1iZXIuXG4gIHJldHVybiB2YWx1ZTtcbn1cbiJdfQ==