feat: support node-fetch as an inbuilt library (#138)

This commit is contained in:
Anoop M D 2023-04-20 10:51:29 +05:30
parent c36c7b44a6
commit 8e0bc68ada
3 changed files with 12 additions and 5 deletions

View File

@ -158,7 +158,7 @@ const registerNetworkIpc = (mainWindow, watcher, lastOpenedCollections) => {
const responseScript = get(request, 'script.res'); const responseScript = get(request, 'script.res');
if(responseScript && responseScript.length) { if(responseScript && responseScript.length) {
const scriptRuntime = new ScriptRuntime(); const scriptRuntime = new ScriptRuntime();
const result = scriptRuntime.runResponseScript(responseScript, request, response, envVars, collectionVariables, collectionPath); const result = await scriptRuntime.runResponseScript(responseScript, request, response, envVars, collectionVariables, collectionPath);
mainWindow.webContents.send('main:script-environment-update', { mainWindow.webContents.send('main:script-environment-update', {
envVariables: result.envVariables, envVariables: result.envVariables,
@ -333,7 +333,7 @@ const registerNetworkIpc = (mainWindow, watcher, lastOpenedCollections) => {
const requestScript = get(request, 'script.req'); const requestScript = get(request, 'script.req');
if(requestScript && requestScript.length) { if(requestScript && requestScript.length) {
const scriptRuntime = new ScriptRuntime(); const scriptRuntime = new ScriptRuntime();
const result = scriptRuntime.runRequestScript(requestScript, request, envVars, collectionVariables, collectionPath); const result = await scriptRuntime.runRequestScript(requestScript, request, envVars, collectionVariables, collectionPath);
mainWindow.webContents.send('main:script-environment-update', { mainWindow.webContents.send('main:script-environment-update', {
envVariables: result.envVariables, envVariables: result.envVariables,
@ -381,7 +381,7 @@ const registerNetworkIpc = (mainWindow, watcher, lastOpenedCollections) => {
const responseScript = get(request, 'script.res'); const responseScript = get(request, 'script.res');
if(responseScript && responseScript.length) { if(responseScript && responseScript.length) {
const scriptRuntime = new ScriptRuntime(); const scriptRuntime = new ScriptRuntime();
const result = scriptRuntime.runResponseScript(responseScript, request, response, envVars, collectionVariables, collectionPath); const result = await scriptRuntime.runResponseScript(responseScript, request, response, envVars, collectionVariables, collectionPath);
mainWindow.webContents.send('main:script-environment-update', { mainWindow.webContents.send('main:script-environment-update', {
envVariables: result.envVariables, envVariables: result.envVariables,

View File

@ -16,12 +16,14 @@
"@usebruno/query": "0.1.0", "@usebruno/query": "0.1.0",
"ajv": "^8.12.0", "ajv": "^8.12.0",
"atob": "^2.1.2", "atob": "^2.1.2",
"axios": "^0.26.0",
"btoa": "^1.2.1", "btoa": "^1.2.1",
"crypto-js": "^4.1.1", "crypto-js": "^4.1.1",
"json-query": "^2.2.2", "json-query": "^2.2.2",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"moment": "^2.29.4", "moment": "^2.29.4",
"nanoid": "3.3.4", "nanoid": "3.3.4",
"node-fetch": "2.*",
"uuid": "^9.0.0" "uuid": "^9.0.0"
} }
} }

View File

@ -19,6 +19,7 @@ const moment = require('moment');
const uuid = require('uuid'); const uuid = require('uuid');
const nanoid = require('nanoid'); const nanoid = require('nanoid');
const axios = require('axios'); const axios = require('axios');
const fetch = require('node-fetch');
const CryptoJS = require('crypto-js'); const CryptoJS = require('crypto-js');
class ScriptRuntime { class ScriptRuntime {
@ -56,6 +57,7 @@ class ScriptRuntime {
uuid, uuid,
nanoid, nanoid,
axios, axios,
'node-fetch': fetch,
'crypto-js': CryptoJS 'crypto-js': CryptoJS
} }
} }
@ -69,7 +71,7 @@ class ScriptRuntime {
}; };
} }
runResponseScript(script, request, response, envVariables, collectionVariables, collectionPath) { async runResponseScript(script, request, response, envVariables, collectionVariables, collectionPath) {
const bru = new Bru(envVariables, collectionVariables); const bru = new Bru(envVariables, collectionVariables);
const req = new BrunoRequest(request); const req = new BrunoRequest(request);
const res = new BrunoResponse(response); const res = new BrunoResponse(response);
@ -92,12 +94,15 @@ class ScriptRuntime {
moment, moment,
uuid, uuid,
nanoid, nanoid,
axios,
'node-fetch': fetch,
'crypto-js': CryptoJS 'crypto-js': CryptoJS
} }
} }
}); });
vm.run(script, path.join(collectionPath, 'vm.js')); const asyncVM = vm.run(`module.exports = async () => { ${script} }`, path.join(collectionPath, 'vm.js'));
await asyncVM();
return { return {
response, response,