alinea
Version:
[](https://npmjs.org/package/alinea) [](https://packagephobia.com/result?p=alinea)
68 lines (66 loc) • 1.75 kB
JavaScript
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
};