어댑터
Memory 어댑터
테스트, 프리뷰, 일회성 데모를 위한 프로세스 내 스토어.
@instafix/adapter-memory는 모든 데이터를 단순한 배열에 보관합니다. 영속성도, 설정도 없습니다 — 프로세스를 재시작하면 데이터는 사라집니다.
npm install github:gnoopy/instafix#adapter-memory-distimport { MemoryStore } from "@instafix/adapter-memory";
const store = new MemoryStore();
// 서버 사이드에서, HTTP 핸들러 뒤에 두는 경우:
createInstaFixHandler({ store });
// 또는 클라이언트 사이드에서, 위젯에 직접 전달하는 경우:
initInstaFix({ store, projectName: "preview" });동작 방식
- 최신순 정렬 — 새 피드백은 배열 맨 앞에 추가되므로, 별도 정렬 없이도 목록이 최신순으로 반환됩니다.
- 중복 제출은 흡수됩니다 — 이미 존재하는
clientId로 피드백을 생성하면 에러 대신 이미 저장된 레코드를 그대로 반환합니다. 이 덕분에 위젯의 재시도 큐가 안전하게 동작합니다. - 레코드는 참조로 반환됩니다. 스토어가 반환한 객체를 직접 변경하면 스토어 자체도 변경됩니다. 임시로 수정해야 한다면 편집 전에 복제하세요(
structuredClone(feedback)). - 크기 제한이 없습니다 — 용량 제한이나 자동 삭제(eviction)가 없습니다. 테스트에는 적합하지만, 오래 동작하는 서버에서 계속 피드백을 쌓아 두는 용도로는 쓰지 마세요.
clear()는 스토어를 비우고 ID 채번을 초기화합니다 — 테스트 케이스 사이에 유용합니다.
알 수 없는 ID에 대해서는 updateFeedback / deleteFeedback이 StoreNotFoundError를 던집니다. 이 에러 클래스는 패키지에서 재export되므로, core를 import하지 않고도 잡아낼 수 있습니다.