From c4f68949e0c751ba83a56488dd2838c444b3e453 Mon Sep 17 00:00:00 2001 From: Utkarsh Shigihalli Date: Thu, 18 Oct 2018 20:54:23 +0100 Subject: [PATCH] Push the code to GitHub Push the code to GitHub --- .gitignore | 72 + .taskkey | 1 + .vscode/launch.json | 84 + .vscode/settings.json | 12 + .vscode/tasks.json | 16 + images/gitlab128.png | Bin 0 -> 5448 bytes images/gitlab16.png | Bin 0 -> 648 bytes images/gitlab512.png | Bin 0 -> 30771 bytes images/screenshots/add-artifact-release.png | Bin 0 -> 19037 bytes images/screenshots/add-endpoint.png | Bin 0 -> 7983 bytes images/screenshots/add-repo-release.png | Bin 0 -> 7153 bytes images/screenshots/add-task-build.png | Bin 0 -> 14347 bytes images/screenshots/browse-artifact.png | Bin 0 -> 23668 bytes images/screenshots/configure-task-build.png | Bin 0 -> 15947 bytes images/screenshots/create-release.png | Bin 0 -> 11147 bytes images/screenshots/new-gitlab-endpoint.png | Bin 0 -> 10159 bytes package-lock.json | 3994 +++++++++++++++++ package.json | 59 + readme.md | 76 + resources/gitlab.ico | Bin 0 -> 102945 bytes scripts/share.ts | 90 + tasks/.taskkey | 1 + tasks/DownloadRepo/DownloadRepoV1/gitapi.ts | 61 + .../DownloadRepo/DownloadRepoV1/gitwrapper.ts | 140 + tasks/DownloadRepo/DownloadRepoV1/icon.png | Bin 0 -> 1347 bytes tasks/DownloadRepo/DownloadRepoV1/index.ts | 153 + .../DownloadRepoV1/package-lock.json | 168 + .../DownloadRepo/DownloadRepoV1/package.json | 18 + tasks/DownloadRepo/DownloadRepoV1/task.json | 131 + tsconfig.json | 24 + tslint.json | 68 + vss-extension.json | 287 ++ 32 files changed, 5455 insertions(+) create mode 100644 .gitignore create mode 100644 .taskkey create mode 100644 .vscode/launch.json create mode 100644 .vscode/settings.json create mode 100644 .vscode/tasks.json create mode 100644 images/gitlab128.png create mode 100644 images/gitlab16.png create mode 100644 images/gitlab512.png create mode 100644 images/screenshots/add-artifact-release.png create mode 100644 images/screenshots/add-endpoint.png create mode 100644 images/screenshots/add-repo-release.png create mode 100644 images/screenshots/add-task-build.png create mode 100644 images/screenshots/browse-artifact.png create mode 100644 images/screenshots/configure-task-build.png create mode 100644 images/screenshots/create-release.png create mode 100644 images/screenshots/new-gitlab-endpoint.png create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 readme.md create mode 100644 resources/gitlab.ico create mode 100644 scripts/share.ts create mode 100644 tasks/.taskkey create mode 100644 tasks/DownloadRepo/DownloadRepoV1/gitapi.ts create mode 100644 tasks/DownloadRepo/DownloadRepoV1/gitwrapper.ts create mode 100644 tasks/DownloadRepo/DownloadRepoV1/icon.png create mode 100644 tasks/DownloadRepo/DownloadRepoV1/index.ts create mode 100644 tasks/DownloadRepo/DownloadRepoV1/package-lock.json create mode 100644 tasks/DownloadRepo/DownloadRepoV1/package.json create mode 100644 tasks/DownloadRepo/DownloadRepoV1/task.json create mode 100644 tsconfig.json create mode 100644 tslint.json create mode 100644 vss-extension.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e95afe9 --- /dev/null +++ b/.gitignore @@ -0,0 +1,72 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# TypeScript v1 declaration files +typings/ + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env + +# next.js build output +.next + +#vsix files +*.vsix + +node_modules + +*.js +*.js.map +*.env +.cache +dist/ \ No newline at end of file diff --git a/.taskkey b/.taskkey new file mode 100644 index 0000000..498d27b --- /dev/null +++ b/.taskkey @@ -0,0 +1 @@ +8b750c08-3220-4e64-aea8-1ed3ed3f26e9 \ No newline at end of file diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..0e02600 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,84 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "type": "node", + "request": "attach", + "name": "Attach", + "port": 9229 + }, + { + "type": "node", + "request": "launch", + "name": "Debug share.js", + "program": "${workspaceRoot}/scripts/share.js", + "cwd": "${workspaceRoot}" + }, + { + "name": "Launch task", + "type": "node", + "request": "launch", + "program": "${workspaceFolder}/tasks/DownloadRepo/DownloadRepoV1/index.ts", + "stopOnEntry": false, + "args": [], + "cwd": "${workspaceFolder}/tasks/", + "preLaunchTask": null, + "runtimeExecutable": null, + "runtimeArgs": [ + "--nolazy" + ], + "env": { + "NODE_ENV": "development", + "INPUT_connection" : "connection", + "INPUT_definition" : "onlyutkarsh/demoext", + "INPUT_downloadPath" : "c:\\temp\\", + "ENDPOINT_DATA_connection_USERNAME": "onlyutkarsh", + "INPUT_branch" : "master", + "ENDPOINT_AUTH_connection": "{\"scheme\": \"Token\", \"parameters\": {\"apitoken\": \"MOCK-TOKEN\"}}", + "ENDPOINT_URL_connection": "https://gitlab.com", + "BUILD_SOURCESDIRECTORY": "C:\\agents\\latest\\_work\\21\\s" + }, + "console": "integratedTerminal", + "sourceMaps": true, + "outFiles": [ + "${workspaceFolder}/tasks/index.js" + ] + }, + { + "type": "node", + "request": "launch", + "name": "Mocha All", + "program": "${workspaceFolder}/node_modules/mocha/bin/_mocha", + "args": [ + "-r", + "ts-node/register", + "--timeout", + "999999", + "--colors", + "${workspaceFolder}\\tests", + ], + "console": "integratedTerminal", + "internalConsoleOptions": "neverOpen", + "protocol": "inspector" + }, + { + "type": "node", + "request": "launch", + "name": "Mocha Current File", + "program": "${workspaceFolder}/node_modules/mocha/bin/_mocha", + "args": [ + "-r", + "ts-node/register", + "--timeout", + "999999", + "--colors", + "${file}" + ], + "console": "integratedTerminal", + "internalConsoleOptions": "neverOpen" + } + ] +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..7401923 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,12 @@ +{ + "files.exclude": { + "**/.git": true, + "**/.svn": true, + "**/.hg": true, + "**/CVS": true, + "**/.DS_Store": true, + "**/*.js.map": true, + "**/*.taskkey": true, + "**/*.js": { "when": "$(basename).ts"} + } +} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..8e220a4 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,16 @@ +{ + // See https://go.microsoft.com/fwlink/?LinkId=733558 + // for the documentation about the tasks.json format + "version": "2.0.0", + "tasks": [ + { + "type": "typescript", + "tsconfig": "tsconfig.json", + "option": "watch", + "problemMatcher": [ + "$tsc-watch" + ], + "isBackground": true, + } + ] +} \ No newline at end of file diff --git a/images/gitlab128.png b/images/gitlab128.png new file mode 100644 index 0000000000000000000000000000000000000000..49d5b1a3f81c0bf6c97e6bf1eb8835085a8c34d1 GIT binary patch literal 5448 zcmYkAXFL`D7stQ%;#wEkt}SHmEj#1dBYS72tRj2djAXBj%xi{>jLhPa>`ht4B?-yQ z4u8LA{|D!sC+EE0=W|}?(I?hGPlJSro(KRyqKQ;Bx~ZuDf&g}tKPfyIzA1#>NDChT zNPGVaNCqD%0{~R#nySji0SkX@+`JiQpIn`f)^|t;qHxJj(0AHOrM(*t?wV!n4UDKb z(gLHhAwzx*jsR8D;?^`|Gxgm{WbEz1)apGbbsLA3BBL4alOfYM`&CB4UnxdL)dR&q z5Q8(!@BtSZpFba%&mxBVgr6pOWIOr~@703`{;us^C!v=?=SRSq&uV_iw7DUp#@#vh znYwN0e*N)J1-1=;bIZ3cXHFnXU*2^|nfjfL&{#}c5)KG88rQNvKbh;P?Zc6OA{3^5 zv~>qJmbOe&9}tP0632}lfdau8sc4hI18Tln1=3sfpY0693y87F@h>2-1*^yAaq0F| zbQf%CksQ)<6W=e~WO}C;_a$oLt6QaU%d13|2^EM}ITOF{G@{Jl-Yj&__piHk4)In5 zfg*2=%x2C9uaG?migPO}E*LO!6Mmp{F^EPtJv2v<>DByC0a`9n@yB49wRGY~yiK4< zb#BDS_}lz$OHGR0r?})T;=U)Z9z!Yp^gQ14Z*pfpNI-mND}hY%EM(}Zx9 z*y!*slVa_L9LE~!Zp0Y9o#l~Flx~F!PuDV(X$A0ANo0Yq_ z_h2mm8;7g9V0FpgmSy3g(`JkI4!?K8)h&A2;x^)&#yP4l^H3!Wca?#mBe*8Q9^9_Z ztQIdlM7S04Of5CH7j^s!caec9^iv#8Rll#M;;jRFhR>0}Lo2_hZxE&H+{gg(NH3GK z461!_fW^(nm*~1`;#(MLFDME+>Hm0M@Ywb7HvWPYUbfyls-w*?Q|<#CmugSB3HHNb z5S43DEYsKyd9S{(SnIX1bM{aYio)H=ydyBO);Lvc5;s%>6bAXgOVOft`*xVzZ|H{A zZW_@~q@ZsB8^gq)l=JJt ze2Cv|6*LLB3Xy~;J-u`H4NvDZ;XhWC*;7FX&Yv3Gi5U0T-!|qXyCR1*^Da%F(=S^p z0h3d_%KU}iRnyJkYV*VZVc-!$<*xHTkz*to9Yu!!oJ-sie|R2+qkZR z8098e+dcN_5pjw1*Y5x2Lw0yIDVfNfv@Dy+ry z%1}C!9EbaTtJ%ziTs9c{N!(}PtH@XXz|a`%nP?J7uxu7O9)V1Bs?fnB4n%J%6<8}t zWCglF9jG1_K~P;eqtarQzXEG~OyJJIlO5N1vyI$O>XvW}%?^hmO~R!HP!dCV zE2Qx%)!Eare};f?YIdPOF$jSzNoUQEhj%EYpaD_>AO&-0f`cNL*j@ycewGSxET!ui zKP$P0fiL%)4b2KjKIAsw(gok6E}dkXdN?@K#CR;T#MpJr<_TPT)L3!OimwC5w)C;g zlBbkN+cFQr{`-z#uq90^p7KxxMZ?7+{M0`@4)zf80wLfIPI+Zcy2+$tWp#6Do1TjA zyLb13TTKs$E|aCcD_bRhB4|r{PXAvgbZ>U8)xJo&-XQ%f33t&|NHNJdJ1kqmP$MU$e$t*IOE>b6+US&Bo}waD-)6TCJGTX+u>BO;1NJ zpaUJ?xtx`@P%PV)qvn{sgNHf`LPjGGHyWUtICa9 z;_x`gqkfgUg4iz;ldr;z^KMVF?e5xqfqcR5CEgBYZ&%d#tFN~wCi4Kjnl%zyBionn zkrBXg_F5CC?M7SW%#}oy;NgOnF6*DdhO$OIh^zGpfO!Zz)IzU@-j3rSrC34{y@7J3 zQvWBRcyIr_bwuZL!HhHZj*nM`#Uj0e963<^9cwM!UM&+mt^a|K!Y1|kicfSmD44yf z<5&RvtO60~oli4WGd7c%gvnW*I`_mO?Ufm$06?^X>53T+GZEbBhQ% zb`dCXqG7fzf_6L0747Z)j zxIL+M;%vXBLO2=DwEd=xl8fNvdA)oEDiuY)H9D|`7i z$?JnBm!k{wPZr7*i3GCdHYsDgKJ5zhXst1B`WJi{gwb!8Pa_6(h|}iY>o_B!x#7ut zVNKfcdtvx(ruzXw7g0~+dGj9kojSh~K2_nL?8ZeO)OiK=sBkqPt>T0RmVSmv%eDs) zHAjB9)=AKHRzTx&A@)F;&y2EU}=SfU) z1PfSIg?_G!tN)aXT~HI`M7lYP#lKVZCQQV-+X#ldc*yGFYKJu z%{P&YHjwaGIh~*ORnzuiB>%?@NRjB)J;8}C;4QF??`q2*5*aMr*HyVo&~Cbdgj<&L8su*i-!pv9gNwg!B&LS(m$L?|wrbbuXke;vP)&$Kc_`df>i zmUZ9ArDr07Ro)^?T8bu*R0Wq*z766xa8qa!OMmCXFzY&#$A#{(^PSiER@gmx_C?I$ zpCDcGqx_X7OCPZVV|TBL2vn9DN_J%(6p_C{Iyr9 zkc3&=CWXg~|Fj6zmi}|6tvXZ7-SuI51=^Sfr+N;-xb%~ zPu5#=Hke!^S!P>ePT1pzhlbSctd^=z&qxlYzt_rX+jFtWWz6@N;pJ^nqlQJ5dK8ZH zMV1Ag5h<*VHMFR&D$?A_Uuf>EE|+Ls<#hB%#(W+(cpva0iuf>!b348N9%2Xs*!<>g z5Cd^nzj|s9JG?dd1EVz7W@Gnqnrno9OEQ>c4Q{m5ol%z=g-7~6@+(97-a?GB(scrB z+0AtxhrVyHSS4K;%Mp(Gie9}2{a0nWe`=w@*TJ&=UCiye>_&t%+^P7{^Vj)-W=fBg8LMH_p$y9N`MzqGut$sb)E3>*B$K;^zqQ)OVw z!5J^o2oHuS!-UeAI&tN}d!E0!kyWUT8yJMXc=A(1P#eY@YTr=J{ z?_Qv&DA68~F%qDR+uNLQ0bkWqNa+ipYjGi_koj9UmSHCIxd2Z1k~5d?XBOh0Zs_B} zH^0z6U)3GAJ?E9eob~%8BE|7dL{Z(JaK&=+;ipxc>r&;)*Sy=xiHM!(xitcYgODSbz}rNNw>kS>M6tPi*Q=sRiAv2s07AD=M7x8h*;lxh|kxe=0_MOlYg+^Myfr zK;*2Vvt;)&q?fG@|966X_nFQd4|FxP=@ATegOL#@faeeDz#h?BRp^u%iea};zBD-q z$qadcQ+bca0o-;X0~e6s5oV~_ETUewR$&vLBtQwO!>_&LB6M68@WWZa>fW|KJ0lwj#%_xt=O~5 ziSYRQ+nTBS^O*6uwf?_m@$eMW93=+ zGlC5UGSj#Eg61@^_xFpPA~jAqP4~EhTwCp3@~GDabbb6EGKDn7h*uT1t^S~jO@mj7 zYk1Hg&-?~=F3i&Z7*^#A*zvZCo@FN-{5bcDxvrcDv3Xb0lK8#Ixpc}do$O?co6ry+ z_ldug5;1Z{g0m=`#LsnH=QFcQrr|#vj^?dJvV1{RMcTjH&r0}8dwN(5@IoE?a=P(2 zn2gUh5j{V5#q%bkw@G!L~(gZ{vCPYmzIT)c~DE8U<_jPJS&Qtz)1Z^{XPS zK&d#V8=-?R9-K;j?&di3h^ztt5Q!WBkZt~mpxMMhQQFbv)0@1&jIl*h-P_W?0-f0*KU@-$ZqhU?n#_H>5s#g zAxu!a$-5UXv`5W23IEeb5~g|D%U5bZ!m%CJ6Q2ZUY?n3Gn%v%EA>Y>M7;Scy9*YzX zjQNVVQm#C&D1~6xV6$meA+)ldMbhL7umImxgUX>ZiuXtEQqQUZYqoR3HPcA)W`3xK z*1RGo834k^c%e>Hg+*}%rQ}B5x9C3lK5MqONyq!xN7$LHn{;q!u=gg`w%Hn{B%k>5*`VHC$d&-T9WUbnsPrnxnzZsCtGiwa3r{)mt$ zZ#3N^LNLmLh=hosUr>QWHxXUrg&~L)NOxWI2LwS;sh3h-SSUelNvRXG4fk}hcVaX% z`oaU}aK7hzzUMh$p{3aA?J6^aY=C2>X6Yfn%kxL!S$*ij`2MPU8wtE=uDt&|67J3A zN-n7L6hws-A>h(_&AUCi2x@9H=ukfb{i_1q<(`0$q7kt5)%f?^{E!&SC(sr!>Oq8% zGT0OL`iG|H5(+@8&*%VQ2RQ6AqU#B?`ixjM5=yJjI5IRnH>dzK6uM$LQi-O{>jSPW>rTq{h0>BRk45nW~5l{&dnVOtQ-8k{^>)o732D*Kb(+9mHLW&9|AoT-gKiL8BRji;E z0<|E8oO<+PzU$0z;vH+21mI|$%N*$0JmA&r$K`|&iOH-3e@zBaE9HDTGje`7e(ve$ zVlvkw^4I)?5>Kx*#! ze(T;p;jUTCu-2LPoc->6_VezE)X`EQz@^0n0DwSERZ$NBpy0ny02>qhIQN~r20w6I zRgFCWfUx_&KS&A>AsqlP0cwi!2EKFqZGH)6(_WkZa&A)193hTM2V9c_aHd8z7MyW% zs>IK#2{2rx#H7~v#e>6)R}Ji@A4Pu`V4JeA`#Hti?^m<7#>^GuVlp{a^O`a?wDu)E zf5kSK8WDE$j)4tXIuLlY7_b?i#-vID(={~C5D@9Ggh8!{i-&v;FLI8SeE1RA%%Q{z z|6ku8asDKpOtarwq47M2*SD1SkCzbS$yw7-D5#2@uHG6DMtQaSt1U16(iUVP2l#&d z&Pjg1yZ$oEw;(d0$x7qX14_HP`$6kgxZLE?zqj{6qf0?5G<*uG7@QI;ne*h`YvMDi zA1Wrq*7p33k{e;aVk)D9wK~!|@Bbce5%LRKlLMNA9?~B?R&Q@KNiB*-7VIjV4Wb2K zW08<}S?h?k2dm@+_M9!|!Tc_@9|sU-Tc2Yy$96}Wi?CLk&r$w56su-vXolJBqA*yH z+%QLc%I@iqXN>|M{LXyt^89W`X(VxxU)M@<=Z>Bw*}Jnzy9n#QDc+)*!>a{_pCR>)DS5;ocCYrZ@Ea<*qqMa#WTnZ7n3RoXXtKXayr|( zXqIP~>Aow$PQuQ*)A5F0F(`k8=70Kkw`c$DVNRlHeqY78y+pM4+KO`BrT}nDQScPI zpJl{*=^M+Nj^kW3oIRAQN;Yz+LsCqxw#7$$R8|*wbdKyCEq?N=rlRVIj(j9@Z!)D) z&J*k2A2q0>oJyR;9ydCC-ox(f6&X{$i}kRTEy=ATzX4;Wt4|Mj#HM|)kgoo;5fYV; ztMGa8axkm)wi6RI#;lwMt}IX4%jx>lyt?S_0^=@e98KxSa`!|)YbI^b#>BbgZCkJ z8b%q_cFvywrcm3rWJDSipOwUEmA;k@$eB3D{M}v01<-w}|1C2KUMS9LBSStv$UESb z`qMuKdR~2Q+l_AkC3E3737%<5&NPJ{gGM6AuncFAp z)=u*sdKc(1C%zbSVQ#nG5vEt8ZN*eETT)iuT+?ql^w31=@2^1LBT&LCj_#Y2B;P;v zXiMD%t(VEF-~N+uGTEl(>-)y_UNdX|DejyoR!?=tWZ*(*l^mdX-nIHK>Za-g6<C;MLeg1`&SX3(KF|`haaB6aS0PVg*FKp;7_P z!MoQ>i&*U=V`K`BQ7Hi^TlH93O=mV~#q;+77x=2_Ir*2-T6)vpliXYO+m~3vY}NYc z0K9=b(9TA*=}@L8(0n%8s+T>2BXUgiGFMV=&eP|HZ2=b{ z$ra%4hpl67$ld)8WQ8=#lc-w&8C)b7K}>Yn=~>*x>WoGb6rpu@wj^BqZc__{;3Z-` zGH0CU#XSf<25lf>P#D5QgtQxb2nZ+LnN}7@U0M@FqgzQvKFb*=(bPkk3n@WaXt@Qp zF}+Bqu4{8r^2c6<++Ka#u{@fs?dYD$2Z}oYqa>hn%0IAP3bwn`_uE`wKPZ5Z-pYws zVd~M1&!%kA%X-;7{?&5729w*o|0!;Fu-{w+zO|5pCy-^`h8YS?EB?C#M@`SNgeHhm z0EuR0gzxL>(W9hk8^T-)^)NVMG16uSx!U%Z79Yr`#85N-_P^UFbsaGtXll(fdj+>! zEdOBd+n8UxJu#o?n69-)lbVJ>^Mj%Jypq71k}V&d@N6mk2U&SE2a9b-#`U<&wtNW^ zA@L?6ky6<{{(l;X!(={opQ6DK2lqtuYs(&QWS2m_sIYdVOOIS?gZB`6Jnu}S&}U+0 z<55tGKQ(bu&Svr4oeoS_?eCd?NEymto8JtE@c)EU*Ce*4fSRtMlnEHsuqSpJqd^`k12aBSaO$oc+Zl$GI$-;&~w%Vqqwm)K%q>*+MfOZIR51< zq|jGN%9wsbE}S5GgHAc3>gU@XlZSwI!g$Bnxwu3B&N*0)1bFYd>4FO=^f~%^Gg{Ob z%$0u|OEi8UCc2Q#RqoBTn43XR?RW~{SaVS zZKr0owcCliu*~Ydx1u~idz|I?TA=D%V9QX~hzey$6$kyI(28`Hv+C1(-+Dt_8AJR` zL9`eU(x1v2S`JJ094<*FFxK(~I(yvHxbJ;%0bFDq{&S*yIaIlA>-9%$D@^zb;eSFt zoms+A8*s1Sma4foPo^%&En)@j!?68t=xut13Zx1%M*|aR64-O31|~nT#@P=3_!nvA zeo0189GYNvg4Hl$(e8=+WNg2Z%#r>0^w7I(sR2U&a!(g9NTI6N_8nml%7jhC9tRn& z7>EDJ&a43L6ZurJjS2aGVC;^~W8)A35>AJIV0oYai>l!Kzz&|s#X2$hPeSe05nN)S zQvv^_q#CoNnuQr`&_SI;HLdqMR~WL|8&;}0$?BQl2#P;dG1R`7;!(7i}aTTiAP1IUL!_FpB1+1l{j|P0a318@py+$0r23kpTp!rht?G4Mt(u?+MBZG9i z(L8}!jq;Y$qkuqAJf9kNQ(w=y{8nL0A}J#RHqv6rAglhLrF*#QDkr#Ros*SYJQZO4 z+h?!Q0m!s_GP)#UccJdYg*eO_v?U3@&`ZdHbhFLRy?}k3!PG*)D2RpOW-S4A->cVE z*$6PW%`W(QNw3q{=R0dE^o2>tic1?wvC`4?gR!j1_JH!h5Q)|Ve$8f*17)kI+fZKi zdI7W32C+h4U6@$!aoVz^^jyoR3)2;QLclwe;aig4~3|I1WH z{G6LF-?4cIZ75C5v&FORj+I3DU|gBk3o@^Z?uD%0VI!?;W#XeZXuYVd2K4}5Iw!Zt z(pGgtjWg`P@AEJsJ%CujBKdef`&?bUv6N;X{e1J-sF^qwi*Q*kW%+m(gS}oD-l;^E zW@iSQ&s1M!jTm(A2b-PX%iN$=zG&hkErKYzB%`^kF3>AfM~IHXyTpOO=n4&pt1f+3 zmYCSoH;3PkGJ@DXKa)0alS4jsex-m7u#KQ!ah(odn29Cs!iN;|3n)Z_G@HxV7x(7ydW!>PNQm$cX@Dr(|*iit_?0RVK4eKps9K7{Fcv# zhc1H{3aA|AwU&A|yQ!nwjeFNN!t0|em!TH7Vy0P8lxF1M%QmT)M|)@Nk)GMUR=aVB zXm8Y@^J@i@$IC(wbW~@uwK=UBT#!A=06F-g+PqpA(lDE%D_~y}-9sWBmy|b`L8oOZ z>~TwMVmHUj+yPLM&M}ZQ)#IBrf!E1?9^_t z>ZO<~ekC$YFp}PCl#@QXOpcN$66e6-fam}^Kz3fi*+f=Sk_Cf+*k15V69n={Q0*NW zr<1691LxIaXIp$^3ncwz9oo`w%IJgnyWH2vTY}C(uxYS}SFVwKe7C&t{?j{q)~2uu zE!91@(;sfSd_)5DqYa8BW?RHCxbw~J?f$gCw_JPtVumgO2M;&I{rIHE)bzE$t9{0Npc$KSuEiU8lBt*T92ubK)k%uww7-rh|{ zu3%aK4lwg|>Pw41HCAt1%D6Rh8a_$Fb3e>n^ANGznQb{zyMW;$J)#=f=>GIOmpyLa z8_fScA1g4T%|O2pgbcUAe&s%wFlhYyL7Z7_-hD{W6oyrn<}v&KEd3Bf-`7b=THVp( zQ;wsD^ri9Sgba~ilzn;0lZ-8LG(mT}~GM#CvdEH(XA|SRyvh79NPYFs`!HBdu%H4UI z>RAw5SZip5qW?K2P850F0nP7zm6X6iaZ~*;A|1>0_r2T}w9mPGrf&%W0bK;Jy_1x%`P1Y(b7uf?gLe%EAeJ~d`2v?OnB89;57=AB-Ey_t z``Fb=%<}m(A^OA;)Xgi|q#E)b6t^FxYd;)@RwCFc<7ul_11fJb(HrDqPSV zr13S*-WE+~prScd7z1+WfzU@dzc#<(jWp4z7qw|AV<4kQ*1kRa`wcjz0!gCY6`y#@ zeLb1Yq^h)nPb>iGcQ|}uSM6lN6V&?W81YmsIO99vSwAHViCXrDdmG@Ah{&$N3emKZ zQ>JxE#TdNhGD^$;LfG(?-vtO#MPs!Q0#bkTqhDSZm50`v0q4{6PtI^NuYEmxH zPHHSo%1`GAQCtP`s%svBE*wYY7EPYLo+7lB?f`kNZ{trBXUMTAE|PL(HsIw?i64z7 z&L}}&J~3r`*|7$OwvbJoW&6wDaHhiFNPsdBDO7T*SLt<4L!+*sp5V9cXXI^;YX~$a10FZPR-k zID(9nZBwk+S<3-!nT2i%&Ub+)vRZuOk{r*)ur~OGq)#N`VW|jn=9=`@1 z;L+N9N9{_@RuX$%Tl<`624 z5F{60`s>UGgnPKtXrl#)?1!aAf4tEJh{vhHa(t5Q74-XahV7$Nk!j{P3HVuN64)p| zaEV^GUDGp$#s~Ep&c?mua{xA1vf@ z0pLIyca(V;LFv`UK0cz=zR(W~{`S}}O}+K#ttbS$Uq;RNLr))}vh}~>l;4fc_4L_! z3H^)OT%eVCt)Crw5~hvaTfVp@MKgL`JpnUQ&G3qO@@KX2WZr*i!n8cbJURx;1e*rU zKsFfsm`d~+bOx``mE?3bdK7!{qncSDwZH)C?%8v}iHg$aO^Qalfl3iDM=`8tV3!*X zQfVWRO(prQ>&lavgx-fKrPes72N#rELq0#~pg8@9MzKQ@uomh_!(pE_x58O+3 ziFr}mH(1!w4>lSwNYUUZ)by_~OzfGhzI2X(7F6RJbkD>MLg#~tT>Zu22n-t=8vSsu z{Xb;}J1}6X5f$D!drh`R` zjioEd;t$w5A_7_+AU%Rih)Go3_M&_)O!`OFcZ^Zs#qn<(Un04;Un@e!C!w9nn>o9- z^Z*knC|+Cr&=u}kvb=6`e(0YL$gy?|7Bh{SHz|$lvu_*sArzWGw3nJ%=JmzQR|;TimC-Q9 z4PihkTFEJdW|t(qouhQ z1WBkL!5KgFdVhQQ=KPg%Xo3`{bi3T1!Qr#9gK~bB(&pdnr-c7$?&nEU$?z8usX}g9 zX}1(ZAtq!9Q8wBOShiKfE~y0~>?Vzy;#{_9hkOY4){->D_s&E&pgZLaPYjhMnWj`J zO#Pzu@j)1>XGyp`pXcHIX}R}cA=MNQlE3=UbARUc{BK*!WeC`&K_Xb2lo^_5gQj`c zw%yz5f?nKc%>T#f3bKSwVv%`{6t8+4`o{Fm*~;j|%=In6L3V2|J3TMmOse8ZDQVTw zw-oLVCqYeJMCWfHfzc$)g|dw`v+LPr+6^8AThig**pj}sT7KGrA(F17C;J7lx-+A! zb;I|PunWk6(8+L+1I8N=J4}-h?{g@B^^>f)tMA0T)->QkX35~p{0s+K)0B9Dp0i;+ zhks&_Y4Xr--xJYJr6y5uRA)}hddkuy6p3i?h$Ukzjx&l5$mCmj#SL*izwb|U=qD)4 zOvv#bHmoMHS<3AUBqI>92|x5Dm2)XXZY7sZLo3O_@)D;`9K+VZey6mZNk= z(gTAf=f8?sPv4A@%fm2dB_z@7FlqJL4cq)PtBSXV)}@@cs~jAGSzX0P}wwo`tt=8_1f=vccU6X~n- zMVtFx0oi0w1?7Bs9d_Ql5BE|Xba7*pUz0I%i5YDz6QCME;eLY5`7~c!x&AKOsFq29 z;Xd5mi+|`&68RnsA}7A)>K^0V`^v$0&cY)OhKwvI|H*8XW@v*-z0 zDszL+s?bMkhsLRw!m_wC?f7d+zU>w{s|87bDENxAN1j6k_p|@fkqaKo8=MsVM-ChF zK!`ImcLfJkCyBiJ=8e8uX6Kp6HQscplLLPPfjv1}!zmsLw;XdI!<*11OPYCE5)M|A z68>L4BNsi1TFTWswvTqRP9(xDmizet#sZ+2Z1jM7gx#*~DaCj6UQC^XIOA9JDuW2d ze`w_qe?8-By%^Haz!3FdH#oE7Xv9!KFu`*oP{j_ez^~K42 zF^Z|1((B38)BmxnF6Z$VDGvchHLPHb(R_lZH*)&#e-7A14)B6a&!3fU4E+OLHSyl) z@h%5j+%@YR(YF?G)EjU?x7T6$HKgxS`M&CVmX)*a58 z*n>mlN4N4}%NzfOHU9CkYr`k8LO>@x&y`Rq_kPr&chy#%euomQ+Ry$wfBnbiPM7od znkH7m+L`yxVk8T4TnRp^Q`uddocYE=d7e`~UP##A+NF7{%?C{i`r6ZE29FYx3|&sy zf@TxQ&H7bs zeVg^yS5;l4LA#va4X+V+(K&YE0A5!(_K5{|c_)#B{Znkcbzo{NkFhxu3D*0`VK3C_ zU`uN=C`^4Ng^x1EMT)XLT!R3R8?#8;&oXBT?*c6i7)U^?I>qFZ_9m4CNPOvd<= zt=Id%Z}$a>e2#kHMag`CR(697O-YQu21VkHCp#nK;NSahA~NLg2*$xbxLs{7vKMf< z9{?hX0XB9a3qm<4vPY0s8L-mHah4I2bMp5QpIV_-*d0@3-2?vbEP#}Ec1#njYs9Uk zR)|=)$j|UL0C?~PC>Cz=-b>TE$$|*pydj>9JlgP7V0Z}$Oe0}lU#*JtDbjC>aI<1sInL6^rPepa%pupg%quD#( zCkAk5a;#2m(j(4{J8?$-9|=Hm42+p7<9I0k{1+azs-+JH0sF!@Usj%!tlSOVuMj(__uwAagWXjEMwrx7L4UcNHa`yhdu^ zA#FTF-j-T`e!64z%h8o2|7EQqnh@w1bs#>)Tw_aZD8&F>g!5tl9|vSqT?QpE@;N^$ z4`t;LXt+<`yDCg1Mslj$>N|}H(2EPtCYYy={g8Wwc4V+pLy+knTwGT#4b1i z!Z=cBV+KR%iEi{eS_au>o6ikL)tqrcETOHG0?WbS=BF>MUZKTXp+LT%TqfHUDcF&3 zxcg4q=JU_e=ioNag!lYoulq)B+gd-rX z)$|z;F8`!(eoi~P+gH*IgV@fAFTDmBZ6vTu$|x=3IyEDgY0Y{lvTkbCp&I|diJ*QZ`C2wbwmAMDbL0~ADP|yvwO!i}w<#ObmT6;8b2S-9t z3h#ehN{RlK&QXdp|C&KU60S>@CH)Xk?O(-0Afa7?_bptYh)ExZ=M8=jtA586OHzw)@qKYKRQtqo z#{MB-@tB%)g0t_Skk;i3KK7#9teKyW_n?%;7SXd zH#Gu0{0I(M=Y&tZ+Q*O0GHD&}77N2*NETPh0`zo+NZQ5z>}4gmJi~cxz*%jsQ$A1 zBC@Et<2bYc0P?4tk7F`wzoSim!?(2t+!< zAfjoc%Rhvo#u$j72RF}W#6GVL_?{2AVw=DFP3EDW1s=HiCXp}?3;1uic#Z!$)2fJw zAbUe)eJcb9fR4uM#}D(GhI)UR%llm6aZaTcGtDWntTmBoE zhzZ%;X?DSwGzW}^iPRE6V(E|T-b=;pIM$<=xWM>6eO}%^U*6P1a6`Pn82`cH0L#xK zsKlRfDAV$n#~Tx;VsgJ4I!$IU`urd-ErUmg_`blqkO>@z`~4KXDtT|LI>jwb>#0Kh zLhKv0&;f05gn6yYO@F@_)e9BR?wiL!G_3?>UtR+rU&l~US$qYUhSgQ#d7|XSJO6#N zI{|j4x|Sl^1WdTlL0hA8mg4M2%UaZ#x;S3;E{_9c2&^K53hbss!p;03Yig0w@`Y*> zvIWN;$h@_aj?}Mso!Hj}6Bjkvc{fymy@?*+KoV5t{`eHYgvj7Ay+k_<&ypNNJAHBO zC8d)#S(iTv%2J_IzZx0uowCSF`XXSKSjTOtWWWh$(P?u&YmLSA3d9I2A0MRz#N8Ec zOoc#Vh}NYkqB$j>Bymsx3oDN1P@s!~gbBI6&NubBDA%&Y1&UCZE&e>e66v>*b-CA^d;8NYv{ z2?cCa7Z1+rLKxeMv>E6m&iYrX?(Fm8O%#B92j$ohnXa!sxuw)1KM6%d3FCzO zm@Qah>J&#H@Ama8Y%rLD>~IG%k{>+^E+&472G8TIJ}3RN96H~K{-Ne04*j=fQt4So z1w?Fb$j|iMx&CeF>3Nz22e$W_$fP$%a2U+sInXRTzIm* zy|#l+{SBVJTWdtx!p69rJI^yCgo)uR7%%DM{yP&O z{hXpS&C*szbuICY`WD|IT3ph8`I+f~V`f()tfoEHvdx}x)i+VD~Pd)fr-L=L`3ed^?(0$x9k(hsM>8<$w;*=hpe(_VMz_nA?I61G7!vHtOw z%4hMqWDw%e8k)BY&5k$dI>(1~<{uz31dO=O3W|CjoYVhJAw7cOl7y+;bTmCg5xluF z{gX|l3Mtx8>1QPi*$CN=q{>tPRCRk%FVz2r2mAg)`om0OU$t=D3ibKn*VdH-r?(f8%^2HC)bB|IGt+8I#wdM zK(bb;eVqFVCyfg7XY;^=S@W!TV252U$0ar7zyQiW|c#?S;A!UCaXSA*jLQd zW2g}>$|E-(K*($rH2*g7#M``v_3Q9nsTzhC(;}gSfg6VESxmAtGDhxyUq)kdpF#-<0a_inBK~*spvTR5kil(jPLL{(ol5K z)La7Ma*}|bG>4XtOLUNOPZ{dKs1tecq5?sbt9??nD6O3pVMgpyg{~~ zQBS>RoJ870^UBXCNQhY^{cN)sX~&f+aDs_9v`5;{=}#vL`b)xuxzpZP8oX^5*AE{PFCW5?v&(II@%cV^BH@B~rWaeR-3b9n-{OG>|18d3qlEq*-i zG~ncnW`svL)X&4}2^l3oQb7%9bf`Xl`7$g|pE~c8gTuS0?v0EH$_95CSXJZX+1)E( zxxXBcIESQv2_qxxxj6hi#PfKGerAlC2>UeZl%)Zpnsc2G20`m>(WevF!!gT*-$z_5 zy}wL#Iz_?G@n8@0mxesY3TunK^(ZCIu982aRisTmb8_WC*>hc-6!0*k#O=W&#J5;C zhXu^?a`@xoS#~)dj_#@n+rX8AHu?GRc*EBiEu|oM`yKqA($$dT06ndG8MPaoNQtvL z{FXq?Xk82_p~4l=0pSE)nl(F#^Bd$&*AuOZtkbSl3FKV{8IX0u%w?@C6CW+5BY%mb7-_&i5uYx#Lwb>qH!J6Am^_6{uaw3E{OnkrIJPEU?Fg|IjTkA z@OdpMxmT#?6pSK>FV2Fxi=g88^Qt6a6c6p@_6LFyajoFG%LIdesdy#~MCCnvvM_4h6YY)W>MPD?( zjcF?m7IJd_p(K^-bQuoFWbr}9II>n=d}fwbqzS9vXWgu@P2B^wQKb(RU^nEH2dQMX4tph^|*7o<(k|EkBm?Ob6 zd(~kW0;C1k5>-q{W#9J%r&e3X&oecxk6|%kbbPqFZX|l_< zi>|7YpVTwT=Ie`IMQm!&-)WgJv7_TILReoUwC^p4?Ni<~ZQGOJL^C|caTRg(^jU-> zPESg_C1QT2dBw^#yB%(JVk07LikLGsk%2AmH^cyA8<_`Op2CC#qD4NRg`)1v_F4VX z5hSL-q$N-sPPei~dNM|zIm1*JX$=T4J*HL_)^5iz3Zwx8#!0p3epHAwRzwKcR`H*( ztR>FJVEk~v`E|-q&Ih&8j0=!&VEU%JlxnT9)r5Dt zP;|Gfb9M#L-i$5#B^!|N?ojNmQ381tSs*mZ!T%(Mx$G%wz9nh;ur%g;6Or_k=K7``2K2jA0#?+o zzI42N!}CByubaS&1Q2YbeCr&_X`${}>QcA`iF1#!%lPTfWb#x1o25{SD+UYZr_6GO z&l;4{0?(#Bv3o4TpankimWa_vcc9iCLX65e7Mu`f;0d36W&(Bnu*O?!!bddsy>LK; z&q`(vona5e`gAQj9$QsK&;W7(O2Cl^z)gP}zLdIa^)KpYAoNuZkkr;>0-#e~1J`x7 zf3GNR@@&(!3Xg6Y<_KaLUnczG181AnALO(yJp2%gRcQwe^5%PmC1^qdVM{(R*oIky zuF3sEhKb7+Emyk^#25s>sS`W>9sAkY?4O)vzZ|!fbYRAZ?=uO+*=6Jsq2KkG`pw9~ z!aT=0Z2vMmeG&NU{^JHjF6unxAl0DAdU8kc-|wA0ccLTod?q&VFmw2LY`TVFM8$;7 zfuvKN{(XiM3x;p|`-r#P6Jj+{Fdo|jw1!B`iHZ2FjypzlK+O$TByjOx6B*Zrtq(jfgEXyhtbFU)2c>i5Z zQru$^1qNusk?U@JGUpyCCAUj&CqMXquo2eJ$ikvt{&E8WAIp>Ryz4ww?W>fr6E$Gt zaQHN2&@>u`nT&m+1vqg61Myn;U0n&j!zM5M;4Ga_z+L0;l719AWkBdblOn2_27eKK zya=JBd17+-oNL5_J?dJgGu7_$#Lmv}(=4H-*!VqKmV}szPvHlP{Ol`AwM!RG}m~}3Jvd|ZIC(N_(kRQ=*PLc*ose84-J{paHW(;7&?|Q%l`rhYL?s@Ni7?U`@iflR zAGJ8eAY2iTOzE`JIBmr1eDhor;Jsg6m)hFnSi=#W>G7N)-YI*#5k<`8zs3K3Z;9Cxh3!i#LvCab zA+CqqzY2?;4eHPO1eP1@gh`N`e4i2;Wk!z)ClI21-2Cdv)p2ro84J+*ZUIho$LI5J z)bS%vf(7j(0Obe7y(pow0I(Y%;J`1%18fKMbe@^riGU#aAUObKWhG6Q1_B-bKvC!6 zm{E@V--Q?t&~~F7s!oOi5DCI|8Xaw_{QQViSey%f(^zP_%}L(1ICT8-Zd$jp(zc$g zfG$C#!B7c+9W-UJ+ha0YDeb4Y)~kZW?vWCr4Tktez?B1G!39n~aK+>;0jj&HKfd1F zKTeTLPU)^HmK4{$o^gGCzm+G~#0^3Dz%G9zTg;)$@~^l_IRAy78-wR+oa56NmM|jt zR2N(jnfE+h>8(07k$Y~xVBwu*2PDd~BLrBuvToiIGI6@M!GwVob!tQ1 zhBgW+6qj$1>u|VYGl7nUjv|h|@2P()aO~G*7KF`%qlfiG_sid}njTWM=ZTRQKUH!i zYFQw}o3>Q=4(R86J;k1X`VH245{3l9XycLGsy*xn;(SAQyrj1cdr&z8=!IT z!l6!*zqfRn*2Ct3^?k(*i(8xY-N{r1b`nQ>t|^C{6Vwjo=%_g!s*H*cI7|=Ck9dvR zLDzMadEQfZ;(+bufq~F1f;ksK_gnD9c%bkc<9SGc6 z)*3F3XYT7+rc`}~AS}7_s#hfjO=qP6$dh1GlK*D0XN1C<&Z$aLR!ezr+pMbd>a>05 z9>qIp2iwYQU-#*sDB%FUzC<$R1$UMhbFPOnozO1bGMr^R2(K_Dc_>(hO0-@}nC=%5 z@m}aB6B23%Ib&lq(RZSKbfE}5cj?fJkYOWBHwbAVH~~2~BF~7z+F7cUa$HE&QufGv zhPDwe?y>&JA=9Q>R*+=EWhTVfeD-=NK;S8$n3qmF0oW+qbkvt#IVa}ZP%tB=Tr~>C z+y6;2S*#8%55WAGtTvkF5}q_4b;NxtKDi!0bZ$A>A%w$rgG-!4*nZo&OaOa#5ChNeC+5)F8 zde=>|H{d9*zweN~_ODoMQMb13;^K8`pmsu(o@{3W5lk4NZU!+)tV(c!B!~{nj#9|3 zWl{dkKElNwuAh!XO=F8%eqak18!Ie1LhdLxQ@DbJ&i4)bdWP=8I! zA!JWPC$=bnpS&Ug{XvMB z&)@#%lxVFFET(&MOpL3)+Rr9EK=o&PXya+H=xiMK5zAVbK1?u3sY>9-jTR81tPmu- zUNN2yH%O@sPiv9)VUO;1B|7wboijU)jqKwK2Y8Wq|MHJyK$}4Hovi_cNr5KbQU@p$LozDLE6;wUu?y;f z`$AeD6-Q++Vj6vJ8K1n8q(qlUDHR^Fy}256i7PNtjHzsG0*oe?<-^S|oc>?!{5?w-blG$x-bXQUXb)e1p zU1cT5nG^&i7bqAR;&)x!x6?s}{l;Zvx0468@b`y3b&?}7CDKe<2R!N1CtV+10{V>% z!fM0s193rQf*#pj@zo9a7l^)zb$s#o9qFO6yg)cf?#@stwu6d)kShoWO5b6i!Vn2- z{{}XlQBil=9z{}~&%jnLI^=7$QG&=79k3i&V7K1NmY1Hbl6T7;Nb~vSNNMvEf8t}V z@h5M2SH3^3&Yprwcp2r#@hFKT?zwJn8^ZiXUX~GYAax6;C>KJ2NHIYc2!4xN_N4ZCoR^4JyN<@-W;1P!Zt#OczI$_EBFH$ zZbQeb@ir1)&`P|rn{DV$c=Rtz1ChDq^jx>7_+duFsRZF};LNK@BLWt9l z6Dsfx5prM{p_2EcTHWvN$k74JtILFkH}*cKdVG5#60ytVDcb*zmeD`6?vkS|`qnJ7 za)EQs-~4i1%$UrR;~C@-63_+$&+fB$>Cz19!9MA$)4QqeYi6Yv47F$qGJyJt|91RQ zsNMIhvI+J(ssPN6b;-boS4|iy0-Je!PO9AK~uS*D2c9W zJu0gcJJbe<0=z}VUi|pv0UqR2umZ{n?Weyk?`qXPM_<@oE)Q}h$A^cZ=KqBgWt(W7 z@kd|TBp)1CDa{R!<|Czv^WQ(=@lew?q2HFQQXRvEBU)kEQrr=g+t5eC2W^C}7r&#Q zYsii3qb2$8X@;&1S!KeM0%^yz1zM?teC`THXEt_Q>}tI**6AMPHVv6HJefO|?eE9O zS3-QPQeDROr396kbZl4;8F8h{Py9kZMI&fWF!akxD=4$&LDLY*0^OT4O(a`xQwD#V)UT5nZO^UZ;-{#5qWWN&!D zdM20q^@7~9U+qb~EKL|+6NZ@scoGzX)1F@d*Zk56ag#_Ue!cos^}Db=;sW*c8S~<$ zEBYl;@VVU=1!Z^~>pu8c0R^Fdp>+^%P#-3CzcHC1?E9IcUyhAW^athR?$&DC)G(CR zAIcaE(*>&kxLnZzeHRuW;cCMaw>xWV`MAtdbbLFM&dMl8*FUaE00&4mHk%d_H23%T zYAV?_yBgP$8O14@EMxS{Hy+!f^-9i;w7f3{x z0@_m<_~K2x54$Mx#YfbQP}GPn2*6zXD0a=!XY z>jZMzMFTqQJf*7VRdevkj59-5DVQq(r2JQ#kQOHw9RrR03FC@JBWpG#S%0Hb3wsbq z0Z|Ma4OL7WmBV3?%qnJNA$v1>sggG3)dWE<`3>Dz(XC<`b|ksDXI;m>kB|ztS#-ZJ z8*&|5HgP{W`eus|h=JkpG8BA@U*}+$;h1h$Pja4J$A-CRpm!bgPg48gCS4I%cYMC^c5ZTh~gwo?|ldu^?F*q@N;kmSXmz`Sa)4M4YZhjoy*--4m%Y>|0Pd|x_aisG{ zQ^)fsSz{Z_6`Cv+?pTOBt5N@z0!UX}{JsNKD;-^8YODaX_(mMZ9;dS}11L%fzYvVNP-#-l+v5uQ zI=$cl4_}%`=-n8P6U6=!*}t@ogCFxlsm&mIE?;~m(r!l&6LT#11Qm`5+y1*|MN1w_ z{3fq!#9UCpyb_i370mY7Tj|qxHHpN224Md%$?3Y4^MDB0h-C0;&bsY02NARfyDS0t0^yvN~iyo zCL6QB^*k+Mwjj>zG$pLuEqW2AZsH1~1{Si! zwDqpHMWF^OmLg7(4YMO}UGDYXayAZLA}bc@ot97AHJ)(NDW9hCP-X`nX{s$rlIEjf z6{#Ya-+wzV%0)LmrT-+Jv#=F34;t_rRW}Y7!3iv@M|~!9>wqdVbid8LQBaB$>)|%f zmR@Uj=sv`D%)NRe?%Tg`W70;;$KcaMcEy8MKTWkR!BoJ#pV&l>nIV&mX8cn9x-TJD8zbnqH)GmQAe}^5gXT1+LeM><_ZWj z!5~K(-MzoUvW&nTemD@<-#dyut5*4S>3GH97Kp;Mugh1Mz3Wzye-mi2>8?_@MQZKxA7J8wAu}pPOL3dU=vCijbVqW zHa?*cEYIkIh-wFp{rZOuH`gl+$o6}1!VmHr!z!z{L88#I0kcfO%hGCEKd+|1scO#{ zAd={_e~fE;PIjsu?ZiF+9~1TsI)*h=;ULuFUFGRBv=WrCXS9pG!8YQv9i<^;D7YwCoA@aJ%$Xo zZmGp#^E^nk?|4(b9)%r5Q1uM9I}(;TL6G?_CkJ_Y^7F6P#ic8^oy*e9lvkeb+gaU@ z&gU=_@h#`4BdNuPCBv&|Q7}>jv2UaMN>LM77sS0-VPiPAw~8VezU159g!6w6BrflR zy#Awsdu_7oynddSq0)X9w|=YW-sk{b+!#D(J3?}HETu`IqC!;hBxN-zaK$}oSAKS3 zDSN!&!MtWteII7w+i+n=p}%jZB#Oc;R31t@=q+*a^6O|4T@YCk6xQ@}xf1enRqrOI zy~~-~OmCY>V6G8dkt_nKo7}G8`c^BAa?ln?g8wAbU>e|si?9~^Hk`Xg?j1MbIiJ*n z>h<4!fYBT=3qf7%lIPAY+NDyb7m{!4do^f=%m&b2CDt{gro5*fIPi+I;=1DH-H62@5w(ixjL5 z1l6Y7!rFX@3voSdb52|L`!N^_x028l7^7ByHp|L8!@601yY3h-0*Ewt;UGK5<$g;+ z&USt0Dxfi|4U($Nfa5~tc(z-#eQim$+#xJ1u~(x?{^xSMtF6y^uy#1XU2lq)a)nB2 zN=)k~a*!^fzxWlHBDpXY7Z_4-x$mCtgNIIEL$>6iao$|p?cSAN`B#h0W&AplwD7x5 zEQ`a?Sa3^xo`-)~m9oszmC7~(Md+xm?0da5afTH&s{~02HOMnoboK>sf+$?wlwHG7 z6OvhHpS$)JB8xd}ZlAw9ktOwp;8*VrCBX4ug0YF;dAXIw@8D`ZepMV8HLMDH`Tb&* z6T&&<{9|(F#)uv_rv=zNC`O?6D{CRNN`@~C6=3pXS!E#r`e*;MZLHN4De0x+pA+_5 zmA%K|5*H%pb!DIzJVU0m==ghT(&xX6eZKU4eeH;q!%C6i7zLYKA_g(@yH9Fm>w#;j z&@7J8RK=IA>fd8l54yh6->YXMR#mu93%~P`ziSeVV8}EGNEZ>*2lMCKBalUM@+VJ{ zSA{p)DM{>)5BAv@s`U}X1xvK%h8Q$&GW_Ku`d_-$Wg#=Hy$KgYMSxvoljMUfb z{M}>G(C2H|Xz%odkr42okD zeOc+)-76~NDc`z}lgqsqVqtO~o{0thK$?3^yOKl6Zf;OFN8)i>-b`o^p?agUj5?!* z;0X8FpWHu7i|-MRqjaU2i4Noh&AW{)w-iF85(3d3PF22|1b6B%xzRAMuna%m)}~`n zbbA{gVGw}asy!jK4P6~FeR4m7w)dXyUdYzFm5K4^cmW$!&RY7BKX^D#(!A zVR|?u7M!pQ(w!1DfQRu$D8oeze|U%nikZ~qPw_An$gS5^82%hD9wv;u{?aozc#9{> zFe84?2@+2(`i*lM(B<0y_!1uZ-?fdu01bgRKE=%QV+&P$59;@%8j|}=Q5`4suft`H z4C)NG`|)Ven@8avul&{=DWj~TEBrOG{5d@rueKgMWg9O^qUqi@NuWl+$Gt`QdF0rd zZ2VzT^KejvTMO9Kvmhv$&`;ho*X7hKMUqL>V#jzY%$%3d1op7rv@2`l&_<$B)m@ZH z%URHI>ED1G17P3ev0ibN0%A)Wse=Q`_2hD8V=xM0UWOF|z_t|zb3;#*)v_ zER=0p_hU+61ojc|UM_27Rjq9!qBM>^oqZtSJoSIdkXKDgBG<+y6N zMMtZjm4ko>BVaD$BAyxEKf5Xj_-lfQicK%zGwSTt3|=!()~quxJgz7qu~*%JOEGQm z;~IwBw1=Q5C3_l|sLDc$>_{gxw|`lWHL{(FSUUj$o}7gh<>>=@FZX#thgT^t;h^cP z>hKf0joaM)-dHhQ=X0QH2%FV-g64eGRr^lvt;X&)VAVRhE_A$DnS%_zVf(7e?sb39 zS{W(4o?1Xmr-bY;Ug)w-VR>`5$xxZNDtqeK#WL68s^5g@c-?+38}PEvg5y`y-@iq>0Q#FUaY3I6*0b3H$UdLVYLLY<7WN7?p^croUlYp(7JHT{mMQ9TdQb|gmm#oa)5`qe2Dd5S9jS*ZI z_0^)9NM?DV7mTUfQjHV={O%Kl4s^ePGs7(K-|NrGS3#N?^qVP!6Htvy+2H0>kX;dJ z9j%~iqp@F>6C7W?QBtDh4%w40c9PPY&v5CRr5uI&Hh3TDsBR4ItuGKV;iadE-aN6oPkcGQ>WK zAj;RRGJ-lEaR+{${zdp+85(Bh>s*xpjSYF-avj%94XyB)C=8FY1J)vOTcN+Jz zH}rhu^9ojA#|;Kwthr!&SZEihuWUS}uWQ7?3e{Z_@Q{rNN1-p6qEe+AuZ?L2`zh@| zI5s=qVYf1W0coWLZ48fnR#tIINNV|UB{gaG;>RC!4~q##;*43sp$cp%7xb$_Efa^n zbI+BCOSd=oBIo17ghClsJ@=GZl0-}26tl0&fMt?Uzs}L;#9vFH52FL;E%F6k*S#nRUMeeR$&rWj=gMmh7@G>ER0|s6Ci*cj2NP+Th=o@azrTVx z+wA~lB`|#5z!qn@b9KAC6CFc#pmLs+sS7VL)**XMIE88VXTLB($w4ZL(XhpA0xkZ` z73!-yYF6IE;6TUEy=ydBbls+;PF`R}t=#aFzNLEbkIGT_G)bw%2D+UwJL)ZEO;(ga zW?Fo*n?#2sm0A1es847zJN|38igL^?88FdtyCr#x*3%R1(7h)wloeSpdjR-igLul< zffH}1&Bg-VJD2EQb6pZ;**bGsqdce4H}%uMyI73Og?5H35IFp5k}Iz`@7E^g>K1vV zDFRTHVf>G)OKaRPMYmk^-;&-AJZkizwuFmV$7oCtdk%b08E#H{=R3!pm&@i0`x$=} z4XVkWLLQ^s{5AAdfQ?e>z@1HpNB#sp&i}5)klva&s?Z1nxi{|xIp>i*Lrdi-Q#*?z zNa)84aOAcuT};KR?ppQ*;<4#V!$_95Xoa7jg@~ovWpmDRUZ!IV=Ug&-9yL0CAp~);1cK8=*N}A8+?vEay+vl_%kx6&E_Y7EW$>yTbvvBL-4bKVJQhPHe ze*se~+{qw0gf37?r0of$uonpISgs%DC0Xii8`~&1oQ6%3RnLy#wf0_864R(D%`KrX zZT)cU2`uKy2XuPPF=qOd(rN>ueb$(b&-I;|hOt=^7Sh}X6H&)=nl^DSaA^VyD5#>0 zIvr;uo=NkE4%}#Z^$Jp|ve;ak$3|__&3!}VuJlOtdN%0jf}TOR&|H3t%lsAwhiI60~r*;+ctTQr>r{MZkd^PoJw4Xn^LJckit8#iUBV~`1D8y0b51~sSu zt5Cu>grXf2(A#?|1t14WQjh%p@3Q2JV!q9PZ8>c%!3l+NO&D)iSgN(OX!Y>Of=-mn z)I4h*{B&Fe$h4&lwWITQsvaFjuB?fzlH6}@d99E&;WM#Fd3_NDOqhUcl7wPoPvDs( zAElY|*QIA>5fY!&O|(~(=f4KH)#C~Fw$5PvBI5~g#DLQ&zQ!_$1wx5O6gM$Rh3<7V zQ*2Ew2+!;-yMWa8p9THS`=iEpMrkhZv~EtH-K z5P|&-^Zy=>l6&Z*P0%cQ^KOWvHfkTJj0{Z(YN^f@YQlz!&wi~RSs)kZ+rwCRlWayFd7PhLKA@1$+d@rwGZZnvq--fRX|3^MWy`1T6Z zHr^|r;Gy=>YqGq8*EC#vy-Q|D-xgKRtx5icz5d}Yc0VrQ4H95B$f-P_S=0*S?2!f(Za|7cE|HlR!huxKJ)?1G8NlC;S`3`JS~&qy=*utnn-rrsz&lr7Xl#;>rH z|Dx6W+*8UnXDb+eEsT!w3;?PJM@9bSVTmy*5t&l!9b?w3gRf&Z09-QTpdKh68re0u z;Rpm|F3(%9kl&ZPi-8Y2K9ht#+Emq#mBfzc`jxfJB1HRF+}{GPu#krPg!n zbN9Gai+tS)R`g8)XsI$JTmW0H7a6hzfhap4z7fzt0F?1pkeL}ahO$W2o4vBP5N7$o z@r~c(DTIBM$alL3e&;T5z>^&qcE9uf%0}E0z==BYgwjd)N1x*c6VL;090GgiOwrFS z^~u*xb4;yI+lT|>fDv1;Y6zMz%yD5w>@eRxxxw|S4Mkxhd_iaG0CWW^xAbL4v`7U> zA96!8ng0Jistv(7hw(D3=T5;%IJR-ryY+NV=u}LQXDNC(1JY5DB*)nB3?@(>lkSrOeh9EoL; zuclhJOompv_^C32OO2Q=xoEt`4U4TBg#$`xCt?4 z{zEG1lK^TRuaozRH+$9*(9oAjnVr%?wfxOXrx0g`f7^acjF8Z&dT!%aEvQnuqen(R)*T zu*sFGU0$*!E$8|TX$FC_v7ii4iblA3qNPRc3IUWC%g}H%nzc&xwPv%)BD23qVSZ|J z1@u7WrBn8WEXOJCNETtl?;fEsO~4a8-V0e={-XK&2d~D$%x-*>*?%I>XO1GB%)6Eq zD=nyO=N+0y8o|mBR5y8W(-Vf@AS6OO2Xi#-OAgL+8=5=*hsWcYpy|tXpFe#Gc{qDt zfSf9cb>%&ObdOSx<$}@Xx|I0TJorlw!#KGtAl;dn&`Mt7khjxi^d=@orRzWzSluM3;3>C{Gz>Jw z;YG_BCH@o-h)U62FPoouUg!WoT>J(1MY56(&3|)Zw=PfpnLUwt%BGkPN*Ezoey*(| z+45h~++oR3|FT)9+b+=hbbE&H;8o*1oQ0W1RB zGREUdV*=U=T9o*F&3Hb!D!1Z(Y0WAAHicX-$tX<(LLFJ(} zt|g)7SN}#Tsqzo^Jz36|dS~YR)ZH4Oq!jF$0A0S`tlwFLh%^2&&ydb@maLhjsT+XU zW;cf-*0~L(Va{_P=KxxSyBF$Fi0ZQ$NejWld2}Aj4*afC#|&BMiTm$}($ZdN9j4`Mm;wH9!#aR% zKfU0IxcCM(*@p9f3tdIsPwzmSVss#pxCrD!%55m<0kli|s!lHF^fQ#RbUUDR>&;l@2BK~5<{Z+p4fj!|$H+0`$vlk?wa>MC$} zp~v)sa?}8>+WWpo*vfl$XkJooz=L%4o7LzdTn9`bysosnf)&2fGd!RHp0hD(sl*|8 z%-`D{da}CWysjgD3MemnobBgjEdHFlnKjb6$7#*HIo~t@Hq0vK(lLpOlQjH9 zUIGWC>Tu3Hb1#aZuyD)NtIAN~JfSmIZ^Z6FB|?z~hIZKxa?Ss@nQMIdeo(=(bHNsG zQw+n_A$uH;2<&I@jal}<8t7dq?=`n5l|fV%>U(zO0Z?M5x50S%39#P>P9M1216+&i zAIiOF&MN0=Rnqj1Avu?NIxACb-Mg%+M3Sk5TIlp|Ujyk(rXH`J9sjkb52j4uuP{_d z_p=@=Zvau&w)@CpuzOOY+kzd>hpit^H5jUEAfdFQ`V)~J^NkUzU9?u6hG7x}a#)#0r1)Z9Z&k-}T#vsa2QP3aqUd~WTH>7d8sI|S+!Ch*0W zdF5SrZ}cd2=T99tI7Q3InNsA=6~afO5V=|3R~h zYW~aHY?W=W93LL)Q?)yV$0Ein7;ZQ-5*ADtFqtA7^q;Cu=o?rj2Pg|Bt7mi5o8~6L zsT@hIJOf*0$Fh(O2Bh;ksW{g^%jE*F{a-Q*k$IMQ_j^cfH);;NnD0BFh#=q_MV(<+ zkJZb7hg6eQxj;91?AEuP#%1Q&Kd$fPxT^tdLFk22NPN^U#RD?J5|q7(<3C?5nJHUp zljaXELkm?ATg`Y2-ud+-KdDH^xSZSlm7>y1HjwmqqM1oyBWOVtnx#4C2(M)++Q zD?{v^QkE(y=C6zI$IuKj7<>>N%jh$zyK-*US|rc$F14zM0rzg75FnUFw#)Q^)-M`O z=9{B?p-J}Db!|p~x^KamcCtuFjDR9{wZo_-1q%niODjd^RCx(8=n=)es0=v$uenJv zp`$|CDcs?>k0lO5Je1apC!x6w6x~5K_PG^+vo)`;o{TyBOT_K=3RvzCzxClTz4dqIzcA)0d_0Csh1dodwy>M;Zz76Zze?0XuM?B%eV3}$A}i;0y9WoCxx3Q2=D z2g&i*UjPt-%tp3sL44n;jRyc@X#3o#sb5hJlGv}cVrjSyr=k^M4d(Js+EMmmJp(qJ zt9bAwKC3* z6)(6fvfMdItdr9S+&osDVW*E#5ePh!wdI$>*AD$oCeDF+oF_2Fo8LPJR-SaZ4{gC~ zid6fVG~M>+xA;0Z)q`j0W=dIM<<$HWBw(9iagO5@0)Ee5a!Fyi^W|+NuBk-DBeI~Y zX2*C(gA6u^o;=N6Xsf@pi^!oSO>9?KcDylN>c3UfLW_R$_nd}DOuMvaJ%KA^rN$*Hntpx%~^%N^05S{zsD%rf=K{+cyuiLmbrYcMm0=x?QeSdUeCGj|8((( zsl}1SnUptKvgY)|rcdbRol9TuL%o&bnaG$erd+!eji%49hCUcDW{#tzygW;(%2eRQ z7oVd`fKRH73UHUM&*vwCESjuS$e zV{^6KwRmdY)k1ztOpF-cs1@4yav^`G2(U?ycgnQ?g;L@auj*~Wm}`l+6!)ku@)*|UEs(*E7|#`_$yY>6(Xn>jWibgK2-sk<+0l`sxq zL3>LlkmWX->bs6r6ihMsez!l&oR51pv9La)g$=T@t4*O)?7TUOVNp_*=d3Rhrx$yX*u}n!yso{5m zHm5;uzh@&ni~lE<%BRJrd}(O&f{|IJF3tYHbT-Ii}1c3>Y?Te(xe8W2x}c z(t>^!8ghC&gSazhX{f&JR#VA^mpnne_wMR~jExmOID5&L%W0-!(bdi#j{CYBEFq zad!^-KjD7bBif5*lD8U)sh{^0Z>BQNA{Oyp3{&r+N6Hl8C2v`vQ!NX$DdT8sGJ$?f zZ$f_F0d^b7qFXk1H0&mSit0&GKefgp&zvqvj4v?bZj3Vl%U4l+psYWaM(Coj*ud&2nU zH19a8?sAt_|3Q(TB*QlspVkP7RkJz<4tuk`C}MT1a9@$l`{pp(vWQh%IeSC4ibAWU zPd~F8rV1l^Tdu6o!7c2fyv%=(9x(9F8&f8T7DYZ3Zd_aG2&EGzIAfw|K=hviqA+P> z6CUf(TI6@mU(bPBWK|um@K;epvj8r1n&+`aDO21T<;@!i)pcEZ-MXWtuw4CM^kjeV z0pqH**E7i;xr7f{8?4*zCFk_+HT%OzH9zFV7Xsr~Q9d?1xh+@mU|s}Jv$8MWDG=$T zLIvKqoYv5y90Q7?#{)5LaL7uKvu-?NL4F$hyn|=Z{K)KIr%&$KiT52W6jX5rb8Sa1 zm`vT6Eu_&95S^FH71MnvH6!Lyhpmk+Wpx+L2;2M)b%ik;*r#W9${)7MDD^)zl&+X= z5nRDF`*S+rdEIYt79#fOj+@cNeyYEyn}OxbVg0%=zR|<&kx<7dVA#5~%Xj)iRM`J? za*oHrhcPS7*X5Retf}n5P!+_mX(U9c8Q0G-YZwOz*zADI7!oqxLL6?8_&rKSv?Rp7 zvYhA1Aex1n+?o+e`ft1qOucynK7k~UGU)fu6ZaxMSp?=~OFP8=nL|Gs(V|3BDTk)0 zp}VlcQ3-}-?J)*`o8YID9?znzjTM3}@;N@b8j3Mrt&(b>=xZ|pAJ1!kH<_uvnRTfw zcrQa`9e?$^=Uc_U*iUA|6y>^1Gr3v8b?1LI@Ae`fw=ZiopBOB>Pz5XRRRpiG<;+@n zf1O0Cjg7-EgjP}K%}+vBaJj-GmBOHfmLG}xDU;@mSnJmd!tef-2+v|V0mcbSj!DqO zUz)mF*oU{)SZFpHaM6+S<>gNZ=ggsQFLuA(e0czDN->%J(kB<9vL zq=mOFKMG+8n~~I=5iR<6gobFJzAM(xUNMg^?WrxnlXSljAC>#Vs7x1aViEQ1t zF4q9P!$XnK|ABZJqRqUiuXOqfZ&Tr_N6t+jEgsZsECLJLc^ZDRzm6$`Y7KQNZ@8v4 zDS^uZlWOQf#kO`E(lq`*G&8Z0&Q>%h|8vl9=s+K`^TNT2^#IvuuH^jGN(G0P&;r80 zg(1_9uY=9tieC9d{Wv5IWUzRH3x4`CEF!Y`&42!HO2vTt0p6c9jbA?$yW_7WU5&Ra zsUDxSY!QErl}u;s;m6)bFGp1ZL7_@};N$CiH*0 za|W6Xd+De@lcib83GH{$X z9g07tg8ik+Mc4%;9zel=(!T~U{9#bQoZ7{8ar1cSrq74bjExsh7%p+fe?;@3(IW7b zl3N292=1d1w`Oib26FiY|CCx10zd}J-FktY#mx)7e%Vh1=KAuf1QeK{O#CbnH1%Uu zLK~`?{fw7c@bH>HJYq^_gz`}pw0dGS*{W0?)@#`A{bF`Ow zXUhNgR{L_XYb~MMzGKYfQF?tcQrl$$opfheyr1ru96k8lH+ lqdz_S|M1uU^#lqkrfi_`HcFxcz5)zVR?v{IerXZ>{{ZQ0AzlCg literal 0 HcmV?d00001 diff --git a/images/screenshots/add-artifact-release.png b/images/screenshots/add-artifact-release.png new file mode 100644 index 0000000000000000000000000000000000000000..764d001d619f289fb85e4278256254e348ab18ca GIT binary patch literal 19037 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 literal 0 HcmV?d00001 diff --git a/images/screenshots/add-endpoint.png b/images/screenshots/add-endpoint.png new file mode 100644 index 0000000000000000000000000000000000000000..ffea77d977135b6eb3e88e7ace2e2e4bc9bdcf63 GIT binary patch literal 7983 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 literal 0 HcmV?d00001 diff --git a/images/screenshots/add-task-build.png b/images/screenshots/add-task-build.png new file mode 100644 index 0000000000000000000000000000000000000000..533b330c9ac7833474723c8514232c08588fa360 GIT binary patch literal 14347 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 literal 0 HcmV?d00001 diff --git a/images/screenshots/browse-artifact.png b/images/screenshots/browse-artifact.png new file mode 100644 index 0000000000000000000000000000000000000000..d8324840b9b61ae346a98337599a1a76baa6fb4a GIT binary patch literal 23668 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 S{G0a*BQ7i>RPjw0`hNiJ$|L#! literal 0 HcmV?d00001 diff --git a/images/screenshots/create-release.png b/images/screenshots/create-release.png new file mode 100644 index 0000000000000000000000000000000000000000..1354f95229d2acbc9c4610f7247f1c4c3819a02e GIT binary patch literal 11147 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 literal 0 HcmV?d00001 diff --git a/images/screenshots/new-gitlab-endpoint.png b/images/screenshots/new-gitlab-endpoint.png new file mode 100644 index 0000000000000000000000000000000000000000..b8512531d31d39e77aa96c3f3850b9c6a466751a GIT binary patch literal 10159 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 L%1ac9>-qi=2.2.7 <3" + } + }, + "abbrev": { + "version": "1.1.1", + "bundled": true + }, + "agent-base": { + "version": "4.2.0", + "bundled": true, + "requires": { + "es6-promisify": "^5.0.0" + } + }, + "agentkeepalive": { + "version": "3.4.1", + "bundled": true, + "requires": { + "humanize-ms": "^1.2.1" + } + }, + "ajv": { + "version": "5.5.2", + "bundled": true, + "requires": { + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" + } + }, + "ansi-align": { + "version": "2.0.0", + "bundled": true, + "requires": { + "string-width": "^2.0.0" + } + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true + }, + "ansi-styles": { + "version": "3.2.1", + "bundled": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "ansicolors": { + "version": "0.3.2", + "bundled": true + }, + "ansistyles": { + "version": "0.1.3", + "bundled": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true + }, + "archy": { + "version": "1.0.0", + "bundled": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "asap": { + "version": "2.0.6", + "bundled": true + }, + "asn1": { + "version": "0.2.3", + "bundled": true + }, + "assert-plus": { + "version": "1.0.0", + "bundled": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true + }, + "aws-sign2": { + "version": "0.7.0", + "bundled": true + }, + "aws4": { + "version": "1.7.0", + "bundled": true + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "bundled": true, + "optional": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "bin-links": { + "version": "1.1.2", + "bundled": true, + "requires": { + "bluebird": "^3.5.0", + "cmd-shim": "^2.0.2", + "gentle-fs": "^2.0.0", + "graceful-fs": "^4.1.11", + "write-file-atomic": "^2.3.0" + } + }, + "block-stream": { + "version": "0.0.9", + "bundled": true, + "requires": { + "inherits": "~2.0.0" + } + }, + "bluebird": { + "version": "3.5.1", + "bundled": true + }, + "boxen": { + "version": "1.3.0", + "bundled": true, + "requires": { + "ansi-align": "^2.0.0", + "camelcase": "^4.0.0", + "chalk": "^2.0.1", + "cli-boxes": "^1.0.0", + "string-width": "^2.0.0", + "term-size": "^1.2.0", + "widest-line": "^2.0.0" + } + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "buffer-from": { + "version": "1.0.0", + "bundled": true + }, + "builtin-modules": { + "version": "1.1.1", + "bundled": true + }, + "builtins": { + "version": "1.0.3", + "bundled": true + }, + "byline": { + "version": "5.0.0", + "bundled": true + }, + "byte-size": { + "version": "4.0.3", + "bundled": true + }, + "cacache": { + "version": "11.1.0", + "bundled": true, + "requires": { + "bluebird": "^3.5.1", + "chownr": "^1.0.1", + "figgy-pudding": "^3.1.0", + "glob": "^7.1.2", + "graceful-fs": "^4.1.11", + "lru-cache": "^4.1.3", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.2", + "ssri": "^6.0.0", + "unique-filename": "^1.1.0", + "y18n": "^4.0.0" + } + }, + "call-limit": { + "version": "1.1.0", + "bundled": true + }, + "camelcase": { + "version": "4.1.0", + "bundled": true + }, + "capture-stack-trace": { + "version": "1.0.0", + "bundled": true + }, + "caseless": { + "version": "0.12.0", + "bundled": true + }, + "chalk": { + "version": "2.4.1", + "bundled": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chownr": { + "version": "1.0.1", + "bundled": true + }, + "ci-info": { + "version": "1.1.3", + "bundled": true + }, + "cidr-regex": { + "version": "2.0.9", + "bundled": true, + "requires": { + "ip-regex": "^2.1.0" + } + }, + "cli-boxes": { + "version": "1.0.0", + "bundled": true + }, + "cli-columns": { + "version": "3.1.2", + "bundled": true, + "requires": { + "string-width": "^2.0.0", + "strip-ansi": "^3.0.1" + } + }, + "cli-table3": { + "version": "0.5.0", + "bundled": true, + "requires": { + "colors": "^1.1.2", + "object-assign": "^4.1.0", + "string-width": "^2.1.1" + } + }, + "cliui": { + "version": "4.1.0", + "bundled": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "clone": { + "version": "1.0.4", + "bundled": true + }, + "cmd-shim": { + "version": "2.0.2", + "bundled": true, + "requires": { + "graceful-fs": "^4.1.2", + "mkdirp": "~0.5.0" + } + }, + "co": { + "version": "4.6.0", + "bundled": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true + }, + "color-convert": { + "version": "1.9.1", + "bundled": true, + "requires": { + "color-name": "^1.1.1" + } + }, + "color-name": { + "version": "1.1.3", + "bundled": true + }, + "colors": { + "version": "1.1.2", + "bundled": true, + "optional": true + }, + "columnify": { + "version": "1.5.4", + "bundled": true, + "requires": { + "strip-ansi": "^3.0.0", + "wcwidth": "^1.0.0" + } + }, + "combined-stream": { + "version": "1.0.6", + "bundled": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "bundled": true + }, + "concat-stream": { + "version": "1.6.2", + "bundled": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "config-chain": { + "version": "1.1.11", + "bundled": true, + "requires": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "configstore": { + "version": "3.1.2", + "bundled": true, + "requires": { + "dot-prop": "^4.1.0", + "graceful-fs": "^4.1.2", + "make-dir": "^1.0.0", + "unique-string": "^1.0.0", + "write-file-atomic": "^2.0.0", + "xdg-basedir": "^3.0.0" + } + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true + }, + "copy-concurrently": { + "version": "1.0.5", + "bundled": true, + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + }, + "dependencies": { + "iferr": { + "version": "0.1.5", + "bundled": true + } + } + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true + }, + "create-error-class": { + "version": "3.0.2", + "bundled": true, + "requires": { + "capture-stack-trace": "^1.0.0" + } + }, + "cross-spawn": { + "version": "5.1.0", + "bundled": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "crypto-random-string": { + "version": "1.0.0", + "bundled": true + }, + "cyclist": { + "version": "0.2.2", + "bundled": true + }, + "dashdash": { + "version": "1.14.1", + "bundled": true, + "requires": { + "assert-plus": "^1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true + } + } + }, + "debug": { + "version": "3.1.0", + "bundled": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "bundled": true + } + } + }, + "debuglog": { + "version": "1.0.1", + "bundled": true + }, + "decamelize": { + "version": "1.2.0", + "bundled": true + }, + "decode-uri-component": { + "version": "0.2.0", + "bundled": true + }, + "deep-extend": { + "version": "0.5.1", + "bundled": true + }, + "defaults": { + "version": "1.0.3", + "bundled": true, + "requires": { + "clone": "^1.0.2" + } + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true + }, + "detect-indent": { + "version": "5.0.0", + "bundled": true + }, + "detect-newline": { + "version": "2.1.0", + "bundled": true + }, + "dezalgo": { + "version": "1.0.3", + "bundled": true, + "requires": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, + "dot-prop": { + "version": "4.2.0", + "bundled": true, + "requires": { + "is-obj": "^1.0.0" + } + }, + "dotenv": { + "version": "5.0.1", + "bundled": true + }, + "duplexer3": { + "version": "0.1.4", + "bundled": true + }, + "duplexify": { + "version": "3.6.0", + "bundled": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "ecc-jsbn": { + "version": "0.1.1", + "bundled": true, + "optional": true, + "requires": { + "jsbn": "~0.1.0" + } + }, + "editor": { + "version": "1.0.0", + "bundled": true + }, + "encoding": { + "version": "0.1.12", + "bundled": true, + "requires": { + "iconv-lite": "~0.4.13" + } + }, + "end-of-stream": { + "version": "1.4.1", + "bundled": true, + "requires": { + "once": "^1.4.0" + } + }, + "err-code": { + "version": "1.1.2", + "bundled": true + }, + "errno": { + "version": "0.1.7", + "bundled": true, + "requires": { + "prr": "~1.0.1" + } + }, + "es6-promise": { + "version": "4.2.4", + "bundled": true + }, + "es6-promisify": { + "version": "5.0.0", + "bundled": true, + "requires": { + "es6-promise": "^4.0.3" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "bundled": true + }, + "execa": { + "version": "0.7.0", + "bundled": true, + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.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" + } + }, + "extend": { + "version": "3.0.1", + "bundled": true + }, + "extsprintf": { + "version": "1.3.0", + "bundled": true + }, + "fast-deep-equal": { + "version": "1.1.0", + "bundled": true + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "bundled": true + }, + "figgy-pudding": { + "version": "3.2.0", + "bundled": true + }, + "find-npm-prefix": { + "version": "1.0.2", + "bundled": true + }, + "find-up": { + "version": "2.1.0", + "bundled": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "flush-write-stream": { + "version": "1.0.3", + "bundled": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.4" + } + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true + }, + "form-data": { + "version": "2.3.2", + "bundled": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "1.0.6", + "mime-types": "^2.1.12" + } + }, + "from2": { + "version": "2.3.0", + "bundled": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs-vacuum": { + "version": "1.2.10", + "bundled": true, + "requires": { + "graceful-fs": "^4.1.2", + "path-is-inside": "^1.0.1", + "rimraf": "^2.5.2" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "bundled": true, + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + }, + "dependencies": { + "iferr": { + "version": "0.1.5", + "bundled": true + } + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true + }, + "fstream": { + "version": "1.0.11", + "bundled": true, + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + } + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "genfun": { + "version": "4.0.1", + "bundled": true + }, + "gentle-fs": { + "version": "2.0.1", + "bundled": true, + "requires": { + "aproba": "^1.1.2", + "fs-vacuum": "^1.2.10", + "graceful-fs": "^4.1.11", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "path-is-inside": "^1.0.2", + "read-cmd-shim": "^1.0.1", + "slide": "^1.1.6" + }, + "dependencies": { + "iferr": { + "version": "0.1.5", + "bundled": true + } + } + }, + "get-caller-file": { + "version": "1.0.2", + "bundled": true + }, + "get-stream": { + "version": "3.0.0", + "bundled": true + }, + "getpass": { + "version": "0.1.7", + "bundled": true, + "requires": { + "assert-plus": "^1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true + } + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "global-dirs": { + "version": "0.1.1", + "bundled": true, + "requires": { + "ini": "^1.3.4" + } + }, + "got": { + "version": "6.7.1", + "bundled": true, + "requires": { + "create-error-class": "^3.0.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "is-redirect": "^1.0.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "lowercase-keys": "^1.0.0", + "safe-buffer": "^5.0.1", + "timed-out": "^4.0.0", + "unzip-response": "^2.0.1", + "url-parse-lax": "^1.0.0" + } + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true + }, + "har-schema": { + "version": "2.0.0", + "bundled": true + }, + "har-validator": { + "version": "5.0.3", + "bundled": true, + "requires": { + "ajv": "^5.1.0", + "har-schema": "^2.0.0" + } + }, + "has-flag": { + "version": "3.0.0", + "bundled": true + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true + }, + "hosted-git-info": { + "version": "2.7.1", + "bundled": true + }, + "http-cache-semantics": { + "version": "3.8.1", + "bundled": true + }, + "http-proxy-agent": { + "version": "2.1.0", + "bundled": true, + "requires": { + "agent-base": "4", + "debug": "3.1.0" + } + }, + "http-signature": { + "version": "1.2.0", + "bundled": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-proxy-agent": { + "version": "2.2.1", + "bundled": true, + "requires": { + "agent-base": "^4.1.0", + "debug": "^3.1.0" + } + }, + "humanize-ms": { + "version": "1.2.1", + "bundled": true, + "requires": { + "ms": "^2.0.0" + } + }, + "iconv-lite": { + "version": "0.4.23", + "bundled": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "iferr": { + "version": "1.0.2", + "bundled": true + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "import-lazy": { + "version": "2.1.0", + "bundled": true + }, + "imurmurhash": { + "version": "0.1.4", + "bundled": true + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true + }, + "ini": { + "version": "1.3.5", + "bundled": true + }, + "init-package-json": { + "version": "1.10.3", + "bundled": true, + "requires": { + "glob": "^7.1.1", + "npm-package-arg": "^4.0.0 || ^5.0.0 || ^6.0.0", + "promzard": "^0.3.0", + "read": "~1.0.1", + "read-package-json": "1 || 2", + "semver": "2.x || 3.x || 4 || 5", + "validate-npm-package-license": "^3.0.1", + "validate-npm-package-name": "^3.0.0" + } + }, + "invert-kv": { + "version": "1.0.0", + "bundled": true + }, + "ip": { + "version": "1.1.5", + "bundled": true + }, + "ip-regex": { + "version": "2.1.0", + "bundled": true + }, + "is-builtin-module": { + "version": "1.0.0", + "bundled": true, + "requires": { + "builtin-modules": "^1.0.0" + } + }, + "is-ci": { + "version": "1.1.0", + "bundled": true, + "requires": { + "ci-info": "^1.0.0" + } + }, + "is-cidr": { + "version": "2.0.6", + "bundled": true, + "requires": { + "cidr-regex": "^2.0.8" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-installed-globally": { + "version": "0.1.0", + "bundled": true, + "requires": { + "global-dirs": "^0.1.0", + "is-path-inside": "^1.0.0" + } + }, + "is-npm": { + "version": "1.0.0", + "bundled": true + }, + "is-obj": { + "version": "1.0.1", + "bundled": true + }, + "is-path-inside": { + "version": "1.0.1", + "bundled": true, + "requires": { + "path-is-inside": "^1.0.1" + } + }, + "is-redirect": { + "version": "1.0.0", + "bundled": true + }, + "is-retry-allowed": { + "version": "1.1.0", + "bundled": true + }, + "is-stream": { + "version": "1.1.0", + "bundled": true + }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true + }, + "isexe": { + "version": "2.0.0", + "bundled": true + }, + "isstream": { + "version": "0.1.2", + "bundled": true + }, + "jsbn": { + "version": "0.1.1", + "bundled": true, + "optional": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "bundled": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "bundled": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true + }, + "jsonparse": { + "version": "1.3.1", + "bundled": true + }, + "jsprim": { + "version": "1.4.1", + "bundled": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true + } + } + }, + "latest-version": { + "version": "3.1.0", + "bundled": true, + "requires": { + "package-json": "^4.0.0" + } + }, + "lazy-property": { + "version": "1.0.0", + "bundled": true + }, + "lcid": { + "version": "1.0.0", + "bundled": true, + "requires": { + "invert-kv": "^1.0.0" + } + }, + "libcipm": { + "version": "2.0.1", + "bundled": true, + "requires": { + "bin-links": "^1.1.2", + "bluebird": "^3.5.1", + "find-npm-prefix": "^1.0.2", + "graceful-fs": "^4.1.11", + "lock-verify": "^2.0.2", + "mkdirp": "^0.5.1", + "npm-lifecycle": "^2.0.3", + "npm-logical-tree": "^1.2.1", + "npm-package-arg": "^6.1.0", + "pacote": "^8.1.6", + "protoduck": "^5.0.0", + "read-package-json": "^2.0.13", + "rimraf": "^2.6.2", + "worker-farm": "^1.6.0" + } + }, + "libnpmhook": { + "version": "4.0.1", + "bundled": true, + "requires": { + "figgy-pudding": "^3.1.0", + "npm-registry-fetch": "^3.0.0" + }, + "dependencies": { + "npm-registry-fetch": { + "version": "3.1.1", + "bundled": true, + "requires": { + "bluebird": "^3.5.1", + "figgy-pudding": "^3.1.0", + "lru-cache": "^4.1.2", + "make-fetch-happen": "^4.0.0", + "npm-package-arg": "^6.0.0" + } + } + } + }, + "libnpx": { + "version": "10.2.0", + "bundled": true, + "requires": { + "dotenv": "^5.0.1", + "npm-package-arg": "^6.0.0", + "rimraf": "^2.6.2", + "safe-buffer": "^5.1.0", + "update-notifier": "^2.3.0", + "which": "^1.3.0", + "y18n": "^4.0.0", + "yargs": "^11.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "bundled": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "lock-verify": { + "version": "2.0.2", + "bundled": true, + "requires": { + "npm-package-arg": "^5.1.2 || 6", + "semver": "^5.4.1" + } + }, + "lockfile": { + "version": "1.0.4", + "bundled": true, + "requires": { + "signal-exit": "^3.0.2" + } + }, + "lodash._baseindexof": { + "version": "3.1.0", + "bundled": true + }, + "lodash._baseuniq": { + "version": "4.6.0", + "bundled": true, + "requires": { + "lodash._createset": "~4.0.0", + "lodash._root": "~3.0.0" + } + }, + "lodash._bindcallback": { + "version": "3.0.1", + "bundled": true + }, + "lodash._cacheindexof": { + "version": "3.0.2", + "bundled": true + }, + "lodash._createcache": { + "version": "3.1.2", + "bundled": true, + "requires": { + "lodash._getnative": "^3.0.0" + } + }, + "lodash._createset": { + "version": "4.0.3", + "bundled": true + }, + "lodash._getnative": { + "version": "3.9.1", + "bundled": true + }, + "lodash._root": { + "version": "3.0.1", + "bundled": true + }, + "lodash.clonedeep": { + "version": "4.5.0", + "bundled": true + }, + "lodash.restparam": { + "version": "3.6.1", + "bundled": true + }, + "lodash.union": { + "version": "4.6.0", + "bundled": true + }, + "lodash.uniq": { + "version": "4.5.0", + "bundled": true + }, + "lodash.without": { + "version": "4.4.0", + "bundled": true + }, + "lowercase-keys": { + "version": "1.0.1", + "bundled": true + }, + "lru-cache": { + "version": "4.1.3", + "bundled": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "make-dir": { + "version": "1.3.0", + "bundled": true, + "requires": { + "pify": "^3.0.0" + } + }, + "make-fetch-happen": { + "version": "4.0.1", + "bundled": true, + "requires": { + "agentkeepalive": "^3.4.1", + "cacache": "^11.0.1", + "http-cache-semantics": "^3.8.1", + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^2.2.1", + "lru-cache": "^4.1.2", + "mississippi": "^3.0.0", + "node-fetch-npm": "^2.0.2", + "promise-retry": "^1.1.1", + "socks-proxy-agent": "^4.0.0", + "ssri": "^6.0.0" + } + }, + "meant": { + "version": "1.0.1", + "bundled": true + }, + "mem": { + "version": "1.1.0", + "bundled": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "mime-db": { + "version": "1.33.0", + "bundled": true + }, + "mime-types": { + "version": "2.1.18", + "bundled": true, + "requires": { + "mime-db": "~1.33.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "bundled": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true + }, + "minipass": { + "version": "2.3.3", + "bundled": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + }, + "dependencies": { + "yallist": { + "version": "3.0.2", + "bundled": true + } + } + }, + "minizlib": { + "version": "1.1.0", + "bundled": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mississippi": { + "version": "3.0.0", + "bundled": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "requires": { + "minimist": "0.0.8" + } + }, + "move-concurrently": { + "version": "1.0.1", + "bundled": true, + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, + "ms": { + "version": "2.1.1", + "bundled": true + }, + "mute-stream": { + "version": "0.0.7", + "bundled": true + }, + "node-fetch-npm": { + "version": "2.0.2", + "bundled": true, + "requires": { + "encoding": "^0.1.11", + "json-parse-better-errors": "^1.0.0", + "safe-buffer": "^5.1.1" + } + }, + "node-gyp": { + "version": "3.8.0", + "bundled": true, + "requires": { + "fstream": "^1.0.0", + "glob": "^7.0.3", + "graceful-fs": "^4.1.2", + "mkdirp": "^0.5.0", + "nopt": "2 || 3", + "npmlog": "0 || 1 || 2 || 3 || 4", + "osenv": "0", + "request": "^2.87.0", + "rimraf": "2", + "semver": "~5.3.0", + "tar": "^2.0.0", + "which": "1" + }, + "dependencies": { + "nopt": { + "version": "3.0.6", + "bundled": true, + "requires": { + "abbrev": "1" + } + }, + "semver": { + "version": "5.3.0", + "bundled": true + }, + "tar": { + "version": "2.2.1", + "bundled": true, + "requires": { + "block-stream": "*", + "fstream": "^1.0.2", + "inherits": "2" + } + } + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "normalize-package-data": { + "version": "2.4.0", + "bundled": true, + "requires": { + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "npm-audit-report": { + "version": "1.3.1", + "bundled": true, + "requires": { + "cli-table3": "^0.5.0", + "console-control-strings": "^1.1.0" + } + }, + "npm-bundled": { + "version": "1.0.3", + "bundled": true + }, + "npm-cache-filename": { + "version": "1.0.2", + "bundled": true + }, + "npm-install-checks": { + "version": "3.0.0", + "bundled": true, + "requires": { + "semver": "^2.3.0 || 3.x || 4 || 5" + } + }, + "npm-lifecycle": { + "version": "2.0.3", + "bundled": true, + "requires": { + "byline": "^5.0.0", + "graceful-fs": "^4.1.11", + "node-gyp": "^3.6.2", + "resolve-from": "^4.0.0", + "slide": "^1.1.6", + "uid-number": "0.0.6", + "umask": "^1.1.0", + "which": "^1.3.0" + } + }, + "npm-logical-tree": { + "version": "1.2.1", + "bundled": true + }, + "npm-package-arg": { + "version": "6.1.0", + "bundled": true, + "requires": { + "hosted-git-info": "^2.6.0", + "osenv": "^0.1.5", + "semver": "^5.5.0", + "validate-npm-package-name": "^3.0.0" + } + }, + "npm-packlist": { + "version": "1.1.10", + "bundled": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npm-pick-manifest": { + "version": "2.1.0", + "bundled": true, + "requires": { + "npm-package-arg": "^6.0.0", + "semver": "^5.4.1" + } + }, + "npm-profile": { + "version": "3.0.2", + "bundled": true, + "requires": { + "aproba": "^1.1.2 || 2", + "make-fetch-happen": "^2.5.0 || 3 || 4" + } + }, + "npm-registry-client": { + "version": "8.5.1", + "bundled": true, + "requires": { + "concat-stream": "^1.5.2", + "graceful-fs": "^4.1.6", + "normalize-package-data": "~1.0.1 || ^2.0.0", + "npm-package-arg": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0", + "npmlog": "2 || ^3.1.0 || ^4.0.0", + "once": "^1.3.3", + "request": "^2.74.0", + "retry": "^0.10.0", + "safe-buffer": "^5.1.1", + "semver": "2 >=2.2.1 || 3.x || 4 || 5", + "slide": "^1.1.3", + "ssri": "^5.2.4" + }, + "dependencies": { + "retry": { + "version": "0.10.1", + "bundled": true + }, + "ssri": { + "version": "5.3.0", + "bundled": true, + "requires": { + "safe-buffer": "^5.1.1" + } + } + } + }, + "npm-registry-fetch": { + "version": "1.1.0", + "bundled": true, + "requires": { + "bluebird": "^3.5.1", + "figgy-pudding": "^2.0.1", + "lru-cache": "^4.1.2", + "make-fetch-happen": "^3.0.0", + "npm-package-arg": "^6.0.0", + "safe-buffer": "^5.1.1" + }, + "dependencies": { + "cacache": { + "version": "10.0.4", + "bundled": true, + "requires": { + "bluebird": "^3.5.1", + "chownr": "^1.0.1", + "glob": "^7.1.2", + "graceful-fs": "^4.1.11", + "lru-cache": "^4.1.1", + "mississippi": "^2.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.2", + "ssri": "^5.2.4", + "unique-filename": "^1.1.0", + "y18n": "^4.0.0" + }, + "dependencies": { + "mississippi": { + "version": "2.0.0", + "bundled": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^2.0.1", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + } + } + }, + "figgy-pudding": { + "version": "2.0.1", + "bundled": true + }, + "make-fetch-happen": { + "version": "3.0.0", + "bundled": true, + "requires": { + "agentkeepalive": "^3.4.1", + "cacache": "^10.0.4", + "http-cache-semantics": "^3.8.1", + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^2.2.0", + "lru-cache": "^4.1.2", + "mississippi": "^3.0.0", + "node-fetch-npm": "^2.0.2", + "promise-retry": "^1.1.1", + "socks-proxy-agent": "^3.0.1", + "ssri": "^5.2.4" + } + }, + "pump": { + "version": "2.0.1", + "bundled": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "smart-buffer": { + "version": "1.1.15", + "bundled": true + }, + "socks": { + "version": "1.1.10", + "bundled": true, + "requires": { + "ip": "^1.1.4", + "smart-buffer": "^1.0.13" + } + }, + "socks-proxy-agent": { + "version": "3.0.1", + "bundled": true, + "requires": { + "agent-base": "^4.1.0", + "socks": "^1.1.10" + } + }, + "ssri": { + "version": "5.3.0", + "bundled": true, + "requires": { + "safe-buffer": "^5.1.1" + } + } + } + }, + "npm-run-path": { + "version": "2.0.2", + "bundled": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "npm-user-validate": { + "version": "1.0.0", + "bundled": true + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true + }, + "oauth-sign": { + "version": "0.8.2", + "bundled": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "requires": { + "wrappy": "1" + } + }, + "opener": { + "version": "1.4.3", + "bundled": true + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true + }, + "os-locale": { + "version": "2.1.0", + "bundled": true, + "requires": { + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "p-finally": { + "version": "1.0.0", + "bundled": true + }, + "p-limit": { + "version": "1.2.0", + "bundled": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "bundled": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "bundled": true + }, + "package-json": { + "version": "4.0.1", + "bundled": true, + "requires": { + "got": "^6.7.1", + "registry-auth-token": "^3.0.1", + "registry-url": "^3.0.3", + "semver": "^5.1.0" + } + }, + "pacote": { + "version": "8.1.6", + "bundled": true, + "requires": { + "bluebird": "^3.5.1", + "cacache": "^11.0.2", + "get-stream": "^3.0.0", + "glob": "^7.1.2", + "lru-cache": "^4.1.3", + "make-fetch-happen": "^4.0.1", + "minimatch": "^3.0.4", + "minipass": "^2.3.3", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "normalize-package-data": "^2.4.0", + "npm-package-arg": "^6.1.0", + "npm-packlist": "^1.1.10", + "npm-pick-manifest": "^2.1.0", + "osenv": "^0.1.5", + "promise-inflight": "^1.0.1", + "promise-retry": "^1.1.1", + "protoduck": "^5.0.0", + "rimraf": "^2.6.2", + "safe-buffer": "^5.1.2", + "semver": "^5.5.0", + "ssri": "^6.0.0", + "tar": "^4.4.3", + "unique-filename": "^1.1.0", + "which": "^1.3.0" + } + }, + "parallel-transform": { + "version": "1.1.0", + "bundled": true, + "requires": { + "cyclist": "~0.2.2", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "path-exists": { + "version": "3.0.0", + "bundled": true + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true + }, + "path-is-inside": { + "version": "1.0.2", + "bundled": true + }, + "path-key": { + "version": "2.0.1", + "bundled": true + }, + "performance-now": { + "version": "2.1.0", + "bundled": true + }, + "pify": { + "version": "3.0.0", + "bundled": true + }, + "prepend-http": { + "version": "1.0.4", + "bundled": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true + }, + "promise-inflight": { + "version": "1.0.1", + "bundled": true + }, + "promise-retry": { + "version": "1.1.1", + "bundled": true, + "requires": { + "err-code": "^1.0.0", + "retry": "^0.10.0" + }, + "dependencies": { + "retry": { + "version": "0.10.1", + "bundled": true + } + } + }, + "promzard": { + "version": "0.3.0", + "bundled": true, + "requires": { + "read": "1" + } + }, + "proto-list": { + "version": "1.2.4", + "bundled": true + }, + "protoduck": { + "version": "5.0.0", + "bundled": true, + "requires": { + "genfun": "^4.0.1" + } + }, + "prr": { + "version": "1.0.1", + "bundled": true + }, + "pseudomap": { + "version": "1.0.2", + "bundled": true + }, + "pump": { + "version": "3.0.0", + "bundled": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "bundled": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "bundled": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "punycode": { + "version": "1.4.1", + "bundled": true + }, + "qrcode-terminal": { + "version": "0.12.0", + "bundled": true + }, + "qs": { + "version": "6.5.2", + "bundled": true + }, + "query-string": { + "version": "6.1.0", + "bundled": true, + "requires": { + "decode-uri-component": "^0.2.0", + "strict-uri-encode": "^2.0.0" + } + }, + "qw": { + "version": "1.0.1", + "bundled": true + }, + "rc": { + "version": "1.2.7", + "bundled": true, + "requires": { + "deep-extend": "^0.5.1", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true + } + } + }, + "read": { + "version": "1.0.7", + "bundled": true, + "requires": { + "mute-stream": "~0.0.4" + } + }, + "read-cmd-shim": { + "version": "1.0.1", + "bundled": true, + "requires": { + "graceful-fs": "^4.1.2" + } + }, + "read-installed": { + "version": "4.0.3", + "bundled": true, + "requires": { + "debuglog": "^1.0.1", + "graceful-fs": "^4.1.2", + "read-package-json": "^2.0.0", + "readdir-scoped-modules": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "slide": "~1.1.3", + "util-extend": "^1.0.1" + } + }, + "read-package-json": { + "version": "2.0.13", + "bundled": true, + "requires": { + "glob": "^7.1.1", + "graceful-fs": "^4.1.2", + "json-parse-better-errors": "^1.0.1", + "normalize-package-data": "^2.0.0", + "slash": "^1.0.0" + } + }, + "read-package-tree": { + "version": "5.2.1", + "bundled": true, + "requires": { + "debuglog": "^1.0.1", + "dezalgo": "^1.0.0", + "once": "^1.3.0", + "read-package-json": "^2.0.0", + "readdir-scoped-modules": "^1.0.0" + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdir-scoped-modules": { + "version": "1.0.2", + "bundled": true, + "requires": { + "debuglog": "^1.0.1", + "dezalgo": "^1.0.0", + "graceful-fs": "^4.1.2", + "once": "^1.3.0" + } + }, + "registry-auth-token": { + "version": "3.3.2", + "bundled": true, + "requires": { + "rc": "^1.1.6", + "safe-buffer": "^5.0.1" + } + }, + "registry-url": { + "version": "3.1.0", + "bundled": true, + "requires": { + "rc": "^1.0.1" + } + }, + "request": { + "version": "2.87.0", + "bundled": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.6.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.1", + "forever-agent": "~0.6.1", + "form-data": "~2.3.1", + "har-validator": "~5.0.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.17", + "oauth-sign": "~0.8.2", + "performance-now": "^2.1.0", + "qs": "~6.5.1", + "safe-buffer": "^5.1.1", + "tough-cookie": "~2.3.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.1.0" + } + }, + "require-directory": { + "version": "2.1.1", + "bundled": true + }, + "require-main-filename": { + "version": "1.0.1", + "bundled": true + }, + "resolve-from": { + "version": "4.0.0", + "bundled": true + }, + "retry": { + "version": "0.12.0", + "bundled": true + }, + "rimraf": { + "version": "2.6.2", + "bundled": true, + "requires": { + "glob": "^7.0.5" + } + }, + "run-queue": { + "version": "1.0.3", + "bundled": true, + "requires": { + "aproba": "^1.1.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true + }, + "semver": { + "version": "5.5.0", + "bundled": true + }, + "semver-diff": { + "version": "2.1.0", + "bundled": true, + "requires": { + "semver": "^5.0.3" + } + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true + }, + "sha": { + "version": "2.0.1", + "bundled": true, + "requires": { + "graceful-fs": "^4.1.2", + "readable-stream": "^2.0.2" + } + }, + "shebang-command": { + "version": "1.2.0", + "bundled": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "bundled": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true + }, + "slash": { + "version": "1.0.0", + "bundled": true + }, + "slide": { + "version": "1.1.6", + "bundled": true + }, + "smart-buffer": { + "version": "4.0.1", + "bundled": true + }, + "socks": { + "version": "2.2.0", + "bundled": true, + "requires": { + "ip": "^1.1.5", + "smart-buffer": "^4.0.1" + } + }, + "socks-proxy-agent": { + "version": "4.0.1", + "bundled": true, + "requires": { + "agent-base": "~4.2.0", + "socks": "~2.2.0" + } + }, + "sorted-object": { + "version": "2.0.1", + "bundled": true + }, + "sorted-union-stream": { + "version": "2.1.3", + "bundled": true, + "requires": { + "from2": "^1.3.0", + "stream-iterate": "^1.1.0" + }, + "dependencies": { + "from2": { + "version": "1.3.0", + "bundled": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "~1.1.10" + } + }, + "isarray": { + "version": "0.0.1", + "bundled": true + }, + "readable-stream": { + "version": "1.1.14", + "bundled": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "bundled": true + } + } + }, + "spdx-correct": { + "version": "3.0.0", + "bundled": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.1.0", + "bundled": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "bundled": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.0", + "bundled": true + }, + "sshpk": { + "version": "1.14.2", + "bundled": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true + } + } + }, + "ssri": { + "version": "6.0.0", + "bundled": true + }, + "stream-each": { + "version": "1.2.2", + "bundled": true, + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-iterate": { + "version": "1.2.0", + "bundled": true, + "requires": { + "readable-stream": "^2.1.5", + "stream-shift": "^1.0.0" + } + }, + "stream-shift": { + "version": "1.0.0", + "bundled": true + }, + "strict-uri-encode": { + "version": "2.0.0", + "bundled": true + }, + "string-width": { + "version": "2.1.1", + "bundled": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "bundled": true + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "stringify-package": { + "version": "1.0.0", + "bundled": true + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-eof": { + "version": "1.0.0", + "bundled": true + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true + }, + "supports-color": { + "version": "5.4.0", + "bundled": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "tar": { + "version": "4.4.6", + "bundled": true, + "requires": { + "chownr": "^1.0.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.3", + "minizlib": "^1.1.0", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" + }, + "dependencies": { + "yallist": { + "version": "3.0.2", + "bundled": true + } + } + }, + "term-size": { + "version": "1.2.0", + "bundled": true, + "requires": { + "execa": "^0.7.0" + } + }, + "text-table": { + "version": "0.2.0", + "bundled": true + }, + "through": { + "version": "2.3.8", + "bundled": true + }, + "through2": { + "version": "2.0.3", + "bundled": true, + "requires": { + "readable-stream": "^2.1.5", + "xtend": "~4.0.1" + } + }, + "timed-out": { + "version": "4.0.1", + "bundled": true + }, + "tiny-relative-date": { + "version": "1.3.0", + "bundled": true + }, + "tough-cookie": { + "version": "2.3.4", + "bundled": true, + "requires": { + "punycode": "^1.4.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "bundled": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "bundled": true, + "optional": true + }, + "typedarray": { + "version": "0.0.6", + "bundled": true + }, + "uid-number": { + "version": "0.0.6", + "bundled": true + }, + "umask": { + "version": "1.1.0", + "bundled": true + }, + "unique-filename": { + "version": "1.1.0", + "bundled": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.0", + "bundled": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "unique-string": { + "version": "1.0.0", + "bundled": true, + "requires": { + "crypto-random-string": "^1.0.0" + } + }, + "unpipe": { + "version": "1.0.0", + "bundled": true + }, + "unzip-response": { + "version": "2.0.1", + "bundled": true + }, + "update-notifier": { + "version": "2.5.0", + "bundled": true, + "requires": { + "boxen": "^1.2.1", + "chalk": "^2.0.1", + "configstore": "^3.0.0", + "import-lazy": "^2.1.0", + "is-ci": "^1.0.10", + "is-installed-globally": "^0.1.0", + "is-npm": "^1.0.0", + "latest-version": "^3.0.0", + "semver-diff": "^2.0.0", + "xdg-basedir": "^3.0.0" + } + }, + "url-parse-lax": { + "version": "1.0.0", + "bundled": true, + "requires": { + "prepend-http": "^1.0.1" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true + }, + "util-extend": { + "version": "1.0.3", + "bundled": true + }, + "uuid": { + "version": "3.3.2", + "bundled": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "bundled": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "validate-npm-package-name": { + "version": "3.0.0", + "bundled": true, + "requires": { + "builtins": "^1.0.3" + } + }, + "verror": { + "version": "1.10.0", + "bundled": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true + } + } + }, + "wcwidth": { + "version": "1.0.1", + "bundled": true, + "requires": { + "defaults": "^1.0.3" + } + }, + "which": { + "version": "1.3.1", + "bundled": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "bundled": true + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "requires": { + "string-width": "^1.0.2" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "widest-line": { + "version": "2.0.0", + "bundled": true, + "requires": { + "string-width": "^2.1.1" + } + }, + "worker-farm": { + "version": "1.6.0", + "bundled": true, + "requires": { + "errno": "~0.1.7" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "bundled": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true + }, + "write-file-atomic": { + "version": "2.3.0", + "bundled": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "xdg-basedir": { + "version": "3.0.0", + "bundled": true + }, + "xtend": { + "version": "4.0.1", + "bundled": true + }, + "y18n": { + "version": "4.0.0", + "bundled": true + }, + "yallist": { + "version": "2.1.2", + "bundled": true + }, + "yargs": { + "version": "11.0.0", + "bundled": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.1.1", + "find-up": "^2.1.0", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^9.0.2" + }, + "dependencies": { + "y18n": { + "version": "3.2.1", + "bundled": true + } + } + }, + "yargs-parser": { + "version": "9.0.2", + "bundled": true, + "requires": { + "camelcase": "^4.1.0" + } + } + } + }, + "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=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "dev": true, + "requires": { + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "path": { + "version": "0.12.7", + "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", + "integrity": "sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8=", + "requires": { + "process": "^0.11.1", + "util": "^0.10.3" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=" + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "requires": { + "resolve": "^1.1.6" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "resolve": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", + "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", + "requires": { + "path-parse": "^1.0.5" + } + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, + "requires": { + "glob": "^7.0.5" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "semver": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz", + "integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw==" + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "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=", + "dev": true + }, + "shelljs": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.2.tgz", + "integrity": "sha512-pRXeNrCA2Wd9itwhvLp5LZQvPJ0wU6bcjaTMywHHGX5XWhVN2nzSu7WV0q+oUY7mGK3mgSkDDzP3MgjqdyIgbQ==", + "requires": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + } + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-support": { + "version": "0.5.9", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.9.tgz", + "integrity": "sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "supports-color": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true, + "requires": { + "readable-stream": "^2.1.5", + "xtend": "~4.0.1" + } + }, + "token-substitute": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/token-substitute/-/token-substitute-1.2.0.tgz", + "integrity": "sha1-3Q792a7G2VEgS0hfsxiNXe5f5qo=", + "dev": true + }, + "ts-node": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-7.0.1.tgz", + "integrity": "sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==", + "dev": true, + "requires": { + "arrify": "^1.0.0", + "buffer-from": "^1.1.0", + "diff": "^3.1.0", + "make-error": "^1.1.1", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "source-map-support": "^0.5.6", + "yn": "^2.0.0" + } + }, + "tslib": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", + "dev": true + }, + "tslint": { + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.11.0.tgz", + "integrity": "sha1-mPMMAurjzecAYgHkwzywi0hYHu0=", + "dev": true, + "requires": { + "babel-code-frame": "^6.22.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^3.2.0", + "glob": "^7.1.1", + "js-yaml": "^3.7.0", + "minimatch": "^3.0.4", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.8.0", + "tsutils": "^2.27.2" + } + }, + "tslint-language-service": { + "version": "0.9.9", + "resolved": "https://registry.npmjs.org/tslint-language-service/-/tslint-language-service-0.9.9.tgz", + "integrity": "sha1-9UbcOEg5eeb7PPpZWErYUls61No=", + "dev": true, + "requires": { + "mock-require": "^2.0.2" + } + }, + "tsutils": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", + "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, + "typescript": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.0.1.tgz", + "integrity": "sha512-zQIMOmC+372pC/CCVLqnQ0zSBiY7HHodU7mpQdjiZddek4GMj31I3dUJ7gAs9o65X7mnRma6OokOkc6f9jjfBg==", + "dev": true + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "util": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "requires": { + "inherits": "2.0.3" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + }, + "vsts-task-lib": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/vsts-task-lib/-/vsts-task-lib-2.6.0.tgz", + "integrity": "sha512-ja2qX4BIUvswcNbGtIoGo1SM5mRVc3Yaf7oM4oY64bNHs04chKfvH6f3cDDG0pd44OrZIGQE9LgECzeau6z2wA==", + "requires": { + "minimatch": "3.0.4", + "mockery": "^1.7.0", + "q": "^1.1.2", + "semver": "^5.1.0", + "shelljs": "^0.3.0", + "uuid": "^3.0.1" + }, + "dependencies": { + "shelljs": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz", + "integrity": "sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E=" + } + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "yargs": { + "version": "11.1.0", + "resolved": "http://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz", + "integrity": "sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.1.1", + "find-up": "^2.1.0", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^9.0.2" + } + }, + "yargs-parser": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", + "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + } + }, + "yn": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", + "integrity": "sha1-5a2ryKz0CPY4X8dklWhMiOavaJo=", + "dev": true + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..3981de4 --- /dev/null +++ b/package.json @@ -0,0 +1,59 @@ +{ + "name": "gitlab-artifact-integration", + "version": "1.0.0", + "description": "gitLab artifiact integration", + "main": "index.js", + "scripts": { + "test": "mocha tests/*.ts --require ts-node/register", + "clean-dist": "rimraf dist", + "copy": "npm run clean-dist && copyfiles \"./tasks/**/!(*.ts|*.js.map|package-lock.json)\" dist && copyfiles vss-extension.json LICENSE *.md dist && copyfiles images/** dist", + "debugtest": "mocha tests/_suite.ts", + "debug-node": "node ./scripts/share", + "debug": "node --inspect-brk .\\tasks\\downloadartifacts\\index.js", + "share": "npm run copy && node ./scripts/share", + "init": "npm install && pushd \"tasks/DownloadRepo/DownloadRepoV1\" && npm install && popd", + "dedupe": "pushd \"tasks/DownloadRepo/DownloadRepoV1\" && npm dedupe && npm prune --production && popd", + "compile": "tsc && tslint --config tslint.json", + "build": "npm run compile && npm run copy" + }, + "repository": { + "type": "git", + "url": "https://onlyutkarsh.visualstudio.com/DefaultCollection/VSTSExtensions/_git/gitlab-artifact-integration" + }, + "keywords": [ + "vsts", + "gitlab" + ], + "author": "utkarsh", + "license": "ISC", + "dependencies": { + "axios": "^0.18.0", + "npm": "^6.4.0", + "path": "^0.12.7", + "shelljs": "^0.8.2", + "vsts-task-lib": "^2.6.0" + }, + "devDependencies": { + "@types/dotenv": "^4.0.3", + "@types/fs-extra": "^5.0.4", + "@types/glob": "^5.0.35", + "@types/mocha": "^5.2.5", + "@types/node": "^10.9.4", + "@types/q": "^1.5.0", + "@types/rimraf": "^2.0.2", + "@types/semver": "^5.5.0", + "assert": "^1.4.1", + "copyfiles": "^2.1.0", + "dotenv": "^6.0.0", + "fs-extra": "^7.0.0", + "glob": "^7.1.3", + "mocha": "^5.2.0", + "rimraf": "^2.6.2", + "semver": "^5.5.1", + "token-substitute": "^1.2.0", + "ts-node": "^7.0.1", + "tslint": "^5.11.0", + "tslint-language-service": "^0.9.9", + "typescript": "^3.0.1" + } +} diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..6fe81af --- /dev/null +++ b/readme.md @@ -0,0 +1,76 @@ +# GitLab Integration for Azure Pipelines + +This extension integrates GitLab with Azure Pipelines. With this extension, you will be able to download the sources from a GitLab repository (using `clone` command) and use downloaded sources in Azure Pipelines. The extension comes as an artifact source in `Release Management` and also has a `Build` task to download sources in your build pipeline. + +> **3rd Party Notices** +> - *GitLab is the trademark of GitLab, Inc. The GitLab trademark and logo are associated with GitLab - For details go to [GitLab License](https://gitlab.com/gitlab-com/gitlab-artwork/blob/master/README.md) page.* +> - *This extension has been developed by Utkarsh Shigihalli and is not associated with [GitLab](https://gitlab.com/).* + +## Usage + +### 1. Connecting to GitLab + +The extension provides a GitLab service connection to connect to GitLab using a [Personal access token (PAT)](https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html). + +To connect, go to `Project Settings` | `Service connections` tab and create a `New service connection` and click on `GitLab` + +![NewEndpoint](images/screenshots/new-gitlab-endpoint.png) + +You will now see a window asking for GitLab details. Enter your GitLab `UserName` and `API Token`. Give service connection a name and `Verify connection`. + +![AddDetails](images/screenshots/add-endpoint.png) + +If you verified successfully, click `OK` to save. + +### 2. Downloading GitLab repo in Release + +Once you have the GitLab service connection setup, go to `Release` hub in Azure Pipelines and edit a release definition. Click `Add` [1 in image below] on artifacts and select `GitLab` [2 in image below]. + +![Add Artifact](images/screenshots/add-artifact-release.png) + +You will then need to select the GitLab service connection you created. Once you select, the extension will list all the repositories you own, and after that you will have three options to select artifact `version`. + +- `Latest from default branch`: This will download the default branch for the repository. +- `Latest from specific branch`: This will list all the available branches and download the latest commit from the selected branch. +- `Specify at the time of release creation`: As the name suggests, you will have the option to specify the commit id while triggering a release. + +![Add repo](images/screenshots/add-repo-release.png) + +Save the release definition and trigger a new release. + +In the dialog which opens, you will see all your linked artifacts. You will have an option to fill in the commit id if you have selected `specify at the time of release creation` for an artifact source. + +![Create release](images/screenshots/create-release.png) + +### 3. Browse artifacts + +Once you link your artifact to release, you will also be able to browse the linked artifacts from GitLab in any of the tasks in your pipeline. In the image below, I am browsing artifacts from GitLab inside a `Copy Files` task. Cool right? + +![Browse Artifact](images/screenshots/browse-artifact.png) + +### 4. Downloading GitLab repo in Build + +In some scenarios, you may also want to consume the GitLab repository in your Azure Pipelines build definition. The extension provides the build task to clone and download the repository. + +In your build definition, search for the task and you should see the task listed. + +![AddTask](images/screenshots/add-task-build.png) + +Click `Add` and select the created GitLab service connection. Once you do that, as you can see from the screenshot, you will be able to select the repository, branch and version. You will have to specify the `Download Path` to which the source from GitLab should be downloaded. In the image below, I am setting it to a Azure DevOps variable `$(build.sourcedirectory)` but you can use any valid path. + +![ConfigureTask](images/screenshots/configure-task-build.png) + +## Changes + +> - 1.0 - Initial release + +## Feedback + +Please rate the extension and share/tweet to spread the word!! + +- Found a bug or need to make a feature request? - Raise it as an [issue](https://github.com/onlyutkarsh/gitlab-integration/issues). +- Have a question? - Raise it here in the Q and A section. + +## Credits + +Special thanks to Sriram Balasubramaniam, Omesh Pandita, Romil Goyal, Ashok Kirla and Gopinath Chigakkagari from Microsoft product team, for all the guidance and support in developing this extension. diff --git a/resources/gitlab.ico b/resources/gitlab.ico new file mode 100644 index 0000000000000000000000000000000000000000..498765431d4949adf483851cf226ce4b0e86b6f7 GIT binary patch literal 102945 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 literal 0 HcmV?d00001 diff --git a/scripts/share.ts b/scripts/share.ts new file mode 100644 index 0000000..5e9047d --- /dev/null +++ b/scripts/share.ts @@ -0,0 +1,90 @@ +import { ExecOptions } from "child_process"; +import * as glob from "glob"; +import * as proc from "child_process"; +import * as path from "path"; +import * as semver from "semver"; +import * as fs from "fs-extra"; +import * as substitute from "token-substitute"; + +require("dotenv").config(); + +try { + let manifest = require("../dist/vss-extension.json"); + let extensionId = manifest.id; + let cacheManifestVersion = manifest.version; + let newVersion = semver.inc(cacheManifestVersion, "patch"); + manifest.version = newVersion; + + // read all task.json files for version update + let taskJsons = glob.sync("dist/**/task.json"); + taskJsons.forEach(file => { + let taskFilePath = path.resolve(__dirname, "../", file); + let taskFileContent = require(taskFilePath); + let cacheTaskName = taskFileContent.name; + let cacheHelpMarkdown = taskFileContent.helpMarkDown; + taskFileContent.name = `${taskFileContent.name}-dev`; + let cacheTaskVersion = semver.valid(`${taskFileContent.version["Major"]}.${taskFileContent.version["Minor"]}.${taskFileContent.version["Patch"]}`); + let newTaskVersion = semver.inc(cacheTaskVersion, "patch"); + let replaceVersion = { + prefix: "__", + suffix: "__", + tokens: { + "VERSION": newTaskVersion + } + }; + + let newTaskContent = substitute(taskFileContent, replaceVersion); + + newTaskContent.version["Major"] = semver.major(newTaskVersion); + newTaskContent.version["Minor"] = semver.minor(newTaskVersion); + newTaskContent.version["Patch"] = semver.patch(newTaskVersion); + + taskFileContent.version["Major"] = semver.major(newTaskVersion); + taskFileContent.version["Minor"] = semver.minor(newTaskVersion); + taskFileContent.version["Patch"] = semver.patch(newTaskVersion); + + console.log(`Updating task.json version to ${newTaskVersion}`); + fs.writeJsonSync(taskFilePath, newTaskContent, { spaces: "\t" }); + + // revert to the old task name + taskFileContent.name = cacheTaskName; + taskFileContent.helpMarkDown = cacheHelpMarkdown; + let parsedPath = taskFilePath.replace("dist\\", ""); + fs.writeJsonSync(parsedPath, taskFileContent, { spaces: "\t" }); + }); + + console.log(`Updating version number in manifest file to ${manifest.version}`); + let destManifest = path.resolve(__dirname, "../dist/vss-extension.json"); + fs.writeJsonSync(destManifest, manifest, { spaces: "\t" }); + + let distDir = path.resolve(process.cwd(), "dist"); + + console.log("Creating and sharing the package..."); + // Package and share + let command = `tfx extension publish --manifest-globs vss-extension.json --extension-id ${extensionId}-dev --no-prompt --auth-type PAT --token ${process.env.VSTS_PAT} --share-with ${process.env.VSTS_ACCOUNT}`; + + proc.exec(command, { cwd: distDir }, (error, stdout, stderr) => { + + if (error) { + console.error(`Could not create package: '${error}'`); + return; + } + if (stderr) { + console.error(`Could not create package: '${stderr}'`); + return; + } + + console.log(`Extension shared with account...`); + + let src = path.join(distDir, "vss-extension.json"); + let dest = path.join(process.cwd(), "vss-extension.json"); + + console.log(`Copying extension manifest to source...`); + + fs.copyFileSync(src, dest); + console.log("Done."); + + }); +} catch (error) { + console.error(error); +} diff --git a/tasks/.taskkey b/tasks/.taskkey new file mode 100644 index 0000000..a400294 --- /dev/null +++ b/tasks/.taskkey @@ -0,0 +1 @@ +5e084fdf-7994-49dc-8d9a-e7879bbc58ce \ No newline at end of file diff --git a/tasks/DownloadRepo/DownloadRepoV1/gitapi.ts b/tasks/DownloadRepo/DownloadRepoV1/gitapi.ts new file mode 100644 index 0000000..1022399 --- /dev/null +++ b/tasks/DownloadRepo/DownloadRepoV1/gitapi.ts @@ -0,0 +1,61 @@ +import * as axios from "axios"; +import * as url from "url"; +import { AxiosResponse } from "axios"; + +export class GitApi { + + public async getRepoUrl(definition: string, token: string): Promise { + + let getSelectedRepoUrl = `https://gitlab.com/api/v4/projects/${definition}`; + + let response = await this.exec(getSelectedRepoUrl, token); + + if (response.status !== 200) { + throw new Error("Unable to find the repository URL from GitLab"); + } + let responseData = response.data; + let repoUrl = url.parse(responseData.http_url_to_repo); + return repoUrl; + } + + public async getLatestCommitIdFromBranch(definition: string, token: string, branch?: string): Promise { + let commitsFromDefaultBranchUrl = `https://gitlab.com/api/v4/projects/${definition}/repository/commits`; + let commitsFromSpecifiBranchUrl = `https://gitlab.com/api/v4/projects/${definition}/repository/commits?ref_name=${branch}`; + + branch = branch || ""; + let commitId: string; + let response: AxiosResponse; + if (branch.trim() === "") { + // get commits from default branch + response = await this.exec(commitsFromDefaultBranchUrl, token); + if (response.status !== 200) { + throw new Error("Unable to get the Commit Id for default branch"); + } + } + else { + // get commits for the given branch + response = await this.exec(commitsFromSpecifiBranchUrl, token); + if (response.status !== 200) { + throw new Error("Unable to get the Commit Id for default branch"); + } + } + + let responseData = response.data; + if (responseData instanceof Array && responseData.length >= 0) { + + commitId = responseData[0].id; + } + return commitId; + } + + private async exec(url: string, token: string): Promise> { + let config: axios.AxiosRequestConfig = { + headers: { "Private-Token": token }, + method: "get" + }; + + let response = await axios.default.get(url, config); + + return response; + } +} \ No newline at end of file diff --git a/tasks/DownloadRepo/DownloadRepoV1/gitwrapper.ts b/tasks/DownloadRepo/DownloadRepoV1/gitwrapper.ts new file mode 100644 index 0000000..7e284f7 --- /dev/null +++ b/tasks/DownloadRepo/DownloadRepoV1/gitwrapper.ts @@ -0,0 +1,140 @@ +import * as tl from "vsts-task-lib"; +import * as trm from "vsts-task-lib/toolrunner"; +import * as events from "events"; +import * as path from "path"; + +export let envGitUsername = "GIT_USERNAME"; +export let envGitPassword = "GIT_PASSWORD"; + +export interface IGitExecOptions { + useGitExe: boolean; + creds: boolean; + cwd: string; + debugOutput: boolean; + env: { [key: string]: string }; + silent: boolean; + outStream: NodeJS.WriteStream; + errStream: NodeJS.WriteStream; +} + +let _gitLocalPath = path.join(__dirname, process.platform, "libgit_host"); +let _gitExePath: string; + +export class GitWrapper extends events.EventEmitter { + public username: string; + public password: string; + public gitInstalled: boolean; + constructor() { + super(); + tl.debug("Searching for git tool"); + _gitExePath = tl.which("git", false); + this.gitInstalled = _gitExePath !== null; + } + + public async remote(args: string[], options?: IGitExecOptions): Promise { + options = options || {}; + options.useGitExe = true; + options.creds = true; + return this.exec(["remote"].concat(args), options); + } + + public async fetch(args: string[], options?: IGitExecOptions): Promise { + options = options || {}; + options.useGitExe = true; + options.creds = true; + return this.exec(["fetch"].concat(args), options); + } + + public async checkout(ref: string, options?: IGitExecOptions): Promise { + options = options || {}; + options.useGitExe = true; + options.creds = true; + return this.exec(["checkout", ref], options); + } + + public async clean(args: string[], options?: IGitExecOptions): Promise { + options = options || {}; + options.useGitExe = true; + return this.exec(["clean"].concat(args), options); + } + + public async reset(args: string[], options?: IGitExecOptions): Promise { + options = options || {}; + options.useGitExe = true; + return this.exec(["reset"].concat(args), options); + } + + public async submodule(args: string[], options?: IGitExecOptions): Promise { + options = options || {}; + options.useGitExe = true; + options.creds = true; + return this.exec(["submodule"].concat(args), options); + } + + public async clone(repository: string, progress: boolean, folder: string, options?: IGitExecOptions): Promise { + options = options || {}; + options.useGitExe = true; + options.creds = true; + let args = ["clone", repository]; + + if (progress) { + args.push("--progress"); + } + + if (folder) { + args.push(folder); + } + + return this.exec(args, options); + } + + public async exec(args: string[], options?: IGitExecOptions): Promise { + try { + let gitPath = options.useGitExe ? _gitExePath : _gitLocalPath; + + if (!gitPath) { + throw (new Error("git exe not found. Ensure its installed and in the path")); + } + + let git = tl.tool(gitPath); + let creds = `${this.username}:${this.password}`; + let escapedCreds = `${encodeURIComponent(this.username)}:${encodeURIComponent(this.password)}`; + git.on("debug", (message) => { + if (options.debugOutput) { + let repl = message.replace(creds, "..."); + repl = message.replace(escapedCreds, "..."); + this.emit("stdout", "[debug]" + repl); + } + }); + + git.on("stdout", (data) => { + this.emit("stdout", data); + }); + + git.on("stderr", (data) => { + this.emit("stderr", data); + }); + + args.map((arg: string) => { + git.arg(arg); // raw arg + }); + + options = options || {}; + let ops: trm.IExecOptions = { + cwd: options.cwd || process.cwd(), + env: options.env || process.env, + silent: true, + outStream: options.outStream || process.stdout, + errStream: options.errStream || process.stderr, + failOnStdErr: false, + ignoreReturnCode: false, + windowsVerbatimArguments: false + }; + tl.debug(`Working directory for the command is: ${ops.cwd}`); + return await git.exec(ops); + } catch (error) { + tl.error(error); + throw new Error("Unable to execute git command."); + } + } +} \ No newline at end of file diff --git a/tasks/DownloadRepo/DownloadRepoV1/icon.png b/tasks/DownloadRepo/DownloadRepoV1/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..74285e884f82e67409408524baa5ea0ca7bbf4b1 GIT binary patch literal 1347 zcmV-J1-$x+P)B12!;d+1Ofsh zATQe*Nc6+vyE0q^jge?VOo$&uM8E_gV!{U@W_~hiAW;a0FNi@Uh=dmhh`5!3FjqFV zuJ`z%-AlK2Y+#I@q{)4r=br!hKmT){^W4IJ(atR_n}4NZ!kT{y?@Gmlmo6=uFelZT zm1;5r^Hq&8bLZ3%dumTMM(-#1mhu9p#*9sda0EDdR|0#d7yD5bg18psdFBCM-w%OB z`QC*f*{Cl5Y{n?>s^eE8gA$mNo4E{ITmWt{L-$J{*K&l^1`ziQzk4ZAKPUmGnj!5T zs8nv7Qdqn0RFi!#!QUwlT57YRdu*r?>Q6xW4nCY#=y@!VeGMct!9d%I&41v~`ET!q zz^O+|7x=~TP4A4h9=X+8P;=sHdrAf71-wgog9C_UidhZZ6M<~gO32@X=bN3ASpj^W zl7LsNkZLlBLeCslfcE6#|AuAn35FHD&2a&isIP0dOFR zK$dByaR9Zc23{L#@QoAmMQy20x9&B}P&WYq*j*KLtoCJxwL@~!_-JPv+oK)w*H8#J zT$=67q^|!d>(L;C<}cb?ifZbcx&$D+b?oAR+i{RH@v2K@t<6GfvoRzEd_fyuUK$_) zCP8boYe7z3!(j^`*KdY!0%L$nsr@ptl-6cVx2dEmb7u{5U`hZFc%xpyE1zjD3hqqkucT-wEke7Hisr;xWSZ7sE_s$hVf<5w-0Bwn1U*!Zc zd`hHaa0Sxt-jh%`;Vy<0t$5fo%PP*dlB?AK%7CAN*g){e^}*7hWTYZs0i_A-z896> zthNv-8{psq#slXD%4<3y)|p0rXBzp(Coub)A!XKYjnS7!7dh(1l!uZVIZzB-O-_T` zr$lZ@+Cr87OCte)3aw)LV^cV~UI6N!E6k{x>Dz*XT9G~wnoyyo*Riu5u3t1$*Vwoi zj*NbrC`-YfDqz%B`eQMbKd=Z&waN}}3 z4S_K+Tz;S&)Y3@T9j$Y}aAEIIaED9)pyBP32S*h-_RDRVre`61)&PNm2{tkjG*f?Q z40k?0dc);&L&Y2x0f2o^2VJXXXKj}2QrB|a5Cr@)Y@2{?|ML6DhN@jnox{N!Hi2%t zxntaNM}ze-f@*2(N#ELE5B%$YVh=x4Ty*sLk%j!9?QhyljxCqm3c>&Y002ovPDHLk FV1mDSc*Ot! literal 0 HcmV?d00001 diff --git a/tasks/DownloadRepo/DownloadRepoV1/index.ts b/tasks/DownloadRepo/DownloadRepoV1/index.ts new file mode 100644 index 0000000..08eb402 --- /dev/null +++ b/tasks/DownloadRepo/DownloadRepoV1/index.ts @@ -0,0 +1,153 @@ +import * as tl from "vsts-task-lib"; +import * as url from "url"; +import * as path from "path"; +import { GitWrapper, IGitExecOptions } from "./gitwrapper"; +import * as fse from "fs-extra"; +import { GitApi } from "./gitapi"; + +async function main() { + try { + let _this = this; + + // get the task vars + let connection = tl.getInput("connection", true); + let endpointUrl = tl.getEndpointUrl(connection, false); + let auth = tl.getEndpointAuthorization(connection, false); + if (auth.scheme !== "Token") { + throw new Error(`The authorization scheme ${auth.scheme} is not supported for GitLab endpoint`); + } + let token = auth.parameters["apitoken"]; + let username = tl.getEndpointDataParameter(connection, "username", false); + let definition = tl.getInput("definition", true); + let branch = tl.getInput("branch"); + let downloadPath = tl.getInput("downloadPath", false); + let versionSelector = tl.getInput("versionSelector", true); + let commitId = tl.getInput("version"); + let debugOutput = tl.getVariable("system.debug"); + debugOutput = debugOutput || "false"; + let isDebugOutput: boolean = debugOutput.toLowerCase() === "true"; + + // print what is supplied by the user + tl.debug(`endpoint: ${JSON.stringify(auth)}`); + tl.debug(`definition: ${definition}`); + tl.debug(`branch: ${branch}`); + tl.debug(`downloadPath: ${downloadPath}`); + tl.debug(`versionSelector: ${versionSelector}`); + tl.debug(`commitId: ${commitId}`); + tl.debug(`debugOutput: ${debugOutput}`); + + if (!downloadPath || downloadPath.length === 0) { + downloadPath = tl.getVariable("System.DefaultWorkingDirectory"); + } + + console.info(`Cleaning ${downloadPath}`); + CleanFolder(downloadPath); + console.info("Done"); + + tl.debug("Finding repository url"); + let gitApi = new GitApi(); + let repoUrl = await gitApi.getRepoUrl(definition, token); + console.info(`Repo Url: ${url.format(repoUrl)}`); + + commitId = commitId || ""; + if (commitId === "") { + console.info("Identifying commit id"); + if (versionSelector === "latestDefaultBranch") { + tl.debug("Finding commit for default branch"); + commitId = await gitApi.getLatestCommitIdFromBranch(definition, token); + } + else if (versionSelector === "latestSpecificBranch") { + tl.debug(`Finding commit for '${branch}' branch`); + commitId = await gitApi.getLatestCommitIdFromBranch(definition, token, branch); + } + } + console.info(`Commit id: ${commitId}`); + + repoUrl.auth = `${username}:${token}`; + let formattedRepoUrl = url.format(repoUrl); + + console.info("Cloning repository..."); + let gitWrapper = new GitWrapper(); + gitWrapper.username = username; + gitWrapper.password = token; + + let options: IGitExecOptions = { + cwd: downloadPath, + creds: true, + debugOutput: isDebugOutput, + useGitExe: true, + env: process.env, + errStream: process.stderr, + outStream: process.stdout, + silent: true + }; + + // Git clone + let num = await gitWrapper.clone(formattedRepoUrl, false, downloadPath, options); + console.info("Done"); + + console.info(`Checking out branch '${branch}'`); + // Checkout branch + await gitWrapper.checkout(branch, options); + console.info("Done"); + + console.info(`Checking out commit '${commitId}'`); + // Checkout commit + await gitWrapper.checkout(commitId, options); + + console.info("Done"); + tl.setResult(tl.TaskResult.Succeeded, ""); + } + catch (error) { + console.error("Error occurred", error); + tl.error(error); + tl.setResult(tl.TaskResult.Failed, error); + } +} + +main() + .then(() => console.info("All Done!")) + .catch(reason => console.error(reason)); + +function CleanFolder(downloadPath: string) { + + // clear leading and trailing quotes for paths with spaces + downloadPath = downloadPath.replace(/"/g, ""); + // remove trailing slash + if (downloadPath.endsWith("\\") || downloadPath.endsWith("/")) { + downloadPath = downloadPath.substr(0, downloadPath.length - 1); + } + + downloadPath = path.normalize(downloadPath); + + let downloadPathStats: tl.FsStats; + try { + downloadPathStats = tl.stats(downloadPath); + } + catch (err) { + if (err.code !== "ENOENT") { + throw err; + } + } + if (downloadPathStats) { + if (downloadPathStats.isDirectory()) { + // delete the child items + fse.readdirSync(downloadPath) + .forEach((item: string) => { + let itemPath = path.join(downloadPath, item); + tl.rmRF(itemPath); + }); + } + else { + // downloadPath is not a directory. delete it. + tl.rmRF(downloadPath); + } + } + + // FIX for Error: C:\Program Files\Git\cmd\git.exe failed. spawn C:\Program Files\Git\cmd\git.exe ENOENT + if (!tl.exist(downloadPath)) { + tl.debug(`Creating directory ${downloadPath}`); + tl.mkdirP(downloadPath); + } + tl.debug("Cleaning complete"); +} diff --git a/tasks/DownloadRepo/DownloadRepoV1/package-lock.json b/tasks/DownloadRepo/DownloadRepoV1/package-lock.json new file mode 100644 index 0000000..df3cecd --- /dev/null +++ b/tasks/DownloadRepo/DownloadRepoV1/package-lock.json @@ -0,0 +1,168 @@ +{ + "name": "onlyutkarsh-gitlab-dev", + "version": "0.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "axios": { + "version": "0.18.0", + "resolved": "http://registry.npmjs.org/axios/-/axios-0.18.0.tgz", + "integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=", + "requires": { + "follow-redirects": "^1.3.0", + "is-buffer": "^1.1.5" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "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" + } + }, + "events": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.0.0.tgz", + "integrity": "sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==" + }, + "follow-redirects": { + "version": "1.5.7", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.7.tgz", + "integrity": "sha512-NONJVIFiX7Z8k2WxfqBjtwqMifx7X42ORLFrOZ2LTKGj71G3C0kfdyTqGqr8fx5zSX6Foo/D95dgGWbPUiwnew==", + "requires": { + "debug": "^3.1.0" + } + }, + "fs-extra": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.0.tgz", + "integrity": "sha512-EglNDLRpmaTWiD/qraZn6HREAEAHJcJOmxNEYwq6xeMKnVMAy3GUcFB+wXt2C6k4CNvB/mP1y/U3dzvKKj5OtQ==", + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "mockery": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/mockery/-/mockery-1.7.0.tgz", + "integrity": "sha1-9O3g2HUMHJcnwnLqLGBiniyaHE8=" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "path": { + "version": "0.12.7", + "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", + "integrity": "sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8=", + "requires": { + "process": "^0.11.1", + "util": "^0.10.3" + } + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" + }, + "semver": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz", + "integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw==" + }, + "shelljs": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz", + "integrity": "sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E=" + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + }, + "util": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "requires": { + "inherits": "2.0.3" + } + }, + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + }, + "vsts-task-lib": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/vsts-task-lib/-/vsts-task-lib-2.6.0.tgz", + "integrity": "sha512-ja2qX4BIUvswcNbGtIoGo1SM5mRVc3Yaf7oM4oY64bNHs04chKfvH6f3cDDG0pd44OrZIGQE9LgECzeau6z2wA==", + "requires": { + "minimatch": "3.0.4", + "mockery": "^1.7.0", + "q": "^1.1.2", + "semver": "^5.1.0", + "shelljs": "^0.3.0", + "uuid": "^3.0.1" + } + } + } +} diff --git a/tasks/DownloadRepo/DownloadRepoV1/package.json b/tasks/DownloadRepo/DownloadRepoV1/package.json new file mode 100644 index 0000000..de4c118 --- /dev/null +++ b/tasks/DownloadRepo/DownloadRepoV1/package.json @@ -0,0 +1,18 @@ +{ + "name": "onlyutkarsh-gitlab-dev", + "version": "0.0.0", + "description": "download artifact task", + "main": "index.js", + "scripts": { + "clean-task": "npm dedupe && npm prune --production" + }, + "author": "", + "license": "ISC", + "dependencies": { + "axios": "^0.18.0", + "events": "^3.0.0", + "fs-extra": "^7.0.0", + "path": "^0.12.7", + "vsts-task-lib": "^2.6.0" + } +} diff --git a/tasks/DownloadRepo/DownloadRepoV1/task.json b/tasks/DownloadRepo/DownloadRepoV1/task.json new file mode 100644 index 0000000..c6aba68 --- /dev/null +++ b/tasks/DownloadRepo/DownloadRepoV1/task.json @@ -0,0 +1,131 @@ +{ + "id": "e6590a51-c3b6-4b88-99e4-b3498ed7cd5b", + "name": "downloadgitlabrepository", + "friendlyName": "Download GitLab repository", + "description": "Download your GitLab repository using 'clone' command in your build/release definition.", + "author": "onlyutkarsh", + "helpMarkDown": "**v__VERSION__**
[More Information](https://marketplace.visualstudio.com/items?itemName=onlyutkarsh.gitlab-integration)", + "category": "Utility", + "visibility": [ + "Build", + "Release" + ], + "demands": [], + "version": { + "Major": 1, + "Minor": 0, + "Patch": 1 + }, + "minimumAgentVersion": "2.115.0", + "instanceNameFormat": "Download GitLab repository", + "inputs": [ + { + "name": "connection", + "type": "connectedService:GitLab", + "label": "GitLab Connection", + "defaultValue": "", + "required": true, + "helpMarkDown": "GitLab service connection" + }, + { + "name": "definition", + "type": "pickList", + "label": "Repository", + "defaultValue": "", + "required": true, + "properties": { + "EditableOptions": "True" + }, + "helpMarkDown": "GitLab repository id" + }, + { + "name": "versionSelector", + "type": "pickList", + "label": "Default version", + "required": true, + "helpMarkDown": "Version of artifact", + "defaultValue": "latestDefaultBranch", + "options": { + "latestDefaultBranch": "Latest from default branch", + "latestSpecificBranch": "Latest from specific branch", + "specificVersion": "Specific version" + } + }, + { + "name": "branch", + "type": "pickList", + "label": "Branch", + "defaultValue": "", + "required": true, + "properties": { + "EditableOptions": "True" + }, + "helpMarkDown": "Branch to checkout", + "visibleRule": "versionSelector = latestSpecificBranch || versionSelector == specificVersion" + }, + { + "name": "version", + "type": "pickList", + "label": "Commit Id", + "defaultValue": "", + "required": true, + "properties": { + "EditableOptions": "True" + }, + "helpMarkDown": "Commit id", + "visibleRule": "versionSelector == specificVersion" + }, + { + "name": "downloadPath", + "type": "string", + "label": "Download Path", + "defaultValue": "", + "required": false, + "helpMarkDown": "Optional. Path on the agent machine where the artifacts will be downloaded. If not supplied, uses `$(System.DefaultWorkingDirectory)`" + } + ], + "dataSourceBindings": [ + { + "target": "definition", + "endpointId": "$(connection)", + "dataSourceName": "Repositories", + "parameters": {}, + "resultTemplate": "{ \"Value\" : \"{{id}}\", \"DisplayValue\" : \"{{{path_with_namespace}}}\" }" + }, + { + "target": "branch", + "endpointId": "$(connection)", + "dataSourceName": "Branches", + "parameters": { + "definition": "$(definition)" + }, + "resultTemplate": "{ \"Value\" : \"{{{name}}}\", \"DisplayValue\" : \"{{{name}}}\" }" + }, + { + "target": "version", + "endpointId": "$(connection)", + "dataSourceName": "CommitsFromSelectedBranch", + "parameters": { + "definition": "$(definition)", + "branch": "$(branch)" + }, + "resultTemplate": "{ \"Value\" : \"{{{id}}}\", \"DisplayValue\" : \"{{{short_id}}}\" }" + }, + { + "target": "latestversion", + "endpointId": "$(connection)", + "dataSourceName": "LatestCommit", + "parameters": { + "definition": "$(definition)", + "branch": "$(branch)" + }, + "resultTemplate": "{ \"Value\" : \"{{{id}}}\", \"DisplayValue\" : \"{{{short_id}}}\" }" + } + ], + "execution": { + "Node": { + "target": "index.js", + "argumentFormat": "" + } + } +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..c2bddb4 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "module": "commonjs", + "target": "es6", + "noImplicitAny": false, + "rootDir": ".", + "sourceMap": true, + "moduleResolution": "node", + "plugins": [ + { + "name": "tslint-language-service", + "alwaysShowRuleFailuresAsWarnings": false, + "ignoreDefinitionFiles": true, + "configFile": "./tslint.json", + "disableNoUnusedVariableRule": false, + "supressWhileTypeErrorsPresent": false, + "mockTypeScriptVersion": false + } + ] + }, + "exclude": [ + "node_modules" + ] +} \ No newline at end of file diff --git a/tslint.json b/tslint.json new file mode 100644 index 0000000..895e914 --- /dev/null +++ b/tslint.json @@ -0,0 +1,68 @@ +{ + "rules": { + "class-name": true, + "comment-format": [ + true, + "check-space" + ], + "curly": true, + "indent": [ + true, + "spaces" + ], + "no-floating-promises": { + "severity": "warning", + "options": [ + "Promise", + "Q.Promise", + "AxiosPromise" + ] + }, + "no-consecutive-blank-lines": [ true ], + "no-console": [ false ], + "no-duplicate-variable": true, + "no-eval": true, + "no-internal-module": true, + "no-trailing-whitespace": true, + "no-var-keyword": true, + "one-line": [ + true, + "check-open-brace", + "check-whitespace" + ], + "quotemark": [ + true, + "double" + ], + "semicolon": [ + true, + "always" + ], + "triple-equals": [ + true, + "allow-null-check" + ], + "typedef-whitespace": [ + true, + { + "call-signature": "nospace", + "index-signature": "nospace", + "parameter": "nospace", + "property-declaration": "nospace", + "variable-declaration": "nospace" + } + ], + "variable-name": [ + true, + "ban-keywords" + ], + "whitespace": [ + true, + "check-branch", + "check-decl", + "check-operator", + "check-separator", + "check-type" + ] + } + } \ No newline at end of file diff --git a/vss-extension.json b/vss-extension.json new file mode 100644 index 0000000..4ae061f --- /dev/null +++ b/vss-extension.json @@ -0,0 +1,287 @@ +{ + "manifestVersion": 1, + "id": "gitlab-integration", + "name": "GitLab Integration for Azure Pipelines", + "publisher": "onlyutkarsh", + "version": "0.0.157", + "public": false, + "description": "Download sources from GitLab repository in your build definition or consume them as an artifact in to your release definition during deployment.", + "categories": [ + "Build and release" + ], + "Tags": [ + "GitLab", + "Azure DevOps", + "Azure Pipelines", + "Release", + "DevOps", + "Artifacts", + "Git", + "Build" + ], + "targets": [ + { + "id": "Microsoft.VisualStudio.Services" + } + ], + "demands": [ + "contribution/ms.vss-releaseartifact.artifact-types" + ], + "icons": { + "default": "images/gitlab128.png", + "large": "images/gitlab512.png" + }, + "branding": { + "color": "#3B3E43", + "theme": "dark" + }, + "content": { + "details": { + "path": "readme.md" + } + }, + "files": [ + { + "path": "tasks" + }, + { + "path": "images", + "addressable": "true" + } + ], + "contributions": [ + { + "id": "gitlab-downloadrepo-task", + "type": "ms.vss-distributed-task.task", + "targets": [ + "ms.vss-distributed-task.tasks" + ], + "properties": { + "name": "tasks/DownloadRepo" + } + }, + { + "id": "gitlab-endpoint-type", + "description": "Service connection type for all GitLab connections", + "type": "ms.vss-endpoint.service-endpoint-type", + "targets": [ + "ms.vss-endpoint.endpoint-types" + ], + "properties": { + "name": "gitlab", + "icon": "images/gitlab16.png", + "displayName": "GitLab", + "url": { + "displayName": "Server URL", + "value": "https://gitlab.com", + "helpText": "Client service connection for GitLab. You don't need to change this unless you are using self hosted GitLab instance, in which case you may need to point to your instance URL. ", + "isVisible": true + }, + "inputDescriptors": [ + { + "id": "username", + "name": "Username", + "description": "Username you use to login to GitLab. This is required only to validate your PAT token using 'Verify connection' link below.", + "inputMode": "textbox", + "isConfidential": false, + "validation": { + "isRequired": true, + "dataType": "string" + } + } + ], + "dataSources": [ + { + "name": "TestConnection", + "endpointUrl": "{{{endpoint.url}}}api/v4/users?username={{{endpoint.username}}}", + "resultSelector": "jsonpath:$[*]" + }, + { + "name": "Repositories", + "endpointUrl": "{{{endpoint.url}}}api/v4/projects?owned=true", + "resultSelector": "jsonpath:$[*]" + }, + { + "name": "Branches", + "endpointUrl": "{{{endpoint.url}}}api/v4/projects/{{{definition}}}/repository/branches", + "resultSelector": "jsonpath:$[*]" + }, + { + "name": "CommitsFromSelectedBranch", + "endpointUrl": "{{{endpoint.url}}}api/v4/projects/{{{definition}}}/repository/commits?ref_name={{{branch}}}", + "resultSelector": "jsonpath:$[*]" + }, + { + "name": "LatestCommit", + "endpointUrl": "{{{endpoint.url}}}api/v4/projects/{{{definition}}}/repository/commits", + "resultSelector": "jsonpath:$[0]" + }, + { + "name": "Artifacts", + "endpointUrl": "{{{endpoint.url}}}api/v4/projects/{{definition}}/repository/tree?path={{itemPath}}&ref={{branch}}", + "resultSelector": "jsonpath:$[*]" + } + ], + "authenticationSchemes": [ + { + "type": "ms.vss-endpoint.endpoint-auth-scheme-token", + "inputDescriptors": [ + { + "id": "apitoken", + "name": "API Token", + "description": "GitLab API Token", + "inputMode": "passwordbox", + "isConfidential": true, + "validation": { + "isRequired": true, + "dataType": "string" + }, + "helpMarkDown": "
Creating a personal access token" + } + ], + "headers": [ + { + "name": "Private-Token", + "value": "{{ endpoint.apitoken }}" + } + ] + } + ], + "helpMarkDown": "Learn more about Creating GitLab tokens and Service connections " + } + }, + { + "id": "gitlab-release-artifact-type", + "description": "GitLab Artifact", + "type": "ms.vss-releaseartifact.release-artifact-type", + "targets": [ + "ms.vss-releaseartifact.artifact-types" + ], + "properties": { + "name": "Gitlab", + "displayName": "GitLab", + "endpointTypeId": "gitlab:Token", + "uniqueSourceIdentifier": "{{connection}}:{{definition}}:{{branch}}", + "downloadTaskId": "e6590a51-c3b6-4b88-99e4-b3498ed7cd5b", + "artifactType": "SourceControl", + "inputDescriptors": [ + { + "id": "connection", + "name": "Service Endpoint", + "description": "Service Endpoint Id", + "inputMode": "Combo", + "isConfidential": false, + "hasDynamicValueInformation": true, + "validation": { + "isRequired": true, + "dataType": "string", + "maxLength": 300 + } + }, + { + "id": "definition", + "name": "Source (repository)", + "description": "Repository to pull", + "inputMode": "Combo", + "isConfidential": false, + "hasDynamicValueInformation": true, + "dependencyInputIds": [ + "connection" + ], + "validation": { + "isRequired": true, + "dataType": "string", + "maxLength": 300 + } + }, + { + "id": "defaultVersionType", + "name": "i18n:Default version", + "description": "i18n:The default version will be deployed when new releases are created. The version can be changed for manually created releases at the time of release creation", + "inputMode": "combo", + "isConfidential": false, + "hasDynamicValueInformation": false, + "validation": { + "isRequired": true, + "dataType": "string" + }, + "values": { + "inputId": "defaultVersionTypeValues", + "defaultValue": "latestType", + "isLimitedToPossibleValues": true, + "possibleValues": [ + { + "value": "latestType", + "displayValue": "i18n:Latest from default branch" + }, + { + "value": "latestFromBranchType", + "displayValue": "i18n:Latest from specific branch" + }, + { + "value": "selectDuringReleaseCreationType", + "displayValue": "i18n:Specify at the time of release creation" + } + ] + } + }, + { + "id": "branch", + "name": "i18n: Branch", + "description": "i18n: Artifacts from selected branch will be included in release.", + "inputMode": "Combo", + "isConfidential": false, + "hasDynamicValueInformation": true, + "validation": { + "isRequired": true, + "dataType": "string" + }, + "dependencyInputIds": [ + "connection", + "definition", + "defaultVersionType" + ], + "properties": { + "visibleRule": "defaultVersionType == latestFromBranchType" + } + } + ], + "dataSourceBindings": [ + { + "target": "definition", + "dataSourceName": "Repositories", + "resultTemplate": "{ Value : \"{{id}}\", DisplayValue : \"{{{path_with_namespace}}}\" }" + }, + { + "target": "branch", + "dataSourceName": "Branches", + "resultTemplate": "{ Value : \"{{{name}}}\", DisplayValue : \"{{{name}}}\" }" + }, + { + "target": "versions", + "dataSourceName": "CommitsFromSelectedBranch", + "resultTemplate": "{ Value : \"{{id}}\", DisplayValue : \"{{{short_id}}}\" }" + }, + { + "target": "latestversion", + "dataSourceName": "LatestCommit", + "resultTemplate": "{ Value : \"{{id}}\", DisplayValue : \"{{{short_id}}}\" }" + }, + { + "target": "artifacts", + "dataSourceName": "Artifacts", + "resultTemplate": "{ Value : \"{{{path}}}\", DisplayValue : \"{{{path}}}\", data: { {{ #stringReplace ['tree','blob'] ['artifactType:\"folder\"','itemType:\"file\"'] type }} } }" + }, + { + "target": "artifactItems", + "dataSourceName": "Artifacts", + "resultTemplate": "{ Value : \"{{{path}}}\", DisplayValue : \"{{{path}}}\", data: { itemType: \"{{ #stringReplace ['tree','blob'] ['folder','file'] type }}\" } }" + } + ], + "browsableArtifactTypeMapping": { + "folder": "artifactItems" + } + } + } + ] +}