Enable external module imports in Function-node

Enable whitelist support to pick external modules which are allowed in
Function-node. The environment variable NODE_FUNCTION_ALLOW_EXTERNAL specifies
the list of modules to whitelist.
This commit is contained in:
Ram Yalamanchili
2019-12-26 18:49:48 -08:00
parent b3f3ce25dd
commit 04cdb08906
2 changed files with 16 additions and 7 deletions

View File

@@ -63,9 +63,8 @@ export class Function implements INodeType {
console: 'inherit',
sandbox,
require: {
external: false,
external: false as boolean | { modules: string[] },
builtin: [] as string[],
root: './',
}
};
@@ -73,6 +72,11 @@ export class Function implements INodeType {
options.require.builtin = process.env.NODE_FUNCTION_ALLOW_BUILTIN.split(',');
}
if (process.env.NODE_FUNCTION_ALLOW_EXTERNAL) {
options.require.external = { modules: process.env.NODE_FUNCTION_ALLOW_EXTERNAL.split(',') };
}
const vm = new NodeVM(options);
// Get the code to execute
@@ -80,7 +84,7 @@ export class Function implements INodeType {
try {
// Execute the function code
items = (await vm.run(`module.exports = async function() {${functionCode}}()`));
items = (await vm.run(`module.exports = async function() {${functionCode}}()`, './'));
} catch (e) {
return Promise.reject(e);
}