UNPKG

5.04 kBJavaScriptView Raw
1const e=require("./files"),r=require("bluebird"),t=require("lodash"),i=require("path"),o=r.promisifyAll,n=o(require("fs-extra")),a=require("./api");var p=require("jsonschema").Validator;const s=require("./progress");var u=new p,c=require("../fautsrc/validators/input"),d=require("../fautsrc/validators/output");const l=process.cwd(),g=i.join(process.cwd(),"action"),y=i.join(process.cwd(),"trigger"),v=i.join(process.cwd(),"lookup"),j=require("./messagehandler").messagesHandler;var f;const q={id:"/action",type:"object",properties:{label:{type:"string",required:!0},version:{type:"string",required:!0},input:{type:"object",required:!0,properties:{title:{type:"string",required:!0},type:{type:"string",required:!0},properties:{type:"object",required:!0}}},output:{type:"object",required:!0,properties:{type:{type:"string",required:!0},properties:{type:"object",required:!0}}},execute:{type:"any",required:!0}}},$={id:"/trigger",type:"object",properties:{name:{type:"string",required:!0},version:{type:"string",required:!0},input:{type:"object",required:!0,properties:{title:{type:"string"},type:{type:"string"},properties:{type:"object",properties:{event:{type:"object",required:!0},polling:{type:"object",required:!0,properties:{type:{required:!0,const:"boolean"},default:{type:"boolean",required:!0,enum:[!0,!1]},options:{type:"object",required:!0,properties:{hidden:{type:"boolean",required:!0,const:!0}}}}}}}}},output:{type:"object",required:!0},mock_data:{type:"object"},execute:{type:"any",required:!0},activate:{type:"any",required:!0},getUserData:{type:"any"},validate:{type:" any"},register:{type:"any"},unregister:{type:"any"}}},h=e=>{try{var t=require(i.join(g,e))}catch(t){return"MODULE_NOT_FOUND"===t.code?r.reject(`Error in action ${e} ${t.toString()}`):/(SyntaxError|ReferenceError)/i.test(t.toString())?r.reject(`Syntax or Reference Error in action ${e}\n${t.stack}`):r.reject(`File not found of ${e} action, please provide valid action, ${e}`)}if(!t)return r.reject(`File not found of ${e} action, please provide valid action, ${e}`);var o,n,a=u.validate(t,q),p=a.valid;if(p&&(o=c(t.input),n=d(t.output),(o.length||n.length)&&(p=!1)),"function"!=typeof t.execute){p=!1;var s={stack:"execute is not a function"};a.errors?a.errors.push(s):a.errors=[s]}return p?f?m(t,e):r.resolve(!0):o&&o.length?r.reject(`In parsing ${e} action, please provide valid action input data. The following are errors :\n ${o.map(e=>e.message).join(" ")}\n path : ${o.map(e=>e.path).join(" ")}\n `):n&&n.length?r.reject(`In parsing ${e} action, please provide valid action output data. The following are errors :\n ${n.map(e=>e.message).join(" ")}\n path : ${o.map(e=>e.path).join(" ")}`):r.reject(`In parsing ${e} action, pleae provide valid action data. The following are errors ${a.errors.map(e=>e.stack).join(" ")}`)},m=(e,t)=>{var o=e.input.properties;return r.map(Object.keys(o),e=>{if(!o[e].lookup)return r.resolve(!0);try{var n=o[e].lookup.id;require(i.join(l,"lookup",o[e].lookup.id));return r.resolve(!0)}catch(i){return"MODULE_NOT_FOUND"===i.code?r.reject(`Error in lookup ${t} ${i.toString()}`):/(SyntaxError|ReferenceError)/i.test(i.toString())?r.reject(`Syntax or Reference Error in lookup ${n}\n${i.stack}`):r.reject(`Lookup ${o[e].lookup.id} not found in ${t} action`)}})},b=e=>{try{var t=require(i.join(y,e))}catch(t){return"MODULE_NOT_FOUND"===t.code?r.reject(`Error in trigger ${e} ${t.toString()}`):/(SyntaxError|ReferenceError)/i.test(t.toString())?r.reject(`Syntax or Reference Error in trigger ${e}.js\n${t.stack}`):r.reject(`File not found of ${e} trigger, please provide valid trigger`)}if(!t)return r.reject(`File not found of ${e} trigger, please provide valid trigger`);var o,n=u.validate(t,$),a=n.valid,p=[];if("function"!=typeof t.execute&&p.push("execute"),"function"!=typeof t.activate&&p.push("activate"),void 0===t.register&&"function"!=typeof t.validate&&p.push("validate"),a&&(o=(o=c(t.input)).filter(e=>2==e.path.indexOf("event"))).length&&(a=!1),p.length){a=!1;var s={stack:p.join(", ")+" is not a function"};n.errors?n.errors.push(s):n.errors=[s]}return a?new RegExp(t.input.properties.event.enum[0]+"$").test(e)?r.resolve(!0):r.reject(`${e} trigger name is not equals to event name ${t.input.properties.event.enum[0]}, please update its name`):o&&o.length?r.reject(`In parsing ${e} trigger, please provide valid trigger input data. The following are errors :\n ${o.map(e=>e.message).join(" ")}\n path : ${o.map(e=>e.path).join(" ")}\n `):r.reject(`In parsing ${e} trigger, please provide valid trigger data. The following are errors ${n.errors.map(e=>e.stack).join(" ")}`)};module.exports.validate=(()=>r.coroutine(function*(){const t=yield e.getIndex();return f=!!t.lookup,yield r.map(t.actions,h),yield r.map(t.triggers,b),r.resolve(!0)})().catch(e=>r.reject(e))),module.exports.validateServer=((e,r,t)=>{s.printMessage("Deploying");var i={headers:{accesstoken:e},method:"POST",body:{appId:r,buildId:t}};return a.makeApiCall("/app/validate",i)});
\No newline at end of file