@logicflow/engine 0.0.10 → 0.0.12-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("node:vm")):"function"==typeof define&&define.amd?define(["exports","node:vm"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).Engine={},e.vm)}(this,(function(e,t){"use strict";function o(e,t,o,n){return new(o||(o=Promise))((function(i,s){function r(e){try{a(n.next(e))}catch(e){s(e)}}function d(e){try{a(n.throw(e))}catch(e){s(e)}}function a(e){var t;e.done?i(e.value):(t=e.value,t instanceof o?t:new o((function(e){e(t)}))).then(r,d)}a((n=n.apply(e,t||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;const n="instance:complete",i="instance:interrupted",s="instance:error";var r,d;e.FlowStatus=void 0,(r=e.FlowStatus||(e.FlowStatus={})).COMPLETED="completed",r.INTERRUPTED="interrupted",r.RUNNING="running",r.PENDING="pending",r.ERROR="error",e.ActionStatus=void 0,(d=e.ActionStatus||(e.ActionStatus={})).SUCCESS="success",d.ERROR="error",d.INTERRUPTED="interrupted";const a=(e,n)=>o(void 0,void 0,void 0,(function*(){const i=yield((e,n={})=>o(void 0,void 0,void 0,(function*(){const o=t.createContext(n);return t.runInContext(e,o),o})))(e,n);return i}));class c{constructor({nodeConfig:e,context:t,globalData:o}){const{outgoing:n,incoming:i,id:s,type:r,properties:d}=e;this.baseType="base",this.outgoing=n,this.incoming=i,this.nodeId=s,this.type=r,this.properties=d,this.context=t,this.globalData=o}action(e){return o(this,void 0,void 0,(function*(){console.log("action param ---\x3e>>",e)}))}onResume(e){return o(this,void 0,void 0,(function*(){console.log("onResume params ---\x3e>>",e)}))}isPass(e){return o(this,void 0,void 0,(function*(){if(!e)return!0;const{conditionExpression:t}=e;if(!t)return!0;try{return(yield a(`isPassResult = (${t})`,Object.assign({},this.globalData))).isPassResult}catch(e){return!1}}))}getOutgoing(){return o(this,void 0,void 0,(function*(){const e=[],t=[];for(const e of this.outgoing){const{properties:o}=e;t.push(this.isPass(o))}return(yield Promise.all(t)).forEach(((t,o)=>{const n=this.outgoing[o];n.result=t,e.push(n)})),e}))}execute(t){return o(this,void 0,void 0,(function*(){const{executionId:o,actionId:n}=t,i=yield this.action({nodeId:this.nodeId,executionId:o,actionId:n}),s=i?i.status:"success";if(s===e.ActionStatus.SUCCESS){const s=yield this.getOutgoing(),r=i?i.detail:{};t.next({status:e.ActionStatus.SUCCESS,detail:r,nodeId:this.nodeId,nodeType:this.type,properties:this.properties,executionId:o,actionId:n,outgoing:s})}return{status:s,detail:null==i?void 0:i.detail,executionId:o,actionId:n,nodeId:this.nodeId,nodeType:this.type,properties:this.properties,outgoing:[]}}))}resume(t){return o(this,void 0,void 0,(function*(){const o=yield this.getOutgoing();yield this.onResume({executionId:t.executionId,actionId:t.actionId,nodeId:t.nodeId,data:t.data}),t.next({executionId:t.executionId,actionId:t.actionId,nodeId:this.nodeId,nodeType:this.type,properties:this.properties,outgoing:o,status:e.ActionStatus.SUCCESS})}))}}c.nodeTypeName="BaseNode";class u extends c{constructor(){super(...arguments),this.baseType="start"}}u.nodeTypeName="StartNode";class l extends c{constructor(){super(...arguments),this.baseType="task"}}l.nodeTypeName="TaskNode";class h{constructor(){this._events={}}on(e,t,o){e=e.trim(),this._events[e]||(this._events[e]=[]),this._events[e].push({callback:t,once:!!o})}off(e,t){if(e||(this._events={}),t){const o=this._events[e]||[];let{length:n}=o;for(let e=0;e<n;e++)o[e].callback===t&&(o.splice(e,1),n--,e--);0===o.length&&delete this._events[e]}else delete this._events[e]}emit(e,t){(o=>{let{length:n}=o;for(let i=0;i<n;i++){if(!o[i])continue;const{callback:s,once:r}=o[i];r&&(o.splice(i,1),0===o.length&&delete this._events[e],n--,i--),s.apply(this,[t])}})(this._events[e]||[])}getEvents(){return this._events}}const f="object"==typeof window&&window.window===window,p="object"==typeof global&&global.global===global,g=f?window:"object"==typeof self&&self.self===self?self:p?global:"object"==typeof globalThis?globalThis:{eval:()=>{}};if(!g.sessionStorage){const e={data:{},setItem(t,o){e.data[t]=o},getItem:t=>e.data[t],removeItem(t){delete e.data[t]},clear(){e.data={}}};g.sessionStorage=e}var v={setItem(e,t){"object"==typeof t&&(t=JSON.stringify(t)),g.sessionStorage.setItem(e,t)},getItem(e){const t=g.sessionStorage.getItem(e);try{return JSON.parse(t)}catch(e){return t}},removeItem(e){g.sessionStorage.removeItem(e)},clear(){g.sessionStorage.clear()}};function I(e){var t=e.default;if("function"==typeof t){var o=function e(){if(this instanceof e){var o=[null];return o.push.apply(o,arguments),new(Function.bind.apply(t,o))}return t.apply(this,arguments)};o.prototype=t.prototype}else o={};return Object.defineProperty(o,"__esModule",{value:!0}),Object.keys(e).forEach((function(t){var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(o,t,n.get?n:{enumerable:!0,get:function(){return e[t]}})})),o}var E={},m={},y={},_=I(Object.freeze({__proto__:null,default:{}}));Object.defineProperty(y,"__esModule",{value:!0}),y.default=function(){return b.default.randomFillSync(x)};var N,b=(N=_)&&N.__esModule?N:{default:N};const x=new Uint8Array(16);var M={};Object.defineProperty(M,"__esModule",{value:!0}),M.default=void 0;const O=[];for(let e=0;e<256;++e)O.push((e+256).toString(16).substr(1));var R=function(e,t){const o=t||0;return(O[e[o+0]]+O[e[o+1]]+O[e[o+2]]+O[e[o+3]]+"-"+O[e[o+4]]+O[e[o+5]]+"-"+O[e[o+6]]+O[e[o+7]]+"-"+O[e[o+8]]+O[e[o+9]]+"-"+O[e[o+10]]+O[e[o+11]]+O[e[o+12]]+O[e[o+13]]+O[e[o+14]]+O[e[o+15]]).toLowerCase()};M.default=R,Object.defineProperty(m,"__esModule",{value:!0}),m.default=void 0;var T=S(y),A=S(M);function S(e){return e&&e.__esModule?e:{default:e}}let D,w,j=0,C=0;var P=function(e,t,o){let n=t&&o||0;const i=t||new Array(16);let s=(e=e||{}).node||D,r=void 0!==e.clockseq?e.clockseq:w;if(null==s||null==r){const t=e.random||(e.rng||T.default)();null==s&&(s=D=[1|t[0],t[1],t[2],t[3],t[4],t[5]]),null==r&&(r=w=16383&(t[6]<<8|t[7]))}let d=void 0!==e.msecs?e.msecs:Date.now(),a=void 0!==e.nsecs?e.nsecs:C+1;const c=d-j+(a-C)/1e4;if(c<0&&void 0===e.clockseq&&(r=r+1&16383),(c<0||d>j)&&void 0===e.nsecs&&(a=0),a>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");j=d,C=a,w=r,d+=122192928e5;const u=(1e4*(268435455&d)+a)%4294967296;i[n++]=u>>>24&255,i[n++]=u>>>16&255,i[n++]=u>>>8&255,i[n++]=255&u;const l=d/4294967296*1e4&268435455;i[n++]=l>>>8&255,i[n++]=255&l,i[n++]=l>>>24&15|16,i[n++]=l>>>16&255,i[n++]=r>>>8|128,i[n++]=255&r;for(let e=0;e<6;++e)i[n+e]=s[e];return t||(0,A.default)(i)};m.default=P;var F={},L={};Object.defineProperty(L,"__esModule",{value:!0}),L.default=function(e,t,o){function n(e,n,i,s){if("string"==typeof e&&(e=function(e){e=unescape(encodeURIComponent(e));const t=[];for(let o=0;o<e.length;++o)t.push(e.charCodeAt(o));return t}(e)),"string"==typeof n&&(n=function(e){const t=[];return e.replace(/[a-fA-F0-9]{2}/g,(function(e){t.push(parseInt(e,16))})),t}(n)),!Array.isArray(e))throw TypeError("value must be an array of bytes");if(!Array.isArray(n)||16!==n.length)throw TypeError("namespace must be uuid string or an Array of 16 byte values");const r=o(n.concat(e));if(r[6]=15&r[6]|t,r[8]=63&r[8]|128,i){s=s||0;for(let e=0;e<16;++e)i[s+e]=r[e];return i}return(0,U.default)(r)}try{n.name=e}catch(e){}return n.DNS=k,n.URL=G,n},L.URL=L.DNS=void 0;var U=function(e){return e&&e.__esModule?e:{default:e}}(M);const k="6ba7b810-9dad-11d1-80b4-00c04fd430c8";L.DNS=k;const G="6ba7b811-9dad-11d1-80b4-00c04fd430c8";L.URL=G;var B={};Object.defineProperty(B,"__esModule",{value:!0}),B.default=void 0;var $=function(e){return e&&e.__esModule?e:{default:e}}(_);var Q=function(e){return Array.isArray(e)?e=Buffer.from(e):"string"==typeof e&&(e=Buffer.from(e,"utf8")),$.default.createHash("md5").update(e).digest()};B.default=Q,Object.defineProperty(F,"__esModule",{value:!0}),F.default=void 0;var X=V(L),q=V(B);function V(e){return e&&e.__esModule?e:{default:e}}var Y=(0,X.default)("v3",48,q.default);F.default=Y;var z={};Object.defineProperty(z,"__esModule",{value:!0}),z.default=void 0;var H=W(y),J=W(M);function W(e){return e&&e.__esModule?e:{default:e}}var K=function(e,t,o){const n=(e=e||{}).random||(e.rng||H.default)();if(n[6]=15&n[6]|64,n[8]=63&n[8]|128,t){o=o||0;for(let e=0;e<16;++e)t[o+e]=n[e];return t}return(0,J.default)(n)};z.default=K;var Z={},ee={};Object.defineProperty(ee,"__esModule",{value:!0}),ee.default=void 0;var te=function(e){return e&&e.__esModule?e:{default:e}}(_);var oe=function(e){return Array.isArray(e)?e=Buffer.from(e):"string"==typeof e&&(e=Buffer.from(e,"utf8")),te.default.createHash("sha1").update(e).digest()};ee.default=oe,Object.defineProperty(Z,"__esModule",{value:!0}),Z.default=void 0;var ne=se(L),ie=se(ee);function se(e){return e&&e.__esModule?e:{default:e}}var re=(0,ne.default)("v5",80,ie.default);Z.default=re,function(e){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"v1",{enumerable:!0,get:function(){return t.default}}),Object.defineProperty(e,"v3",{enumerable:!0,get:function(){return o.default}}),Object.defineProperty(e,"v4",{enumerable:!0,get:function(){return n.default}}),Object.defineProperty(e,"v5",{enumerable:!0,get:function(){return i.default}});var t=s(m),o=s(F),n=s(z),i=s(Z);function s(e){return e&&e.__esModule?e:{default:e}}}(E);class de extends h{constructor(e){super(),this.nodeQueueMap=new Map,this.actionRunningMap=new Map,this.flowModel=e.flowModel,this.recorder=e.recorder}addAction(e){const{executionId:t}=e;this.nodeQueueMap.has(t)||this.nodeQueueMap.set(t,[]);const o=this.nodeQueueMap.get(t);o&&o.push(e),console.log("this.nodeQueueMap---\x3e>>",this.nodeQueueMap)}pushActionToRunningMap(e){var t;const{executionId:o,actionId:n}=e;if(!this.actionRunningMap.has(o)){const e=new Map;this.actionRunningMap.set(o,e)}n&&(null===(t=this.actionRunningMap.get(o))||void 0===t||t.set(n,e))}removeActionFromRunningMap(e){const{executionId:t,actionId:o}=e;if(!o)return;const n=this.actionRunningMap.get(t);n&&n.delete(o)}saveActionResult(e){var t;null===(t=this.recorder)||void 0===t||t.addActionRecord(Object.assign({timestamp:Date.now()},e))}hasRunningAction(e){const t=this.actionRunningMap.get(e);return!!t&&(0!==t.size||(this.actionRunningMap.delete(e),!1))}run(t){const o=this.nodeQueueMap.get(t.executionId);for(;null==o?void 0:o.length;){const e=o.pop(),t=`action-${E.v4()}`,n=Object.assign(Object.assign({},e),{actionId:t});this.pushActionToRunningMap(n),this.exec(n)}this.hasRunningAction(t.executionId)||this.emit(n,Object.assign(Object.assign({},t),{status:e.FlowStatus.COMPLETED}))}next(e){e.outgoing&&e.outgoing.length>0&&e.outgoing.forEach((t=>{t.result&&this.addAction({executionId:e.executionId,nodeId:t.target})})),this.saveActionResult(e),this.removeActionFromRunningMap(e),this.run(e)}resume(e){return o(this,void 0,void 0,(function*(){const{executionId:t,actionId:o,nodeId:n}=e;this.pushActionToRunningMap({executionId:t,actionId:o,nodeId:n});const i=this.flowModel.createAction(n);yield null==i?void 0:i.resume(Object.assign(Object.assign({},e),{next:this.next.bind(this)}))}))}interrupted(e){this.emit(i,e)}error(e){this.emit(s,e)}exec(t){return o(this,void 0,void 0,(function*(){const{executionId:o,actionId:n,nodeId:i}=t,s=this.flowModel.createAction(i),r=yield null==s?void 0:s.execute({executionId:o,actionId:n,nodeId:i,next:this.next.bind(this)});if(r){const{nodeType:s,properties:d,outgoing:a,status:c,detail:u}=r,l={executionId:o,actionId:n,nodeId:i,nodeType:s,properties:d,outgoing:a,status:c,detail:u};(null==r?void 0:r.status)===e.FlowStatus.INTERRUPTED&&(this.interrupted(r),this.saveActionResult(l),this.removeActionFromRunningMap(t)),(null==r?void 0:r.status)===e.FlowStatus.ERROR&&(this.error(r),this.saveActionResult(l),this.removeActionFromRunningMap(t))}}))}}var ae,ce;!function(e){e[e.NONE_START_NODE=1e3]="NONE_START_NODE",e[e.NONE_NODE_ID=1001]="NONE_NODE_ID",e[e.NO_DOCUMENT_BODY=2001]="NO_DOCUMENT_BODY"}(ae||(ae={})),function(e){e[e.NONE_START_NODE_IN_DATA=2e3]="NONE_START_NODE_IN_DATA",e[e.START_NODE_INCOMING=2001]="START_NODE_INCOMING",e[e.EXPRESSION_EXEC_ERROR=3e3]="EXPRESSION_EXEC_ERROR"}(ce||(ce={}));const ue={[ae.NONE_START_NODE]:"未找到入度为0的节点",[ae.NONE_NODE_ID]:"流程数据中存在没有此节点",[ae.NO_DOCUMENT_BODY]:"找不到document.body, 请在DOM加载完成后再执行"};ce.NONE_START_NODE_IN_DATA,ce.START_NODE_INCOMING,ce.EXPRESSION_EXEC_ERROR;class le{constructor({nodeModelMap:e,recorder:t,context:o={},globalData:r={},startNodeType:d="StartNode"}){this.nodeConfigMap=new Map,this.startNodes=[],this.globalData={},this.nodeModelMap=e,this.executeList=[],this.executingInstance=null,this.context=o,this.globalData=r,this.startNodeType=d,this.isRunning=!1,this.scheduler=new de({flowModel:this,recorder:t}),this.scheduler.on(n,(e=>{this.onExecuteFinished(e)})),this.scheduler.on(i,(e=>{this.onExecuteFinished(e)})),this.scheduler.on(s,(e=>{this.onExecuteFinished(e)}))}load(e){const{nodes:t=[],edges:o=[]}=e;t.forEach((e=>{if(this.nodeModelMap.has(e.type)){const t={id:e.id,type:e.type,properties:e.properties,incoming:[],outgoing:[]};this.nodeConfigMap.set(e.id,t),e.type===this.startNodeType&&this.startNodes.push(t)}else console.warn(`未识别的节点类型:${e.type}`)})),o.forEach((e=>{const t=this.nodeConfigMap.get(e.sourceNodeId),o=this.nodeConfigMap.get(e.targetNodeId);t&&t.outgoing.push({id:e.id,properties:e.properties,target:e.targetNodeId}),o&&o.type!==this.startNodeType&&o.incoming.push({id:e.id,properties:e.properties,source:e.sourceNodeId})}))}createExecution(e){var t;if(this.executeList.push(e),e.actionId&&e.nodeId&&e.executionId)return void this.scheduler.resume({executionId:e.executionId,actionId:e.actionId,nodeId:e.nodeId,data:e.data});const o=`exec-${E.v4()}`;if(e.executionId=o,null==e?void 0:e.nodeId){const o=this.nodeConfigMap.get(e.nodeId);if(!o)return void(null===(t=null==e?void 0:e.onError)||void 0===t||t.call(e,new Error(`${n=ae.NONE_NODE_ID,`error[${n}]: ${ue[n]}`}(${e.nodeId})`)));this.startNodes=[o]}var n;this.startNodes.forEach((e=>{this.scheduler.addAction({executionId:o,nodeId:e.id})})),this.scheduler.run({executionId:o})}execute(e){return o(this,void 0,void 0,(function*(){this.createExecution(e)}))}resume(e){return o(this,void 0,void 0,(function*(){this.createExecution(e)}))}createAction(e){const t=this.nodeConfigMap.get(e);if(t){const e=this.nodeModelMap.get(t.type);if(!e)throw new Error("该 NodeModel 不存在,抛出异常");return new e({nodeConfig:t,globalData:this.globalData,context:this.context})}}setStartNodeType(e){this.startNodeType=e}updateGlobalData(e){return this.globalData=Object.assign(Object.assign({},this.globalData),e),this.globalData}onExecuteFinished(e){const t=this.executeList.findIndex((t=>t.executionId===e.executionId));if(t>-1){const{callback:o}=this.executeList[t];this.executeList.splice(t,1),null==o||o(e)}}}const he="LOGICFLOW_ENGINE_INSTANCES";class fe{constructor({instanceId:e}){this.instanceId=e,this.maxRecorder=100;const t=this.getItem(he)||[];if(-1===t.indexOf(e)&&t.push(e),t.length>100){const e=t.shift();this.clearInstance(e)}this.setItem(he,t)}setMaxRecorderNumber(e){this.maxRecorder=e}setItem(e,t){try{v.setItem(e,t)}catch(o){console.error("Ops, something wrong with storage.setItem !!!"),v.clear(),v.setItem(e,t)}}getItem(e){return v.getItem(e)}getExecutionActions(e){return o(this,void 0,void 0,(function*(){return this.getItem(e)}))}getExecutionList(){return o(this,void 0,void 0,(function*(){return this.getItem(this.instanceId)||[]}))}addExecution(e){const t=this.getItem(this.instanceId)||[];if(t.length>=this.maxRecorder){const e=t.shift();this.popExecution(e)}t.push(e),this.setItem(this.instanceId,t)}popExecution(e){(this.getItem(e)||[]).forEach((e=>{v.removeItem(e)})),v.removeItem(e)}pushActionToExecution(e,t){const o=this.getItem(e)||[];o.push(t),this.setItem(e,o)}addActionRecord(e){return o(this,void 0,void 0,(function*(){const{executionId:t,actionId:o}=e;(yield this.getExecutionActions(t))||this.addExecution(t),this.pushActionToExecution(t,o),this.setItem(o,e)}))}getActionRecord(e){return o(this,void 0,void 0,(function*(){return this.getItem(e)}))}clear(){this.clearInstance(this.instanceId)}clearInstance(e){(this.getItem(e)||[]).forEach((e=>{v.removeItem(e);(this.getItem(e)||[]).forEach((e=>{v.removeItem(e)}))})),v.removeItem(e)}}class pe{constructor(e){this.nodeModelMap=new Map,this.instanceId=`engine-${E.v4()}`,(null==e?void 0:e.debug)&&(this.recorder=new fe({instanceId:this.instanceId})),this.register({type:u.nodeTypeName,model:u}),this.register({type:l.nodeTypeName,model:l}),this.context=(null==e?void 0:e.context)||{}}register(e){this.nodeModelMap.set(e.type,e.model)}setCustomRecorder(e){this.recorder=e}load({graphData:e,startNodeType:t="StartNode",globalData:o={}}){this.graphData=e;const n=new le({nodeModelMap:this.nodeModelMap,recorder:this.recorder,context:this.context,globalData:o,startNodeType:t});return n.load(e),this.flowModel=n,n}execute(e){return o(this,void 0,void 0,(function*(){return new Promise(((t,o)=>{var n;let i=e;e||(i={}),null===(n=this.flowModel)||void 0===n||n.execute(Object.assign(Object.assign({},i),{callback:e=>{t(e)},onError:e=>{o(e)}}))}))}))}resume(e){return o(this,void 0,void 0,(function*(){return new Promise(((t,o)=>{var n;null===(n=this.flowModel)||void 0===n||n.resume(Object.assign(Object.assign({},e),{callback:e=>{t(e)},onError:e=>{o(e)}}))}))}))}getExecutionList(){var e;return o(this,void 0,void 0,(function*(){return yield null===(e=this.recorder)||void 0===e?void 0:e.getExecutionList()}))}getExecutionRecord(e){var t,n;return o(this,void 0,void 0,(function*(){const o=yield null===(t=this.recorder)||void 0===t?void 0:t.getExecutionActions(e);if(!o)return null;const i=[];for(let e=0;e<(null==o?void 0:o.length);e++){const t=o[e];this.recorder&&i.push(null===(n=this.recorder)||void 0===n?void 0:n.getActionRecord(t))}return Promise.all(i)}))}destroy(){var e;null===(e=this.recorder)||void 0===e||e.clear()}getGlobalData(){var e;return null===(e=this.flowModel)||void 0===e?void 0:e.globalData}setGlobalData(e){this.flowModel&&(this.flowModel.globalData=e)}updateGlobalData(e){this.flowModel&&Object.assign(this.flowModel.globalData,e)}}e.BASE_START_NODE="start",e.BaseNode=c,e.EVENT_INSTANCE_COMPLETE=n,e.EVENT_INSTANCE_ERROR=s,e.EVENT_INSTANCE_INTERRUPTED=i,e.Engine=pe,e.Recorder=fe,e.StartNode=u,e.TaskNode=l,e.default=pe,Object.defineProperty(e,"__esModule",{value:!0})}));
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("node:vm")):"function"==typeof define&&define.amd?define(["exports","node:vm"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).Engine={},e.vm)}(this,(function(e,t){"use strict";function o(e,t,o,n){return new(o||(o=Promise))((function(i,s){function r(e){try{a(n.next(e))}catch(e){s(e)}}function d(e){try{a(n.throw(e))}catch(e){s(e)}}function a(e){var t;e.done?i(e.value):(t=e.value,t instanceof o?t:new o((function(e){e(t)}))).then(r,d)}a((n=n.apply(e,t||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;const n="instance:complete",i="instance:interrupted",s="instance:error";var r,d;e.FlowStatus=void 0,(r=e.FlowStatus||(e.FlowStatus={})).COMPLETED="completed",r.INTERRUPTED="interrupted",r.RUNNING="running",r.PENDING="pending",r.ERROR="error",e.ActionStatus=void 0,(d=e.ActionStatus||(e.ActionStatus={})).SUCCESS="success",d.ERROR="error",d.INTERRUPTED="interrupted";const a=(e,n)=>o(void 0,void 0,void 0,(function*(){const i=yield((e,n={})=>o(void 0,void 0,void 0,(function*(){const o=t.createContext(n);return t.runInContext(e,o),o})))(e,n);return i}));class c{constructor({nodeConfig:e,context:t,globalData:o}){const{outgoing:n,incoming:i,id:s,type:r,properties:d}=e;this.baseType="base",this.outgoing=n,this.incoming=i,this.nodeId=s,this.type=r,this.properties=d,this.context=t,this.globalData=o}action(e){return o(this,void 0,void 0,(function*(){console.log("action param ---\x3e>>",e)}))}onResume(e){return o(this,void 0,void 0,(function*(){console.log("onResume params ---\x3e>>",e)}))}isPass(e){return o(this,void 0,void 0,(function*(){if(!e)return!0;const{conditionExpression:t}=e;if(!t)return!0;try{return yield a(`\n const isPassResult = (${t})\n return isPassResult\n `,Object.assign({},this.globalData))}catch(e){return!1}}))}getOutgoing(){return o(this,void 0,void 0,(function*(){const e=[],t=[];for(const e of this.outgoing){const{properties:o}=e;t.push(this.isPass(o))}return(yield Promise.all(t)).forEach(((t,o)=>{const n=this.outgoing[o];n.result=t,e.push(n)})),e}))}execute(t){return o(this,void 0,void 0,(function*(){const{executionId:o,actionId:n}=t,i=yield this.action({nodeId:this.nodeId,executionId:o,actionId:n}),s=i?i.status:"success";if(s===e.ActionStatus.SUCCESS){const s=yield this.getOutgoing(),r=i?i.detail:{};t.next({status:e.ActionStatus.SUCCESS,detail:r,nodeId:this.nodeId,nodeType:this.type,properties:this.properties,executionId:o,actionId:n,outgoing:s})}return{status:s,detail:null==i?void 0:i.detail,executionId:o,actionId:n,nodeId:this.nodeId,nodeType:this.type,properties:this.properties,outgoing:[]}}))}resume(t){return o(this,void 0,void 0,(function*(){const o=yield this.getOutgoing();yield this.onResume({executionId:t.executionId,actionId:t.actionId,nodeId:t.nodeId,data:t.data}),t.next({executionId:t.executionId,actionId:t.actionId,nodeId:this.nodeId,nodeType:this.type,properties:this.properties,outgoing:o,status:e.ActionStatus.SUCCESS})}))}}c.nodeTypeName="BaseNode";class u extends c{constructor(){super(...arguments),this.baseType="start"}}u.nodeTypeName="StartNode";class l extends c{constructor(){super(...arguments),this.baseType="task"}}l.nodeTypeName="TaskNode";class h{constructor(){this._events={}}on(e,t,o){e=e.trim(),this._events[e]||(this._events[e]=[]),this._events[e].push({callback:t,once:!!o})}off(e,t){if(e||(this._events={}),t){const o=this._events[e]||[];let{length:n}=o;for(let e=0;e<n;e++)o[e].callback===t&&(o.splice(e,1),n--,e--);0===o.length&&delete this._events[e]}else delete this._events[e]}emit(e,t){(o=>{let{length:n}=o;for(let i=0;i<n;i++){if(!o[i])continue;const{callback:s,once:r}=o[i];r&&(o.splice(i,1),0===o.length&&delete this._events[e],n--,i--),s.apply(this,[t])}})(this._events[e]||[])}getEvents(){return this._events}}const f="object"==typeof window&&window.window===window,p="object"==typeof global&&global.global===global,g=f?window:"object"==typeof self&&self.self===self?self:p?global:"object"==typeof globalThis?globalThis:{eval:()=>{}};if(!g.sessionStorage){const e={data:{},setItem(t,o){e.data[t]=o},getItem:t=>e.data[t],removeItem(t){delete e.data[t]},clear(){e.data={}}};g.sessionStorage=e}var v={setItem(e,t){"object"==typeof t&&(t=JSON.stringify(t)),g.sessionStorage.setItem(e,t)},getItem(e){const t=g.sessionStorage.getItem(e);try{return JSON.parse(t)}catch(e){return t}},removeItem(e){g.sessionStorage.removeItem(e)},clear(){g.sessionStorage.clear()}};function I(e){var t=e.default;if("function"==typeof t){var o=function e(){if(this instanceof e){var o=[null];return o.push.apply(o,arguments),new(Function.bind.apply(t,o))}return t.apply(this,arguments)};o.prototype=t.prototype}else o={};return Object.defineProperty(o,"__esModule",{value:!0}),Object.keys(e).forEach((function(t){var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(o,t,n.get?n:{enumerable:!0,get:function(){return e[t]}})})),o}var E={},m={},y={},_=I(Object.freeze({__proto__:null,default:{}}));Object.defineProperty(y,"__esModule",{value:!0}),y.default=function(){return b.default.randomFillSync(x)};var N,b=(N=_)&&N.__esModule?N:{default:N};const x=new Uint8Array(16);var M={};Object.defineProperty(M,"__esModule",{value:!0}),M.default=void 0;const O=[];for(let e=0;e<256;++e)O.push((e+256).toString(16).substr(1));var R=function(e,t){const o=t||0;return(O[e[o+0]]+O[e[o+1]]+O[e[o+2]]+O[e[o+3]]+"-"+O[e[o+4]]+O[e[o+5]]+"-"+O[e[o+6]]+O[e[o+7]]+"-"+O[e[o+8]]+O[e[o+9]]+"-"+O[e[o+10]]+O[e[o+11]]+O[e[o+12]]+O[e[o+13]]+O[e[o+14]]+O[e[o+15]]).toLowerCase()};M.default=R,Object.defineProperty(m,"__esModule",{value:!0}),m.default=void 0;var T=S(y),A=S(M);function S(e){return e&&e.__esModule?e:{default:e}}let D,w,j=0,C=0;var P=function(e,t,o){let n=t&&o||0;const i=t||new Array(16);let s=(e=e||{}).node||D,r=void 0!==e.clockseq?e.clockseq:w;if(null==s||null==r){const t=e.random||(e.rng||T.default)();null==s&&(s=D=[1|t[0],t[1],t[2],t[3],t[4],t[5]]),null==r&&(r=w=16383&(t[6]<<8|t[7]))}let d=void 0!==e.msecs?e.msecs:Date.now(),a=void 0!==e.nsecs?e.nsecs:C+1;const c=d-j+(a-C)/1e4;if(c<0&&void 0===e.clockseq&&(r=r+1&16383),(c<0||d>j)&&void 0===e.nsecs&&(a=0),a>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");j=d,C=a,w=r,d+=122192928e5;const u=(1e4*(268435455&d)+a)%4294967296;i[n++]=u>>>24&255,i[n++]=u>>>16&255,i[n++]=u>>>8&255,i[n++]=255&u;const l=d/4294967296*1e4&268435455;i[n++]=l>>>8&255,i[n++]=255&l,i[n++]=l>>>24&15|16,i[n++]=l>>>16&255,i[n++]=r>>>8|128,i[n++]=255&r;for(let e=0;e<6;++e)i[n+e]=s[e];return t||(0,A.default)(i)};m.default=P;var F={},L={};Object.defineProperty(L,"__esModule",{value:!0}),L.default=function(e,t,o){function n(e,n,i,s){if("string"==typeof e&&(e=function(e){e=unescape(encodeURIComponent(e));const t=[];for(let o=0;o<e.length;++o)t.push(e.charCodeAt(o));return t}(e)),"string"==typeof n&&(n=function(e){const t=[];return e.replace(/[a-fA-F0-9]{2}/g,(function(e){t.push(parseInt(e,16))})),t}(n)),!Array.isArray(e))throw TypeError("value must be an array of bytes");if(!Array.isArray(n)||16!==n.length)throw TypeError("namespace must be uuid string or an Array of 16 byte values");const r=o(n.concat(e));if(r[6]=15&r[6]|t,r[8]=63&r[8]|128,i){s=s||0;for(let e=0;e<16;++e)i[s+e]=r[e];return i}return(0,U.default)(r)}try{n.name=e}catch(e){}return n.DNS=k,n.URL=G,n},L.URL=L.DNS=void 0;var U=function(e){return e&&e.__esModule?e:{default:e}}(M);const k="6ba7b810-9dad-11d1-80b4-00c04fd430c8";L.DNS=k;const G="6ba7b811-9dad-11d1-80b4-00c04fd430c8";L.URL=G;var B={};Object.defineProperty(B,"__esModule",{value:!0}),B.default=void 0;var $=function(e){return e&&e.__esModule?e:{default:e}}(_);var Q=function(e){return Array.isArray(e)?e=Buffer.from(e):"string"==typeof e&&(e=Buffer.from(e,"utf8")),$.default.createHash("md5").update(e).digest()};B.default=Q,Object.defineProperty(F,"__esModule",{value:!0}),F.default=void 0;var X=V(L),q=V(B);function V(e){return e&&e.__esModule?e:{default:e}}var Y=(0,X.default)("v3",48,q.default);F.default=Y;var z={};Object.defineProperty(z,"__esModule",{value:!0}),z.default=void 0;var H=W(y),J=W(M);function W(e){return e&&e.__esModule?e:{default:e}}var K=function(e,t,o){const n=(e=e||{}).random||(e.rng||H.default)();if(n[6]=15&n[6]|64,n[8]=63&n[8]|128,t){o=o||0;for(let e=0;e<16;++e)t[o+e]=n[e];return t}return(0,J.default)(n)};z.default=K;var Z={},ee={};Object.defineProperty(ee,"__esModule",{value:!0}),ee.default=void 0;var te=function(e){return e&&e.__esModule?e:{default:e}}(_);var oe=function(e){return Array.isArray(e)?e=Buffer.from(e):"string"==typeof e&&(e=Buffer.from(e,"utf8")),te.default.createHash("sha1").update(e).digest()};ee.default=oe,Object.defineProperty(Z,"__esModule",{value:!0}),Z.default=void 0;var ne=se(L),ie=se(ee);function se(e){return e&&e.__esModule?e:{default:e}}var re=(0,ne.default)("v5",80,ie.default);Z.default=re,function(e){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"v1",{enumerable:!0,get:function(){return t.default}}),Object.defineProperty(e,"v3",{enumerable:!0,get:function(){return o.default}}),Object.defineProperty(e,"v4",{enumerable:!0,get:function(){return n.default}}),Object.defineProperty(e,"v5",{enumerable:!0,get:function(){return i.default}});var t=s(m),o=s(F),n=s(z),i=s(Z);function s(e){return e&&e.__esModule?e:{default:e}}}(E);class de extends h{constructor(e){super(),this.nodeQueueMap=new Map,this.actionRunningMap=new Map,this.flowModel=e.flowModel,this.recorder=e.recorder}addAction(e){const{executionId:t}=e;this.nodeQueueMap.has(t)||this.nodeQueueMap.set(t,[]);const o=this.nodeQueueMap.get(t);o&&o.push(e),console.log("this.nodeQueueMap---\x3e>>",this.nodeQueueMap)}pushActionToRunningMap(e){var t;const{executionId:o,actionId:n}=e;if(!this.actionRunningMap.has(o)){const e=new Map;this.actionRunningMap.set(o,e)}n&&(null===(t=this.actionRunningMap.get(o))||void 0===t||t.set(n,e))}removeActionFromRunningMap(e){const{executionId:t,actionId:o}=e;if(!o)return;const n=this.actionRunningMap.get(t);n&&n.delete(o)}saveActionResult(e){var t;null===(t=this.recorder)||void 0===t||t.addActionRecord(Object.assign({timestamp:Date.now()},e))}hasRunningAction(e){const t=this.actionRunningMap.get(e);return!!t&&(0!==t.size||(this.actionRunningMap.delete(e),!1))}run(t){const o=this.nodeQueueMap.get(t.executionId);for(;null==o?void 0:o.length;){const e=o.pop(),t=`action-${E.v4()}`,n=Object.assign(Object.assign({},e),{actionId:t});this.pushActionToRunningMap(n),this.exec(n)}this.hasRunningAction(t.executionId)||this.emit(n,Object.assign(Object.assign({},t),{status:e.FlowStatus.COMPLETED}))}next(e){e.outgoing&&e.outgoing.length>0&&e.outgoing.forEach((t=>{t.result&&this.addAction({executionId:e.executionId,nodeId:t.target})})),this.saveActionResult(e),this.removeActionFromRunningMap(e),this.run(e)}resume(e){return o(this,void 0,void 0,(function*(){const{executionId:t,actionId:o,nodeId:n}=e;this.pushActionToRunningMap({executionId:t,actionId:o,nodeId:n});const i=this.flowModel.createAction(n);yield null==i?void 0:i.resume(Object.assign(Object.assign({},e),{next:this.next.bind(this)}))}))}interrupted(e){this.emit(i,e)}error(e){this.emit(s,e)}exec(t){return o(this,void 0,void 0,(function*(){const{executionId:o,actionId:n,nodeId:i}=t,s=this.flowModel.createAction(i),r=yield null==s?void 0:s.execute({executionId:o,actionId:n,nodeId:i,next:this.next.bind(this)});if(r){const{nodeType:s,properties:d,outgoing:a,status:c,detail:u}=r,l={executionId:o,actionId:n,nodeId:i,nodeType:s,properties:d,outgoing:a,status:c,detail:u};(null==r?void 0:r.status)===e.FlowStatus.INTERRUPTED&&(this.interrupted(r),this.saveActionResult(l),this.removeActionFromRunningMap(t)),(null==r?void 0:r.status)===e.FlowStatus.ERROR&&(this.error(r),this.saveActionResult(l),this.removeActionFromRunningMap(t))}}))}}var ae,ce;!function(e){e[e.NONE_START_NODE=1e3]="NONE_START_NODE",e[e.NONE_NODE_ID=1001]="NONE_NODE_ID",e[e.NO_DOCUMENT_BODY=2001]="NO_DOCUMENT_BODY"}(ae||(ae={})),function(e){e[e.NONE_START_NODE_IN_DATA=2e3]="NONE_START_NODE_IN_DATA",e[e.START_NODE_INCOMING=2001]="START_NODE_INCOMING",e[e.EXPRESSION_EXEC_ERROR=3e3]="EXPRESSION_EXEC_ERROR"}(ce||(ce={}));const ue={[ae.NONE_START_NODE]:"未找到入度为0的节点",[ae.NONE_NODE_ID]:"流程数据中存在没有此节点",[ae.NO_DOCUMENT_BODY]:"找不到document.body, 请在DOM加载完成后再执行"};ce.NONE_START_NODE_IN_DATA,ce.START_NODE_INCOMING,ce.EXPRESSION_EXEC_ERROR;class le{constructor({nodeModelMap:e,recorder:t,context:o={},globalData:r={},startNodeType:d="StartNode"}){this.nodeConfigMap=new Map,this.startNodes=[],this.globalData={},this.nodeModelMap=e,this.executeList=[],this.executingInstance=null,this.context=o,this.globalData=r,this.startNodeType=d,this.isRunning=!1,this.scheduler=new de({flowModel:this,recorder:t}),this.scheduler.on(n,(e=>{this.onExecuteFinished(e)})),this.scheduler.on(i,(e=>{this.onExecuteFinished(e)})),this.scheduler.on(s,(e=>{this.onExecuteFinished(e)}))}load(e){const{nodes:t=[],edges:o=[]}=e;t.forEach((e=>{if(this.nodeModelMap.has(e.type)){const t={id:e.id,type:e.type,properties:e.properties,incoming:[],outgoing:[]};this.nodeConfigMap.set(e.id,t),e.type===this.startNodeType&&this.startNodes.push(t)}else console.warn(`未识别的节点类型:${e.type}`)})),o.forEach((e=>{const t=this.nodeConfigMap.get(e.sourceNodeId),o=this.nodeConfigMap.get(e.targetNodeId);t&&t.outgoing.push({id:e.id,properties:e.properties,target:e.targetNodeId}),o&&o.type!==this.startNodeType&&o.incoming.push({id:e.id,properties:e.properties,source:e.sourceNodeId})}))}createExecution(e){var t;if(this.executeList.push(e),e.actionId&&e.nodeId&&e.executionId)return void this.scheduler.resume({executionId:e.executionId,actionId:e.actionId,nodeId:e.nodeId,data:e.data});const o=`exec-${E.v4()}`;if(e.executionId=o,null==e?void 0:e.nodeId){const o=this.nodeConfigMap.get(e.nodeId);if(!o)return void(null===(t=null==e?void 0:e.onError)||void 0===t||t.call(e,new Error(`${n=ae.NONE_NODE_ID,`error[${n}]: ${ue[n]}`}(${e.nodeId})`)));this.startNodes=[o]}var n;this.startNodes.forEach((e=>{this.scheduler.addAction({executionId:o,nodeId:e.id})})),this.scheduler.run({executionId:o})}execute(e){return o(this,void 0,void 0,(function*(){this.createExecution(e)}))}resume(e){return o(this,void 0,void 0,(function*(){this.createExecution(e)}))}createAction(e){const t=this.nodeConfigMap.get(e);if(t){const e=this.nodeModelMap.get(t.type);if(!e)throw new Error("该 NodeModel 不存在,抛出异常");return new e({nodeConfig:t,globalData:this.globalData,context:this.context})}}setStartNodeType(e){this.startNodeType=e}updateGlobalData(e){return this.globalData=Object.assign(Object.assign({},this.globalData),e),this.globalData}onExecuteFinished(e){const t=this.executeList.findIndex((t=>t.executionId===e.executionId));if(t>-1){const{callback:o}=this.executeList[t];this.executeList.splice(t,1),null==o||o(e)}}}const he="LOGICFLOW_ENGINE_INSTANCES";class fe{constructor({instanceId:e}){this.instanceId=e,this.maxRecorder=100;const t=this.getItem(he)||[];if(-1===t.indexOf(e)&&t.push(e),t.length>100){const e=t.shift();this.clearInstance(e)}this.setItem(he,t)}setMaxRecorderNumber(e){this.maxRecorder=e}setItem(e,t){try{v.setItem(e,t)}catch(o){console.error("Ops, something wrong with storage.setItem !!!"),v.clear(),v.setItem(e,t)}}getItem(e){return v.getItem(e)}getExecutionActions(e){return o(this,void 0,void 0,(function*(){return this.getItem(e)}))}getExecutionList(){return o(this,void 0,void 0,(function*(){return this.getItem(this.instanceId)||[]}))}addExecution(e){const t=this.getItem(this.instanceId)||[];if(t.length>=this.maxRecorder){const e=t.shift();this.popExecution(e)}t.push(e),this.setItem(this.instanceId,t)}popExecution(e){(this.getItem(e)||[]).forEach((e=>{v.removeItem(e)})),v.removeItem(e)}pushActionToExecution(e,t){const o=this.getItem(e)||[];o.push(t),this.setItem(e,o)}addActionRecord(e){return o(this,void 0,void 0,(function*(){const{executionId:t,actionId:o}=e;(yield this.getExecutionActions(t))||this.addExecution(t),this.pushActionToExecution(t,o),this.setItem(o,e)}))}getActionRecord(e){return o(this,void 0,void 0,(function*(){return this.getItem(e)}))}clear(){this.clearInstance(this.instanceId)}clearInstance(e){(this.getItem(e)||[]).forEach((e=>{v.removeItem(e);(this.getItem(e)||[]).forEach((e=>{v.removeItem(e)}))})),v.removeItem(e)}}class pe{constructor(e){this.nodeModelMap=new Map,this.instanceId=`engine-${E.v4()}`,(null==e?void 0:e.debug)&&(this.recorder=new fe({instanceId:this.instanceId})),this.register({type:u.nodeTypeName,model:u}),this.register({type:l.nodeTypeName,model:l}),this.context=(null==e?void 0:e.context)||{}}register(e){this.nodeModelMap.set(e.type,e.model)}setCustomRecorder(e){this.recorder=e}load({graphData:e,startNodeType:t="StartNode",globalData:o={}}){this.graphData=e;const n=new le({nodeModelMap:this.nodeModelMap,recorder:this.recorder,context:this.context,globalData:o,startNodeType:t});return n.load(e),this.flowModel=n,n}execute(e){return o(this,void 0,void 0,(function*(){return new Promise(((t,o)=>{var n;let i=e;e||(i={}),null===(n=this.flowModel)||void 0===n||n.execute(Object.assign(Object.assign({},i),{callback:e=>{t(e)},onError:e=>{o(e)}}))}))}))}resume(e){return o(this,void 0,void 0,(function*(){return new Promise(((t,o)=>{var n;null===(n=this.flowModel)||void 0===n||n.resume(Object.assign(Object.assign({},e),{callback:e=>{t(e)},onError:e=>{o(e)}}))}))}))}getExecutionList(){var e;return o(this,void 0,void 0,(function*(){return yield null===(e=this.recorder)||void 0===e?void 0:e.getExecutionList()}))}getExecutionRecord(e){var t,n;return o(this,void 0,void 0,(function*(){const o=yield null===(t=this.recorder)||void 0===t?void 0:t.getExecutionActions(e);if(!o)return null;const i=[];for(let e=0;e<(null==o?void 0:o.length);e++){const t=o[e];this.recorder&&i.push(null===(n=this.recorder)||void 0===n?void 0:n.getActionRecord(t))}return Promise.all(i)}))}destroy(){var e;null===(e=this.recorder)||void 0===e||e.clear()}getGlobalData(){var e;return null===(e=this.flowModel)||void 0===e?void 0:e.globalData}setGlobalData(e){this.flowModel&&(this.flowModel.globalData=e)}updateGlobalData(e){this.flowModel&&Object.assign(this.flowModel.globalData,e)}}e.BASE_START_NODE="start",e.BaseNode=c,e.EVENT_INSTANCE_COMPLETE=n,e.EVENT_INSTANCE_ERROR=s,e.EVENT_INSTANCE_INTERRUPTED=i,e.Engine=pe,e.Recorder=fe,e.StartNode=u,e.TaskNode=l,e.default=pe,Object.defineProperty(e,"__esModule",{value:!0})}));
2
2
  //# sourceMappingURL=index.js.map
package/es/nodes/base.js CHANGED
@@ -55,8 +55,10 @@ class BaseNode {
55
55
  try {
56
56
  // bug:uuid 创建的 NodeId 为 xxxx-xxxx-xxxx-zzzz 格式,eval 执行时会将 - 识别为数学减号,导致执行报错
57
57
  // 解决方案: 赋值变量直接命名为 isPassResult, 因为每次执行 getExpressionResult 时,都会重新射程一个 context
58
- const result = yield getExpressionResult(`isPassResult = (${conditionExpression})`, Object.assign({}, this.globalData));
59
- return result.isPassResult;
58
+ return yield getExpressionResult(`
59
+ const isPassResult = (${conditionExpression})
60
+ return isPassResult
61
+ `, Object.assign({}, this.globalData));
60
62
  }
61
63
  catch (error) {
62
64
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/nodes/base.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAQjD,MAAa,QAAQ;IA4BnB,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAkB;QAC7D,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,UAAU,CAAA;QAC/D,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAA;QACtB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAA;QAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAE5B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;IAC9B,CAAC;IAED;;;;;;;;;OASG;IACU,MAAM,CACjB,KAA0B;;YAE1B,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAA;YACzC,OAAO,SAAS,CAAA;QAClB,CAAC;KAAA;IAED;;;;;;OAMG;IACU,QAAQ,CAAC,MAA0B;;YAC9C,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAA;YAC7C,OAAO,SAAS,CAAA;QAClB,CAAC;KAAA;IAED;;OAEG;IACW,MAAM,CAAC,UAAoC;;YACvD,IAAI,CAAC,UAAU;gBAAE,OAAO,IAAI,CAAA;YAE5B,MAAM,EAAE,mBAAmB,EAAE,GAAG,UAAU,CAAA;YAC1C,IAAI,CAAC,mBAAmB;gBAAE,OAAO,IAAI,CAAA;YAErC,IAAI;gBACF,2EAA2E;gBAC3E,8EAA8E;gBAC9E,MAAM,MAAM,GAAG,MAAM,mBAAmB,CACtC,mBAAmB,mBAAmB,GAAG,oBAEpC,IAAI,CAAC,UAAU,EAErB,CAAA;gBACD,OAAO,MAAM,CAAC,YAAY,CAAA;aAC3B;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,KAAK,CAAA;aACb;QACH,CAAC;KAAA;IAED;;OAEG;IACW,WAAW;;YACvB,MAAM,QAAQ,GAA8B,EAAE,CAAA;YAC9C,MAAM,WAAW,GAAQ,EAAE,CAAA;YAC3B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;gBAChC,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAA;gBAC3B,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAA;aAC1C;YAED,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;YAC7C,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;gBAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;gBAChC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAA;gBACjB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACpB,CAAC,CAAC,CAAA;YACF,OAAO,QAAQ,CAAA;QACjB,CAAC;KAAA;IAED;;OAEG;IACU,OAAO,CAClB,MAAwB;;YAExB,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAA;YACxC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC;gBAC5B,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,WAAW;gBACX,QAAQ;aACT,CAAC,CAAA;YACF,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAA;YAE3C,IAAI,MAAM,KAAK,YAAY,CAAC,OAAO,EAAE;gBACnC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAA;gBACzC,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAA;gBACpC,MAAM,CAAC,IAAI,CAAC;oBACV,MAAM,EAAE,YAAY,CAAC,OAAO;oBAC5B,MAAM;oBACN,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,QAAQ,EAAE,IAAI,CAAC,IAAI;oBACnB,UAAU,EAAE,IAAI,CAAC,UAAU;oBAC3B,WAAW;oBACX,QAAQ;oBACR,QAAQ;iBACT,CAAC,CAAA;aACH;YAED,OAAO;gBACL,MAAM;gBACN,MAAM,EAAE,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,MAAM;gBACnB,WAAW;gBACX,QAAQ;gBACR,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,QAAQ,EAAE,IAAI,CAAC,IAAI;gBACnB,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,QAAQ,EAAE,EAAE;aACb,CAAA;QACH,CAAC;KAAA;IAEY,MAAM,CAAC,MAA8B;;YAChD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAA;YACzC,MAAM,IAAI,CAAC,QAAQ,CAAC;gBAClB,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,IAAI,EAAE,MAAM,CAAC,IAAI;aAClB,CAAC,CAAA;YAEF,MAAM,CAAC,IAAI,CAAC;gBACV,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,QAAQ,EAAE,IAAI,CAAC,IAAI;gBACnB,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,QAAQ;gBACR,MAAM,EAAE,YAAY,CAAC,OAAO;aAC7B,CAAC,CAAA;YACF,OAAO,SAAS,CAAA;QAClB,CAAC;KAAA;;AA5KM,qBAAY,GAAG,UAAU,CAAA;SAFrB,QAAQ;AA+NrB,eAAe,QAAQ,CAAA"}
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/nodes/base.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1 @@
1
- declare const createContext: (globalData: Record<string, unknown>) => Window | null;
2
- declare const runInContext: (code: string, context: any) => void;
3
- declare const runInBrowserContext: (code: string, globalData?: {}) => Promise<any>;
4
- export { createContext, runInContext, runInBrowserContext };
1
+ export declare const runInBrowserContext: (code: string, globalData?: {}) => Promise<any>;
@@ -1,44 +1,66 @@
1
+ // import {
2
+ // ErrorCode,
3
+ // getErrorMsg,
4
+ // getWarningMsg,
5
+ // WarningCode,
6
+ // } from '../../constant/logCode'
7
+ //
8
+ // const createContext = (globalData: Record<string, unknown>) => {
9
+ // const iframe = document.createElement('iframe')
10
+ // iframe.style.display = 'none'
11
+ // if (!document || !document.body) {
12
+ // console.error(getErrorMsg(ErrorCode.NO_DOCUMENT_BODY))
13
+ // }
14
+ // document.body.appendChild(iframe)
15
+ // const iframeWindow = iframe.contentWindow
16
+ // if (iframeWindow) {
17
+ // // TODO: 确认是否需要该代码,parent 置为空是为了解决什么问题
18
+ // // @ts-ignore
19
+ // ;(iframeWindow!.parent as any) = null
20
+ // Object.keys(globalData).forEach((key) => {
21
+ // iframeWindow[key] = globalData[key]
22
+ // })
23
+ // }
24
+ // return iframeWindow
25
+ // }
26
+ //
27
+ // const runInContext = (code: string, context: any) => {
28
+ // try {
29
+ // const iframeEval = context.eval
30
+ // iframeEval.call(context, code)
31
+ // console.log('context --->>> ===>>>', context)
32
+ // if (context.frameElement) {
33
+ // document.body.removeChild(context.frameElement)
34
+ // }
35
+ // } catch (e) {
36
+ // console.warn(getWarningMsg(WarningCode.EXPRESSION_EXEC_ERROR), {
37
+ // code,
38
+ // context,
39
+ // e,
40
+ // })
41
+ // }
42
+ // }
43
+ //
44
+ // const runInBrowserContext = async (
45
+ // code: string,
46
+ // globalData = {},
47
+ // ): Promise<any> => {
48
+ // const context = createContext(globalData)
49
+ // runInContext(code, context)
50
+ // return context
51
+ // }
52
+ //
53
+ // export { createContext, runInContext, runInBrowserContext }
1
54
  import { __awaiter } from "tslib";
2
- import { ErrorCode, getErrorMsg, getWarningMsg, WarningCode, } from '../../constant/logCode';
3
- const createContext = (globalData) => {
4
- const iframe = document.createElement('iframe');
5
- iframe.style.display = 'none';
6
- if (!document || !document.body) {
7
- console.error(getErrorMsg(ErrorCode.NO_DOCUMENT_BODY));
8
- }
9
- document.body.appendChild(iframe);
10
- const iframeWindow = iframe.contentWindow;
11
- if (iframeWindow) {
12
- // TODO: 确认是否需要该代码,parent 置为空是为了解决什么问题
13
- // @ts-ignore
14
- ;
15
- iframeWindow.parent = null;
16
- Object.keys(globalData).forEach((key) => {
17
- iframeWindow[key] = globalData[key];
18
- });
19
- }
20
- return iframeWindow;
21
- };
22
- const runInContext = (code, context) => {
55
+ import Sandbox from '@nyariv/sandboxjs';
56
+ export const runInBrowserContext = (code, globalData = {}) => __awaiter(void 0, void 0, void 0, function* () {
23
57
  try {
24
- const iframeEval = context.eval;
25
- iframeEval.call(context, code);
26
- if (context.iframeElement) {
27
- document.body.removeChild(context.iframeElement);
28
- }
58
+ const sandbox = new Sandbox();
59
+ const exec = sandbox.compile(code);
60
+ return yield exec(globalData).run();
29
61
  }
30
62
  catch (e) {
31
- console.warn(getWarningMsg(WarningCode.EXPRESSION_EXEC_ERROR), {
32
- code,
33
- context,
34
- e,
35
- });
63
+ console.log('runInBrowserContext error --->>>', e);
36
64
  }
37
- };
38
- const runInBrowserContext = (code, globalData = {}) => __awaiter(void 0, void 0, void 0, function* () {
39
- const context = createContext(globalData);
40
- runInContext(code, context);
41
- return context;
42
65
  });
43
- export { createContext, runInContext, runInBrowserContext };
44
66
  //# sourceMappingURL=browserVm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"browserVm.js","sourceRoot":"","sources":["../../../src/platform/browser/browserVm.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,SAAS,EACT,WAAW,EACX,aAAa,EACb,WAAW,GACZ,MAAM,wBAAwB,CAAA;AAE/B,MAAM,aAAa,GAAG,CAAC,UAAmC,EAAE,EAAE;IAC5D,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;IAC/C,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAA;IAC7B,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;QAC/B,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAA;KACvD;IACD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;IACjC,MAAM,YAAY,GAAG,MAAM,CAAC,aAAa,CAAA;IACzC,IAAI,YAAY,EAAE;QAChB,sCAAsC;QACtC,aAAa;QACb,CAAC;QAAC,YAAa,CAAC,MAAc,GAAG,IAAI,CAAA;QACrC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACtC,YAAY,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAA;QACrC,CAAC,CAAC,CAAA;KACH;IACD,OAAO,YAAY,CAAA;AACrB,CAAC,CAAA;AAED,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,OAAO,EAAE,EAAE;IAC7C,IAAI;QACF,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAA;QAC/B,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QAC9B,IAAI,OAAO,CAAC,aAAa,EAAE;YACzB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;SACjD;KACF;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,qBAAqB,CAAC,EAAE;YAC7D,IAAI;YACJ,OAAO;YACP,CAAC;SACF,CAAC,CAAA;KACH;AACH,CAAC,CAAA;AAED,MAAM,mBAAmB,GAAG,CAC1B,IAAY,EACZ,UAAU,GAAG,EAAE,EACD,EAAE;IAChB,MAAM,OAAO,GAAG,aAAa,CAAC,UAAU,CAAC,CAAA;IACzC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IAC3B,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA,CAAA;AAED,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,mBAAmB,EAAE,CAAA"}
1
+ {"version":3,"file":"browserVm.js","sourceRoot":"","sources":["../../../src/platform/browser/browserVm.ts"],"names":[],"mappings":"AAAA,WAAW;AACX,eAAe;AACf,iBAAiB;AACjB,mBAAmB;AACnB,iBAAiB;AACjB,kCAAkC;AAClC,EAAE;AACF,mEAAmE;AACnE,oDAAoD;AACpD,kCAAkC;AAClC,uCAAuC;AACvC,6DAA6D;AAC7D,MAAM;AACN,sCAAsC;AACtC,8CAA8C;AAC9C,wBAAwB;AACxB,6CAA6C;AAC7C,oBAAoB;AACpB,4CAA4C;AAC5C,iDAAiD;AACjD,4CAA4C;AAC5C,SAAS;AACT,MAAM;AACN,wBAAwB;AACxB,IAAI;AACJ,EAAE;AACF,yDAAyD;AACzD,UAAU;AACV,sCAAsC;AACtC,qCAAqC;AACrC,oDAAoD;AACpD,kCAAkC;AAClC,wDAAwD;AACxD,QAAQ;AACR,kBAAkB;AAClB,uEAAuE;AACvE,cAAc;AACd,iBAAiB;AACjB,WAAW;AACX,SAAS;AACT,MAAM;AACN,IAAI;AACJ,EAAE;AACF,sCAAsC;AACtC,kBAAkB;AAClB,qBAAqB;AACrB,uBAAuB;AACvB,8CAA8C;AAC9C,gCAAgC;AAChC,mBAAmB;AACnB,IAAI;AACJ,EAAE;AACF,8DAA8D;;AAE9D,OAAO,OAAO,MAAM,mBAAmB,CAAC;AAExC,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,IAAY,EACZ,UAAU,GAAG,EAAE,EACD,EAAE;IAChB,IAAI;QACF,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACnC,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,EAAE,CAAC;KACrC;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,CAAC,GAAG,CAAC,kCAAkC,EAAE,CAAC,CAAC,CAAC;KACpD;AACH,CAAC,CAAA,CAAA"}
package/lib/nodes/base.js CHANGED
@@ -58,8 +58,10 @@ class BaseNode {
58
58
  try {
59
59
  // bug:uuid 创建的 NodeId 为 xxxx-xxxx-xxxx-zzzz 格式,eval 执行时会将 - 识别为数学减号,导致执行报错
60
60
  // 解决方案: 赋值变量直接命名为 isPassResult, 因为每次执行 getExpressionResult 时,都会重新射程一个 context
61
- const result = yield (0, platform_1.getExpressionResult)(`isPassResult = (${conditionExpression})`, Object.assign({}, this.globalData));
62
- return result.isPassResult;
61
+ return yield (0, platform_1.getExpressionResult)(`
62
+ const isPassResult = (${conditionExpression})
63
+ return isPassResult
64
+ `, Object.assign({}, this.globalData));
63
65
  }
64
66
  catch (error) {
65
67
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/nodes/base.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/nodes/base.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1 @@
1
- declare const createContext: (globalData: Record<string, unknown>) => Window | null;
2
- declare const runInContext: (code: string, context: any) => void;
3
- declare const runInBrowserContext: (code: string, globalData?: {}) => Promise<any>;
4
- export { createContext, runInContext, runInBrowserContext };
1
+ export declare const runInBrowserContext: (code: string, globalData?: {}) => Promise<any>;
@@ -1,49 +1,70 @@
1
1
  "use strict";
2
+ // import {
3
+ // ErrorCode,
4
+ // getErrorMsg,
5
+ // getWarningMsg,
6
+ // WarningCode,
7
+ // } from '../../constant/logCode'
8
+ //
9
+ // const createContext = (globalData: Record<string, unknown>) => {
10
+ // const iframe = document.createElement('iframe')
11
+ // iframe.style.display = 'none'
12
+ // if (!document || !document.body) {
13
+ // console.error(getErrorMsg(ErrorCode.NO_DOCUMENT_BODY))
14
+ // }
15
+ // document.body.appendChild(iframe)
16
+ // const iframeWindow = iframe.contentWindow
17
+ // if (iframeWindow) {
18
+ // // TODO: 确认是否需要该代码,parent 置为空是为了解决什么问题
19
+ // // @ts-ignore
20
+ // ;(iframeWindow!.parent as any) = null
21
+ // Object.keys(globalData).forEach((key) => {
22
+ // iframeWindow[key] = globalData[key]
23
+ // })
24
+ // }
25
+ // return iframeWindow
26
+ // }
27
+ //
28
+ // const runInContext = (code: string, context: any) => {
29
+ // try {
30
+ // const iframeEval = context.eval
31
+ // iframeEval.call(context, code)
32
+ // console.log('context --->>> ===>>>', context)
33
+ // if (context.frameElement) {
34
+ // document.body.removeChild(context.frameElement)
35
+ // }
36
+ // } catch (e) {
37
+ // console.warn(getWarningMsg(WarningCode.EXPRESSION_EXEC_ERROR), {
38
+ // code,
39
+ // context,
40
+ // e,
41
+ // })
42
+ // }
43
+ // }
44
+ //
45
+ // const runInBrowserContext = async (
46
+ // code: string,
47
+ // globalData = {},
48
+ // ): Promise<any> => {
49
+ // const context = createContext(globalData)
50
+ // runInContext(code, context)
51
+ // return context
52
+ // }
53
+ //
54
+ // export { createContext, runInContext, runInBrowserContext }
2
55
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.runInBrowserContext = exports.runInContext = exports.createContext = void 0;
56
+ exports.runInBrowserContext = void 0;
4
57
  const tslib_1 = require("tslib");
5
- const logCode_1 = require("../../constant/logCode");
6
- const createContext = (globalData) => {
7
- const iframe = document.createElement('iframe');
8
- iframe.style.display = 'none';
9
- if (!document || !document.body) {
10
- console.error((0, logCode_1.getErrorMsg)(logCode_1.ErrorCode.NO_DOCUMENT_BODY));
11
- }
12
- document.body.appendChild(iframe);
13
- const iframeWindow = iframe.contentWindow;
14
- if (iframeWindow) {
15
- // TODO: 确认是否需要该代码,parent 置为空是为了解决什么问题
16
- // @ts-ignore
17
- ;
18
- iframeWindow.parent = null;
19
- Object.keys(globalData).forEach((key) => {
20
- iframeWindow[key] = globalData[key];
21
- });
22
- }
23
- return iframeWindow;
24
- };
25
- exports.createContext = createContext;
26
- const runInContext = (code, context) => {
58
+ const sandboxjs_1 = tslib_1.__importDefault(require("@nyariv/sandboxjs"));
59
+ const runInBrowserContext = (code, globalData = {}) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
27
60
  try {
28
- const iframeEval = context.eval;
29
- iframeEval.call(context, code);
30
- if (context.iframeElement) {
31
- document.body.removeChild(context.iframeElement);
32
- }
61
+ const sandbox = new sandboxjs_1.default();
62
+ const exec = sandbox.compile(code);
63
+ return yield exec(globalData).run();
33
64
  }
34
65
  catch (e) {
35
- console.warn((0, logCode_1.getWarningMsg)(logCode_1.WarningCode.EXPRESSION_EXEC_ERROR), {
36
- code,
37
- context,
38
- e,
39
- });
66
+ console.log('runInBrowserContext error --->>>', e);
40
67
  }
41
- };
42
- exports.runInContext = runInContext;
43
- const runInBrowserContext = (code, globalData = {}) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
44
- const context = createContext(globalData);
45
- runInContext(code, context);
46
- return context;
47
68
  });
48
69
  exports.runInBrowserContext = runInBrowserContext;
49
70
  //# sourceMappingURL=browserVm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"browserVm.js","sourceRoot":"","sources":["../../../src/platform/browser/browserVm.ts"],"names":[],"mappings":";;;;AAAA,oDAK+B;AAE/B,MAAM,aAAa,GAAG,CAAC,UAAmC,EAAE,EAAE;IAC5D,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;IAC/C,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAA;IAC7B,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;QAC/B,OAAO,CAAC,KAAK,CAAC,IAAA,qBAAW,EAAC,mBAAS,CAAC,gBAAgB,CAAC,CAAC,CAAA;KACvD;IACD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;IACjC,MAAM,YAAY,GAAG,MAAM,CAAC,aAAa,CAAA;IACzC,IAAI,YAAY,EAAE;QAChB,sCAAsC;QACtC,aAAa;QACb,CAAC;QAAC,YAAa,CAAC,MAAc,GAAG,IAAI,CAAA;QACrC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACtC,YAAY,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAA;QACrC,CAAC,CAAC,CAAA;KACH;IACD,OAAO,YAAY,CAAA;AACrB,CAAC,CAAA;AA2BQ,sCAAa;AAzBtB,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,OAAO,EAAE,EAAE;IAC7C,IAAI;QACF,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAA;QAC/B,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QAC9B,IAAI,OAAO,CAAC,aAAa,EAAE;YACzB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;SACjD;KACF;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,CAAC,IAAI,CAAC,IAAA,uBAAa,EAAC,qBAAW,CAAC,qBAAqB,CAAC,EAAE;YAC7D,IAAI;YACJ,OAAO;YACP,CAAC;SACF,CAAC,CAAA;KACH;AACH,CAAC,CAAA;AAWuB,oCAAY;AATpC,MAAM,mBAAmB,GAAG,CAC1B,IAAY,EACZ,UAAU,GAAG,EAAE,EACD,EAAE;IAChB,MAAM,OAAO,GAAG,aAAa,CAAC,UAAU,CAAC,CAAA;IACzC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IAC3B,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA,CAAA;AAEqC,kDAAmB"}
1
+ {"version":3,"file":"browserVm.js","sourceRoot":"","sources":["../../../src/platform/browser/browserVm.ts"],"names":[],"mappings":";AAAA,WAAW;AACX,eAAe;AACf,iBAAiB;AACjB,mBAAmB;AACnB,iBAAiB;AACjB,kCAAkC;AAClC,EAAE;AACF,mEAAmE;AACnE,oDAAoD;AACpD,kCAAkC;AAClC,uCAAuC;AACvC,6DAA6D;AAC7D,MAAM;AACN,sCAAsC;AACtC,8CAA8C;AAC9C,wBAAwB;AACxB,6CAA6C;AAC7C,oBAAoB;AACpB,4CAA4C;AAC5C,iDAAiD;AACjD,4CAA4C;AAC5C,SAAS;AACT,MAAM;AACN,wBAAwB;AACxB,IAAI;AACJ,EAAE;AACF,yDAAyD;AACzD,UAAU;AACV,sCAAsC;AACtC,qCAAqC;AACrC,oDAAoD;AACpD,kCAAkC;AAClC,wDAAwD;AACxD,QAAQ;AACR,kBAAkB;AAClB,uEAAuE;AACvE,cAAc;AACd,iBAAiB;AACjB,WAAW;AACX,SAAS;AACT,MAAM;AACN,IAAI;AACJ,EAAE;AACF,sCAAsC;AACtC,kBAAkB;AAClB,qBAAqB;AACrB,uBAAuB;AACvB,8CAA8C;AAC9C,gCAAgC;AAChC,mBAAmB;AACnB,IAAI;AACJ,EAAE;AACF,8DAA8D;;;;AAE9D,0EAAwC;AAEjC,MAAM,mBAAmB,GAAG,CACjC,IAAY,EACZ,UAAU,GAAG,EAAE,EACD,EAAE;IAChB,IAAI;QACF,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACnC,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,EAAE,CAAC;KACrC;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,CAAC,GAAG,CAAC,kCAAkC,EAAE,CAAC,CAAC,CAAC;KACpD;AACH,CAAC,CAAA,CAAA;AAXY,QAAA,mBAAmB,uBAW/B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@logicflow/engine",
3
- "version": "0.0.10",
3
+ "version": "0.0.12-beta.0",
4
4
  "description": "a process engine for javascript",
5
5
  "main": "lib/index.js",
6
6
  "module": "es/index.js",
@@ -41,7 +41,8 @@
41
41
  "author": "Logicflow-Team",
42
42
  "license": "Apache-2.0",
43
43
  "dependencies": {
44
- "uuid": "^8.2.0"
44
+ "uuid": "^8.2.0",
45
+ "@nyariv/sandboxjs": "^0.8.23"
45
46
  },
46
47
  "devDependencies": {
47
48
  "tslib": "^2.6.1"
package/src/nodes/base.ts CHANGED
@@ -90,13 +90,15 @@ export class BaseNode implements BaseNode.Base {
90
90
  try {
91
91
  // bug:uuid 创建的 NodeId 为 xxxx-xxxx-xxxx-zzzz 格式,eval 执行时会将 - 识别为数学减号,导致执行报错
92
92
  // 解决方案: 赋值变量直接命名为 isPassResult, 因为每次执行 getExpressionResult 时,都会重新射程一个 context
93
- const result = await getExpressionResult(
94
- `isPassResult = (${conditionExpression})`,
93
+ return await getExpressionResult(
94
+ `
95
+ const isPassResult = (${conditionExpression})
96
+ return isPassResult
97
+ `,
95
98
  {
96
99
  ...this.globalData,
97
100
  },
98
101
  )
99
- return result.isPassResult
100
102
  } catch (error) {
101
103
  return false
102
104
  }
@@ -1,52 +1,68 @@
1
- import {
2
- ErrorCode,
3
- getErrorMsg,
4
- getWarningMsg,
5
- WarningCode,
6
- } from '../../constant/logCode'
1
+ // import {
2
+ // ErrorCode,
3
+ // getErrorMsg,
4
+ // getWarningMsg,
5
+ // WarningCode,
6
+ // } from '../../constant/logCode'
7
+ //
8
+ // const createContext = (globalData: Record<string, unknown>) => {
9
+ // const iframe = document.createElement('iframe')
10
+ // iframe.style.display = 'none'
11
+ // if (!document || !document.body) {
12
+ // console.error(getErrorMsg(ErrorCode.NO_DOCUMENT_BODY))
13
+ // }
14
+ // document.body.appendChild(iframe)
15
+ // const iframeWindow = iframe.contentWindow
16
+ // if (iframeWindow) {
17
+ // // TODO: 确认是否需要该代码,parent 置为空是为了解决什么问题
18
+ // // @ts-ignore
19
+ // ;(iframeWindow!.parent as any) = null
20
+ // Object.keys(globalData).forEach((key) => {
21
+ // iframeWindow[key] = globalData[key]
22
+ // })
23
+ // }
24
+ // return iframeWindow
25
+ // }
26
+ //
27
+ // const runInContext = (code: string, context: any) => {
28
+ // try {
29
+ // const iframeEval = context.eval
30
+ // iframeEval.call(context, code)
31
+ // console.log('context --->>> ===>>>', context)
32
+ // if (context.frameElement) {
33
+ // document.body.removeChild(context.frameElement)
34
+ // }
35
+ // } catch (e) {
36
+ // console.warn(getWarningMsg(WarningCode.EXPRESSION_EXEC_ERROR), {
37
+ // code,
38
+ // context,
39
+ // e,
40
+ // })
41
+ // }
42
+ // }
43
+ //
44
+ // const runInBrowserContext = async (
45
+ // code: string,
46
+ // globalData = {},
47
+ // ): Promise<any> => {
48
+ // const context = createContext(globalData)
49
+ // runInContext(code, context)
50
+ // return context
51
+ // }
52
+ //
53
+ // export { createContext, runInContext, runInBrowserContext }
7
54
 
8
- const createContext = (globalData: Record<string, unknown>) => {
9
- const iframe = document.createElement('iframe')
10
- iframe.style.display = 'none'
11
- if (!document || !document.body) {
12
- console.error(getErrorMsg(ErrorCode.NO_DOCUMENT_BODY))
13
- }
14
- document.body.appendChild(iframe)
15
- const iframeWindow = iframe.contentWindow
16
- if (iframeWindow) {
17
- // TODO: 确认是否需要该代码,parent 置为空是为了解决什么问题
18
- // @ts-ignore
19
- ;(iframeWindow!.parent as any) = null
20
- Object.keys(globalData).forEach((key) => {
21
- iframeWindow[key] = globalData[key]
22
- })
23
- }
24
- return iframeWindow
25
- }
26
-
27
- const runInContext = (code: string, context) => {
28
- try {
29
- const iframeEval = context.eval
30
- iframeEval.call(context, code)
31
- if (context.iframeElement) {
32
- document.body.removeChild(context.iframeElement)
33
- }
34
- } catch (e) {
35
- console.warn(getWarningMsg(WarningCode.EXPRESSION_EXEC_ERROR), {
36
- code,
37
- context,
38
- e,
39
- })
40
- }
41
- }
55
+ import Sandbox from '@nyariv/sandboxjs'
42
56
 
43
- const runInBrowserContext = async (
57
+ export const runInBrowserContext = async (
44
58
  code: string,
45
59
  globalData = {},
46
60
  ): Promise<any> => {
47
- const context = createContext(globalData)
48
- runInContext(code, context)
49
- return context
61
+ try {
62
+ const sandbox = new Sandbox()
63
+ const exec = sandbox.compile(code)
64
+ return await exec(globalData).run()
65
+ } catch (e) {
66
+ console.log('runInBrowserContext error --->>>', e)
67
+ }
50
68
  }
51
-
52
- export { createContext, runInContext, runInBrowserContext }
@@ -1,2 +0,0 @@
1
- declare const runInBrowserContext: (code: string, globalData?: {}) => Promise<null>;
2
- export { runInBrowserContext };
@@ -1,30 +0,0 @@
1
- import { __awaiter } from "tslib";
2
- import { ErrorCode, WarningCode, getErrorMsg, getWarningMsg, } from '../constant/logCode';
3
- const runInBrowserContext = (code, globalData = {}) => __awaiter(void 0, void 0, void 0, function* () {
4
- const iframe = document.createElement('iframe');
5
- iframe.style.display = 'none';
6
- if (!document || !document.body) {
7
- console.error(getErrorMsg(ErrorCode.NO_DOCUMENT_BODY));
8
- }
9
- document.body.appendChild(iframe);
10
- const iframeWindow = iframe.contentWindow;
11
- const iframeEval = iframeWindow.eval;
12
- Object.keys(globalData).forEach((key) => {
13
- iframeWindow[key] = globalData[key];
14
- });
15
- let res = null;
16
- try {
17
- res = iframeEval.call(iframeWindow, code);
18
- }
19
- catch (e) {
20
- console.warn(getWarningMsg(WarningCode.EXPRESSION_EXEC_ERROR), {
21
- code,
22
- globalData,
23
- e,
24
- });
25
- }
26
- document.body.removeChild(iframe);
27
- return res;
28
- });
29
- export { runInBrowserContext };
30
- //# sourceMappingURL=brewserVm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"brewserVm.js","sourceRoot":"","sources":["../../src/expression/brewserVm.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,SAAS,EACT,WAAW,EACX,WAAW,EACX,aAAa,GACd,MAAM,qBAAqB,CAAA;AAE5B,MAAM,mBAAmB,GAAG,CAAO,IAAY,EAAE,UAAU,GAAG,EAAE,EAAE,EAAE;IAClE,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;IAC/C,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAA;IAC7B,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;QAC/B,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAA;KACvD;IACD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;IAEjC,MAAM,YAAY,GAAG,MAAM,CAAC,aAAoB,CAAA;IAChD,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAA;IACpC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,GAAW,EAAE,EAAE;QAC9C,YAAY,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAA;IACrC,CAAC,CAAC,CAAA;IAEF,IAAI,GAAG,GAAG,IAAI,CAAA;IACd,IAAI;QACF,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;KAC1C;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,qBAAqB,CAAC,EAAE;YAC7D,IAAI;YACJ,UAAU;YACV,CAAC;SACF,CAAC,CAAA;KACH;IACD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;IACjC,OAAO,GAAG,CAAA;AACZ,CAAC,CAAA,CAAA;AAED,OAAO,EAAE,mBAAmB,EAAE,CAAA"}
@@ -1,2 +0,0 @@
1
- declare const getExpressionResult: (code: string, context: any) => Promise<any>;
2
- export { getExpressionResult };
@@ -1,17 +0,0 @@
1
- import { __awaiter } from "tslib";
2
- import { runInNodeContext } from './nodeVm';
3
- import { runInBrowserContext } from './brewserVm';
4
- import { isInNodeJS, isInBrowser, globalScope } from '../utils';
5
- const getExpressionResult = (code, context) => __awaiter(void 0, void 0, void 0, function* () {
6
- if (isInNodeJS) {
7
- const r = yield runInNodeContext(code, context);
8
- return r;
9
- }
10
- if (isInBrowser) {
11
- const r = yield runInBrowserContext(code, context);
12
- return r;
13
- }
14
- return globalScope.eval(code);
15
- });
16
- export { getExpressionResult };
17
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/expression/index.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAE/D,MAAM,mBAAmB,GAAG,CAAO,IAAY,EAAE,OAAY,EAAE,EAAE;IAC/D,IAAI,UAAU,EAAE;QACd,MAAM,CAAC,GAAG,MAAM,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAC/C,OAAO,CAAC,CAAA;KACT;IACD,IAAI,WAAW,EAAE;QACf,MAAM,CAAC,GAAG,MAAM,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAClD,OAAO,CAAC,CAAA;KACT;IACD,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC/B,CAAC,CAAA,CAAA;AAED,OAAO,EAAE,mBAAmB,EAAE,CAAA"}
@@ -1,4 +0,0 @@
1
- /// <reference types="node" />
2
- import vm from 'node:vm';
3
- declare const runInNodeContext: (code: string, globalData?: Record<string, unknown>) => Promise<vm.Context>;
4
- export { runInNodeContext };
@@ -1,10 +0,0 @@
1
- import { __awaiter } from "tslib";
2
- import vm from 'node:vm';
3
- // const vm = require('node:vm');
4
- const runInNodeContext = (code, globalData = {}) => __awaiter(void 0, void 0, void 0, function* () {
5
- const context = vm.createContext(globalData);
6
- vm.runInContext(code, context);
7
- return context;
8
- });
9
- export { runInNodeContext };
10
- //# sourceMappingURL=nodeVm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"nodeVm.js","sourceRoot":"","sources":["../../src/expression/nodeVm.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,iCAAiC;AAEjC,MAAM,gBAAgB,GAAG,CACvB,IAAY,EACZ,aAAsC,EAAE,EACxC,EAAE;IACF,MAAM,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,UAAU,CAAC,CAAA;IAC5C,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IAE9B,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA,CAAA;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAA"}
@@ -1,2 +0,0 @@
1
- declare const runInBrowserContext: (code: string, globalData?: {}) => Promise<null>;
2
- export { runInBrowserContext };
@@ -1,33 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.runInBrowserContext = void 0;
4
- const tslib_1 = require("tslib");
5
- const logCode_1 = require("../constant/logCode");
6
- const runInBrowserContext = (code, globalData = {}) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
7
- const iframe = document.createElement('iframe');
8
- iframe.style.display = 'none';
9
- if (!document || !document.body) {
10
- console.error((0, logCode_1.getErrorMsg)(logCode_1.ErrorCode.NO_DOCUMENT_BODY));
11
- }
12
- document.body.appendChild(iframe);
13
- const iframeWindow = iframe.contentWindow;
14
- const iframeEval = iframeWindow.eval;
15
- Object.keys(globalData).forEach((key) => {
16
- iframeWindow[key] = globalData[key];
17
- });
18
- let res = null;
19
- try {
20
- res = iframeEval.call(iframeWindow, code);
21
- }
22
- catch (e) {
23
- console.warn((0, logCode_1.getWarningMsg)(logCode_1.WarningCode.EXPRESSION_EXEC_ERROR), {
24
- code,
25
- globalData,
26
- e,
27
- });
28
- }
29
- document.body.removeChild(iframe);
30
- return res;
31
- });
32
- exports.runInBrowserContext = runInBrowserContext;
33
- //# sourceMappingURL=brewserVm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"brewserVm.js","sourceRoot":"","sources":["../../src/expression/brewserVm.ts"],"names":[],"mappings":";;;;AAAA,iDAK4B;AAE5B,MAAM,mBAAmB,GAAG,CAAO,IAAY,EAAE,UAAU,GAAG,EAAE,EAAE,EAAE;IAClE,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;IAC/C,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAA;IAC7B,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;QAC/B,OAAO,CAAC,KAAK,CAAC,IAAA,qBAAW,EAAC,mBAAS,CAAC,gBAAgB,CAAC,CAAC,CAAA;KACvD;IACD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;IAEjC,MAAM,YAAY,GAAG,MAAM,CAAC,aAAoB,CAAA;IAChD,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAA;IACpC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,GAAW,EAAE,EAAE;QAC9C,YAAY,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAA;IACrC,CAAC,CAAC,CAAA;IAEF,IAAI,GAAG,GAAG,IAAI,CAAA;IACd,IAAI;QACF,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;KAC1C;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,CAAC,IAAI,CAAC,IAAA,uBAAa,EAAC,qBAAW,CAAC,qBAAqB,CAAC,EAAE;YAC7D,IAAI;YACJ,UAAU;YACV,CAAC;SACF,CAAC,CAAA;KACH;IACD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;IACjC,OAAO,GAAG,CAAA;AACZ,CAAC,CAAA,CAAA;AAEQ,kDAAmB"}
@@ -1,2 +0,0 @@
1
- declare const getExpressionResult: (code: string, context: any) => Promise<any>;
2
- export { getExpressionResult };
@@ -1,20 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getExpressionResult = void 0;
4
- const tslib_1 = require("tslib");
5
- const nodeVm_1 = require("./nodeVm");
6
- const brewserVm_1 = require("./brewserVm");
7
- const utils_1 = require("../utils");
8
- const getExpressionResult = (code, context) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
9
- if (utils_1.isInNodeJS) {
10
- const r = yield (0, nodeVm_1.runInNodeContext)(code, context);
11
- return r;
12
- }
13
- if (utils_1.isInBrowser) {
14
- const r = yield (0, brewserVm_1.runInBrowserContext)(code, context);
15
- return r;
16
- }
17
- return utils_1.globalScope.eval(code);
18
- });
19
- exports.getExpressionResult = getExpressionResult;
20
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/expression/index.ts"],"names":[],"mappings":";;;;AAAA,qCAA2C;AAC3C,2CAAiD;AACjD,oCAA+D;AAE/D,MAAM,mBAAmB,GAAG,CAAO,IAAY,EAAE,OAAY,EAAE,EAAE;IAC/D,IAAI,kBAAU,EAAE;QACd,MAAM,CAAC,GAAG,MAAM,IAAA,yBAAgB,EAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAC/C,OAAO,CAAC,CAAA;KACT;IACD,IAAI,mBAAW,EAAE;QACf,MAAM,CAAC,GAAG,MAAM,IAAA,+BAAmB,EAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAClD,OAAO,CAAC,CAAA;KACT;IACD,OAAO,mBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC/B,CAAC,CAAA,CAAA;AAEQ,kDAAmB"}
@@ -1,4 +0,0 @@
1
- /// <reference types="node" />
2
- import vm from 'node:vm';
3
- declare const runInNodeContext: (code: string, globalData?: Record<string, unknown>) => Promise<vm.Context>;
4
- export { runInNodeContext };
@@ -1,13 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.runInNodeContext = void 0;
4
- const tslib_1 = require("tslib");
5
- const node_vm_1 = tslib_1.__importDefault(require("node:vm"));
6
- // const vm = require('node:vm');
7
- const runInNodeContext = (code, globalData = {}) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
8
- const context = node_vm_1.default.createContext(globalData);
9
- node_vm_1.default.runInContext(code, context);
10
- return context;
11
- });
12
- exports.runInNodeContext = runInNodeContext;
13
- //# sourceMappingURL=nodeVm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"nodeVm.js","sourceRoot":"","sources":["../../src/expression/nodeVm.ts"],"names":[],"mappings":";;;;AAAA,8DAAwB;AACxB,iCAAiC;AAEjC,MAAM,gBAAgB,GAAG,CACvB,IAAY,EACZ,aAAsC,EAAE,EACxC,EAAE;IACF,MAAM,OAAO,GAAG,iBAAE,CAAC,aAAa,CAAC,UAAU,CAAC,CAAA;IAC5C,iBAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IAE9B,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA,CAAA;AAEQ,4CAAgB"}
@@ -1,36 +0,0 @@
1
- import {
2
- ErrorCode,
3
- WarningCode,
4
- getErrorMsg,
5
- getWarningMsg,
6
- } from '../constant/logCode'
7
-
8
- const runInBrowserContext = async (code: string, globalData = {}) => {
9
- const iframe = document.createElement('iframe')
10
- iframe.style.display = 'none'
11
- if (!document || !document.body) {
12
- console.error(getErrorMsg(ErrorCode.NO_DOCUMENT_BODY))
13
- }
14
- document.body.appendChild(iframe)
15
-
16
- const iframeWindow = iframe.contentWindow as any
17
- const iframeEval = iframeWindow.eval
18
- Object.keys(globalData).forEach((key: string) => {
19
- iframeWindow[key] = globalData[key]
20
- })
21
-
22
- let res = null
23
- try {
24
- res = iframeEval.call(iframeWindow, code)
25
- } catch (e) {
26
- console.warn(getWarningMsg(WarningCode.EXPRESSION_EXEC_ERROR), {
27
- code,
28
- globalData,
29
- e,
30
- })
31
- }
32
- document.body.removeChild(iframe)
33
- return res
34
- }
35
-
36
- export { runInBrowserContext }
@@ -1,17 +0,0 @@
1
- import { runInNodeContext } from './nodeVm'
2
- import { runInBrowserContext } from './brewserVm'
3
- import { isInNodeJS, isInBrowser, globalScope } from '../utils'
4
-
5
- const getExpressionResult = async (code: string, context: any) => {
6
- if (isInNodeJS) {
7
- const r = await runInNodeContext(code, context)
8
- return r
9
- }
10
- if (isInBrowser) {
11
- const r = await runInBrowserContext(code, context)
12
- return r
13
- }
14
- return globalScope.eval(code)
15
- }
16
-
17
- export { getExpressionResult }
@@ -1,14 +0,0 @@
1
- import vm from 'node:vm'
2
- // const vm = require('node:vm');
3
-
4
- const runInNodeContext = async (
5
- code: string,
6
- globalData: Record<string, unknown> = {},
7
- ) => {
8
- const context = vm.createContext(globalData)
9
- vm.runInContext(code, context)
10
-
11
- return context
12
- }
13
-
14
- export { runInNodeContext }