@specifai-net/appsync-template-tester
Version:
Unit test AppSync VTL resolvers, with popular frameworks such as Jest
90 lines • 11.5 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.JavaString = void 0;
const array_1 = require("./array");
class JavaString {
constructor(str) {
this.value = str;
}
concat(str) {
return new JavaString(this.value.concat(str.toString()));
}
contains(str) {
return this.value.indexOf(str.toString()) !== -1;
}
endsWith(suffix) {
return this.value.endsWith(suffix.toString());
}
equals(str) {
return this.value === str.toString();
}
indexOf(val, fromIndex = 0) {
return this.value.indexOf(val.toString(), fromIndex);
}
isEmpty() {
return this.value.length === 0;
}
lastIndexOf(val, fromIndex = Infinity) {
return this.value.lastIndexOf(val.toString(), fromIndex);
}
replace(find, replace) {
return this.replaceAll(find, replace);
}
replaceAll(find, replace) {
const rep = this.value.replace(new RegExp(find, "g"), replace);
return new JavaString(rep);
}
replaceFirst(find, replace) {
const rep = this.value.replace(new RegExp(find), replace);
return new JavaString(rep);
}
matches(regexString) {
const re = new RegExp(regexString.toString());
return this.value.match(re) !== null;
}
split(regexString, limit = undefined) {
// WARNING: this assumes Java and JavaScript regular expressions are identical, according to
// https://en.wikipedia.org/wiki/Comparison_of_regular_expression_engines#Language_features
// this should be the case except for look-behind which is not implemented in JavaScript
// java.util.String.split does not to include the separator in the result. JS does splice any capturing group
// in the regex into the result. To remove the groups from the result we need the count of capturing groups in
// the provided regex, the only way in JS seems to be via a match to an empty string
const testRe = new RegExp(`${regexString.toString()}|`);
const matches = "".match(testRe);
const ngroups = matches ? matches.length : 0; // actually num of groups plus one, ie "" and the (empty) groups
const re = new RegExp(regexString.toString());
const result = this.value
.split(re, limit)
.filter((v, ii) => !(ii % ngroups));
return new array_1.JavaArray(result, (e) => new JavaString(e.toString()));
}
startsWith(prefix, toffset = 0) {
return this.value.startsWith(prefix.toString(), toffset);
}
substring(beginIndex, endIndex = Infinity) {
return this.value.substring(beginIndex, endIndex);
}
toJSON() {
return this.toString();
}
toLowerCase() {
return new JavaString(this.value.toLowerCase());
}
toUpperCase() {
return new JavaString(this.value.toUpperCase());
}
toString() {
return this.value;
}
toIdString() {
return this.value;
}
trim() {
return new JavaString(this.value.trim());
}
length() {
return this.value && this.value.length;
}
}
exports.JavaString = JavaString;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3ZhbHVlLW1hcHBlci9zdHJpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQW9DO0FBRXBDLE1BQWEsVUFBVTtJQUdyQixZQUFZLEdBQVE7UUFDbEIsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUM7SUFDbkIsQ0FBQztJQUVELE1BQU0sQ0FBQyxHQUFRO1FBQ2IsT0FBTyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxRQUFRLENBQUMsR0FBUTtRQUNmLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELFFBQVEsQ0FBQyxNQUFXO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELE1BQU0sQ0FBQyxHQUFRO1FBQ2IsT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQsT0FBTyxDQUFDLEdBQVEsRUFBRSxTQUFTLEdBQUcsQ0FBQztRQUM3QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxXQUFXLENBQUMsR0FBUSxFQUFFLFNBQVMsR0FBRyxRQUFRO1FBQ3hDLE9BQU8sSUFBSSxDQUFD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LE9BQU8sSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxJQUFJO1FBQ0YsT0FBTyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELE1BQU07UUFDSixPQUFPLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7SUFDekMsQ0FBQztDQUNGO0FBOUdELGdDQThHQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEphdmFBcnJheSB9IGZyb20gXCIuL2FycmF5XCI7XG5cbmV4cG9ydCBjbGFzcyBKYXZhU3RyaW5nIHtcbiAgdmFsdWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihzdHI6IGFueSkge1xuICAgIHRoaXMudmFsdWUgPSBzdHI7XG4gIH1cblxuICBjb25jYXQoc3RyOiBhbnkpIHtcbiAgICByZXR1cm4gbmV3IEphdmFTdHJpbmcodGhpcy52YWx1ZS5jb25jYXQoc3RyLnRvU3RyaW5nKCkpKTtcbiAgfVxuXG4gIGNvbnRhaW5zKHN0cjogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWUuaW5kZXhPZihzdHIudG9TdHJpbmcoKSkgIT09IC0xO1xuICB9XG5cbiAgZW5kc1dpdGgoc3VmZml4OiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZS5lbmRzV2l0aChzdWZmaXgudG9TdHJpbmcoKSk7XG4gIH1cblxuICBlcXVhbHMoc3RyOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZSA9PT0gc3RyLnRvU3RyaW5nKCk7XG4gIH1cblxuICBpbmRleE9mKHZhbDogYW55LCBmcm9tSW5kZXggPSAwKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWUuaW5kZXhPZih2YWwudG9TdHJpbmcoKSwgZnJvbUluZGV4KTtcbiAgfVxuXG4gIGlzRW1wdHkoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWUubGVuZ3RoID09PSAwO1xuICB9XG5cbiAgbGFzdEluZGV4T2YodmFsOiBhbnksIGZyb21JbmRleCA9IEluZmluaXR5KSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWUubGFzdEluZGV4T2YodmFsLnRvU3RyaW5nKCksIGZyb21JbmRleCk7XG4gIH1cblxuICByZXBsYWNlKGZpbmQ6IGFueSwgcmVwbGFjZTogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMucmVwbGFjZUFsbChmaW5kLCByZXBsYWNlKTtcbiAgfVxuXG4gIHJlcGxhY2VBbGwoZmluZDogYW55LCByZXBsYWNlOiBhbnkpIHtcbiAgICBjb25zdCByZXAgPSB0aGlzLnZhbHVlLnJlcGxhY2UobmV3IFJlZ0V4cChmaW5kLCBcImdcIiksIHJlcGxhY2UpO1xuICAgIHJldHVybiBuZXcgSmF2YVN0cmluZyhyZXApO1xuICB9XG5cbiAgcmVwbGFjZUZpcnN0KGZpbmQ6IGFueSwgcmVwbGFjZTogYW55KSB7XG4gICAgY29uc3QgcmVwID0gdGhpcy52YWx1ZS5yZXBsYWNlKG5ldyBSZWdFeHAoZmluZCksIHJlcGxhY2UpO1xuICAgIHJldHVybiBuZXcgSmF2YVN0cmluZyhyZXApO1xuICB9XG5cbiAgbWF0Y2hlcyhyZWdleFN0cmluZzogYW55KSB7XG4gICAgY29uc3QgcmUgPSBuZXcgUmVnRXhwKHJlZ2V4U3RyaW5nLnRvU3RyaW5nKCkpO1xuXG4gICAgcmV0dXJuIHRoaXMudmFsdWUubWF0Y2gocmUpICE9PSBudWxsO1xuICB9XG5cbiAgc3BsaXQocmVnZXhTdHJpbmc6IGFueSwgbGltaXQgPSB1bmRlZmluZWQpIHtcbiAgICAvLyBXQVJOSU5HOiB0aGlzIGFzc3VtZXMgSmF2YSBhbmQgSmF2YVNjcmlwdCByZWd1bGFyIGV4cHJlc3Npb25zIGFyZSBpZGVudGljYWwsIGFjY29yZGluZyB0b1xuICAgIC8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbXBhcmlzb25fb2ZfcmVndWxhcl9leHByZXNzaW9uX2VuZ2luZXMjTGFuZ3VhZ2VfZmVhdHVyZXNcbiAgICAvLyB0aGlzIHNob3VsZCBiZSB0aGUgY2FzZSBleGNlcHQgZm9yIGxvb2stYmVoaW5kIHdoaWNoIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiBKYXZhU2NyaXB0XG5cbiAgICAvLyBqYXZhLnV0aWwuU3RyaW5nLnNwbGl0IGRvZXMgbm90IHRvIGluY2x1ZGUgdGhlIHNlcGFyYXRvciBpbiB0aGUgcmVzdWx0LiBKUyBkb2VzIHNwbGljZSBhbnkgY2FwdHVyaW5nIGdyb3VwXG4gICAgLy8gaW4gdGhlIHJlZ2V4IGludG8gdGhlIHJlc3VsdC4gVG8gcmVtb3ZlIHRoZSBncm91cHMgZnJvbSB0aGUgcmVzdWx0IHdlIG5lZWQgdGhlIGNvdW50IG9mIGNhcHR1cmluZyBncm91cHMgaW5cbiAgICAvLyB0aGUgcHJvdmlkZWQgcmVnZXgsIHRoZSBvbmx5IHdheSBpbiBKUyBzZWVtcyB0byBiZSB2aWEgYSBtYXRjaCB0byBhbiBlbXB0eSBzdHJpbmdcbiAgICBjb25zdCB0ZXN0UmUgPSBuZXcgUmVnRXhwKGAke3JlZ2V4U3RyaW5nLnRvU3RyaW5nKCl9fGApO1xuICAgIGNvbnN0IG1hdGNoZXMgPSBcIlwiLm1hdGNoKHRlc3RSZSk7XG4gICAgY29uc3Qgbmdyb3VwcyA9IG1hdGNoZXMgPyBtYXRjaGVzLmxlbmd0aCA6IDA7IC8vIGFjdHVhbGx5IG51bSBvZiBncm91cHMgcGx1cyBvbmUsIGllIFwiXCIgYW5kIHRoZSAoZW1wdHkpIGdyb3Vwc1xuXG4gICAgY29uc3QgcmUgPSBuZXcgUmVnRXhwKHJlZ2V4U3RyaW5nLnRvU3RyaW5nKCkpO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy52YWx1ZVxuICAgICAgLnNwbGl0KHJlLCBsaW1pdClcbiAgICAgIC5maWx0ZXIoKHYsIGlpKSA9PiAhKGlpICUgbmdyb3VwcykpO1xuICAgIHJldHVybiBuZXcgSmF2YUFycmF5KHJlc3VsdCwgKGU6IGFueSkgPT4gbmV3IEphdmFTdHJpbmcoZS50b1N0cmluZygpKSk7XG4gIH1cblxuICBzdGFydHNXaXRoKHByZWZpeDogYW55LCB0b2Zmc2V0ID0gMCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlLnN0YXJ0c1dpdGgocHJlZml4LnRvU3RyaW5nKCksIHRvZmZzZXQpO1xuICB9XG5cbiAgc3Vic3RyaW5nKGJlZ2luSW5kZXg6IGFueSwgZW5kSW5kZXggPSBJbmZpbml0eSkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlLnN1YnN0cmluZyhiZWdpbkluZGV4LCBlbmRJbmRleCk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHRoaXMudG9TdHJpbmcoKTtcbiAgfVxuXG4gIHRvTG93ZXJDYXNlKCkge1xuICAgIHJldHVybiBuZXcgSmF2YVN0cmluZyh0aGlzLnZhbHVlLnRvTG93ZXJDYXNlKCkpO1xuICB9XG5cbiAgdG9VcHBlckNhc2UoKSB7XG4gICAgcmV0dXJuIG5ldyBKYXZhU3RyaW5nKHRoaXMudmFsdWUudG9VcHBlckNhc2UoKSk7XG4gIH1cblxuICB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZTtcbiAgfVxuXG4gIHRvSWRTdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gIH1cblxuICB0cmltKCkge1xuICAgIHJldHVybiBuZXcgSmF2YVN0cmluZyh0aGlzLnZhbHVlLnRyaW0oKSk7XG4gIH1cblxuICBsZW5ndGgoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWUgJiYgdGhpcy52YWx1ZS5sZW5ndGg7XG4gIH1cbn1cbiJdfQ==