UNPKG

@stormking/emere

Version:

a nightmarejs replacement for scraping websites using electron.

88 lines (87 loc) 3.11 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const electron_1 = require("electron"); const cross_fetch_1 = __importDefault(require("cross-fetch")); const promises_1 = __importDefault(require("node:fs/promises")); const node_os_1 = __importDefault(require("node:os")); const node_path_1 = __importDefault(require("node:path")); const message_1 = require("./message"); const adblocker_electron_1 = require("@ghostery/adblocker-electron"); let mainWindow = null; async function createWindow() { mainWindow = new electron_1.BrowserWindow({ webPreferences: { nodeIntegration: false, contextIsolation: true, nodeIntegrationInSubFrames: true, preload: __dirname + '/preload.js' }, height: 600, width: 800, show: false }); const cacheFile = node_path_1.default.join(node_os_1.default.tmpdir(), 'electronBlocker.bin'); const blocker = await adblocker_electron_1.ElectronBlocker.fromLists(cross_fetch_1.default, adblocker_electron_1.fullLists, { enableCompression: true, }, { path: cacheFile, read: promises_1.default.readFile, write: promises_1.default.writeFile, }); blocker.enableBlockingInSession(mainWindow.webContents.session); mainWindow.on('closed', () => { mainWindow = null; }); // console.log('runner create window done') let runScript = await parent.call('getCommands', null); electron_1.ipcMain.handle('getCommands', () => { return runScript; }); electron_1.ipcMain.once('returnData', async (evt, data) => { if (runScript.get === 'pdf') { data = (await evt.sender.printToPDF({})).toJSON(); } else { data = Buffer.from(data).toJSON(); } await parent.call('returnData', { data }); mainWindow.close(); }); const params = {}; if (runScript.body) { params.postData = [{ type: 'rawData', bytes: Buffer.from(runScript.body) }]; } if (runScript.header) { params.extraHeaders = Object.entries(runScript.header).map(e => `${e[0]}: ${e[1]}`).join('\n'); } if (runScript.userAgent) { params.userAgent = runScript.userAgent; } if (runScript.referrer) { params.httpReferrer = runScript.referrer; } await mainWindow.loadURL(runScript.url, params); // process.send({ init: 'done' }) } electron_1.ipcMain.on('console', (evt, ...data) => { console.log(data); }); electron_1.ipcMain.on('page', (evt, ...data) => { console.log('page', data); }); electron_1.app.on('ready', createWindow); electron_1.app.on('window-all-closed', () => { if (process.platform !== 'darwin') { electron_1.app.quit(); } }); electron_1.app.on('activate', () => { if (mainWindow === null) { createWindow(); } }); const parent = (0, message_1.init)(process); // console.log('runner init done');