Browse Source

fix: supports passing pipe through branch-node

master
smallstonesk 5 years ago
parent
commit
bc2cd5a8d7
  1. 2
      packages/cli/package.json
  2. 2
      packages/cli/src/cmd/dev/addPlugins.js
  3. 4
      packages/cli/src/cmd/dev/index.js
  4. 15
      packages/cli/src/cmd/dev/template/logic.js

2
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": {

2
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

4
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);
}
}

15
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);

Loading…
Cancel
Save