@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 +1 -1
- package/es/nodes/base.js +4 -2
- package/es/nodes/base.js.map +1 -1
- package/es/platform/browser/browserVm.d.ts +1 -4
- package/es/platform/browser/browserVm.js +59 -37
- package/es/platform/browser/browserVm.js.map +1 -1
- package/lib/nodes/base.js +4 -2
- package/lib/nodes/base.js.map +1 -1
- package/lib/platform/browser/browserVm.d.ts +1 -4
- package/lib/platform/browser/browserVm.js +60 -39
- package/lib/platform/browser/browserVm.js.map +1 -1
- package/package.json +3 -2
- package/src/nodes/base.ts +5 -3
- package/src/platform/browser/browserVm.ts +62 -46
- package/es/expression/brewserVm.d.ts +0 -2
- package/es/expression/brewserVm.js +0 -30
- package/es/expression/brewserVm.js.map +0 -1
- package/es/expression/index.d.ts +0 -2
- package/es/expression/index.js +0 -17
- package/es/expression/index.js.map +0 -1
- package/es/expression/nodeVm.d.ts +0 -4
- package/es/expression/nodeVm.js +0 -10
- package/es/expression/nodeVm.js.map +0 -1
- package/lib/expression/brewserVm.d.ts +0 -2
- package/lib/expression/brewserVm.js +0 -33
- package/lib/expression/brewserVm.js.map +0 -1
- package/lib/expression/index.d.ts +0 -2
- package/lib/expression/index.js +0 -20
- package/lib/expression/index.js.map +0 -1
- package/lib/expression/nodeVm.d.ts +0 -4
- package/lib/expression/nodeVm.js +0 -13
- package/lib/expression/nodeVm.js.map +0 -1
- package/src/expression/brewserVm.ts +0 -36
- package/src/expression/index.ts +0 -17
- package/src/expression/nodeVm.ts +0 -14
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
|
-
|
|
59
|
-
|
|
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;
|
package/es/nodes/base.js.map
CHANGED
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/nodes/base.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1 @@
|
|
|
1
|
-
declare const
|
|
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
|
|
3
|
-
const
|
|
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
|
|
25
|
-
|
|
26
|
-
|
|
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.
|
|
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":"
|
|
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
|
-
|
|
62
|
-
|
|
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;
|
package/lib/nodes/base.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/nodes/base.ts"],"names":[],"mappings":";;;;AACA,0CAA0C;AAC1C,0CAAiD;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,
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/nodes/base.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1 @@
|
|
|
1
|
-
declare const
|
|
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 =
|
|
56
|
+
exports.runInBrowserContext = void 0;
|
|
4
57
|
const tslib_1 = require("tslib");
|
|
5
|
-
const
|
|
6
|
-
const
|
|
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
|
|
29
|
-
|
|
30
|
-
|
|
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.
|
|
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":"
|
|
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.
|
|
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
|
-
|
|
94
|
-
`
|
|
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
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
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
|
-
|
|
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
|
-
|
|
48
|
-
|
|
49
|
-
|
|
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,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"}
|
package/es/expression/index.d.ts
DELETED
package/es/expression/index.js
DELETED
|
@@ -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"}
|
package/es/expression/nodeVm.js
DELETED
|
@@ -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,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"}
|
package/lib/expression/index.js
DELETED
|
@@ -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"}
|
package/lib/expression/nodeVm.js
DELETED
|
@@ -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 }
|
package/src/expression/index.ts
DELETED
|
@@ -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 }
|
package/src/expression/nodeVm.ts
DELETED
|
@@ -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 }
|