diff --git a/packages/insomnia/config/renderer-node-import-baseline.json b/packages/insomnia/config/renderer-node-import-baseline.json index e9a6d2e8fa..c3aaeab2de 100644 --- a/packages/insomnia/config/renderer-node-import-baseline.json +++ b/packages/insomnia/config/renderer-node-import-baseline.json @@ -32,10 +32,6 @@ "importer": "src/plugins/index.ts", "builtin": "path" }, - { - "importer": "src/script-executor.ts", - "builtin": "fs/promises" - }, { "importer": "src/scripting/require-interceptor.ts", "builtin": "buffer" diff --git a/packages/insomnia/src/network/cancellation.ts b/packages/insomnia/src/network/cancellation.ts index a64e68a8d4..3b36c2fd23 100644 --- a/packages/insomnia/src/network/cancellation.ts +++ b/packages/insomnia/src/network/cancellation.ts @@ -1,6 +1,4 @@ -import type { RequestContext } from '../../../insomnia-scripting-environment/src/objects'; import type { CurlRequestOptions } from '../main/network/libcurl-promise'; -import { runScript as nodejsRunScript } from '../script-executor'; const cancelRequestFunctionMap = new Map void>(); @@ -37,33 +35,6 @@ export const cancellableExecution = async (options: { id: string; fn: Promise { - const request = options.context.request; - const requestId = request._id; - const controller = new AbortController(); - const cancelRequest = () => { - // TODO: implement cancelPreRequestScript on hiddenBrowserWindow side? - controller.abort(); - }; - cancelRequestFunctionMap.set(requestId, cancelRequest); - try { - const result = await cancellablePromise({ - signal: controller.signal, - fn: process.type === 'renderer' ? window.main.hiddenBrowserWindow.runScript(options) : nodejsRunScript(options), - }); - - return result; - } catch (err) { - if (err.name === 'AbortError') { - throw new Error('Request was cancelled'); - } - console.log('[network] Error', err); - throw err; - } finally { - cancelRequestFunctionMap.delete(requestId); - } -}; - export const cancellableCurlRequest = async (requestOptions: CurlRequestOptions) => { const requestId = requestOptions.requestId; const controller = new AbortController(); diff --git a/packages/insomnia/src/network/network-adapter.node.ts b/packages/insomnia/src/network/network-adapter.node.ts index efd3d7c1d8..746e2c2216 100644 --- a/packages/insomnia/src/network/network-adapter.node.ts +++ b/packages/insomnia/src/network/network-adapter.node.ts @@ -6,6 +6,7 @@ import clone from 'clone'; import type { RequestHeader } from '~/insomnia-data'; import type { RenderedRequest } from '~/templating/types'; +import type { RequestContext } from '../../../insomnia-scripting-environment/src/objects'; import { getAuthHeader as getAuthHeaderFromMain } from '../main/network/get-auth-header'; import type { CurlRequestOptions, CurlRequestOutput, ResponsePatch } from '../main/network/libcurl-promise'; import { curlRequest } from '../main/network/libcurl-promise'; @@ -15,6 +16,7 @@ import * as pluginNetwork from '../plugins/context/network'; import * as pluginRequest from '../plugins/context/request'; import * as pluginResponse from '../plugins/context/response'; import * as pluginStore from '../plugins/context/store'; +import { runScript as executeScript } from '../script-executor'; export const getTimelinePath = async (responseId: string): Promise => { const electron = require('electron') as { app: { getPath: (name: string) => string } }; @@ -40,6 +42,11 @@ export const getAuthHeader = (r: RenderedRequest, u: string): Promise => curlRequest(options); +export const runScript = (options: { + script: string; + context: RequestContext; +}): Promise => executeScript(options); + export async function applyRequestHooks( newRenderedRequest: RenderedRequest, renderedContext: Record, diff --git a/packages/insomnia/src/network/network-adapter.renderer.ts b/packages/insomnia/src/network/network-adapter.renderer.ts index 3ec9402c4e..c03f93780b 100644 --- a/packages/insomnia/src/network/network-adapter.renderer.ts +++ b/packages/insomnia/src/network/network-adapter.renderer.ts @@ -2,8 +2,10 @@ import type { RequestHeader } from '~/insomnia-data'; import { plugins as pluginsBridge } from '~/plugins/renderer-bridge'; import type { RenderedRequest } from '~/templating/types'; +import type { RequestContext } from '../../../insomnia-scripting-environment/src/objects'; import type { CurlRequestOptions, ResponsePatch } from '../main/network/libcurl-promise'; import { cancellableCurlRequest } from './cancellation'; +import { runScriptConcurrently } from './concurrency'; export const getTimelinePath = (responseId: string): Promise => window.main.timeline.getPath(responseId); @@ -20,6 +22,11 @@ export const getAuthHeader = (r: RenderedRequest, u: string): Promise cancellableCurlRequest(options); +export const runScript = (options: { + script: string; + context: RequestContext; +}): Promise => runScriptConcurrently(options); + export async function applyRequestHooks( newRenderedRequest: RenderedRequest, renderedContext: Record, diff --git a/packages/insomnia/src/network/network-adapter.ts b/packages/insomnia/src/network/network-adapter.ts index 8de37b4778..9409e0d477 100644 --- a/packages/insomnia/src/network/network-adapter.ts +++ b/packages/insomnia/src/network/network-adapter.ts @@ -15,6 +15,7 @@ export const { appendTimelineLines, getAuthHeader, executeCurlRequest, + runScript, applyRequestHooks, applyResponseHooks, } = impl; diff --git a/packages/insomnia/src/network/network.ts b/packages/insomnia/src/network/network.ts index dfb9ad62de..9779ded8e2 100644 --- a/packages/insomnia/src/network/network.ts +++ b/packages/insomnia/src/network/network.ts @@ -30,6 +30,7 @@ import { executeCurlRequest, getAuthHeader, getTimelinePath, + runScript, } from '~/network/network-adapter'; import { getKVPairFromData } from '~/utils/environment-utils'; @@ -54,15 +55,13 @@ import { serializeNDJSON } from '../utils/ndjson'; import { buildQueryStringFromParams, joinUrlAndQueryString, smartEncodeUrl } from '../utils/url/querystring'; import { QUERY_PARAMS } from './api-key/constants'; import { getAuthObjectOrNull, isAuthEnabled } from './authentication'; -import { cancellableRunScript } from './cancellation'; import { filterClientCertificates } from './certificate'; -import { runScriptConcurrently, type TransformedExecuteScriptContext } from './concurrency'; +import type { TransformedExecuteScriptContext } from './concurrency'; import { addSetCookiesToToughCookieJar } from './set-cookie-util'; const { isRequest } = models.request; const { isRequestGroup } = models.requestGroup; - export interface SendActionRuntime { appendTimeline: (timelinePath: string, logs: string[]) => Promise; } @@ -519,8 +518,7 @@ const tryToExecuteScript = async (context: RequestAndContextAndOptionalResponse) } try { - const fn = process.type === 'renderer' ? runScriptConcurrently : cancellableRunScript; - const output = await fn({ + const output = await runScript({ script, context: { request, diff --git a/packages/insomnia/src/script-executor.ts b/packages/insomnia/src/script-executor.ts index a85cd8fc48..12a6a6d7aa 100644 --- a/packages/insomnia/src/script-executor.ts +++ b/packages/insomnia/src/script-executor.ts @@ -1,4 +1,4 @@ -import { appendFile } from 'node:fs/promises'; +import fs from 'node:fs'; import * as _ from 'es-toolkit/compat'; @@ -67,7 +67,7 @@ export const runScript = async ({ const updatedCertificates = mergeClientCertificates(context.clientCertificates, mutatedContextObject.request); const updatedCookieJar = mergeCookieJar(context.cookieJar, mutatedContextObject.cookieJar); - await appendFile(context.timelinePath, scriptConsole.dumpLogs()); + await fs.promises.appendFile(context.timelinePath, scriptConsole.dumpLogs()); // console.log('mutatedInsomniaObject', mutatedContextObject); // console.log('context', context);