From 6efcdd3d6290417afa6cf0a6868c7726338e738b Mon Sep 17 00:00:00 2001 From: droak Date: Wed, 18 Sep 2024 23:00:10 +0900 Subject: [PATCH] fix examples --- examples/canvas/src/objects/canvas.ts | 6 ---- examples/canvas/src/objects/pixel.ts | 39 +++++++++---------------- examples/chat/src/objects/chat.ts | 41 ++------------------------- 3 files changed, 16 insertions(+), 70 deletions(-) diff --git a/examples/canvas/src/objects/canvas.ts b/examples/canvas/src/objects/canvas.ts index ec7557da..c48326d0 100644 --- a/examples/canvas/src/objects/canvas.ts +++ b/examples/canvas/src/objects/canvas.ts @@ -71,12 +71,6 @@ export class Canvas implements CRO { return this.canvas[x][y]; } - merge(peerCanvas: Canvas): void { - this.canvas.forEach((row, x) => - row.forEach((pixel, y) => pixel.merge(peerCanvas.pixel(x, y))), - ); - } - resolveConflicts(_): ResolveConflictsType { return { action: ActionType.Nop }; } diff --git a/examples/canvas/src/objects/pixel.ts b/examples/canvas/src/objects/pixel.ts index 38c1c999..18652c87 100644 --- a/examples/canvas/src/objects/pixel.ts +++ b/examples/canvas/src/objects/pixel.ts @@ -1,38 +1,25 @@ -import { GCounter } from "@topology-foundation/crdt"; - export class Pixel { - red: GCounter; - green: GCounter; - blue: GCounter; + red: number; + green: number; + blue: number; - constructor() { - this.red = new GCounter({}); - this.green = new GCounter({}); - this.blue = new GCounter({}); + constructor(red?: number, green?: number, blue?: number) { + this.red = red ?? 0; + this.green = green ?? 0; + this.blue = blue ?? 0; } color(): [number, number, number] { - return [ - this.red.value() % 256, - this.green.value() % 256, - this.blue.value() % 256, - ]; - } - - paint(nodeId: string, rgb: [number, number, number]): void { - this.red.increment(nodeId, rgb[0]); - this.green.increment(nodeId, rgb[1]); - this.blue.increment(nodeId, rgb[2]); + return [this.red % 256, this.green % 256, this.blue % 256]; } - counters(): [GCounter, GCounter, GCounter] { + counters(): [number, number, number] { return [this.red, this.green, this.blue]; } - merge(peerPixel: Pixel): void { - const peerCounters = peerPixel.counters(); - this.red.merge(peerCounters[0]); - this.green.merge(peerCounters[1]); - this.blue.merge(peerCounters[2]); + paint(rgb: [number, number, number]): void { + this.red += rgb[0]; + this.green += rgb[1]; + this.blue += rgb[2]; } } diff --git a/examples/chat/src/objects/chat.ts b/examples/chat/src/objects/chat.ts index b60e43c7..1f3238e9 100644 --- a/examples/chat/src/objects/chat.ts +++ b/examples/chat/src/objects/chat.ts @@ -1,10 +1,3 @@ -// if it can't compile, append src/index.asc to the import path on runtime -import { - type GSet, - gset_add, - gset_create, - gset_merge, -} from "@topology-foundation/crdt"; import { ActionType, type CRO, @@ -18,9 +11,9 @@ export class Chat implements CRO { operations: string[] = ["addMessage"]; semanticsType: SemanticsType = SemanticsType.pair; // store messages as strings in the format (timestamp, message, nodeId) - messages: GSet; + messages: Set; constructor() { - this.messages = gset_create(); + this.messages = new Set(); } addMessage(timestamp: string, message: string, nodeId: string): void { @@ -35,14 +28,10 @@ export class Chat implements CRO { this.messages.add(`(${timestamp}, ${message}, ${nodeId})`); } - getMessages(): GSet { + getMessages(): Set { return this.messages; } - merge(other: Chat): void { - this.messages.merge(other.messages); - } - resolveConflicts(vertices: Vertex[]): ResolveConflictsType { return { action: ActionType.Nop }; } @@ -54,27 +43,3 @@ export class Chat implements CRO { } } } - -export function createChat(): Chat { - return new Chat(); -} - -// @ts-ignore -export function addMessage( - chat: Chat, - timestamp: string, - message: string, - nodeId: string, -): void { - gset_add(chat.messages, `(${timestamp}, ${message}, ${nodeId})`); -} - -// @ts-ignore -export function getMessages(chat: Chat): GSet { - return chat.messages; -} - -// @ts-ignore -export function merge(chat: Chat, other: Chat): void { - gset_merge(chat.messages, other.messages); -}