UNPKG

jsoniq

Version:

JSONiq implementation for JavaScript

83 lines (81 loc) 14.3 kB
"use strict"; var InsertIntoObject_1 = require("./primitives/InsertIntoObject"); var InsertIntoArray_1 = require("./primitives/InsertIntoArray"); var DeleteFromObject_1 = require("./primitives/DeleteFromObject"); var DeleteFromArray_1 = require("./primitives/DeleteFromArray"); var ReplaceInObject_1 = require("./primitives/ReplaceInObject"); var ReplaceInArray_1 = require("./primitives/ReplaceInArray"); var RenameInObject_1 = require("./primitives/RenameInObject"); var Insert_1 = require("./primitives/Insert"); var Remove_1 = require("./primitives/Remove"); class UpdatePrimitives { constructor() { this.insertIntoObject = []; this.insertIntoArray = []; this.deleteFromObject = []; this.deleteFromArray = []; this.replaceInObject = []; this.replaceInArray = []; this.renameInObject = []; this.insert = []; this.remove = []; } getAll() { var primitives = []; primitives = this.insertIntoArray; primitives = primitives.concat(this.insertIntoObject); primitives = primitives.concat(this.insertIntoObject); primitives = primitives.concat(this.deleteFromObject); primitives = primitives.concat(this.deleteFromArray); primitives = primitives.concat(this.replaceInObject); primitives = primitives.concat(this.replaceInArray); primitives = primitives.concat(this.renameInObject); primitives = primitives.concat(this.insert); primitives = primitives.concat(this.remove); return primitives; } parse(udps) { udps.insertIntoObject.forEach((udp) => { this.insertIntoObject.push(new InsertIntoObject_1.default(udp.id, udp.ordPath, udp.pairs)); }); udps.insertIntoArray.forEach((udp) => { this.insertIntoArray.push(new InsertIntoArray_1.default(udp.id, udp.ordPath, udp.position, udp.items)); }); udps.deleteFromObject.forEach((udp) => { this.deleteFromObject.push(new DeleteFromObject_1.default(udp.id, udp.ordPath, udp.keys)); }); udps.replaceInObject.forEach((udp) => { this.replaceInObject.push(new ReplaceInObject_1.default(udp.id, udp.ordPath, udp.key, udp.item)); }); udps.deleteFromArray.forEach((udp) => { this.deleteFromArray.push(new DeleteFromArray_1.default(udp.id, udp.ordPath, udp.position)); }); udps.replaceInArray.forEach((udp) => { this.replaceInArray.push(new ReplaceInArray_1.default(udp.id, udp.ordPath, udp.position, udp.item)); }); udps.renameInObject.forEach((udp) => { this.renameInObject.push(new RenameInObject_1.default(udp.id, udp.ordPath, udp.key, udp.newKey)); }); udps.insert.forEach((udp) => { this.insert.push(new Insert_1.default(udp.id, udp.item)); }); udps.remove.forEach((udp) => { this.remove.push(new Remove_1.default(udp.id)); }); return this; } forEach(fn) { var containers = [ this.insertIntoObject, this.insertIntoArray, this.deleteFromObject, this.renameInObject, this.deleteFromArray, this.replaceInArray, this.insert, this.remove ]; containers.forEach(udps => { udps.forEach((udp, index) => { fn(udp, udps, index); }); }); return this; } } exports.default = UpdatePrimitives; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi91cGRhdGVzL1VwZGF0ZVByaW1pdGl2ZXMudHMiXSwibmFtZXMiOlsiVXBkYXRlUHJpbWl0aXZlcyIsIlVwZGF0ZVByaW1pdGl2ZXMuY29uc3RydWN0b3IiLCJVcGRhdGVQcmltaXRpdmVzLmdldEFsbCIsIlVwZGF0ZVByaW1pdGl2ZXMucGFyc2UiLCJVcGRhdGVQcmltaXRpdmVzLmZvckVhY2giXSwibWFwcGluZ3MiOiI7QUFFQSxpQ0FBNkIsK0JBQStCLENBQUMsQ0FBQTtBQUM3RCxnQ0FBNkIsOEJBQThCLENBQUMsQ0FBQTtBQUM1RCxpQ0FBNkIsK0JBQStCLENBQUMsQ0FBQTtBQUM3RCxnQ0FBNkIsOEJBQThCLENBQUMsQ0FBQTtBQUM1RCxnQ0FBNkIsOEJBQThCLENBQUMsQ0FBQTtBQUM1RCwrQkFBNkIsNkJBQTZCLENBQUMsQ0FBQTtBQUMzRCwrQkFBNkIsNkJBQTZCLENBQUMsQ0FBQTtBQUMzRCx1QkFBNkIscUJBQXFCLENBQUMsQ0FBQTtBQUNuRCx1QkFBNkIscUJBQXFCLENBQUMsQ0FBQTtBQUVuRDtJQUFBQTtRQUNJQyxxQkFBZ0JBLEdBQXdCQSxFQUFFQSxDQUFDQTtRQUMzQ0Esb0JBQWVBLEdBQXlCQSxFQUFFQSxDQUFDQTtRQUMzQ0EscUJBQWdCQSxHQUF3QkEsRUFBRUEsQ0FBQ0E7UUFDM0NBLG9CQUFlQSxHQUF5QkEsRUFBRUEsQ0FBQ0E7UUFDM0NBLG9CQUFlQSxHQUF5QkEsRUFBRUEsQ0FBQ0E7UUFDM0NBLG1CQUFjQSxHQUEwQkEsRUFBRUEsQ0FBQ0E7UUFDM0NBLG1CQUFjQSxHQUEwQkEsRUFBRUEsQ0FBQ0E7UUFDM0NBLFdBQU1BLEdBQWtDQSxFQUFFQSxDQUFDQTtRQUMzQ0EsV0FBTUEsR0FBa0NBLEVBQUVBLENBQUNBO0lBNEQvQ0EsQ0FBQ0E7SUExREdELE1BQU1BO1FBQ0ZFLElBQUlBLFVBQVVBLEdBQUdBLEVBQUVBLENBQUNBO1FBQ3BCQSxVQUFVQSxHQUFHQSxJQUFJQSxDQUFDQSxlQUFlQSxDQUFDQTtRQUNsQ0Es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R0FBR0EsQ0FBQ0EsRUFBRUEsRUFBRUEsR0FBR0EsQ0FBQ0EsT0FBT0EsRUFBRUEsR0FBR0EsQ0FBQ0EsUUFBUUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7UUFDdEZBLENBQUNBLENBQUNBLENBQUNBO1FBQ0hBLElBQUlBLENBQUNBLGNBQWNBLENBQUNBLE9BQU9BLENBQUNBLENBQUNBLEdBQUdBO1lBQzVCQSxJQUFJQSxDQUFDQSxjQUFjQSxDQUFDQSxJQUFJQSxDQUFDQSxJQUFJQSx3QkFBY0EsQ0FBQ0EsR0FBR0EsQ0FBQ0EsRUFBRUEsRUFBRUEsR0FBR0EsQ0FBQ0EsT0FBT0EsRUFBRUEsR0FBR0EsQ0FBQ0EsUUFBUUEsRUFBRUEsR0FBR0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7UUFDOUZBLENBQUNBLENBQUNBLENBQUNBO1FBQ0hBLElBQUlBLENBQUNBLGNBQWNBLENBQUNBLE9BQU9BLENBQUNBLENBQUNBLEdBQUdBO1lBQzVCQSxJQUFJQSxDQUFDQSxjQUFjQSxDQUFDQSxJQUFJQSxDQUFDQSxJQUFJQSx3QkFBY0EsQ0FBQ0EsR0FBR0EsQ0FBQ0EsRUFBRUEsRUFBRUEsR0FBR0EsQ0FBQ0EsT0FBT0EsRUFBRUEsR0FBR0EsQ0FBQ0EsR0FBR0EsRUFBRUEsR0FBR0EsQ0FBQ0EsTUFBTUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7UUFDM0ZBLENBQUNBLENBQUNBLENBQUNBO1FBQ0hBLElBQUlBLENBQUNBLE1BQU1BLENBQUNBLE9BQU9BLENBQUNBLENBQUNBLEdBQUdBO1lBQ3BCQSxJQUFJQSxDQUFDQSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQSxJQUFJQSxnQkFBTUEsQ0FBQ0EsR0FBR0EsQ0FBQ0EsRUFBRUEsRUFBRUEsR0FBR0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7UUFDbkRBLENBQUNBLENBQUNBLENBQUNBO1FBQ0hBLElBQUlBLENBQUNBLE1BQU1BLENBQUNBLE9BQU9BLENBQUNBLENBQUNBLEdBQUdBO1lBQ3BCQSxJQUFJQSxDQUFDQSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQSxJQUFJQSxnQkFBTUEsQ0FBQ0EsR0FBR0EsQ0FBQ0EsRUFBRUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7UUFDekNBLENBQUNBLENBQUNBLENBQUNBO1FBQ0hBLE1BQU1BLENBQUNBLElBQUlBLENBQUNBO0lBQ2hCQSxDQUFDQTtJQUVESCxPQUFPQSxDQUFDQSxFQUEwRUE7UUFDOUVJLElBQUlBLFVBQVVBLEdBQUdBO1lBQ2JBLElBQUlBLENBQUNBLGdCQUFnQkEsRUFBRUEsSUFBSUEsQ0FBQ0EsZUFBZUEsRUFBRUEsSUFBSUEsQ0FBQ0EsZ0JBQWdCQSxFQUFFQSxJQUFJQSxDQUFDQSxjQUFjQTtZQUN2RkEsSUFBSUEsQ0FBQ0EsZUFBZUEsRUFBRUEsSUFBSUEsQ0FBQ0EsY0FBY0EsRUFBRUEsSUFBSUEsQ0FBQ0EsTUFBTUEsRUFBRUEsSUFBSUEsQ0FBQ0EsTUFBTUE7U0FDdEVBLENBQUNBO1FBQ0ZBLFVBQVVBLENBQUNBLE9BQU9BLENBQUNBLElBQUlBO1lBQ25CQSxJQUFJQSxDQUFDQSxPQUFPQSxDQUFDQSxDQUFDQSxHQUFHQSxFQUFFQSxLQUFLQTtnQkFDcEJBLEVBQUVBLENBQUNBLEdBQUdBLEVBQUVBLElBQUlBLEVBQUVBLEtBQUtBLENBQUNBLENBQUNBO1lBQ3pCQSxDQUFDQSxDQUFDQSxDQUFDQTtRQUNQQSxDQUFDQSxDQUFDQSxDQUFDQTtRQUNIQSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQTtJQUNoQkEsQ0FBQ0E7QUFDTEosQ0FBQ0E7bUNBQUEiLCJmaWxlIjoibGliL3VwZGF0ZXMvVXBkYXRlUHJpbWl0aXZlcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBVcGRhdGVQcmltaXRpdmUgZnJvbSBcIi4vcHJpbWl0aXZlcy9VcGRhdGVQcmltaXRpdmVcIjtcblxuaW1wb3J0IEluc2VydEludG9PYmplY3QgZnJvbSBcIi4vcHJpbWl0aXZlcy9JbnNlcnRJbnRvT2JqZWN0XCI7XG5pbXBvcnQgSW5zZXJ0SW50b0FycmF5ICBmcm9tIFwiLi9wcmltaXRpdmVzL0luc2VydEludG9BcnJheVwiO1xuaW1wb3J0IERlbGV0ZUZyb21PYmplY3QgZnJvbSBcIi4vcHJpbWl0aXZlcy9EZWxldGVGcm9tT2JqZWN0XCI7XG5pbXBvcnQgRGVsZXRlRnJvbUFycmF5ICBmcm9tIFwiLi9wcmltaXRpdmVzL0RlbGV0ZUZyb21BcnJheVwiO1xuaW1wb3J0IFJlcGxhY2VJbk9iamVjdCAgZnJvbSBcIi4vcHJpbWl0aXZlcy9SZXBsYWNlSW5PYmplY3RcIjtcbmltcG9ydCBSZXBsYWNlSW5BcnJheSAgIGZyb20gXCIuL3ByaW1pdGl2ZXMvUmVwbGFjZUluQXJyYXlcIjtcbmltcG9ydCBSZW5hbWVJbk9iamVjdCAgIGZyb20gXCIuL3ByaW1pdGl2ZXMvUmVuYW1lSW5PYmplY3RcIjtcbmltcG9ydCBJbnNlcnQgICAgICAgICAgIGZyb20gXCIuL3ByaW1pdGl2ZXMvSW5zZXJ0XCI7XG5pbXBvcnQgUmVtb3ZlICAgICAgICAgICBmcm9tIFwiLi9wcmltaXRpdmVzL1JlbW92ZVwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBVcGRhdGVQcmltaXRpdmVzIHtcbiAgICBpbnNlcnRJbnRvT2JqZWN0IDogSW5zZXJ0SW50b09iamVjdFtdID0gW107XG4gICAgaW5zZXJ0SW50b0FycmF5ICA6IEluc2VydEludG9BcnJheVtdICA9IFtdO1xuICAgIGRlbGV0ZUZyb21PYmplY3QgOiBEZWxldGVGcm9tT2JqZWN0W10gPSBbXTtcbiAgICBkZWxldGVGcm9tQXJyYXkgIDogRGVsZXRlRnJvbUFycmF5W10gID0gW107XG4gICAgcmVwbGFjZUluT2JqZWN0ICA6IFJlcGxhY2VJbk9iamVjdFtdICA9IFtdO1xuICAgIHJlcGxhY2VJbkFycmF5ICAgOiBSZXBsYWNlSW5BcnJheVtdICAgPSBbXTtcbiAgICByZW5hbWVJbk9iamVjdCAgIDogUmVuYW1lSW5PYmplY3RbXSAgID0gW107XG4gICAgaW5zZXJ0ICAgICAgICAgICA6IEluc2VydFtdICAgICAgICAgICA9IFtdO1xuICAgIHJlbW92ZSAgICAgICAgICAgOiBSZW1vdmVbXSAgICAgICAgICAgPSBbXTtcblxuICAgIGdldEFsbCgpOiBVcGRhdGVQcmltaXRpdmVbXSB7XG4gICAgICAgIHZhciBwcmltaXRpdmVzID0gW107XG4gICAgICAgIHByaW1pdGl2ZXMgPSB0aGlzLmluc2VydEludG9BcnJheTtcbiAgICAgICAgcHJpbWl0aXZlcyA9IHByaW1pdGl2ZXMuY29uY2F0KHRoaXMuaW5zZXJ0SW50b09iamVjdCk7XG4gICAgICAgIHByaW1pdGl2ZXMgPSBwcmltaXRpdmVzLmNvbmNhdCh0aGlzLmluc2VydEludG9PYmplY3QpO1xuICAgICAgICBwcmltaXRpdmVzID0gcHJpbWl0aXZlcy5jb25jYXQodGhpcy5kZWxldGVGcm9tT2JqZWN0KTtcbiAgICAgICAgcHJpbWl0aXZlcyA9IHByaW1pdGl2ZXMuY29uY2F0KHRoaXMuZGVsZXRlRnJvbUFycmF5KTtcbiAgICAgICAgcHJpbWl0aXZlcyA9IHByaW1pdGl2ZXMuY29uY2F0KHRoaXMucmVwbGFjZUluT2JqZWN0KTtcbiAgICAgICAgcHJpbWl0aXZlcyA9IHByaW1pdGl2ZXMuY29uY2F0KHRoaXMucmVwbGFjZUluQXJyYXkpO1xuICAgICAgICBwcmltaXRpdmVzID0gcHJpbWl0aXZlcy5jb25jYXQodGhpcy5yZW5hbWVJbk9iamVjdCk7XG4gICAgICAgIHByaW1pdGl2ZXMgPSBwcmltaXRpdmVzLmNvbmNhdCh0aGlzLmluc2VydCk7XG4gICAgICAgIHByaW1pdGl2ZXMgPSBwcmltaXRpdmVzLmNvbmNhdCh0aGlzLnJlbW92ZSk7XG4gICAgICAgIHJldHVybiBwcmltaXRpdmVzO1xuICAgIH1cblxuICAgIHBhcnNlKHVkcHM6IFVwZGF0ZVByaW1pdGl2ZXMpOiBVcGRhdGVQcmltaXRpdmVzIHtcbiAgICAgICAgdWRwcy5pbnNlcnRJbnRvT2JqZWN0LmZvckVhY2goKHVkcCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pbnNlcnRJbnRvT2JqZWN0LnB1c2gobmV3IEluc2VydEludG9PYmplY3QodWRwLmlkLCB1ZHAub3JkUGF0aCwgdWRwLnBhaXJzKSk7XG4gICAgICAgIH0pO1xuICAgICAgICB1ZHBzLmluc2VydEludG9BcnJheS5mb3JFYWNoKCh1ZHApID0+IHtcbiAgICAgICAgICAgIHRoaXMuaW5zZXJ0SW50b0FycmF5LnB1c2gobmV3IEluc2VydEludG9BcnJheSh1ZHAuaWQsIHVkcC5vcmRQYXRoLCB1ZHAucG9zaXRpb24sIHVkcC5pdGVtcykpO1xuICAgICAgICB9KTtcbiAgICAgICAgdWRwcy5kZWxldGVGcm9tT2JqZWN0LmZvckVhY2goKHVkcCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5kZWxldGVGcm9tT2JqZWN0LnB1c2gobmV3IERlbGV0ZUZyb21PYmplY3QodWRwLmlkLCB1ZHAub3JkUGF0aCwgdWRwLmtleXMpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHVkcHMucmVwbGFjZUluT2JqZWN0LmZvckVhY2goKHVkcCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yZXBsYWNlSW5PYmplY3QucHVzaChuZXcgUmVwbGFjZUluT2JqZWN0KHVkcC5pZCwgdWRwLm9yZFBhdGgsIHVkcC5rZXksIHVkcC5pdGVtKSk7XG4gICAgICAgIH0pO1xuICAgICAgICB1ZHBzLmRlbGV0ZUZyb21BcnJheS5mb3JFYWNoKCh1ZHApID0+IHtcbiAgICAgICAgICAgIHRoaXMuZGVsZXRlRnJvbUFycmF5LnB1c2gobmV3IERlbGV0ZUZyb21BcnJheSh1ZHAuaWQsIHVkcC5vcmRQYXRoLCB1ZHAucG9zaXRpb24pKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHVkcHMucmVwbGFjZUluQXJyYXkuZm9yRWFjaCgodWRwKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlcGxhY2VJbkFycmF5LnB1c2gobmV3IFJlcGxhY2VJbkFycmF5KHVkcC5pZCwgdWRwLm9yZFBhdGgsIHVkcC5wb3NpdGlvbiwgdWRwLml0ZW0pKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHVkcHMucmVuYW1lSW5PYmplY3QuZm9yRWFjaCgodWRwKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlbmFtZUluT2JqZWN0LnB1c2gobmV3IFJlbmFtZUluT2JqZWN0KHVkcC5pZCwgdWRwLm9yZFBhdGgsIHVkcC5rZXksIHVkcC5uZXdLZXkpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHVkcHMuaW5zZXJ0LmZvckVhY2goKHVkcCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pbnNlcnQucHVzaChuZXcgSW5zZXJ0KHVkcC5pZCwgdWRwLml0ZW0pKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHVkcHMucmVtb3ZlLmZvckVhY2goKHVkcCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yZW1vdmUucHVzaChuZXcgUmVtb3ZlKHVkcC5pZCkpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgZm9yRWFjaChmbjogKHVkcDogVXBkYXRlUHJpbWl0aXZlLCB1ZHBzOiBVcGRhdGVQcmltaXRpdmVbXSwgaW5kZXg6IG51bWJlcikgPT4gdm9pZCk6IFVwZGF0ZVByaW1pdGl2ZXMge1xuICAgICAgICB2YXIgY29udGFpbmVycyA9IFtcbiAgICAgICAgICAgIHRoaXMuaW5zZXJ0SW50b09iamVjdCwgdGhpcy5pbnNlcnRJbnRvQXJyYXksIHRoaXMuZGVsZXRlRnJvbU9iamVjdCwgdGhpcy5yZW5hbWVJbk9iamVjdCxcbiAgICAgICAgICAgIHRoaXMuZGVsZXRlRnJvbUFycmF5LCB0aGlzLnJlcGxhY2VJbkFycmF5LCB0aGlzLmluc2VydCwgdGhpcy5yZW1vdmVcbiAgICAgICAgXTtcbiAgICAgICAgY29udGFpbmVycy5mb3JFYWNoKHVkcHMgPT4ge1xuICAgICAgICAgICAgdWRwcy5mb3JFYWNoKCh1ZHAsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgZm4odWRwLCB1ZHBzLCBpbmRleCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ==