UNPKG

jsoniq

Version:

JSONiq implementation for JavaScript

48 lines (46 loc) 5.74 kB
"use strict"; /// <reference path="../../../typings/lodash/lodash.d.ts" /> var jerr = require("../../errors"); class UpdatePrimitive { constructor(id, ordPath) { this.id = id; this.ordPath = ordPath; } goTo(item, ordPath) { if (ordPath.length === 0) { return item; } else { return this.goTo(item[ordPath[0]], ordPath.slice(1)); } } lockTarget(transaction) { return transaction.get(this.id).then(document => { this.document = document; var item = this.goTo(this.document, this.ordPath); if (!item) { throw new jerr.JNUP0008(); } else { this.target = item; } }); } getDocument() { return this.document; } getTarget() { return this.target; } apply() { throw new Error("This method is abstract"); } merge(udp) { throw new Error("This method is abstract"); } invert(target, pul) { throw new Error("This method is abstract"); } } exports.default = UpdatePrimitive; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi91cGRhdGVzL3ByaW1pdGl2ZXMvVXBkYXRlUHJpbWl0aXZlLnRzIl0sIm5hbWVzIjpbIlVwZGF0ZVByaW1pdGl2ZSIsIlVwZGF0ZVByaW1pdGl2ZS5jb25zdHJ1Y3RvciIsIlVwZGF0ZVByaW1pdGl2ZS5nb1RvIiwiVXBkYXRlUHJpbWl0aXZlLmxvY2tUYXJnZXQiLCJVcGRhdGVQcmltaXRpdmUuZ2V0RG9jdW1lbnQiLCJVcGRhdGVQcmltaXRpdmUuZ2V0VGFyZ2V0IiwiVXBkYXRlUHJpbWl0aXZlLmFwcGx5IiwiVXBkYXRlUHJpbWl0aXZlLm1lcmdlIiwiVXBkYXRlUHJpbWl0aXZlLmludmVydCJdLCJtYXBwaW5ncyI6IjtBQUFBLDREQUE0RDtBQUM1RCxJQUFZLElBQUksV0FBTSxjQUFjLENBQUMsQ0FBQTtBQUtyQztJQU9JQSxZQUFZQSxFQUFVQSxFQUFFQSxPQUFpQkE7UUFDckNDLElBQUlBLENBQUNBLEVBQUVBLEdBQUdBLEVBQUVBLENBQUNBO1FBQ2JBLElBQUlBLENBQUNBLE9BQU9BLEdBQUdBLE9BQU9BLENBQUNBO0lBQzNCQSxDQUFDQTtJQUVPRCxJQUFJQSxDQUFDQSxJQUFTQSxFQUFFQSxPQUFpQkE7UUFDckNFLEVBQUVBLENBQUFBLENBQUNBLE9BQU9BLENBQUNBLE1BQU1BLEtBQUtBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO1lBQ3RCQSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQTtRQUNoQkEsQ0FBQ0E7UUFBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0E7WUFDSkEsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsT0FBT0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsRUFBRUEsT0FBT0EsQ0FBQ0EsS0FBS0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7UUFDekRBLENBQUNBO0lBQ0xBLENBQUNBO0lBRURGLFVBQVVBLENBQUNBLFdBQXlCQTtRQUNoQ0csTUFBTUEsQ0FBQ0EsV0FBV0EsQ0FBQ0EsR0FBR0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsRUFBRUEsQ0FBQ0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsUUFBUUE7WUFDekNBLElBQUlBLENBQUNBLFFBQVFBLEdBQUdBLFFBQVFBLENBQUNBO1lBQ3pCQSxJQUFJQSxJQUFJQSxHQUFHQSxJQUFJQSxDQUFDQSxJQUFJQSxDQUFDQSxJQUFJQSxDQUFDQSxRQUFRQSxFQUFFQSxJQUFJQSxDQUFDQSxPQUFPQSxDQUFDQSxDQUFDQTtZQUNsREEsRUFBRUEsQ0FBQUEsQ0FBQ0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7Z0JBQ1BBLE1BQU1BLElBQUlBLElBQUlBLENBQUNBLFFBQVFBLEVBQUVBLENBQUNBO1lBQzlCQSxDQUFDQTtZQUFDQSxJQUFJQSxDQUFDQSxDQUFDQTtnQkFDSkEsSUFBSUEsQ0FBQ0EsTUFBTUEsR0FBR0EsSUFBSUEsQ0FBQ0E7WUFDdkJBLENBQUNBO1FBQ0xBLENBQUNBLENBQUNBLENBQUNBO0lBQ1BBLENBQUNBO0lBRURILFdBQVdBO1FBQ1BJLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLFFBQVFBLENBQUNBO0lBQ3pCQSxDQUFDQTtJQUVESixTQUFTQTtRQUNMSyxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQSxNQUFNQSxDQUFDQTtJQUN2QkEsQ0FBQ0E7SUFFREwsS0FBS0E7UUFDRE0sTUFBTUEsSUFBSUEsS0FBS0EsQ0FBQ0EseUJBQXlCQSxDQUFDQSxDQUFDQTtJQUMvQ0EsQ0FBQ0E7SUFFRE4sS0FBS0EsQ0FBQ0EsR0FBb0JBO1FBQ3RCTyxNQUFNQSxJQUFJQSxLQUFLQSxDQUFDQSx5QkFBeUJBLENBQUNBLENBQUNBO0lBQy9DQSxDQUFDQTtJQUVEUCxNQUFNQSxDQUFDQSxNQUFXQSxFQUFFQSxHQUFTQTtRQUN6QlEsTUFBTUEsSUFBSUEsS0FBS0EsQ0FBQ0EseUJBQXlCQSxDQUFDQSxDQUFDQTtJQUMvQ0EsQ0FBQ0E7QUFDTFIsQ0FBQ0E7a0NBQUEiLCJmaWxlIjoibGliL3VwZGF0ZXMvcHJpbWl0aXZlcy9VcGRhdGVQcmltaXRpdmUuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vLi4vLi4vdHlwaW5ncy9sb2Rhc2gvbG9kYXNoLmQudHNcIiAvPlxuaW1wb3J0ICogYXMgamVyciBmcm9tIFwiLi4vLi4vZXJyb3JzXCI7XG5cbmltcG9ydCB7IElQVUwgfSBmcm9tIFwiLi4vSVBVTFwiO1xuaW1wb3J0IHsgSVRyYW5zYWN0aW9uIH0gZnJvbSBcIi4uLy4uL3N0b3Jlcy9JVHJhbnNhY3Rpb25cIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVXBkYXRlUHJpbWl0aXZlIHtcblxuICAgIHB1YmxpYyBpZDogc3RyaW5nO1xuICAgIHB1YmxpYyBvcmRQYXRoOiBzdHJpbmdbXTtcbiAgICBwcml2YXRlIHRhcmdldDogYW55O1xuICAgIHByaXZhdGUgZG9jdW1lbnQ6IGFueTtcblxuICAgIGNvbnN0cnVjdG9yKGlkOiBzdHJpbmcsIG9yZFBhdGg6IHN0cmluZ1tdKSB7XG4gICAgICAgIHRoaXMuaWQgPSBpZDtcbiAgICAgICAgdGhpcy5vcmRQYXRoID0gb3JkUGF0aDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdvVG8oaXRlbTogYW55LCBvcmRQYXRoOiBzdHJpbmdbXSk6IGFueSB7XG4gICAgICAgIGlmKG9yZFBhdGgubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdvVG8oaXRlbVtvcmRQYXRoWzBdXSwgb3JkUGF0aC5zbGljZSgxKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBsb2NrVGFyZ2V0KHRyYW5zYWN0aW9uOiBJVHJhbnNhY3Rpb24pOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gdHJhbnNhY3Rpb24uZ2V0KHRoaXMuaWQpLnRoZW4oZG9jdW1lbnQgPT4ge1xuICAgICAgICAgICAgdGhpcy5kb2N1bWVudCA9IGRvY3VtZW50O1xuICAgICAgICAgICAgdmFyIGl0ZW0gPSB0aGlzLmdvVG8odGhpcy5kb2N1bWVudCwgdGhpcy5vcmRQYXRoKTtcbiAgICAgICAgICAgIGlmKCFpdGVtKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IGplcnIuSk5VUDAwMDgoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy50YXJnZXQgPSBpdGVtO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXREb2N1bWVudCgpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5kb2N1bWVudDtcbiAgICB9XG5cbiAgICBnZXRUYXJnZXQoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGFyZ2V0O1xuICAgIH1cblxuICAgIGFwcGx5KCk6IFVwZGF0ZVByaW1pdGl2ZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRoaXMgbWV0aG9kIGlzIGFic3RyYWN0XCIpO1xuICAgIH1cblxuICAgIG1lcmdlKHVkcDogVXBkYXRlUHJpbWl0aXZlKTogVXBkYXRlUHJpbWl0aXZlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVGhpcyBtZXRob2QgaXMgYWJzdHJhY3RcIik7XG4gICAgfVxuXG4gICAgaW52ZXJ0KHRhcmdldDogYW55LCBwdWw6IElQVUwpOiBVcGRhdGVQcmltaXRpdmUge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUaGlzIG1ldGhvZCBpcyBhYnN0cmFjdFwiKTtcbiAgICB9XG59XG4iXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0=