@usebruno/js 0.14.0 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +22 -4
- package/src/bru.js +35 -12
- package/src/interpolate-string.js +2 -2
- package/src/runtime/assert-runtime.js +44 -20
- package/src/runtime/script-runtime.js +62 -23
- package/src/runtime/test-runtime.js +63 -47
- package/src/runtime/vars-runtime.js +44 -21
- package/src/sandbox/bundle-browser-rollup.js +502 -0
- package/src/sandbox/bundle-libraries.js +88 -0
- package/src/sandbox/quickjs/index.js +193 -0
- package/src/sandbox/quickjs/shims/bru.js +87 -0
- package/src/sandbox/quickjs/shims/bruno-request.js +112 -0
- package/src/sandbox/quickjs/shims/bruno-response.js +55 -0
- package/src/sandbox/quickjs/shims/console.js +46 -0
- package/src/sandbox/quickjs/shims/lib/axios.js +72 -0
- package/src/sandbox/quickjs/shims/lib/index.js +13 -0
- package/src/sandbox/quickjs/shims/lib/nanoid.js +24 -0
- package/src/sandbox/quickjs/shims/lib/path.js +28 -0
- package/src/sandbox/quickjs/shims/lib/uuid.js +30 -0
- package/src/sandbox/quickjs/shims/local-module.js +35 -0
- package/src/sandbox/quickjs/shims/test.js +63 -0
- package/src/sandbox/quickjs/utils/index.js +33 -0
- package/src/utils.js +6 -1
|
@@ -3,17 +3,39 @@ const Bru = require('../bru');
|
|
|
3
3
|
const BrunoRequest = require('../bruno-request');
|
|
4
4
|
const { evaluateJsTemplateLiteral, evaluateJsExpression, createResponseParser } = require('../utils');
|
|
5
5
|
|
|
6
|
+
const { executeQuickJsVm } = require('../sandbox/quickjs');
|
|
7
|
+
|
|
8
|
+
const evaluateJsTemplateLiteralBasedOnRuntime = (literal, context, runtime) => {
|
|
9
|
+
if (runtime === 'quickjs') {
|
|
10
|
+
return executeQuickJsVm({
|
|
11
|
+
script: literal,
|
|
12
|
+
context,
|
|
13
|
+
scriptType: 'template-literal'
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
return evaluateJsTemplateLiteral(literal, context);
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
const evaluateJsExpressionBasedOnRuntime = (expr, context, runtime, mode) => {
|
|
21
|
+
if (runtime === 'quickjs') {
|
|
22
|
+
return executeQuickJsVm({
|
|
23
|
+
script: expr,
|
|
24
|
+
context,
|
|
25
|
+
scriptType: 'expression'
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
return evaluateJsExpression(expr, context);
|
|
30
|
+
};
|
|
31
|
+
|
|
6
32
|
class VarsRuntime {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
processEnvVars,
|
|
14
|
-
historyLogger,
|
|
15
|
-
secretVars = {}
|
|
16
|
-
) {
|
|
33
|
+
constructor(props) {
|
|
34
|
+
this.runtime = props?.runtime || 'vm2';
|
|
35
|
+
this.mode = props?.mode || 'developer';
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
runPreRequestVars(vars, request, envVariables, runtimeVariables, collectionPath, processEnvVars, historyLogger, secretVars = {}) {
|
|
17
39
|
if (!request?.requestVariables) {
|
|
18
40
|
request.requestVariables = {};
|
|
19
41
|
}
|
|
@@ -24,12 +46,13 @@ class VarsRuntime {
|
|
|
24
46
|
|
|
25
47
|
const bru = new Bru(
|
|
26
48
|
envVariables,
|
|
27
|
-
|
|
49
|
+
runtimeVariables,
|
|
28
50
|
processEnvVars,
|
|
29
51
|
null,
|
|
30
52
|
historyLogger,
|
|
31
|
-
undefined, //
|
|
32
|
-
secretVars
|
|
53
|
+
undefined, // setVisualizations
|
|
54
|
+
secretVars,
|
|
55
|
+
undefined, // requestVariables
|
|
33
56
|
);
|
|
34
57
|
const req = new BrunoRequest(request, historyLogger);
|
|
35
58
|
|
|
@@ -40,13 +63,13 @@ class VarsRuntime {
|
|
|
40
63
|
|
|
41
64
|
const context = {
|
|
42
65
|
...envVariables,
|
|
43
|
-
...
|
|
66
|
+
...runtimeVariables,
|
|
44
67
|
...secretVars,
|
|
45
68
|
...bruContext
|
|
46
69
|
};
|
|
47
70
|
|
|
48
71
|
_.each(enabledVars, (v) => {
|
|
49
|
-
const value =
|
|
72
|
+
const value = evaluateJsTemplateLiteralBasedOnRuntime(v.value, context, this.runtime);
|
|
50
73
|
request?.requestVariables && (request.requestVariables[v.name] = value);
|
|
51
74
|
});
|
|
52
75
|
}
|
|
@@ -56,7 +79,7 @@ class VarsRuntime {
|
|
|
56
79
|
request,
|
|
57
80
|
response,
|
|
58
81
|
envVariables,
|
|
59
|
-
|
|
82
|
+
runtimeVariables,
|
|
60
83
|
collectionPath,
|
|
61
84
|
processEnvVars,
|
|
62
85
|
historyLogger,
|
|
@@ -70,11 +93,11 @@ class VarsRuntime {
|
|
|
70
93
|
|
|
71
94
|
const bru = new Bru(
|
|
72
95
|
envVariables,
|
|
73
|
-
|
|
96
|
+
runtimeVariables,
|
|
74
97
|
processEnvVars,
|
|
75
98
|
null,
|
|
76
99
|
historyLogger,
|
|
77
|
-
undefined, //
|
|
100
|
+
undefined, // setVisualizations
|
|
78
101
|
secretVars,
|
|
79
102
|
requestVariables
|
|
80
103
|
);
|
|
@@ -89,7 +112,7 @@ class VarsRuntime {
|
|
|
89
112
|
|
|
90
113
|
const context = {
|
|
91
114
|
...envVariables,
|
|
92
|
-
...
|
|
115
|
+
...runtimeVariables,
|
|
93
116
|
...secretVars,
|
|
94
117
|
...bruContext
|
|
95
118
|
};
|
|
@@ -97,7 +120,7 @@ class VarsRuntime {
|
|
|
97
120
|
const errors = new Map();
|
|
98
121
|
_.each(enabledVars, (v) => {
|
|
99
122
|
try {
|
|
100
|
-
const value =
|
|
123
|
+
const value = evaluateJsExpressionBasedOnRuntime(v.value, context, this.runtime);
|
|
101
124
|
bru.setVar(v.name, value);
|
|
102
125
|
} catch (error) {
|
|
103
126
|
errors.set(v.name, error);
|
|
@@ -113,7 +136,7 @@ class VarsRuntime {
|
|
|
113
136
|
|
|
114
137
|
return {
|
|
115
138
|
envVariables,
|
|
116
|
-
|
|
139
|
+
runtimeVariables,
|
|
117
140
|
error
|
|
118
141
|
};
|
|
119
142
|
}
|