문서·데이터 라이브러리Document & data libraries

autosave-backup-ring-buffer

복구용 스냅샷 링의 보관 계획을 세웁니다. 새 키에 쓰고 나중에 지울 키를 알려 줍니다. 시계가 거꾸로 가면 거부합니다.

GitHub에서 보기View on GitHub

어떤 문제를 푸나The problem

편집기는 마지막 N개의 자동 저장을 보관합니다. 흔한 실수는 새 스냅샷이 안전해지기 전에 가장 오래된 것을 지우거나 덮어쓰는 것입니다. 이 함수는 어느 새 키에 쓸지, 나중에 지울 키는 무엇인지만 계획으로 돌려주고 저장소 트랜잭션은 호출자에게 남깁니다.

이런 분께 맞습니다Who it is for

브라우저나 데스크톱 편집기에 자동 저장과 복구 기능을 넣는 개발자.

무엇을 하나What it does

  • planBackup(entries, keep, now)는 key, entries(최신순), dropped를 돌려줍니다.
  • 기본은 항상 새 키입니다. 링이 잠시 keep+1개를 가질 수 있습니다.
  • inPlace: true는 가장 오래된 슬롯을 재사용하지만 제자리 덮어쓰기라 충돌 안전하지 않고, keep=1이면 유일한 스냅샷을 덮어씁니다.
  • keep 범위, 중복 키, 유한하지 않은 시간, 가장 새 스냅샷보다 이른 시각은 오류입니다.

직접 돌려 본 출력Real output

저장소의 examples 폴더를 실행한 결과입니다.

$ node examples/quickstart.mjs
t=1000  write -> backup-0  dropped: []  index: backup-0
t=2000  write -> backup-1  dropped: []  index: backup-1, backup-0
t=3000  write -> backup-2  dropped: []  index: backup-2, backup-1, backup-0
t=4000  write -> backup-3  dropped: ["backup-0"]  index: backup-3, backup-2, backup-1
t=5000  write -> backup-0  dropped: ["backup-1"]  index: backup-0, backup-3, backup-2
clock went backwards -> clock moved backwards

알아둘 한계Limits

  • 계획만 돌려줍니다. IndexedDB, 암호화, 파일 시스템 코드는 없습니다.

받아서 쓰기Get it

# 저장소를 받습니다
git clone https://github.com/Kein-chronicle/autosave-backup-ring-buffer.git

# Claude Code 스킬로 쓰려면 이 폴더 이름으로 받습니다
git clone https://github.com/Kein-chronicle/autosave-backup-ring-buffer.git ~/.claude/skills/backup-ring-plan

정보Info

분류Category
문서·데이터 라이브러리Document & data libraries
형태Type
라이브러리Library
라이선스License
MIT
필요한 것Requires
Node.js 22 이상
저장소Repository
autosave-backup-ring-buffer
토픽Topics
backup autosave retention indexeddb javascript esm local-first zero-dependencies

2026-10-18 기준: 저장소의 테스트를 로컬에서 실행해 통과했고, 예제 출력은 저장소의 examples 폴더를 실제로 실행한 결과입니다.

공유하기Share

문자Message 네이버 블로그Naver Blog X Facebook