UNPKG

github-mergerine

Version:

GitHub bot to automatically merge PRs matching certain criteria.

2 lines 31.6 kB
#!/usr/bin/env node (()=>{"use strict";var e={n:r=>{var t=r&&r.__esModule?()=>r.default:()=>r;return e.d(t,{a:t}),t},d:(r,t)=>{for(var n in t)e.o(t,n)&&!e.o(r,n)&&Object.defineProperty(r,n,{enumerable:!0,get:t[n]})},o:(e,r)=>Object.prototype.hasOwnProperty.call(e,r)};const r=require("@babel/runtime/regenerator");var t=e.n(r);const n=require("@babel/runtime/helpers/asyncToGenerator");var a=e.n(n);const c=require("@babel/runtime/helpers/toArray");var u=e.n(c);const s=require("yargs");var o=e.n(s);const i=require("@babel/runtime/helpers/defineProperty");var l=e.n(i);const p=require("@babel/runtime/helpers/objectWithoutProperties");var f=e.n(p);const b=require("path"),h=require("fs"),m=require("timestring");var v=e.n(m),d=function(e){return"string"!=typeof e||/^\d+$/.test(e)?parseInt(e):1e3*v()(e)};require("@babel/runtime/helpers/toConsumableArray");const g=require("debug");var x=e.n(g);require("util");var k=function(e,r){return JSON.stringify({label:e,time:(new Date).getTime(),data:r})},w=function(e){return function(){for(var r=arguments.length,t=new Array(r),n=0;n<r;n++)t[n]=arguments[n];return x().enabled(e)&&console.log(k(e,t))}},y=w("mergerine:log"),_=w("mergerine:config"),E=w("mergerine:trace"),O=w("mergerine:run"),j=w("mergerine:fetch:ok"),S=w("mergerine:fetch:err"),q=w("mergerine:decide");const A=y;function R(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function P(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?R(Object(t),!0).forEach((function(r){l()(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):R(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}const U=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=e.config,t=e.env,n=void 0===t?process.env:t,a=n.MERGERINE_CONFIG,c=void 0===a?"mergerine.json":a,u=n.MERGERINE_MERGEABLE_STATE_CHECK,s=n.MERGERINE_INTERVAL,o=n.MERGERINE_MERGEABLE_STATE_REFRESH_INTERVAL,i=n.MERGERINE_DELETE_BRANCH_AFTER_MERGE,l=n.MERGERINE_DRY,p=n.MERGERINE_GITHUB_TOKEN,m=n.GITHUB_TOKEN,v=r=r||JSON.parse((0,h.readFileSync)((0,b.resolve)(process.cwd(),c),"utf8")),g=v.repos,x=f()(v,["repos"]),k=(g||[]).map((function(e){return P(P({phases:["merge","update"],baseUrl:"https://api.github.com"},x),e)})),w=p||m||r.token;_({tokenPrefix:w&&w.substr(0,2)});var y=parseInt(s)||r.interval||12e4,E=d(y),O=parseInt(o)||r.mergeable_state_refresh_interval||5e3,j=d(O),S="true"===i||r.deleteBranchAfterMerge,q="true"===l||r.dry,A=u?"false"!==u:r.mergeableStateCheck,R=r,U=R.logDataUrlPattern;return P(P({},r),{},{repos:k,logDataUrlPattern:U,token:w,interval:E,mergeableStateRefreshInterval:j,deleteBranchAfterMerge:S,dry:q,mergeableStateCheck:A})},D=require("lodash"),N=require("delay");var I=e.n(N);const M=require("node-fetch");var T=e.n(M);const C=require("fetch-paginate");var G=e.n(C);function J(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function B(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?J(Object(t),!0).forEach((function(r){l()(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):J(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}var L=U(),H=L.token,F=L.logDataUrlPattern,Y=F&&new RegExp(F);global.fetch=T();var $=["application/vnd.github.v3+json","application/vnd.github.loki-preview+json","application/vnd.github.hellcat-preview+json","application/vnd.github.polaris-preview","application/vnd.github.polaris-preview+json","application/vnd.github.howard-the-duck-preview+json","application/json"],V=function(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=r.headers,n=void 0===t?{}:t,a=r.method,c=void 0===a?"get":a,u=f()(r,["headers","method"]),s=B({Accept:$.join(","),Authorization:"token ".concat(H)},n);return G()(e,B({headers:s,method:c,items:function(e){return e.items?e.items:e}},u)).then((function(t){var n=t.res,a=t.data,u=n.headers,s=n.status,o=Y&&Y.test(e);return j(e,{method:c,status:s,reqData:o?r.data:r.data&&"redacted",rateLimit:{limit:u.get("x-ratelimit-limit"),remaining:u.get("x-ratelimit-remaining"),reset:u.get("x-ratelimit-reset")},resData:o?a:a&&"redacted"}),{res:n,data:a}})).catch((function(r){var t=r.message;throw S(e,{method:c,message:t}),E(r),r}))},K=function(e,r){return V("".concat(r.baseUrl,"/repos/").concat(r.owner,"/").concat(r.name).concat(e))};const z=V,Q=require("date-fns");var W=function(e){return e.replace(/\$\{date\((-)?(.*?)\)\}/g,(function(e,r,t){var n=1e3*v()(t),a=Date.now(),c=new Date("-"===r?a-n:a+n);return(0,Q.format)(c,"YYYY-MM-DD")}))};const X=require("@commitlint/lint");var Z=e.n(X);const ee=require("@commitlint/load");var re=e.n(ee);function te(e,r){var t;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(t=function(e,r){if(e){if("string"==typeof e)return ne(e,r);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?ne(e,r):void 0}}(e))||r&&e&&"number"==typeof e.length){t&&(e=t);var n=0,a=function(){};return{s:a,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var c,u=!0,s=!1;return{s:function(){t=e[Symbol.iterator]()},n:function(){var e=t.next();return u=e.done,e},e:function(e){s=!0,c=e},f:function(){try{u||null==t.return||t.return()}finally{if(s)throw c}}}}function ne(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=new Array(r);t<r;t++)n[t]=e[t];return n}var ae=U(),ce=ae.mergeableStateRefreshInterval,ue=ae.mergeableStateCheck,se=function(e){var r=e.head,t=r.repo,n=r.sha,a=t.commits_url.replace("{/sha}","/".concat(n));return"".concat(a,"/status")},oe=function(){var e=a()(t().mark((function e(r,n){var a,c,u,s,o,i;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,a=n.members_url.replace("{/member}",""),E("DEV USER IN TEAM",{login:r,team:n,url:a}),e.next=5,z(a);case 5:if(c=e.sent,u=c.res,s=c.data,u.ok){e.next=11;break}throw o="Get users in team failed with status ".concat(u.status," and body: ").concat(JSON.stringify(s)),new Error(o);case 11:return i=s.some((function(e){return e.login===r})),e.abrupt("return",i);case 15:return e.prev=15,e.t0=e.catch(0),E(e.t0),e.abrupt("return",!1);case 19:case"end":return e.stop()}}),e,null,[[0,15]])})));return function(r,t){return e.apply(this,arguments)}}(),ie=function(e,r){return r.some((function(r){return r.login===e}))},le=function(){var e=a()(t().mark((function e(r,n,a){var c,u,s;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:c=te(a),e.prev=1,c.s();case 3:if((u=c.n()).done){e.next=12;break}return s=u.value,e.next=7,oe(n,s);case 7:if(!e.sent){e.next=10;break}return q("".concat(r.html_url,' allows user "').concat(n,'" in team "').concat(s.name,'"')),e.abrupt("return",!0);case 10:e.next=3;break;case 12:e.next=17;break;case 14:e.prev=14,e.t0=e.catch(1),c.e(e.t0);case 17:return e.prev=17,c.f(),e.finish(17);case 20:return q("".concat(r.html_url,' has no user "').concat(n,'" in teams')),e.abrupt("return",!1);case 22:case"end":return e.stop()}}),e,null,[[1,14,17,20]])})));return function(r,t,n){return e.apply(this,arguments)}}(),pe=function(){var e=a()(t().mark((function e(r,n,a,c){return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!ie(n,a)){e.next=4;break}return q("".concat(r.html_url,' allows user "').concat(n,'" in users')),e.abrupt("return",!0);case 4:return e.abrupt("return",le(r,n,c));case 5:case"end":return e.stop()}}),e)})));return function(r,t,n,a){return e.apply(this,arguments)}}(),fe=function(e,r,t){var n=t.users,a=t.teams;return pe(r,e,n,void 0===a?[]:a)},be=function(e,r){return r.some((function(r){return r.name===e}))},he=function(e,r){return r.every((function(r){return be(r,e)}))},me=function(e,r){return r.some((function(r){return be(r,e)}))},ve=function(){var e=a()(t().mark((function e(r,n){var a,c,u;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a="".concat(r.url.replace("/pulls/","/issues/"),"/labels"),e.next=3,z(a);case 3:return c=e.sent,u=c.data,e.abrupt("return",u);case 6:case"end":return e.stop()}}),e)})));return function(r,t){return e.apply(this,arguments)}}(),de=function(){var e=a()(t().mark((function e(r,n){var a;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.t0=r.labels,e.t0){e.next=5;break}return e.next=4,ve(r,n);case 4:e.t0=e.sent;case 5:if(a=e.t0,q(r.html_url,"labels",a&&a.map((function(e){return e.name})),"vs. expected",n.labels),!(n.labels&&!he(a,n.labels)||n.notLabels&&me(a,n.notLabels))){e.next=9;break}return e.abrupt("return",!1);case 9:return e.abrupt("return",!0);case 10:case"end":return e.stop()}}),e)})));return function(r,t){return e.apply(this,arguments)}}(),ge=function(){var e=a()(t().mark((function e(r,n){var a,c,u,s,o;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=r.base.ref,e.prev=1,e.next=4,K("/branches/".concat(a,"/protection/required_status_checks/contexts"),n);case 4:if(c=e.sent,u=c.res,s=c.data,u.ok){e.next=10;break}throw o="Check required contexts failed with status ".concat(u.status," and body: ").concat(JSON.stringify(s)),new Error(o);case 10:return e.abrupt("return",s);case 13:e.prev=13,e.t0=e.catch(1),E(e.t0);case 16:case"end":return e.stop()}}),e,null,[[1,13]])})));return function(r,t){return e.apply(this,arguments)}}(),xe=function(){var e=a()(t().mark((function e(r,n){var a,c,u,s,o;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=r.base.ref,e.prev=1,e.next=4,K("/branches/".concat(a,"/protection/restrictions"),n);case 4:if(c=e.sent,u=c.res,s=c.data,u.ok){e.next=10;break}throw o="Check required contexts failed with status ".concat(u.status," and body: ").concat(JSON.stringify(s)),new Error(o);case 10:return e.abrupt("return",s);case 13:e.prev=13,e.t0=e.catch(1),E(e.t0);case 16:case"end":return e.stop()}}),e,null,[[1,13]])})));return function(r,t){return e.apply(this,arguments)}}(),ke=function(){var e=a()(t().mark((function e(r,n){var a,c,u,s,o,i,l,p,f,b,h,m,v,d,g,x,k,w,y,_,O,j,S;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a="".concat(r.url,"/reviews"),e.next=3,z(a);case 3:if(c=e.sent,(u=c.data)&&u.length){e.next=8;break}return q("".concat(r.html_url," has no reviews")),e.abrupt("return",!1);case 8:if((s=u.filter((function(e){return"APPROVED"===e.state})))&&s.length){e.next=12;break}return q("".concat(r.html_url," has no approvals")),e.abrupt("return",!1);case 12:if(!(o=u.filter((function(e){return"CHANGES_REQUESTED"===e.state})))||!o.length){e.next=21;break}if(!o.every((function(e){return s.filter((function(r){return r.user.login===e.user.login})).some((function(r){return r.submitted_at>e.submitted_at}))}))){e.next=19;break}q("".concat(r.html_url," has changes requested but are replaced by later approvals from same users")),e.next=21;break;case 19:return q("".concat(r.html_url," has changes requested that are not replaced by later approvals from same users")),e.abrupt("return",!1);case 21:if(!n.restrictions||!n.restrictions.length){e.next=81;break}i=te(n.restrictions),e.prev=23,i.s();case 25:if((l=i.n()).done){e.next=73;break}if(!(p=l.value).teams||!p.teams.length){e.next=71;break}f=te(p.teams),e.prev=29,f.s();case 31:if((b=f.n()).done){e.next=63;break}return h=b.value,m="".concat(n.baseUrl,"/teams/").concat(h.id,"/members"),e.next=36,z(m);case 36:if(v=e.sent,d=v.data,!(h.approvals&&h.approvals>0)){e.next=61;break}g=0,x=te(s),e.prev=41,w=function(){var e=k.value.user.login;if(E("".concat(r.html_url," members"),d),d.some((function(r){return r.login===e}))&&g++,g===h.approvals)return"break"},x.s();case 44:if((k=x.n()).done){e.next=50;break}if("break"!==w()){e.next=48;break}return e.abrupt("break",50);case 48:e.next=44;break;case 50:e.next=55;break;case 52:e.prev=52,e.t0=e.catch(41),x.e(e.t0);case 55:return e.prev=55,x.f(),e.finish(55);case 58:if(g===h.approvals){e.next=61;break}return E("".concat(r.html_url," has only ").concat(g," approvals by team ").concat(h.id," but requires ").concat(h.approvals)),e.abrupt("return",!1);case 61:e.next=31;break;case 63:e.next=68;break;case 65:e.prev=65,e.t1=e.catch(29),f.e(e.t1);case 68:return e.prev=68,f.f(),e.finish(68);case 71:e.next=25;break;case 73:e.next=78;break;case 75:e.prev=75,e.t2=e.catch(23),i.e(e.t2);case 78:return e.prev=78,i.f(),e.finish(78);case 81:return e.next=83,xe(r,n);case 83:if(y=e.sent){e.next=87;break}return q("".concat(r.html_url," has no restrictions")),e.abrupt("return",!0);case 87:_=te(s),e.prev=88,_.s();case 90:if((O=_.n()).done){e.next=100;break}return j=O.value,S=j.user.login,e.next=95,fe(S,r,y);case 95:if(!e.sent){e.next=98;break}return e.abrupt("return",!0);case 98:e.next=90;break;case 100:e.next=105;break;case 102:e.prev=102,e.t3=e.catch(88),_.e(e.t3);case 105:return e.prev=105,_.f(),e.finish(105);case 108:return e.abrupt("return",!1);case 109:case"end":return e.stop()}}),e,null,[[23,75,78,81],[29,65,68,71],[41,52,55,58],[88,102,105,108]])})));return function(r,t){return e.apply(this,arguments)}}(),we=function(){var e=a()(t().mark((function e(r,n){var a,c;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!n.commitlint){e.next=20;break}return e.prev=1,e.next=4,re()(n.commitlint);case 4:return a=e.sent.rules,e.next=7,Z()(r.title,a);case 7:if(!(c=e.sent).valid){e.next=12;break}return e.abrupt("return",!0);case 12:return q("".concat(r.html_url," is not mergeable by commitlint"),c),e.abrupt("return",!1);case 14:e.next=20;break;case 16:return e.prev=16,e.t0=e.catch(1),q("".concat(r.html_url," is not mergeable by commitlint"),e.t0),e.abrupt("return",!1);case 20:return e.abrupt("return",!0);case 21:case"end":return e.stop()}}),e,null,[[1,16]])})));return function(r,t){return e.apply(this,arguments)}}(),ye=function(){var e=a()(t().mark((function e(r,n){return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,we(r,n);case 2:if(e.sent){e.next=4;break}return e.abrupt("return",!1);case 4:return e.next=6,de(r,n);case 6:if(e.sent){e.next=9;break}return q("".concat(r.html_url," is not mergeable by labels")),e.abrupt("return",!1);case 9:return e.next=11,ke(r,n);case 11:if(e.sent){e.next=14;break}return q("".concat(r.html_url," is not mergeable by reviews")),e.abrupt("return",!1);case 14:return q("".concat(r.html_url," is mergeable by labels and reviews")),e.abrupt("return",!0);case 16:case"end":return e.stop()}}),e)})));return function(r,t){return e.apply(this,arguments)}}(),_e=["clean","has_hooks"],Ee=["behind"].concat(_e),Oe=function(e){return"open"!==e.state||e.merged},je=function(){var e=a()(t().mark((function e(r,n){return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!Oe(r)){e.next=3;break}return q("".concat(r.html_url," is closed, not merging")),e.abrupt("return",!1);case 3:if(r.mergeable){e.next=6;break}return q("".concat(r.html_url," is not mergeable, not merging")),e.abrupt("return",!1);case 6:return e.abrupt("return",ye(r,n));case 7:case"end":return e.stop()}}),e)})));return function(r,t){return e.apply(this,arguments)}}(),Se=function(){var e=a()(t().mark((function e(r,n){var a,c,u,s,o,i,l,p;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if("blocked"===r.mergeable_state){e.next=3;break}return q("".concat(r.html_url,' is not blocked (but "').concat(r.mergeable_state,'"), not pending statuses')),e.abrupt("return",!1);case 3:if(q("".concat(r.html_url," is blocked, checking if otherwise mergeable")),je(r,n)){e.next=6;break}return e.abrupt("return",!1);case 6:return e.next=8,ge(r,n);case 8:if((a=e.sent)&&a.length){e.next=12;break}return q("no required status checks found, not pending"),e.abrupt("return",!1);case 12:return c=se(r),e.next=15,z(c);case 15:if(u=e.sent,s=u.res,o=u.data,s.ok){e.next=21;break}throw i="Fetch statuses failed with status ".concat(s.status," and body: ").concat(JSON.stringify(o)),new Error(i);case 21:return l=o.statuses,p=a.some((function(e){return l.some((function(r){return r.context===e&&"pending"===r.state}))})),e.abrupt("return",p);case 24:case"end":return e.stop()}}),e)})));return function(r,t){return e.apply(this,arguments)}}(),qe=function(){var e=a()(t().mark((function e(r,n){return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if("unstable"!==r.mergeable_state||!ue){e.next=2;break}return e.abrupt("return",je(r,n));case 2:if(_e.includes(r.mergeable_state)){e.next=5;break}return q("".concat(r.html_url," does not have mergeable state, not merging")),e.abrupt("return",!1);case 5:return e.abrupt("return",je(r,n));case 6:case"end":return e.stop()}}),e)})));return function(r,t){return e.apply(this,arguments)}}(),Ae=function(){var e=a()(t().mark((function e(r,n){return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!Oe(r)){e.next=3;break}return q("".concat(r.html_url," is closed, not updating")),e.abrupt("return",!1);case 3:if("behind"===r.mergeable_state){e.next=6;break}return q("".concat(r.html_url," is not behind, not updating")),e.abrupt("return",!1);case 6:return e.abrupt("return",ye(r,n));case 7:case"end":return e.stop()}}),e)})));return function(r,t){return e.apply(this,arguments)}}(),Re=function(e){return Oe(e)||!function(e){return Ee.includes(e.mergeable_state)}(e)},Pe=function(){var e=a()(t().mark((function e(r,n){var a,c;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return c=[a={pull:r}],e.next=4,Se(r,n);case 4:if(!e.sent){e.next=7;break}return q("".concat(r.html_url," is mergeable except blocked by pending statuses, waiting")),e.abrupt("return",{action:"wait",result:a,results:c,options:n});case 7:return e.next=9,qe(r,n);case 9:if(!e.sent){e.next=11;break}return e.abrupt("return",{action:"merge",result:a,results:c,options:n});case 11:return e.next=13,Ae(r,n);case 13:if(!e.sent){e.next=15;break}return e.abrupt("return",{action:"update",result:a,results:c,options:n});case 15:return e.abrupt("return",{action:"wait",result:a,results:c,options:n});case 16:case"end":return e.stop()}}),e)})));return function(r,t){return e.apply(this,arguments)}}(),Ue=function(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"desc";if(!e)return 0;var t=new Date(e).getTime();return"asc"===r?t:-t},De=function(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return e&&(0,D.sortBy)(e,(function(e){var t=r.priorityLabels;if(!t)return 0;var n=e.pull.labels;return n?-t.reduce((function(e,r,t){return n.some((function(e){return e.name===r}))?e+t+1:e}),0):0}),(function(e){var t=r.sort,n=void 0===t?"created":t,a=r.direction;if("created"===n)return Ue(e.pull.created_at,a);if("updated"===n)return Ue(e.pull.updated_at,a);throw new Error('unsupported "sort" value "'.concat(n,'"'))}),(function(e){return e.pull.number}))},Ne=function(){var e=a()(t().mark((function e(r,n){var a,c,u,s,o,i,l,p,f,b,h,m,v;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:a=n.phases,q("phases: ".concat(a.join(", "))),r=De(r,n),q("results",r.map((function(e){return e.pull.number})).join(",")),q("phase: pending"),c=te(r),e.prev=6,c.s();case 8:if((u=c.n()).done){e.next=18;break}return s=u.value,o=s.pull,e.next=13,Se(o,n);case 13:if(!e.sent){e.next=16;break}return q("".concat(o.html_url," is mergeable except blocked by pending statuses, waiting")),e.abrupt("return",{action:"wait",result:s,results:r,options:n});case 16:e.next=8;break;case 18:e.next=23;break;case 20:e.prev=20,e.t0=e.catch(6),c.e(e.t0);case 23:return e.prev=23,c.f(),e.finish(23);case 26:if(!a.includes("merge")){e.next=48;break}q("phase: mergeable"),i=te(r),e.prev=29,i.s();case 31:if((l=i.n()).done){e.next=40;break}return p=l.value,f=p.pull,e.next=36,qe(f,n);case 36:if(!e.sent){e.next=38;break}return e.abrupt("return",{action:"merge",result:p,results:r,options:n});case 38:e.next=31;break;case 40:e.next=45;break;case 42:e.prev=42,e.t1=e.catch(29),i.e(e.t1);case 45:return e.prev=45,i.f(),e.finish(45);case 48:if(!a.includes("update")){e.next=70;break}q("phase: updateable"),b=te(r),e.prev=51,b.s();case 53:if((h=b.n()).done){e.next=62;break}return m=h.value,v=m.pull,e.next=58,Ae(v,n);case 58:if(!e.sent){e.next=60;break}return e.abrupt("return",{action:"update",result:m,results:r,options:n});case 60:e.next=53;break;case 62:e.next=67;break;case 64:e.prev=64,e.t2=e.catch(51),b.e(e.t2);case 67:return e.prev=67,b.f(),e.finish(67);case 70:return e.abrupt("return",{action:"wait",results:r,options:n});case 71:case"end":return e.stop()}}),e,null,[[6,20,23,26],[29,42,45,48],[51,64,67,70]])})));return function(r,t){return e.apply(this,arguments)}}(),Ie=function(e,r){return Ne(e.map((function(e){return{pull:e}})),r)},Me=function(){var e=a()(t().mark((function e(r){var n,a,c,u,s,o,i,l,p,f;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=r.baseUrl,a=r.owner,c=r.name,u=r.pullsMode,s=r.query,"search"!==u){e.next=16;break}return e.prev=2,e.next=5,z("".concat(n,"/search/issues?q=").concat(encodeURIComponent(s)));case 5:i=e.sent,l=i.data,A({searchData:l}),o=l,e.next=14;break;case 11:e.prev=11,e.t0=e.catch(2),E(e.t0);case 14:e.next=28;break;case 16:return e.prev=16,e.next=19,z("".concat(n,"/repos/").concat(a,"/").concat(c,"/pulls"));case 19:p=e.sent,f=p.data,A({listData:f}),o=f.filter(Re),e.next=28;break;case 25:e.prev=25,e.t1=e.catch(16),E(e.t1);case 28:return A({pulls:o}),e.abrupt("return",o);case 30:case"end":return e.stop()}}),e,null,[[2,11],[16,25]])})));return function(r){return e.apply(this,arguments)}}(),Te=function(){var e=a()(t().mark((function e(r){var n,a,c,u,s,o,i,l,p,f,b,h;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=r.baseUrl,a=r.owner,c=r.name,u=r.pulls,s=[],o=te(u),e.prev=3,o.s();case 5:if((i=o.n()).done){e.next=24;break}return l=i.value,e.prev=7,p="".concat(n,"/repos/").concat(a,"/").concat(c,"/pulls/").concat(l.number),e.next=11,z(p);case 11:f=e.sent,b=f.res,h=f.data,A({pullNum:l.html_url,res:b,fullPull:h}),h.labels=l.labels,s.push(h),e.next=22;break;case 19:e.prev=19,e.t0=e.catch(7),E(e.t0);case 22:e.next=5;break;case 24:e.next=29;break;case 26:e.prev=26,e.t1=e.catch(3),o.e(e.t1);case 29:return e.prev=29,o.f(),e.finish(29);case 32:return e.abrupt("return",s);case 33:case"end":return e.stop()}}),e,null,[[3,26,29,32],[7,19]])})));return function(r){return e.apply(this,arguments)}}(),Ce=function(e){return"unknown"===e.mergeable_state},Ge=function(e){return void 0!==e&&0!==e.length&&e.every(Ce)};const Je=function(){var e=a()(t().mark((function e(r){var n,a,c,u,s,o,i,l;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=r.query,a=r.baseUrl,c=r.owner,u=r.name,s=r.pullsMode,o=void 0===s?n?"search":"list":s,n=W(n),e.next=5,Me({baseUrl:a,owner:c,name:u,pullsMode:o,query:n});case 5:if((i=e.sent)&&i.length){e.next=8;break}return e.abrupt("return",{action:"wait"});case 8:return e.next=10,Te({baseUrl:a,owner:c,name:u,pulls:i});case 10:if(l=e.sent,!Ge(l)){e.next=18;break}return A('All PRs are in mergeable state "unknown", waiting '.concat(ce,"ms to refresh...")),e.next=15,I()(ce);case 15:return e.next=17,Te({baseUrl:a,owner:c,name:u,pulls:i});case 17:l=e.sent;case 18:return e.abrupt("return",Ie(l,r));case 19:case"end":return e.stop()}}),e)})));return function(r){return e.apply(this,arguments)}}();var Be=U().deleteBranchAfterMerge,Le=function(){var e=a()(t().mark((function e(r,n){var a,c,u,s;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=r.head,c=a.ref,u=a.repo.git_refs_url,s=u.replace("{/sha}","/heads/".concat(c)),e.prev=2,e.next=5,z(s,{method:"delete"});case 5:return e.abrupt("return",e.sent);case 8:throw e.prev=8,e.t0=e.catch(2),E(e.t0),e.t0;case 12:case"end":return e.stop()}}),e,null,[[2,8]])})));return function(r,t){return e.apply(this,arguments)}}();const He=function(){var e=a()(t().mark((function e(r,n){var a,c,u,s,o,i,l;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=r.url,c="".concat(a,"/merge"),u={},n.merge_method&&(u.merge_method=n.merge_method),n.mergeCommitMessageSimple&&(u.commit_title="".concat(r.title," (#").concat(r.number,")"),u.commit_message=""),e.prev=5,e.next=8,z(c,{method:"put",body:JSON.stringify(u),headers:{"Content-Type":"application/json"}});case 8:if(s=e.sent,o=s.res,i=s.data,o.ok){e.next=14;break}throw l="Merge failed with status ".concat(o.status," and body: ").concat(JSON.stringify(i)),new Error(l);case 14:if(!Be){e.next=17;break}return e.next=17,Le(r,n);case 17:return e.abrupt("return",{res:o,data:i});case 20:throw e.prev=20,e.t0=e.catch(5),E(e.t0),e.t0;case 24:case"end":return e.stop()}}),e,null,[[5,20]])})));return function(r,t){return e.apply(this,arguments)}}(),Fe=function(){var e=a()(t().mark((function e(r){var n,a,c,u,s,o,i,l;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=r.head,a=r.base,c=n.repo.merges_url,u={base:n.ref,head:a.ref},e.prev=3,e.next=6,z(c,{method:"post",body:JSON.stringify(u),headers:{"Content-Type":"application/json"}});case 6:if(s=e.sent,o=s.res,i=s.data,o.ok){e.next=12;break}throw l="Update failed with status ".concat(o.status," and body: ").concat(JSON.stringify(i)),new Error(l);case 12:return e.abrupt("return",{res:o,data:i});case 15:throw e.prev=15,e.t0=e.catch(3),E(e.t0),e.t0;case 19:case"end":return e.stop()}}),e,null,[[3,15]])})));return function(r){return e.apply(this,arguments)}}();function Ye(e,r){var t;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(t=function(e,r){if(e){if("string"==typeof e)return $e(e,r);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?$e(e,r):void 0}}(e))||r&&e&&"number"==typeof e.length){t&&(e=t);var n=0,a=function(){};return{s:a,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var c,u=!0,s=!1;return{s:function(){t=e[Symbol.iterator]()},n:function(){var e=t.next();return u=e.done,e},e:function(e){s=!0,c=e},f:function(){try{u||null==t.return||t.return()}finally{if(s)throw c}}}}function $e(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=new Array(r);t<r;t++)n[t]=e[t];return n}var Ve=U(),Ke=Ve.repos,ze=Ve.dry,Qe=function(){var e=a()(t().mark((function e(r){var n,a,c;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Je(r);case 2:if(n=e.sent,a=(0,D.get)(n,"result.pull.html_url"),q(a?"action=".concat(n.action," for ").concat(a):"action=".concat(n.action)),!ze){e.next=8;break}return O("dry mode, not acting..."),e.abrupt("return",n);case 8:if(O("acting..."),e.prev=9,"merge"!==n.action){e.next=30;break}return O("merging..."),e.next=14,He(n.result.pull,r);case 14:return O("...done merging"),O("checking for any others to update..."),e.prev=16,e.next=19,Qe(r);case 19:c=e.sent,e.next=27;break;case 22:e.prev=22,e.t0=e.catch(16),E(e.t0),O("error executing post-merge decision",n),console.error("error executing post-merge decision",c);case 27:O("...done checking for any others to update"),e.next=35;break;case 30:if("update"!==n.action){e.next=35;break}return O("updating..."),e.next=34,Fe(n.result.pull);case 34:O("...done updating");case 35:e.next=42;break;case 37:e.prev=37,e.t1=e.catch(9),E(e.t1),O("error executing decision",e.t1,n),n.error=e.t1;case 42:return O("...done acting"),e.abrupt("return",n);case 44:case"end":return e.stop()}}),e,null,[[9,37],[16,22]])})));return function(r){return e.apply(this,arguments)}}();const We=function(){var e=a()(t().mark((function e(){var r,n,a,c,u;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:r=[],n=Ye(Ke),e.prev=2,n.s();case 4:if((a=n.n()).done){e.next=12;break}return c=a.value,e.next=8,Qe(c);case 8:u=e.sent,r.push(u);case 10:e.next=4;break;case 12:e.next=17;break;case 14:e.prev=14,e.t0=e.catch(2),n.e(e.t0);case 17:return e.prev=17,n.f(),e.finish(17);case 20:return e.abrupt("return",r);case 21:case"end":return e.stop()}}),e,null,[[2,14,17,20]])})));return function(){return e.apply(this,arguments)}}(),Xe=require("express");var Ze=e.n(Xe);const er=function(e){var r=Ze()();r.get("/health",(function(e,r){r.set("content-type","application/health+json"),r.send({status:"pass"})}));var t="number"==typeof e?e:0,n=r.listen(t,(function(){var e="http://localhost:".concat(n.address().port);console.log("health check at ".concat(e,"/health"))}))};var rr=U(),tr=rr.interval,nr=rr.health,ar=function(){var e=a()(t().mark((function e(){return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:O("starting poll..."),(nr||0===nr)&&er(nr),We().then((function(){O("...poll completed, waiting ".concat(tr," milliseconds")),setTimeout((function(){ar()}),tr)}));case 3:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();const cr=ar,ur=require("@babel/runtime/helpers/slicedToArray");var sr=e.n(ur);const or=require("url"),ir=require("parse-github-url");var lr=e.n(ir),pr=function(e){return/\bgithub\.com$/.test(e)?"https://api.github.com":"https://".concat(e,"/api/v3")},fr=function(e){if(e=function(e){return/^http/.test(e)?e:"https://".concat(e.replace(/^:\/\//,""))}(e),/\bapi\.github\.com\b/.test(e)||/\/api\/v3\//.test(e)){e=e.replace("/api/v3/","/");var r=(0,or.parse)(e),t=r.host,n=r.pathname.split("/"),a=sr()(n,6),c=a[2],u=a[3],s=a[5];return{baseUrl:pr(t),owner:c,name:u,number:s}}var o=lr()(e),i=o.host,l=o.owner,p=o.name,f=o.filepath;return{baseUrl:pr(i),owner:l,name:p,number:f}};const br=function(e){if(4===e.length){var r=sr()(e,4),t=r[0],n=r[1],a=r[2],c=r[3];return fr("".concat(t,"/").concat(n,"/").concat(a,"/pull/").concat(c))}if(3===e.length){var u=sr()(e,3),s=u[0],o=u[1],i=u[2];return fr("".concat(s,"/").concat(o,"/pull/").concat(i))}if(2===e.length){var l=sr()(e,2),p=l[0],f=l[1];return fr("".concat(p,"/pull/").concat(f))}var b=sr()(e,1)[0];return fr(b)};var hr=U().repos,mr=o().argv._,vr=u()(mr),dr=vr[0],gr=void 0===dr?"poll":dr,xr=vr.slice(1),kr=function(e){var r=e.baseUrl,t=e.owner,n=e.name;return hr.find((function(e){return e.baseUrl===r&&e.owner===t&&e.name===n}))};a()(t().mark((function e(){var r,n,a,c,u,s,o,i,l,p,f,b,h,m,v;return t().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if("decide"!==gr){e.next=14;break}return r=br(xr),n=r.baseUrl,a=r.owner,c=r.name,u=r.number,s=kr({baseUrl:n,owner:a,name:c}),o="".concat(n,"/repos/").concat(a,"/").concat(c,"/pulls/").concat(u),e.next=6,z(o);case 6:return i=e.sent,l=i.data,e.next=10,Pe(l,s);case 10:p=e.sent,console.log({decision:p}),e.next=26;break;case 14:if("run"!==gr){e.next=25;break}if(!xr.length){e.next=22;break}return f=br(xr),b=f.baseUrl,h=f.owner,m=f.name,v=kr({baseUrl:b,owner:h,name:m}),e.next=20,Qe(v);case 20:e.next=23;break;case 22:We();case 23:e.next=26;break;case 25:"poll"===gr?cr():(console.error('unsupported command "'.concat(gr,'"')),process.exit(1));case 26:case"end":return e.stop()}}),e)})))()})();