mirror of
https://github.com/usebruno/bruno.git
synced 2025-06-21 12:33:34 +02:00
fix: fixed issue where vm2 instantiated objects were not being sent to renderer process
This commit is contained in:
parent
e3ce420216
commit
1c89ab3450
@ -10,6 +10,7 @@ const punycode = require('punycode');
|
|||||||
const Bru = require('../bru');
|
const Bru = require('../bru');
|
||||||
const BrunoRequest = require('../bruno-request');
|
const BrunoRequest = require('../bruno-request');
|
||||||
const BrunoResponse = require('../bruno-response');
|
const BrunoResponse = require('../bruno-response');
|
||||||
|
const { cleanJson } = require('../utils');
|
||||||
|
|
||||||
// Inbuilt Library Support
|
// Inbuilt Library Support
|
||||||
const atob = require('atob');
|
const atob = require('atob');
|
||||||
@ -37,7 +38,7 @@ class ScriptRuntime {
|
|||||||
if (onConsoleLog && typeof onConsoleLog === 'function') {
|
if (onConsoleLog && typeof onConsoleLog === 'function') {
|
||||||
const customLogger = (type) => {
|
const customLogger = (type) => {
|
||||||
return (...args) => {
|
return (...args) => {
|
||||||
onConsoleLog(type, args);
|
onConsoleLog(type, cleanJson(args));
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
context.console = {
|
context.console = {
|
||||||
@ -81,8 +82,8 @@ class ScriptRuntime {
|
|||||||
await asyncVM();
|
await asyncVM();
|
||||||
return {
|
return {
|
||||||
request,
|
request,
|
||||||
envVariables,
|
envVariables: cleanJson(envVariables),
|
||||||
collectionVariables
|
collectionVariables: cleanJson(collectionVariables)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -100,7 +101,7 @@ class ScriptRuntime {
|
|||||||
if (onConsoleLog && typeof onConsoleLog === 'function') {
|
if (onConsoleLog && typeof onConsoleLog === 'function') {
|
||||||
const customLogger = (type) => {
|
const customLogger = (type) => {
|
||||||
return (...args) => {
|
return (...args) => {
|
||||||
onConsoleLog(type, args);
|
onConsoleLog(type, cleanJson(args));
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
context.console = {
|
context.console = {
|
||||||
@ -136,8 +137,8 @@ class ScriptRuntime {
|
|||||||
|
|
||||||
return {
|
return {
|
||||||
response,
|
response,
|
||||||
envVariables,
|
envVariables: cleanJson(envVariables),
|
||||||
collectionVariables
|
collectionVariables: cleanJson(collectionVariables)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,7 @@ const BrunoRequest = require('../bruno-request');
|
|||||||
const BrunoResponse = require('../bruno-response');
|
const BrunoResponse = require('../bruno-response');
|
||||||
const Test = require('../test');
|
const Test = require('../test');
|
||||||
const TestResults = require('../test-results');
|
const TestResults = require('../test-results');
|
||||||
|
const { cleanJson } = require('../utils');
|
||||||
|
|
||||||
// Inbuilt Library Support
|
// Inbuilt Library Support
|
||||||
const atob = require('atob');
|
const atob = require('atob');
|
||||||
@ -49,7 +50,7 @@ class TestRuntime {
|
|||||||
if (onConsoleLog && typeof onConsoleLog === 'function') {
|
if (onConsoleLog && typeof onConsoleLog === 'function') {
|
||||||
const customLogger = (type) => {
|
const customLogger = (type) => {
|
||||||
return (...args) => {
|
return (...args) => {
|
||||||
onConsoleLog(type, args);
|
onConsoleLog(type, cleanJson(args));
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
context.console = {
|
context.console = {
|
||||||
@ -82,9 +83,9 @@ class TestRuntime {
|
|||||||
|
|
||||||
return {
|
return {
|
||||||
request,
|
request,
|
||||||
envVariables,
|
envVariables: cleanJson(envVariables),
|
||||||
collectionVariables,
|
collectionVariables: cleanJson(collectionVariables),
|
||||||
results: __brunoTestResults.getResults()
|
results: cleanJson(__brunoTestResults.getResults())
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -118,9 +118,28 @@ const createResponseParser = (response = {}) => {
|
|||||||
return res;
|
return res;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Objects that are created inside vm2 execution context result in an serilaization error when sent to the renderer process
|
||||||
|
* Error sending from webFrameMain: Error: Failed to serialize arguments
|
||||||
|
* at s.send (node:electron/js2c/browser_init:169:631)
|
||||||
|
* at g.send (node:electron/js2c/browser_init:165:2156)
|
||||||
|
* How to reproduce
|
||||||
|
* Remove the cleanJson fix and execute the below post response script
|
||||||
|
* bru.setVar("a", {b:3});
|
||||||
|
* Todo: Find a better fix
|
||||||
|
*/
|
||||||
|
const cleanJson = (data) => {
|
||||||
|
try {
|
||||||
|
return JSON.parse(JSON.stringify(data));
|
||||||
|
} catch (e) {
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
evaluateJsExpression,
|
evaluateJsExpression,
|
||||||
evaluateJsTemplateLiteral,
|
evaluateJsTemplateLiteral,
|
||||||
createResponseParser,
|
createResponseParser,
|
||||||
internalExpressionCache
|
internalExpressionCache,
|
||||||
|
cleanJson
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user