diff --git a/packages/core/bin/generate-known b/packages/core/bin/generate-known index a274d55239..288c2c25fb 100755 --- a/packages/core/bin/generate-known +++ b/packages/core/bin/generate-known @@ -2,25 +2,23 @@ const path = require('path'); const glob = require('fast-glob'); -const { createContext, Script } = require('vm'); const { LoggerProxy } = require('n8n-workflow'); const { packageDir, writeJSON } = require('./common'); +const { loadClassInIsolation } = require('../dist/ClassLoader'); LoggerProxy.init({ log: console.log.bind(console), warn: console.warn.bind(console), }); -const context = Object.freeze(createContext({ require })); const loadClass = (sourcePath) => { try { const [className] = path.parse(sourcePath).name.split('.'); - const absolutePath = path.resolve(packageDir, sourcePath); - const script = new Script(`new (require('${absolutePath}').${className})()`); - const instance = script.runInContext(context); + const filePath = path.resolve(packageDir, sourcePath); + const instance = loadClassInIsolation(filePath, className); return { instance, sourcePath, className }; } catch (e) { - LoggerProxy.warn('Failed to load %s: %s', sourcePath, e.message); + LoggerProxy.warn(`Failed to load ${sourcePath}: ${e.message}`); } };