From 2d543d3e7e2c63546420b10f2652cb61e24578fc Mon Sep 17 00:00:00 2001 From: github-actions Date: Tue, 12 May 2020 09:39:35 +0000 Subject: [PATCH] [auto] --- .github/workflows/bundle.yml | 29 - .gitignore | 1 - LICENSE | 22 - README.md | 24 - action.yml | 3 +- dist/index.js | 6 + dist/index.js.cache | Bin 0 -> 367768 bytes dist/index.js.cache.js | 28562 +++++++++++++++++++++++++++++++++ index.js | 45 - package-lock.json | 429 - package.json | 28 - 11 files changed, 28569 insertions(+), 580 deletions(-) delete mode 100644 .github/workflows/bundle.yml delete mode 100644 .gitignore delete mode 100644 LICENSE delete mode 100644 README.md create mode 100644 dist/index.js create mode 100644 dist/index.js.cache create mode 100644 dist/index.js.cache.js delete mode 100644 index.js delete mode 100644 package-lock.json delete mode 100644 package.json diff --git a/.github/workflows/bundle.yml b/.github/workflows/bundle.yml deleted file mode 100644 index 2192523..0000000 --- a/.github/workflows/bundle.yml +++ /dev/null @@ -1,29 +0,0 @@ -on: - push: - branches: - - '**' - -jobs: - build_and_push: - runs-on: ubuntu-18.04 - - steps: - - name: Setup node.js - uses: actions/setup-node@v1 - with: - node-version: 12.x - - - name: Checkout - uses: actions/checkout@v2 - - - name: Output branch name - id: name - run: | - echo "##[set-output name=branch;]${GITHUB_REF#refs/heads/}" - - - name: Push - # To use latest action, specify "release-master" instead of "v0.0.4" - uses: satackey/push-prebuilt-action@v0.0.4 - with: - push-branch: release-${{ steps.name.outputs.branch }} - diff --git a/.gitignore b/.gitignore deleted file mode 100644 index c2658d7..0000000 --- a/.gitignore +++ /dev/null @@ -1 +0,0 @@ -node_modules/ diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 795bfe6..0000000 --- a/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -MIT License - -Copyright (c) 2020 BinotaLIU - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - diff --git a/README.md b/README.md deleted file mode 100644 index baa185c..0000000 --- a/README.md +++ /dev/null @@ -1,24 +0,0 @@ -# `@binotaliu/action-discord-notifier` - -Post message to discord using discord webhook - -## Inputs - -### `webhook` - -**Required** A full url of discord webhook. - -## Outputs - -### `result` - -Message sent. - -## Example usage - -```yaml -uses: binotaliu/action-discord-notifier@v1.2.0 -with: - webhook: https://discordapp.com/api/00000000000/secret -``` - diff --git a/action.yml b/action.yml index 4685b5e..3029c16 100644 --- a/action.yml +++ b/action.yml @@ -14,5 +14,4 @@ output: description: Webhook result runs: using: node12 - main: index.js - + main: dist/index.js diff --git a/dist/index.js b/dist/index.js new file mode 100644 index 0000000..c6de921 --- /dev/null +++ b/dist/index.js @@ -0,0 +1,6 @@ +const { readFileSync, writeFileSync } = require('fs'), { Script } = require('vm'), { wrap } = require('module'); +const source = readFileSync(__dirname + '/index.js.cache.js', 'utf-8'); +const cachedData = !process.pkg && require('process').platform !== 'win32' && readFileSync(__dirname + '/index.js.cache'); +const script = new Script(wrap(source), cachedData ? { cachedData } : {}); +(script.runInThisContext())(exports, require, module, __filename, __dirname); +if (cachedData) process.on('exit', () => { try { writeFileSync(__dirname + '/index.js.cache', script.createCachedData()); } catch(e) {} }); diff --git a/dist/index.js.cache b/dist/index.js.cache new file mode 100644 index 0000000000000000000000000000000000000000..71d43ee5131e9ab54cc3d0b540d1ff102d16c202 GIT binary patch literal 367768 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

fRrpsVBuVbU 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

;)$K_x=OpMneP) z!$X!0=tKubk2Bf7MSK%X_HPj1B$NGX#5cucKZ5u!f(RJKcQNAo3h_-h*}p`5mzwNf zAih~9`{#&nj>-NR;tQmvi}*@>2k-?sJq0DcPcjbsKN(+!_kjuXL;e~6M)-=bg<`D6$CQu6Crx$Ss{7`t0Y9vV5xxU8Ms6A4BR1l2JR3&18LiQ zQS{97LiEh@Li7xxf#?~y+k`tr&%hm`XW$OeGjNCK8NfsI4BR1e2JVnKgYQ`34k{nM zaaIm@Q2FqN6diK8mWtRDEGy{1vJ0OH}C!m_?|Lc7mZ!2r7glCWt7~kwp~(0HlX>L-;^`E=M%B1 zl^XiSR?nBgoH;wYhR_bW;c~q2lc5XxI>DjRTL1h~k~aBQ66vFoiH z@=1jV)RC(j+3QFF=el9*;zoq)OzrY&e+uemJ)Y6+iwfQxNZj6tqVhnh&ACP1n1#&z zWIWxE9$Kbawo+O2Ij(K|o8wx>za46NY(|ayu<9;w*SKe9)OX$s=g0(Wb7W-KsII^p zBL1XCrCNVfam=B_3{SQ?H&9#USjLR=hDPf|{CW5-%nC?vKdEVJ@SVcJ1C}bx{>`&2 z&5G|t<_VlRv?{K*6yai}OPGzCoL^Ig3+_H&VTGc~=1AWO#dSfL@7OHMvB-YSC!#R_ zz~yD>5+hu2Sdq~xzQX92E&bwz3!=_ABfi4v*F*Xx2p1b&wkaa+PIT$nd^)owyo>L| z^b;+olik(?TPg&SHQU|36IVOZdqHQkHTzhEXU2)MuzJcS;bcgW4A_`OvJWn}q5MvE za0uC{s{peV-G0usf69IdhO|Kx$>S^!^s@ArG(Y8Un?D!;cU*W{R8d#vA)UF@GivJ8 ziJp?m3J9n7K>M!;V(L9}r7|NASY13-U}XX08p1K|*A{MDM#}OcFl^&bxE&aNbysE! zwE40n03}@hx7S88Uv(w56*cwXi=HYk24N2=4B>^!cTNa1o8IIh?EG5Xih*9)x_Xb# z=b773Ra#kAS8+ud<4fChL$y{AO@&o9fa z#8(y>K|EKX5t+oCMQ9Eroh@MyNA}!`s*nvu7s-jvH~88iCwQnouYzYnNCzEbUd7Y` zc8s#RO0cDS{C;?PDl6t@_lBZkgmzwr72MKQ_DHd>12796hdpgglhxVPJCMqcm+!x5 zST{K9oR=Z4%k03Cit0M~Cch(qVAxS7UlnsMqgq(D^z!Q3QWHZZX9~6JxMKW?3$BFz z?!>z5nfoQ>wRBd%_$heFJ|B7gA2`ec3j(58gk2E6ZwZGKdMk&oNbRYhO(5jXtTsOK=Q_;J%;XS(A?Ph~I>*8`(V8yFWj zheZ8$xST;m%A~SmFJ8Pc1CYO6FWD7!bq(UA&)Mwl$$qrp%k@8z#o@QZAvY+&cO^ah z#Q?UnY%vf8u#4gbL{HtEi)EhQ$kE`?K@1`e)@y zx7Rw|(T$x*3~mjsbHVAiM7;eFFQ#B-@aHG|cku{A!1?C}s&HEsRuOOi_hZ8Zd`=b^ zi6#6sHFw{~ktE?ULlYQ=`F>~aSK@-~?0(1x;nC~kFMqE%0sb0%byaa{;=90{@f=fy>Q$a>k~0+27pC&LHEjuM>4X-rAGnU^dyabNqA5>H}C5W&QqqlVcs}MH2q< zvbmgDVP{-}w{G1j;%EEyD-g?uZQ#O4(xxa8uWD{XrN5#I5+55DVc{&R^^0r9qCL^M zit?EFZJv*XCbI>Bx<$C2RM941f0L59P>e$zcSEJ1PMd%w{2dFw zJEW!4Pvi$3>a|No#&tH*nO9L;Hm`b#DIpd#mjxYpXSZXlNg1(LT-X87G=yFAyRobP z65k%cuTO3=2j4ABx?gY7tbS-xgd6Z%)ROUf1nYK$Ji=2-sGkR}l>Co4B=Ai^P?1BbtVB~)u|``_Y?+!KjCj0}PUF zX%DlHiQ$BQx{W^-DFY*@NDOYTT=(70gwu;pxQAWW?GTCNArUQ8&d&$AIP2CgttpeZ z9xN~-t?z%DAmICF2{D+gtmO~99mdTc?%nz8$^x||<$hc>3oO!BbP?{gKDXlV43&(b z$Ju~!^}g)IXX&O_lW?2z+8?z++AkNKmhn3epE$#wros8Kd>|dlpoAj~!;MV()~<)+ z;G^3$L!)^frf8Ti;*zTj7fBki${_w-WBz%Njh&TEd?HX9sNucBY_4bmEnyxm{QH7` zvOBhe!5S|y7p7v>KL%)YlZoHg+rRKGe zejVh~=@CVmo&Mk`R)0UV7R8vNgR5DgEwVsIOrk3~zUo2Vb`EB>pFhG`aM>)m-1^0KB?V+=i5X z*s8=&8}@N7Y&xb;TQ(o*)-KHgO1+>itGaf+hJpFzzaL!%d!4NM`B%s|ke}$X_50X0 z=Ku#Rn_pW|zf^cBmV!x@59id4p95=Md0;@l{{DFj<}VsBZt>(%W6PKHsjeH*e@S)O z!s!EZipq;7FU$?(moFUOCwFvpzXc^ZIScA9Yq((XlIfLWD(gmGRKDn<5mR%f4X7{6 zA67DB^uWrJ#r>x*%I~*m!Kk8h&lP1qG~~5j97=QMVWP%A>#Fyf$-l5U1sYi>GY{+8 z+kUg?;KM6}swD?vPBsiDYzbeS5Tv1UTNn5?Rb!L-YjQ(WJqZ5U7vIt-Is>GDRHc~y zA!e6-pj6N-O$PmjY@GU-m?E4-ro+WmEuB=i34KfKYI8K=R4+hUk|bX%QA|rav6(un znI1E9h>MNM#rPKlC}tDKu;MzyfPNhko;D+UG**w9@H9RJ=c4Iw0s1-8^GyYaNoMV6 z*z!%5grtxZ8pZiC)UN24%DQ7$0CCAE(WZ562r?!%Tlc}eXqi1Y=5QS3jrw8HYcSrh zC-LCLM;hvRr36!X`$%Z|MzpRQH0hk)rEoB zW4Cu3J&vPk*tp?yrc9j-1%mW}A6n+X*0O&v9z6)*UB3|gel#-`II%>p+Gr~B*w?99w4Xp>qO z!rBc}%vY$VcSF~q8PP}ULg3PRteZnA>W-7^m(|8Tcm*@X#TUt3C2tbmfu<10m;i48 z=;H+66R-%j6ZnBmi46RAn!p~)bST&L60xd&gFQuF4*81?Cr-|H0cu!p0T~QI%KHz0 z)gi%DbtzzykZ)vB&1x6pR=|-jG)LspB!-Su5Xl)Y)sk|PFF50+m3wH(887WzxD7?5 zoOxIuS-P51;xg+t7vF(OywXeJrcqh)a8+=5D}P2_eg{`P0;9T7iEOs<<>&T6FlF#y zykOdkJ!Pw@Q{&z(wh5VvNZ@5PZd`aVVbd|E#NF(OJ0Y#-V?@QRb;L#3h41?qWSG-- z+5?3BHyVz{h1Tg<>}d}qB6%icB4t()aGD4vhbs=$r5ke$!#QmYE>ccGI)h9iS~w?~ zZzW)&G2cq)MsE;-^@|9k-x#+NIE!g@FK;DqbQ`|JPav;F`fv}u2C%BX*wVwHe29m2 z+n2%3T{%+OwJ}n;3z^olI=c9C0<$jewt@c-5y3c=x7LO!jeu*bP`1YyF+#B?R;I5G zE>|sYfv-NqP`}!uangSi89o)_Il=H=6RwO-vaa@r&vf3-zN0K2g_nn4!mLp2ogrXD zOqcF(!RLd!HIrimgPi*@8qo3lTa@T;%=BLiVWsaG4atz0xa{f6wnbL14jBdGSBxs zbt2GBISGlNJx{b`w7BgM>Jb(%RgZ!itm_?R{|SfQ(e*gyB6m0o5~BW+4g7Z09OrE> zR3W@9j;`>HqpO$Ioj999JKkp2x&`LPQ0!*%$-wU+0lw-iWmQoTC=vEvjCm*kW zjX9_#xumwNmi-4iB*&OyI0|FYWYuxtt7|@HGg)J{PF2EnaaI;mXJ?ON-ra4U4!5np-!9340{% zQ4jta9>S5K8)m<+K0Eg(>UY-cT!Pt+<^jNo3KyLQ4t7-d8by`9up1M!zER|ZaZ8{_8^xu-}uew$ZXgS;c@nWiqBV7)us#I zlnjLTBBLAIw3ivn*!nrzOJEtRrKHmziB>9Q9=!NS(;=1t*>X}sI2c{Wr##B^pYf>Q?vAC>DO*5UWr6YvbpfRss^Ph zdGo?|KPuz*EPOb3#bU)C<{X}Sg+!~cfms60t{a*nEgo6pShs}nm|C6=DjtS?=k&P` z6Xt@7`cVz2%3^$r+7y{Kd$Vk(ww1^8yN52o}%{B8KxZX3fhd!iAR4$^B%l z=b+Zvve74hTqyRe6?K6{b1UXIXjdWw2&GKZ`W+_$?l7k%ZaKti#(iDwICw%0Ph{!{ z3?l<+#TI)Aq;RC*R5<$%0$sqaHEFDX)qn{F!$HFAEI9Rrkc$ssDr1HickI03Cu3$t zVVD4cA747-OSUV3frBntS~MSIKG-F&ET_W8G4KQ|v~f2$Rt%48QfH}2s7u-Sa0N2b z0iMtiPT)m^=Bu2B*fx1}Q!M)eCy;jH_r_IDQa#YP?3U7(E5G4Ol-dy6#(ZaKJ)`(~ zv|4U|j1x>p$$XiGvq{oct~9WFL+Rg1b6%-z#JJM;EGZV zCekr^~jZXW=f}!i4}eAuR1aaS_l3jp*_|;Fp%DtD^cu+8z7U zsO(64mv_}=>gw@0Q`au>U9$v{dhkfY6LlPR&0Hb;K-dw3l&~8;rtxm5DlTYZj=Y|QE+KJ5#wu7To;Ck zlHd-{JY(+!WQgw*WhYvdF8-5_LySZ)8fW}J z1Y>ZE?`SX<_X@vuteCvLyJs(L-b9k<`$ z-c2s-+5+`|L_Y`4Kjkhlub*hOV!lI*%X;)Jn)61;m0ey{>4sCkT)OnY9qIWpAQbuj z;(2fRu37A(q2gvrzdA-V+5D3d%n3Xm(wsVBh*)x!Tmbk zE9@KW%fnGH(sbqg+JT^uHsTuvye*y5`9Pw*quuu`k20p<92ms7p|xq1uUgbSws+>xbT1DpP5); zbjuDA&Y9?ZG~ZM>lnomhp!eI^o0w}!L+JAa)dCO~23Rl1F{q}9T9DK)n_rLg|IJXuq!_99lTrg(Q0PA*m-*}NQ zD_`=Sd5Is7yzKpCH{(&l?gK1Z`Now^;d(0N6n15)Vf3eXbZMRf;}q#o{)dwl2)t; z2|?AoY(cZ6?Ivr565URdj^a8bH&c*!sklCuBCM^vJzXd_T{brshgrA-jt!W@jXv@( z3FCA}xF!o%m+wsG88zDN)a;?t1S;n2@j#gaH%I_3+ zjN;NnXm@qTE)7dlAos`$f&bR<^r#2di@Dy5BC)erV+-YzSP0H2`CSK(w$sPcs01;U z54lNBANn3QA5mB`4b$%NHzhoDfFrd9SKOs0=Sz- z0wD=0QcgS;Q4ta8SU3+9#V&g4DTgJBCZg#%*->-LtG3nAJ+L+=vBnx4w1-&v(_GGIb(FKfM12lle(X%?)ic#16$%J3HX*es*}i{Qz5A%1sCd zQaV2>>^{2-5}CpXFuFA%%-yui0(DP~Y39>2&oo=YvBJ|N)!B$h96OjJrC}CjzvO^;brq&AC+)n;Yk;*iN|094fL;#paly^s!e zqmh4u)0{tf;p+7pGOtJ2G|0)#ExWq7f|6Uz%cUlD;cnAaR^uwGxY}1LS<@ZG%IZ)i;4aq9)iT%Tig3jhcs5Kp8TI71*qKS}a{d4gf0NW|W*> zB}z}~roUpvNhFGW3&nC}NXTN$1${V)U0H59h(7px@i6I#6A{w_`ze+;6hAZKuRci*AN5CZ8Vr zws0)b+qq63Gdl_$5UYk}>zHT49NFfMW^ABuGa*@YM$*u3LmgGo^gI&jt(*%bln;v*5QwfzlEbM!xM5Fh!gEyj?V65v(3j8N>l&a zBz{BDisFEUYld6gXCaz=Ed7`%!hIYsn2uh4{MbJ5*GwpqTI(3bS8RhI|&ya z3%Cdg7w^X#T^yfV@xUq~{j9Bx`*`|sdpoX7Q5~4t(Fq&8Xl(ODwuw}u9pl`Jb3$mh z?uKn+b6gT6yPM-v2%O+vjI7)AJ>K1YJhf@D_?ysHdK-oJ)UtNz4)^h;?R!|VE_}V!prp$l>pMZM7tH%KD+RCn3>&Br)85c=q9@?8SYLWC5hD z_#*=wd#iz6L}2PE)$0`A^wVAYx(_FGb050=@aaSS8JG2gYhdaRIY*BTPCc4+JZWg! z@ssK2k}q-}z2fM(GbeN1N7IjXACBE@3ih-=Tz>564 z_RhToqef&TTLVFF?9ntE%u}CVJFO1gOK}d8LB440D?>@n zYf6hDY&ch_w`P63{NkpC)9goWg&oi$C$S7Ojjl}{IEnMFu#ymCyuu>MHz?K$99PM! zC>~eomsAN%`+h1*MrHWF-x4B|K^_fU2Sv+1)WT|&?2MRWNfZN zUg&7!$nm2i@!-R1j%C6-U!Gx~l+{Qr>6)%|9|4UUP>!jCYL^h+Z@?f%%K;B?O*!a2 zx|@~+#uR!D5IX*9EA9&4HGxf+YkR!7xPBisk!$-nZ}=jsG7ld>)tfeGaPs2%0|VR& zz|27bRNHCaU>K(MBFhf}N**MLVjE;#vR;1xBegdP2WdsDYcZECexzH8V>D?tz#?9b z3MH=Ya}=pCTNF;-4PvC&h3pCPzjT_yG0F74hv*bEWCu)(ziVm;<9AZH7&T3Bg{xlB zIfgn1#(6JaYE_owgHwx`QHJ)#iuU~*S@RU1;JBQB41lNb!A0sQ?IJZ^*f;tJfa^HI z1)p8rlPl*{SB=P;mOx4(s6S{2zY-?}O+cA7N>-8B~BCBePr zM;p*NxU*A)zA%&LY?xX4;yh<97WP`WQ1sT?{zF4a)`%EZq+(eA>=sYRc46S@F8YJI z|Dcy+5uUMIjKvm#U)tv5U+OqC;0+x{z!60K#5I$_;;!A2l*EIe;7P8c4jCWQsgKbq z*==}>Sqi_H+yT_t1uEn|o4`Ho*)wL3+5DSkmO>j3Wu{_!_0MjRWX?jP={AVQZ}6#C z7D_~%ON8sVqAdp>v-!l7r@}US3F5)_1>|9rS#G;-MUeS%RXNu@0>Ej+g4j*Rap1`O z@bDBNsI3{P-O2+q9Etb`Gj>Yn>`AQMlwwFO!sG$NE=qMAV;zT2A3b{16q!rKwZnzY z>}i)z8igp4bIA=~e8Tl?czI=k2m{i-y5sf|BJJp62#XsesF?54E2iR^Js7yk3P@kp ziX~~HeW6eVJ8t5%QBx-7ty657#no5u^%>r&Vg5E%I&}KJ@B%#HriA zX_fPfA!7#95(uMX`NN;Tcy4?AR$<0sIEt%jWkLmH8F#EQt>yA9Hj%hFqkRdH9&ul; zedI99*WzZVb|Kh@TY7wPfPDyy5Q20vtoOo(HpG+(d6Srh7|(f+W^Uv7$ik%r>J^)w ze2C+THfzBI7w`p>yDcQ{Xk*8AynSWzei9<7U_nhX4x1*;+64Q0OMMQ{MnYn7t5#b{ zsbNayz41%sU1T0$VFD)w6Y-b@Ta+qaZ5eRXSP?OHlmApnq7YPOesKjKupwBC&)aP_ z{7Age>N+(=(kb@qi5aKwWxr0HmN#ws)T>6|5tu+j_S1|H2Y|ic{HUn{x(T~WbH1Ma zb#Pw20U^s7UbLv{H*kso`b76kg6b~K(O}5 z-t5bP!9cP%)u_OYD)US(Irs=GC~`DTUc_B;Yww>}-Xy$jorVVnb#qHa7c$-1r1@3s z5LIkfZyD>-`JNdMak7<=AmDE|oZZ41Ih2H+R$iz-G+c|<^3nXQ{ngTIf3q~t~0KQJX3MH@N^Zs$|1V1m_weyoJm&>VC#pg%DAlb}CJ3QEcY+HX`i zc?t3KEmr084d4)j9%f=2-OW3b|8;LNPW;saRpir%X>fCEpCOjt~ z>r+D;E)#@l382Di^7B^ZTYLcNPt)(?rRc210QU=E*1sU&OzAqD%rD#kH~vMd@)d6ChrwXvS8Gx}xP>W24B|SjFXDX;-Q)M9_;)hy z!N*fR{tGix!j_8|`NdA_17(pCyX3U;plug$!GxqHSNyVwc#nmGnHM0j#jZ^9vS3nf z(XpW-T4Z^C4;kmDuO)+{DEHskii~qRlc^liOE_f_a7O7Ratm-Iu~udH_a-lW9pJ@g z`+-Q|Lk}sV(Q4u8KwNOhO$}Mn(KxD)@!^LuLuRhaW+fEvolTxX=m8#HS5l(B*OI_I z`G6xUVZRr~!euCPgd^*t%Up8>fMf1l?_PD@?Ik;cci@F&o@GM8l1QUF6xI@iGDtLg zFhJ$GmQ*p;7k+WBCB1zZEiO=`KLdVU0~wYMF@SwFd+h1PSgu0AAT2J*80UhA{MCce z8~1U)S|p6RsV^Y#^jS;9IK8-7c*Iy}7dY(2%;E~{l&ZPIgAdF6I~eqrR)~3v-SbBj z^s>~4i{9Yj2qnKiGoy6^fioD*{L(!9Fr2CF*cd0FNIe93QqN?;D=F$;c#Tde>mPo}(M8}Burz~SgMOuj3JZ4?X!Nj6#ts|GP z;kDeILeO!VZ!WWh9tK$kw=Hy{jCUgh1&TisF?RFV_{%M0sNFCAISb?#5#djw!VwU) zKDz3ailaBp_ey zAa0}SSV!D)4Z;Q4WM9lu$A1`5fRxjrz+{9#hY|K#-k)L0ADVkJDTAgSV+4_E1W2*C z9eaA8`*Cubl&8h6p9d3SuQh_GFLCFIjTnnfp}6z)uH@(L7i=j~!)+EV37SQG7x6vD z87dNx7Z{&4$YtGT<`gi9vEsqxn;#PSunm~VU^K)J+!Zi`BgkNjmchS}*s?V^gY6F| z|MG|-17cftNG3;(wHS{K9u3Ll=SPztc+Ak6tsxm4M+RF1)WCY1RmsL@oem}^%SnJ~ zb^Q$SrMCyy^}Z*P|MNs}T}{+FDjO^%GEcE64z4H;G~`EY36e1ep`?f7t*4cw=R2h3 ztdj4VkhV9{&1PD|Z8pi4hAS*s&%+_e*CFIVK_?aEv~37S2ea$^N5Gtq>syN0I7T31 zD^WQAY9TX`W=D1_Q9#_5W3-V8T=|o$kt^1EFR4cde8h?+y*z7@E0*+g)xh1n^l%yy zo3Ua^833__aAIaIC|f+P0@0Ykx8Gq^?zxlqE+Jb$dGFFhRKWCm^u51Ca>dnB#@oW< zkA(Bg&@nrUj{1cl1 z*xFf(duMxQEgn!jYw?r%e8c_?Gn0zYhr0hpEG}&}^7aawc<82a7TO{@a zVdBThFpe(WexM01_xp+rW%CgTWMWl5%qpD3l5s#ORKN%zZ5`eZx{kJulI_rXVn4cI zVY5!nbme^w+T)F=qU;TE$ZAfX~>ML;e^7gFIssIx-G zvO;<+Cy>A`Bb5T%g{8K*#=EEkV=5>F!D&M~W<^n^ggGCB3n*r>me^`}E-$Z8P2qpI}GBdjY>Np_2eG8d= z27xafPSW%!1Kg~)al(NQP);vX=Ee&U(F9a&z&lpu4Sa|UfdCEyn*RWZ#|SklT!)fNWUK+|93XPu6)o}EbvRjS9N~bAD>jYCnH0`W z)pKc4Z%{w&Es(g0RvLzCmBGkfI0kP9dj|bg zEyiHr%`K@RL>dluOY6zzF&N*LBRHfj#R#T!REvqWupnQH1&OGJjxA+~s8c&K<0rRV z`S{J@f(68`yaj_iYUsguQ7N0;a>jk2AUmso7CFw zUR^1;4p7!jr0f7+$mSm0*=m!F#L9!CNb#Fwd35}{vOKEK(IU89jAo~|FRu{yA=R)> z3&At}jzeaJQPNVd9wNma|AWtPb%0Q0ZC%YYK7kX?%kK`zSWCgBa5T-}$`~;fWwqEB zqe-Y!#0oTnybc_3!npMx=Z!jGRs3Iqkbt|%1O~(WN9Yc@GxOyR8I0!50DT4@jr_9) zWHfmN1X9T|crwBLaiSsFD@byb$y82@trOd7(L#|ZklZekcQGU%jg8Ok_-LiFr_H^?2p=etC_u2Vn!;qpkUpK zos5sxW^w^6y;NL!)`&*y$)iN+E<^IoNO}cud6Nz!chpIQ8L1LiPG&j|w~*6pf!8L@ z61dwE{n<1IxZ83BkfFXut5G|8wh{$wY$b-+*dmSIH0D<}=b53z>4rNa_i%%(-tC3b zCSgJwR-Oen*0wT<7z(>vwbhkNxZk<3L&>}xFOs!Rv`8F(5B_<`AxX5_o@$L~d2u8e zDbD&Zb6b8;NyFKqx{~|^ok#`<8u|euIRZ}5tPrvxVigmc(nD3izH;@*qk|x85>gVW04XAy0ms~fNzqJn#;Oy76y@dE8%*4}N&Pz7 zSzU@YKXAyf8IUjFqfIZ3q%0_|Ev+mPMFh6IlBA>>lK&k^%_jpS#Yo8Xow6ikZbPy- zBpJeFhAm_0q}G$mNu6d$ehHFZZAi|(Fj6E|TTd?c>FI{#*CFX6hU8kCwZ0EZF5BG0 zko+i;CIHg{ryi1|^dw9x{Mv?~={Hm!ff^4Bh<&(&6r>;d2*wvL0z+{h!U&!;zydM0@VJ$Pws-zezMtjKf@hJn(&6MVLrt#hU zf)e5GR(T+7-)E2{JE%STIT)_mp#Qf?{qer|;rLYZ>k+FWZCz}M7FfWbr0F&M-eDSP z**^v^h%W0i)A3^%eoTtai0aa5tI58tvuzgjb4PWI?i1DB3JV??@t46`M@IZmD@5|` zxzXv-UfW#vZDx_(`(YyUgIVpiMZ~X+jDOf3zdtJeaCrPP5tY|vS)c5u7P34tKEwLv z7PD<=R2N%!>+4~t%5vH!dAL3Exy`ii22+$W=*AmNmhC9h)vhW!9gy83$6L3t&9g-P z?lIZ#x4>7_snD^qgQ&nWu#(zoZ2WeYcyr?)=mgKhnC~V#^i% zlW!Yp%}0iO;dQ_SBdr$Ju?ZLv;! ztTReTraEGs(Xq~$SZA!CN^9bT(i-sP7Bfs~z(lLFjUOgjoo$72lXk+mNqb@3qyvqc zI6KBVJHA+H|cnS$dD)z63xeo zcwESkSP>G>x9WJB$dEQ7q#YkI;?W^PI*5=?P^)9%%Y-h8PHP*d6GeALMDyuxPMh?0 z6W%1JeT7Tt2BM~(WSDI^osa}gJ>6lt<)l9abw1%w#p4M`^e6J+dKyf(9QCKebjuI^ z9$oox{j|{LV|O>DHsaxWvolI>L91>I0SZ$f=*Fxz_-Kq&N2(gwhpvI{TfQ1s1nM&BIoK7HNke(vVj`%|0SpYCv4c1wTJEhC&U zvik;%a>gdcxto^_9Mc2#fCqImXPq8A)<49Bze6wa4@<(|i}L*!C*yDKM1Nj){Ovl) zKRgA0M@&f=3C;JTQlVBL#(gphDhN(D`TnIeg~R+xqkjx6*{IHGNDj$c3LvANP#sMG3u9!_7pq2 zu9&0`^OSTB^JEP3)E*q>X|SDh!ap7M2#)(_WN?^gdN|CNWpbD=&!WAbE3#?t=gJ(| z`(ei4rGGbTZtWre?A|czvSpe7?4Tve%}L6xynbkJqqYOPahWLtfrt#!^M6~15*2Ci^P4>Yu>k2$NUcqt=b zk)Y%ncO!qENI!v}C$G8IeT+HaJqv1g?2qo_mmNRm$4j7-CyrkytrlFbBJYjP?rP?o z&WYWFYdrTRwZ^Mug-S(*);QgGfP?-hTkA|)F;5?c^1d8~`KaB3ejJ91{v3wN0UU;^ zfgFZ~gE$P;gE;I6kFLcmlD<9GN;?cyMU!ya-F)^PY2vGV-G&cuy=IMYx;d;=SXLNee zJN@hpdz^g|`(mEnI0Ex@)n5KK&eP`+5azMm^rE2+Vrf|Y5~{2&4KJsLdBSdfC9#_) zY|U$lS)Q<4{+^ib30wOQ(7CYQZ>jI9Hkv2J@2!3ZtLI33_$qn1B1~sk#oy&-2maz^ z)i|2mw!gTXibBloy(Y7L`Es+{k^Q2=PZVD>n_z0gKgfnxSaDweI4WL)>5WNB8)=He z%@2GWlR;2q|(z zkgt#UlSeB>kZX`|R04;b2O|tO2rxMWA;^JHvBCU?i2RTRcv@I0`iPc_01Hb+$P+JF zPz$_dLG6$X;jmPMa9AqBF$UgO;1C$riEzFJ>qMVHuZ9SRjUt4{i*VQ|LO5&`0Uq|q z5f1A_s06GNA!jR|hvP3_Y5)rF*HC5Thc=1)8ep60GgA_*GT{suZ`qJ8i{A}UaEISe zXNPd~BYvY>&`~HKxuN_9lgYyGJk%O{AJn?RRF7IC+$O?NBEn%`2_>SYC=oS94sBMU zMu2T2o>1hf&(?`nMkRUXNmB|rxID0+3w=Jp4L|jd*dH*NV(gZ@MEhn_Ll0hCK59z2 zh8rMgHLhGVu4II-qOiEU9HQyE=2$7LEwB>@#a=6F3+LSTfYzkW2kcKZ`s^MTDRY(aA#x{oMZc>tAkjtjbVHQE+kAK^ja%>;v z-M)Dx<;~al$2=J7p%i@$_hsf4#bNB-Gq-K97J8fg^AgHrVb-mf~K z*$4_QgyM^tG8Bq0z+&TNUYJ#TuDMmb`r;lDlU5N*C^E1G7edI|YokGEjKHfN0(8&QXwd}1Zf$U|Ga-VUYT=MA^9#m$fEEiOgLzk7?H(OTTQ#p&^x+Tu2DwipjG zdG1E1J+a#8CgHulnB7A*s$%m{ONir?;b_2SBl_X|)}Zmp z`TFA+4x?VkZ5EbY?7|m6((zU6dD^EPVDV;~oAKHlQ)qoldLd<1w7$$!Cr|yb-+ZLU zUaIIgk=UkG6xWJM1hqmtis31m>DaS6N|BQO?kM%CHeP*lL`}T>4p7`77!|rIjt;bA zhGLXXX|;|Rp&`|@jb4!uU*_z5@mtWJRv!1VH|R*8*h4=|R{C?aN@}E1Oon~FH2WKd zRjOe={1%9({UuPkU44bvFPp)NmtTPftyLSeJJWU{BFmwIF>J!`aj<`7y6o3dR-?t+ z$ZQk0hE=5 z-Ykv+R*35|As?|1z>6|$`q?^rkcZ4)PsabY%E%K&N@S0ZT%x*Kxbj!B>+ z@`^#8u2)s+38e(x7{mvwJ?b*Pm<6QZ(_!ykOv;sJ^-ydRYzbm1-v*I>n=)ftPI#{U z-zLIVj>VUYzl7uC>@%v4L+U`nE(_WvnxO-!QRqO@whA~Q`W~CC+2+%cP772r^OwyD z-4%`g2%M!gLq*bQeUM%MZ^8w$^CJP0f?@E(B?7842?a;&r0ah0nZ99iS9%16SxevRzzFNt!sWyr`wyqOYdZ6g5`uKVL_wvTLlIa#sM*sNTSw zFBxtuU&2j!PW}}LgP)wDoQd(9BjVSG$2Wu(F)h&#Qy0|6)w#TP8ZKTnSkyk41 zhT2BhpHv%A?nNX==Nx(xf@_MU{n^woXLu@>(i@$Tspp{9r8BHDyTFOyAOWYGI7u@( zSTpx=lVd9X9>cjoTGOetpHKRRDUA`B0H>SeMB$mI#dF4jNBKn0Brz_eDs&NXxnlV^ zZ%rD{p&=bn z>^T1+eK41ouQy&^w}x`Ht#Nr8Lh>)WXKhCJ^<4cIL7#9H9-({jTi2GdNvrXI0SuOr zfvI#{t?{k>P-C5F4DMr7u4f3hVTHUrV_6N~ruYwnXejp|Ou6p+lrV&GbpmPGBHl6b z_bZ1|zB@!1C1N@Kz=a)I_)5y$sLJ*M12MxUqV2y%S~|RbD@Jmq4eBADPBjo?EhteH20MZ5h+P)+D?#M zIOcB8&TGpt_;5hk54?yjubg`+w%hXAj<%=PIB`{0@x8Bj|CukA}&y zkg{WA`{O1KAMutIi@+d#5-Ey&%Q_Vmx_~!cf#o`JfK3^J&p135)zSwb0oK1w^Z@Fk^R`@jg zL5$tPNl4_vM>?`Hr#UltvlqUrjaisIhT^EE1Pe4YhvQC6)6fiV=8V+P3~okoJS}xF z+k_5g=xO#xP^I$hvyHeJYh#VYiLwnmO;bW7R6;hL0$z5QM&?iaxXJiQ>p{#pJ0Hdy_dT8=S5;+J#PE6{&gpDUKh_N;Ppluo~=Iswk;oG)-;H zVKnp+22G_2meO;PxA#dmo2=9w8*WEX1k{>Ff=jo8y}``~tgJL9M7d8vYxv28X!nVk z=g!(3#w=n=&&Ax4re_h0EO4fmfXl!HTxupHAd5EcMkI^Sa6gp6ed$@*Oi5$qZ+7@T zeI;m-k2np=LYFu~P?)_1TmtE)!c4c)9`^w+ngwsAuLasBeYk>HfMUb?Y6eJS1>!qn}MI_;Xqvn<(|Nj4Xy3 zVMgK6n7S;=qOVYkrWEa56zZ5{Q#J!ez_M=mKidHFH^k4Iil(f`y}~+uh!h1oZh+1) zfbIs^oA|KX?lTqSa>7A3t9S;xPJ49*L`Sl#49VtAvnl_WE|WcP-S#Gv6<07-k%DA$ zO_#~MhGf0b<2T@AZ(DEI!DOYl>!#?D1D7&bC^usS{AnBUoz#PM+w-au&laGKwr+v1 zg7(ePd!5@S&EZJWrYx@*YVe!R?!iS46TNZtwLDT4*l~seazv~*nR*4W?&;%8nSwi} zxd(6GWHKKM55LVET^N07^a#t7=IEi;^k_)6Xn)(~+aj&2%+X`5h#P3_h|e?OQTg`m zD@@9wvB<=Qk91U5*@WGV(G=4;Ar$WLgK{xS?6S57}}_r5dLyO!gA34d|d^_|ew_#K{}@pnTSzx_P~fmo#yh<~vp zqxHSZB!K|#3m1CtMEWmOlNIsp{-YXc=f9ZQ<5Yr3AJTtkskuU6_Tz^NGVgeco&u{sOkQS&9M^`BWT2_Ph zD5eJ84JAgxG;XF%xf>tBf1?lk878#kzYDb~hL=U3US?CGE|+9%5FTpFsVH@(6dB-> z0dr4*fXf@K!$}Pz#S#vDuDlf61GqmIqfSA*=KZgxKK(|j-INP7pcCDKoa75CnbSPv zbRjzf^v&v7@7&GF+AkA!!kOLUriT74$z@Xdctnd4*PH6o5Hq>(n}+WkT(K$(Yb)oM z)p}G6faTRJgz|JR`9CImiYa!(dgzSF2_gxqVH0vsL-szk*}w@O11Icw6AZ8e_jO=~ zaj*xQCh|wKyt8}QWc_Nc?Xpg@I^AzdTpX>Wz84m=*Md{O_c?Q}@#4#ck8~@Qi1tmA zQxk%By^HrjTz2^SJ9APkM*8BQ#-f^j~c7It!G<0%T0?KcU7C6N>n`yP<9&8KWM zWHJJ$ewhE@DrTQM6-~DKDj5Q?FNDNX$m~&^4+6f8GXh*lb0Qe-^s`WJ3yW_ZtYFa{ z9l@f5A32`d4E3~7b(;_){-mFYh0@*2j-Bbk;H(pIT~kkFos4(QX*_i@*?k%`Dl8#I z5ED-Ie%QP3Epnr&JUIz);gDHajvBSgg*-y8eqa_vQg~*@R~IA}Nw~ZJ&g27ojwN~6 z3PD&JE&_q!THIG9A;g!U>!}O4NwBA&il87HIyAp8PPnAXSL%88=`TUKai-HY&~f?% z9w@@S{0?vyJ27$T-h#I4z;1W)T${3!At-J1p^Epo;zNg7(NtNYNMS!>^4km(Tk1lp zKqnwD_!3!FvQJ%T-8Vh81xohiA@e?og6rDi$YPerRGI6-Uw)+H){NI#*q2GP!__g4 zlX;s3m92^ck~;EcE1atjwLIc5L%k~`{!##hZoN+YIZ_M6NFAY21KXUt*-Myl_yn0F z2(cFzO4XS^C|r~mfAzDYj#_u;WHVUt@+;8Y-wUPUIF>6{yBoT+ZkT6NzQ9LN%OfUV zoAoLQl%%o>l?{wc)_j}N9f?T_wu;_o0eIXlBm))#_5z4kuvSfjvB2)T-@)kU8);n@ z`cs?SInT>QQ7(L>r83->lLX3eUnyHSFxu zB6e;BV$p4=3lM|Afl&v<$O9v(5Qof&I53jlI7W*DBl-S}S!E9Blbu;nSy_eOblw{m z*pxN+ti!17=w`rQKqG@1;yUX2wkfACnWi~cUp$MJJM3*69O4L}-sE>^lcA-W$+IfG zX42bg&9o6@&E7$+&ftTJfuGlFCz%mhyIO4~!mNSJnO%a*!9c0{85qmN8CXbHpg@5h zEHJjhrgW?n1^QBOVP`Cs6E9K-Hw5Rntujw_LT5 z3FBRjY86%kFN4IK{0CC+Jdg@{@!5gYhZ<6WGyiT#ZTN~m6xWZU$@PZOw1|~mj^?5k z`#6B)QXhbhN&)o%Eh2fLue_XH2{^+0jD`T^n) zP%Q+9G(y3W?m{Uqv!o-Yywt#WNq$xqcukAr6=>#0F95h%mZ&7Xt7LrSpD- zf)|of1RW^cdocB#L#a_%9EU6?m^p5%e$(;rcd2h25@VzC-w&8zAXT4h1Q)M%QT#I0 zYD*B8+jsnYMsxl|?f(kP)G5h5&=>>w+Ewz;&M^G0jZTSf8|C6V8yaF#EaE}TIvaj{ zYR1>z4*1%{h{Gnwns(qmhB9kqVLHBC{3YBkPSJRPy&eTc(v$NP|I ze-z$_#P}VsLQIQ6mgrcrrR&9#$icDVLrJ&4;52KwLe>K_NM~wDJFC%SM0FGPt>{wh zTaTC;()pd#li$8xl{FOd{eUe`4*eAW*VMy{U{cYga$!P*}L=&FWn;;L8 zHQGz;(}9V78;znhnywJXEKTds-BJ6WI6S9u@l_>IqlKFLZ+H{%4XO z_T#4da4)k6jKQU-Al-IUvPJ9*7WG&uuCqJdt12ipBS+Dmszw0qroxEE+PyZr_Y_i{IQnQAmXK{wg0?EbU~!M_lq zj_~5IzWY0-*RU^x6)(R6HB49{Yd97fntu(qCI6=5w)6&YTl$IHI(tXl1}>P|YSyZW z%z7-5Iaq8>Rea-}i5k6t&p0G*!J73dbkYVdbp#ioe7R1bGldMP}E1yd)%$N=gw zWdFe8$QV{tkKxkBUJT-LsBd4_YKcz#0u{V^DJrQS`pM~b6KaPC+voQr>nPVKsr!u8 z6pXU;vZ9hoNI&a}>Pe4aRb@}g0M=KJWqr{V29}J+BF4&YK}9qE&}xsaMx9B73Ua2V zaS_szi$-AgAj?cf47yT!$Xn|bAX0!x$rzqD>oLR!aEmgAbVZLLE{IN6B?Y;m%`B>` zDu=ZK?l6Y>=IMvs%%vahFDtn^xglz}r-2FElGjqT3CA(c99?&NtFzvYtAb zW!I~C+X}@-pUB=88=gXE&miV#OP2u=j7apH$J!p>4w;$$~U47yZpy5KqW*3-2 zJYArGP3jq^1#hp;`or*m;jG0heuta!J3@v>hT*q0LWJ8a_-$7oIRu_K@PIjr230aJ zhlALL8_~EFbe<0nc#fNP;3VX@sR7S;Fq1p-JE^lE=-OkMOOR2J>~bpv4!H^^2pk^E zcsXSWnjY2(}o>!d6 zYd!L!0i@uAPxYRj)49X8{{W?)Q4c<&+6}aRWo?&hT^H4EtaZBuTM!Bsz|C{viy!HP zJU_P=Fzq8=&8Rz(^m7m_IU^A3jK!k*h+1bNB2*ud>x|XP-Gt2!5kvO8;0MT!5PvOg ziB`KgI|G+vJYBm5jS)D7>oDL{iohvsE6~sBl10r>kJ^%uP0%rR2vTWmBr+6EAXVrq zi;gf$OMn3bT3j{n!+6lGUSUM4KJYDP2&VVaas4vLJK}0=BJ@Xz7Zyx`3i~qk*71;( z8{JJP>%5Utg+WO~o!f4?O?_zr#0BcEk(0gHg-Cv+6C;D8X?1YK`Lh!A(qfC~Z6;>3 z%_^PP8nkQMsCIQ;wwSEh8@Ucl-n|1P~-Tb!%+qx0x8 zR;k?zsq(9?vnk2&+h4)OD0{EJtS!#%Mb~XXf$M_Bu#8Vsc5c=>?f`b?O{MN2mG@_WVb@ad%_e7VVL+OsM zHR7-3CY$oyYKgxaJ}Dcl;x80|FJ3ZTH8Epv3{nduZ&>a?i#1}`hz#~2TL8jNTR;SZ zRw?cT+y&ePAZbHb@Uu6SY9*o0Jsy4uL#jUxSSQKX_So=A);GI_PttB}l=-||a^WML zc5Nf)hPWz(TpjKP@JyL91h^Y$5_bcQX<^b*vd|+z+6K8gOr@|$TVl8;%qj%`nJ2sA z{QH6B;bb6$)2F$%tG-=eMx(I%)@brsRKZovcKu(F$~;Tr2YJ5M-i~q~O2>5s74Vx1 zZa8{&1ASAJQOX#6E@L#DIemTU9o;%!OopdIsf4W00?4$MD`m=3sK}m#-*fT10)K1a zFH-X1tHJLn@YN_)NKt{ma+QO`P+kW!j2w)9%nDN>xE=^e&bSlZ##_mn%@tXeB55^z zVAc3#L{j=&x>Dd8S*{`Ppne2Xy!;BR=&`p-7$Y0XE z`jmUaU)|Ka?pn@?k1_Kl@GDjy97RbJ7ggI;B#wg)&_|Kcrav>YO$FSk(B1Q_`}!B$ zW)rgNMgInHr&1g=UZlTAO)uqrcOmtr?P412Xah)j%qt;x8A`erFc;q)T+)Xxxtm`S zmCjtQWQ$5Cwbk>GCRy&+N`pa`JxD)>odGIg?&mwq#k9&dx2yujyC9K4HbX&jd73Y8 zoisL8<}D zR+cfP0od%CTyobHz3;#f61K&<`wID>8%?SyhWuKsp4yx-xy*i3%tym7B<-Tg>iH$* zm5XZ9^*&(Zdt7X&IPzg%-q8N;dw;Dj_4+V_Kz8ZA>e{jrMAlq0ud<+~M`+g4jy)z; zlC!l9%!C)4LAQ;z><{<+t4Xn}tO=h6HAhkm8ns-Ui?5FONXIwYeAGp{jT?6}tqBVe zk4T}>$SNejaLbExZX9moteS$MjmvD}me(w`20=vh+|sB>=-r5NH!pEObMNV9n*+z@ zOQNIXZzNk1 z;UT$jg3O2og2bFth!@D-iIMJ_w+D6bf`Je;h+7A3f%r3~WeU=n+EMrm%V2vRkYgpq z?g^ot)zC!An5k?e2BG4aF+@xNjp_2Y!WWn%0f`%e6cxz(h+Ya1yhsy9mW}Y1H zPBNVr$hU36s;)mSW-?yf7!ByQ%=kX6^}gqS&G>R6cv-F{^Rid#-<%fLw6D>NbZ_3P z_AlR4;`dARqjz7rW@QQ&B8{w1Dz5{5mrFw*jkMz!16}(VTJb9k@ol@bj@>O8;`{%L zj!itDA>Q=c4Dq8{zxE5-{f|L=f_4-aAk$1iGy5$jla&H$drrQ850Aox5yTPYl!gcx z8bo*jK04E(F(2B1ysi%j`NZ>>j6>*nx*hi$5&pgVY|2)IK-8rJ5PQcEeFlqjbM*e> zDq?R1bKk;APBOCW@$h5X5G>~qWC?LN-26d{A2I!a%Dl{T0hk}@C=08~9l>;a&=yZ| z)PsN#J+wi@o0r}frnS1K|n7EqQ_wm8ng-At&Z7_i&Q4H z)$6#2RTYRm)OwON#M2;R?S|E_4&gC;u1XZJ1PX4%E@URaTU`C)XB)^lSX>>aj)Qd%W6yOfOV`^|Clf5Fpb(|(X_MU)AHHvzN#{htO7i6 z_NpE2$t>KlY{zPLS|o+rM0zHHG{LV=86I`!SH0wt?s=*>vGZ8 zo3p!+@hgN$+3K=_I&dzcQD(tlgYS$?;^EDb6uk2ux(&QCtmz>7&DqsHow?a zRO}jFsS50F^P4#9e*Wi`qd4ozDoQGI7XYZJxBwuT73BzoGj~xD!kDv)5GyXdc@W2T zw6CDdSK+$EHy_Ld{J2y`!9MQ>7F;4Ca|;J$mQ})w45cv?V}5veJ-MKIO5;B`OE0M` zc8!6sgMfw~R#KoseRoX;t2wW-IJcl0n`K`~wQn)I4uNp3=KA(mC*n8*Lk2-r?>xD% z=iuFEcwpShm?-vz(0xSYd*ivaj}iG=05r~r0P^94Big)1HZ}#Ae@&Adb%pHa(J|b1X8`)lx!Hv z1bb$Fk-!uE&;+XVuLn;fSstfKUSBrzo4IxGrnZ=%rq%;uPpM_lxE^=PbO#Qf4;&zj5J_QUnzRc9IyRu^A`sA8Y6r~)z`(s2%m8KgJ4MY{Oc;p7K#GUBfba@&XoLDKjfvGia**YVh3U9V8nB9`aog|Z~aiU zwe99j6Gi2yc!3^Sy7AQ&Z2^fgV2i58SMK3f#sft#sxf1vD=53-2DOUWLgcO9ZYlvuJ(IBTQ9SBb-&a>rE=(L@#AyH`zzFdhPJ% z?+RKah}wWbBY={qYtL;XzT$>J$Aglx#kF-nTo0;@+B4&M=_zYP#{Dw0GjX`c?ws?& ziM2rpHW$wiN*9(B{*phO{Y7nCZ!uQ@U;WlmNF$;g*1IN)uOZ-*74KTOql9FCP7c;7 zBp_;KGNUbx_6{NfEgFajhV3al@^8}q!ct$EmcgEzcKoasDE84D&N(m5eu~2hqEv&|JY{NG0rR@Q$BOi_d{NGpiVtsQ*@a6)a?xX=Qd2H%TgM8_)l8tp_fKIe1JVf66LAlIiJJ;`x#zA0Kh!GqLctC#uvgAczK}@_NkGf z`&?6;+M+&M7iNC;OEGD<3J+U=&@2Q;_~$zf+^xd*$67DQ+VBs%@8iT&;h`U)xVogQ zT9f`0>6ZSyEkQ4b>5$iy>CyYcMLOOX$}sz)ZqEp~erf{&cSqvamoaR?eAs@dk`tpZ zrc<7H+H|O-;vSJ=0FXw_x!}7GVO|$0>hK;4rw7KBiB!C5I4OA7HV>;3T)A8e5s5qBj9 zy?W0`m>&QWgfoHKvf^rRlSsXEb!47|%*^5Yj`%a-TUl)T_rIUPQK~71)O~GPA&7c; zu{ug04$SW%)3A|1+*eGd2xj&~^z}KS@xWSb_@2)mHiZPMrmO;}sG%<vD$=2il^%Rku2r859DucoN7 z5b7`%fMV3bY|$&GdQrLR&zt9o%AsdDGKkn=6$Q;%w0Q#a(B?@&T}4qjNIG=iFIfss zg;WE|wlSMWFaL>Sp#g&7f=}!OC;OUSJu#m6BW61OGJ(D4-wv_yFkfH1II}3TR&5}1 zOo}zP#OAUaV`@)}H+6-TphO^_=9I~E|9R1w0leVAD7$#-Q(f!wU`&L8_3B}zwF}B! zZnvuv#3JQ?L;{|@D;0!Ie+rPreiOfS0GHo3gjxzw_Is|C@(9> zkR+ofqo%OBtg5yq14mx9%d&d*%<7r>hj}#_G)$OLTeB?9m4;5QF@)+tHPwXzJ`F}4 zSeFV;-xI}kTwwvQPXQw}#yF-rSf=WyW7n5d*pB^p` zSb%Els@P4*A_iTJ{~rEEU^2_Nqc$dw6p>+r3!usoYZknMIs4i9&36=~Q0cd1%#qXKrN57Kkf@-;WL9du*r*?FKluIIznZz$4!{n-{cjIY!$VL$gNurrSgHB9x*I4OSDMi zvdAKHj6GZ;OUlZN@r#qdb&+hjN`h#Xrbf;Vj@8=yo#GfXxcun!S^+u6XKC z!*`!w?*I@=3RGLp?_sTT3wjG$Z5lYn+ETTB0cf_V0!#a_pcXGEtB|cmH`Z2Gmb+>y z>#7TjJqvtQY~NjLYi=cX4vrCo52&PegQRm9m!XpvBu}x;nHy-I2BHz`R=N)rS5fH^#8M-oLFr_9l5!F^&1-M|gm@c@;KaXwK0PE&+=T_!XICg3QIN1rowsoqzNvS{APtF%nBrA{x_^Sy0FFkjT2GLfAy57=KXg5 zfrRXb)jz%4I|k`7f3H>#V+V6dN7G(NtaYn7;ofruAGugA%hoIH-8z z+Ee3u;dgBfho{yDF0a;AT+?5S)wl&!uzFoqn^!>tyFqKIsMptTFCo#zMNX|TZxY-+ zYuwhbWnr7q11 z8NrM2I^lI6AqY)Ja!u&7pS2SlH7xmHo64{)UdEg8F*)Qp6p!r0`UH6Qwok;SL}mBT zwDZlzGT-Mfz4cpB3wfj#oUc*18C|pCuT#Ea_vMB%lUX3ztV;{0G1S}2Zhi2+i+78S z+IeZ^!4>P${<)J8 zId`ex?71N`c38d_aPo|^g-UPYB#hV>RnOy*mMFfYeH>Xc7{djoahefh_NhW%6UQK3Y_1r9dJInPY z%Oeg)J?cqlW-Z$!GsG*zfs@NGQnr0@6#{BXef@HJd*+sm9=~YHw5&y=7ccC$uzcdY zikZEON_#CV9nkl(xzi^19-cE`(Dcjtjn5f-`H1qmvdWqB22Lz0n7eRM?@2Qj`f?^# z%(!I!n6Xv8E3ckVHKQVHj@T1$6}X!URDt9x2)vAKMcm#OZ?$DAVP3enqKDxaouBGZM+%aK^w zQ=kU+CTL~njO=;IgMSeWpEz8bBK1TN2=C4Z*>TYbo9>y!sQ$&@RPac)s2FQfAy|ey z9P|wL)sz(?5RNd{CM=xHl_?13(gIall7c00#=D&V)=#?9MeolR_4YiZ_Ghn`jdwq7 z|7KH?7=l{%oY!w7PtSN#1^%oIjltQ?B=u4bO*ffMcEjBeNDNLn_MqoEYXZH;o77F? zyi4}rZ96{WHg8cSNwFqC6!aM+5Vx&>c^&a5TY!0%FvgoERrSIpsNR^}uK+QHf@WBZ zQXH2$pq2$M)M+?MaqKful+dE8O^0MLeFx8aklujruV+d~2A%JD&H5DGUF$9{S-5(w=fij?;cXa9)YHzE8$ex zFC`D(lyhX~#q62t&>0fZ(hL!ow}H6<^?f08<5l8tD|16}vE| zC`aNf!0eD~EUxyTshBj2he|;+0sdfJ>(8Nsi2V&o{7!Z@iatB@^L% zYD3@|#ns|66X9en`w#hk70)k5Ek+hxBz)z=ae`J^QZk~r4984jB~xKzwroDkz2Nz< zBnwlqof6Yo5Qh(IZj5Bvq65S|wpL37!d38V1Ha&YivS!5(Q|wv#Q$6AwfGlRrE%#x z0qHHu_wqYHK)Ql((CvT2f>KC%At_<}8s{umOFXCO z_o+?Uh7U+;-Vno^2TB;f1-J{5YeZJfDhmGvJ1TRnL}88r5pTnDuh2%La_M;17Gc1v zc^e|u5Pc`qmDiTxq0)%bN(@Vlhl`tesFT5l0UtI+z{j?m&yt=uKntlyRgqD`Ihj+j%i_n zyGW#4`d0HsV#Dal>VmSOBK00y_DjU$e;vzyK_85+!~s9^x}xs35u%TUeObih;l_Va zv54E_xqbrsn4u5@snXu+aUMRg;*!rfuA*niaRwMRy*`K*buzDA4rxE#w6V4(%f5HL zFq3tnKnf;gEyu4U?aLcUPsd<}qBCXRGPY-tqArtOMG@layk19D9^~aKpd07pvni2K@6P-x2`AG4HqI zmJA_XV4grs49C^Jvhu(?K&GGZL$ix{tBC{cGcJea<3+A71J2ZZ0?Xmp=+fve*6e63 ze_gCa(Xg!3#abE-xx6mcSS7%m4V4F7tkXh#SVFs4%cIplP>0aPIw^V`|6HbJ zwvxVlEnRTdZ!!+W+{V9N4W(c{?3Y{x9~@HNr;5MtK#S*{8m?j75-$!(O39wDG4_C z-HKzK@Y~Z9?C|$g9P5QYDkC8Z{!GQOLHHfn2@d#sD~^rAAKf=08vg!@W0Ua53`~fD zf3V`%Ec~%U6Jp`NNO5ct{P%*lxj& zq2VrdnPm<^iWJb;yR3_D<(!04NKjOEse0bZ2|kY|FdXhT@w z9GSqTF8N|)!|Ay|2W0ZK$5#Wtpr$6=oYVc2$bd$ZWFB-hMIaIGa7sPg^-$S!}_Q$e|Pkz#xX89Bt?9ujv@voTT zi!DAja0b8NNC3DdpE&Y-KC8uN?87UImPjCVtk@|VTCmUKLAZP{E;RzA!EexG#qA6? zs+z(8z9-ie2Jk|OqY$pelH1T@JHw-^AmG}+9RhT8>XK51!?X6{Xv`C*@T%nURsjxE;qv2|Q#q;Y6YtDz)KeO1C+Hlgjv; ztSd*xH<)IdJSJ4FqxxvXh#KnrXT$9o^?hY_ED(;U5dV{kLmXf@mP8zS)V26?#ustd z2`3X0tKc|e?HQ(lGLTzEIQF?cuHGR7)f%Icfb^-5!~{6zfM4Q9 zw-ac^b6YwyC)|n~a#D#q8Ec}=OPf01%;Ccoa$%_eg9lFLNd5|r+$DwdWgvZUV%0-2 zB{#jfo5kSj2GuE6Q<7=g8zI8&3gbs+?flav)%n)au!So5oJT8;B8 z90EwabP||Vgd;K$`1y>^3GAq=gvgtA2&Ywm*a62gJ#IV{h zY4ynB5+C-KGA+T?{vmyVV>4OOp5YDo90n%V4g?u5tChl^c-oH-OPbg9-aiuWuA*EW zbX1&wz(8m%G0_2zLuq&UJIfr?MVP`|IN3C!6i~mFO7Q=UvJFW)TT!;5YnvlNXNHh0 z@5dl0UwkPDqi-;%qfgpZ(ady^lJZVgtMoYU_W&;b4-$YJtXr?1FGdPN`i=$&1<(rs z@*jLaAatlO0kz)%^*tbpz7nN33<-gI*8sNwFoy^SssS)rJB!Hfp9Zi~0IB{OV4x#9 zShxUt&j7X*AWZ}VWeIJvtmFF{v^ZY*1+Z6tBjEe4r&S$J2U+?D8X(@hUJnqr4W#~Qe3x9yls`TS=j06D@@vTTpc z_Y(~e7b_!wu_;gC!z?cX94ZMXQQ}h-PChY?0h-S?VdWA}j8)pE{J1=Q#R?cj%tfrS z9a915%zR`&%l`XJ%Llr3zeNr=Mk1Gv>xy{wOt<&u^nGj6q0QsRThbp`o6h&j*5{Xt zDDlNHxj4{fi9qee&>Ya3BHH|>)vgS%*%iCZ98fJH`GjvZKs+rQ50ItN0?dmOG?`zl z$nT&5Yz;t;#R#wi`axT?06Sy=i;J}@_s0n^pGnUyQNSHBz&#C^S33*1B(t8MO~4&9 zzU~0j7khtk! z?FH&I0*pls4%%PL8ehl$zZ;(gKOV$Uh(YZ@JKh0oGl@Uj<)2OR&*Ct}GAsJ^LD2&v z$42im*?L*;H%A`~i_VVBjoxaqb+>LaNAC=a9vYb+{g}y?WqsWN-32>MiMdJ3O-Z#$ z-lUbLc3Ul$gW(7%O~xB_rGch&sVoS zO1C_FoQb@j=2j}P?N8G>928a?uj%9qvRG$ytTQIo85`@2i*?4wIurbOVymi6ZcJ~4 zYJ?`JMmQ-{Bj_fFpdF}5s7Gj=-P9QA443}dW*8c3YP312JqYpd(JWC@W0W&e`rCvF zKNL?!ORbYIP#L@+T-cF6QcR*y6i0tH#Vx`i< z9EobA!-+_Ti0np14be$UW4foh8>8G!o$c;Z>8D~-avGc5c<`(Gry|it%G2?bQi0Bi@xP3q2*E8-gfPN&5S=w<>sx#JMcg8uw z(akW!)EPD_ni4v}=wu?))1Od{F~OV!j4`D)I};KUJYii1QysN)=!&lGo2YW!eZud; z6X(W+Zm><6WHq~w`;%>E_c4EWyV-rzpAuzu|KLw`nB7PG?r5|7us&If4?qf_h6oTapW;bm5~bvR`g)zg+)>yTb=gQo`F#f=bay z`}XC}>gNla1&PvLNxzJ_n!>pb1MQfyFsF?j70kWkJA&U0{l)Krd^?SJ7<0FoePR6G zVc~ZJOugI8Niy6j!jTigVd@>>Fe?vun3V@S%)}!cX5tZ!dtrp*UKrspQ;%?Hxk7k* zzRI?lO&wQ?ztC|7pD$5(c65=E4Nmzt3AQ~DDQtTn8(gpPI)ff~Qp~dn&w_G*A(}EdqCix5%2r?=#TK?$W zzl#DRsfCRDD-bzU6kl)wL+ji|oEG?j5s~k>_enXId?W}mq4c`kEoaLt&bz84XHT}4 z!fn_!kn`TP@=~(Mg{6?V#&v>xZ^~NWc4+dB2zF^)GFVi3Yjf;S0DHPdJ%UU zeD+W^sMnlC% zIc}K{HgD9Cm$}QRtiXn%7B#=gl-G+96>+wi+_Bcw7K!JS%)BH!;Q%))(?(6aYQiX( zSi5}MsHyNX&b_1hGz%_;{f6@5yz03%@W3(d%WexRi4!tzTm`m^dfd-z2W({L$hb>| zgf%0XuIu23ZVjY^#RgR|wfzBTHXy*&X&FKfYnj8?>Dvk$^Yr!mQ>WR{9g-arSrAv*Dr_QikDx31L=B9GP;hVjMJ}U54+OC z1NJ1^Y_fnb)EhT5ZG@7Uvp{XJnZZ5i#Q;4b!TlDnQkN1;hM(AZqI1^^C z)`ph>Gp)ZYGXNJS@-u62;PC>x%_MZ2+-*v|;M_-xlRD|;HdUU~Nk2F9*g{GVu?D@+ z0NtK4fZKaLmJI!-7WM1SMGeR0;uAV3I75S&Rv0R}MYIS9eKKQinxRordXkN$u>Mfj zDPve$y?mZ;L36*1;cj1#;kkjH+j(`~qScwRBop(TVnp7ZsPCt&Gj@^)7mk&UW3K{3 zAKcmIBngHJFGuA6AN9xcUd1~g&#qMB6I%ZSwf=Kf<<_Y6Cwxf#)6g=#$Jph1U%KGY z`=4E|$MD!g?|*i=9>b+T&+Y$J_wC_T73bb-t?VQ_D|_cc5<(!GB&@JW0s-WXpb!HJ ziiki(5z5{`xF|OXsHn%Xlv-32lyK3~K14xKti_7;?lC<|X=__(sZx)&q=#DCdVy>d z5;*qz{btsh*$MbPKHt-SzImQK^UiN(uQhAdT;F-u`?8s+6po^*{#l&9^>TEJ-H)=r z>6PE-TC@K1z48w@Gi;I=m%Y)jefx9h zq;8x1COY#?VDg!s^>{NGY90RG{-kNbRkt9EaW8&9HrM_Xiy2RE=Ic@zY@ZBp9?fmx z|1CzjGGxIaH3OV@Gk6<8V8hM1BZJ$n%_uGy89bFD0~5ip;Bf|ng6j$qjI*~|EQ(R$ zrm}WQNej2e$nSi%Cxk0I?DVoDc6KB)I}%FX>~Z@S$>nAbTfP)n0LT;il=7)hDN;a- zdXdhws23^3S@{wu7MW?a8kEv>ac&M8YM6|Wg)>^v0m^26D)XdKHuLcmfd?Znvv^M8 zb_8eW&&&Lw2z0i-DCw*S6tVnT(m4@Kn*Zk!&-xdh=Ezl7pROn;T4r zUfPV#q$}Dox&X0*Kr*`~A&?KPZVMMDAz3z%?CwcOP9~7t(j=r)2uNNJ|FjvJBw)#p z&6mB#mm8JgUL#fLz};(TqX#_oZN)TLjs{(W{YBVvvA+mgP1s*x_RSP{h+6@qV26Pe z>@bj$^MJr=az)VGN#?-*B8>e7{dl3!o%6L?SSTAMcp-x?w~aUOgCV(iNLnNC7Y1+T zSVkB2;f@P+?>w2$Xny$g4%0fG2GRZP9G=98;H|O|-Q^-nHBOZM8iF*eTt;(2O6N=b znKCMT&Ns{a710p6;EpjxuZV`ApVA#b(eWhmaFy5Kx{*#=qw%+Zv~0v`Y3?qnrQ(qo z^Kj5h)`Ugt1iW`zr~UbOE5?cytC;P=3h~9$Z+i((FRc~KMaF--B>y^93qwUoV)S(_ ze2k~3>vjceVe@(V;&ml(pHsw2;9y)XAD>m#?uZ>pl5<&)>x~)5jUAOEdTf58N;{KuD2Z8 zQrWUq^cFe&ZozfE*CiK8(kgr@YI#dLCUQHg@c)G_qm0@8|7R6mTL0mClH;jj<3TkU zq8%neeB>d<==e~M)HTD!czv8YD8s=<5;VCA>_!(>I`_^=Zsx8=J5tMu?s@Qr?~|z?vYZGp;V_eDN|F!x{ht zJNrG(&CilvT)(i6XDWnkw{nUb|1l;sZ$ZX% z;e2Ra!v0G*rtSZJEzT-X3lQZ$HYr-Lm~DxmIRHun<+&&#WIfBZj%#PPy< zRO1wU(|(PpaIOEgiby=`jr$aC-LTWNt`Coc!LEw%h|DW+?vhzvV8C+M z?w%PlGK*o#>*kE~!1iG92q(V9rSSaak72Aa0-eu_)ph!=Raklnm3(HjEiV8qd=+O> zp+@wEwpJ>Y&P#)_*^1Wm%xD{QmI^eCvlLjP&C7s=`ifRNmwsj*7SnC5P@Lq3OluFe zKp2=_pUv$aMXVY?Q1S zRk$}T{eQ;V+b)Opmr`WnPdaHoLzp>`J0M!gz-z=AS?l$!X9B$fZCk^xc+E3f(;m!p zQR9u$ahgvzOM6a<0kxY z`53d9H1|;SC1@atRAo4W_)qOE8A>Y8He3KXA2pKPY{im4a$GB19M7q0d~*9-6S z!tZ%ugBNb{!tGwz=!H*s;gept!wYwM;Zt6?%L{jV;nQCDj2DWL6!f!R{6}8+6EA$h z3t#raSG@3TFMP)f_j}>bz3_k+{=y4?>4m@Y!gsy!*IxJ=FZ`_+9`wRPUih9DzVC$} zdf`V1JBq8Os@5bknFw%#tMbLSDs2{FG`;a+ z4D-c%khV<`aHMdY?d8lWvh zTx@G(w3NwWTO;G#)_^@PBVt>VYsGu}0Q;v(Wv7LuEtxeeQ#8AmVu0}#`2Gl5D3E5v zHeqzWY!07$(`=TWZvFnsefvc{$@uuqNfjCt6)T+E{4#58-4-!oREf= zrQt)Wa+V^Z%6Z=Np{nG6{@BB@nzO@XK zuYV=*m65!BVf5_QZWU*9i=r(dYf($L$NBG;J31BjtZvCEcrZ8Ga&JpsG?Bf#XQFdU zVGA#lmmi6KUh#QBN%TZs=d$Q$6`vJ4(a&x;@%d*xqbDj(bm;}*m?8+ve15~p6Q5T` zPgb1l+8gpS-5@n{;_m3@(^~*nS0{@5@nRK;$VHIJ=?ptw3u@W2x4lqW$-U1pSA~lzY2yEr%S~akhi^T$jUXZE3zy}C? zpkN642G+*mM(sA&9aOA$++1^9;+RC42QZMEMu_>alPqt$!*&j(3;gxqfB_;$jJ{s5 z--2}@-78DV9RVY(-8N^4XyOG{9H$`#R--MNs?P^vFG}X!Ti>Lq7B`u8aXg1} zuXRt=o4h@^1e2xqQ$*lI3%-!}2V3wuzXcDxNMw%D*Dd&cya~Fx`U|yS&RDW}NCTH_ zrD6h?QPEDt1TN=Z4iSBa54@=F()x+uOCW~#y=y51hjDeVe=|`hO*x`nCZAGXEZSu< ztHOKj<@kT(=$Clydo53qiwJ1eL7Xp!P87q2ABTYRH?_&81a^g{`NqUUqqHgUCrm+m zro^QQa7!8xKo=8dG#tuI{5bOQ@!G%c;oj?pupIl9uR>)FGPZls9rO)#9Fuqxp)vwY zKYZo{l|p^oJ{X+bEWY-i{C3Mv*^`9A5&hW(_l4kM{K$-_&qu29C_T93E$ugrv!OJo zhB8oGCq`d4lzZ_C>83s)8;V>|7Oq4`CL*lSvw~Pzzxzk!I}KHtX`?-!kyWvA0UJNv z#*>vlX(f+&Z(HTx&yslKT;;Q0kw|=1*#up5#^}G@SGDK_SMkFBww^By3Ori(r18c1>N2SZgSV6d0`iq%pM_U;wfD-})v31` z;uXTj6R6Yvm|0GUCO3zL=MzciqBO7z3o(3ONT8#DfZr!f|1SvnQje(?e!(Gj6`qFf zB%dh6&zNM-Wk{zD5wkQCyvl2qCWoeOjxoHNa+_0X}E2}O6{ zNH-3L*E|B!>@{Jb+ios%Txe<05$EIOXM3l^Lk2UsV+YROARjN#fX5>*RPYd+9=%f(+iYQDM#ncKbB@~gz`$Px{H zYxUEfgf@kdd?j(maIM+Z)wr9 zZopIJCKSR!MTJlZM^U3&BpsrtQBW$t%EE^vduX)A8_3xdq&1__=v#=uwbyJlQ8bGp zt1M8C+HAIDSMu#|?n8cS*n}AW$EI$rm5rm609?nF3G;}Z(*1ZqyyDCEY_2A2sjhxb zoN62FPtACk3H!fzMhIs^Eh?16BLVFwpP#R8{#oU(*z^|GkG;Ka&Pt)SW^&zpe5DBx zj$QY?f`ygrR~tmTITD8Xth+k#=ndIPyEgUACd_) z7kbajavOT$(KCM zF+bz1v2xX0h7<1CTY8|E&^@^`xwm|@**4B>L2oIt;`#6z!%34`XCYHOl|6vH1Yd*Y zY_*LYKNQ)U^C2ZGM?snITS@s|L7u};$jcU}eDc6_T2j7a$g>&+vO{J+_4#I&xb5}G zCODR>%$kV3%503V_Ak4mi_kVSqi@Bii=ox~uDaXnD$7~GYwJEZm;D4eXVfS?3)-+( zE~=})amI{(GyBe7xI_>)ew)$WGy2Y1Jhwb)%vg+Ccoo0#x&}mD!K3`?6c(l9g3r?# zNpATq>l!f*NX3srND+D>#fD;s3_Nv_JEZc+?Pg|aZh3lb;27e8XX)*Oj@E1=aO!qU z5o53n?KnP!E~F7pi71L`7YAw(OUx2Ht89uTV)PI~h#UE+fb-`}TwZKFb2p{sK9ZW-oHCcG1L(o|o$8P$ zD$wGEEH^vX7{7B3z2G@s6WTCc;3>=^?*u4BXD@@qK*vVoecr?It8(pg&rsj*m>Z3P zkr}o2Hm{(IVo2mjd=^Vpc{JVz&SWZg0N;zG_dFX(+XdEIYbp9(^fbOn`!X}yVuo0P z=t(p5Cx$0_o&EwJ$MyOu5x>OvA`S27^p{wSb>bXw=5zpyE^JCsrDf%6Pl_8FX?QuD z5Y!OB!&a8%2EH4P0lvZb9>~?M@;fZz{bAp)d~wyg%8FT)zj^1$$y@*}h}YLFS{Sd7 zgKjrCGSdvdzK30KWzz%oO!vamT-o@>b$J&v|LPc1xEkSwp4neMfG?5X@+?7!GhMe6 zys~_M$)NdbWT{E+gp{4e>P~VeWRy#9zENKao3jAear&5G_^^R}{ii~j5xWb;+=(As zZ#BG{WUHQXY`GCtD@p=hn7mCH{t01o8DWu>_%?Zb5Z{(5oWoQK8x*b|ul7?p`>9lH zPH@EwG5B6V;dY}A$BU2B<=f(jHxs35FOlW7T=wO{b@K918l$^@raODGA?>GtytKKV}x_vuvAZl3vCoNiMxs6F3<-AoHkF%nw;g;q&f8buAFS-@N2p?Fcw{OZ^9-1mx0GFX;k@dVOD>R$#eB7H*n510MfiwRT?uhYaWTF7 zoj?D83u$Q8ug1~jZSm!E>k$=Y=#)BWKd+B{J}r}Z>LvY3kQMjCiZ8SINXzTy)h);3 zn%Dfx&l{g&+k>f}<@g`1{UL^X;z*+x2Pny(>$2B2?&h0mC+GR&=Bnez1Y6BIC;n7m zm33#Q9jT@g%0oc7%Aicgd0oPjH6m{z^Z3W;5}vHlnp6xgyK~Vmwz0d=o!2!m$e?R% zlV4b%YusU4J!$ls9V8_syysETH8=&Z?+4x`mAuDc*PwE?ayx>roX5nN${ooV*2+B} zH^0J~_Dws{bOJNX^j5yb@~b-_b|5Y^yI=ahGk*roi!o~!tf$dH470a z-uefbkbc9W5Uho}!7BvQB`*d1=}v(`XN(22V@~lH%)?6eluCar~B)qo|RJB9B+5 zQkX?jqZKt)QIixkSy59Ib)BN7DT>{@HU`gN@2!o&GkBa-8-r)uiC=9Dp0OIg+88{; z#jiF7&)9%pZ491ZkxQxpF-dJx)U%4(r>IvI^_rp%D(aA;ey^xMDC#{$eWa*ADeBLP zI;yCT74;8A{ZmmV6xFIIaG<>B$WT;?qRJFisi>if8m*`rMNL%HG(}BURGp%hD(V(R z-L9y0idwIz21RXF6xYzTF+7X`DPNCzLQ&+c%hcx;MNP&Mdr?t8Rn*IhdPPycRMf8( zbx=`96m?Wl?DO&-rxf)sMWtANYNn#Xit4JUh@#3A)mu>m6g5gwwThx*W?6!nikhXU zxr&;ns3nS8si@l&^?;(*D~ey($$R`jQ9Bj&oT8pr)C-DgQq8#})OYqIN2ZmP+JP(#VCRs9RK0)O#qYLyDsQDT)0>QGZpG0f(6Z zhB@3qOmW@qKx4VxrMZjU#q5p{bW?A;OU(epN7%*KSrxlo?c(MhcClFjMVO^_X;YNA+xLxyv8AvIO`9^vM2_u0H?r1p&m1vib(Y$)(=d`rZBv+Qh1F~ zQiI@`qwJk#Qx&|%{?N}5Pp6WGYuV)f|9Lq?#glZW+9?k=$aWz>C}PYNGI(`r5xX%hKT0WW#G5L~5jc$aK@; z;Y|FHS<~5WHk-=enSJ5814#{sIJ0TOYfhtAz-R=XOF8FwZ+Lj3znhII@Ztqz+4m(& zHVqzb^r_igL~jtW5%x*e?n%=PlFEV?k1*OBUd=#wcu`Q|nhvk50v>7?-Z0qna!ptO zi(hJkMIV4?b|%#engVJn;2~ewiWkE}JHqFl6{PyXb1$XnPBBh&YM|x_`ex{LhS$VX zp7=m|7jv7P4iE1LUIn8A;Gv2;GGoqNRno*|u<4hGwOf1l{KP3a7AQGjmAw3B zM#yc0@|{hD+83O4j|xDtW!M1s zv#!cHWjSZMJ16=&YuA|0_RW@aFyC1>)pMalI}H`i>O5y}#Az7jd|2t6o91j7>a2aybk-zH=aXxl zqt`h{Ea&YK=WvB{w4ZaLpR*y;c^iMKa*lnN%Cvohoprc*m9sbOtj%;bgn5_Uot@RG z&IS~2^*t%h+T*74){j!1Q;u_Ptn=(3XU%k{A=6oFJ3AIRJ0?0W@3frPOPmdToP%NK zh~pd%I|nW2z*{PT za88YL_Swz>TrZQE4t8Zp*9M)n)lS0@XZus8^Ky{Ya=5c|>@HsN%v9&_L}$%Asmyg4 z5B*k{@WBjT{mhlli3dz)Yd2?aPv`ZQOlMoEb0p-vTk4!!hbl^OUXM82yA+;%?HM!t zU{$9b4SVpOOUw$c7RjoRZWne-(KalGU8F`^$xwrGsxRVi7+{&54ndC>zE3cqZ0hu> z_*vsrN{EW6&{(1^GMa;EYKn>$A(|FY(XNQ5r>bZ%qQNv3br8)+SJ9D(+Cde)1kub4 z6&;0W2+Te2zM~O^<#Rte7SXJbicUf_JFKFU5e47e&pZXu+-w!S4$)3IDmo3(yj&HX zk7#};6x^&h6K7~)XMTHvJK%i?E4LnMqTagAD z2o!hK05*FGH_}Z5&l2cftbu(5N+KF~l|X5C4ZKF6tV9C`3G^t{0Qlkw*D2Egbh9Pg z@*W!a1A(572HqnOE!V(D1bX$q;2s39od{LIXb~aOF4+yiDM#@frY| zFyT(PQUkvvaP?IhfbNKdJ8^;r4idQLY7HDAFlnL&juN=`8VxiPm^?`XFkX;wr(CN6 zSRqTeQzvTxhf)dmTT?Uu-Fpf5x~Up~0=|Sh?OPgv4!wkX{dF3E3cZAT!!!+)5tx3x z26_{?@dgbHATVRP21XH>d7}nu34D8o25ulQYo-REr!nEizO8{-1md$aFqgpWm+ z7*4{yd7%cLBe3Wu4Lna^@y!~50DHn+vPc6>1ePw=01gTh?y@BsfcdS2d&^P{d_Z9N zG7TIfP=AXC{z+iPat%NoO2S=PuYpzqx316t6r&{E+g57eD+0IQs)4i=0IP1(00bWr z?j5&l04g;T?wzYN(2c-dcW9uTz<=DSfqn$;zDolG2z=*1GywZz33v6~8mJ}Uen$gW z5V&Wx2F4S(7xST<(2dZQ1lHW6fvX98_g)Q5A#mRs4a^|$z3*xOpClyQwfAXY6@mM| zr-AzkJg`;+kpD}#58khVO$63GpaH0+Nw^O^sDUR5JiJZ=I|;0RNCOa0Nw^yx)&R^9 zCfrBXYv3IMk8aSwF9>XWL<5HiG+;U4R}fU&B-~9KH2~4aguA&x1CVV@xLY>)z^v9Y zkjL)Zw$

dba0TkJV|F%QGUe_QxV{jAoyDYeIaoG@B%a1r-Eht2~pCnpQRgAfuR0 Ru(?TC^m61WSl4{%{twYi)#d;I literal 0 HcmV?d00001 diff --git a/dist/index.js.cache.js b/dist/index.js.cache.js new file mode 100644 index 0000000..ddfae77 --- /dev/null +++ b/dist/index.js.cache.js @@ -0,0 +1,28562 @@ +module.exports = +/******/ (function(modules, runtime) { // webpackBootstrap +/******/ "use strict"; +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ __webpack_require__.ab = __dirname + "/"; +/******/ +/******/ // the startup function +/******/ function startup() { +/******/ // Load entry module and return exports +/******/ return __webpack_require__(562); +/******/ }; +/******/ +/******/ // run startup +/******/ return startup(); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ 5: +/***/ (function(module, __unusedexports, __webpack_require__) { + +module.exports = getPage + +const deprecate = __webpack_require__(187) +const getPageLinks = __webpack_require__(60) +const HttpError = __webpack_require__(69) + +function getPage (octokit, link, which, headers) { + deprecate(`octokit.get${which.charAt(0).toUpperCase() + which.slice(1)}Page() – You can use octokit.paginate or async iterators instead: https://github.com/octokit/rest.js#pagination.`) + const url = getPageLinks(link)[which] + + if (!url) { + const urlError = new HttpError(`No ${which} page found`, 404) + return Promise.reject(urlError) + } + + const requestOptions = { + url, + headers: applyAcceptHeader(link, headers) + } + + const promise = octokit.request(requestOptions) + + return promise +} + +function applyAcceptHeader (res, headers) { + const previous = res.headers && res.headers['x-github-media-type'] + + if (!previous || (headers && headers.accept)) { + return headers + } + headers = headers || {} + headers.accept = 'application/vnd.' + previous + .replace('; param=', '.') + .replace('; format=', '+') + + return headers +} + + +/***/ }), + +/***/ 15: +/***/ (function(module) { + +"use strict"; + + +module.exports = function isCancel(value) { + return !!(value && value.__CANCEL__); +}; + + +/***/ }), + +/***/ 16: +/***/ (function(module) { + +module.exports = require("tls"); + +/***/ }), + +/***/ 25: +/***/ (function(module, exports) { + +exports = module.exports = SemVer + +var debug +/* istanbul ignore next */ +if (typeof process === 'object' && + process.env && + process.env.NODE_DEBUG && + /\bsemver\b/i.test(process.env.NODE_DEBUG)) { + debug = function () { + var args = Array.prototype.slice.call(arguments, 0) + args.unshift('SEMVER') + console.log.apply(console, args) + } +} else { + debug = function () {} +} + +// Note: this is the semver.org version of the spec that it implements +// Not necessarily the package version of this code. +exports.SEMVER_SPEC_VERSION = '2.0.0' + +var MAX_LENGTH = 256 +var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || + /* istanbul ignore next */ 9007199254740991 + +// Max safe segment length for coercion. +var MAX_SAFE_COMPONENT_LENGTH = 16 + +// The actual regexps go on exports.re +var re = exports.re = [] +var src = exports.src = [] +var R = 0 + +// The following Regular Expressions can be used for tokenizing, +// validating, and parsing SemVer version strings. + +// ## Numeric Identifier +// A single `0`, or a non-zero digit followed by zero or more digits. + +var NUMERICIDENTIFIER = R++ +src[NUMERICIDENTIFIER] = '0|[1-9]\\d*' +var NUMERICIDENTIFIERLOOSE = R++ +src[NUMERICIDENTIFIERLOOSE] = '[0-9]+' + +// ## Non-numeric Identifier +// Zero or more digits, followed by a letter or hyphen, and then zero or +// more letters, digits, or hyphens. + +var NONNUMERICIDENTIFIER = R++ +src[NONNUMERICIDENTIFIER] = '\\d*[a-zA-Z-][a-zA-Z0-9-]*' + +// ## Main Version +// Three dot-separated numeric identifiers. + +var MAINVERSION = R++ +src[MAINVERSION] = '(' + src[NUMERICIDENTIFIER] + ')\\.' + + '(' + src[NUMERICIDENTIFIER] + ')\\.' + + '(' + src[NUMERICIDENTIFIER] + ')' + +var MAINVERSIONLOOSE = R++ +src[MAINVERSIONLOOSE] = '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\.' + + '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\.' + + '(' + src[NUMERICIDENTIFIERLOOSE] + ')' + +// ## Pre-release Version Identifier +// A numeric identifier, or a non-numeric identifier. + +var PRERELEASEIDENTIFIER = R++ +src[PRERELEASEIDENTIFIER] = '(?:' + src[NUMERICIDENTIFIER] + + '|' + src[NONNUMERICIDENTIFIER] + ')' + +var PRERELEASEIDENTIFIERLOOSE = R++ +src[PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[NUMERICIDENTIFIERLOOSE] + + '|' + src[NONNUMERICIDENTIFIER] + ')' + +// ## Pre-release Version +// Hyphen, followed by one or more dot-separated pre-release version +// identifiers. + +var PRERELEASE = R++ +src[PRERELEASE] = '(?:-(' + src[PRERELEASEIDENTIFIER] + + '(?:\\.' + src[PRERELEASEIDENTIFIER] + ')*))' + +var PRERELEASELOOSE = R++ +src[PRERELEASELOOSE] = '(?:-?(' + src[PRERELEASEIDENTIFIERLOOSE] + + '(?:\\.' + src[PRERELEASEIDENTIFIERLOOSE] + ')*))' + +// ## Build Metadata Identifier +// Any combination of digits, letters, or hyphens. + +var BUILDIDENTIFIER = R++ +src[BUILDIDENTIFIER] = '[0-9A-Za-z-]+' + +// ## Build Metadata +// Plus sign, followed by one or more period-separated build metadata +// identifiers. + +var BUILD = R++ +src[BUILD] = '(?:\\+(' + src[BUILDIDENTIFIER] + + '(?:\\.' + src[BUILDIDENTIFIER] + ')*))' + +// ## Full Version String +// A main version, followed optionally by a pre-release version and +// build metadata. + +// Note that the only major, minor, patch, and pre-release sections of +// the version string are capturing groups. The build metadata is not a +// capturing group, because it should not ever be used in version +// comparison. + +var FULL = R++ +var FULLPLAIN = 'v?' + src[MAINVERSION] + + src[PRERELEASE] + '?' + + src[BUILD] + '?' + +src[FULL] = '^' + FULLPLAIN + '$' + +// like full, but allows v1.2.3 and =1.2.3, which people do sometimes. +// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty +// common in the npm registry. +var LOOSEPLAIN = '[v=\\s]*' + src[MAINVERSIONLOOSE] + + src[PRERELEASELOOSE] + '?' + + src[BUILD] + '?' + +var LOOSE = R++ +src[LOOSE] = '^' + LOOSEPLAIN + '$' + +var GTLT = R++ +src[GTLT] = '((?:<|>)?=?)' + +// Something like "2.*" or "1.2.x". +// Note that "x.x" is a valid xRange identifer, meaning "any version" +// Only the first item is strictly required. +var XRANGEIDENTIFIERLOOSE = R++ +src[XRANGEIDENTIFIERLOOSE] = src[NUMERICIDENTIFIERLOOSE] + '|x|X|\\*' +var XRANGEIDENTIFIER = R++ +src[XRANGEIDENTIFIER] = src[NUMERICIDENTIFIER] + '|x|X|\\*' + +var XRANGEPLAIN = R++ +src[XRANGEPLAIN] = '[v=\\s]*(' + src[XRANGEIDENTIFIER] + ')' + + '(?:\\.(' + src[XRANGEIDENTIFIER] + ')' + + '(?:\\.(' + src[XRANGEIDENTIFIER] + ')' + + '(?:' + src[PRERELEASE] + ')?' + + src[BUILD] + '?' + + ')?)?' + +var XRANGEPLAINLOOSE = R++ +src[XRANGEPLAINLOOSE] = '[v=\\s]*(' + src[XRANGEIDENTIFIERLOOSE] + ')' + + '(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' + + '(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' + + '(?:' + src[PRERELEASELOOSE] + ')?' + + src[BUILD] + '?' + + ')?)?' + +var XRANGE = R++ +src[XRANGE] = '^' + src[GTLT] + '\\s*' + src[XRANGEPLAIN] + '$' +var XRANGELOOSE = R++ +src[XRANGELOOSE] = '^' + src[GTLT] + '\\s*' + src[XRANGEPLAINLOOSE] + '$' + +// Coercion. +// Extract anything that could conceivably be a part of a valid semver +var COERCE = R++ +src[COERCE] = '(?:^|[^\\d])' + + '(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' + + '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + + '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + + '(?:$|[^\\d])' + +// Tilde ranges. +// Meaning is "reasonably at or greater than" +var LONETILDE = R++ +src[LONETILDE] = '(?:~>?)' + +var TILDETRIM = R++ +src[TILDETRIM] = '(\\s*)' + src[LONETILDE] + '\\s+' +re[TILDETRIM] = new RegExp(src[TILDETRIM], 'g') +var tildeTrimReplace = '$1~' + +var TILDE = R++ +src[TILDE] = '^' + src[LONETILDE] + src[XRANGEPLAIN] + '$' +var TILDELOOSE = R++ +src[TILDELOOSE] = '^' + src[LONETILDE] + src[XRANGEPLAINLOOSE] + '$' + +// Caret ranges. +// Meaning is "at least and backwards compatible with" +var LONECARET = R++ +src[LONECARET] = '(?:\\^)' + +var CARETTRIM = R++ +src[CARETTRIM] = '(\\s*)' + src[LONECARET] + '\\s+' +re[CARETTRIM] = new RegExp(src[CARETTRIM], 'g') +var caretTrimReplace = '$1^' + +var CARET = R++ +src[CARET] = '^' + src[LONECARET] + src[XRANGEPLAIN] + '$' +var CARETLOOSE = R++ +src[CARETLOOSE] = '^' + src[LONECARET] + src[XRANGEPLAINLOOSE] + '$' + +// A simple gt/lt/eq thing, or just "" to indicate "any version" +var COMPARATORLOOSE = R++ +src[COMPARATORLOOSE] = '^' + src[GTLT] + '\\s*(' + LOOSEPLAIN + ')$|^$' +var COMPARATOR = R++ +src[COMPARATOR] = '^' + src[GTLT] + '\\s*(' + FULLPLAIN + ')$|^$' + +// An expression to strip any whitespace between the gtlt and the thing +// it modifies, so that `> 1.2.3` ==> `>1.2.3` +var COMPARATORTRIM = R++ +src[COMPARATORTRIM] = '(\\s*)' + src[GTLT] + + '\\s*(' + LOOSEPLAIN + '|' + src[XRANGEPLAIN] + ')' + +// this one has to use the /g flag +re[COMPARATORTRIM] = new RegExp(src[COMPARATORTRIM], 'g') +var comparatorTrimReplace = '$1$2$3' + +// Something like `1.2.3 - 1.2.4` +// Note that these all use the loose form, because they'll be +// checked against either the strict or loose comparator form +// later. +var HYPHENRANGE = R++ +src[HYPHENRANGE] = '^\\s*(' + src[XRANGEPLAIN] + ')' + + '\\s+-\\s+' + + '(' + src[XRANGEPLAIN] + ')' + + '\\s*$' + +var HYPHENRANGELOOSE = R++ +src[HYPHENRANGELOOSE] = '^\\s*(' + src[XRANGEPLAINLOOSE] + ')' + + '\\s+-\\s+' + + '(' + src[XRANGEPLAINLOOSE] + ')' + + '\\s*$' + +// Star ranges basically just allow anything at all. +var STAR = R++ +src[STAR] = '(<|>)?=?\\s*\\*' + +// Compile to actual regexp objects. +// All are flag-free, unless they were created above with a flag. +for (var i = 0; i < R; i++) { + debug(i, src[i]) + if (!re[i]) { + re[i] = new RegExp(src[i]) + } +} + +exports.parse = parse +function parse (version, options) { + if (!options || typeof options !== 'object') { + options = { + loose: !!options, + includePrerelease: false + } + } + + if (version instanceof SemVer) { + return version + } + + if (typeof version !== 'string') { + return null + } + + if (version.length > MAX_LENGTH) { + return null + } + + var r = options.loose ? re[LOOSE] : re[FULL] + if (!r.test(version)) { + return null + } + + try { + return new SemVer(version, options) + } catch (er) { + return null + } +} + +exports.valid = valid +function valid (version, options) { + var v = parse(version, options) + return v ? v.version : null +} + +exports.clean = clean +function clean (version, options) { + var s = parse(version.trim().replace(/^[=v]+/, ''), options) + return s ? s.version : null +} + +exports.SemVer = SemVer + +function SemVer (version, options) { + if (!options || typeof options !== 'object') { + options = { + loose: !!options, + includePrerelease: false + } + } + if (version instanceof SemVer) { + if (version.loose === options.loose) { + return version + } else { + version = version.version + } + } else if (typeof version !== 'string') { + throw new TypeError('Invalid Version: ' + version) + } + + if (version.length > MAX_LENGTH) { + throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters') + } + + if (!(this instanceof SemVer)) { + return new SemVer(version, options) + } + + debug('SemVer', version, options) + this.options = options + this.loose = !!options.loose + + var m = version.trim().match(options.loose ? re[LOOSE] : re[FULL]) + + if (!m) { + throw new TypeError('Invalid Version: ' + version) + } + + this.raw = version + + // these are actually numbers + this.major = +m[1] + this.minor = +m[2] + this.patch = +m[3] + + if (this.major > MAX_SAFE_INTEGER || this.major < 0) { + throw new TypeError('Invalid major version') + } + + if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) { + throw new TypeError('Invalid minor version') + } + + if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) { + throw new TypeError('Invalid patch version') + } + + // numberify any prerelease numeric ids + if (!m[4]) { + this.prerelease = [] + } else { + this.prerelease = m[4].split('.').map(function (id) { + if (/^[0-9]+$/.test(id)) { + var num = +id + if (num >= 0 && num < MAX_SAFE_INTEGER) { + return num + } + } + return id + }) + } + + this.build = m[5] ? m[5].split('.') : [] + this.format() +} + +SemVer.prototype.format = function () { + this.version = this.major + '.' + this.minor + '.' + this.patch + if (this.prerelease.length) { + this.version += '-' + this.prerelease.join('.') + } + return this.version +} + +SemVer.prototype.toString = function () { + return this.version +} + +SemVer.prototype.compare = function (other) { + debug('SemVer.compare', this.version, this.options, other) + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options) + } + + return this.compareMain(other) || this.comparePre(other) +} + +SemVer.prototype.compareMain = function (other) { + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options) + } + + return compareIdentifiers(this.major, other.major) || + compareIdentifiers(this.minor, other.minor) || + compareIdentifiers(this.patch, other.patch) +} + +SemVer.prototype.comparePre = function (other) { + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options) + } + + // NOT having a prerelease is > having one + if (this.prerelease.length && !other.prerelease.length) { + return -1 + } else if (!this.prerelease.length && other.prerelease.length) { + return 1 + } else if (!this.prerelease.length && !other.prerelease.length) { + return 0 + } + + var i = 0 + do { + var a = this.prerelease[i] + var b = other.prerelease[i] + debug('prerelease compare', i, a, b) + if (a === undefined && b === undefined) { + return 0 + } else if (b === undefined) { + return 1 + } else if (a === undefined) { + return -1 + } else if (a === b) { + continue + } else { + return compareIdentifiers(a, b) + } + } while (++i) +} + +// preminor will bump the version up to the next minor release, and immediately +// down to pre-release. premajor and prepatch work the same way. +SemVer.prototype.inc = function (release, identifier) { + switch (release) { + case 'premajor': + this.prerelease.length = 0 + this.patch = 0 + this.minor = 0 + this.major++ + this.inc('pre', identifier) + break + case 'preminor': + this.prerelease.length = 0 + this.patch = 0 + this.minor++ + this.inc('pre', identifier) + break + case 'prepatch': + // If this is already a prerelease, it will bump to the next version + // drop any prereleases that might already exist, since they are not + // relevant at this point. + this.prerelease.length = 0 + this.inc('patch', identifier) + this.inc('pre', identifier) + break + // If the input is a non-prerelease version, this acts the same as + // prepatch. + case 'prerelease': + if (this.prerelease.length === 0) { + this.inc('patch', identifier) + } + this.inc('pre', identifier) + break + + case 'major': + // If this is a pre-major version, bump up to the same major version. + // Otherwise increment major. + // 1.0.0-5 bumps to 1.0.0 + // 1.1.0 bumps to 2.0.0 + if (this.minor !== 0 || + this.patch !== 0 || + this.prerelease.length === 0) { + this.major++ + } + this.minor = 0 + this.patch = 0 + this.prerelease = [] + break + case 'minor': + // If this is a pre-minor version, bump up to the same minor version. + // Otherwise increment minor. + // 1.2.0-5 bumps to 1.2.0 + // 1.2.1 bumps to 1.3.0 + if (this.patch !== 0 || this.prerelease.length === 0) { + this.minor++ + } + this.patch = 0 + this.prerelease = [] + break + case 'patch': + // If this is not a pre-release version, it will increment the patch. + // If it is a pre-release it will bump up to the same patch version. + // 1.2.0-5 patches to 1.2.0 + // 1.2.0 patches to 1.2.1 + if (this.prerelease.length === 0) { + this.patch++ + } + this.prerelease = [] + break + // This probably shouldn't be used publicly. + // 1.0.0 "pre" would become 1.0.0-0 which is the wrong direction. + case 'pre': + if (this.prerelease.length === 0) { + this.prerelease = [0] + } else { + var i = this.prerelease.length + while (--i >= 0) { + if (typeof this.prerelease[i] === 'number') { + this.prerelease[i]++ + i = -2 + } + } + if (i === -1) { + // didn't increment anything + this.prerelease.push(0) + } + } + if (identifier) { + // 1.2.0-beta.1 bumps to 1.2.0-beta.2, + // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0 + if (this.prerelease[0] === identifier) { + if (isNaN(this.prerelease[1])) { + this.prerelease = [identifier, 0] + } + } else { + this.prerelease = [identifier, 0] + } + } + break + + default: + throw new Error('invalid increment argument: ' + release) + } + this.format() + this.raw = this.version + return this +} + +exports.inc = inc +function inc (version, release, loose, identifier) { + if (typeof (loose) === 'string') { + identifier = loose + loose = undefined + } + + try { + return new SemVer(version, loose).inc(release, identifier).version + } catch (er) { + return null + } +} + +exports.diff = diff +function diff (version1, version2) { + if (eq(version1, version2)) { + return null + } else { + var v1 = parse(version1) + var v2 = parse(version2) + var prefix = '' + if (v1.prerelease.length || v2.prerelease.length) { + prefix = 'pre' + var defaultResult = 'prerelease' + } + for (var key in v1) { + if (key === 'major' || key === 'minor' || key === 'patch') { + if (v1[key] !== v2[key]) { + return prefix + key + } + } + } + return defaultResult // may be undefined + } +} + +exports.compareIdentifiers = compareIdentifiers + +var numeric = /^[0-9]+$/ +function compareIdentifiers (a, b) { + var anum = numeric.test(a) + var bnum = numeric.test(b) + + if (anum && bnum) { + a = +a + b = +b + } + + return a === b ? 0 + : (anum && !bnum) ? -1 + : (bnum && !anum) ? 1 + : a < b ? -1 + : 1 +} + +exports.rcompareIdentifiers = rcompareIdentifiers +function rcompareIdentifiers (a, b) { + return compareIdentifiers(b, a) +} + +exports.major = major +function major (a, loose) { + return new SemVer(a, loose).major +} + +exports.minor = minor +function minor (a, loose) { + return new SemVer(a, loose).minor +} + +exports.patch = patch +function patch (a, loose) { + return new SemVer(a, loose).patch +} + +exports.compare = compare +function compare (a, b, loose) { + return new SemVer(a, loose).compare(new SemVer(b, loose)) +} + +exports.compareLoose = compareLoose +function compareLoose (a, b) { + return compare(a, b, true) +} + +exports.rcompare = rcompare +function rcompare (a, b, loose) { + return compare(b, a, loose) +} + +exports.sort = sort +function sort (list, loose) { + return list.sort(function (a, b) { + return exports.compare(a, b, loose) + }) +} + +exports.rsort = rsort +function rsort (list, loose) { + return list.sort(function (a, b) { + return exports.rcompare(a, b, loose) + }) +} + +exports.gt = gt +function gt (a, b, loose) { + return compare(a, b, loose) > 0 +} + +exports.lt = lt +function lt (a, b, loose) { + return compare(a, b, loose) < 0 +} + +exports.eq = eq +function eq (a, b, loose) { + return compare(a, b, loose) === 0 +} + +exports.neq = neq +function neq (a, b, loose) { + return compare(a, b, loose) !== 0 +} + +exports.gte = gte +function gte (a, b, loose) { + return compare(a, b, loose) >= 0 +} + +exports.lte = lte +function lte (a, b, loose) { + return compare(a, b, loose) <= 0 +} + +exports.cmp = cmp +function cmp (a, op, b, loose) { + switch (op) { + case '===': + if (typeof a === 'object') + a = a.version + if (typeof b === 'object') + b = b.version + return a === b + + case '!==': + if (typeof a === 'object') + a = a.version + if (typeof b === 'object') + b = b.version + return a !== b + + case '': + case '=': + case '==': + return eq(a, b, loose) + + case '!=': + return neq(a, b, loose) + + case '>': + return gt(a, b, loose) + + case '>=': + return gte(a, b, loose) + + case '<': + return lt(a, b, loose) + + case '<=': + return lte(a, b, loose) + + default: + throw new TypeError('Invalid operator: ' + op) + } +} + +exports.Comparator = Comparator +function Comparator (comp, options) { + if (!options || typeof options !== 'object') { + options = { + loose: !!options, + includePrerelease: false + } + } + + if (comp instanceof Comparator) { + if (comp.loose === !!options.loose) { + return comp + } else { + comp = comp.value + } + } + + if (!(this instanceof Comparator)) { + return new Comparator(comp, options) + } + + debug('comparator', comp, options) + this.options = options + this.loose = !!options.loose + this.parse(comp) + + if (this.semver === ANY) { + this.value = '' + } else { + this.value = this.operator + this.semver.version + } + + debug('comp', this) +} + +var ANY = {} +Comparator.prototype.parse = function (comp) { + var r = this.options.loose ? re[COMPARATORLOOSE] : re[COMPARATOR] + var m = comp.match(r) + + if (!m) { + throw new TypeError('Invalid comparator: ' + comp) + } + + this.operator = m[1] + if (this.operator === '=') { + this.operator = '' + } + + // if it literally is just '>' or '' then allow anything. + if (!m[2]) { + this.semver = ANY + } else { + this.semver = new SemVer(m[2], this.options.loose) + } +} + +Comparator.prototype.toString = function () { + return this.value +} + +Comparator.prototype.test = function (version) { + debug('Comparator.test', version, this.options.loose) + + if (this.semver === ANY) { + return true + } + + if (typeof version === 'string') { + version = new SemVer(version, this.options) + } + + return cmp(version, this.operator, this.semver, this.options) +} + +Comparator.prototype.intersects = function (comp, options) { + if (!(comp instanceof Comparator)) { + throw new TypeError('a Comparator is required') + } + + if (!options || typeof options !== 'object') { + options = { + loose: !!options, + includePrerelease: false + } + } + + var rangeTmp + + if (this.operator === '') { + rangeTmp = new Range(comp.value, options) + return satisfies(this.value, rangeTmp, options) + } else if (comp.operator === '') { + rangeTmp = new Range(this.value, options) + return satisfies(comp.semver, rangeTmp, options) + } + + var sameDirectionIncreasing = + (this.operator === '>=' || this.operator === '>') && + (comp.operator === '>=' || comp.operator === '>') + var sameDirectionDecreasing = + (this.operator === '<=' || this.operator === '<') && + (comp.operator === '<=' || comp.operator === '<') + var sameSemVer = this.semver.version === comp.semver.version + var differentDirectionsInclusive = + (this.operator === '>=' || this.operator === '<=') && + (comp.operator === '>=' || comp.operator === '<=') + var oppositeDirectionsLessThan = + cmp(this.semver, '<', comp.semver, options) && + ((this.operator === '>=' || this.operator === '>') && + (comp.operator === '<=' || comp.operator === '<')) + var oppositeDirectionsGreaterThan = + cmp(this.semver, '>', comp.semver, options) && + ((this.operator === '<=' || this.operator === '<') && + (comp.operator === '>=' || comp.operator === '>')) + + return sameDirectionIncreasing || sameDirectionDecreasing || + (sameSemVer && differentDirectionsInclusive) || + oppositeDirectionsLessThan || oppositeDirectionsGreaterThan +} + +exports.Range = Range +function Range (range, options) { + if (!options || typeof options !== 'object') { + options = { + loose: !!options, + includePrerelease: false + } + } + + if (range instanceof Range) { + if (range.loose === !!options.loose && + range.includePrerelease === !!options.includePrerelease) { + return range + } else { + return new Range(range.raw, options) + } + } + + if (range instanceof Comparator) { + return new Range(range.value, options) + } + + if (!(this instanceof Range)) { + return new Range(range, options) + } + + this.options = options + this.loose = !!options.loose + this.includePrerelease = !!options.includePrerelease + + // First, split based on boolean or || + this.raw = range + this.set = range.split(/\s*\|\|\s*/).map(function (range) { + return this.parseRange(range.trim()) + }, this).filter(function (c) { + // throw out any that are not relevant for whatever reason + return c.length + }) + + if (!this.set.length) { + throw new TypeError('Invalid SemVer Range: ' + range) + } + + this.format() +} + +Range.prototype.format = function () { + this.range = this.set.map(function (comps) { + return comps.join(' ').trim() + }).join('||').trim() + return this.range +} + +Range.prototype.toString = function () { + return this.range +} + +Range.prototype.parseRange = function (range) { + var loose = this.options.loose + range = range.trim() + // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4` + var hr = loose ? re[HYPHENRANGELOOSE] : re[HYPHENRANGE] + range = range.replace(hr, hyphenReplace) + debug('hyphen replace', range) + // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5` + range = range.replace(re[COMPARATORTRIM], comparatorTrimReplace) + debug('comparator trim', range, re[COMPARATORTRIM]) + + // `~ 1.2.3` => `~1.2.3` + range = range.replace(re[TILDETRIM], tildeTrimReplace) + + // `^ 1.2.3` => `^1.2.3` + range = range.replace(re[CARETTRIM], caretTrimReplace) + + // normalize spaces + range = range.split(/\s+/).join(' ') + + // At this point, the range is completely trimmed and + // ready to be split into comparators. + + var compRe = loose ? re[COMPARATORLOOSE] : re[COMPARATOR] + var set = range.split(' ').map(function (comp) { + return parseComparator(comp, this.options) + }, this).join(' ').split(/\s+/) + if (this.options.loose) { + // in loose mode, throw out any that are not valid comparators + set = set.filter(function (comp) { + return !!comp.match(compRe) + }) + } + set = set.map(function (comp) { + return new Comparator(comp, this.options) + }, this) + + return set +} + +Range.prototype.intersects = function (range, options) { + if (!(range instanceof Range)) { + throw new TypeError('a Range is required') + } + + return this.set.some(function (thisComparators) { + return thisComparators.every(function (thisComparator) { + return range.set.some(function (rangeComparators) { + return rangeComparators.every(function (rangeComparator) { + return thisComparator.intersects(rangeComparator, options) + }) + }) + }) + }) +} + +// Mostly just for testing and legacy API reasons +exports.toComparators = toComparators +function toComparators (range, options) { + return new Range(range, options).set.map(function (comp) { + return comp.map(function (c) { + return c.value + }).join(' ').trim().split(' ') + }) +} + +// comprised of xranges, tildes, stars, and gtlt's at this point. +// already replaced the hyphen ranges +// turn into a set of JUST comparators. +function parseComparator (comp, options) { + debug('comp', comp, options) + comp = replaceCarets(comp, options) + debug('caret', comp) + comp = replaceTildes(comp, options) + debug('tildes', comp) + comp = replaceXRanges(comp, options) + debug('xrange', comp) + comp = replaceStars(comp, options) + debug('stars', comp) + return comp +} + +function isX (id) { + return !id || id.toLowerCase() === 'x' || id === '*' +} + +// ~, ~> --> * (any, kinda silly) +// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0 +// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0 +// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0 +// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0 +// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0 +function replaceTildes (comp, options) { + return comp.trim().split(/\s+/).map(function (comp) { + return replaceTilde(comp, options) + }).join(' ') +} + +function replaceTilde (comp, options) { + var r = options.loose ? re[TILDELOOSE] : re[TILDE] + return comp.replace(r, function (_, M, m, p, pr) { + debug('tilde', comp, _, M, m, p, pr) + var ret + + if (isX(M)) { + ret = '' + } else if (isX(m)) { + ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0' + } else if (isX(p)) { + // ~1.2 == >=1.2.0 <1.3.0 + ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0' + } else if (pr) { + debug('replaceTilde pr', pr) + ret = '>=' + M + '.' + m + '.' + p + '-' + pr + + ' <' + M + '.' + (+m + 1) + '.0' + } else { + // ~1.2.3 == >=1.2.3 <1.3.0 + ret = '>=' + M + '.' + m + '.' + p + + ' <' + M + '.' + (+m + 1) + '.0' + } + + debug('tilde return', ret) + return ret + }) +} + +// ^ --> * (any, kinda silly) +// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0 +// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0 +// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0 +// ^1.2.3 --> >=1.2.3 <2.0.0 +// ^1.2.0 --> >=1.2.0 <2.0.0 +function replaceCarets (comp, options) { + return comp.trim().split(/\s+/).map(function (comp) { + return replaceCaret(comp, options) + }).join(' ') +} + +function replaceCaret (comp, options) { + debug('caret', comp, options) + var r = options.loose ? re[CARETLOOSE] : re[CARET] + return comp.replace(r, function (_, M, m, p, pr) { + debug('caret', comp, _, M, m, p, pr) + var ret + + if (isX(M)) { + ret = '' + } else if (isX(m)) { + ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0' + } else if (isX(p)) { + if (M === '0') { + ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0' + } else { + ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0' + } + } else if (pr) { + debug('replaceCaret pr', pr) + if (M === '0') { + if (m === '0') { + ret = '>=' + M + '.' + m + '.' + p + '-' + pr + + ' <' + M + '.' + m + '.' + (+p + 1) + } else { + ret = '>=' + M + '.' + m + '.' + p + '-' + pr + + ' <' + M + '.' + (+m + 1) + '.0' + } + } else { + ret = '>=' + M + '.' + m + '.' + p + '-' + pr + + ' <' + (+M + 1) + '.0.0' + } + } else { + debug('no pr') + if (M === '0') { + if (m === '0') { + ret = '>=' + M + '.' + m + '.' + p + + ' <' + M + '.' + m + '.' + (+p + 1) + } else { + ret = '>=' + M + '.' + m + '.' + p + + ' <' + M + '.' + (+m + 1) + '.0' + } + } else { + ret = '>=' + M + '.' + m + '.' + p + + ' <' + (+M + 1) + '.0.0' + } + } + + debug('caret return', ret) + return ret + }) +} + +function replaceXRanges (comp, options) { + debug('replaceXRanges', comp, options) + return comp.split(/\s+/).map(function (comp) { + return replaceXRange(comp, options) + }).join(' ') +} + +function replaceXRange (comp, options) { + comp = comp.trim() + var r = options.loose ? re[XRANGELOOSE] : re[XRANGE] + return comp.replace(r, function (ret, gtlt, M, m, p, pr) { + debug('xRange', comp, ret, gtlt, M, m, p, pr) + var xM = isX(M) + var xm = xM || isX(m) + var xp = xm || isX(p) + var anyX = xp + + if (gtlt === '=' && anyX) { + gtlt = '' + } + + if (xM) { + if (gtlt === '>' || gtlt === '<') { + // nothing is allowed + ret = '<0.0.0' + } else { + // nothing is forbidden + ret = '*' + } + } else if (gtlt && anyX) { + // we know patch is an x, because we have any x at all. + // replace X with 0 + if (xm) { + m = 0 + } + p = 0 + + if (gtlt === '>') { + // >1 => >=2.0.0 + // >1.2 => >=1.3.0 + // >1.2.3 => >= 1.2.4 + gtlt = '>=' + if (xm) { + M = +M + 1 + m = 0 + p = 0 + } else { + m = +m + 1 + p = 0 + } + } else if (gtlt === '<=') { + // <=0.7.x is actually <0.8.0, since any 0.7.x should + // pass. Similarly, <=7.x is actually <8.0.0, etc. + gtlt = '<' + if (xm) { + M = +M + 1 + } else { + m = +m + 1 + } + } + + ret = gtlt + M + '.' + m + '.' + p + } else if (xm) { + ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0' + } else if (xp) { + ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0' + } + + debug('xRange return', ret) + + return ret + }) +} + +// Because * is AND-ed with everything else in the comparator, +// and '' means "any version", just remove the *s entirely. +function replaceStars (comp, options) { + debug('replaceStars', comp, options) + // Looseness is ignored here. star is always as loose as it gets! + return comp.trim().replace(re[STAR], '') +} + +// This function is passed to string.replace(re[HYPHENRANGE]) +// M, m, patch, prerelease, build +// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5 +// 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do +// 1.2 - 3.4 => >=1.2.0 <3.5.0 +function hyphenReplace ($0, + from, fM, fm, fp, fpr, fb, + to, tM, tm, tp, tpr, tb) { + if (isX(fM)) { + from = '' + } else if (isX(fm)) { + from = '>=' + fM + '.0.0' + } else if (isX(fp)) { + from = '>=' + fM + '.' + fm + '.0' + } else { + from = '>=' + from + } + + if (isX(tM)) { + to = '' + } else if (isX(tm)) { + to = '<' + (+tM + 1) + '.0.0' + } else if (isX(tp)) { + to = '<' + tM + '.' + (+tm + 1) + '.0' + } else if (tpr) { + to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr + } else { + to = '<=' + to + } + + return (from + ' ' + to).trim() +} + +// if ANY of the sets match ALL of its comparators, then pass +Range.prototype.test = function (version) { + if (!version) { + return false + } + + if (typeof version === 'string') { + version = new SemVer(version, this.options) + } + + for (var i = 0; i < this.set.length; i++) { + if (testSet(this.set[i], version, this.options)) { + return true + } + } + return false +} + +function testSet (set, version, options) { + for (var i = 0; i < set.length; i++) { + if (!set[i].test(version)) { + return false + } + } + + if (version.prerelease.length && !options.includePrerelease) { + // Find the set of versions that are allowed to have prereleases + // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0 + // That should allow `1.2.3-pr.2` to pass. + // However, `1.2.4-alpha.notready` should NOT be allowed, + // even though it's within the range set by the comparators. + for (i = 0; i < set.length; i++) { + debug(set[i].semver) + if (set[i].semver === ANY) { + continue + } + + if (set[i].semver.prerelease.length > 0) { + var allowed = set[i].semver + if (allowed.major === version.major && + allowed.minor === version.minor && + allowed.patch === version.patch) { + return true + } + } + } + + // Version has a -pre, but it's not one of the ones we like. + return false + } + + return true +} + +exports.satisfies = satisfies +function satisfies (version, range, options) { + try { + range = new Range(range, options) + } catch (er) { + return false + } + return range.test(version) +} + +exports.maxSatisfying = maxSatisfying +function maxSatisfying (versions, range, options) { + var max = null + var maxSV = null + try { + var rangeObj = new Range(range, options) + } catch (er) { + return null + } + versions.forEach(function (v) { + if (rangeObj.test(v)) { + // satisfies(v, range, options) + if (!max || maxSV.compare(v) === -1) { + // compare(max, v, true) + max = v + maxSV = new SemVer(max, options) + } + } + }) + return max +} + +exports.minSatisfying = minSatisfying +function minSatisfying (versions, range, options) { + var min = null + var minSV = null + try { + var rangeObj = new Range(range, options) + } catch (er) { + return null + } + versions.forEach(function (v) { + if (rangeObj.test(v)) { + // satisfies(v, range, options) + if (!min || minSV.compare(v) === 1) { + // compare(min, v, true) + min = v + minSV = new SemVer(min, options) + } + } + }) + return min +} + +exports.minVersion = minVersion +function minVersion (range, loose) { + range = new Range(range, loose) + + var minver = new SemVer('0.0.0') + if (range.test(minver)) { + return minver + } + + minver = new SemVer('0.0.0-0') + if (range.test(minver)) { + return minver + } + + minver = null + for (var i = 0; i < range.set.length; ++i) { + var comparators = range.set[i] + + comparators.forEach(function (comparator) { + // Clone to avoid manipulating the comparator's semver object. + var compver = new SemVer(comparator.semver.version) + switch (comparator.operator) { + case '>': + if (compver.prerelease.length === 0) { + compver.patch++ + } else { + compver.prerelease.push(0) + } + compver.raw = compver.format() + /* fallthrough */ + case '': + case '>=': + if (!minver || gt(minver, compver)) { + minver = compver + } + break + case '<': + case '<=': + /* Ignore maximum versions */ + break + /* istanbul ignore next */ + default: + throw new Error('Unexpected operation: ' + comparator.operator) + } + }) + } + + if (minver && range.test(minver)) { + return minver + } + + return null +} + +exports.validRange = validRange +function validRange (range, options) { + try { + // Return '*' instead of '' so that truthiness works. + // This will throw if it's invalid anyway + return new Range(range, options).range || '*' + } catch (er) { + return null + } +} + +// Determine if version is less than all the versions possible in the range +exports.ltr = ltr +function ltr (version, range, options) { + return outside(version, range, '<', options) +} + +// Determine if version is greater than all the versions possible in the range. +exports.gtr = gtr +function gtr (version, range, options) { + return outside(version, range, '>', options) +} + +exports.outside = outside +function outside (version, range, hilo, options) { + version = new SemVer(version, options) + range = new Range(range, options) + + var gtfn, ltefn, ltfn, comp, ecomp + switch (hilo) { + case '>': + gtfn = gt + ltefn = lte + ltfn = lt + comp = '>' + ecomp = '>=' + break + case '<': + gtfn = lt + ltefn = gte + ltfn = gt + comp = '<' + ecomp = '<=' + break + default: + throw new TypeError('Must provide a hilo val of "<" or ">"') + } + + // If it satisifes the range it is not outside + if (satisfies(version, range, options)) { + return false + } + + // From now on, variable terms are as if we're in "gtr" mode. + // but note that everything is flipped for the "ltr" function. + + for (var i = 0; i < range.set.length; ++i) { + var comparators = range.set[i] + + var high = null + var low = null + + comparators.forEach(function (comparator) { + if (comparator.semver === ANY) { + comparator = new Comparator('>=0.0.0') + } + high = high || comparator + low = low || comparator + if (gtfn(comparator.semver, high.semver, options)) { + high = comparator + } else if (ltfn(comparator.semver, low.semver, options)) { + low = comparator + } + }) + + // If the edge version comparator has a operator then our version + // isn't outside it + if (high.operator === comp || high.operator === ecomp) { + return false + } + + // If the lowest version comparator has an operator and our version + // is less than it then it isn't higher than the range + if ((!low.operator || low.operator === comp) && + ltefn(version, low.semver)) { + return false + } else if (low.operator === ecomp && ltfn(version, low.semver)) { + return false + } + } + return true +} + +exports.prerelease = prerelease +function prerelease (version, options) { + var parsed = parse(version, options) + return (parsed && parsed.prerelease.length) ? parsed.prerelease : null +} + +exports.intersects = intersects +function intersects (r1, r2, options) { + r1 = new Range(r1, options) + r2 = new Range(r2, options) + return r1.intersects(r2) +} + +exports.coerce = coerce +function coerce (version) { + if (version instanceof SemVer) { + return version + } + + if (typeof version !== 'string') { + return null + } + + var match = version.match(re[COERCE]) + + if (match == null) { + return null + } + + return parse(match[1] + + '.' + (match[2] || '0') + + '.' + (match[3] || '0')) +} + + +/***/ }), + +/***/ 26: +/***/ (function(module, __unusedexports, __webpack_require__) { + +module.exports = __webpack_require__(146); + +/***/ }), + +/***/ 28: +/***/ (function(module) { + +module.exports = function atob(str) { + return Buffer.from(str, 'base64').toString('binary') +} + + +/***/ }), + +/***/ 35: +/***/ (function(module) { + +module.exports = function btoa(str) { + return new Buffer(str).toString('base64') +} + + +/***/ }), + +/***/ 60: +/***/ (function(module) { + +module.exports = getPageLinks + +function getPageLinks (link) { + link = link.link || link.headers.link || '' + + const links = {} + + // link format: + // '; rel="next", ; rel="last"' + link.replace(/<([^>]*)>;\s*rel="([\w]*)"/g, (m, uri, type) => { + links[type] = uri + }) + + return links +} + + +/***/ }), + +/***/ 61: +/***/ (function(module) { + +module.exports = register + +function register (state, name, method, options) { + if (typeof method !== 'function') { + throw new Error('method for before hook must be a function') + } + + if (!options) { + options = {} + } + + if (Array.isArray(name)) { + return name.reverse().reduce(function (callback, name) { + return register.bind(null, state, name, callback, options) + }, method)() + } + + return Promise.resolve() + .then(function () { + if (!state.registry[name]) { + return method(options) + } + + return (state.registry[name]).reduce(function (method, registered) { + return registered.hook.bind(null, method, options) + }, method)() + }) +} + + +/***/ }), + +/***/ 63: +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; + +const os = __webpack_require__(87); + +const nameMap = new Map([ + [19, 'Catalina'], + [18, 'Mojave'], + [17, 'High Sierra'], + [16, 'Sierra'], + [15, 'El Capitan'], + [14, 'Yosemite'], + [13, 'Mavericks'], + [12, 'Mountain Lion'], + [11, 'Lion'], + [10, 'Snow Leopard'], + [9, 'Leopard'], + [8, 'Tiger'], + [7, 'Panther'], + [6, 'Jaguar'], + [5, 'Puma'] +]); + +const macosRelease = release => { + release = Number((release || os.release()).split('.')[0]); + return { + name: nameMap.get(release), + version: '10.' + (release - 4) + }; +}; + +module.exports = macosRelease; +// TODO: remove this in the next major version +module.exports.default = macosRelease; + + +/***/ }), + +/***/ 64: +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; + +const {PassThrough} = __webpack_require__(413); + +module.exports = options => { + options = Object.assign({}, options); + + const {array} = options; + let {encoding} = options; + const buffer = encoding === 'buffer'; + let objectMode = false; + + if (array) { + objectMode = !(encoding || buffer); + } else { + encoding = encoding || 'utf8'; + } + + if (buffer) { + encoding = null; + } + + let len = 0; + const ret = []; + const stream = new PassThrough({objectMode}); + + if (encoding) { + stream.setEncoding(encoding); + } + + stream.on('data', chunk => { + ret.push(chunk); + + if (objectMode) { + len = ret.length; + } else { + len += chunk.length; + } + }); + + stream.getBufferedValue = () => { + if (array) { + return ret; + } + + return buffer ? Buffer.concat(ret, len) : ret.join(''); + }; + + stream.getBufferedLength = () => len; + + return stream; +}; + + +/***/ }), + +/***/ 69: +/***/ (function(module) { + +module.exports = class HttpError extends Error { + constructor (message, code, headers) { + super(message) + + // Maintains proper stack trace (only available on V8) + /* istanbul ignore next */ + if (Error.captureStackTrace) { + Error.captureStackTrace(this, this.constructor) + } + + this.name = 'HttpError' + this.code = code + this.headers = headers + } +} + + +/***/ }), + +/***/ 80: +/***/ (function(module, __unusedexports, __webpack_require__) { + +module.exports = __webpack_require__(334); + + +/***/ }), + +/***/ 82: +/***/ (function(module, __unusedexports, __webpack_require__) { + +var url = __webpack_require__(835); +var http = __webpack_require__(605); +var https = __webpack_require__(211); +var assert = __webpack_require__(357); +var Writable = __webpack_require__(413).Writable; +var debug = __webpack_require__(523)("follow-redirects"); + +// RFC7231§4.2.1: Of the request methods defined by this specification, +// the GET, HEAD, OPTIONS, and TRACE methods are defined to be safe. +var SAFE_METHODS = { GET: true, HEAD: true, OPTIONS: true, TRACE: true }; + +// Create handlers that pass events from native requests +var eventHandlers = Object.create(null); +["abort", "aborted", "error", "socket", "timeout"].forEach(function (event) { + eventHandlers[event] = function (arg) { + this._redirectable.emit(event, arg); + }; +}); + +// An HTTP(S) request that can be redirected +function RedirectableRequest(options, responseCallback) { + // Initialize the request + Writable.call(this); + options.headers = options.headers || {}; + this._options = options; + this._redirectCount = 0; + this._redirects = []; + this._requestBodyLength = 0; + this._requestBodyBuffers = []; + + // Since http.request treats host as an alias of hostname, + // but the url module interprets host as hostname plus port, + // eliminate the host property to avoid confusion. + if (options.host) { + // Use hostname if set, because it has precedence + if (!options.hostname) { + options.hostname = options.host; + } + delete options.host; + } + + // Attach a callback if passed + if (responseCallback) { + this.on("response", responseCallback); + } + + // React to responses of native requests + var self = this; + this._onNativeResponse = function (response) { + self._processResponse(response); + }; + + // Complete the URL object when necessary + if (!options.pathname && options.path) { + var searchPos = options.path.indexOf("?"); + if (searchPos < 0) { + options.pathname = options.path; + } + else { + options.pathname = options.path.substring(0, searchPos); + options.search = options.path.substring(searchPos); + } + } + + // Perform the first request + this._performRequest(); +} +RedirectableRequest.prototype = Object.create(Writable.prototype); + +// Writes buffered data to the current native request +RedirectableRequest.prototype.write = function (data, encoding, callback) { + // Validate input and shift parameters if necessary + if (!(typeof data === "string" || typeof data === "object" && ("length" in data))) { + throw new Error("data should be a string, Buffer or Uint8Array"); + } + if (typeof encoding === "function") { + callback = encoding; + encoding = null; + } + + // Ignore empty buffers, since writing them doesn't invoke the callback + // https://github.com/nodejs/node/issues/22066 + if (data.length === 0) { + if (callback) { + callback(); + } + return; + } + // Only write when we don't exceed the maximum body length + if (this._requestBodyLength + data.length <= this._options.maxBodyLength) { + this._requestBodyLength += data.length; + this._requestBodyBuffers.push({ data: data, encoding: encoding }); + this._currentRequest.write(data, encoding, callback); + } + // Error when we exceed the maximum body length + else { + this.emit("error", new Error("Request body larger than maxBodyLength limit")); + this.abort(); + } +}; + +// Ends the current native request +RedirectableRequest.prototype.end = function (data, encoding, callback) { + // Shift parameters if necessary + if (typeof data === "function") { + callback = data; + data = encoding = null; + } + else if (typeof encoding === "function") { + callback = encoding; + encoding = null; + } + + // Write data and end + var currentRequest = this._currentRequest; + this.write(data || "", encoding, function () { + currentRequest.end(null, null, callback); + }); +}; + +// Sets a header value on the current native request +RedirectableRequest.prototype.setHeader = function (name, value) { + this._options.headers[name] = value; + this._currentRequest.setHeader(name, value); +}; + +// Clears a header value on the current native request +RedirectableRequest.prototype.removeHeader = function (name) { + delete this._options.headers[name]; + this._currentRequest.removeHeader(name); +}; + +// Proxy all other public ClientRequest methods +[ + "abort", "flushHeaders", "getHeader", + "setNoDelay", "setSocketKeepAlive", "setTimeout", +].forEach(function (method) { + RedirectableRequest.prototype[method] = function (a, b) { + return this._currentRequest[method](a, b); + }; +}); + +// Proxy all public ClientRequest properties +["aborted", "connection", "socket"].forEach(function (property) { + Object.defineProperty(RedirectableRequest.prototype, property, { + get: function () { return this._currentRequest[property]; }, + }); +}); + +// Executes the next native request (initial or redirect) +RedirectableRequest.prototype._performRequest = function () { + // Load the native protocol + var protocol = this._options.protocol; + var nativeProtocol = this._options.nativeProtocols[protocol]; + if (!nativeProtocol) { + this.emit("error", new Error("Unsupported protocol " + protocol)); + return; + } + + // If specified, use the agent corresponding to the protocol + // (HTTP and HTTPS use different types of agents) + if (this._options.agents) { + var scheme = protocol.substr(0, protocol.length - 1); + this._options.agent = this._options.agents[scheme]; + } + + // Create the native request + var request = this._currentRequest = + nativeProtocol.request(this._options, this._onNativeResponse); + this._currentUrl = url.format(this._options); + + // Set up event handlers + request._redirectable = this; + for (var event in eventHandlers) { + /* istanbul ignore else */ + if (event) { + request.on(event, eventHandlers[event]); + } + } + + // End a redirected request + // (The first request must be ended explicitly with RedirectableRequest#end) + if (this._isRedirect) { + // Write the request entity and end. + var i = 0; + var buffers = this._requestBodyBuffers; + (function writeNext() { + if (i < buffers.length) { + var buffer = buffers[i++]; + request.write(buffer.data, buffer.encoding, writeNext); + } + else { + request.end(); + } + }()); + } +}; + +// Processes a response from the current native request +RedirectableRequest.prototype._processResponse = function (response) { + // Store the redirected response + if (this._options.trackRedirects) { + this._redirects.push({ + url: this._currentUrl, + headers: response.headers, + statusCode: response.statusCode, + }); + } + + // RFC7231§6.4: The 3xx (Redirection) class of status code indicates + // that further action needs to be taken by the user agent in order to + // fulfill the request. If a Location header field is provided, + // the user agent MAY automatically redirect its request to the URI + // referenced by the Location field value, + // even if the specific status code is not understood. + var location = response.headers.location; + if (location && this._options.followRedirects !== false && + response.statusCode >= 300 && response.statusCode < 400) { + // RFC7231§6.4: A client SHOULD detect and intervene + // in cyclical redirections (i.e., "infinite" redirection loops). + if (++this._redirectCount > this._options.maxRedirects) { + this.emit("error", new Error("Max redirects exceeded.")); + return; + } + + // RFC7231§6.4: Automatic redirection needs to done with + // care for methods not known to be safe […], + // since the user might not wish to redirect an unsafe request. + // RFC7231§6.4.7: The 307 (Temporary Redirect) status code indicates + // that the target resource resides temporarily under a different URI + // and the user agent MUST NOT change the request method + // if it performs an automatic redirection to that URI. + var header; + var headers = this._options.headers; + if (response.statusCode !== 307 && !(this._options.method in SAFE_METHODS)) { + this._options.method = "GET"; + // Drop a possible entity and headers related to it + this._requestBodyBuffers = []; + for (header in headers) { + if (/^content-/i.test(header)) { + delete headers[header]; + } + } + } + + // Drop the Host header, as the redirect might lead to a different host + if (!this._isRedirect) { + for (header in headers) { + if (/^host$/i.test(header)) { + delete headers[header]; + } + } + } + + // Perform the redirected request + var redirectUrl = url.resolve(this._currentUrl, location); + debug("redirecting to", redirectUrl); + Object.assign(this._options, url.parse(redirectUrl)); + this._isRedirect = true; + this._performRequest(); + + // Discard the remainder of the response to avoid waiting for data + response.destroy(); + } + else { + // The response is not a redirect; return it as-is + response.responseUrl = this._currentUrl; + response.redirects = this._redirects; + this.emit("response", response); + + // Clean up + this._requestBodyBuffers = []; + } +}; + +// Wraps the key/value object of protocols with redirect functionality +function wrap(protocols) { + // Default settings + var exports = { + maxRedirects: 21, + maxBodyLength: 10 * 1024 * 1024, + }; + + // Wrap each protocol + var nativeProtocols = {}; + Object.keys(protocols).forEach(function (scheme) { + var protocol = scheme + ":"; + var nativeProtocol = nativeProtocols[protocol] = protocols[scheme]; + var wrappedProtocol = exports[scheme] = Object.create(nativeProtocol); + + // Executes a request, following redirects + wrappedProtocol.request = function (options, callback) { + if (typeof options === "string") { + options = url.parse(options); + options.maxRedirects = exports.maxRedirects; + } + else { + options = Object.assign({ + protocol: protocol, + maxRedirects: exports.maxRedirects, + maxBodyLength: exports.maxBodyLength, + }, options); + } + options.nativeProtocols = nativeProtocols; + assert.equal(options.protocol, protocol, "protocol mismatch"); + debug("options", options); + return new RedirectableRequest(options, callback); + }; + + // Executes a GET request, following redirects + wrappedProtocol.get = function (options, callback) { + var request = wrappedProtocol.request(options, callback); + request.end(); + return request; + }; + }); + return exports; +} + +// Exports +module.exports = wrap({ http: http, https: https }); +module.exports.wrap = wrap; + + +/***/ }), + +/***/ 83: +/***/ (function(module) { + +module.exports = addHook + +function addHook (state, kind, name, hook) { + var orig = hook + if (!state.registry[name]) { + state.registry[name] = [] + } + + if (kind === 'before') { + hook = function (method, options) { + return Promise.resolve() + .then(orig.bind(null, options)) + .then(method.bind(null, options)) + } + } + + if (kind === 'after') { + hook = function (method, options) { + var result + return Promise.resolve() + .then(method.bind(null, options)) + .then(function (result_) { + result = result_ + return orig(result, options) + }) + .then(function () { + return result + }) + } + } + + if (kind === 'error') { + hook = function (method, options) { + return Promise.resolve() + .then(method.bind(null, options)) + .catch(function (error) { + return orig(error, options) + }) + } + } + + state.registry[name].push({ + hook: hook, + orig: orig + }) +} + + +/***/ }), + +/***/ 86: +/***/ (function(module, __unusedexports, __webpack_require__) { + +module.exports = authenticationBeforeRequest; + +const btoa = __webpack_require__(35); + +const withAuthorizationPrefix = __webpack_require__(265); + +function authenticationBeforeRequest(state, options) { + if (typeof state.auth === "string") { + options.headers.authorization = withAuthorizationPrefix(state.auth); + return; + } + + if (state.auth.username) { + const hash = btoa(`${state.auth.username}:${state.auth.password}`); + options.headers.authorization = `Basic ${hash}`; + if (state.otp) { + options.headers["x-github-otp"] = state.otp; + } + return; + } + + if (state.auth.clientId) { + // There is a special case for OAuth applications, when `clientId` and `clientSecret` is passed as + // Basic Authorization instead of query parameters. The only routes where that applies share the same + // URL though: `/applications/:client_id/tokens/:access_token`. + // + // 1. [Check an authorization](https://developer.github.com/v3/oauth_authorizations/#check-an-authorization) + // 2. [Reset an authorization](https://developer.github.com/v3/oauth_authorizations/#reset-an-authorization) + // 3. [Revoke an authorization for an application](https://developer.github.com/v3/oauth_authorizations/#revoke-an-authorization-for-an-application) + // + // We identify by checking the URL. It must merge both "/applications/:client_id/tokens/:access_token" + // as well as "/applications/123/tokens/token456" + if (/\/applications\/:?[\w_]+\/tokens\/:?[\w_]+($|\?)/.test(options.url)) { + const hash = btoa(`${state.auth.clientId}:${state.auth.clientSecret}`); + options.headers.authorization = `Basic ${hash}`; + return; + } + + options.url += options.url.indexOf("?") === -1 ? "?" : "&"; + options.url += `client_id=${state.auth.clientId}&client_secret=${state.auth.clientSecret}`; + return; + } + + return Promise.resolve() + + .then(() => { + return state.auth(); + }) + + .then(authorization => { + options.headers.authorization = withAuthorizationPrefix(authorization); + }); +} + + +/***/ }), + +/***/ 87: +/***/ (function(module) { + +module.exports = require("os"); + +/***/ }), + +/***/ 103: +/***/ (function(module) { + +"use strict"; + + +/** + * Determines whether the specified URL is absolute + * + * @param {string} url The URL to test + * @returns {boolean} True if the specified URL is absolute, otherwise false + */ +module.exports = function isAbsoluteURL(url) { + // A URL is considered absolute if it begins with "://" or "//" (protocol-relative URL). + // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed + // by any combination of letters, digits, plus, period, or hyphen. + return /^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(url); +}; + + +/***/ }), + +/***/ 116: +/***/ (function(module) { + +"use strict"; + +module.exports = /^#!.*/; + + +/***/ }), + +/***/ 118: +/***/ (function(__unusedmodule, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, '__esModule', { value: true }); + +function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } + +var osName = _interopDefault(__webpack_require__(931)); + +function getUserAgent() { + try { + return `Node.js/${process.version.substr(1)} (${osName()}; ${process.arch})`; + } catch (error) { + if (/wmic os get Caption/.test(error.message)) { + return "Windows "; + } + + return ""; + } +} + +exports.getUserAgent = getUserAgent; +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ 123: +/***/ (function(module, __unusedexports, __webpack_require__) { + +module.exports = factory; + +const Octokit = __webpack_require__(818); +const registerPlugin = __webpack_require__(525); + +function factory(plugins) { + const Api = Octokit.bind(null, plugins || []); + Api.plugin = registerPlugin.bind(null, plugins || []); + return Api; +} + + +/***/ }), + +/***/ 128: +/***/ (function(__unusedmodule, exports) { + +"use strict"; + + +Object.defineProperty(exports, '__esModule', { value: true }); + +async function auth(token) { + const tokenType = token.split(/\./).length === 3 ? "app" : /^v\d+\./.test(token) ? "installation" : "oauth"; + return { + type: "token", + token: token, + tokenType + }; +} + +/** + * Prefix token for usage in the Authorization header + * + * @param token OAuth token or JSON Web Token + */ +function withAuthorizationPrefix(token) { + if (token.split(/\./).length === 3) { + return `bearer ${token}`; + } + + return `token ${token}`; +} + +async function hook(token, request, route, parameters) { + const endpoint = request.endpoint.merge(route, parameters); + endpoint.headers.authorization = withAuthorizationPrefix(token); + return request(endpoint); +} + +const createTokenAuth = function createTokenAuth(token) { + if (!token) { + throw new Error("[@octokit/auth-token] No token passed to createTokenAuth"); + } + + if (typeof token !== "string") { + throw new Error("[@octokit/auth-token] Token passed to createTokenAuth is not a string"); + } + + token = token.replace(/^(token|bearer) +/i, ""); + return Object.assign(auth.bind(null, token), { + hook: hook.bind(null, token) + }); +}; + +exports.createTokenAuth = createTokenAuth; +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ 129: +/***/ (function(module) { + +module.exports = require("child_process"); + +/***/ }), + +/***/ 144: +/***/ (function(module, __unusedexports, __webpack_require__) { + +module.exports = isexe +isexe.sync = sync + +var fs = __webpack_require__(747) + +function checkPathExt (path, options) { + var pathext = options.pathExt !== undefined ? + options.pathExt : process.env.PATHEXT + + if (!pathext) { + return true + } + + pathext = pathext.split(';') + if (pathext.indexOf('') !== -1) { + return true + } + for (var i = 0; i < pathext.length; i++) { + var p = pathext[i].toLowerCase() + if (p && path.substr(-p.length).toLowerCase() === p) { + return true + } + } + return false +} + +function checkStat (stat, path, options) { + if (!stat.isSymbolicLink() && !stat.isFile()) { + return false + } + return checkPathExt(path, options) +} + +function isexe (path, options, cb) { + fs.stat(path, function (er, stat) { + cb(er, er ? false : checkStat(stat, path, options)) + }) +} + +function sync (path, options) { + return checkStat(fs.statSync(path), path, options) +} + + +/***/ }), + +/***/ 146: +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(156); +var bind = __webpack_require__(889); +var Axios = __webpack_require__(180); +var mergeConfig = __webpack_require__(541); +var defaults = __webpack_require__(343); + +/** + * Create an instance of Axios + * + * @param {Object} defaultConfig The default config for the instance + * @return {Axios} A new instance of Axios + */ +function createInstance(defaultConfig) { + var context = new Axios(defaultConfig); + var instance = bind(Axios.prototype.request, context); + + // Copy axios.prototype to instance + utils.extend(instance, Axios.prototype, context); + + // Copy context to instance + utils.extend(instance, context); + + return instance; +} + +// Create the default instance to be exported +var axios = createInstance(defaults); + +// Expose Axios class to allow class inheritance +axios.Axios = Axios; + +// Factory for creating new instances +axios.create = function create(instanceConfig) { + return createInstance(mergeConfig(axios.defaults, instanceConfig)); +}; + +// Expose Cancel & CancelToken +axios.Cancel = __webpack_require__(601); +axios.CancelToken = __webpack_require__(297); +axios.isCancel = __webpack_require__(15); + +// Expose all/spread +axios.all = function all(promises) { + return Promise.all(promises); +}; +axios.spread = __webpack_require__(655); + +module.exports = axios; + +// Allow use of default import syntax in TypeScript +module.exports.default = axios; + + +/***/ }), + +/***/ 148: +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; + + +module.exports = validate; + +const { RequestError } = __webpack_require__(905); +const get = __webpack_require__(412); +const set = __webpack_require__(223); + +function validate(octokit, options) { + if (!options.request.validate) { + return; + } + const { validate: params } = options.request; + + Object.keys(params).forEach(parameterName => { + const parameter = get(params, parameterName); + + const expectedType = parameter.type; + let parentParameterName; + let parentValue; + let parentParamIsPresent = true; + let parentParameterIsArray = false; + + if (/\./.test(parameterName)) { + parentParameterName = parameterName.replace(/\.[^.]+$/, ""); + parentParameterIsArray = parentParameterName.slice(-2) === "[]"; + if (parentParameterIsArray) { + parentParameterName = parentParameterName.slice(0, -2); + } + parentValue = get(options, parentParameterName); + parentParamIsPresent = + parentParameterName === "headers" || + (typeof parentValue === "object" && parentValue !== null); + } + + const values = parentParameterIsArray + ? (get(options, parentParameterName) || []).map( + value => value[parameterName.split(/\./).pop()] + ) + : [get(options, parameterName)]; + + values.forEach((value, i) => { + const valueIsPresent = typeof value !== "undefined"; + const valueIsNull = value === null; + const currentParameterName = parentParameterIsArray + ? parameterName.replace(/\[\]/, `[${i}]`) + : parameterName; + + if (!parameter.required && !valueIsPresent) { + return; + } + + // if the parent parameter is of type object but allows null + // then the child parameters can be ignored + if (!parentParamIsPresent) { + return; + } + + if (parameter.allowNull && valueIsNull) { + return; + } + + if (!parameter.allowNull && valueIsNull) { + throw new RequestError( + `'${currentParameterName}' cannot be null`, + 400, + { + request: options + } + ); + } + + if (parameter.required && !valueIsPresent) { + throw new RequestError( + `Empty value for parameter '${currentParameterName}': ${JSON.stringify( + value + )}`, + 400, + { + request: options + } + ); + } + + // parse to integer before checking for enum + // so that string "1" will match enum with number 1 + if (expectedType === "integer") { + const unparsedValue = value; + value = parseInt(value, 10); + if (isNaN(value)) { + throw new RequestError( + `Invalid value for parameter '${currentParameterName}': ${JSON.stringify( + unparsedValue + )} is NaN`, + 400, + { + request: options + } + ); + } + } + + if (parameter.enum && parameter.enum.indexOf(String(value)) === -1) { + throw new RequestError( + `Invalid value for parameter '${currentParameterName}': ${JSON.stringify( + value + )}`, + 400, + { + request: options + } + ); + } + + if (parameter.validation) { + const regex = new RegExp(parameter.validation); + if (!regex.test(value)) { + throw new RequestError( + `Invalid value for parameter '${currentParameterName}': ${JSON.stringify( + value + )}`, + 400, + { + request: options + } + ); + } + } + + if (expectedType === "object" && typeof value === "string") { + try { + value = JSON.parse(value); + } catch (exception) { + throw new RequestError( + `JSON parse error of value for parameter '${currentParameterName}': ${JSON.stringify( + value + )}`, + 400, + { + request: options + } + ); + } + } + + set(options, parameter.mapTo || currentParameterName, value); + }); + }); + + return options; +} + + +/***/ }), + +/***/ 156: +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; + + +var bind = __webpack_require__(889); + +/*global toString:true*/ + +// utils is a library of generic helper functions non-specific to axios + +var toString = Object.prototype.toString; + +/** + * Determine if a value is an Array + * + * @param {Object} val The value to test + * @returns {boolean} True if value is an Array, otherwise false + */ +function isArray(val) { + return toString.call(val) === '[object Array]'; +} + +/** + * Determine if a value is undefined + * + * @param {Object} val The value to test + * @returns {boolean} True if the value is undefined, otherwise false + */ +function isUndefined(val) { + return typeof val === 'undefined'; +} + +/** + * Determine if a value is a Buffer + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Buffer, otherwise false + */ +function isBuffer(val) { + return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor) + && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val); +} + +/** + * Determine if a value is an ArrayBuffer + * + * @param {Object} val The value to test + * @returns {boolean} True if value is an ArrayBuffer, otherwise false + */ +function isArrayBuffer(val) { + return toString.call(val) === '[object ArrayBuffer]'; +} + +/** + * Determine if a value is a FormData + * + * @param {Object} val The value to test + * @returns {boolean} True if value is an FormData, otherwise false + */ +function isFormData(val) { + return (typeof FormData !== 'undefined') && (val instanceof FormData); +} + +/** + * Determine if a value is a view on an ArrayBuffer + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false + */ +function isArrayBufferView(val) { + var result; + if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) { + result = ArrayBuffer.isView(val); + } else { + result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer); + } + return result; +} + +/** + * Determine if a value is a String + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a String, otherwise false + */ +function isString(val) { + return typeof val === 'string'; +} + +/** + * Determine if a value is a Number + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Number, otherwise false + */ +function isNumber(val) { + return typeof val === 'number'; +} + +/** + * Determine if a value is an Object + * + * @param {Object} val The value to test + * @returns {boolean} True if value is an Object, otherwise false + */ +function isObject(val) { + return val !== null && typeof val === 'object'; +} + +/** + * Determine if a value is a Date + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Date, otherwise false + */ +function isDate(val) { + return toString.call(val) === '[object Date]'; +} + +/** + * Determine if a value is a File + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a File, otherwise false + */ +function isFile(val) { + return toString.call(val) === '[object File]'; +} + +/** + * Determine if a value is a Blob + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Blob, otherwise false + */ +function isBlob(val) { + return toString.call(val) === '[object Blob]'; +} + +/** + * Determine if a value is a Function + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Function, otherwise false + */ +function isFunction(val) { + return toString.call(val) === '[object Function]'; +} + +/** + * Determine if a value is a Stream + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Stream, otherwise false + */ +function isStream(val) { + return isObject(val) && isFunction(val.pipe); +} + +/** + * Determine if a value is a URLSearchParams object + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a URLSearchParams object, otherwise false + */ +function isURLSearchParams(val) { + return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams; +} + +/** + * Trim excess whitespace off the beginning and end of a string + * + * @param {String} str The String to trim + * @returns {String} The String freed of excess whitespace + */ +function trim(str) { + return str.replace(/^\s*/, '').replace(/\s*$/, ''); +} + +/** + * Determine if we're running in a standard browser environment + * + * This allows axios to run in a web worker, and react-native. + * Both environments support XMLHttpRequest, but not fully standard globals. + * + * web workers: + * typeof window -> undefined + * typeof document -> undefined + * + * react-native: + * navigator.product -> 'ReactNative' + * nativescript + * navigator.product -> 'NativeScript' or 'NS' + */ +function isStandardBrowserEnv() { + if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' || + navigator.product === 'NativeScript' || + navigator.product === 'NS')) { + return false; + } + return ( + typeof window !== 'undefined' && + typeof document !== 'undefined' + ); +} + +/** + * Iterate over an Array or an Object invoking a function for each item. + * + * If `obj` is an Array callback will be called passing + * the value, index, and complete array for each item. + * + * If 'obj' is an Object callback will be called passing + * the value, key, and complete object for each property. + * + * @param {Object|Array} obj The object to iterate + * @param {Function} fn The callback to invoke for each item + */ +function forEach(obj, fn) { + // Don't bother if no value provided + if (obj === null || typeof obj === 'undefined') { + return; + } + + // Force an array if not already something iterable + if (typeof obj !== 'object') { + /*eslint no-param-reassign:0*/ + obj = [obj]; + } + + if (isArray(obj)) { + // Iterate over array values + for (var i = 0, l = obj.length; i < l; i++) { + fn.call(null, obj[i], i, obj); + } + } else { + // Iterate over object keys + for (var key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key)) { + fn.call(null, obj[key], key, obj); + } + } + } +} + +/** + * Accepts varargs expecting each argument to be an object, then + * immutably merges the properties of each object and returns result. + * + * When multiple objects contain the same key the later object in + * the arguments list will take precedence. + * + * Example: + * + * ```js + * var result = merge({foo: 123}, {foo: 456}); + * console.log(result.foo); // outputs 456 + * ``` + * + * @param {Object} obj1 Object to merge + * @returns {Object} Result of all merge properties + */ +function merge(/* obj1, obj2, obj3, ... */) { + var result = {}; + function assignValue(val, key) { + if (typeof result[key] === 'object' && typeof val === 'object') { + result[key] = merge(result[key], val); + } else { + result[key] = val; + } + } + + for (var i = 0, l = arguments.length; i < l; i++) { + forEach(arguments[i], assignValue); + } + return result; +} + +/** + * Function equal to merge with the difference being that no reference + * to original objects is kept. + * + * @see merge + * @param {Object} obj1 Object to merge + * @returns {Object} Result of all merge properties + */ +function deepMerge(/* obj1, obj2, obj3, ... */) { + var result = {}; + function assignValue(val, key) { + if (typeof result[key] === 'object' && typeof val === 'object') { + result[key] = deepMerge(result[key], val); + } else if (typeof val === 'object') { + result[key] = deepMerge({}, val); + } else { + result[key] = val; + } + } + + for (var i = 0, l = arguments.length; i < l; i++) { + forEach(arguments[i], assignValue); + } + return result; +} + +/** + * Extends object a by mutably adding to it the properties of object b. + * + * @param {Object} a The object to be extended + * @param {Object} b The object to copy properties from + * @param {Object} thisArg The object to bind function to + * @return {Object} The resulting value of object a + */ +function extend(a, b, thisArg) { + forEach(b, function assignValue(val, key) { + if (thisArg && typeof val === 'function') { + a[key] = bind(val, thisArg); + } else { + a[key] = val; + } + }); + return a; +} + +module.exports = { + isArray: isArray, + isArrayBuffer: isArrayBuffer, + isBuffer: isBuffer, + isFormData: isFormData, + isArrayBufferView: isArrayBufferView, + isString: isString, + isNumber: isNumber, + isObject: isObject, + isUndefined: isUndefined, + isDate: isDate, + isFile: isFile, + isBlob: isBlob, + isFunction: isFunction, + isStream: isStream, + isURLSearchParams: isURLSearchParams, + isStandardBrowserEnv: isStandardBrowserEnv, + forEach: forEach, + merge: merge, + deepMerge: deepMerge, + extend: extend, + trim: trim +}; + + +/***/ }), + +/***/ 172: +/***/ (function(module, __unusedexports, __webpack_require__) { + +module.exports = paginationMethodsPlugin + +function paginationMethodsPlugin (octokit) { + octokit.getFirstPage = __webpack_require__(213).bind(null, octokit) + octokit.getLastPage = __webpack_require__(845).bind(null, octokit) + octokit.getNextPage = __webpack_require__(774).bind(null, octokit) + octokit.getPreviousPage = __webpack_require__(629).bind(null, octokit) + octokit.hasFirstPage = __webpack_require__(438) + octokit.hasLastPage = __webpack_require__(224) + octokit.hasNextPage = __webpack_require__(440) + octokit.hasPreviousPage = __webpack_require__(435) +} + + +/***/ }), + +/***/ 180: +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(156); +var buildURL = __webpack_require__(320); +var InterceptorManager = __webpack_require__(766); +var dispatchRequest = __webpack_require__(612); +var mergeConfig = __webpack_require__(541); + +/** + * Create a new instance of Axios + * + * @param {Object} instanceConfig The default config for the instance + */ +function Axios(instanceConfig) { + this.defaults = instanceConfig; + this.interceptors = { + request: new InterceptorManager(), + response: new InterceptorManager() + }; +} + +/** + * Dispatch a request + * + * @param {Object} config The config specific for this request (merged with this.defaults) + */ +Axios.prototype.request = function request(config) { + /*eslint no-param-reassign:0*/ + // Allow for axios('example/url'[, config]) a la fetch API + if (typeof config === 'string') { + config = arguments[1] || {}; + config.url = arguments[0]; + } else { + config = config || {}; + } + + config = mergeConfig(this.defaults, config); + + // Set config.method + if (config.method) { + config.method = config.method.toLowerCase(); + } else if (this.defaults.method) { + config.method = this.defaults.method.toLowerCase(); + } else { + config.method = 'get'; + } + + // Hook up interceptors middleware + var chain = [dispatchRequest, undefined]; + var promise = Promise.resolve(config); + + this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) { + chain.unshift(interceptor.fulfilled, interceptor.rejected); + }); + + this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) { + chain.push(interceptor.fulfilled, interceptor.rejected); + }); + + while (chain.length) { + promise = promise.then(chain.shift(), chain.shift()); + } + + return promise; +}; + +Axios.prototype.getUri = function getUri(config) { + config = mergeConfig(this.defaults, config); + return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\?/, ''); +}; + +// Provide aliases for supported request methods +utils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) { + /*eslint func-names:0*/ + Axios.prototype[method] = function(url, config) { + return this.request(utils.merge(config || {}, { + method: method, + url: url + })); + }; +}); + +utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { + /*eslint func-names:0*/ + Axios.prototype[method] = function(url, data, config) { + return this.request(utils.merge(config || {}, { + method: method, + url: url, + data: data + })); + }; +}); + +module.exports = Axios; + + +/***/ }), + +/***/ 186: +/***/ (function(module) { + +module.exports = removeHook + +function removeHook (state, name, method) { + if (!state.registry[name]) { + return + } + + var index = state.registry[name] + .map(function (registered) { return registered.orig }) + .indexOf(method) + + if (index === -1) { + return + } + + state.registry[name].splice(index, 1) +} + + +/***/ }), + +/***/ 187: +/***/ (function(module) { + +module.exports = deprecate + +const loggedMessages = {} + +function deprecate (message) { + if (loggedMessages[message]) { + return + } + + console.warn(`DEPRECATED (@octokit/rest): ${message}`) + loggedMessages[message] = 1 +} + + +/***/ }), + +/***/ 208: +/***/ (function(__unusedmodule, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, '__esModule', { value: true }); + +var deprecation = __webpack_require__(249); + +var endpointsByScope = { + actions: { + cancelWorkflowRun: { + method: "POST", + params: { + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + }, + run_id: { + required: true, + type: "integer" + } + }, + url: "/repos/:owner/:repo/actions/runs/:run_id/cancel" + }, + createOrUpdateSecretForRepo: { + method: "PUT", + params: { + encrypted_value: { + type: "string" + }, + key_id: { + type: "string" + }, + name: { + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/actions/secrets/:name" + }, + createRegistrationToken: { + method: "POST", + params: { + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/actions/runners/registration-token" + }, + createRemoveToken: { + method: "POST", + params: { + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/actions/runners/remove-token" + }, + deleteArtifact: { + method: "DELETE", + params: { + artifact_id: { + required: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/actions/artifacts/:artifact_id" + }, + deleteSecretFromRepo: { + method: "DELETE", + params: { + name: { + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/actions/secrets/:name" + }, + downloadArtifact: { + method: "GET", + params: { + archive_format: { + required: true, + type: "string" + }, + artifact_id: { + required: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/actions/artifacts/:artifact_id/:archive_format" + }, + getArtifact: { + method: "GET", + params: { + artifact_id: { + required: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/actions/artifacts/:artifact_id" + }, + getPublicKey: { + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/actions/secrets/public-key" + }, + getSecret: { + method: "GET", + params: { + name: { + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/actions/secrets/:name" + }, + getSelfHostedRunner: { + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + }, + runner_id: { + required: true, + type: "integer" + } + }, + url: "/repos/:owner/:repo/actions/runners/:runner_id" + }, + getWorkflow: { + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + }, + workflow_id: { + required: true, + type: "integer" + } + }, + url: "/repos/:owner/:repo/actions/workflows/:workflow_id" + }, + getWorkflowJob: { + method: "GET", + params: { + job_id: { + required: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/actions/jobs/:job_id" + }, + getWorkflowRun: { + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + }, + run_id: { + required: true, + type: "integer" + } + }, + url: "/repos/:owner/:repo/actions/runs/:run_id" + }, + listDownloadsForSelfHostedRunnerApplication: { + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/actions/runners/downloads" + }, + listJobsForWorkflowRun: { + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + repo: { + required: true, + type: "string" + }, + run_id: { + required: true, + type: "integer" + } + }, + url: "/repos/:owner/:repo/actions/runs/:run_id/jobs" + }, + listRepoWorkflowRuns: { + method: "GET", + params: { + actor: { + type: "string" + }, + branch: { + type: "string" + }, + event: { + type: "string" + }, + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + repo: { + required: true, + type: "string" + }, + status: { + enum: ["completed", "status", "conclusion"], + type: "string" + } + }, + url: "/repos/:owner/:repo/actions/runs" + }, + listRepoWorkflows: { + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/actions/workflows" + }, + listSecretsForRepo: { + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/actions/secrets" + }, + listSelfHostedRunnersForRepo: { + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/actions/runners" + }, + listWorkflowJobLogs: { + method: "GET", + params: { + job_id: { + required: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/actions/jobs/:job_id/logs" + }, + listWorkflowRunArtifacts: { + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + repo: { + required: true, + type: "string" + }, + run_id: { + required: true, + type: "integer" + } + }, + url: "/repos/:owner/:repo/actions/runs/:run_id/artifacts" + }, + listWorkflowRunLogs: { + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + repo: { + required: true, + type: "string" + }, + run_id: { + required: true, + type: "integer" + } + }, + url: "/repos/:owner/:repo/actions/runs/:run_id/logs" + }, + listWorkflowRuns: { + method: "GET", + params: { + actor: { + type: "string" + }, + branch: { + type: "string" + }, + event: { + type: "string" + }, + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + repo: { + required: true, + type: "string" + }, + status: { + enum: ["completed", "status", "conclusion"], + type: "string" + }, + workflow_id: { + required: true, + type: "integer" + } + }, + url: "/repos/:owner/:repo/actions/workflows/:workflow_id/runs" + }, + reRunWorkflow: { + method: "POST", + params: { + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + }, + run_id: { + required: true, + type: "integer" + } + }, + url: "/repos/:owner/:repo/actions/runs/:run_id/rerun" + }, + removeSelfHostedRunner: { + method: "DELETE", + params: { + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + }, + runner_id: { + required: true, + type: "integer" + } + }, + url: "/repos/:owner/:repo/actions/runners/:runner_id" + } + }, + activity: { + checkStarringRepo: { + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/user/starred/:owner/:repo" + }, + deleteRepoSubscription: { + method: "DELETE", + params: { + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/subscription" + }, + deleteThreadSubscription: { + method: "DELETE", + params: { + thread_id: { + required: true, + type: "integer" + } + }, + url: "/notifications/threads/:thread_id/subscription" + }, + getRepoSubscription: { + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/subscription" + }, + getThread: { + method: "GET", + params: { + thread_id: { + required: true, + type: "integer" + } + }, + url: "/notifications/threads/:thread_id" + }, + getThreadSubscription: { + method: "GET", + params: { + thread_id: { + required: true, + type: "integer" + } + }, + url: "/notifications/threads/:thread_id/subscription" + }, + listEventsForOrg: { + method: "GET", + params: { + org: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + username: { + required: true, + type: "string" + } + }, + url: "/users/:username/events/orgs/:org" + }, + listEventsForUser: { + method: "GET", + params: { + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + username: { + required: true, + type: "string" + } + }, + url: "/users/:username/events" + }, + listFeeds: { + method: "GET", + params: {}, + url: "/feeds" + }, + listNotifications: { + method: "GET", + params: { + all: { + type: "boolean" + }, + before: { + type: "string" + }, + page: { + type: "integer" + }, + participating: { + type: "boolean" + }, + per_page: { + type: "integer" + }, + since: { + type: "string" + } + }, + url: "/notifications" + }, + listNotificationsForRepo: { + method: "GET", + params: { + all: { + type: "boolean" + }, + before: { + type: "string" + }, + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + participating: { + type: "boolean" + }, + per_page: { + type: "integer" + }, + repo: { + required: true, + type: "string" + }, + since: { + type: "string" + } + }, + url: "/repos/:owner/:repo/notifications" + }, + listPublicEvents: { + method: "GET", + params: { + page: { + type: "integer" + }, + per_page: { + type: "integer" + } + }, + url: "/events" + }, + listPublicEventsForOrg: { + method: "GET", + params: { + org: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + } + }, + url: "/orgs/:org/events" + }, + listPublicEventsForRepoNetwork: { + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/networks/:owner/:repo/events" + }, + listPublicEventsForUser: { + method: "GET", + params: { + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + username: { + required: true, + type: "string" + } + }, + url: "/users/:username/events/public" + }, + listReceivedEventsForUser: { + method: "GET", + params: { + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + username: { + required: true, + type: "string" + } + }, + url: "/users/:username/received_events" + }, + listReceivedPublicEventsForUser: { + method: "GET", + params: { + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + username: { + required: true, + type: "string" + } + }, + url: "/users/:username/received_events/public" + }, + listRepoEvents: { + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/events" + }, + listReposStarredByAuthenticatedUser: { + method: "GET", + params: { + direction: { + enum: ["asc", "desc"], + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + sort: { + enum: ["created", "updated"], + type: "string" + } + }, + url: "/user/starred" + }, + listReposStarredByUser: { + method: "GET", + params: { + direction: { + enum: ["asc", "desc"], + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + sort: { + enum: ["created", "updated"], + type: "string" + }, + username: { + required: true, + type: "string" + } + }, + url: "/users/:username/starred" + }, + listReposWatchedByUser: { + method: "GET", + params: { + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + username: { + required: true, + type: "string" + } + }, + url: "/users/:username/subscriptions" + }, + listStargazersForRepo: { + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/stargazers" + }, + listWatchedReposForAuthenticatedUser: { + method: "GET", + params: { + page: { + type: "integer" + }, + per_page: { + type: "integer" + } + }, + url: "/user/subscriptions" + }, + listWatchersForRepo: { + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/subscribers" + }, + markAsRead: { + method: "PUT", + params: { + last_read_at: { + type: "string" + } + }, + url: "/notifications" + }, + markNotificationsAsReadForRepo: { + method: "PUT", + params: { + last_read_at: { + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/notifications" + }, + markThreadAsRead: { + method: "PATCH", + params: { + thread_id: { + required: true, + type: "integer" + } + }, + url: "/notifications/threads/:thread_id" + }, + setRepoSubscription: { + method: "PUT", + params: { + ignored: { + type: "boolean" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + }, + subscribed: { + type: "boolean" + } + }, + url: "/repos/:owner/:repo/subscription" + }, + setThreadSubscription: { + method: "PUT", + params: { + ignored: { + type: "boolean" + }, + thread_id: { + required: true, + type: "integer" + } + }, + url: "/notifications/threads/:thread_id/subscription" + }, + starRepo: { + method: "PUT", + params: { + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/user/starred/:owner/:repo" + }, + unstarRepo: { + method: "DELETE", + params: { + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/user/starred/:owner/:repo" + } + }, + apps: { + addRepoToInstallation: { + headers: { + accept: "application/vnd.github.machine-man-preview+json" + }, + method: "PUT", + params: { + installation_id: { + required: true, + type: "integer" + }, + repository_id: { + required: true, + type: "integer" + } + }, + url: "/user/installations/:installation_id/repositories/:repository_id" + }, + checkAccountIsAssociatedWithAny: { + method: "GET", + params: { + account_id: { + required: true, + type: "integer" + } + }, + url: "/marketplace_listing/accounts/:account_id" + }, + checkAccountIsAssociatedWithAnyStubbed: { + method: "GET", + params: { + account_id: { + required: true, + type: "integer" + } + }, + url: "/marketplace_listing/stubbed/accounts/:account_id" + }, + checkAuthorization: { + deprecated: "octokit.apps.checkAuthorization() is deprecated, see https://developer.github.com/v3/apps/oauth_applications/#check-an-authorization", + method: "GET", + params: { + access_token: { + required: true, + type: "string" + }, + client_id: { + required: true, + type: "string" + } + }, + url: "/applications/:client_id/tokens/:access_token" + }, + checkToken: { + headers: { + accept: "application/vnd.github.doctor-strange-preview+json" + }, + method: "POST", + params: { + access_token: { + type: "string" + }, + client_id: { + required: true, + type: "string" + } + }, + url: "/applications/:client_id/token" + }, + createContentAttachment: { + headers: { + accept: "application/vnd.github.corsair-preview+json" + }, + method: "POST", + params: { + body: { + required: true, + type: "string" + }, + content_reference_id: { + required: true, + type: "integer" + }, + title: { + required: true, + type: "string" + } + }, + url: "/content_references/:content_reference_id/attachments" + }, + createFromManifest: { + headers: { + accept: "application/vnd.github.fury-preview+json" + }, + method: "POST", + params: { + code: { + required: true, + type: "string" + } + }, + url: "/app-manifests/:code/conversions" + }, + createInstallationToken: { + headers: { + accept: "application/vnd.github.machine-man-preview+json" + }, + method: "POST", + params: { + installation_id: { + required: true, + type: "integer" + }, + permissions: { + type: "object" + }, + repository_ids: { + type: "integer[]" + } + }, + url: "/app/installations/:installation_id/access_tokens" + }, + deleteAuthorization: { + headers: { + accept: "application/vnd.github.doctor-strange-preview+json" + }, + method: "DELETE", + params: { + access_token: { + type: "string" + }, + client_id: { + required: true, + type: "string" + } + }, + url: "/applications/:client_id/grant" + }, + deleteInstallation: { + headers: { + accept: "application/vnd.github.gambit-preview+json,application/vnd.github.machine-man-preview+json" + }, + method: "DELETE", + params: { + installation_id: { + required: true, + type: "integer" + } + }, + url: "/app/installations/:installation_id" + }, + deleteToken: { + headers: { + accept: "application/vnd.github.doctor-strange-preview+json" + }, + method: "DELETE", + params: { + access_token: { + type: "string" + }, + client_id: { + required: true, + type: "string" + } + }, + url: "/applications/:client_id/token" + }, + findOrgInstallation: { + deprecated: "octokit.apps.findOrgInstallation() has been renamed to octokit.apps.getOrgInstallation() (2019-04-10)", + headers: { + accept: "application/vnd.github.machine-man-preview+json" + }, + method: "GET", + params: { + org: { + required: true, + type: "string" + } + }, + url: "/orgs/:org/installation" + }, + findRepoInstallation: { + deprecated: "octokit.apps.findRepoInstallation() has been renamed to octokit.apps.getRepoInstallation() (2019-04-10)", + headers: { + accept: "application/vnd.github.machine-man-preview+json" + }, + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/installation" + }, + findUserInstallation: { + deprecated: "octokit.apps.findUserInstallation() has been renamed to octokit.apps.getUserInstallation() (2019-04-10)", + headers: { + accept: "application/vnd.github.machine-man-preview+json" + }, + method: "GET", + params: { + username: { + required: true, + type: "string" + } + }, + url: "/users/:username/installation" + }, + getAuthenticated: { + headers: { + accept: "application/vnd.github.machine-man-preview+json" + }, + method: "GET", + params: {}, + url: "/app" + }, + getBySlug: { + headers: { + accept: "application/vnd.github.machine-man-preview+json" + }, + method: "GET", + params: { + app_slug: { + required: true, + type: "string" + } + }, + url: "/apps/:app_slug" + }, + getInstallation: { + headers: { + accept: "application/vnd.github.machine-man-preview+json" + }, + method: "GET", + params: { + installation_id: { + required: true, + type: "integer" + } + }, + url: "/app/installations/:installation_id" + }, + getOrgInstallation: { + headers: { + accept: "application/vnd.github.machine-man-preview+json" + }, + method: "GET", + params: { + org: { + required: true, + type: "string" + } + }, + url: "/orgs/:org/installation" + }, + getRepoInstallation: { + headers: { + accept: "application/vnd.github.machine-man-preview+json" + }, + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/installation" + }, + getUserInstallation: { + headers: { + accept: "application/vnd.github.machine-man-preview+json" + }, + method: "GET", + params: { + username: { + required: true, + type: "string" + } + }, + url: "/users/:username/installation" + }, + listAccountsUserOrOrgOnPlan: { + method: "GET", + params: { + direction: { + enum: ["asc", "desc"], + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + plan_id: { + required: true, + type: "integer" + }, + sort: { + enum: ["created", "updated"], + type: "string" + } + }, + url: "/marketplace_listing/plans/:plan_id/accounts" + }, + listAccountsUserOrOrgOnPlanStubbed: { + method: "GET", + params: { + direction: { + enum: ["asc", "desc"], + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + plan_id: { + required: true, + type: "integer" + }, + sort: { + enum: ["created", "updated"], + type: "string" + } + }, + url: "/marketplace_listing/stubbed/plans/:plan_id/accounts" + }, + listInstallationReposForAuthenticatedUser: { + headers: { + accept: "application/vnd.github.machine-man-preview+json" + }, + method: "GET", + params: { + installation_id: { + required: true, + type: "integer" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + } + }, + url: "/user/installations/:installation_id/repositories" + }, + listInstallations: { + headers: { + accept: "application/vnd.github.machine-man-preview+json" + }, + method: "GET", + params: { + page: { + type: "integer" + }, + per_page: { + type: "integer" + } + }, + url: "/app/installations" + }, + listInstallationsForAuthenticatedUser: { + headers: { + accept: "application/vnd.github.machine-man-preview+json" + }, + method: "GET", + params: { + page: { + type: "integer" + }, + per_page: { + type: "integer" + } + }, + url: "/user/installations" + }, + listMarketplacePurchasesForAuthenticatedUser: { + method: "GET", + params: { + page: { + type: "integer" + }, + per_page: { + type: "integer" + } + }, + url: "/user/marketplace_purchases" + }, + listMarketplacePurchasesForAuthenticatedUserStubbed: { + method: "GET", + params: { + page: { + type: "integer" + }, + per_page: { + type: "integer" + } + }, + url: "/user/marketplace_purchases/stubbed" + }, + listPlans: { + method: "GET", + params: { + page: { + type: "integer" + }, + per_page: { + type: "integer" + } + }, + url: "/marketplace_listing/plans" + }, + listPlansStubbed: { + method: "GET", + params: { + page: { + type: "integer" + }, + per_page: { + type: "integer" + } + }, + url: "/marketplace_listing/stubbed/plans" + }, + listRepos: { + headers: { + accept: "application/vnd.github.machine-man-preview+json" + }, + method: "GET", + params: { + page: { + type: "integer" + }, + per_page: { + type: "integer" + } + }, + url: "/installation/repositories" + }, + removeRepoFromInstallation: { + headers: { + accept: "application/vnd.github.machine-man-preview+json" + }, + method: "DELETE", + params: { + installation_id: { + required: true, + type: "integer" + }, + repository_id: { + required: true, + type: "integer" + } + }, + url: "/user/installations/:installation_id/repositories/:repository_id" + }, + resetAuthorization: { + deprecated: "octokit.apps.resetAuthorization() is deprecated, see https://developer.github.com/v3/apps/oauth_applications/#reset-an-authorization", + method: "POST", + params: { + access_token: { + required: true, + type: "string" + }, + client_id: { + required: true, + type: "string" + } + }, + url: "/applications/:client_id/tokens/:access_token" + }, + resetToken: { + headers: { + accept: "application/vnd.github.doctor-strange-preview+json" + }, + method: "PATCH", + params: { + access_token: { + type: "string" + }, + client_id: { + required: true, + type: "string" + } + }, + url: "/applications/:client_id/token" + }, + revokeAuthorizationForApplication: { + deprecated: "octokit.apps.revokeAuthorizationForApplication() is deprecated, see https://developer.github.com/v3/apps/oauth_applications/#revoke-an-authorization-for-an-application", + method: "DELETE", + params: { + access_token: { + required: true, + type: "string" + }, + client_id: { + required: true, + type: "string" + } + }, + url: "/applications/:client_id/tokens/:access_token" + }, + revokeGrantForApplication: { + deprecated: "octokit.apps.revokeGrantForApplication() is deprecated, see https://developer.github.com/v3/apps/oauth_applications/#revoke-a-grant-for-an-application", + method: "DELETE", + params: { + access_token: { + required: true, + type: "string" + }, + client_id: { + required: true, + type: "string" + } + }, + url: "/applications/:client_id/grants/:access_token" + }, + revokeInstallationToken: { + headers: { + accept: "application/vnd.github.gambit-preview+json" + }, + method: "DELETE", + params: {}, + url: "/installation/token" + } + }, + checks: { + create: { + headers: { + accept: "application/vnd.github.antiope-preview+json" + }, + method: "POST", + params: { + actions: { + type: "object[]" + }, + "actions[].description": { + required: true, + type: "string" + }, + "actions[].identifier": { + required: true, + type: "string" + }, + "actions[].label": { + required: true, + type: "string" + }, + completed_at: { + type: "string" + }, + conclusion: { + enum: ["success", "failure", "neutral", "cancelled", "timed_out", "action_required"], + type: "string" + }, + details_url: { + type: "string" + }, + external_id: { + type: "string" + }, + head_sha: { + required: true, + type: "string" + }, + name: { + required: true, + type: "string" + }, + output: { + type: "object" + }, + "output.annotations": { + type: "object[]" + }, + "output.annotations[].annotation_level": { + enum: ["notice", "warning", "failure"], + required: true, + type: "string" + }, + "output.annotations[].end_column": { + type: "integer" + }, + "output.annotations[].end_line": { + required: true, + type: "integer" + }, + "output.annotations[].message": { + required: true, + type: "string" + }, + "output.annotations[].path": { + required: true, + type: "string" + }, + "output.annotations[].raw_details": { + type: "string" + }, + "output.annotations[].start_column": { + type: "integer" + }, + "output.annotations[].start_line": { + required: true, + type: "integer" + }, + "output.annotations[].title": { + type: "string" + }, + "output.images": { + type: "object[]" + }, + "output.images[].alt": { + required: true, + type: "string" + }, + "output.images[].caption": { + type: "string" + }, + "output.images[].image_url": { + required: true, + type: "string" + }, + "output.summary": { + required: true, + type: "string" + }, + "output.text": { + type: "string" + }, + "output.title": { + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + }, + started_at: { + type: "string" + }, + status: { + enum: ["queued", "in_progress", "completed"], + type: "string" + } + }, + url: "/repos/:owner/:repo/check-runs" + }, + createSuite: { + headers: { + accept: "application/vnd.github.antiope-preview+json" + }, + method: "POST", + params: { + head_sha: { + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/check-suites" + }, + get: { + headers: { + accept: "application/vnd.github.antiope-preview+json" + }, + method: "GET", + params: { + check_run_id: { + required: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/check-runs/:check_run_id" + }, + getSuite: { + headers: { + accept: "application/vnd.github.antiope-preview+json" + }, + method: "GET", + params: { + check_suite_id: { + required: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/check-suites/:check_suite_id" + }, + listAnnotations: { + headers: { + accept: "application/vnd.github.antiope-preview+json" + }, + method: "GET", + params: { + check_run_id: { + required: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/check-runs/:check_run_id/annotations" + }, + listForRef: { + headers: { + accept: "application/vnd.github.antiope-preview+json" + }, + method: "GET", + params: { + check_name: { + type: "string" + }, + filter: { + enum: ["latest", "all"], + type: "string" + }, + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + ref: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + }, + status: { + enum: ["queued", "in_progress", "completed"], + type: "string" + } + }, + url: "/repos/:owner/:repo/commits/:ref/check-runs" + }, + listForSuite: { + headers: { + accept: "application/vnd.github.antiope-preview+json" + }, + method: "GET", + params: { + check_name: { + type: "string" + }, + check_suite_id: { + required: true, + type: "integer" + }, + filter: { + enum: ["latest", "all"], + type: "string" + }, + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + repo: { + required: true, + type: "string" + }, + status: { + enum: ["queued", "in_progress", "completed"], + type: "string" + } + }, + url: "/repos/:owner/:repo/check-suites/:check_suite_id/check-runs" + }, + listSuitesForRef: { + headers: { + accept: "application/vnd.github.antiope-preview+json" + }, + method: "GET", + params: { + app_id: { + type: "integer" + }, + check_name: { + type: "string" + }, + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + ref: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/commits/:ref/check-suites" + }, + rerequestSuite: { + headers: { + accept: "application/vnd.github.antiope-preview+json" + }, + method: "POST", + params: { + check_suite_id: { + required: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/check-suites/:check_suite_id/rerequest" + }, + setSuitesPreferences: { + headers: { + accept: "application/vnd.github.antiope-preview+json" + }, + method: "PATCH", + params: { + auto_trigger_checks: { + type: "object[]" + }, + "auto_trigger_checks[].app_id": { + required: true, + type: "integer" + }, + "auto_trigger_checks[].setting": { + required: true, + type: "boolean" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/check-suites/preferences" + }, + update: { + headers: { + accept: "application/vnd.github.antiope-preview+json" + }, + method: "PATCH", + params: { + actions: { + type: "object[]" + }, + "actions[].description": { + required: true, + type: "string" + }, + "actions[].identifier": { + required: true, + type: "string" + }, + "actions[].label": { + required: true, + type: "string" + }, + check_run_id: { + required: true, + type: "integer" + }, + completed_at: { + type: "string" + }, + conclusion: { + enum: ["success", "failure", "neutral", "cancelled", "timed_out", "action_required"], + type: "string" + }, + details_url: { + type: "string" + }, + external_id: { + type: "string" + }, + name: { + type: "string" + }, + output: { + type: "object" + }, + "output.annotations": { + type: "object[]" + }, + "output.annotations[].annotation_level": { + enum: ["notice", "warning", "failure"], + required: true, + type: "string" + }, + "output.annotations[].end_column": { + type: "integer" + }, + "output.annotations[].end_line": { + required: true, + type: "integer" + }, + "output.annotations[].message": { + required: true, + type: "string" + }, + "output.annotations[].path": { + required: true, + type: "string" + }, + "output.annotations[].raw_details": { + type: "string" + }, + "output.annotations[].start_column": { + type: "integer" + }, + "output.annotations[].start_line": { + required: true, + type: "integer" + }, + "output.annotations[].title": { + type: "string" + }, + "output.images": { + type: "object[]" + }, + "output.images[].alt": { + required: true, + type: "string" + }, + "output.images[].caption": { + type: "string" + }, + "output.images[].image_url": { + required: true, + type: "string" + }, + "output.summary": { + required: true, + type: "string" + }, + "output.text": { + type: "string" + }, + "output.title": { + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + }, + started_at: { + type: "string" + }, + status: { + enum: ["queued", "in_progress", "completed"], + type: "string" + } + }, + url: "/repos/:owner/:repo/check-runs/:check_run_id" + } + }, + codesOfConduct: { + getConductCode: { + headers: { + accept: "application/vnd.github.scarlet-witch-preview+json" + }, + method: "GET", + params: { + key: { + required: true, + type: "string" + } + }, + url: "/codes_of_conduct/:key" + }, + getForRepo: { + headers: { + accept: "application/vnd.github.scarlet-witch-preview+json" + }, + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/community/code_of_conduct" + }, + listConductCodes: { + headers: { + accept: "application/vnd.github.scarlet-witch-preview+json" + }, + method: "GET", + params: {}, + url: "/codes_of_conduct" + } + }, + emojis: { + get: { + method: "GET", + params: {}, + url: "/emojis" + } + }, + gists: { + checkIsStarred: { + method: "GET", + params: { + gist_id: { + required: true, + type: "string" + } + }, + url: "/gists/:gist_id/star" + }, + create: { + method: "POST", + params: { + description: { + type: "string" + }, + files: { + required: true, + type: "object" + }, + "files.content": { + type: "string" + }, + public: { + type: "boolean" + } + }, + url: "/gists" + }, + createComment: { + method: "POST", + params: { + body: { + required: true, + type: "string" + }, + gist_id: { + required: true, + type: "string" + } + }, + url: "/gists/:gist_id/comments" + }, + delete: { + method: "DELETE", + params: { + gist_id: { + required: true, + type: "string" + } + }, + url: "/gists/:gist_id" + }, + deleteComment: { + method: "DELETE", + params: { + comment_id: { + required: true, + type: "integer" + }, + gist_id: { + required: true, + type: "string" + } + }, + url: "/gists/:gist_id/comments/:comment_id" + }, + fork: { + method: "POST", + params: { + gist_id: { + required: true, + type: "string" + } + }, + url: "/gists/:gist_id/forks" + }, + get: { + method: "GET", + params: { + gist_id: { + required: true, + type: "string" + } + }, + url: "/gists/:gist_id" + }, + getComment: { + method: "GET", + params: { + comment_id: { + required: true, + type: "integer" + }, + gist_id: { + required: true, + type: "string" + } + }, + url: "/gists/:gist_id/comments/:comment_id" + }, + getRevision: { + method: "GET", + params: { + gist_id: { + required: true, + type: "string" + }, + sha: { + required: true, + type: "string" + } + }, + url: "/gists/:gist_id/:sha" + }, + list: { + method: "GET", + params: { + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + since: { + type: "string" + } + }, + url: "/gists" + }, + listComments: { + method: "GET", + params: { + gist_id: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + } + }, + url: "/gists/:gist_id/comments" + }, + listCommits: { + method: "GET", + params: { + gist_id: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + } + }, + url: "/gists/:gist_id/commits" + }, + listForks: { + method: "GET", + params: { + gist_id: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + } + }, + url: "/gists/:gist_id/forks" + }, + listPublic: { + method: "GET", + params: { + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + since: { + type: "string" + } + }, + url: "/gists/public" + }, + listPublicForUser: { + method: "GET", + params: { + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + since: { + type: "string" + }, + username: { + required: true, + type: "string" + } + }, + url: "/users/:username/gists" + }, + listStarred: { + method: "GET", + params: { + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + since: { + type: "string" + } + }, + url: "/gists/starred" + }, + star: { + method: "PUT", + params: { + gist_id: { + required: true, + type: "string" + } + }, + url: "/gists/:gist_id/star" + }, + unstar: { + method: "DELETE", + params: { + gist_id: { + required: true, + type: "string" + } + }, + url: "/gists/:gist_id/star" + }, + update: { + method: "PATCH", + params: { + description: { + type: "string" + }, + files: { + type: "object" + }, + "files.content": { + type: "string" + }, + "files.filename": { + type: "string" + }, + gist_id: { + required: true, + type: "string" + } + }, + url: "/gists/:gist_id" + }, + updateComment: { + method: "PATCH", + params: { + body: { + required: true, + type: "string" + }, + comment_id: { + required: true, + type: "integer" + }, + gist_id: { + required: true, + type: "string" + } + }, + url: "/gists/:gist_id/comments/:comment_id" + } + }, + git: { + createBlob: { + method: "POST", + params: { + content: { + required: true, + type: "string" + }, + encoding: { + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/git/blobs" + }, + createCommit: { + method: "POST", + params: { + author: { + type: "object" + }, + "author.date": { + type: "string" + }, + "author.email": { + type: "string" + }, + "author.name": { + type: "string" + }, + committer: { + type: "object" + }, + "committer.date": { + type: "string" + }, + "committer.email": { + type: "string" + }, + "committer.name": { + type: "string" + }, + message: { + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + parents: { + required: true, + type: "string[]" + }, + repo: { + required: true, + type: "string" + }, + signature: { + type: "string" + }, + tree: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/git/commits" + }, + createRef: { + method: "POST", + params: { + owner: { + required: true, + type: "string" + }, + ref: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + }, + sha: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/git/refs" + }, + createTag: { + method: "POST", + params: { + message: { + required: true, + type: "string" + }, + object: { + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + }, + tag: { + required: true, + type: "string" + }, + tagger: { + type: "object" + }, + "tagger.date": { + type: "string" + }, + "tagger.email": { + type: "string" + }, + "tagger.name": { + type: "string" + }, + type: { + enum: ["commit", "tree", "blob"], + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/git/tags" + }, + createTree: { + method: "POST", + params: { + base_tree: { + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + }, + tree: { + required: true, + type: "object[]" + }, + "tree[].content": { + type: "string" + }, + "tree[].mode": { + enum: ["100644", "100755", "040000", "160000", "120000"], + type: "string" + }, + "tree[].path": { + type: "string" + }, + "tree[].sha": { + allowNull: true, + type: "string" + }, + "tree[].type": { + enum: ["blob", "tree", "commit"], + type: "string" + } + }, + url: "/repos/:owner/:repo/git/trees" + }, + deleteRef: { + method: "DELETE", + params: { + owner: { + required: true, + type: "string" + }, + ref: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/git/refs/:ref" + }, + getBlob: { + method: "GET", + params: { + file_sha: { + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/git/blobs/:file_sha" + }, + getCommit: { + method: "GET", + params: { + commit_sha: { + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/git/commits/:commit_sha" + }, + getRef: { + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + ref: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/git/ref/:ref" + }, + getTag: { + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + }, + tag_sha: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/git/tags/:tag_sha" + }, + getTree: { + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + recursive: { + enum: ["1"], + type: "integer" + }, + repo: { + required: true, + type: "string" + }, + tree_sha: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/git/trees/:tree_sha" + }, + listMatchingRefs: { + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + ref: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/git/matching-refs/:ref" + }, + listRefs: { + method: "GET", + params: { + namespace: { + type: "string" + }, + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/git/refs/:namespace" + }, + updateRef: { + method: "PATCH", + params: { + force: { + type: "boolean" + }, + owner: { + required: true, + type: "string" + }, + ref: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + }, + sha: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/git/refs/:ref" + } + }, + gitignore: { + getTemplate: { + method: "GET", + params: { + name: { + required: true, + type: "string" + } + }, + url: "/gitignore/templates/:name" + }, + listTemplates: { + method: "GET", + params: {}, + url: "/gitignore/templates" + } + }, + interactions: { + addOrUpdateRestrictionsForOrg: { + headers: { + accept: "application/vnd.github.sombra-preview+json" + }, + method: "PUT", + params: { + limit: { + enum: ["existing_users", "contributors_only", "collaborators_only"], + required: true, + type: "string" + }, + org: { + required: true, + type: "string" + } + }, + url: "/orgs/:org/interaction-limits" + }, + addOrUpdateRestrictionsForRepo: { + headers: { + accept: "application/vnd.github.sombra-preview+json" + }, + method: "PUT", + params: { + limit: { + enum: ["existing_users", "contributors_only", "collaborators_only"], + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/interaction-limits" + }, + getRestrictionsForOrg: { + headers: { + accept: "application/vnd.github.sombra-preview+json" + }, + method: "GET", + params: { + org: { + required: true, + type: "string" + } + }, + url: "/orgs/:org/interaction-limits" + }, + getRestrictionsForRepo: { + headers: { + accept: "application/vnd.github.sombra-preview+json" + }, + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/interaction-limits" + }, + removeRestrictionsForOrg: { + headers: { + accept: "application/vnd.github.sombra-preview+json" + }, + method: "DELETE", + params: { + org: { + required: true, + type: "string" + } + }, + url: "/orgs/:org/interaction-limits" + }, + removeRestrictionsForRepo: { + headers: { + accept: "application/vnd.github.sombra-preview+json" + }, + method: "DELETE", + params: { + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/interaction-limits" + } + }, + issues: { + addAssignees: { + method: "POST", + params: { + assignees: { + type: "string[]" + }, + issue_number: { + required: true, + type: "integer" + }, + number: { + alias: "issue_number", + deprecated: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/issues/:issue_number/assignees" + }, + addLabels: { + method: "POST", + params: { + issue_number: { + required: true, + type: "integer" + }, + labels: { + required: true, + type: "string[]" + }, + number: { + alias: "issue_number", + deprecated: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/issues/:issue_number/labels" + }, + checkAssignee: { + method: "GET", + params: { + assignee: { + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/assignees/:assignee" + }, + create: { + method: "POST", + params: { + assignee: { + type: "string" + }, + assignees: { + type: "string[]" + }, + body: { + type: "string" + }, + labels: { + type: "string[]" + }, + milestone: { + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + }, + title: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/issues" + }, + createComment: { + method: "POST", + params: { + body: { + required: true, + type: "string" + }, + issue_number: { + required: true, + type: "integer" + }, + number: { + alias: "issue_number", + deprecated: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/issues/:issue_number/comments" + }, + createLabel: { + method: "POST", + params: { + color: { + required: true, + type: "string" + }, + description: { + type: "string" + }, + name: { + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/labels" + }, + createMilestone: { + method: "POST", + params: { + description: { + type: "string" + }, + due_on: { + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + }, + state: { + enum: ["open", "closed"], + type: "string" + }, + title: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/milestones" + }, + deleteComment: { + method: "DELETE", + params: { + comment_id: { + required: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/issues/comments/:comment_id" + }, + deleteLabel: { + method: "DELETE", + params: { + name: { + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/labels/:name" + }, + deleteMilestone: { + method: "DELETE", + params: { + milestone_number: { + required: true, + type: "integer" + }, + number: { + alias: "milestone_number", + deprecated: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/milestones/:milestone_number" + }, + get: { + method: "GET", + params: { + issue_number: { + required: true, + type: "integer" + }, + number: { + alias: "issue_number", + deprecated: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/issues/:issue_number" + }, + getComment: { + method: "GET", + params: { + comment_id: { + required: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/issues/comments/:comment_id" + }, + getEvent: { + method: "GET", + params: { + event_id: { + required: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/issues/events/:event_id" + }, + getLabel: { + method: "GET", + params: { + name: { + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/labels/:name" + }, + getMilestone: { + method: "GET", + params: { + milestone_number: { + required: true, + type: "integer" + }, + number: { + alias: "milestone_number", + deprecated: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/milestones/:milestone_number" + }, + list: { + method: "GET", + params: { + direction: { + enum: ["asc", "desc"], + type: "string" + }, + filter: { + enum: ["assigned", "created", "mentioned", "subscribed", "all"], + type: "string" + }, + labels: { + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + since: { + type: "string" + }, + sort: { + enum: ["created", "updated", "comments"], + type: "string" + }, + state: { + enum: ["open", "closed", "all"], + type: "string" + } + }, + url: "/issues" + }, + listAssignees: { + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/assignees" + }, + listComments: { + method: "GET", + params: { + issue_number: { + required: true, + type: "integer" + }, + number: { + alias: "issue_number", + deprecated: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + repo: { + required: true, + type: "string" + }, + since: { + type: "string" + } + }, + url: "/repos/:owner/:repo/issues/:issue_number/comments" + }, + listCommentsForRepo: { + method: "GET", + params: { + direction: { + enum: ["asc", "desc"], + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + }, + since: { + type: "string" + }, + sort: { + enum: ["created", "updated"], + type: "string" + } + }, + url: "/repos/:owner/:repo/issues/comments" + }, + listEvents: { + method: "GET", + params: { + issue_number: { + required: true, + type: "integer" + }, + number: { + alias: "issue_number", + deprecated: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/issues/:issue_number/events" + }, + listEventsForRepo: { + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/issues/events" + }, + listEventsForTimeline: { + headers: { + accept: "application/vnd.github.mockingbird-preview+json" + }, + method: "GET", + params: { + issue_number: { + required: true, + type: "integer" + }, + number: { + alias: "issue_number", + deprecated: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/issues/:issue_number/timeline" + }, + listForAuthenticatedUser: { + method: "GET", + params: { + direction: { + enum: ["asc", "desc"], + type: "string" + }, + filter: { + enum: ["assigned", "created", "mentioned", "subscribed", "all"], + type: "string" + }, + labels: { + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + since: { + type: "string" + }, + sort: { + enum: ["created", "updated", "comments"], + type: "string" + }, + state: { + enum: ["open", "closed", "all"], + type: "string" + } + }, + url: "/user/issues" + }, + listForOrg: { + method: "GET", + params: { + direction: { + enum: ["asc", "desc"], + type: "string" + }, + filter: { + enum: ["assigned", "created", "mentioned", "subscribed", "all"], + type: "string" + }, + labels: { + type: "string" + }, + org: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + since: { + type: "string" + }, + sort: { + enum: ["created", "updated", "comments"], + type: "string" + }, + state: { + enum: ["open", "closed", "all"], + type: "string" + } + }, + url: "/orgs/:org/issues" + }, + listForRepo: { + method: "GET", + params: { + assignee: { + type: "string" + }, + creator: { + type: "string" + }, + direction: { + enum: ["asc", "desc"], + type: "string" + }, + labels: { + type: "string" + }, + mentioned: { + type: "string" + }, + milestone: { + type: "string" + }, + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + repo: { + required: true, + type: "string" + }, + since: { + type: "string" + }, + sort: { + enum: ["created", "updated", "comments"], + type: "string" + }, + state: { + enum: ["open", "closed", "all"], + type: "string" + } + }, + url: "/repos/:owner/:repo/issues" + }, + listLabelsForMilestone: { + method: "GET", + params: { + milestone_number: { + required: true, + type: "integer" + }, + number: { + alias: "milestone_number", + deprecated: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/milestones/:milestone_number/labels" + }, + listLabelsForRepo: { + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/labels" + }, + listLabelsOnIssue: { + method: "GET", + params: { + issue_number: { + required: true, + type: "integer" + }, + number: { + alias: "issue_number", + deprecated: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/issues/:issue_number/labels" + }, + listMilestonesForRepo: { + method: "GET", + params: { + direction: { + enum: ["asc", "desc"], + type: "string" + }, + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + repo: { + required: true, + type: "string" + }, + sort: { + enum: ["due_on", "completeness"], + type: "string" + }, + state: { + enum: ["open", "closed", "all"], + type: "string" + } + }, + url: "/repos/:owner/:repo/milestones" + }, + lock: { + method: "PUT", + params: { + issue_number: { + required: true, + type: "integer" + }, + lock_reason: { + enum: ["off-topic", "too heated", "resolved", "spam"], + type: "string" + }, + number: { + alias: "issue_number", + deprecated: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/issues/:issue_number/lock" + }, + removeAssignees: { + method: "DELETE", + params: { + assignees: { + type: "string[]" + }, + issue_number: { + required: true, + type: "integer" + }, + number: { + alias: "issue_number", + deprecated: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/issues/:issue_number/assignees" + }, + removeLabel: { + method: "DELETE", + params: { + issue_number: { + required: true, + type: "integer" + }, + name: { + required: true, + type: "string" + }, + number: { + alias: "issue_number", + deprecated: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/issues/:issue_number/labels/:name" + }, + removeLabels: { + method: "DELETE", + params: { + issue_number: { + required: true, + type: "integer" + }, + number: { + alias: "issue_number", + deprecated: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/issues/:issue_number/labels" + }, + replaceLabels: { + method: "PUT", + params: { + issue_number: { + required: true, + type: "integer" + }, + labels: { + type: "string[]" + }, + number: { + alias: "issue_number", + deprecated: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/issues/:issue_number/labels" + }, + unlock: { + method: "DELETE", + params: { + issue_number: { + required: true, + type: "integer" + }, + number: { + alias: "issue_number", + deprecated: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/issues/:issue_number/lock" + }, + update: { + method: "PATCH", + params: { + assignee: { + type: "string" + }, + assignees: { + type: "string[]" + }, + body: { + type: "string" + }, + issue_number: { + required: true, + type: "integer" + }, + labels: { + type: "string[]" + }, + milestone: { + allowNull: true, + type: "integer" + }, + number: { + alias: "issue_number", + deprecated: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + }, + state: { + enum: ["open", "closed"], + type: "string" + }, + title: { + type: "string" + } + }, + url: "/repos/:owner/:repo/issues/:issue_number" + }, + updateComment: { + method: "PATCH", + params: { + body: { + required: true, + type: "string" + }, + comment_id: { + required: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/issues/comments/:comment_id" + }, + updateLabel: { + method: "PATCH", + params: { + color: { + type: "string" + }, + current_name: { + required: true, + type: "string" + }, + description: { + type: "string" + }, + name: { + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/labels/:current_name" + }, + updateMilestone: { + method: "PATCH", + params: { + description: { + type: "string" + }, + due_on: { + type: "string" + }, + milestone_number: { + required: true, + type: "integer" + }, + number: { + alias: "milestone_number", + deprecated: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + }, + state: { + enum: ["open", "closed"], + type: "string" + }, + title: { + type: "string" + } + }, + url: "/repos/:owner/:repo/milestones/:milestone_number" + } + }, + licenses: { + get: { + method: "GET", + params: { + license: { + required: true, + type: "string" + } + }, + url: "/licenses/:license" + }, + getForRepo: { + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/license" + }, + list: { + deprecated: "octokit.licenses.list() has been renamed to octokit.licenses.listCommonlyUsed() (2019-03-05)", + method: "GET", + params: {}, + url: "/licenses" + }, + listCommonlyUsed: { + method: "GET", + params: {}, + url: "/licenses" + } + }, + markdown: { + render: { + method: "POST", + params: { + context: { + type: "string" + }, + mode: { + enum: ["markdown", "gfm"], + type: "string" + }, + text: { + required: true, + type: "string" + } + }, + url: "/markdown" + }, + renderRaw: { + headers: { + "content-type": "text/plain; charset=utf-8" + }, + method: "POST", + params: { + data: { + mapTo: "data", + required: true, + type: "string" + } + }, + url: "/markdown/raw" + } + }, + meta: { + get: { + method: "GET", + params: {}, + url: "/meta" + } + }, + migrations: { + cancelImport: { + method: "DELETE", + params: { + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/import" + }, + deleteArchiveForAuthenticatedUser: { + headers: { + accept: "application/vnd.github.wyandotte-preview+json" + }, + method: "DELETE", + params: { + migration_id: { + required: true, + type: "integer" + } + }, + url: "/user/migrations/:migration_id/archive" + }, + deleteArchiveForOrg: { + headers: { + accept: "application/vnd.github.wyandotte-preview+json" + }, + method: "DELETE", + params: { + migration_id: { + required: true, + type: "integer" + }, + org: { + required: true, + type: "string" + } + }, + url: "/orgs/:org/migrations/:migration_id/archive" + }, + downloadArchiveForOrg: { + headers: { + accept: "application/vnd.github.wyandotte-preview+json" + }, + method: "GET", + params: { + migration_id: { + required: true, + type: "integer" + }, + org: { + required: true, + type: "string" + } + }, + url: "/orgs/:org/migrations/:migration_id/archive" + }, + getArchiveForAuthenticatedUser: { + headers: { + accept: "application/vnd.github.wyandotte-preview+json" + }, + method: "GET", + params: { + migration_id: { + required: true, + type: "integer" + } + }, + url: "/user/migrations/:migration_id/archive" + }, + getArchiveForOrg: { + deprecated: "octokit.migrations.getArchiveForOrg() has been renamed to octokit.migrations.downloadArchiveForOrg() (2020-01-27)", + headers: { + accept: "application/vnd.github.wyandotte-preview+json" + }, + method: "GET", + params: { + migration_id: { + required: true, + type: "integer" + }, + org: { + required: true, + type: "string" + } + }, + url: "/orgs/:org/migrations/:migration_id/archive" + }, + getCommitAuthors: { + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + }, + since: { + type: "string" + } + }, + url: "/repos/:owner/:repo/import/authors" + }, + getImportProgress: { + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/import" + }, + getLargeFiles: { + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/import/large_files" + }, + getStatusForAuthenticatedUser: { + headers: { + accept: "application/vnd.github.wyandotte-preview+json" + }, + method: "GET", + params: { + migration_id: { + required: true, + type: "integer" + } + }, + url: "/user/migrations/:migration_id" + }, + getStatusForOrg: { + headers: { + accept: "application/vnd.github.wyandotte-preview+json" + }, + method: "GET", + params: { + migration_id: { + required: true, + type: "integer" + }, + org: { + required: true, + type: "string" + } + }, + url: "/orgs/:org/migrations/:migration_id" + }, + listForAuthenticatedUser: { + headers: { + accept: "application/vnd.github.wyandotte-preview+json" + }, + method: "GET", + params: { + page: { + type: "integer" + }, + per_page: { + type: "integer" + } + }, + url: "/user/migrations" + }, + listForOrg: { + headers: { + accept: "application/vnd.github.wyandotte-preview+json" + }, + method: "GET", + params: { + org: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + } + }, + url: "/orgs/:org/migrations" + }, + listReposForOrg: { + headers: { + accept: "application/vnd.github.wyandotte-preview+json" + }, + method: "GET", + params: { + migration_id: { + required: true, + type: "integer" + }, + org: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + } + }, + url: "/orgs/:org/migrations/:migration_id/repositories" + }, + listReposForUser: { + headers: { + accept: "application/vnd.github.wyandotte-preview+json" + }, + method: "GET", + params: { + migration_id: { + required: true, + type: "integer" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + } + }, + url: "/user/:migration_id/repositories" + }, + mapCommitAuthor: { + method: "PATCH", + params: { + author_id: { + required: true, + type: "integer" + }, + email: { + type: "string" + }, + name: { + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/import/authors/:author_id" + }, + setLfsPreference: { + method: "PATCH", + params: { + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + }, + use_lfs: { + enum: ["opt_in", "opt_out"], + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/import/lfs" + }, + startForAuthenticatedUser: { + method: "POST", + params: { + exclude_attachments: { + type: "boolean" + }, + lock_repositories: { + type: "boolean" + }, + repositories: { + required: true, + type: "string[]" + } + }, + url: "/user/migrations" + }, + startForOrg: { + method: "POST", + params: { + exclude_attachments: { + type: "boolean" + }, + lock_repositories: { + type: "boolean" + }, + org: { + required: true, + type: "string" + }, + repositories: { + required: true, + type: "string[]" + } + }, + url: "/orgs/:org/migrations" + }, + startImport: { + method: "PUT", + params: { + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + }, + tfvc_project: { + type: "string" + }, + vcs: { + enum: ["subversion", "git", "mercurial", "tfvc"], + type: "string" + }, + vcs_password: { + type: "string" + }, + vcs_url: { + required: true, + type: "string" + }, + vcs_username: { + type: "string" + } + }, + url: "/repos/:owner/:repo/import" + }, + unlockRepoForAuthenticatedUser: { + headers: { + accept: "application/vnd.github.wyandotte-preview+json" + }, + method: "DELETE", + params: { + migration_id: { + required: true, + type: "integer" + }, + repo_name: { + required: true, + type: "string" + } + }, + url: "/user/migrations/:migration_id/repos/:repo_name/lock" + }, + unlockRepoForOrg: { + headers: { + accept: "application/vnd.github.wyandotte-preview+json" + }, + method: "DELETE", + params: { + migration_id: { + required: true, + type: "integer" + }, + org: { + required: true, + type: "string" + }, + repo_name: { + required: true, + type: "string" + } + }, + url: "/orgs/:org/migrations/:migration_id/repos/:repo_name/lock" + }, + updateImport: { + method: "PATCH", + params: { + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + }, + vcs_password: { + type: "string" + }, + vcs_username: { + type: "string" + } + }, + url: "/repos/:owner/:repo/import" + } + }, + oauthAuthorizations: { + checkAuthorization: { + deprecated: "octokit.oauthAuthorizations.checkAuthorization() has been renamed to octokit.apps.checkAuthorization() (2019-11-05)", + method: "GET", + params: { + access_token: { + required: true, + type: "string" + }, + client_id: { + required: true, + type: "string" + } + }, + url: "/applications/:client_id/tokens/:access_token" + }, + createAuthorization: { + deprecated: "octokit.oauthAuthorizations.createAuthorization() is deprecated, see https://developer.github.com/v3/oauth_authorizations/#create-a-new-authorization", + method: "POST", + params: { + client_id: { + type: "string" + }, + client_secret: { + type: "string" + }, + fingerprint: { + type: "string" + }, + note: { + required: true, + type: "string" + }, + note_url: { + type: "string" + }, + scopes: { + type: "string[]" + } + }, + url: "/authorizations" + }, + deleteAuthorization: { + deprecated: "octokit.oauthAuthorizations.deleteAuthorization() is deprecated, see https://developer.github.com/v3/oauth_authorizations/#delete-an-authorization", + method: "DELETE", + params: { + authorization_id: { + required: true, + type: "integer" + } + }, + url: "/authorizations/:authorization_id" + }, + deleteGrant: { + deprecated: "octokit.oauthAuthorizations.deleteGrant() is deprecated, see https://developer.github.com/v3/oauth_authorizations/#delete-a-grant", + method: "DELETE", + params: { + grant_id: { + required: true, + type: "integer" + } + }, + url: "/applications/grants/:grant_id" + }, + getAuthorization: { + deprecated: "octokit.oauthAuthorizations.getAuthorization() is deprecated, see https://developer.github.com/v3/oauth_authorizations/#get-a-single-authorization", + method: "GET", + params: { + authorization_id: { + required: true, + type: "integer" + } + }, + url: "/authorizations/:authorization_id" + }, + getGrant: { + deprecated: "octokit.oauthAuthorizations.getGrant() is deprecated, see https://developer.github.com/v3/oauth_authorizations/#get-a-single-grant", + method: "GET", + params: { + grant_id: { + required: true, + type: "integer" + } + }, + url: "/applications/grants/:grant_id" + }, + getOrCreateAuthorizationForApp: { + deprecated: "octokit.oauthAuthorizations.getOrCreateAuthorizationForApp() is deprecated, see https://developer.github.com/v3/oauth_authorizations/#get-or-create-an-authorization-for-a-specific-app", + method: "PUT", + params: { + client_id: { + required: true, + type: "string" + }, + client_secret: { + required: true, + type: "string" + }, + fingerprint: { + type: "string" + }, + note: { + type: "string" + }, + note_url: { + type: "string" + }, + scopes: { + type: "string[]" + } + }, + url: "/authorizations/clients/:client_id" + }, + getOrCreateAuthorizationForAppAndFingerprint: { + deprecated: "octokit.oauthAuthorizations.getOrCreateAuthorizationForAppAndFingerprint() is deprecated, see https://developer.github.com/v3/oauth_authorizations/#get-or-create-an-authorization-for-a-specific-app-and-fingerprint", + method: "PUT", + params: { + client_id: { + required: true, + type: "string" + }, + client_secret: { + required: true, + type: "string" + }, + fingerprint: { + required: true, + type: "string" + }, + note: { + type: "string" + }, + note_url: { + type: "string" + }, + scopes: { + type: "string[]" + } + }, + url: "/authorizations/clients/:client_id/:fingerprint" + }, + getOrCreateAuthorizationForAppFingerprint: { + deprecated: "octokit.oauthAuthorizations.getOrCreateAuthorizationForAppFingerprint() has been renamed to octokit.oauthAuthorizations.getOrCreateAuthorizationForAppAndFingerprint() (2018-12-27)", + method: "PUT", + params: { + client_id: { + required: true, + type: "string" + }, + client_secret: { + required: true, + type: "string" + }, + fingerprint: { + required: true, + type: "string" + }, + note: { + type: "string" + }, + note_url: { + type: "string" + }, + scopes: { + type: "string[]" + } + }, + url: "/authorizations/clients/:client_id/:fingerprint" + }, + listAuthorizations: { + deprecated: "octokit.oauthAuthorizations.listAuthorizations() is deprecated, see https://developer.github.com/v3/oauth_authorizations/#list-your-authorizations", + method: "GET", + params: { + page: { + type: "integer" + }, + per_page: { + type: "integer" + } + }, + url: "/authorizations" + }, + listGrants: { + deprecated: "octokit.oauthAuthorizations.listGrants() is deprecated, see https://developer.github.com/v3/oauth_authorizations/#list-your-grants", + method: "GET", + params: { + page: { + type: "integer" + }, + per_page: { + type: "integer" + } + }, + url: "/applications/grants" + }, + resetAuthorization: { + deprecated: "octokit.oauthAuthorizations.resetAuthorization() has been renamed to octokit.apps.resetAuthorization() (2019-11-05)", + method: "POST", + params: { + access_token: { + required: true, + type: "string" + }, + client_id: { + required: true, + type: "string" + } + }, + url: "/applications/:client_id/tokens/:access_token" + }, + revokeAuthorizationForApplication: { + deprecated: "octokit.oauthAuthorizations.revokeAuthorizationForApplication() has been renamed to octokit.apps.revokeAuthorizationForApplication() (2019-11-05)", + method: "DELETE", + params: { + access_token: { + required: true, + type: "string" + }, + client_id: { + required: true, + type: "string" + } + }, + url: "/applications/:client_id/tokens/:access_token" + }, + revokeGrantForApplication: { + deprecated: "octokit.oauthAuthorizations.revokeGrantForApplication() has been renamed to octokit.apps.revokeGrantForApplication() (2019-11-05)", + method: "DELETE", + params: { + access_token: { + required: true, + type: "string" + }, + client_id: { + required: true, + type: "string" + } + }, + url: "/applications/:client_id/grants/:access_token" + }, + updateAuthorization: { + deprecated: "octokit.oauthAuthorizations.updateAuthorization() is deprecated, see https://developer.github.com/v3/oauth_authorizations/#update-an-existing-authorization", + method: "PATCH", + params: { + add_scopes: { + type: "string[]" + }, + authorization_id: { + required: true, + type: "integer" + }, + fingerprint: { + type: "string" + }, + note: { + type: "string" + }, + note_url: { + type: "string" + }, + remove_scopes: { + type: "string[]" + }, + scopes: { + type: "string[]" + } + }, + url: "/authorizations/:authorization_id" + } + }, + orgs: { + addOrUpdateMembership: { + method: "PUT", + params: { + org: { + required: true, + type: "string" + }, + role: { + enum: ["admin", "member"], + type: "string" + }, + username: { + required: true, + type: "string" + } + }, + url: "/orgs/:org/memberships/:username" + }, + blockUser: { + method: "PUT", + params: { + org: { + required: true, + type: "string" + }, + username: { + required: true, + type: "string" + } + }, + url: "/orgs/:org/blocks/:username" + }, + checkBlockedUser: { + method: "GET", + params: { + org: { + required: true, + type: "string" + }, + username: { + required: true, + type: "string" + } + }, + url: "/orgs/:org/blocks/:username" + }, + checkMembership: { + method: "GET", + params: { + org: { + required: true, + type: "string" + }, + username: { + required: true, + type: "string" + } + }, + url: "/orgs/:org/members/:username" + }, + checkPublicMembership: { + method: "GET", + params: { + org: { + required: true, + type: "string" + }, + username: { + required: true, + type: "string" + } + }, + url: "/orgs/:org/public_members/:username" + }, + concealMembership: { + method: "DELETE", + params: { + org: { + required: true, + type: "string" + }, + username: { + required: true, + type: "string" + } + }, + url: "/orgs/:org/public_members/:username" + }, + convertMemberToOutsideCollaborator: { + method: "PUT", + params: { + org: { + required: true, + type: "string" + }, + username: { + required: true, + type: "string" + } + }, + url: "/orgs/:org/outside_collaborators/:username" + }, + createHook: { + method: "POST", + params: { + active: { + type: "boolean" + }, + config: { + required: true, + type: "object" + }, + "config.content_type": { + type: "string" + }, + "config.insecure_ssl": { + type: "string" + }, + "config.secret": { + type: "string" + }, + "config.url": { + required: true, + type: "string" + }, + events: { + type: "string[]" + }, + name: { + required: true, + type: "string" + }, + org: { + required: true, + type: "string" + } + }, + url: "/orgs/:org/hooks" + }, + createInvitation: { + method: "POST", + params: { + email: { + type: "string" + }, + invitee_id: { + type: "integer" + }, + org: { + required: true, + type: "string" + }, + role: { + enum: ["admin", "direct_member", "billing_manager"], + type: "string" + }, + team_ids: { + type: "integer[]" + } + }, + url: "/orgs/:org/invitations" + }, + deleteHook: { + method: "DELETE", + params: { + hook_id: { + required: true, + type: "integer" + }, + org: { + required: true, + type: "string" + } + }, + url: "/orgs/:org/hooks/:hook_id" + }, + get: { + method: "GET", + params: { + org: { + required: true, + type: "string" + } + }, + url: "/orgs/:org" + }, + getHook: { + method: "GET", + params: { + hook_id: { + required: true, + type: "integer" + }, + org: { + required: true, + type: "string" + } + }, + url: "/orgs/:org/hooks/:hook_id" + }, + getMembership: { + method: "GET", + params: { + org: { + required: true, + type: "string" + }, + username: { + required: true, + type: "string" + } + }, + url: "/orgs/:org/memberships/:username" + }, + getMembershipForAuthenticatedUser: { + method: "GET", + params: { + org: { + required: true, + type: "string" + } + }, + url: "/user/memberships/orgs/:org" + }, + list: { + method: "GET", + params: { + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + since: { + type: "integer" + } + }, + url: "/organizations" + }, + listBlockedUsers: { + method: "GET", + params: { + org: { + required: true, + type: "string" + } + }, + url: "/orgs/:org/blocks" + }, + listForAuthenticatedUser: { + method: "GET", + params: { + page: { + type: "integer" + }, + per_page: { + type: "integer" + } + }, + url: "/user/orgs" + }, + listForUser: { + method: "GET", + params: { + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + username: { + required: true, + type: "string" + } + }, + url: "/users/:username/orgs" + }, + listHooks: { + method: "GET", + params: { + org: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + } + }, + url: "/orgs/:org/hooks" + }, + listInstallations: { + headers: { + accept: "application/vnd.github.machine-man-preview+json" + }, + method: "GET", + params: { + org: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + } + }, + url: "/orgs/:org/installations" + }, + listInvitationTeams: { + method: "GET", + params: { + invitation_id: { + required: true, + type: "integer" + }, + org: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + } + }, + url: "/orgs/:org/invitations/:invitation_id/teams" + }, + listMembers: { + method: "GET", + params: { + filter: { + enum: ["2fa_disabled", "all"], + type: "string" + }, + org: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + role: { + enum: ["all", "admin", "member"], + type: "string" + } + }, + url: "/orgs/:org/members" + }, + listMemberships: { + method: "GET", + params: { + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + state: { + enum: ["active", "pending"], + type: "string" + } + }, + url: "/user/memberships/orgs" + }, + listOutsideCollaborators: { + method: "GET", + params: { + filter: { + enum: ["2fa_disabled", "all"], + type: "string" + }, + org: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + } + }, + url: "/orgs/:org/outside_collaborators" + }, + listPendingInvitations: { + method: "GET", + params: { + org: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + } + }, + url: "/orgs/:org/invitations" + }, + listPublicMembers: { + method: "GET", + params: { + org: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + } + }, + url: "/orgs/:org/public_members" + }, + pingHook: { + method: "POST", + params: { + hook_id: { + required: true, + type: "integer" + }, + org: { + required: true, + type: "string" + } + }, + url: "/orgs/:org/hooks/:hook_id/pings" + }, + publicizeMembership: { + method: "PUT", + params: { + org: { + required: true, + type: "string" + }, + username: { + required: true, + type: "string" + } + }, + url: "/orgs/:org/public_members/:username" + }, + removeMember: { + method: "DELETE", + params: { + org: { + required: true, + type: "string" + }, + username: { + required: true, + type: "string" + } + }, + url: "/orgs/:org/members/:username" + }, + removeMembership: { + method: "DELETE", + params: { + org: { + required: true, + type: "string" + }, + username: { + required: true, + type: "string" + } + }, + url: "/orgs/:org/memberships/:username" + }, + removeOutsideCollaborator: { + method: "DELETE", + params: { + org: { + required: true, + type: "string" + }, + username: { + required: true, + type: "string" + } + }, + url: "/orgs/:org/outside_collaborators/:username" + }, + unblockUser: { + method: "DELETE", + params: { + org: { + required: true, + type: "string" + }, + username: { + required: true, + type: "string" + } + }, + url: "/orgs/:org/blocks/:username" + }, + update: { + method: "PATCH", + params: { + billing_email: { + type: "string" + }, + company: { + type: "string" + }, + default_repository_permission: { + enum: ["read", "write", "admin", "none"], + type: "string" + }, + description: { + type: "string" + }, + email: { + type: "string" + }, + has_organization_projects: { + type: "boolean" + }, + has_repository_projects: { + type: "boolean" + }, + location: { + type: "string" + }, + members_allowed_repository_creation_type: { + enum: ["all", "private", "none"], + type: "string" + }, + members_can_create_internal_repositories: { + type: "boolean" + }, + members_can_create_private_repositories: { + type: "boolean" + }, + members_can_create_public_repositories: { + type: "boolean" + }, + members_can_create_repositories: { + type: "boolean" + }, + name: { + type: "string" + }, + org: { + required: true, + type: "string" + } + }, + url: "/orgs/:org" + }, + updateHook: { + method: "PATCH", + params: { + active: { + type: "boolean" + }, + config: { + type: "object" + }, + "config.content_type": { + type: "string" + }, + "config.insecure_ssl": { + type: "string" + }, + "config.secret": { + type: "string" + }, + "config.url": { + required: true, + type: "string" + }, + events: { + type: "string[]" + }, + hook_id: { + required: true, + type: "integer" + }, + org: { + required: true, + type: "string" + } + }, + url: "/orgs/:org/hooks/:hook_id" + }, + updateMembership: { + method: "PATCH", + params: { + org: { + required: true, + type: "string" + }, + state: { + enum: ["active"], + required: true, + type: "string" + } + }, + url: "/user/memberships/orgs/:org" + } + }, + projects: { + addCollaborator: { + headers: { + accept: "application/vnd.github.inertia-preview+json" + }, + method: "PUT", + params: { + permission: { + enum: ["read", "write", "admin"], + type: "string" + }, + project_id: { + required: true, + type: "integer" + }, + username: { + required: true, + type: "string" + } + }, + url: "/projects/:project_id/collaborators/:username" + }, + createCard: { + headers: { + accept: "application/vnd.github.inertia-preview+json" + }, + method: "POST", + params: { + column_id: { + required: true, + type: "integer" + }, + content_id: { + type: "integer" + }, + content_type: { + type: "string" + }, + note: { + type: "string" + } + }, + url: "/projects/columns/:column_id/cards" + }, + createColumn: { + headers: { + accept: "application/vnd.github.inertia-preview+json" + }, + method: "POST", + params: { + name: { + required: true, + type: "string" + }, + project_id: { + required: true, + type: "integer" + } + }, + url: "/projects/:project_id/columns" + }, + createForAuthenticatedUser: { + headers: { + accept: "application/vnd.github.inertia-preview+json" + }, + method: "POST", + params: { + body: { + type: "string" + }, + name: { + required: true, + type: "string" + } + }, + url: "/user/projects" + }, + createForOrg: { + headers: { + accept: "application/vnd.github.inertia-preview+json" + }, + method: "POST", + params: { + body: { + type: "string" + }, + name: { + required: true, + type: "string" + }, + org: { + required: true, + type: "string" + } + }, + url: "/orgs/:org/projects" + }, + createForRepo: { + headers: { + accept: "application/vnd.github.inertia-preview+json" + }, + method: "POST", + params: { + body: { + type: "string" + }, + name: { + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/projects" + }, + delete: { + headers: { + accept: "application/vnd.github.inertia-preview+json" + }, + method: "DELETE", + params: { + project_id: { + required: true, + type: "integer" + } + }, + url: "/projects/:project_id" + }, + deleteCard: { + headers: { + accept: "application/vnd.github.inertia-preview+json" + }, + method: "DELETE", + params: { + card_id: { + required: true, + type: "integer" + } + }, + url: "/projects/columns/cards/:card_id" + }, + deleteColumn: { + headers: { + accept: "application/vnd.github.inertia-preview+json" + }, + method: "DELETE", + params: { + column_id: { + required: true, + type: "integer" + } + }, + url: "/projects/columns/:column_id" + }, + get: { + headers: { + accept: "application/vnd.github.inertia-preview+json" + }, + method: "GET", + params: { + project_id: { + required: true, + type: "integer" + } + }, + url: "/projects/:project_id" + }, + getCard: { + headers: { + accept: "application/vnd.github.inertia-preview+json" + }, + method: "GET", + params: { + card_id: { + required: true, + type: "integer" + } + }, + url: "/projects/columns/cards/:card_id" + }, + getColumn: { + headers: { + accept: "application/vnd.github.inertia-preview+json" + }, + method: "GET", + params: { + column_id: { + required: true, + type: "integer" + } + }, + url: "/projects/columns/:column_id" + }, + listCards: { + headers: { + accept: "application/vnd.github.inertia-preview+json" + }, + method: "GET", + params: { + archived_state: { + enum: ["all", "archived", "not_archived"], + type: "string" + }, + column_id: { + required: true, + type: "integer" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + } + }, + url: "/projects/columns/:column_id/cards" + }, + listCollaborators: { + headers: { + accept: "application/vnd.github.inertia-preview+json" + }, + method: "GET", + params: { + affiliation: { + enum: ["outside", "direct", "all"], + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + project_id: { + required: true, + type: "integer" + } + }, + url: "/projects/:project_id/collaborators" + }, + listColumns: { + headers: { + accept: "application/vnd.github.inertia-preview+json" + }, + method: "GET", + params: { + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + project_id: { + required: true, + type: "integer" + } + }, + url: "/projects/:project_id/columns" + }, + listForOrg: { + headers: { + accept: "application/vnd.github.inertia-preview+json" + }, + method: "GET", + params: { + org: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + state: { + enum: ["open", "closed", "all"], + type: "string" + } + }, + url: "/orgs/:org/projects" + }, + listForRepo: { + headers: { + accept: "application/vnd.github.inertia-preview+json" + }, + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + repo: { + required: true, + type: "string" + }, + state: { + enum: ["open", "closed", "all"], + type: "string" + } + }, + url: "/repos/:owner/:repo/projects" + }, + listForUser: { + headers: { + accept: "application/vnd.github.inertia-preview+json" + }, + method: "GET", + params: { + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + state: { + enum: ["open", "closed", "all"], + type: "string" + }, + username: { + required: true, + type: "string" + } + }, + url: "/users/:username/projects" + }, + moveCard: { + headers: { + accept: "application/vnd.github.inertia-preview+json" + }, + method: "POST", + params: { + card_id: { + required: true, + type: "integer" + }, + column_id: { + type: "integer" + }, + position: { + required: true, + type: "string", + validation: "^(top|bottom|after:\\d+)$" + } + }, + url: "/projects/columns/cards/:card_id/moves" + }, + moveColumn: { + headers: { + accept: "application/vnd.github.inertia-preview+json" + }, + method: "POST", + params: { + column_id: { + required: true, + type: "integer" + }, + position: { + required: true, + type: "string", + validation: "^(first|last|after:\\d+)$" + } + }, + url: "/projects/columns/:column_id/moves" + }, + removeCollaborator: { + headers: { + accept: "application/vnd.github.inertia-preview+json" + }, + method: "DELETE", + params: { + project_id: { + required: true, + type: "integer" + }, + username: { + required: true, + type: "string" + } + }, + url: "/projects/:project_id/collaborators/:username" + }, + reviewUserPermissionLevel: { + headers: { + accept: "application/vnd.github.inertia-preview+json" + }, + method: "GET", + params: { + project_id: { + required: true, + type: "integer" + }, + username: { + required: true, + type: "string" + } + }, + url: "/projects/:project_id/collaborators/:username/permission" + }, + update: { + headers: { + accept: "application/vnd.github.inertia-preview+json" + }, + method: "PATCH", + params: { + body: { + type: "string" + }, + name: { + type: "string" + }, + organization_permission: { + type: "string" + }, + private: { + type: "boolean" + }, + project_id: { + required: true, + type: "integer" + }, + state: { + enum: ["open", "closed"], + type: "string" + } + }, + url: "/projects/:project_id" + }, + updateCard: { + headers: { + accept: "application/vnd.github.inertia-preview+json" + }, + method: "PATCH", + params: { + archived: { + type: "boolean" + }, + card_id: { + required: true, + type: "integer" + }, + note: { + type: "string" + } + }, + url: "/projects/columns/cards/:card_id" + }, + updateColumn: { + headers: { + accept: "application/vnd.github.inertia-preview+json" + }, + method: "PATCH", + params: { + column_id: { + required: true, + type: "integer" + }, + name: { + required: true, + type: "string" + } + }, + url: "/projects/columns/:column_id" + } + }, + pulls: { + checkIfMerged: { + method: "GET", + params: { + number: { + alias: "pull_number", + deprecated: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + pull_number: { + required: true, + type: "integer" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/pulls/:pull_number/merge" + }, + create: { + method: "POST", + params: { + base: { + required: true, + type: "string" + }, + body: { + type: "string" + }, + draft: { + type: "boolean" + }, + head: { + required: true, + type: "string" + }, + maintainer_can_modify: { + type: "boolean" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + }, + title: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/pulls" + }, + createComment: { + method: "POST", + params: { + body: { + required: true, + type: "string" + }, + commit_id: { + required: true, + type: "string" + }, + in_reply_to: { + deprecated: true, + description: "The comment ID to reply to. **Note**: This must be the ID of a top-level comment, not a reply to that comment. Replies to replies are not supported.", + type: "integer" + }, + line: { + type: "integer" + }, + number: { + alias: "pull_number", + deprecated: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + path: { + required: true, + type: "string" + }, + position: { + type: "integer" + }, + pull_number: { + required: true, + type: "integer" + }, + repo: { + required: true, + type: "string" + }, + side: { + enum: ["LEFT", "RIGHT"], + type: "string" + }, + start_line: { + type: "integer" + }, + start_side: { + enum: ["LEFT", "RIGHT", "side"], + type: "string" + } + }, + url: "/repos/:owner/:repo/pulls/:pull_number/comments" + }, + createCommentReply: { + deprecated: "octokit.pulls.createCommentReply() has been renamed to octokit.pulls.createComment() (2019-09-09)", + method: "POST", + params: { + body: { + required: true, + type: "string" + }, + commit_id: { + required: true, + type: "string" + }, + in_reply_to: { + deprecated: true, + description: "The comment ID to reply to. **Note**: This must be the ID of a top-level comment, not a reply to that comment. Replies to replies are not supported.", + type: "integer" + }, + line: { + type: "integer" + }, + number: { + alias: "pull_number", + deprecated: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + path: { + required: true, + type: "string" + }, + position: { + type: "integer" + }, + pull_number: { + required: true, + type: "integer" + }, + repo: { + required: true, + type: "string" + }, + side: { + enum: ["LEFT", "RIGHT"], + type: "string" + }, + start_line: { + type: "integer" + }, + start_side: { + enum: ["LEFT", "RIGHT", "side"], + type: "string" + } + }, + url: "/repos/:owner/:repo/pulls/:pull_number/comments" + }, + createFromIssue: { + deprecated: "octokit.pulls.createFromIssue() is deprecated, see https://developer.github.com/v3/pulls/#create-a-pull-request", + method: "POST", + params: { + base: { + required: true, + type: "string" + }, + draft: { + type: "boolean" + }, + head: { + required: true, + type: "string" + }, + issue: { + required: true, + type: "integer" + }, + maintainer_can_modify: { + type: "boolean" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/pulls" + }, + createReview: { + method: "POST", + params: { + body: { + type: "string" + }, + comments: { + type: "object[]" + }, + "comments[].body": { + required: true, + type: "string" + }, + "comments[].path": { + required: true, + type: "string" + }, + "comments[].position": { + required: true, + type: "integer" + }, + commit_id: { + type: "string" + }, + event: { + enum: ["APPROVE", "REQUEST_CHANGES", "COMMENT"], + type: "string" + }, + number: { + alias: "pull_number", + deprecated: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + pull_number: { + required: true, + type: "integer" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/pulls/:pull_number/reviews" + }, + createReviewCommentReply: { + method: "POST", + params: { + body: { + required: true, + type: "string" + }, + comment_id: { + required: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + pull_number: { + required: true, + type: "integer" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/pulls/:pull_number/comments/:comment_id/replies" + }, + createReviewRequest: { + method: "POST", + params: { + number: { + alias: "pull_number", + deprecated: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + pull_number: { + required: true, + type: "integer" + }, + repo: { + required: true, + type: "string" + }, + reviewers: { + type: "string[]" + }, + team_reviewers: { + type: "string[]" + } + }, + url: "/repos/:owner/:repo/pulls/:pull_number/requested_reviewers" + }, + deleteComment: { + method: "DELETE", + params: { + comment_id: { + required: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/pulls/comments/:comment_id" + }, + deletePendingReview: { + method: "DELETE", + params: { + number: { + alias: "pull_number", + deprecated: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + pull_number: { + required: true, + type: "integer" + }, + repo: { + required: true, + type: "string" + }, + review_id: { + required: true, + type: "integer" + } + }, + url: "/repos/:owner/:repo/pulls/:pull_number/reviews/:review_id" + }, + deleteReviewRequest: { + method: "DELETE", + params: { + number: { + alias: "pull_number", + deprecated: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + pull_number: { + required: true, + type: "integer" + }, + repo: { + required: true, + type: "string" + }, + reviewers: { + type: "string[]" + }, + team_reviewers: { + type: "string[]" + } + }, + url: "/repos/:owner/:repo/pulls/:pull_number/requested_reviewers" + }, + dismissReview: { + method: "PUT", + params: { + message: { + required: true, + type: "string" + }, + number: { + alias: "pull_number", + deprecated: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + pull_number: { + required: true, + type: "integer" + }, + repo: { + required: true, + type: "string" + }, + review_id: { + required: true, + type: "integer" + } + }, + url: "/repos/:owner/:repo/pulls/:pull_number/reviews/:review_id/dismissals" + }, + get: { + method: "GET", + params: { + number: { + alias: "pull_number", + deprecated: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + pull_number: { + required: true, + type: "integer" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/pulls/:pull_number" + }, + getComment: { + method: "GET", + params: { + comment_id: { + required: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/pulls/comments/:comment_id" + }, + getCommentsForReview: { + method: "GET", + params: { + number: { + alias: "pull_number", + deprecated: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + pull_number: { + required: true, + type: "integer" + }, + repo: { + required: true, + type: "string" + }, + review_id: { + required: true, + type: "integer" + } + }, + url: "/repos/:owner/:repo/pulls/:pull_number/reviews/:review_id/comments" + }, + getReview: { + method: "GET", + params: { + number: { + alias: "pull_number", + deprecated: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + pull_number: { + required: true, + type: "integer" + }, + repo: { + required: true, + type: "string" + }, + review_id: { + required: true, + type: "integer" + } + }, + url: "/repos/:owner/:repo/pulls/:pull_number/reviews/:review_id" + }, + list: { + method: "GET", + params: { + base: { + type: "string" + }, + direction: { + enum: ["asc", "desc"], + type: "string" + }, + head: { + type: "string" + }, + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + repo: { + required: true, + type: "string" + }, + sort: { + enum: ["created", "updated", "popularity", "long-running"], + type: "string" + }, + state: { + enum: ["open", "closed", "all"], + type: "string" + } + }, + url: "/repos/:owner/:repo/pulls" + }, + listComments: { + method: "GET", + params: { + direction: { + enum: ["asc", "desc"], + type: "string" + }, + number: { + alias: "pull_number", + deprecated: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + pull_number: { + required: true, + type: "integer" + }, + repo: { + required: true, + type: "string" + }, + since: { + type: "string" + }, + sort: { + enum: ["created", "updated"], + type: "string" + } + }, + url: "/repos/:owner/:repo/pulls/:pull_number/comments" + }, + listCommentsForRepo: { + method: "GET", + params: { + direction: { + enum: ["asc", "desc"], + type: "string" + }, + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + repo: { + required: true, + type: "string" + }, + since: { + type: "string" + }, + sort: { + enum: ["created", "updated"], + type: "string" + } + }, + url: "/repos/:owner/:repo/pulls/comments" + }, + listCommits: { + method: "GET", + params: { + number: { + alias: "pull_number", + deprecated: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + pull_number: { + required: true, + type: "integer" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/pulls/:pull_number/commits" + }, + listFiles: { + method: "GET", + params: { + number: { + alias: "pull_number", + deprecated: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + pull_number: { + required: true, + type: "integer" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/pulls/:pull_number/files" + }, + listReviewRequests: { + method: "GET", + params: { + number: { + alias: "pull_number", + deprecated: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + pull_number: { + required: true, + type: "integer" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/pulls/:pull_number/requested_reviewers" + }, + listReviews: { + method: "GET", + params: { + number: { + alias: "pull_number", + deprecated: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + pull_number: { + required: true, + type: "integer" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/pulls/:pull_number/reviews" + }, + merge: { + method: "PUT", + params: { + commit_message: { + type: "string" + }, + commit_title: { + type: "string" + }, + merge_method: { + enum: ["merge", "squash", "rebase"], + type: "string" + }, + number: { + alias: "pull_number", + deprecated: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + pull_number: { + required: true, + type: "integer" + }, + repo: { + required: true, + type: "string" + }, + sha: { + type: "string" + } + }, + url: "/repos/:owner/:repo/pulls/:pull_number/merge" + }, + submitReview: { + method: "POST", + params: { + body: { + type: "string" + }, + event: { + enum: ["APPROVE", "REQUEST_CHANGES", "COMMENT"], + required: true, + type: "string" + }, + number: { + alias: "pull_number", + deprecated: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + pull_number: { + required: true, + type: "integer" + }, + repo: { + required: true, + type: "string" + }, + review_id: { + required: true, + type: "integer" + } + }, + url: "/repos/:owner/:repo/pulls/:pull_number/reviews/:review_id/events" + }, + update: { + method: "PATCH", + params: { + base: { + type: "string" + }, + body: { + type: "string" + }, + maintainer_can_modify: { + type: "boolean" + }, + number: { + alias: "pull_number", + deprecated: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + pull_number: { + required: true, + type: "integer" + }, + repo: { + required: true, + type: "string" + }, + state: { + enum: ["open", "closed"], + type: "string" + }, + title: { + type: "string" + } + }, + url: "/repos/:owner/:repo/pulls/:pull_number" + }, + updateBranch: { + headers: { + accept: "application/vnd.github.lydian-preview+json" + }, + method: "PUT", + params: { + expected_head_sha: { + type: "string" + }, + owner: { + required: true, + type: "string" + }, + pull_number: { + required: true, + type: "integer" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/pulls/:pull_number/update-branch" + }, + updateComment: { + method: "PATCH", + params: { + body: { + required: true, + type: "string" + }, + comment_id: { + required: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/pulls/comments/:comment_id" + }, + updateReview: { + method: "PUT", + params: { + body: { + required: true, + type: "string" + }, + number: { + alias: "pull_number", + deprecated: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + pull_number: { + required: true, + type: "integer" + }, + repo: { + required: true, + type: "string" + }, + review_id: { + required: true, + type: "integer" + } + }, + url: "/repos/:owner/:repo/pulls/:pull_number/reviews/:review_id" + } + }, + rateLimit: { + get: { + method: "GET", + params: {}, + url: "/rate_limit" + } + }, + reactions: { + createForCommitComment: { + headers: { + accept: "application/vnd.github.squirrel-girl-preview+json" + }, + method: "POST", + params: { + comment_id: { + required: true, + type: "integer" + }, + content: { + enum: ["+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", "eyes"], + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/comments/:comment_id/reactions" + }, + createForIssue: { + headers: { + accept: "application/vnd.github.squirrel-girl-preview+json" + }, + method: "POST", + params: { + content: { + enum: ["+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", "eyes"], + required: true, + type: "string" + }, + issue_number: { + required: true, + type: "integer" + }, + number: { + alias: "issue_number", + deprecated: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/issues/:issue_number/reactions" + }, + createForIssueComment: { + headers: { + accept: "application/vnd.github.squirrel-girl-preview+json" + }, + method: "POST", + params: { + comment_id: { + required: true, + type: "integer" + }, + content: { + enum: ["+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", "eyes"], + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/issues/comments/:comment_id/reactions" + }, + createForPullRequestReviewComment: { + headers: { + accept: "application/vnd.github.squirrel-girl-preview+json" + }, + method: "POST", + params: { + comment_id: { + required: true, + type: "integer" + }, + content: { + enum: ["+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", "eyes"], + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/pulls/comments/:comment_id/reactions" + }, + createForTeamDiscussion: { + deprecated: "octokit.reactions.createForTeamDiscussion() has been renamed to octokit.reactions.createForTeamDiscussionLegacy() (2020-01-16)", + headers: { + accept: "application/vnd.github.squirrel-girl-preview+json" + }, + method: "POST", + params: { + content: { + enum: ["+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", "eyes"], + required: true, + type: "string" + }, + discussion_number: { + required: true, + type: "integer" + }, + team_id: { + required: true, + type: "integer" + } + }, + url: "/teams/:team_id/discussions/:discussion_number/reactions" + }, + createForTeamDiscussionComment: { + deprecated: "octokit.reactions.createForTeamDiscussionComment() has been renamed to octokit.reactions.createForTeamDiscussionCommentLegacy() (2020-01-16)", + headers: { + accept: "application/vnd.github.squirrel-girl-preview+json" + }, + method: "POST", + params: { + comment_number: { + required: true, + type: "integer" + }, + content: { + enum: ["+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", "eyes"], + required: true, + type: "string" + }, + discussion_number: { + required: true, + type: "integer" + }, + team_id: { + required: true, + type: "integer" + } + }, + url: "/teams/:team_id/discussions/:discussion_number/comments/:comment_number/reactions" + }, + createForTeamDiscussionCommentInOrg: { + headers: { + accept: "application/vnd.github.squirrel-girl-preview+json" + }, + method: "POST", + params: { + comment_number: { + required: true, + type: "integer" + }, + content: { + enum: ["+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", "eyes"], + required: true, + type: "string" + }, + discussion_number: { + required: true, + type: "integer" + }, + org: { + required: true, + type: "string" + }, + team_slug: { + required: true, + type: "string" + } + }, + url: "/orgs/:org/teams/:team_slug/discussions/:discussion_number/comments/:comment_number/reactions" + }, + createForTeamDiscussionCommentLegacy: { + deprecated: "octokit.reactions.createForTeamDiscussionCommentLegacy() is deprecated, see https://developer.github.com/v3/reactions/#create-reaction-for-a-team-discussion-comment-legacy", + headers: { + accept: "application/vnd.github.squirrel-girl-preview+json" + }, + method: "POST", + params: { + comment_number: { + required: true, + type: "integer" + }, + content: { + enum: ["+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", "eyes"], + required: true, + type: "string" + }, + discussion_number: { + required: true, + type: "integer" + }, + team_id: { + required: true, + type: "integer" + } + }, + url: "/teams/:team_id/discussions/:discussion_number/comments/:comment_number/reactions" + }, + createForTeamDiscussionInOrg: { + headers: { + accept: "application/vnd.github.squirrel-girl-preview+json" + }, + method: "POST", + params: { + content: { + enum: ["+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", "eyes"], + required: true, + type: "string" + }, + discussion_number: { + required: true, + type: "integer" + }, + org: { + required: true, + type: "string" + }, + team_slug: { + required: true, + type: "string" + } + }, + url: "/orgs/:org/teams/:team_slug/discussions/:discussion_number/reactions" + }, + createForTeamDiscussionLegacy: { + deprecated: "octokit.reactions.createForTeamDiscussionLegacy() is deprecated, see https://developer.github.com/v3/reactions/#create-reaction-for-a-team-discussion-legacy", + headers: { + accept: "application/vnd.github.squirrel-girl-preview+json" + }, + method: "POST", + params: { + content: { + enum: ["+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", "eyes"], + required: true, + type: "string" + }, + discussion_number: { + required: true, + type: "integer" + }, + team_id: { + required: true, + type: "integer" + } + }, + url: "/teams/:team_id/discussions/:discussion_number/reactions" + }, + delete: { + headers: { + accept: "application/vnd.github.squirrel-girl-preview+json" + }, + method: "DELETE", + params: { + reaction_id: { + required: true, + type: "integer" + } + }, + url: "/reactions/:reaction_id" + }, + listForCommitComment: { + headers: { + accept: "application/vnd.github.squirrel-girl-preview+json" + }, + method: "GET", + params: { + comment_id: { + required: true, + type: "integer" + }, + content: { + enum: ["+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", "eyes"], + type: "string" + }, + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/comments/:comment_id/reactions" + }, + listForIssue: { + headers: { + accept: "application/vnd.github.squirrel-girl-preview+json" + }, + method: "GET", + params: { + content: { + enum: ["+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", "eyes"], + type: "string" + }, + issue_number: { + required: true, + type: "integer" + }, + number: { + alias: "issue_number", + deprecated: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/issues/:issue_number/reactions" + }, + listForIssueComment: { + headers: { + accept: "application/vnd.github.squirrel-girl-preview+json" + }, + method: "GET", + params: { + comment_id: { + required: true, + type: "integer" + }, + content: { + enum: ["+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", "eyes"], + type: "string" + }, + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/issues/comments/:comment_id/reactions" + }, + listForPullRequestReviewComment: { + headers: { + accept: "application/vnd.github.squirrel-girl-preview+json" + }, + method: "GET", + params: { + comment_id: { + required: true, + type: "integer" + }, + content: { + enum: ["+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", "eyes"], + type: "string" + }, + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/pulls/comments/:comment_id/reactions" + }, + listForTeamDiscussion: { + deprecated: "octokit.reactions.listForTeamDiscussion() has been renamed to octokit.reactions.listForTeamDiscussionLegacy() (2020-01-16)", + headers: { + accept: "application/vnd.github.squirrel-girl-preview+json" + }, + method: "GET", + params: { + content: { + enum: ["+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", "eyes"], + type: "string" + }, + discussion_number: { + required: true, + type: "integer" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + team_id: { + required: true, + type: "integer" + } + }, + url: "/teams/:team_id/discussions/:discussion_number/reactions" + }, + listForTeamDiscussionComment: { + deprecated: "octokit.reactions.listForTeamDiscussionComment() has been renamed to octokit.reactions.listForTeamDiscussionCommentLegacy() (2020-01-16)", + headers: { + accept: "application/vnd.github.squirrel-girl-preview+json" + }, + method: "GET", + params: { + comment_number: { + required: true, + type: "integer" + }, + content: { + enum: ["+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", "eyes"], + type: "string" + }, + discussion_number: { + required: true, + type: "integer" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + team_id: { + required: true, + type: "integer" + } + }, + url: "/teams/:team_id/discussions/:discussion_number/comments/:comment_number/reactions" + }, + listForTeamDiscussionCommentInOrg: { + headers: { + accept: "application/vnd.github.squirrel-girl-preview+json" + }, + method: "GET", + params: { + comment_number: { + required: true, + type: "integer" + }, + content: { + enum: ["+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", "eyes"], + type: "string" + }, + discussion_number: { + required: true, + type: "integer" + }, + org: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + team_slug: { + required: true, + type: "string" + } + }, + url: "/orgs/:org/teams/:team_slug/discussions/:discussion_number/comments/:comment_number/reactions" + }, + listForTeamDiscussionCommentLegacy: { + deprecated: "octokit.reactions.listForTeamDiscussionCommentLegacy() is deprecated, see https://developer.github.com/v3/reactions/#list-reactions-for-a-team-discussion-comment-legacy", + headers: { + accept: "application/vnd.github.squirrel-girl-preview+json" + }, + method: "GET", + params: { + comment_number: { + required: true, + type: "integer" + }, + content: { + enum: ["+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", "eyes"], + type: "string" + }, + discussion_number: { + required: true, + type: "integer" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + team_id: { + required: true, + type: "integer" + } + }, + url: "/teams/:team_id/discussions/:discussion_number/comments/:comment_number/reactions" + }, + listForTeamDiscussionInOrg: { + headers: { + accept: "application/vnd.github.squirrel-girl-preview+json" + }, + method: "GET", + params: { + content: { + enum: ["+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", "eyes"], + type: "string" + }, + discussion_number: { + required: true, + type: "integer" + }, + org: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + team_slug: { + required: true, + type: "string" + } + }, + url: "/orgs/:org/teams/:team_slug/discussions/:discussion_number/reactions" + }, + listForTeamDiscussionLegacy: { + deprecated: "octokit.reactions.listForTeamDiscussionLegacy() is deprecated, see https://developer.github.com/v3/reactions/#list-reactions-for-a-team-discussion-legacy", + headers: { + accept: "application/vnd.github.squirrel-girl-preview+json" + }, + method: "GET", + params: { + content: { + enum: ["+1", "-1", "laugh", "confused", "heart", "hooray", "rocket", "eyes"], + type: "string" + }, + discussion_number: { + required: true, + type: "integer" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + team_id: { + required: true, + type: "integer" + } + }, + url: "/teams/:team_id/discussions/:discussion_number/reactions" + } + }, + repos: { + acceptInvitation: { + method: "PATCH", + params: { + invitation_id: { + required: true, + type: "integer" + } + }, + url: "/user/repository_invitations/:invitation_id" + }, + addCollaborator: { + method: "PUT", + params: { + owner: { + required: true, + type: "string" + }, + permission: { + enum: ["pull", "push", "admin"], + type: "string" + }, + repo: { + required: true, + type: "string" + }, + username: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/collaborators/:username" + }, + addDeployKey: { + method: "POST", + params: { + key: { + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + read_only: { + type: "boolean" + }, + repo: { + required: true, + type: "string" + }, + title: { + type: "string" + } + }, + url: "/repos/:owner/:repo/keys" + }, + addProtectedBranchAdminEnforcement: { + method: "POST", + params: { + branch: { + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/branches/:branch/protection/enforce_admins" + }, + addProtectedBranchAppRestrictions: { + method: "POST", + params: { + apps: { + mapTo: "data", + required: true, + type: "string[]" + }, + branch: { + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/branches/:branch/protection/restrictions/apps" + }, + addProtectedBranchRequiredSignatures: { + headers: { + accept: "application/vnd.github.zzzax-preview+json" + }, + method: "POST", + params: { + branch: { + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/branches/:branch/protection/required_signatures" + }, + addProtectedBranchRequiredStatusChecksContexts: { + method: "POST", + params: { + branch: { + required: true, + type: "string" + }, + contexts: { + mapTo: "data", + required: true, + type: "string[]" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/branches/:branch/protection/required_status_checks/contexts" + }, + addProtectedBranchTeamRestrictions: { + method: "POST", + params: { + branch: { + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + }, + teams: { + mapTo: "data", + required: true, + type: "string[]" + } + }, + url: "/repos/:owner/:repo/branches/:branch/protection/restrictions/teams" + }, + addProtectedBranchUserRestrictions: { + method: "POST", + params: { + branch: { + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + }, + users: { + mapTo: "data", + required: true, + type: "string[]" + } + }, + url: "/repos/:owner/:repo/branches/:branch/protection/restrictions/users" + }, + checkCollaborator: { + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + }, + username: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/collaborators/:username" + }, + checkVulnerabilityAlerts: { + headers: { + accept: "application/vnd.github.dorian-preview+json" + }, + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/vulnerability-alerts" + }, + compareCommits: { + method: "GET", + params: { + base: { + required: true, + type: "string" + }, + head: { + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/compare/:base...:head" + }, + createCommitComment: { + method: "POST", + params: { + body: { + required: true, + type: "string" + }, + commit_sha: { + required: true, + type: "string" + }, + line: { + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + path: { + type: "string" + }, + position: { + type: "integer" + }, + repo: { + required: true, + type: "string" + }, + sha: { + alias: "commit_sha", + deprecated: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/commits/:commit_sha/comments" + }, + createDeployment: { + method: "POST", + params: { + auto_merge: { + type: "boolean" + }, + description: { + type: "string" + }, + environment: { + type: "string" + }, + owner: { + required: true, + type: "string" + }, + payload: { + type: "string" + }, + production_environment: { + type: "boolean" + }, + ref: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + }, + required_contexts: { + type: "string[]" + }, + task: { + type: "string" + }, + transient_environment: { + type: "boolean" + } + }, + url: "/repos/:owner/:repo/deployments" + }, + createDeploymentStatus: { + method: "POST", + params: { + auto_inactive: { + type: "boolean" + }, + deployment_id: { + required: true, + type: "integer" + }, + description: { + type: "string" + }, + environment: { + enum: ["production", "staging", "qa"], + type: "string" + }, + environment_url: { + type: "string" + }, + log_url: { + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + }, + state: { + enum: ["error", "failure", "inactive", "in_progress", "queued", "pending", "success"], + required: true, + type: "string" + }, + target_url: { + type: "string" + } + }, + url: "/repos/:owner/:repo/deployments/:deployment_id/statuses" + }, + createDispatchEvent: { + method: "POST", + params: { + client_payload: { + type: "object" + }, + event_type: { + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/dispatches" + }, + createFile: { + deprecated: "octokit.repos.createFile() has been renamed to octokit.repos.createOrUpdateFile() (2019-06-07)", + method: "PUT", + params: { + author: { + type: "object" + }, + "author.email": { + required: true, + type: "string" + }, + "author.name": { + required: true, + type: "string" + }, + branch: { + type: "string" + }, + committer: { + type: "object" + }, + "committer.email": { + required: true, + type: "string" + }, + "committer.name": { + required: true, + type: "string" + }, + content: { + required: true, + type: "string" + }, + message: { + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + path: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + }, + sha: { + type: "string" + } + }, + url: "/repos/:owner/:repo/contents/:path" + }, + createForAuthenticatedUser: { + method: "POST", + params: { + allow_merge_commit: { + type: "boolean" + }, + allow_rebase_merge: { + type: "boolean" + }, + allow_squash_merge: { + type: "boolean" + }, + auto_init: { + type: "boolean" + }, + delete_branch_on_merge: { + type: "boolean" + }, + description: { + type: "string" + }, + gitignore_template: { + type: "string" + }, + has_issues: { + type: "boolean" + }, + has_projects: { + type: "boolean" + }, + has_wiki: { + type: "boolean" + }, + homepage: { + type: "string" + }, + is_template: { + type: "boolean" + }, + license_template: { + type: "string" + }, + name: { + required: true, + type: "string" + }, + private: { + type: "boolean" + }, + team_id: { + type: "integer" + }, + visibility: { + enum: ["public", "private", "visibility", "internal"], + type: "string" + } + }, + url: "/user/repos" + }, + createFork: { + method: "POST", + params: { + organization: { + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/forks" + }, + createHook: { + method: "POST", + params: { + active: { + type: "boolean" + }, + config: { + required: true, + type: "object" + }, + "config.content_type": { + type: "string" + }, + "config.insecure_ssl": { + type: "string" + }, + "config.secret": { + type: "string" + }, + "config.url": { + required: true, + type: "string" + }, + events: { + type: "string[]" + }, + name: { + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/hooks" + }, + createInOrg: { + method: "POST", + params: { + allow_merge_commit: { + type: "boolean" + }, + allow_rebase_merge: { + type: "boolean" + }, + allow_squash_merge: { + type: "boolean" + }, + auto_init: { + type: "boolean" + }, + delete_branch_on_merge: { + type: "boolean" + }, + description: { + type: "string" + }, + gitignore_template: { + type: "string" + }, + has_issues: { + type: "boolean" + }, + has_projects: { + type: "boolean" + }, + has_wiki: { + type: "boolean" + }, + homepage: { + type: "string" + }, + is_template: { + type: "boolean" + }, + license_template: { + type: "string" + }, + name: { + required: true, + type: "string" + }, + org: { + required: true, + type: "string" + }, + private: { + type: "boolean" + }, + team_id: { + type: "integer" + }, + visibility: { + enum: ["public", "private", "visibility", "internal"], + type: "string" + } + }, + url: "/orgs/:org/repos" + }, + createOrUpdateFile: { + method: "PUT", + params: { + author: { + type: "object" + }, + "author.email": { + required: true, + type: "string" + }, + "author.name": { + required: true, + type: "string" + }, + branch: { + type: "string" + }, + committer: { + type: "object" + }, + "committer.email": { + required: true, + type: "string" + }, + "committer.name": { + required: true, + type: "string" + }, + content: { + required: true, + type: "string" + }, + message: { + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + path: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + }, + sha: { + type: "string" + } + }, + url: "/repos/:owner/:repo/contents/:path" + }, + createRelease: { + method: "POST", + params: { + body: { + type: "string" + }, + draft: { + type: "boolean" + }, + name: { + type: "string" + }, + owner: { + required: true, + type: "string" + }, + prerelease: { + type: "boolean" + }, + repo: { + required: true, + type: "string" + }, + tag_name: { + required: true, + type: "string" + }, + target_commitish: { + type: "string" + } + }, + url: "/repos/:owner/:repo/releases" + }, + createStatus: { + method: "POST", + params: { + context: { + type: "string" + }, + description: { + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + }, + sha: { + required: true, + type: "string" + }, + state: { + enum: ["error", "failure", "pending", "success"], + required: true, + type: "string" + }, + target_url: { + type: "string" + } + }, + url: "/repos/:owner/:repo/statuses/:sha" + }, + createUsingTemplate: { + headers: { + accept: "application/vnd.github.baptiste-preview+json" + }, + method: "POST", + params: { + description: { + type: "string" + }, + name: { + required: true, + type: "string" + }, + owner: { + type: "string" + }, + private: { + type: "boolean" + }, + template_owner: { + required: true, + type: "string" + }, + template_repo: { + required: true, + type: "string" + } + }, + url: "/repos/:template_owner/:template_repo/generate" + }, + declineInvitation: { + method: "DELETE", + params: { + invitation_id: { + required: true, + type: "integer" + } + }, + url: "/user/repository_invitations/:invitation_id" + }, + delete: { + method: "DELETE", + params: { + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo" + }, + deleteCommitComment: { + method: "DELETE", + params: { + comment_id: { + required: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/comments/:comment_id" + }, + deleteDownload: { + method: "DELETE", + params: { + download_id: { + required: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/downloads/:download_id" + }, + deleteFile: { + method: "DELETE", + params: { + author: { + type: "object" + }, + "author.email": { + type: "string" + }, + "author.name": { + type: "string" + }, + branch: { + type: "string" + }, + committer: { + type: "object" + }, + "committer.email": { + type: "string" + }, + "committer.name": { + type: "string" + }, + message: { + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + path: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + }, + sha: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/contents/:path" + }, + deleteHook: { + method: "DELETE", + params: { + hook_id: { + required: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/hooks/:hook_id" + }, + deleteInvitation: { + method: "DELETE", + params: { + invitation_id: { + required: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/invitations/:invitation_id" + }, + deleteRelease: { + method: "DELETE", + params: { + owner: { + required: true, + type: "string" + }, + release_id: { + required: true, + type: "integer" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/releases/:release_id" + }, + deleteReleaseAsset: { + method: "DELETE", + params: { + asset_id: { + required: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/releases/assets/:asset_id" + }, + disableAutomatedSecurityFixes: { + headers: { + accept: "application/vnd.github.london-preview+json" + }, + method: "DELETE", + params: { + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/automated-security-fixes" + }, + disablePagesSite: { + headers: { + accept: "application/vnd.github.switcheroo-preview+json" + }, + method: "DELETE", + params: { + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/pages" + }, + disableVulnerabilityAlerts: { + headers: { + accept: "application/vnd.github.dorian-preview+json" + }, + method: "DELETE", + params: { + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/vulnerability-alerts" + }, + enableAutomatedSecurityFixes: { + headers: { + accept: "application/vnd.github.london-preview+json" + }, + method: "PUT", + params: { + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/automated-security-fixes" + }, + enablePagesSite: { + headers: { + accept: "application/vnd.github.switcheroo-preview+json" + }, + method: "POST", + params: { + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + }, + source: { + type: "object" + }, + "source.branch": { + enum: ["master", "gh-pages"], + type: "string" + }, + "source.path": { + type: "string" + } + }, + url: "/repos/:owner/:repo/pages" + }, + enableVulnerabilityAlerts: { + headers: { + accept: "application/vnd.github.dorian-preview+json" + }, + method: "PUT", + params: { + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/vulnerability-alerts" + }, + get: { + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo" + }, + getAppsWithAccessToProtectedBranch: { + method: "GET", + params: { + branch: { + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/branches/:branch/protection/restrictions/apps" + }, + getArchiveLink: { + method: "GET", + params: { + archive_format: { + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + ref: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/:archive_format/:ref" + }, + getBranch: { + method: "GET", + params: { + branch: { + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/branches/:branch" + }, + getBranchProtection: { + method: "GET", + params: { + branch: { + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/branches/:branch/protection" + }, + getClones: { + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + per: { + enum: ["day", "week"], + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/traffic/clones" + }, + getCodeFrequencyStats: { + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/stats/code_frequency" + }, + getCollaboratorPermissionLevel: { + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + }, + username: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/collaborators/:username/permission" + }, + getCombinedStatusForRef: { + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + ref: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/commits/:ref/status" + }, + getCommit: { + method: "GET", + params: { + commit_sha: { + alias: "ref", + deprecated: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + ref: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + }, + sha: { + alias: "ref", + deprecated: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/commits/:ref" + }, + getCommitActivityStats: { + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/stats/commit_activity" + }, + getCommitComment: { + method: "GET", + params: { + comment_id: { + required: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/comments/:comment_id" + }, + getCommitRefSha: { + deprecated: "octokit.repos.getCommitRefSha() is deprecated, see https://developer.github.com/v3/repos/commits/#get-a-single-commit", + headers: { + accept: "application/vnd.github.v3.sha" + }, + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + ref: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/commits/:ref" + }, + getContents: { + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + path: { + required: true, + type: "string" + }, + ref: { + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/contents/:path" + }, + getContributorsStats: { + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/stats/contributors" + }, + getDeployKey: { + method: "GET", + params: { + key_id: { + required: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/keys/:key_id" + }, + getDeployment: { + method: "GET", + params: { + deployment_id: { + required: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/deployments/:deployment_id" + }, + getDeploymentStatus: { + method: "GET", + params: { + deployment_id: { + required: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + }, + status_id: { + required: true, + type: "integer" + } + }, + url: "/repos/:owner/:repo/deployments/:deployment_id/statuses/:status_id" + }, + getDownload: { + method: "GET", + params: { + download_id: { + required: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/downloads/:download_id" + }, + getHook: { + method: "GET", + params: { + hook_id: { + required: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/hooks/:hook_id" + }, + getLatestPagesBuild: { + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/pages/builds/latest" + }, + getLatestRelease: { + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/releases/latest" + }, + getPages: { + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/pages" + }, + getPagesBuild: { + method: "GET", + params: { + build_id: { + required: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/pages/builds/:build_id" + }, + getParticipationStats: { + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/stats/participation" + }, + getProtectedBranchAdminEnforcement: { + method: "GET", + params: { + branch: { + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/branches/:branch/protection/enforce_admins" + }, + getProtectedBranchPullRequestReviewEnforcement: { + method: "GET", + params: { + branch: { + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/branches/:branch/protection/required_pull_request_reviews" + }, + getProtectedBranchRequiredSignatures: { + headers: { + accept: "application/vnd.github.zzzax-preview+json" + }, + method: "GET", + params: { + branch: { + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/branches/:branch/protection/required_signatures" + }, + getProtectedBranchRequiredStatusChecks: { + method: "GET", + params: { + branch: { + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/branches/:branch/protection/required_status_checks" + }, + getProtectedBranchRestrictions: { + method: "GET", + params: { + branch: { + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/branches/:branch/protection/restrictions" + }, + getPunchCardStats: { + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/stats/punch_card" + }, + getReadme: { + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + ref: { + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/readme" + }, + getRelease: { + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + release_id: { + required: true, + type: "integer" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/releases/:release_id" + }, + getReleaseAsset: { + method: "GET", + params: { + asset_id: { + required: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/releases/assets/:asset_id" + }, + getReleaseByTag: { + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + }, + tag: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/releases/tags/:tag" + }, + getTeamsWithAccessToProtectedBranch: { + method: "GET", + params: { + branch: { + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/branches/:branch/protection/restrictions/teams" + }, + getTopPaths: { + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/traffic/popular/paths" + }, + getTopReferrers: { + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/traffic/popular/referrers" + }, + getUsersWithAccessToProtectedBranch: { + method: "GET", + params: { + branch: { + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/branches/:branch/protection/restrictions/users" + }, + getViews: { + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + per: { + enum: ["day", "week"], + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/traffic/views" + }, + list: { + method: "GET", + params: { + affiliation: { + type: "string" + }, + direction: { + enum: ["asc", "desc"], + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + sort: { + enum: ["created", "updated", "pushed", "full_name"], + type: "string" + }, + type: { + enum: ["all", "owner", "public", "private", "member"], + type: "string" + }, + visibility: { + enum: ["all", "public", "private"], + type: "string" + } + }, + url: "/user/repos" + }, + listAppsWithAccessToProtectedBranch: { + deprecated: "octokit.repos.listAppsWithAccessToProtectedBranch() has been renamed to octokit.repos.getAppsWithAccessToProtectedBranch() (2019-09-13)", + method: "GET", + params: { + branch: { + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/branches/:branch/protection/restrictions/apps" + }, + listAssetsForRelease: { + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + release_id: { + required: true, + type: "integer" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/releases/:release_id/assets" + }, + listBranches: { + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + protected: { + type: "boolean" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/branches" + }, + listBranchesForHeadCommit: { + headers: { + accept: "application/vnd.github.groot-preview+json" + }, + method: "GET", + params: { + commit_sha: { + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/commits/:commit_sha/branches-where-head" + }, + listCollaborators: { + method: "GET", + params: { + affiliation: { + enum: ["outside", "direct", "all"], + type: "string" + }, + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/collaborators" + }, + listCommentsForCommit: { + method: "GET", + params: { + commit_sha: { + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + ref: { + alias: "commit_sha", + deprecated: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/commits/:commit_sha/comments" + }, + listCommitComments: { + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/comments" + }, + listCommits: { + method: "GET", + params: { + author: { + type: "string" + }, + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + path: { + type: "string" + }, + per_page: { + type: "integer" + }, + repo: { + required: true, + type: "string" + }, + sha: { + type: "string" + }, + since: { + type: "string" + }, + until: { + type: "string" + } + }, + url: "/repos/:owner/:repo/commits" + }, + listContributors: { + method: "GET", + params: { + anon: { + type: "string" + }, + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/contributors" + }, + listDeployKeys: { + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/keys" + }, + listDeploymentStatuses: { + method: "GET", + params: { + deployment_id: { + required: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/deployments/:deployment_id/statuses" + }, + listDeployments: { + method: "GET", + params: { + environment: { + type: "string" + }, + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + ref: { + type: "string" + }, + repo: { + required: true, + type: "string" + }, + sha: { + type: "string" + }, + task: { + type: "string" + } + }, + url: "/repos/:owner/:repo/deployments" + }, + listDownloads: { + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/downloads" + }, + listForOrg: { + method: "GET", + params: { + direction: { + enum: ["asc", "desc"], + type: "string" + }, + org: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + sort: { + enum: ["created", "updated", "pushed", "full_name"], + type: "string" + }, + type: { + enum: ["all", "public", "private", "forks", "sources", "member", "internal"], + type: "string" + } + }, + url: "/orgs/:org/repos" + }, + listForUser: { + method: "GET", + params: { + direction: { + enum: ["asc", "desc"], + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + sort: { + enum: ["created", "updated", "pushed", "full_name"], + type: "string" + }, + type: { + enum: ["all", "owner", "member"], + type: "string" + }, + username: { + required: true, + type: "string" + } + }, + url: "/users/:username/repos" + }, + listForks: { + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + repo: { + required: true, + type: "string" + }, + sort: { + enum: ["newest", "oldest", "stargazers"], + type: "string" + } + }, + url: "/repos/:owner/:repo/forks" + }, + listHooks: { + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/hooks" + }, + listInvitations: { + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/invitations" + }, + listInvitationsForAuthenticatedUser: { + method: "GET", + params: { + page: { + type: "integer" + }, + per_page: { + type: "integer" + } + }, + url: "/user/repository_invitations" + }, + listLanguages: { + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/languages" + }, + listPagesBuilds: { + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/pages/builds" + }, + listProtectedBranchRequiredStatusChecksContexts: { + method: "GET", + params: { + branch: { + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/branches/:branch/protection/required_status_checks/contexts" + }, + listProtectedBranchTeamRestrictions: { + deprecated: "octokit.repos.listProtectedBranchTeamRestrictions() has been renamed to octokit.repos.getTeamsWithAccessToProtectedBranch() (2019-09-09)", + method: "GET", + params: { + branch: { + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/branches/:branch/protection/restrictions/teams" + }, + listProtectedBranchUserRestrictions: { + deprecated: "octokit.repos.listProtectedBranchUserRestrictions() has been renamed to octokit.repos.getUsersWithAccessToProtectedBranch() (2019-09-09)", + method: "GET", + params: { + branch: { + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/branches/:branch/protection/restrictions/users" + }, + listPublic: { + method: "GET", + params: { + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + since: { + type: "integer" + } + }, + url: "/repositories" + }, + listPullRequestsAssociatedWithCommit: { + headers: { + accept: "application/vnd.github.groot-preview+json" + }, + method: "GET", + params: { + commit_sha: { + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/commits/:commit_sha/pulls" + }, + listReleases: { + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/releases" + }, + listStatusesForRef: { + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + ref: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/commits/:ref/statuses" + }, + listTags: { + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/tags" + }, + listTeams: { + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/teams" + }, + listTeamsWithAccessToProtectedBranch: { + deprecated: "octokit.repos.listTeamsWithAccessToProtectedBranch() has been renamed to octokit.repos.getTeamsWithAccessToProtectedBranch() (2019-09-13)", + method: "GET", + params: { + branch: { + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/branches/:branch/protection/restrictions/teams" + }, + listTopics: { + headers: { + accept: "application/vnd.github.mercy-preview+json" + }, + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/topics" + }, + listUsersWithAccessToProtectedBranch: { + deprecated: "octokit.repos.listUsersWithAccessToProtectedBranch() has been renamed to octokit.repos.getUsersWithAccessToProtectedBranch() (2019-09-13)", + method: "GET", + params: { + branch: { + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/branches/:branch/protection/restrictions/users" + }, + merge: { + method: "POST", + params: { + base: { + required: true, + type: "string" + }, + commit_message: { + type: "string" + }, + head: { + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/merges" + }, + pingHook: { + method: "POST", + params: { + hook_id: { + required: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/hooks/:hook_id/pings" + }, + removeBranchProtection: { + method: "DELETE", + params: { + branch: { + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/branches/:branch/protection" + }, + removeCollaborator: { + method: "DELETE", + params: { + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + }, + username: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/collaborators/:username" + }, + removeDeployKey: { + method: "DELETE", + params: { + key_id: { + required: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/keys/:key_id" + }, + removeProtectedBranchAdminEnforcement: { + method: "DELETE", + params: { + branch: { + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/branches/:branch/protection/enforce_admins" + }, + removeProtectedBranchAppRestrictions: { + method: "DELETE", + params: { + apps: { + mapTo: "data", + required: true, + type: "string[]" + }, + branch: { + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/branches/:branch/protection/restrictions/apps" + }, + removeProtectedBranchPullRequestReviewEnforcement: { + method: "DELETE", + params: { + branch: { + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/branches/:branch/protection/required_pull_request_reviews" + }, + removeProtectedBranchRequiredSignatures: { + headers: { + accept: "application/vnd.github.zzzax-preview+json" + }, + method: "DELETE", + params: { + branch: { + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/branches/:branch/protection/required_signatures" + }, + removeProtectedBranchRequiredStatusChecks: { + method: "DELETE", + params: { + branch: { + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/branches/:branch/protection/required_status_checks" + }, + removeProtectedBranchRequiredStatusChecksContexts: { + method: "DELETE", + params: { + branch: { + required: true, + type: "string" + }, + contexts: { + mapTo: "data", + required: true, + type: "string[]" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/branches/:branch/protection/required_status_checks/contexts" + }, + removeProtectedBranchRestrictions: { + method: "DELETE", + params: { + branch: { + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/branches/:branch/protection/restrictions" + }, + removeProtectedBranchTeamRestrictions: { + method: "DELETE", + params: { + branch: { + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + }, + teams: { + mapTo: "data", + required: true, + type: "string[]" + } + }, + url: "/repos/:owner/:repo/branches/:branch/protection/restrictions/teams" + }, + removeProtectedBranchUserRestrictions: { + method: "DELETE", + params: { + branch: { + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + }, + users: { + mapTo: "data", + required: true, + type: "string[]" + } + }, + url: "/repos/:owner/:repo/branches/:branch/protection/restrictions/users" + }, + replaceProtectedBranchAppRestrictions: { + method: "PUT", + params: { + apps: { + mapTo: "data", + required: true, + type: "string[]" + }, + branch: { + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/branches/:branch/protection/restrictions/apps" + }, + replaceProtectedBranchRequiredStatusChecksContexts: { + method: "PUT", + params: { + branch: { + required: true, + type: "string" + }, + contexts: { + mapTo: "data", + required: true, + type: "string[]" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/branches/:branch/protection/required_status_checks/contexts" + }, + replaceProtectedBranchTeamRestrictions: { + method: "PUT", + params: { + branch: { + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + }, + teams: { + mapTo: "data", + required: true, + type: "string[]" + } + }, + url: "/repos/:owner/:repo/branches/:branch/protection/restrictions/teams" + }, + replaceProtectedBranchUserRestrictions: { + method: "PUT", + params: { + branch: { + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + }, + users: { + mapTo: "data", + required: true, + type: "string[]" + } + }, + url: "/repos/:owner/:repo/branches/:branch/protection/restrictions/users" + }, + replaceTopics: { + headers: { + accept: "application/vnd.github.mercy-preview+json" + }, + method: "PUT", + params: { + names: { + required: true, + type: "string[]" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/topics" + }, + requestPageBuild: { + method: "POST", + params: { + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/pages/builds" + }, + retrieveCommunityProfileMetrics: { + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/community/profile" + }, + testPushHook: { + method: "POST", + params: { + hook_id: { + required: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/hooks/:hook_id/tests" + }, + transfer: { + method: "POST", + params: { + new_owner: { + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + }, + team_ids: { + type: "integer[]" + } + }, + url: "/repos/:owner/:repo/transfer" + }, + update: { + method: "PATCH", + params: { + allow_merge_commit: { + type: "boolean" + }, + allow_rebase_merge: { + type: "boolean" + }, + allow_squash_merge: { + type: "boolean" + }, + archived: { + type: "boolean" + }, + default_branch: { + type: "string" + }, + delete_branch_on_merge: { + type: "boolean" + }, + description: { + type: "string" + }, + has_issues: { + type: "boolean" + }, + has_projects: { + type: "boolean" + }, + has_wiki: { + type: "boolean" + }, + homepage: { + type: "string" + }, + is_template: { + type: "boolean" + }, + name: { + type: "string" + }, + owner: { + required: true, + type: "string" + }, + private: { + type: "boolean" + }, + repo: { + required: true, + type: "string" + }, + visibility: { + enum: ["public", "private", "visibility", "internal"], + type: "string" + } + }, + url: "/repos/:owner/:repo" + }, + updateBranchProtection: { + method: "PUT", + params: { + allow_deletions: { + type: "boolean" + }, + allow_force_pushes: { + allowNull: true, + type: "boolean" + }, + branch: { + required: true, + type: "string" + }, + enforce_admins: { + allowNull: true, + required: true, + type: "boolean" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + }, + required_linear_history: { + type: "boolean" + }, + required_pull_request_reviews: { + allowNull: true, + required: true, + type: "object" + }, + "required_pull_request_reviews.dismiss_stale_reviews": { + type: "boolean" + }, + "required_pull_request_reviews.dismissal_restrictions": { + type: "object" + }, + "required_pull_request_reviews.dismissal_restrictions.teams": { + type: "string[]" + }, + "required_pull_request_reviews.dismissal_restrictions.users": { + type: "string[]" + }, + "required_pull_request_reviews.require_code_owner_reviews": { + type: "boolean" + }, + "required_pull_request_reviews.required_approving_review_count": { + type: "integer" + }, + required_status_checks: { + allowNull: true, + required: true, + type: "object" + }, + "required_status_checks.contexts": { + required: true, + type: "string[]" + }, + "required_status_checks.strict": { + required: true, + type: "boolean" + }, + restrictions: { + allowNull: true, + required: true, + type: "object" + }, + "restrictions.apps": { + type: "string[]" + }, + "restrictions.teams": { + required: true, + type: "string[]" + }, + "restrictions.users": { + required: true, + type: "string[]" + } + }, + url: "/repos/:owner/:repo/branches/:branch/protection" + }, + updateCommitComment: { + method: "PATCH", + params: { + body: { + required: true, + type: "string" + }, + comment_id: { + required: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/comments/:comment_id" + }, + updateFile: { + deprecated: "octokit.repos.updateFile() has been renamed to octokit.repos.createOrUpdateFile() (2019-06-07)", + method: "PUT", + params: { + author: { + type: "object" + }, + "author.email": { + required: true, + type: "string" + }, + "author.name": { + required: true, + type: "string" + }, + branch: { + type: "string" + }, + committer: { + type: "object" + }, + "committer.email": { + required: true, + type: "string" + }, + "committer.name": { + required: true, + type: "string" + }, + content: { + required: true, + type: "string" + }, + message: { + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + path: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + }, + sha: { + type: "string" + } + }, + url: "/repos/:owner/:repo/contents/:path" + }, + updateHook: { + method: "PATCH", + params: { + active: { + type: "boolean" + }, + add_events: { + type: "string[]" + }, + config: { + type: "object" + }, + "config.content_type": { + type: "string" + }, + "config.insecure_ssl": { + type: "string" + }, + "config.secret": { + type: "string" + }, + "config.url": { + required: true, + type: "string" + }, + events: { + type: "string[]" + }, + hook_id: { + required: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + remove_events: { + type: "string[]" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/hooks/:hook_id" + }, + updateInformationAboutPagesSite: { + method: "PUT", + params: { + cname: { + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + }, + source: { + enum: ['"gh-pages"', '"master"', '"master /docs"'], + type: "string" + } + }, + url: "/repos/:owner/:repo/pages" + }, + updateInvitation: { + method: "PATCH", + params: { + invitation_id: { + required: true, + type: "integer" + }, + owner: { + required: true, + type: "string" + }, + permissions: { + enum: ["read", "write", "admin"], + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/invitations/:invitation_id" + }, + updateProtectedBranchPullRequestReviewEnforcement: { + method: "PATCH", + params: { + branch: { + required: true, + type: "string" + }, + dismiss_stale_reviews: { + type: "boolean" + }, + dismissal_restrictions: { + type: "object" + }, + "dismissal_restrictions.teams": { + type: "string[]" + }, + "dismissal_restrictions.users": { + type: "string[]" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + }, + require_code_owner_reviews: { + type: "boolean" + }, + required_approving_review_count: { + type: "integer" + } + }, + url: "/repos/:owner/:repo/branches/:branch/protection/required_pull_request_reviews" + }, + updateProtectedBranchRequiredStatusChecks: { + method: "PATCH", + params: { + branch: { + required: true, + type: "string" + }, + contexts: { + type: "string[]" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + }, + strict: { + type: "boolean" + } + }, + url: "/repos/:owner/:repo/branches/:branch/protection/required_status_checks" + }, + updateRelease: { + method: "PATCH", + params: { + body: { + type: "string" + }, + draft: { + type: "boolean" + }, + name: { + type: "string" + }, + owner: { + required: true, + type: "string" + }, + prerelease: { + type: "boolean" + }, + release_id: { + required: true, + type: "integer" + }, + repo: { + required: true, + type: "string" + }, + tag_name: { + type: "string" + }, + target_commitish: { + type: "string" + } + }, + url: "/repos/:owner/:repo/releases/:release_id" + }, + updateReleaseAsset: { + method: "PATCH", + params: { + asset_id: { + required: true, + type: "integer" + }, + label: { + type: "string" + }, + name: { + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + } + }, + url: "/repos/:owner/:repo/releases/assets/:asset_id" + }, + uploadReleaseAsset: { + method: "POST", + params: { + data: { + mapTo: "data", + required: true, + type: "string | object" + }, + file: { + alias: "data", + deprecated: true, + type: "string | object" + }, + headers: { + required: true, + type: "object" + }, + "headers.content-length": { + required: true, + type: "integer" + }, + "headers.content-type": { + required: true, + type: "string" + }, + label: { + type: "string" + }, + name: { + required: true, + type: "string" + }, + url: { + required: true, + type: "string" + } + }, + url: ":url" + } + }, + search: { + code: { + method: "GET", + params: { + order: { + enum: ["desc", "asc"], + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + q: { + required: true, + type: "string" + }, + sort: { + enum: ["indexed"], + type: "string" + } + }, + url: "/search/code" + }, + commits: { + headers: { + accept: "application/vnd.github.cloak-preview+json" + }, + method: "GET", + params: { + order: { + enum: ["desc", "asc"], + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + q: { + required: true, + type: "string" + }, + sort: { + enum: ["author-date", "committer-date"], + type: "string" + } + }, + url: "/search/commits" + }, + issues: { + deprecated: "octokit.search.issues() has been renamed to octokit.search.issuesAndPullRequests() (2018-12-27)", + method: "GET", + params: { + order: { + enum: ["desc", "asc"], + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + q: { + required: true, + type: "string" + }, + sort: { + enum: ["comments", "reactions", "reactions-+1", "reactions--1", "reactions-smile", "reactions-thinking_face", "reactions-heart", "reactions-tada", "interactions", "created", "updated"], + type: "string" + } + }, + url: "/search/issues" + }, + issuesAndPullRequests: { + method: "GET", + params: { + order: { + enum: ["desc", "asc"], + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + q: { + required: true, + type: "string" + }, + sort: { + enum: ["comments", "reactions", "reactions-+1", "reactions--1", "reactions-smile", "reactions-thinking_face", "reactions-heart", "reactions-tada", "interactions", "created", "updated"], + type: "string" + } + }, + url: "/search/issues" + }, + labels: { + method: "GET", + params: { + order: { + enum: ["desc", "asc"], + type: "string" + }, + q: { + required: true, + type: "string" + }, + repository_id: { + required: true, + type: "integer" + }, + sort: { + enum: ["created", "updated"], + type: "string" + } + }, + url: "/search/labels" + }, + repos: { + method: "GET", + params: { + order: { + enum: ["desc", "asc"], + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + q: { + required: true, + type: "string" + }, + sort: { + enum: ["stars", "forks", "help-wanted-issues", "updated"], + type: "string" + } + }, + url: "/search/repositories" + }, + topics: { + method: "GET", + params: { + q: { + required: true, + type: "string" + } + }, + url: "/search/topics" + }, + users: { + method: "GET", + params: { + order: { + enum: ["desc", "asc"], + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + q: { + required: true, + type: "string" + }, + sort: { + enum: ["followers", "repositories", "joined"], + type: "string" + } + }, + url: "/search/users" + } + }, + teams: { + addMember: { + deprecated: "octokit.teams.addMember() has been renamed to octokit.teams.addMemberLegacy() (2020-01-16)", + method: "PUT", + params: { + team_id: { + required: true, + type: "integer" + }, + username: { + required: true, + type: "string" + } + }, + url: "/teams/:team_id/members/:username" + }, + addMemberLegacy: { + deprecated: "octokit.teams.addMemberLegacy() is deprecated, see https://developer.github.com/v3/teams/members/#add-team-member-legacy", + method: "PUT", + params: { + team_id: { + required: true, + type: "integer" + }, + username: { + required: true, + type: "string" + } + }, + url: "/teams/:team_id/members/:username" + }, + addOrUpdateMembership: { + deprecated: "octokit.teams.addOrUpdateMembership() has been renamed to octokit.teams.addOrUpdateMembershipLegacy() (2020-01-16)", + method: "PUT", + params: { + role: { + enum: ["member", "maintainer"], + type: "string" + }, + team_id: { + required: true, + type: "integer" + }, + username: { + required: true, + type: "string" + } + }, + url: "/teams/:team_id/memberships/:username" + }, + addOrUpdateMembershipInOrg: { + method: "PUT", + params: { + org: { + required: true, + type: "string" + }, + role: { + enum: ["member", "maintainer"], + type: "string" + }, + team_slug: { + required: true, + type: "string" + }, + username: { + required: true, + type: "string" + } + }, + url: "/orgs/:org/teams/:team_slug/memberships/:username" + }, + addOrUpdateMembershipLegacy: { + deprecated: "octokit.teams.addOrUpdateMembershipLegacy() is deprecated, see https://developer.github.com/v3/teams/members/#add-or-update-team-membership-legacy", + method: "PUT", + params: { + role: { + enum: ["member", "maintainer"], + type: "string" + }, + team_id: { + required: true, + type: "integer" + }, + username: { + required: true, + type: "string" + } + }, + url: "/teams/:team_id/memberships/:username" + }, + addOrUpdateProject: { + deprecated: "octokit.teams.addOrUpdateProject() has been renamed to octokit.teams.addOrUpdateProjectLegacy() (2020-01-16)", + headers: { + accept: "application/vnd.github.inertia-preview+json" + }, + method: "PUT", + params: { + permission: { + enum: ["read", "write", "admin"], + type: "string" + }, + project_id: { + required: true, + type: "integer" + }, + team_id: { + required: true, + type: "integer" + } + }, + url: "/teams/:team_id/projects/:project_id" + }, + addOrUpdateProjectInOrg: { + headers: { + accept: "application/vnd.github.inertia-preview+json" + }, + method: "PUT", + params: { + org: { + required: true, + type: "string" + }, + permission: { + enum: ["read", "write", "admin"], + type: "string" + }, + project_id: { + required: true, + type: "integer" + }, + team_slug: { + required: true, + type: "string" + } + }, + url: "/orgs/:org/teams/:team_slug/projects/:project_id" + }, + addOrUpdateProjectLegacy: { + deprecated: "octokit.teams.addOrUpdateProjectLegacy() is deprecated, see https://developer.github.com/v3/teams/#add-or-update-team-project-legacy", + headers: { + accept: "application/vnd.github.inertia-preview+json" + }, + method: "PUT", + params: { + permission: { + enum: ["read", "write", "admin"], + type: "string" + }, + project_id: { + required: true, + type: "integer" + }, + team_id: { + required: true, + type: "integer" + } + }, + url: "/teams/:team_id/projects/:project_id" + }, + addOrUpdateRepo: { + deprecated: "octokit.teams.addOrUpdateRepo() has been renamed to octokit.teams.addOrUpdateRepoLegacy() (2020-01-16)", + method: "PUT", + params: { + owner: { + required: true, + type: "string" + }, + permission: { + enum: ["pull", "push", "admin"], + type: "string" + }, + repo: { + required: true, + type: "string" + }, + team_id: { + required: true, + type: "integer" + } + }, + url: "/teams/:team_id/repos/:owner/:repo" + }, + addOrUpdateRepoInOrg: { + method: "PUT", + params: { + org: { + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + permission: { + enum: ["pull", "push", "admin"], + type: "string" + }, + repo: { + required: true, + type: "string" + }, + team_slug: { + required: true, + type: "string" + } + }, + url: "/orgs/:org/teams/:team_slug/repos/:owner/:repo" + }, + addOrUpdateRepoLegacy: { + deprecated: "octokit.teams.addOrUpdateRepoLegacy() is deprecated, see https://developer.github.com/v3/teams/#add-or-update-team-repository-legacy", + method: "PUT", + params: { + owner: { + required: true, + type: "string" + }, + permission: { + enum: ["pull", "push", "admin"], + type: "string" + }, + repo: { + required: true, + type: "string" + }, + team_id: { + required: true, + type: "integer" + } + }, + url: "/teams/:team_id/repos/:owner/:repo" + }, + checkManagesRepo: { + deprecated: "octokit.teams.checkManagesRepo() has been renamed to octokit.teams.checkManagesRepoLegacy() (2020-01-16)", + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + }, + team_id: { + required: true, + type: "integer" + } + }, + url: "/teams/:team_id/repos/:owner/:repo" + }, + checkManagesRepoInOrg: { + method: "GET", + params: { + org: { + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + }, + team_slug: { + required: true, + type: "string" + } + }, + url: "/orgs/:org/teams/:team_slug/repos/:owner/:repo" + }, + checkManagesRepoLegacy: { + deprecated: "octokit.teams.checkManagesRepoLegacy() is deprecated, see https://developer.github.com/v3/teams/#check-if-a-team-manages-a-repository-legacy", + method: "GET", + params: { + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + }, + team_id: { + required: true, + type: "integer" + } + }, + url: "/teams/:team_id/repos/:owner/:repo" + }, + create: { + method: "POST", + params: { + description: { + type: "string" + }, + maintainers: { + type: "string[]" + }, + name: { + required: true, + type: "string" + }, + org: { + required: true, + type: "string" + }, + parent_team_id: { + type: "integer" + }, + permission: { + enum: ["pull", "push", "admin"], + type: "string" + }, + privacy: { + enum: ["secret", "closed"], + type: "string" + }, + repo_names: { + type: "string[]" + } + }, + url: "/orgs/:org/teams" + }, + createDiscussion: { + deprecated: "octokit.teams.createDiscussion() has been renamed to octokit.teams.createDiscussionLegacy() (2020-01-16)", + method: "POST", + params: { + body: { + required: true, + type: "string" + }, + private: { + type: "boolean" + }, + team_id: { + required: true, + type: "integer" + }, + title: { + required: true, + type: "string" + } + }, + url: "/teams/:team_id/discussions" + }, + createDiscussionComment: { + deprecated: "octokit.teams.createDiscussionComment() has been renamed to octokit.teams.createDiscussionCommentLegacy() (2020-01-16)", + method: "POST", + params: { + body: { + required: true, + type: "string" + }, + discussion_number: { + required: true, + type: "integer" + }, + team_id: { + required: true, + type: "integer" + } + }, + url: "/teams/:team_id/discussions/:discussion_number/comments" + }, + createDiscussionCommentInOrg: { + method: "POST", + params: { + body: { + required: true, + type: "string" + }, + discussion_number: { + required: true, + type: "integer" + }, + org: { + required: true, + type: "string" + }, + team_slug: { + required: true, + type: "string" + } + }, + url: "/orgs/:org/teams/:team_slug/discussions/:discussion_number/comments" + }, + createDiscussionCommentLegacy: { + deprecated: "octokit.teams.createDiscussionCommentLegacy() is deprecated, see https://developer.github.com/v3/teams/discussion_comments/#create-a-comment-legacy", + method: "POST", + params: { + body: { + required: true, + type: "string" + }, + discussion_number: { + required: true, + type: "integer" + }, + team_id: { + required: true, + type: "integer" + } + }, + url: "/teams/:team_id/discussions/:discussion_number/comments" + }, + createDiscussionInOrg: { + method: "POST", + params: { + body: { + required: true, + type: "string" + }, + org: { + required: true, + type: "string" + }, + private: { + type: "boolean" + }, + team_slug: { + required: true, + type: "string" + }, + title: { + required: true, + type: "string" + } + }, + url: "/orgs/:org/teams/:team_slug/discussions" + }, + createDiscussionLegacy: { + deprecated: "octokit.teams.createDiscussionLegacy() is deprecated, see https://developer.github.com/v3/teams/discussions/#create-a-discussion-legacy", + method: "POST", + params: { + body: { + required: true, + type: "string" + }, + private: { + type: "boolean" + }, + team_id: { + required: true, + type: "integer" + }, + title: { + required: true, + type: "string" + } + }, + url: "/teams/:team_id/discussions" + }, + delete: { + deprecated: "octokit.teams.delete() has been renamed to octokit.teams.deleteLegacy() (2020-01-16)", + method: "DELETE", + params: { + team_id: { + required: true, + type: "integer" + } + }, + url: "/teams/:team_id" + }, + deleteDiscussion: { + deprecated: "octokit.teams.deleteDiscussion() has been renamed to octokit.teams.deleteDiscussionLegacy() (2020-01-16)", + method: "DELETE", + params: { + discussion_number: { + required: true, + type: "integer" + }, + team_id: { + required: true, + type: "integer" + } + }, + url: "/teams/:team_id/discussions/:discussion_number" + }, + deleteDiscussionComment: { + deprecated: "octokit.teams.deleteDiscussionComment() has been renamed to octokit.teams.deleteDiscussionCommentLegacy() (2020-01-16)", + method: "DELETE", + params: { + comment_number: { + required: true, + type: "integer" + }, + discussion_number: { + required: true, + type: "integer" + }, + team_id: { + required: true, + type: "integer" + } + }, + url: "/teams/:team_id/discussions/:discussion_number/comments/:comment_number" + }, + deleteDiscussionCommentInOrg: { + method: "DELETE", + params: { + comment_number: { + required: true, + type: "integer" + }, + discussion_number: { + required: true, + type: "integer" + }, + org: { + required: true, + type: "string" + }, + team_slug: { + required: true, + type: "string" + } + }, + url: "/orgs/:org/teams/:team_slug/discussions/:discussion_number/comments/:comment_number" + }, + deleteDiscussionCommentLegacy: { + deprecated: "octokit.teams.deleteDiscussionCommentLegacy() is deprecated, see https://developer.github.com/v3/teams/discussion_comments/#delete-a-comment-legacy", + method: "DELETE", + params: { + comment_number: { + required: true, + type: "integer" + }, + discussion_number: { + required: true, + type: "integer" + }, + team_id: { + required: true, + type: "integer" + } + }, + url: "/teams/:team_id/discussions/:discussion_number/comments/:comment_number" + }, + deleteDiscussionInOrg: { + method: "DELETE", + params: { + discussion_number: { + required: true, + type: "integer" + }, + org: { + required: true, + type: "string" + }, + team_slug: { + required: true, + type: "string" + } + }, + url: "/orgs/:org/teams/:team_slug/discussions/:discussion_number" + }, + deleteDiscussionLegacy: { + deprecated: "octokit.teams.deleteDiscussionLegacy() is deprecated, see https://developer.github.com/v3/teams/discussions/#delete-a-discussion-legacy", + method: "DELETE", + params: { + discussion_number: { + required: true, + type: "integer" + }, + team_id: { + required: true, + type: "integer" + } + }, + url: "/teams/:team_id/discussions/:discussion_number" + }, + deleteInOrg: { + method: "DELETE", + params: { + org: { + required: true, + type: "string" + }, + team_slug: { + required: true, + type: "string" + } + }, + url: "/orgs/:org/teams/:team_slug" + }, + deleteLegacy: { + deprecated: "octokit.teams.deleteLegacy() is deprecated, see https://developer.github.com/v3/teams/#delete-team-legacy", + method: "DELETE", + params: { + team_id: { + required: true, + type: "integer" + } + }, + url: "/teams/:team_id" + }, + get: { + deprecated: "octokit.teams.get() has been renamed to octokit.teams.getLegacy() (2020-01-16)", + method: "GET", + params: { + team_id: { + required: true, + type: "integer" + } + }, + url: "/teams/:team_id" + }, + getByName: { + method: "GET", + params: { + org: { + required: true, + type: "string" + }, + team_slug: { + required: true, + type: "string" + } + }, + url: "/orgs/:org/teams/:team_slug" + }, + getDiscussion: { + deprecated: "octokit.teams.getDiscussion() has been renamed to octokit.teams.getDiscussionLegacy() (2020-01-16)", + method: "GET", + params: { + discussion_number: { + required: true, + type: "integer" + }, + team_id: { + required: true, + type: "integer" + } + }, + url: "/teams/:team_id/discussions/:discussion_number" + }, + getDiscussionComment: { + deprecated: "octokit.teams.getDiscussionComment() has been renamed to octokit.teams.getDiscussionCommentLegacy() (2020-01-16)", + method: "GET", + params: { + comment_number: { + required: true, + type: "integer" + }, + discussion_number: { + required: true, + type: "integer" + }, + team_id: { + required: true, + type: "integer" + } + }, + url: "/teams/:team_id/discussions/:discussion_number/comments/:comment_number" + }, + getDiscussionCommentInOrg: { + method: "GET", + params: { + comment_number: { + required: true, + type: "integer" + }, + discussion_number: { + required: true, + type: "integer" + }, + org: { + required: true, + type: "string" + }, + team_slug: { + required: true, + type: "string" + } + }, + url: "/orgs/:org/teams/:team_slug/discussions/:discussion_number/comments/:comment_number" + }, + getDiscussionCommentLegacy: { + deprecated: "octokit.teams.getDiscussionCommentLegacy() is deprecated, see https://developer.github.com/v3/teams/discussion_comments/#get-a-single-comment-legacy", + method: "GET", + params: { + comment_number: { + required: true, + type: "integer" + }, + discussion_number: { + required: true, + type: "integer" + }, + team_id: { + required: true, + type: "integer" + } + }, + url: "/teams/:team_id/discussions/:discussion_number/comments/:comment_number" + }, + getDiscussionInOrg: { + method: "GET", + params: { + discussion_number: { + required: true, + type: "integer" + }, + org: { + required: true, + type: "string" + }, + team_slug: { + required: true, + type: "string" + } + }, + url: "/orgs/:org/teams/:team_slug/discussions/:discussion_number" + }, + getDiscussionLegacy: { + deprecated: "octokit.teams.getDiscussionLegacy() is deprecated, see https://developer.github.com/v3/teams/discussions/#get-a-single-discussion-legacy", + method: "GET", + params: { + discussion_number: { + required: true, + type: "integer" + }, + team_id: { + required: true, + type: "integer" + } + }, + url: "/teams/:team_id/discussions/:discussion_number" + }, + getLegacy: { + deprecated: "octokit.teams.getLegacy() is deprecated, see https://developer.github.com/v3/teams/#get-team-legacy", + method: "GET", + params: { + team_id: { + required: true, + type: "integer" + } + }, + url: "/teams/:team_id" + }, + getMember: { + deprecated: "octokit.teams.getMember() has been renamed to octokit.teams.getMemberLegacy() (2020-01-16)", + method: "GET", + params: { + team_id: { + required: true, + type: "integer" + }, + username: { + required: true, + type: "string" + } + }, + url: "/teams/:team_id/members/:username" + }, + getMemberLegacy: { + deprecated: "octokit.teams.getMemberLegacy() is deprecated, see https://developer.github.com/v3/teams/members/#get-team-member-legacy", + method: "GET", + params: { + team_id: { + required: true, + type: "integer" + }, + username: { + required: true, + type: "string" + } + }, + url: "/teams/:team_id/members/:username" + }, + getMembership: { + deprecated: "octokit.teams.getMembership() has been renamed to octokit.teams.getMembershipLegacy() (2020-01-16)", + method: "GET", + params: { + team_id: { + required: true, + type: "integer" + }, + username: { + required: true, + type: "string" + } + }, + url: "/teams/:team_id/memberships/:username" + }, + getMembershipInOrg: { + method: "GET", + params: { + org: { + required: true, + type: "string" + }, + team_slug: { + required: true, + type: "string" + }, + username: { + required: true, + type: "string" + } + }, + url: "/orgs/:org/teams/:team_slug/memberships/:username" + }, + getMembershipLegacy: { + deprecated: "octokit.teams.getMembershipLegacy() is deprecated, see https://developer.github.com/v3/teams/members/#get-team-membership-legacy", + method: "GET", + params: { + team_id: { + required: true, + type: "integer" + }, + username: { + required: true, + type: "string" + } + }, + url: "/teams/:team_id/memberships/:username" + }, + list: { + method: "GET", + params: { + org: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + } + }, + url: "/orgs/:org/teams" + }, + listChild: { + deprecated: "octokit.teams.listChild() has been renamed to octokit.teams.listChildLegacy() (2020-01-16)", + method: "GET", + params: { + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + team_id: { + required: true, + type: "integer" + } + }, + url: "/teams/:team_id/teams" + }, + listChildInOrg: { + method: "GET", + params: { + org: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + team_slug: { + required: true, + type: "string" + } + }, + url: "/orgs/:org/teams/:team_slug/teams" + }, + listChildLegacy: { + deprecated: "octokit.teams.listChildLegacy() is deprecated, see https://developer.github.com/v3/teams/#list-child-teams-legacy", + method: "GET", + params: { + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + team_id: { + required: true, + type: "integer" + } + }, + url: "/teams/:team_id/teams" + }, + listDiscussionComments: { + deprecated: "octokit.teams.listDiscussionComments() has been renamed to octokit.teams.listDiscussionCommentsLegacy() (2020-01-16)", + method: "GET", + params: { + direction: { + enum: ["asc", "desc"], + type: "string" + }, + discussion_number: { + required: true, + type: "integer" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + team_id: { + required: true, + type: "integer" + } + }, + url: "/teams/:team_id/discussions/:discussion_number/comments" + }, + listDiscussionCommentsInOrg: { + method: "GET", + params: { + direction: { + enum: ["asc", "desc"], + type: "string" + }, + discussion_number: { + required: true, + type: "integer" + }, + org: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + team_slug: { + required: true, + type: "string" + } + }, + url: "/orgs/:org/teams/:team_slug/discussions/:discussion_number/comments" + }, + listDiscussionCommentsLegacy: { + deprecated: "octokit.teams.listDiscussionCommentsLegacy() is deprecated, see https://developer.github.com/v3/teams/discussion_comments/#list-comments-legacy", + method: "GET", + params: { + direction: { + enum: ["asc", "desc"], + type: "string" + }, + discussion_number: { + required: true, + type: "integer" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + team_id: { + required: true, + type: "integer" + } + }, + url: "/teams/:team_id/discussions/:discussion_number/comments" + }, + listDiscussions: { + deprecated: "octokit.teams.listDiscussions() has been renamed to octokit.teams.listDiscussionsLegacy() (2020-01-16)", + method: "GET", + params: { + direction: { + enum: ["asc", "desc"], + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + team_id: { + required: true, + type: "integer" + } + }, + url: "/teams/:team_id/discussions" + }, + listDiscussionsInOrg: { + method: "GET", + params: { + direction: { + enum: ["asc", "desc"], + type: "string" + }, + org: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + team_slug: { + required: true, + type: "string" + } + }, + url: "/orgs/:org/teams/:team_slug/discussions" + }, + listDiscussionsLegacy: { + deprecated: "octokit.teams.listDiscussionsLegacy() is deprecated, see https://developer.github.com/v3/teams/discussions/#list-discussions-legacy", + method: "GET", + params: { + direction: { + enum: ["asc", "desc"], + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + team_id: { + required: true, + type: "integer" + } + }, + url: "/teams/:team_id/discussions" + }, + listForAuthenticatedUser: { + method: "GET", + params: { + page: { + type: "integer" + }, + per_page: { + type: "integer" + } + }, + url: "/user/teams" + }, + listMembers: { + deprecated: "octokit.teams.listMembers() has been renamed to octokit.teams.listMembersLegacy() (2020-01-16)", + method: "GET", + params: { + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + role: { + enum: ["member", "maintainer", "all"], + type: "string" + }, + team_id: { + required: true, + type: "integer" + } + }, + url: "/teams/:team_id/members" + }, + listMembersInOrg: { + method: "GET", + params: { + org: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + role: { + enum: ["member", "maintainer", "all"], + type: "string" + }, + team_slug: { + required: true, + type: "string" + } + }, + url: "/orgs/:org/teams/:team_slug/members" + }, + listMembersLegacy: { + deprecated: "octokit.teams.listMembersLegacy() is deprecated, see https://developer.github.com/v3/teams/members/#list-team-members-legacy", + method: "GET", + params: { + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + role: { + enum: ["member", "maintainer", "all"], + type: "string" + }, + team_id: { + required: true, + type: "integer" + } + }, + url: "/teams/:team_id/members" + }, + listPendingInvitations: { + deprecated: "octokit.teams.listPendingInvitations() has been renamed to octokit.teams.listPendingInvitationsLegacy() (2020-01-16)", + method: "GET", + params: { + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + team_id: { + required: true, + type: "integer" + } + }, + url: "/teams/:team_id/invitations" + }, + listPendingInvitationsInOrg: { + method: "GET", + params: { + org: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + team_slug: { + required: true, + type: "string" + } + }, + url: "/orgs/:org/teams/:team_slug/invitations" + }, + listPendingInvitationsLegacy: { + deprecated: "octokit.teams.listPendingInvitationsLegacy() is deprecated, see https://developer.github.com/v3/teams/members/#list-pending-team-invitations-legacy", + method: "GET", + params: { + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + team_id: { + required: true, + type: "integer" + } + }, + url: "/teams/:team_id/invitations" + }, + listProjects: { + deprecated: "octokit.teams.listProjects() has been renamed to octokit.teams.listProjectsLegacy() (2020-01-16)", + headers: { + accept: "application/vnd.github.inertia-preview+json" + }, + method: "GET", + params: { + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + team_id: { + required: true, + type: "integer" + } + }, + url: "/teams/:team_id/projects" + }, + listProjectsInOrg: { + headers: { + accept: "application/vnd.github.inertia-preview+json" + }, + method: "GET", + params: { + org: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + team_slug: { + required: true, + type: "string" + } + }, + url: "/orgs/:org/teams/:team_slug/projects" + }, + listProjectsLegacy: { + deprecated: "octokit.teams.listProjectsLegacy() is deprecated, see https://developer.github.com/v3/teams/#list-team-projects-legacy", + headers: { + accept: "application/vnd.github.inertia-preview+json" + }, + method: "GET", + params: { + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + team_id: { + required: true, + type: "integer" + } + }, + url: "/teams/:team_id/projects" + }, + listRepos: { + deprecated: "octokit.teams.listRepos() has been renamed to octokit.teams.listReposLegacy() (2020-01-16)", + method: "GET", + params: { + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + team_id: { + required: true, + type: "integer" + } + }, + url: "/teams/:team_id/repos" + }, + listReposInOrg: { + method: "GET", + params: { + org: { + required: true, + type: "string" + }, + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + team_slug: { + required: true, + type: "string" + } + }, + url: "/orgs/:org/teams/:team_slug/repos" + }, + listReposLegacy: { + deprecated: "octokit.teams.listReposLegacy() is deprecated, see https://developer.github.com/v3/teams/#list-team-repos-legacy", + method: "GET", + params: { + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + team_id: { + required: true, + type: "integer" + } + }, + url: "/teams/:team_id/repos" + }, + removeMember: { + deprecated: "octokit.teams.removeMember() has been renamed to octokit.teams.removeMemberLegacy() (2020-01-16)", + method: "DELETE", + params: { + team_id: { + required: true, + type: "integer" + }, + username: { + required: true, + type: "string" + } + }, + url: "/teams/:team_id/members/:username" + }, + removeMemberLegacy: { + deprecated: "octokit.teams.removeMemberLegacy() is deprecated, see https://developer.github.com/v3/teams/members/#remove-team-member-legacy", + method: "DELETE", + params: { + team_id: { + required: true, + type: "integer" + }, + username: { + required: true, + type: "string" + } + }, + url: "/teams/:team_id/members/:username" + }, + removeMembership: { + deprecated: "octokit.teams.removeMembership() has been renamed to octokit.teams.removeMembershipLegacy() (2020-01-16)", + method: "DELETE", + params: { + team_id: { + required: true, + type: "integer" + }, + username: { + required: true, + type: "string" + } + }, + url: "/teams/:team_id/memberships/:username" + }, + removeMembershipInOrg: { + method: "DELETE", + params: { + org: { + required: true, + type: "string" + }, + team_slug: { + required: true, + type: "string" + }, + username: { + required: true, + type: "string" + } + }, + url: "/orgs/:org/teams/:team_slug/memberships/:username" + }, + removeMembershipLegacy: { + deprecated: "octokit.teams.removeMembershipLegacy() is deprecated, see https://developer.github.com/v3/teams/members/#remove-team-membership-legacy", + method: "DELETE", + params: { + team_id: { + required: true, + type: "integer" + }, + username: { + required: true, + type: "string" + } + }, + url: "/teams/:team_id/memberships/:username" + }, + removeProject: { + deprecated: "octokit.teams.removeProject() has been renamed to octokit.teams.removeProjectLegacy() (2020-01-16)", + method: "DELETE", + params: { + project_id: { + required: true, + type: "integer" + }, + team_id: { + required: true, + type: "integer" + } + }, + url: "/teams/:team_id/projects/:project_id" + }, + removeProjectInOrg: { + method: "DELETE", + params: { + org: { + required: true, + type: "string" + }, + project_id: { + required: true, + type: "integer" + }, + team_slug: { + required: true, + type: "string" + } + }, + url: "/orgs/:org/teams/:team_slug/projects/:project_id" + }, + removeProjectLegacy: { + deprecated: "octokit.teams.removeProjectLegacy() is deprecated, see https://developer.github.com/v3/teams/#remove-team-project-legacy", + method: "DELETE", + params: { + project_id: { + required: true, + type: "integer" + }, + team_id: { + required: true, + type: "integer" + } + }, + url: "/teams/:team_id/projects/:project_id" + }, + removeRepo: { + deprecated: "octokit.teams.removeRepo() has been renamed to octokit.teams.removeRepoLegacy() (2020-01-16)", + method: "DELETE", + params: { + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + }, + team_id: { + required: true, + type: "integer" + } + }, + url: "/teams/:team_id/repos/:owner/:repo" + }, + removeRepoInOrg: { + method: "DELETE", + params: { + org: { + required: true, + type: "string" + }, + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + }, + team_slug: { + required: true, + type: "string" + } + }, + url: "/orgs/:org/teams/:team_slug/repos/:owner/:repo" + }, + removeRepoLegacy: { + deprecated: "octokit.teams.removeRepoLegacy() is deprecated, see https://developer.github.com/v3/teams/#remove-team-repository-legacy", + method: "DELETE", + params: { + owner: { + required: true, + type: "string" + }, + repo: { + required: true, + type: "string" + }, + team_id: { + required: true, + type: "integer" + } + }, + url: "/teams/:team_id/repos/:owner/:repo" + }, + reviewProject: { + deprecated: "octokit.teams.reviewProject() has been renamed to octokit.teams.reviewProjectLegacy() (2020-01-16)", + headers: { + accept: "application/vnd.github.inertia-preview+json" + }, + method: "GET", + params: { + project_id: { + required: true, + type: "integer" + }, + team_id: { + required: true, + type: "integer" + } + }, + url: "/teams/:team_id/projects/:project_id" + }, + reviewProjectInOrg: { + headers: { + accept: "application/vnd.github.inertia-preview+json" + }, + method: "GET", + params: { + org: { + required: true, + type: "string" + }, + project_id: { + required: true, + type: "integer" + }, + team_slug: { + required: true, + type: "string" + } + }, + url: "/orgs/:org/teams/:team_slug/projects/:project_id" + }, + reviewProjectLegacy: { + deprecated: "octokit.teams.reviewProjectLegacy() is deprecated, see https://developer.github.com/v3/teams/#review-a-team-project-legacy", + headers: { + accept: "application/vnd.github.inertia-preview+json" + }, + method: "GET", + params: { + project_id: { + required: true, + type: "integer" + }, + team_id: { + required: true, + type: "integer" + } + }, + url: "/teams/:team_id/projects/:project_id" + }, + update: { + deprecated: "octokit.teams.update() has been renamed to octokit.teams.updateLegacy() (2020-01-16)", + method: "PATCH", + params: { + description: { + type: "string" + }, + name: { + required: true, + type: "string" + }, + parent_team_id: { + type: "integer" + }, + permission: { + enum: ["pull", "push", "admin"], + type: "string" + }, + privacy: { + enum: ["secret", "closed"], + type: "string" + }, + team_id: { + required: true, + type: "integer" + } + }, + url: "/teams/:team_id" + }, + updateDiscussion: { + deprecated: "octokit.teams.updateDiscussion() has been renamed to octokit.teams.updateDiscussionLegacy() (2020-01-16)", + method: "PATCH", + params: { + body: { + type: "string" + }, + discussion_number: { + required: true, + type: "integer" + }, + team_id: { + required: true, + type: "integer" + }, + title: { + type: "string" + } + }, + url: "/teams/:team_id/discussions/:discussion_number" + }, + updateDiscussionComment: { + deprecated: "octokit.teams.updateDiscussionComment() has been renamed to octokit.teams.updateDiscussionCommentLegacy() (2020-01-16)", + method: "PATCH", + params: { + body: { + required: true, + type: "string" + }, + comment_number: { + required: true, + type: "integer" + }, + discussion_number: { + required: true, + type: "integer" + }, + team_id: { + required: true, + type: "integer" + } + }, + url: "/teams/:team_id/discussions/:discussion_number/comments/:comment_number" + }, + updateDiscussionCommentInOrg: { + method: "PATCH", + params: { + body: { + required: true, + type: "string" + }, + comment_number: { + required: true, + type: "integer" + }, + discussion_number: { + required: true, + type: "integer" + }, + org: { + required: true, + type: "string" + }, + team_slug: { + required: true, + type: "string" + } + }, + url: "/orgs/:org/teams/:team_slug/discussions/:discussion_number/comments/:comment_number" + }, + updateDiscussionCommentLegacy: { + deprecated: "octokit.teams.updateDiscussionCommentLegacy() is deprecated, see https://developer.github.com/v3/teams/discussion_comments/#edit-a-comment-legacy", + method: "PATCH", + params: { + body: { + required: true, + type: "string" + }, + comment_number: { + required: true, + type: "integer" + }, + discussion_number: { + required: true, + type: "integer" + }, + team_id: { + required: true, + type: "integer" + } + }, + url: "/teams/:team_id/discussions/:discussion_number/comments/:comment_number" + }, + updateDiscussionInOrg: { + method: "PATCH", + params: { + body: { + type: "string" + }, + discussion_number: { + required: true, + type: "integer" + }, + org: { + required: true, + type: "string" + }, + team_slug: { + required: true, + type: "string" + }, + title: { + type: "string" + } + }, + url: "/orgs/:org/teams/:team_slug/discussions/:discussion_number" + }, + updateDiscussionLegacy: { + deprecated: "octokit.teams.updateDiscussionLegacy() is deprecated, see https://developer.github.com/v3/teams/discussions/#edit-a-discussion-legacy", + method: "PATCH", + params: { + body: { + type: "string" + }, + discussion_number: { + required: true, + type: "integer" + }, + team_id: { + required: true, + type: "integer" + }, + title: { + type: "string" + } + }, + url: "/teams/:team_id/discussions/:discussion_number" + }, + updateInOrg: { + method: "PATCH", + params: { + description: { + type: "string" + }, + name: { + required: true, + type: "string" + }, + org: { + required: true, + type: "string" + }, + parent_team_id: { + type: "integer" + }, + permission: { + enum: ["pull", "push", "admin"], + type: "string" + }, + privacy: { + enum: ["secret", "closed"], + type: "string" + }, + team_slug: { + required: true, + type: "string" + } + }, + url: "/orgs/:org/teams/:team_slug" + }, + updateLegacy: { + deprecated: "octokit.teams.updateLegacy() is deprecated, see https://developer.github.com/v3/teams/#edit-team-legacy", + method: "PATCH", + params: { + description: { + type: "string" + }, + name: { + required: true, + type: "string" + }, + parent_team_id: { + type: "integer" + }, + permission: { + enum: ["pull", "push", "admin"], + type: "string" + }, + privacy: { + enum: ["secret", "closed"], + type: "string" + }, + team_id: { + required: true, + type: "integer" + } + }, + url: "/teams/:team_id" + } + }, + users: { + addEmails: { + method: "POST", + params: { + emails: { + required: true, + type: "string[]" + } + }, + url: "/user/emails" + }, + block: { + method: "PUT", + params: { + username: { + required: true, + type: "string" + } + }, + url: "/user/blocks/:username" + }, + checkBlocked: { + method: "GET", + params: { + username: { + required: true, + type: "string" + } + }, + url: "/user/blocks/:username" + }, + checkFollowing: { + method: "GET", + params: { + username: { + required: true, + type: "string" + } + }, + url: "/user/following/:username" + }, + checkFollowingForUser: { + method: "GET", + params: { + target_user: { + required: true, + type: "string" + }, + username: { + required: true, + type: "string" + } + }, + url: "/users/:username/following/:target_user" + }, + createGpgKey: { + method: "POST", + params: { + armored_public_key: { + type: "string" + } + }, + url: "/user/gpg_keys" + }, + createPublicKey: { + method: "POST", + params: { + key: { + type: "string" + }, + title: { + type: "string" + } + }, + url: "/user/keys" + }, + deleteEmails: { + method: "DELETE", + params: { + emails: { + required: true, + type: "string[]" + } + }, + url: "/user/emails" + }, + deleteGpgKey: { + method: "DELETE", + params: { + gpg_key_id: { + required: true, + type: "integer" + } + }, + url: "/user/gpg_keys/:gpg_key_id" + }, + deletePublicKey: { + method: "DELETE", + params: { + key_id: { + required: true, + type: "integer" + } + }, + url: "/user/keys/:key_id" + }, + follow: { + method: "PUT", + params: { + username: { + required: true, + type: "string" + } + }, + url: "/user/following/:username" + }, + getAuthenticated: { + method: "GET", + params: {}, + url: "/user" + }, + getByUsername: { + method: "GET", + params: { + username: { + required: true, + type: "string" + } + }, + url: "/users/:username" + }, + getContextForUser: { + method: "GET", + params: { + subject_id: { + type: "string" + }, + subject_type: { + enum: ["organization", "repository", "issue", "pull_request"], + type: "string" + }, + username: { + required: true, + type: "string" + } + }, + url: "/users/:username/hovercard" + }, + getGpgKey: { + method: "GET", + params: { + gpg_key_id: { + required: true, + type: "integer" + } + }, + url: "/user/gpg_keys/:gpg_key_id" + }, + getPublicKey: { + method: "GET", + params: { + key_id: { + required: true, + type: "integer" + } + }, + url: "/user/keys/:key_id" + }, + list: { + method: "GET", + params: { + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + since: { + type: "string" + } + }, + url: "/users" + }, + listBlocked: { + method: "GET", + params: {}, + url: "/user/blocks" + }, + listEmails: { + method: "GET", + params: { + page: { + type: "integer" + }, + per_page: { + type: "integer" + } + }, + url: "/user/emails" + }, + listFollowersForAuthenticatedUser: { + method: "GET", + params: { + page: { + type: "integer" + }, + per_page: { + type: "integer" + } + }, + url: "/user/followers" + }, + listFollowersForUser: { + method: "GET", + params: { + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + username: { + required: true, + type: "string" + } + }, + url: "/users/:username/followers" + }, + listFollowingForAuthenticatedUser: { + method: "GET", + params: { + page: { + type: "integer" + }, + per_page: { + type: "integer" + } + }, + url: "/user/following" + }, + listFollowingForUser: { + method: "GET", + params: { + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + username: { + required: true, + type: "string" + } + }, + url: "/users/:username/following" + }, + listGpgKeys: { + method: "GET", + params: { + page: { + type: "integer" + }, + per_page: { + type: "integer" + } + }, + url: "/user/gpg_keys" + }, + listGpgKeysForUser: { + method: "GET", + params: { + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + username: { + required: true, + type: "string" + } + }, + url: "/users/:username/gpg_keys" + }, + listPublicEmails: { + method: "GET", + params: { + page: { + type: "integer" + }, + per_page: { + type: "integer" + } + }, + url: "/user/public_emails" + }, + listPublicKeys: { + method: "GET", + params: { + page: { + type: "integer" + }, + per_page: { + type: "integer" + } + }, + url: "/user/keys" + }, + listPublicKeysForUser: { + method: "GET", + params: { + page: { + type: "integer" + }, + per_page: { + type: "integer" + }, + username: { + required: true, + type: "string" + } + }, + url: "/users/:username/keys" + }, + togglePrimaryEmailVisibility: { + method: "PATCH", + params: { + email: { + required: true, + type: "string" + }, + visibility: { + required: true, + type: "string" + } + }, + url: "/user/email/visibility" + }, + unblock: { + method: "DELETE", + params: { + username: { + required: true, + type: "string" + } + }, + url: "/user/blocks/:username" + }, + unfollow: { + method: "DELETE", + params: { + username: { + required: true, + type: "string" + } + }, + url: "/user/following/:username" + }, + updateAuthenticated: { + method: "PATCH", + params: { + bio: { + type: "string" + }, + blog: { + type: "string" + }, + company: { + type: "string" + }, + email: { + type: "string" + }, + hireable: { + type: "boolean" + }, + location: { + type: "string" + }, + name: { + type: "string" + } + }, + url: "/user" + } + } +}; + +const VERSION = "2.4.0"; + +function registerEndpoints(octokit, routes) { + Object.keys(routes).forEach(namespaceName => { + if (!octokit[namespaceName]) { + octokit[namespaceName] = {}; + } + + Object.keys(routes[namespaceName]).forEach(apiName => { + const apiOptions = routes[namespaceName][apiName]; + const endpointDefaults = ["method", "url", "headers"].reduce((map, key) => { + if (typeof apiOptions[key] !== "undefined") { + map[key] = apiOptions[key]; + } + + return map; + }, {}); + endpointDefaults.request = { + validate: apiOptions.params + }; + let request = octokit.request.defaults(endpointDefaults); // patch request & endpoint methods to support deprecated parameters. + // Not the most elegant solution, but we don’t want to move deprecation + // logic into octokit/endpoint.js as it’s out of scope + + const hasDeprecatedParam = Object.keys(apiOptions.params || {}).find(key => apiOptions.params[key].deprecated); + + if (hasDeprecatedParam) { + const patch = patchForDeprecation.bind(null, octokit, apiOptions); + request = patch(octokit.request.defaults(endpointDefaults), `.${namespaceName}.${apiName}()`); + request.endpoint = patch(request.endpoint, `.${namespaceName}.${apiName}.endpoint()`); + request.endpoint.merge = patch(request.endpoint.merge, `.${namespaceName}.${apiName}.endpoint.merge()`); + } + + if (apiOptions.deprecated) { + octokit[namespaceName][apiName] = Object.assign(function deprecatedEndpointMethod() { + octokit.log.warn(new deprecation.Deprecation(`[@octokit/rest] ${apiOptions.deprecated}`)); + octokit[namespaceName][apiName] = request; + return request.apply(null, arguments); + }, request); + return; + } + + octokit[namespaceName][apiName] = request; + }); + }); +} + +function patchForDeprecation(octokit, apiOptions, method, methodName) { + const patchedMethod = options => { + options = Object.assign({}, options); + Object.keys(options).forEach(key => { + if (apiOptions.params[key] && apiOptions.params[key].deprecated) { + const aliasKey = apiOptions.params[key].alias; + octokit.log.warn(new deprecation.Deprecation(`[@octokit/rest] "${key}" parameter is deprecated for "${methodName}". Use "${aliasKey}" instead`)); + + if (!(aliasKey in options)) { + options[aliasKey] = options[key]; + } + + delete options[key]; + } + }); + return method(options); + }; + + Object.keys(method).forEach(key => { + patchedMethod[key] = method[key]; + }); + return patchedMethod; +} + +/** + * This plugin is a 1:1 copy of internal @octokit/rest plugins. The primary + * goal is to rebuild @octokit/rest on top of @octokit/core. Once that is + * done, we will remove the registerEndpoints methods and return the methods + * directly as with the other plugins. At that point we will also remove the + * legacy workarounds and deprecations. + * + * See the plan at + * https://github.com/octokit/plugin-rest-endpoint-methods.js/pull/1 + */ + +function restEndpointMethods(octokit) { + // @ts-ignore + octokit.registerEndpoints = registerEndpoints.bind(null, octokit); + registerEndpoints(octokit, endpointsByScope); // Aliasing scopes for backward compatibility + // See https://github.com/octokit/rest.js/pull/1134 + + [["gitdata", "git"], ["authorization", "oauthAuthorizations"], ["pullRequests", "pulls"]].forEach(([deprecatedScope, scope]) => { + Object.defineProperty(octokit, deprecatedScope, { + get() { + octokit.log.warn( // @ts-ignore + new deprecation.Deprecation(`[@octokit/plugin-rest-endpoint-methods] "octokit.${deprecatedScope}.*" methods are deprecated, use "octokit.${scope}.*" instead`)); // @ts-ignore + + return octokit[scope]; + } + + }); + }); + return {}; +} +restEndpointMethods.VERSION = VERSION; + +exports.restEndpointMethods = restEndpointMethods; +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ 209: +/***/ (function(module) { + +"use strict"; + + +// See http://www.robvanderwoude.com/escapechars.php +const metaCharsRegExp = /([()\][%!^"`<>&|;, *?])/g; + +function escapeCommand(arg) { + // Escape meta chars + arg = arg.replace(metaCharsRegExp, '^$1'); + + return arg; +} + +function escapeArgument(arg, doubleEscapeMetaChars) { + // Convert to string + arg = `${arg}`; + + // Algorithm below is based on https://qntm.org/cmd + + // Sequence of backslashes followed by a double quote: + // double up all the backslashes and escape the double quote + arg = arg.replace(/(\\*)"/g, '$1$1\\"'); + + // Sequence of backslashes followed by the end of the string + // (which will become a double quote later): + // double up all the backslashes + arg = arg.replace(/(\\*)$/, '$1$1'); + + // All other backslashes occur literally + + // Quote the whole thing: + arg = `"${arg}"`; + + // Escape meta chars + arg = arg.replace(metaCharsRegExp, '^$1'); + + // Double escape meta chars if necessary + if (doubleEscapeMetaChars) { + arg = arg.replace(metaCharsRegExp, '^$1'); + } + + return arg; +} + +module.exports.command = escapeCommand; +module.exports.argument = escapeArgument; + + +/***/ }), + +/***/ 211: +/***/ (function(module) { + +module.exports = require("https"); + +/***/ }), + +/***/ 213: +/***/ (function(module, __unusedexports, __webpack_require__) { + +module.exports = getFirstPage + +const getPage = __webpack_require__(5) + +function getFirstPage (octokit, link, headers) { + return getPage(octokit, link, 'first', headers) +} + + +/***/ }), + +/***/ 214: +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(156); + +module.exports = function normalizeHeaderName(headers, normalizedName) { + utils.forEach(headers, function processHeader(value, name) { + if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) { + headers[normalizedName] = value; + delete headers[name]; + } + }); +}; + + +/***/ }), + +/***/ 221: +/***/ (function(module) { + +"use strict"; + + +/** + * Update an Error with the specified config, error code, and response. + * + * @param {Error} error The error to update. + * @param {Object} config The config. + * @param {string} [code] The error code (for example, 'ECONNABORTED'). + * @param {Object} [request] The request. + * @param {Object} [response] The response. + * @returns {Error} The error. + */ +module.exports = function enhanceError(error, config, code, request, response) { + error.config = config; + if (code) { + error.code = code; + } + + error.request = request; + error.response = response; + error.isAxiosError = true; + + error.toJSON = function() { + return { + // Standard + message: this.message, + name: this.name, + // Microsoft + description: this.description, + number: this.number, + // Mozilla + fileName: this.fileName, + lineNumber: this.lineNumber, + columnNumber: this.columnNumber, + stack: this.stack, + // Axios + config: this.config, + code: this.code + }; + }; + return error; +}; + + +/***/ }), + +/***/ 222: +/***/ (function(module, __unusedexports, __webpack_require__) { + +module.exports = which +which.sync = whichSync + +var isWindows = process.platform === 'win32' || + process.env.OSTYPE === 'cygwin' || + process.env.OSTYPE === 'msys' + +var path = __webpack_require__(622) +var COLON = isWindows ? ';' : ':' +var isexe = __webpack_require__(404) + +function getNotFoundError (cmd) { + var er = new Error('not found: ' + cmd) + er.code = 'ENOENT' + + return er +} + +function getPathInfo (cmd, opt) { + var colon = opt.colon || COLON + var pathEnv = opt.path || process.env.PATH || '' + var pathExt = [''] + + pathEnv = pathEnv.split(colon) + + var pathExtExe = '' + if (isWindows) { + pathEnv.unshift(process.cwd()) + pathExtExe = (opt.pathExt || process.env.PATHEXT || '.EXE;.CMD;.BAT;.COM') + pathExt = pathExtExe.split(colon) + + + // Always test the cmd itself first. isexe will check to make sure + // it's found in the pathExt set. + if (cmd.indexOf('.') !== -1 && pathExt[0] !== '') + pathExt.unshift('') + } + + // If it has a slash, then we don't bother searching the pathenv. + // just check the file itself, and that's it. + if (cmd.match(/\//) || isWindows && cmd.match(/\\/)) + pathEnv = [''] + + return { + env: pathEnv, + ext: pathExt, + extExe: pathExtExe + } +} + +function which (cmd, opt, cb) { + if (typeof opt === 'function') { + cb = opt + opt = {} + } + + var info = getPathInfo(cmd, opt) + var pathEnv = info.env + var pathExt = info.ext + var pathExtExe = info.extExe + var found = [] + + ;(function F (i, l) { + if (i === l) { + if (opt.all && found.length) + return cb(null, found) + else + return cb(getNotFoundError(cmd)) + } + + var pathPart = pathEnv[i] + if (pathPart.charAt(0) === '"' && pathPart.slice(-1) === '"') + pathPart = pathPart.slice(1, -1) + + var p = path.join(pathPart, cmd) + if (!pathPart && (/^\.[\\\/]/).test(cmd)) { + p = cmd.slice(0, 2) + p + } + ;(function E (ii, ll) { + if (ii === ll) return F(i + 1, l) + var ext = pathExt[ii] + isexe(p + ext, { pathExt: pathExtExe }, function (er, is) { + if (!er && is) { + if (opt.all) + found.push(p + ext) + else + return cb(null, p + ext) + } + return E(ii + 1, ll) + }) + })(0, pathExt.length) + })(0, pathEnv.length) +} + +function whichSync (cmd, opt) { + opt = opt || {} + + var info = getPathInfo(cmd, opt) + var pathEnv = info.env + var pathExt = info.ext + var pathExtExe = info.extExe + var found = [] + + for (var i = 0, l = pathEnv.length; i < l; i ++) { + var pathPart = pathEnv[i] + if (pathPart.charAt(0) === '"' && pathPart.slice(-1) === '"') + pathPart = pathPart.slice(1, -1) + + var p = path.join(pathPart, cmd) + if (!pathPart && /^\.[\\\/]/.test(cmd)) { + p = cmd.slice(0, 2) + p + } + for (var j = 0, ll = pathExt.length; j < ll; j ++) { + var cur = p + pathExt[j] + var is + try { + is = isexe.sync(cur, { pathExt: pathExtExe }) + if (is) { + if (opt.all) + found.push(cur) + else + return cur + } + } catch (ex) {} + } + } + + if (opt.all && found.length) + return found + + if (opt.nothrow) + return null + + throw getNotFoundError(cmd) +} + + +/***/ }), + +/***/ 223: +/***/ (function(module) { + +/** + * lodash (Custom Build) + * Build: `lodash modularize exports="npm" -o ./` + * Copyright jQuery Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */ + +/** Used as the `TypeError` message for "Functions" methods. */ +var FUNC_ERROR_TEXT = 'Expected a function'; + +/** Used to stand-in for `undefined` hash values. */ +var HASH_UNDEFINED = '__lodash_hash_undefined__'; + +/** Used as references for various `Number` constants. */ +var INFINITY = 1 / 0, + MAX_SAFE_INTEGER = 9007199254740991; + +/** `Object#toString` result references. */ +var funcTag = '[object Function]', + genTag = '[object GeneratorFunction]', + symbolTag = '[object Symbol]'; + +/** Used to match property names within property paths. */ +var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, + reIsPlainProp = /^\w*$/, + reLeadingDot = /^\./, + rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; + +/** + * Used to match `RegExp` + * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). + */ +var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; + +/** Used to match backslashes in property paths. */ +var reEscapeChar = /\\(\\)?/g; + +/** Used to detect host constructors (Safari). */ +var reIsHostCtor = /^\[object .+?Constructor\]$/; + +/** Used to detect unsigned integer values. */ +var reIsUint = /^(?:0|[1-9]\d*)$/; + +/** Detect free variable `global` from Node.js. */ +var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; + +/** Detect free variable `self`. */ +var freeSelf = typeof self == 'object' && self && self.Object === Object && self; + +/** Used as a reference to the global object. */ +var root = freeGlobal || freeSelf || Function('return this')(); + +/** + * Gets the value at `key` of `object`. + * + * @private + * @param {Object} [object] The object to query. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. + */ +function getValue(object, key) { + return object == null ? undefined : object[key]; +} + +/** + * Checks if `value` is a host object in IE < 9. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a host object, else `false`. + */ +function isHostObject(value) { + // Many host objects are `Object` objects that can coerce to strings + // despite having improperly defined `toString` methods. + var result = false; + if (value != null && typeof value.toString != 'function') { + try { + result = !!(value + ''); + } catch (e) {} + } + return result; +} + +/** Used for built-in method references. */ +var arrayProto = Array.prototype, + funcProto = Function.prototype, + objectProto = Object.prototype; + +/** Used to detect overreaching core-js shims. */ +var coreJsData = root['__core-js_shared__']; + +/** Used to detect methods masquerading as native. */ +var maskSrcKey = (function() { + var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); + return uid ? ('Symbol(src)_1.' + uid) : ''; +}()); + +/** Used to resolve the decompiled source of functions. */ +var funcToString = funcProto.toString; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ +var objectToString = objectProto.toString; + +/** Used to detect if a method is native. */ +var reIsNative = RegExp('^' + + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') + .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' +); + +/** Built-in value references. */ +var Symbol = root.Symbol, + splice = arrayProto.splice; + +/* Built-in method references that are verified to be native. */ +var Map = getNative(root, 'Map'), + nativeCreate = getNative(Object, 'create'); + +/** Used to convert symbols to primitives and strings. */ +var symbolProto = Symbol ? Symbol.prototype : undefined, + symbolToString = symbolProto ? symbolProto.toString : undefined; + +/** + * Creates a hash object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function Hash(entries) { + var index = -1, + length = entries ? entries.length : 0; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} + +/** + * Removes all key-value entries from the hash. + * + * @private + * @name clear + * @memberOf Hash + */ +function hashClear() { + this.__data__ = nativeCreate ? nativeCreate(null) : {}; +} + +/** + * Removes `key` and its value from the hash. + * + * @private + * @name delete + * @memberOf Hash + * @param {Object} hash The hash to modify. + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function hashDelete(key) { + return this.has(key) && delete this.__data__[key]; +} + +/** + * Gets the hash value for `key`. + * + * @private + * @name get + * @memberOf Hash + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function hashGet(key) { + var data = this.__data__; + if (nativeCreate) { + var result = data[key]; + return result === HASH_UNDEFINED ? undefined : result; + } + return hasOwnProperty.call(data, key) ? data[key] : undefined; +} + +/** + * Checks if a hash value for `key` exists. + * + * @private + * @name has + * @memberOf Hash + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function hashHas(key) { + var data = this.__data__; + return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key); +} + +/** + * Sets the hash `key` to `value`. + * + * @private + * @name set + * @memberOf Hash + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the hash instance. + */ +function hashSet(key, value) { + var data = this.__data__; + data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; + return this; +} + +// Add methods to `Hash`. +Hash.prototype.clear = hashClear; +Hash.prototype['delete'] = hashDelete; +Hash.prototype.get = hashGet; +Hash.prototype.has = hashHas; +Hash.prototype.set = hashSet; + +/** + * Creates an list cache object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function ListCache(entries) { + var index = -1, + length = entries ? entries.length : 0; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} + +/** + * Removes all key-value entries from the list cache. + * + * @private + * @name clear + * @memberOf ListCache + */ +function listCacheClear() { + this.__data__ = []; +} + +/** + * Removes `key` and its value from the list cache. + * + * @private + * @name delete + * @memberOf ListCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function listCacheDelete(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + return false; + } + var lastIndex = data.length - 1; + if (index == lastIndex) { + data.pop(); + } else { + splice.call(data, index, 1); + } + return true; +} + +/** + * Gets the list cache value for `key`. + * + * @private + * @name get + * @memberOf ListCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function listCacheGet(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + return index < 0 ? undefined : data[index][1]; +} + +/** + * Checks if a list cache value for `key` exists. + * + * @private + * @name has + * @memberOf ListCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function listCacheHas(key) { + return assocIndexOf(this.__data__, key) > -1; +} + +/** + * Sets the list cache `key` to `value`. + * + * @private + * @name set + * @memberOf ListCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the list cache instance. + */ +function listCacheSet(key, value) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + data.push([key, value]); + } else { + data[index][1] = value; + } + return this; +} + +// Add methods to `ListCache`. +ListCache.prototype.clear = listCacheClear; +ListCache.prototype['delete'] = listCacheDelete; +ListCache.prototype.get = listCacheGet; +ListCache.prototype.has = listCacheHas; +ListCache.prototype.set = listCacheSet; + +/** + * Creates a map cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function MapCache(entries) { + var index = -1, + length = entries ? entries.length : 0; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} + +/** + * Removes all key-value entries from the map. + * + * @private + * @name clear + * @memberOf MapCache + */ +function mapCacheClear() { + this.__data__ = { + 'hash': new Hash, + 'map': new (Map || ListCache), + 'string': new Hash + }; +} + +/** + * Removes `key` and its value from the map. + * + * @private + * @name delete + * @memberOf MapCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function mapCacheDelete(key) { + return getMapData(this, key)['delete'](key); +} + +/** + * Gets the map value for `key`. + * + * @private + * @name get + * @memberOf MapCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function mapCacheGet(key) { + return getMapData(this, key).get(key); +} + +/** + * Checks if a map value for `key` exists. + * + * @private + * @name has + * @memberOf MapCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function mapCacheHas(key) { + return getMapData(this, key).has(key); +} + +/** + * Sets the map `key` to `value`. + * + * @private + * @name set + * @memberOf MapCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the map cache instance. + */ +function mapCacheSet(key, value) { + getMapData(this, key).set(key, value); + return this; +} + +// Add methods to `MapCache`. +MapCache.prototype.clear = mapCacheClear; +MapCache.prototype['delete'] = mapCacheDelete; +MapCache.prototype.get = mapCacheGet; +MapCache.prototype.has = mapCacheHas; +MapCache.prototype.set = mapCacheSet; + +/** + * Assigns `value` to `key` of `object` if the existing value is not equivalent + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ +function assignValue(object, key, value) { + var objValue = object[key]; + if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || + (value === undefined && !(key in object))) { + object[key] = value; + } +} + +/** + * Gets the index at which the `key` is found in `array` of key-value pairs. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} key The key to search for. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function assocIndexOf(array, key) { + var length = array.length; + while (length--) { + if (eq(array[length][0], key)) { + return length; + } + } + return -1; +} + +/** + * The base implementation of `_.isNative` without bad shim checks. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a native function, + * else `false`. + */ +function baseIsNative(value) { + if (!isObject(value) || isMasked(value)) { + return false; + } + var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor; + return pattern.test(toSource(value)); +} + +/** + * The base implementation of `_.set`. + * + * @private + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to set. + * @param {*} value The value to set. + * @param {Function} [customizer] The function to customize path creation. + * @returns {Object} Returns `object`. + */ +function baseSet(object, path, value, customizer) { + if (!isObject(object)) { + return object; + } + path = isKey(path, object) ? [path] : castPath(path); + + var index = -1, + length = path.length, + lastIndex = length - 1, + nested = object; + + while (nested != null && ++index < length) { + var key = toKey(path[index]), + newValue = value; + + if (index != lastIndex) { + var objValue = nested[key]; + newValue = customizer ? customizer(objValue, key, nested) : undefined; + if (newValue === undefined) { + newValue = isObject(objValue) + ? objValue + : (isIndex(path[index + 1]) ? [] : {}); + } + } + assignValue(nested, key, newValue); + nested = nested[key]; + } + return object; +} + +/** + * The base implementation of `_.toString` which doesn't convert nullish + * values to empty strings. + * + * @private + * @param {*} value The value to process. + * @returns {string} Returns the string. + */ +function baseToString(value) { + // Exit early for strings to avoid a performance hit in some environments. + if (typeof value == 'string') { + return value; + } + if (isSymbol(value)) { + return symbolToString ? symbolToString.call(value) : ''; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; +} + +/** + * Casts `value` to a path array if it's not one. + * + * @private + * @param {*} value The value to inspect. + * @returns {Array} Returns the cast property path array. + */ +function castPath(value) { + return isArray(value) ? value : stringToPath(value); +} + +/** + * Gets the data for `map`. + * + * @private + * @param {Object} map The map to query. + * @param {string} key The reference key. + * @returns {*} Returns the map data. + */ +function getMapData(map, key) { + var data = map.__data__; + return isKeyable(key) + ? data[typeof key == 'string' ? 'string' : 'hash'] + : data.map; +} + +/** + * Gets the native function at `key` of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the method to get. + * @returns {*} Returns the function if it's native, else `undefined`. + */ +function getNative(object, key) { + var value = getValue(object, key); + return baseIsNative(value) ? value : undefined; +} + +/** + * Checks if `value` is a valid array-like index. + * + * @private + * @param {*} value The value to check. + * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. + * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. + */ +function isIndex(value, length) { + length = length == null ? MAX_SAFE_INTEGER : length; + return !!length && + (typeof value == 'number' || reIsUint.test(value)) && + (value > -1 && value % 1 == 0 && value < length); +} + +/** + * Checks if `value` is a property name and not a property path. + * + * @private + * @param {*} value The value to check. + * @param {Object} [object] The object to query keys on. + * @returns {boolean} Returns `true` if `value` is a property name, else `false`. + */ +function isKey(value, object) { + if (isArray(value)) { + return false; + } + var type = typeof value; + if (type == 'number' || type == 'symbol' || type == 'boolean' || + value == null || isSymbol(value)) { + return true; + } + return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || + (object != null && value in Object(object)); +} + +/** + * Checks if `value` is suitable for use as unique object key. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is suitable, else `false`. + */ +function isKeyable(value) { + var type = typeof value; + return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') + ? (value !== '__proto__') + : (value === null); +} + +/** + * Checks if `func` has its source masked. + * + * @private + * @param {Function} func The function to check. + * @returns {boolean} Returns `true` if `func` is masked, else `false`. + */ +function isMasked(func) { + return !!maskSrcKey && (maskSrcKey in func); +} + +/** + * Converts `string` to a property path array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the property path array. + */ +var stringToPath = memoize(function(string) { + string = toString(string); + + var result = []; + if (reLeadingDot.test(string)) { + result.push(''); + } + string.replace(rePropName, function(match, number, quote, string) { + result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match)); + }); + return result; +}); + +/** + * Converts `value` to a string key if it's not a string or symbol. + * + * @private + * @param {*} value The value to inspect. + * @returns {string|symbol} Returns the key. + */ +function toKey(value) { + if (typeof value == 'string' || isSymbol(value)) { + return value; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; +} + +/** + * Converts `func` to its source code. + * + * @private + * @param {Function} func The function to process. + * @returns {string} Returns the source code. + */ +function toSource(func) { + if (func != null) { + try { + return funcToString.call(func); + } catch (e) {} + try { + return (func + ''); + } catch (e) {} + } + return ''; +} + +/** + * Creates a function that memoizes the result of `func`. If `resolver` is + * provided, it determines the cache key for storing the result based on the + * arguments provided to the memoized function. By default, the first argument + * provided to the memoized function is used as the map cache key. The `func` + * is invoked with the `this` binding of the memoized function. + * + * **Note:** The cache is exposed as the `cache` property on the memoized + * function. Its creation may be customized by replacing the `_.memoize.Cache` + * constructor with one whose instances implement the + * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object) + * method interface of `delete`, `get`, `has`, and `set`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to have its output memoized. + * @param {Function} [resolver] The function to resolve the cache key. + * @returns {Function} Returns the new memoized function. + * @example + * + * var object = { 'a': 1, 'b': 2 }; + * var other = { 'c': 3, 'd': 4 }; + * + * var values = _.memoize(_.values); + * values(object); + * // => [1, 2] + * + * values(other); + * // => [3, 4] + * + * object.a = 2; + * values(object); + * // => [1, 2] + * + * // Modify the result cache. + * values.cache.set(object, ['a', 'b']); + * values(object); + * // => ['a', 'b'] + * + * // Replace `_.memoize.Cache`. + * _.memoize.Cache = WeakMap; + */ +function memoize(func, resolver) { + if (typeof func != 'function' || (resolver && typeof resolver != 'function')) { + throw new TypeError(FUNC_ERROR_TEXT); + } + var memoized = function() { + var args = arguments, + key = resolver ? resolver.apply(this, args) : args[0], + cache = memoized.cache; + + if (cache.has(key)) { + return cache.get(key); + } + var result = func.apply(this, args); + memoized.cache = cache.set(key, result); + return result; + }; + memoized.cache = new (memoize.Cache || MapCache); + return memoized; +} + +// Assign cache to `_.memoize`. +memoize.Cache = MapCache; + +/** + * Performs a + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * comparison between two values to determine if they are equivalent. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * var object = { 'a': 1 }; + * var other = { 'a': 1 }; + * + * _.eq(object, object); + * // => true + * + * _.eq(object, other); + * // => false + * + * _.eq('a', 'a'); + * // => true + * + * _.eq('a', Object('a')); + * // => false + * + * _.eq(NaN, NaN); + * // => true + */ +function eq(value, other) { + return value === other || (value !== value && other !== other); +} + +/** + * Checks if `value` is classified as an `Array` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array, else `false`. + * @example + * + * _.isArray([1, 2, 3]); + * // => true + * + * _.isArray(document.body.children); + * // => false + * + * _.isArray('abc'); + * // => false + * + * _.isArray(_.noop); + * // => false + */ +var isArray = Array.isArray; + +/** + * Checks if `value` is classified as a `Function` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a function, else `false`. + * @example + * + * _.isFunction(_); + * // => true + * + * _.isFunction(/abc/); + * // => false + */ +function isFunction(value) { + // The use of `Object#toString` avoids issues with the `typeof` operator + // in Safari 8-9 which returns 'object' for typed array and other constructors. + var tag = isObject(value) ? objectToString.call(value) : ''; + return tag == funcTag || tag == genTag; +} + +/** + * Checks if `value` is the + * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) + * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(_.noop); + * // => true + * + * _.isObject(null); + * // => false + */ +function isObject(value) { + var type = typeof value; + return !!value && (type == 'object' || type == 'function'); +} + +/** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ +function isObjectLike(value) { + return !!value && typeof value == 'object'; +} + +/** + * Checks if `value` is classified as a `Symbol` primitive or object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. + * @example + * + * _.isSymbol(Symbol.iterator); + * // => true + * + * _.isSymbol('abc'); + * // => false + */ +function isSymbol(value) { + return typeof value == 'symbol' || + (isObjectLike(value) && objectToString.call(value) == symbolTag); +} + +/** + * Converts `value` to a string. An empty string is returned for `null` + * and `undefined` values. The sign of `-0` is preserved. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to process. + * @returns {string} Returns the string. + * @example + * + * _.toString(null); + * // => '' + * + * _.toString(-0); + * // => '-0' + * + * _.toString([1, 2, 3]); + * // => '1,2,3' + */ +function toString(value) { + return value == null ? '' : baseToString(value); +} + +/** + * Sets the value at `path` of `object`. If a portion of `path` doesn't exist, + * it's created. Arrays are created for missing index properties while objects + * are created for all other missing properties. Use `_.setWith` to customize + * `path` creation. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 3.7.0 + * @category Object + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to set. + * @param {*} value The value to set. + * @returns {Object} Returns `object`. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }] }; + * + * _.set(object, 'a[0].b.c', 4); + * console.log(object.a[0].b.c); + * // => 4 + * + * _.set(object, ['x', '0', 'y', 'z'], 5); + * console.log(object.x[0].y.z); + * // => 5 + */ +function set(object, path, value) { + return object == null ? object : baseSet(object, path, value); +} + +module.exports = set; + + +/***/ }), + +/***/ 224: +/***/ (function(module, __unusedexports, __webpack_require__) { + +module.exports = hasLastPage + +const deprecate = __webpack_require__(187) +const getPageLinks = __webpack_require__(60) + +function hasLastPage (link) { + deprecate(`octokit.hasLastPage() – You can use octokit.paginate or async iterators instead: https://github.com/octokit/rest.js#pagination.`) + return getPageLinks(link).last +} + + +/***/ }), + +/***/ 230: +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; + + +var isAbsoluteURL = __webpack_require__(103); +var combineURLs = __webpack_require__(860); + +/** + * Creates a new URL by combining the baseURL with the requestedURL, + * only when the requestedURL is not already an absolute URL. + * If the requestURL is absolute, this function returns the requestedURL untouched. + * + * @param {string} baseURL The base URL + * @param {string} requestedURL Absolute or relative URL to combine + * @returns {string} The combined full path + */ +module.exports = function buildFullPath(baseURL, requestedURL) { + if (baseURL && !isAbsoluteURL(requestedURL)) { + return combineURLs(baseURL, requestedURL); + } + return requestedURL; +}; + + +/***/ }), + +/***/ 234: +/***/ (function(__unusedmodule, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, '__esModule', { value: true }); + +var request = __webpack_require__(705); +var universalUserAgent = __webpack_require__(710); + +const VERSION = "4.3.1"; + +class GraphqlError extends Error { + constructor(request, response) { + const message = response.data.errors[0].message; + super(message); + Object.assign(this, response.data); + this.name = "GraphqlError"; + this.request = request; // Maintains proper stack trace (only available on V8) + + /* istanbul ignore next */ + + if (Error.captureStackTrace) { + Error.captureStackTrace(this, this.constructor); + } + } + +} + +const NON_VARIABLE_OPTIONS = ["method", "baseUrl", "url", "headers", "request", "query"]; +function graphql(request, query, options) { + options = typeof query === "string" ? options = Object.assign({ + query + }, options) : options = query; + const requestOptions = Object.keys(options).reduce((result, key) => { + if (NON_VARIABLE_OPTIONS.includes(key)) { + result[key] = options[key]; + return result; + } + + if (!result.variables) { + result.variables = {}; + } + + result.variables[key] = options[key]; + return result; + }, {}); + return request(requestOptions).then(response => { + if (response.data.errors) { + throw new GraphqlError(requestOptions, { + data: response.data + }); + } + + return response.data.data; + }); +} + +function withDefaults(request$1, newDefaults) { + const newRequest = request$1.defaults(newDefaults); + + const newApi = (query, options) => { + return graphql(newRequest, query, options); + }; + + return Object.assign(newApi, { + defaults: withDefaults.bind(null, newRequest), + endpoint: request.request.endpoint + }); +} + +const graphql$1 = withDefaults(request.request, { + headers: { + "user-agent": `octokit-graphql.js/${VERSION} ${universalUserAgent.getUserAgent()}` + }, + method: "POST", + url: "/graphql" +}); +function withCustomRequest(customRequest) { + return withDefaults(customRequest, { + method: "POST", + url: "/graphql" + }); +} + +exports.graphql = graphql$1; +exports.withCustomRequest = withCustomRequest; +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ 235: +/***/ (function(__unusedmodule, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, '__esModule', { value: true }); + +function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } + +var osName = _interopDefault(__webpack_require__(931)); + +function getUserAgent() { + try { + return `Node.js/${process.version.substr(1)} (${osName()}; ${process.arch})`; + } catch (error) { + if (/wmic os get Caption/.test(error.message)) { + return "Windows "; + } + + return ""; + } +} + +exports.getUserAgent = getUserAgent; +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ 240: +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; + + +const path = __webpack_require__(622); +const which = __webpack_require__(222); +const pathKey = __webpack_require__(740)(); + +function resolveCommandAttempt(parsed, withoutPathExt) { + const cwd = process.cwd(); + const hasCustomCwd = parsed.options.cwd != null; + + // If a custom `cwd` was specified, we need to change the process cwd + // because `which` will do stat calls but does not support a custom cwd + if (hasCustomCwd) { + try { + process.chdir(parsed.options.cwd); + } catch (err) { + /* Empty */ + } + } + + let resolved; + + try { + resolved = which.sync(parsed.command, { + path: (parsed.options.env || process.env)[pathKey], + pathExt: withoutPathExt ? path.delimiter : undefined, + }); + } catch (e) { + /* Empty */ + } finally { + process.chdir(cwd); + } + + // If we successfully resolved, ensure that an absolute path is returned + // Note that when a custom `cwd` was used, we need to resolve to an absolute path based on it + if (resolved) { + resolved = path.resolve(hasCustomCwd ? parsed.options.cwd : '', resolved); + } + + return resolved; +} + +function resolveCommand(parsed) { + return resolveCommandAttempt(parsed) || resolveCommandAttempt(parsed, true); +} + +module.exports = resolveCommand; + + +/***/ }), + +/***/ 249: +/***/ (function(__unusedmodule, exports) { + +"use strict"; + + +Object.defineProperty(exports, '__esModule', { value: true }); + +class Deprecation extends Error { + constructor(message) { + super(message); // Maintains proper stack trace (only available on V8) + + /* istanbul ignore next */ + + if (Error.captureStackTrace) { + Error.captureStackTrace(this, this.constructor); + } + + this.name = 'Deprecation'; + } + +} + +exports.Deprecation = Deprecation; + + +/***/ }), + +/***/ 258: +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; + + +const cp = __webpack_require__(129); +const parse = __webpack_require__(969); +const enoent = __webpack_require__(396); + +function spawn(command, args, options) { + // Parse the arguments + const parsed = parse(command, args, options); + + // Spawn the child process + const spawned = cp.spawn(parsed.command, parsed.args, parsed.options); + + // Hook into child process "exit" event to emit an error if the command + // does not exists, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16 + enoent.hookChildProcess(spawned, parsed); + + return spawned; +} + +function spawnSync(command, args, options) { + // Parse the arguments + const parsed = parse(command, args, options); + + // Spawn the child process + const result = cp.spawnSync(parsed.command, parsed.args, parsed.options); + + // Analyze if the command does not exist, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16 + result.error = result.error || enoent.verifyENOENTSync(result.status, parsed); + + return result; +} + +module.exports = spawn; +module.exports.spawn = spawn; +module.exports.sync = spawnSync; + +module.exports._parse = parse; +module.exports._enoent = enoent; + + +/***/ }), + +/***/ 265: +/***/ (function(module, __unusedexports, __webpack_require__) { + +module.exports = withAuthorizationPrefix; + +const atob = __webpack_require__(28); + +const REGEX_IS_BASIC_AUTH = /^[\w-]+:/; + +function withAuthorizationPrefix(authorization) { + if (/^(basic|bearer|token) /i.test(authorization)) { + return authorization; + } + + try { + if (REGEX_IS_BASIC_AUTH.test(atob(authorization))) { + return `basic ${authorization}`; + } + } catch (error) {} + + if (authorization.split(/\./).length === 3) { + return `bearer ${authorization}`; + } + + return `token ${authorization}`; +} + + +/***/ }), + +/***/ 287: +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; + +// Older verions of Node.js might not have `util.getSystemErrorName()`. +// In that case, fall back to a deprecated internal. +const util = __webpack_require__(669); + +let uv; + +if (typeof util.getSystemErrorName === 'function') { + module.exports = util.getSystemErrorName; +} else { + try { + uv = process.binding('uv'); + + if (typeof uv.errname !== 'function') { + throw new TypeError('uv.errname is not a function'); + } + } catch (err) { + console.error('execa/lib/errname: unable to establish process.binding(\'uv\')', err); + uv = null; + } + + module.exports = code => errname(uv, code); +} + +// Used for testing the fallback behavior +module.exports.__test__ = errname; + +function errname(uv, code) { + if (uv) { + return uv.errname(code); + } + + if (!(code < 0)) { + throw new Error('err >= 0'); + } + + return `Unknown system error ${code}`; +} + + + +/***/ }), + +/***/ 289: +/***/ (function(module, __unusedexports, __webpack_require__) { + +var register = __webpack_require__(61) +var addHook = __webpack_require__(83) +var removeHook = __webpack_require__(186) + +// bind with array of arguments: https://stackoverflow.com/a/21792913 +var bind = Function.bind +var bindable = bind.bind(bind) + +function bindApi (hook, state, name) { + var removeHookRef = bindable(removeHook, null).apply(null, name ? [state, name] : [state]) + hook.api = { remove: removeHookRef } + hook.remove = removeHookRef + + ;['before', 'error', 'after', 'wrap'].forEach(function (kind) { + var args = name ? [state, kind, name] : [state, kind] + hook[kind] = hook.api[kind] = bindable(addHook, null).apply(null, args) + }) +} + +function HookSingular () { + var singularHookName = 'h' + var singularHookState = { + registry: {} + } + var singularHook = register.bind(null, singularHookState, singularHookName) + bindApi(singularHook, singularHookState, singularHookName) + return singularHook +} + +function HookCollection () { + var state = { + registry: {} + } + + var hook = register.bind(null, state) + bindApi(hook, state) + + return hook +} + +var collectionHookDeprecationMessageDisplayed = false +function Hook () { + if (!collectionHookDeprecationMessageDisplayed) { + console.warn('[before-after-hook]: "Hook()" repurposing warning, use "Hook.Collection()". Read more: https://git.io/upgrade-before-after-hook-to-1.4') + collectionHookDeprecationMessageDisplayed = true + } + return HookCollection() +} + +Hook.Singular = HookSingular.bind() +Hook.Collection = HookCollection.bind() + +module.exports = Hook +// expose constructors as a named property for TypeScript +module.exports.Hook = Hook +module.exports.Singular = Hook.Singular +module.exports.Collection = Hook.Collection + + +/***/ }), + +/***/ 297: +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; + + +var Cancel = __webpack_require__(601); + +/** + * A `CancelToken` is an object that can be used to request cancellation of an operation. + * + * @class + * @param {Function} executor The executor function. + */ +function CancelToken(executor) { + if (typeof executor !== 'function') { + throw new TypeError('executor must be a function.'); + } + + var resolvePromise; + this.promise = new Promise(function promiseExecutor(resolve) { + resolvePromise = resolve; + }); + + var token = this; + executor(function cancel(message) { + if (token.reason) { + // Cancellation has already been requested + return; + } + + token.reason = new Cancel(message); + resolvePromise(token.reason); + }); +} + +/** + * Throws a `Cancel` if cancellation has been requested. + */ +CancelToken.prototype.throwIfRequested = function throwIfRequested() { + if (this.reason) { + throw this.reason; + } +}; + +/** + * Returns an object that contains a new `CancelToken` and a function that, when called, + * cancels the `CancelToken`. + */ +CancelToken.source = function source() { + var cancel; + var token = new CancelToken(function executor(c) { + cancel = c; + }); + return { + token: token, + cancel: cancel + }; +}; + +module.exports = CancelToken; + + +/***/ }), + +/***/ 311: +/***/ (function(module) { + +/** + * Helpers. + */ + +var s = 1000; +var m = s * 60; +var h = m * 60; +var d = h * 24; +var y = d * 365.25; + +/** + * Parse or format the given `val`. + * + * Options: + * + * - `long` verbose formatting [false] + * + * @param {String|Number} val + * @param {Object} [options] + * @throws {Error} throw an error if val is not a non-empty string or a number + * @return {String|Number} + * @api public + */ + +module.exports = function(val, options) { + options = options || {}; + var type = typeof val; + if (type === 'string' && val.length > 0) { + return parse(val); + } else if (type === 'number' && isNaN(val) === false) { + return options.long ? fmtLong(val) : fmtShort(val); + } + throw new Error( + 'val is not a non-empty string or a valid number. val=' + + JSON.stringify(val) + ); +}; + +/** + * Parse the given `str` and return milliseconds. + * + * @param {String} str + * @return {Number} + * @api private + */ + +function parse(str) { + str = String(str); + if (str.length > 100) { + return; + } + var match = /^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec( + str + ); + if (!match) { + return; + } + var n = parseFloat(match[1]); + var type = (match[2] || 'ms').toLowerCase(); + switch (type) { + case 'years': + case 'year': + case 'yrs': + case 'yr': + case 'y': + return n * y; + case 'days': + case 'day': + case 'd': + return n * d; + case 'hours': + case 'hour': + case 'hrs': + case 'hr': + case 'h': + return n * h; + case 'minutes': + case 'minute': + case 'mins': + case 'min': + case 'm': + return n * m; + case 'seconds': + case 'second': + case 'secs': + case 'sec': + case 's': + return n * s; + case 'milliseconds': + case 'millisecond': + case 'msecs': + case 'msec': + case 'ms': + return n; + default: + return undefined; + } +} + +/** + * Short format for `ms`. + * + * @param {Number} ms + * @return {String} + * @api private + */ + +function fmtShort(ms) { + if (ms >= d) { + return Math.round(ms / d) + 'd'; + } + if (ms >= h) { + return Math.round(ms / h) + 'h'; + } + if (ms >= m) { + return Math.round(ms / m) + 'm'; + } + if (ms >= s) { + return Math.round(ms / s) + 's'; + } + return ms + 'ms'; +} + +/** + * Long format for `ms`. + * + * @param {Number} ms + * @return {String} + * @api private + */ + +function fmtLong(ms) { + return plural(ms, d, 'day') || + plural(ms, h, 'hour') || + plural(ms, m, 'minute') || + plural(ms, s, 'second') || + ms + ' ms'; +} + +/** + * Pluralization helper. + */ + +function plural(ms, n, name) { + if (ms < n) { + return; + } + if (ms < n * 1.5) { + return Math.floor(ms / n) + ' ' + name; + } + return Math.ceil(ms / n) + ' ' + name + 's'; +} + + +/***/ }), + +/***/ 320: +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(156); + +function encode(val) { + return encodeURIComponent(val). + replace(/%40/gi, '@'). + replace(/%3A/gi, ':'). + replace(/%24/g, '$'). + replace(/%2C/gi, ','). + replace(/%20/g, '+'). + replace(/%5B/gi, '['). + replace(/%5D/gi, ']'); +} + +/** + * Build a URL by appending params to the end + * + * @param {string} url The base of the url (e.g., http://www.google.com) + * @param {object} [params] The params to be appended + * @returns {string} The formatted url + */ +module.exports = function buildURL(url, params, paramsSerializer) { + /*eslint no-param-reassign:0*/ + if (!params) { + return url; + } + + var serializedParams; + if (paramsSerializer) { + serializedParams = paramsSerializer(params); + } else if (utils.isURLSearchParams(params)) { + serializedParams = params.toString(); + } else { + var parts = []; + + utils.forEach(params, function serialize(val, key) { + if (val === null || typeof val === 'undefined') { + return; + } + + if (utils.isArray(val)) { + key = key + '[]'; + } else { + val = [val]; + } + + utils.forEach(val, function parseValue(v) { + if (utils.isDate(v)) { + v = v.toISOString(); + } else if (utils.isObject(v)) { + v = JSON.stringify(v); + } + parts.push(encode(key) + '=' + encode(v)); + }); + }); + + serializedParams = parts.join('&'); + } + + if (serializedParams) { + var hashmarkIndex = url.indexOf('#'); + if (hashmarkIndex !== -1) { + url = url.slice(0, hashmarkIndex); + } + + url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams; + } + + return url; +}; + + +/***/ }), + +/***/ 321: +/***/ (function(module, exports, __webpack_require__) { + +/** + * This is the web browser implementation of `debug()`. + * + * Expose `debug()` as the module. + */ + +exports = module.exports = __webpack_require__(691); +exports.log = log; +exports.formatArgs = formatArgs; +exports.save = save; +exports.load = load; +exports.useColors = useColors; +exports.storage = 'undefined' != typeof chrome + && 'undefined' != typeof chrome.storage + ? chrome.storage.local + : localstorage(); + +/** + * Colors. + */ + +exports.colors = [ + '#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC', + '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF', + '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC', + '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF', + '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC', + '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033', + '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366', + '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933', + '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC', + '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF', + '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33' +]; + +/** + * Currently only WebKit-based Web Inspectors, Firefox >= v31, + * and the Firebug extension (any Firefox version) are known + * to support "%c" CSS customizations. + * + * TODO: add a `localStorage` variable to explicitly enable/disable colors + */ + +function useColors() { + // NB: In an Electron preload script, document will be defined but not fully + // initialized. Since we know we're in Chrome, we'll just detect this case + // explicitly + if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') { + return true; + } + + // Internet Explorer and Edge do not support colors. + if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) { + return false; + } + + // is webkit? http://stackoverflow.com/a/16459606/376773 + // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 + return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) || + // is firebug? http://stackoverflow.com/a/398120/376773 + (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) || + // is firefox >= v31? + // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages + (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31) || + // double check webkit in userAgent just in case we are in a worker + (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)); +} + +/** + * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. + */ + +exports.formatters.j = function(v) { + try { + return JSON.stringify(v); + } catch (err) { + return '[UnexpectedJSONParseError]: ' + err.message; + } +}; + + +/** + * Colorize log arguments if enabled. + * + * @api public + */ + +function formatArgs(args) { + var useColors = this.useColors; + + args[0] = (useColors ? '%c' : '') + + this.namespace + + (useColors ? ' %c' : ' ') + + args[0] + + (useColors ? '%c ' : ' ') + + '+' + exports.humanize(this.diff); + + if (!useColors) return; + + var c = 'color: ' + this.color; + args.splice(1, 0, c, 'color: inherit') + + // the final "%c" is somewhat tricky, because there could be other + // arguments passed either before or after the %c, so we need to + // figure out the correct index to insert the CSS into + var index = 0; + var lastC = 0; + args[0].replace(/%[a-zA-Z%]/g, function(match) { + if ('%%' === match) return; + index++; + if ('%c' === match) { + // we only are interested in the *last* %c + // (the user may have provided their own) + lastC = index; + } + }); + + args.splice(lastC, 0, c); +} + +/** + * Invokes `console.log()` when available. + * No-op when `console.log` is not a "function". + * + * @api public + */ + +function log() { + // this hackery is required for IE8/9, where + // the `console.log` function doesn't have 'apply' + return 'object' === typeof console + && console.log + && Function.prototype.apply.call(console.log, console, arguments); +} + +/** + * Save `namespaces`. + * + * @param {String} namespaces + * @api private + */ + +function save(namespaces) { + try { + if (null == namespaces) { + exports.storage.removeItem('debug'); + } else { + exports.storage.debug = namespaces; + } + } catch(e) {} +} + +/** + * Load `namespaces`. + * + * @return {String} returns the previously persisted debug modes + * @api private + */ + +function load() { + var r; + try { + r = exports.storage.debug; + } catch(e) {} + + // If debug isn't set in LS, and we're in Electron, try to load $DEBUG + if (!r && typeof process !== 'undefined' && 'env' in process) { + r = process.env.DEBUG; + } + + return r; +} + +/** + * Enable namespaces listed in `localStorage.debug` initially. + */ + +exports.enable(load()); + +/** + * Localstorage attempts to return the localstorage. + * + * This is necessary because safari throws + * when a user disables cookies/localstorage + * and you attempt to access it. + * + * @return {LocalStorage} + * @api private + */ + +function localstorage() { + try { + return window.localStorage; + } catch (e) {} +} + + +/***/ }), + +/***/ 334: +/***/ (function(__unusedmodule, exports, __webpack_require__) { + +"use strict"; + + +var net = __webpack_require__(631); +var tls = __webpack_require__(16); +var http = __webpack_require__(605); +var https = __webpack_require__(211); +var events = __webpack_require__(614); +var assert = __webpack_require__(357); +var util = __webpack_require__(669); + + +exports.httpOverHttp = httpOverHttp; +exports.httpsOverHttp = httpsOverHttp; +exports.httpOverHttps = httpOverHttps; +exports.httpsOverHttps = httpsOverHttps; + + +function httpOverHttp(options) { + var agent = new TunnelingAgent(options); + agent.request = http.request; + return agent; +} + +function httpsOverHttp(options) { + var agent = new TunnelingAgent(options); + agent.request = http.request; + agent.createSocket = createSecureSocket; + agent.defaultPort = 443; + return agent; +} + +function httpOverHttps(options) { + var agent = new TunnelingAgent(options); + agent.request = https.request; + return agent; +} + +function httpsOverHttps(options) { + var agent = new TunnelingAgent(options); + agent.request = https.request; + agent.createSocket = createSecureSocket; + agent.defaultPort = 443; + return agent; +} + + +function TunnelingAgent(options) { + var self = this; + self.options = options || {}; + self.proxyOptions = self.options.proxy || {}; + self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets; + self.requests = []; + self.sockets = []; + + self.on('free', function onFree(socket, host, port, localAddress) { + var options = toOptions(host, port, localAddress); + for (var i = 0, len = self.requests.length; i < len; ++i) { + var pending = self.requests[i]; + if (pending.host === options.host && pending.port === options.port) { + // Detect the request to connect same origin server, + // reuse the connection. + self.requests.splice(i, 1); + pending.request.onSocket(socket); + return; + } + } + socket.destroy(); + self.removeSocket(socket); + }); +} +util.inherits(TunnelingAgent, events.EventEmitter); + +TunnelingAgent.prototype.addRequest = function addRequest(req, host, port, localAddress) { + var self = this; + var options = mergeOptions({request: req}, self.options, toOptions(host, port, localAddress)); + + if (self.sockets.length >= this.maxSockets) { + // We are over limit so we'll add it to the queue. + self.requests.push(options); + return; + } + + // If we are under maxSockets create a new one. + self.createSocket(options, function(socket) { + socket.on('free', onFree); + socket.on('close', onCloseOrRemove); + socket.on('agentRemove', onCloseOrRemove); + req.onSocket(socket); + + function onFree() { + self.emit('free', socket, options); + } + + function onCloseOrRemove(err) { + self.removeSocket(socket); + socket.removeListener('free', onFree); + socket.removeListener('close', onCloseOrRemove); + socket.removeListener('agentRemove', onCloseOrRemove); + } + }); +}; + +TunnelingAgent.prototype.createSocket = function createSocket(options, cb) { + var self = this; + var placeholder = {}; + self.sockets.push(placeholder); + + var connectOptions = mergeOptions({}, self.proxyOptions, { + method: 'CONNECT', + path: options.host + ':' + options.port, + agent: false, + headers: { + host: options.host + ':' + options.port + } + }); + if (options.localAddress) { + connectOptions.localAddress = options.localAddress; + } + if (connectOptions.proxyAuth) { + connectOptions.headers = connectOptions.headers || {}; + connectOptions.headers['Proxy-Authorization'] = 'Basic ' + + new Buffer(connectOptions.proxyAuth).toString('base64'); + } + + debug('making CONNECT request'); + var connectReq = self.request(connectOptions); + connectReq.useChunkedEncodingByDefault = false; // for v0.6 + connectReq.once('response', onResponse); // for v0.6 + connectReq.once('upgrade', onUpgrade); // for v0.6 + connectReq.once('connect', onConnect); // for v0.7 or later + connectReq.once('error', onError); + connectReq.end(); + + function onResponse(res) { + // Very hacky. This is necessary to avoid http-parser leaks. + res.upgrade = true; + } + + function onUpgrade(res, socket, head) { + // Hacky. + process.nextTick(function() { + onConnect(res, socket, head); + }); + } + + function onConnect(res, socket, head) { + connectReq.removeAllListeners(); + socket.removeAllListeners(); + + if (res.statusCode !== 200) { + debug('tunneling socket could not be established, statusCode=%d', + res.statusCode); + socket.destroy(); + var error = new Error('tunneling socket could not be established, ' + + 'statusCode=' + res.statusCode); + error.code = 'ECONNRESET'; + options.request.emit('error', error); + self.removeSocket(placeholder); + return; + } + if (head.length > 0) { + debug('got illegal response body from proxy'); + socket.destroy(); + var error = new Error('got illegal response body from proxy'); + error.code = 'ECONNRESET'; + options.request.emit('error', error); + self.removeSocket(placeholder); + return; + } + debug('tunneling connection has established'); + self.sockets[self.sockets.indexOf(placeholder)] = socket; + return cb(socket); + } + + function onError(cause) { + connectReq.removeAllListeners(); + + debug('tunneling socket could not be established, cause=%s\n', + cause.message, cause.stack); + var error = new Error('tunneling socket could not be established, ' + + 'cause=' + cause.message); + error.code = 'ECONNRESET'; + options.request.emit('error', error); + self.removeSocket(placeholder); + } +}; + +TunnelingAgent.prototype.removeSocket = function removeSocket(socket) { + var pos = this.sockets.indexOf(socket) + if (pos === -1) { + return; + } + this.sockets.splice(pos, 1); + + var pending = this.requests.shift(); + if (pending) { + // If we have pending requests and a socket gets closed a new one + // needs to be created to take over in the pool for the one that closed. + this.createSocket(pending, function(socket) { + pending.request.onSocket(socket); + }); + } +}; + +function createSecureSocket(options, cb) { + var self = this; + TunnelingAgent.prototype.createSocket.call(self, options, function(socket) { + var hostHeader = options.request.getHeader('host'); + var tlsOptions = mergeOptions({}, self.options, { + socket: socket, + servername: hostHeader ? hostHeader.replace(/:.*$/, '') : options.host + }); + + // 0 is dummy port for v0.6 + var secureSocket = tls.connect(0, tlsOptions); + self.sockets[self.sockets.indexOf(socket)] = secureSocket; + cb(secureSocket); + }); +} + + +function toOptions(host, port, localAddress) { + if (typeof host === 'string') { // since v0.10 + return { + host: host, + port: port, + localAddress: localAddress + }; + } + return host; // for v0.11 or later +} + +function mergeOptions(target) { + for (var i = 1, len = arguments.length; i < len; ++i) { + var overrides = arguments[i]; + if (typeof overrides === 'object') { + var keys = Object.keys(overrides); + for (var j = 0, keyLen = keys.length; j < keyLen; ++j) { + var k = keys[j]; + if (overrides[k] !== undefined) { + target[k] = overrides[k]; + } + } + } + } + return target; +} + + +var debug; +if (process.env.NODE_DEBUG && /\btunnel\b/.test(process.env.NODE_DEBUG)) { + debug = function() { + var args = Array.prototype.slice.call(arguments); + if (typeof args[0] === 'string') { + args[0] = 'TUNNEL: ' + args[0]; + } else { + args.unshift('TUNNEL:'); + } + console.error.apply(console, args); + } +} else { + debug = function() {}; +} +exports.debug = debug; // for test + + +/***/ }), + +/***/ 343: +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(156); +var normalizeHeaderName = __webpack_require__(214); + +var DEFAULT_CONTENT_TYPE = { + 'Content-Type': 'application/x-www-form-urlencoded' +}; + +function setContentTypeIfUnset(headers, value) { + if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) { + headers['Content-Type'] = value; + } +} + +function getDefaultAdapter() { + var adapter; + if (typeof XMLHttpRequest !== 'undefined') { + // For browsers use XHR adapter + adapter = __webpack_require__(933); + } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') { + // For node use HTTP adapter + adapter = __webpack_require__(545); + } + return adapter; +} + +var defaults = { + adapter: getDefaultAdapter(), + + transformRequest: [function transformRequest(data, headers) { + normalizeHeaderName(headers, 'Accept'); + normalizeHeaderName(headers, 'Content-Type'); + if (utils.isFormData(data) || + utils.isArrayBuffer(data) || + utils.isBuffer(data) || + utils.isStream(data) || + utils.isFile(data) || + utils.isBlob(data) + ) { + return data; + } + if (utils.isArrayBufferView(data)) { + return data.buffer; + } + if (utils.isURLSearchParams(data)) { + setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8'); + return data.toString(); + } + if (utils.isObject(data)) { + setContentTypeIfUnset(headers, 'application/json;charset=utf-8'); + return JSON.stringify(data); + } + return data; + }], + + transformResponse: [function transformResponse(data) { + /*eslint no-param-reassign:0*/ + if (typeof data === 'string') { + try { + data = JSON.parse(data); + } catch (e) { /* Ignore */ } + } + return data; + }], + + /** + * A timeout in milliseconds to abort a request. If set to 0 (default) a + * timeout is not created. + */ + timeout: 0, + + xsrfCookieName: 'XSRF-TOKEN', + xsrfHeaderName: 'X-XSRF-TOKEN', + + maxContentLength: -1, + + validateStatus: function validateStatus(status) { + return status >= 200 && status < 300; + } +}; + +defaults.headers = { + common: { + 'Accept': 'application/json, text/plain, */*' + } +}; + +utils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) { + defaults.headers[method] = {}; +}); + +utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { + defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE); +}); + +module.exports = defaults; + + +/***/ }), + +/***/ 346: +/***/ (function(module, __unusedexports, __webpack_require__) { + +var once = __webpack_require__(950); + +var noop = function() {}; + +var isRequest = function(stream) { + return stream.setHeader && typeof stream.abort === 'function'; +}; + +var isChildProcess = function(stream) { + return stream.stdio && Array.isArray(stream.stdio) && stream.stdio.length === 3 +}; + +var eos = function(stream, opts, callback) { + if (typeof opts === 'function') return eos(stream, null, opts); + if (!opts) opts = {}; + + callback = once(callback || noop); + + var ws = stream._writableState; + var rs = stream._readableState; + var readable = opts.readable || (opts.readable !== false && stream.readable); + var writable = opts.writable || (opts.writable !== false && stream.writable); + var cancelled = false; + + var onlegacyfinish = function() { + if (!stream.writable) onfinish(); + }; + + var onfinish = function() { + writable = false; + if (!readable) callback.call(stream); + }; + + var onend = function() { + readable = false; + if (!writable) callback.call(stream); + }; + + var onexit = function(exitCode) { + callback.call(stream, exitCode ? new Error('exited with error code: ' + exitCode) : null); + }; + + var onerror = function(err) { + callback.call(stream, err); + }; + + var onclose = function() { + process.nextTick(onclosenexttick); + }; + + var onclosenexttick = function() { + if (cancelled) return; + if (readable && !(rs && (rs.ended && !rs.destroyed))) return callback.call(stream, new Error('premature close')); + if (writable && !(ws && (ws.ended && !ws.destroyed))) return callback.call(stream, new Error('premature close')); + }; + + var onrequest = function() { + stream.req.on('finish', onfinish); + }; + + if (isRequest(stream)) { + stream.on('complete', onfinish); + stream.on('abort', onclose); + if (stream.req) onrequest(); + else stream.on('request', onrequest); + } else if (writable && !ws) { // legacy streams + stream.on('end', onlegacyfinish); + stream.on('close', onlegacyfinish); + } + + if (isChildProcess(stream)) stream.on('exit', onexit); + + stream.on('end', onend); + stream.on('finish', onfinish); + if (opts.error !== false) stream.on('error', onerror); + stream.on('close', onclose); + + return function() { + cancelled = true; + stream.removeListener('complete', onfinish); + stream.removeListener('abort', onclose); + stream.removeListener('request', onrequest); + if (stream.req) stream.req.removeListener('finish', onfinish); + stream.removeListener('end', onlegacyfinish); + stream.removeListener('close', onlegacyfinish); + stream.removeListener('finish', onfinish); + stream.removeListener('exit', onexit); + stream.removeListener('end', onend); + stream.removeListener('error', onerror); + stream.removeListener('close', onclose); + }; +}; + +module.exports = eos; + + +/***/ }), + +/***/ 357: +/***/ (function(module) { + +module.exports = require("assert"); + +/***/ }), + +/***/ 367: +/***/ (function(module, __unusedexports, __webpack_require__) { + +module.exports = isexe +isexe.sync = sync + +var fs = __webpack_require__(747) + +function isexe (path, options, cb) { + fs.stat(path, function (er, stat) { + cb(er, er ? false : checkStat(stat, options)) + }) +} + +function sync (path, options) { + return checkStat(fs.statSync(path), options) +} + +function checkStat (stat, options) { + return stat.isFile() && checkMode(stat, options) +} + +function checkMode (stat, options) { + var mod = stat.mode + var uid = stat.uid + var gid = stat.gid + + var myUid = options.uid !== undefined ? + options.uid : process.getuid && process.getuid() + var myGid = options.gid !== undefined ? + options.gid : process.getgid && process.getgid() + + var u = parseInt('100', 8) + var g = parseInt('010', 8) + var o = parseInt('001', 8) + var ug = u | g + + var ret = (mod & o) || + (mod & g) && gid === myGid || + (mod & u) && uid === myUid || + (mod & ug) && myUid === 0 + + return ret +} + + +/***/ }), + +/***/ 369: +/***/ (function(module, __unusedexports, __webpack_require__) { + +module.exports = authenticationBeforeRequest; + +const btoa = __webpack_require__(35); +const uniq = __webpack_require__(480); + +function authenticationBeforeRequest(state, options) { + if (!state.auth.type) { + return; + } + + if (state.auth.type === "basic") { + const hash = btoa(`${state.auth.username}:${state.auth.password}`); + options.headers.authorization = `Basic ${hash}`; + return; + } + + if (state.auth.type === "token") { + options.headers.authorization = `token ${state.auth.token}`; + return; + } + + if (state.auth.type === "app") { + options.headers.authorization = `Bearer ${state.auth.token}`; + const acceptHeaders = options.headers.accept + .split(",") + .concat("application/vnd.github.machine-man-preview+json"); + options.headers.accept = uniq(acceptHeaders) + .filter(Boolean) + .join(","); + return; + } + + options.url += options.url.indexOf("?") === -1 ? "?" : "&"; + + if (state.auth.token) { + options.url += `access_token=${encodeURIComponent(state.auth.token)}`; + return; + } + + const key = encodeURIComponent(state.auth.key); + const secret = encodeURIComponent(state.auth.secret); + options.url += `client_id=${key}&client_secret=${secret}`; +} + + +/***/ }), + +/***/ 376: +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(156); + +module.exports = ( + utils.isStandardBrowserEnv() ? + + // Standard browser envs support document.cookie + (function standardBrowserEnv() { + return { + write: function write(name, value, expires, path, domain, secure) { + var cookie = []; + cookie.push(name + '=' + encodeURIComponent(value)); + + if (utils.isNumber(expires)) { + cookie.push('expires=' + new Date(expires).toGMTString()); + } + + if (utils.isString(path)) { + cookie.push('path=' + path); + } + + if (utils.isString(domain)) { + cookie.push('domain=' + domain); + } + + if (secure === true) { + cookie.push('secure'); + } + + document.cookie = cookie.join('; '); + }, + + read: function read(name) { + var match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)')); + return (match ? decodeURIComponent(match[3]) : null); + }, + + remove: function remove(name) { + this.write(name, '', Date.now() - 86400000); + } + }; + })() : + + // Non standard browser env (web workers, react-native) lack needed support. + (function nonStandardBrowserEnv() { + return { + write: function write() {}, + read: function read() { return null; }, + remove: function remove() {} + }; + })() +); + + +/***/ }), + +/***/ 396: +/***/ (function(module) { + +"use strict"; + + +const isWin = process.platform === 'win32'; + +function notFoundError(original, syscall) { + return Object.assign(new Error(`${syscall} ${original.command} ENOENT`), { + code: 'ENOENT', + errno: 'ENOENT', + syscall: `${syscall} ${original.command}`, + path: original.command, + spawnargs: original.args, + }); +} + +function hookChildProcess(cp, parsed) { + if (!isWin) { + return; + } + + const originalEmit = cp.emit; + + cp.emit = function (name, arg1) { + // If emitting "exit" event and exit code is 1, we need to check if + // the command exists and emit an "error" instead + // See https://github.com/IndigoUnited/node-cross-spawn/issues/16 + if (name === 'exit') { + const err = verifyENOENT(arg1, parsed, 'spawn'); + + if (err) { + return originalEmit.call(cp, 'error', err); + } + } + + return originalEmit.apply(cp, arguments); // eslint-disable-line prefer-rest-params + }; +} + +function verifyENOENT(status, parsed) { + if (isWin && status === 1 && !parsed.file) { + return notFoundError(parsed.original, 'spawn'); + } + + return null; +} + +function verifyENOENTSync(status, parsed) { + if (isWin && status === 1 && !parsed.file) { + return notFoundError(parsed.original, 'spawnSync'); + } + + return null; +} + +module.exports = { + hookChildProcess, + verifyENOENT, + verifyENOENTSync, + notFoundError, +}; + + +/***/ }), + +/***/ 399: +/***/ (function(module) { + +"use strict"; + + +/** + * Tries to execute a function and discards any error that occurs. + * @param {Function} fn - Function that might or might not throw an error. + * @returns {?*} Return-value of the function when no error occurred. + */ +module.exports = function(fn) { + + try { return fn() } catch (e) {} + +} + +/***/ }), + +/***/ 404: +/***/ (function(module, __unusedexports, __webpack_require__) { + +var fs = __webpack_require__(747) +var core +if (process.platform === 'win32' || global.TESTING_WINDOWS) { + core = __webpack_require__(144) +} else { + core = __webpack_require__(367) +} + +module.exports = isexe +isexe.sync = sync + +function isexe (path, options, cb) { + if (typeof options === 'function') { + cb = options + options = {} + } + + if (!cb) { + if (typeof Promise !== 'function') { + throw new TypeError('callback not provided') + } + + return new Promise(function (resolve, reject) { + isexe(path, options || {}, function (er, is) { + if (er) { + reject(er) + } else { + resolve(is) + } + }) + }) + } + + core(path, options || {}, function (er, is) { + // ignore EACCES because that just means we aren't allowed to run it + if (er) { + if (er.code === 'EACCES' || options && options.ignoreErrors) { + er = null + is = false + } + } + cb(er, is) + }) +} + +function sync (path, options) { + // my kingdom for a filtered catch + try { + return core.sync(path, options || {}) + } catch (er) { + if (options && options.ignoreErrors || er.code === 'EACCES') { + return false + } else { + throw er + } + } +} + + +/***/ }), + +/***/ 406: +/***/ (function(module, __unusedexports, __webpack_require__) { + +module.exports = authenticate; + +const { Deprecation } = __webpack_require__(249); +const once = __webpack_require__(950); + +const deprecateAuthenticate = once((log, deprecation) => log.warn(deprecation)); + +function authenticate(state, options) { + deprecateAuthenticate( + state.octokit.log, + new Deprecation( + '[@octokit/rest] octokit.authenticate() is deprecated. Use "auth" constructor option instead.' + ) + ); + + if (!options) { + state.auth = false; + return; + } + + switch (options.type) { + case "basic": + if (!options.username || !options.password) { + throw new Error( + "Basic authentication requires both a username and password to be set" + ); + } + break; + + case "oauth": + if (!options.token && !(options.key && options.secret)) { + throw new Error( + "OAuth2 authentication requires a token or key & secret to be set" + ); + } + break; + + case "token": + case "app": + if (!options.token) { + throw new Error("Token authentication requires a token to be set"); + } + break; + + default: + throw new Error( + "Invalid authentication type, must be 'basic', 'oauth', 'token' or 'app'" + ); + } + + state.auth = options; +} + + +/***/ }), + +/***/ 412: +/***/ (function(module) { + +/** + * lodash (Custom Build) + * Build: `lodash modularize exports="npm" -o ./` + * Copyright jQuery Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */ + +/** Used as the `TypeError` message for "Functions" methods. */ +var FUNC_ERROR_TEXT = 'Expected a function'; + +/** Used to stand-in for `undefined` hash values. */ +var HASH_UNDEFINED = '__lodash_hash_undefined__'; + +/** Used as references for various `Number` constants. */ +var INFINITY = 1 / 0; + +/** `Object#toString` result references. */ +var funcTag = '[object Function]', + genTag = '[object GeneratorFunction]', + symbolTag = '[object Symbol]'; + +/** Used to match property names within property paths. */ +var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, + reIsPlainProp = /^\w*$/, + reLeadingDot = /^\./, + rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; + +/** + * Used to match `RegExp` + * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). + */ +var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; + +/** Used to match backslashes in property paths. */ +var reEscapeChar = /\\(\\)?/g; + +/** Used to detect host constructors (Safari). */ +var reIsHostCtor = /^\[object .+?Constructor\]$/; + +/** Detect free variable `global` from Node.js. */ +var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; + +/** Detect free variable `self`. */ +var freeSelf = typeof self == 'object' && self && self.Object === Object && self; + +/** Used as a reference to the global object. */ +var root = freeGlobal || freeSelf || Function('return this')(); + +/** + * Gets the value at `key` of `object`. + * + * @private + * @param {Object} [object] The object to query. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. + */ +function getValue(object, key) { + return object == null ? undefined : object[key]; +} + +/** + * Checks if `value` is a host object in IE < 9. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a host object, else `false`. + */ +function isHostObject(value) { + // Many host objects are `Object` objects that can coerce to strings + // despite having improperly defined `toString` methods. + var result = false; + if (value != null && typeof value.toString != 'function') { + try { + result = !!(value + ''); + } catch (e) {} + } + return result; +} + +/** Used for built-in method references. */ +var arrayProto = Array.prototype, + funcProto = Function.prototype, + objectProto = Object.prototype; + +/** Used to detect overreaching core-js shims. */ +var coreJsData = root['__core-js_shared__']; + +/** Used to detect methods masquerading as native. */ +var maskSrcKey = (function() { + var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); + return uid ? ('Symbol(src)_1.' + uid) : ''; +}()); + +/** Used to resolve the decompiled source of functions. */ +var funcToString = funcProto.toString; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ +var objectToString = objectProto.toString; + +/** Used to detect if a method is native. */ +var reIsNative = RegExp('^' + + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') + .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' +); + +/** Built-in value references. */ +var Symbol = root.Symbol, + splice = arrayProto.splice; + +/* Built-in method references that are verified to be native. */ +var Map = getNative(root, 'Map'), + nativeCreate = getNative(Object, 'create'); + +/** Used to convert symbols to primitives and strings. */ +var symbolProto = Symbol ? Symbol.prototype : undefined, + symbolToString = symbolProto ? symbolProto.toString : undefined; + +/** + * Creates a hash object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function Hash(entries) { + var index = -1, + length = entries ? entries.length : 0; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} + +/** + * Removes all key-value entries from the hash. + * + * @private + * @name clear + * @memberOf Hash + */ +function hashClear() { + this.__data__ = nativeCreate ? nativeCreate(null) : {}; +} + +/** + * Removes `key` and its value from the hash. + * + * @private + * @name delete + * @memberOf Hash + * @param {Object} hash The hash to modify. + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function hashDelete(key) { + return this.has(key) && delete this.__data__[key]; +} + +/** + * Gets the hash value for `key`. + * + * @private + * @name get + * @memberOf Hash + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function hashGet(key) { + var data = this.__data__; + if (nativeCreate) { + var result = data[key]; + return result === HASH_UNDEFINED ? undefined : result; + } + return hasOwnProperty.call(data, key) ? data[key] : undefined; +} + +/** + * Checks if a hash value for `key` exists. + * + * @private + * @name has + * @memberOf Hash + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function hashHas(key) { + var data = this.__data__; + return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key); +} + +/** + * Sets the hash `key` to `value`. + * + * @private + * @name set + * @memberOf Hash + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the hash instance. + */ +function hashSet(key, value) { + var data = this.__data__; + data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; + return this; +} + +// Add methods to `Hash`. +Hash.prototype.clear = hashClear; +Hash.prototype['delete'] = hashDelete; +Hash.prototype.get = hashGet; +Hash.prototype.has = hashHas; +Hash.prototype.set = hashSet; + +/** + * Creates an list cache object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function ListCache(entries) { + var index = -1, + length = entries ? entries.length : 0; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} + +/** + * Removes all key-value entries from the list cache. + * + * @private + * @name clear + * @memberOf ListCache + */ +function listCacheClear() { + this.__data__ = []; +} + +/** + * Removes `key` and its value from the list cache. + * + * @private + * @name delete + * @memberOf ListCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function listCacheDelete(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + return false; + } + var lastIndex = data.length - 1; + if (index == lastIndex) { + data.pop(); + } else { + splice.call(data, index, 1); + } + return true; +} + +/** + * Gets the list cache value for `key`. + * + * @private + * @name get + * @memberOf ListCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function listCacheGet(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + return index < 0 ? undefined : data[index][1]; +} + +/** + * Checks if a list cache value for `key` exists. + * + * @private + * @name has + * @memberOf ListCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function listCacheHas(key) { + return assocIndexOf(this.__data__, key) > -1; +} + +/** + * Sets the list cache `key` to `value`. + * + * @private + * @name set + * @memberOf ListCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the list cache instance. + */ +function listCacheSet(key, value) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + data.push([key, value]); + } else { + data[index][1] = value; + } + return this; +} + +// Add methods to `ListCache`. +ListCache.prototype.clear = listCacheClear; +ListCache.prototype['delete'] = listCacheDelete; +ListCache.prototype.get = listCacheGet; +ListCache.prototype.has = listCacheHas; +ListCache.prototype.set = listCacheSet; + +/** + * Creates a map cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function MapCache(entries) { + var index = -1, + length = entries ? entries.length : 0; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} + +/** + * Removes all key-value entries from the map. + * + * @private + * @name clear + * @memberOf MapCache + */ +function mapCacheClear() { + this.__data__ = { + 'hash': new Hash, + 'map': new (Map || ListCache), + 'string': new Hash + }; +} + +/** + * Removes `key` and its value from the map. + * + * @private + * @name delete + * @memberOf MapCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function mapCacheDelete(key) { + return getMapData(this, key)['delete'](key); +} + +/** + * Gets the map value for `key`. + * + * @private + * @name get + * @memberOf MapCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function mapCacheGet(key) { + return getMapData(this, key).get(key); +} + +/** + * Checks if a map value for `key` exists. + * + * @private + * @name has + * @memberOf MapCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function mapCacheHas(key) { + return getMapData(this, key).has(key); +} + +/** + * Sets the map `key` to `value`. + * + * @private + * @name set + * @memberOf MapCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the map cache instance. + */ +function mapCacheSet(key, value) { + getMapData(this, key).set(key, value); + return this; +} + +// Add methods to `MapCache`. +MapCache.prototype.clear = mapCacheClear; +MapCache.prototype['delete'] = mapCacheDelete; +MapCache.prototype.get = mapCacheGet; +MapCache.prototype.has = mapCacheHas; +MapCache.prototype.set = mapCacheSet; + +/** + * Gets the index at which the `key` is found in `array` of key-value pairs. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} key The key to search for. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function assocIndexOf(array, key) { + var length = array.length; + while (length--) { + if (eq(array[length][0], key)) { + return length; + } + } + return -1; +} + +/** + * The base implementation of `_.get` without support for default values. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @returns {*} Returns the resolved value. + */ +function baseGet(object, path) { + path = isKey(path, object) ? [path] : castPath(path); + + var index = 0, + length = path.length; + + while (object != null && index < length) { + object = object[toKey(path[index++])]; + } + return (index && index == length) ? object : undefined; +} + +/** + * The base implementation of `_.isNative` without bad shim checks. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a native function, + * else `false`. + */ +function baseIsNative(value) { + if (!isObject(value) || isMasked(value)) { + return false; + } + var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor; + return pattern.test(toSource(value)); +} + +/** + * The base implementation of `_.toString` which doesn't convert nullish + * values to empty strings. + * + * @private + * @param {*} value The value to process. + * @returns {string} Returns the string. + */ +function baseToString(value) { + // Exit early for strings to avoid a performance hit in some environments. + if (typeof value == 'string') { + return value; + } + if (isSymbol(value)) { + return symbolToString ? symbolToString.call(value) : ''; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; +} + +/** + * Casts `value` to a path array if it's not one. + * + * @private + * @param {*} value The value to inspect. + * @returns {Array} Returns the cast property path array. + */ +function castPath(value) { + return isArray(value) ? value : stringToPath(value); +} + +/** + * Gets the data for `map`. + * + * @private + * @param {Object} map The map to query. + * @param {string} key The reference key. + * @returns {*} Returns the map data. + */ +function getMapData(map, key) { + var data = map.__data__; + return isKeyable(key) + ? data[typeof key == 'string' ? 'string' : 'hash'] + : data.map; +} + +/** + * Gets the native function at `key` of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the method to get. + * @returns {*} Returns the function if it's native, else `undefined`. + */ +function getNative(object, key) { + var value = getValue(object, key); + return baseIsNative(value) ? value : undefined; +} + +/** + * Checks if `value` is a property name and not a property path. + * + * @private + * @param {*} value The value to check. + * @param {Object} [object] The object to query keys on. + * @returns {boolean} Returns `true` if `value` is a property name, else `false`. + */ +function isKey(value, object) { + if (isArray(value)) { + return false; + } + var type = typeof value; + if (type == 'number' || type == 'symbol' || type == 'boolean' || + value == null || isSymbol(value)) { + return true; + } + return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || + (object != null && value in Object(object)); +} + +/** + * Checks if `value` is suitable for use as unique object key. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is suitable, else `false`. + */ +function isKeyable(value) { + var type = typeof value; + return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') + ? (value !== '__proto__') + : (value === null); +} + +/** + * Checks if `func` has its source masked. + * + * @private + * @param {Function} func The function to check. + * @returns {boolean} Returns `true` if `func` is masked, else `false`. + */ +function isMasked(func) { + return !!maskSrcKey && (maskSrcKey in func); +} + +/** + * Converts `string` to a property path array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the property path array. + */ +var stringToPath = memoize(function(string) { + string = toString(string); + + var result = []; + if (reLeadingDot.test(string)) { + result.push(''); + } + string.replace(rePropName, function(match, number, quote, string) { + result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match)); + }); + return result; +}); + +/** + * Converts `value` to a string key if it's not a string or symbol. + * + * @private + * @param {*} value The value to inspect. + * @returns {string|symbol} Returns the key. + */ +function toKey(value) { + if (typeof value == 'string' || isSymbol(value)) { + return value; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; +} + +/** + * Converts `func` to its source code. + * + * @private + * @param {Function} func The function to process. + * @returns {string} Returns the source code. + */ +function toSource(func) { + if (func != null) { + try { + return funcToString.call(func); + } catch (e) {} + try { + return (func + ''); + } catch (e) {} + } + return ''; +} + +/** + * Creates a function that memoizes the result of `func`. If `resolver` is + * provided, it determines the cache key for storing the result based on the + * arguments provided to the memoized function. By default, the first argument + * provided to the memoized function is used as the map cache key. The `func` + * is invoked with the `this` binding of the memoized function. + * + * **Note:** The cache is exposed as the `cache` property on the memoized + * function. Its creation may be customized by replacing the `_.memoize.Cache` + * constructor with one whose instances implement the + * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object) + * method interface of `delete`, `get`, `has`, and `set`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to have its output memoized. + * @param {Function} [resolver] The function to resolve the cache key. + * @returns {Function} Returns the new memoized function. + * @example + * + * var object = { 'a': 1, 'b': 2 }; + * var other = { 'c': 3, 'd': 4 }; + * + * var values = _.memoize(_.values); + * values(object); + * // => [1, 2] + * + * values(other); + * // => [3, 4] + * + * object.a = 2; + * values(object); + * // => [1, 2] + * + * // Modify the result cache. + * values.cache.set(object, ['a', 'b']); + * values(object); + * // => ['a', 'b'] + * + * // Replace `_.memoize.Cache`. + * _.memoize.Cache = WeakMap; + */ +function memoize(func, resolver) { + if (typeof func != 'function' || (resolver && typeof resolver != 'function')) { + throw new TypeError(FUNC_ERROR_TEXT); + } + var memoized = function() { + var args = arguments, + key = resolver ? resolver.apply(this, args) : args[0], + cache = memoized.cache; + + if (cache.has(key)) { + return cache.get(key); + } + var result = func.apply(this, args); + memoized.cache = cache.set(key, result); + return result; + }; + memoized.cache = new (memoize.Cache || MapCache); + return memoized; +} + +// Assign cache to `_.memoize`. +memoize.Cache = MapCache; + +/** + * Performs a + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * comparison between two values to determine if they are equivalent. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * var object = { 'a': 1 }; + * var other = { 'a': 1 }; + * + * _.eq(object, object); + * // => true + * + * _.eq(object, other); + * // => false + * + * _.eq('a', 'a'); + * // => true + * + * _.eq('a', Object('a')); + * // => false + * + * _.eq(NaN, NaN); + * // => true + */ +function eq(value, other) { + return value === other || (value !== value && other !== other); +} + +/** + * Checks if `value` is classified as an `Array` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array, else `false`. + * @example + * + * _.isArray([1, 2, 3]); + * // => true + * + * _.isArray(document.body.children); + * // => false + * + * _.isArray('abc'); + * // => false + * + * _.isArray(_.noop); + * // => false + */ +var isArray = Array.isArray; + +/** + * Checks if `value` is classified as a `Function` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a function, else `false`. + * @example + * + * _.isFunction(_); + * // => true + * + * _.isFunction(/abc/); + * // => false + */ +function isFunction(value) { + // The use of `Object#toString` avoids issues with the `typeof` operator + // in Safari 8-9 which returns 'object' for typed array and other constructors. + var tag = isObject(value) ? objectToString.call(value) : ''; + return tag == funcTag || tag == genTag; +} + +/** + * Checks if `value` is the + * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) + * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(_.noop); + * // => true + * + * _.isObject(null); + * // => false + */ +function isObject(value) { + var type = typeof value; + return !!value && (type == 'object' || type == 'function'); +} + +/** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ +function isObjectLike(value) { + return !!value && typeof value == 'object'; +} + +/** + * Checks if `value` is classified as a `Symbol` primitive or object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. + * @example + * + * _.isSymbol(Symbol.iterator); + * // => true + * + * _.isSymbol('abc'); + * // => false + */ +function isSymbol(value) { + return typeof value == 'symbol' || + (isObjectLike(value) && objectToString.call(value) == symbolTag); +} + +/** + * Converts `value` to a string. An empty string is returned for `null` + * and `undefined` values. The sign of `-0` is preserved. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to process. + * @returns {string} Returns the string. + * @example + * + * _.toString(null); + * // => '' + * + * _.toString(-0); + * // => '-0' + * + * _.toString([1, 2, 3]); + * // => '1,2,3' + */ +function toString(value) { + return value == null ? '' : baseToString(value); +} + +/** + * Gets the value at `path` of `object`. If the resolved value is + * `undefined`, the `defaultValue` is returned in its place. + * + * @static + * @memberOf _ + * @since 3.7.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @param {*} [defaultValue] The value returned for `undefined` resolved values. + * @returns {*} Returns the resolved value. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }] }; + * + * _.get(object, 'a[0].b.c'); + * // => 3 + * + * _.get(object, ['a', '0', 'b', 'c']); + * // => 3 + * + * _.get(object, 'a.b.c', 'default'); + * // => 'default' + */ +function get(object, path, defaultValue) { + var result = object == null ? undefined : baseGet(object, path); + return result === undefined ? defaultValue : result; +} + +module.exports = get; + + +/***/ }), + +/***/ 413: +/***/ (function(module) { + +module.exports = require("stream"); + +/***/ }), + +/***/ 418: +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; + +const os = __webpack_require__(87); +const execa = __webpack_require__(851); + +// Reference: https://www.gaijin.at/en/lstwinver.php +const names = new Map([ + ['10.0', '10'], + ['6.3', '8.1'], + ['6.2', '8'], + ['6.1', '7'], + ['6.0', 'Vista'], + ['5.2', 'Server 2003'], + ['5.1', 'XP'], + ['5.0', '2000'], + ['4.9', 'ME'], + ['4.1', '98'], + ['4.0', '95'] +]); + +const windowsRelease = release => { + const version = /\d+\.\d/.exec(release || os.release()); + + if (release && !version) { + throw new Error('`release` argument doesn\'t match `n.n`'); + } + + const ver = (version || [])[0]; + + // Server 2008, 2012, 2016, and 2019 versions are ambiguous with desktop versions and must be detected at runtime. + // If `release` is omitted or we're on a Windows system, and the version number is an ambiguous version + // then use `wmic` to get the OS caption: https://msdn.microsoft.com/en-us/library/aa394531(v=vs.85).aspx + // If `wmic` is obsoloete (later versions of Windows 10), use PowerShell instead. + // If the resulting caption contains the year 2008, 2012, 2016 or 2019, it is a server version, so return a server OS name. + if ((!release || release === os.release()) && ['6.1', '6.2', '6.3', '10.0'].includes(ver)) { + let stdout; + try { + stdout = execa.sync('powershell', ['(Get-CimInstance -ClassName Win32_OperatingSystem).caption']).stdout || ''; + } catch (_) { + stdout = execa.sync('wmic', ['os', 'get', 'Caption']).stdout || ''; + } + + const year = (stdout.match(/2008|2012|2016|2019/) || [])[0]; + + if (year) { + return `Server ${year}`; + } + } + + return names.get(ver); +}; + +module.exports = windowsRelease; + + +/***/ }), + +/***/ 426: +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(156); + +/** + * Transform the data for a request or a response + * + * @param {Object|String} data The data to be transformed + * @param {Array} headers The headers for the request or response + * @param {Array|Function} fns A single function or Array of functions + * @returns {*} The resulting transformed data + */ +module.exports = function transformData(data, headers, fns) { + /*eslint no-param-reassign:0*/ + utils.forEach(fns, function transform(fn) { + data = fn(data, headers); + }); + + return data; +}; + + +/***/ }), + +/***/ 433: +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; + +const pump = __webpack_require__(730); +const bufferStream = __webpack_require__(64); + +class MaxBufferError extends Error { + constructor() { + super('maxBuffer exceeded'); + this.name = 'MaxBufferError'; + } +} + +function getStream(inputStream, options) { + if (!inputStream) { + return Promise.reject(new Error('Expected a stream')); + } + + options = Object.assign({maxBuffer: Infinity}, options); + + const {maxBuffer} = options; + + let stream; + return new Promise((resolve, reject) => { + const rejectPromise = error => { + if (error) { // A null check + error.bufferedData = stream.getBufferedValue(); + } + reject(error); + }; + + stream = pump(inputStream, bufferStream(options), error => { + if (error) { + rejectPromise(error); + return; + } + + resolve(); + }); + + stream.on('data', () => { + if (stream.getBufferedLength() > maxBuffer) { + rejectPromise(new MaxBufferError()); + } + }); + }).then(() => stream.getBufferedValue()); +} + +module.exports = getStream; +module.exports.buffer = (stream, options) => getStream(stream, Object.assign({}, options, {encoding: 'buffer'})); +module.exports.array = (stream, options) => getStream(stream, Object.assign({}, options, {array: true})); +module.exports.MaxBufferError = MaxBufferError; + + +/***/ }), + +/***/ 435: +/***/ (function(module, __unusedexports, __webpack_require__) { + +module.exports = hasPreviousPage + +const deprecate = __webpack_require__(187) +const getPageLinks = __webpack_require__(60) + +function hasPreviousPage (link) { + deprecate(`octokit.hasPreviousPage() – You can use octokit.paginate or async iterators instead: https://github.com/octokit/rest.js#pagination.`) + return getPageLinks(link).prev +} + + +/***/ }), + +/***/ 437: +/***/ (function(module) { + +"use strict"; + +module.exports = (promise, onFinally) => { + onFinally = onFinally || (() => {}); + + return promise.then( + val => new Promise(resolve => { + resolve(onFinally()); + }).then(() => val), + err => new Promise(resolve => { + resolve(onFinally()); + }).then(() => { + throw err; + }) + ); +}; + + +/***/ }), + +/***/ 438: +/***/ (function(module, __unusedexports, __webpack_require__) { + +module.exports = hasFirstPage + +const deprecate = __webpack_require__(187) +const getPageLinks = __webpack_require__(60) + +function hasFirstPage (link) { + deprecate(`octokit.hasFirstPage() – You can use octokit.paginate or async iterators instead: https://github.com/octokit/rest.js#pagination.`) + return getPageLinks(link).first +} + + +/***/ }), + +/***/ 440: +/***/ (function(module, __unusedexports, __webpack_require__) { + +module.exports = hasNextPage + +const deprecate = __webpack_require__(187) +const getPageLinks = __webpack_require__(60) + +function hasNextPage (link) { + deprecate(`octokit.hasNextPage() – You can use octokit.paginate or async iterators instead: https://github.com/octokit/rest.js#pagination.`) + return getPageLinks(link).next +} + + +/***/ }), + +/***/ 441: +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; + + +var enhanceError = __webpack_require__(221); + +/** + * Create an Error with the specified message, config, error code, request and response. + * + * @param {string} message The error message. + * @param {Object} config The config. + * @param {string} [code] The error code (for example, 'ECONNABORTED'). + * @param {Object} [request] The request. + * @param {Object} [response] The response. + * @returns {Error} The created error. + */ +module.exports = function createError(message, config, code, request, response) { + var error = new Error(message); + return enhanceError(error, config, code, request, response); +}; + + +/***/ }), + +/***/ 458: +/***/ (function(module, __unusedexports, __webpack_require__) { + +const factory = __webpack_require__(123); + +module.exports = factory(); + + +/***/ }), + +/***/ 461: +/***/ (function(module, __unusedexports, __webpack_require__) { + +// Note: since nyc uses this module to output coverage, any lines +// that are in the direct sync flow of nyc's outputCoverage are +// ignored, since we can never get coverage for them. +var assert = __webpack_require__(357) +var signals = __webpack_require__(689) +var isWin = /^win/i.test(process.platform) + +var EE = __webpack_require__(614) +/* istanbul ignore if */ +if (typeof EE !== 'function') { + EE = EE.EventEmitter +} + +var emitter +if (process.__signal_exit_emitter__) { + emitter = process.__signal_exit_emitter__ +} else { + emitter = process.__signal_exit_emitter__ = new EE() + emitter.count = 0 + emitter.emitted = {} +} + +// Because this emitter is a global, we have to check to see if a +// previous version of this library failed to enable infinite listeners. +// I know what you're about to say. But literally everything about +// signal-exit is a compromise with evil. Get used to it. +if (!emitter.infinite) { + emitter.setMaxListeners(Infinity) + emitter.infinite = true +} + +module.exports = function (cb, opts) { + assert.equal(typeof cb, 'function', 'a callback must be provided for exit handler') + + if (loaded === false) { + load() + } + + var ev = 'exit' + if (opts && opts.alwaysLast) { + ev = 'afterexit' + } + + var remove = function () { + emitter.removeListener(ev, cb) + if (emitter.listeners('exit').length === 0 && + emitter.listeners('afterexit').length === 0) { + unload() + } + } + emitter.on(ev, cb) + + return remove +} + +module.exports.unload = unload +function unload () { + if (!loaded) { + return + } + loaded = false + + signals.forEach(function (sig) { + try { + process.removeListener(sig, sigListeners[sig]) + } catch (er) {} + }) + process.emit = originalProcessEmit + process.reallyExit = originalProcessReallyExit + emitter.count -= 1 +} + +function emit (event, code, signal) { + if (emitter.emitted[event]) { + return + } + emitter.emitted[event] = true + emitter.emit(event, code, signal) +} + +// { : , ... } +var sigListeners = {} +signals.forEach(function (sig) { + sigListeners[sig] = function listener () { + // If there are no other listeners, an exit is coming! + // Simplest way: remove us and then re-send the signal. + // We know that this will kill the process, so we can + // safely emit now. + var listeners = process.listeners(sig) + if (listeners.length === emitter.count) { + unload() + emit('exit', null, sig) + /* istanbul ignore next */ + emit('afterexit', null, sig) + /* istanbul ignore next */ + if (isWin && sig === 'SIGHUP') { + // "SIGHUP" throws an `ENOSYS` error on Windows, + // so use a supported signal instead + sig = 'SIGINT' + } + process.kill(process.pid, sig) + } + } +}) + +module.exports.signals = function () { + return signals +} + +module.exports.load = load + +var loaded = false + +function load () { + if (loaded) { + return + } + loaded = true + + // This is the number of onSignalExit's that are in play. + // It's important so that we can count the correct number of + // listeners on signals, and don't wait for the other one to + // handle it instead of us. + emitter.count += 1 + + signals = signals.filter(function (sig) { + try { + process.on(sig, sigListeners[sig]) + return true + } catch (er) { + return false + } + }) + + process.emit = processEmit + process.reallyExit = processReallyExit +} + +var originalProcessReallyExit = process.reallyExit +function processReallyExit (code) { + process.exitCode = code || 0 + emit('exit', process.exitCode, null) + /* istanbul ignore next */ + emit('afterexit', process.exitCode, null) + /* istanbul ignore next */ + originalProcessReallyExit.call(process, process.exitCode) +} + +var originalProcessEmit = process.emit +function processEmit (ev, arg) { + if (ev === 'exit') { + if (arg !== undefined) { + process.exitCode = arg + } + var ret = originalProcessEmit.apply(this, arguments) + emit('exit', process.exitCode, null) + /* istanbul ignore next */ + emit('afterexit', process.exitCode, null) + return ret + } else { + return originalProcessEmit.apply(this, arguments) + } +} + + +/***/ }), + +/***/ 464: +/***/ (function(__unusedmodule, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, '__esModule', { value: true }); + +function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } + +var isPlainObject = _interopDefault(__webpack_require__(579)); +var universalUserAgent = __webpack_require__(118); + +function lowercaseKeys(object) { + if (!object) { + return {}; + } + + return Object.keys(object).reduce((newObj, key) => { + newObj[key.toLowerCase()] = object[key]; + return newObj; + }, {}); +} + +function mergeDeep(defaults, options) { + const result = Object.assign({}, defaults); + Object.keys(options).forEach(key => { + if (isPlainObject(options[key])) { + if (!(key in defaults)) Object.assign(result, { + [key]: options[key] + });else result[key] = mergeDeep(defaults[key], options[key]); + } else { + Object.assign(result, { + [key]: options[key] + }); + } + }); + return result; +} + +function merge(defaults, route, options) { + if (typeof route === "string") { + let [method, url] = route.split(" "); + options = Object.assign(url ? { + method, + url + } : { + url: method + }, options); + } else { + options = Object.assign({}, route); + } // lowercase header names before merging with defaults to avoid duplicates + + + options.headers = lowercaseKeys(options.headers); + const mergedOptions = mergeDeep(defaults || {}, options); // mediaType.previews arrays are merged, instead of overwritten + + if (defaults && defaults.mediaType.previews.length) { + mergedOptions.mediaType.previews = defaults.mediaType.previews.filter(preview => !mergedOptions.mediaType.previews.includes(preview)).concat(mergedOptions.mediaType.previews); + } + + mergedOptions.mediaType.previews = mergedOptions.mediaType.previews.map(preview => preview.replace(/-preview/, "")); + return mergedOptions; +} + +function addQueryParameters(url, parameters) { + const separator = /\?/.test(url) ? "&" : "?"; + const names = Object.keys(parameters); + + if (names.length === 0) { + return url; + } + + return url + separator + names.map(name => { + if (name === "q") { + return "q=" + parameters.q.split("+").map(encodeURIComponent).join("+"); + } + + return `${name}=${encodeURIComponent(parameters[name])}`; + }).join("&"); +} + +const urlVariableRegex = /\{[^}]+\}/g; + +function removeNonChars(variableName) { + return variableName.replace(/^\W+|\W+$/g, "").split(/,/); +} + +function extractUrlVariableNames(url) { + const matches = url.match(urlVariableRegex); + + if (!matches) { + return []; + } + + return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []); +} + +function omit(object, keysToOmit) { + return Object.keys(object).filter(option => !keysToOmit.includes(option)).reduce((obj, key) => { + obj[key] = object[key]; + return obj; + }, {}); +} + +// Based on https://github.com/bramstein/url-template, licensed under BSD +// TODO: create separate package. +// +// Copyright (c) 2012-2014, Bram Stein +// All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions +// are met: +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// 3. The name of the author may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED +// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +// EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +/* istanbul ignore file */ +function encodeReserved(str) { + return str.split(/(%[0-9A-Fa-f]{2})/g).map(function (part) { + if (!/%[0-9A-Fa-f]/.test(part)) { + part = encodeURI(part).replace(/%5B/g, "[").replace(/%5D/g, "]"); + } + + return part; + }).join(""); +} + +function encodeUnreserved(str) { + return encodeURIComponent(str).replace(/[!'()*]/g, function (c) { + return "%" + c.charCodeAt(0).toString(16).toUpperCase(); + }); +} + +function encodeValue(operator, value, key) { + value = operator === "+" || operator === "#" ? encodeReserved(value) : encodeUnreserved(value); + + if (key) { + return encodeUnreserved(key) + "=" + value; + } else { + return value; + } +} + +function isDefined(value) { + return value !== undefined && value !== null; +} + +function isKeyOperator(operator) { + return operator === ";" || operator === "&" || operator === "?"; +} + +function getValues(context, operator, key, modifier) { + var value = context[key], + result = []; + + if (isDefined(value) && value !== "") { + if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") { + value = value.toString(); + + if (modifier && modifier !== "*") { + value = value.substring(0, parseInt(modifier, 10)); + } + + result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : "")); + } else { + if (modifier === "*") { + if (Array.isArray(value)) { + value.filter(isDefined).forEach(function (value) { + result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : "")); + }); + } else { + Object.keys(value).forEach(function (k) { + if (isDefined(value[k])) { + result.push(encodeValue(operator, value[k], k)); + } + }); + } + } else { + const tmp = []; + + if (Array.isArray(value)) { + value.filter(isDefined).forEach(function (value) { + tmp.push(encodeValue(operator, value)); + }); + } else { + Object.keys(value).forEach(function (k) { + if (isDefined(value[k])) { + tmp.push(encodeUnreserved(k)); + tmp.push(encodeValue(operator, value[k].toString())); + } + }); + } + + if (isKeyOperator(operator)) { + result.push(encodeUnreserved(key) + "=" + tmp.join(",")); + } else if (tmp.length !== 0) { + result.push(tmp.join(",")); + } + } + } + } else { + if (operator === ";") { + if (isDefined(value)) { + result.push(encodeUnreserved(key)); + } + } else if (value === "" && (operator === "&" || operator === "?")) { + result.push(encodeUnreserved(key) + "="); + } else if (value === "") { + result.push(""); + } + } + + return result; +} + +function parseUrl(template) { + return { + expand: expand.bind(null, template) + }; +} + +function expand(template, context) { + var operators = ["+", "#", ".", "/", ";", "?", "&"]; + return template.replace(/\{([^\{\}]+)\}|([^\{\}]+)/g, function (_, expression, literal) { + if (expression) { + let operator = ""; + const values = []; + + if (operators.indexOf(expression.charAt(0)) !== -1) { + operator = expression.charAt(0); + expression = expression.substr(1); + } + + expression.split(/,/g).forEach(function (variable) { + var tmp = /([^:\*]*)(?::(\d+)|(\*))?/.exec(variable); + values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3])); + }); + + if (operator && operator !== "+") { + var separator = ","; + + if (operator === "?") { + separator = "&"; + } else if (operator !== "#") { + separator = operator; + } + + return (values.length !== 0 ? operator : "") + values.join(separator); + } else { + return values.join(","); + } + } else { + return encodeReserved(literal); + } + }); +} + +function parse(options) { + // https://fetch.spec.whatwg.org/#methods + let method = options.method.toUpperCase(); // replace :varname with {varname} to make it RFC 6570 compatible + + let url = (options.url || "/").replace(/:([a-z]\w+)/g, "{+$1}"); + let headers = Object.assign({}, options.headers); + let body; + let parameters = omit(options, ["method", "baseUrl", "url", "headers", "request", "mediaType"]); // extract variable names from URL to calculate remaining variables later + + const urlVariableNames = extractUrlVariableNames(url); + url = parseUrl(url).expand(parameters); + + if (!/^http/.test(url)) { + url = options.baseUrl + url; + } + + const omittedParameters = Object.keys(options).filter(option => urlVariableNames.includes(option)).concat("baseUrl"); + const remainingParameters = omit(parameters, omittedParameters); + const isBinaryRequset = /application\/octet-stream/i.test(headers.accept); + + if (!isBinaryRequset) { + if (options.mediaType.format) { + // e.g. application/vnd.github.v3+json => application/vnd.github.v3.raw + headers.accept = headers.accept.split(/,/).map(preview => preview.replace(/application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/, `application/vnd$1$2.${options.mediaType.format}`)).join(","); + } + + if (options.mediaType.previews.length) { + const previewsFromAcceptHeader = headers.accept.match(/[\w-]+(?=-preview)/g) || []; + headers.accept = previewsFromAcceptHeader.concat(options.mediaType.previews).map(preview => { + const format = options.mediaType.format ? `.${options.mediaType.format}` : "+json"; + return `application/vnd.github.${preview}-preview${format}`; + }).join(","); + } + } // for GET/HEAD requests, set URL query parameters from remaining parameters + // for PATCH/POST/PUT/DELETE requests, set request body from remaining parameters + + + if (["GET", "HEAD"].includes(method)) { + url = addQueryParameters(url, remainingParameters); + } else { + if ("data" in remainingParameters) { + body = remainingParameters.data; + } else { + if (Object.keys(remainingParameters).length) { + body = remainingParameters; + } else { + headers["content-length"] = 0; + } + } + } // default content-type for JSON if body is set + + + if (!headers["content-type"] && typeof body !== "undefined") { + headers["content-type"] = "application/json; charset=utf-8"; + } // GitHub expects 'content-length: 0' header for PUT/PATCH requests without body. + // fetch does not allow to set `content-length` header, but we can set body to an empty string + + + if (["PATCH", "PUT"].includes(method) && typeof body === "undefined") { + body = ""; + } // Only return body/request keys if present + + + return Object.assign({ + method, + url, + headers + }, typeof body !== "undefined" ? { + body + } : null, options.request ? { + request: options.request + } : null); +} + +function endpointWithDefaults(defaults, route, options) { + return parse(merge(defaults, route, options)); +} + +function withDefaults(oldDefaults, newDefaults) { + const DEFAULTS = merge(oldDefaults, newDefaults); + const endpoint = endpointWithDefaults.bind(null, DEFAULTS); + return Object.assign(endpoint, { + DEFAULTS, + defaults: withDefaults.bind(null, DEFAULTS), + merge: merge.bind(null, DEFAULTS), + parse + }); +} + +const VERSION = "6.0.1"; + +const userAgent = `octokit-endpoint.js/${VERSION} ${universalUserAgent.getUserAgent()}`; // DEFAULTS has all properties set that EndpointOptions has, except url. +// So we use RequestParameters and add method as additional required property. + +const DEFAULTS = { + method: "GET", + baseUrl: "https://api.github.com", + headers: { + accept: "application/vnd.github.v3+json", + "user-agent": userAgent + }, + mediaType: { + format: "", + previews: [] + } +}; + +const endpoint = withDefaults(null, DEFAULTS); + +exports.endpoint = endpoint; +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ 472: +/***/ (function(__unusedmodule, exports, __webpack_require__) { + +"use strict"; + +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; + result["default"] = mod; + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const command_1 = __webpack_require__(515); +const os = __importStar(__webpack_require__(87)); +const path = __importStar(__webpack_require__(622)); +/** + * The code to exit an action + */ +var ExitCode; +(function (ExitCode) { + /** + * A code indicating that the action was successful + */ + ExitCode[ExitCode["Success"] = 0] = "Success"; + /** + * A code indicating that the action was a failure + */ + ExitCode[ExitCode["Failure"] = 1] = "Failure"; +})(ExitCode = exports.ExitCode || (exports.ExitCode = {})); +//----------------------------------------------------------------------- +// Variables +//----------------------------------------------------------------------- +/** + * Sets env variable for this action and future actions in the job + * @param name the name of the variable to set + * @param val the value of the variable. Non-string values will be converted to a string via JSON.stringify + */ +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function exportVariable(name, val) { + const convertedVal = command_1.toCommandValue(val); + process.env[name] = convertedVal; + command_1.issueCommand('set-env', { name }, convertedVal); +} +exports.exportVariable = exportVariable; +/** + * Registers a secret which will get masked from logs + * @param secret value of the secret + */ +function setSecret(secret) { + command_1.issueCommand('add-mask', {}, secret); +} +exports.setSecret = setSecret; +/** + * Prepends inputPath to the PATH (for this action and future actions) + * @param inputPath + */ +function addPath(inputPath) { + command_1.issueCommand('add-path', {}, inputPath); + process.env['PATH'] = `${inputPath}${path.delimiter}${process.env['PATH']}`; +} +exports.addPath = addPath; +/** + * Gets the value of an input. The value is also trimmed. + * + * @param name name of the input to get + * @param options optional. See InputOptions. + * @returns string + */ +function getInput(name, options) { + const val = process.env[`INPUT_${name.replace(/ /g, '_').toUpperCase()}`] || ''; + if (options && options.required && !val) { + throw new Error(`Input required and not supplied: ${name}`); + } + return val.trim(); +} +exports.getInput = getInput; +/** + * Sets the value of an output. + * + * @param name name of the output to set + * @param value value to store. Non-string values will be converted to a string via JSON.stringify + */ +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function setOutput(name, value) { + command_1.issueCommand('set-output', { name }, value); +} +exports.setOutput = setOutput; +/** + * Enables or disables the echoing of commands into stdout for the rest of the step. + * Echoing is disabled by default if ACTIONS_STEP_DEBUG is not set. + * + */ +function setCommandEcho(enabled) { + command_1.issue('echo', enabled ? 'on' : 'off'); +} +exports.setCommandEcho = setCommandEcho; +//----------------------------------------------------------------------- +// Results +//----------------------------------------------------------------------- +/** + * Sets the action status to failed. + * When the action exits it will be with an exit code of 1 + * @param message add error issue message + */ +function setFailed(message) { + process.exitCode = ExitCode.Failure; + error(message); +} +exports.setFailed = setFailed; +//----------------------------------------------------------------------- +// Logging Commands +//----------------------------------------------------------------------- +/** + * Gets whether Actions Step Debug is on or not + */ +function isDebug() { + return process.env['RUNNER_DEBUG'] === '1'; +} +exports.isDebug = isDebug; +/** + * Writes debug message to user log + * @param message debug message + */ +function debug(message) { + command_1.issueCommand('debug', {}, message); +} +exports.debug = debug; +/** + * Adds an error issue + * @param message error issue message. Errors will be converted to string via toString() + */ +function error(message) { + command_1.issue('error', message instanceof Error ? message.toString() : message); +} +exports.error = error; +/** + * Adds an warning issue + * @param message warning issue message. Errors will be converted to string via toString() + */ +function warning(message) { + command_1.issue('warning', message instanceof Error ? message.toString() : message); +} +exports.warning = warning; +/** + * Writes info to log with console.log. + * @param message info message + */ +function info(message) { + process.stdout.write(message + os.EOL); +} +exports.info = info; +/** + * Begin an output group. + * + * Output until the next `groupEnd` will be foldable in this group + * + * @param name The name of the output group + */ +function startGroup(name) { + command_1.issue('group', name); +} +exports.startGroup = startGroup; +/** + * End an output group. + */ +function endGroup() { + command_1.issue('endgroup'); +} +exports.endGroup = endGroup; +/** + * Wrap an asynchronous function call in a group. + * + * Returns the same type as the function itself. + * + * @param name The name of the group + * @param fn The function to wrap in the group + */ +function group(name, fn) { + return __awaiter(this, void 0, void 0, function* () { + startGroup(name); + let result; + try { + result = yield fn(); + } + finally { + endGroup(); + } + return result; + }); +} +exports.group = group; +//----------------------------------------------------------------------- +// Wrapper action state +//----------------------------------------------------------------------- +/** + * Saves state for current action, the state can only be retrieved by this action's post job execution. + * + * @param name name of the state to store + * @param value value to store. Non-string values will be converted to a string via JSON.stringify + */ +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function saveState(name, value) { + command_1.issueCommand('save-state', { name }, value); +} +exports.saveState = saveState; +/** + * Gets the value of an state set by this action's main execution. + * + * @param name name of the state to get + * @returns string + */ +function getState(name) { + return process.env[`STATE_${name}`] || ''; +} +exports.getState = getState; +//# sourceMappingURL=core.js.map + +/***/ }), + +/***/ 480: +/***/ (function(module) { + +/** + * lodash (Custom Build) + * Build: `lodash modularize exports="npm" -o ./` + * Copyright jQuery Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */ + +/** Used as the size to enable large array optimizations. */ +var LARGE_ARRAY_SIZE = 200; + +/** Used to stand-in for `undefined` hash values. */ +var HASH_UNDEFINED = '__lodash_hash_undefined__'; + +/** Used as references for various `Number` constants. */ +var INFINITY = 1 / 0; + +/** `Object#toString` result references. */ +var funcTag = '[object Function]', + genTag = '[object GeneratorFunction]'; + +/** + * Used to match `RegExp` + * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). + */ +var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; + +/** Used to detect host constructors (Safari). */ +var reIsHostCtor = /^\[object .+?Constructor\]$/; + +/** Detect free variable `global` from Node.js. */ +var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; + +/** Detect free variable `self`. */ +var freeSelf = typeof self == 'object' && self && self.Object === Object && self; + +/** Used as a reference to the global object. */ +var root = freeGlobal || freeSelf || Function('return this')(); + +/** + * A specialized version of `_.includes` for arrays without support for + * specifying an index to search from. + * + * @private + * @param {Array} [array] The array to inspect. + * @param {*} target The value to search for. + * @returns {boolean} Returns `true` if `target` is found, else `false`. + */ +function arrayIncludes(array, value) { + var length = array ? array.length : 0; + return !!length && baseIndexOf(array, value, 0) > -1; +} + +/** + * This function is like `arrayIncludes` except that it accepts a comparator. + * + * @private + * @param {Array} [array] The array to inspect. + * @param {*} target The value to search for. + * @param {Function} comparator The comparator invoked per element. + * @returns {boolean} Returns `true` if `target` is found, else `false`. + */ +function arrayIncludesWith(array, value, comparator) { + var index = -1, + length = array ? array.length : 0; + + while (++index < length) { + if (comparator(value, array[index])) { + return true; + } + } + return false; +} + +/** + * The base implementation of `_.findIndex` and `_.findLastIndex` without + * support for iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Function} predicate The function invoked per iteration. + * @param {number} fromIndex The index to search from. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function baseFindIndex(array, predicate, fromIndex, fromRight) { + var length = array.length, + index = fromIndex + (fromRight ? 1 : -1); + + while ((fromRight ? index-- : ++index < length)) { + if (predicate(array[index], index, array)) { + return index; + } + } + return -1; +} + +/** + * The base implementation of `_.indexOf` without `fromIndex` bounds checks. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function baseIndexOf(array, value, fromIndex) { + if (value !== value) { + return baseFindIndex(array, baseIsNaN, fromIndex); + } + var index = fromIndex - 1, + length = array.length; + + while (++index < length) { + if (array[index] === value) { + return index; + } + } + return -1; +} + +/** + * The base implementation of `_.isNaN` without support for number objects. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. + */ +function baseIsNaN(value) { + return value !== value; +} + +/** + * Checks if a cache value for `key` exists. + * + * @private + * @param {Object} cache The cache to query. + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function cacheHas(cache, key) { + return cache.has(key); +} + +/** + * Gets the value at `key` of `object`. + * + * @private + * @param {Object} [object] The object to query. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. + */ +function getValue(object, key) { + return object == null ? undefined : object[key]; +} + +/** + * Checks if `value` is a host object in IE < 9. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a host object, else `false`. + */ +function isHostObject(value) { + // Many host objects are `Object` objects that can coerce to strings + // despite having improperly defined `toString` methods. + var result = false; + if (value != null && typeof value.toString != 'function') { + try { + result = !!(value + ''); + } catch (e) {} + } + return result; +} + +/** + * Converts `set` to an array of its values. + * + * @private + * @param {Object} set The set to convert. + * @returns {Array} Returns the values. + */ +function setToArray(set) { + var index = -1, + result = Array(set.size); + + set.forEach(function(value) { + result[++index] = value; + }); + return result; +} + +/** Used for built-in method references. */ +var arrayProto = Array.prototype, + funcProto = Function.prototype, + objectProto = Object.prototype; + +/** Used to detect overreaching core-js shims. */ +var coreJsData = root['__core-js_shared__']; + +/** Used to detect methods masquerading as native. */ +var maskSrcKey = (function() { + var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); + return uid ? ('Symbol(src)_1.' + uid) : ''; +}()); + +/** Used to resolve the decompiled source of functions. */ +var funcToString = funcProto.toString; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ +var objectToString = objectProto.toString; + +/** Used to detect if a method is native. */ +var reIsNative = RegExp('^' + + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') + .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' +); + +/** Built-in value references. */ +var splice = arrayProto.splice; + +/* Built-in method references that are verified to be native. */ +var Map = getNative(root, 'Map'), + Set = getNative(root, 'Set'), + nativeCreate = getNative(Object, 'create'); + +/** + * Creates a hash object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function Hash(entries) { + var index = -1, + length = entries ? entries.length : 0; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} + +/** + * Removes all key-value entries from the hash. + * + * @private + * @name clear + * @memberOf Hash + */ +function hashClear() { + this.__data__ = nativeCreate ? nativeCreate(null) : {}; +} + +/** + * Removes `key` and its value from the hash. + * + * @private + * @name delete + * @memberOf Hash + * @param {Object} hash The hash to modify. + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function hashDelete(key) { + return this.has(key) && delete this.__data__[key]; +} + +/** + * Gets the hash value for `key`. + * + * @private + * @name get + * @memberOf Hash + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function hashGet(key) { + var data = this.__data__; + if (nativeCreate) { + var result = data[key]; + return result === HASH_UNDEFINED ? undefined : result; + } + return hasOwnProperty.call(data, key) ? data[key] : undefined; +} + +/** + * Checks if a hash value for `key` exists. + * + * @private + * @name has + * @memberOf Hash + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function hashHas(key) { + var data = this.__data__; + return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key); +} + +/** + * Sets the hash `key` to `value`. + * + * @private + * @name set + * @memberOf Hash + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the hash instance. + */ +function hashSet(key, value) { + var data = this.__data__; + data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; + return this; +} + +// Add methods to `Hash`. +Hash.prototype.clear = hashClear; +Hash.prototype['delete'] = hashDelete; +Hash.prototype.get = hashGet; +Hash.prototype.has = hashHas; +Hash.prototype.set = hashSet; + +/** + * Creates an list cache object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function ListCache(entries) { + var index = -1, + length = entries ? entries.length : 0; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} + +/** + * Removes all key-value entries from the list cache. + * + * @private + * @name clear + * @memberOf ListCache + */ +function listCacheClear() { + this.__data__ = []; +} + +/** + * Removes `key` and its value from the list cache. + * + * @private + * @name delete + * @memberOf ListCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function listCacheDelete(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + return false; + } + var lastIndex = data.length - 1; + if (index == lastIndex) { + data.pop(); + } else { + splice.call(data, index, 1); + } + return true; +} + +/** + * Gets the list cache value for `key`. + * + * @private + * @name get + * @memberOf ListCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function listCacheGet(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + return index < 0 ? undefined : data[index][1]; +} + +/** + * Checks if a list cache value for `key` exists. + * + * @private + * @name has + * @memberOf ListCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function listCacheHas(key) { + return assocIndexOf(this.__data__, key) > -1; +} + +/** + * Sets the list cache `key` to `value`. + * + * @private + * @name set + * @memberOf ListCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the list cache instance. + */ +function listCacheSet(key, value) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + data.push([key, value]); + } else { + data[index][1] = value; + } + return this; +} + +// Add methods to `ListCache`. +ListCache.prototype.clear = listCacheClear; +ListCache.prototype['delete'] = listCacheDelete; +ListCache.prototype.get = listCacheGet; +ListCache.prototype.has = listCacheHas; +ListCache.prototype.set = listCacheSet; + +/** + * Creates a map cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function MapCache(entries) { + var index = -1, + length = entries ? entries.length : 0; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} + +/** + * Removes all key-value entries from the map. + * + * @private + * @name clear + * @memberOf MapCache + */ +function mapCacheClear() { + this.__data__ = { + 'hash': new Hash, + 'map': new (Map || ListCache), + 'string': new Hash + }; +} + +/** + * Removes `key` and its value from the map. + * + * @private + * @name delete + * @memberOf MapCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function mapCacheDelete(key) { + return getMapData(this, key)['delete'](key); +} + +/** + * Gets the map value for `key`. + * + * @private + * @name get + * @memberOf MapCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function mapCacheGet(key) { + return getMapData(this, key).get(key); +} + +/** + * Checks if a map value for `key` exists. + * + * @private + * @name has + * @memberOf MapCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function mapCacheHas(key) { + return getMapData(this, key).has(key); +} + +/** + * Sets the map `key` to `value`. + * + * @private + * @name set + * @memberOf MapCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the map cache instance. + */ +function mapCacheSet(key, value) { + getMapData(this, key).set(key, value); + return this; +} + +// Add methods to `MapCache`. +MapCache.prototype.clear = mapCacheClear; +MapCache.prototype['delete'] = mapCacheDelete; +MapCache.prototype.get = mapCacheGet; +MapCache.prototype.has = mapCacheHas; +MapCache.prototype.set = mapCacheSet; + +/** + * + * Creates an array cache object to store unique values. + * + * @private + * @constructor + * @param {Array} [values] The values to cache. + */ +function SetCache(values) { + var index = -1, + length = values ? values.length : 0; + + this.__data__ = new MapCache; + while (++index < length) { + this.add(values[index]); + } +} + +/** + * Adds `value` to the array cache. + * + * @private + * @name add + * @memberOf SetCache + * @alias push + * @param {*} value The value to cache. + * @returns {Object} Returns the cache instance. + */ +function setCacheAdd(value) { + this.__data__.set(value, HASH_UNDEFINED); + return this; +} + +/** + * Checks if `value` is in the array cache. + * + * @private + * @name has + * @memberOf SetCache + * @param {*} value The value to search for. + * @returns {number} Returns `true` if `value` is found, else `false`. + */ +function setCacheHas(value) { + return this.__data__.has(value); +} + +// Add methods to `SetCache`. +SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; +SetCache.prototype.has = setCacheHas; + +/** + * Gets the index at which the `key` is found in `array` of key-value pairs. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} key The key to search for. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function assocIndexOf(array, key) { + var length = array.length; + while (length--) { + if (eq(array[length][0], key)) { + return length; + } + } + return -1; +} + +/** + * The base implementation of `_.isNative` without bad shim checks. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a native function, + * else `false`. + */ +function baseIsNative(value) { + if (!isObject(value) || isMasked(value)) { + return false; + } + var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor; + return pattern.test(toSource(value)); +} + +/** + * The base implementation of `_.uniqBy` without support for iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new duplicate free array. + */ +function baseUniq(array, iteratee, comparator) { + var index = -1, + includes = arrayIncludes, + length = array.length, + isCommon = true, + result = [], + seen = result; + + if (comparator) { + isCommon = false; + includes = arrayIncludesWith; + } + else if (length >= LARGE_ARRAY_SIZE) { + var set = iteratee ? null : createSet(array); + if (set) { + return setToArray(set); + } + isCommon = false; + includes = cacheHas; + seen = new SetCache; + } + else { + seen = iteratee ? [] : result; + } + outer: + while (++index < length) { + var value = array[index], + computed = iteratee ? iteratee(value) : value; + + value = (comparator || value !== 0) ? value : 0; + if (isCommon && computed === computed) { + var seenIndex = seen.length; + while (seenIndex--) { + if (seen[seenIndex] === computed) { + continue outer; + } + } + if (iteratee) { + seen.push(computed); + } + result.push(value); + } + else if (!includes(seen, computed, comparator)) { + if (seen !== result) { + seen.push(computed); + } + result.push(value); + } + } + return result; +} + +/** + * Creates a set object of `values`. + * + * @private + * @param {Array} values The values to add to the set. + * @returns {Object} Returns the new set. + */ +var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) { + return new Set(values); +}; + +/** + * Gets the data for `map`. + * + * @private + * @param {Object} map The map to query. + * @param {string} key The reference key. + * @returns {*} Returns the map data. + */ +function getMapData(map, key) { + var data = map.__data__; + return isKeyable(key) + ? data[typeof key == 'string' ? 'string' : 'hash'] + : data.map; +} + +/** + * Gets the native function at `key` of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the method to get. + * @returns {*} Returns the function if it's native, else `undefined`. + */ +function getNative(object, key) { + var value = getValue(object, key); + return baseIsNative(value) ? value : undefined; +} + +/** + * Checks if `value` is suitable for use as unique object key. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is suitable, else `false`. + */ +function isKeyable(value) { + var type = typeof value; + return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') + ? (value !== '__proto__') + : (value === null); +} + +/** + * Checks if `func` has its source masked. + * + * @private + * @param {Function} func The function to check. + * @returns {boolean} Returns `true` if `func` is masked, else `false`. + */ +function isMasked(func) { + return !!maskSrcKey && (maskSrcKey in func); +} + +/** + * Converts `func` to its source code. + * + * @private + * @param {Function} func The function to process. + * @returns {string} Returns the source code. + */ +function toSource(func) { + if (func != null) { + try { + return funcToString.call(func); + } catch (e) {} + try { + return (func + ''); + } catch (e) {} + } + return ''; +} + +/** + * Creates a duplicate-free version of an array, using + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons, in which only the first occurrence of each + * element is kept. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @returns {Array} Returns the new duplicate free array. + * @example + * + * _.uniq([2, 1, 2]); + * // => [2, 1] + */ +function uniq(array) { + return (array && array.length) + ? baseUniq(array) + : []; +} + +/** + * Performs a + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * comparison between two values to determine if they are equivalent. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * var object = { 'a': 1 }; + * var other = { 'a': 1 }; + * + * _.eq(object, object); + * // => true + * + * _.eq(object, other); + * // => false + * + * _.eq('a', 'a'); + * // => true + * + * _.eq('a', Object('a')); + * // => false + * + * _.eq(NaN, NaN); + * // => true + */ +function eq(value, other) { + return value === other || (value !== value && other !== other); +} + +/** + * Checks if `value` is classified as a `Function` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a function, else `false`. + * @example + * + * _.isFunction(_); + * // => true + * + * _.isFunction(/abc/); + * // => false + */ +function isFunction(value) { + // The use of `Object#toString` avoids issues with the `typeof` operator + // in Safari 8-9 which returns 'object' for typed array and other constructors. + var tag = isObject(value) ? objectToString.call(value) : ''; + return tag == funcTag || tag == genTag; +} + +/** + * Checks if `value` is the + * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) + * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(_.noop); + * // => true + * + * _.isObject(null); + * // => false + */ +function isObject(value) { + var type = typeof value; + return !!value && (type == 'object' || type == 'function'); +} + +/** + * This method returns `undefined`. + * + * @static + * @memberOf _ + * @since 2.3.0 + * @category Util + * @example + * + * _.times(2, _.noop); + * // => [undefined, undefined] + */ +function noop() { + // No operation performed. +} + +module.exports = uniq; + + +/***/ }), + +/***/ 481: +/***/ (function(module, __unusedexports, __webpack_require__) { + +const { requestLog } = __webpack_require__(555); +const { + restEndpointMethods +} = __webpack_require__(208); + +const Core = __webpack_require__(458); + +const CORE_PLUGINS = [ + __webpack_require__(839), + __webpack_require__(965), // deprecated: remove in v17 + requestLog, + __webpack_require__(815), + restEndpointMethods, + __webpack_require__(804), + + __webpack_require__(172) // deprecated: remove in v17 +]; + +const OctokitRest = Core.plugin(CORE_PLUGINS); + +function DeprecatedOctokit(options) { + const warn = + options && options.log && options.log.warn + ? options.log.warn + : console.warn; + warn( + '[@octokit/rest] `const Octokit = require("@octokit/rest")` is deprecated. Use `const { Octokit } = require("@octokit/rest")` instead' + ); + return new OctokitRest(options); +} + +const Octokit = Object.assign(DeprecatedOctokit, { + Octokit: OctokitRest +}); + +Object.keys(OctokitRest).forEach(key => { + /* istanbul ignore else */ + if (OctokitRest.hasOwnProperty(key)) { + Octokit[key] = OctokitRest[key]; + } +}); + +module.exports = Octokit; + + +/***/ }), + +/***/ 500: +/***/ (function(module) { + +module.exports = {"name":"axios","version":"0.19.2","description":"Promise based HTTP client for the browser and node.js","main":"index.js","scripts":{"test":"grunt test && bundlesize","start":"node ./sandbox/server.js","build":"NODE_ENV=production grunt build","preversion":"npm test","version":"npm run build && grunt version && git add -A dist && git add CHANGELOG.md bower.json package.json","postversion":"git push && git push --tags","examples":"node ./examples/server.js","coveralls":"cat coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","fix":"eslint --fix lib/**/*.js"},"repository":{"type":"git","url":"https://github.com/axios/axios.git"},"keywords":["xhr","http","ajax","promise","node"],"author":"Matt Zabriskie","license":"MIT","bugs":{"url":"https://github.com/axios/axios/issues"},"homepage":"https://github.com/axios/axios","devDependencies":{"bundlesize":"^0.17.0","coveralls":"^3.0.0","es6-promise":"^4.2.4","grunt":"^1.0.2","grunt-banner":"^0.6.0","grunt-cli":"^1.2.0","grunt-contrib-clean":"^1.1.0","grunt-contrib-watch":"^1.0.0","grunt-eslint":"^20.1.0","grunt-karma":"^2.0.0","grunt-mocha-test":"^0.13.3","grunt-ts":"^6.0.0-beta.19","grunt-webpack":"^1.0.18","istanbul-instrumenter-loader":"^1.0.0","jasmine-core":"^2.4.1","karma":"^1.3.0","karma-chrome-launcher":"^2.2.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.1.0","karma-jasmine":"^1.1.1","karma-jasmine-ajax":"^0.1.13","karma-opera-launcher":"^1.0.0","karma-safari-launcher":"^1.0.0","karma-sauce-launcher":"^1.2.0","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^1.7.0","load-grunt-tasks":"^3.5.2","minimist":"^1.2.0","mocha":"^5.2.0","sinon":"^4.5.0","typescript":"^2.8.1","url-search-params":"^0.10.0","webpack":"^1.13.1","webpack-dev-server":"^1.14.1"},"browser":{"./lib/adapters/http.js":"./lib/adapters/xhr.js"},"typings":"./index.d.ts","dependencies":{"follow-redirects":"1.5.10"},"bundlesize":[{"path":"./dist/axios.min.js","threshold":"5kB"}],"_resolved":"https://registry.npmjs.org/axios/-/axios-0.19.2.tgz","_integrity":"sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==","_from":"axios@0.19.2"}; + +/***/ }), + +/***/ 511: +/***/ (function(module, __unusedexports, __webpack_require__) { + +module.exports = authenticationRequestError; + +const { RequestError } = __webpack_require__(905); + +function authenticationRequestError(state, error, options) { + if (!error.headers) throw error; + + const otpRequired = /required/.test(error.headers["x-github-otp"] || ""); + // handle "2FA required" error only + if (error.status !== 401 || !otpRequired) { + throw error; + } + + if ( + error.status === 401 && + otpRequired && + error.request && + error.request.headers["x-github-otp"] + ) { + if (state.otp) { + delete state.otp; // no longer valid, request again + } else { + throw new RequestError( + "Invalid one-time password for two-factor authentication", + 401, + { + headers: error.headers, + request: options + } + ); + } + } + + if (typeof state.auth.on2fa !== "function") { + throw new RequestError( + "2FA required, but options.on2fa is not a function. See https://github.com/octokit/rest.js#authentication", + 401, + { + headers: error.headers, + request: options + } + ); + } + + return Promise.resolve() + .then(() => { + return state.auth.on2fa(); + }) + .then(oneTimePassword => { + const newOptions = Object.assign(options, { + headers: Object.assign(options.headers, { + "x-github-otp": oneTimePassword + }) + }); + return state.octokit.request(newOptions).then(response => { + // If OTP still valid, then persist it for following requests + state.otp = oneTimePassword; + return response; + }); + }); +} + + +/***/ }), + +/***/ 515: +/***/ (function(__unusedmodule, exports, __webpack_require__) { + +"use strict"; + +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; + result["default"] = mod; + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const os = __importStar(__webpack_require__(87)); +/** + * Commands + * + * Command Format: + * ::name key=value,key=value::message + * + * Examples: + * ::warning::This is the message + * ::set-env name=MY_VAR::some value + */ +function issueCommand(command, properties, message) { + const cmd = new Command(command, properties, message); + process.stdout.write(cmd.toString() + os.EOL); +} +exports.issueCommand = issueCommand; +function issue(name, message = '') { + issueCommand(name, {}, message); +} +exports.issue = issue; +const CMD_STRING = '::'; +class Command { + constructor(command, properties, message) { + if (!command) { + command = 'missing.command'; + } + this.command = command; + this.properties = properties; + this.message = message; + } + toString() { + let cmdStr = CMD_STRING + this.command; + if (this.properties && Object.keys(this.properties).length > 0) { + cmdStr += ' '; + let first = true; + for (const key in this.properties) { + if (this.properties.hasOwnProperty(key)) { + const val = this.properties[key]; + if (val) { + if (first) { + first = false; + } + else { + cmdStr += ','; + } + cmdStr += `${key}=${escapeProperty(val)}`; + } + } + } + } + cmdStr += `${CMD_STRING}${escapeData(this.message)}`; + return cmdStr; + } +} +/** + * Sanitizes an input into a string so it can be passed into issueCommand safely + * @param input input to sanitize into a string + */ +function toCommandValue(input) { + if (input === null || input === undefined) { + return ''; + } + else if (typeof input === 'string' || input instanceof String) { + return input; + } + return JSON.stringify(input); +} +exports.toCommandValue = toCommandValue; +function escapeData(s) { + return toCommandValue(s) + .replace(/%/g, '%25') + .replace(/\r/g, '%0D') + .replace(/\n/g, '%0A'); +} +function escapeProperty(s) { + return toCommandValue(s) + .replace(/%/g, '%25') + .replace(/\r/g, '%0D') + .replace(/\n/g, '%0A') + .replace(/:/g, '%3A') + .replace(/,/g, '%2C'); +} +//# sourceMappingURL=command.js.map + +/***/ }), + +/***/ 523: +/***/ (function(module, __unusedexports, __webpack_require__) { + +/** + * Detect Electron renderer process, which is node, but we should + * treat as a browser. + */ + +if (typeof process === 'undefined' || process.type === 'renderer') { + module.exports = __webpack_require__(321); +} else { + module.exports = __webpack_require__(917); +} + + +/***/ }), + +/***/ 525: +/***/ (function(module, __unusedexports, __webpack_require__) { + +module.exports = registerPlugin; + +const factory = __webpack_require__(123); + +function registerPlugin(plugins, pluginFunction) { + return factory( + plugins.includes(pluginFunction) ? plugins : plugins.concat(pluginFunction) + ); +} + + +/***/ }), + +/***/ 538: +/***/ (function(__unusedmodule, exports, __webpack_require__) { + +"use strict"; + +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; + result["default"] = mod; + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +// Originally pulled from https://github.com/JasonEtco/actions-toolkit/blob/master/src/github.ts +const graphql_1 = __webpack_require__(234); +const rest_1 = __webpack_require__(481); +const Context = __importStar(__webpack_require__(650)); +const httpClient = __importStar(__webpack_require__(842)); +// We need this in order to extend Octokit +rest_1.Octokit.prototype = new rest_1.Octokit(); +exports.context = new Context.Context(); +class GitHub extends rest_1.Octokit { + constructor(token, opts) { + super(GitHub.getOctokitOptions(GitHub.disambiguate(token, opts))); + this.graphql = GitHub.getGraphQL(GitHub.disambiguate(token, opts)); + } + /** + * Disambiguates the constructor overload parameters + */ + static disambiguate(token, opts) { + return [ + typeof token === 'string' ? token : '', + typeof token === 'object' ? token : opts || {} + ]; + } + static getOctokitOptions(args) { + const token = args[0]; + const options = Object.assign({}, args[1]); // Shallow clone - don't mutate the object provided by the caller + // Auth + const auth = GitHub.getAuthString(token, options); + if (auth) { + options.auth = auth; + } + // Proxy + const agent = GitHub.getProxyAgent(options); + if (agent) { + // Shallow clone - don't mutate the object provided by the caller + options.request = options.request ? Object.assign({}, options.request) : {}; + // Set the agent + options.request.agent = agent; + } + return options; + } + static getGraphQL(args) { + const defaults = {}; + const token = args[0]; + const options = args[1]; + // Authorization + const auth = this.getAuthString(token, options); + if (auth) { + defaults.headers = { + authorization: auth + }; + } + // Proxy + const agent = GitHub.getProxyAgent(options); + if (agent) { + defaults.request = { agent }; + } + return graphql_1.graphql.defaults(defaults); + } + static getAuthString(token, options) { + // Validate args + if (!token && !options.auth) { + throw new Error('Parameter token or opts.auth is required'); + } + else if (token && options.auth) { + throw new Error('Parameters token and opts.auth may not both be specified'); + } + return typeof options.auth === 'string' ? options.auth : `token ${token}`; + } + static getProxyAgent(options) { + var _a; + if (!((_a = options.request) === null || _a === void 0 ? void 0 : _a.agent)) { + const serverUrl = 'https://api.github.com'; + if (httpClient.getProxyUrl(serverUrl)) { + const hc = new httpClient.HttpClient(); + return hc.getAgent(serverUrl); + } + } + return undefined; + } +} +exports.GitHub = GitHub; +//# sourceMappingURL=github.js.map + +/***/ }), + +/***/ 541: +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(156); + +/** + * Config-specific merge-function which creates a new config-object + * by merging two configuration objects together. + * + * @param {Object} config1 + * @param {Object} config2 + * @returns {Object} New object resulting from merging config2 to config1 + */ +module.exports = function mergeConfig(config1, config2) { + // eslint-disable-next-line no-param-reassign + config2 = config2 || {}; + var config = {}; + + var valueFromConfig2Keys = ['url', 'method', 'params', 'data']; + var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy']; + var defaultToConfig2Keys = [ + 'baseURL', 'url', 'transformRequest', 'transformResponse', 'paramsSerializer', + 'timeout', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName', + 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', + 'maxContentLength', 'validateStatus', 'maxRedirects', 'httpAgent', + 'httpsAgent', 'cancelToken', 'socketPath' + ]; + + utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) { + if (typeof config2[prop] !== 'undefined') { + config[prop] = config2[prop]; + } + }); + + utils.forEach(mergeDeepPropertiesKeys, function mergeDeepProperties(prop) { + if (utils.isObject(config2[prop])) { + config[prop] = utils.deepMerge(config1[prop], config2[prop]); + } else if (typeof config2[prop] !== 'undefined') { + config[prop] = config2[prop]; + } else if (utils.isObject(config1[prop])) { + config[prop] = utils.deepMerge(config1[prop]); + } else if (typeof config1[prop] !== 'undefined') { + config[prop] = config1[prop]; + } + }); + + utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) { + if (typeof config2[prop] !== 'undefined') { + config[prop] = config2[prop]; + } else if (typeof config1[prop] !== 'undefined') { + config[prop] = config1[prop]; + } + }); + + var axiosKeys = valueFromConfig2Keys + .concat(mergeDeepPropertiesKeys) + .concat(defaultToConfig2Keys); + + var otherKeys = Object + .keys(config2) + .filter(function filterAxiosKeys(key) { + return axiosKeys.indexOf(key) === -1; + }); + + utils.forEach(otherKeys, function otherKeysDefaultToConfig2(prop) { + if (typeof config2[prop] !== 'undefined') { + config[prop] = config2[prop]; + } else if (typeof config1[prop] !== 'undefined') { + config[prop] = config1[prop]; + } + }); + + return config; +}; + + +/***/ }), + +/***/ 545: +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(156); +var settle = __webpack_require__(994); +var buildFullPath = __webpack_require__(230); +var buildURL = __webpack_require__(320); +var http = __webpack_require__(605); +var https = __webpack_require__(211); +var httpFollow = __webpack_require__(82).http; +var httpsFollow = __webpack_require__(82).https; +var url = __webpack_require__(835); +var zlib = __webpack_require__(761); +var pkg = __webpack_require__(500); +var createError = __webpack_require__(441); +var enhanceError = __webpack_require__(221); + +var isHttps = /https:?/; + +/*eslint consistent-return:0*/ +module.exports = function httpAdapter(config) { + return new Promise(function dispatchHttpRequest(resolvePromise, rejectPromise) { + var resolve = function resolve(value) { + resolvePromise(value); + }; + var reject = function reject(value) { + rejectPromise(value); + }; + var data = config.data; + var headers = config.headers; + + // Set User-Agent (required by some servers) + // Only set header if it hasn't been set in config + // See https://github.com/axios/axios/issues/69 + if (!headers['User-Agent'] && !headers['user-agent']) { + headers['User-Agent'] = 'axios/' + pkg.version; + } + + if (data && !utils.isStream(data)) { + if (Buffer.isBuffer(data)) { + // Nothing to do... + } else if (utils.isArrayBuffer(data)) { + data = Buffer.from(new Uint8Array(data)); + } else if (utils.isString(data)) { + data = Buffer.from(data, 'utf-8'); + } else { + return reject(createError( + 'Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream', + config + )); + } + + // Add Content-Length header if data exists + headers['Content-Length'] = data.length; + } + + // HTTP basic authentication + var auth = undefined; + if (config.auth) { + var username = config.auth.username || ''; + var password = config.auth.password || ''; + auth = username + ':' + password; + } + + // Parse url + var fullPath = buildFullPath(config.baseURL, config.url); + var parsed = url.parse(fullPath); + var protocol = parsed.protocol || 'http:'; + + if (!auth && parsed.auth) { + var urlAuth = parsed.auth.split(':'); + var urlUsername = urlAuth[0] || ''; + var urlPassword = urlAuth[1] || ''; + auth = urlUsername + ':' + urlPassword; + } + + if (auth) { + delete headers.Authorization; + } + + var isHttpsRequest = isHttps.test(protocol); + var agent = isHttpsRequest ? config.httpsAgent : config.httpAgent; + + var options = { + path: buildURL(parsed.path, config.params, config.paramsSerializer).replace(/^\?/, ''), + method: config.method.toUpperCase(), + headers: headers, + agent: agent, + agents: { http: config.httpAgent, https: config.httpsAgent }, + auth: auth + }; + + if (config.socketPath) { + options.socketPath = config.socketPath; + } else { + options.hostname = parsed.hostname; + options.port = parsed.port; + } + + var proxy = config.proxy; + if (!proxy && proxy !== false) { + var proxyEnv = protocol.slice(0, -1) + '_proxy'; + var proxyUrl = process.env[proxyEnv] || process.env[proxyEnv.toUpperCase()]; + if (proxyUrl) { + var parsedProxyUrl = url.parse(proxyUrl); + var noProxyEnv = process.env.no_proxy || process.env.NO_PROXY; + var shouldProxy = true; + + if (noProxyEnv) { + var noProxy = noProxyEnv.split(',').map(function trim(s) { + return s.trim(); + }); + + shouldProxy = !noProxy.some(function proxyMatch(proxyElement) { + if (!proxyElement) { + return false; + } + if (proxyElement === '*') { + return true; + } + if (proxyElement[0] === '.' && + parsed.hostname.substr(parsed.hostname.length - proxyElement.length) === proxyElement) { + return true; + } + + return parsed.hostname === proxyElement; + }); + } + + + if (shouldProxy) { + proxy = { + host: parsedProxyUrl.hostname, + port: parsedProxyUrl.port + }; + + if (parsedProxyUrl.auth) { + var proxyUrlAuth = parsedProxyUrl.auth.split(':'); + proxy.auth = { + username: proxyUrlAuth[0], + password: proxyUrlAuth[1] + }; + } + } + } + } + + if (proxy) { + options.hostname = proxy.host; + options.host = proxy.host; + options.headers.host = parsed.hostname + (parsed.port ? ':' + parsed.port : ''); + options.port = proxy.port; + options.path = protocol + '//' + parsed.hostname + (parsed.port ? ':' + parsed.port : '') + options.path; + + // Basic proxy authorization + if (proxy.auth) { + var base64 = Buffer.from(proxy.auth.username + ':' + proxy.auth.password, 'utf8').toString('base64'); + options.headers['Proxy-Authorization'] = 'Basic ' + base64; + } + } + + var transport; + var isHttpsProxy = isHttpsRequest && (proxy ? isHttps.test(proxy.protocol) : true); + if (config.transport) { + transport = config.transport; + } else if (config.maxRedirects === 0) { + transport = isHttpsProxy ? https : http; + } else { + if (config.maxRedirects) { + options.maxRedirects = config.maxRedirects; + } + transport = isHttpsProxy ? httpsFollow : httpFollow; + } + + if (config.maxContentLength && config.maxContentLength > -1) { + options.maxBodyLength = config.maxContentLength; + } + + // Create the request + var req = transport.request(options, function handleResponse(res) { + if (req.aborted) return; + + // uncompress the response body transparently if required + var stream = res; + switch (res.headers['content-encoding']) { + /*eslint default-case:0*/ + case 'gzip': + case 'compress': + case 'deflate': + // add the unzipper to the body stream processing pipeline + stream = (res.statusCode === 204) ? stream : stream.pipe(zlib.createUnzip()); + + // remove the content-encoding in order to not confuse downstream operations + delete res.headers['content-encoding']; + break; + } + + // return the last request in case of redirects + var lastRequest = res.req || req; + + var response = { + status: res.statusCode, + statusText: res.statusMessage, + headers: res.headers, + config: config, + request: lastRequest + }; + + if (config.responseType === 'stream') { + response.data = stream; + settle(resolve, reject, response); + } else { + var responseBuffer = []; + stream.on('data', function handleStreamData(chunk) { + responseBuffer.push(chunk); + + // make sure the content length is not over the maxContentLength if specified + if (config.maxContentLength > -1 && Buffer.concat(responseBuffer).length > config.maxContentLength) { + stream.destroy(); + reject(createError('maxContentLength size of ' + config.maxContentLength + ' exceeded', + config, null, lastRequest)); + } + }); + + stream.on('error', function handleStreamError(err) { + if (req.aborted) return; + reject(enhanceError(err, config, null, lastRequest)); + }); + + stream.on('end', function handleStreamEnd() { + var responseData = Buffer.concat(responseBuffer); + if (config.responseType !== 'arraybuffer') { + responseData = responseData.toString(config.responseEncoding); + } + + response.data = responseData; + settle(resolve, reject, response); + }); + } + }); + + // Handle errors + req.on('error', function handleRequestError(err) { + if (req.aborted) return; + reject(enhanceError(err, config, null, req)); + }); + + // Handle request timeout + if (config.timeout) { + // Sometime, the response will be very slow, and does not respond, the connect event will be block by event loop system. + // And timer callback will be fired, and abort() will be invoked before connection, then get "socket hang up" and code ECONNRESET. + // At this time, if we have a large number of request, nodejs will hang up some socket on background. and the number will up and up. + // And then these socket which be hang up will devoring CPU little by little. + // ClientRequest.setTimeout will be fired on the specify milliseconds, and can make sure that abort() will be fired after connect. + req.setTimeout(config.timeout, function handleRequestTimeout() { + req.abort(); + reject(createError('timeout of ' + config.timeout + 'ms exceeded', config, 'ECONNABORTED', req)); + }); + } + + if (config.cancelToken) { + // Handle cancellation + config.cancelToken.promise.then(function onCanceled(cancel) { + if (req.aborted) return; + + req.abort(); + reject(cancel); + }); + } + + // Send the request + if (utils.isStream(data)) { + data.on('error', function handleStreamError(err) { + reject(enhanceError(err, config, null, req)); + }).pipe(req); + } else { + req.end(data); + } + }); +}; + + +/***/ }), + +/***/ 555: +/***/ (function(__unusedmodule, exports) { + +"use strict"; + + +Object.defineProperty(exports, '__esModule', { value: true }); + +const VERSION = "1.0.0"; + +/** + * @param octokit Octokit instance + * @param options Options passed to Octokit constructor + */ + +function requestLog(octokit) { + octokit.hook.wrap("request", (request, options) => { + octokit.log.debug("request", options); + const start = Date.now(); + const requestOptions = octokit.request.endpoint.parse(options); + const path = requestOptions.url.replace(options.baseUrl, ""); + return request(options).then(response => { + octokit.log.info(`${requestOptions.method} ${path} - ${response.status} in ${Date.now() - start}ms`); + return response; + }).catch(error => { + octokit.log.info(`${requestOptions.method} ${path} - ${error.status} in ${Date.now() - start}ms`); + throw error; + }); + }); +} +requestLog.VERSION = VERSION; + +exports.requestLog = requestLog; +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ 562: +/***/ (function(__unusedmodule, __unusedexports, __webpack_require__) { + +const axios = __webpack_require__(26) + +const core = __webpack_require__(472) +const github = __webpack_require__(538) + +const webhook = core.getInput('webhook') + +if (!/https:\/\/discord(app|)\.com\/api\/webhooks\/\d+?\/.+/i.exec(webhook)) { + core.setFailed('The given discord webhook url is invalid. Please ensure you give a **full** url that start with "https://discordapp.com/api/webhooks"') +} + +const shortSha = (i) => i.substr(0, 6) + +const escapeMd = (str) => str.replace(/([\[\]\\`\(\)])/g, '\\$1') + +const { payload: githubPayload } = github.context + +const commits = githubPayload.commits.map(i => ` - [\`[${shortSha(i.id)}]\`](${i.url}) ${escapeMd(i.message)} - by ${i.author.name}`) + +if (!commits.length) { + return +} + +const beforeSha = githubPayload.before +const afterSha = githubPayload.after +const compareUrl = `${githubPayload.repository.url}/compare/${beforeSha}...${afterSha}` + +const payload = { + content: '', + embeds: [ + { + title: core.getInput('message-title') || 'Commits received', + description: `[\`\[${shortSha(beforeSha)}...${shortSha(afterSha)}\]\`](${compareUrl})\n${commits.join('\n')}` + } + ] +} + +axios + .post(webhook, payload) + .then((res) => { + core.setOutput('result', 'Webhook sent') + }) + .catch((err) => { + core.setFailed(`Post to webhook failed, ${err}`) + }) + + +/***/ }), + +/***/ 575: +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; + +var shebangRegex = __webpack_require__(116); + +module.exports = function (str) { + var match = str.match(shebangRegex); + + if (!match) { + return null; + } + + var arr = match[0].replace(/#! ?/, '').split(' '); + var bin = arr[0].split('/').pop(); + var arg = arr[1]; + + return (bin === 'env' ? + arg : + bin + (arg ? ' ' + arg : '') + ); +}; + + +/***/ }), + +/***/ 579: +/***/ (function(module) { + +"use strict"; + + +/*! + * isobject + * + * Copyright (c) 2014-2017, Jon Schlinkert. + * Released under the MIT License. + */ + +function isObject(val) { + return val != null && typeof val === 'object' && Array.isArray(val) === false; +} + +/*! + * is-plain-object + * + * Copyright (c) 2014-2017, Jon Schlinkert. + * Released under the MIT License. + */ + +function isObjectObject(o) { + return isObject(o) === true + && Object.prototype.toString.call(o) === '[object Object]'; +} + +function isPlainObject(o) { + var ctor,prot; + + if (isObjectObject(o) === false) return false; + + // If has modified constructor + ctor = o.constructor; + if (typeof ctor !== 'function') return false; + + // If has modified prototype + prot = ctor.prototype; + if (isObjectObject(prot) === false) return false; + + // If constructor does not have an Object-specific method + if (prot.hasOwnProperty('isPrototypeOf') === false) { + return false; + } + + // Most likely a plain Object + return true; +} + +module.exports = isPlainObject; + + +/***/ }), + +/***/ 601: +/***/ (function(module) { + +"use strict"; + + +/** + * A `Cancel` is an object that is thrown when an operation is canceled. + * + * @class + * @param {string=} message The message. + */ +function Cancel(message) { + this.message = message; +} + +Cancel.prototype.toString = function toString() { + return 'Cancel' + (this.message ? ': ' + this.message : ''); +}; + +Cancel.prototype.__CANCEL__ = true; + +module.exports = Cancel; + + +/***/ }), + +/***/ 605: +/***/ (function(module) { + +module.exports = require("http"); + +/***/ }), + +/***/ 607: +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, '__esModule', { value: true }); + +function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } + +var Stream = _interopDefault(__webpack_require__(413)); +var http = _interopDefault(__webpack_require__(605)); +var Url = _interopDefault(__webpack_require__(835)); +var https = _interopDefault(__webpack_require__(211)); +var zlib = _interopDefault(__webpack_require__(761)); + +// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js + +// fix for "Readable" isn't a named export issue +const Readable = Stream.Readable; + +const BUFFER = Symbol('buffer'); +const TYPE = Symbol('type'); + +class Blob { + constructor() { + this[TYPE] = ''; + + const blobParts = arguments[0]; + const options = arguments[1]; + + const buffers = []; + let size = 0; + + if (blobParts) { + const a = blobParts; + const length = Number(a.length); + for (let i = 0; i < length; i++) { + const element = a[i]; + let buffer; + if (element instanceof Buffer) { + buffer = element; + } else if (ArrayBuffer.isView(element)) { + buffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength); + } else if (element instanceof ArrayBuffer) { + buffer = Buffer.from(element); + } else if (element instanceof Blob) { + buffer = element[BUFFER]; + } else { + buffer = Buffer.from(typeof element === 'string' ? element : String(element)); + } + size += buffer.length; + buffers.push(buffer); + } + } + + this[BUFFER] = Buffer.concat(buffers); + + let type = options && options.type !== undefined && String(options.type).toLowerCase(); + if (type && !/[^\u0020-\u007E]/.test(type)) { + this[TYPE] = type; + } + } + get size() { + return this[BUFFER].length; + } + get type() { + return this[TYPE]; + } + text() { + return Promise.resolve(this[BUFFER].toString()); + } + arrayBuffer() { + const buf = this[BUFFER]; + const ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength); + return Promise.resolve(ab); + } + stream() { + const readable = new Readable(); + readable._read = function () {}; + readable.push(this[BUFFER]); + readable.push(null); + return readable; + } + toString() { + return '[object Blob]'; + } + slice() { + const size = this.size; + + const start = arguments[0]; + const end = arguments[1]; + let relativeStart, relativeEnd; + if (start === undefined) { + relativeStart = 0; + } else if (start < 0) { + relativeStart = Math.max(size + start, 0); + } else { + relativeStart = Math.min(start, size); + } + if (end === undefined) { + relativeEnd = size; + } else if (end < 0) { + relativeEnd = Math.max(size + end, 0); + } else { + relativeEnd = Math.min(end, size); + } + const span = Math.max(relativeEnd - relativeStart, 0); + + const buffer = this[BUFFER]; + const slicedBuffer = buffer.slice(relativeStart, relativeStart + span); + const blob = new Blob([], { type: arguments[2] }); + blob[BUFFER] = slicedBuffer; + return blob; + } +} + +Object.defineProperties(Blob.prototype, { + size: { enumerable: true }, + type: { enumerable: true }, + slice: { enumerable: true } +}); + +Object.defineProperty(Blob.prototype, Symbol.toStringTag, { + value: 'Blob', + writable: false, + enumerable: false, + configurable: true +}); + +/** + * fetch-error.js + * + * FetchError interface for operational errors + */ + +/** + * Create FetchError instance + * + * @param String message Error message for human + * @param String type Error type for machine + * @param String systemError For Node.js system error + * @return FetchError + */ +function FetchError(message, type, systemError) { + Error.call(this, message); + + this.message = message; + this.type = type; + + // when err.type is `system`, err.code contains system error code + if (systemError) { + this.code = this.errno = systemError.code; + } + + // hide custom error implementation details from end-users + Error.captureStackTrace(this, this.constructor); +} + +FetchError.prototype = Object.create(Error.prototype); +FetchError.prototype.constructor = FetchError; +FetchError.prototype.name = 'FetchError'; + +let convert; +try { + convert = __webpack_require__(977).convert; +} catch (e) {} + +const INTERNALS = Symbol('Body internals'); + +// fix an issue where "PassThrough" isn't a named export for node <10 +const PassThrough = Stream.PassThrough; + +/** + * Body mixin + * + * Ref: https://fetch.spec.whatwg.org/#body + * + * @param Stream body Readable stream + * @param Object opts Response options + * @return Void + */ +function Body(body) { + var _this = this; + + var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, + _ref$size = _ref.size; + + let size = _ref$size === undefined ? 0 : _ref$size; + var _ref$timeout = _ref.timeout; + let timeout = _ref$timeout === undefined ? 0 : _ref$timeout; + + if (body == null) { + // body is undefined or null + body = null; + } else if (isURLSearchParams(body)) { + // body is a URLSearchParams + body = Buffer.from(body.toString()); + } else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') { + // body is ArrayBuffer + body = Buffer.from(body); + } else if (ArrayBuffer.isView(body)) { + // body is ArrayBufferView + body = Buffer.from(body.buffer, body.byteOffset, body.byteLength); + } else if (body instanceof Stream) ; else { + // none of the above + // coerce to string then buffer + body = Buffer.from(String(body)); + } + this[INTERNALS] = { + body, + disturbed: false, + error: null + }; + this.size = size; + this.timeout = timeout; + + if (body instanceof Stream) { + body.on('error', function (err) { + const error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err); + _this[INTERNALS].error = error; + }); + } +} + +Body.prototype = { + get body() { + return this[INTERNALS].body; + }, + + get bodyUsed() { + return this[INTERNALS].disturbed; + }, + + /** + * Decode response as ArrayBuffer + * + * @return Promise + */ + arrayBuffer() { + return consumeBody.call(this).then(function (buf) { + return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength); + }); + }, + + /** + * Return raw response as Blob + * + * @return Promise + */ + blob() { + let ct = this.headers && this.headers.get('content-type') || ''; + return consumeBody.call(this).then(function (buf) { + return Object.assign( + // Prevent copying + new Blob([], { + type: ct.toLowerCase() + }), { + [BUFFER]: buf + }); + }); + }, + + /** + * Decode response as json + * + * @return Promise + */ + json() { + var _this2 = this; + + return consumeBody.call(this).then(function (buffer) { + try { + return JSON.parse(buffer.toString()); + } catch (err) { + return Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json')); + } + }); + }, + + /** + * Decode response as text + * + * @return Promise + */ + text() { + return consumeBody.call(this).then(function (buffer) { + return buffer.toString(); + }); + }, + + /** + * Decode response as buffer (non-spec api) + * + * @return Promise + */ + buffer() { + return consumeBody.call(this); + }, + + /** + * Decode response as text, while automatically detecting the encoding and + * trying to decode to UTF-8 (non-spec api) + * + * @return Promise + */ + textConverted() { + var _this3 = this; + + return consumeBody.call(this).then(function (buffer) { + return convertBody(buffer, _this3.headers); + }); + } +}; + +// In browsers, all properties are enumerable. +Object.defineProperties(Body.prototype, { + body: { enumerable: true }, + bodyUsed: { enumerable: true }, + arrayBuffer: { enumerable: true }, + blob: { enumerable: true }, + json: { enumerable: true }, + text: { enumerable: true } +}); + +Body.mixIn = function (proto) { + for (const name of Object.getOwnPropertyNames(Body.prototype)) { + // istanbul ignore else: future proof + if (!(name in proto)) { + const desc = Object.getOwnPropertyDescriptor(Body.prototype, name); + Object.defineProperty(proto, name, desc); + } + } +}; + +/** + * Consume and convert an entire Body to a Buffer. + * + * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body + * + * @return Promise + */ +function consumeBody() { + var _this4 = this; + + if (this[INTERNALS].disturbed) { + return Body.Promise.reject(new TypeError(`body used already for: ${this.url}`)); + } + + this[INTERNALS].disturbed = true; + + if (this[INTERNALS].error) { + return Body.Promise.reject(this[INTERNALS].error); + } + + let body = this.body; + + // body is null + if (body === null) { + return Body.Promise.resolve(Buffer.alloc(0)); + } + + // body is blob + if (isBlob(body)) { + body = body.stream(); + } + + // body is buffer + if (Buffer.isBuffer(body)) { + return Body.Promise.resolve(body); + } + + // istanbul ignore if: should never happen + if (!(body instanceof Stream)) { + return Body.Promise.resolve(Buffer.alloc(0)); + } + + // body is stream + // get ready to actually consume the body + let accum = []; + let accumBytes = 0; + let abort = false; + + return new Body.Promise(function (resolve, reject) { + let resTimeout; + + // allow timeout on slow response body + if (_this4.timeout) { + resTimeout = setTimeout(function () { + abort = true; + reject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout')); + }, _this4.timeout); + } + + // handle stream errors + body.on('error', function (err) { + if (err.name === 'AbortError') { + // if the request was aborted, reject with this Error + abort = true; + reject(err); + } else { + // other errors, such as incorrect content-encoding + reject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err)); + } + }); + + body.on('data', function (chunk) { + if (abort || chunk === null) { + return; + } + + if (_this4.size && accumBytes + chunk.length > _this4.size) { + abort = true; + reject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size')); + return; + } + + accumBytes += chunk.length; + accum.push(chunk); + }); + + body.on('end', function () { + if (abort) { + return; + } + + clearTimeout(resTimeout); + + try { + resolve(Buffer.concat(accum, accumBytes)); + } catch (err) { + // handle streams that have accumulated too much data (issue #414) + reject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err)); + } + }); + }); +} + +/** + * Detect buffer encoding and convert to target encoding + * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding + * + * @param Buffer buffer Incoming buffer + * @param String encoding Target encoding + * @return String + */ +function convertBody(buffer, headers) { + if (typeof convert !== 'function') { + throw new Error('The package `encoding` must be installed to use the textConverted() function'); + } + + const ct = headers.get('content-type'); + let charset = 'utf-8'; + let res, str; + + // header + if (ct) { + res = /charset=([^;]*)/i.exec(ct); + } + + // no charset in content type, peek at response body for at most 1024 bytes + str = buffer.slice(0, 1024).toString(); + + // html5 + if (!res && str) { + res = / 0 && arguments[0] !== undefined ? arguments[0] : undefined; + + this[MAP] = Object.create(null); + + if (init instanceof Headers) { + const rawHeaders = init.raw(); + const headerNames = Object.keys(rawHeaders); + + for (const headerName of headerNames) { + for (const value of rawHeaders[headerName]) { + this.append(headerName, value); + } + } + + return; + } + + // We don't worry about converting prop to ByteString here as append() + // will handle it. + if (init == null) ; else if (typeof init === 'object') { + const method = init[Symbol.iterator]; + if (method != null) { + if (typeof method !== 'function') { + throw new TypeError('Header pairs must be iterable'); + } + + // sequence> + // Note: per spec we have to first exhaust the lists then process them + const pairs = []; + for (const pair of init) { + if (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') { + throw new TypeError('Each header pair must be iterable'); + } + pairs.push(Array.from(pair)); + } + + for (const pair of pairs) { + if (pair.length !== 2) { + throw new TypeError('Each header pair must be a name/value tuple'); + } + this.append(pair[0], pair[1]); + } + } else { + // record + for (const key of Object.keys(init)) { + const value = init[key]; + this.append(key, value); + } + } + } else { + throw new TypeError('Provided initializer must be an object'); + } + } + + /** + * Return combined header value given name + * + * @param String name Header name + * @return Mixed + */ + get(name) { + name = `${name}`; + validateName(name); + const key = find(this[MAP], name); + if (key === undefined) { + return null; + } + + return this[MAP][key].join(', '); + } + + /** + * Iterate over all headers + * + * @param Function callback Executed for each item with parameters (value, name, thisArg) + * @param Boolean thisArg `this` context for callback function + * @return Void + */ + forEach(callback) { + let thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined; + + let pairs = getHeaders(this); + let i = 0; + while (i < pairs.length) { + var _pairs$i = pairs[i]; + const name = _pairs$i[0], + value = _pairs$i[1]; + + callback.call(thisArg, value, name, this); + pairs = getHeaders(this); + i++; + } + } + + /** + * Overwrite header values given name + * + * @param String name Header name + * @param String value Header value + * @return Void + */ + set(name, value) { + name = `${name}`; + value = `${value}`; + validateName(name); + validateValue(value); + const key = find(this[MAP], name); + this[MAP][key !== undefined ? key : name] = [value]; + } + + /** + * Append a value onto existing header + * + * @param String name Header name + * @param String value Header value + * @return Void + */ + append(name, value) { + name = `${name}`; + value = `${value}`; + validateName(name); + validateValue(value); + const key = find(this[MAP], name); + if (key !== undefined) { + this[MAP][key].push(value); + } else { + this[MAP][name] = [value]; + } + } + + /** + * Check for header name existence + * + * @param String name Header name + * @return Boolean + */ + has(name) { + name = `${name}`; + validateName(name); + return find(this[MAP], name) !== undefined; + } + + /** + * Delete all header values given name + * + * @param String name Header name + * @return Void + */ + delete(name) { + name = `${name}`; + validateName(name); + const key = find(this[MAP], name); + if (key !== undefined) { + delete this[MAP][key]; + } + } + + /** + * Return raw headers (non-spec api) + * + * @return Object + */ + raw() { + return this[MAP]; + } + + /** + * Get an iterator on keys. + * + * @return Iterator + */ + keys() { + return createHeadersIterator(this, 'key'); + } + + /** + * Get an iterator on values. + * + * @return Iterator + */ + values() { + return createHeadersIterator(this, 'value'); + } + + /** + * Get an iterator on entries. + * + * This is the default iterator of the Headers object. + * + * @return Iterator + */ + [Symbol.iterator]() { + return createHeadersIterator(this, 'key+value'); + } +} +Headers.prototype.entries = Headers.prototype[Symbol.iterator]; + +Object.defineProperty(Headers.prototype, Symbol.toStringTag, { + value: 'Headers', + writable: false, + enumerable: false, + configurable: true +}); + +Object.defineProperties(Headers.prototype, { + get: { enumerable: true }, + forEach: { enumerable: true }, + set: { enumerable: true }, + append: { enumerable: true }, + has: { enumerable: true }, + delete: { enumerable: true }, + keys: { enumerable: true }, + values: { enumerable: true }, + entries: { enumerable: true } +}); + +function getHeaders(headers) { + let kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value'; + + const keys = Object.keys(headers[MAP]).sort(); + return keys.map(kind === 'key' ? function (k) { + return k.toLowerCase(); + } : kind === 'value' ? function (k) { + return headers[MAP][k].join(', '); + } : function (k) { + return [k.toLowerCase(), headers[MAP][k].join(', ')]; + }); +} + +const INTERNAL = Symbol('internal'); + +function createHeadersIterator(target, kind) { + const iterator = Object.create(HeadersIteratorPrototype); + iterator[INTERNAL] = { + target, + kind, + index: 0 + }; + return iterator; +} + +const HeadersIteratorPrototype = Object.setPrototypeOf({ + next() { + // istanbul ignore if + if (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) { + throw new TypeError('Value of `this` is not a HeadersIterator'); + } + + var _INTERNAL = this[INTERNAL]; + const target = _INTERNAL.target, + kind = _INTERNAL.kind, + index = _INTERNAL.index; + + const values = getHeaders(target, kind); + const len = values.length; + if (index >= len) { + return { + value: undefined, + done: true + }; + } + + this[INTERNAL].index = index + 1; + + return { + value: values[index], + done: false + }; + } +}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()))); + +Object.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, { + value: 'HeadersIterator', + writable: false, + enumerable: false, + configurable: true +}); + +/** + * Export the Headers object in a form that Node.js can consume. + * + * @param Headers headers + * @return Object + */ +function exportNodeCompatibleHeaders(headers) { + const obj = Object.assign({ __proto__: null }, headers[MAP]); + + // http.request() only supports string as Host header. This hack makes + // specifying custom Host header possible. + const hostHeaderKey = find(headers[MAP], 'Host'); + if (hostHeaderKey !== undefined) { + obj[hostHeaderKey] = obj[hostHeaderKey][0]; + } + + return obj; +} + +/** + * Create a Headers object from an object of headers, ignoring those that do + * not conform to HTTP grammar productions. + * + * @param Object obj Object of headers + * @return Headers + */ +function createHeadersLenient(obj) { + const headers = new Headers(); + for (const name of Object.keys(obj)) { + if (invalidTokenRegex.test(name)) { + continue; + } + if (Array.isArray(obj[name])) { + for (const val of obj[name]) { + if (invalidHeaderCharRegex.test(val)) { + continue; + } + if (headers[MAP][name] === undefined) { + headers[MAP][name] = [val]; + } else { + headers[MAP][name].push(val); + } + } + } else if (!invalidHeaderCharRegex.test(obj[name])) { + headers[MAP][name] = [obj[name]]; + } + } + return headers; +} + +const INTERNALS$1 = Symbol('Response internals'); + +// fix an issue where "STATUS_CODES" aren't a named export for node <10 +const STATUS_CODES = http.STATUS_CODES; + +/** + * Response class + * + * @param Stream body Readable stream + * @param Object opts Response options + * @return Void + */ +class Response { + constructor() { + let body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; + let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + Body.call(this, body, opts); + + const status = opts.status || 200; + const headers = new Headers(opts.headers); + + if (body != null && !headers.has('Content-Type')) { + const contentType = extractContentType(body); + if (contentType) { + headers.append('Content-Type', contentType); + } + } + + this[INTERNALS$1] = { + url: opts.url, + status, + statusText: opts.statusText || STATUS_CODES[status], + headers, + counter: opts.counter + }; + } + + get url() { + return this[INTERNALS$1].url || ''; + } + + get status() { + return this[INTERNALS$1].status; + } + + /** + * Convenience property representing if the request ended normally + */ + get ok() { + return this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300; + } + + get redirected() { + return this[INTERNALS$1].counter > 0; + } + + get statusText() { + return this[INTERNALS$1].statusText; + } + + get headers() { + return this[INTERNALS$1].headers; + } + + /** + * Clone this response + * + * @return Response + */ + clone() { + return new Response(clone(this), { + url: this.url, + status: this.status, + statusText: this.statusText, + headers: this.headers, + ok: this.ok, + redirected: this.redirected + }); + } +} + +Body.mixIn(Response.prototype); + +Object.defineProperties(Response.prototype, { + url: { enumerable: true }, + status: { enumerable: true }, + ok: { enumerable: true }, + redirected: { enumerable: true }, + statusText: { enumerable: true }, + headers: { enumerable: true }, + clone: { enumerable: true } +}); + +Object.defineProperty(Response.prototype, Symbol.toStringTag, { + value: 'Response', + writable: false, + enumerable: false, + configurable: true +}); + +const INTERNALS$2 = Symbol('Request internals'); + +// fix an issue where "format", "parse" aren't a named export for node <10 +const parse_url = Url.parse; +const format_url = Url.format; + +const streamDestructionSupported = 'destroy' in Stream.Readable.prototype; + +/** + * Check if a value is an instance of Request. + * + * @param Mixed input + * @return Boolean + */ +function isRequest(input) { + return typeof input === 'object' && typeof input[INTERNALS$2] === 'object'; +} + +function isAbortSignal(signal) { + const proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal); + return !!(proto && proto.constructor.name === 'AbortSignal'); +} + +/** + * Request class + * + * @param Mixed input Url or Request instance + * @param Object init Custom options + * @return Void + */ +class Request { + constructor(input) { + let init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + let parsedURL; + + // normalize input + if (!isRequest(input)) { + if (input && input.href) { + // in order to support Node.js' Url objects; though WHATWG's URL objects + // will fall into this branch also (since their `toString()` will return + // `href` property anyway) + parsedURL = parse_url(input.href); + } else { + // coerce input to a string before attempting to parse + parsedURL = parse_url(`${input}`); + } + input = {}; + } else { + parsedURL = parse_url(input.url); + } + + let method = init.method || input.method || 'GET'; + method = method.toUpperCase(); + + if ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) { + throw new TypeError('Request with GET/HEAD method cannot have body'); + } + + let inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null; + + Body.call(this, inputBody, { + timeout: init.timeout || input.timeout || 0, + size: init.size || input.size || 0 + }); + + const headers = new Headers(init.headers || input.headers || {}); + + if (inputBody != null && !headers.has('Content-Type')) { + const contentType = extractContentType(inputBody); + if (contentType) { + headers.append('Content-Type', contentType); + } + } + + let signal = isRequest(input) ? input.signal : null; + if ('signal' in init) signal = init.signal; + + if (signal != null && !isAbortSignal(signal)) { + throw new TypeError('Expected signal to be an instanceof AbortSignal'); + } + + this[INTERNALS$2] = { + method, + redirect: init.redirect || input.redirect || 'follow', + headers, + parsedURL, + signal + }; + + // node-fetch-only options + this.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20; + this.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true; + this.counter = init.counter || input.counter || 0; + this.agent = init.agent || input.agent; + } + + get method() { + return this[INTERNALS$2].method; + } + + get url() { + return format_url(this[INTERNALS$2].parsedURL); + } + + get headers() { + return this[INTERNALS$2].headers; + } + + get redirect() { + return this[INTERNALS$2].redirect; + } + + get signal() { + return this[INTERNALS$2].signal; + } + + /** + * Clone this request + * + * @return Request + */ + clone() { + return new Request(this); + } +} + +Body.mixIn(Request.prototype); + +Object.defineProperty(Request.prototype, Symbol.toStringTag, { + value: 'Request', + writable: false, + enumerable: false, + configurable: true +}); + +Object.defineProperties(Request.prototype, { + method: { enumerable: true }, + url: { enumerable: true }, + headers: { enumerable: true }, + redirect: { enumerable: true }, + clone: { enumerable: true }, + signal: { enumerable: true } +}); + +/** + * Convert a Request to Node.js http request options. + * + * @param Request A Request instance + * @return Object The options object to be passed to http.request + */ +function getNodeRequestOptions(request) { + const parsedURL = request[INTERNALS$2].parsedURL; + const headers = new Headers(request[INTERNALS$2].headers); + + // fetch step 1.3 + if (!headers.has('Accept')) { + headers.set('Accept', '*/*'); + } + + // Basic fetch + if (!parsedURL.protocol || !parsedURL.hostname) { + throw new TypeError('Only absolute URLs are supported'); + } + + if (!/^https?:$/.test(parsedURL.protocol)) { + throw new TypeError('Only HTTP(S) protocols are supported'); + } + + if (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) { + throw new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8'); + } + + // HTTP-network-or-cache fetch steps 2.4-2.7 + let contentLengthValue = null; + if (request.body == null && /^(POST|PUT)$/i.test(request.method)) { + contentLengthValue = '0'; + } + if (request.body != null) { + const totalBytes = getTotalBytes(request); + if (typeof totalBytes === 'number') { + contentLengthValue = String(totalBytes); + } + } + if (contentLengthValue) { + headers.set('Content-Length', contentLengthValue); + } + + // HTTP-network-or-cache fetch step 2.11 + if (!headers.has('User-Agent')) { + headers.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)'); + } + + // HTTP-network-or-cache fetch step 2.15 + if (request.compress && !headers.has('Accept-Encoding')) { + headers.set('Accept-Encoding', 'gzip,deflate'); + } + + let agent = request.agent; + if (typeof agent === 'function') { + agent = agent(parsedURL); + } + + if (!headers.has('Connection') && !agent) { + headers.set('Connection', 'close'); + } + + // HTTP-network fetch step 4.2 + // chunked encoding is handled by Node.js + + return Object.assign({}, parsedURL, { + method: request.method, + headers: exportNodeCompatibleHeaders(headers), + agent + }); +} + +/** + * abort-error.js + * + * AbortError interface for cancelled requests + */ + +/** + * Create AbortError instance + * + * @param String message Error message for human + * @return AbortError + */ +function AbortError(message) { + Error.call(this, message); + + this.type = 'aborted'; + this.message = message; + + // hide custom error implementation details from end-users + Error.captureStackTrace(this, this.constructor); +} + +AbortError.prototype = Object.create(Error.prototype); +AbortError.prototype.constructor = AbortError; +AbortError.prototype.name = 'AbortError'; + +// fix an issue where "PassThrough", "resolve" aren't a named export for node <10 +const PassThrough$1 = Stream.PassThrough; +const resolve_url = Url.resolve; + +/** + * Fetch function + * + * @param Mixed url Absolute url or Request instance + * @param Object opts Fetch options + * @return Promise + */ +function fetch(url, opts) { + + // allow custom promise + if (!fetch.Promise) { + throw new Error('native promise missing, set fetch.Promise to your favorite alternative'); + } + + Body.Promise = fetch.Promise; + + // wrap http.request into fetch + return new fetch.Promise(function (resolve, reject) { + // build request object + const request = new Request(url, opts); + const options = getNodeRequestOptions(request); + + const send = (options.protocol === 'https:' ? https : http).request; + const signal = request.signal; + + let response = null; + + const abort = function abort() { + let error = new AbortError('The user aborted a request.'); + reject(error); + if (request.body && request.body instanceof Stream.Readable) { + request.body.destroy(error); + } + if (!response || !response.body) return; + response.body.emit('error', error); + }; + + if (signal && signal.aborted) { + abort(); + return; + } + + const abortAndFinalize = function abortAndFinalize() { + abort(); + finalize(); + }; + + // send request + const req = send(options); + let reqTimeout; + + if (signal) { + signal.addEventListener('abort', abortAndFinalize); + } + + function finalize() { + req.abort(); + if (signal) signal.removeEventListener('abort', abortAndFinalize); + clearTimeout(reqTimeout); + } + + if (request.timeout) { + req.once('socket', function (socket) { + reqTimeout = setTimeout(function () { + reject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout')); + finalize(); + }, request.timeout); + }); + } + + req.on('error', function (err) { + reject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err)); + finalize(); + }); + + req.on('response', function (res) { + clearTimeout(reqTimeout); + + const headers = createHeadersLenient(res.headers); + + // HTTP fetch step 5 + if (fetch.isRedirect(res.statusCode)) { + // HTTP fetch step 5.2 + const location = headers.get('Location'); + + // HTTP fetch step 5.3 + const locationURL = location === null ? null : resolve_url(request.url, location); + + // HTTP fetch step 5.5 + switch (request.redirect) { + case 'error': + reject(new FetchError(`redirect mode is set to error: ${request.url}`, 'no-redirect')); + finalize(); + return; + case 'manual': + // node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL. + if (locationURL !== null) { + // handle corrupted header + try { + headers.set('Location', locationURL); + } catch (err) { + // istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request + reject(err); + } + } + break; + case 'follow': + // HTTP-redirect fetch step 2 + if (locationURL === null) { + break; + } + + // HTTP-redirect fetch step 5 + if (request.counter >= request.follow) { + reject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect')); + finalize(); + return; + } + + // HTTP-redirect fetch step 6 (counter increment) + // Create a new Request object. + const requestOpts = { + headers: new Headers(request.headers), + follow: request.follow, + counter: request.counter + 1, + agent: request.agent, + compress: request.compress, + method: request.method, + body: request.body, + signal: request.signal, + timeout: request.timeout + }; + + // HTTP-redirect fetch step 9 + if (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) { + reject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect')); + finalize(); + return; + } + + // HTTP-redirect fetch step 11 + if (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') { + requestOpts.method = 'GET'; + requestOpts.body = undefined; + requestOpts.headers.delete('content-length'); + } + + // HTTP-redirect fetch step 15 + resolve(fetch(new Request(locationURL, requestOpts))); + finalize(); + return; + } + } + + // prepare response + res.once('end', function () { + if (signal) signal.removeEventListener('abort', abortAndFinalize); + }); + let body = res.pipe(new PassThrough$1()); + + const response_options = { + url: request.url, + status: res.statusCode, + statusText: res.statusMessage, + headers: headers, + size: request.size, + timeout: request.timeout, + counter: request.counter + }; + + // HTTP-network fetch step 12.1.1.3 + const codings = headers.get('Content-Encoding'); + + // HTTP-network fetch step 12.1.1.4: handle content codings + + // in following scenarios we ignore compression support + // 1. compression support is disabled + // 2. HEAD request + // 3. no Content-Encoding header + // 4. no content response (204) + // 5. content not modified response (304) + if (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) { + response = new Response(body, response_options); + resolve(response); + return; + } + + // For Node v6+ + // Be less strict when decoding compressed responses, since sometimes + // servers send slightly invalid responses that are still accepted + // by common browsers. + // Always using Z_SYNC_FLUSH is what cURL does. + const zlibOptions = { + flush: zlib.Z_SYNC_FLUSH, + finishFlush: zlib.Z_SYNC_FLUSH + }; + + // for gzip + if (codings == 'gzip' || codings == 'x-gzip') { + body = body.pipe(zlib.createGunzip(zlibOptions)); + response = new Response(body, response_options); + resolve(response); + return; + } + + // for deflate + if (codings == 'deflate' || codings == 'x-deflate') { + // handle the infamous raw deflate response from old servers + // a hack for old IIS and Apache servers + const raw = res.pipe(new PassThrough$1()); + raw.once('data', function (chunk) { + // see http://stackoverflow.com/questions/37519828 + if ((chunk[0] & 0x0F) === 0x08) { + body = body.pipe(zlib.createInflate()); + } else { + body = body.pipe(zlib.createInflateRaw()); + } + response = new Response(body, response_options); + resolve(response); + }); + return; + } + + // for br + if (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') { + body = body.pipe(zlib.createBrotliDecompress()); + response = new Response(body, response_options); + resolve(response); + return; + } + + // otherwise, use response as-is + response = new Response(body, response_options); + resolve(response); + }); + + writeToStream(req, request); + }); +} +/** + * Redirect code matching + * + * @param Number code Status code + * @return Boolean + */ +fetch.isRedirect = function (code) { + return code === 301 || code === 302 || code === 303 || code === 307 || code === 308; +}; + +// expose Promise +fetch.Promise = global.Promise; + +module.exports = exports = fetch; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.default = exports; +exports.Headers = Headers; +exports.Request = Request; +exports.Response = Response; +exports.FetchError = FetchError; + + +/***/ }), + +/***/ 612: +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(156); +var transformData = __webpack_require__(426); +var isCancel = __webpack_require__(15); +var defaults = __webpack_require__(343); + +/** + * Throws a `Cancel` if cancellation has been requested. + */ +function throwIfCancellationRequested(config) { + if (config.cancelToken) { + config.cancelToken.throwIfRequested(); + } +} + +/** + * Dispatch a request to the server using the configured adapter. + * + * @param {object} config The config that is to be used for the request + * @returns {Promise} The Promise to be fulfilled + */ +module.exports = function dispatchRequest(config) { + throwIfCancellationRequested(config); + + // Ensure headers exist + config.headers = config.headers || {}; + + // Transform request data + config.data = transformData( + config.data, + config.headers, + config.transformRequest + ); + + // Flatten headers + config.headers = utils.merge( + config.headers.common || {}, + config.headers[config.method] || {}, + config.headers + ); + + utils.forEach( + ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], + function cleanHeaderConfig(method) { + delete config.headers[method]; + } + ); + + var adapter = config.adapter || defaults.adapter; + + return adapter(config).then(function onAdapterResolution(response) { + throwIfCancellationRequested(config); + + // Transform response data + response.data = transformData( + response.data, + response.headers, + config.transformResponse + ); + + return response; + }, function onAdapterRejection(reason) { + if (!isCancel(reason)) { + throwIfCancellationRequested(config); + + // Transform response data + if (reason && reason.response) { + reason.response.data = transformData( + reason.response.data, + reason.response.headers, + config.transformResponse + ); + } + } + + return Promise.reject(reason); + }); +}; + + +/***/ }), + +/***/ 614: +/***/ (function(module) { + +module.exports = require("events"); + +/***/ }), + +/***/ 622: +/***/ (function(module) { + +module.exports = require("path"); + +/***/ }), + +/***/ 629: +/***/ (function(module, __unusedexports, __webpack_require__) { + +module.exports = getPreviousPage + +const getPage = __webpack_require__(5) + +function getPreviousPage (octokit, link, headers) { + return getPage(octokit, link, 'prev', headers) +} + + +/***/ }), + +/***/ 631: +/***/ (function(module) { + +module.exports = require("net"); + +/***/ }), + +/***/ 650: +/***/ (function(__unusedmodule, exports, __webpack_require__) { + +"use strict"; + +Object.defineProperty(exports, "__esModule", { value: true }); +const fs_1 = __webpack_require__(747); +const os_1 = __webpack_require__(87); +class Context { + /** + * Hydrate the context from the environment + */ + constructor() { + this.payload = {}; + if (process.env.GITHUB_EVENT_PATH) { + if (fs_1.existsSync(process.env.GITHUB_EVENT_PATH)) { + this.payload = JSON.parse(fs_1.readFileSync(process.env.GITHUB_EVENT_PATH, { encoding: 'utf8' })); + } + else { + const path = process.env.GITHUB_EVENT_PATH; + process.stdout.write(`GITHUB_EVENT_PATH ${path} does not exist${os_1.EOL}`); + } + } + this.eventName = process.env.GITHUB_EVENT_NAME; + this.sha = process.env.GITHUB_SHA; + this.ref = process.env.GITHUB_REF; + this.workflow = process.env.GITHUB_WORKFLOW; + this.action = process.env.GITHUB_ACTION; + this.actor = process.env.GITHUB_ACTOR; + } + get issue() { + const payload = this.payload; + return Object.assign(Object.assign({}, this.repo), { number: (payload.issue || payload.pull_request || payload).number }); + } + get repo() { + if (process.env.GITHUB_REPOSITORY) { + const [owner, repo] = process.env.GITHUB_REPOSITORY.split('/'); + return { owner, repo }; + } + if (this.payload.repository) { + return { + owner: this.payload.repository.owner.login, + repo: this.payload.repository.name + }; + } + throw new Error("context.repo requires a GITHUB_REPOSITORY environment variable like 'owner/repo'"); + } +} +exports.Context = Context; +//# sourceMappingURL=context.js.map + +/***/ }), + +/***/ 655: +/***/ (function(module) { + +"use strict"; + + +/** + * Syntactic sugar for invoking a function and expanding an array for arguments. + * + * Common use case would be to use `Function.prototype.apply`. + * + * ```js + * function f(x, y, z) {} + * var args = [1, 2, 3]; + * f.apply(null, args); + * ``` + * + * With `spread` this example can be re-written. + * + * ```js + * spread(function(x, y, z) {})([1, 2, 3]); + * ``` + * + * @param {Function} callback + * @returns {Function} + */ +module.exports = function spread(callback) { + return function wrap(arr) { + return callback.apply(null, arr); + }; +}; + + +/***/ }), + +/***/ 664: +/***/ (function(module) { + +module.exports = eval("require")("supports-color"); + + +/***/ }), + +/***/ 669: +/***/ (function(module) { + +module.exports = require("util"); + +/***/ }), + +/***/ 677: +/***/ (function(module) { + +// Returns a wrapper function that returns a wrapped callback +// The wrapper function should do some stuff, and return a +// presumably different callback function. +// This makes sure that own properties are retained, so that +// decorations and such are not lost along the way. +module.exports = wrappy +function wrappy (fn, cb) { + if (fn && cb) return wrappy(fn)(cb) + + if (typeof fn !== 'function') + throw new TypeError('need wrapper function') + + Object.keys(fn).forEach(function (k) { + wrapper[k] = fn[k] + }) + + return wrapper + + function wrapper() { + var args = new Array(arguments.length) + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i] + } + var ret = fn.apply(this, args) + var cb = args[args.length-1] + if (typeof ret === 'function' && ret !== cb) { + Object.keys(cb).forEach(function (k) { + ret[k] = cb[k] + }) + } + return ret + } +} + + +/***/ }), + +/***/ 686: +/***/ (function(__unusedmodule, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, '__esModule', { value: true }); + +function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } + +var deprecation = __webpack_require__(249); +var once = _interopDefault(__webpack_require__(950)); + +const logOnce = once(deprecation => console.warn(deprecation)); +/** + * Error with extra properties to help with debugging + */ + +class RequestError extends Error { + constructor(message, statusCode, options) { + super(message); // Maintains proper stack trace (only available on V8) + + /* istanbul ignore next */ + + if (Error.captureStackTrace) { + Error.captureStackTrace(this, this.constructor); + } + + this.name = "HttpError"; + this.status = statusCode; + Object.defineProperty(this, "code", { + get() { + logOnce(new deprecation.Deprecation("[@octokit/request-error] `error.code` is deprecated, use `error.status`.")); + return statusCode; + } + + }); + this.headers = options.headers || {}; // redact request credentials without mutating original request options + + const requestCopy = Object.assign({}, options.request); + + if (options.request.headers.authorization) { + requestCopy.headers = Object.assign({}, options.request.headers, { + authorization: options.request.headers.authorization.replace(/ .*$/, " [REDACTED]") + }); + } + + requestCopy.url = requestCopy.url // client_id & client_secret can be passed as URL query parameters to increase rate limit + // see https://developer.github.com/v3/#increasing-the-unauthenticated-rate-limit-for-oauth-applications + .replace(/\bclient_secret=\w+/g, "client_secret=[REDACTED]") // OAuth tokens can be passed as URL query parameters, although it is not recommended + // see https://developer.github.com/v3/#oauth2-token-sent-in-a-header + .replace(/\baccess_token=\w+/g, "access_token=[REDACTED]"); + this.request = requestCopy; + } + +} + +exports.RequestError = RequestError; +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ 689: +/***/ (function(module) { + +// This is not the set of all possible signals. +// +// It IS, however, the set of all signals that trigger +// an exit on either Linux or BSD systems. Linux is a +// superset of the signal names supported on BSD, and +// the unknown signals just fail to register, so we can +// catch that easily enough. +// +// Don't bother with SIGKILL. It's uncatchable, which +// means that we can't fire any callbacks anyway. +// +// If a user does happen to register a handler on a non- +// fatal signal like SIGWINCH or something, and then +// exit, it'll end up firing `process.emit('exit')`, so +// the handler will be fired anyway. +// +// SIGBUS, SIGFPE, SIGSEGV and SIGILL, when not raised +// artificially, inherently leave the process in a +// state from which it is not safe to try and enter JS +// listeners. +module.exports = [ + 'SIGABRT', + 'SIGALRM', + 'SIGHUP', + 'SIGINT', + 'SIGTERM' +] + +if (process.platform !== 'win32') { + module.exports.push( + 'SIGVTALRM', + 'SIGXCPU', + 'SIGXFSZ', + 'SIGUSR2', + 'SIGTRAP', + 'SIGSYS', + 'SIGQUIT', + 'SIGIOT' + // should detect profiler and enable/disable accordingly. + // see #21 + // 'SIGPROF' + ) +} + +if (process.platform === 'linux') { + module.exports.push( + 'SIGIO', + 'SIGPOLL', + 'SIGPWR', + 'SIGSTKFLT', + 'SIGUNUSED' + ) +} + + +/***/ }), + +/***/ 691: +/***/ (function(module, exports, __webpack_require__) { + + +/** + * This is the common logic for both the Node.js and web browser + * implementations of `debug()`. + * + * Expose `debug()` as the module. + */ + +exports = module.exports = createDebug.debug = createDebug['default'] = createDebug; +exports.coerce = coerce; +exports.disable = disable; +exports.enable = enable; +exports.enabled = enabled; +exports.humanize = __webpack_require__(311); + +/** + * Active `debug` instances. + */ +exports.instances = []; + +/** + * The currently active debug mode names, and names to skip. + */ + +exports.names = []; +exports.skips = []; + +/** + * Map of special "%n" handling functions, for the debug "format" argument. + * + * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N". + */ + +exports.formatters = {}; + +/** + * Select a color. + * @param {String} namespace + * @return {Number} + * @api private + */ + +function selectColor(namespace) { + var hash = 0, i; + + for (i in namespace) { + hash = ((hash << 5) - hash) + namespace.charCodeAt(i); + hash |= 0; // Convert to 32bit integer + } + + return exports.colors[Math.abs(hash) % exports.colors.length]; +} + +/** + * Create a debugger with the given `namespace`. + * + * @param {String} namespace + * @return {Function} + * @api public + */ + +function createDebug(namespace) { + + var prevTime; + + function debug() { + // disabled? + if (!debug.enabled) return; + + var self = debug; + + // set `diff` timestamp + var curr = +new Date(); + var ms = curr - (prevTime || curr); + self.diff = ms; + self.prev = prevTime; + self.curr = curr; + prevTime = curr; + + // turn the `arguments` into a proper Array + var args = new Array(arguments.length); + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i]; + } + + args[0] = exports.coerce(args[0]); + + if ('string' !== typeof args[0]) { + // anything else let's inspect with %O + args.unshift('%O'); + } + + // apply any `formatters` transformations + var index = 0; + args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) { + // if we encounter an escaped % then don't increase the array index + if (match === '%%') return match; + index++; + var formatter = exports.formatters[format]; + if ('function' === typeof formatter) { + var val = args[index]; + match = formatter.call(self, val); + + // now we need to remove `args[index]` since it's inlined in the `format` + args.splice(index, 1); + index--; + } + return match; + }); + + // apply env-specific formatting (colors, etc.) + exports.formatArgs.call(self, args); + + var logFn = debug.log || exports.log || console.log.bind(console); + logFn.apply(self, args); + } + + debug.namespace = namespace; + debug.enabled = exports.enabled(namespace); + debug.useColors = exports.useColors(); + debug.color = selectColor(namespace); + debug.destroy = destroy; + + // env-specific initialization logic for debug instances + if ('function' === typeof exports.init) { + exports.init(debug); + } + + exports.instances.push(debug); + + return debug; +} + +function destroy () { + var index = exports.instances.indexOf(this); + if (index !== -1) { + exports.instances.splice(index, 1); + return true; + } else { + return false; + } +} + +/** + * Enables a debug mode by namespaces. This can include modes + * separated by a colon and wildcards. + * + * @param {String} namespaces + * @api public + */ + +function enable(namespaces) { + exports.save(namespaces); + + exports.names = []; + exports.skips = []; + + var i; + var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/); + var len = split.length; + + for (i = 0; i < len; i++) { + if (!split[i]) continue; // ignore empty strings + namespaces = split[i].replace(/\*/g, '.*?'); + if (namespaces[0] === '-') { + exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$')); + } else { + exports.names.push(new RegExp('^' + namespaces + '$')); + } + } + + for (i = 0; i < exports.instances.length; i++) { + var instance = exports.instances[i]; + instance.enabled = exports.enabled(instance.namespace); + } +} + +/** + * Disable debug output. + * + * @api public + */ + +function disable() { + exports.enable(''); +} + +/** + * Returns true if the given mode name is enabled, false otherwise. + * + * @param {String} name + * @return {Boolean} + * @api public + */ + +function enabled(name) { + if (name[name.length - 1] === '*') { + return true; + } + var i, len; + for (i = 0, len = exports.skips.length; i < len; i++) { + if (exports.skips[i].test(name)) { + return false; + } + } + for (i = 0, len = exports.names.length; i < len; i++) { + if (exports.names[i].test(name)) { + return true; + } + } + return false; +} + +/** + * Coerce `val`. + * + * @param {Mixed} val + * @return {Mixed} + * @api private + */ + +function coerce(val) { + if (val instanceof Error) return val.stack || val.message; + return val; +} + + +/***/ }), + +/***/ 705: +/***/ (function(__unusedmodule, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, '__esModule', { value: true }); + +function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } + +var endpoint = __webpack_require__(464); +var universalUserAgent = __webpack_require__(235); +var isPlainObject = _interopDefault(__webpack_require__(579)); +var nodeFetch = _interopDefault(__webpack_require__(607)); +var requestError = __webpack_require__(686); + +const VERSION = "5.4.2"; + +function getBufferResponse(response) { + return response.arrayBuffer(); +} + +function fetchWrapper(requestOptions) { + if (isPlainObject(requestOptions.body) || Array.isArray(requestOptions.body)) { + requestOptions.body = JSON.stringify(requestOptions.body); + } + + let headers = {}; + let status; + let url; + const fetch = requestOptions.request && requestOptions.request.fetch || nodeFetch; + return fetch(requestOptions.url, Object.assign({ + method: requestOptions.method, + body: requestOptions.body, + headers: requestOptions.headers, + redirect: requestOptions.redirect + }, requestOptions.request)).then(response => { + url = response.url; + status = response.status; + + for (const keyAndValue of response.headers) { + headers[keyAndValue[0]] = keyAndValue[1]; + } + + if (status === 204 || status === 205) { + return; + } // GitHub API returns 200 for HEAD requests + + + if (requestOptions.method === "HEAD") { + if (status < 400) { + return; + } + + throw new requestError.RequestError(response.statusText, status, { + headers, + request: requestOptions + }); + } + + if (status === 304) { + throw new requestError.RequestError("Not modified", status, { + headers, + request: requestOptions + }); + } + + if (status >= 400) { + return response.text().then(message => { + const error = new requestError.RequestError(message, status, { + headers, + request: requestOptions + }); + + try { + let responseBody = JSON.parse(error.message); + Object.assign(error, responseBody); + let errors = responseBody.errors; // Assumption `errors` would always be in Array format + + error.message = error.message + ": " + errors.map(JSON.stringify).join(", "); + } catch (e) {// ignore, see octokit/rest.js#684 + } + + throw error; + }); + } + + const contentType = response.headers.get("content-type"); + + if (/application\/json/.test(contentType)) { + return response.json(); + } + + if (!contentType || /^text\/|charset=utf-8$/.test(contentType)) { + return response.text(); + } + + return getBufferResponse(response); + }).then(data => { + return { + status, + url, + headers, + data + }; + }).catch(error => { + if (error instanceof requestError.RequestError) { + throw error; + } + + throw new requestError.RequestError(error.message, 500, { + headers, + request: requestOptions + }); + }); +} + +function withDefaults(oldEndpoint, newDefaults) { + const endpoint = oldEndpoint.defaults(newDefaults); + + const newApi = function (route, parameters) { + const endpointOptions = endpoint.merge(route, parameters); + + if (!endpointOptions.request || !endpointOptions.request.hook) { + return fetchWrapper(endpoint.parse(endpointOptions)); + } + + const request = (route, parameters) => { + return fetchWrapper(endpoint.parse(endpoint.merge(route, parameters))); + }; + + Object.assign(request, { + endpoint, + defaults: withDefaults.bind(null, endpoint) + }); + return endpointOptions.request.hook(request, endpointOptions); + }; + + return Object.assign(newApi, { + endpoint, + defaults: withDefaults.bind(null, endpoint) + }); +} + +const request = withDefaults(endpoint.endpoint, { + headers: { + "user-agent": `octokit-request.js/${VERSION} ${universalUserAgent.getUserAgent()}` + } +}); + +exports.request = request; +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ 708: +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; + + +const fs = __webpack_require__(747); +const shebangCommand = __webpack_require__(575); + +function readShebang(command) { + // Read the first 150 bytes from the file + const size = 150; + let buffer; + + if (Buffer.alloc) { + // Node.js v4.5+ / v5.10+ + buffer = Buffer.alloc(size); + } else { + // Old Node.js API + buffer = new Buffer(size); + buffer.fill(0); // zero-fill + } + + let fd; + + try { + fd = fs.openSync(command, 'r'); + fs.readSync(fd, buffer, 0, size, 0); + fs.closeSync(fd); + } catch (e) { /* Empty */ } + + // Attempt to extract shebang (null is returned if not a shebang) + return shebangCommand(buffer.toString()); +} + +module.exports = readShebang; + + +/***/ }), + +/***/ 710: +/***/ (function(__unusedmodule, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, '__esModule', { value: true }); + +function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } + +var osName = _interopDefault(__webpack_require__(931)); + +function getUserAgent() { + try { + return `Node.js/${process.version.substr(1)} (${osName()}; ${process.arch})`; + } catch (error) { + if (/wmic os get Caption/.test(error.message)) { + return "Windows "; + } + + throw error; + } +} + +exports.getUserAgent = getUserAgent; +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ 730: +/***/ (function(module, __unusedexports, __webpack_require__) { + +var once = __webpack_require__(950) +var eos = __webpack_require__(346) +var fs = __webpack_require__(747) // we only need fs to get the ReadStream and WriteStream prototypes + +var noop = function () {} +var ancient = /^v?\.0/.test(process.version) + +var isFn = function (fn) { + return typeof fn === 'function' +} + +var isFS = function (stream) { + if (!ancient) return false // newer node version do not need to care about fs is a special way + if (!fs) return false // browser + return (stream instanceof (fs.ReadStream || noop) || stream instanceof (fs.WriteStream || noop)) && isFn(stream.close) +} + +var isRequest = function (stream) { + return stream.setHeader && isFn(stream.abort) +} + +var destroyer = function (stream, reading, writing, callback) { + callback = once(callback) + + var closed = false + stream.on('close', function () { + closed = true + }) + + eos(stream, {readable: reading, writable: writing}, function (err) { + if (err) return callback(err) + closed = true + callback() + }) + + var destroyed = false + return function (err) { + if (closed) return + if (destroyed) return + destroyed = true + + if (isFS(stream)) return stream.close(noop) // use close for fs streams to avoid fd leaks + if (isRequest(stream)) return stream.abort() // request.destroy just do .end - .abort is what we want + + if (isFn(stream.destroy)) return stream.destroy() + + callback(err || new Error('stream was destroyed')) + } +} + +var call = function (fn) { + fn() +} + +var pipe = function (from, to) { + return from.pipe(to) +} + +var pump = function () { + var streams = Array.prototype.slice.call(arguments) + var callback = isFn(streams[streams.length - 1] || noop) && streams.pop() || noop + + if (Array.isArray(streams[0])) streams = streams[0] + if (streams.length < 2) throw new Error('pump requires two streams per minimum') + + var error + var destroys = streams.map(function (stream, i) { + var reading = i < streams.length - 1 + var writing = i > 0 + return destroyer(stream, reading, writing, function (err) { + if (!error) error = err + if (err) destroys.forEach(call) + if (reading) return + destroys.forEach(call) + callback(error) + }) + }) + + return streams.reduce(pipe) +} + +module.exports = pump + + +/***/ }), + +/***/ 740: +/***/ (function(module) { + +"use strict"; + +module.exports = opts => { + opts = opts || {}; + + const env = opts.env || process.env; + const platform = opts.platform || process.platform; + + if (platform !== 'win32') { + return 'PATH'; + } + + return Object.keys(env).find(x => x.toUpperCase() === 'PATH') || 'Path'; +}; + + +/***/ }), + +/***/ 747: +/***/ (function(module) { + +module.exports = require("fs"); + +/***/ }), + +/***/ 749: +/***/ (function(module) { + +"use strict"; + +module.exports = function (x) { + var lf = typeof x === 'string' ? '\n' : '\n'.charCodeAt(); + var cr = typeof x === 'string' ? '\r' : '\r'.charCodeAt(); + + if (x[x.length - 1] === lf) { + x = x.slice(0, x.length - 1); + } + + if (x[x.length - 1] === cr) { + x = x.slice(0, x.length - 1); + } + + return x; +}; + + +/***/ }), + +/***/ 761: +/***/ (function(module) { + +module.exports = require("zlib"); + +/***/ }), + +/***/ 764: +/***/ (function(module) { + +"use strict"; + + +var isStream = module.exports = function (stream) { + return stream !== null && typeof stream === 'object' && typeof stream.pipe === 'function'; +}; + +isStream.writable = function (stream) { + return isStream(stream) && stream.writable !== false && typeof stream._write === 'function' && typeof stream._writableState === 'object'; +}; + +isStream.readable = function (stream) { + return isStream(stream) && stream.readable !== false && typeof stream._read === 'function' && typeof stream._readableState === 'object'; +}; + +isStream.duplex = function (stream) { + return isStream.writable(stream) && isStream.readable(stream); +}; + +isStream.transform = function (stream) { + return isStream.duplex(stream) && typeof stream._transform === 'function' && typeof stream._transformState === 'object'; +}; + + +/***/ }), + +/***/ 766: +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(156); + +function InterceptorManager() { + this.handlers = []; +} + +/** + * Add a new interceptor to the stack + * + * @param {Function} fulfilled The function to handle `then` for a `Promise` + * @param {Function} rejected The function to handle `reject` for a `Promise` + * + * @return {Number} An ID used to remove interceptor later + */ +InterceptorManager.prototype.use = function use(fulfilled, rejected) { + this.handlers.push({ + fulfilled: fulfilled, + rejected: rejected + }); + return this.handlers.length - 1; +}; + +/** + * Remove an interceptor from the stack + * + * @param {Number} id The ID that was returned by `use` + */ +InterceptorManager.prototype.eject = function eject(id) { + if (this.handlers[id]) { + this.handlers[id] = null; + } +}; + +/** + * Iterate over all the registered interceptors + * + * This method is particularly useful for skipping over any + * interceptors that may have become `null` calling `eject`. + * + * @param {Function} fn The function to call for each interceptor + */ +InterceptorManager.prototype.forEach = function forEach(fn) { + utils.forEach(this.handlers, function forEachHandler(h) { + if (h !== null) { + fn(h); + } + }); +}; + +module.exports = InterceptorManager; + + +/***/ }), + +/***/ 774: +/***/ (function(module, __unusedexports, __webpack_require__) { + +module.exports = getNextPage + +const getPage = __webpack_require__(5) + +function getNextPage (octokit, link, headers) { + return getPage(octokit, link, 'next', headers) +} + + +/***/ }), + +/***/ 776: +/***/ (function(module, __unusedexports, __webpack_require__) { + +module.exports = authenticationRequestError; + +const { RequestError } = __webpack_require__(905); + +function authenticationRequestError(state, error, options) { + /* istanbul ignore next */ + if (!error.headers) throw error; + + const otpRequired = /required/.test(error.headers["x-github-otp"] || ""); + // handle "2FA required" error only + if (error.status !== 401 || !otpRequired) { + throw error; + } + + if ( + error.status === 401 && + otpRequired && + error.request && + error.request.headers["x-github-otp"] + ) { + throw new RequestError( + "Invalid one-time password for two-factor authentication", + 401, + { + headers: error.headers, + request: options + } + ); + } + + if (typeof state.auth.on2fa !== "function") { + throw new RequestError( + "2FA required, but options.on2fa is not a function. See https://github.com/octokit/rest.js#authentication", + 401, + { + headers: error.headers, + request: options + } + ); + } + + return Promise.resolve() + .then(() => { + return state.auth.on2fa(); + }) + .then(oneTimePassword => { + const newOptions = Object.assign(options, { + headers: Object.assign( + { "x-github-otp": oneTimePassword }, + options.headers + ) + }); + return state.octokit.request(newOptions); + }); +} + + +/***/ }), + +/***/ 787: +/***/ (function(__unusedmodule, exports, __webpack_require__) { + +"use strict"; + +Object.defineProperty(exports, "__esModule", { value: true }); +const url = __webpack_require__(835); +function getProxyUrl(reqUrl) { + let usingSsl = reqUrl.protocol === 'https:'; + let proxyUrl; + if (checkBypass(reqUrl)) { + return proxyUrl; + } + let proxyVar; + if (usingSsl) { + proxyVar = process.env['https_proxy'] || process.env['HTTPS_PROXY']; + } + else { + proxyVar = process.env['http_proxy'] || process.env['HTTP_PROXY']; + } + if (proxyVar) { + proxyUrl = url.parse(proxyVar); + } + return proxyUrl; +} +exports.getProxyUrl = getProxyUrl; +function checkBypass(reqUrl) { + if (!reqUrl.hostname) { + return false; + } + let noProxy = process.env['no_proxy'] || process.env['NO_PROXY'] || ''; + if (!noProxy) { + return false; + } + // Determine the request port + let reqPort; + if (reqUrl.port) { + reqPort = Number(reqUrl.port); + } + else if (reqUrl.protocol === 'http:') { + reqPort = 80; + } + else if (reqUrl.protocol === 'https:') { + reqPort = 443; + } + // Format the request hostname and hostname with port + let upperReqHosts = [reqUrl.hostname.toUpperCase()]; + if (typeof reqPort === 'number') { + upperReqHosts.push(`${upperReqHosts[0]}:${reqPort}`); + } + // Compare request host against noproxy + for (let upperNoProxyItem of noProxy + .split(',') + .map(x => x.trim().toUpperCase()) + .filter(x => x)) { + if (upperReqHosts.some(x => x === upperNoProxyItem)) { + return true; + } + } + return false; +} +exports.checkBypass = checkBypass; + + +/***/ }), + +/***/ 795: +/***/ (function(__unusedmodule, exports) { + +"use strict"; + + +Object.defineProperty(exports, '__esModule', { value: true }); + +const VERSION = "1.1.2"; + +/** + * Some “list” response that can be paginated have a different response structure + * + * They have a `total_count` key in the response (search also has `incomplete_results`, + * /installation/repositories also has `repository_selection`), as well as a key with + * the list of the items which name varies from endpoint to endpoint: + * + * - https://developer.github.com/v3/search/#example (key `items`) + * - https://developer.github.com/v3/checks/runs/#response-3 (key: `check_runs`) + * - https://developer.github.com/v3/checks/suites/#response-1 (key: `check_suites`) + * - https://developer.github.com/v3/apps/installations/#list-repositories (key: `repositories`) + * - https://developer.github.com/v3/apps/installations/#list-installations-for-a-user (key `installations`) + * + * Octokit normalizes these responses so that paginated results are always returned following + * the same structure. One challenge is that if the list response has only one page, no Link + * header is provided, so this header alone is not sufficient to check wether a response is + * paginated or not. For the exceptions with the namespace, a fallback check for the route + * paths has to be added in order to normalize the response. We cannot check for the total_count + * property because it also exists in the response of Get the combined status for a specific ref. + */ +const REGEX = [/^\/search\//, /^\/repos\/[^/]+\/[^/]+\/commits\/[^/]+\/(check-runs|check-suites)([^/]|$)/, /^\/installation\/repositories([^/]|$)/, /^\/user\/installations([^/]|$)/, /^\/repos\/[^/]+\/[^/]+\/actions\/secrets([^/]|$)/, /^\/repos\/[^/]+\/[^/]+\/actions\/workflows(\/[^/]+\/runs)?([^/]|$)/, /^\/repos\/[^/]+\/[^/]+\/actions\/runs(\/[^/]+\/(artifacts|jobs))?([^/]|$)/]; +function normalizePaginatedListResponse(octokit, url, response) { + const path = url.replace(octokit.request.endpoint.DEFAULTS.baseUrl, ""); + const responseNeedsNormalization = REGEX.find(regex => regex.test(path)); + if (!responseNeedsNormalization) return; // keep the additional properties intact as there is currently no other way + // to retrieve the same information. + + const incompleteResults = response.data.incomplete_results; + const repositorySelection = response.data.repository_selection; + const totalCount = response.data.total_count; + delete response.data.incomplete_results; + delete response.data.repository_selection; + delete response.data.total_count; + const namespaceKey = Object.keys(response.data)[0]; + const data = response.data[namespaceKey]; + response.data = data; + + if (typeof incompleteResults !== "undefined") { + response.data.incomplete_results = incompleteResults; + } + + if (typeof repositorySelection !== "undefined") { + response.data.repository_selection = repositorySelection; + } + + response.data.total_count = totalCount; + Object.defineProperty(response.data, namespaceKey, { + get() { + octokit.log.warn(`[@octokit/paginate-rest] "response.data.${namespaceKey}" is deprecated for "GET ${path}". Get the results directly from "response.data"`); + return Array.from(data); + } + + }); +} + +function iterator(octokit, route, parameters) { + const options = octokit.request.endpoint(route, parameters); + const method = options.method; + const headers = options.headers; + let url = options.url; + return { + [Symbol.asyncIterator]: () => ({ + next() { + if (!url) { + return Promise.resolve({ + done: true + }); + } + + return octokit.request({ + method, + url, + headers + }).then(response => { + normalizePaginatedListResponse(octokit, url, response); // `response.headers.link` format: + // '; rel="next", ; rel="last"' + // sets `url` to undefined if "next" URL is not present or `link` header is not set + + url = ((response.headers.link || "").match(/<([^>]+)>;\s*rel="next"/) || [])[1]; + return { + value: response + }; + }); + } + + }) + }; +} + +function paginate(octokit, route, parameters, mapFn) { + if (typeof parameters === "function") { + mapFn = parameters; + parameters = undefined; + } + + return gather(octokit, [], iterator(octokit, route, parameters)[Symbol.asyncIterator](), mapFn); +} + +function gather(octokit, results, iterator, mapFn) { + return iterator.next().then(result => { + if (result.done) { + return results; + } + + let earlyExit = false; + + function done() { + earlyExit = true; + } + + results = results.concat(mapFn ? mapFn(result.value, done) : result.value.data); + + if (earlyExit) { + return results; + } + + return gather(octokit, results, iterator, mapFn); + }); +} + +/** + * @param octokit Octokit instance + * @param options Options passed to Octokit constructor + */ + +function paginateRest(octokit) { + return { + paginate: Object.assign(paginate.bind(null, octokit), { + iterator: iterator.bind(null, octokit) + }) + }; +} +paginateRest.VERSION = VERSION; + +exports.paginateRest = paginateRest; +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ 804: +/***/ (function(module, __unusedexports, __webpack_require__) { + +module.exports = octokitValidate; + +const validate = __webpack_require__(148); + +function octokitValidate(octokit) { + octokit.hook.before("request", validate.bind(null, octokit)); +} + + +/***/ }), + +/***/ 815: +/***/ (function(module, __unusedexports, __webpack_require__) { + +module.exports = paginatePlugin; + +const { paginateRest } = __webpack_require__(795); + +function paginatePlugin(octokit) { + Object.assign(octokit, paginateRest(octokit)); +} + + +/***/ }), + +/***/ 818: +/***/ (function(module, __unusedexports, __webpack_require__) { + +module.exports = Octokit; + +const { request } = __webpack_require__(705); +const Hook = __webpack_require__(289); + +const parseClientOptions = __webpack_require__(841); + +function Octokit(plugins, options) { + options = options || {}; + const hook = new Hook.Collection(); + const log = Object.assign( + { + debug: () => {}, + info: () => {}, + warn: console.warn, + error: console.error + }, + options && options.log + ); + const api = { + hook, + log, + request: request.defaults(parseClientOptions(options, log, hook)) + }; + + plugins.forEach(pluginFunction => pluginFunction(api, options)); + + return api; +} + + +/***/ }), + +/***/ 833: +/***/ (function(module) { + +module.exports = {"name":"@octokit/rest","version":"16.43.1","publishConfig":{"access":"public"},"description":"GitHub REST API client for Node.js","keywords":["octokit","github","rest","api-client"],"author":"Gregor Martynus (https://github.com/gr2m)","contributors":[{"name":"Mike de Boer","email":"info@mikedeboer.nl"},{"name":"Fabian Jakobs","email":"fabian@c9.io"},{"name":"Joe Gallo","email":"joe@brassafrax.com"},{"name":"Gregor Martynus","url":"https://github.com/gr2m"}],"repository":"https://github.com/octokit/rest.js","dependencies":{"@octokit/auth-token":"^2.4.0","@octokit/plugin-paginate-rest":"^1.1.1","@octokit/plugin-request-log":"^1.0.0","@octokit/plugin-rest-endpoint-methods":"2.4.0","@octokit/request":"^5.2.0","@octokit/request-error":"^1.0.2","atob-lite":"^2.0.0","before-after-hook":"^2.0.0","btoa-lite":"^1.0.0","deprecation":"^2.0.0","lodash.get":"^4.4.2","lodash.set":"^4.3.2","lodash.uniq":"^4.5.0","octokit-pagination-methods":"^1.1.0","once":"^1.4.0","universal-user-agent":"^4.0.0"},"devDependencies":{"@gimenete/type-writer":"^0.1.3","@octokit/auth":"^1.1.1","@octokit/fixtures-server":"^5.0.6","@octokit/graphql":"^4.2.0","@types/node":"^13.1.0","bundlesize":"^0.18.0","chai":"^4.1.2","compression-webpack-plugin":"^3.1.0","cypress":"^3.0.0","glob":"^7.1.2","http-proxy-agent":"^4.0.0","lodash.camelcase":"^4.3.0","lodash.merge":"^4.6.1","lodash.upperfirst":"^4.3.1","lolex":"^5.1.2","mkdirp":"^1.0.0","mocha":"^7.0.1","mustache":"^4.0.0","nock":"^11.3.3","npm-run-all":"^4.1.2","nyc":"^15.0.0","prettier":"^1.14.2","proxy":"^1.0.0","semantic-release":"^17.0.0","sinon":"^8.0.0","sinon-chai":"^3.0.0","sort-keys":"^4.0.0","string-to-arraybuffer":"^1.0.0","string-to-jsdoc-comment":"^1.0.0","typescript":"^3.3.1","webpack":"^4.0.0","webpack-bundle-analyzer":"^3.0.0","webpack-cli":"^3.0.0"},"types":"index.d.ts","scripts":{"coverage":"nyc report --reporter=html && open coverage/index.html","lint":"prettier --check '{lib,plugins,scripts,test}/**/*.{js,json,ts}' 'docs/*.{js,json}' 'docs/src/**/*' index.js README.md package.json","lint:fix":"prettier --write '{lib,plugins,scripts,test}/**/*.{js,json,ts}' 'docs/*.{js,json}' 'docs/src/**/*' index.js README.md package.json","pretest":"npm run -s lint","test":"nyc mocha test/mocha-node-setup.js \"test/*/**/*-test.js\"","test:browser":"cypress run --browser chrome","build":"npm-run-all build:*","build:ts":"npm run -s update-endpoints:typescript","prebuild:browser":"mkdirp dist/","build:browser":"npm-run-all build:browser:*","build:browser:development":"webpack --mode development --entry . --output-library=Octokit --output=./dist/octokit-rest.js --profile --json > dist/bundle-stats.json","build:browser:production":"webpack --mode production --entry . --plugin=compression-webpack-plugin --output-library=Octokit --output-path=./dist --output-filename=octokit-rest.min.js --devtool source-map","generate-bundle-report":"webpack-bundle-analyzer dist/bundle-stats.json --mode=static --no-open --report dist/bundle-report.html","update-endpoints":"npm-run-all update-endpoints:*","update-endpoints:fetch-json":"node scripts/update-endpoints/fetch-json","update-endpoints:typescript":"node scripts/update-endpoints/typescript","prevalidate:ts":"npm run -s build:ts","validate:ts":"tsc --target es6 --noImplicitAny index.d.ts","postvalidate:ts":"tsc --noEmit --target es6 test/typescript-validate.ts","start-fixtures-server":"octokit-fixtures-server"},"license":"MIT","files":["index.js","index.d.ts","lib","plugins"],"nyc":{"ignore":["test"]},"release":{"publish":["@semantic-release/npm",{"path":"@semantic-release/github","assets":["dist/*","!dist/*.map.gz"]}]},"bundlesize":[{"path":"./dist/octokit-rest.min.js.gz","maxSize":"33 kB"}],"_resolved":"https://registry.npmjs.org/@octokit/rest/-/rest-16.43.1.tgz","_integrity":"sha512-gfFKwRT/wFxq5qlNjnW2dh+qh74XgTQ2B179UX5K1HYCluioWj8Ndbgqw2PVqa1NnVJkGHp2ovMpVn/DImlmkw==","_from":"@octokit/rest@16.43.1"}; + +/***/ }), + +/***/ 835: +/***/ (function(module) { + +module.exports = require("url"); + +/***/ }), + +/***/ 839: +/***/ (function(module, __unusedexports, __webpack_require__) { + +module.exports = authenticationPlugin; + +const { createTokenAuth } = __webpack_require__(128); +const { Deprecation } = __webpack_require__(249); +const once = __webpack_require__(950); + +const beforeRequest = __webpack_require__(86); +const requestError = __webpack_require__(511); +const validate = __webpack_require__(953); +const withAuthorizationPrefix = __webpack_require__(265); + +const deprecateAuthBasic = once((log, deprecation) => log.warn(deprecation)); +const deprecateAuthObject = once((log, deprecation) => log.warn(deprecation)); + +function authenticationPlugin(octokit, options) { + // If `options.authStrategy` is set then use it and pass in `options.auth` + if (options.authStrategy) { + const auth = options.authStrategy(options.auth); + octokit.hook.wrap("request", auth.hook); + octokit.auth = auth; + return; + } + + // If neither `options.authStrategy` nor `options.auth` are set, the `octokit` instance + // is unauthenticated. The `octokit.auth()` method is a no-op and no request hook is registred. + if (!options.auth) { + octokit.auth = () => + Promise.resolve({ + type: "unauthenticated" + }); + return; + } + + const isBasicAuthString = + typeof options.auth === "string" && + /^basic/.test(withAuthorizationPrefix(options.auth)); + + // If only `options.auth` is set to a string, use the default token authentication strategy. + if (typeof options.auth === "string" && !isBasicAuthString) { + const auth = createTokenAuth(options.auth); + octokit.hook.wrap("request", auth.hook); + octokit.auth = auth; + return; + } + + // Otherwise log a deprecation message + const [deprecationMethod, deprecationMessapge] = isBasicAuthString + ? [ + deprecateAuthBasic, + 'Setting the "new Octokit({ auth })" option to a Basic Auth string is deprecated. Use https://github.com/octokit/auth-basic.js instead. See (https://octokit.github.io/rest.js/#authentication)' + ] + : [ + deprecateAuthObject, + 'Setting the "new Octokit({ auth })" option to an object without also setting the "authStrategy" option is deprecated and will be removed in v17. See (https://octokit.github.io/rest.js/#authentication)' + ]; + deprecationMethod( + octokit.log, + new Deprecation("[@octokit/rest] " + deprecationMessapge) + ); + + octokit.auth = () => + Promise.resolve({ + type: "deprecated", + message: deprecationMessapge + }); + + validate(options.auth); + + const state = { + octokit, + auth: options.auth + }; + + octokit.hook.before("request", beforeRequest.bind(null, state)); + octokit.hook.error("request", requestError.bind(null, state)); +} + + +/***/ }), + +/***/ 841: +/***/ (function(module, __unusedexports, __webpack_require__) { + +module.exports = parseOptions; + +const { Deprecation } = __webpack_require__(249); +const { getUserAgent } = __webpack_require__(710); +const once = __webpack_require__(950); + +const pkg = __webpack_require__(833); + +const deprecateOptionsTimeout = once((log, deprecation) => + log.warn(deprecation) +); +const deprecateOptionsAgent = once((log, deprecation) => log.warn(deprecation)); +const deprecateOptionsHeaders = once((log, deprecation) => + log.warn(deprecation) +); + +function parseOptions(options, log, hook) { + if (options.headers) { + options.headers = Object.keys(options.headers).reduce((newObj, key) => { + newObj[key.toLowerCase()] = options.headers[key]; + return newObj; + }, {}); + } + + const clientDefaults = { + headers: options.headers || {}, + request: options.request || {}, + mediaType: { + previews: [], + format: "" + } + }; + + if (options.baseUrl) { + clientDefaults.baseUrl = options.baseUrl; + } + + if (options.userAgent) { + clientDefaults.headers["user-agent"] = options.userAgent; + } + + if (options.previews) { + clientDefaults.mediaType.previews = options.previews; + } + + if (options.timeZone) { + clientDefaults.headers["time-zone"] = options.timeZone; + } + + if (options.timeout) { + deprecateOptionsTimeout( + log, + new Deprecation( + "[@octokit/rest] new Octokit({timeout}) is deprecated. Use {request: {timeout}} instead. See https://github.com/octokit/request.js#request" + ) + ); + clientDefaults.request.timeout = options.timeout; + } + + if (options.agent) { + deprecateOptionsAgent( + log, + new Deprecation( + "[@octokit/rest] new Octokit({agent}) is deprecated. Use {request: {agent}} instead. See https://github.com/octokit/request.js#request" + ) + ); + clientDefaults.request.agent = options.agent; + } + + if (options.headers) { + deprecateOptionsHeaders( + log, + new Deprecation( + "[@octokit/rest] new Octokit({headers}) is deprecated. Use {userAgent, previews} instead. See https://github.com/octokit/request.js#request" + ) + ); + } + + const userAgentOption = clientDefaults.headers["user-agent"]; + const defaultUserAgent = `octokit.js/${pkg.version} ${getUserAgent()}`; + + clientDefaults.headers["user-agent"] = [userAgentOption, defaultUserAgent] + .filter(Boolean) + .join(" "); + + clientDefaults.request.hook = hook.bind(null, "request"); + + return clientDefaults; +} + + +/***/ }), + +/***/ 842: +/***/ (function(__unusedmodule, exports, __webpack_require__) { + +"use strict"; + +Object.defineProperty(exports, "__esModule", { value: true }); +const url = __webpack_require__(835); +const http = __webpack_require__(605); +const https = __webpack_require__(211); +const pm = __webpack_require__(787); +let tunnel; +var HttpCodes; +(function (HttpCodes) { + HttpCodes[HttpCodes["OK"] = 200] = "OK"; + HttpCodes[HttpCodes["MultipleChoices"] = 300] = "MultipleChoices"; + HttpCodes[HttpCodes["MovedPermanently"] = 301] = "MovedPermanently"; + HttpCodes[HttpCodes["ResourceMoved"] = 302] = "ResourceMoved"; + HttpCodes[HttpCodes["SeeOther"] = 303] = "SeeOther"; + HttpCodes[HttpCodes["NotModified"] = 304] = "NotModified"; + HttpCodes[HttpCodes["UseProxy"] = 305] = "UseProxy"; + HttpCodes[HttpCodes["SwitchProxy"] = 306] = "SwitchProxy"; + HttpCodes[HttpCodes["TemporaryRedirect"] = 307] = "TemporaryRedirect"; + HttpCodes[HttpCodes["PermanentRedirect"] = 308] = "PermanentRedirect"; + HttpCodes[HttpCodes["BadRequest"] = 400] = "BadRequest"; + HttpCodes[HttpCodes["Unauthorized"] = 401] = "Unauthorized"; + HttpCodes[HttpCodes["PaymentRequired"] = 402] = "PaymentRequired"; + HttpCodes[HttpCodes["Forbidden"] = 403] = "Forbidden"; + HttpCodes[HttpCodes["NotFound"] = 404] = "NotFound"; + HttpCodes[HttpCodes["MethodNotAllowed"] = 405] = "MethodNotAllowed"; + HttpCodes[HttpCodes["NotAcceptable"] = 406] = "NotAcceptable"; + HttpCodes[HttpCodes["ProxyAuthenticationRequired"] = 407] = "ProxyAuthenticationRequired"; + HttpCodes[HttpCodes["RequestTimeout"] = 408] = "RequestTimeout"; + HttpCodes[HttpCodes["Conflict"] = 409] = "Conflict"; + HttpCodes[HttpCodes["Gone"] = 410] = "Gone"; + HttpCodes[HttpCodes["TooManyRequests"] = 429] = "TooManyRequests"; + HttpCodes[HttpCodes["InternalServerError"] = 500] = "InternalServerError"; + HttpCodes[HttpCodes["NotImplemented"] = 501] = "NotImplemented"; + HttpCodes[HttpCodes["BadGateway"] = 502] = "BadGateway"; + HttpCodes[HttpCodes["ServiceUnavailable"] = 503] = "ServiceUnavailable"; + HttpCodes[HttpCodes["GatewayTimeout"] = 504] = "GatewayTimeout"; +})(HttpCodes = exports.HttpCodes || (exports.HttpCodes = {})); +var Headers; +(function (Headers) { + Headers["Accept"] = "accept"; + Headers["ContentType"] = "content-type"; +})(Headers = exports.Headers || (exports.Headers = {})); +var MediaTypes; +(function (MediaTypes) { + MediaTypes["ApplicationJson"] = "application/json"; +})(MediaTypes = exports.MediaTypes || (exports.MediaTypes = {})); +/** + * Returns the proxy URL, depending upon the supplied url and proxy environment variables. + * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com + */ +function getProxyUrl(serverUrl) { + let proxyUrl = pm.getProxyUrl(url.parse(serverUrl)); + return proxyUrl ? proxyUrl.href : ''; +} +exports.getProxyUrl = getProxyUrl; +const HttpRedirectCodes = [ + HttpCodes.MovedPermanently, + HttpCodes.ResourceMoved, + HttpCodes.SeeOther, + HttpCodes.TemporaryRedirect, + HttpCodes.PermanentRedirect +]; +const HttpResponseRetryCodes = [ + HttpCodes.BadGateway, + HttpCodes.ServiceUnavailable, + HttpCodes.GatewayTimeout +]; +const RetryableHttpVerbs = ['OPTIONS', 'GET', 'DELETE', 'HEAD']; +const ExponentialBackoffCeiling = 10; +const ExponentialBackoffTimeSlice = 5; +class HttpClientResponse { + constructor(message) { + this.message = message; + } + readBody() { + return new Promise(async (resolve, reject) => { + let output = Buffer.alloc(0); + this.message.on('data', (chunk) => { + output = Buffer.concat([output, chunk]); + }); + this.message.on('end', () => { + resolve(output.toString()); + }); + }); + } +} +exports.HttpClientResponse = HttpClientResponse; +function isHttps(requestUrl) { + let parsedUrl = url.parse(requestUrl); + return parsedUrl.protocol === 'https:'; +} +exports.isHttps = isHttps; +class HttpClient { + constructor(userAgent, handlers, requestOptions) { + this._ignoreSslError = false; + this._allowRedirects = true; + this._allowRedirectDowngrade = false; + this._maxRedirects = 50; + this._allowRetries = false; + this._maxRetries = 1; + this._keepAlive = false; + this._disposed = false; + this.userAgent = userAgent; + this.handlers = handlers || []; + this.requestOptions = requestOptions; + if (requestOptions) { + if (requestOptions.ignoreSslError != null) { + this._ignoreSslError = requestOptions.ignoreSslError; + } + this._socketTimeout = requestOptions.socketTimeout; + if (requestOptions.allowRedirects != null) { + this._allowRedirects = requestOptions.allowRedirects; + } + if (requestOptions.allowRedirectDowngrade != null) { + this._allowRedirectDowngrade = requestOptions.allowRedirectDowngrade; + } + if (requestOptions.maxRedirects != null) { + this._maxRedirects = Math.max(requestOptions.maxRedirects, 0); + } + if (requestOptions.keepAlive != null) { + this._keepAlive = requestOptions.keepAlive; + } + if (requestOptions.allowRetries != null) { + this._allowRetries = requestOptions.allowRetries; + } + if (requestOptions.maxRetries != null) { + this._maxRetries = requestOptions.maxRetries; + } + } + } + options(requestUrl, additionalHeaders) { + return this.request('OPTIONS', requestUrl, null, additionalHeaders || {}); + } + get(requestUrl, additionalHeaders) { + return this.request('GET', requestUrl, null, additionalHeaders || {}); + } + del(requestUrl, additionalHeaders) { + return this.request('DELETE', requestUrl, null, additionalHeaders || {}); + } + post(requestUrl, data, additionalHeaders) { + return this.request('POST', requestUrl, data, additionalHeaders || {}); + } + patch(requestUrl, data, additionalHeaders) { + return this.request('PATCH', requestUrl, data, additionalHeaders || {}); + } + put(requestUrl, data, additionalHeaders) { + return this.request('PUT', requestUrl, data, additionalHeaders || {}); + } + head(requestUrl, additionalHeaders) { + return this.request('HEAD', requestUrl, null, additionalHeaders || {}); + } + sendStream(verb, requestUrl, stream, additionalHeaders) { + return this.request(verb, requestUrl, stream, additionalHeaders); + } + /** + * Gets a typed object from an endpoint + * Be aware that not found returns a null. Other errors (4xx, 5xx) reject the promise + */ + async getJson(requestUrl, additionalHeaders = {}) { + additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); + let res = await this.get(requestUrl, additionalHeaders); + return this._processResponse(res, this.requestOptions); + } + async postJson(requestUrl, obj, additionalHeaders = {}) { + let data = JSON.stringify(obj, null, 2); + additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); + additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson); + let res = await this.post(requestUrl, data, additionalHeaders); + return this._processResponse(res, this.requestOptions); + } + async putJson(requestUrl, obj, additionalHeaders = {}) { + let data = JSON.stringify(obj, null, 2); + additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); + additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson); + let res = await this.put(requestUrl, data, additionalHeaders); + return this._processResponse(res, this.requestOptions); + } + async patchJson(requestUrl, obj, additionalHeaders = {}) { + let data = JSON.stringify(obj, null, 2); + additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); + additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson); + let res = await this.patch(requestUrl, data, additionalHeaders); + return this._processResponse(res, this.requestOptions); + } + /** + * Makes a raw http request. + * All other methods such as get, post, patch, and request ultimately call this. + * Prefer get, del, post and patch + */ + async request(verb, requestUrl, data, headers) { + if (this._disposed) { + throw new Error('Client has already been disposed.'); + } + let parsedUrl = url.parse(requestUrl); + let info = this._prepareRequest(verb, parsedUrl, headers); + // Only perform retries on reads since writes may not be idempotent. + let maxTries = this._allowRetries && RetryableHttpVerbs.indexOf(verb) != -1 + ? this._maxRetries + 1 + : 1; + let numTries = 0; + let response; + while (numTries < maxTries) { + response = await this.requestRaw(info, data); + // Check if it's an authentication challenge + if (response && + response.message && + response.message.statusCode === HttpCodes.Unauthorized) { + let authenticationHandler; + for (let i = 0; i < this.handlers.length; i++) { + if (this.handlers[i].canHandleAuthentication(response)) { + authenticationHandler = this.handlers[i]; + break; + } + } + if (authenticationHandler) { + return authenticationHandler.handleAuthentication(this, info, data); + } + else { + // We have received an unauthorized response but have no handlers to handle it. + // Let the response return to the caller. + return response; + } + } + let redirectsRemaining = this._maxRedirects; + while (HttpRedirectCodes.indexOf(response.message.statusCode) != -1 && + this._allowRedirects && + redirectsRemaining > 0) { + const redirectUrl = response.message.headers['location']; + if (!redirectUrl) { + // if there's no location to redirect to, we won't + break; + } + let parsedRedirectUrl = url.parse(redirectUrl); + if (parsedUrl.protocol == 'https:' && + parsedUrl.protocol != parsedRedirectUrl.protocol && + !this._allowRedirectDowngrade) { + throw new Error('Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true.'); + } + // we need to finish reading the response before reassigning response + // which will leak the open socket. + await response.readBody(); + // strip authorization header if redirected to a different hostname + if (parsedRedirectUrl.hostname !== parsedUrl.hostname) { + for (let header in headers) { + // header names are case insensitive + if (header.toLowerCase() === 'authorization') { + delete headers[header]; + } + } + } + // let's make the request with the new redirectUrl + info = this._prepareRequest(verb, parsedRedirectUrl, headers); + response = await this.requestRaw(info, data); + redirectsRemaining--; + } + if (HttpResponseRetryCodes.indexOf(response.message.statusCode) == -1) { + // If not a retry code, return immediately instead of retrying + return response; + } + numTries += 1; + if (numTries < maxTries) { + await response.readBody(); + await this._performExponentialBackoff(numTries); + } + } + return response; + } + /** + * Needs to be called if keepAlive is set to true in request options. + */ + dispose() { + if (this._agent) { + this._agent.destroy(); + } + this._disposed = true; + } + /** + * Raw request. + * @param info + * @param data + */ + requestRaw(info, data) { + return new Promise((resolve, reject) => { + let callbackForResult = function (err, res) { + if (err) { + reject(err); + } + resolve(res); + }; + this.requestRawWithCallback(info, data, callbackForResult); + }); + } + /** + * Raw request with callback. + * @param info + * @param data + * @param onResult + */ + requestRawWithCallback(info, data, onResult) { + let socket; + if (typeof data === 'string') { + info.options.headers['Content-Length'] = Buffer.byteLength(data, 'utf8'); + } + let callbackCalled = false; + let handleResult = (err, res) => { + if (!callbackCalled) { + callbackCalled = true; + onResult(err, res); + } + }; + let req = info.httpModule.request(info.options, (msg) => { + let res = new HttpClientResponse(msg); + handleResult(null, res); + }); + req.on('socket', sock => { + socket = sock; + }); + // If we ever get disconnected, we want the socket to timeout eventually + req.setTimeout(this._socketTimeout || 3 * 60000, () => { + if (socket) { + socket.end(); + } + handleResult(new Error('Request timeout: ' + info.options.path), null); + }); + req.on('error', function (err) { + // err has statusCode property + // res should have headers + handleResult(err, null); + }); + if (data && typeof data === 'string') { + req.write(data, 'utf8'); + } + if (data && typeof data !== 'string') { + data.on('close', function () { + req.end(); + }); + data.pipe(req); + } + else { + req.end(); + } + } + /** + * Gets an http agent. This function is useful when you need an http agent that handles + * routing through a proxy server - depending upon the url and proxy environment variables. + * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com + */ + getAgent(serverUrl) { + let parsedUrl = url.parse(serverUrl); + return this._getAgent(parsedUrl); + } + _prepareRequest(method, requestUrl, headers) { + const info = {}; + info.parsedUrl = requestUrl; + const usingSsl = info.parsedUrl.protocol === 'https:'; + info.httpModule = usingSsl ? https : http; + const defaultPort = usingSsl ? 443 : 80; + info.options = {}; + info.options.host = info.parsedUrl.hostname; + info.options.port = info.parsedUrl.port + ? parseInt(info.parsedUrl.port) + : defaultPort; + info.options.path = + (info.parsedUrl.pathname || '') + (info.parsedUrl.search || ''); + info.options.method = method; + info.options.headers = this._mergeHeaders(headers); + if (this.userAgent != null) { + info.options.headers['user-agent'] = this.userAgent; + } + info.options.agent = this._getAgent(info.parsedUrl); + // gives handlers an opportunity to participate + if (this.handlers) { + this.handlers.forEach(handler => { + handler.prepareRequest(info.options); + }); + } + return info; + } + _mergeHeaders(headers) { + const lowercaseKeys = obj => Object.keys(obj).reduce((c, k) => ((c[k.toLowerCase()] = obj[k]), c), {}); + if (this.requestOptions && this.requestOptions.headers) { + return Object.assign({}, lowercaseKeys(this.requestOptions.headers), lowercaseKeys(headers)); + } + return lowercaseKeys(headers || {}); + } + _getExistingOrDefaultHeader(additionalHeaders, header, _default) { + const lowercaseKeys = obj => Object.keys(obj).reduce((c, k) => ((c[k.toLowerCase()] = obj[k]), c), {}); + let clientHeader; + if (this.requestOptions && this.requestOptions.headers) { + clientHeader = lowercaseKeys(this.requestOptions.headers)[header]; + } + return additionalHeaders[header] || clientHeader || _default; + } + _getAgent(parsedUrl) { + let agent; + let proxyUrl = pm.getProxyUrl(parsedUrl); + let useProxy = proxyUrl && proxyUrl.hostname; + if (this._keepAlive && useProxy) { + agent = this._proxyAgent; + } + if (this._keepAlive && !useProxy) { + agent = this._agent; + } + // if agent is already assigned use that agent. + if (!!agent) { + return agent; + } + const usingSsl = parsedUrl.protocol === 'https:'; + let maxSockets = 100; + if (!!this.requestOptions) { + maxSockets = this.requestOptions.maxSockets || http.globalAgent.maxSockets; + } + if (useProxy) { + // If using proxy, need tunnel + if (!tunnel) { + tunnel = __webpack_require__(80); + } + const agentOptions = { + maxSockets: maxSockets, + keepAlive: this._keepAlive, + proxy: { + proxyAuth: proxyUrl.auth, + host: proxyUrl.hostname, + port: proxyUrl.port + } + }; + let tunnelAgent; + const overHttps = proxyUrl.protocol === 'https:'; + if (usingSsl) { + tunnelAgent = overHttps ? tunnel.httpsOverHttps : tunnel.httpsOverHttp; + } + else { + tunnelAgent = overHttps ? tunnel.httpOverHttps : tunnel.httpOverHttp; + } + agent = tunnelAgent(agentOptions); + this._proxyAgent = agent; + } + // if reusing agent across request and tunneling agent isn't assigned create a new agent + if (this._keepAlive && !agent) { + const options = { keepAlive: this._keepAlive, maxSockets: maxSockets }; + agent = usingSsl ? new https.Agent(options) : new http.Agent(options); + this._agent = agent; + } + // if not using private agent and tunnel agent isn't setup then use global agent + if (!agent) { + agent = usingSsl ? https.globalAgent : http.globalAgent; + } + if (usingSsl && this._ignoreSslError) { + // we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process + // http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options + // we have to cast it to any and change it directly + agent.options = Object.assign(agent.options || {}, { + rejectUnauthorized: false + }); + } + return agent; + } + _performExponentialBackoff(retryNumber) { + retryNumber = Math.min(ExponentialBackoffCeiling, retryNumber); + const ms = ExponentialBackoffTimeSlice * Math.pow(2, retryNumber); + return new Promise(resolve => setTimeout(() => resolve(), ms)); + } + static dateTimeDeserializer(key, value) { + if (typeof value === 'string') { + let a = new Date(value); + if (!isNaN(a.valueOf())) { + return a; + } + } + return value; + } + async _processResponse(res, options) { + return new Promise(async (resolve, reject) => { + const statusCode = res.message.statusCode; + const response = { + statusCode: statusCode, + result: null, + headers: {} + }; + // not found leads to null obj returned + if (statusCode == HttpCodes.NotFound) { + resolve(response); + } + let obj; + let contents; + // get the result from the body + try { + contents = await res.readBody(); + if (contents && contents.length > 0) { + if (options && options.deserializeDates) { + obj = JSON.parse(contents, HttpClient.dateTimeDeserializer); + } + else { + obj = JSON.parse(contents); + } + response.result = obj; + } + response.headers = res.message.headers; + } + catch (err) { + // Invalid resource (contents not json); leaving result obj null + } + // note that 3xx redirects are handled by the http layer. + if (statusCode > 299) { + let msg; + // if exception/error in body, attempt to get better error + if (obj && obj.message) { + msg = obj.message; + } + else if (contents && contents.length > 0) { + // it may be the case that the exception is in the body message as string + msg = contents; + } + else { + msg = 'Failed request: (' + statusCode + ')'; + } + let err = new Error(msg); + // attach statusCode and body obj (if available) to the error object + err['statusCode'] = statusCode; + if (response.result) { + err['result'] = response.result; + } + reject(err); + } + else { + resolve(response); + } + }); + } +} +exports.HttpClient = HttpClient; + + +/***/ }), + +/***/ 845: +/***/ (function(module, __unusedexports, __webpack_require__) { + +module.exports = getLastPage + +const getPage = __webpack_require__(5) + +function getLastPage (octokit, link, headers) { + return getPage(octokit, link, 'last', headers) +} + + +/***/ }), + +/***/ 851: +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; + +const path = __webpack_require__(622); +const childProcess = __webpack_require__(129); +const crossSpawn = __webpack_require__(258); +const stripEof = __webpack_require__(749); +const npmRunPath = __webpack_require__(922); +const isStream = __webpack_require__(764); +const _getStream = __webpack_require__(433); +const pFinally = __webpack_require__(437); +const onExit = __webpack_require__(461); +const errname = __webpack_require__(287); +const stdio = __webpack_require__(983); + +const TEN_MEGABYTES = 1000 * 1000 * 10; + +function handleArgs(cmd, args, opts) { + let parsed; + + opts = Object.assign({ + extendEnv: true, + env: {} + }, opts); + + if (opts.extendEnv) { + opts.env = Object.assign({}, process.env, opts.env); + } + + if (opts.__winShell === true) { + delete opts.__winShell; + parsed = { + command: cmd, + args, + options: opts, + file: cmd, + original: { + cmd, + args + } + }; + } else { + parsed = crossSpawn._parse(cmd, args, opts); + } + + opts = Object.assign({ + maxBuffer: TEN_MEGABYTES, + buffer: true, + stripEof: true, + preferLocal: true, + localDir: parsed.options.cwd || process.cwd(), + encoding: 'utf8', + reject: true, + cleanup: true + }, parsed.options); + + opts.stdio = stdio(opts); + + if (opts.preferLocal) { + opts.env = npmRunPath.env(Object.assign({}, opts, {cwd: opts.localDir})); + } + + if (opts.detached) { + // #115 + opts.cleanup = false; + } + + if (process.platform === 'win32' && path.basename(parsed.command) === 'cmd.exe') { + // #116 + parsed.args.unshift('/q'); + } + + return { + cmd: parsed.command, + args: parsed.args, + opts, + parsed + }; +} + +function handleInput(spawned, input) { + if (input === null || input === undefined) { + return; + } + + if (isStream(input)) { + input.pipe(spawned.stdin); + } else { + spawned.stdin.end(input); + } +} + +function handleOutput(opts, val) { + if (val && opts.stripEof) { + val = stripEof(val); + } + + return val; +} + +function handleShell(fn, cmd, opts) { + let file = '/bin/sh'; + let args = ['-c', cmd]; + + opts = Object.assign({}, opts); + + if (process.platform === 'win32') { + opts.__winShell = true; + file = process.env.comspec || 'cmd.exe'; + args = ['/s', '/c', `"${cmd}"`]; + opts.windowsVerbatimArguments = true; + } + + if (opts.shell) { + file = opts.shell; + delete opts.shell; + } + + return fn(file, args, opts); +} + +function getStream(process, stream, {encoding, buffer, maxBuffer}) { + if (!process[stream]) { + return null; + } + + let ret; + + if (!buffer) { + // TODO: Use `ret = util.promisify(stream.finished)(process[stream]);` when targeting Node.js 10 + ret = new Promise((resolve, reject) => { + process[stream] + .once('end', resolve) + .once('error', reject); + }); + } else if (encoding) { + ret = _getStream(process[stream], { + encoding, + maxBuffer + }); + } else { + ret = _getStream.buffer(process[stream], {maxBuffer}); + } + + return ret.catch(err => { + err.stream = stream; + err.message = `${stream} ${err.message}`; + throw err; + }); +} + +function makeError(result, options) { + const {stdout, stderr} = result; + + let err = result.error; + const {code, signal} = result; + + const {parsed, joinedCmd} = options; + const timedOut = options.timedOut || false; + + if (!err) { + let output = ''; + + if (Array.isArray(parsed.opts.stdio)) { + if (parsed.opts.stdio[2] !== 'inherit') { + output += output.length > 0 ? stderr : `\n${stderr}`; + } + + if (parsed.opts.stdio[1] !== 'inherit') { + output += `\n${stdout}`; + } + } else if (parsed.opts.stdio !== 'inherit') { + output = `\n${stderr}${stdout}`; + } + + err = new Error(`Command failed: ${joinedCmd}${output}`); + err.code = code < 0 ? errname(code) : code; + } + + err.stdout = stdout; + err.stderr = stderr; + err.failed = true; + err.signal = signal || null; + err.cmd = joinedCmd; + err.timedOut = timedOut; + + return err; +} + +function joinCmd(cmd, args) { + let joinedCmd = cmd; + + if (Array.isArray(args) && args.length > 0) { + joinedCmd += ' ' + args.join(' '); + } + + return joinedCmd; +} + +module.exports = (cmd, args, opts) => { + const parsed = handleArgs(cmd, args, opts); + const {encoding, buffer, maxBuffer} = parsed.opts; + const joinedCmd = joinCmd(cmd, args); + + let spawned; + try { + spawned = childProcess.spawn(parsed.cmd, parsed.args, parsed.opts); + } catch (err) { + return Promise.reject(err); + } + + let removeExitHandler; + if (parsed.opts.cleanup) { + removeExitHandler = onExit(() => { + spawned.kill(); + }); + } + + let timeoutId = null; + let timedOut = false; + + const cleanup = () => { + if (timeoutId) { + clearTimeout(timeoutId); + timeoutId = null; + } + + if (removeExitHandler) { + removeExitHandler(); + } + }; + + if (parsed.opts.timeout > 0) { + timeoutId = setTimeout(() => { + timeoutId = null; + timedOut = true; + spawned.kill(parsed.opts.killSignal); + }, parsed.opts.timeout); + } + + const processDone = new Promise(resolve => { + spawned.on('exit', (code, signal) => { + cleanup(); + resolve({code, signal}); + }); + + spawned.on('error', err => { + cleanup(); + resolve({error: err}); + }); + + if (spawned.stdin) { + spawned.stdin.on('error', err => { + cleanup(); + resolve({error: err}); + }); + } + }); + + function destroy() { + if (spawned.stdout) { + spawned.stdout.destroy(); + } + + if (spawned.stderr) { + spawned.stderr.destroy(); + } + } + + const handlePromise = () => pFinally(Promise.all([ + processDone, + getStream(spawned, 'stdout', {encoding, buffer, maxBuffer}), + getStream(spawned, 'stderr', {encoding, buffer, maxBuffer}) + ]).then(arr => { + const result = arr[0]; + result.stdout = arr[1]; + result.stderr = arr[2]; + + if (result.error || result.code !== 0 || result.signal !== null) { + const err = makeError(result, { + joinedCmd, + parsed, + timedOut + }); + + // TODO: missing some timeout logic for killed + // https://github.com/nodejs/node/blob/master/lib/child_process.js#L203 + // err.killed = spawned.killed || killed; + err.killed = err.killed || spawned.killed; + + if (!parsed.opts.reject) { + return err; + } + + throw err; + } + + return { + stdout: handleOutput(parsed.opts, result.stdout), + stderr: handleOutput(parsed.opts, result.stderr), + code: 0, + failed: false, + killed: false, + signal: null, + cmd: joinedCmd, + timedOut: false + }; + }), destroy); + + crossSpawn._enoent.hookChildProcess(spawned, parsed.parsed); + + handleInput(spawned, parsed.opts.input); + + spawned.then = (onfulfilled, onrejected) => handlePromise().then(onfulfilled, onrejected); + spawned.catch = onrejected => handlePromise().catch(onrejected); + + return spawned; +}; + +// TODO: set `stderr: 'ignore'` when that option is implemented +module.exports.stdout = (...args) => module.exports(...args).then(x => x.stdout); + +// TODO: set `stdout: 'ignore'` when that option is implemented +module.exports.stderr = (...args) => module.exports(...args).then(x => x.stderr); + +module.exports.shell = (cmd, opts) => handleShell(module.exports, cmd, opts); + +module.exports.sync = (cmd, args, opts) => { + const parsed = handleArgs(cmd, args, opts); + const joinedCmd = joinCmd(cmd, args); + + if (isStream(parsed.opts.input)) { + throw new TypeError('The `input` option cannot be a stream in sync mode'); + } + + const result = childProcess.spawnSync(parsed.cmd, parsed.args, parsed.opts); + result.code = result.status; + + if (result.error || result.status !== 0 || result.signal !== null) { + const err = makeError(result, { + joinedCmd, + parsed + }); + + if (!parsed.opts.reject) { + return err; + } + + throw err; + } + + return { + stdout: handleOutput(parsed.opts, result.stdout), + stderr: handleOutput(parsed.opts, result.stderr), + code: 0, + failed: false, + signal: null, + cmd: joinedCmd, + timedOut: false + }; +}; + +module.exports.shellSync = (cmd, opts) => handleShell(module.exports.sync, cmd, opts); + + +/***/ }), + +/***/ 860: +/***/ (function(module) { + +"use strict"; + + +/** + * Creates a new URL by combining the specified URLs + * + * @param {string} baseURL The base URL + * @param {string} relativeURL The relative URL + * @returns {string} The combined URL + */ +module.exports = function combineURLs(baseURL, relativeURL) { + return relativeURL + ? baseURL.replace(/\/+$/, '') + '/' + relativeURL.replace(/^\/+/, '') + : baseURL; +}; + + +/***/ }), + +/***/ 867: +/***/ (function(module) { + +module.exports = require("tty"); + +/***/ }), + +/***/ 889: +/***/ (function(module) { + +"use strict"; + + +module.exports = function bind(fn, thisArg) { + return function wrap() { + var args = new Array(arguments.length); + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i]; + } + return fn.apply(thisArg, args); + }; +}; + + +/***/ }), + +/***/ 905: +/***/ (function(__unusedmodule, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, '__esModule', { value: true }); + +function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } + +var deprecation = __webpack_require__(249); +var once = _interopDefault(__webpack_require__(950)); + +const logOnce = once(deprecation => console.warn(deprecation)); +/** + * Error with extra properties to help with debugging + */ + +class RequestError extends Error { + constructor(message, statusCode, options) { + super(message); // Maintains proper stack trace (only available on V8) + + /* istanbul ignore next */ + + if (Error.captureStackTrace) { + Error.captureStackTrace(this, this.constructor); + } + + this.name = "HttpError"; + this.status = statusCode; + Object.defineProperty(this, "code", { + get() { + logOnce(new deprecation.Deprecation("[@octokit/request-error] `error.code` is deprecated, use `error.status`.")); + return statusCode; + } + + }); + this.headers = options.headers || {}; // redact request credentials without mutating original request options + + const requestCopy = Object.assign({}, options.request); + + if (options.request.headers.authorization) { + requestCopy.headers = Object.assign({}, options.request.headers, { + authorization: options.request.headers.authorization.replace(/ .*$/, " [REDACTED]") + }); + } + + requestCopy.url = requestCopy.url // client_id & client_secret can be passed as URL query parameters to increase rate limit + // see https://developer.github.com/v3/#increasing-the-unauthenticated-rate-limit-for-oauth-applications + .replace(/\bclient_secret=\w+/g, "client_secret=[REDACTED]") // OAuth tokens can be passed as URL query parameters, although it is not recommended + // see https://developer.github.com/v3/#oauth2-token-sent-in-a-header + .replace(/\baccess_token=\w+/g, "access_token=[REDACTED]"); + this.request = requestCopy; + } + +} + +exports.RequestError = RequestError; +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ 914: +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(156); + +module.exports = ( + utils.isStandardBrowserEnv() ? + + // Standard browser envs have full support of the APIs needed to test + // whether the request URL is of the same origin as current location. + (function standardBrowserEnv() { + var msie = /(msie|trident)/i.test(navigator.userAgent); + var urlParsingNode = document.createElement('a'); + var originURL; + + /** + * Parse a URL to discover it's components + * + * @param {String} url The URL to be parsed + * @returns {Object} + */ + function resolveURL(url) { + var href = url; + + if (msie) { + // IE needs attribute set twice to normalize properties + urlParsingNode.setAttribute('href', href); + href = urlParsingNode.href; + } + + urlParsingNode.setAttribute('href', href); + + // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils + return { + href: urlParsingNode.href, + protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '', + host: urlParsingNode.host, + search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '', + hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '', + hostname: urlParsingNode.hostname, + port: urlParsingNode.port, + pathname: (urlParsingNode.pathname.charAt(0) === '/') ? + urlParsingNode.pathname : + '/' + urlParsingNode.pathname + }; + } + + originURL = resolveURL(window.location.href); + + /** + * Determine if a URL shares the same origin as the current location + * + * @param {String} requestURL The URL to test + * @returns {boolean} True if URL shares the same origin, otherwise false + */ + return function isURLSameOrigin(requestURL) { + var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL; + return (parsed.protocol === originURL.protocol && + parsed.host === originURL.host); + }; + })() : + + // Non standard browser envs (web workers, react-native) lack needed support. + (function nonStandardBrowserEnv() { + return function isURLSameOrigin() { + return true; + }; + })() +); + + +/***/ }), + +/***/ 917: +/***/ (function(module, exports, __webpack_require__) { + +/** + * Module dependencies. + */ + +var tty = __webpack_require__(867); +var util = __webpack_require__(669); + +/** + * This is the Node.js implementation of `debug()`. + * + * Expose `debug()` as the module. + */ + +exports = module.exports = __webpack_require__(691); +exports.init = init; +exports.log = log; +exports.formatArgs = formatArgs; +exports.save = save; +exports.load = load; +exports.useColors = useColors; + +/** + * Colors. + */ + +exports.colors = [ 6, 2, 3, 4, 5, 1 ]; + +try { + var supportsColor = __webpack_require__(664); + if (supportsColor && supportsColor.level >= 2) { + exports.colors = [ + 20, 21, 26, 27, 32, 33, 38, 39, 40, 41, 42, 43, 44, 45, 56, 57, 62, 63, 68, + 69, 74, 75, 76, 77, 78, 79, 80, 81, 92, 93, 98, 99, 112, 113, 128, 129, 134, + 135, 148, 149, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 178, 179, 184, 185, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 214, 215, 220, 221 + ]; + } +} catch (err) { + // swallow - we only care if `supports-color` is available; it doesn't have to be. +} + +/** + * Build up the default `inspectOpts` object from the environment variables. + * + * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js + */ + +exports.inspectOpts = Object.keys(process.env).filter(function (key) { + return /^debug_/i.test(key); +}).reduce(function (obj, key) { + // camel-case + var prop = key + .substring(6) + .toLowerCase() + .replace(/_([a-z])/g, function (_, k) { return k.toUpperCase() }); + + // coerce string value into JS value + var val = process.env[key]; + if (/^(yes|on|true|enabled)$/i.test(val)) val = true; + else if (/^(no|off|false|disabled)$/i.test(val)) val = false; + else if (val === 'null') val = null; + else val = Number(val); + + obj[prop] = val; + return obj; +}, {}); + +/** + * Is stdout a TTY? Colored output is enabled when `true`. + */ + +function useColors() { + return 'colors' in exports.inspectOpts + ? Boolean(exports.inspectOpts.colors) + : tty.isatty(process.stderr.fd); +} + +/** + * Map %o to `util.inspect()`, all on a single line. + */ + +exports.formatters.o = function(v) { + this.inspectOpts.colors = this.useColors; + return util.inspect(v, this.inspectOpts) + .split('\n').map(function(str) { + return str.trim() + }).join(' '); +}; + +/** + * Map %o to `util.inspect()`, allowing multiple lines if needed. + */ + +exports.formatters.O = function(v) { + this.inspectOpts.colors = this.useColors; + return util.inspect(v, this.inspectOpts); +}; + +/** + * Adds ANSI color escape codes if enabled. + * + * @api public + */ + +function formatArgs(args) { + var name = this.namespace; + var useColors = this.useColors; + + if (useColors) { + var c = this.color; + var colorCode = '\u001b[3' + (c < 8 ? c : '8;5;' + c); + var prefix = ' ' + colorCode + ';1m' + name + ' ' + '\u001b[0m'; + + args[0] = prefix + args[0].split('\n').join('\n' + prefix); + args.push(colorCode + 'm+' + exports.humanize(this.diff) + '\u001b[0m'); + } else { + args[0] = getDate() + name + ' ' + args[0]; + } +} + +function getDate() { + if (exports.inspectOpts.hideDate) { + return ''; + } else { + return new Date().toISOString() + ' '; + } +} + +/** + * Invokes `util.format()` with the specified arguments and writes to stderr. + */ + +function log() { + return process.stderr.write(util.format.apply(util, arguments) + '\n'); +} + +/** + * Save `namespaces`. + * + * @param {String} namespaces + * @api private + */ + +function save(namespaces) { + if (null == namespaces) { + // If you set a process.env field to null or undefined, it gets cast to the + // string 'null' or 'undefined'. Just delete instead. + delete process.env.DEBUG; + } else { + process.env.DEBUG = namespaces; + } +} + +/** + * Load `namespaces`. + * + * @return {String} returns the previously persisted debug modes + * @api private + */ + +function load() { + return process.env.DEBUG; +} + +/** + * Init logic for `debug` instances. + * + * Create a new `inspectOpts` object in case `useColors` is set + * differently for a particular `debug` instance. + */ + +function init (debug) { + debug.inspectOpts = {}; + + var keys = Object.keys(exports.inspectOpts); + for (var i = 0; i < keys.length; i++) { + debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]]; + } +} + +/** + * Enable namespaces listed in `process.env.DEBUG` initially. + */ + +exports.enable(load()); + + +/***/ }), + +/***/ 922: +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; + +const path = __webpack_require__(622); +const pathKey = __webpack_require__(740); + +module.exports = opts => { + opts = Object.assign({ + cwd: process.cwd(), + path: process.env[pathKey()] + }, opts); + + let prev; + let pth = path.resolve(opts.cwd); + const ret = []; + + while (prev !== pth) { + ret.push(path.join(pth, 'node_modules/.bin')); + prev = pth; + pth = path.resolve(pth, '..'); + } + + // ensure the running `node` binary is used + ret.push(path.dirname(process.execPath)); + + return ret.concat(opts.path).join(path.delimiter); +}; + +module.exports.env = opts => { + opts = Object.assign({ + env: process.env + }, opts); + + const env = Object.assign({}, opts.env); + const path = pathKey({env}); + + opts.path = env[path]; + env[path] = module.exports(opts); + + return env; +}; + + +/***/ }), + +/***/ 931: +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; + +const os = __webpack_require__(87); +const macosRelease = __webpack_require__(63); +const winRelease = __webpack_require__(418); + +const osName = (platform, release) => { + if (!platform && release) { + throw new Error('You can\'t specify a `release` without specifying `platform`'); + } + + platform = platform || os.platform(); + + let id; + + if (platform === 'darwin') { + if (!release && os.platform() === 'darwin') { + release = os.release(); + } + + const prefix = release ? (Number(release.split('.')[0]) > 15 ? 'macOS' : 'OS X') : 'macOS'; + id = release ? macosRelease(release).name : ''; + return prefix + (id ? ' ' + id : ''); + } + + if (platform === 'linux') { + if (!release && os.platform() === 'linux') { + release = os.release(); + } + + id = release ? release.replace(/^(\d+\.\d+).*/, '$1') : ''; + return 'Linux' + (id ? ' ' + id : ''); + } + + if (platform === 'win32') { + if (!release && os.platform() === 'win32') { + release = os.release(); + } + + id = release ? winRelease(release) : ''; + return 'Windows' + (id ? ' ' + id : ''); + } + + return platform; +}; + +module.exports = osName; + + +/***/ }), + +/***/ 933: +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(156); +var settle = __webpack_require__(994); +var buildURL = __webpack_require__(320); +var buildFullPath = __webpack_require__(230); +var parseHeaders = __webpack_require__(997); +var isURLSameOrigin = __webpack_require__(914); +var createError = __webpack_require__(441); + +module.exports = function xhrAdapter(config) { + return new Promise(function dispatchXhrRequest(resolve, reject) { + var requestData = config.data; + var requestHeaders = config.headers; + + if (utils.isFormData(requestData)) { + delete requestHeaders['Content-Type']; // Let the browser set it + } + + var request = new XMLHttpRequest(); + + // HTTP basic authentication + if (config.auth) { + var username = config.auth.username || ''; + var password = config.auth.password || ''; + requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password); + } + + var fullPath = buildFullPath(config.baseURL, config.url); + request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true); + + // Set the request timeout in MS + request.timeout = config.timeout; + + // Listen for ready state + request.onreadystatechange = function handleLoad() { + if (!request || request.readyState !== 4) { + return; + } + + // The request errored out and we didn't get a response, this will be + // handled by onerror instead + // With one exception: request that using file: protocol, most browsers + // will return status as 0 even though it's a successful request + if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) { + return; + } + + // Prepare the response + var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null; + var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response; + var response = { + data: responseData, + status: request.status, + statusText: request.statusText, + headers: responseHeaders, + config: config, + request: request + }; + + settle(resolve, reject, response); + + // Clean up request + request = null; + }; + + // Handle browser request cancellation (as opposed to a manual cancellation) + request.onabort = function handleAbort() { + if (!request) { + return; + } + + reject(createError('Request aborted', config, 'ECONNABORTED', request)); + + // Clean up request + request = null; + }; + + // Handle low level network errors + request.onerror = function handleError() { + // Real errors are hidden from us by the browser + // onerror should only fire if it's a network error + reject(createError('Network Error', config, null, request)); + + // Clean up request + request = null; + }; + + // Handle timeout + request.ontimeout = function handleTimeout() { + var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded'; + if (config.timeoutErrorMessage) { + timeoutErrorMessage = config.timeoutErrorMessage; + } + reject(createError(timeoutErrorMessage, config, 'ECONNABORTED', + request)); + + // Clean up request + request = null; + }; + + // Add xsrf header + // This is only done if running in a standard browser environment. + // Specifically not if we're in a web worker, or react-native. + if (utils.isStandardBrowserEnv()) { + var cookies = __webpack_require__(376); + + // Add xsrf header + var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ? + cookies.read(config.xsrfCookieName) : + undefined; + + if (xsrfValue) { + requestHeaders[config.xsrfHeaderName] = xsrfValue; + } + } + + // Add headers to the request + if ('setRequestHeader' in request) { + utils.forEach(requestHeaders, function setRequestHeader(val, key) { + if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') { + // Remove Content-Type if data is undefined + delete requestHeaders[key]; + } else { + // Otherwise add header to the request + request.setRequestHeader(key, val); + } + }); + } + + // Add withCredentials to request if needed + if (!utils.isUndefined(config.withCredentials)) { + request.withCredentials = !!config.withCredentials; + } + + // Add responseType to request if needed + if (config.responseType) { + try { + request.responseType = config.responseType; + } catch (e) { + // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2. + // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function. + if (config.responseType !== 'json') { + throw e; + } + } + } + + // Handle progress if needed + if (typeof config.onDownloadProgress === 'function') { + request.addEventListener('progress', config.onDownloadProgress); + } + + // Not all browsers support upload events + if (typeof config.onUploadProgress === 'function' && request.upload) { + request.upload.addEventListener('progress', config.onUploadProgress); + } + + if (config.cancelToken) { + // Handle cancellation + config.cancelToken.promise.then(function onCanceled(cancel) { + if (!request) { + return; + } + + request.abort(); + reject(cancel); + // Clean up request + request = null; + }); + } + + if (requestData === undefined) { + requestData = null; + } + + // Send the request + request.send(requestData); + }); +}; + + +/***/ }), + +/***/ 950: +/***/ (function(module, __unusedexports, __webpack_require__) { + +var wrappy = __webpack_require__(677) +module.exports = wrappy(once) +module.exports.strict = wrappy(onceStrict) + +once.proto = once(function () { + Object.defineProperty(Function.prototype, 'once', { + value: function () { + return once(this) + }, + configurable: true + }) + + Object.defineProperty(Function.prototype, 'onceStrict', { + value: function () { + return onceStrict(this) + }, + configurable: true + }) +}) + +function once (fn) { + var f = function () { + if (f.called) return f.value + f.called = true + return f.value = fn.apply(this, arguments) + } + f.called = false + return f +} + +function onceStrict (fn) { + var f = function () { + if (f.called) + throw new Error(f.onceError) + f.called = true + return f.value = fn.apply(this, arguments) + } + var name = fn.name || 'Function wrapped with `once`' + f.onceError = name + " shouldn't be called more than once" + f.called = false + return f +} + + +/***/ }), + +/***/ 953: +/***/ (function(module) { + +module.exports = validateAuth; + +function validateAuth(auth) { + if (typeof auth === "string") { + return; + } + + if (typeof auth === "function") { + return; + } + + if (auth.username && auth.password) { + return; + } + + if (auth.clientId && auth.clientSecret) { + return; + } + + throw new Error(`Invalid "auth" option: ${JSON.stringify(auth)}`); +} + + +/***/ }), + +/***/ 965: +/***/ (function(module, __unusedexports, __webpack_require__) { + +module.exports = authenticationPlugin; + +const { Deprecation } = __webpack_require__(249); +const once = __webpack_require__(950); + +const deprecateAuthenticate = once((log, deprecation) => log.warn(deprecation)); + +const authenticate = __webpack_require__(406); +const beforeRequest = __webpack_require__(369); +const requestError = __webpack_require__(776); + +function authenticationPlugin(octokit, options) { + if (options.auth) { + octokit.authenticate = () => { + deprecateAuthenticate( + octokit.log, + new Deprecation( + '[@octokit/rest] octokit.authenticate() is deprecated and has no effect when "auth" option is set on Octokit constructor' + ) + ); + }; + return; + } + const state = { + octokit, + auth: false + }; + octokit.authenticate = authenticate.bind(null, state); + octokit.hook.before("request", beforeRequest.bind(null, state)); + octokit.hook.error("request", requestError.bind(null, state)); +} + + +/***/ }), + +/***/ 969: +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; + + +const path = __webpack_require__(622); +const niceTry = __webpack_require__(399); +const resolveCommand = __webpack_require__(240); +const escape = __webpack_require__(209); +const readShebang = __webpack_require__(708); +const semver = __webpack_require__(25); + +const isWin = process.platform === 'win32'; +const isExecutableRegExp = /\.(?:com|exe)$/i; +const isCmdShimRegExp = /node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i; + +// `options.shell` is supported in Node ^4.8.0, ^5.7.0 and >= 6.0.0 +const supportsShellOption = niceTry(() => semver.satisfies(process.version, '^4.8.0 || ^5.7.0 || >= 6.0.0', true)) || false; + +function detectShebang(parsed) { + parsed.file = resolveCommand(parsed); + + const shebang = parsed.file && readShebang(parsed.file); + + if (shebang) { + parsed.args.unshift(parsed.file); + parsed.command = shebang; + + return resolveCommand(parsed); + } + + return parsed.file; +} + +function parseNonShell(parsed) { + if (!isWin) { + return parsed; + } + + // Detect & add support for shebangs + const commandFile = detectShebang(parsed); + + // We don't need a shell if the command filename is an executable + const needsShell = !isExecutableRegExp.test(commandFile); + + // If a shell is required, use cmd.exe and take care of escaping everything correctly + // Note that `forceShell` is an hidden option used only in tests + if (parsed.options.forceShell || needsShell) { + // Need to double escape meta chars if the command is a cmd-shim located in `node_modules/.bin/` + // The cmd-shim simply calls execute the package bin file with NodeJS, proxying any argument + // Because the escape of metachars with ^ gets interpreted when the cmd.exe is first called, + // we need to double escape them + const needsDoubleEscapeMetaChars = isCmdShimRegExp.test(commandFile); + + // Normalize posix paths into OS compatible paths (e.g.: foo/bar -> foo\bar) + // This is necessary otherwise it will always fail with ENOENT in those cases + parsed.command = path.normalize(parsed.command); + + // Escape command & arguments + parsed.command = escape.command(parsed.command); + parsed.args = parsed.args.map((arg) => escape.argument(arg, needsDoubleEscapeMetaChars)); + + const shellCommand = [parsed.command].concat(parsed.args).join(' '); + + parsed.args = ['/d', '/s', '/c', `"${shellCommand}"`]; + parsed.command = process.env.comspec || 'cmd.exe'; + parsed.options.windowsVerbatimArguments = true; // Tell node's spawn that the arguments are already escaped + } + + return parsed; +} + +function parseShell(parsed) { + // If node supports the shell option, there's no need to mimic its behavior + if (supportsShellOption) { + return parsed; + } + + // Mimic node shell option + // See https://github.com/nodejs/node/blob/b9f6a2dc059a1062776133f3d4fd848c4da7d150/lib/child_process.js#L335 + const shellCommand = [parsed.command].concat(parsed.args).join(' '); + + if (isWin) { + parsed.command = typeof parsed.options.shell === 'string' ? parsed.options.shell : process.env.comspec || 'cmd.exe'; + parsed.args = ['/d', '/s', '/c', `"${shellCommand}"`]; + parsed.options.windowsVerbatimArguments = true; // Tell node's spawn that the arguments are already escaped + } else { + if (typeof parsed.options.shell === 'string') { + parsed.command = parsed.options.shell; + } else if (process.platform === 'android') { + parsed.command = '/system/bin/sh'; + } else { + parsed.command = '/bin/sh'; + } + + parsed.args = ['-c', shellCommand]; + } + + return parsed; +} + +function parse(command, args, options) { + // Normalize arguments, similar to nodejs + if (args && !Array.isArray(args)) { + options = args; + args = null; + } + + args = args ? args.slice(0) : []; // Clone array to avoid changing the original + options = Object.assign({}, options); // Clone object to avoid changing the original + + // Build our parsed object + const parsed = { + command, + args, + options, + file: undefined, + original: { + command, + args, + }, + }; + + // Delegate further parsing to shell or non-shell + return options.shell ? parseShell(parsed) : parseNonShell(parsed); +} + +module.exports = parse; + + +/***/ }), + +/***/ 977: +/***/ (function(module) { + +module.exports = eval("require")("encoding"); + + +/***/ }), + +/***/ 983: +/***/ (function(module) { + +"use strict"; + +const alias = ['stdin', 'stdout', 'stderr']; + +const hasAlias = opts => alias.some(x => Boolean(opts[x])); + +module.exports = opts => { + if (!opts) { + return null; + } + + if (opts.stdio && hasAlias(opts)) { + throw new Error(`It's not possible to provide \`stdio\` in combination with one of ${alias.map(x => `\`${x}\``).join(', ')}`); + } + + if (typeof opts.stdio === 'string') { + return opts.stdio; + } + + const stdio = opts.stdio || []; + + if (!Array.isArray(stdio)) { + throw new TypeError(`Expected \`stdio\` to be of type \`string\` or \`Array\`, got \`${typeof stdio}\``); + } + + const result = []; + const len = Math.max(stdio.length, alias.length); + + for (let i = 0; i < len; i++) { + let value = null; + + if (stdio[i] !== undefined) { + value = stdio[i]; + } else if (opts[alias[i]] !== undefined) { + value = opts[alias[i]]; + } + + result[i] = value; + } + + return result; +}; + + +/***/ }), + +/***/ 994: +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; + + +var createError = __webpack_require__(441); + +/** + * Resolve or reject a Promise based on response status. + * + * @param {Function} resolve A function that resolves the promise. + * @param {Function} reject A function that rejects the promise. + * @param {object} response The response. + */ +module.exports = function settle(resolve, reject, response) { + var validateStatus = response.config.validateStatus; + if (!validateStatus || validateStatus(response.status)) { + resolve(response); + } else { + reject(createError( + 'Request failed with status code ' + response.status, + response.config, + null, + response.request, + response + )); + } +}; + + +/***/ }), + +/***/ 997: +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(156); + +// Headers whose duplicates are ignored by node +// c.f. https://nodejs.org/api/http.html#http_message_headers +var ignoreDuplicateOf = [ + 'age', 'authorization', 'content-length', 'content-type', 'etag', + 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since', + 'last-modified', 'location', 'max-forwards', 'proxy-authorization', + 'referer', 'retry-after', 'user-agent' +]; + +/** + * Parse headers into an object + * + * ``` + * Date: Wed, 27 Aug 2014 08:58:49 GMT + * Content-Type: application/json + * Connection: keep-alive + * Transfer-Encoding: chunked + * ``` + * + * @param {String} headers Headers needing to be parsed + * @returns {Object} Headers parsed into an object + */ +module.exports = function parseHeaders(headers) { + var parsed = {}; + var key; + var val; + var i; + + if (!headers) { return parsed; } + + utils.forEach(headers.split('\n'), function parser(line) { + i = line.indexOf(':'); + key = utils.trim(line.substr(0, i)).toLowerCase(); + val = utils.trim(line.substr(i + 1)); + + if (key) { + if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) { + return; + } + if (key === 'set-cookie') { + parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]); + } else { + parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val; + } + } + }); + + return parsed; +}; + + +/***/ }) + +/******/ }); \ No newline at end of file diff --git a/index.js b/index.js deleted file mode 100644 index 3e4aec9..0000000 --- a/index.js +++ /dev/null @@ -1,45 +0,0 @@ -const axios = require('axios') - -const core = require('@actions/core') -const github = require('@actions/github') - -const webhook = core.getInput('webhook') - -if (!/https:\/\/discord(app|)\.com\/api\/webhooks\/\d+?\/.+/i.exec(webhook)) { - core.setFailed('The given discord webhook url is invalid. Please ensure you give a **full** url that start with "https://discordapp.com/api/webhooks"') -} - -const shortSha = (i) => i.substr(0, 6) - -const escapeMd = (str) => str.replace(/([\[\]\\`\(\)])/g, '\\$1') - -const { payload: githubPayload } = github.context - -const commits = githubPayload.commits.map(i => ` - [\`[${shortSha(i.id)}]\`](${i.url}) ${escapeMd(i.message)} - by ${i.author.name}`) - -if (!commits.length) { - return -} - -const beforeSha = githubPayload.before -const afterSha = githubPayload.after -const compareUrl = `${githubPayload.repository.url}/compare/${beforeSha}...${afterSha}` - -const payload = { - content: '', - embeds: [ - { - title: core.getInput('message-title') || 'Commits received', - description: `[\`\[${shortSha(beforeSha)}...${shortSha(afterSha)}\]\`](${compareUrl})\n${commits.join('\n')}` - } - ] -} - -axios - .post(webhook, payload) - .then((res) => { - core.setOutput('result', 'Webhook sent') - }) - .catch((err) => { - core.setFailed(`Post to webhook failed, ${err}`) - }) diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 3a2bde9..0000000 --- a/package-lock.json +++ /dev/null @@ -1,429 +0,0 @@ -{ - "name": "@binotaliu/action-discord-notifier", - "version": "0.1.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@actions/core": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.2.4.tgz", - "integrity": "sha512-YJCEq8BE3CdN8+7HPZ/4DxJjk/OkZV2FFIf+DlZTC/4iBlzYCD5yjRR6eiOS5llO11zbRltIRuKAjMKaWTE6cg==" - }, - "@actions/github": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@actions/github/-/github-2.1.1.tgz", - "integrity": "sha512-kAgTGUx7yf5KQCndVeHSwCNZuDBvPyxm5xKTswW2lofugeuC1AZX73nUUVDNaysnM9aKFMHv9YCdVJbg7syEyA==", - "requires": { - "@actions/http-client": "^1.0.3", - "@octokit/graphql": "^4.3.1", - "@octokit/rest": "^16.43.1" - } - }, - "@actions/http-client": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-1.0.8.tgz", - "integrity": "sha512-G4JjJ6f9Hb3Zvejj+ewLLKLf99ZC+9v+yCxoYf9vSyH+WkzPLB2LuUtRMGNkooMqdugGBFStIKXOuvH1W+EctA==", - "requires": { - "tunnel": "0.0.6" - } - }, - "@octokit/auth-token": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.4.0.tgz", - "integrity": "sha512-eoOVMjILna7FVQf96iWc3+ZtE/ZT6y8ob8ZzcqKY1ibSQCnu4O/B7pJvzMx5cyZ/RjAff6DAdEb0O0Cjcxidkg==", - "requires": { - "@octokit/types": "^2.0.0" - } - }, - "@octokit/endpoint": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.1.tgz", - "integrity": "sha512-pOPHaSz57SFT/m3R5P8MUu4wLPszokn5pXcB/pzavLTQf2jbU+6iayTvzaY6/BiotuRS0qyEUkx3QglT4U958A==", - "requires": { - "@octokit/types": "^2.11.1", - "is-plain-object": "^3.0.0", - "universal-user-agent": "^5.0.0" - }, - "dependencies": { - "universal-user-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-5.0.0.tgz", - "integrity": "sha512-B5TPtzZleXyPrUMKCpEHFmVhMN6EhmJYjG5PQna9s7mXeSqGTLap4OpqLl5FCEFUI3UBmllkETwKf/db66Y54Q==", - "requires": { - "os-name": "^3.1.0" - } - } - } - }, - "@octokit/graphql": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.3.1.tgz", - "integrity": "sha512-hCdTjfvrK+ilU2keAdqNBWOk+gm1kai1ZcdjRfB30oA3/T6n53UVJb7w0L5cR3/rhU91xT3HSqCd+qbvH06yxA==", - "requires": { - "@octokit/request": "^5.3.0", - "@octokit/types": "^2.0.0", - "universal-user-agent": "^4.0.0" - } - }, - "@octokit/plugin-paginate-rest": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-1.1.2.tgz", - "integrity": "sha512-jbsSoi5Q1pj63sC16XIUboklNw+8tL9VOnJsWycWYR78TKss5PVpIPb1TUUcMQ+bBh7cY579cVAWmf5qG+dw+Q==", - "requires": { - "@octokit/types": "^2.0.1" - } - }, - "@octokit/plugin-request-log": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.0.tgz", - "integrity": "sha512-ywoxP68aOT3zHCLgWZgwUJatiENeHE7xJzYjfz8WI0goynp96wETBF+d95b8g/uL4QmS6owPVlaxiz3wyMAzcw==" - }, - "@octokit/plugin-rest-endpoint-methods": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-2.4.0.tgz", - "integrity": "sha512-EZi/AWhtkdfAYi01obpX0DF7U6b1VRr30QNQ5xSFPITMdLSfhcBqjamE3F+sKcxPbD7eZuMHu3Qkk2V+JGxBDQ==", - "requires": { - "@octokit/types": "^2.0.1", - "deprecation": "^2.3.1" - } - }, - "@octokit/request": { - "version": "5.4.2", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.4.2.tgz", - "integrity": "sha512-zKdnGuQ2TQ2vFk9VU8awFT4+EYf92Z/v3OlzRaSh4RIP0H6cvW1BFPXq4XYvNez+TPQjqN+0uSkCYnMFFhcFrw==", - "requires": { - "@octokit/endpoint": "^6.0.1", - "@octokit/request-error": "^2.0.0", - "@octokit/types": "^2.11.1", - "deprecation": "^2.0.0", - "is-plain-object": "^3.0.0", - "node-fetch": "^2.3.0", - "once": "^1.4.0", - "universal-user-agent": "^5.0.0" - }, - "dependencies": { - "universal-user-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-5.0.0.tgz", - "integrity": "sha512-B5TPtzZleXyPrUMKCpEHFmVhMN6EhmJYjG5PQna9s7mXeSqGTLap4OpqLl5FCEFUI3UBmllkETwKf/db66Y54Q==", - "requires": { - "os-name": "^3.1.0" - } - } - } - }, - "@octokit/request-error": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.0.0.tgz", - "integrity": "sha512-rtYicB4Absc60rUv74Rjpzek84UbVHGHJRu4fNVlZ1mCcyUPPuzFfG9Rn6sjHrd95DEsmjSt1Axlc699ZlbDkw==", - "requires": { - "@octokit/types": "^2.0.0", - "deprecation": "^2.0.0", - "once": "^1.4.0" - } - }, - "@octokit/rest": { - "version": "16.43.1", - "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-16.43.1.tgz", - "integrity": "sha512-gfFKwRT/wFxq5qlNjnW2dh+qh74XgTQ2B179UX5K1HYCluioWj8Ndbgqw2PVqa1NnVJkGHp2ovMpVn/DImlmkw==", - "requires": { - "@octokit/auth-token": "^2.4.0", - "@octokit/plugin-paginate-rest": "^1.1.1", - "@octokit/plugin-request-log": "^1.0.0", - "@octokit/plugin-rest-endpoint-methods": "2.4.0", - "@octokit/request": "^5.2.0", - "@octokit/request-error": "^1.0.2", - "atob-lite": "^2.0.0", - "before-after-hook": "^2.0.0", - "btoa-lite": "^1.0.0", - "deprecation": "^2.0.0", - "lodash.get": "^4.4.2", - "lodash.set": "^4.3.2", - "lodash.uniq": "^4.5.0", - "octokit-pagination-methods": "^1.1.0", - "once": "^1.4.0", - "universal-user-agent": "^4.0.0" - }, - "dependencies": { - "@octokit/request-error": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-1.2.1.tgz", - "integrity": "sha512-+6yDyk1EES6WK+l3viRDElw96MvwfJxCt45GvmjDUKWjYIb3PJZQkq3i46TwGwoPD4h8NmTrENmtyA1FwbmhRA==", - "requires": { - "@octokit/types": "^2.0.0", - "deprecation": "^2.0.0", - "once": "^1.4.0" - } - } - } - }, - "@octokit/types": { - "version": "2.12.2", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.12.2.tgz", - "integrity": "sha512-1GHLI/Jll3j6F0GbYyZPFTcHZMGjAiRfkTEoRUyaVVk2IWbDdwEiClAJvXzfXCDayuGSNCqAUH8lpjZtqW9GDw==", - "requires": { - "@types/node": ">= 8" - } - }, - "@types/node": { - "version": "13.13.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.4.tgz", - "integrity": "sha512-x26ur3dSXgv5AwKS0lNfbjpCakGIduWU1DU91Zz58ONRWrIKGunmZBNv4P7N+e27sJkiGDsw/3fT4AtsqQBrBA==" - }, - "atob-lite": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/atob-lite/-/atob-lite-2.0.0.tgz", - "integrity": "sha1-D+9a1G8b16hQLGVyfwNn1e5D1pY=" - }, - "axios": { - "version": "0.19.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", - "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", - "requires": { - "follow-redirects": "1.5.10" - } - }, - "before-after-hook": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.1.0.tgz", - "integrity": "sha512-IWIbu7pMqyw3EAJHzzHbWa85b6oud/yfKYg5rqB5hNE8CeMi3nX+2C2sj0HswfblST86hpVEOAb9x34NZd6P7A==" - }, - "btoa-lite": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz", - "integrity": "sha1-M3dm2hWAEhD92VbCLpxokaudAzc=" - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } - }, - "deprecation": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", - "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==" - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "requires": { - "once": "^1.4.0" - } - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "follow-redirects": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", - "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", - "requires": { - "debug": "=3.1.0" - } - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "requires": { - "pump": "^3.0.0" - } - }, - "is-plain-object": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.0.tgz", - "integrity": "sha512-tZIpofR+P05k8Aocp7UI/2UTa9lTJSebCXpFFoR9aibpokDj/uXBsJ8luUu0tTVYKkMU6URDUuOfJZ7koewXvg==", - "requires": { - "isobject": "^4.0.0" - } - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - }, - "isobject": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz", - "integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==" - }, - "lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" - }, - "lodash.set": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", - "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=" - }, - "lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" - }, - "macos-release": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.3.0.tgz", - "integrity": "sha512-OHhSbtcviqMPt7yfw5ef5aghS2jzFVKEFyCJndQt2YpSQ9qRVSEv2axSJI1paVThEu+FFGs584h/1YhxjVqajA==" - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" - }, - "node-fetch": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", - "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==" - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "requires": { - "path-key": "^2.0.0" - } - }, - "octokit-pagination-methods": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz", - "integrity": "sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ==" - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { - "wrappy": "1" - } - }, - "os-name": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-name/-/os-name-3.1.0.tgz", - "integrity": "sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg==", - "requires": { - "macos-release": "^2.2.0", - "windows-release": "^3.1.0" - } - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" - }, - "signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" - }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" - }, - "tunnel": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", - "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==" - }, - "universal-user-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-4.0.1.tgz", - "integrity": "sha512-LnST3ebHwVL2aNe4mejI9IQh2HfZ1RLo8Io2HugSif8ekzD1TlWpHpColOB/eh8JHMLkGH3Akqf040I+4ylNxg==", - "requires": { - "os-name": "^3.1.0" - } - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "requires": { - "isexe": "^2.0.0" - } - }, - "windows-release": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-3.3.0.tgz", - "integrity": "sha512-2HetyTg1Y+R+rUgrKeUEhAG/ZuOmTrI1NBb3ZyAGQMYmOJjBBPe4MTodghRkmLJZHwkuPi02anbeGP+Zf401LQ==", - "requires": { - "execa": "^1.0.0" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - } - } -} diff --git a/package.json b/package.json deleted file mode 100644 index 5640de2..0000000 --- a/package.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "name": "@binotaliu/action-discord-notifier", - "version": "1.2.0", - "description": "Use discord webhook to get notification about commits.", - "main": "index.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "repository": { - "type": "git", - "url": "git+ssh://git@github.com/binotaliu/action-discord-notifier.git" - }, - "keywords": [ - "github-actions", - "discord" - ], - "author": "BinotaLIU ", - "license": "MIT", - "bugs": { - "url": "https://github.com/binotaliu/action-discord-notifier/issues" - }, - "homepage": "https://github.com/binotaliu/action-discord-notifier#readme", - "dependencies": { - "@actions/core": "^1.2.4", - "@actions/github": "^2.1.1", - "axios": "^0.19.2" - } -}