123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- /**
- * 代码执行器
- * @author hjh
- * */
- class ExpressExecutor {
- //运行时参数信息
- _resource;
- /**
- * 构造函数
- * @param {any} setting
- */
- constructor(resource) {
- this._resource = resource;
- }
-
- /**
- * 测试该代码,并判断是否符合setting配置
- * @param {any} jsCode
- */
- Test(jsCode, returnType) {
- let result = { success: false };
- try {
- if (jsCode.search("return") === -1) {
- jsCode = `return ${jsCode};`;
- }
- jsCode = this._resource + jsCode;
- let value = new Function(jsCode)();
- if (returnType != null && returnType !== "any") {
- //类型不对应
- if (typeof value != returnType) {
- result.success = false;
- result.info = `
- 预期的返回值类型为:${returnType}
- 实际返回值类型为:${typeof value}`;
- return result;
- }
- }
- result.value = value;
- result.success = true;
- } catch (e) {
- result.info = e.message;
- }
- return result;
- }
- /**
- * 执行编辑器编辑的JS代码
- * @param {any} jsCode
- * @param {any} environment
- */
- Run(jsCode) {
- if (jsCode.search("return") === -1) {
- jsCode = `return ${jsCode};`;
- }
- jsCode = this._resource + jsCode;
- return new Function(jsCode)();
- }
- }
|