UNPKG

5.84 kBJavaScriptView Raw
1const e=require("bluebird"),i=e.promisifyAll(require("fs-extra")),t=require("path"),n=require("../utils/files"),r=require("../utils/helper"),l=require("../utils/history"),o=require("./../utils/credentials"),u=require("../utils/input"),s=require("lodash"),c=require("path"),d=t.join,p=require("./../utils/api"),a=require("inquirer"),_=require("./../utils/messagehandler").messagesHandler;function f(){try{return i.readdirSync(d(config.APP_DIR,"lookup")).map(e=>e.replace(t.extname(e),""))}catch(e){return[]}}module.exports=e.coroutine(function*(i){if(!i||"lookup"!==i)return e.reject(_("INVALID_ATTACH_PARAMS"));yield n.getIndex();let t,r=null,l=null,o=null,u=null,s=null,c=null,d=null,p=null,a=null,g=null;const S=f();if(!S.length)return e.reject(_("LOOKUP_NOT_FOUND"));const T=yield k("lookup",_("SELECT_LOOKUP_PROMPT"),S),A=yield E("isAction",_("LOOKUP_ACTION_PROMPT")),v=yield E("isTrigger",_("LOOKUP_TRIGGER_PROMPT"));if(g=T.lookup,!A.isAction&&!v.isTrigger)return e.reject(_("LOOKUP_ATTACH_ERROR"));if(A.isAction){let e=y(),i=P("action",u=(r=yield k("action",_("LOOKUP_ACTION_LIST"),e)).action);if(i.length){o=yield L(o=(l=yield k("field",_("ACTION_FIELDS"),i)).field,"action",u),t=/\.+/g.test(o);let e=yield I({lookup_id:g,action_id:u,field_id:o});if(i=t?C("action",u,o):i,e)var D=yield E("relink",_("LOOKUP_ENTRY_EXIST",{name:o}));if(!e||D.relink){if((yield E("depExist",_("LOOKUP_DEPENDENCY"))).depExist){let e=N(i,o);e.length?(s=(s=yield h(e)).dependency,s=t?[`$currentLevel$$${s}`]:s):console.log(_("NO_DEPENDENCY_FIELDS"))}Console.info(_("LOOKUP_ATTACH_SUCCESS",{field:o,name:u}))}}else Console.log(_("NO_FIELDS",{type:"action"}))}if(v.isTrigger){let e=O(),i=P("trigger",a=(yield k("trigger",_("LOOKUP_TRIGGER_LIST"),e)).trigger);if(i.length){p=yield L(p=(d=yield k("field",_("TRIGGER_FIELDS"),i)).field,"trigger",a),t=/\.+/g.test(p);let e=yield I({lookup_id:g,trigger_id:a,field_id:p});if(i=t?C("trigger",a,p):i,e)D=yield E("relink",_("LOOKUP_ENTRY_EXIST",{name:p}));if(!e||D.relink){if((yield E("depExist",_("LOOKUP_DEPENDENCY"))).depExist){let e=N(i,p);e.length?(c=(c=yield h(e)).dependency,c=t?[`$currentLevel$$${c}`]:c):console.log(_("NO_DEPENDENCY_FIELDS"))}Console.info(_("LOOKUP_ATTACH_SUCCESS",{name:a,field:p}))}}else Console.log(_("NO_FIELDS",{type:"trigger"}))}yield m(g,u,o,s,a,p,c)});var g=e.coroutine(function*(){try{var i=yield o.checkCredentials();if(!i)return e.reject(_("UNAUTHORIZED"))}catch(i){return e.reject(i)}var t=yield n.getIndex(),r=yield n.getLinkedApp();r=(r=JSON.parse(r)).service_name;var l={method:"GET",headers:{accesstoken:i}},u=yield p.makeApiCall("/app/"+r+"/versions",l);return u.body[0]&&u.body[0].versions[0].title!==t.name?e.reject(_("CONNECTOR_VERSION_NOT_FOUND")):u.body[0].versions});function y(){try{return i.readJsonSync(d(config.APP_DIR,"index.json")).actions}catch(e){return[]}}function O(){try{return i.readJsonSync(d(config.APP_DIR,"index.json")).triggers}catch(e){return[]}}function m(i,t,r,l,o,u,d){return e.coroutine(function*(){var e={lookup_id:i,action_id:t,field_id:r,dependencies:l||[]},p={lookup_id:i,trigger_id:o,field_id:u,dependencies:d||[]};let a=yield n.getIndex();!s.isArray(a.lookup_attachments)&&(a.lookup_attachments=[]);let _={lookup_id:e.lookup_id,action_id:e.action_id,field_id:e.field_id},f={lookup_id:p.lookup_id,trigger_id:p.trigger_id,field_id:p.field_id},g=yield I(_),y=yield I(f);if(g){T(a,s.findIndex(a.lookup_attachments,_),e)}else A(a,e);if(y){T(a,s.findIndex(a.lookup_attachments,f),p)}else A(a,p);yield n.writeFile(c.join(config.APP_DIR,"index.json"),JSON.stringify(a,null,2))})().catch(i=>e.reject(i))}function k(e,i,t){i=[{type:"list",message:i,name:e,default:[],choices:t}];return a.prompt(i)}function P(e,i){try{var t=require(d(config.APP_DIR,e,i));t.input&&t.input.properties||(Console.error("Invalid module "+i),process.exit(0));var n=Object.keys(t.input.properties).filter(e=>e);return"trigger"==e?s.pull(n,"event","polling"):s.noop(),n}catch(e){return"MODULE_NOT_FOUND"==e.code?(Console.error(e+" in "+i+".js"),process.exit(0)):[]}}function S(e,t,n){var r=null,l=null;return"action"==e?(r=i.readFileSync(d(CLI_PATH,"snippets","action-lookup.js"),"utf8"),l={required:n,label:t.label,desc:t.description,mock:JSON.stringify(t.mock_input,null,3),input:JSON.stringify(t.input,null,3),output:JSON.stringify(t.output,null,3),execute:String(t.execute)}):(r=i.readFileSync(d(CLI_PATH,"snippets","trigger-lookup.js"),"utf8"),l={required:n,name:t.name,mock:JSON.stringify(t.mock_input,null,3),mock_data:JSON.stringify(t.mock_data||{},null,3),input:JSON.stringify(t.input,null,3),output:JSON.stringify(t.output,null,3),execute:String(t.execute,null,3),validate:String(t.validate,null,3),activate:String(t.activate,null,3)}),{template:r,context:l}}function E(e,i){i=[{type:"confirm",message:i,name:e}];return a.prompt(i)}function N(e,i){return i=/\.+/.test(i)?i.split(".").pop():i,e.length>1?s.pull(e,i):[]}function h(e){var i=[{type:"checkbox",message:"Select dependency fields",name:"dependency",choices:e}];return a.prompt(i)}function I(i){return e.coroutine(function*(){const e=yield n.getIndex();return!!e.lookup_attachments&&s.find(e.lookup_attachments,i)})().catch(i=>e.reject(i))}function T(e,i,t){e.lookup_attachments.splice(i,1,t)}function A(e,i){var t=0;for(var n in i)null===i[n]&&t++;t>=2||e.lookup_attachments.push(i)}function L(i,t,n){var r=`${i}`,l=require(d(config.APP_DIR,t,n)),o=s.get(l.input.properties,i);return/object|array/i.test(o.type)?"object"===o.type?k("nested","Select nested field",s.keys(o.properties)).then(e=>L(r=`${r}.properties.${e.nested}`,t,n)):k("nested","Select nested field",s.keys(o.items.properties)).then(e=>L(r=`${r}.items.properties.${e.nested}`,t,n)):e.resolve(r)}function C(e,i,t){let n=require(d(config.APP_DIR,e,i)),r=t.split(".");r.pop();var l=s.get(n.input.properties,r.join("."));return s.keys(l)}
\No newline at end of file