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