UNPKG

jsoniq

Version:

JSONiq implementation for JavaScript

62 lines (60 loc) 9.67 kB
"use strict"; /// <reference path="../../../typings/lodash/lodash.d.ts" /> var _ = require("lodash"); var Insert_1 = require("../primitives/Insert"); var InsertIntoObject_1 = require("../primitives/InsertIntoObject"); var ReplaceInObject_1 = require("../primitives/ReplaceInObject"); var UPComposition_1 = require("./UPComposition"); class DeleteFromObjectComposition extends UPComposition_1.default { constructor(d0) { super(d0); } compose(u) { var target = this.findAggregationTarget(u); if (target instanceof Insert_1.default) { this.insertAggregation(target, u); } else if (target instanceof InsertIntoObject_1.default) { this.insertIntoObjectAggregation(target, u); } else if (target instanceof ReplaceInObject_1.default) { this.replaceInObjectAggregation(target, u); } else { this.renameInObjectAggregation(u); this.d0.deleteFromObject(u.id, u.ordPath, u.keys); } return this; } insertAggregation(ut, u) { this.omit(this.find(ut.item, u.ordPath), u.keys); } insertIntoObjectAggregation(ut, u) { this.omit(ut.pairs, u.keys); } replaceInObjectAggregation(ut, u) { var i = this.isSubsetOrEqual(ut.ordPath, u.ordPath); if (i > -2) { this.omit(this.find(ut.item, u.ordPath.slice(i + 2)), u.keys); } else { //Accumulation this.d0.deleteFromObject(u.id, u.ordPath, u.keys); } } renameInObjectAggregation(udp) { _.filter(this.d0.udps.renameInObject, { id: udp.id }).forEach(ut => { udp.keys.forEach((key, index) => { var i = this.isSubsetOrEqual(ut.ordPath.concat(ut.newKey), udp.ordPath.concat(key)); if (i === index) { udp.keys[index] = ut.key; } else if (i > -1) { udp.ordPath[i] = ut.key; } }); }); } } exports.default = DeleteFromObjectComposition; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi91cGRhdGVzL2NvbXBvc2l0aW9uL0RlbGV0ZUZyb21PYmplY3RDb21wb3NpdGlvbi50cyJdLCJuYW1lcyI6WyJEZWxldGVGcm9tT2JqZWN0Q29tcG9zaXRpb24iLCJEZWxldGVGcm9tT2JqZWN0Q29tcG9zaXRpb24uY29uc3RydWN0b3IiLCJEZWxldGVGcm9tT2JqZWN0Q29tcG9zaXRpb24uY29tcG9zZSIsIkRlbGV0ZUZyb21PYmplY3RDb21wb3NpdGlvbi5pbnNlcnRBZ2dyZWdhdGlvbiIsIkRlbGV0ZUZyb21PYmplY3RDb21wb3NpdGlvbi5pbnNlcnRJbnRvT2JqZWN0QWdncmVnYXRpb24iLCJEZWxldGVGcm9tT2JqZWN0Q29tcG9zaXRpb24ucmVwbGFjZUluT2JqZWN0QWdncmVnYXRpb24iLCJEZWxldGVGcm9tT2JqZWN0Q29tcG9zaXRpb24ucmVuYW1lSW5PYmplY3RBZ2dyZWdhdGlvbiJdLCJtYXBwaW5ncyI6IjtBQUFBLDREQUE0RDtBQUM1RCxJQUFZLENBQUMsV0FBTSxRQUFRLENBQUMsQ0FBQTtBQUU1Qix1QkFBbUIsc0JBQXNCLENBQUMsQ0FBQTtBQUMxQyxpQ0FBNkIsZ0NBQWdDLENBQUMsQ0FBQTtBQUM5RCxnQ0FBNEIsK0JBQStCLENBQUMsQ0FBQTtBQUc1RCw4QkFBMEIsaUJBQWlCLENBQUMsQ0FBQTtBQUU1QywwQ0FBeUQsdUJBQWE7SUFFbEVBLFlBQVlBLEVBQU9BO1FBQ2ZDLE1BQU1BLEVBQUVBLENBQUNBLENBQUNBO0lBQ2RBLENBQUNBO0lBRURELE9BQU9BLENBQUNBLENBQW1CQTtRQUN2QkUsSUFBSUEsTUFBTUEsR0FBR0EsSUFBSUEsQ0FBQ0EscUJBQXFCQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtRQUMzQ0EsRUFBRUEsQ0FBQUEsQ0FBQ0EsTUFBTUEsWUFBWUEsZ0JBQU1BLENBQUNBLENBQUNBLENBQUNBO1lBQzFCQSxJQUFJQSxDQUFDQSxpQkFBaUJBLENBQVVBLE1BQU1BLEVBQUVBLENBQUNBLENBQUNBLENBQUNB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QSxNQUFNQSxDQUFDQSxFQUFFQSxDQUFDQSxNQUFNQSxDQUFDQSxFQUFFQSxHQUFHQSxDQUFDQSxPQUFPQSxDQUFDQSxNQUFNQSxDQUFDQSxHQUFHQSxDQUFDQSxDQUFDQSxDQUFDQTtnQkFDcEZBLEVBQUVBLENBQUFBLENBQUNBLENBQUNBLEtBQUtBLEtBQUtBLENBQUNBLENBQUNBLENBQUNBO29CQUNiQSxHQUFHQSxDQUFDQSxJQUFJQSxDQUFDQSxLQUFLQSxDQUFDQSxHQUFHQSxFQUFFQSxDQUFDQSxHQUFHQSxDQUFDQTtnQkFDN0JBLENBQUNBO2dCQUFDQSxJQUFJQSxDQUFDQSxFQUFFQSxDQUFBQSxDQUFDQSxDQUFDQSxHQUFHQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtvQkFDZkEsR0FBR0EsQ0FBQ0EsT0FBT0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsR0FBR0EsRUFBRUEsQ0FBQ0EsR0FBR0EsQ0FBQ0E7Z0JBQzVCQSxDQUFDQTtZQUNMQSxDQUFDQSxDQUFDQSxDQUFDQTtRQUNQQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUNQQSxDQUFDQTtBQUNMTixDQUFDQTs4Q0FBQSIsImZpbGUiOiJsaWIvdXBkYXRlcy9jb21wb3NpdGlvbi9EZWxldGVGcm9tT2JqZWN0Q29tcG9zaXRpb24uanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vLi4vLi4vdHlwaW5ncy9sb2Rhc2gvbG9kYXNoLmQudHNcIiAvPlxuaW1wb3J0ICogYXMgXyBmcm9tIFwibG9kYXNoXCI7XG5cbmltcG9ydCBJbnNlcnQgZnJvbSBcIi4uL3ByaW1pdGl2ZXMvSW5zZXJ0XCI7XG5pbXBvcnQgSW5zZXJ0SW50b09iamVjdCBmcm9tIFwiLi4vcHJpbWl0aXZlcy9JbnNlcnRJbnRvT2JqZWN0XCI7XG5pbXBvcnQgUmVwbGFjZUluT2JqZWN0IGZyb20gXCIuLi9wcmltaXRpdmVzL1JlcGxhY2VJbk9iamVjdFwiO1xuaW1wb3J0IERlbGV0ZUZyb21PYmplY3QgZnJvbSBcIi4uL3ByaW1pdGl2ZXMvRGVsZXRlRnJvbU9iamVjdFwiO1xuaW1wb3J0IFBVTCBmcm9tIFwiLi4vUFVMXCI7XG5pbXBvcnQgVVBDb21wb3NpdGlvbiBmcm9tIFwiLi9VUENvbXBvc2l0aW9uXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERlbGV0ZUZyb21PYmplY3RDb21wb3NpdGlvbiBleHRlbmRzIFVQQ29tcG9zaXRpb24ge1xuXG4gICAgY29uc3RydWN0b3IoZDA6IFBVTCkge1xuICAgICAgICBzdXBlcihkMCk7XG4gICAgfVxuXG4gICAgY29tcG9zZSh1OiBEZWxldGVGcm9tT2JqZWN0KTogRGVsZXRlRnJvbU9iamVjdENvbXBvc2l0aW9uIHtcbiAgICAgICAgdmFyIHRhcmdldCA9IHRoaXMuZmluZEFnZ3JlZ2F0aW9uVGFyZ2V0KHUpO1xuICAgICAgICBpZih0YXJnZXQgaW5zdGFuY2VvZiBJbnNlcnQpIHtcbiAgICAgICAgICAgIHRoaXMuaW5zZXJ0QWdncmVnYXRpb24oPEluc2VydD4gdGFyZ2V0LCB1KTtcbiAgICAgICAgfSBlbHNlIGlmKHRhcmdldCBpbnN0YW5jZW9mIEluc2VydEludG9PYmplY3QpIHtcbiAgICAgICAgICAgIHRoaXMuaW5zZXJ0SW50b09iamVjdEFnZ3JlZ2F0aW9uKDxJbnNlcnRJbnRvT2JqZWN0PiB0YXJnZXQsIHUpO1xuICAgICAgICB9IGVsc2UgaWYodGFyZ2V0IGluc3RhbmNlb2YgUmVwbGFjZUluT2JqZWN0KSB7XG4gICAgICAgICAgICB0aGlzLnJlcGxhY2VJbk9iamVjdEFnZ3JlZ2F0aW9uKDxSZXBsYWNlSW5PYmplY3Q+IHRhcmdldCwgdSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJlbmFtZUluT2JqZWN0QWdncmVnYXRpb24odSk7XG4gICAgICAgICAgICB0aGlzLmQwLmRlbGV0ZUZyb21PYmplY3QodS5pZCwgdS5vcmRQYXRoLCB1LmtleXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGluc2VydEFnZ3JlZ2F0aW9uKHV0OiBJbnNlcnQsIHU6IERlbGV0ZUZyb21PYmplY3QpIHtcbiAgICAgICAgdGhpcy5vbWl0KHRoaXMuZmluZCh1dC5pdGVtLCB1Lm9yZFBhdGgpLCB1LmtleXMpO1xuICAgIH1cblxuICAgIGluc2VydEludG9PYmplY3RBZ2dyZWdhdGlvbih1dDogSW5zZXJ0SW50b09iamVjdCwgdTogRGVsZXRlRnJvbU9iamVjdCkge1xuICAgICAgICB0aGlzLm9taXQodXQucGFpcnMsIHUua2V5cyk7XG4gICAgfVxuXG4gICAgcmVwbGFjZUluT2JqZWN0QWdncmVnYXRpb24odXQ6IFJlcGxhY2VJbk9iamVjdCwgdTogRGVsZXRlRnJvbU9iamVjdCkge1xuICAgICAgICB2YXIgaSA9IHRoaXMuaXNTdWJzZXRPckVxdWFsKHV0Lm9yZFBhdGgsIHUub3JkUGF0aCk7XG4gICAgICAgIGlmKGkgPiAtMikge1xuICAgICAgICAgICAgdGhpcy5vbWl0KHRoaXMuZmluZCh1dC5pdGVtLCB1Lm9yZFBhdGguc2xpY2UoaSArIDIpKSwgdS5rZXlzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vQWNjdW11bGF0aW9uXG4gICAgICAgICAgICB0aGlzLmQwLmRlbGV0ZUZyb21PYmplY3QodS5pZCwgdS5vcmRQYXRoLCB1LmtleXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVuYW1lSW5PYmplY3RBZ2dyZWdhdGlvbih1ZHA6IERlbGV0ZUZyb21PYmplY3QpIHtcbiAgICAgICAgXy5maWx0ZXIodGhpcy5kMC51ZHBzLnJlbmFtZUluT2JqZWN0LCB7IGlkOiB1ZHAuaWQgfSkuZm9yRWFjaCh1dCA9PiB7XG4gICAgICAgICAgICB1ZHAua2V5cy5mb3JFYWNoKChrZXksIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzLmlzU3Vic2V0T3JFcXVhbCh1dC5vcmRQYXRoLmNvbmNhdCh1dC5uZXdLZXkpLCB1ZHAub3JkUGF0aC5jb25jYXQoa2V5KSk7XG4gICAgICAgICAgICAgICAgaWYoaSA9PT0gaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgdWRwLmtleXNbaW5kZXhdID0gdXQua2V5O1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZihpID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdWRwLm9yZFBhdGhbaV0gPSB1dC5rZXk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ==