budibase/packages/server/src/api/controllers/script.js

24 lines
482 B
JavaScript
Raw Normal View History

2021-03-26 15:56:34 +01:00
const fetch = require("node-fetch")
2021-03-25 12:17:04 +01:00
const vm = require("vm")
class ScriptExecutor {
2021-03-26 15:56:34 +01:00
constructor(body) {
this.script = new vm.Script(body.script)
this.context = vm.createContext(body.context)
this.context.fetch = fetch
2021-03-25 12:17:04 +01:00
}
execute() {
2021-03-26 15:56:34 +01:00
this.script.runInContext(this.context)
return this.context
2021-03-25 12:17:04 +01:00
}
}
exports.execute = async function(ctx) {
2021-03-26 15:56:34 +01:00
const executor = new ScriptExecutor(ctx.request.body)
2021-03-25 12:17:04 +01:00
const result = executor.execute()
ctx.body = result
}