Formats files in `src` with [prettier for consistent code style](https://prettier.io/docs/en/why-prettier) and adds npm script Related to https://github.com/webrecorder/replayweb.page/issues/201
49 lines
1.0 KiB
JavaScript
49 lines
1.0 KiB
JavaScript
/*eslint-env node */
|
|
|
|
import { CollectionLoader } from "@webrecorder/wabac/src/loaders";
|
|
|
|
const { ipcRenderer, contextBridge } = require("electron");
|
|
|
|
contextBridge.exposeInMainWorld("electron", { IS_APP: true });
|
|
|
|
const dbs = {};
|
|
|
|
const loader = new CollectionLoader();
|
|
|
|
async function getColl(name) {
|
|
if (!dbs[name]) {
|
|
dbs[name] = await loader.loadColl(name);
|
|
await dbs[name].initing;
|
|
}
|
|
|
|
return dbs[name];
|
|
}
|
|
|
|
async function getDB(name) {
|
|
const coll = await getColl(name);
|
|
return coll.store;
|
|
}
|
|
|
|
async function getResponse(event, request, coll, ts, channel) {
|
|
const db = await getDB(coll);
|
|
|
|
const req = { request, url: request.url, timestamp: ts };
|
|
|
|
const result = await db.getResource(req, "", { request });
|
|
|
|
if (!result) {
|
|
ipcRenderer.send(channel, 404);
|
|
return;
|
|
}
|
|
|
|
const headers = Object.fromEntries(result.headers.entries());
|
|
|
|
const buffer = await result.getBuffer();
|
|
|
|
ipcRenderer.send(channel, result.status, headers, buffer);
|
|
}
|
|
|
|
ipcRenderer.on("getresponse", getResponse);
|
|
|
|
export { getDB, getColl, loader };
|