mirror of
https://github.com/usebruno/bruno.git
synced 2025-08-17 01:41:20 +02:00
feat: scripting support (#16)
This commit is contained in:
12
packages/bruno-js/package.json
Normal file
12
packages/bruno-js/package.json
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"name": "@usebruno/js",
|
||||
"version": "0.1.0",
|
||||
"main": "src/index.js",
|
||||
"files": [
|
||||
"src",
|
||||
"package.json"
|
||||
],
|
||||
"peerDependencies": {
|
||||
"vm2": "^3.9.13"
|
||||
}
|
||||
}
|
7
packages/bruno-js/src/index.js
Normal file
7
packages/bruno-js/src/index.js
Normal file
@ -0,0 +1,7 @@
|
||||
const {
|
||||
ScriptRuntime
|
||||
} = require('./scripts/script-runtime');
|
||||
|
||||
module.exports = {
|
||||
ScriptRuntime
|
||||
};
|
47
packages/bruno-js/src/scripts/bruno-request.js
Normal file
47
packages/bruno-js/src/scripts/bruno-request.js
Normal file
@ -0,0 +1,47 @@
|
||||
class BrunoRequest {
|
||||
constructor(request) {
|
||||
this._request = request;
|
||||
}
|
||||
|
||||
getUrl() {
|
||||
return this._request.url;
|
||||
}
|
||||
|
||||
setUrl(url) {
|
||||
this._request.url = url;
|
||||
}
|
||||
|
||||
getMethod() {
|
||||
return this._request.method;
|
||||
}
|
||||
|
||||
setMethod(method) {
|
||||
this._request.method = method;
|
||||
}
|
||||
|
||||
getHeaders() {
|
||||
return this._request.headers;
|
||||
}
|
||||
|
||||
setHeaders(headers) {
|
||||
this._request.headers = headers;
|
||||
}
|
||||
|
||||
getHeader(name) {
|
||||
return this._request.headers[name];
|
||||
}
|
||||
|
||||
setHeader(name, value) {
|
||||
this._request.headers[name] = value;
|
||||
}
|
||||
|
||||
getData() {
|
||||
return this._request.data;
|
||||
}
|
||||
|
||||
setData(data) {
|
||||
this._request.data = data;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = BrunoRequest;
|
26
packages/bruno-js/src/scripts/script-runtime.js
Normal file
26
packages/bruno-js/src/scripts/script-runtime.js
Normal file
@ -0,0 +1,26 @@
|
||||
const { NodeVM } = require('vm2');
|
||||
const BrunoRequest = require('./bruno-request');
|
||||
|
||||
class ScriptRuntime {
|
||||
constructor() {
|
||||
}
|
||||
|
||||
run(script, request) {
|
||||
const brunoRequest = new BrunoRequest(request);
|
||||
|
||||
const context = {
|
||||
brunoRequest
|
||||
};
|
||||
const vm = new NodeVM({
|
||||
sandbox: context
|
||||
});
|
||||
|
||||
vm.run(script);
|
||||
|
||||
return request;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
ScriptRuntime
|
||||
};
|
Reference in New Issue
Block a user