loro/crates/loro-wasm/tests/issue.test.ts
Zixuan Chen 62a3a93552
Refactor: merge two js packages (#532)
* feat: make vitest tests pass

* chore: update readme & add deno test for web bundle

* chore: bump version to 1.0.8-alpha.0

* chore: bump loro-crdt version

* fix: build script
export init method from loro-wasm/web

* chore: bump version

* chore: specify which files to include for npm publish

* refactor: rename loro-js to loro-js-test

* refactor: remove the old loro-js folder

* fix: build scripts

* chore: 1.0.8-alpha.3

* chore: add release info
2024-10-29 21:46:56 +08:00

70 lines
2.3 KiB
TypeScript

import { it } from "vitest";
import { LoroDoc } from "../bundler/index";
import { LoroText, OpId } from "../bundler/index";
it("#211", () => {
const loro1 = new LoroDoc();
loro1.setPeerId(0n);
const text1 = loro1.getText("text");
const loro2 = new LoroDoc();
loro2.setPeerId(1n);
const text2 = loro2.getText("text");
// console.log("[1] Insert T to #0");
text1.insert(0, "T");
loro1.commit();
show(text1, loro1, text2, loro2);
// console.log("[2] Synchronize");
loro1.import(loro2.exportFrom(loro1.version()));
loro2.import(loro1.exportFrom(loro2.version()));
show(text1, loro1, text2, loro2);
const frontiers1After2 = loro1.frontiers();
const frontiers2After2 = loro2.frontiers();
// console.log("[3] Append A to #0");
text1.insert(1, "A");
loro1.commit();
show(text1, loro1, text2, loro2);
// console.log("[4] Append B to #1");
text2.insert(1, "B");
loro2.commit();
show(text1, loro1, text2, loro2);
// console.log("[5] Play back to the frontiers after 2");
loro1.checkout(frontiers1After2);
loro2.checkout(frontiers2After2);
show(text1, loro1, text2, loro2);
// console.log("[6] Check both to the latest");
loro1.checkoutToLatest();
loro2.checkoutToLatest();
show(text1, loro1, text2, loro2);
const frontiers1Before7 = loro1.frontiers();
const frontiers2Before7 = loro2.frontiers();
// console.log("[7] Append B to #1");
text2.insert(2, "B");
loro2.commit();
show(text1, loro1, text2, loro2);
// console.log("[8] Play back to the frontiers before 7");
// console.log("----------------------------------------------------------");
loro1.checkout(frontiers1Before7);
// console.log("----------------------------------------------------------");
loro2.checkout(frontiers2Before7);
show(text1, loro1, text2, loro2);
});
function show(text1: LoroText, loro1: LoroDoc, text2: LoroText, loro2: LoroDoc) {
// console.log(` #0 has content: ${JSON.stringify(text1.toString())}`);
// console.log(` #0 has frontiers: ${showFrontiers(loro1.frontiers())}`);
// console.log(` #1 has content: ${JSON.stringify(text2.toString())}`);
// console.log(` #1 has frontiers: ${showFrontiers(loro2.frontiers())}`);
}
function showFrontiers(frontiers: OpId[]) {
return frontiers.map((x) => `${x.peer}@${x.counter}`).join(";");
}