Skip to content

Commit 88eb932

Browse files
committed
low cost abstraction
1 parent b78848e commit 88eb932

2 files changed

Lines changed: 5 additions & 80 deletions

File tree

packages/insomnia/src/hidden-window-preload.ts

Lines changed: 4 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,11 @@
11
import * as fs from 'node:fs';
22

3-
import ajv from 'ajv';
4-
import chai from 'chai';
5-
import * as cheerio from 'cheerio';
6-
import cryptojs from 'crypto-js';
7-
import * as csvParseSync from 'csv-parse/sync';
83
import { contextBridge, ipcRenderer, type IpcRendererEvent } from 'electron';
9-
import { asyncTasksAllSettled, Collection as CollectionModule, OriginalPromise, ProxiedPromise, type RequestContext, resetAsyncTasks, stopMonitorAsyncTasks } from 'insomnia-sdk';
10-
import lodash from 'lodash';
11-
import moment from 'moment';
12-
import tv4 from 'tv4';
13-
import * as uuid from 'uuid';
14-
import xml2js from 'xml2js';
4+
import { asyncTasksAllSettled, OriginalPromise, ProxiedPromise, type RequestContext, resetAsyncTasks, stopMonitorAsyncTasks } from 'insomnia-sdk';
155

166
import type { Compression } from './models/response';
17-
18-
const externalModules = new Map<string, object>([
19-
['ajv', ajv],
20-
['chai', chai],
21-
['cheerio', cheerio],
22-
['crypto-js', cryptojs],
23-
['csv-parse/lib/sync', csvParseSync],
24-
['lodash', lodash],
25-
['moment', moment],
26-
['tv4', tv4],
27-
['uuid', uuid],
28-
['xml2js', xml2js],
29-
]);
7+
// this will also import lots of node_modules into the preload script, consider moving this file insomnia-sdk
8+
import { requireInterceptor } from './requireInterceptor';
309

3110
export interface HiddenBrowserWindowToMainBridgeAPI {
3211
requireInterceptor: (module: string) => any;
@@ -55,61 +34,7 @@ const bridge: HiddenBrowserWindowToMainBridgeAPI = {
5534
ipcRenderer.invoke('renderer-listener-ready');
5635
return () => ipcRenderer.removeListener('renderer-listener', rendererListener);
5736
},
58-
59-
requireInterceptor: (moduleName: string) => {
60-
if (
61-
[
62-
// node.js modules
63-
'path',
64-
'assert',
65-
'buffer',
66-
'util',
67-
'url',
68-
'punycode',
69-
'querystring',
70-
'string_decoder',
71-
'stream',
72-
'timers',
73-
'events',
74-
// follows should be npm modules
75-
// but they are moved to here to avoid introducing additional dependencies
76-
].includes(moduleName)
77-
) {
78-
return require(moduleName);
79-
} else if (
80-
[
81-
'atob',
82-
'btoa',
83-
].includes(moduleName)
84-
) {
85-
return moduleName === 'atob' ? atob : btoa;
86-
} else if (
87-
[
88-
// external modules
89-
'ajv',
90-
'chai',
91-
'cheerio',
92-
'crypto-js',
93-
'csv-parse/lib/sync',
94-
'lodash',
95-
'moment',
96-
'tv4',
97-
'uuid',
98-
'xml2js',
99-
].includes(moduleName)
100-
) {
101-
const externalModule = externalModules.get(moduleName);
102-
if (!externalModule) {
103-
throw Error(`no module is found for "${moduleName}"`);
104-
}
105-
return externalModule;
106-
} else if (moduleName === 'insomnia-collection' || moduleName === 'postman-collection') {
107-
return CollectionModule;
108-
}
109-
110-
throw Error(`no module is found for "${moduleName}"`);
111-
},
112-
37+
requireInterceptor,
11338
curlRequest: options => ipcRenderer.invoke('curlRequest', options),
11439
readCurlResponse: options => ipcRenderer.invoke('readCurlResponse', options),
11540
setBusy: busy => ipcRenderer.send('set-hidden-window-busy-status', busy),

packages/insomnia/src/scriptExecutor.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ export const runScript = async (
4141

4242
const mutatedInsomniaObject = await executeScript(
4343
executionContext,
44-
process.type === 'renderer' ? window.bridge.requireInterceptor : requireInterceptor,
44+
requireInterceptor,
4545
scriptConsole,
4646
evalInterceptor,
4747
_,

0 commit comments

Comments
 (0)