UNPKG

jsoniq

Version:

JSONiq implementation for JavaScript

35 lines (33 loc) 4.86 kB
"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==