UNPKG

alinea

Version:

[![npm](https://img.shields.io/npm/v/alinea.svg)](https://npmjs.org/package/alinea) [![install size](https://packagephobia.com/badge?p=alinea)](https://packagephobia.com/result?p=alinea)

68 lines (66 loc) 1.75 kB
import "../../chunks/chunk-U5RRZUYZ.js"; // src/backend/data/MemoryHandler.ts import { Handler, JWTPreviews } from "alinea/backend"; import { createId } from "alinea/core"; var MemoryApi = class { constructor(config, db) { this.config = config; this.db = db; } drafts = /* @__PURE__ */ new Map(); pending = []; async mutate(params) { const mutations = params.mutations.flatMap((mutate) => mutate.meta); const toCommitHash = createId(); await this.db.applyMutations(mutations, toCommitHash); this.pending.push({ ...params, toCommitHash }); return { commitHash: toCommitHash }; } prepareUpload(file) { throw new Error(`Not implemented`); } async revisions(file) { return []; } async revisionData(file, revision) { throw new Error(`Not implemented`); } async getDraft(entryId) { return this.drafts.get(entryId); } async storeDraft(draft) { this.drafts.set(draft.entryId, draft); } async pendingSince(commitHash) { let i = this.pending.length; for (; i >= 0; i--) if (i > 0 && this.pending[i - 1].toCommitHash === commitHash) break; const pending = this.pending.slice(i); if (pending.length === 0) return void 0; return { toCommitHash: pending[pending.length - 1].toCommitHash, mutations: pending.flatMap( (params) => params.mutations.flatMap((mutate) => mutate.meta) ) }; } }; function createMemoryHandler(config, db) { const api = new MemoryApi(config, db); return new Handler({ db, config, target: api, media: api, history: api, drafts: api, pending: api, previews: new JWTPreviews("dev"), previewAuthToken: "dev" }); } export { createMemoryHandler };