이 프로젝트는 CRDT(Conflict-free Replicated Data Type) 중 하나인 **RGA(Replicated-Growable Array)**를 직접 구현하고, 간단한 데모 페이지에서 동작을 시연하기 위한 예시입니다.
- 목표: RGA 패키지를 활용해 간단한 문서 편집 기능 구현
- 주요 구성:
src/components/editor.tsx: 텍스트 에디터 UIsrc/hooks/use-rga-document.ts: RGA 로직을 가져와서 상태를 업데이트하는 Hooklib/mock-socket.ts,event-bus.ts: 여러 창(탭) 간에 Operation을 주고받는 간이 네트워크 시뮬레이션
- 개발 서버 구동: 루트 디렉터리에서 아래 명령어 실행
pnpm dev:demo
- 브라우저에서 표시된 로컬 주소로 접속해 데모를 확인할 수 있습니다.
- 구현 내용:
- CRDT RGA 알고리즘 핵심 로직 (
doc.ts,node.ts,operation-token.ts등) - Lamport Clock, Node 연결, 삭제 노드(
Tombstone) 처리 등 동시 편집을 위한 주요 기능 포함
- CRDT RGA 알고리즘 핵심 로직 (
- 테스트:
__test__폴더 안의 각 테스트 파일을 통해 로직을 검증 가능- 예:
doc.test.ts,node.test.ts,operation-token.test.ts,lamport-clock.test.ts등
- RGA 패키지의 테스트 스크립트 실행
pnpm test:rga
- RGA 로직에 대한 단위 테스트를 수행합니다.