어댑터

Memory 어댑터

테스트, 프리뷰, 일회성 데모를 위한 프로세스 내 스토어.

@instafix/adapter-memory는 모든 데이터를 단순한 배열에 보관합니다. 영속성도, 설정도 없습니다 — 프로세스를 재시작하면 데이터는 사라집니다.

npm install github:gnoopy/instafix#adapter-memory-dist
import { MemoryStore } from "@instafix/adapter-memory";

const store = new MemoryStore();

// 서버 사이드에서, HTTP 핸들러 뒤에 두는 경우:
createInstaFixHandler({ store });

// 또는 클라이언트 사이드에서, 위젯에 직접 전달하는 경우:
initInstaFix({ store, projectName: "preview" });

동작 방식

  • 최신순 정렬 — 새 피드백은 배열 맨 앞에 추가되므로, 별도 정렬 없이도 목록이 최신순으로 반환됩니다.
  • 중복 제출은 흡수됩니다 — 이미 존재하는 clientId로 피드백을 생성하면 에러 대신 이미 저장된 레코드를 그대로 반환합니다. 이 덕분에 위젯의 재시도 큐가 안전하게 동작합니다.
  • 레코드는 참조로 반환됩니다. 스토어가 반환한 객체를 직접 변경하면 스토어 자체도 변경됩니다. 임시로 수정해야 한다면 편집 전에 복제하세요(structuredClone(feedback)).
  • 크기 제한이 없습니다 — 용량 제한이나 자동 삭제(eviction)가 없습니다. 테스트에는 적합하지만, 오래 동작하는 서버에서 계속 피드백을 쌓아 두는 용도로는 쓰지 마세요.
  • clear()는 스토어를 비우고 ID 채번을 초기화합니다 — 테스트 케이스 사이에 유용합니다.

알 수 없는 ID에 대해서는 updateFeedback / deleteFeedbackStoreNotFoundError를 던집니다. 이 에러 클래스는 패키지에서 재export되므로, core를 import하지 않고도 잡아낼 수 있습니다.

GitHub에서 수정

이 페이지의 목차