jsoniq
Version:
JSONiq implementation for JavaScript
31 lines (29 loc) • 4.15 kB
JavaScript
"use strict";
/// <reference path="../../../typings/lodash/lodash.d.ts" />
//import _ = require("lodash");
var jerr = require("../../errors");
var UpdatePrimitive_1 = require("./UpdatePrimitive");
class ReplaceInObject extends UpdatePrimitive_1.default {
constructor(id, ordPath, key, item) {
super(id, ordPath);
this.key = key;
this.item = item;
}
apply() {
var target = this.getTarget();
if (target[this.key] === undefined) {
throw new jerr.JNUP0016(this.key);
}
target[this.key] = this.item;
return this;
}
invert(item, pul) {
pul.deleteFromObject(this.id, this.ordPath, [this.key]);
var obj = {};
obj[this.key] = item[this.key];
pul.insertIntoObject(this.id, this.ordPath, obj);
return this;
}
}
exports.default = ReplaceInObject;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi91cGRhdGVzL3ByaW1pdGl2ZXMvUmVwbGFjZUluT2JqZWN0LnRzIl0sIm5hbWVzIjpbIlJlcGxhY2VJbk9iamVjdCIsIlJlcGxhY2VJbk9iamVjdC5jb25zdHJ1Y3RvciIsIlJlcGxhY2VJbk9iamVjdC5hcHBseSIsIlJlcGxhY2VJbk9iamVjdC5pbnZlcnQiXSwibWFwcGluZ3MiOiI7QUFBQSw0REFBNEQ7QUFDNUQsK0JBQStCO0FBQy9CLElBQVksSUFBSSxXQUFNLGNBQWMsQ0FBQyxDQUFBO0FBQ3JDLGdDQUE0QixtQkFBbUIsQ0FBQyxDQUFBO0FBSWhELDhCQUE2Qyx5QkFBZTtJQUl4REEsWUFBWUEsRUFBVUEsRUFBRUEsT0FBaUJBLEVBQUVBLEdBQVdBLEVBQUVBLElBQVNBO1FBQzdEQyxNQUFNQSxFQUFFQSxFQUFFQSxPQUFPQSxDQUFDQSxDQUFDQTtRQUNuQkEsSUFBSUEsQ0FBQ0EsR0FBR0EsR0FBR0EsR0FBR0EsQ0FBQ0E7UUFDZkEsSUFBSUEsQ0FBQ0EsSUFBSUEsR0FBR0EsSUFBSUEsQ0FBQ0E7SUFDckJBLENBQUNBO0lBRURELEtBQUtBO1FBQ0RFLElBQUlBLE1BQU1BLEdBQUdBLElBQUlBLENBQUNBLFNBQVNBLEVBQUVBLENBQUNBO1FBQzlCQSxFQUFFQSxDQUFBQSxDQUFDQSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQSxHQUFHQSxDQUFDQSxLQUFLQSxTQUFTQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUNoQ0EsTUFBTUEsSUFBSUEsSUFBSUEsQ0FBQ0EsUUFBUUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsR0FBR0EsQ0FBQ0EsQ0FBQ0E7UUFDdENBLENBQUNBO1FBQ0RBLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLEdBQUdBLENBQUNBLEdBQUdBLElBQUlBLENBQUNBLElBQUlBLENBQUNBO1FBQzdCQSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQTtJQUNoQkEsQ0FBQ0E7SUFFREYsTUFBTUEsQ0FBQ0EsSUFBU0EsRUFBRUEsR0FBU0E7UUFDdkJHLEdBQUdBLENBQUNBLGdCQUFnQkEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsRUFBRUEsRUFBRUEsSUFBSUEsQ0FBQ0EsT0FBT0EsRUFBRUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsR0FBR0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7UUFDeERBLElBQUlBLEdBQUdBLEdBQUdBLEVBQUVBLENBQUNBO1FBQ2JBLEdBQUdBLENBQUNBLElBQUlBLENBQUNBLEdBQUdBLENBQUNBLEdBQUdBLElBQUlBLENBQUNBLElBQUlBLENBQUNBLEdBQUdBLENBQUNBLENBQUNBO1FBQy9CQSxHQUFHQSxDQUFDQSxnQkFBZ0JBLENBQUNBLElBQUlBLENBQUNBLEVBQUVBLEVBQUVBLElBQUlBLENBQUNBLE9BQU9BLEVBQUVBLEdBQUdBLENBQUNBLENBQUNBO1FBQ2pEQSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQTtJQUNoQkEsQ0FBQ0E7QUFDTEgsQ0FBQ0E7a0NBQUEiLCJmaWxlIjoibGliL3VwZGF0ZXMvcHJpbWl0aXZlcy9SZXBsYWNlSW5PYmplY3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vLi4vLi4vdHlwaW5ncy9sb2Rhc2gvbG9kYXNoLmQudHNcIiAvPlxuLy9pbXBvcnQgXyA9IHJlcXVpcmUoXCJsb2Rhc2hcIik7XG5pbXBvcnQgKiBhcyBqZXJyIGZyb20gXCIuLi8uLi9lcnJvcnNcIjtcbmltcG9ydCBVcGRhdGVQcmltaXRpdmUgZnJvbSBcIi4vVXBkYXRlUHJpbWl0aXZlXCI7XG5cbmltcG9ydCB7IElQVUwgfSBmcm9tIFwiLi4vSVBVTFwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSZXBsYWNlSW5PYmplY3QgZXh0ZW5kcyBVcGRhdGVQcmltaXRpdmUge1xuICAgIGtleTogc3RyaW5nO1xuICAgIGl0ZW06IGFueTtcblxuICAgIGNvbnN0cnVjdG9yKGlkOiBzdHJpbmcsIG9yZFBhdGg6IHN0cmluZ1tdLCBrZXk6IHN0cmluZywgaXRlbTogYW55KSB7XG4gICAgICAgIHN1cGVyKGlkLCBvcmRQYXRoKTtcbiAgICAgICAgdGhpcy5rZXkgPSBrZXk7XG4gICAgICAgIHRoaXMuaXRlbSA9IGl0ZW07XG4gICAgfVxuXG4gICAgYXBwbHkoKTogVXBkYXRlUHJpbWl0aXZlIHtcbiAgICAgICAgdmFyIHRhcmdldCA9IHRoaXMuZ2V0VGFyZ2V0KCk7XG4gICAgICAgIGlmKHRhcmdldFt0aGlzLmtleV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IGplcnIuSk5VUDAwMTYodGhpcy5rZXkpO1xuICAgICAgICB9XG4gICAgICAgIHRhcmdldFt0aGlzLmtleV0gPSB0aGlzLml0ZW07XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGludmVydChpdGVtOiBhbnksIHB1bDogSVBVTCk6IFVwZGF0ZVByaW1pdGl2ZSB7XG4gICAgICAgIHB1bC5kZWxldGVGcm9tT2JqZWN0KHRoaXMuaWQsIHRoaXMub3JkUGF0aCwgW3RoaXMua2V5XSk7XG4gICAgICAgIHZhciBvYmogPSB7fTtcbiAgICAgICAgb2JqW3RoaXMua2V5XSA9IGl0ZW1bdGhpcy5rZXldO1xuICAgICAgICBwdWwuaW5zZXJ0SW50b09iamVjdCh0aGlzLmlkLCB0aGlzLm9yZFBhdGgsIG9iaik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ==