UNPKG

jsoniq

Version:

JSONiq implementation for JavaScript

49 lines (47 loc) 7.28 kB
"use strict"; /// <reference path="../../../typings/lodash/lodash.d.ts" /> var _ = require("lodash"); var InsertIntoObject_1 = require("../primitives/InsertIntoObject"); var ReplaceInObject_1 = require("../primitives/ReplaceInObject"); var Insert_1 = require("../primitives/Insert"); var UPComposition_1 = require("./UPComposition"); class InsertIntoObjectComposition 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.insertIntoObject(u.id, u.ordPath, u.pairs); } return this; } insertAggregation(ut, u) { _.merge(this.find(ut.item, u.ordPath), u.pairs); } insertIntoObjectAggregation(ut, u) { _.merge(ut.pairs, u.pairs); } replaceInObjectAggregation(ut, u) { var i = this.isSubsetOrEqual(ut.ordPath, u.ordPath); if (i > -2) { _.merge(this.find(ut.item, u.ordPath.slice(i + 2)), u.pairs); } else { //Accumulation this.d0.insertIntoObject(u.id, u.ordPath, u.pairs); } } } exports.default = InsertIntoObjectComposition; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi91cGRhdGVzL2NvbXBvc2l0aW9uL0luc2VydEludG9PYmplY3RDb21wb3NpdGlvbi50cyJdLCJuYW1lcyI6WyJJbnNlcnRJbnRvT2JqZWN0Q29tcG9zaXRpb24iLCJJbnNlcnRJbnRvT2JqZWN0Q29tcG9zaXRpb24uY29uc3RydWN0b3IiLCJJbnNlcnRJbnRvT2JqZWN0Q29tcG9zaXRpb24uY29tcG9zZSIsIkluc2VydEludG9PYmplY3RDb21wb3NpdGlvbi5pbnNlcnRBZ2dyZWdhdGlvbiIsIkluc2VydEludG9PYmplY3RDb21wb3NpdGlvbi5pbnNlcnRJbnRvT2JqZWN0QWdncmVnYXRpb24iLCJJbnNlcnRJbnRvT2JqZWN0Q29tcG9zaXRpb24ucmVwbGFjZUluT2JqZWN0QWdncmVnYXRpb24iXSwibWFwcGluZ3MiOiI7QUFBQSw0REFBNEQ7QUFDNUQsSUFBWSxDQUFDLFdBQU0sUUFBUSxDQUFDLENBQUE7QUFFNUIsaUNBQTZCLGdDQUFnQyxDQUFDLENBQUE7QUFDOUQsZ0NBQTRCLCtCQUErQixDQUFDLENBQUE7QUFFNUQsdUJBQW1CLHNCQUFzQixDQUFDLENBQUE7QUFFMUMsOEJBQTBCLGlCQUFpQixDQUFDLENBQUE7QUFFNUMsMENBQXlELHVCQUFhO0lBRWxFQSxZQUFZQSxFQUFPQTtRQUNmQyxNQUFNQSxFQUFFQSxDQUFDQSxDQUFDQTtJQUNkQSxDQUFDQTtJQUVERCxPQUFPQSxDQUFDQSxDQUFtQkE7UUFDdkJFLElBQUlBLE1BQU1BLEdBQUdBLElBQUlBLENBQUNBLHFCQUFxQkEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7UUFDM0NBLEVBQUVBLENBQUFBLENBQUNBLE1BQU1BLFlBQVlBLGdCQUFNQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUMxQkEsSUFBSUEsQ0FBQ0EsaUJBQWlCQSxDQUFVQSxNQUFNQSxFQUFFQSxDQUFDQSxDQUFDQSxDQUFDQTtRQUMvQ0EsQ0FBQ0E7UUFBQ0EsSUFBSUEsQ0FBQ0EsRUFBRUEsQ0FBQUEsQ0FBQ0EsTUFBTUEsWUFBWUEsMEJBQWdCQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUMzQ0EsSUFBSUEsQ0FBQ0EsMkJBQTJCQSxDQUFvQkEsTUFBTUEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7UUFDbkVBLENBQUNBO1FBQUNBLElBQUlBLENBQUNBLEVBQUVBLENBQUFBLENBQUNBLE1BQU1BLFlBQVlBLHlCQUFlQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUMxQ0EsSUFBSUEsQ0FBQ0EsMEJBQTBCQSxDQUFtQkEsTUFBTUEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7UUFDakVBLENBQUNBO1FBQUNBLElBQUlBLENBQUNBLENBQUNBO1lBQ0pBLElBQUlBLENBQUNBLHlCQUF5QkEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7WUFDbENBLElBQUlBLENBQUNBLEVBQUVBLENBQUNBLGdCQUFnQkEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsRUFBRUEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsT0FBT0EsRUFBRUEsQ0FBQ0EsQ0FBQ0EsS0FBS0EsQ0FBQ0EsQ0FBQ0E7UUFDdkRBLENBQUNBO1FBQ0RBLE1BQU1BLENBQUNBLElBQUlBLENBQUNBO0lBQ2hCQSxDQUFDQTtJQUVERixpQkFBaUJBLENBQUNBLEVBQVVBLEVBQUVBLENBQW1CQTtRQUM3Q0csQ0FBQ0EsQ0FBQ0EsS0FBS0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsRUFBRUEsQ0FBQ0EsSUFBSUEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsT0FBT0EsQ0FBQ0EsRUFBRUEsQ0FBQ0EsQ0FBQ0EsS0FBS0EsQ0FBQ0EsQ0FBQ0E7SUFDcERBLENBQUNBO0lBRURILDJCQUEyQkEsQ0FBQ0EsRUFBb0JBLEVBQUVBLENBQW1CQTtRQUNqRUksQ0FBQ0EsQ0FBQ0EsS0FBS0EsQ0FBQ0EsRUFBRUEsQ0FBQ0EsS0FBS0EsRUFBRUEsQ0FBQ0EsQ0FBQ0EsS0FBS0EsQ0FBQ0EsQ0FBQ0E7SUFDL0JBLENBQUNBO0lBRURKLDBCQUEwQkEsQ0FBQ0EsRUFBbUJBLEVBQUVBLENBQW1CQTtRQUMvREssSUFBSUEsQ0FBQ0EsR0FBR0EsSUFBSUEsQ0FBQ0EsZUFBZUEsQ0FBQ0EsRUFBRUEsQ0FBQ0EsT0FBT0EsRUFBRUEsQ0FBQ0EsQ0FBQ0EsT0FBT0EsQ0FBQ0EsQ0FBQ0E7UUFDcERBLEVBQUVBLENBQUFBLENBQUNBLENBQUNBLEdBQUdBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO1lBQ1JBLENBQUNBLENBQUNBLEtBQUtBLENBQUNBLElBQUlBLENBQUNBLElBQUlBLENBQUNBLEVBQUVBLENBQUNBLElBQUlBLEVBQUVBLENBQUNBLENBQUNBLE9BQU9BLENBQUNBLEtBQUtBLENBQUNBLENBQUNBLEdBQUdBLENBQUNBLENBQUNBLENBQUNBLEVBQUVBLENBQUNBLENBQUNBLEtBQUtBLENBQUNBLENBQUNBO1FBQ2pFQSxDQUFDQTtRQUFDQSxJQUFJQSxDQUFDQSxDQUFDQTtZQUNKQSxjQUFjQTtZQUNkQSxJQUFJQSxDQUFDQSxFQUFFQSxDQUFDQSxnQkFBZ0JBLENBQUNBLENBQUNBLENBQUNBLEVBQUVBLEVBQUVBLENBQUNBLENBQUNBLE9BQU9BLEVBQUVBLENBQUNBLENBQUNBLEtBQUtBLENBQUNBLENBQUNBO1FBQ3ZEQSxDQUFDQTtJQUNMQSxDQUFDQTtBQUNMTCxDQUFDQTs4Q0FBQSIsImZpbGUiOiJsaWIvdXBkYXRlcy9jb21wb3NpdGlvbi9JbnNlcnRJbnRvT2JqZWN0Q29tcG9zaXRpb24uanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vLi4vLi4vdHlwaW5ncy9sb2Rhc2gvbG9kYXNoLmQudHNcIiAvPlxuaW1wb3J0ICogYXMgXyBmcm9tIFwibG9kYXNoXCI7XG5cbmltcG9ydCBJbnNlcnRJbnRvT2JqZWN0IGZyb20gXCIuLi9wcmltaXRpdmVzL0luc2VydEludG9PYmplY3RcIjtcbmltcG9ydCBSZXBsYWNlSW5PYmplY3QgZnJvbSBcIi4uL3ByaW1pdGl2ZXMvUmVwbGFjZUluT2JqZWN0XCI7XG5cbmltcG9ydCBJbnNlcnQgZnJvbSBcIi4uL3ByaW1pdGl2ZXMvSW5zZXJ0XCI7XG5pbXBvcnQgUFVMIGZyb20gXCIuLi9QVUxcIjtcbmltcG9ydCBVUENvbXBvc2l0aW9uIGZyb20gXCIuL1VQQ29tcG9zaXRpb25cIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSW5zZXJ0SW50b09iamVjdENvbXBvc2l0aW9uIGV4dGVuZHMgVVBDb21wb3NpdGlvbiB7XG5cbiAgICBjb25zdHJ1Y3RvcihkMDogUFVMKSB7XG4gICAgICAgIHN1cGVyKGQwKTtcbiAgICB9XG5cbiAgICBjb21wb3NlKHU6IEluc2VydEludG9PYmplY3QpOiBJbnNlcnRJbnRvT2JqZWN0Q29tcG9zaXRpb24ge1xuICAgICAgICB2YXIgdGFyZ2V0ID0gdGhpcy5maW5kQWdncmVnYXRpb25UYXJnZXQodSk7XG4gICAgICAgIGlmKHRhcmdldCBpbnN0YW5jZW9mIEluc2VydCkge1xuICAgICAgICAgICAgdGhpcy5pbnNlcnRBZ2dyZWdhdGlvbig8SW5zZXJ0PiB0YXJnZXQsIHUpO1xuICAgICAgICB9IGVsc2UgaWYodGFyZ2V0IGluc3RhbmNlb2YgSW5zZXJ0SW50b09iamVjdCkge1xuICAgICAgICAgICAgdGhpcy5pbnNlcnRJbnRvT2JqZWN0QWdncmVnYXRpb24oPEluc2VydEludG9PYmplY3Q+IHRhcmdldCwgdSk7XG4gICAgICAgIH0gZWxzZSBpZih0YXJnZXQgaW5zdGFuY2VvZiBSZXBsYWNlSW5PYmplY3QpIHtcbiAgICAgICAgICAgIHRoaXMucmVwbGFjZUluT2JqZWN0QWdncmVnYXRpb24oPFJlcGxhY2VJbk9iamVjdD4gdGFyZ2V0LCB1KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucmVuYW1lSW5PYmplY3RBZ2dyZWdhdGlvbih1KTtcbiAgICAgICAgICAgIHRoaXMuZDAuaW5zZXJ0SW50b09iamVjdCh1LmlkLCB1Lm9yZFBhdGgsIHUucGFpcnMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGluc2VydEFnZ3JlZ2F0aW9uKHV0OiBJbnNlcnQsIHU6IEluc2VydEludG9PYmplY3QpIHtcbiAgICAgICAgXy5tZXJnZSh0aGlzLmZpbmQodXQuaXRlbSwgdS5vcmRQYXRoKSwgdS5wYWlycyk7XG4gICAgfVxuXG4gICAgaW5zZXJ0SW50b09iamVjdEFnZ3JlZ2F0aW9uKHV0OiBJbnNlcnRJbnRvT2JqZWN0LCB1OiBJbnNlcnRJbnRvT2JqZWN0KSB7XG4gICAgICAgIF8ubWVyZ2UodXQucGFpcnMsIHUucGFpcnMpO1xuICAgIH1cblxuICAgIHJlcGxhY2VJbk9iamVjdEFnZ3JlZ2F0aW9uKHV0OiBSZXBsYWNlSW5PYmplY3QsIHU6IEluc2VydEludG9PYmplY3QpIHtcbiAgICAgICAgdmFyIGkgPSB0aGlzLmlzU3Vic2V0T3JFcXVhbCh1dC5vcmRQYXRoLCB1Lm9yZFBhdGgpO1xuICAgICAgICBpZihpID4gLTIpIHtcbiAgICAgICAgICAgIF8ubWVyZ2UodGhpcy5maW5kKHV0Lml0ZW0sIHUub3JkUGF0aC5zbGljZShpICsgMikpLCB1LnBhaXJzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vQWNjdW11bGF0aW9uXG4gICAgICAgICAgICB0aGlzLmQwLmluc2VydEludG9PYmplY3QodS5pZCwgdS5vcmRQYXRoLCB1LnBhaXJzKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ==