diff --git a/package-lock.json b/package-lock.json index 883f15c0cfda04ca8944828a94ec5f5c64dc46dc..99de7818e11ea8838a7d50d5147e588161f54573 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2559,9 +2559,9 @@ } }, "@concordant/c-crdtlib": { - "version": "0.0.7-1", - "resolved": "https://gitlab.inria.fr/api/v4/projects/18591/packages/npm/@concordant/c-crdtlib/-/@concordant/c-crdtlib-0.0.7-1.tgz", - "integrity": "sha1-lkVUeMFQAuVhS5pP4gjGdN4vaUs=", + "version": "1.0.0", + "resolved": "https://gitlab.inria.fr/api/v4/projects/18591/packages/npm/@concordant/c-crdtlib/-/@concordant/c-crdtlib-1.0.0.tgz", + "integrity": "sha1-rHTb+O9v9S4A24rhdoFC182Kbjo=", "requires": { "kotlin": "1.4.10", "kotlinx-serialization-kotlinx-serialization-core-jsLegacy": "1.0.0", diff --git a/package.json b/package.json index 5cef4c04747f9d476a36d8475e054040e667ac04..d289288abd3033e948900efa2636bbfb62146479 100644 --- a/package.json +++ b/package.json @@ -44,7 +44,7 @@ "typescript": "^3.9.7" }, "dependencies": { - "@concordant/c-crdtlib": "0.0.7-1", + "@concordant/c-crdtlib": "1.0.0", "@types/uuid": "^3.4.9", "apollo-server-express": "^2.19.0", "body-parser": "^1.19.0", diff --git a/src/Utils/CRDTWrapper.ts b/src/Utils/CRDTWrapper.ts index 32bd3d46f6381542bba453cf64f472ab645de443..3f285c71eb46f0456f9433103c7177cc95f8d7cf 100644 --- a/src/Utils/CRDTWrapper.ts +++ b/src/Utils/CRDTWrapper.ts @@ -28,8 +28,11 @@ export default class CRDTWrapper { return new CRDTWrapper(crdt.toJson()); } - public static unwrap(wrapper: CRDTWrapper): any { - return crdtlib.crdt.DeltaCRDT.Companion.fromJson(wrapper.crdtJson); + public static unwrap( + wrapper: CRDTWrapper, + env?: crdtlib.utils.Environment + ): any { + return crdtlib.crdt.DeltaCRDT.Companion.fromJson(wrapper.crdtJson, env); } constructor(public crdtJson: string) { diff --git a/src/service.ts b/src/service.ts index 448d534c48a3f771e9f798ea8e5b6d49cc0f1faf..e8dd5424913eef4066d4414765d3a75ef38ee24b 100644 --- a/src/service.ts +++ b/src/service.ts @@ -150,6 +150,10 @@ app.use( basePath: "/api", }); }, + method: { + "Query.getObjects": "POST", + "Query.getObject": "POST", + }, }) ); diff --git a/test/CRDTs/PouchDBCRDTs.test.ts b/test/CRDTs/PouchDBCRDTs.test.ts index 569526b069b8beca277ab09185ae6a7d9e8eab89..1bed77460132f50e36706edf7f0f08f427b91d1a 100644 --- a/test/CRDTs/PouchDBCRDTs.test.ts +++ b/test/CRDTs/PouchDBCRDTs.test.ts @@ -97,8 +97,8 @@ describe("Basic usage", () => { .get<CRDTWrapper>(TEST_KEY, () => defaultObject) .then(() => connection2.get<CRDTWrapper>(TEST_KEY)) .then((obj: Document<CRDTWrapper>) => { - const newCRDT = CRDTWrapper.unwrap(obj.current()); - newCRDT.increment(42, environment1.tick()); + const newCRDT = CRDTWrapper.unwrap(obj.current(), environment1); + newCRDT.increment(42); return obj.update(CRDTWrapper.wrap(newCRDT)).save(); }) .then(() => connection2.get<CRDTWrapper>(TEST_KEY)) @@ -113,7 +113,10 @@ describe("Basic usage", () => { it("Conflict handler triggered on get", (done) => { TEST_KEY = uuid(); - const client1DefaultObject = new crdtlib.crdt.PNCounter(); + const client1DefaultObject = crdtlib.crdt.DeltaCRDTFactory.Companion.createDeltaCRDT( + "PNCounter", + environment1 + ); // default object is created by client2 const client2DefaultObjectWrapped = CRDTWrapper.wrap( new crdtlib.crdt.PNCounter() @@ -150,13 +153,13 @@ describe("Basic usage", () => { change: (key, newObj) => { connection1.cancel(sub); onlyAfter = true; - const crdt = CRDTWrapper.unwrap(newObj.current()); - crdt.increment(40, environment2.tick()); + const crdt = CRDTWrapper.unwrap(newObj.current(), environment2); + crdt.increment(40); newObj .update(CRDTWrapper.wrap(crdt)) .save() .then(() => { - client1DefaultObject.increment(2, environment1.tick()); + client1DefaultObject.increment(2); return remoteObj .update(CRDTWrapper.wrap(client1DefaultObject)) .save() @@ -241,7 +244,10 @@ describe("Test offline support with CRDTs", () => { it("Go offline and receive pending updates on reconnect", (done) => { jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000; - const client1DefaultObject = new crdtlib.crdt.PNCounter(); + const client1DefaultObject = crdtlib.crdt.DeltaCRDTFactory.Companion.createDeltaCRDT( + "PNCounter", + environment1 + ); const client2DefaultObjectWrapped = CRDTWrapper.wrap( new crdtlib.crdt.PNCounter() ); @@ -274,13 +280,13 @@ describe("Test offline support with CRDTs", () => { change: (key, newObj) => { connection1.cancel(sub); onlyAfter = true; - const crdt = CRDTWrapper.unwrap(newObj.current()); - crdt.increment(40, environment2.tick()); + const crdt = CRDTWrapper.unwrap(newObj.current(), environment2); + crdt.increment(40); newObj .update(CRDTWrapper.wrap(crdt)) .save() .then(() => { - client1DefaultObject.increment(2, environment1.tick()); + client1DefaultObject.increment(2); return remoteObj .update(CRDTWrapper.wrap(client1DefaultObject)) .save()