16 lines
29 KiB
JavaScript
16 lines
29 KiB
JavaScript
/**
|
|
* jibo-dev - Jibo build tools, dev dependencies
|
|
* @version v2.1.4
|
|
* @license Copyright (c) 2017, Jibo, Inc. All rights reserved.
|
|
* All use of the Jibo SDK is subject to the Jibo SDK End User License Agreement (EULA)
|
|
* distributed herewith. If you did not receive a copy of the EULA, you may view a
|
|
* copy at https://developers.jibo.com/license.
|
|
*/
|
|
!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var t;t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,t.jiboDev=e()}}(function(){return function e(t,o,n){function i(s,c){if(!o[s]){if(!t[s]){var a="function"==typeof require&&require;if(!c&&a)return a(s,!0);if(r)return r(s,!0);var u=new Error("Cannot find module '"+s+"'");throw u.code="MODULE_NOT_FOUND",u}var l=o[s]={exports:{}};t[s][0].call(l.exports,function(e){var o=t[s][1][e];return i(o?o:e)},l,l.exports,e,t,o,n)}return o[s].exports}for(var r="function"==typeof require&&require,s=0;s<n.length;s++)i(n[s]);return i}({1:[function(e,t,o){"use strict";function n(e){function t(e,t,o){n.push(e),o()}function o(t){const o=this,c=Buffer.concat(n).toString();if(a[e])o.push(a[e]),t();else{let n;switch(s.extname(e)){case".bt":n=i.default.transform(e,c),a[e]=n;break;case".flow":n=r.default.transform(e,c),a[e]=n;break;default:n=c}o.push(n),t()}}const n=[];return c(t,o)}const i=e("../bt-flow/Behaviorify"),r=e("../bt-flow/Flowify"),s=e("path"),c=e("through2"),a={};Object.defineProperty(o,"__esModule",{value:!0}),o.default=n},{"../bt-flow/Behaviorify":2,"../bt-flow/Flowify":3,path:void 0,through2:void 0}],2:[function(e,t,o){"use strict";const n=e("path"),i=e("fs"),r=e("escodegen"),s=e("esprima"),c=e("find-root"),a=e("estraverse"),u=e("chalk"),l=e("./expressions/ArrayExpression"),f=e("./expressions/ObjectExpression"),d=e("./expressions/FunctionExpression"),p=e("./expressions/LiteralExpression"),h=e("./expressions/ArrowFunctionReturnRequire"),v=e("./cli"),y=e("./core"),m=e("./versions");class g{constructor(e,t){this.filename=n.resolve(e),t||(t=JSON.parse(i.readFileSync(this.filename,"utf8"))),t.meta=t.meta||{version:0},this.data=t,this.update()}static transform(e,t){const o=JSON.parse(t),n=Object.keys(o);for(let i=0;i<n.length;i++){const e=n[i];if("Subtree"===o[e].class){const t=o[e].options.behaviorPath;o[e].options.behaviorPath=["() => {"," return require('"+t+"');","}"]}}const r=new g(e,o);return r.exec()}static cli(){v.default()}static get core(){return y.default}update(){for(;this.data.meta.version<g.CURRENT_VERSION;)m.default["version"+this.data.meta.version](this.data),this.data.meta.version++}exec(e){let t=s.parse(this.readFile("templates/tree.js")),o=new f.default(t.body[t.body.length-1].expression.right.body.body[0].argument.properties),n=!e||!e.noRequirification,i=Object.keys(this.data);for(let c=0;c<i.length;c++){let e=i[c];if("meta"!==e){let t=this.data[e],i=!1,r=!1,c=new f.default;if(c.addKeyValue("id",p.default(e)),t.name&&c.addKeyValue("name",p.default(t.name)),t.parent&&c.addKeyValue("parent",p.default(t.parent)),t["asset-pack"]&&c.addKeyValue("asset-pack",p.default(t["asset-pack"])),t.transitions){let e=new l.default;for(let o=0;o<t.transitions.length;o++){let n=t.transitions[o],i=new f.default;Object.keys(n).forEach(e=>{i.addKeyValue(e,p.default(n[e]))}),e.push(i.expression)}c.addKeyValue("transitions",e.expression)}if(t.exceptions){let e=new l.default;for(let o=0;o<t.exceptions.length;o++){let n=t.exceptions[o],i=new f.default;Object.keys(n).forEach(e=>{i.addKeyValue(e,p.default(n[e]))}),e.push(i.expression)}c.addKeyValue("exceptions",e.expression)}if(c.addKeyValue("class",p.default(t.class)),t.children){let e=new l.default;for(let o=0;o<t.children.length;o++)e.push(p.default(t.children[o]));c.addKeyValue("children",e.expression)}if(t.skipped&&c.addKeyValue("skipped",p.default(t.skipped)),t.decorators){let e=new l.default;for(let o=0;o<t.decorators.length;o++)e.push(p.default(t.decorators[o]));c.addKeyValue("decorators",e.expression)}if(t.options){let e=new f.default;for(let o in t.options){let c=t.options[o];if(Array.isArray(c)&&(c=t.options[o]=c.join("\n")),"string"==typeof c&&(0===c.indexOf("function")||c.indexOf("=>")>=0)){i=!0;try{let t=c,n=s.parse(t);a.traverse(n,{enter:(e,t)=>{e.name&&"self"===e.name&&t.object&&"self"===t.object.name&&(r=!0)}}),n="ExpressionStatement"===n.body[0].type?n.body[0].expression:n.body[0],e.addKeyValue(o,n)}catch(e){const t=this.filename.replace(process.cwd()+"/","");console.error(u.underline(t)),console.error(u.red.bold(" error"),e.message),console.error(u.gray(" "+c.replace(/\t/g," ").replace(/\n/g,"\n "))),console.error()}}else n&&"Subtree"===t.class&&"behaviorPath"===o?e.addKeyValue(o,h.default(c)):n&&"Flow.Subflow"===t.class&&"subflowId"===o?e.addKeyValue(o,h.default(c)):n&&"Flow.Subtree"===t.class&&"behaviorPath"===o?e.addKeyValue(o,h.default(c)):e.addKeyValue(o,p.default(c))}c.addKeyValue("options",e.expression)}i?o.addKeyValue(e,d.default(c.expression,r)):o.addKeyValue(e,c.expression)}else{let t=this.data[e],n=new f.default;Object.keys(t).forEach(e=>{n.addKeyValue(e,p.default(t[e]))}),o.addKeyValue("meta",n.expression)}}return r.generate(t)}dispose(){this.data=null,this.filename=null}readFile(e){const t=c(__dirname);return i.readFileSync(n.resolve(t,e),"utf8")}}g.CURRENT_VERSION=1,Object.defineProperty(o,"__esModule",{value:!0}),o.default=g},{"./cli":4,"./core":5,"./expressions/ArrayExpression":6,"./expressions/ArrowFunctionReturnRequire":7,"./expressions/FunctionExpression":8,"./expressions/LiteralExpression":9,"./expressions/ObjectExpression":10,"./versions":15,chalk:void 0,escodegen:void 0,esprima:void 0,estraverse:void 0,"find-root":void 0,fs:void 0,path:void 0}],3:[function(e,t,o){"use strict";const n=e("./flow/gojs-loader/GojsLoader"),i=e("./Behaviorify"),r=e("chalk"),s=e("path");class c extends i.default{static transform(e,t){const o=JSON.parse(t),n=o.nodeDataArray;for(let i=0;i<n.length;i++){let e=n[i];switch(e.class){case"Flow.Subflow":e.options.subflowId=["() => {"," return require('"+e.options.subflowId+"');","}"];break;case"Subtree":e.options.behaviorPath=["() => {"," return require('"+e.options.behaviorPath+"');","}"]}}const r=new c(e,o);return r.exec()}constructor(e,t){if(".flow"!==s.extname(e))return void console.error(r.red("Flowify cannot handle %s files, only .flow files."));let o;o=t?n.default.loadParsedProcedure(e,t):n.default.loadProcedure(e),super(e,o.toBehaviorifyable())}}Object.defineProperty(o,"__esModule",{value:!0}),o.default=c},{"./Behaviorify":2,"./flow/gojs-loader/GojsLoader":14,chalk:void 0,path:void 0}],4:[function(e,t,o){"use strict";function n(){const e=s(process.argv.slice(2),{string:["input","output"],boolean:["verbose","update"],alias:{v:"verbose",u:"update",i:"input",o:"output"},default:{verbose:!1,update:!1}});let t=e._;e.input&&(t=a.sync(r.join(e.input,"**/*.{bt,flow}"))),t.length||(console.error(f.red("Must provide files to process")),process.exit(0)),t.forEach((o,n)=>{t[n]=r.relative(e.input,o)}),e.update&&t.length>1?(t.forEach(function(t){const o=r.resolve(t),n=JSON.parse(i.readFileSync(o,"utf8")),s=new u.default(t,n);i.writeFileSync(o,JSON.stringify(s.data,null," ")),e.verbose&&console.log(f.green(" -> Updated %s"),t)}),process.exit(0)):t.length&&(e.output&&c.sync(r.resolve(e.output)),t.forEach(function(t){let o=t.split("."),n="."+o[o.length-1];if(".bt"!==n&&".flow"!==n)return void console.error(f.red("Invalid: not a *.bt or *.flow file: %s"),t);const s=r.resolve(e.input,t),a=JSON.parse(i.readFileSync(s,"utf8"));try{i.statSync(s)}catch(e){return void console.error(f.red("File does not exist '%s'",t))}let d;switch(n){case".flow":d=new l.default(t,a);break;case".bt":d=new u.default(t,a)}if(e.output){let o;o=e.input?t.replace(RegExp("\\"+n+"$"),".js").replace(e.input+"/",""):r.basename(t,n)+".js";const s=r.join(e.output,o),a=r.dirname(s);c.sync(a),i.writeFileSync(s,d.exec()),e.verbose&&console.log(f.green("Saved '%s' to '%s'"),t,o)}else console.log(d.exec())}),process.exit(0)),console.error(f.red("Invalid command.")),process.exit(1)}const i=e("fs"),r=e("path"),s=e("minimist"),c=e("mkdirp"),a=e("glob"),u=e("./Behaviorify"),l=e("./Flowify"),f=e("chalk");Object.defineProperty(o,"__esModule",{value:!0}),o.default=n},{"./Behaviorify":2,"./Flowify":3,chalk:void 0,fs:void 0,glob:void 0,minimist:void 0,mkdirp:void 0,path:void 0}],5:[function(e,t,o){"use strict";Object.defineProperty(o,"__esModule",{value:!0}),o.default={Blink:[],ExecuteScript:["exec"],ExecuteScriptAsync:["exec"],Listen:["getOptions","rule","onResult"],ListenEmbedded:["rule","onResult"],ListenJs:["getOptions","getRule","onResult"],LookAt:["getTarget","isContinuous","config"],Null:[],Parallel:["succeedOnOne","children"],PlayAnimation:["animPath","config"],PlayAudio:["audioPath"],Random:["children"],ReadBarcode:["onBarcode"],Sequence:["children"],Subtree:["behaviorPath","getNotepad","onResult"],SubtreeJs:["getFileName","getNotepad","onResult"],Switch:["children"],TakePhoto:["resolution","onPhoto","noDistortion"],TextToSpeech:["words","onWord"],TextToSpeechJs:["getWords","onWord"],TimeoutJs:["getTime"],Case:["conditional"],FailOnCondition:["init","conditional"],StartOnAnimEvent:["eventName","onReceived"],StartOnCondition:["init","conditional"],StartOnEvent:["eventName","onEvent"],SucceedOnCondition:["init","conditional"],SucceedOnEmbedded:["rule","onResult"],SucceedOnEvent:["eventName","onEvent"],SucceedOnListen:["getOptions","rule","onResult"],SucceedOnListenJs:["getOptions","getRule","onResult"],TimeoutFail:["timeout"],TimeoutSucceed:["timeout"],TimeoutSucceedJs:["getTime"],WhileCondition:["init","conditional"]}},{}],6:[function(e,t,o){"use strict";class n{constructor(){this.expression={type:"ArrayExpression",elements:[]}}push(e){this.expression.elements.push(e)}}Object.defineProperty(o,"__esModule",{value:!0}),o.default=n},{}],7:[function(e,t,o){"use strict";Object.defineProperty(o,"__esModule",{value:!0}),o.default=(e=>{return{type:"ArrowFunctionExpression",id:null,params:[],defaults:[],body:{type:"BlockStatement",body:[{type:"ReturnStatement",argument:{type:"CallExpression",callee:{type:"Identifier",name:"require"},arguments:[{type:"Literal",value:e,raw:`'${e}'`}]}}]},generator:!1,expression:!1}})},{}],8:[function(e,t,o){"use strict";function n(e,t){let o=[];return t&&(o=[{type:"Identifier",name:"self"}]),{type:"FunctionExpression",id:null,params:o,defaults:[],body:{type:"BlockStatement",body:[{type:"ReturnStatement",argument:e}]},rest:null,generator:!1,expression:!1}}Object.defineProperty(o,"__esModule",{value:!0}),o.default=n},{}],9:[function(e,t,o){"use strict";function n(e){return{type:"Literal",value:e,raw:'"'+e+'"'}}Object.defineProperty(o,"__esModule",{value:!0}),o.default=n},{}],10:[function(e,t,o){"use strict";class n{constructor(e){this.expression={type:"ObjectExpression",properties:e?e:[]}}addKeyValue(e,t){this.expression.properties.push({type:"Property",key:{type:"Literal",value:e,raw:'"'+e+'"'},value:t,kind:"init",method:!1,shorthand:!1})}}Object.defineProperty(o,"__esModule",{value:!0}),o.default=n},{}],11:[function(e,t,o){"use strict";class n{constructor(e,t,o,n,i){this.name=e,this.id=t,this.class=o,this["asset-pack"]=n,this.assetPack=n,this.options=i}set_transitions(e){this.transitions=e}set_exceptions(e){this.exceptions=e}}Object.defineProperty(o,"__esModule",{value:!0}),o.default=n},{}],12:[function(e,t,o){"use strict";class n{constructor(e,t,o,n){this.name=e,this.uri=t,this.activities={},this.local_inits=o,this.param_inits=n,this.transitions={},this.exceptions={}}add_transition(e){let t="~"===e.value[0]?this.exceptions:this.transitions;e.frm in t||(t[e.frm]=[]),t[e.frm].push(e)}add_activity(e){let t=e.id in this.transitions?this.transitions[e.id]:[],o=e.id in this.exceptions?this.exceptions[e.id]:[];e.set_transitions(t),e.set_exceptions(o),this.activities[e.id]=e}toBehaviorifyable(){let e;e={meta:{version:1,name:this.name,uri:this.uri}};for(let t in this.activities){let o=this.activities[t];e[o.id]=o}return e}}Object.defineProperty(o,"__esModule",{value:!0}),o.default=n},{}],13:[function(e,t,o){"use strict";class n{constructor(e,t,o){this.frm=e,this.to=t,this.value=o}}Object.defineProperty(o,"__esModule",{value:!0}),o.default=n},{}],14:[function(e,t,o){"use strict";const n=e("../flow-objects/Activity"),i=e("../flow-objects/Procedure"),r=e("../flow-objects/Transition"),s=e("fs");class c{static getName(e){let t=e.split("/"),o=t[t.length-1].replace(/\.[^.]*$/,"");return o}static getBase(e){return e.replace(/\/[^\/]*$/,"")}static loadProcedureRelative(e,t){let o=c.getBase(e),n=o+"/"+t+".flow";return c.loadProcedure(n)}static loadProcedure(e){let t=s.readFileSync(e,"utf8"),o=JSON.parse(t);return c.loadParsedProcedure(e,o)}static loadParsedProcedure(e,t){let o=c.getName(e),s=new i.default(o,e,{},{});for(let a=0;a<t.linkDataArray.length;a++){let e=t.linkDataArray[a],o=void 0===e.text?"":e.text,n=new r.default(e.from,e.to,o);s.add_transition(n)}for(let a=0;a<t.nodeDataArray.length;a++){let e=t.nodeDataArray[a],o=new n.default(e.name,e.id,e.class,e["asset-pack"],e.options);s.add_activity(o)}return s}}Object.defineProperty(o,"__esModule",{value:!0}),o.default=c},{"../flow-objects/Activity":11,"../flow-objects/Procedure":12,"../flow-objects/Transition":13,fs:void 0}],15:[function(e,t,o){"use strict";const n=e("./version0");Object.defineProperty(o,"__esModule",{value:!0}),o.default={version0:n.default}},{"./version0":16}],16:[function(e,t,o){"use strict";function n(t){function o(t){let o={},n={},r=t+"/schema?(s)/*.json",s=a[r]||i.sync(r);if(a[r]||(a[r]=s),!s.length)return o;s.forEach(function(t){let o=a[t]||e(t);if(void 0===o.meta){for(let e in o){let t=o[e],n=[];t.meta&&(t.meta.forEach(function(e,o){e.type=t.args[o],n.push(e)}),delete t.meta,delete t.args),t.options=n}o.meta={version:1}}a[t]||(a[t]=o),Object.assign(n,o)});for(let c in n)if("meta"!==c){let e=n[c];if(e.options){let t=[];e.options.forEach(function(e){t.push(e.field)}),o[c]=t}}return o}function n(){let t={},n=process.cwd()+"/node_modules/*/package.json",s=a[n]||i.sync(n);return a[n]||(a[n]=s),s.length?void s.forEach(function(t){let n=e(t);if(n.jibo){let e=r.dirname(t);Object.assign(l.project,o(e))}}):t}function u(e,t){let o={};for(let n=0;n<e.length;n++)o[t[n]]=e[n];return o}let l={core:c.default,project:o(process.cwd())};n();for(let f in t)if("meta"!==f){let e=t[f];if(l.core[e.class])e.options=u(e.args,l.core[e.class]);else if(l.project[e.class])e.options=u(e.args,l.project[e.class]);else{const t="Warning: Cannot upgrade arguments in class '%s'. Please update Schema and resave .bt file.";console.error(s.yellow(t),e.class),e.options={}}delete e.args}return t}const i=e("glob"),r=e("path"),s=e("chalk"),c=e("../core");let a={};Object.defineProperty(o,"__esModule",{value:!0}),o.default=n},{"../core":5,chalk:void 0,glob:void 0,path:void 0}],17:[function(e,t,o){"use strict";const n=e("chalk"),i=e("gulp"),r=e("path"),s=e("./tasks"),c=e("pretty-hrtime"),a=e("minimist");class u{static cli(){const e=process.argv[2]||"build";if(!e||!s[e])return console.log(n.red("Must provide a valid task (build, clean, watch)")),process.exit(1);const t=new u;t.run(e).then(()=>{process.exit(0)}).catch(e=>{console.log(n.red(e)),process.exit(1)})}constructor(t,o){if(this.dirname=t||process.cwd(),!o){const t=e(r.resolve(this.dirname,"package.json"));o=t.config}this.config=Object.assign({app:"src/index.ts",bundle:"index.js",map:"index.js.map",tslint:"tslint.json",watch:"src",rules:"rules",rulesSrc:r.join("src","rules"),flowsSrc:r.join("src","flows"),clean:[]},o||{}),"string"==typeof this.config.clean&&(this.config.clean=[this.config.clean]),this.args=a(process.argv.slice(2),{boolean:["production"],alias:{prod:"production"},default:{production:!1}});for(const u in s)s[u](i,this);i.on("task_start",function(e){console.log("Starting","'"+n.cyan(e.task)+"'...")}),i.on("task_stop",function(e){const t=c(e.hrDuration);console.log("Finished","'"+n.cyan(e.task)+"'","after",n.magenta(t))}),i.on("task_err",function(e){const t=c(e.hrDuration);console.log("'"+n.cyan(e.task)+"' "+n.red("errored after"),n.magenta(t))}),i.on("task_not_found",function(e){console.log(n.red("Task '"+e.task+"' is not in your gulpfile")),console.log("Please check the documentation for proper gulpfile formatting"),process.exit(1)})}run(e){return new Promise((t,o)=>{i.start(e,n=>{"watch"!==e&&(n?o(n):t())})})}}Object.defineProperty(o,"__esModule",{value:!0}),o.default=u},{"./tasks":22,chalk:void 0,gulp:void 0,minimist:void 0,path:void 0,"pretty-hrtime":void 0}],18:[function(e,t,o){"use strict";function n(e,t,o){function n(){return v.bundle().on("error",function(e){console.log(p.red(e.message)),this.emit("end")}).pipe(a(e.bundle)).pipe(c()).pipe(s(t,u())).pipe(r.dest("."))}const v=i({entries:e.app,bundleExternal:!1,debug:!t,builtins:!1,extensions:[".bt",".flow"],cache:{},packageCache:{}});return v.plugin(l,{removeComments:!0,target:"es6",preprocess:{DEBUG:!t,RELEASE:!!t}}),t||v.plugin(f,{_:[e.map]}),o&&v.plugin(d,{poll:!0}),v.transform(h.default),v.on("update",n),v.on("log",console.log.bind(console)),n()}const i=e("browserify"),r=e("gulp"),s=e("gulp-if"),c=e("vinyl-buffer"),a=e("vinyl-source-stream"),u=e("gulp-uglify-harmony"),l=e("tsify-preprocess"),f=e("mapstraction"),d=e("watchify"),p=e("chalk"),h=e("../../browserify/BrowserifyTransform");Object.defineProperty(o,"__esModule",{value:!0}),o.default=n},{"../../browserify/BrowserifyTransform":1,browserify:void 0,chalk:void 0,gulp:void 0,"gulp-if":void 0,"gulp-uglify-harmony":void 0,mapstraction:void 0,"tsify-preprocess":void 0,"vinyl-buffer":void 0,"vinyl-source-stream":void 0,watchify:void 0}],19:[function(e,t,o){"use strict";function n(e,t){e.task("build",["clean","lint","flows"],function(e){return i.default(t.config,t.args.production)})}const i=e("../plugins/bundle");Object.defineProperty(o,"__esModule",{value:!0}),o.default=n},{"../plugins/bundle":18}],20:[function(e,t,o){"use strict";function n(e,t){e.task("clean",function(e){return i([t.config.map,t.config.bundle,t.config.rules].concat(t.config.clean))})}const i=e("del");Object.defineProperty(o,"__esModule",{value:!0}),o.default=n},{del:void 0}],21:[function(e,t,o){"use strict";function n(e,t){e.task("flows",["rules"],function(e){const o=i.default.exec(t.config.flowsSrc,t.args.verbose);o.on("log",e=>{console.log(r.green(e))}),o.on("lintError",e=>{console.error(r.red(e))}),o.on("end",t=>{e()})})}const i=e("../../flows/FlowLint"),r=e("chalk");Object.defineProperty(o,"__esModule",{value:!0}),o.default=n},{"../../flows/FlowLint":27,chalk:void 0}],22:[function(e,t,o){"use strict";const n=e("./build");o.build=n.default;const i=e("./clean");o.clean=i.default;const r=e("./lint");o.lint=r.default;const s=e("./watch");o.watch=s.default;const c=e("./watch-build");o.watchBuild=c.default;const a=e("./flows");o.flows=a.default;const u=e("./rules");o.rules=u.default},{"./build":19,"./clean":20,"./flows":21,"./lint":23,"./rules":24,"./watch":26,"./watch-build":25}],23:[function(e,t,o){"use strict";function n(e,t){e.task("lint",function(){return e.src(t.config.app).pipe(i.default({configuration:r.resolve(t.dirname,t.config.tslint)})).pipe(i.default.report())})}const i=e("gulp-tslint"),r=e("path");Object.defineProperty(o,"__esModule",{value:!0}),o.default=n},{"gulp-tslint":void 0,path:void 0}],24:[function(e,t,o){"use strict";function n(e,t){e.task("rules",function(e){const o=i.default.exec(t.config.rulesSrc,t.config.rules,t.args.verbose);o.on("end",t=>{e()}),o.on("fileError",e=>{console.log(r.red(e))}),o.on("compileError",(e,t)=>{console.error(r.underline(e)),console.error(r.red(t))}),o.on("log",e=>{console.log(r.green(e))})})}const i=e("../../rules/Rulify"),r=e("chalk");Object.defineProperty(o,"__esModule",{value:!0}),o.default=n},{"../../rules/Rulify":29,chalk:void 0}],25:[function(e,t,o){"use strict";function n(e,t){e.task("watch-build",function(e){return i.default(t.config,t.args.production,!0)})}const i=e("../plugins/bundle");Object.defineProperty(o,"__esModule",{value:!0}),o.default=n},{"../plugins/bundle":18}],26:[function(e,t,o){"use strict";function n(e,t){e.task("watch",["watch-build"],function(){e.watch(t.config.watch,["lint"]),e.watch(t.config.flowsSrc+"**/*.flow",["flows"]),e.watch(t.config.rulesSrc+"**/*.rule",["rules"])})}Object.defineProperty(o,"__esModule",{value:!0}),o.default=n},{}],27:[function(e,t,o){"use strict";const n=e("fs"),i=e("path"),r=e("./cli"),s=e("events"),c=e("jibo-flow-core"),a=e("glob"),u=["$factory:yes_no","$handle:crew","$handle:loop"];class l{constructor(e,t){this.projectRoot=e,this.uri=t,this.procedures={},this.errors=[],this.flowRoot=c.FlowRootFactory.create(this.uri)}static cli(){r.default()}static exec(e,t){const o=new s.EventEmitter;return process.nextTick(()=>{const n=a.sync(i.join(e,"**/*.flow"));return n.length?(n.forEach(function(e){const n=i.resolve(e),r=new l(process.cwd(),n);r.run();const s=r.getErrorReport();s?o.emit("lintError",s):t&&o.emit("log","Flow is clean "+e)}),void o.emit("end")):void o.emit("end","Must provide files to process")}),o}run(){this.loadProcedures(),this.checkProcedures()}writeReportToFile(e){let t=this.getErrorReport();n.writeFileSync(e,`Preflight Report for ${this.uri}
|
|
`+t)}getErrorReport(){let e="",t="";for(let o of this.getSortedErrors())if(o.procedure.name!==t&&(e+=`
|
|
Errors found in procedure '${o.procedure.name}':
|
|
`,t=o.procedure.name),o.isActivity){let t=o.activity.name?`'${o.activity.name}' `:"";e+=` ${o.code} ${o.activity.class} ${t}${o.message}
|
|
`}else e+=` ${o.code} ${o.message}
|
|
`;return e}loadProcedures(){let e=this.flowRoot.getStartProcedure();this.loadProcedure(e)}loadProcedure(e){e.uri in this.procedures||(this.procedures[e.uri]=e,this.loadSubflows(e),this.loadReturnValues(e))}loadSubflows(e){for(let t in e.activities){let o=e.activities[t];if("Flow.Subflow"===o.class)try{let t=this.flowRoot.loadProcedure(e.uri,o.options.subflowId);o.subflow=t,this.loadProcedure(t)}catch(e){this.addActivityError(o,`references a non-existent flow file '${o.options.subflowId}'`,"MISSING SUBFLOW"),o.subflow=void 0}}}loadReturnValues(e){e.validReturns=[];for(let t in e.activities){let o=e.activities[t];if("Flow.End"===o.class){let t=void 0;try{let e=o.options.getTransition;typeof e==typeof[]&&(e=e.join(" ")),e=`return (${e});`,t=new Function(e)()()}catch(e){continue}e.validReturns.push(t||o.name||"")}}}checkProcedures(){for(let e of this.getSortedProcedures())this.checkProcedure(e)}getSortedProcedures(){let e=[];for(let t in this.procedures)e.push(this.procedures[t]);return e.sort((e,t)=>{return e.name.localeCompare(t.name)}),e}checkProcedure(e){this.checkTransitionCounts(e),this.checkTransitionValues(e),this.checkStartValidity(e),this.checkMimReferences(e)}checkTransitionCounts(e){for(let t in e.activities){let o=e.activities[t],n=o.transitions.length+o.exceptions.length;0===n&&"Flow.Throw"!==o.class&&"Flow.Comment"!==o.class&&"Flow.End"!==o.class,1===n||"Flow.Begin"!==o.class&&"Flow.Parallel-Begin"!==o.class&&"Flow.Catch"!==o.class||this.addActivityError(o,"has more than one transition","MULTIPLE OUTBOUND")}let o={};for(let n of e.connections){if(n.frm in o||(o[n.frm]={}),n.value in o[n.frm]){let t=e.activities[n.frm];this.addActivityError(t,`has duplicate outbound transitions values: "${n.value}"`,"DUP OUTBOUND")}o[n.frm][n.value]=!0}}checkTransitionValues(e){for(let t in e.activities){let o=e.activities[t];if("Flow.Subflow"===o.class&&o.subflow)for(let n of o.subflow.validReturns){let e=!1;for(let t of o.transitions)if(n===t.value||""===t.value){e=!0;break}e||this.addActivityError(o,`has no transition matching the value '${n}' being returned from ${o.options.subflowId}`,"NO MATCHING TRANSITION")}}}checkStartValidity(e){let t=0;for(let o in e.activities){let n=e.activities[o];"Flow.Begin"===n.class&&t++}t<1&&this.addProcedureError(e,"Procedure has no Flow.Begin activity","MISSING BEGIN"),t>1&&this.addProcedureError(e,"Procedure has more than one Flow.Begin activity","MULTIPLE BEGIN")}checkMimReferences(e){for(let t in e.activities){let o=e.activities[t];o.class.startsWith("Mim")&&this.checkMim(o)}}checkMim(e){if(e.options.mimPath){let t=i.resolve(this.projectRoot,e.options.mimPath);if(!n.existsSync(t)||!n.statSync(t).isFile())return void this.addActivityError(e,`references non-existent Mim file '${t}'`,"MISSING MIM");let o;try{o=JSON.parse(n.readFileSync(t,"utf8"))}catch(o){return void this.addActivityError(e,`references Mim file '${t}' with bad JSON`,"BAD MIM")}if(o.rule_name&&"announcement"!==o.mim_type){let t=i.resolve(this.projectRoot,o.rule_name);""===o.rule_name||u.indexOf(o.rule_name)!==-1||n.existsSync(t)&&n.statSync(t).isFile()||this.addActivityError(e,`rule file '${o.rule_name}' in '${e.options.mimPath}' does not exist`,"MISSING RULE")}for(let r of o.prompts)if(r.prompt.indexOf("<anim ")>=0){let t=r.prompt.replace(/.*path='([^']*)'.*/,"$1"),o=i.resolve(this.projectRoot,"animations",t);n.existsSync(o)||this.addActivityError(e,`prompt animation '${t}' in '${e.options.mimPath}' does not exist`,"MISSING ANIMATION")}}}addProcedureError(e,t,o){this.errors.push(new f(e,t,o))}addActivityError(e,t,o){this.errors.push(new f(e,t,o))}getSortedErrors(){return this.errors.sort((e,t)=>{if(e.procedure.name===t.procedure.name){if(e.isActivity===t.isActivity){let o=e.code+e.activity.class+e.activityName,n=t.code+t.activity.class+t.activityName;return o.localeCompare(n)}return+e.isActivity-+t.isActivity}return e.procedure.name.localeCompare(t.procedure.name)}),this.errors}}class f{constructor(e,t,o){void 0!==e.procedure?(this.isActivity=!0,this.procedure=e.procedure,this.activityName=e.name,this.activity=e):(this.isActivity=!1,this.procedure=e,this.activityName="",this.activity=null),this.message=t,this.code=o}}Object.defineProperty(o,"__esModule",{value:!0}),o.default=l},{"./cli":28,events:void 0,fs:void 0,glob:void 0,"jibo-flow-core":void 0,path:void 0}],28:[function(e,t,o){"use strict";function n(){const e=i(process.argv.slice(2),{string:["dir"],boolean:["verbose"],alias:{v:"verbose",d:"dir"},default:{verbose:!1}}),t=s.default.exec(e.dir,e.verbose);t.on("end",e=>{e&&console.log(e),process.exit(0)}),t.on("log",e=>{console.log(r.green(e))}),t.on("lintError",e=>{console.error(r.red(e))})}const i=e("minimist"),r=e("chalk"),s=e("./FlowLint");Object.defineProperty(o,"__esModule",{value:!0}),o.default=n},{"./FlowLint":27,chalk:void 0,minimist:void 0}],29:[function(e,t,o){"use strict";const n=e("find-root"),i=e("path"),r=e("fs"),s=e("./cli"),c=e("mkdirp"),a=e("glob"),u=e("events");let l=1;class f{static sync(e,t){const o=/\.rule$/.test(e)?r.readFileSync(e,"utf8"):e;return t=t||f.defaultOutput(e),r.writeFileSync(t,f.toBuffer(o)),t}static async(e,t,o){"function"==typeof t&&(o=t,t=null),/\.rule$/.test(e)?(t=t||f.defaultOutput(e),r.readFile(e,"utf8",function(e,n){return e?o(e):void f.fromString(n,t,o)})):f.fromString(e,t,o)}static cli(){s.default()}static get nlu(){if(!f._nlu){let t;const o=process.versions.electron?"parser-electron":"parser-node",r=i.join(n(__dirname)),s=i.join(r,o,"build","Release","jsjibonlu.node"),c=i.join(r,o,"deps","data");try{t=e(s),t.set_data_dir(c)}catch(e){console.error(e),t=void 0}f._nlu=t}return f._nlu}static exec(e,t,o){const n=new u.EventEmitter;return process.nextTick(()=>{const s=a.sync(i.join(e,"**/*.rule"));return s.length?(c.sync(i.resolve(t)),s.forEach(function(s){const a=i.resolve(s);try{r.statSync(a)}catch(e){return void n.emit("fileError","File does not exist '"+s+"'")}let u;u=e?s.replace(/\.rule$/,".fst").replace(e+"/",""):i.basename(s,".rule")+".fst";const l=i.resolve(t,u),d=i.dirname(l);c.sync(d);try{f.sync(a,l)}catch(e){return void n.emit("compileError",s,e)}o&&n.emit("log","Saved '"+s+"' to '"+u+"'")}),void n.emit("end")):void n.emit("end","Must provide files to process")}),n}static defaultOutput(e){return e.replace(/\.rule$/,".fst")}static fromString(e,t,o){try{const n=f.toBuffer(e);r.writeFile(t,n,function(e){o(e,t)})}catch(e){o(e,t)}}static toBuffer(e){try{const t=f.nlu.compile_fst_from_text(e,`handle:${++l}`);return t.to_buffer()}catch(e){let t=JSON.parse(e.message),o=`${t.exception}
|
|
`;throw o+=`${t.info.msg}
|
|
`,t.info.line&&(o+=`line: ${t.info.line} `,t.info.column&&(o+=`column: ${t.info.column} `)),new Error(o)}}}Object.defineProperty(o,"__esModule",{value:!0}),o.default=f},{"./cli":30,events:void 0,"find-root":void 0,fs:void 0,glob:void 0,mkdirp:void 0,path:void 0}],30:[function(e,t,o){"use strict";function n(){const e=i(process.argv.slice(2),{alias:{v:"verbose",i:"input",o:"output"},boolean:["update","verbose"],string:["output","input"]}),t=s.default.exec(e.input,e.output,e.verbose);t.on("end",e=>{e&&console.log(e),process.exit(0)}),t.on("fileError",e=>{console.log(r.red(e))}),t.on("compileError",(e,t)=>{console.error(r.underline(e)),console.error(r.red(t))}),t.on("log",e=>{console.log(r.green(e))})}const i=e("minimist"),r=e("chalk"),s=e("./Rulify");Object.defineProperty(o,"__esModule",{value:!0}),o.default=n},{"./Rulify":29,chalk:void 0,minimist:void 0}],31:[function(e,t,o){"use strict";const n=e("./rules/Rulify");o.Rulify=n.default;const i=e("./bt-flow/Flowify");o.Flowify=i.default;const r=e("./flows/FlowLint");o.FlowLint=r.default;const s=e("./bt-flow/Behaviorify");o.Behaviorify=s.default;const c=e("./browserify/BrowserifyTransform");o.BrowserifyTransform=c.default;const a=e("./dev/JiboDev");o.JiboDev=a.default},{"./browserify/BrowserifyTransform":1,"./bt-flow/Behaviorify":2,"./bt-flow/Flowify":3,"./dev/JiboDev":17,"./flows/FlowLint":27,"./rules/Rulify":29}]},{},[31])(31)}); |