From bc2cd5a8d7d1c0d1ebabf400e361483c7ea88019 Mon Sep 17 00:00:00 2001 From: smallstonesk <575913857@qq.com> Date: Fri, 2 Oct 2020 19:05:35 +0800 Subject: [PATCH] fix: supports passing pipe through branch-node --- packages/cli/package.json | 2 +- packages/cli/src/cmd/dev/addPlugins.js | 2 +- packages/cli/src/cmd/dev/index.js | 4 ++-- packages/cli/src/cmd/dev/template/logic.js | 15 ++++++++++----- 4 files changed, 14 insertions(+), 9 deletions(-) diff --git a/packages/cli/package.json b/packages/cli/package.json index aa9a70d..91f48da 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@imove/cli", - "version": "0.0.2", + "version": "0.0.3", "description": "imove client", "main": "index.js", "bin": { diff --git a/packages/cli/src/cmd/dev/addPlugins.js b/packages/cli/src/cmd/dev/addPlugins.js index 3a017c9..d3f689c 100644 --- a/packages/cli/src/cmd/dev/addPlugins.js +++ b/packages/cli/src/cmd/dev/addPlugins.js @@ -4,7 +4,7 @@ const fs = require('fs-extra'); const INSERT_IMPORT_PLUGINS_COMMENT = '\/\/ import plugins here'; const INSERT_USE_PLUGINS_COMMENT = '\/\/ use plugins here'; -const setup = async (plugins, logicBasePath) => { +const setup = async (plugins = [], logicBasePath) => { const entryFilePath = path.join(logicBasePath, 'index.js'); const codes = await fs.readFile(entryFilePath, 'utf8'); const modifiedContent = codes diff --git a/packages/cli/src/cmd/dev/index.js b/packages/cli/src/cmd/dev/index.js index b2b01e2..8101911 100644 --- a/packages/cli/src/cmd/dev/index.js +++ b/packages/cli/src/cmd/dev/index.js @@ -16,7 +16,7 @@ class Dev extends Base { save = async (req, res) => { - const {outputPath, plugins} = this.config; + const {outputPath, plugins = []} = this.config; // check outputPath whether exsited await fs.ensureDir(outputPath); @@ -40,7 +40,7 @@ class Dev extends Base { console.log('compile successfully!'); } catch(err) { res.status(500).json({isCompiled: false}).end(); - console.log('compile failed! the error is:', err.message); + console.log('compile failed! the error is:', err); } } diff --git a/packages/cli/src/cmd/dev/template/logic.js b/packages/cli/src/cmd/dev/template/logic.js index 592f146..f0c35af 100644 --- a/packages/cli/src/cmd/dev/template/logic.js +++ b/packages/cli/src/cmd/dev/template/logic.js @@ -39,7 +39,9 @@ export default class Logic extends EventEmitter{ if(LIFECYCLE.indexOf(eventName) === -1) { return console.warn(`Lifecycle ${eventName} is not supported!`); } - this.lifeCycleEvents[eventName].forEach(fn => fn(ctx)); + if(this.lifeCycleEvents[eventName]) { + this.lifeCycleEvents[eventName].forEach(fn => fn(ctx)); + } } _createCtx(opts) { @@ -57,7 +59,7 @@ export default class Logic extends EventEmitter{ } } - _getNextNodes(ctx, curNode, lastRet) { + _getNextNodes(ctx, curNode, curRet) { const nodes = []; for(const edge of this.edges) { let isMatched = edge.source.cell === curNode.id; @@ -68,7 +70,7 @@ export default class Logic extends EventEmitter{ for(const key in ports) { const {condition} = ports[key]; const ret = new Function('ctx', 'return ' + condition)(ctx); - if(ret === lastRet) { + if(ret === Boolean(curRet)) { matchedPort = key; break; } @@ -112,8 +114,11 @@ export default class Logic extends EventEmitter{ async _execNode(ctx, curNode, lastRet) { ctx._transitTo(curNode, lastRet); const fn = nodeFns[curNode.id]; - lastRet = await fn(ctx); - const nextNodes = this._getNextNodes(ctx, curNode, lastRet); + const curRet = await fn(ctx); + if(curNode.shape !== SHAPES.BRANCH) { + lastRet = curRet; + } + const nextNodes = this._getNextNodes(ctx, curNode, curRet); if(nextNodes.length > 0) { nextNodes.forEach(async node => { await this._execNode(ctx, node, lastRet);