39 lines
1.3 KiB
JavaScript
39 lines
1.3 KiB
JavaScript
// runtime 工厂模板:根据用户确认的补环境框架选择加载对应 runtime。
|
||
// 未选择框架时默认 none;不要因为 Trace 复杂度高而自动切换到 isolated-vm、vm 或 jsEnv。
|
||
'use strict';
|
||
|
||
function normalizeRuntimeMode(mode) {
|
||
const value = String(mode || 'none').trim().toLowerCase();
|
||
if (value === 'isolated-vm' || value === 'isolated_vm' || value === 'ivm') return 'isolated-vm';
|
||
if (value === 'vm' || value === 'node-vm' || value === 'nodejs-vm') return 'vm';
|
||
if (value === 'jsenv' || value === 'js-env' || value === 'js_env') return 'jsEnv';
|
||
return 'none';
|
||
}
|
||
|
||
function createRuntime(options = {}) {
|
||
const mode = normalizeRuntimeMode(options.mode);
|
||
|
||
if (mode === 'isolated-vm') {
|
||
const { createIsolatedVmRuntime } = require('./isolated-vm-runtime');
|
||
return createIsolatedVmRuntime(options);
|
||
}
|
||
|
||
if (mode === 'vm') {
|
||
const { createVmRuntime } = require('./vm-runtime');
|
||
return createVmRuntime(options);
|
||
}
|
||
|
||
if (mode === 'jsEnv') {
|
||
const { createJsEnvRuntime } = require('./jsenv-runtime');
|
||
return createJsEnvRuntime(options);
|
||
}
|
||
|
||
const { createNoFrameworkRuntime } = require('./no-framework-runtime');
|
||
return createNoFrameworkRuntime(options);
|
||
}
|
||
|
||
module.exports = {
|
||
createRuntime,
|
||
normalizeRuntimeMode,
|
||
};
|