jsoniq
Version:
JSONiq implementation for JavaScript
54 lines (52 loc) • 8.21 kB
JavaScript
;
/// <reference path="../../../../typings/tsd.d.ts" />
var _ = require("lodash");
var PULComposition_1 = require("../../../../lib/updates/composition/PULComposition");
var MemoryStore_1 = require("../../../../lib/stores/memory/MemoryStore");
class Common {
static debug(pul, snapshot, show) {
if (show) {
if (pul) {
console.log("PUL ==========");
console.log(JSON.stringify(pul.udps, null, 2));
}
console.log("Snapshot ==========");
console.log(JSON.stringify(snapshot, null, 2));
}
}
static loadSnapshot(store, snapshot) {
Object.keys(snapshot).forEach(key => {
store.put(snapshot[key], key);
});
}
static isEqual(obj1, obj2) {
var result = _.isEqual(obj1, obj2);
if (!result) {
console.log("Objects are not equal");
console.log("Obj1 ==========");
console.log(JSON.stringify(obj1, null, 2));
console.log("Obj2 ==========");
console.log(JSON.stringify(obj2, null, 2));
}
return result;
}
static checkCompositionIntegrity(d0, d1, snapshot) {
d0.normalize();
d1.normalize();
var delta = PULComposition_1.default.compose(d0, d1, true);
var store1 = new MemoryStore_1.default();
Common.loadSnapshot(store1, snapshot);
Common.debug(d0, store1.snapshot, false);
return store1.commitWith(d0).then(() => {
return store1.commitWith(d1);
}).then(() => {
var store2 = new MemoryStore_1.default();
Common.loadSnapshot(store2, snapshot);
return store2.commitWith(delta).then(() => {
return Common.isEqual(store1.snapshot, store2.snapshot);
});
});
}
}
exports.default = Common;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3RzL25vZGUvdXBkYXRlcy9jb21wb3NpdGlvbi9Db21tb24udHMiXSwibmFtZXMiOlsiQ29tbW9uIiwiQ29tbW9uLmRlYnVnIiwiQ29tbW9uLmxvYWRTbmFwc2hvdCIsIkNvbW1vbi5pc0VxdWFsIiwiQ29tbW9uLmNoZWNrQ29tcG9zaXRpb25JbnRlZ3JpdHkiXSwibWFwcGluZ3MiOiI7QUFBQSxxREFBcUQ7QUFDckQsSUFBWSxDQUFDLFdBQU0sUUFBUSxDQUFDLENBQUE7QUFFNUIsK0JBQTJCLG9EQUFvRCxDQUFDLENBQUE7QUFDaEYsNEJBQXdCLDJDQUEyQyxDQUFDLENBQUE7QUFFcEU7SUFDSUEsT0FBZUEsS0FBS0EsQ0FBQ0EsR0FBUUEsRUFBRUEsUUFBWUEsRUFBRUEsSUFBYUE7UUFDdERDLEVBQUVBLENBQUFBLENBQUNBLElBQUlBLENBQUNBLENBQUNBLENBQUNBO1lBQ05BLEVBQUVBLENBQUFBLENBQUNBLEdBQUdBLENBQUNBLENBQUNBLENBQUNBO2dCQUNMQSxPQUFPQSxDQUFDQSxHQUFHQSxDQUFDQSxnQkFBZ0JBLENBQUNBLENBQUNBO2dCQUM5QkEsT0FBT0EsQ0FBQ0EsR0FBR0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsU0FBU0EsQ0FBQ0EsR0FBR0EsQ0FBQ0EsSUFBSUEsRUFBRUEsSUFBSUEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7WUFDbkRBLENBQUNBO1lBQ0RBLE9BQU9BLENBQUNBLEdBQUdBLENBQUNBLHFCQUFxQkEsQ0FBQ0EsQ0FBQ0E7WUFDbkNBLE9BQU9BLENBQUNBLEdBQUdBLENBQUNBLElBQUlBLENBQUNBLFNBQVNBLENBQUNBLFFBQVFBLEVBQUVBLElBQUlBLEVBQUVBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO1FBQ25EQSxDQUFDQTtJQUNMQSxDQUFDQTtJQUVERCxPQUFlQSxZQUFZQSxDQUFDQSxLQUFrQkEsRUFBRUEsUUFBWUE7UUFDeERFLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLFFBQVFBLENBQUNBLENBQUNBLE9BQU9BLENBQUNBLEdBQUdBO1lBQzdCQSxLQUFLQSxDQUFDQSxHQUFHQSxDQUFDQSxRQUFRQSxDQUFDQSxHQUFHQSxDQUFDQSxFQUFFQSxHQUFHQSxDQUFDQSxDQUFDQTtRQUNsQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7SUFDUEEsQ0FBQ0E7SUFFREYsT0FBT0EsT0FBT0EsQ0FBQ0EsSUFBUUEsRUFBRUEsSUFBUUE7UUFDN0JHLElBQUlBLE1BQU1BLEdBQUdBLENBQUNBLENBQUNBLE9BQU9BLENBQUNBLElBQUlBLEVBQUVBLElBQUlBLENBQUNBLENBQUNBO1FBQ25DQSxFQUFFQSxDQUFBQSxDQUFDQSxDQUFDQSxNQUFNQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUNUQSxPQUFPQSxDQUFDQSxHQUFHQSxDQUFDQSx1QkFBdUJBLENBQUNBLENBQUNBO1lBQ3JDQSxPQUFPQSxDQUFDQSxHQUFHQSxDQUFDQSxpQkFBaUJBLENBQUNBLENBQUNBO1lBQy9CQSxPQUFPQSxDQUFDQSxHQUFHQSxDQUFDQSxJQUFJQSxDQUFDQSxTQUFTQSxDQUFDQSxJQUFJQSxFQUFFQSxJQUFJQSxFQUFFQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUMzQ0EsT0FBT0EsQ0FBQ0EsR0FBR0EsQ0FBQ0EsaUJBQWlCQSxDQUFDQSxDQUFDQTtZQUMvQkEsT0FBT0EsQ0FBQ0EsR0FBR0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsU0FBU0EsQ0FBQ0EsSUFBSUEsRUFBRUEsSUFBSUEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7UUFDL0NBLENBQUNBO1FBQ0RBLE1BQU1BLENBQUNBLE1BQU1BLENBQUNBO0lBQ2xCQSxDQUFDQTtJQUVESCxPQUFPQSx5QkFBeUJBLENBQUNBLEVBQU9BLEVBQUVBLEVBQU9BLEVBQUVBLFFBQVlBO1FBQzNESSxFQUFFQSxDQUFDQSxTQUFTQSxFQUFFQSxDQUFDQTtRQUNmQSxFQUFFQSxDQUFDQSxTQUFTQSxFQUFFQSxDQUFDQTtRQUVmQSxJQUFJQSxLQUFLQSxHQUFHQSx3QkFBY0EsQ0FBQ0EsT0FBT0EsQ0FBQ0EsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsSUFBSUEsQ0FBQ0EsQ0FBQ0E7UUFFakRBLElBQUlBLE1BQU1BLEdBQUdBLElBQUlBLHFCQUFXQSxFQUFFQSxDQUFDQTtRQUMvQkEsTUFBTUEsQ0FBQ0EsWUFBWUEsQ0FBQ0EsTUFBTUEsRUFBRUEsUUFBUUEsQ0FBQ0EsQ0FBQ0E7UUFDdENBLE1BQU1BLENBQUNBLEtBQUtBLENBQUNBLEVBQUVBLEVBQUVBLE1BQU1BLENBQUNBLFFBQVFBLEVBQUVBLEtBQUtBLENBQUNBLENBQUNBO1FBQ3pDQSxNQUFNQSxDQUFDQSxNQUFNQSxDQUFDQSxVQUFVQSxDQUFDQSxFQUFFQSxDQUFDQSxDQUFDQSxJQUFJQSxDQUFDQTtZQUM5QkEsTUFBTUEsQ0FBQ0EsTUFBTUEsQ0FBQ0EsVUFBVUEsQ0FBQ0EsRUFBRUEsQ0FBQ0EsQ0FBQ0E7UUFDakNBLENBQUNBLENBQUNBLENBQUNBLElBQUlBLENBQUNBO1lBQ0pBLElBQUlBLE1BQU1BLEdBQUdBLElBQUlBLHFCQUFXQSxFQUFFQSxDQUFDQTtZQUMvQkEsTUFBTUEsQ0FBQ0EsWUFBWUEsQ0FBQ0EsTUFBTUEsRUFBRUEsUUFBUUEsQ0FBQ0EsQ0FBQ0E7WUFDdENBLE1BQU1BLENBQUNBLE1BQU1BLENBQUNBLFVBQVVBLENBQUNBLEtBQUtBLENBQUNBLENBQUNBLElBQUlBLENBQUNBO2dCQUNqQ0EsTUFBTUEsQ0FBQ0EsTUFBTUEsQ0FBQ0EsT0FBT0EsQ0FBQ0EsTUFBTUEsQ0FBQ0EsUUFBUUEsRUFBRUEsTUFBTUEsQ0FBQ0EsUUFBUUEsQ0FBQ0EsQ0FBQ0E7WUFDNURBLENBQUNBLENBQUNBLENBQUNBO1FBQ1BBLENBQUNBLENBQUNBLENBQUNBO0lBQ1BBLENBQUNBO0FBQ0xKLENBQUNBO3lCQUFBIiwiZmlsZSI6InRlc3RzL25vZGUvdXBkYXRlcy9jb21wb3NpdGlvbi9Db21tb24uanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vLi4vLi4vLi4vdHlwaW5ncy90c2QuZC50c1wiIC8+XG5pbXBvcnQgKiBhcyBfIGZyb20gXCJsb2Rhc2hcIjtcbmltcG9ydCBQVUwgZnJvbSBcIi4uLy4uLy4uLy4uL2xpYi91cGRhdGVzL1BVTFwiO1xuaW1wb3J0IFBVTENvbXBvc2l0aW9uIGZyb20gXCIuLi8uLi8uLi8uLi9saWIvdXBkYXRlcy9jb21wb3NpdGlvbi9QVUxDb21wb3NpdGlvblwiO1xuaW1wb3J0IE1lbW9yeVN0b3JlIGZyb20gXCIuLi8uLi8uLi8uLi9saWIvc3RvcmVzL21lbW9yeS9NZW1vcnlTdG9yZVwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb21tb24ge1xuICAgIHByaXZhdGUgc3RhdGljIGRlYnVnKHB1bDogUFVMLCBzbmFwc2hvdDoge30sIHNob3c6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYoc2hvdykge1xuICAgICAgICAgICAgaWYocHVsKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJQVUwgPT09PT09PT09PVwiKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShwdWwudWRwcywgbnVsbCwgMikpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJTbmFwc2hvdCA9PT09PT09PT09XCIpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoc25hcHNob3QsIG51bGwsIDIpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGxvYWRTbmFwc2hvdChzdG9yZTogTWVtb3J5U3RvcmUsIHNuYXBzaG90OiB7fSkge1xuICAgICAgICBPYmplY3Qua2V5cyhzbmFwc2hvdCkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgICAgc3RvcmUucHV0KHNuYXBzaG90W2tleV0sIGtleSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHN0YXRpYyBpc0VxdWFsKG9iajE6IHt9LCBvYmoyOiB7fSk6IGJvb2xlYW4ge1xuICAgICAgICB2YXIgcmVzdWx0ID0gXy5pc0VxdWFsKG9iajEsIG9iajIpO1xuICAgICAgICBpZighcmVzdWx0KSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIk9iamVjdHMgYXJlIG5vdCBlcXVhbFwiKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiT2JqMSA9PT09PT09PT09XCIpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkob2JqMSwgbnVsbCwgMikpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJPYmoyID09PT09PT09PT1cIik7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShvYmoyLCBudWxsLCAyKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBzdGF0aWMgY2hlY2tDb21wb3NpdGlvbkludGVncml0eShkMDogUFVMLCBkMTogUFVMLCBzbmFwc2hvdDoge30pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgZDAubm9ybWFsaXplKCk7XG4gICAgICAgIGQxLm5vcm1hbGl6ZSgpO1xuXG4gICAgICAgIHZhciBkZWx0YSA9IFBVTENvbXBvc2l0aW9uLmNvbXBvc2UoZDAsIGQxLCB0cnVlKTtcblxuICAgICAgICB2YXIgc3RvcmUxID0gbmV3IE1lbW9yeVN0b3JlKCk7XG4gICAgICAgIENvbW1vbi5sb2FkU25hcHNob3Qoc3RvcmUxLCBzbmFwc2hvdCk7XG4gICAgICAgIENvbW1vbi5kZWJ1ZyhkMCwgc3RvcmUxLnNuYXBzaG90LCBmYWxzZSk7XG4gICAgICAgIHJldHVybiBzdG9yZTEuY29tbWl0V2l0aChkMCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gc3RvcmUxLmNvbW1pdFdpdGgoZDEpO1xuICAgICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHZhciBzdG9yZTIgPSBuZXcgTWVtb3J5U3RvcmUoKTtcbiAgICAgICAgICAgIENvbW1vbi5sb2FkU25hcHNob3Qoc3RvcmUyLCBzbmFwc2hvdCk7XG4gICAgICAgICAgICByZXR1cm4gc3RvcmUyLmNvbW1pdFdpdGgoZGVsdGEpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBDb21tb24uaXNFcXVhbChzdG9yZTEuc25hcHNob3QsIHN0b3JlMi5zbmFwc2hvdCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG4iXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0=