Files
JiboSDK/lib/jibo-dev.js

16 lines
29 KiB
JavaScript
Raw Normal View History

2026-03-22 03:21:45 +02:00
/**
* 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].expre
`+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.isA
`;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)});