From dc9b3284d742e5c40f83314c39ecb2d8a2ded48b Mon Sep 17 00:00:00 2001 From: Yuvraj Date: Sun, 6 Jun 2021 22:57:36 +0530 Subject: [PATCH] init v0.0.1 Signed-off-by: Yuvraj --- .eslintrc.js | 37 ++++++++++++++++ .gitignore | 2 + Makefile | 13 ++++++ action.yml | 11 +++++ dist/main.js | 11 +++++ dist/main.js.map | 7 +++ package.json | 34 ++++++++++++++ src/error.ts | 8 ++++ src/flytectl.ts | 112 +++++++++++++++++++++++++++++++++++++++++++++++ src/main.ts | 3 ++ src/run.ts | 55 +++++++++++++++++++++++ tsconfig.json | 23 ++++++++++ 12 files changed, 316 insertions(+) create mode 100644 .eslintrc.js create mode 100644 .gitignore create mode 100644 Makefile create mode 100644 action.yml create mode 100644 dist/main.js create mode 100644 dist/main.js.map create mode 100644 package.json create mode 100644 src/error.ts create mode 100644 src/flytectl.ts create mode 100644 src/main.ts create mode 100644 src/run.ts create mode 100644 tsconfig.json diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..c2fca40 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,37 @@ + +module.exports = { + env: { + es2021: true + }, + extends: [ + "eslint:recommended", + "plugin:@typescript-eslint/recommended", + "plugin:@typescript-eslint/recommended-requiring-type-checking", + ], + parser: "@typescript-eslint/parser", + parserOptions: { + project: "tsconfig.json", + tsconfigRootDir: __dirname, + ecmaFeatures: { + jsx: true + }, + ecmaVersion: 12, + sourceType: "module", + }, + plugins: [ + "@typescript-eslint", + ], + ignorePatterns: [ + ".eslintrc.js", + ], + rules: { + "@typescript-eslint/strict-boolean-expressions": "error", + "@typescript-eslint/no-unnecessary-condition": "error", + "@typescript-eslint/array-type": "error", + "@typescript-eslint/switch-exhaustiveness-check": "error", + "@typescript-eslint/prefer-nullish-coalescing": "error", + "@typescript-eslint/no-unnecessary-boolean-literal-compare": "error", + "@typescript-eslint/no-invalid-void-type": "error", + "@typescript-eslint/no-base-to-string": "error" + }, +}; diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..23d67fc --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +node_modules/ +yarn.lock diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..bfb0073 --- /dev/null +++ b/Makefile @@ -0,0 +1,13 @@ +.PHONY: build +build: + @tsc + @eslint ./src + @esbuild \ + --minify \ + --bundle \ + --sourcemap \ + '--define:process.env.NODE_ENV="production"' \ + --outdir=dist \ + --platform=node \ + --target=node12 \ + ./src/main.ts \ No newline at end of file diff --git a/action.yml b/action.yml new file mode 100644 index 0000000..b300ed1 --- /dev/null +++ b/action.yml @@ -0,0 +1,11 @@ +name: 'flytectl-setup-action' +description: > + Install and setup flytectl for use in other actions +inputs: + version: + description: 'The version of flytectl to setup.' + required: false + default: 'latest' +runs: + using: 'node12' + main: './dist/main.js' diff --git a/dist/main.js b/dist/main.js new file mode 100644 index 0000000..16c7ec0 --- /dev/null +++ b/dist/main.js @@ -0,0 +1,11 @@ +var Mi=Object.create;var tt=Object.defineProperty,Bi=Object.defineProperties,Gi=Object.getOwnPropertyDescriptor,Vi=Object.getOwnPropertyDescriptors,Hi=Object.getOwnPropertyNames,gr=Object.getOwnPropertySymbols,zi=Object.getPrototypeOf,Er=Object.prototype.hasOwnProperty,Xi=Object.prototype.propertyIsEnumerable;var vr=(e,t,r)=>t in e?tt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,wr=(e,t)=>{for(var r in t||(t={}))Er.call(t,r)&&vr(e,r,t[r]);if(gr)for(var r of gr(t))Xi.call(t,r)&&vr(e,r,t[r]);return e},br=(e,t)=>Bi(e,Vi(t)),Wi=e=>tt(e,"__esModule",{value:!0});var b=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Ji=(e,t,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Hi(t))!Er.call(e,n)&&n!=="default"&&tt(e,n,{get:()=>t[n],enumerable:!(r=Gi(t,n))||r.enumerable});return e},fe=e=>Ji(Wi(tt(e!=null?Mi(zi(e)):{},"default",e&&e.__esModule&&"default"in e?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e);var nt=b(rt=>{"use strict";Object.defineProperty(rt,"__esModule",{value:!0});rt.toCommandValue=void 0;function Yi(e){return e==null?"":typeof e=="string"||e instanceof String?e:JSON.stringify(e)}rt.toCommandValue=Yi});var Tr=b(k=>{"use strict";var Zi=k&&k.__createBinding||(Object.create?function(e,t,r,n){n===void 0&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){n===void 0&&(n=r),e[n]=t[r]}),Qi=k&&k.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Ki=k&&k.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.hasOwnProperty.call(e,r)&&Zi(t,e,r);return Qi(t,e),t};Object.defineProperty(k,"__esModule",{value:!0});k.issue=k.issueCommand=void 0;var es=Ki(require("os")),Or=nt();function Sr(e,t,r){let n=new _r(e,t,r);process.stdout.write(n.toString()+es.EOL)}k.issueCommand=Sr;function ts(e,t=""){Sr(e,{},t)}k.issue=ts;var Rr="::",_r=class{constructor(t,r,n){t||(t="missing.command"),this.command=t,this.properties=r,this.message=n}toString(){let t=Rr+this.command;if(this.properties&&Object.keys(this.properties).length>0){t+=" ";let r=!0;for(let n in this.properties)if(this.properties.hasOwnProperty(n)){let i=this.properties[n];i&&(r?r=!1:t+=",",t+=`${n}=${ns(i)}`)}}return t+=`${Rr}${rs(this.message)}`,t}};function rs(e){return Or.toCommandValue(e).replace(/%/g,"%25").replace(/\r/g,"%0D").replace(/\n/g,"%0A")}function ns(e){return Or.toCommandValue(e).replace(/%/g,"%25").replace(/\r/g,"%0D").replace(/\n/g,"%0A").replace(/:/g,"%3A").replace(/,/g,"%2C")}});var Pr=b(Q=>{"use strict";var is=Q&&Q.__createBinding||(Object.create?function(e,t,r,n){n===void 0&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){n===void 0&&(n=r),e[n]=t[r]}),ss=Q&&Q.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Ar=Q&&Q.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.hasOwnProperty.call(e,r)&&is(t,e,r);return ss(t,e),t};Object.defineProperty(Q,"__esModule",{value:!0});Q.issueCommand=void 0;var Ir=Ar(require("fs")),os=Ar(require("os")),as=nt();function us(e,t){let r=process.env[`GITHUB_${e}`];if(!r)throw new Error(`Unable to find environment variable for file command ${e}`);if(!Ir.existsSync(r))throw new Error(`Missing file at path: ${r}`);Ir.appendFileSync(r,`${as.toCommandValue(t)}${os.EOL}`,{encoding:"utf8"})}Q.issueCommand=us});var Pe=b(p=>{"use strict";var cs=p&&p.__createBinding||(Object.create?function(e,t,r,n){n===void 0&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){n===void 0&&(n=r),e[n]=t[r]}),ls=p&&p.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Nr=p&&p.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.hasOwnProperty.call(e,r)&&cs(t,e,r);return ls(t,e),t},fs=p&&p.__awaiter||function(e,t,r,n){function i(s){return s instanceof r?s:new r(function(o){o(s)})}return new(r||(r=Promise))(function(s,o){function a(l){try{c(n.next(l))}catch(d){o(d)}}function u(l){try{c(n.throw(l))}catch(d){o(d)}}function c(l){l.done?s(l.value):i(l.value).then(a,u)}c((n=n.apply(e,t||[])).next())})};Object.defineProperty(p,"__esModule",{value:!0});p.getState=p.saveState=p.group=p.endGroup=p.startGroup=p.info=p.warning=p.error=p.debug=p.isDebug=p.setFailed=p.setCommandEcho=p.setOutput=p.getBooleanInput=p.getInput=p.addPath=p.setSecret=p.exportVariable=p.ExitCode=void 0;var W=Tr(),xr=Pr(),hs=nt(),it=Nr(require("os")),ds=Nr(require("path")),Lr;(function(e){e[e.Success=0]="Success",e[e.Failure=1]="Failure"})(Lr=p.ExitCode||(p.ExitCode={}));function ps(e,t){let r=hs.toCommandValue(t);if(process.env[e]=r,process.env.GITHUB_ENV||""){let i="_GitHubActionsFileCommandDelimeter_",s=`${e}<<${i}${it.EOL}${r}${it.EOL}${i}`;xr.issueCommand("ENV",s)}else W.issueCommand("set-env",{name:e},r)}p.exportVariable=ps;function ms(e){W.issueCommand("add-mask",{},e)}p.setSecret=ms;function ys(e){process.env.GITHUB_PATH||""?xr.issueCommand("PATH",e):W.issueCommand("add-path",{},e),process.env.PATH=`${e}${ds.delimiter}${process.env.PATH}`}p.addPath=ys;function Cr(e,t){let r=process.env[`INPUT_${e.replace(/ /g,"_").toUpperCase()}`]||"";if(t&&t.required&&!r)throw new Error(`Input required and not supplied: ${e}`);return t&&t.trimWhitespace===!1?r:r.trim()}p.getInput=Cr;function gs(e,t){let r=["true","True","TRUE"],n=["false","False","FALSE"],i=Cr(e,t);if(r.includes(i))return!0;if(n.includes(i))return!1;throw new TypeError(`Input does not meet YAML 1.2 "Core Schema" specification: ${e} +Support boolean input list: \`true | True | TRUE | false | False | FALSE\``)}p.getBooleanInput=gs;function Es(e,t){process.stdout.write(it.EOL),W.issueCommand("set-output",{name:e},t)}p.setOutput=Es;function vs(e){W.issue("echo",e?"on":"off")}p.setCommandEcho=vs;function ws(e){process.exitCode=Lr.Failure,$r(e)}p.setFailed=ws;function bs(){return process.env.RUNNER_DEBUG==="1"}p.isDebug=bs;function Os(e){W.issueCommand("debug",{},e)}p.debug=Os;function $r(e){W.issue("error",e instanceof Error?e.toString():e)}p.error=$r;function Ss(e){W.issue("warning",e instanceof Error?e.toString():e)}p.warning=Ss;function Rs(e){process.stdout.write(e+it.EOL)}p.info=Rs;function jr(e){W.issue("group",e)}p.startGroup=jr;function qr(){W.issue("endgroup")}p.endGroup=qr;function _s(e,t){return fs(this,void 0,void 0,function*(){jr(e);let r;try{r=yield t()}finally{qr()}return r})}p.group=_s;function Ts(e,t){W.issueCommand("save-state",{name:e},t)}p.saveState=Ts;function As(e){return process.env[`STATE_${e}`]||""}p.getState=As});var At=b(w=>{"use strict";var st=w&&w.__awaiter||function(e,t,r,n){function i(s){return s instanceof r?s:new r(function(o){o(s)})}return new(r||(r=Promise))(function(s,o){function a(l){try{c(n.next(l))}catch(d){o(d)}}function u(l){try{c(n.throw(l))}catch(d){o(d)}}function c(l){l.done?s(l.value):i(l.value).then(a,u)}c((n=n.apply(e,t||[])).next())})},Dr=w&&w.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)Object.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t},M;Object.defineProperty(w,"__esModule",{value:!0});var Is=require("assert"),Ps=Dr(require("fs")),Ne=Dr(require("path"));M=Ps.promises,w.chmod=M.chmod,w.copyFile=M.copyFile,w.lstat=M.lstat,w.mkdir=M.mkdir,w.readdir=M.readdir,w.readlink=M.readlink,w.rename=M.rename,w.rmdir=M.rmdir,w.stat=M.stat,w.symlink=M.symlink,w.unlink=M.unlink;w.IS_WINDOWS=process.platform==="win32";function Ns(e){return st(this,void 0,void 0,function*(){try{yield w.stat(e)}catch(t){if(t.code==="ENOENT")return!1;throw t}return!0})}w.exists=Ns;function xs(e,t=!1){return st(this,void 0,void 0,function*(){return(t?yield w.stat(e):yield w.lstat(e)).isDirectory()})}w.isDirectory=xs;function Ls(e){if(e=$s(e),!e)throw new Error('isRooted() parameter "p" cannot be empty');return w.IS_WINDOWS?e.startsWith("\\")||/^[A-Z]:/i.test(e):e.startsWith("/")}w.isRooted=Ls;function Ur(e,t=1e3,r=1){return st(this,void 0,void 0,function*(){if(Is.ok(e,"a path argument must be provided"),e=Ne.resolve(e),r>=t)return w.mkdir(e);try{yield w.mkdir(e);return}catch(n){switch(n.code){case"ENOENT":{yield Ur(Ne.dirname(e),t,r+1),yield w.mkdir(e);return}default:{let i;try{i=yield w.stat(e)}catch(s){throw n}if(!i.isDirectory())throw n}}}})}w.mkdirP=Ur;function Cs(e,t){return st(this,void 0,void 0,function*(){let r;try{r=yield w.stat(e)}catch(i){i.code!=="ENOENT"&&console.log(`Unexpected error attempting to determine if executable file exists '${e}': ${i}`)}if(r&&r.isFile()){if(w.IS_WINDOWS){let i=Ne.extname(e).toUpperCase();if(t.some(s=>s.toUpperCase()===i))return e}else if(Fr(r))return e}let n=e;for(let i of t){e=n+i,r=void 0;try{r=yield w.stat(e)}catch(s){s.code!=="ENOENT"&&console.log(`Unexpected error attempting to determine if executable file exists '${e}': ${s}`)}if(r&&r.isFile()){if(w.IS_WINDOWS){try{let s=Ne.dirname(e),o=Ne.basename(e).toUpperCase();for(let a of yield w.readdir(s))if(o===a.toUpperCase()){e=Ne.join(s,a);break}}catch(s){console.log(`Unexpected error attempting to determine the actual case of the file '${e}': ${s}`)}return e}else if(Fr(r))return e}}return""})}w.tryGetExecutablePath=Cs;function $s(e){return e=e||"",w.IS_WINDOWS?(e=e.replace(/\//g,"\\"),e.replace(/\\\\+/g,"\\")):e.replace(/\/\/+/g,"/")}function Fr(e){return(e.mode&1)>0||(e.mode&8)>0&&e.gid===process.getgid()||(e.mode&64)>0&&e.uid===process.getuid()}});var ot=b(B=>{"use strict";var he=B&&B.__awaiter||function(e,t,r,n){function i(s){return s instanceof r?s:new r(function(o){o(s)})}return new(r||(r=Promise))(function(s,o){function a(l){try{c(n.next(l))}catch(d){o(d)}}function u(l){try{c(n.throw(l))}catch(d){o(d)}}function c(l){l.done?s(l.value):i(l.value).then(a,u)}c((n=n.apply(e,t||[])).next())})},It=B&&B.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)Object.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t};Object.defineProperty(B,"__esModule",{value:!0});var js=It(require("child_process")),K=It(require("path")),qs=require("util"),O=It(At()),Pt=qs.promisify(js.exec);function Ds(e,t,r={}){return he(this,void 0,void 0,function*(){let{force:n,recursive:i}=Fs(r),s=(yield O.exists(t))?yield O.stat(t):null;if(s&&s.isFile()&&!n)return;let o=s&&s.isDirectory()?K.join(t,K.basename(e)):t;if(!(yield O.exists(e)))throw new Error(`no such file or directory: ${e}`);if((yield O.stat(e)).isDirectory())if(i)yield Gr(e,o,0,n);else throw new Error(`Failed to copy. ${e} is a directory, but tried to copy without recursive flag.`);else{if(K.relative(e,o)==="")throw new Error(`'${o}' and '${e}' are the same file`);yield Vr(e,o,n)}})}B.cp=Ds;function Us(e,t,r={}){return he(this,void 0,void 0,function*(){if(yield O.exists(t)){let n=!0;if((yield O.isDirectory(t))&&(t=K.join(t,K.basename(e)),n=yield O.exists(t)),n)if(r.force==null||r.force)yield kr(t);else throw new Error("Destination already exists")}yield Nt(K.dirname(t)),yield O.rename(e,t)})}B.mv=Us;function kr(e){return he(this,void 0,void 0,function*(){if(O.IS_WINDOWS){try{(yield O.isDirectory(e,!0))?yield Pt(`rd /s /q "${e}"`):yield Pt(`del /f /a "${e}"`)}catch(t){if(t.code!=="ENOENT")throw t}try{yield O.unlink(e)}catch(t){if(t.code!=="ENOENT")throw t}}else{let t=!1;try{t=yield O.isDirectory(e)}catch(r){if(r.code!=="ENOENT")throw r;return}t?yield Pt(`rm -rf "${e}"`):yield O.unlink(e)}})}B.rmRF=kr;function Nt(e){return he(this,void 0,void 0,function*(){yield O.mkdirP(e)})}B.mkdirP=Nt;function Mr(e,t){return he(this,void 0,void 0,function*(){if(!e)throw new Error("parameter 'tool' is required");if(t){let n=yield Mr(e,!1);if(!n)throw O.IS_WINDOWS?new Error(`Unable to locate executable file: ${e}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also verify the file has a valid extension for an executable file.`):new Error(`Unable to locate executable file: ${e}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.`);return n}let r=yield Br(e);return r&&r.length>0?r[0]:""})}B.which=Mr;function Br(e){return he(this,void 0,void 0,function*(){if(!e)throw new Error("parameter 'tool' is required");let t=[];if(O.IS_WINDOWS&&process.env.PATHEXT)for(let i of process.env.PATHEXT.split(K.delimiter))i&&t.push(i);if(O.isRooted(e)){let i=yield O.tryGetExecutablePath(e,t);return i?[i]:[]}if(e.includes(K.sep))return[];let r=[];if(process.env.PATH)for(let i of process.env.PATH.split(K.delimiter))i&&r.push(i);let n=[];for(let i of r){let s=yield O.tryGetExecutablePath(K.join(i,e),t);s&&n.push(s)}return n})}B.findInPath=Br;function Fs(e){let t=e.force==null?!0:e.force,r=Boolean(e.recursive);return{force:t,recursive:r}}function Gr(e,t,r,n){return he(this,void 0,void 0,function*(){if(r>=255)return;r++,yield Nt(t);let i=yield O.readdir(e);for(let s of i){let o=`${e}/${s}`,a=`${t}/${s}`;(yield O.lstat(o)).isDirectory()?yield Gr(o,a,r,n):yield Vr(o,a,n)}yield O.chmod(t,(yield O.stat(e)).mode)})}function Vr(e,t,r){return he(this,void 0,void 0,function*(){if((yield O.lstat(e)).isSymbolicLink()){try{yield O.lstat(t),yield O.unlink(t)}catch(i){i.code==="EPERM"&&(yield O.chmod(t,"0666"),yield O.unlink(t))}let n=yield O.readlink(e);yield O.symlink(n,t,O.IS_WINDOWS?"junction":null)}else(!(yield O.exists(t))||r)&&(yield O.copyFile(e,t))})}});var Dt=b((m,Jr)=>{m=Jr.exports=g;var _;typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?_=function(){var e=Array.prototype.slice.call(arguments,0);e.unshift("SEMVER"),console.log.apply(console,e)}:_=function(){};m.SEMVER_SPEC_VERSION="2.0.0";var xt=256,at=Number.MAX_SAFE_INTEGER||9007199254740991,Lt=16,R=m.re=[],h=m.src=[],f=m.tokens={},Hr=0;function v(e){f[e]=Hr++}v("NUMERICIDENTIFIER");h[f.NUMERICIDENTIFIER]="0|[1-9]\\d*";v("NUMERICIDENTIFIERLOOSE");h[f.NUMERICIDENTIFIERLOOSE]="[0-9]+";v("NONNUMERICIDENTIFIER");h[f.NONNUMERICIDENTIFIER]="\\d*[a-zA-Z-][a-zA-Z0-9-]*";v("MAINVERSION");h[f.MAINVERSION]="("+h[f.NUMERICIDENTIFIER]+")\\.("+h[f.NUMERICIDENTIFIER]+")\\.("+h[f.NUMERICIDENTIFIER]+")";v("MAINVERSIONLOOSE");h[f.MAINVERSIONLOOSE]="("+h[f.NUMERICIDENTIFIERLOOSE]+")\\.("+h[f.NUMERICIDENTIFIERLOOSE]+")\\.("+h[f.NUMERICIDENTIFIERLOOSE]+")";v("PRERELEASEIDENTIFIER");h[f.PRERELEASEIDENTIFIER]="(?:"+h[f.NUMERICIDENTIFIER]+"|"+h[f.NONNUMERICIDENTIFIER]+")";v("PRERELEASEIDENTIFIERLOOSE");h[f.PRERELEASEIDENTIFIERLOOSE]="(?:"+h[f.NUMERICIDENTIFIERLOOSE]+"|"+h[f.NONNUMERICIDENTIFIER]+")";v("PRERELEASE");h[f.PRERELEASE]="(?:-("+h[f.PRERELEASEIDENTIFIER]+"(?:\\."+h[f.PRERELEASEIDENTIFIER]+")*))";v("PRERELEASELOOSE");h[f.PRERELEASELOOSE]="(?:-?("+h[f.PRERELEASEIDENTIFIERLOOSE]+"(?:\\."+h[f.PRERELEASEIDENTIFIERLOOSE]+")*))";v("BUILDIDENTIFIER");h[f.BUILDIDENTIFIER]="[0-9A-Za-z-]+";v("BUILD");h[f.BUILD]="(?:\\+("+h[f.BUILDIDENTIFIER]+"(?:\\."+h[f.BUILDIDENTIFIER]+")*))";v("FULL");v("FULLPLAIN");h[f.FULLPLAIN]="v?"+h[f.MAINVERSION]+h[f.PRERELEASE]+"?"+h[f.BUILD]+"?";h[f.FULL]="^"+h[f.FULLPLAIN]+"$";v("LOOSEPLAIN");h[f.LOOSEPLAIN]="[v=\\s]*"+h[f.MAINVERSIONLOOSE]+h[f.PRERELEASELOOSE]+"?"+h[f.BUILD]+"?";v("LOOSE");h[f.LOOSE]="^"+h[f.LOOSEPLAIN]+"$";v("GTLT");h[f.GTLT]="((?:<|>)?=?)";v("XRANGEIDENTIFIERLOOSE");h[f.XRANGEIDENTIFIERLOOSE]=h[f.NUMERICIDENTIFIERLOOSE]+"|x|X|\\*";v("XRANGEIDENTIFIER");h[f.XRANGEIDENTIFIER]=h[f.NUMERICIDENTIFIER]+"|x|X|\\*";v("XRANGEPLAIN");h[f.XRANGEPLAIN]="[v=\\s]*("+h[f.XRANGEIDENTIFIER]+")(?:\\.("+h[f.XRANGEIDENTIFIER]+")(?:\\.("+h[f.XRANGEIDENTIFIER]+")(?:"+h[f.PRERELEASE]+")?"+h[f.BUILD]+"?)?)?";v("XRANGEPLAINLOOSE");h[f.XRANGEPLAINLOOSE]="[v=\\s]*("+h[f.XRANGEIDENTIFIERLOOSE]+")(?:\\.("+h[f.XRANGEIDENTIFIERLOOSE]+")(?:\\.("+h[f.XRANGEIDENTIFIERLOOSE]+")(?:"+h[f.PRERELEASELOOSE]+")?"+h[f.BUILD]+"?)?)?";v("XRANGE");h[f.XRANGE]="^"+h[f.GTLT]+"\\s*"+h[f.XRANGEPLAIN]+"$";v("XRANGELOOSE");h[f.XRANGELOOSE]="^"+h[f.GTLT]+"\\s*"+h[f.XRANGEPLAINLOOSE]+"$";v("COERCE");h[f.COERCE]="(^|[^\\d])(\\d{1,"+Lt+"})(?:\\.(\\d{1,"+Lt+"}))?(?:\\.(\\d{1,"+Lt+"}))?(?:$|[^\\d])";v("COERCERTL");R[f.COERCERTL]=new RegExp(h[f.COERCE],"g");v("LONETILDE");h[f.LONETILDE]="(?:~>?)";v("TILDETRIM");h[f.TILDETRIM]="(\\s*)"+h[f.LONETILDE]+"\\s+";R[f.TILDETRIM]=new RegExp(h[f.TILDETRIM],"g");var ks="$1~";v("TILDE");h[f.TILDE]="^"+h[f.LONETILDE]+h[f.XRANGEPLAIN]+"$";v("TILDELOOSE");h[f.TILDELOOSE]="^"+h[f.LONETILDE]+h[f.XRANGEPLAINLOOSE]+"$";v("LONECARET");h[f.LONECARET]="(?:\\^)";v("CARETTRIM");h[f.CARETTRIM]="(\\s*)"+h[f.LONECARET]+"\\s+";R[f.CARETTRIM]=new RegExp(h[f.CARETTRIM],"g");var Ms="$1^";v("CARET");h[f.CARET]="^"+h[f.LONECARET]+h[f.XRANGEPLAIN]+"$";v("CARETLOOSE");h[f.CARETLOOSE]="^"+h[f.LONECARET]+h[f.XRANGEPLAINLOOSE]+"$";v("COMPARATORLOOSE");h[f.COMPARATORLOOSE]="^"+h[f.GTLT]+"\\s*("+h[f.LOOSEPLAIN]+")$|^$";v("COMPARATOR");h[f.COMPARATOR]="^"+h[f.GTLT]+"\\s*("+h[f.FULLPLAIN]+")$|^$";v("COMPARATORTRIM");h[f.COMPARATORTRIM]="(\\s*)"+h[f.GTLT]+"\\s*("+h[f.LOOSEPLAIN]+"|"+h[f.XRANGEPLAIN]+")";R[f.COMPARATORTRIM]=new RegExp(h[f.COMPARATORTRIM],"g");var Bs="$1$2$3";v("HYPHENRANGE");h[f.HYPHENRANGE]="^\\s*("+h[f.XRANGEPLAIN]+")\\s+-\\s+("+h[f.XRANGEPLAIN]+")\\s*$";v("HYPHENRANGELOOSE");h[f.HYPHENRANGELOOSE]="^\\s*("+h[f.XRANGEPLAINLOOSE]+")\\s+-\\s+("+h[f.XRANGEPLAINLOOSE]+")\\s*$";v("STAR");h[f.STAR]="(<|>)?=?\\s*\\*";for(var be=0;bext)return null;var r=t.loose?R[f.LOOSE]:R[f.FULL];if(!r.test(e))return null;try{return new g(e,t)}catch(n){return null}}m.valid=Gs;function Gs(e,t){var r=Oe(e,t);return r?r.version:null}m.clean=Vs;function Vs(e,t){var r=Oe(e.trim().replace(/^[=v]+/,""),t);return r?r.version:null}m.SemVer=g;function g(e,t){if((!t||typeof t!="object")&&(t={loose:!!t,includePrerelease:!1}),e instanceof g){if(e.loose===t.loose)return e;e=e.version}else if(typeof e!="string")throw new TypeError("Invalid Version: "+e);if(e.length>xt)throw new TypeError("version is longer than "+xt+" characters");if(!(this instanceof g))return new g(e,t);_("SemVer",e,t),this.options=t,this.loose=!!t.loose;var r=e.trim().match(t.loose?R[f.LOOSE]:R[f.FULL]);if(!r)throw new TypeError("Invalid Version: "+e);if(this.raw=e,this.major=+r[1],this.minor=+r[2],this.patch=+r[3],this.major>at||this.major<0)throw new TypeError("Invalid major version");if(this.minor>at||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>at||this.patch<0)throw new TypeError("Invalid patch version");r[4]?this.prerelease=r[4].split(".").map(function(n){if(/^[0-9]+$/.test(n)){var i=+n;if(i>=0&&i=0;)typeof this.prerelease[r]=="number"&&(this.prerelease[r]++,r=-2);r===-1&&this.prerelease.push(0)}t&&(this.prerelease[0]===t?isNaN(this.prerelease[1])&&(this.prerelease=[t,0]):this.prerelease=[t,0]);break;default:throw new Error("invalid increment argument: "+e)}return this.format(),this.raw=this.version,this};m.inc=Hs;function Hs(e,t,r,n){typeof r=="string"&&(n=r,r=void 0);try{return new g(e,r).inc(t,n).version}catch(i){return null}}m.diff=zs;function zs(e,t){if(Ct(e,t))return null;var r=Oe(e),n=Oe(t),i="";if(r.prerelease.length||n.prerelease.length){i="pre";var s="prerelease"}for(var o in r)if((o==="major"||o==="minor"||o==="patch")&&r[o]!==n[o])return i+o;return s}m.compareIdentifiers=Se;var zr=/^[0-9]+$/;function Se(e,t){var r=zr.test(e),n=zr.test(t);return r&&n&&(e=+e,t=+t),e===t?0:r&&!n?-1:n&&!r?1:e0}m.lt=ut;function ut(e,t,r){return re(e,t,r)<0}m.eq=Ct;function Ct(e,t,r){return re(e,t,r)===0}m.neq=Xr;function Xr(e,t,r){return re(e,t,r)!==0}m.gte=$t;function $t(e,t,r){return re(e,t,r)>=0}m.lte=jt;function jt(e,t,r){return re(e,t,r)<=0}m.cmp=ct;function ct(e,t,r,n){switch(t){case"===":return typeof e=="object"&&(e=e.version),typeof r=="object"&&(r=r.version),e===r;case"!==":return typeof e=="object"&&(e=e.version),typeof r=="object"&&(r=r.version),e!==r;case"":case"=":case"==":return Ct(e,r,n);case"!=":return Xr(e,r,n);case">":return Ge(e,r,n);case">=":return $t(e,r,n);case"<":return ut(e,r,n);case"<=":return jt(e,r,n);default:throw new TypeError("Invalid operator: "+t)}}m.Comparator=G;function G(e,t){if((!t||typeof t!="object")&&(t={loose:!!t,includePrerelease:!1}),e instanceof G){if(e.loose===!!t.loose)return e;e=e.value}if(!(this instanceof G))return new G(e,t);_("comparator",e,t),this.options=t,this.loose=!!t.loose,this.parse(e),this.semver===xe?this.value="":this.value=this.operator+this.semver.version,_("comp",this)}var xe={};G.prototype.parse=function(e){var t=this.options.loose?R[f.COMPARATORLOOSE]:R[f.COMPARATOR],r=e.match(t);if(!r)throw new TypeError("Invalid comparator: "+e);this.operator=r[1]!==void 0?r[1]:"",this.operator==="="&&(this.operator=""),r[2]?this.semver=new g(r[2],this.options.loose):this.semver=xe};G.prototype.toString=function(){return this.value};G.prototype.test=function(e){if(_("Comparator.test",e,this.options.loose),this.semver===xe||e===xe)return!0;if(typeof e=="string")try{e=new g(e,this.options)}catch(t){return!1}return ct(e,this.operator,this.semver,this.options)};G.prototype.intersects=function(e,t){if(!(e instanceof G))throw new TypeError("a Comparator is required");(!t||typeof t!="object")&&(t={loose:!!t,includePrerelease:!1});var r;if(this.operator==="")return this.value===""?!0:(r=new I(e.value,t),lt(this.value,r,t));if(e.operator==="")return e.value===""?!0:(r=new I(this.value,t),lt(e.semver,r,t));var n=(this.operator===">="||this.operator===">")&&(e.operator===">="||e.operator===">"),i=(this.operator==="<="||this.operator==="<")&&(e.operator==="<="||e.operator==="<"),s=this.semver.version===e.semver.version,o=(this.operator===">="||this.operator==="<=")&&(e.operator===">="||e.operator==="<="),a=ct(this.semver,"<",e.semver,t)&&(this.operator===">="||this.operator===">")&&(e.operator==="<="||e.operator==="<"),u=ct(this.semver,">",e.semver,t)&&(this.operator==="<="||this.operator==="<")&&(e.operator===">="||e.operator===">");return n||i||s&&o||a||u};m.Range=I;function I(e,t){if((!t||typeof t!="object")&&(t={loose:!!t,includePrerelease:!1}),e instanceof I)return e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease?e:new I(e.raw,t);if(e instanceof G)return new I(e.value,t);if(!(this instanceof I))return new I(e,t);if(this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease,this.raw=e,this.set=e.split(/\s*\|\|\s*/).map(function(r){return this.parseRange(r.trim())},this).filter(function(r){return r.length}),!this.set.length)throw new TypeError("Invalid SemVer Range: "+e);this.format()}I.prototype.format=function(){return this.range=this.set.map(function(e){return e.join(" ").trim()}).join("||").trim(),this.range};I.prototype.toString=function(){return this.range};I.prototype.parseRange=function(e){var t=this.options.loose;e=e.trim();var r=t?R[f.HYPHENRANGELOOSE]:R[f.HYPHENRANGE];e=e.replace(r,fo),_("hyphen replace",e),e=e.replace(R[f.COMPARATORTRIM],Bs),_("comparator trim",e,R[f.COMPARATORTRIM]),e=e.replace(R[f.TILDETRIM],ks),e=e.replace(R[f.CARETTRIM],Ms),e=e.split(/\s+/).join(" ");var n=t?R[f.COMPARATORLOOSE]:R[f.COMPARATOR],i=e.split(" ").map(function(s){return no(s,this.options)},this).join(" ").split(/\s+/);return this.options.loose&&(i=i.filter(function(s){return!!s.match(n)})),i=i.map(function(s){return new G(s,this.options)},this),i};I.prototype.intersects=function(e,t){if(!(e instanceof I))throw new TypeError("a Range is required");return this.set.some(function(r){return Wr(r,t)&&e.set.some(function(n){return Wr(n,t)&&r.every(function(i){return n.every(function(s){return i.intersects(s,t)})})})})};function Wr(e,t){for(var r=!0,n=e.slice(),i=n.pop();r&&n.length;)r=n.every(function(s){return i.intersects(s,t)}),i=n.pop();return r}m.toComparators=ro;function ro(e,t){return new I(e,t).set.map(function(r){return r.map(function(n){return n.value}).join(" ").trim().split(" ")})}function no(e,t){return _("comp",e,t),e=oo(e,t),_("caret",e),e=io(e,t),_("tildes",e),e=uo(e,t),_("xrange",e),e=lo(e,t),_("stars",e),e}function C(e){return!e||e.toLowerCase()==="x"||e==="*"}function io(e,t){return e.trim().split(/\s+/).map(function(r){return so(r,t)}).join(" ")}function so(e,t){var r=t.loose?R[f.TILDELOOSE]:R[f.TILDE];return e.replace(r,function(n,i,s,o,a){_("tilde",e,n,i,s,o,a);var u;return C(i)?u="":C(s)?u=">="+i+".0.0 <"+(+i+1)+".0.0":C(o)?u=">="+i+"."+s+".0 <"+i+"."+(+s+1)+".0":a?(_("replaceTilde pr",a),u=">="+i+"."+s+"."+o+"-"+a+" <"+i+"."+(+s+1)+".0"):u=">="+i+"."+s+"."+o+" <"+i+"."+(+s+1)+".0",_("tilde return",u),u})}function oo(e,t){return e.trim().split(/\s+/).map(function(r){return ao(r,t)}).join(" ")}function ao(e,t){_("caret",e,t);var r=t.loose?R[f.CARETLOOSE]:R[f.CARET];return e.replace(r,function(n,i,s,o,a){_("caret",e,n,i,s,o,a);var u;return C(i)?u="":C(s)?u=">="+i+".0.0 <"+(+i+1)+".0.0":C(o)?i==="0"?u=">="+i+"."+s+".0 <"+i+"."+(+s+1)+".0":u=">="+i+"."+s+".0 <"+(+i+1)+".0.0":a?(_("replaceCaret pr",a),i==="0"?s==="0"?u=">="+i+"."+s+"."+o+"-"+a+" <"+i+"."+s+"."+(+o+1):u=">="+i+"."+s+"."+o+"-"+a+" <"+i+"."+(+s+1)+".0":u=">="+i+"."+s+"."+o+"-"+a+" <"+(+i+1)+".0.0"):(_("no pr"),i==="0"?s==="0"?u=">="+i+"."+s+"."+o+" <"+i+"."+s+"."+(+o+1):u=">="+i+"."+s+"."+o+" <"+i+"."+(+s+1)+".0":u=">="+i+"."+s+"."+o+" <"+(+i+1)+".0.0"),_("caret return",u),u})}function uo(e,t){return _("replaceXRanges",e,t),e.split(/\s+/).map(function(r){return co(r,t)}).join(" ")}function co(e,t){e=e.trim();var r=t.loose?R[f.XRANGELOOSE]:R[f.XRANGE];return e.replace(r,function(n,i,s,o,a,u){_("xRange",e,n,i,s,o,a,u);var c=C(s),l=c||C(o),d=l||C(a),y=d;return i==="="&&y&&(i=""),u=t.includePrerelease?"-0":"",c?i===">"||i==="<"?n="<0.0.0-0":n="*":i&&y?(l&&(o=0),a=0,i===">"?(i=">=",l?(s=+s+1,o=0,a=0):(o=+o+1,a=0)):i==="<="&&(i="<",l?s=+s+1:o=+o+1),n=i+s+"."+o+"."+a+u):l?n=">="+s+".0.0"+u+" <"+(+s+1)+".0.0"+u:d&&(n=">="+s+"."+o+".0"+u+" <"+s+"."+(+o+1)+".0"+u),_("xRange return",n),n})}function lo(e,t){return _("replaceStars",e,t),e.trim().replace(R[f.STAR],"")}function fo(e,t,r,n,i,s,o,a,u,c,l,d,y){return C(r)?t="":C(n)?t=">="+r+".0.0":C(i)?t=">="+r+"."+n+".0":t=">="+t,C(u)?a="":C(c)?a="<"+(+u+1)+".0.0":C(l)?a="<"+u+"."+(+c+1)+".0":d?a="<="+u+"."+c+"."+l+"-"+d:a="<="+a,(t+" "+a).trim()}I.prototype.test=function(e){if(!e)return!1;if(typeof e=="string")try{e=new g(e,this.options)}catch(r){return!1}for(var t=0;t0){var i=e[n].semver;if(i.major===t.major&&i.minor===t.minor&&i.patch===t.patch)return!0}return!1}return!0}m.satisfies=lt;function lt(e,t,r){try{t=new I(t,r)}catch(n){return!1}return t.test(e)}m.maxSatisfying=po;function po(e,t,r){var n=null,i=null;try{var s=new I(t,r)}catch(o){return null}return e.forEach(function(o){s.test(o)&&(!n||i.compare(o)===-1)&&(n=o,i=new g(n,r))}),n}m.minSatisfying=mo;function mo(e,t,r){var n=null,i=null;try{var s=new I(t,r)}catch(o){return null}return e.forEach(function(o){s.test(o)&&(!n||i.compare(o)===1)&&(n=o,i=new g(n,r))}),n}m.minVersion=yo;function yo(e,t){e=new I(e,t);var r=new g("0.0.0");if(e.test(r)||(r=new g("0.0.0-0"),e.test(r)))return r;r=null;for(var n=0;n":o.prerelease.length===0?o.patch++:o.prerelease.push(0),o.raw=o.format();case"":case">=":(!r||Ge(r,o))&&(r=o);break;case"<":case"<=":break;default:throw new Error("Unexpected operation: "+s.operator)}})}return r&&e.test(r)?r:null}m.validRange=go;function go(e,t){try{return new I(e,t).range||"*"}catch(r){return null}}m.ltr=Eo;function Eo(e,t,r){return qt(e,t,"<",r)}m.gtr=vo;function vo(e,t,r){return qt(e,t,">",r)}m.outside=qt;function qt(e,t,r,n){e=new g(e,n),t=new I(t,n);var i,s,o,a,u;switch(r){case">":i=Ge,s=jt,o=ut,a=">",u=">=";break;case"<":i=ut,s=$t,o=Ge,a="<",u="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(lt(e,t,n))return!1;for(var c=0;c=0.0.0")),d=d||A,y=y||A,i(A.semver,d.semver,n)?d=A:o(A.semver,y.semver,n)&&(y=A)}),d.operator===a||d.operator===u||(!y.operator||y.operator===a)&&s(e,y.semver))return!1;if(y.operator===u&&o(e,y.semver))return!1}return!0}m.prerelease=wo;function wo(e,t){var r=Oe(e,t);return r&&r.prerelease.length?r.prerelease:null}m.intersects=bo;function bo(e,t,r){return e=new I(e,r),t=new I(t,r),e.intersects(t)}m.coerce=Oo;function Oo(e,t){if(e instanceof g)return e;if(typeof e=="number"&&(e=String(e)),typeof e!="string")return null;t=t||{};var r=null;if(!t.rtl)r=e.match(R[f.COERCE]);else{for(var n;(n=R[f.COERCERTL].exec(e))&&(!r||r.index+r[0].length!==e.length);)(!r||n.index+n[0].length!==r.index+r[0].length)&&(r=n),R[f.COERCERTL].lastIndex=n.index+n[1].length+n[2].length;R[f.COERCERTL].lastIndex=-1}return r===null?null:Oe(r[2]+"."+(r[3]||"0")+"."+(r[4]||"0"),t)}});var Kr=b((x,Ft)=>{"use strict";var So=x&&x.__createBinding||(Object.create?function(e,t,r,n){n===void 0&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){n===void 0&&(n=r),e[n]=t[r]}),Ro=x&&x.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),_o=x&&x.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.hasOwnProperty.call(e,r)&&So(t,e,r);return Ro(t,e),t},To=x&&x.__awaiter||function(e,t,r,n){function i(s){return s instanceof r?s:new r(function(o){o(s)})}return new(r||(r=Promise))(function(s,o){function a(l){try{c(n.next(l))}catch(d){o(d)}}function u(l){try{c(n.throw(l))}catch(d){o(d)}}function c(l){l.done?s(l.value):i(l.value).then(a,u)}c((n=n.apply(e,t||[])).next())})};Object.defineProperty(x,"__esModule",{value:!0});x._readLinuxVersionFile=x._getOsVersion=x._findMatch=void 0;var Yr=_o(Dt()),Ut=Pe(),Zr=require("os"),Ao=require("child_process"),Qr=require("fs");function Io(e,t,r,n){return To(this,void 0,void 0,function*(){let i=Zr.platform(),s,o,a;for(let u of r){let c=u.version;if(Ut.debug(`check ${c} satisfies ${e}`),Yr.satisfies(c,e)&&(!t||u.stable===t)&&(a=u.files.find(l=>{Ut.debug(`${l.arch}===${n} && ${l.platform}===${i}`);let d=l.arch===n&&l.platform===i;if(d&&l.platform_version){let y=Ft.exports._getOsVersion();y===l.platform_version?d=!0:d=Yr.satisfies(y,l.platform_version)}return d}),a)){Ut.debug(`matched ${u.version}`),o=u;break}}return o&&a&&(s=Object.assign({},o),s.files=[a]),s})}x._findMatch=Io;function Po(){let e=Zr.platform(),t="";if(e==="darwin")t=Ao.execSync("sw_vers -productVersion").toString();else if(e==="linux"){let r=Ft.exports._readLinuxVersionFile();if(r){let n=r.split(` +`);for(let i of n){let s=i.split("=");if(s.length===2&&s[0].trim()==="DISTRIB_RELEASE"){t=s[1].trim();break}}}}return t}x._getOsVersion=Po;function No(){let e="/etc/lsb-release",t="";return Qr.existsSync(e)&&(t=Qr.readFileSync(e).toString()),t}x._readLinuxVersionFile=No});var tn=b(ft=>{"use strict";Object.defineProperty(ft,"__esModule",{value:!0});function xo(e){let t=e.protocol==="https:",r;if(en(e))return r;let n;return t?n=process.env.https_proxy||process.env.HTTPS_PROXY:n=process.env.http_proxy||process.env.HTTP_PROXY,n&&(r=new URL(n)),r}ft.getProxyUrl=xo;function en(e){if(!e.hostname)return!1;let t=process.env.no_proxy||process.env.NO_PROXY||"";if(!t)return!1;let r;e.port?r=Number(e.port):e.protocol==="http:"?r=80:e.protocol==="https:"&&(r=443);let n=[e.hostname.toUpperCase()];typeof r=="number"&&n.push(`${n[0]}:${r}`);for(let i of t.split(",").map(s=>s.trim().toUpperCase()).filter(s=>s))if(n.some(s=>s===i))return!0;return!1}ft.checkBypass=en});var on=b(Le=>{"use strict";var Qu=require("net"),Lo=require("tls"),kt=require("http"),rn=require("https"),Co=require("events"),Ku=require("assert"),$o=require("util");Le.httpOverHttp=jo;Le.httpsOverHttp=qo;Le.httpOverHttps=Do;Le.httpsOverHttps=Uo;function jo(e){var t=new ne(e);return t.request=kt.request,t}function qo(e){var t=new ne(e);return t.request=kt.request,t.createSocket=nn,t.defaultPort=443,t}function Do(e){var t=new ne(e);return t.request=rn.request,t}function Uo(e){var t=new ne(e);return t.request=rn.request,t.createSocket=nn,t.defaultPort=443,t}function ne(e){var t=this;t.options=e||{},t.proxyOptions=t.options.proxy||{},t.maxSockets=t.options.maxSockets||kt.Agent.defaultMaxSockets,t.requests=[],t.sockets=[],t.on("free",function(n,i,s,o){for(var a=sn(i,s,o),u=0,c=t.requests.length;u=this.maxSockets){s.requests.push(o);return}s.createSocket(o,function(a){a.on("free",u),a.on("close",c),a.on("agentRemove",c),t.onSocket(a);function u(){s.emit("free",a,o)}function c(l){s.removeSocket(a),a.removeListener("free",u),a.removeListener("close",c),a.removeListener("agentRemove",c)}})};ne.prototype.createSocket=function(t,r){var n=this,i={};n.sockets.push(i);var s=Mt({},n.proxyOptions,{method:"CONNECT",path:t.host+":"+t.port,agent:!1,headers:{host:t.host+":"+t.port}});t.localAddress&&(s.localAddress=t.localAddress),s.proxyAuth&&(s.headers=s.headers||{},s.headers["Proxy-Authorization"]="Basic "+new Buffer(s.proxyAuth).toString("base64")),de("making CONNECT request");var o=n.request(s);o.useChunkedEncodingByDefault=!1,o.once("response",a),o.once("upgrade",u),o.once("connect",c),o.once("error",l),o.end();function a(d){d.upgrade=!0}function u(d,y,A){process.nextTick(function(){c(d,y,A)})}function c(d,y,A){if(o.removeAllListeners(),y.removeAllListeners(),d.statusCode!==200){de("tunneling socket could not be established, statusCode=%d",d.statusCode),y.destroy();var T=new Error("tunneling socket could not be established, statusCode="+d.statusCode);T.code="ECONNRESET",t.request.emit("error",T),n.removeSocket(i);return}if(A.length>0){de("got illegal response body from proxy"),y.destroy();var T=new Error("got illegal response body from proxy");T.code="ECONNRESET",t.request.emit("error",T),n.removeSocket(i);return}return de("tunneling connection has established"),n.sockets[n.sockets.indexOf(i)]=y,r(y)}function l(d){o.removeAllListeners(),de(`tunneling socket could not be established, cause=%s +`,d.message,d.stack);var y=new Error("tunneling socket could not be established, cause="+d.message);y.code="ECONNRESET",t.request.emit("error",y),n.removeSocket(i)}};ne.prototype.removeSocket=function(t){var r=this.sockets.indexOf(t);if(r!==-1){this.sockets.splice(r,1);var n=this.requests.shift();n&&this.createSocket(n,function(i){n.request.onSocket(i)})}};function nn(e,t){var r=this;ne.prototype.createSocket.call(r,e,function(n){var i=e.request.getHeader("host"),s=Mt({},r.options,{socket:n,servername:i?i.replace(/:.*$/,""):e.host}),o=Lo.connect(0,s);r.sockets[r.sockets.indexOf(n)]=o,t(o)})}function sn(e,t,r){return typeof e=="string"?{host:e,port:t,localAddress:r}:e}function Mt(e){for(var t=1,r=arguments.length;t{an.exports=on()});var ln=b(D=>{"use strict";Object.defineProperty(D,"__esModule",{value:!0});var ht=require("http"),Bt=require("https"),cn=tn(),Ce,J;(function(e){e[e.OK=200]="OK",e[e.MultipleChoices=300]="MultipleChoices",e[e.MovedPermanently=301]="MovedPermanently",e[e.ResourceMoved=302]="ResourceMoved",e[e.SeeOther=303]="SeeOther",e[e.NotModified=304]="NotModified",e[e.UseProxy=305]="UseProxy",e[e.SwitchProxy=306]="SwitchProxy",e[e.TemporaryRedirect=307]="TemporaryRedirect",e[e.PermanentRedirect=308]="PermanentRedirect",e[e.BadRequest=400]="BadRequest",e[e.Unauthorized=401]="Unauthorized",e[e.PaymentRequired=402]="PaymentRequired",e[e.Forbidden=403]="Forbidden",e[e.NotFound=404]="NotFound",e[e.MethodNotAllowed=405]="MethodNotAllowed",e[e.NotAcceptable=406]="NotAcceptable",e[e.ProxyAuthenticationRequired=407]="ProxyAuthenticationRequired",e[e.RequestTimeout=408]="RequestTimeout",e[e.Conflict=409]="Conflict",e[e.Gone=410]="Gone",e[e.TooManyRequests=429]="TooManyRequests",e[e.InternalServerError=500]="InternalServerError",e[e.NotImplemented=501]="NotImplemented",e[e.BadGateway=502]="BadGateway",e[e.ServiceUnavailable=503]="ServiceUnavailable",e[e.GatewayTimeout=504]="GatewayTimeout"})(J=D.HttpCodes||(D.HttpCodes={}));var $;(function(e){e.Accept="accept",e.ContentType="content-type"})($=D.Headers||(D.Headers={}));var pe;(function(e){e.ApplicationJson="application/json"})(pe=D.MediaTypes||(D.MediaTypes={}));function Fo(e){let t=cn.getProxyUrl(new URL(e));return t?t.href:""}D.getProxyUrl=Fo;var ko=[J.MovedPermanently,J.ResourceMoved,J.SeeOther,J.TemporaryRedirect,J.PermanentRedirect],Mo=[J.BadGateway,J.ServiceUnavailable,J.GatewayTimeout],Bo=["OPTIONS","GET","DELETE","HEAD"],Go=10,Vo=5,Ve=class extends Error{constructor(t,r){super(t);this.name="HttpClientError",this.statusCode=r,Object.setPrototypeOf(this,Ve.prototype)}};D.HttpClientError=Ve;var Gt=class{constructor(t){this.message=t}readBody(){return new Promise(async(t,r)=>{let n=Buffer.alloc(0);this.message.on("data",i=>{n=Buffer.concat([n,i])}),this.message.on("end",()=>{t(n.toString())})})}};D.HttpClientResponse=Gt;function Ho(e){return new URL(e).protocol==="https:"}D.isHttps=Ho;var dt=class{constructor(t,r,n){this._ignoreSslError=!1,this._allowRedirects=!0,this._allowRedirectDowngrade=!1,this._maxRedirects=50,this._allowRetries=!1,this._maxRetries=1,this._keepAlive=!1,this._disposed=!1,this.userAgent=t,this.handlers=r||[],this.requestOptions=n,n&&(n.ignoreSslError!=null&&(this._ignoreSslError=n.ignoreSslError),this._socketTimeout=n.socketTimeout,n.allowRedirects!=null&&(this._allowRedirects=n.allowRedirects),n.allowRedirectDowngrade!=null&&(this._allowRedirectDowngrade=n.allowRedirectDowngrade),n.maxRedirects!=null&&(this._maxRedirects=Math.max(n.maxRedirects,0)),n.keepAlive!=null&&(this._keepAlive=n.keepAlive),n.allowRetries!=null&&(this._allowRetries=n.allowRetries),n.maxRetries!=null&&(this._maxRetries=n.maxRetries))}options(t,r){return this.request("OPTIONS",t,null,r||{})}get(t,r){return this.request("GET",t,null,r||{})}del(t,r){return this.request("DELETE",t,null,r||{})}post(t,r,n){return this.request("POST",t,r,n||{})}patch(t,r,n){return this.request("PATCH",t,r,n||{})}put(t,r,n){return this.request("PUT",t,r,n||{})}head(t,r){return this.request("HEAD",t,null,r||{})}sendStream(t,r,n,i){return this.request(t,r,n,i)}async getJson(t,r={}){r[$.Accept]=this._getExistingOrDefaultHeader(r,$.Accept,pe.ApplicationJson);let n=await this.get(t,r);return this._processResponse(n,this.requestOptions)}async postJson(t,r,n={}){let i=JSON.stringify(r,null,2);n[$.Accept]=this._getExistingOrDefaultHeader(n,$.Accept,pe.ApplicationJson),n[$.ContentType]=this._getExistingOrDefaultHeader(n,$.ContentType,pe.ApplicationJson);let s=await this.post(t,i,n);return this._processResponse(s,this.requestOptions)}async putJson(t,r,n={}){let i=JSON.stringify(r,null,2);n[$.Accept]=this._getExistingOrDefaultHeader(n,$.Accept,pe.ApplicationJson),n[$.ContentType]=this._getExistingOrDefaultHeader(n,$.ContentType,pe.ApplicationJson);let s=await this.put(t,i,n);return this._processResponse(s,this.requestOptions)}async patchJson(t,r,n={}){let i=JSON.stringify(r,null,2);n[$.Accept]=this._getExistingOrDefaultHeader(n,$.Accept,pe.ApplicationJson),n[$.ContentType]=this._getExistingOrDefaultHeader(n,$.ContentType,pe.ApplicationJson);let s=await this.patch(t,i,n);return this._processResponse(s,this.requestOptions)}async request(t,r,n,i){if(this._disposed)throw new Error("Client has already been disposed.");let s=new URL(r),o=this._prepareRequest(t,s,i),a=this._allowRetries&&Bo.indexOf(t)!=-1?this._maxRetries+1:1,u=0,c;for(;u0;){let d=c.message.headers.location;if(!d)break;let y=new URL(d);if(s.protocol=="https:"&&s.protocol!=y.protocol&&!this._allowRedirectDowngrade)throw new Error("Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true.");if(await c.readBody(),y.hostname!==s.hostname)for(let A in i)A.toLowerCase()==="authorization"&&delete i[A];o=this._prepareRequest(t,y,i),c=await this.requestRaw(o,n),l--}if(Mo.indexOf(c.message.statusCode)==-1)return c;u+=1,u{let s=function(o,a){o&&i(o),n(a)};this.requestRawWithCallback(t,r,s)})}requestRawWithCallback(t,r,n){let i;typeof r=="string"&&(t.options.headers["Content-Length"]=Buffer.byteLength(r,"utf8"));let s=!1,o=(u,c)=>{s||(s=!0,n(u,c))},a=t.httpModule.request(t.options,u=>{let c=new Gt(u);o(null,c)});a.on("socket",u=>{i=u}),a.setTimeout(this._socketTimeout||3*6e4,()=>{i&&i.end(),o(new Error("Request timeout: "+t.options.path),null)}),a.on("error",function(u){o(u,null)}),r&&typeof r=="string"&&a.write(r,"utf8"),r&&typeof r!="string"?(r.on("close",function(){a.end()}),r.pipe(a)):a.end()}getAgent(t){let r=new URL(t);return this._getAgent(r)}_prepareRequest(t,r,n){let i={};i.parsedUrl=r;let s=i.parsedUrl.protocol==="https:";i.httpModule=s?Bt:ht;let o=s?443:80;return i.options={},i.options.host=i.parsedUrl.hostname,i.options.port=i.parsedUrl.port?parseInt(i.parsedUrl.port):o,i.options.path=(i.parsedUrl.pathname||"")+(i.parsedUrl.search||""),i.options.method=t,i.options.headers=this._mergeHeaders(n),this.userAgent!=null&&(i.options.headers["user-agent"]=this.userAgent),i.options.agent=this._getAgent(i.parsedUrl),this.handlers&&this.handlers.forEach(a=>{a.prepareRequest(i.options)}),i}_mergeHeaders(t){let r=n=>Object.keys(n).reduce((i,s)=>(i[s.toLowerCase()]=n[s],i),{});return this.requestOptions&&this.requestOptions.headers?Object.assign({},r(this.requestOptions.headers),r(t)):r(t||{})}_getExistingOrDefaultHeader(t,r,n){let i=o=>Object.keys(o).reduce((a,u)=>(a[u.toLowerCase()]=o[u],a),{}),s;return this.requestOptions&&this.requestOptions.headers&&(s=i(this.requestOptions.headers)[r]),t[r]||s||n}_getAgent(t){let r,n=cn.getProxyUrl(t),i=n&&n.hostname;if(this._keepAlive&&i&&(r=this._proxyAgent),this._keepAlive&&!i&&(r=this._agent),r)return r;let s=t.protocol==="https:",o=100;if(this.requestOptions&&(o=this.requestOptions.maxSockets||ht.globalAgent.maxSockets),i){Ce||(Ce=un());let a={maxSockets:o,keepAlive:this._keepAlive,proxy:br(wr({},(n.username||n.password)&&{proxyAuth:`${n.username}:${n.password}`}),{host:n.hostname,port:n.port})},u,c=n.protocol==="https:";s?u=c?Ce.httpsOverHttps:Ce.httpsOverHttp:u=c?Ce.httpOverHttps:Ce.httpOverHttp,r=u(a),this._proxyAgent=r}if(this._keepAlive&&!r){let a={keepAlive:this._keepAlive,maxSockets:o};r=s?new Bt.Agent(a):new ht.Agent(a),this._agent=r}return r||(r=s?Bt.globalAgent:ht.globalAgent),s&&this._ignoreSslError&&(r.options=Object.assign(r.options||{},{rejectUnauthorized:!1})),r}_performExponentialBackoff(t){t=Math.min(Go,t);let r=Vo*Math.pow(2,t);return new Promise(n=>setTimeout(()=>n(),r))}static dateTimeDeserializer(t,r){if(typeof r=="string"){let n=new Date(r);if(!isNaN(n.valueOf()))return n}return r}async _processResponse(t,r){return new Promise(async(n,i)=>{let s=t.message.statusCode,o={statusCode:s,result:null,headers:{}};s==J.NotFound&&n(o);let a,u;try{u=await t.readBody(),u&&u.length>0&&(r&&r.deserializeDates?a=JSON.parse(u,dt.dateTimeDeserializer):a=JSON.parse(u),o.result=a),o.headers=t.message.headers}catch(c){}if(s>299){let c;a&&a.message?c=a.message:u&&u.length>0?c=u:c="Failed request: ("+s+")";let l=new Ve(c,s);l.result=o.result,i(l)}else n(o)})}};D.HttpClient=dt});var hn=b((nc,fn)=>{var zo=require("crypto");fn.exports=function(){return zo.randomBytes(16)}});var mn=b((ic,pn)=>{var dn=[];for(var pt=0;pt<256;++pt)dn[pt]=(pt+256).toString(16).substr(1);function Xo(e,t){var r=t||0,n=dn;return[n[e[r++]],n[e[r++]],n[e[r++]],n[e[r++]],"-",n[e[r++]],n[e[r++]],"-",n[e[r++]],n[e[r++]],"-",n[e[r++]],n[e[r++]],"-",n[e[r++]],n[e[r++]],n[e[r++]],n[e[r++]],n[e[r++]],n[e[r++]]].join("")}pn.exports=Xo});var gn=b((sc,yn)=>{var Wo=hn(),Jo=mn();function Yo(e,t,r){var n=t&&r||0;typeof e=="string"&&(t=e==="binary"?new Array(16):null,e=null),e=e||{};var i=e.random||(e.rng||Wo)();if(i[6]=i[6]&15|64,i[8]=i[8]&63|128,t)for(var s=0;s<16;++s)t[n+s]=i[s];return t||Jo(i)}yn.exports=Yo});var wn=b(me=>{"use strict";var Zo=me&&me.__awaiter||function(e,t,r,n){function i(s){return s instanceof r?s:new r(function(o){o(s)})}return new(r||(r=Promise))(function(s,o){function a(l){try{c(n.next(l))}catch(d){o(d)}}function u(l){try{c(n.throw(l))}catch(d){o(d)}}function c(l){l.done?s(l.value):i(l.value).then(a,u)}c((n=n.apply(e,t||[])).next())})},$e=me&&me.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)Object.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t};Object.defineProperty(me,"__esModule",{value:!0});var mt=$e(require("os")),En=$e(require("events")),Qo=$e(require("child_process")),Ko=$e(require("path")),ea=$e(ot()),ta=$e(At()),yt=process.platform==="win32",vn=class extends En.EventEmitter{constructor(t,r,n){super();if(!t)throw new Error("Parameter 'toolPath' cannot be null or empty.");this.toolPath=t,this.args=r||[],this.options=n||{}}_debug(t){this.options.listeners&&this.options.listeners.debug&&this.options.listeners.debug(t)}_getCommandString(t,r){let n=this._getSpawnFileName(),i=this._getSpawnArgs(t),s=r?"":"[command]";if(yt)if(this._isCmdFile()){s+=n;for(let o of i)s+=` ${o}`}else if(t.windowsVerbatimArguments){s+=`"${n}"`;for(let o of i)s+=` ${o}`}else{s+=this._windowsQuoteCmdArg(n);for(let o of i)s+=` ${this._windowsQuoteCmdArg(o)}`}else{s+=n;for(let o of i)s+=` ${o}`}return s}_processLineBuffer(t,r,n){try{let i=r+t.toString(),s=i.indexOf(mt.EOL);for(;s>-1;){let o=i.substring(0,s);n(o),i=i.substring(s+mt.EOL.length),s=i.indexOf(mt.EOL)}r=i}catch(i){this._debug(`error processing line. Failed with error ${i}`)}}_getSpawnFileName(){return yt&&this._isCmdFile()?process.env.COMSPEC||"cmd.exe":this.toolPath}_getSpawnArgs(t){if(yt&&this._isCmdFile()){let r=`/D /S /C "${this._windowsQuoteCmdArg(this.toolPath)}`;for(let n of this.args)r+=" ",r+=t.windowsVerbatimArguments?n:this._windowsQuoteCmdArg(n);return r+='"',[r]}return this.args}_endsWith(t,r){return t.endsWith(r)}_isCmdFile(){let t=this.toolPath.toUpperCase();return this._endsWith(t,".CMD")||this._endsWith(t,".BAT")}_windowsQuoteCmdArg(t){if(!this._isCmdFile())return this._uvQuoteCmdArg(t);if(!t)return'""';let r=[" "," ","&","(",")","[","]","{","}","^","=",";","!","'","+",",","`","~","|","<",">",'"'],n=!1;for(let o of t)if(r.some(a=>a===o)){n=!0;break}if(!n)return t;let i='"',s=!0;for(let o=t.length;o>0;o--)i+=t[o-1],s&&t[o-1]==="\\"?i+="\\":t[o-1]==='"'?(s=!0,i+='"'):s=!1;return i+='"',i.split("").reverse().join("")}_uvQuoteCmdArg(t){if(!t)return'""';if(!t.includes(" ")&&!t.includes(" ")&&!t.includes('"'))return t;if(!t.includes('"')&&!t.includes("\\"))return`"${t}"`;let r='"',n=!0;for(let i=t.length;i>0;i--)r+=t[i-1],n&&t[i-1]==="\\"?r+="\\":t[i-1]==='"'?(n=!0,r+="\\"):n=!1;return r+='"',r.split("").reverse().join("")}_cloneExecOptions(t){t=t||{};let r={cwd:t.cwd||process.cwd(),env:t.env||process.env,silent:t.silent||!1,windowsVerbatimArguments:t.windowsVerbatimArguments||!1,failOnStdErr:t.failOnStdErr||!1,ignoreReturnCode:t.ignoreReturnCode||!1,delay:t.delay||1e4};return r.outStream=t.outStream||process.stdout,r.errStream=t.errStream||process.stderr,r}_getSpawnOptions(t,r){t=t||{};let n={};return n.cwd=t.cwd,n.env=t.env,n.windowsVerbatimArguments=t.windowsVerbatimArguments||this._isCmdFile(),t.windowsVerbatimArguments&&(n.argv0=`"${r}"`),n}exec(){return Zo(this,void 0,void 0,function*(){return!ta.isRooted(this.toolPath)&&(this.toolPath.includes("/")||yt&&this.toolPath.includes("\\"))&&(this.toolPath=Ko.resolve(process.cwd(),this.options.cwd||process.cwd(),this.toolPath)),this.toolPath=yield ea.which(this.toolPath,!0),new Promise((t,r)=>{this._debug(`exec tool: ${this.toolPath}`),this._debug("arguments:");for(let c of this.args)this._debug(` ${c}`);let n=this._cloneExecOptions(this.options);!n.silent&&n.outStream&&n.outStream.write(this._getCommandString(n)+mt.EOL);let i=new gt(n,this.toolPath);i.on("debug",c=>{this._debug(c)});let s=this._getSpawnFileName(),o=Qo.spawn(s,this._getSpawnArgs(n),this._getSpawnOptions(this.options,s)),a="";o.stdout&&o.stdout.on("data",c=>{this.options.listeners&&this.options.listeners.stdout&&this.options.listeners.stdout(c),!n.silent&&n.outStream&&n.outStream.write(c),this._processLineBuffer(c,a,l=>{this.options.listeners&&this.options.listeners.stdline&&this.options.listeners.stdline(l)})});let u="";if(o.stderr&&o.stderr.on("data",c=>{i.processStderr=!0,this.options.listeners&&this.options.listeners.stderr&&this.options.listeners.stderr(c),!n.silent&&n.errStream&&n.outStream&&(n.failOnStdErr?n.errStream:n.outStream).write(c),this._processLineBuffer(c,u,l=>{this.options.listeners&&this.options.listeners.errline&&this.options.listeners.errline(l)})}),o.on("error",c=>{i.processError=c.message,i.processExited=!0,i.processClosed=!0,i.CheckComplete()}),o.on("exit",c=>{i.processExitCode=c,i.processExited=!0,this._debug(`Exit code ${c} received from tool '${this.toolPath}'`),i.CheckComplete()}),o.on("close",c=>{i.processExitCode=c,i.processExited=!0,i.processClosed=!0,this._debug(`STDIO streams have closed for tool '${this.toolPath}'`),i.CheckComplete()}),i.on("done",(c,l)=>{a.length>0&&this.emit("stdline",a),u.length>0&&this.emit("errline",u),o.removeAllListeners(),c?r(c):t(l)}),this.options.input){if(!o.stdin)throw new Error("child process missing stdin");o.stdin.end(this.options.input)}})})}};me.ToolRunner=vn;function ra(e){let t=[],r=!1,n=!1,i="";function s(o){n&&o!=='"'&&(i+="\\"),i+=o,n=!1}for(let o=0;o0&&(t.push(i),i="");continue}s(a)}return i.length>0&&t.push(i.trim()),t}me.argStringToArray=ra;var gt=class extends En.EventEmitter{constructor(t,r){super();if(this.processClosed=!1,this.processError="",this.processExitCode=0,this.processExited=!1,this.processStderr=!1,this.delay=1e4,this.done=!1,this.timeout=null,!r)throw new Error("toolPath must not be empty");this.options=t,this.toolPath=r,t.delay&&(this.delay=t.delay)}CheckComplete(){this.done||(this.processClosed?this._setResult():this.processExited&&(this.timeout=setTimeout(gt.HandleTimeout,this.delay,this)))}_debug(t){this.emit("debug",t)}_setResult(){let t;this.processExited&&(this.processError?t=new Error(`There was an error when attempting to execute the process '${this.toolPath}'. This may indicate the process failed to start. Error: ${this.processError}`):this.processExitCode!==0&&!this.options.ignoreReturnCode?t=new Error(`The process '${this.toolPath}' failed with exit code ${this.processExitCode}`):this.processStderr&&this.options.failOnStdErr&&(t=new Error(`The process '${this.toolPath}' failed because one or more lines were written to the STDERR stream`))),this.timeout&&(clearTimeout(this.timeout),this.timeout=null),this.done=!0,this.emit("done",t,this.processExitCode)}static HandleTimeout(t){if(!t.done){if(!t.processClosed&&t.processExited){let r=`The STDIO streams did not close within ${t.delay/1e3} seconds of the exit event from process '${t.toolPath}'. This may indicate a child process inherited the STDIO streams and has not yet exited.`;t._debug(r)}t._setResult()}}}});var On=b(Re=>{"use strict";var na=Re&&Re.__awaiter||function(e,t,r,n){function i(s){return s instanceof r?s:new r(function(o){o(s)})}return new(r||(r=Promise))(function(s,o){function a(l){try{c(n.next(l))}catch(d){o(d)}}function u(l){try{c(n.throw(l))}catch(d){o(d)}}function c(l){l.done?s(l.value):i(l.value).then(a,u)}c((n=n.apply(e,t||[])).next())})},ia=Re&&Re.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)Object.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t};Object.defineProperty(Re,"__esModule",{value:!0});var bn=ia(wn());function sa(e,t,r){return na(this,void 0,void 0,function*(){let n=bn.argStringToArray(e);if(n.length===0)throw new Error("Parameter 'commandLine' cannot be null or empty.");let i=n[0];return t=n.slice(1).concat(t||[]),new bn.ToolRunner(i,t,r).exec()})}Re.exec=sa});var Tn=b(V=>{"use strict";var oa=V&&V.__createBinding||(Object.create?function(e,t,r,n){n===void 0&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){n===void 0&&(n=r),e[n]=t[r]}),aa=V&&V.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),ua=V&&V.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.hasOwnProperty.call(e,r)&&oa(t,e,r);return aa(t,e),t},Sn=V&&V.__awaiter||function(e,t,r,n){function i(s){return s instanceof r?s:new r(function(o){o(s)})}return new(r||(r=Promise))(function(s,o){function a(l){try{c(n.next(l))}catch(d){o(d)}}function u(l){try{c(n.throw(l))}catch(d){o(d)}}function c(l){l.done?s(l.value):i(l.value).then(a,u)}c((n=n.apply(e,t||[])).next())})};Object.defineProperty(V,"__esModule",{value:!0});V.RetryHelper=void 0;var Rn=ua(Pe()),_n=class{constructor(t,r,n){if(t<1)throw new Error("max attempts should be greater than or equal to 1");if(this.maxAttempts=t,this.minSeconds=Math.floor(r),this.maxSeconds=Math.floor(n),this.minSeconds>this.maxSeconds)throw new Error("min seconds should be less than or equal to max seconds")}execute(t,r){return Sn(this,void 0,void 0,function*(){let n=1;for(;nsetTimeout(r,t*1e3))})}};V.RetryHelper=_n});var $n=b(E=>{"use strict";var ca=E&&E.__createBinding||(Object.create?function(e,t,r,n){n===void 0&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){n===void 0&&(n=r),e[n]=t[r]}),la=E&&E.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),ee=E&&E.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.hasOwnProperty.call(e,r)&&ca(t,e,r);return la(t,e),t},j=E&&E.__awaiter||function(e,t,r,n){function i(s){return s instanceof r?s:new r(function(o){o(s)})}return new(r||(r=Promise))(function(s,o){function a(l){try{c(n.next(l))}catch(d){o(d)}}function u(l){try{c(n.throw(l))}catch(d){o(d)}}function c(l){l.done?s(l.value):i(l.value).then(a,u)}c((n=n.apply(e,t||[])).next())})},fa=E&&E.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(E,"__esModule",{value:!0});E.evaluateVersions=E.isExplicitVersion=E.findFromManifest=E.getManifestFromRepo=E.findAllVersions=E.find=E.cacheFile=E.cacheDir=E.extractZip=E.extractXar=E.extractTar=E.extract7z=E.downloadTool=E.HTTPError=void 0;var S=ee(Pe()),U=ee(ot()),H=ee(require("fs")),ha=ee(Kr()),He=ee(require("os")),Y=ee(require("path")),An=ee(ln()),ie=ee(Dt()),da=ee(require("stream")),pa=ee(require("util")),In=fa(gn()),ye=On(),je=require("assert"),ma=Tn(),Et=class extends Error{constructor(t){super(`Unexpected HTTP response: ${t}`);this.httpStatusCode=t,Object.setPrototypeOf(this,new.target.prototype)}};E.HTTPError=Et;var Vt=process.platform==="win32",ya=process.platform==="darwin",ga="actions/tool-cache";function Ea(e,t,r,n){return j(this,void 0,void 0,function*(){t=t||Y.join(Cn(),In.default()),yield U.mkdirP(Y.dirname(t)),S.debug(`Downloading ${e}`),S.debug(`Destination ${t}`);let i=3,s=zt("TEST_DOWNLOAD_TOOL_RETRY_MIN_SECONDS",10),o=zt("TEST_DOWNLOAD_TOOL_RETRY_MAX_SECONDS",20);return yield new ma.RetryHelper(i,s,o).execute(()=>j(this,void 0,void 0,function*(){return yield va(e,t||"",r,n)}),u=>!(u instanceof Et&&u.httpStatusCode&&u.httpStatusCode<500&&u.httpStatusCode!==408&&u.httpStatusCode!==429))})}E.downloadTool=Ea;function va(e,t,r,n){return j(this,void 0,void 0,function*(){if(H.existsSync(t))throw new Error(`Destination file path ${t} already exists`);let i=new An.HttpClient(ga,[],{allowRetries:!1});r&&(S.debug("set auth"),n===void 0&&(n={}),n.authorization=r);let s=yield i.get(e,n);if(s.message.statusCode!==200){let l=new Et(s.message.statusCode);throw S.debug(`Failed to download from "${e}". Code(${s.message.statusCode}) Message(${s.message.statusMessage})`),l}let o=pa.promisify(da.pipeline),u=zt("TEST_DOWNLOAD_TOOL_RESPONSE_MESSAGE_FACTORY",()=>s.message)(),c=!1;try{return yield o(u,H.createWriteStream(t)),S.debug("download complete"),c=!0,t}finally{if(!c){S.debug("download failed");try{yield U.rmRF(t)}catch(l){S.debug(`Failed to delete '${t}'. ${l.message}`)}}}})}function wa(e,t,r){return j(this,void 0,void 0,function*(){je.ok(Vt,"extract7z() not supported on current OS"),je.ok(e,'parameter "file" is required'),t=yield vt(t);let n=process.cwd();if(process.chdir(t),r)try{let i=S.isDebug()?"-bb1":"-bb0",s=["x",i,"-bd","-sccUTF-8",e],o={silent:!0};yield ye.exec(`"${r}"`,s,o)}finally{process.chdir(n)}else{let i=Y.join(__dirname,"..","scripts","Invoke-7zdec.ps1").replace(/'/g,"''").replace(/"|\n|\r/g,""),s=e.replace(/'/g,"''").replace(/"|\n|\r/g,""),o=t.replace(/'/g,"''").replace(/"|\n|\r/g,""),a=`& '${i}' -Source '${s}' -Target '${o}'`,u=["-NoLogo","-Sta","-NoProfile","-NonInteractive","-ExecutionPolicy","Unrestricted","-Command",a],c={silent:!0};try{let l=yield U.which("powershell",!0);yield ye.exec(`"${l}"`,u,c)}finally{process.chdir(n)}}return t})}E.extract7z=wa;function ba(e,t,r="xz"){return j(this,void 0,void 0,function*(){if(!e)throw new Error("parameter 'file' is required");t=yield vt(t),S.debug("Checking tar --version");let n="";yield ye.exec("tar --version",[],{ignoreReturnCode:!0,silent:!0,listeners:{stdout:u=>n+=u.toString(),stderr:u=>n+=u.toString()}}),S.debug(n.trim());let i=n.toUpperCase().includes("GNU TAR"),s;r instanceof Array?s=r:s=[r],S.isDebug()&&!r.includes("v")&&s.push("-v");let o=t,a=e;return Vt&&i&&(s.push("--force-local"),o=t.replace(/\\/g,"/"),a=e.replace(/\\/g,"/")),i&&(s.push("--warning=no-unknown-keyword"),s.push("--overwrite")),s.push("-C",o,"-f",a),yield ye.exec("tar",s),t})}E.extractTar=ba;function Oa(e,t,r=[]){return j(this,void 0,void 0,function*(){je.ok(ya,"extractXar() not supported on current OS"),je.ok(e,'parameter "file" is required'),t=yield vt(t);let n;r instanceof Array?n=r:n=[r],n.push("-x","-C",t,"-f",e),S.isDebug()&&n.push("-v");let i=yield U.which("xar",!0);return yield ye.exec(`"${i}"`,xa(n)),t})}E.extractXar=Oa;function Sa(e,t){return j(this,void 0,void 0,function*(){if(!e)throw new Error("parameter 'file' is required");return t=yield vt(t),Vt?yield Ra(e,t):yield _a(e,t),t})}E.extractZip=Sa;function Ra(e,t){return j(this,void 0,void 0,function*(){let r=e.replace(/'/g,"''").replace(/"|\n|\r/g,""),n=t.replace(/'/g,"''").replace(/"|\n|\r/g,""),i=yield U.which("pwsh",!1);if(i){let s=["$ErrorActionPreference = 'Stop' ;","try { Add-Type -AssemblyName System.IO.Compression.ZipFile } catch { } ;",`try { [System.IO.Compression.ZipFile]::ExtractToDirectory('${r}', '${n}', $true) }`,`catch { if (($_.Exception.GetType().FullName -eq 'System.Management.Automation.MethodException') -or ($_.Exception.GetType().FullName -eq 'System.Management.Automation.RuntimeException') ){ Expand-Archive -LiteralPath '${r}' -DestinationPath '${n}' -Force } else { throw $_ } } ;`].join(" "),o=["-NoLogo","-NoProfile","-NonInteractive","-ExecutionPolicy","Unrestricted","-Command",s];S.debug(`Using pwsh at path: ${i}`),yield ye.exec(`"${i}"`,o)}else{let s=["$ErrorActionPreference = 'Stop' ;","try { Add-Type -AssemblyName System.IO.Compression.FileSystem } catch { } ;",`if ((Get-Command -Name Expand-Archive -Module Microsoft.PowerShell.Archive -ErrorAction Ignore)) { Expand-Archive -LiteralPath '${r}' -DestinationPath '${n}' -Force }`,`else {[System.IO.Compression.ZipFile]::ExtractToDirectory('${r}', '${n}', $true) }`].join(" "),o=["-NoLogo","-Sta","-NoProfile","-NonInteractive","-ExecutionPolicy","Unrestricted","-Command",s],a=yield U.which("powershell",!0);S.debug(`Using powershell at path: ${a}`),yield ye.exec(`"${a}"`,o)}})}function _a(e,t){return j(this,void 0,void 0,function*(){let r=yield U.which("unzip",!0),n=[e];S.isDebug()||n.unshift("-q"),n.unshift("-o"),yield ye.exec(`"${r}"`,n,{cwd:t})})}function Ta(e,t,r,n){return j(this,void 0,void 0,function*(){if(r=ie.clean(r)||r,n=n||He.arch(),S.debug(`Caching tool ${t} ${r} ${n}`),S.debug(`source dir: ${e}`),!H.statSync(e).isDirectory())throw new Error("sourceDir is not a directory");let i=yield Nn(t,r,n);for(let s of H.readdirSync(e)){let o=Y.join(e,s);yield U.cp(o,i,{recursive:!0})}return xn(t,r,n),i})}E.cacheDir=Ta;function Aa(e,t,r,n,i){return j(this,void 0,void 0,function*(){if(n=ie.clean(n)||n,i=i||He.arch(),S.debug(`Caching tool ${r} ${n} ${i}`),S.debug(`source file: ${e}`),!H.statSync(e).isFile())throw new Error("sourceFile is not a file");let s=yield Nn(r,n,i),o=Y.join(s,t);return S.debug(`destination file ${o}`),yield U.cp(e,o),xn(r,n,i),s})}E.cacheFile=Aa;function Ia(e,t,r){if(!e)throw new Error("toolName parameter is required");if(!t)throw new Error("versionSpec parameter is required");if(r=r||He.arch(),!Ht(t)){let i=Pn(e,r);t=Ln(i,t)}let n="";if(t){t=ie.clean(t)||"";let i=Y.join(wt(),e,t,r);S.debug(`checking cache: ${i}`),H.existsSync(i)&&H.existsSync(`${i}.complete`)?(S.debug(`Found tool in cache ${e} ${t} ${r}`),n=i):S.debug("not found")}return n}E.find=Ia;function Pn(e,t){let r=[];t=t||He.arch();let n=Y.join(wt(),e);if(H.existsSync(n)){let i=H.readdirSync(n);for(let s of i)if(Ht(s)){let o=Y.join(n,s,t||"");H.existsSync(o)&&H.existsSync(`${o}.complete`)&&r.push(s)}}return r}E.findAllVersions=Pn;function Pa(e,t,r,n="master"){return j(this,void 0,void 0,function*(){let i=[],s=`https://api.github.com/repos/${e}/${t}/git/trees/${n}`,o=new An.HttpClient("tool-cache"),a={};r&&(S.debug("set auth"),a.authorization=r);let u=yield o.getJson(s,a);if(!u.result)return i;let c="";for(let d of u.result.tree)if(d.path==="versions-manifest.json"){c=d.url;break}a.accept="application/vnd.github.VERSION.raw";let l=yield(yield o.get(c,a)).readBody();if(l){l=l.replace(/^\uFEFF/,"");try{i=JSON.parse(l)}catch(d){S.debug("Invalid json")}}return i})}E.getManifestFromRepo=Pa;function Na(e,t,r,n=He.arch()){return j(this,void 0,void 0,function*(){return yield ha._findMatch(e,t,r,n)})}E.findFromManifest=Na;function vt(e){return j(this,void 0,void 0,function*(){return e||(e=Y.join(Cn(),In.default())),yield U.mkdirP(e),e})}function Nn(e,t,r){return j(this,void 0,void 0,function*(){let n=Y.join(wt(),e,ie.clean(t)||t,r||"");S.debug(`destination ${n}`);let i=`${n}.complete`;return yield U.rmRF(n),yield U.rmRF(i),yield U.mkdirP(n),n})}function xn(e,t,r){let i=`${Y.join(wt(),e,ie.clean(t)||t,r||"")}.complete`;H.writeFileSync(i,""),S.debug("finished caching tool")}function Ht(e){let t=ie.clean(e)||"";S.debug(`isExplicit: ${t}`);let r=ie.valid(t)!=null;return S.debug(`explicit? ${r}`),r}E.isExplicitVersion=Ht;function Ln(e,t){let r="";S.debug(`evaluating ${e.length} versions`),e=e.sort((n,i)=>ie.gt(n,i)?1:-1);for(let n=e.length-1;n>=0;n--){let i=e[n];if(ie.satisfies(i,t)){r=i;break}}return r?S.debug(`matched: ${r}`):S.debug("match not found"),r}E.evaluateVersions=Ln;function wt(){let e=process.env.RUNNER_TOOL_CACHE||"";return je.ok(e,"Expected RUNNER_TOOL_CACHE to be defined"),e}function Cn(){let e=process.env.RUNNER_TEMP||"";return je.ok(e,"Expected RUNNER_TEMP to be defined"),e}function zt(e,t){let r=global[e];return r!==void 0?r:t}function xa(e){return Array.from(new Set(e))}});var ze=b(Xt=>{"use strict";Object.defineProperty(Xt,"__esModule",{value:!0});function La(){return typeof navigator=="object"&&"userAgent"in navigator?navigator.userAgent:typeof process=="object"&&"version"in process?`Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`:""}Xt.getUserAgent=La});var Dn=b((fc,qn)=>{qn.exports=jn;function jn(e,t,r,n){if(typeof r!="function")throw new Error("method for before hook must be a function");return n||(n={}),Array.isArray(t)?t.reverse().reduce(function(i,s){return jn.bind(null,e,s,i,n)},r)():Promise.resolve().then(function(){return e.registry[t]?e.registry[t].reduce(function(i,s){return s.hook.bind(null,i,n)},r)():r(n)})}});var Fn=b((hc,Un)=>{Un.exports=Ca;function Ca(e,t,r,n){var i=n;e.registry[r]||(e.registry[r]=[]),t==="before"&&(n=function(s,o){return Promise.resolve().then(i.bind(null,o)).then(s.bind(null,o))}),t==="after"&&(n=function(s,o){var a;return Promise.resolve().then(s.bind(null,o)).then(function(u){return a=u,i(a,o)}).then(function(){return a})}),t==="error"&&(n=function(s,o){return Promise.resolve().then(s.bind(null,o)).catch(function(a){return i(a,o)})}),e.registry[r].push({hook:n,orig:i})}});var Mn=b((dc,kn)=>{kn.exports=$a;function $a(e,t,r){if(!!e.registry[t]){var n=e.registry[t].map(function(i){return i.orig}).indexOf(r);n!==-1&&e.registry[t].splice(n,1)}}});var Wn=b((pc,Xe)=>{var Bn=Dn(),ja=Fn(),qa=Mn(),Gn=Function.bind,Vn=Gn.bind(Gn);function Hn(e,t,r){var n=Vn(qa,null).apply(null,r?[t,r]:[t]);e.api={remove:n},e.remove=n,["before","error","after","wrap"].forEach(function(i){var s=r?[t,i,r]:[t,i];e[i]=e.api[i]=Vn(ja,null).apply(null,s)})}function Da(){var e="h",t={registry:{}},r=Bn.bind(null,t,e);return Hn(r,t,e),r}function zn(){var e={registry:{}},t=Bn.bind(null,e);return Hn(t,e),t}var Xn=!1;function qe(){return Xn||(console.warn('[before-after-hook]: "Hook()" repurposing warning, use "Hook.Collection()". Read more: https://git.io/upgrade-before-after-hook-to-1.4'),Xn=!0),zn()}qe.Singular=Da.bind();qe.Collection=zn.bind();Xe.exports=qe;Xe.exports.Hook=qe;Xe.exports.Singular=qe.Singular;Xe.exports.Collection=qe.Collection});var Jt=b(Wt=>{"use strict";Object.defineProperty(Wt,"__esModule",{value:!0});function Jn(e){return Object.prototype.toString.call(e)==="[object Object]"}function Ua(e){var t,r;return Jn(e)===!1?!1:(t=e.constructor,t===void 0?!0:(r=t.prototype,!(Jn(r)===!1||r.hasOwnProperty("isPrototypeOf")===!1)))}Wt.isPlainObject=Ua});var ri=b(Qt=>{"use strict";Object.defineProperty(Qt,"__esModule",{value:!0});var Fa=Jt(),ka=ze();function Ma(e){return e?Object.keys(e).reduce((t,r)=>(t[r.toLowerCase()]=e[r],t),{}):{}}function Yn(e,t){let r=Object.assign({},e);return Object.keys(t).forEach(n=>{Fa.isPlainObject(t[n])?n in e?r[n]=Yn(e[n],t[n]):Object.assign(r,{[n]:t[n]}):Object.assign(r,{[n]:t[n]})}),r}function Zn(e){for(let t in e)e[t]===void 0&&delete e[t];return e}function Yt(e,t,r){if(typeof t=="string"){let[i,s]=t.split(" ");r=Object.assign(s?{method:i,url:s}:{url:i},r)}else r=Object.assign({},t);r.headers=Ma(r.headers),Zn(r),Zn(r.headers);let n=Yn(e||{},r);return e&&e.mediaType.previews.length&&(n.mediaType.previews=e.mediaType.previews.filter(i=>!n.mediaType.previews.includes(i)).concat(n.mediaType.previews)),n.mediaType.previews=n.mediaType.previews.map(i=>i.replace(/-preview/,"")),n}function Ba(e,t){let r=/\?/.test(e)?"&":"?",n=Object.keys(t);return n.length===0?e:e+r+n.map(i=>i==="q"?"q="+t.q.split("+").map(encodeURIComponent).join("+"):`${i}=${encodeURIComponent(t[i])}`).join("&")}var Ga=/\{[^}]+\}/g;function Va(e){return e.replace(/^\W+|\W+$/g,"").split(/,/)}function Ha(e){let t=e.match(Ga);return t?t.map(Va).reduce((r,n)=>r.concat(n),[]):[]}function Qn(e,t){return Object.keys(e).filter(r=>!t.includes(r)).reduce((r,n)=>(r[n]=e[n],r),{})}function Kn(e){return e.split(/(%[0-9A-Fa-f]{2})/g).map(function(t){return/%[0-9A-Fa-f]/.test(t)||(t=encodeURI(t).replace(/%5B/g,"[").replace(/%5D/g,"]")),t}).join("")}function De(e){return encodeURIComponent(e).replace(/[!'()*]/g,function(t){return"%"+t.charCodeAt(0).toString(16).toUpperCase()})}function We(e,t,r){return t=e==="+"||e==="#"?Kn(t):De(t),r?De(r)+"="+t:t}function Ue(e){return e!=null}function Zt(e){return e===";"||e==="&"||e==="?"}function za(e,t,r,n){var i=e[r],s=[];if(Ue(i)&&i!=="")if(typeof i=="string"||typeof i=="number"||typeof i=="boolean")i=i.toString(),n&&n!=="*"&&(i=i.substring(0,parseInt(n,10))),s.push(We(t,i,Zt(t)?r:""));else if(n==="*")Array.isArray(i)?i.filter(Ue).forEach(function(o){s.push(We(t,o,Zt(t)?r:""))}):Object.keys(i).forEach(function(o){Ue(i[o])&&s.push(We(t,i[o],o))});else{let o=[];Array.isArray(i)?i.filter(Ue).forEach(function(a){o.push(We(t,a))}):Object.keys(i).forEach(function(a){Ue(i[a])&&(o.push(De(a)),o.push(We(t,i[a].toString())))}),Zt(t)?s.push(De(r)+"="+o.join(",")):o.length!==0&&s.push(o.join(","))}else t===";"?Ue(i)&&s.push(De(r)):i===""&&(t==="&"||t==="?")?s.push(De(r)+"="):i===""&&s.push("");return s}function Xa(e){return{expand:Wa.bind(null,e)}}function Wa(e,t){var r=["+","#",".","/",";","?","&"];return e.replace(/\{([^\{\}]+)\}|([^\{\}]+)/g,function(n,i,s){if(i){let a="",u=[];if(r.indexOf(i.charAt(0))!==-1&&(a=i.charAt(0),i=i.substr(1)),i.split(/,/g).forEach(function(c){var l=/([^:\*]*)(?::(\d+)|(\*))?/.exec(c);u.push(za(t,a,l[1],l[2]||l[3]))}),a&&a!=="+"){var o=",";return a==="?"?o="&":a!=="#"&&(o=a),(u.length!==0?a:"")+u.join(o)}else return u.join(",")}else return Kn(s)})}function ei(e){let t=e.method.toUpperCase(),r=(e.url||"/").replace(/:([a-z]\w+)/g,"{$1}"),n=Object.assign({},e.headers),i,s=Qn(e,["method","baseUrl","url","headers","request","mediaType"]),o=Ha(r);r=Xa(r).expand(s),/^http/.test(r)||(r=e.baseUrl+r);let a=Object.keys(e).filter(l=>o.includes(l)).concat("baseUrl"),u=Qn(s,a);if(!/application\/octet-stream/i.test(n.accept)&&(e.mediaType.format&&(n.accept=n.accept.split(/,/).map(l=>l.replace(/application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/,`application/vnd$1$2.${e.mediaType.format}`)).join(",")),e.mediaType.previews.length)){let l=n.accept.match(/[\w-]+(?=-preview)/g)||[];n.accept=l.concat(e.mediaType.previews).map(d=>{let y=e.mediaType.format?`.${e.mediaType.format}`:"+json";return`application/vnd.github.${d}-preview${y}`}).join(",")}return["GET","HEAD"].includes(t)?r=Ba(r,u):"data"in u?i=u.data:Object.keys(u).length?i=u:n["content-length"]=0,!n["content-type"]&&typeof i!="undefined"&&(n["content-type"]="application/json; charset=utf-8"),["PATCH","PUT"].includes(t)&&typeof i=="undefined"&&(i=""),Object.assign({method:t,url:r,headers:n},typeof i!="undefined"?{body:i}:null,e.request?{request:e.request}:null)}function Ja(e,t,r){return ei(Yt(e,t,r))}function ti(e,t){let r=Yt(e,t),n=Ja.bind(null,r);return Object.assign(n,{DEFAULTS:r,defaults:ti.bind(null,r),merge:Yt.bind(null,r),parse:ei})}var Ya="6.0.11",Za=`octokit-endpoint.js/${Ya} ${ka.getUserAgent()}`,Qa={method:"GET",baseUrl:"https://api.github.com",headers:{accept:"application/vnd.github.v3+json","user-agent":Za},mediaType:{format:"",previews:[]}},Ka=ti(null,Qa);Qt.endpoint=Ka});var di=b((te,hi)=>{"use strict";Object.defineProperty(te,"__esModule",{value:!0});function Je(e){return e&&typeof e=="object"&&"default"in e?e.default:e}var Z=Je(require("stream")),ni=Je(require("http")),Kt=Je(require("url")),eu=Je(require("https")),_e=Je(require("zlib")),tu=Z.Readable,se=Symbol("buffer"),er=Symbol("type"),Te=class{constructor(){this[er]="";let t=arguments[0],r=arguments[1],n=[],i=0;if(t){let o=t,a=Number(o.length);for(let u=0;u1&&arguments[1]!==void 0?arguments[1]:{},n=r.size;let i=n===void 0?0:n;var s=r.timeout;let o=s===void 0?0:s;e==null?e=null:si(e)?e=Buffer.from(e.toString()):Ye(e)||Buffer.isBuffer(e)||(Object.prototype.toString.call(e)==="[object ArrayBuffer]"?e=Buffer.from(e):ArrayBuffer.isView(e)?e=Buffer.from(e.buffer,e.byteOffset,e.byteLength):e instanceof Z||(e=Buffer.from(String(e)))),this[oe]={body:e,disturbed:!1,error:null},this.size=i,this.timeout=o,e instanceof Z&&e.on("error",function(a){let u=a.name==="AbortError"?a:new L(`Invalid response body while trying to fetch ${t.url}: ${a.message}`,"system",a);t[oe].error=u})}N.prototype={get body(){return this[oe].body},get bodyUsed(){return this[oe].disturbed},arrayBuffer(){return Fe.call(this).then(function(e){return e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)})},blob(){let e=this.headers&&this.headers.get("content-type")||"";return Fe.call(this).then(function(t){return Object.assign(new Te([],{type:e.toLowerCase()}),{[se]:t})})},json(){var e=this;return Fe.call(this).then(function(t){try{return JSON.parse(t.toString())}catch(r){return N.Promise.reject(new L(`invalid json response body at ${e.url} reason: ${r.message}`,"invalid-json"))}})},text(){return Fe.call(this).then(function(e){return e.toString()})},buffer(){return Fe.call(this)},textConverted(){var e=this;return Fe.call(this).then(function(t){return ru(t,e.headers)})}};Object.defineProperties(N.prototype,{body:{enumerable:!0},bodyUsed:{enumerable:!0},arrayBuffer:{enumerable:!0},blob:{enumerable:!0},json:{enumerable:!0},text:{enumerable:!0}});N.mixIn=function(e){for(let t of Object.getOwnPropertyNames(N.prototype))if(!(t in e)){let r=Object.getOwnPropertyDescriptor(N.prototype,t);Object.defineProperty(e,t,r)}};function Fe(){var e=this;if(this[oe].disturbed)return N.Promise.reject(new TypeError(`body used already for: ${this.url}`));if(this[oe].disturbed=!0,this[oe].error)return N.Promise.reject(this[oe].error);let t=this.body;if(t===null)return N.Promise.resolve(Buffer.alloc(0));if(Ye(t)&&(t=t.stream()),Buffer.isBuffer(t))return N.Promise.resolve(t);if(!(t instanceof Z))return N.Promise.resolve(Buffer.alloc(0));let r=[],n=0,i=!1;return new N.Promise(function(s,o){let a;e.timeout&&(a=setTimeout(function(){i=!0,o(new L(`Response timeout while trying to fetch ${e.url} (over ${e.timeout}ms)`,"body-timeout"))},e.timeout)),t.on("error",function(u){u.name==="AbortError"?(i=!0,o(u)):o(new L(`Invalid response body while trying to fetch ${e.url}: ${u.message}`,"system",u))}),t.on("data",function(u){if(!(i||u===null)){if(e.size&&n+u.length>e.size){i=!0,o(new L(`content size at ${e.url} over limit: ${e.size}`,"max-size"));return}n+=u.length,r.push(u)}}),t.on("end",function(){if(!i){clearTimeout(a);try{s(Buffer.concat(r,n))}catch(u){o(new L(`Could not create Buffer from response body for ${e.url}: ${u.message}`,"system",u))}}})})}function ru(e,t){if(typeof tr!="function")throw new Error("The package `encoding` must be installed to use the textConverted() function");let r=t.get("content-type"),n="utf-8",i,s;return r&&(i=/charset=([^;]*)/i.exec(r)),s=e.slice(0,1024).toString(),!i&&s&&(i=/0&&arguments[0]!==void 0?arguments[0]:void 0;if(this[P]=Object.create(null),t instanceof F){let r=t.raw(),n=Object.keys(r);for(let i of n)for(let s of r[i])this.append(i,s);return}if(t!=null)if(typeof t=="object"){let r=t[Symbol.iterator];if(r!=null){if(typeof r!="function")throw new TypeError("Header pairs must be iterable");let n=[];for(let i of t){if(typeof i!="object"||typeof i[Symbol.iterator]!="function")throw new TypeError("Each header pair must be iterable");n.push(Array.from(i))}for(let i of n){if(i.length!==2)throw new TypeError("Each header pair must be a name/value tuple");this.append(i[0],i[1])}}else for(let n of Object.keys(t)){let i=t[n];this.append(n,i)}}else throw new TypeError("Provided initializer must be an object")}get(t){t=`${t}`,Ze(t);let r=ke(this[P],t);return r===void 0?null:this[P][r].join(", ")}forEach(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:void 0,n=nr(this),i=0;for(;i1&&arguments[1]!==void 0?arguments[1]:"key+value";return Object.keys(e[P]).sort().map(t==="key"?function(n){return n.toLowerCase()}:t==="value"?function(n){return e[P][n].join(", ")}:function(n){return[n.toLowerCase(),e[P][n].join(", ")]})}var ir=Symbol("internal");function sr(e,t){let r=Object.create(or);return r[ir]={target:e,kind:t,index:0},r}var or=Object.setPrototypeOf({next(){if(!this||Object.getPrototypeOf(this)!==or)throw new TypeError("Value of `this` is not a HeadersIterator");var e=this[ir];let t=e.target,r=e.kind,n=e.index,i=nr(t,r),s=i.length;return n>=s?{value:void 0,done:!0}:(this[ir].index=n+1,{value:i[n],done:!1})}},Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));Object.defineProperty(or,Symbol.toStringTag,{value:"HeadersIterator",writable:!1,enumerable:!1,configurable:!0});function iu(e){let t=Object.assign({__proto__:null},e[P]),r=ke(e[P],"Host");return r!==void 0&&(t[r]=t[r][0]),t}function su(e){let t=new F;for(let r of Object.keys(e))if(!ci.test(r))if(Array.isArray(e[r]))for(let n of e[r])rr.test(n)||(t[P][r]===void 0?t[P][r]=[n]:t[P][r].push(n));else rr.test(e[r])||(t[P][r]=[e[r]]);return t}var ge=Symbol("Response internals"),ou=ni.STATUS_CODES,z=class{constructor(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};N.call(this,t,r);let n=r.status||200,i=new F(r.headers);if(t!=null&&!i.has("Content-Type")){let s=ai(t);s&&i.append("Content-Type",s)}this[ge]={url:r.url,status:n,statusText:r.statusText||ou[n],headers:i,counter:r.counter}}get url(){return this[ge].url||""}get status(){return this[ge].status}get ok(){return this[ge].status>=200&&this[ge].status<300}get redirected(){return this[ge].counter>0}get statusText(){return this[ge].statusText}get headers(){return this[ge].headers}clone(){return new z(oi(this),{url:this.url,status:this.status,statusText:this.statusText,headers:this.headers,ok:this.ok,redirected:this.redirected})}};N.mixIn(z.prototype);Object.defineProperties(z.prototype,{url:{enumerable:!0},status:{enumerable:!0},ok:{enumerable:!0},redirected:{enumerable:!0},statusText:{enumerable:!0},headers:{enumerable:!0},clone:{enumerable:!0}});Object.defineProperty(z.prototype,Symbol.toStringTag,{value:"Response",writable:!1,enumerable:!1,configurable:!0});var ae=Symbol("Request internals"),ar=Kt.parse,au=Kt.format,uu="destroy"in Z.Readable.prototype;function bt(e){return typeof e=="object"&&typeof e[ae]=="object"}function cu(e){let t=e&&typeof e=="object"&&Object.getPrototypeOf(e);return!!(t&&t.constructor.name==="AbortSignal")}var ue=class{constructor(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n;bt(t)?n=ar(t.url):(t&&t.href?n=ar(t.href):n=ar(`${t}`),t={});let i=r.method||t.method||"GET";if(i=i.toUpperCase(),(r.body!=null||bt(t)&&t.body!==null)&&(i==="GET"||i==="HEAD"))throw new TypeError("Request with GET/HEAD method cannot have body");let s=r.body!=null?r.body:bt(t)&&t.body!==null?oi(t):null;N.call(this,s,{timeout:r.timeout||t.timeout||0,size:r.size||t.size||0});let o=new F(r.headers||t.headers||{});if(s!=null&&!o.has("Content-Type")){let u=ai(s);u&&o.append("Content-Type",u)}let a=bt(t)?t.signal:null;if("signal"in r&&(a=r.signal),a!=null&&!cu(a))throw new TypeError("Expected signal to be an instanceof AbortSignal");this[ae]={method:i,redirect:r.redirect||t.redirect||"follow",headers:o,parsedURL:n,signal:a},this.follow=r.follow!==void 0?r.follow:t.follow!==void 0?t.follow:20,this.compress=r.compress!==void 0?r.compress:t.compress!==void 0?t.compress:!0,this.counter=r.counter||t.counter||0,this.agent=r.agent||t.agent}get method(){return this[ae].method}get url(){return au(this[ae].parsedURL)}get headers(){return this[ae].headers}get redirect(){return this[ae].redirect}get signal(){return this[ae].signal}clone(){return new ue(this)}};N.mixIn(ue.prototype);Object.defineProperty(ue.prototype,Symbol.toStringTag,{value:"Request",writable:!1,enumerable:!1,configurable:!0});Object.defineProperties(ue.prototype,{method:{enumerable:!0},url:{enumerable:!0},headers:{enumerable:!0},redirect:{enumerable:!0},clone:{enumerable:!0},signal:{enumerable:!0}});function lu(e){let t=e[ae].parsedURL,r=new F(e[ae].headers);if(r.has("Accept")||r.set("Accept","*/*"),!t.protocol||!t.hostname)throw new TypeError("Only absolute URLs are supported");if(!/^https?:$/.test(t.protocol))throw new TypeError("Only HTTP(S) protocols are supported");if(e.signal&&e.body instanceof Z.Readable&&!uu)throw new Error("Cancellation of streamed requests with AbortSignal is not supported in node < 8");let n=null;if(e.body==null&&/^(POST|PUT)$/i.test(e.method)&&(n="0"),e.body!=null){let s=ui(e);typeof s=="number"&&(n=String(s))}n&&r.set("Content-Length",n),r.has("User-Agent")||r.set("User-Agent","node-fetch/1.0 (+https://github.com/bitinn/node-fetch)"),e.compress&&!r.has("Accept-Encoding")&&r.set("Accept-Encoding","gzip,deflate");let i=e.agent;return typeof i=="function"&&(i=i(t)),!r.has("Connection")&&!i&&r.set("Connection","close"),Object.assign({},t,{method:e.method,headers:iu(r),agent:i})}function Qe(e){Error.call(this,e),this.type="aborted",this.message=e,Error.captureStackTrace(this,this.constructor)}Qe.prototype=Object.create(Error.prototype);Qe.prototype.constructor=Qe;Qe.prototype.name="AbortError";var fi=Z.PassThrough,fu=Kt.resolve;function Ee(e,t){if(!Ee.Promise)throw new Error("native promise missing, set fetch.Promise to your favorite alternative");return N.Promise=Ee.Promise,new Ee.Promise(function(r,n){let i=new ue(e,t),s=lu(i),o=(s.protocol==="https:"?eu:ni).request,a=i.signal,u=null,c=function(){let le=new Qe("The user aborted a request.");n(le),i.body&&i.body instanceof Z.Readable&&i.body.destroy(le),!(!u||!u.body)&&u.body.emit("error",le)};if(a&&a.aborted){c();return}let l=function(){c(),A()},d=o(s),y;a&&a.addEventListener("abort",l);function A(){d.abort(),a&&a.removeEventListener("abort",l),clearTimeout(y)}i.timeout&&d.once("socket",function(T){y=setTimeout(function(){n(new L(`network timeout at: ${i.url}`,"request-timeout")),A()},i.timeout)}),d.on("error",function(T){n(new L(`request to ${i.url} failed, reason: ${T.message}`,"system",T)),A()}),d.on("response",function(T){clearTimeout(y);let le=su(T.headers);if(Ee.isRedirect(T.statusCode)){let Tt=le.get("Location"),Ie=Tt===null?null:fu(i.url,Tt);switch(i.redirect){case"error":n(new L(`uri requested responds with a redirect, redirect mode is set to error: ${i.url}`,"no-redirect")),A();return;case"manual":if(Ie!==null)try{le.set("Location",Ie)}catch(ki){n(ki)}break;case"follow":if(Ie===null)break;if(i.counter>=i.follow){n(new L(`maximum redirect reached at: ${i.url}`,"max-redirect")),A();return}let et={headers:new F(i.headers),follow:i.follow,counter:i.counter+1,agent:i.agent,compress:i.compress,method:i.method,body:i.body,signal:i.signal,timeout:i.timeout,size:i.size};if(T.statusCode!==303&&i.body&&ui(i)===null){n(new L("Cannot follow redirect with body being a readable stream","unsupported-redirect")),A();return}(T.statusCode===303||(T.statusCode===301||T.statusCode===302)&&i.method==="POST")&&(et.method="GET",et.body=void 0,et.headers.delete("content-length")),r(Ee(new ue(Ie,et))),A();return}}T.once("end",function(){a&&a.removeEventListener("abort",l)});let q=T.pipe(new fi),Be={url:i.url,status:T.statusCode,statusText:T.statusMessage,headers:le,size:i.size,timeout:i.timeout,counter:i.counter},Ae=le.get("Content-Encoding");if(!i.compress||i.method==="HEAD"||Ae===null||T.statusCode===204||T.statusCode===304){u=new z(q,Be),r(u);return}let Fi={flush:_e.Z_SYNC_FLUSH,finishFlush:_e.Z_SYNC_FLUSH};if(Ae=="gzip"||Ae=="x-gzip"){q=q.pipe(_e.createGunzip(Fi)),u=new z(q,Be),r(u);return}if(Ae=="deflate"||Ae=="x-deflate"){T.pipe(new fi).once("data",function(Ie){(Ie[0]&15)==8?q=q.pipe(_e.createInflate()):q=q.pipe(_e.createInflateRaw()),u=new z(q,Be),r(u)});return}if(Ae=="br"&&typeof _e.createBrotliDecompress=="function"){q=q.pipe(_e.createBrotliDecompress()),u=new z(q,Be),r(u);return}u=new z(q,Be),r(u)}),nu(d,i)})}Ee.isRedirect=function(e){return e===301||e===302||e===303||e===307||e===308};Ee.Promise=global.Promise;hi.exports=te=Ee;Object.defineProperty(te,"__esModule",{value:!0});te.default=te;te.Headers=F;te.Request=ue;te.Response=z;te.FetchError=L});var mi=b(ur=>{"use strict";Object.defineProperty(ur,"__esModule",{value:!0});var pi=class extends Error{constructor(t){super(t);Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor),this.name="Deprecation"}};ur.Deprecation=pi});var Ei=b((Ec,gi)=>{gi.exports=yi;function yi(e,t){if(e&&t)return yi(e)(t);if(typeof e!="function")throw new TypeError("need wrapper function");return Object.keys(e).forEach(function(n){r[n]=e[n]}),r;function r(){for(var n=new Array(arguments.length),i=0;i{var vi=Ei();cr.exports=vi(Ot);cr.exports.strict=vi(wi);Ot.proto=Ot(function(){Object.defineProperty(Function.prototype,"once",{value:function(){return Ot(this)},configurable:!0}),Object.defineProperty(Function.prototype,"onceStrict",{value:function(){return wi(this)},configurable:!0})});function Ot(e){var t=function(){return t.called?t.value:(t.called=!0,t.value=e.apply(this,arguments))};return t.called=!1,t}function wi(e){var t=function(){if(t.called)throw new Error(t.onceError);return t.called=!0,t.value=e.apply(this,arguments)},r=e.name||"Function wrapped with `once`";return t.onceError=r+" shouldn't be called more than once",t.called=!1,t}});var Si=b(lr=>{"use strict";Object.defineProperty(lr,"__esModule",{value:!0});function hu(e){return e&&typeof e=="object"&&"default"in e?e.default:e}var du=mi(),pu=hu(bi()),mu=pu(e=>console.warn(e)),Oi=class extends Error{constructor(t,r,n){super(t);Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor),this.name="HttpError",this.status=r,Object.defineProperty(this,"code",{get(){return mu(new du.Deprecation("[@octokit/request-error] `error.code` is deprecated, use `error.status`.")),r}}),this.headers=n.headers||{};let i=Object.assign({},n.request);n.request.headers.authorization&&(i.headers=Object.assign({},n.request.headers,{authorization:n.request.headers.authorization.replace(/ .*$/," [REDACTED]")})),i.url=i.url.replace(/\bclient_secret=\w+/g,"client_secret=[REDACTED]").replace(/\baccess_token=\w+/g,"access_token=[REDACTED]"),this.request=i}};lr.RequestError=Oi});var dr=b(hr=>{"use strict";Object.defineProperty(hr,"__esModule",{value:!0});function yu(e){return e&&typeof e=="object"&&"default"in e?e.default:e}var gu=ri(),Eu=ze(),vu=Jt(),wu=yu(di()),Ke=Si(),bu="5.5.0";function Ou(e){return e.arrayBuffer()}function Ri(e){let t=e.request&&e.request.log?e.request.log:console;(vu.isPlainObject(e.body)||Array.isArray(e.body))&&(e.body=JSON.stringify(e.body));let r={},n,i;return(e.request&&e.request.fetch||wu)(e.url,Object.assign({method:e.method,body:e.body,headers:e.headers,redirect:e.redirect},e.request)).then(o=>{i=o.url,n=o.status;for(let u of o.headers)r[u[0]]=u[1];if("deprecation"in r){let u=r.link&&r.link.match(/<([^>]+)>; rel="deprecation"/),c=u&&u.pop();t.warn(`[@octokit/request] "${e.method} ${e.url}" is deprecated. It is scheduled to be removed on ${r.sunset}${c?`. See ${c}`:""}`)}if(n===204||n===205)return;if(e.method==="HEAD"){if(n<400)return;throw new Ke.RequestError(o.statusText,n,{headers:r,request:e})}if(n===304)throw new Ke.RequestError("Not modified",n,{headers:r,request:e});if(n>=400)return o.text().then(u=>{let c=new Ke.RequestError(u,n,{headers:r,request:e});try{let l=JSON.parse(c.message);Object.assign(c,l);let d=l.errors;c.message=c.message+": "+d.map(JSON.stringify).join(", ")}catch(l){}throw c});let a=o.headers.get("content-type");return/application\/json/.test(a)?o.json():!a||/^text\/|charset=utf-8$/.test(a)?o.text():Ou(o)}).then(o=>({status:n,url:i,headers:r,data:o})).catch(o=>{throw o instanceof Ke.RequestError?o:new Ke.RequestError(o.message,500,{headers:r,request:e})})}function fr(e,t){let r=e.defaults(t);return Object.assign(function(i,s){let o=r.merge(i,s);if(!o.request||!o.request.hook)return Ri(r.parse(o));let a=(u,c)=>Ri(r.parse(r.merge(u,c)));return Object.assign(a,{endpoint:r,defaults:fr.bind(null,r)}),o.request.hook(a,o)},{endpoint:r,defaults:fr.bind(null,r)})}var Su=fr(gu.endpoint,{headers:{"user-agent":`octokit-request.js/${bu} ${Eu.getUserAgent()}`}});hr.request=Su});var Ii=b(St=>{"use strict";Object.defineProperty(St,"__esModule",{value:!0});var _i=dr(),Ru=ze(),_u="4.6.2",Ti=class extends Error{constructor(t,r){let n=r.data.errors[0].message;super(n);Object.assign(this,r.data),Object.assign(this,{headers:r.headers}),this.name="GraphqlError",this.request=t,Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}},Tu=["method","baseUrl","url","headers","request","query","mediaType"],Au=["query","method","url"],Ai=/\/api\/v3\/?$/;function Iu(e,t,r){if(r){if(typeof t=="string"&&"query"in r)return Promise.reject(new Error('[@octokit/graphql] "query" cannot be used as variable name'));for(let o in r)if(!!Au.includes(o))return Promise.reject(new Error(`[@octokit/graphql] "${o}" cannot be used as variable name`))}let n=typeof t=="string"?Object.assign({query:t},r):t,i=Object.keys(n).reduce((o,a)=>Tu.includes(a)?(o[a]=n[a],o):(o.variables||(o.variables={}),o.variables[a]=n[a],o),{}),s=n.baseUrl||e.endpoint.DEFAULTS.baseUrl;return Ai.test(s)&&(i.url=s.replace(Ai,"/api/graphql")),e(i).then(o=>{if(o.data.errors){let a={};for(let u of Object.keys(o.headers))a[u]=o.headers[u];throw new Ti(i,{headers:a,data:o.data})}return o.data.data})}function pr(e,t){let r=e.defaults(t);return Object.assign((i,s)=>Iu(r,i,s),{defaults:pr.bind(null,r),endpoint:_i.request.endpoint})}var Pu=pr(_i.request,{headers:{"user-agent":`octokit-graphql.js/${_u} ${Ru.getUserAgent()}`},method:"POST",url:"/graphql"});function Nu(e){return pr(e,{method:"POST",url:"/graphql"})}St.graphql=Pu;St.withCustomRequest=Nu});var Pi=b(mr=>{"use strict";Object.defineProperty(mr,"__esModule",{value:!0});async function xu(e){let t=e.split(/\./).length===3?"app":/^v\d+\./.test(e)?"installation":"oauth";return{type:"token",token:e,tokenType:t}}function Lu(e){return e.split(/\./).length===3?`bearer ${e}`:`token ${e}`}async function Cu(e,t,r,n){let i=t.endpoint.merge(r,n);return i.headers.authorization=Lu(e),t(i)}var $u=function(t){if(!t)throw new Error("[@octokit/auth-token] No token passed to createTokenAuth");if(typeof t!="string")throw new Error("[@octokit/auth-token] Token passed to createTokenAuth is not a string");return t=t.replace(/^(token|bearer) +/i,""),Object.assign(xu.bind(null,t),{hook:Cu.bind(null,t)})};mr.createTokenAuth=$u});var Li=b(yr=>{"use strict";Object.defineProperty(yr,"__esModule",{value:!0});var ju=ze(),qu=Wn(),Ni=dr(),Du=Ii(),Uu=Pi();function Fu(e,t){if(e==null)return{};var r={},n=Object.keys(e),i,s;for(s=0;s=0)&&(r[i]=e[i]);return r}function ku(e,t){if(e==null)return{};var r=Fu(e,t),n,i;if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(i=0;i=0)&&(!Object.prototype.propertyIsEnumerable.call(e,n)||(r[n]=e[n]))}return r}var xi="3.4.0",Rt=class{constructor(t={}){let r=new qu.Collection,n={baseUrl:Ni.request.endpoint.DEFAULTS.baseUrl,headers:{},request:Object.assign({},t.request,{hook:r.bind(null,"request")}),mediaType:{previews:[],format:""}};if(n.headers["user-agent"]=[t.userAgent,`octokit-core.js/${xi} ${ju.getUserAgent()}`].filter(Boolean).join(" "),t.baseUrl&&(n.baseUrl=t.baseUrl),t.previews&&(n.mediaType.previews=t.previews),t.timeZone&&(n.headers["time-zone"]=t.timeZone),this.request=Ni.request.defaults(n),this.graphql=Du.withCustomRequest(this.request).defaults(n),this.log=Object.assign({debug:()=>{},info:()=>{},warn:console.warn.bind(console),error:console.error.bind(console)},t.log),this.hook=r,t.authStrategy){let{authStrategy:s}=t,o=ku(t,["authStrategy"]),a=s(Object.assign({request:this.request,log:this.log,octokit:this,octokitOptions:o},t.auth));r.wrap("request",a.hook),this.auth=a}else if(!t.auth)this.auth=async()=>({type:"unauthenticated"});else{let s=Uu.createTokenAuth(t.auth);r.wrap("request",s.hook),this.auth=s}this.constructor.plugins.forEach(s=>{Object.assign(this,s(this,t))})}static defaults(t){return class extends this{constructor(...n){let i=n[0]||{};if(typeof t=="function"){super(t(i));return}super(Object.assign({},t,i,i.userAgent&&t.userAgent?{userAgent:`${i.userAgent} ${t.userAgent}`}:null))}}}static plugin(...t){var r;let n=this.plugins;return r=class extends this{},r.plugins=n.concat(t.filter(s=>!n.includes(s))),r}};Rt.VERSION=xi;Rt.plugins=[];yr.Octokit=Rt});var qi=fe(require("path")),X=fe(Pe()),Di=fe(ot());var ve=fe(require("os")),Ci=fe(require("path")),ce=fe(Pe()),we=fe($n()),$i=fe(Li());function Me(e){return e.message!==void 0}var _t="v";async function ji(e){let t=we.find("flytectl",e,ve.arch());if(t!=="")return ce.info(`Found in cache @ ${t}`),t;ce.info("Resolving the download URL for the current platform...");let r=await Mu(e);if(Me(r))return r;ce.info(`Downloading flytectl version "${e}" from ${r}`);let n=await we.downloadTool(r);ce.info(`Successfully downloaded flytectl version "${e}" from ${r}`),ce.info("Extracting flytectl...");let i=await we.extractTar(n);ce.info(`Successfully extracted flytectl to ${i}`),ce.info("Adding flytectl to the cache...");let s=await we.cacheDir(Ci.join(i),"flytectl",e,ve.arch());return ce.info(`Successfully cached flytectl to ${s}`),s}async function Mu(e){let t="";switch(ve.arch()){case"x64":t="x86_64";break;default:return{message:`The "${ve.arch()}" architecture is not supported with a flytectl release.`}}let r="";switch(ve.platform()){case"linux":r="Linux";break;default:return{message:`The "${ve.platform()}" platform is not supported with a flytectl release.`}}let n=`flytectl_${r}_${t}.tar.gz`,i=new $i.Octokit,{data:s}=await i.request("GET /repos/{owner}/{repo}/releases",{owner:"flyteorg",repo:"flytectl"});switch(e){case"latest":for(let o of s[0].assets)if(n===o.name)return o.browser_download_url;break;default:for(let o of s)if(Bu(o.tag_name,e)){for(let a of o.assets)if(n===a.name)return a.browser_download_url}}return{message:`Unable to find flytectl version "${e}" for platform "${r}" and architecture "${t}".`}}function Bu(e,t){return e.indexOf(_t)===0&&(e=e.slice(_t.length)),t.indexOf(_t)===0&&(t=t.slice(_t.length)),e===t}async function Ui(){try{let e=await Gu();e!==null&&Me(e)&&X.setFailed(e.message)}catch(e){if(Me(e)){X.setFailed(e.message);return}X.setFailed("Internal error")}}async function Gu(){let e=X.getInput("version");if(e==="")return{message:"a version was not provided"};X.info(`Setting up flytectl version "${e}"`);let t=await ji(e);return Me(t)?t:(X.info("Adding flytectl binary to PATH"),X.addPath(qi.join(t)),await Di.which("flytectl",!0)===""?{message:"flytectl was not found on PATH"}:(X.info(`Successfully setup flytectl version ${e}`),null))}Ui(); +/*! + * is-plain-object + * + * Copyright (c) 2014-2017, Jon Schlinkert. + * Released under the MIT License. + */ +//# sourceMappingURL=main.js.map diff --git a/dist/main.js.map b/dist/main.js.map new file mode 100644 index 0000000..e8f08ee --- /dev/null +++ b/dist/main.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../node_modules/@actions/core/src/utils.ts", "../node_modules/@actions/core/src/command.ts", "../node_modules/@actions/core/src/file-command.ts", "../node_modules/@actions/core/src/core.ts", "../node_modules/@actions/io/src/io-util.ts", "../node_modules/@actions/io/src/io.ts", "../node_modules/semver/semver.js", "../node_modules/@actions/tool-cache/src/manifest.ts", "../node_modules/@actions/http-client/proxy.js", "../node_modules/tunnel/lib/tunnel.js", "../node_modules/tunnel/index.js", "../node_modules/@actions/http-client/index.js", "../node_modules/uuid/lib/rng.js", "../node_modules/uuid/lib/bytesToUuid.js", "../node_modules/uuid/v4.js", "../node_modules/@actions/exec/src/toolrunner.ts", "../node_modules/@actions/exec/src/exec.ts", "../node_modules/@actions/tool-cache/src/retry-helper.ts", "../node_modules/@actions/tool-cache/src/tool-cache.ts", "../node_modules/universal-user-agent/dist-src/index.js", "../node_modules/before-after-hook/lib/register.js", "../node_modules/before-after-hook/lib/add.js", "../node_modules/before-after-hook/lib/remove.js", "../node_modules/before-after-hook/index.js", "../node_modules/is-plain-object/dist/is-plain-object.js", "../node_modules/@octokit/endpoint/dist-src/util/lowercase-keys.js", "../node_modules/@octokit/endpoint/dist-src/util/merge-deep.js", "../node_modules/@octokit/endpoint/dist-src/util/remove-undefined-properties.js", "../node_modules/@octokit/endpoint/dist-src/merge.js", "../node_modules/@octokit/endpoint/dist-src/util/add-query-parameters.js", "../node_modules/@octokit/endpoint/dist-src/util/extract-url-variable-names.js", "../node_modules/@octokit/endpoint/dist-src/util/omit.js", "../node_modules/@octokit/endpoint/dist-src/util/url-template.js", "../node_modules/@octokit/endpoint/dist-src/parse.js", "../node_modules/@octokit/endpoint/dist-src/endpoint-with-defaults.js", "../node_modules/@octokit/endpoint/dist-src/with-defaults.js", "../node_modules/@octokit/endpoint/dist-src/version.js", "../node_modules/@octokit/endpoint/dist-src/defaults.js", "../node_modules/@octokit/endpoint/dist-src/index.js", "../node_modules/node-fetch/lib/index.js", "../node_modules/deprecation/dist-node/index.js", "../node_modules/wrappy/wrappy.js", "../node_modules/once/once.js", "../node_modules/@octokit/request-error/dist-src/index.js", "../node_modules/@octokit/request/dist-src/version.js", "../node_modules/@octokit/request/dist-src/get-buffer-response.js", "../node_modules/@octokit/request/dist-src/fetch-wrapper.js", "../node_modules/@octokit/request/dist-src/with-defaults.js", "../node_modules/@octokit/request/dist-src/index.js", "../node_modules/@octokit/graphql/dist-src/version.js", "../node_modules/@octokit/graphql/dist-src/error.js", "../node_modules/@octokit/graphql/dist-src/graphql.js", "../node_modules/@octokit/graphql/dist-src/with-defaults.js", "../node_modules/@octokit/graphql/dist-src/index.js", "../node_modules/@octokit/auth-token/dist-src/auth.js", "../node_modules/@octokit/auth-token/dist-src/with-authorization-prefix.js", "../node_modules/@octokit/auth-token/dist-src/hook.js", "../node_modules/@octokit/auth-token/dist-src/index.js", "../node_modules/@octokit/core/dist-src/version.js", "../node_modules/@octokit/core/dist-src/index.js", "../src/run.ts", "../src/flytectl.ts", "../src/error.ts", "../src/main.ts"], + "sourcesContent": [null, null, null, null, null, null, "exports = module.exports = SemVer\n\nvar debug\n/* istanbul ignore next */\nif (typeof process === 'object' &&\n process.env &&\n process.env.NODE_DEBUG &&\n /\\bsemver\\b/i.test(process.env.NODE_DEBUG)) {\n debug = function () {\n var args = Array.prototype.slice.call(arguments, 0)\n args.unshift('SEMVER')\n console.log.apply(console, args)\n }\n} else {\n debug = function () {}\n}\n\n// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nexports.SEMVER_SPEC_VERSION = '2.0.0'\n\nvar MAX_LENGTH = 256\nvar MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n /* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nvar MAX_SAFE_COMPONENT_LENGTH = 16\n\n// The actual regexps go on exports.re\nvar re = exports.re = []\nvar src = exports.src = []\nvar t = exports.tokens = {}\nvar R = 0\n\nfunction tok (n) {\n t[n] = R++\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ntok('NUMERICIDENTIFIER')\nsrc[t.NUMERICIDENTIFIER] = '0|[1-9]\\\\d*'\ntok('NUMERICIDENTIFIERLOOSE')\nsrc[t.NUMERICIDENTIFIERLOOSE] = '[0-9]+'\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ntok('NONNUMERICIDENTIFIER')\nsrc[t.NONNUMERICIDENTIFIER] = '\\\\d*[a-zA-Z-][a-zA-Z0-9-]*'\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ntok('MAINVERSION')\nsrc[t.MAINVERSION] = '(' + src[t.NUMERICIDENTIFIER] + ')\\\\.' +\n '(' + src[t.NUMERICIDENTIFIER] + ')\\\\.' +\n '(' + src[t.NUMERICIDENTIFIER] + ')'\n\ntok('MAINVERSIONLOOSE')\nsrc[t.MAINVERSIONLOOSE] = '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\\\.' +\n '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\\\.' +\n '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')'\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n\ntok('PRERELEASEIDENTIFIER')\nsrc[t.PRERELEASEIDENTIFIER] = '(?:' + src[t.NUMERICIDENTIFIER] +\n '|' + src[t.NONNUMERICIDENTIFIER] + ')'\n\ntok('PRERELEASEIDENTIFIERLOOSE')\nsrc[t.PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[t.NUMERICIDENTIFIERLOOSE] +\n '|' + src[t.NONNUMERICIDENTIFIER] + ')'\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ntok('PRERELEASE')\nsrc[t.PRERELEASE] = '(?:-(' + src[t.PRERELEASEIDENTIFIER] +\n '(?:\\\\.' + src[t.PRERELEASEIDENTIFIER] + ')*))'\n\ntok('PRERELEASELOOSE')\nsrc[t.PRERELEASELOOSE] = '(?:-?(' + src[t.PRERELEASEIDENTIFIERLOOSE] +\n '(?:\\\\.' + src[t.PRERELEASEIDENTIFIERLOOSE] + ')*))'\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ntok('BUILDIDENTIFIER')\nsrc[t.BUILDIDENTIFIER] = '[0-9A-Za-z-]+'\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ntok('BUILD')\nsrc[t.BUILD] = '(?:\\\\+(' + src[t.BUILDIDENTIFIER] +\n '(?:\\\\.' + src[t.BUILDIDENTIFIER] + ')*))'\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ntok('FULL')\ntok('FULLPLAIN')\nsrc[t.FULLPLAIN] = 'v?' + src[t.MAINVERSION] +\n src[t.PRERELEASE] + '?' +\n src[t.BUILD] + '?'\n\nsrc[t.FULL] = '^' + src[t.FULLPLAIN] + '$'\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ntok('LOOSEPLAIN')\nsrc[t.LOOSEPLAIN] = '[v=\\\\s]*' + src[t.MAINVERSIONLOOSE] +\n src[t.PRERELEASELOOSE] + '?' +\n src[t.BUILD] + '?'\n\ntok('LOOSE')\nsrc[t.LOOSE] = '^' + src[t.LOOSEPLAIN] + '$'\n\ntok('GTLT')\nsrc[t.GTLT] = '((?:<|>)?=?)'\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\ntok('XRANGEIDENTIFIERLOOSE')\nsrc[t.XRANGEIDENTIFIERLOOSE] = src[t.NUMERICIDENTIFIERLOOSE] + '|x|X|\\\\*'\ntok('XRANGEIDENTIFIER')\nsrc[t.XRANGEIDENTIFIER] = src[t.NUMERICIDENTIFIER] + '|x|X|\\\\*'\n\ntok('XRANGEPLAIN')\nsrc[t.XRANGEPLAIN] = '[v=\\\\s]*(' + src[t.XRANGEIDENTIFIER] + ')' +\n '(?:\\\\.(' + src[t.XRANGEIDENTIFIER] + ')' +\n '(?:\\\\.(' + src[t.XRANGEIDENTIFIER] + ')' +\n '(?:' + src[t.PRERELEASE] + ')?' +\n src[t.BUILD] + '?' +\n ')?)?'\n\ntok('XRANGEPLAINLOOSE')\nsrc[t.XRANGEPLAINLOOSE] = '[v=\\\\s]*(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' +\n '(?:\\\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' +\n '(?:\\\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' +\n '(?:' + src[t.PRERELEASELOOSE] + ')?' +\n src[t.BUILD] + '?' +\n ')?)?'\n\ntok('XRANGE')\nsrc[t.XRANGE] = '^' + src[t.GTLT] + '\\\\s*' + src[t.XRANGEPLAIN] + '$'\ntok('XRANGELOOSE')\nsrc[t.XRANGELOOSE] = '^' + src[t.GTLT] + '\\\\s*' + src[t.XRANGEPLAINLOOSE] + '$'\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ntok('COERCE')\nsrc[t.COERCE] = '(^|[^\\\\d])' +\n '(\\\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' +\n '(?:\\\\.(\\\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +\n '(?:\\\\.(\\\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +\n '(?:$|[^\\\\d])'\ntok('COERCERTL')\nre[t.COERCERTL] = new RegExp(src[t.COERCE], 'g')\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ntok('LONETILDE')\nsrc[t.LONETILDE] = '(?:~>?)'\n\ntok('TILDETRIM')\nsrc[t.TILDETRIM] = '(\\\\s*)' + src[t.LONETILDE] + '\\\\s+'\nre[t.TILDETRIM] = new RegExp(src[t.TILDETRIM], 'g')\nvar tildeTrimReplace = '$1~'\n\ntok('TILDE')\nsrc[t.TILDE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAIN] + '$'\ntok('TILDELOOSE')\nsrc[t.TILDELOOSE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAINLOOSE] + '$'\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ntok('LONECARET')\nsrc[t.LONECARET] = '(?:\\\\^)'\n\ntok('CARETTRIM')\nsrc[t.CARETTRIM] = '(\\\\s*)' + src[t.LONECARET] + '\\\\s+'\nre[t.CARETTRIM] = new RegExp(src[t.CARETTRIM], 'g')\nvar caretTrimReplace = '$1^'\n\ntok('CARET')\nsrc[t.CARET] = '^' + src[t.LONECARET] + src[t.XRANGEPLAIN] + '$'\ntok('CARETLOOSE')\nsrc[t.CARETLOOSE] = '^' + src[t.LONECARET] + src[t.XRANGEPLAINLOOSE] + '$'\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ntok('COMPARATORLOOSE')\nsrc[t.COMPARATORLOOSE] = '^' + src[t.GTLT] + '\\\\s*(' + src[t.LOOSEPLAIN] + ')$|^$'\ntok('COMPARATOR')\nsrc[t.COMPARATOR] = '^' + src[t.GTLT] + '\\\\s*(' + src[t.FULLPLAIN] + ')$|^$'\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ntok('COMPARATORTRIM')\nsrc[t.COMPARATORTRIM] = '(\\\\s*)' + src[t.GTLT] +\n '\\\\s*(' + src[t.LOOSEPLAIN] + '|' + src[t.XRANGEPLAIN] + ')'\n\n// this one has to use the /g flag\nre[t.COMPARATORTRIM] = new RegExp(src[t.COMPARATORTRIM], 'g')\nvar comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ntok('HYPHENRANGE')\nsrc[t.HYPHENRANGE] = '^\\\\s*(' + src[t.XRANGEPLAIN] + ')' +\n '\\\\s+-\\\\s+' +\n '(' + src[t.XRANGEPLAIN] + ')' +\n '\\\\s*$'\n\ntok('HYPHENRANGELOOSE')\nsrc[t.HYPHENRANGELOOSE] = '^\\\\s*(' + src[t.XRANGEPLAINLOOSE] + ')' +\n '\\\\s+-\\\\s+' +\n '(' + src[t.XRANGEPLAINLOOSE] + ')' +\n '\\\\s*$'\n\n// Star ranges basically just allow anything at all.\ntok('STAR')\nsrc[t.STAR] = '(<|>)?=?\\\\s*\\\\*'\n\n// Compile to actual regexp objects.\n// All are flag-free, unless they were created above with a flag.\nfor (var i = 0; i < R; i++) {\n debug(i, src[i])\n if (!re[i]) {\n re[i] = new RegExp(src[i])\n }\n}\n\nexports.parse = parse\nfunction parse (version, options) {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n if (version.length > MAX_LENGTH) {\n return null\n }\n\n var r = options.loose ? re[t.LOOSE] : re[t.FULL]\n if (!r.test(version)) {\n return null\n }\n\n try {\n return new SemVer(version, options)\n } catch (er) {\n return null\n }\n}\n\nexports.valid = valid\nfunction valid (version, options) {\n var v = parse(version, options)\n return v ? v.version : null\n}\n\nexports.clean = clean\nfunction clean (version, options) {\n var s = parse(version.trim().replace(/^[=v]+/, ''), options)\n return s ? s.version : null\n}\n\nexports.SemVer = SemVer\n\nfunction SemVer (version, options) {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n if (version instanceof SemVer) {\n if (version.loose === options.loose) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError('Invalid Version: ' + version)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters')\n }\n\n if (!(this instanceof SemVer)) {\n return new SemVer(version, options)\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n\n var m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n if (!m) {\n throw new TypeError('Invalid Version: ' + version)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map(function (id) {\n if (/^[0-9]+$/.test(id)) {\n var num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n}\n\nSemVer.prototype.format = function () {\n this.version = this.major + '.' + this.minor + '.' + this.patch\n if (this.prerelease.length) {\n this.version += '-' + this.prerelease.join('.')\n }\n return this.version\n}\n\nSemVer.prototype.toString = function () {\n return this.version\n}\n\nSemVer.prototype.compare = function (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n return this.compareMain(other) || this.comparePre(other)\n}\n\nSemVer.prototype.compareMain = function (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n return compareIdentifiers(this.major, other.major) ||\n compareIdentifiers(this.minor, other.minor) ||\n compareIdentifiers(this.patch, other.patch)\n}\n\nSemVer.prototype.comparePre = function (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n var i = 0\n do {\n var a = this.prerelease[i]\n var b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n}\n\nSemVer.prototype.compareBuild = function (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n var i = 0\n do {\n var a = this.build[i]\n var b = other.build[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n}\n\n// preminor will bump the version up to the next minor release, and immediately\n// down to pre-release. premajor and prepatch work the same way.\nSemVer.prototype.inc = function (release, identifier) {\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier)\n this.inc('pre', identifier)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier)\n }\n this.inc('pre', identifier)\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 \"pre\" would become 1.0.0-0 which is the wrong direction.\n case 'pre':\n if (this.prerelease.length === 0) {\n this.prerelease = [0]\n } else {\n var i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n this.prerelease.push(0)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n if (this.prerelease[0] === identifier) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = [identifier, 0]\n }\n } else {\n this.prerelease = [identifier, 0]\n }\n }\n break\n\n default:\n throw new Error('invalid increment argument: ' + release)\n }\n this.format()\n this.raw = this.version\n return this\n}\n\nexports.inc = inc\nfunction inc (version, release, loose, identifier) {\n if (typeof (loose) === 'string') {\n identifier = loose\n loose = undefined\n }\n\n try {\n return new SemVer(version, loose).inc(release, identifier).version\n } catch (er) {\n return null\n }\n}\n\nexports.diff = diff\nfunction diff (version1, version2) {\n if (eq(version1, version2)) {\n return null\n } else {\n var v1 = parse(version1)\n var v2 = parse(version2)\n var prefix = ''\n if (v1.prerelease.length || v2.prerelease.length) {\n prefix = 'pre'\n var defaultResult = 'prerelease'\n }\n for (var key in v1) {\n if (key === 'major' || key === 'minor' || key === 'patch') {\n if (v1[key] !== v2[key]) {\n return prefix + key\n }\n }\n }\n return defaultResult // may be undefined\n }\n}\n\nexports.compareIdentifiers = compareIdentifiers\n\nvar numeric = /^[0-9]+$/\nfunction compareIdentifiers (a, b) {\n var anum = numeric.test(a)\n var bnum = numeric.test(b)\n\n if (anum && bnum) {\n a = +a\n b = +b\n }\n\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1\n}\n\nexports.rcompareIdentifiers = rcompareIdentifiers\nfunction rcompareIdentifiers (a, b) {\n return compareIdentifiers(b, a)\n}\n\nexports.major = major\nfunction major (a, loose) {\n return new SemVer(a, loose).major\n}\n\nexports.minor = minor\nfunction minor (a, loose) {\n return new SemVer(a, loose).minor\n}\n\nexports.patch = patch\nfunction patch (a, loose) {\n return new SemVer(a, loose).patch\n}\n\nexports.compare = compare\nfunction compare (a, b, loose) {\n return new SemVer(a, loose).compare(new SemVer(b, loose))\n}\n\nexports.compareLoose = compareLoose\nfunction compareLoose (a, b) {\n return compare(a, b, true)\n}\n\nexports.compareBuild = compareBuild\nfunction compareBuild (a, b, loose) {\n var versionA = new SemVer(a, loose)\n var versionB = new SemVer(b, loose)\n return versionA.compare(versionB) || versionA.compareBuild(versionB)\n}\n\nexports.rcompare = rcompare\nfunction rcompare (a, b, loose) {\n return compare(b, a, loose)\n}\n\nexports.sort = sort\nfunction sort (list, loose) {\n return list.sort(function (a, b) {\n return exports.compareBuild(a, b, loose)\n })\n}\n\nexports.rsort = rsort\nfunction rsort (list, loose) {\n return list.sort(function (a, b) {\n return exports.compareBuild(b, a, loose)\n })\n}\n\nexports.gt = gt\nfunction gt (a, b, loose) {\n return compare(a, b, loose) > 0\n}\n\nexports.lt = lt\nfunction lt (a, b, loose) {\n return compare(a, b, loose) < 0\n}\n\nexports.eq = eq\nfunction eq (a, b, loose) {\n return compare(a, b, loose) === 0\n}\n\nexports.neq = neq\nfunction neq (a, b, loose) {\n return compare(a, b, loose) !== 0\n}\n\nexports.gte = gte\nfunction gte (a, b, loose) {\n return compare(a, b, loose) >= 0\n}\n\nexports.lte = lte\nfunction lte (a, b, loose) {\n return compare(a, b, loose) <= 0\n}\n\nexports.cmp = cmp\nfunction cmp (a, op, b, loose) {\n switch (op) {\n case '===':\n if (typeof a === 'object')\n a = a.version\n if (typeof b === 'object')\n b = b.version\n return a === b\n\n case '!==':\n if (typeof a === 'object')\n a = a.version\n if (typeof b === 'object')\n b = b.version\n return a !== b\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose)\n\n case '!=':\n return neq(a, b, loose)\n\n case '>':\n return gt(a, b, loose)\n\n case '>=':\n return gte(a, b, loose)\n\n case '<':\n return lt(a, b, loose)\n\n case '<=':\n return lte(a, b, loose)\n\n default:\n throw new TypeError('Invalid operator: ' + op)\n }\n}\n\nexports.Comparator = Comparator\nfunction Comparator (comp, options) {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n if (!(this instanceof Comparator)) {\n return new Comparator(comp, options)\n }\n\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n}\n\nvar ANY = {}\nComparator.prototype.parse = function (comp) {\n var r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n var m = comp.match(r)\n\n if (!m) {\n throw new TypeError('Invalid comparator: ' + comp)\n }\n\n this.operator = m[1] !== undefined ? m[1] : ''\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n}\n\nComparator.prototype.toString = function () {\n return this.value\n}\n\nComparator.prototype.test = function (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY || version === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n}\n\nComparator.prototype.intersects = function (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n\n var rangeTmp\n\n if (this.operator === '') {\n if (this.value === '') {\n return true\n }\n rangeTmp = new Range(comp.value, options)\n return satisfies(this.value, rangeTmp, options)\n } else if (comp.operator === '') {\n if (comp.value === '') {\n return true\n }\n rangeTmp = new Range(this.value, options)\n return satisfies(comp.semver, rangeTmp, options)\n }\n\n var sameDirectionIncreasing =\n (this.operator === '>=' || this.operator === '>') &&\n (comp.operator === '>=' || comp.operator === '>')\n var sameDirectionDecreasing =\n (this.operator === '<=' || this.operator === '<') &&\n (comp.operator === '<=' || comp.operator === '<')\n var sameSemVer = this.semver.version === comp.semver.version\n var differentDirectionsInclusive =\n (this.operator === '>=' || this.operator === '<=') &&\n (comp.operator === '>=' || comp.operator === '<=')\n var oppositeDirectionsLessThan =\n cmp(this.semver, '<', comp.semver, options) &&\n ((this.operator === '>=' || this.operator === '>') &&\n (comp.operator === '<=' || comp.operator === '<'))\n var oppositeDirectionsGreaterThan =\n cmp(this.semver, '>', comp.semver, options) &&\n ((this.operator === '<=' || this.operator === '<') &&\n (comp.operator === '>=' || comp.operator === '>'))\n\n return sameDirectionIncreasing || sameDirectionDecreasing ||\n (sameSemVer && differentDirectionsInclusive) ||\n oppositeDirectionsLessThan || oppositeDirectionsGreaterThan\n}\n\nexports.Range = Range\nfunction Range (range, options) {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n\n if (range instanceof Range) {\n if (range.loose === !!options.loose &&\n range.includePrerelease === !!options.includePrerelease) {\n return range\n } else {\n return new Range(range.raw, options)\n }\n }\n\n if (range instanceof Comparator) {\n return new Range(range.value, options)\n }\n\n if (!(this instanceof Range)) {\n return new Range(range, options)\n }\n\n this.options = options\n this.loose = !!options.loose\n this.includePrerelease = !!options.includePrerelease\n\n // First, split based on boolean or ||\n this.raw = range\n this.set = range.split(/\\s*\\|\\|\\s*/).map(function (range) {\n return this.parseRange(range.trim())\n }, this).filter(function (c) {\n // throw out any that are not relevant for whatever reason\n return c.length\n })\n\n if (!this.set.length) {\n throw new TypeError('Invalid SemVer Range: ' + range)\n }\n\n this.format()\n}\n\nRange.prototype.format = function () {\n this.range = this.set.map(function (comps) {\n return comps.join(' ').trim()\n }).join('||').trim()\n return this.range\n}\n\nRange.prototype.toString = function () {\n return this.range\n}\n\nRange.prototype.parseRange = function (range) {\n var loose = this.options.loose\n range = range.trim()\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n var hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n range = range.replace(hr, hyphenReplace)\n debug('hyphen replace', range)\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n debug('comparator trim', range, re[t.COMPARATORTRIM])\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n\n // normalize spaces\n range = range.split(/\\s+/).join(' ')\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n var compRe = loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n var set = range.split(' ').map(function (comp) {\n return parseComparator(comp, this.options)\n }, this).join(' ').split(/\\s+/)\n if (this.options.loose) {\n // in loose mode, throw out any that are not valid comparators\n set = set.filter(function (comp) {\n return !!comp.match(compRe)\n })\n }\n set = set.map(function (comp) {\n return new Comparator(comp, this.options)\n }, this)\n\n return set\n}\n\nRange.prototype.intersects = function (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required')\n }\n\n return this.set.some(function (thisComparators) {\n return (\n isSatisfiable(thisComparators, options) &&\n range.set.some(function (rangeComparators) {\n return (\n isSatisfiable(rangeComparators, options) &&\n thisComparators.every(function (thisComparator) {\n return rangeComparators.every(function (rangeComparator) {\n return thisComparator.intersects(rangeComparator, options)\n })\n })\n )\n })\n )\n })\n}\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nfunction isSatisfiable (comparators, options) {\n var result = true\n var remainingComparators = comparators.slice()\n var testComparator = remainingComparators.pop()\n\n while (result && remainingComparators.length) {\n result = remainingComparators.every(function (otherComparator) {\n return testComparator.intersects(otherComparator, options)\n })\n\n testComparator = remainingComparators.pop()\n }\n\n return result\n}\n\n// Mostly just for testing and legacy API reasons\nexports.toComparators = toComparators\nfunction toComparators (range, options) {\n return new Range(range, options).set.map(function (comp) {\n return comp.map(function (c) {\n return c.value\n }).join(' ').trim().split(' ')\n })\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nfunction parseComparator (comp, options) {\n debug('comp', comp, options)\n comp = replaceCarets(comp, options)\n debug('caret', comp)\n comp = replaceTildes(comp, options)\n debug('tildes', comp)\n comp = replaceXRanges(comp, options)\n debug('xrange', comp)\n comp = replaceStars(comp, options)\n debug('stars', comp)\n return comp\n}\n\nfunction isX (id) {\n return !id || id.toLowerCase() === 'x' || id === '*'\n}\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0\nfunction replaceTildes (comp, options) {\n return comp.trim().split(/\\s+/).map(function (comp) {\n return replaceTilde(comp, options)\n }).join(' ')\n}\n\nfunction replaceTilde (comp, options) {\n var r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n return comp.replace(r, function (_, M, m, p, pr) {\n debug('tilde', comp, _, M, m, p, pr)\n var ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0\n ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'\n } else if (pr) {\n debug('replaceTilde pr', pr)\n ret = '>=' + M + '.' + m + '.' + p + '-' + pr +\n ' <' + M + '.' + (+m + 1) + '.0'\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0\n ret = '>=' + M + '.' + m + '.' + p +\n ' <' + M + '.' + (+m + 1) + '.0'\n }\n\n debug('tilde return', ret)\n return ret\n })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0\n// ^1.2.3 --> >=1.2.3 <2.0.0\n// ^1.2.0 --> >=1.2.0 <2.0.0\nfunction replaceCarets (comp, options) {\n return comp.trim().split(/\\s+/).map(function (comp) {\n return replaceCaret(comp, options)\n }).join(' ')\n}\n\nfunction replaceCaret (comp, options) {\n debug('caret', comp, options)\n var r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n return comp.replace(r, function (_, M, m, p, pr) {\n debug('caret', comp, _, M, m, p, pr)\n var ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'\n } else if (isX(p)) {\n if (M === '0') {\n ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'\n } else {\n ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0'\n }\n } else if (pr) {\n debug('replaceCaret pr', pr)\n if (M === '0') {\n if (m === '0') {\n ret = '>=' + M + '.' + m + '.' + p + '-' + pr +\n ' <' + M + '.' + m + '.' + (+p + 1)\n } else {\n ret = '>=' + M + '.' + m + '.' + p + '-' + pr +\n ' <' + M + '.' + (+m + 1) + '.0'\n }\n } else {\n ret = '>=' + M + '.' + m + '.' + p + '-' + pr +\n ' <' + (+M + 1) + '.0.0'\n }\n } else {\n debug('no pr')\n if (M === '0') {\n if (m === '0') {\n ret = '>=' + M + '.' + m + '.' + p +\n ' <' + M + '.' + m + '.' + (+p + 1)\n } else {\n ret = '>=' + M + '.' + m + '.' + p +\n ' <' + M + '.' + (+m + 1) + '.0'\n }\n } else {\n ret = '>=' + M + '.' + m + '.' + p +\n ' <' + (+M + 1) + '.0.0'\n }\n }\n\n debug('caret return', ret)\n return ret\n })\n}\n\nfunction replaceXRanges (comp, options) {\n debug('replaceXRanges', comp, options)\n return comp.split(/\\s+/).map(function (comp) {\n return replaceXRange(comp, options)\n }).join(' ')\n}\n\nfunction replaceXRange (comp, options) {\n comp = comp.trim()\n var r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n return comp.replace(r, function (ret, gtlt, M, m, p, pr) {\n debug('xRange', comp, ret, gtlt, M, m, p, pr)\n var xM = isX(M)\n var xm = xM || isX(m)\n var xp = xm || isX(p)\n var anyX = xp\n\n if (gtlt === '=' && anyX) {\n gtlt = ''\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options.includePrerelease ? '-0' : ''\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0'\n } else {\n // nothing is forbidden\n ret = '*'\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0\n }\n p = 0\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n // >1.2.3 => >= 1.2.4\n gtlt = '>='\n if (xm) {\n M = +M + 1\n m = 0\n p = 0\n } else {\n m = +m + 1\n p = 0\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm) {\n M = +M + 1\n } else {\n m = +m + 1\n }\n }\n\n ret = gtlt + M + '.' + m + '.' + p + pr\n } else if (xm) {\n ret = '>=' + M + '.0.0' + pr + ' <' + (+M + 1) + '.0.0' + pr\n } else if (xp) {\n ret = '>=' + M + '.' + m + '.0' + pr +\n ' <' + M + '.' + (+m + 1) + '.0' + pr\n }\n\n debug('xRange return', ret)\n\n return ret\n })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nfunction replaceStars (comp, options) {\n debug('replaceStars', comp, options)\n // Looseness is ignored here. star is always as loose as it gets!\n return comp.trim().replace(re[t.STAR], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0\nfunction hyphenReplace ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr, tb) {\n if (isX(fM)) {\n from = ''\n } else if (isX(fm)) {\n from = '>=' + fM + '.0.0'\n } else if (isX(fp)) {\n from = '>=' + fM + '.' + fm + '.0'\n } else {\n from = '>=' + from\n }\n\n if (isX(tM)) {\n to = ''\n } else if (isX(tm)) {\n to = '<' + (+tM + 1) + '.0.0'\n } else if (isX(tp)) {\n to = '<' + tM + '.' + (+tm + 1) + '.0'\n } else if (tpr) {\n to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr\n } else {\n to = '<=' + to\n }\n\n return (from + ' ' + to).trim()\n}\n\n// if ANY of the sets match ALL of its comparators, then pass\nRange.prototype.test = function (version) {\n if (!version) {\n return false\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n for (var i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true\n }\n }\n return false\n}\n\nfunction testSet (set, version, options) {\n for (var i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (i = 0; i < set.length; i++) {\n debug(set[i].semver)\n if (set[i].semver === ANY) {\n continue\n }\n\n if (set[i].semver.prerelease.length > 0) {\n var allowed = set[i].semver\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch) {\n return true\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false\n }\n\n return true\n}\n\nexports.satisfies = satisfies\nfunction satisfies (version, range, options) {\n try {\n range = new Range(range, options)\n } catch (er) {\n return false\n }\n return range.test(version)\n}\n\nexports.maxSatisfying = maxSatisfying\nfunction maxSatisfying (versions, range, options) {\n var max = null\n var maxSV = null\n try {\n var rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach(function (v) {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!max || maxSV.compare(v) === -1) {\n // compare(max, v, true)\n max = v\n maxSV = new SemVer(max, options)\n }\n }\n })\n return max\n}\n\nexports.minSatisfying = minSatisfying\nfunction minSatisfying (versions, range, options) {\n var min = null\n var minSV = null\n try {\n var rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach(function (v) {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!min || minSV.compare(v) === 1) {\n // compare(min, v, true)\n min = v\n minSV = new SemVer(min, options)\n }\n }\n })\n return min\n}\n\nexports.minVersion = minVersion\nfunction minVersion (range, loose) {\n range = new Range(range, loose)\n\n var minver = new SemVer('0.0.0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = new SemVer('0.0.0-0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = null\n for (var i = 0; i < range.set.length; ++i) {\n var comparators = range.set[i]\n\n comparators.forEach(function (comparator) {\n // Clone to avoid manipulating the comparator's semver object.\n var compver = new SemVer(comparator.semver.version)\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++\n } else {\n compver.prerelease.push(0)\n }\n compver.raw = compver.format()\n /* fallthrough */\n case '':\n case '>=':\n if (!minver || gt(minver, compver)) {\n minver = compver\n }\n break\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break\n /* istanbul ignore next */\n default:\n throw new Error('Unexpected operation: ' + comparator.operator)\n }\n })\n }\n\n if (minver && range.test(minver)) {\n return minver\n }\n\n return null\n}\n\nexports.validRange = validRange\nfunction validRange (range, options) {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*'\n } catch (er) {\n return null\n }\n}\n\n// Determine if version is less than all the versions possible in the range\nexports.ltr = ltr\nfunction ltr (version, range, options) {\n return outside(version, range, '<', options)\n}\n\n// Determine if version is greater than all the versions possible in the range.\nexports.gtr = gtr\nfunction gtr (version, range, options) {\n return outside(version, range, '>', options)\n}\n\nexports.outside = outside\nfunction outside (version, range, hilo, options) {\n version = new SemVer(version, options)\n range = new Range(range, options)\n\n var gtfn, ltefn, ltfn, comp, ecomp\n switch (hilo) {\n case '>':\n gtfn = gt\n ltefn = lte\n ltfn = lt\n comp = '>'\n ecomp = '>='\n break\n case '<':\n gtfn = lt\n ltefn = gte\n ltfn = gt\n comp = '<'\n ecomp = '<='\n break\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n }\n\n // If it satisifes the range it is not outside\n if (satisfies(version, range, options)) {\n return false\n }\n\n // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n for (var i = 0; i < range.set.length; ++i) {\n var comparators = range.set[i]\n\n var high = null\n var low = null\n\n comparators.forEach(function (comparator) {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0')\n }\n high = high || comparator\n low = low || comparator\n if (gtfn(comparator.semver, high.semver, options)) {\n high = comparator\n } else if (ltfn(comparator.semver, low.semver, options)) {\n low = comparator\n }\n })\n\n // If the edge version comparator has a operator then our version\n // isn't outside it\n if (high.operator === comp || high.operator === ecomp) {\n return false\n }\n\n // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n if ((!low.operator || low.operator === comp) &&\n ltefn(version, low.semver)) {\n return false\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false\n }\n }\n return true\n}\n\nexports.prerelease = prerelease\nfunction prerelease (version, options) {\n var parsed = parse(version, options)\n return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\n\nexports.intersects = intersects\nfunction intersects (r1, r2, options) {\n r1 = new Range(r1, options)\n r2 = new Range(r2, options)\n return r1.intersects(r2)\n}\n\nexports.coerce = coerce\nfunction coerce (version, options) {\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version === 'number') {\n version = String(version)\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n options = options || {}\n\n var match = null\n if (!options.rtl) {\n match = version.match(re[t.COERCE])\n } else {\n // Find the right-most coercible string that does not share\n // a terminus with a more left-ward coercible string.\n // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'\n //\n // Walk through the string checking with a /g regexp\n // Manually set the index so as to pick up overlapping matches.\n // Stop when we get a match that ends at the string end, since no\n // coercible string can be more right-ward without the same terminus.\n var next\n while ((next = re[t.COERCERTL].exec(version)) &&\n (!match || match.index + match[0].length !== version.length)\n ) {\n if (!match ||\n next.index + next[0].length !== match.index + match[0].length) {\n match = next\n }\n re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length\n }\n // leave it in a clean state\n re[t.COERCERTL].lastIndex = -1\n }\n\n if (match === null) {\n return null\n }\n\n return parse(match[2] +\n '.' + (match[3] || '0') +\n '.' + (match[4] || '0'), options)\n}\n", null, "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction getProxyUrl(reqUrl) {\n let usingSsl = reqUrl.protocol === 'https:';\n let proxyUrl;\n if (checkBypass(reqUrl)) {\n return proxyUrl;\n }\n let proxyVar;\n if (usingSsl) {\n proxyVar = process.env['https_proxy'] || process.env['HTTPS_PROXY'];\n }\n else {\n proxyVar = process.env['http_proxy'] || process.env['HTTP_PROXY'];\n }\n if (proxyVar) {\n proxyUrl = new URL(proxyVar);\n }\n return proxyUrl;\n}\nexports.getProxyUrl = getProxyUrl;\nfunction checkBypass(reqUrl) {\n if (!reqUrl.hostname) {\n return false;\n }\n let noProxy = process.env['no_proxy'] || process.env['NO_PROXY'] || '';\n if (!noProxy) {\n return false;\n }\n // Determine the request port\n let reqPort;\n if (reqUrl.port) {\n reqPort = Number(reqUrl.port);\n }\n else if (reqUrl.protocol === 'http:') {\n reqPort = 80;\n }\n else if (reqUrl.protocol === 'https:') {\n reqPort = 443;\n }\n // Format the request hostname and hostname with port\n let upperReqHosts = [reqUrl.hostname.toUpperCase()];\n if (typeof reqPort === 'number') {\n upperReqHosts.push(`${upperReqHosts[0]}:${reqPort}`);\n }\n // Compare request host against noproxy\n for (let upperNoProxyItem of noProxy\n .split(',')\n .map(x => x.trim().toUpperCase())\n .filter(x => x)) {\n if (upperReqHosts.some(x => x === upperNoProxyItem)) {\n return true;\n }\n }\n return false;\n}\nexports.checkBypass = checkBypass;\n", "'use strict';\n\nvar net = require('net');\nvar tls = require('tls');\nvar http = require('http');\nvar https = require('https');\nvar events = require('events');\nvar assert = require('assert');\nvar util = require('util');\n\n\nexports.httpOverHttp = httpOverHttp;\nexports.httpsOverHttp = httpsOverHttp;\nexports.httpOverHttps = httpOverHttps;\nexports.httpsOverHttps = httpsOverHttps;\n\n\nfunction httpOverHttp(options) {\n var agent = new TunnelingAgent(options);\n agent.request = http.request;\n return agent;\n}\n\nfunction httpsOverHttp(options) {\n var agent = new TunnelingAgent(options);\n agent.request = http.request;\n agent.createSocket = createSecureSocket;\n agent.defaultPort = 443;\n return agent;\n}\n\nfunction httpOverHttps(options) {\n var agent = new TunnelingAgent(options);\n agent.request = https.request;\n return agent;\n}\n\nfunction httpsOverHttps(options) {\n var agent = new TunnelingAgent(options);\n agent.request = https.request;\n agent.createSocket = createSecureSocket;\n agent.defaultPort = 443;\n return agent;\n}\n\n\nfunction TunnelingAgent(options) {\n var self = this;\n self.options = options || {};\n self.proxyOptions = self.options.proxy || {};\n self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets;\n self.requests = [];\n self.sockets = [];\n\n self.on('free', function onFree(socket, host, port, localAddress) {\n var options = toOptions(host, port, localAddress);\n for (var i = 0, len = self.requests.length; i < len; ++i) {\n var pending = self.requests[i];\n if (pending.host === options.host && pending.port === options.port) {\n // Detect the request to connect same origin server,\n // reuse the connection.\n self.requests.splice(i, 1);\n pending.request.onSocket(socket);\n return;\n }\n }\n socket.destroy();\n self.removeSocket(socket);\n });\n}\nutil.inherits(TunnelingAgent, events.EventEmitter);\n\nTunnelingAgent.prototype.addRequest = function addRequest(req, host, port, localAddress) {\n var self = this;\n var options = mergeOptions({request: req}, self.options, toOptions(host, port, localAddress));\n\n if (self.sockets.length >= this.maxSockets) {\n // We are over limit so we'll add it to the queue.\n self.requests.push(options);\n return;\n }\n\n // If we are under maxSockets create a new one.\n self.createSocket(options, function(socket) {\n socket.on('free', onFree);\n socket.on('close', onCloseOrRemove);\n socket.on('agentRemove', onCloseOrRemove);\n req.onSocket(socket);\n\n function onFree() {\n self.emit('free', socket, options);\n }\n\n function onCloseOrRemove(err) {\n self.removeSocket(socket);\n socket.removeListener('free', onFree);\n socket.removeListener('close', onCloseOrRemove);\n socket.removeListener('agentRemove', onCloseOrRemove);\n }\n });\n};\n\nTunnelingAgent.prototype.createSocket = function createSocket(options, cb) {\n var self = this;\n var placeholder = {};\n self.sockets.push(placeholder);\n\n var connectOptions = mergeOptions({}, self.proxyOptions, {\n method: 'CONNECT',\n path: options.host + ':' + options.port,\n agent: false,\n headers: {\n host: options.host + ':' + options.port\n }\n });\n if (options.localAddress) {\n connectOptions.localAddress = options.localAddress;\n }\n if (connectOptions.proxyAuth) {\n connectOptions.headers = connectOptions.headers || {};\n connectOptions.headers['Proxy-Authorization'] = 'Basic ' +\n new Buffer(connectOptions.proxyAuth).toString('base64');\n }\n\n debug('making CONNECT request');\n var connectReq = self.request(connectOptions);\n connectReq.useChunkedEncodingByDefault = false; // for v0.6\n connectReq.once('response', onResponse); // for v0.6\n connectReq.once('upgrade', onUpgrade); // for v0.6\n connectReq.once('connect', onConnect); // for v0.7 or later\n connectReq.once('error', onError);\n connectReq.end();\n\n function onResponse(res) {\n // Very hacky. This is necessary to avoid http-parser leaks.\n res.upgrade = true;\n }\n\n function onUpgrade(res, socket, head) {\n // Hacky.\n process.nextTick(function() {\n onConnect(res, socket, head);\n });\n }\n\n function onConnect(res, socket, head) {\n connectReq.removeAllListeners();\n socket.removeAllListeners();\n\n if (res.statusCode !== 200) {\n debug('tunneling socket could not be established, statusCode=%d',\n res.statusCode);\n socket.destroy();\n var error = new Error('tunneling socket could not be established, ' +\n 'statusCode=' + res.statusCode);\n error.code = 'ECONNRESET';\n options.request.emit('error', error);\n self.removeSocket(placeholder);\n return;\n }\n if (head.length > 0) {\n debug('got illegal response body from proxy');\n socket.destroy();\n var error = new Error('got illegal response body from proxy');\n error.code = 'ECONNRESET';\n options.request.emit('error', error);\n self.removeSocket(placeholder);\n return;\n }\n debug('tunneling connection has established');\n self.sockets[self.sockets.indexOf(placeholder)] = socket;\n return cb(socket);\n }\n\n function onError(cause) {\n connectReq.removeAllListeners();\n\n debug('tunneling socket could not be established, cause=%s\\n',\n cause.message, cause.stack);\n var error = new Error('tunneling socket could not be established, ' +\n 'cause=' + cause.message);\n error.code = 'ECONNRESET';\n options.request.emit('error', error);\n self.removeSocket(placeholder);\n }\n};\n\nTunnelingAgent.prototype.removeSocket = function removeSocket(socket) {\n var pos = this.sockets.indexOf(socket)\n if (pos === -1) {\n return;\n }\n this.sockets.splice(pos, 1);\n\n var pending = this.requests.shift();\n if (pending) {\n // If we have pending requests and a socket gets closed a new one\n // needs to be created to take over in the pool for the one that closed.\n this.createSocket(pending, function(socket) {\n pending.request.onSocket(socket);\n });\n }\n};\n\nfunction createSecureSocket(options, cb) {\n var self = this;\n TunnelingAgent.prototype.createSocket.call(self, options, function(socket) {\n var hostHeader = options.request.getHeader('host');\n var tlsOptions = mergeOptions({}, self.options, {\n socket: socket,\n servername: hostHeader ? hostHeader.replace(/:.*$/, '') : options.host\n });\n\n // 0 is dummy port for v0.6\n var secureSocket = tls.connect(0, tlsOptions);\n self.sockets[self.sockets.indexOf(socket)] = secureSocket;\n cb(secureSocket);\n });\n}\n\n\nfunction toOptions(host, port, localAddress) {\n if (typeof host === 'string') { // since v0.10\n return {\n host: host,\n port: port,\n localAddress: localAddress\n };\n }\n return host; // for v0.11 or later\n}\n\nfunction mergeOptions(target) {\n for (var i = 1, len = arguments.length; i < len; ++i) {\n var overrides = arguments[i];\n if (typeof overrides === 'object') {\n var keys = Object.keys(overrides);\n for (var j = 0, keyLen = keys.length; j < keyLen; ++j) {\n var k = keys[j];\n if (overrides[k] !== undefined) {\n target[k] = overrides[k];\n }\n }\n }\n }\n return target;\n}\n\n\nvar debug;\nif (process.env.NODE_DEBUG && /\\btunnel\\b/.test(process.env.NODE_DEBUG)) {\n debug = function() {\n var args = Array.prototype.slice.call(arguments);\n if (typeof args[0] === 'string') {\n args[0] = 'TUNNEL: ' + args[0];\n } else {\n args.unshift('TUNNEL:');\n }\n console.error.apply(console, args);\n }\n} else {\n debug = function() {};\n}\nexports.debug = debug; // for test\n", "module.exports = require('./lib/tunnel');\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst http = require(\"http\");\nconst https = require(\"https\");\nconst pm = require(\"./proxy\");\nlet tunnel;\nvar HttpCodes;\n(function (HttpCodes) {\n HttpCodes[HttpCodes[\"OK\"] = 200] = \"OK\";\n HttpCodes[HttpCodes[\"MultipleChoices\"] = 300] = \"MultipleChoices\";\n HttpCodes[HttpCodes[\"MovedPermanently\"] = 301] = \"MovedPermanently\";\n HttpCodes[HttpCodes[\"ResourceMoved\"] = 302] = \"ResourceMoved\";\n HttpCodes[HttpCodes[\"SeeOther\"] = 303] = \"SeeOther\";\n HttpCodes[HttpCodes[\"NotModified\"] = 304] = \"NotModified\";\n HttpCodes[HttpCodes[\"UseProxy\"] = 305] = \"UseProxy\";\n HttpCodes[HttpCodes[\"SwitchProxy\"] = 306] = \"SwitchProxy\";\n HttpCodes[HttpCodes[\"TemporaryRedirect\"] = 307] = \"TemporaryRedirect\";\n HttpCodes[HttpCodes[\"PermanentRedirect\"] = 308] = \"PermanentRedirect\";\n HttpCodes[HttpCodes[\"BadRequest\"] = 400] = \"BadRequest\";\n HttpCodes[HttpCodes[\"Unauthorized\"] = 401] = \"Unauthorized\";\n HttpCodes[HttpCodes[\"PaymentRequired\"] = 402] = \"PaymentRequired\";\n HttpCodes[HttpCodes[\"Forbidden\"] = 403] = \"Forbidden\";\n HttpCodes[HttpCodes[\"NotFound\"] = 404] = \"NotFound\";\n HttpCodes[HttpCodes[\"MethodNotAllowed\"] = 405] = \"MethodNotAllowed\";\n HttpCodes[HttpCodes[\"NotAcceptable\"] = 406] = \"NotAcceptable\";\n HttpCodes[HttpCodes[\"ProxyAuthenticationRequired\"] = 407] = \"ProxyAuthenticationRequired\";\n HttpCodes[HttpCodes[\"RequestTimeout\"] = 408] = \"RequestTimeout\";\n HttpCodes[HttpCodes[\"Conflict\"] = 409] = \"Conflict\";\n HttpCodes[HttpCodes[\"Gone\"] = 410] = \"Gone\";\n HttpCodes[HttpCodes[\"TooManyRequests\"] = 429] = \"TooManyRequests\";\n HttpCodes[HttpCodes[\"InternalServerError\"] = 500] = \"InternalServerError\";\n HttpCodes[HttpCodes[\"NotImplemented\"] = 501] = \"NotImplemented\";\n HttpCodes[HttpCodes[\"BadGateway\"] = 502] = \"BadGateway\";\n HttpCodes[HttpCodes[\"ServiceUnavailable\"] = 503] = \"ServiceUnavailable\";\n HttpCodes[HttpCodes[\"GatewayTimeout\"] = 504] = \"GatewayTimeout\";\n})(HttpCodes = exports.HttpCodes || (exports.HttpCodes = {}));\nvar Headers;\n(function (Headers) {\n Headers[\"Accept\"] = \"accept\";\n Headers[\"ContentType\"] = \"content-type\";\n})(Headers = exports.Headers || (exports.Headers = {}));\nvar MediaTypes;\n(function (MediaTypes) {\n MediaTypes[\"ApplicationJson\"] = \"application/json\";\n})(MediaTypes = exports.MediaTypes || (exports.MediaTypes = {}));\n/**\n * Returns the proxy URL, depending upon the supplied url and proxy environment variables.\n * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com\n */\nfunction getProxyUrl(serverUrl) {\n let proxyUrl = pm.getProxyUrl(new URL(serverUrl));\n return proxyUrl ? proxyUrl.href : '';\n}\nexports.getProxyUrl = getProxyUrl;\nconst HttpRedirectCodes = [\n HttpCodes.MovedPermanently,\n HttpCodes.ResourceMoved,\n HttpCodes.SeeOther,\n HttpCodes.TemporaryRedirect,\n HttpCodes.PermanentRedirect\n];\nconst HttpResponseRetryCodes = [\n HttpCodes.BadGateway,\n HttpCodes.ServiceUnavailable,\n HttpCodes.GatewayTimeout\n];\nconst RetryableHttpVerbs = ['OPTIONS', 'GET', 'DELETE', 'HEAD'];\nconst ExponentialBackoffCeiling = 10;\nconst ExponentialBackoffTimeSlice = 5;\nclass HttpClientError extends Error {\n constructor(message, statusCode) {\n super(message);\n this.name = 'HttpClientError';\n this.statusCode = statusCode;\n Object.setPrototypeOf(this, HttpClientError.prototype);\n }\n}\nexports.HttpClientError = HttpClientError;\nclass HttpClientResponse {\n constructor(message) {\n this.message = message;\n }\n readBody() {\n return new Promise(async (resolve, reject) => {\n let output = Buffer.alloc(0);\n this.message.on('data', (chunk) => {\n output = Buffer.concat([output, chunk]);\n });\n this.message.on('end', () => {\n resolve(output.toString());\n });\n });\n }\n}\nexports.HttpClientResponse = HttpClientResponse;\nfunction isHttps(requestUrl) {\n let parsedUrl = new URL(requestUrl);\n return parsedUrl.protocol === 'https:';\n}\nexports.isHttps = isHttps;\nclass HttpClient {\n constructor(userAgent, handlers, requestOptions) {\n this._ignoreSslError = false;\n this._allowRedirects = true;\n this._allowRedirectDowngrade = false;\n this._maxRedirects = 50;\n this._allowRetries = false;\n this._maxRetries = 1;\n this._keepAlive = false;\n this._disposed = false;\n this.userAgent = userAgent;\n this.handlers = handlers || [];\n this.requestOptions = requestOptions;\n if (requestOptions) {\n if (requestOptions.ignoreSslError != null) {\n this._ignoreSslError = requestOptions.ignoreSslError;\n }\n this._socketTimeout = requestOptions.socketTimeout;\n if (requestOptions.allowRedirects != null) {\n this._allowRedirects = requestOptions.allowRedirects;\n }\n if (requestOptions.allowRedirectDowngrade != null) {\n this._allowRedirectDowngrade = requestOptions.allowRedirectDowngrade;\n }\n if (requestOptions.maxRedirects != null) {\n this._maxRedirects = Math.max(requestOptions.maxRedirects, 0);\n }\n if (requestOptions.keepAlive != null) {\n this._keepAlive = requestOptions.keepAlive;\n }\n if (requestOptions.allowRetries != null) {\n this._allowRetries = requestOptions.allowRetries;\n }\n if (requestOptions.maxRetries != null) {\n this._maxRetries = requestOptions.maxRetries;\n }\n }\n }\n options(requestUrl, additionalHeaders) {\n return this.request('OPTIONS', requestUrl, null, additionalHeaders || {});\n }\n get(requestUrl, additionalHeaders) {\n return this.request('GET', requestUrl, null, additionalHeaders || {});\n }\n del(requestUrl, additionalHeaders) {\n return this.request('DELETE', requestUrl, null, additionalHeaders || {});\n }\n post(requestUrl, data, additionalHeaders) {\n return this.request('POST', requestUrl, data, additionalHeaders || {});\n }\n patch(requestUrl, data, additionalHeaders) {\n return this.request('PATCH', requestUrl, data, additionalHeaders || {});\n }\n put(requestUrl, data, additionalHeaders) {\n return this.request('PUT', requestUrl, data, additionalHeaders || {});\n }\n head(requestUrl, additionalHeaders) {\n return this.request('HEAD', requestUrl, null, additionalHeaders || {});\n }\n sendStream(verb, requestUrl, stream, additionalHeaders) {\n return this.request(verb, requestUrl, stream, additionalHeaders);\n }\n /**\n * Gets a typed object from an endpoint\n * Be aware that not found returns a null. Other errors (4xx, 5xx) reject the promise\n */\n async getJson(requestUrl, additionalHeaders = {}) {\n additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);\n let res = await this.get(requestUrl, additionalHeaders);\n return this._processResponse(res, this.requestOptions);\n }\n async postJson(requestUrl, obj, additionalHeaders = {}) {\n let data = JSON.stringify(obj, null, 2);\n additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);\n additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);\n let res = await this.post(requestUrl, data, additionalHeaders);\n return this._processResponse(res, this.requestOptions);\n }\n async putJson(requestUrl, obj, additionalHeaders = {}) {\n let data = JSON.stringify(obj, null, 2);\n additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);\n additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);\n let res = await this.put(requestUrl, data, additionalHeaders);\n return this._processResponse(res, this.requestOptions);\n }\n async patchJson(requestUrl, obj, additionalHeaders = {}) {\n let data = JSON.stringify(obj, null, 2);\n additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);\n additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);\n let res = await this.patch(requestUrl, data, additionalHeaders);\n return this._processResponse(res, this.requestOptions);\n }\n /**\n * Makes a raw http request.\n * All other methods such as get, post, patch, and request ultimately call this.\n * Prefer get, del, post and patch\n */\n async request(verb, requestUrl, data, headers) {\n if (this._disposed) {\n throw new Error('Client has already been disposed.');\n }\n let parsedUrl = new URL(requestUrl);\n let info = this._prepareRequest(verb, parsedUrl, headers);\n // Only perform retries on reads since writes may not be idempotent.\n let maxTries = this._allowRetries && RetryableHttpVerbs.indexOf(verb) != -1\n ? this._maxRetries + 1\n : 1;\n let numTries = 0;\n let response;\n while (numTries < maxTries) {\n response = await this.requestRaw(info, data);\n // Check if it's an authentication challenge\n if (response &&\n response.message &&\n response.message.statusCode === HttpCodes.Unauthorized) {\n let authenticationHandler;\n for (let i = 0; i < this.handlers.length; i++) {\n if (this.handlers[i].canHandleAuthentication(response)) {\n authenticationHandler = this.handlers[i];\n break;\n }\n }\n if (authenticationHandler) {\n return authenticationHandler.handleAuthentication(this, info, data);\n }\n else {\n // We have received an unauthorized response but have no handlers to handle it.\n // Let the response return to the caller.\n return response;\n }\n }\n let redirectsRemaining = this._maxRedirects;\n while (HttpRedirectCodes.indexOf(response.message.statusCode) != -1 &&\n this._allowRedirects &&\n redirectsRemaining > 0) {\n const redirectUrl = response.message.headers['location'];\n if (!redirectUrl) {\n // if there's no location to redirect to, we won't\n break;\n }\n let parsedRedirectUrl = new URL(redirectUrl);\n if (parsedUrl.protocol == 'https:' &&\n parsedUrl.protocol != parsedRedirectUrl.protocol &&\n !this._allowRedirectDowngrade) {\n throw new Error('Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true.');\n }\n // we need to finish reading the response before reassigning response\n // which will leak the open socket.\n await response.readBody();\n // strip authorization header if redirected to a different hostname\n if (parsedRedirectUrl.hostname !== parsedUrl.hostname) {\n for (let header in headers) {\n // header names are case insensitive\n if (header.toLowerCase() === 'authorization') {\n delete headers[header];\n }\n }\n }\n // let's make the request with the new redirectUrl\n info = this._prepareRequest(verb, parsedRedirectUrl, headers);\n response = await this.requestRaw(info, data);\n redirectsRemaining--;\n }\n if (HttpResponseRetryCodes.indexOf(response.message.statusCode) == -1) {\n // If not a retry code, return immediately instead of retrying\n return response;\n }\n numTries += 1;\n if (numTries < maxTries) {\n await response.readBody();\n await this._performExponentialBackoff(numTries);\n }\n }\n return response;\n }\n /**\n * Needs to be called if keepAlive is set to true in request options.\n */\n dispose() {\n if (this._agent) {\n this._agent.destroy();\n }\n this._disposed = true;\n }\n /**\n * Raw request.\n * @param info\n * @param data\n */\n requestRaw(info, data) {\n return new Promise((resolve, reject) => {\n let callbackForResult = function (err, res) {\n if (err) {\n reject(err);\n }\n resolve(res);\n };\n this.requestRawWithCallback(info, data, callbackForResult);\n });\n }\n /**\n * Raw request with callback.\n * @param info\n * @param data\n * @param onResult\n */\n requestRawWithCallback(info, data, onResult) {\n let socket;\n if (typeof data === 'string') {\n info.options.headers['Content-Length'] = Buffer.byteLength(data, 'utf8');\n }\n let callbackCalled = false;\n let handleResult = (err, res) => {\n if (!callbackCalled) {\n callbackCalled = true;\n onResult(err, res);\n }\n };\n let req = info.httpModule.request(info.options, (msg) => {\n let res = new HttpClientResponse(msg);\n handleResult(null, res);\n });\n req.on('socket', sock => {\n socket = sock;\n });\n // If we ever get disconnected, we want the socket to timeout eventually\n req.setTimeout(this._socketTimeout || 3 * 60000, () => {\n if (socket) {\n socket.end();\n }\n handleResult(new Error('Request timeout: ' + info.options.path), null);\n });\n req.on('error', function (err) {\n // err has statusCode property\n // res should have headers\n handleResult(err, null);\n });\n if (data && typeof data === 'string') {\n req.write(data, 'utf8');\n }\n if (data && typeof data !== 'string') {\n data.on('close', function () {\n req.end();\n });\n data.pipe(req);\n }\n else {\n req.end();\n }\n }\n /**\n * Gets an http agent. This function is useful when you need an http agent that handles\n * routing through a proxy server - depending upon the url and proxy environment variables.\n * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com\n */\n getAgent(serverUrl) {\n let parsedUrl = new URL(serverUrl);\n return this._getAgent(parsedUrl);\n }\n _prepareRequest(method, requestUrl, headers) {\n const info = {};\n info.parsedUrl = requestUrl;\n const usingSsl = info.parsedUrl.protocol === 'https:';\n info.httpModule = usingSsl ? https : http;\n const defaultPort = usingSsl ? 443 : 80;\n info.options = {};\n info.options.host = info.parsedUrl.hostname;\n info.options.port = info.parsedUrl.port\n ? parseInt(info.parsedUrl.port)\n : defaultPort;\n info.options.path =\n (info.parsedUrl.pathname || '') + (info.parsedUrl.search || '');\n info.options.method = method;\n info.options.headers = this._mergeHeaders(headers);\n if (this.userAgent != null) {\n info.options.headers['user-agent'] = this.userAgent;\n }\n info.options.agent = this._getAgent(info.parsedUrl);\n // gives handlers an opportunity to participate\n if (this.handlers) {\n this.handlers.forEach(handler => {\n handler.prepareRequest(info.options);\n });\n }\n return info;\n }\n _mergeHeaders(headers) {\n const lowercaseKeys = obj => Object.keys(obj).reduce((c, k) => ((c[k.toLowerCase()] = obj[k]), c), {});\n if (this.requestOptions && this.requestOptions.headers) {\n return Object.assign({}, lowercaseKeys(this.requestOptions.headers), lowercaseKeys(headers));\n }\n return lowercaseKeys(headers || {});\n }\n _getExistingOrDefaultHeader(additionalHeaders, header, _default) {\n const lowercaseKeys = obj => Object.keys(obj).reduce((c, k) => ((c[k.toLowerCase()] = obj[k]), c), {});\n let clientHeader;\n if (this.requestOptions && this.requestOptions.headers) {\n clientHeader = lowercaseKeys(this.requestOptions.headers)[header];\n }\n return additionalHeaders[header] || clientHeader || _default;\n }\n _getAgent(parsedUrl) {\n let agent;\n let proxyUrl = pm.getProxyUrl(parsedUrl);\n let useProxy = proxyUrl && proxyUrl.hostname;\n if (this._keepAlive && useProxy) {\n agent = this._proxyAgent;\n }\n if (this._keepAlive && !useProxy) {\n agent = this._agent;\n }\n // if agent is already assigned use that agent.\n if (!!agent) {\n return agent;\n }\n const usingSsl = parsedUrl.protocol === 'https:';\n let maxSockets = 100;\n if (!!this.requestOptions) {\n maxSockets = this.requestOptions.maxSockets || http.globalAgent.maxSockets;\n }\n if (useProxy) {\n // If using proxy, need tunnel\n if (!tunnel) {\n tunnel = require('tunnel');\n }\n const agentOptions = {\n maxSockets: maxSockets,\n keepAlive: this._keepAlive,\n proxy: {\n ...((proxyUrl.username || proxyUrl.password) && {\n proxyAuth: `${proxyUrl.username}:${proxyUrl.password}`\n }),\n host: proxyUrl.hostname,\n port: proxyUrl.port\n }\n };\n let tunnelAgent;\n const overHttps = proxyUrl.protocol === 'https:';\n if (usingSsl) {\n tunnelAgent = overHttps ? tunnel.httpsOverHttps : tunnel.httpsOverHttp;\n }\n else {\n tunnelAgent = overHttps ? tunnel.httpOverHttps : tunnel.httpOverHttp;\n }\n agent = tunnelAgent(agentOptions);\n this._proxyAgent = agent;\n }\n // if reusing agent across request and tunneling agent isn't assigned create a new agent\n if (this._keepAlive && !agent) {\n const options = { keepAlive: this._keepAlive, maxSockets: maxSockets };\n agent = usingSsl ? new https.Agent(options) : new http.Agent(options);\n this._agent = agent;\n }\n // if not using private agent and tunnel agent isn't setup then use global agent\n if (!agent) {\n agent = usingSsl ? https.globalAgent : http.globalAgent;\n }\n if (usingSsl && this._ignoreSslError) {\n // we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process\n // http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options\n // we have to cast it to any and change it directly\n agent.options = Object.assign(agent.options || {}, {\n rejectUnauthorized: false\n });\n }\n return agent;\n }\n _performExponentialBackoff(retryNumber) {\n retryNumber = Math.min(ExponentialBackoffCeiling, retryNumber);\n const ms = ExponentialBackoffTimeSlice * Math.pow(2, retryNumber);\n return new Promise(resolve => setTimeout(() => resolve(), ms));\n }\n static dateTimeDeserializer(key, value) {\n if (typeof value === 'string') {\n let a = new Date(value);\n if (!isNaN(a.valueOf())) {\n return a;\n }\n }\n return value;\n }\n async _processResponse(res, options) {\n return new Promise(async (resolve, reject) => {\n const statusCode = res.message.statusCode;\n const response = {\n statusCode: statusCode,\n result: null,\n headers: {}\n };\n // not found leads to null obj returned\n if (statusCode == HttpCodes.NotFound) {\n resolve(response);\n }\n let obj;\n let contents;\n // get the result from the body\n try {\n contents = await res.readBody();\n if (contents && contents.length > 0) {\n if (options && options.deserializeDates) {\n obj = JSON.parse(contents, HttpClient.dateTimeDeserializer);\n }\n else {\n obj = JSON.parse(contents);\n }\n response.result = obj;\n }\n response.headers = res.message.headers;\n }\n catch (err) {\n // Invalid resource (contents not json); leaving result obj null\n }\n // note that 3xx redirects are handled by the http layer.\n if (statusCode > 299) {\n let msg;\n // if exception/error in body, attempt to get better error\n if (obj && obj.message) {\n msg = obj.message;\n }\n else if (contents && contents.length > 0) {\n // it may be the case that the exception is in the body message as string\n msg = contents;\n }\n else {\n msg = 'Failed request: (' + statusCode + ')';\n }\n let err = new HttpClientError(msg, statusCode);\n err.result = response.result;\n reject(err);\n }\n else {\n resolve(response);\n }\n });\n }\n}\nexports.HttpClient = HttpClient;\n", "// Unique ID creation requires a high quality random # generator. In node.js\n// this is pretty straight-forward - we use the crypto API.\n\nvar crypto = require('crypto');\n\nmodule.exports = function nodeRNG() {\n return crypto.randomBytes(16);\n};\n", "/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\nfor (var i = 0; i < 256; ++i) {\n byteToHex[i] = (i + 0x100).toString(16).substr(1);\n}\n\nfunction bytesToUuid(buf, offset) {\n var i = offset || 0;\n var bth = byteToHex;\n // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4\n return ([\n bth[buf[i++]], bth[buf[i++]],\n bth[buf[i++]], bth[buf[i++]], '-',\n bth[buf[i++]], bth[buf[i++]], '-',\n bth[buf[i++]], bth[buf[i++]], '-',\n bth[buf[i++]], bth[buf[i++]], '-',\n bth[buf[i++]], bth[buf[i++]],\n bth[buf[i++]], bth[buf[i++]],\n bth[buf[i++]], bth[buf[i++]]\n ]).join('');\n}\n\nmodule.exports = bytesToUuid;\n", "var rng = require('./lib/rng');\nvar bytesToUuid = require('./lib/bytesToUuid');\n\nfunction v4(options, buf, offset) {\n var i = buf && offset || 0;\n\n if (typeof(options) == 'string') {\n buf = options === 'binary' ? new Array(16) : null;\n options = null;\n }\n options = options || {};\n\n var rnds = options.random || (options.rng || rng)();\n\n // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n\n // Copy bytes to buffer, if provided\n if (buf) {\n for (var ii = 0; ii < 16; ++ii) {\n buf[i + ii] = rnds[ii];\n }\n }\n\n return buf || bytesToUuid(rnds);\n}\n\nmodule.exports = v4;\n", null, null, null, null, "export function getUserAgent() {\n if (typeof navigator === \"object\" && \"userAgent\" in navigator) {\n return navigator.userAgent;\n }\n if (typeof process === \"object\" && \"version\" in process) {\n return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`;\n }\n return \"\";\n}\n", "module.exports = register;\n\nfunction register(state, name, method, options) {\n if (typeof method !== \"function\") {\n throw new Error(\"method for before hook must be a function\");\n }\n\n if (!options) {\n options = {};\n }\n\n if (Array.isArray(name)) {\n return name.reverse().reduce(function (callback, name) {\n return register.bind(null, state, name, callback, options);\n }, method)();\n }\n\n return Promise.resolve().then(function () {\n if (!state.registry[name]) {\n return method(options);\n }\n\n return state.registry[name].reduce(function (method, registered) {\n return registered.hook.bind(null, method, options);\n }, method)();\n });\n}\n", "module.exports = addHook;\n\nfunction addHook(state, kind, name, hook) {\n var orig = hook;\n if (!state.registry[name]) {\n state.registry[name] = [];\n }\n\n if (kind === \"before\") {\n hook = function (method, options) {\n return Promise.resolve()\n .then(orig.bind(null, options))\n .then(method.bind(null, options));\n };\n }\n\n if (kind === \"after\") {\n hook = function (method, options) {\n var result;\n return Promise.resolve()\n .then(method.bind(null, options))\n .then(function (result_) {\n result = result_;\n return orig(result, options);\n })\n .then(function () {\n return result;\n });\n };\n }\n\n if (kind === \"error\") {\n hook = function (method, options) {\n return Promise.resolve()\n .then(method.bind(null, options))\n .catch(function (error) {\n return orig(error, options);\n });\n };\n }\n\n state.registry[name].push({\n hook: hook,\n orig: orig,\n });\n}\n", "module.exports = removeHook;\n\nfunction removeHook(state, name, method) {\n if (!state.registry[name]) {\n return;\n }\n\n var index = state.registry[name]\n .map(function (registered) {\n return registered.orig;\n })\n .indexOf(method);\n\n if (index === -1) {\n return;\n }\n\n state.registry[name].splice(index, 1);\n}\n", "var register = require('./lib/register')\nvar addHook = require('./lib/add')\nvar removeHook = require('./lib/remove')\n\n// bind with array of arguments: https://stackoverflow.com/a/21792913\nvar bind = Function.bind\nvar bindable = bind.bind(bind)\n\nfunction bindApi (hook, state, name) {\n var removeHookRef = bindable(removeHook, null).apply(null, name ? [state, name] : [state])\n hook.api = { remove: removeHookRef }\n hook.remove = removeHookRef\n\n ;['before', 'error', 'after', 'wrap'].forEach(function (kind) {\n var args = name ? [state, kind, name] : [state, kind]\n hook[kind] = hook.api[kind] = bindable(addHook, null).apply(null, args)\n })\n}\n\nfunction HookSingular () {\n var singularHookName = 'h'\n var singularHookState = {\n registry: {}\n }\n var singularHook = register.bind(null, singularHookState, singularHookName)\n bindApi(singularHook, singularHookState, singularHookName)\n return singularHook\n}\n\nfunction HookCollection () {\n var state = {\n registry: {}\n }\n\n var hook = register.bind(null, state)\n bindApi(hook, state)\n\n return hook\n}\n\nvar collectionHookDeprecationMessageDisplayed = false\nfunction Hook () {\n if (!collectionHookDeprecationMessageDisplayed) {\n console.warn('[before-after-hook]: \"Hook()\" repurposing warning, use \"Hook.Collection()\". Read more: https://git.io/upgrade-before-after-hook-to-1.4')\n collectionHookDeprecationMessageDisplayed = true\n }\n return HookCollection()\n}\n\nHook.Singular = HookSingular.bind()\nHook.Collection = HookCollection.bind()\n\nmodule.exports = Hook\n// expose constructors as a named property for TypeScript\nmodule.exports.Hook = Hook\nmodule.exports.Singular = Hook.Singular\nmodule.exports.Collection = Hook.Collection\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n/*!\n * is-plain-object \n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nfunction isObject(o) {\n return Object.prototype.toString.call(o) === '[object Object]';\n}\n\nfunction isPlainObject(o) {\n var ctor,prot;\n\n if (isObject(o) === false) return false;\n\n // If has modified constructor\n ctor = o.constructor;\n if (ctor === undefined) return true;\n\n // If has modified prototype\n prot = ctor.prototype;\n if (isObject(prot) === false) return false;\n\n // If constructor does not have an Object-specific method\n if (prot.hasOwnProperty('isPrototypeOf') === false) {\n return false;\n }\n\n // Most likely a plain Object\n return true;\n}\n\nexports.isPlainObject = isPlainObject;\n", "export function lowercaseKeys(object) {\n if (!object) {\n return {};\n }\n return Object.keys(object).reduce((newObj, key) => {\n newObj[key.toLowerCase()] = object[key];\n return newObj;\n }, {});\n}\n", "import { isPlainObject } from \"is-plain-object\";\nexport function mergeDeep(defaults, options) {\n const result = Object.assign({}, defaults);\n Object.keys(options).forEach((key) => {\n if (isPlainObject(options[key])) {\n if (!(key in defaults))\n Object.assign(result, { [key]: options[key] });\n else\n result[key] = mergeDeep(defaults[key], options[key]);\n }\n else {\n Object.assign(result, { [key]: options[key] });\n }\n });\n return result;\n}\n", "export function removeUndefinedProperties(obj) {\n for (const key in obj) {\n if (obj[key] === undefined) {\n delete obj[key];\n }\n }\n return obj;\n}\n", "import { lowercaseKeys } from \"./util/lowercase-keys\";\nimport { mergeDeep } from \"./util/merge-deep\";\nimport { removeUndefinedProperties } from \"./util/remove-undefined-properties\";\nexport function merge(defaults, route, options) {\n if (typeof route === \"string\") {\n let [method, url] = route.split(\" \");\n options = Object.assign(url ? { method, url } : { url: method }, options);\n }\n else {\n options = Object.assign({}, route);\n }\n // lowercase header names before merging with defaults to avoid duplicates\n options.headers = lowercaseKeys(options.headers);\n // remove properties with undefined values before merging\n removeUndefinedProperties(options);\n removeUndefinedProperties(options.headers);\n const mergedOptions = mergeDeep(defaults || {}, options);\n // mediaType.previews arrays are merged, instead of overwritten\n if (defaults && defaults.mediaType.previews.length) {\n mergedOptions.mediaType.previews = defaults.mediaType.previews\n .filter((preview) => !mergedOptions.mediaType.previews.includes(preview))\n .concat(mergedOptions.mediaType.previews);\n }\n mergedOptions.mediaType.previews = mergedOptions.mediaType.previews.map((preview) => preview.replace(/-preview/, \"\"));\n return mergedOptions;\n}\n", "export function addQueryParameters(url, parameters) {\n const separator = /\\?/.test(url) ? \"&\" : \"?\";\n const names = Object.keys(parameters);\n if (names.length === 0) {\n return url;\n }\n return (url +\n separator +\n names\n .map((name) => {\n if (name === \"q\") {\n return (\"q=\" + parameters.q.split(\"+\").map(encodeURIComponent).join(\"+\"));\n }\n return `${name}=${encodeURIComponent(parameters[name])}`;\n })\n .join(\"&\"));\n}\n", "const urlVariableRegex = /\\{[^}]+\\}/g;\nfunction removeNonChars(variableName) {\n return variableName.replace(/^\\W+|\\W+$/g, \"\").split(/,/);\n}\nexport function extractUrlVariableNames(url) {\n const matches = url.match(urlVariableRegex);\n if (!matches) {\n return [];\n }\n return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []);\n}\n", "export function omit(object, keysToOmit) {\n return Object.keys(object)\n .filter((option) => !keysToOmit.includes(option))\n .reduce((obj, key) => {\n obj[key] = object[key];\n return obj;\n }, {});\n}\n", "// Based on https://github.com/bramstein/url-template, licensed under BSD\n// TODO: create separate package.\n//\n// Copyright (c) 2012-2014, Bram Stein\n// All rights reserved.\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions\n// are met:\n// 1. Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n// 2. Redistributions in binary form must reproduce the above copyright\n// notice, this list of conditions and the following disclaimer in the\n// documentation and/or other materials provided with the distribution.\n// 3. The name of the author may not be used to endorse or promote products\n// derived from this software without specific prior written permission.\n// THIS SOFTWARE IS PROVIDED BY THE AUTHOR \"AS IS\" AND ANY EXPRESS OR IMPLIED\n// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\n// EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY\n// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n/* istanbul ignore file */\nfunction encodeReserved(str) {\n return str\n .split(/(%[0-9A-Fa-f]{2})/g)\n .map(function (part) {\n if (!/%[0-9A-Fa-f]/.test(part)) {\n part = encodeURI(part).replace(/%5B/g, \"[\").replace(/%5D/g, \"]\");\n }\n return part;\n })\n .join(\"\");\n}\nfunction encodeUnreserved(str) {\n return encodeURIComponent(str).replace(/[!'()*]/g, function (c) {\n return \"%\" + c.charCodeAt(0).toString(16).toUpperCase();\n });\n}\nfunction encodeValue(operator, value, key) {\n value =\n operator === \"+\" || operator === \"#\"\n ? encodeReserved(value)\n : encodeUnreserved(value);\n if (key) {\n return encodeUnreserved(key) + \"=\" + value;\n }\n else {\n return value;\n }\n}\nfunction isDefined(value) {\n return value !== undefined && value !== null;\n}\nfunction isKeyOperator(operator) {\n return operator === \";\" || operator === \"&\" || operator === \"?\";\n}\nfunction getValues(context, operator, key, modifier) {\n var value = context[key], result = [];\n if (isDefined(value) && value !== \"\") {\n if (typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\") {\n value = value.toString();\n if (modifier && modifier !== \"*\") {\n value = value.substring(0, parseInt(modifier, 10));\n }\n result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : \"\"));\n }\n else {\n if (modifier === \"*\") {\n if (Array.isArray(value)) {\n value.filter(isDefined).forEach(function (value) {\n result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : \"\"));\n });\n }\n else {\n Object.keys(value).forEach(function (k) {\n if (isDefined(value[k])) {\n result.push(encodeValue(operator, value[k], k));\n }\n });\n }\n }\n else {\n const tmp = [];\n if (Array.isArray(value)) {\n value.filter(isDefined).forEach(function (value) {\n tmp.push(encodeValue(operator, value));\n });\n }\n else {\n Object.keys(value).forEach(function (k) {\n if (isDefined(value[k])) {\n tmp.push(encodeUnreserved(k));\n tmp.push(encodeValue(operator, value[k].toString()));\n }\n });\n }\n if (isKeyOperator(operator)) {\n result.push(encodeUnreserved(key) + \"=\" + tmp.join(\",\"));\n }\n else if (tmp.length !== 0) {\n result.push(tmp.join(\",\"));\n }\n }\n }\n }\n else {\n if (operator === \";\") {\n if (isDefined(value)) {\n result.push(encodeUnreserved(key));\n }\n }\n else if (value === \"\" && (operator === \"&\" || operator === \"?\")) {\n result.push(encodeUnreserved(key) + \"=\");\n }\n else if (value === \"\") {\n result.push(\"\");\n }\n }\n return result;\n}\nexport function parseUrl(template) {\n return {\n expand: expand.bind(null, template),\n };\n}\nfunction expand(template, context) {\n var operators = [\"+\", \"#\", \".\", \"/\", \";\", \"?\", \"&\"];\n return template.replace(/\\{([^\\{\\}]+)\\}|([^\\{\\}]+)/g, function (_, expression, literal) {\n if (expression) {\n let operator = \"\";\n const values = [];\n if (operators.indexOf(expression.charAt(0)) !== -1) {\n operator = expression.charAt(0);\n expression = expression.substr(1);\n }\n expression.split(/,/g).forEach(function (variable) {\n var tmp = /([^:\\*]*)(?::(\\d+)|(\\*))?/.exec(variable);\n values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3]));\n });\n if (operator && operator !== \"+\") {\n var separator = \",\";\n if (operator === \"?\") {\n separator = \"&\";\n }\n else if (operator !== \"#\") {\n separator = operator;\n }\n return (values.length !== 0 ? operator : \"\") + values.join(separator);\n }\n else {\n return values.join(\",\");\n }\n }\n else {\n return encodeReserved(literal);\n }\n });\n}\n", "import { addQueryParameters } from \"./util/add-query-parameters\";\nimport { extractUrlVariableNames } from \"./util/extract-url-variable-names\";\nimport { omit } from \"./util/omit\";\nimport { parseUrl } from \"./util/url-template\";\nexport function parse(options) {\n // https://fetch.spec.whatwg.org/#methods\n let method = options.method.toUpperCase();\n // replace :varname with {varname} to make it RFC 6570 compatible\n let url = (options.url || \"/\").replace(/:([a-z]\\w+)/g, \"{$1}\");\n let headers = Object.assign({}, options.headers);\n let body;\n let parameters = omit(options, [\n \"method\",\n \"baseUrl\",\n \"url\",\n \"headers\",\n \"request\",\n \"mediaType\",\n ]);\n // extract variable names from URL to calculate remaining variables later\n const urlVariableNames = extractUrlVariableNames(url);\n url = parseUrl(url).expand(parameters);\n if (!/^http/.test(url)) {\n url = options.baseUrl + url;\n }\n const omittedParameters = Object.keys(options)\n .filter((option) => urlVariableNames.includes(option))\n .concat(\"baseUrl\");\n const remainingParameters = omit(parameters, omittedParameters);\n const isBinaryRequest = /application\\/octet-stream/i.test(headers.accept);\n if (!isBinaryRequest) {\n if (options.mediaType.format) {\n // e.g. application/vnd.github.v3+json => application/vnd.github.v3.raw\n headers.accept = headers.accept\n .split(/,/)\n .map((preview) => preview.replace(/application\\/vnd(\\.\\w+)(\\.v3)?(\\.\\w+)?(\\+json)?$/, `application/vnd$1$2.${options.mediaType.format}`))\n .join(\",\");\n }\n if (options.mediaType.previews.length) {\n const previewsFromAcceptHeader = headers.accept.match(/[\\w-]+(?=-preview)/g) || [];\n headers.accept = previewsFromAcceptHeader\n .concat(options.mediaType.previews)\n .map((preview) => {\n const format = options.mediaType.format\n ? `.${options.mediaType.format}`\n : \"+json\";\n return `application/vnd.github.${preview}-preview${format}`;\n })\n .join(\",\");\n }\n }\n // for GET/HEAD requests, set URL query parameters from remaining parameters\n // for PATCH/POST/PUT/DELETE requests, set request body from remaining parameters\n if ([\"GET\", \"HEAD\"].includes(method)) {\n url = addQueryParameters(url, remainingParameters);\n }\n else {\n if (\"data\" in remainingParameters) {\n body = remainingParameters.data;\n }\n else {\n if (Object.keys(remainingParameters).length) {\n body = remainingParameters;\n }\n else {\n headers[\"content-length\"] = 0;\n }\n }\n }\n // default content-type for JSON if body is set\n if (!headers[\"content-type\"] && typeof body !== \"undefined\") {\n headers[\"content-type\"] = \"application/json; charset=utf-8\";\n }\n // GitHub expects 'content-length: 0' header for PUT/PATCH requests without body.\n // fetch does not allow to set `content-length` header, but we can set body to an empty string\n if ([\"PATCH\", \"PUT\"].includes(method) && typeof body === \"undefined\") {\n body = \"\";\n }\n // Only return body/request keys if present\n return Object.assign({ method, url, headers }, typeof body !== \"undefined\" ? { body } : null, options.request ? { request: options.request } : null);\n}\n", "import { merge } from \"./merge\";\nimport { parse } from \"./parse\";\nexport function endpointWithDefaults(defaults, route, options) {\n return parse(merge(defaults, route, options));\n}\n", "import { endpointWithDefaults } from \"./endpoint-with-defaults\";\nimport { merge } from \"./merge\";\nimport { parse } from \"./parse\";\nexport function withDefaults(oldDefaults, newDefaults) {\n const DEFAULTS = merge(oldDefaults, newDefaults);\n const endpoint = endpointWithDefaults.bind(null, DEFAULTS);\n return Object.assign(endpoint, {\n DEFAULTS,\n defaults: withDefaults.bind(null, DEFAULTS),\n merge: merge.bind(null, DEFAULTS),\n parse,\n });\n}\n", "export const VERSION = \"6.0.11\";\n", "import { getUserAgent } from \"universal-user-agent\";\nimport { VERSION } from \"./version\";\nconst userAgent = `octokit-endpoint.js/${VERSION} ${getUserAgent()}`;\n// DEFAULTS has all properties set that EndpointOptions has, except url.\n// So we use RequestParameters and add method as additional required property.\nexport const DEFAULTS = {\n method: \"GET\",\n baseUrl: \"https://api.github.com\",\n headers: {\n accept: \"application/vnd.github.v3+json\",\n \"user-agent\": userAgent,\n },\n mediaType: {\n format: \"\",\n previews: [],\n },\n};\n", "import { withDefaults } from \"./with-defaults\";\nimport { DEFAULTS } from \"./defaults\";\nexport const endpoint = withDefaults(null, DEFAULTS);\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar Stream = _interopDefault(require('stream'));\nvar http = _interopDefault(require('http'));\nvar Url = _interopDefault(require('url'));\nvar https = _interopDefault(require('https'));\nvar zlib = _interopDefault(require('zlib'));\n\n// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js\n\n// fix for \"Readable\" isn't a named export issue\nconst Readable = Stream.Readable;\n\nconst BUFFER = Symbol('buffer');\nconst TYPE = Symbol('type');\n\nclass Blob {\n\tconstructor() {\n\t\tthis[TYPE] = '';\n\n\t\tconst blobParts = arguments[0];\n\t\tconst options = arguments[1];\n\n\t\tconst buffers = [];\n\t\tlet size = 0;\n\n\t\tif (blobParts) {\n\t\t\tconst a = blobParts;\n\t\t\tconst length = Number(a.length);\n\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\tconst element = a[i];\n\t\t\t\tlet buffer;\n\t\t\t\tif (element instanceof Buffer) {\n\t\t\t\t\tbuffer = element;\n\t\t\t\t} else if (ArrayBuffer.isView(element)) {\n\t\t\t\t\tbuffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength);\n\t\t\t\t} else if (element instanceof ArrayBuffer) {\n\t\t\t\t\tbuffer = Buffer.from(element);\n\t\t\t\t} else if (element instanceof Blob) {\n\t\t\t\t\tbuffer = element[BUFFER];\n\t\t\t\t} else {\n\t\t\t\t\tbuffer = Buffer.from(typeof element === 'string' ? element : String(element));\n\t\t\t\t}\n\t\t\t\tsize += buffer.length;\n\t\t\t\tbuffers.push(buffer);\n\t\t\t}\n\t\t}\n\n\t\tthis[BUFFER] = Buffer.concat(buffers);\n\n\t\tlet type = options && options.type !== undefined && String(options.type).toLowerCase();\n\t\tif (type && !/[^\\u0020-\\u007E]/.test(type)) {\n\t\t\tthis[TYPE] = type;\n\t\t}\n\t}\n\tget size() {\n\t\treturn this[BUFFER].length;\n\t}\n\tget type() {\n\t\treturn this[TYPE];\n\t}\n\ttext() {\n\t\treturn Promise.resolve(this[BUFFER].toString());\n\t}\n\tarrayBuffer() {\n\t\tconst buf = this[BUFFER];\n\t\tconst ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\treturn Promise.resolve(ab);\n\t}\n\tstream() {\n\t\tconst readable = new Readable();\n\t\treadable._read = function () {};\n\t\treadable.push(this[BUFFER]);\n\t\treadable.push(null);\n\t\treturn readable;\n\t}\n\ttoString() {\n\t\treturn '[object Blob]';\n\t}\n\tslice() {\n\t\tconst size = this.size;\n\n\t\tconst start = arguments[0];\n\t\tconst end = arguments[1];\n\t\tlet relativeStart, relativeEnd;\n\t\tif (start === undefined) {\n\t\t\trelativeStart = 0;\n\t\t} else if (start < 0) {\n\t\t\trelativeStart = Math.max(size + start, 0);\n\t\t} else {\n\t\t\trelativeStart = Math.min(start, size);\n\t\t}\n\t\tif (end === undefined) {\n\t\t\trelativeEnd = size;\n\t\t} else if (end < 0) {\n\t\t\trelativeEnd = Math.max(size + end, 0);\n\t\t} else {\n\t\t\trelativeEnd = Math.min(end, size);\n\t\t}\n\t\tconst span = Math.max(relativeEnd - relativeStart, 0);\n\n\t\tconst buffer = this[BUFFER];\n\t\tconst slicedBuffer = buffer.slice(relativeStart, relativeStart + span);\n\t\tconst blob = new Blob([], { type: arguments[2] });\n\t\tblob[BUFFER] = slicedBuffer;\n\t\treturn blob;\n\t}\n}\n\nObject.defineProperties(Blob.prototype, {\n\tsize: { enumerable: true },\n\ttype: { enumerable: true },\n\tslice: { enumerable: true }\n});\n\nObject.defineProperty(Blob.prototype, Symbol.toStringTag, {\n\tvalue: 'Blob',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * fetch-error.js\n *\n * FetchError interface for operational errors\n */\n\n/**\n * Create FetchError instance\n *\n * @param String message Error message for human\n * @param String type Error type for machine\n * @param String systemError For Node.js system error\n * @return FetchError\n */\nfunction FetchError(message, type, systemError) {\n Error.call(this, message);\n\n this.message = message;\n this.type = type;\n\n // when err.type is `system`, err.code contains system error code\n if (systemError) {\n this.code = this.errno = systemError.code;\n }\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nFetchError.prototype = Object.create(Error.prototype);\nFetchError.prototype.constructor = FetchError;\nFetchError.prototype.name = 'FetchError';\n\nlet convert;\ntry {\n\tconvert = require('encoding').convert;\n} catch (e) {}\n\nconst INTERNALS = Symbol('Body internals');\n\n// fix an issue where \"PassThrough\" isn't a named export for node <10\nconst PassThrough = Stream.PassThrough;\n\n/**\n * Body mixin\n *\n * Ref: https://fetch.spec.whatwg.org/#body\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nfunction Body(body) {\n\tvar _this = this;\n\n\tvar _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n\t _ref$size = _ref.size;\n\n\tlet size = _ref$size === undefined ? 0 : _ref$size;\n\tvar _ref$timeout = _ref.timeout;\n\tlet timeout = _ref$timeout === undefined ? 0 : _ref$timeout;\n\n\tif (body == null) {\n\t\t// body is undefined or null\n\t\tbody = null;\n\t} else if (isURLSearchParams(body)) {\n\t\t// body is a URLSearchParams\n\t\tbody = Buffer.from(body.toString());\n\t} else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {\n\t\t// body is ArrayBuffer\n\t\tbody = Buffer.from(body);\n\t} else if (ArrayBuffer.isView(body)) {\n\t\t// body is ArrayBufferView\n\t\tbody = Buffer.from(body.buffer, body.byteOffset, body.byteLength);\n\t} else if (body instanceof Stream) ; else {\n\t\t// none of the above\n\t\t// coerce to string then buffer\n\t\tbody = Buffer.from(String(body));\n\t}\n\tthis[INTERNALS] = {\n\t\tbody,\n\t\tdisturbed: false,\n\t\terror: null\n\t};\n\tthis.size = size;\n\tthis.timeout = timeout;\n\n\tif (body instanceof Stream) {\n\t\tbody.on('error', function (err) {\n\t\t\tconst error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err);\n\t\t\t_this[INTERNALS].error = error;\n\t\t});\n\t}\n}\n\nBody.prototype = {\n\tget body() {\n\t\treturn this[INTERNALS].body;\n\t},\n\n\tget bodyUsed() {\n\t\treturn this[INTERNALS].disturbed;\n\t},\n\n\t/**\n * Decode response as ArrayBuffer\n *\n * @return Promise\n */\n\tarrayBuffer() {\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\t});\n\t},\n\n\t/**\n * Return raw response as Blob\n *\n * @return Promise\n */\n\tblob() {\n\t\tlet ct = this.headers && this.headers.get('content-type') || '';\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn Object.assign(\n\t\t\t// Prevent copying\n\t\t\tnew Blob([], {\n\t\t\t\ttype: ct.toLowerCase()\n\t\t\t}), {\n\t\t\t\t[BUFFER]: buf\n\t\t\t});\n\t\t});\n\t},\n\n\t/**\n * Decode response as json\n *\n * @return Promise\n */\n\tjson() {\n\t\tvar _this2 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\ttry {\n\t\t\t\treturn JSON.parse(buffer.toString());\n\t\t\t} catch (err) {\n\t\t\t\treturn Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json'));\n\t\t\t}\n\t\t});\n\t},\n\n\t/**\n * Decode response as text\n *\n * @return Promise\n */\n\ttext() {\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn buffer.toString();\n\t\t});\n\t},\n\n\t/**\n * Decode response as buffer (non-spec api)\n *\n * @return Promise\n */\n\tbuffer() {\n\t\treturn consumeBody.call(this);\n\t},\n\n\t/**\n * Decode response as text, while automatically detecting the encoding and\n * trying to decode to UTF-8 (non-spec api)\n *\n * @return Promise\n */\n\ttextConverted() {\n\t\tvar _this3 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn convertBody(buffer, _this3.headers);\n\t\t});\n\t}\n};\n\n// In browsers, all properties are enumerable.\nObject.defineProperties(Body.prototype, {\n\tbody: { enumerable: true },\n\tbodyUsed: { enumerable: true },\n\tarrayBuffer: { enumerable: true },\n\tblob: { enumerable: true },\n\tjson: { enumerable: true },\n\ttext: { enumerable: true }\n});\n\nBody.mixIn = function (proto) {\n\tfor (const name of Object.getOwnPropertyNames(Body.prototype)) {\n\t\t// istanbul ignore else: future proof\n\t\tif (!(name in proto)) {\n\t\t\tconst desc = Object.getOwnPropertyDescriptor(Body.prototype, name);\n\t\t\tObject.defineProperty(proto, name, desc);\n\t\t}\n\t}\n};\n\n/**\n * Consume and convert an entire Body to a Buffer.\n *\n * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body\n *\n * @return Promise\n */\nfunction consumeBody() {\n\tvar _this4 = this;\n\n\tif (this[INTERNALS].disturbed) {\n\t\treturn Body.Promise.reject(new TypeError(`body used already for: ${this.url}`));\n\t}\n\n\tthis[INTERNALS].disturbed = true;\n\n\tif (this[INTERNALS].error) {\n\t\treturn Body.Promise.reject(this[INTERNALS].error);\n\t}\n\n\tlet body = this.body;\n\n\t// body is null\n\tif (body === null) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is blob\n\tif (isBlob(body)) {\n\t\tbody = body.stream();\n\t}\n\n\t// body is buffer\n\tif (Buffer.isBuffer(body)) {\n\t\treturn Body.Promise.resolve(body);\n\t}\n\n\t// istanbul ignore if: should never happen\n\tif (!(body instanceof Stream)) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is stream\n\t// get ready to actually consume the body\n\tlet accum = [];\n\tlet accumBytes = 0;\n\tlet abort = false;\n\n\treturn new Body.Promise(function (resolve, reject) {\n\t\tlet resTimeout;\n\n\t\t// allow timeout on slow response body\n\t\tif (_this4.timeout) {\n\t\t\tresTimeout = setTimeout(function () {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout'));\n\t\t\t}, _this4.timeout);\n\t\t}\n\n\t\t// handle stream errors\n\t\tbody.on('error', function (err) {\n\t\t\tif (err.name === 'AbortError') {\n\t\t\t\t// if the request was aborted, reject with this Error\n\t\t\t\tabort = true;\n\t\t\t\treject(err);\n\t\t\t} else {\n\t\t\t\t// other errors, such as incorrect content-encoding\n\t\t\t\treject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\n\t\tbody.on('data', function (chunk) {\n\t\t\tif (abort || chunk === null) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (_this4.size && accumBytes + chunk.length > _this4.size) {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size'));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\taccumBytes += chunk.length;\n\t\t\taccum.push(chunk);\n\t\t});\n\n\t\tbody.on('end', function () {\n\t\t\tif (abort) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tclearTimeout(resTimeout);\n\n\t\t\ttry {\n\t\t\t\tresolve(Buffer.concat(accum, accumBytes));\n\t\t\t} catch (err) {\n\t\t\t\t// handle streams that have accumulated too much data (issue #414)\n\t\t\t\treject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Detect buffer encoding and convert to target encoding\n * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding\n *\n * @param Buffer buffer Incoming buffer\n * @param String encoding Target encoding\n * @return String\n */\nfunction convertBody(buffer, headers) {\n\tif (typeof convert !== 'function') {\n\t\tthrow new Error('The package `encoding` must be installed to use the textConverted() function');\n\t}\n\n\tconst ct = headers.get('content-type');\n\tlet charset = 'utf-8';\n\tlet res, str;\n\n\t// header\n\tif (ct) {\n\t\tres = /charset=([^;]*)/i.exec(ct);\n\t}\n\n\t// no charset in content type, peek at response body for at most 1024 bytes\n\tstr = buffer.slice(0, 1024).toString();\n\n\t// html5\n\tif (!res && str) {\n\t\tres = / 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n\n\t\tthis[MAP] = Object.create(null);\n\n\t\tif (init instanceof Headers) {\n\t\t\tconst rawHeaders = init.raw();\n\t\t\tconst headerNames = Object.keys(rawHeaders);\n\n\t\t\tfor (const headerName of headerNames) {\n\t\t\t\tfor (const value of rawHeaders[headerName]) {\n\t\t\t\t\tthis.append(headerName, value);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// We don't worry about converting prop to ByteString here as append()\n\t\t// will handle it.\n\t\tif (init == null) ; else if (typeof init === 'object') {\n\t\t\tconst method = init[Symbol.iterator];\n\t\t\tif (method != null) {\n\t\t\t\tif (typeof method !== 'function') {\n\t\t\t\t\tthrow new TypeError('Header pairs must be iterable');\n\t\t\t\t}\n\n\t\t\t\t// sequence>\n\t\t\t\t// Note: per spec we have to first exhaust the lists then process them\n\t\t\t\tconst pairs = [];\n\t\t\t\tfor (const pair of init) {\n\t\t\t\t\tif (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be iterable');\n\t\t\t\t\t}\n\t\t\t\t\tpairs.push(Array.from(pair));\n\t\t\t\t}\n\n\t\t\t\tfor (const pair of pairs) {\n\t\t\t\t\tif (pair.length !== 2) {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be a name/value tuple');\n\t\t\t\t\t}\n\t\t\t\t\tthis.append(pair[0], pair[1]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// record\n\t\t\t\tfor (const key of Object.keys(init)) {\n\t\t\t\t\tconst value = init[key];\n\t\t\t\t\tthis.append(key, value);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new TypeError('Provided initializer must be an object');\n\t\t}\n\t}\n\n\t/**\n * Return combined header value given name\n *\n * @param String name Header name\n * @return Mixed\n */\n\tget(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key === undefined) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn this[MAP][key].join(', ');\n\t}\n\n\t/**\n * Iterate over all headers\n *\n * @param Function callback Executed for each item with parameters (value, name, thisArg)\n * @param Boolean thisArg `this` context for callback function\n * @return Void\n */\n\tforEach(callback) {\n\t\tlet thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n\n\t\tlet pairs = getHeaders(this);\n\t\tlet i = 0;\n\t\twhile (i < pairs.length) {\n\t\t\tvar _pairs$i = pairs[i];\n\t\t\tconst name = _pairs$i[0],\n\t\t\t value = _pairs$i[1];\n\n\t\t\tcallback.call(thisArg, value, name, this);\n\t\t\tpairs = getHeaders(this);\n\t\t\ti++;\n\t\t}\n\t}\n\n\t/**\n * Overwrite header values given name\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tset(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tthis[MAP][key !== undefined ? key : name] = [value];\n\t}\n\n\t/**\n * Append a value onto existing header\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tappend(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tthis[MAP][key].push(value);\n\t\t} else {\n\t\t\tthis[MAP][name] = [value];\n\t\t}\n\t}\n\n\t/**\n * Check for header name existence\n *\n * @param String name Header name\n * @return Boolean\n */\n\thas(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\treturn find(this[MAP], name) !== undefined;\n\t}\n\n\t/**\n * Delete all header values given name\n *\n * @param String name Header name\n * @return Void\n */\n\tdelete(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tdelete this[MAP][key];\n\t\t}\n\t}\n\n\t/**\n * Return raw headers (non-spec api)\n *\n * @return Object\n */\n\traw() {\n\t\treturn this[MAP];\n\t}\n\n\t/**\n * Get an iterator on keys.\n *\n * @return Iterator\n */\n\tkeys() {\n\t\treturn createHeadersIterator(this, 'key');\n\t}\n\n\t/**\n * Get an iterator on values.\n *\n * @return Iterator\n */\n\tvalues() {\n\t\treturn createHeadersIterator(this, 'value');\n\t}\n\n\t/**\n * Get an iterator on entries.\n *\n * This is the default iterator of the Headers object.\n *\n * @return Iterator\n */\n\t[Symbol.iterator]() {\n\t\treturn createHeadersIterator(this, 'key+value');\n\t}\n}\nHeaders.prototype.entries = Headers.prototype[Symbol.iterator];\n\nObject.defineProperty(Headers.prototype, Symbol.toStringTag, {\n\tvalue: 'Headers',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Headers.prototype, {\n\tget: { enumerable: true },\n\tforEach: { enumerable: true },\n\tset: { enumerable: true },\n\tappend: { enumerable: true },\n\thas: { enumerable: true },\n\tdelete: { enumerable: true },\n\tkeys: { enumerable: true },\n\tvalues: { enumerable: true },\n\tentries: { enumerable: true }\n});\n\nfunction getHeaders(headers) {\n\tlet kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value';\n\n\tconst keys = Object.keys(headers[MAP]).sort();\n\treturn keys.map(kind === 'key' ? function (k) {\n\t\treturn k.toLowerCase();\n\t} : kind === 'value' ? function (k) {\n\t\treturn headers[MAP][k].join(', ');\n\t} : function (k) {\n\t\treturn [k.toLowerCase(), headers[MAP][k].join(', ')];\n\t});\n}\n\nconst INTERNAL = Symbol('internal');\n\nfunction createHeadersIterator(target, kind) {\n\tconst iterator = Object.create(HeadersIteratorPrototype);\n\titerator[INTERNAL] = {\n\t\ttarget,\n\t\tkind,\n\t\tindex: 0\n\t};\n\treturn iterator;\n}\n\nconst HeadersIteratorPrototype = Object.setPrototypeOf({\n\tnext() {\n\t\t// istanbul ignore if\n\t\tif (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) {\n\t\t\tthrow new TypeError('Value of `this` is not a HeadersIterator');\n\t\t}\n\n\t\tvar _INTERNAL = this[INTERNAL];\n\t\tconst target = _INTERNAL.target,\n\t\t kind = _INTERNAL.kind,\n\t\t index = _INTERNAL.index;\n\n\t\tconst values = getHeaders(target, kind);\n\t\tconst len = values.length;\n\t\tif (index >= len) {\n\t\t\treturn {\n\t\t\t\tvalue: undefined,\n\t\t\t\tdone: true\n\t\t\t};\n\t\t}\n\n\t\tthis[INTERNAL].index = index + 1;\n\n\t\treturn {\n\t\t\tvalue: values[index],\n\t\t\tdone: false\n\t\t};\n\t}\n}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));\n\nObject.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, {\n\tvalue: 'HeadersIterator',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * Export the Headers object in a form that Node.js can consume.\n *\n * @param Headers headers\n * @return Object\n */\nfunction exportNodeCompatibleHeaders(headers) {\n\tconst obj = Object.assign({ __proto__: null }, headers[MAP]);\n\n\t// http.request() only supports string as Host header. This hack makes\n\t// specifying custom Host header possible.\n\tconst hostHeaderKey = find(headers[MAP], 'Host');\n\tif (hostHeaderKey !== undefined) {\n\t\tobj[hostHeaderKey] = obj[hostHeaderKey][0];\n\t}\n\n\treturn obj;\n}\n\n/**\n * Create a Headers object from an object of headers, ignoring those that do\n * not conform to HTTP grammar productions.\n *\n * @param Object obj Object of headers\n * @return Headers\n */\nfunction createHeadersLenient(obj) {\n\tconst headers = new Headers();\n\tfor (const name of Object.keys(obj)) {\n\t\tif (invalidTokenRegex.test(name)) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (Array.isArray(obj[name])) {\n\t\t\tfor (const val of obj[name]) {\n\t\t\t\tif (invalidHeaderCharRegex.test(val)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (headers[MAP][name] === undefined) {\n\t\t\t\t\theaders[MAP][name] = [val];\n\t\t\t\t} else {\n\t\t\t\t\theaders[MAP][name].push(val);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (!invalidHeaderCharRegex.test(obj[name])) {\n\t\t\theaders[MAP][name] = [obj[name]];\n\t\t}\n\t}\n\treturn headers;\n}\n\nconst INTERNALS$1 = Symbol('Response internals');\n\n// fix an issue where \"STATUS_CODES\" aren't a named export for node <10\nconst STATUS_CODES = http.STATUS_CODES;\n\n/**\n * Response class\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nclass Response {\n\tconstructor() {\n\t\tlet body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\t\tlet opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tBody.call(this, body, opts);\n\n\t\tconst status = opts.status || 200;\n\t\tconst headers = new Headers(opts.headers);\n\n\t\tif (body != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(body);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tthis[INTERNALS$1] = {\n\t\t\turl: opts.url,\n\t\t\tstatus,\n\t\t\tstatusText: opts.statusText || STATUS_CODES[status],\n\t\t\theaders,\n\t\t\tcounter: opts.counter\n\t\t};\n\t}\n\n\tget url() {\n\t\treturn this[INTERNALS$1].url || '';\n\t}\n\n\tget status() {\n\t\treturn this[INTERNALS$1].status;\n\t}\n\n\t/**\n * Convenience property representing if the request ended normally\n */\n\tget ok() {\n\t\treturn this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300;\n\t}\n\n\tget redirected() {\n\t\treturn this[INTERNALS$1].counter > 0;\n\t}\n\n\tget statusText() {\n\t\treturn this[INTERNALS$1].statusText;\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$1].headers;\n\t}\n\n\t/**\n * Clone this response\n *\n * @return Response\n */\n\tclone() {\n\t\treturn new Response(clone(this), {\n\t\t\turl: this.url,\n\t\t\tstatus: this.status,\n\t\t\tstatusText: this.statusText,\n\t\t\theaders: this.headers,\n\t\t\tok: this.ok,\n\t\t\tredirected: this.redirected\n\t\t});\n\t}\n}\n\nBody.mixIn(Response.prototype);\n\nObject.defineProperties(Response.prototype, {\n\turl: { enumerable: true },\n\tstatus: { enumerable: true },\n\tok: { enumerable: true },\n\tredirected: { enumerable: true },\n\tstatusText: { enumerable: true },\n\theaders: { enumerable: true },\n\tclone: { enumerable: true }\n});\n\nObject.defineProperty(Response.prototype, Symbol.toStringTag, {\n\tvalue: 'Response',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nconst INTERNALS$2 = Symbol('Request internals');\n\n// fix an issue where \"format\", \"parse\" aren't a named export for node <10\nconst parse_url = Url.parse;\nconst format_url = Url.format;\n\nconst streamDestructionSupported = 'destroy' in Stream.Readable.prototype;\n\n/**\n * Check if a value is an instance of Request.\n *\n * @param Mixed input\n * @return Boolean\n */\nfunction isRequest(input) {\n\treturn typeof input === 'object' && typeof input[INTERNALS$2] === 'object';\n}\n\nfunction isAbortSignal(signal) {\n\tconst proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal);\n\treturn !!(proto && proto.constructor.name === 'AbortSignal');\n}\n\n/**\n * Request class\n *\n * @param Mixed input Url or Request instance\n * @param Object init Custom options\n * @return Void\n */\nclass Request {\n\tconstructor(input) {\n\t\tlet init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tlet parsedURL;\n\n\t\t// normalize input\n\t\tif (!isRequest(input)) {\n\t\t\tif (input && input.href) {\n\t\t\t\t// in order to support Node.js' Url objects; though WHATWG's URL objects\n\t\t\t\t// will fall into this branch also (since their `toString()` will return\n\t\t\t\t// `href` property anyway)\n\t\t\t\tparsedURL = parse_url(input.href);\n\t\t\t} else {\n\t\t\t\t// coerce input to a string before attempting to parse\n\t\t\t\tparsedURL = parse_url(`${input}`);\n\t\t\t}\n\t\t\tinput = {};\n\t\t} else {\n\t\t\tparsedURL = parse_url(input.url);\n\t\t}\n\n\t\tlet method = init.method || input.method || 'GET';\n\t\tmethod = method.toUpperCase();\n\n\t\tif ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) {\n\t\t\tthrow new TypeError('Request with GET/HEAD method cannot have body');\n\t\t}\n\n\t\tlet inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null;\n\n\t\tBody.call(this, inputBody, {\n\t\t\ttimeout: init.timeout || input.timeout || 0,\n\t\t\tsize: init.size || input.size || 0\n\t\t});\n\n\t\tconst headers = new Headers(init.headers || input.headers || {});\n\n\t\tif (inputBody != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(inputBody);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tlet signal = isRequest(input) ? input.signal : null;\n\t\tif ('signal' in init) signal = init.signal;\n\n\t\tif (signal != null && !isAbortSignal(signal)) {\n\t\t\tthrow new TypeError('Expected signal to be an instanceof AbortSignal');\n\t\t}\n\n\t\tthis[INTERNALS$2] = {\n\t\t\tmethod,\n\t\t\tredirect: init.redirect || input.redirect || 'follow',\n\t\t\theaders,\n\t\t\tparsedURL,\n\t\t\tsignal\n\t\t};\n\n\t\t// node-fetch-only options\n\t\tthis.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20;\n\t\tthis.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true;\n\t\tthis.counter = init.counter || input.counter || 0;\n\t\tthis.agent = init.agent || input.agent;\n\t}\n\n\tget method() {\n\t\treturn this[INTERNALS$2].method;\n\t}\n\n\tget url() {\n\t\treturn format_url(this[INTERNALS$2].parsedURL);\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$2].headers;\n\t}\n\n\tget redirect() {\n\t\treturn this[INTERNALS$2].redirect;\n\t}\n\n\tget signal() {\n\t\treturn this[INTERNALS$2].signal;\n\t}\n\n\t/**\n * Clone this request\n *\n * @return Request\n */\n\tclone() {\n\t\treturn new Request(this);\n\t}\n}\n\nBody.mixIn(Request.prototype);\n\nObject.defineProperty(Request.prototype, Symbol.toStringTag, {\n\tvalue: 'Request',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Request.prototype, {\n\tmethod: { enumerable: true },\n\turl: { enumerable: true },\n\theaders: { enumerable: true },\n\tredirect: { enumerable: true },\n\tclone: { enumerable: true },\n\tsignal: { enumerable: true }\n});\n\n/**\n * Convert a Request to Node.js http request options.\n *\n * @param Request A Request instance\n * @return Object The options object to be passed to http.request\n */\nfunction getNodeRequestOptions(request) {\n\tconst parsedURL = request[INTERNALS$2].parsedURL;\n\tconst headers = new Headers(request[INTERNALS$2].headers);\n\n\t// fetch step 1.3\n\tif (!headers.has('Accept')) {\n\t\theaders.set('Accept', '*/*');\n\t}\n\n\t// Basic fetch\n\tif (!parsedURL.protocol || !parsedURL.hostname) {\n\t\tthrow new TypeError('Only absolute URLs are supported');\n\t}\n\n\tif (!/^https?:$/.test(parsedURL.protocol)) {\n\t\tthrow new TypeError('Only HTTP(S) protocols are supported');\n\t}\n\n\tif (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) {\n\t\tthrow new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8');\n\t}\n\n\t// HTTP-network-or-cache fetch steps 2.4-2.7\n\tlet contentLengthValue = null;\n\tif (request.body == null && /^(POST|PUT)$/i.test(request.method)) {\n\t\tcontentLengthValue = '0';\n\t}\n\tif (request.body != null) {\n\t\tconst totalBytes = getTotalBytes(request);\n\t\tif (typeof totalBytes === 'number') {\n\t\t\tcontentLengthValue = String(totalBytes);\n\t\t}\n\t}\n\tif (contentLengthValue) {\n\t\theaders.set('Content-Length', contentLengthValue);\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.11\n\tif (!headers.has('User-Agent')) {\n\t\theaders.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)');\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.15\n\tif (request.compress && !headers.has('Accept-Encoding')) {\n\t\theaders.set('Accept-Encoding', 'gzip,deflate');\n\t}\n\n\tlet agent = request.agent;\n\tif (typeof agent === 'function') {\n\t\tagent = agent(parsedURL);\n\t}\n\n\tif (!headers.has('Connection') && !agent) {\n\t\theaders.set('Connection', 'close');\n\t}\n\n\t// HTTP-network fetch step 4.2\n\t// chunked encoding is handled by Node.js\n\n\treturn Object.assign({}, parsedURL, {\n\t\tmethod: request.method,\n\t\theaders: exportNodeCompatibleHeaders(headers),\n\t\tagent\n\t});\n}\n\n/**\n * abort-error.js\n *\n * AbortError interface for cancelled requests\n */\n\n/**\n * Create AbortError instance\n *\n * @param String message Error message for human\n * @return AbortError\n */\nfunction AbortError(message) {\n Error.call(this, message);\n\n this.type = 'aborted';\n this.message = message;\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nAbortError.prototype = Object.create(Error.prototype);\nAbortError.prototype.constructor = AbortError;\nAbortError.prototype.name = 'AbortError';\n\n// fix an issue where \"PassThrough\", \"resolve\" aren't a named export for node <10\nconst PassThrough$1 = Stream.PassThrough;\nconst resolve_url = Url.resolve;\n\n/**\n * Fetch function\n *\n * @param Mixed url Absolute url or Request instance\n * @param Object opts Fetch options\n * @return Promise\n */\nfunction fetch(url, opts) {\n\n\t// allow custom promise\n\tif (!fetch.Promise) {\n\t\tthrow new Error('native promise missing, set fetch.Promise to your favorite alternative');\n\t}\n\n\tBody.Promise = fetch.Promise;\n\n\t// wrap http.request into fetch\n\treturn new fetch.Promise(function (resolve, reject) {\n\t\t// build request object\n\t\tconst request = new Request(url, opts);\n\t\tconst options = getNodeRequestOptions(request);\n\n\t\tconst send = (options.protocol === 'https:' ? https : http).request;\n\t\tconst signal = request.signal;\n\n\t\tlet response = null;\n\n\t\tconst abort = function abort() {\n\t\t\tlet error = new AbortError('The user aborted a request.');\n\t\t\treject(error);\n\t\t\tif (request.body && request.body instanceof Stream.Readable) {\n\t\t\t\trequest.body.destroy(error);\n\t\t\t}\n\t\t\tif (!response || !response.body) return;\n\t\t\tresponse.body.emit('error', error);\n\t\t};\n\n\t\tif (signal && signal.aborted) {\n\t\t\tabort();\n\t\t\treturn;\n\t\t}\n\n\t\tconst abortAndFinalize = function abortAndFinalize() {\n\t\t\tabort();\n\t\t\tfinalize();\n\t\t};\n\n\t\t// send request\n\t\tconst req = send(options);\n\t\tlet reqTimeout;\n\n\t\tif (signal) {\n\t\t\tsignal.addEventListener('abort', abortAndFinalize);\n\t\t}\n\n\t\tfunction finalize() {\n\t\t\treq.abort();\n\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\tclearTimeout(reqTimeout);\n\t\t}\n\n\t\tif (request.timeout) {\n\t\t\treq.once('socket', function (socket) {\n\t\t\t\treqTimeout = setTimeout(function () {\n\t\t\t\t\treject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout'));\n\t\t\t\t\tfinalize();\n\t\t\t\t}, request.timeout);\n\t\t\t});\n\t\t}\n\n\t\treq.on('error', function (err) {\n\t\t\treject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err));\n\t\t\tfinalize();\n\t\t});\n\n\t\treq.on('response', function (res) {\n\t\t\tclearTimeout(reqTimeout);\n\n\t\t\tconst headers = createHeadersLenient(res.headers);\n\n\t\t\t// HTTP fetch step 5\n\t\t\tif (fetch.isRedirect(res.statusCode)) {\n\t\t\t\t// HTTP fetch step 5.2\n\t\t\t\tconst location = headers.get('Location');\n\n\t\t\t\t// HTTP fetch step 5.3\n\t\t\t\tconst locationURL = location === null ? null : resolve_url(request.url, location);\n\n\t\t\t\t// HTTP fetch step 5.5\n\t\t\t\tswitch (request.redirect) {\n\t\t\t\t\tcase 'error':\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\tcase 'manual':\n\t\t\t\t\t\t// node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL.\n\t\t\t\t\t\tif (locationURL !== null) {\n\t\t\t\t\t\t\t// handle corrupted header\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\theaders.set('Location', locationURL);\n\t\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\t\t// istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request\n\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'follow':\n\t\t\t\t\t\t// HTTP-redirect fetch step 2\n\t\t\t\t\t\tif (locationURL === null) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 5\n\t\t\t\t\t\tif (request.counter >= request.follow) {\n\t\t\t\t\t\t\treject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 6 (counter increment)\n\t\t\t\t\t\t// Create a new Request object.\n\t\t\t\t\t\tconst requestOpts = {\n\t\t\t\t\t\t\theaders: new Headers(request.headers),\n\t\t\t\t\t\t\tfollow: request.follow,\n\t\t\t\t\t\t\tcounter: request.counter + 1,\n\t\t\t\t\t\t\tagent: request.agent,\n\t\t\t\t\t\t\tcompress: request.compress,\n\t\t\t\t\t\t\tmethod: request.method,\n\t\t\t\t\t\t\tbody: request.body,\n\t\t\t\t\t\t\tsignal: request.signal,\n\t\t\t\t\t\t\ttimeout: request.timeout,\n\t\t\t\t\t\t\tsize: request.size\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 9\n\t\t\t\t\t\tif (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) {\n\t\t\t\t\t\t\treject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 11\n\t\t\t\t\t\tif (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') {\n\t\t\t\t\t\t\trequestOpts.method = 'GET';\n\t\t\t\t\t\t\trequestOpts.body = undefined;\n\t\t\t\t\t\t\trequestOpts.headers.delete('content-length');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 15\n\t\t\t\t\t\tresolve(fetch(new Request(locationURL, requestOpts)));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// prepare response\n\t\t\tres.once('end', function () {\n\t\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\t});\n\t\t\tlet body = res.pipe(new PassThrough$1());\n\n\t\t\tconst response_options = {\n\t\t\t\turl: request.url,\n\t\t\t\tstatus: res.statusCode,\n\t\t\t\tstatusText: res.statusMessage,\n\t\t\t\theaders: headers,\n\t\t\t\tsize: request.size,\n\t\t\t\ttimeout: request.timeout,\n\t\t\t\tcounter: request.counter\n\t\t\t};\n\n\t\t\t// HTTP-network fetch step 12.1.1.3\n\t\t\tconst codings = headers.get('Content-Encoding');\n\n\t\t\t// HTTP-network fetch step 12.1.1.4: handle content codings\n\n\t\t\t// in following scenarios we ignore compression support\n\t\t\t// 1. compression support is disabled\n\t\t\t// 2. HEAD request\n\t\t\t// 3. no Content-Encoding header\n\t\t\t// 4. no content response (204)\n\t\t\t// 5. content not modified response (304)\n\t\t\tif (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) {\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// For Node v6+\n\t\t\t// Be less strict when decoding compressed responses, since sometimes\n\t\t\t// servers send slightly invalid responses that are still accepted\n\t\t\t// by common browsers.\n\t\t\t// Always using Z_SYNC_FLUSH is what cURL does.\n\t\t\tconst zlibOptions = {\n\t\t\t\tflush: zlib.Z_SYNC_FLUSH,\n\t\t\t\tfinishFlush: zlib.Z_SYNC_FLUSH\n\t\t\t};\n\n\t\t\t// for gzip\n\t\t\tif (codings == 'gzip' || codings == 'x-gzip') {\n\t\t\t\tbody = body.pipe(zlib.createGunzip(zlibOptions));\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for deflate\n\t\t\tif (codings == 'deflate' || codings == 'x-deflate') {\n\t\t\t\t// handle the infamous raw deflate response from old servers\n\t\t\t\t// a hack for old IIS and Apache servers\n\t\t\t\tconst raw = res.pipe(new PassThrough$1());\n\t\t\t\traw.once('data', function (chunk) {\n\t\t\t\t\t// see http://stackoverflow.com/questions/37519828\n\t\t\t\t\tif ((chunk[0] & 0x0F) === 0x08) {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflate());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflateRaw());\n\t\t\t\t\t}\n\t\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\t\tresolve(response);\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for br\n\t\t\tif (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') {\n\t\t\t\tbody = body.pipe(zlib.createBrotliDecompress());\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// otherwise, use response as-is\n\t\t\tresponse = new Response(body, response_options);\n\t\t\tresolve(response);\n\t\t});\n\n\t\twriteToStream(req, request);\n\t});\n}\n/**\n * Redirect code matching\n *\n * @param Number code Status code\n * @return Boolean\n */\nfetch.isRedirect = function (code) {\n\treturn code === 301 || code === 302 || code === 303 || code === 307 || code === 308;\n};\n\n// expose Promise\nfetch.Promise = global.Promise;\n\nmodule.exports = exports = fetch;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = exports;\nexports.Headers = Headers;\nexports.Request = Request;\nexports.Response = Response;\nexports.FetchError = FetchError;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nclass Deprecation extends Error {\n constructor(message) {\n super(message); // Maintains proper stack trace (only available on V8)\n\n /* istanbul ignore next */\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n\n this.name = 'Deprecation';\n }\n\n}\n\nexports.Deprecation = Deprecation;\n", "// Returns a wrapper function that returns a wrapped callback\n// The wrapper function should do some stuff, and return a\n// presumably different callback function.\n// This makes sure that own properties are retained, so that\n// decorations and such are not lost along the way.\nmodule.exports = wrappy\nfunction wrappy (fn, cb) {\n if (fn && cb) return wrappy(fn)(cb)\n\n if (typeof fn !== 'function')\n throw new TypeError('need wrapper function')\n\n Object.keys(fn).forEach(function (k) {\n wrapper[k] = fn[k]\n })\n\n return wrapper\n\n function wrapper() {\n var args = new Array(arguments.length)\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i]\n }\n var ret = fn.apply(this, args)\n var cb = args[args.length-1]\n if (typeof ret === 'function' && ret !== cb) {\n Object.keys(cb).forEach(function (k) {\n ret[k] = cb[k]\n })\n }\n return ret\n }\n}\n", "var wrappy = require('wrappy')\nmodule.exports = wrappy(once)\nmodule.exports.strict = wrappy(onceStrict)\n\nonce.proto = once(function () {\n Object.defineProperty(Function.prototype, 'once', {\n value: function () {\n return once(this)\n },\n configurable: true\n })\n\n Object.defineProperty(Function.prototype, 'onceStrict', {\n value: function () {\n return onceStrict(this)\n },\n configurable: true\n })\n})\n\nfunction once (fn) {\n var f = function () {\n if (f.called) return f.value\n f.called = true\n return f.value = fn.apply(this, arguments)\n }\n f.called = false\n return f\n}\n\nfunction onceStrict (fn) {\n var f = function () {\n if (f.called)\n throw new Error(f.onceError)\n f.called = true\n return f.value = fn.apply(this, arguments)\n }\n var name = fn.name || 'Function wrapped with `once`'\n f.onceError = name + \" shouldn't be called more than once\"\n f.called = false\n return f\n}\n", "import { Deprecation } from \"deprecation\";\nimport once from \"once\";\nconst logOnce = once((deprecation) => console.warn(deprecation));\n/**\n * Error with extra properties to help with debugging\n */\nexport class RequestError extends Error {\n constructor(message, statusCode, options) {\n super(message);\n // Maintains proper stack trace (only available on V8)\n /* istanbul ignore next */\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n this.name = \"HttpError\";\n this.status = statusCode;\n Object.defineProperty(this, \"code\", {\n get() {\n logOnce(new Deprecation(\"[@octokit/request-error] `error.code` is deprecated, use `error.status`.\"));\n return statusCode;\n },\n });\n this.headers = options.headers || {};\n // redact request credentials without mutating original request options\n const requestCopy = Object.assign({}, options.request);\n if (options.request.headers.authorization) {\n requestCopy.headers = Object.assign({}, options.request.headers, {\n authorization: options.request.headers.authorization.replace(/ .*$/, \" [REDACTED]\"),\n });\n }\n requestCopy.url = requestCopy.url\n // client_id & client_secret can be passed as URL query parameters to increase rate limit\n // see https://developer.github.com/v3/#increasing-the-unauthenticated-rate-limit-for-oauth-applications\n .replace(/\\bclient_secret=\\w+/g, \"client_secret=[REDACTED]\")\n // OAuth tokens can be passed as URL query parameters, although it is not recommended\n // see https://developer.github.com/v3/#oauth2-token-sent-in-a-header\n .replace(/\\baccess_token=\\w+/g, \"access_token=[REDACTED]\");\n this.request = requestCopy;\n }\n}\n", "export const VERSION = \"5.5.0\";\n", "export default function getBufferResponse(response) {\n return response.arrayBuffer();\n}\n", "import { isPlainObject } from \"is-plain-object\";\nimport nodeFetch from \"node-fetch\";\nimport { RequestError } from \"@octokit/request-error\";\nimport getBuffer from \"./get-buffer-response\";\nexport default function fetchWrapper(requestOptions) {\n const log = requestOptions.request && requestOptions.request.log\n ? requestOptions.request.log\n : console;\n if (isPlainObject(requestOptions.body) ||\n Array.isArray(requestOptions.body)) {\n requestOptions.body = JSON.stringify(requestOptions.body);\n }\n let headers = {};\n let status;\n let url;\n const fetch = (requestOptions.request && requestOptions.request.fetch) || nodeFetch;\n return fetch(requestOptions.url, Object.assign({\n method: requestOptions.method,\n body: requestOptions.body,\n headers: requestOptions.headers,\n redirect: requestOptions.redirect,\n }, \n // `requestOptions.request.agent` type is incompatible\n // see https://github.com/octokit/types.ts/pull/264\n requestOptions.request))\n .then((response) => {\n url = response.url;\n status = response.status;\n for (const keyAndValue of response.headers) {\n headers[keyAndValue[0]] = keyAndValue[1];\n }\n if (\"deprecation\" in headers) {\n const matches = headers.link && headers.link.match(/<([^>]+)>; rel=\"deprecation\"/);\n const deprecationLink = matches && matches.pop();\n log.warn(`[@octokit/request] \"${requestOptions.method} ${requestOptions.url}\" is deprecated. It is scheduled to be removed on ${headers.sunset}${deprecationLink ? `. See ${deprecationLink}` : \"\"}`);\n }\n if (status === 204 || status === 205) {\n return;\n }\n // GitHub API returns 200 for HEAD requests\n if (requestOptions.method === \"HEAD\") {\n if (status < 400) {\n return;\n }\n throw new RequestError(response.statusText, status, {\n headers,\n request: requestOptions,\n });\n }\n if (status === 304) {\n throw new RequestError(\"Not modified\", status, {\n headers,\n request: requestOptions,\n });\n }\n if (status >= 400) {\n return response\n .text()\n .then((message) => {\n const error = new RequestError(message, status, {\n headers,\n request: requestOptions,\n });\n try {\n let responseBody = JSON.parse(error.message);\n Object.assign(error, responseBody);\n let errors = responseBody.errors;\n // Assumption `errors` would always be in Array format\n error.message =\n error.message + \": \" + errors.map(JSON.stringify).join(\", \");\n }\n catch (e) {\n // ignore, see octokit/rest.js#684\n }\n throw error;\n });\n }\n const contentType = response.headers.get(\"content-type\");\n if (/application\\/json/.test(contentType)) {\n return response.json();\n }\n if (!contentType || /^text\\/|charset=utf-8$/.test(contentType)) {\n return response.text();\n }\n return getBuffer(response);\n })\n .then((data) => {\n return {\n status,\n url,\n headers,\n data,\n };\n })\n .catch((error) => {\n if (error instanceof RequestError) {\n throw error;\n }\n throw new RequestError(error.message, 500, {\n headers,\n request: requestOptions,\n });\n });\n}\n", "import fetchWrapper from \"./fetch-wrapper\";\nexport default function withDefaults(oldEndpoint, newDefaults) {\n const endpoint = oldEndpoint.defaults(newDefaults);\n const newApi = function (route, parameters) {\n const endpointOptions = endpoint.merge(route, parameters);\n if (!endpointOptions.request || !endpointOptions.request.hook) {\n return fetchWrapper(endpoint.parse(endpointOptions));\n }\n const request = (route, parameters) => {\n return fetchWrapper(endpoint.parse(endpoint.merge(route, parameters)));\n };\n Object.assign(request, {\n endpoint,\n defaults: withDefaults.bind(null, endpoint),\n });\n return endpointOptions.request.hook(request, endpointOptions);\n };\n return Object.assign(newApi, {\n endpoint,\n defaults: withDefaults.bind(null, endpoint),\n });\n}\n", "import { endpoint } from \"@octokit/endpoint\";\nimport { getUserAgent } from \"universal-user-agent\";\nimport { VERSION } from \"./version\";\nimport withDefaults from \"./with-defaults\";\nexport const request = withDefaults(endpoint, {\n headers: {\n \"user-agent\": `octokit-request.js/${VERSION} ${getUserAgent()}`,\n },\n});\n", "export const VERSION = \"4.6.2\";\n", "export class GraphqlError extends Error {\n constructor(request, response) {\n const message = response.data.errors[0].message;\n super(message);\n Object.assign(this, response.data);\n Object.assign(this, { headers: response.headers });\n this.name = \"GraphqlError\";\n this.request = request;\n // Maintains proper stack trace (only available on V8)\n /* istanbul ignore next */\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n }\n}\n", "import { GraphqlError } from \"./error\";\nconst NON_VARIABLE_OPTIONS = [\n \"method\",\n \"baseUrl\",\n \"url\",\n \"headers\",\n \"request\",\n \"query\",\n \"mediaType\",\n];\nconst FORBIDDEN_VARIABLE_OPTIONS = [\"query\", \"method\", \"url\"];\nconst GHES_V3_SUFFIX_REGEX = /\\/api\\/v3\\/?$/;\nexport function graphql(request, query, options) {\n if (options) {\n if (typeof query === \"string\" && \"query\" in options) {\n return Promise.reject(new Error(`[@octokit/graphql] \"query\" cannot be used as variable name`));\n }\n for (const key in options) {\n if (!FORBIDDEN_VARIABLE_OPTIONS.includes(key))\n continue;\n return Promise.reject(new Error(`[@octokit/graphql] \"${key}\" cannot be used as variable name`));\n }\n }\n const parsedOptions = typeof query === \"string\" ? Object.assign({ query }, options) : query;\n const requestOptions = Object.keys(parsedOptions).reduce((result, key) => {\n if (NON_VARIABLE_OPTIONS.includes(key)) {\n result[key] = parsedOptions[key];\n return result;\n }\n if (!result.variables) {\n result.variables = {};\n }\n result.variables[key] = parsedOptions[key];\n return result;\n }, {});\n // workaround for GitHub Enterprise baseUrl set with /api/v3 suffix\n // https://github.com/octokit/auth-app.js/issues/111#issuecomment-657610451\n const baseUrl = parsedOptions.baseUrl || request.endpoint.DEFAULTS.baseUrl;\n if (GHES_V3_SUFFIX_REGEX.test(baseUrl)) {\n requestOptions.url = baseUrl.replace(GHES_V3_SUFFIX_REGEX, \"/api/graphql\");\n }\n return request(requestOptions).then((response) => {\n if (response.data.errors) {\n const headers = {};\n for (const key of Object.keys(response.headers)) {\n headers[key] = response.headers[key];\n }\n throw new GraphqlError(requestOptions, {\n headers,\n data: response.data,\n });\n }\n return response.data.data;\n });\n}\n", "import { request as Request } from \"@octokit/request\";\nimport { graphql } from \"./graphql\";\nexport function withDefaults(request, newDefaults) {\n const newRequest = request.defaults(newDefaults);\n const newApi = (query, options) => {\n return graphql(newRequest, query, options);\n };\n return Object.assign(newApi, {\n defaults: withDefaults.bind(null, newRequest),\n endpoint: Request.endpoint,\n });\n}\n", "import { request } from \"@octokit/request\";\nimport { getUserAgent } from \"universal-user-agent\";\nimport { VERSION } from \"./version\";\nimport { withDefaults } from \"./with-defaults\";\nexport const graphql = withDefaults(request, {\n headers: {\n \"user-agent\": `octokit-graphql.js/${VERSION} ${getUserAgent()}`,\n },\n method: \"POST\",\n url: \"/graphql\",\n});\nexport function withCustomRequest(customRequest) {\n return withDefaults(customRequest, {\n method: \"POST\",\n url: \"/graphql\",\n });\n}\n", "export async function auth(token) {\n const tokenType = token.split(/\\./).length === 3\n ? \"app\"\n : /^v\\d+\\./.test(token)\n ? \"installation\"\n : \"oauth\";\n return {\n type: \"token\",\n token: token,\n tokenType\n };\n}\n", "/**\n * Prefix token for usage in the Authorization header\n *\n * @param token OAuth token or JSON Web Token\n */\nexport function withAuthorizationPrefix(token) {\n if (token.split(/\\./).length === 3) {\n return `bearer ${token}`;\n }\n return `token ${token}`;\n}\n", "import { withAuthorizationPrefix } from \"./with-authorization-prefix\";\nexport async function hook(token, request, route, parameters) {\n const endpoint = request.endpoint.merge(route, parameters);\n endpoint.headers.authorization = withAuthorizationPrefix(token);\n return request(endpoint);\n}\n", "import { auth } from \"./auth\";\nimport { hook } from \"./hook\";\nexport const createTokenAuth = function createTokenAuth(token) {\n if (!token) {\n throw new Error(\"[@octokit/auth-token] No token passed to createTokenAuth\");\n }\n if (typeof token !== \"string\") {\n throw new Error(\"[@octokit/auth-token] Token passed to createTokenAuth is not a string\");\n }\n token = token.replace(/^(token|bearer) +/i, \"\");\n return Object.assign(auth.bind(null, token), {\n hook: hook.bind(null, token)\n });\n};\n", "export const VERSION = \"3.4.0\";\n", "import { getUserAgent } from \"universal-user-agent\";\nimport { Collection } from \"before-after-hook\";\nimport { request } from \"@octokit/request\";\nimport { withCustomRequest } from \"@octokit/graphql\";\nimport { createTokenAuth } from \"@octokit/auth-token\";\nimport { VERSION } from \"./version\";\nexport class Octokit {\n constructor(options = {}) {\n const hook = new Collection();\n const requestDefaults = {\n baseUrl: request.endpoint.DEFAULTS.baseUrl,\n headers: {},\n request: Object.assign({}, options.request, {\n // @ts-ignore internal usage only, no need to type\n hook: hook.bind(null, \"request\"),\n }),\n mediaType: {\n previews: [],\n format: \"\",\n },\n };\n // prepend default user agent with `options.userAgent` if set\n requestDefaults.headers[\"user-agent\"] = [\n options.userAgent,\n `octokit-core.js/${VERSION} ${getUserAgent()}`,\n ]\n .filter(Boolean)\n .join(\" \");\n if (options.baseUrl) {\n requestDefaults.baseUrl = options.baseUrl;\n }\n if (options.previews) {\n requestDefaults.mediaType.previews = options.previews;\n }\n if (options.timeZone) {\n requestDefaults.headers[\"time-zone\"] = options.timeZone;\n }\n this.request = request.defaults(requestDefaults);\n this.graphql = withCustomRequest(this.request).defaults(requestDefaults);\n this.log = Object.assign({\n debug: () => { },\n info: () => { },\n warn: console.warn.bind(console),\n error: console.error.bind(console),\n }, options.log);\n this.hook = hook;\n // (1) If neither `options.authStrategy` nor `options.auth` are set, the `octokit` instance\n // is unauthenticated. The `this.auth()` method is a no-op and no request hook is registered.\n // (2) If only `options.auth` is set, use the default token authentication strategy.\n // (3) If `options.authStrategy` is set then use it and pass in `options.auth`. Always pass own request as many strategies accept a custom request instance.\n // TODO: type `options.auth` based on `options.authStrategy`.\n if (!options.authStrategy) {\n if (!options.auth) {\n // (1)\n this.auth = async () => ({\n type: \"unauthenticated\",\n });\n }\n else {\n // (2)\n const auth = createTokenAuth(options.auth);\n // @ts-ignore \u00AF\\_(\u30C4)_/\u00AF\n hook.wrap(\"request\", auth.hook);\n this.auth = auth;\n }\n }\n else {\n const { authStrategy, ...otherOptions } = options;\n const auth = authStrategy(Object.assign({\n request: this.request,\n log: this.log,\n // we pass the current octokit instance as well as its constructor options\n // to allow for authentication strategies that return a new octokit instance\n // that shares the same internal state as the current one. The original\n // requirement for this was the \"event-octokit\" authentication strategy\n // of https://github.com/probot/octokit-auth-probot.\n octokit: this,\n octokitOptions: otherOptions,\n }, options.auth));\n // @ts-ignore \u00AF\\_(\u30C4)_/\u00AF\n hook.wrap(\"request\", auth.hook);\n this.auth = auth;\n }\n // apply plugins\n // https://stackoverflow.com/a/16345172\n const classConstructor = this.constructor;\n classConstructor.plugins.forEach((plugin) => {\n Object.assign(this, plugin(this, options));\n });\n }\n static defaults(defaults) {\n const OctokitWithDefaults = class extends this {\n constructor(...args) {\n const options = args[0] || {};\n if (typeof defaults === \"function\") {\n super(defaults(options));\n return;\n }\n super(Object.assign({}, defaults, options, options.userAgent && defaults.userAgent\n ? {\n userAgent: `${options.userAgent} ${defaults.userAgent}`,\n }\n : null));\n }\n };\n return OctokitWithDefaults;\n }\n /**\n * Attach a plugin (or many) to your Octokit instance.\n *\n * @example\n * const API = Octokit.plugin(plugin1, plugin2, plugin3, ...)\n */\n static plugin(...newPlugins) {\n var _a;\n const currentPlugins = this.plugins;\n const NewOctokit = (_a = class extends this {\n },\n _a.plugins = currentPlugins.concat(newPlugins.filter((plugin) => !currentPlugins.includes(plugin))),\n _a);\n return NewOctokit;\n }\n}\nOctokit.VERSION = VERSION;\nOctokit.plugins = [];\n", "import cp from 'child_process';\nimport * as path from 'path';\nimport * as core from '@actions/core';\nimport * as io from '@actions/io';\nimport { getFlytectl } from './flytectl';\nimport { Error, isError } from './error';\n\nexport async function run(): Promise {\n try {\n const result = await runSetup()\n if (result !== null && isError(result)) {\n core.setFailed(result.message);\n }\n } catch (error) {\n // In case we ever fail to catch an error\n // in the call chain, we catch the error\n // and mark the build as a failure. The\n // user is otherwise prone to false positives.\n if (isError(error)) {\n core.setFailed(error.message);\n return;\n }\n core.setFailed('Internal error');\n }\n}\n\n// runSetup runs the flytectl-setup action, and returns\n// a non-empty error if it fails.\nasync function runSetup(): Promise {\n const version = core.getInput('version');\n if (version === '') {\n return {\n message: 'a version was not provided'\n };\n }\n\n core.info(`Setting up flytectl version \"${version}\"`);\n const installDir = await getFlytectl(version);\n if (isError(installDir)) {\n return installDir\n }\n\n core.info('Adding flytectl binary to PATH');\n core.addPath(path.join(installDir));\n const binaryPath = await io.which('flytectl', true);\n if (binaryPath === '') {\n return {\n message: 'flytectl was not found on PATH'\n };\n }\n\n core.info(`Successfully setup flytectl version ${version}`);\n\n return null;\n}", "\nimport * as os from 'os';\nimport * as path from 'path';\nimport * as core from '@actions/core';\nimport * as tc from '@actions/tool-cache';\nimport { Octokit } from \"@octokit/core\";\nimport { Error, isError } from './error';\n\n// versionPrefix is used in Github release names, and can\n// optionally be specified in the action's version parameter.\nconst versionPrefix = \"v\";\n\nexport async function getFlytectl(version: string): Promise {\n const binaryPath = tc.find('flytectl', version, os.arch());\n if (binaryPath !== '') {\n core.info(`Found in cache @ ${binaryPath}`);\n return binaryPath;\n }\n\n core.info(`Resolving the download URL for the current platform...`);\n const downloadURL = await getDownloadURL(version);\n if (isError(downloadURL)) {\n return downloadURL\n }\n\n core.info(`Downloading flytectl version \"${version}\" from ${downloadURL}`);\n const downloadPath = await tc.downloadTool(downloadURL);\n core.info(`Successfully downloaded flytectl version \"${version}\" from ${downloadURL}`);\n\n core.info('Extracting flytectl...');\n const extractPath = await tc.extractTar(downloadPath);\n core.info(`Successfully extracted flytectl to ${extractPath}`);\n\n core.info('Adding flytectl to the cache...');\n const cacheDir = await tc.cacheDir(\n path.join(extractPath),\n 'flytectl',\n version,\n os.arch()\n );\n core.info(`Successfully cached flytectl to ${cacheDir}`);\n\n return cacheDir;\n}\n\n// getDownloadURL resolves flytectl's Github download URL for the\n// current architecture and platform.\nasync function getDownloadURL(version: string): Promise {\n let architecture = '';\n switch (os.arch()) {\n case 'x64':\n architecture = 'x86_64';\n break;\n default:\n return {\n message: `The \"${os.arch()}\" architecture is not supported with a flytectl release.`\n };\n }\n let platform = '';\n switch (os.platform()) {\n case 'linux':\n platform = 'Linux';\n break;\n default:\n return {\n message: `The \"${os.platform()}\" platform is not supported with a flytectl release.`\n };\n }\n\n const assetName = `flytectl_${platform}_${architecture}.tar.gz`\n const octokit = new Octokit();\n const {data: releases} = await octokit.request(\n 'GET /repos/{owner}/{repo}/releases',\n {\n owner: 'flyteorg',\n repo: 'flytectl',\n }\n );\n switch (version) {\n case 'latest':\n for (const asset of releases[0].assets) {\n if (assetName === asset.name) {\n return asset.browser_download_url;\n }\n }\n break;\n default:\n for (const release of releases) {\n if (releaseTagIsVersion(release.tag_name, version)) {\n for (const asset of release.assets) {\n if (assetName === asset.name) {\n return asset.browser_download_url;\n }\n }\n }\n }\n }\n return {\n message: `Unable to find flytectl version \"${version}\" for platform \"${platform}\" and architecture \"${architecture}\".`\n };\n}\n\nfunction releaseTagIsVersion(releaseTag: string, version: string): boolean {\n if (releaseTag.indexOf(versionPrefix) === 0) {\n releaseTag = releaseTag.slice(versionPrefix.length)\n }\n if (version.indexOf(versionPrefix) === 0) {\n version = version.slice(versionPrefix.length)\n }\n return releaseTag === version\n}\n\n", "export interface Error {\n message: string;\n}\n\nexport function isError(value: any): value is Error {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n return (value as Error).message !== undefined;\n}\n", "import {run} from './run';\n\nvoid run();\n"], + "mappings": "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", + "names": [] +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..42bd593 --- /dev/null +++ b/package.json @@ -0,0 +1,34 @@ +{ + "name": "flytectl-setup-action", + "version": "0.0.1", + "description": "Install and setup flytectl for use in other actions ", + "main": "src/main.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/evalsocket/flytectl-setup-action.git" + }, + "author": "Yuvraj", + "license": "ISC", + "bugs": { + "url": "https://github.com/evalsocket/flytectl-setup-action/issues" + }, + "homepage": "https://github.com/evalsocket/flytectl-setup-action#readme", + "dependencies": { + "@actions/core": "^1.2.6", + "@actions/github": "^4.0.0", + "@actions/io": "^1.0.2", + "@actions/tool-cache": "^1.6.1", + "@octokit/core": "", + "@types/node": "^14.14.35", + "child_process": "^1.0.2" + }, + "devDependencies": { + "@typescript-eslint/eslint-plugin": "^4.18.0", + "esbuild": "^0.12.6", + "typescript": "^4.3.2", + "eslint": "^7.28.0" + } +} diff --git a/src/error.ts b/src/error.ts new file mode 100644 index 0000000..0058240 --- /dev/null +++ b/src/error.ts @@ -0,0 +1,8 @@ +export interface Error { + message: string; +} + +export function isError(value: any): value is Error { + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + return (value as Error).message !== undefined; +} diff --git a/src/flytectl.ts b/src/flytectl.ts new file mode 100644 index 0000000..956ea07 --- /dev/null +++ b/src/flytectl.ts @@ -0,0 +1,112 @@ + +import * as os from 'os'; +import * as path from 'path'; +import * as core from '@actions/core'; +import * as tc from '@actions/tool-cache'; +import { Octokit } from "@octokit/core"; +import { Error, isError } from './error'; + +// versionPrefix is used in Github release names, and can +// optionally be specified in the action's version parameter. +const versionPrefix = "v"; + +export async function getFlytectl(version: string): Promise { + const binaryPath = tc.find('flytectl', version, os.arch()); + if (binaryPath !== '') { + core.info(`Found in cache @ ${binaryPath}`); + return binaryPath; + } + + core.info(`Resolving the download URL for the current platform...`); + const downloadURL = await getDownloadURL(version); + if (isError(downloadURL)) { + return downloadURL + } + + core.info(`Downloading flytectl version "${version}" from ${downloadURL}`); + const downloadPath = await tc.downloadTool(downloadURL); + core.info(`Successfully downloaded flytectl version "${version}" from ${downloadURL}`); + + core.info('Extracting flytectl...'); + const extractPath = await tc.extractTar(downloadPath); + core.info(`Successfully extracted flytectl to ${extractPath}`); + + core.info('Adding flytectl to the cache...'); + const cacheDir = await tc.cacheDir( + path.join(extractPath), + 'flytectl', + version, + os.arch() + ); + core.info(`Successfully cached flytectl to ${cacheDir}`); + + return cacheDir; +} + +// getDownloadURL resolves flytectl's Github download URL for the +// current architecture and platform. +async function getDownloadURL(version: string): Promise { + let architecture = ''; + switch (os.arch()) { + case 'x64': + architecture = 'x86_64'; + break; + default: + return { + message: `The "${os.arch()}" architecture is not supported with a flytectl release.` + }; + } + let platform = ''; + switch (os.platform()) { + case 'linux': + platform = 'Linux'; + break; + default: + return { + message: `The "${os.platform()}" platform is not supported with a flytectl release.` + }; + } + + const assetName = `flytectl_${platform}_${architecture}.tar.gz` + const octokit = new Octokit(); + const {data: releases} = await octokit.request( + 'GET /repos/{owner}/{repo}/releases', + { + owner: 'flyteorg', + repo: 'flytectl', + } + ); + switch (version) { + case 'latest': + for (const asset of releases[0].assets) { + if (assetName === asset.name) { + return asset.browser_download_url; + } + } + break; + default: + for (const release of releases) { + if (releaseTagIsVersion(release.tag_name, version)) { + for (const asset of release.assets) { + if (assetName === asset.name) { + return asset.browser_download_url; + } + } + } + } + } + return { + message: `Unable to find flytectl version "${version}" for platform "${platform}" and architecture "${architecture}".` + }; +} + +function releaseTagIsVersion(releaseTag: string, version: string): boolean { + if (releaseTag.indexOf(versionPrefix) === 0) { + releaseTag = releaseTag.slice(versionPrefix.length) + } + if (version.indexOf(versionPrefix) === 0) { + version = version.slice(versionPrefix.length) + } + return releaseTag === version +} + diff --git a/src/main.ts b/src/main.ts new file mode 100644 index 0000000..86adc55 --- /dev/null +++ b/src/main.ts @@ -0,0 +1,3 @@ +import {run} from './run'; + +void run(); diff --git a/src/run.ts b/src/run.ts new file mode 100644 index 0000000..73c4c13 --- /dev/null +++ b/src/run.ts @@ -0,0 +1,55 @@ +import cp from 'child_process'; +import * as path from 'path'; +import * as core from '@actions/core'; +import * as io from '@actions/io'; +import { getFlytectl } from './flytectl'; +import { Error, isError } from './error'; + +export async function run(): Promise { + try { + const result = await runSetup() + if (result !== null && isError(result)) { + core.setFailed(result.message); + } + } catch (error) { + // In case we ever fail to catch an error + // in the call chain, we catch the error + // and mark the build as a failure. The + // user is otherwise prone to false positives. + if (isError(error)) { + core.setFailed(error.message); + return; + } + core.setFailed('Internal error'); + } +} + +// runSetup runs the flytectl-setup action, and returns +// a non-empty error if it fails. +async function runSetup(): Promise { + const version = core.getInput('version'); + if (version === '') { + return { + message: 'a version was not provided' + }; + } + + core.info(`Setting up flytectl version "${version}"`); + const installDir = await getFlytectl(version); + if (isError(installDir)) { + return installDir + } + + core.info('Adding flytectl binary to PATH'); + core.addPath(path.join(installDir)); + const binaryPath = await io.which('flytectl', true); + if (binaryPath === '') { + return { + message: 'flytectl was not found on PATH' + }; + } + + core.info(`Successfully setup flytectl version ${version}`); + + return null; +} \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..aa771c7 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "rootDir": "./src", + "lib": ["ES6"], + "jsx": "preserve", + "noImplicitAny": true, + "esModuleInterop": true, + "target": "es6", + "allowJs": false, + "skipLibCheck": true, + "allowSyntheticDefaultImports": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "module": "esnext", + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true, + "noUnusedParameters": true + } +}