@vitron/main
Version:
This is a utility package for the main process.
41 lines (38 loc) • 1.31 kB
JavaScript
import { createServer } from 'node:http';
import process from 'node:process';
import path from 'node:path';
import { app } from 'electron';
import { createHandler } from '@routup/static';
import { getPort } from 'get-port-please';
import { Router } from 'routup';
async function serve(mainWindow, options) {
if (!app.isPackaged) {
await mainWindow.loadURL(`http://localhost:${options.port || 9000}`);
return;
}
const router = new Router();
let defaultDirectory;
if (process.platform === 'win32') {
defaultDirectory = path.join(process.cwd(), 'app.asar', '.vitron', 'renderer');
} else {
defaultDirectory = '.vitron/renderer';
}
router.use('/', createHandler(options.directory || defaultDirectory));
const server = createServer(router.createListener());
const stop = async ()=>new Promise((resolve, reject)=>{
server.close((err)=>{
if (err) {
reject(err);
return;
}
resolve();
});
});
mainWindow.on('closed', ()=>stop());
const port = await getPort();
server.listen(port, async ()=>{
await mainWindow.loadURL(`http://localhost:${port}`);
});
}
export { serve };
//# sourceMappingURL=index.mjs.map