Files
replayweb.page/src/electron-preload.js
T
sua yoo 1893550274 Format src files with Prettier (#215)
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
2023-08-16 18:21:18 -07:00

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 };