UNPKG

jsoniq

Version:

JSONiq implementation for JavaScript

79 lines (77 loc) 9.68 kB
"use strict"; /// <reference path="../../../typings/node-uuid/node-uuid.d.ts" /> /// <reference path="../../../typings/lodash/lodash.d.ts" /> var _ = require("lodash"); var uuid = require("node-uuid"); var PUL_1 = require("../../updates/PUL"); var MemoryCollection_1 = require("./MemoryCollection"); var MemoryTransaction_1 = require("./MemoryTransaction"); class MemoryStore { constructor() { this.snapshot = {}; this.pul = new PUL_1.default(); this.collections = {}; this.collections["main"] = new MemoryCollection_1.default("main", this.pul); } get(id) { var result = this.snapshot[id]; if (result) { return _.cloneDeep(result); } else { throw new Error("Item not found: " + id); } } put(item, id) { var ref = id ? id : uuid.v4(); this.snapshot[ref] = item; return ref; } remove(id) { var item = this.snapshot[id]; if (!item) { //TODO: throw proper error code throw new Error(); } delete this.snapshot[id]; return this; } getCollections() { return Object.keys(this.collections); } collection(name) { return this.collections[name]; } status() { return this.pul.udps; } commitWith(pul) { var transaction = new MemoryTransaction_1.default(_.cloneDeep(this.snapshot)); return pul.apply(transaction).then(() => { this.snapshot = transaction.snapshot; }); } commit() { throw new Error("Not implemented"); } resetLocal() { throw new Error("Not implemented"); } init() { throw new Error("Not implemented"); } clone(url) { throw new Error("Not implemented"); } log(from, to) { throw new Error("Not implemented"); } rebase(from, to) { throw new Error("Not implemented"); } reset(to) { throw new Error("Not implemented"); } } exports.default = MemoryStore; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9zdG9yZXMvbWVtb3J5L01lbW9yeVN0b3JlLnRzIl0sIm5hbWVzIjpbIk1lbW9yeVN0b3JlIiwiTWVtb3J5U3RvcmUuY29uc3RydWN0b3IiLCJNZW1vcnlTdG9yZS5nZXQiLCJNZW1vcnlTdG9yZS5wdXQiLCJNZW1vcnlTdG9yZS5yZW1vdmUiLCJNZW1vcnlTdG9yZS5nZXRDb2xsZWN0aW9ucyIsIk1lbW9yeVN0b3JlLmNvbGxlY3Rpb24iLCJNZW1vcnlTdG9yZS5zdGF0dXMiLCJNZW1vcnlTdG9yZS5jb21taXRXaXRoIiwiTWVtb3J5U3RvcmUuY29tbWl0IiwiTWVtb3J5U3RvcmUucmVzZXRMb2NhbCIsIk1lbW9yeVN0b3JlLmluaXQiLCJNZW1vcnlTdG9yZS5jbG9uZSIsIk1lbW9yeVN0b3JlLmxvZyIsIk1lbW9yeVN0b3JlLnJlYmFzZSIsIk1lbW9yeVN0b3JlLnJlc2V0Il0sIm1hcHBpbmdzIjoiO0FBQUEsa0VBQWtFO0FBQ2xFLDREQUE0RDtBQUM1RCxJQUFZLENBQUMsV0FBTSxRQUFRLENBQUMsQ0FBQTtBQUM1QixJQUFZLElBQUksV0FBTSxXQUFXLENBQUMsQ0FBQTtBQUNsQyxvQkFBZ0IsbUJBQW1CLENBQUMsQ0FBQTtBQU1wQyxpQ0FBNkIsb0JBQW9CLENBQUMsQ0FBQTtBQUNsRCxrQ0FBOEIscUJBQXFCLENBQUMsQ0FBQTtBQUVwRDtJQVFJQTtRQU5BQyxhQUFRQSxHQUFPQSxFQUFFQSxDQUFDQTtRQUVWQSxRQUFHQSxHQUFRQSxJQUFJQSxhQUFHQSxFQUFFQSxDQUFDQTtRQUVyQkEsZ0JBQVdBLEdBQWlCQSxFQUFFQSxDQUFDQTtRQUduQ0EsSUFBSUEsQ0FBQ0EsV0FBV0EsQ0FBQ0EsTUFBTUEsQ0FBQ0EsR0FBR0EsSUFBSUEsMEJBQWdCQSxDQUFDQSxNQUFNQSxFQUFFQSxJQUFJQSxDQUFDQSxHQUFHQSxDQUFDQSxDQUFDQTtJQUN0RUEsQ0FBQ0E7SUFFREQsR0FBR0EsQ0FBQ0EsRUFBVUE7UUFDVkUsSUFBSUEsTUFBTUEsR0FBR0Es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QVlBLEVBQUVBLEVBQVdBO1FBQzVCYyxNQUFNQSxJQUFJQSxLQUFLQSxDQUFDQSxpQkFBaUJBLENBQUNBLENBQUNBO0lBQ3ZDQSxDQUFDQTtJQUVEZCxLQUFLQSxDQUFDQSxFQUFVQTtRQUNaZSxNQUFNQSxJQUFJQSxLQUFLQSxDQUFDQSxpQkFBaUJBLENBQUNBLENBQUNBO0lBQ3ZDQSxDQUFDQTtBQUNMZixDQUFDQTs4QkFBQSIsImZpbGUiOiJsaWIvc3RvcmVzL21lbW9yeS9NZW1vcnlTdG9yZS5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi8uLi8uLi90eXBpbmdzL25vZGUtdXVpZC9ub2RlLXV1aWQuZC50c1wiIC8+XG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vLi4vLi4vdHlwaW5ncy9sb2Rhc2gvbG9kYXNoLmQudHNcIiAvPlxuaW1wb3J0ICogYXMgXyBmcm9tIFwibG9kYXNoXCI7XG5pbXBvcnQgKiBhcyB1dWlkIGZyb20gXCJub2RlLXV1aWRcIjtcbmltcG9ydCBQVUwgZnJvbSBcIi4uLy4uL3VwZGF0ZXMvUFVMXCI7XG5pbXBvcnQgVXBkYXRlUHJpbWl0aXZlcyBmcm9tIFwiLi4vLi4vdXBkYXRlcy9VcGRhdGVQcmltaXRpdmVzXCI7XG5pbXBvcnQgeyBJU3RvcmUgfSBmcm9tIFwiLi4vSVN0b3JlXCI7XG5pbXBvcnQgeyBJQ29sbGVjdGlvbiB9IGZyb20gXCIuLi9JQ29sbGVjdGlvblwiO1xuaW1wb3J0IHsgSUNvbGxlY3Rpb25zIH0gZnJvbSBcIi4uL0lDb2xsZWN0aW9uc1wiO1xuaW1wb3J0IHsgSUxvZ0VudHJ5IH0gZnJvbSBcIi4uL0lMb2dFbnRyeVwiO1xuaW1wb3J0IE1lbW9yeUNvbGxlY3Rpb24gZnJvbSBcIi4vTWVtb3J5Q29sbGVjdGlvblwiO1xuaW1wb3J0IE1lbW9yeVRyYW5zYWN0aW9uIGZyb20gXCIuL01lbW9yeVRyYW5zYWN0aW9uXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1lbW9yeVN0b3JlIGltcGxlbWVudHMgSVN0b3JlIHtcblxuICAgIHNuYXBzaG90OiB7fSA9IHt9O1xuXG4gICAgcHJpdmF0ZSBwdWw6IFBVTCA9IG5ldyBQVUwoKTtcblxuICAgIHByaXZhdGUgY29sbGVjdGlvbnM6IElDb2xsZWN0aW9ucyA9IHt9O1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuY29sbGVjdGlvbnNbXCJtYWluXCJdID0gbmV3IE1lbW9yeUNvbGxlY3Rpb24oXCJtYWluXCIsIHRoaXMucHVsKTtcbiAgICB9XG5cbiAgICBnZXQoaWQ6IHN0cmluZyk6IGFueSB7XG4gICAgICAgIHZhciByZXN1bHQgPSB0aGlzLnNuYXBzaG90W2lkXTtcbiAgICAgICAgaWYocmVzdWx0KSB7XG4gICAgICAgICAgICByZXR1cm4gXy5jbG9uZURlZXAocmVzdWx0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkl0ZW0gbm90IGZvdW5kOiBcIiArIGlkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1dChpdGVtOiBhbnksIGlkPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgdmFyIHJlZiA9IGlkID8gaWQgOiB1dWlkLnY0KCk7XG4gICAgICAgIHRoaXMuc25hcHNob3RbcmVmXSA9IGl0ZW07XG4gICAgICAgIHJldHVybiByZWY7XG4gICAgfVxuXG4gICAgcmVtb3ZlKGlkOiBzdHJpbmcpOiBNZW1vcnlTdG9yZSB7XG4gICAgICAgIHZhciBpdGVtID0gdGhpcy5zbmFwc2hvdFtpZF07XG4gICAgICAgIGlmKCFpdGVtKSB7XG4gICAgICAgICAgICAvL1RPRE86IHRocm93IHByb3BlciBlcnJvciBjb2RlXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTtcbiAgICAgICAgfVxuICAgICAgICBkZWxldGUgdGhpcy5zbmFwc2hvdFtpZF07XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGdldENvbGxlY3Rpb25zKCk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuY29sbGVjdGlvbnMpO1xuICAgIH1cblxuICAgIGNvbGxlY3Rpb24obmFtZTogc3RyaW5nKTogSUNvbGxlY3Rpb24ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb2xsZWN0aW9uc1tuYW1lXTtcbiAgICB9XG5cbiAgICBzdGF0dXMoKTogVXBkYXRlUHJpbWl0aXZlcyB7XG4gICAgICAgIHJldHVybiB0aGlzLnB1bC51ZHBzO1xuICAgIH1cblxuICAgIGNvbW1pdFdpdGgocHVsOiBQVUwpOiBQcm9taXNlPGFueT4ge1xuICAgICAgICB2YXIgdHJhbnNhY3Rpb24gPSBuZXcgTWVtb3J5VHJhbnNhY3Rpb24oXy5jbG9uZURlZXAodGhpcy5zbmFwc2hvdCkpO1xuICAgICAgICByZXR1cm4gcHVsLmFwcGx5KHRyYW5zYWN0aW9uKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc25hcHNob3QgPSB0cmFuc2FjdGlvbi5zbmFwc2hvdDtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29tbWl0KCk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgICB9XG5cbiAgICByZXNldExvY2FsKCk6IE1lbW9yeVN0b3JlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm90IGltcGxlbWVudGVkXCIpO1xuICAgIH1cblxuICAgIGluaXQoKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm90IGltcGxlbWVudGVkXCIpO1xuICAgIH1cblxuICAgIGNsb25lKHVybDogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm90IGltcGxlbWVudGVkXCIpO1xuICAgIH1cblxuICAgIGxvZyhmcm9tPzogbnVtYmVyLCB0bz86IG51bWJlcik6IFByb21pc2U8SUxvZ0VudHJ5PiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgICB9XG5cbiAgICByZWJhc2UoZnJvbTogc3RyaW5nLCB0bz86IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgICB9XG5cbiAgICByZXNldCh0bzogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm90IGltcGxlbWVudGVkXCIpO1xuICAgIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ==