From f0e5bf4378f0226d64fadbbb0cb57cbb0037a96b Mon Sep 17 00:00:00 2001 From: jackkav Date: Mon, 8 Jun 2026 14:39:58 +0200 Subject: [PATCH] address root cause --- .../src/objects/send-request.ts | 2 +- packages/insomnia/src/main/network/libcurl-promise.ts | 4 ---- packages/insomnia/src/main/network/multipart.ts | 4 ---- packages/insomnia/src/plugins/context/app.ts | 2 +- packages/insomnia/src/plugins/context/network.ts | 2 +- packages/insomnia/src/plugins/index.ts | 5 +++-- packages/insomnia/vite.config.ts | 4 ---- 7 files changed, 6 insertions(+), 17 deletions(-) diff --git a/packages/insomnia-scripting-environment/src/objects/send-request.ts b/packages/insomnia-scripting-environment/src/objects/send-request.ts index 128554c8e6..03e849609a 100644 --- a/packages/insomnia-scripting-environment/src/objects/send-request.ts +++ b/packages/insomnia-scripting-environment/src/objects/send-request.ts @@ -19,7 +19,7 @@ export async function sendRequest( try { const requestOptions = requestToCurlOptions(request, settings); const nodejsCurlRequest = - process.type === 'renderer' + typeof window !== 'undefined' && window.bridge != null ? window.bridge.curlRequest : (await import('insomnia/src/main/network/libcurl-promise')).curlRequest; diff --git a/packages/insomnia/src/main/network/libcurl-promise.ts b/packages/insomnia/src/main/network/libcurl-promise.ts index 592555aec9..a12b3d692c 100644 --- a/packages/insomnia/src/main/network/libcurl-promise.ts +++ b/packages/insomnia/src/main/network/libcurl-promise.ts @@ -1,7 +1,3 @@ -// NOTE: this file should not be imported by electron renderer because node-libcurl is not-context-aware -// Related issue https://github.com/JCMais/node-libcurl/issues/155 -import { invariant } from '../../utils/invariant'; -invariant(process.type !== 'renderer', 'Native abstractions for Nodejs module unavailable in renderer'); import fs from 'node:fs'; import path from 'node:path'; import type { Readable, Writable } from 'node:stream'; diff --git a/packages/insomnia/src/main/network/multipart.ts b/packages/insomnia/src/main/network/multipart.ts index af737c46a4..531acfc42b 100644 --- a/packages/insomnia/src/main/network/multipart.ts +++ b/packages/insomnia/src/main/network/multipart.ts @@ -1,7 +1,3 @@ -if (process.type === 'renderer') { - throw new Error('multipart.ts unavailable in renderer'); -} - import fs from 'node:fs'; import os from 'node:os'; import path from 'node:path'; diff --git a/packages/insomnia/src/plugins/context/app.ts b/packages/insomnia/src/plugins/context/app.ts index 78d62671d6..a1af3889c2 100644 --- a/packages/insomnia/src/plugins/context/app.ts +++ b/packages/insomnia/src/plugins/context/app.ts @@ -4,7 +4,7 @@ import { invariant } from 'insomnia/src/utils/invariant'; import { platform } from 'insomnia-data/common'; // TODO: consider how this would work in a webworker context -const isRenderer = process.type === 'renderer'; +const isRenderer = typeof window !== 'undefined'; export const init = (renderPurpose: RenderPurpose = 'general'): { app: AppContext } => ({ app: { diff --git a/packages/insomnia/src/plugins/context/network.ts b/packages/insomnia/src/plugins/context/network.ts index b9b5188183..4f41d53b77 100644 --- a/packages/insomnia/src/plugins/context/network.ts +++ b/packages/insomnia/src/plugins/context/network.ts @@ -58,7 +58,7 @@ export function init(): { const settingFollowRedirects = settings?.followRedirects ? 'on' : 'off'; const { request: originRequest, caCertficatePath = null } = options; const curlRequest = - process.type === 'renderer' || process.type === 'worker' + typeof window !== 'undefined' && window.main != null ? window.main.curlRequest : // when exeucted in Inso; (await import('../../main/network/libcurl-promise')).curlRequest; diff --git a/packages/insomnia/src/plugins/index.ts b/packages/insomnia/src/plugins/index.ts index 18cc66cf27..e9a438738a 100644 --- a/packages/insomnia/src/plugins/index.ts +++ b/packages/insomnia/src/plugins/index.ts @@ -129,7 +129,8 @@ export async function getPlugins(force = false): Promise { // Make sure the default directories exist const pluginPath = path.resolve( - process.env['INSOMNIA_DATA_PATH'] || (process.type === 'renderer' ? window : electron).app.getPath('userData'), + process.env['INSOMNIA_DATA_PATH'] || + (typeof window !== 'undefined' && window.app != null ? window : electron).app.getPath('userData'), 'plugins', ); @@ -299,7 +300,7 @@ export function getPluginCommonContext({ ...pluginNetwork.init(), util: { openInBrowser: async (url: string) => - process.type === 'renderer' || process.type === 'worker' + typeof window !== 'undefined' && window.main != null ? window.main.openInBrowser(url) : electron.shell.openExternal(url), models: { diff --git a/packages/insomnia/vite.config.ts b/packages/insomnia/vite.config.ts index b480fc9d7c..055157b05c 100644 --- a/packages/insomnia/vite.config.ts +++ b/packages/insomnia/vite.config.ts @@ -15,10 +15,6 @@ export default defineConfig(({ mode }) => { '__IS_RENDERER__': JSON.stringify(true), 'process.env.NODE_ENV': JSON.stringify(mode), 'process.env.INSOMNIA_ENV': JSON.stringify(mode), - // Only apply in production builds: Rollup does text substitution (safe). - // In dev mode Vite uses runtime assignment via env.mjs, which throws - // TypeError because process.type is read-only in Electron's renderer process. - ...(!__DEV__ ? { 'process.type': JSON.stringify('renderer') } : {}), }, server: { port: pkg.dev['dev-server-port'],