Test GitHub Cache
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
This commit is contained in:
		
							parent
							
								
									5003e0df3d
								
							
						
					
					
						commit
						22acf7cb32
					
				
							
								
								
									
										44
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										44
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
								
							@ -142,3 +142,47 @@ jobs:
 | 
			
		||||
        name: Dump context
 | 
			
		||||
        if: always()
 | 
			
		||||
        uses: crazy-max/ghaction-dump-context@v1
 | 
			
		||||
 | 
			
		||||
  github-cache:
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    steps:
 | 
			
		||||
      -
 | 
			
		||||
        name: Checkout
 | 
			
		||||
        uses: actions/checkout@v2.3.1
 | 
			
		||||
      -
 | 
			
		||||
        name: Set up QEMU
 | 
			
		||||
        uses: ./setup-qemu/ # change to docker/setup-qemu-action@master
 | 
			
		||||
        with:
 | 
			
		||||
          platforms: all
 | 
			
		||||
      -
 | 
			
		||||
        name: Set up Docker Buildx
 | 
			
		||||
        id: buildx
 | 
			
		||||
        uses: ./setup-buildx/ # change to docker/setup-buildx-action@master
 | 
			
		||||
      -
 | 
			
		||||
        name: Build 1
 | 
			
		||||
        uses: ./
 | 
			
		||||
        with:
 | 
			
		||||
          context: ./test
 | 
			
		||||
          file: ./test/Dockerfile-multi-golang
 | 
			
		||||
          builder: ${{ steps.buildx.outputs.name }}
 | 
			
		||||
          platforms: linux/amd64,linux/arm64,linux/386
 | 
			
		||||
          cache-github: true
 | 
			
		||||
          tags: |
 | 
			
		||||
            localhost:5000/name/app:latest
 | 
			
		||||
            localhost:5000/name/app:1.0.0
 | 
			
		||||
      -
 | 
			
		||||
        name: Build 2
 | 
			
		||||
        uses: ./
 | 
			
		||||
        with:
 | 
			
		||||
          context: ./test
 | 
			
		||||
          file: ./test/Dockerfile-multi-golang
 | 
			
		||||
          builder: ${{ steps.buildx.outputs.name }}
 | 
			
		||||
          platforms: linux/amd64,linux/arm64,linux/386
 | 
			
		||||
          cache-github: true
 | 
			
		||||
          tags: |
 | 
			
		||||
            localhost:5000/name/app:latest
 | 
			
		||||
            localhost:5000/name/app:1.0.0
 | 
			
		||||
      -
 | 
			
		||||
        name: Dump context
 | 
			
		||||
        if: always()
 | 
			
		||||
        uses: crazy-max/ghaction-dump-context@v1
 | 
			
		||||
 | 
			
		||||
@ -60,6 +60,10 @@ inputs:
 | 
			
		||||
  cache-to:
 | 
			
		||||
    description: "Newline-delimited list of cache export destinations for buildx (eg. user/app:cache, type=local,dest=path/to/dir)"
 | 
			
		||||
    required: false
 | 
			
		||||
  cache-github:
 | 
			
		||||
    description: "Export all the layers of all intermediate steps in the GitHub cache"
 | 
			
		||||
    required: false
 | 
			
		||||
    default: 'false'
 | 
			
		||||
  bake:
 | 
			
		||||
    description: "Use bake as the high-level build command"
 | 
			
		||||
    required: false
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										54111
									
								
								dist/index.js
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										54111
									
								
								dist/index.js
									
									
									
										generated
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							@ -25,10 +25,11 @@
 | 
			
		||||
  ],
 | 
			
		||||
  "license": "Apache-2.0",
 | 
			
		||||
  "dependencies": {
 | 
			
		||||
    "@actions/cache": "^1.0.2",
 | 
			
		||||
    "@actions/core": "^1.2.4",
 | 
			
		||||
    "@actions/exec": "^1.0.4",
 | 
			
		||||
    "@actions/tool-cache": "^1.5.5",
 | 
			
		||||
    "git-url-parse": "^11.1.3"
 | 
			
		||||
    "git-url-parse": "^11.1.3",
 | 
			
		||||
    "md5": "^2.3.0"
 | 
			
		||||
  },
 | 
			
		||||
  "devDependencies": {
 | 
			
		||||
    "@types/git-url-parse": "^9.0.0",
 | 
			
		||||
 | 
			
		||||
@ -18,6 +18,7 @@ export interface Inputs {
 | 
			
		||||
  outputs: string[];
 | 
			
		||||
  cacheFrom: string[];
 | 
			
		||||
  cacheTo: string[];
 | 
			
		||||
  cacheGithub: boolean;
 | 
			
		||||
  bake: boolean;
 | 
			
		||||
  bakeFiles: string[];
 | 
			
		||||
  bakeTargets: string[];
 | 
			
		||||
@ -41,6 +42,7 @@ export async function getInputs(): Promise<Inputs> {
 | 
			
		||||
    outputs: await getInputList('outputs'),
 | 
			
		||||
    cacheFrom: await getInputList('cache-from'),
 | 
			
		||||
    cacheTo: await getInputList('cache-to'),
 | 
			
		||||
    cacheGithub: /true/i.test(core.getInput('cache-github')),
 | 
			
		||||
    bake: /true/i.test(core.getInput('bake')),
 | 
			
		||||
    bakeFiles: await getInputList('bake-files'),
 | 
			
		||||
    bakeTargets: await getInputList('bake-targets')
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										69
									
								
								src/github.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										69
									
								
								src/github.ts
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,69 @@
 | 
			
		||||
import * as os from 'os';
 | 
			
		||||
import * as path from 'path';
 | 
			
		||||
import md5 from 'md5';
 | 
			
		||||
import {Inputs} from './context';
 | 
			
		||||
import * as stateHelper from './state-helper';
 | 
			
		||||
import * as cache from '@actions/cache';
 | 
			
		||||
import * as core from '@actions/core';
 | 
			
		||||
 | 
			
		||||
const cachePath = path.join(os.tmpdir(), 'docker-build-push');
 | 
			
		||||
 | 
			
		||||
export async function restoreCache(inputs: Inputs): Promise<Inputs> {
 | 
			
		||||
  if (inputs.bake || !inputs.cacheGithub) {
 | 
			
		||||
    return inputs;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  const primaryKey = `${process.env.RUNNER_OS}-docker-build-push-${md5(inputs.context)}`;
 | 
			
		||||
  stateHelper.setCachePrimaryKey(primaryKey);
 | 
			
		||||
 | 
			
		||||
  try {
 | 
			
		||||
    const cacheKey = await cache.restoreCache([cachePath], primaryKey);
 | 
			
		||||
 | 
			
		||||
    if (!cacheKey) {
 | 
			
		||||
      core.info(`GitHub Cache not found for key: ${primaryKey}`);
 | 
			
		||||
    } else {
 | 
			
		||||
      inputs.cacheFrom = [`type=local,src=${cachePath}`];
 | 
			
		||||
      stateHelper.setCacheMatchedKey(cacheKey);
 | 
			
		||||
      core.info(`GitHub Cache restored from key: ${cacheKey}`);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    inputs.cacheTo = [`type=local,dest=${cachePath}`];
 | 
			
		||||
    return inputs;
 | 
			
		||||
  } catch (err) {
 | 
			
		||||
    if (err.name === cache.ValidationError.name) {
 | 
			
		||||
      throw err;
 | 
			
		||||
    } else {
 | 
			
		||||
      core.warning(err.message);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return inputs;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export async function saveCache(inputs: Inputs): Promise<void> {
 | 
			
		||||
  if (inputs.bake || !inputs.cacheGithub) {
 | 
			
		||||
    return;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (!stateHelper.cachePrimaryKey) {
 | 
			
		||||
    core.warning(`Error retrieving GitHub Cache key from state.`);
 | 
			
		||||
    return;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (stateHelper.isExactKeyMatch(stateHelper.cachePrimaryKey, stateHelper.cacheMatchedKey)) {
 | 
			
		||||
    core.info(`GitHub Cache hit occurred on the primary key ${stateHelper.cachePrimaryKey}, not saving cache.`);
 | 
			
		||||
    return;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  try {
 | 
			
		||||
    await cache.saveCache([cachePath], stateHelper.cachePrimaryKey);
 | 
			
		||||
  } catch (err) {
 | 
			
		||||
    if (err.name === cache.ValidationError.name) {
 | 
			
		||||
      throw err;
 | 
			
		||||
    } else if (err.name === cache.ReserveCacheError.name) {
 | 
			
		||||
      core.info(err.message);
 | 
			
		||||
    } else {
 | 
			
		||||
      core.warning(err.message);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										15
									
								
								src/main.ts
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								src/main.ts
									
									
									
									
									
								
							@ -1,6 +1,8 @@
 | 
			
		||||
import * as os from 'os';
 | 
			
		||||
import * as buildx from './buildx';
 | 
			
		||||
import {Inputs, getInputs, getArgs} from './context';
 | 
			
		||||
import * as github from './github';
 | 
			
		||||
import * as stateHelper from './state-helper';
 | 
			
		||||
import * as core from '@actions/core';
 | 
			
		||||
import * as exec from '@actions/exec';
 | 
			
		||||
 | 
			
		||||
@ -16,7 +18,7 @@ async function run(): Promise<void> {
 | 
			
		||||
      return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const inputs: Inputs = await getInputs();
 | 
			
		||||
    let inputs: Inputs = await getInputs();
 | 
			
		||||
    const args: string[] = await getArgs(inputs);
 | 
			
		||||
 | 
			
		||||
    if (inputs.builder) {
 | 
			
		||||
@ -24,6 +26,8 @@ async function run(): Promise<void> {
 | 
			
		||||
      await buildx.use(inputs.builder);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    inputs = await github.restoreCache(inputs);
 | 
			
		||||
 | 
			
		||||
    core.info(`🏃 Starting build...`);
 | 
			
		||||
    await exec.exec('docker', args);
 | 
			
		||||
  } catch (error) {
 | 
			
		||||
@ -31,4 +35,13 @@ async function run(): Promise<void> {
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
async function post(): Promise<void> {
 | 
			
		||||
  const inputs: Inputs = await getInputs();
 | 
			
		||||
  await github.saveCache(inputs);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
if (!stateHelper.IsPost) {
 | 
			
		||||
  run();
 | 
			
		||||
} else {
 | 
			
		||||
  post();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										4
									
								
								src/md5.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								src/md5.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,4 @@
 | 
			
		||||
declare module 'md5' {
 | 
			
		||||
  function md5(data: string, options?: {encoding: string; asBytes: boolean; asString: boolean}): string;
 | 
			
		||||
  export = md5;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										26
									
								
								src/state-helper.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								src/state-helper.ts
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,26 @@
 | 
			
		||||
import * as core from '@actions/core';
 | 
			
		||||
 | 
			
		||||
export const IsPost = !!process.env['STATE_isPost'];
 | 
			
		||||
export const cachePrimaryKey = process.env['STATE_cachePrimaryKey'] || '';
 | 
			
		||||
export const cacheMatchedKey = process.env['STATE_cacheMatchedKey'] || '';
 | 
			
		||||
 | 
			
		||||
export function setCachePrimaryKey(cachePrimaryKey: string) {
 | 
			
		||||
  core.saveState('cachePrimaryKey', cachePrimaryKey);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function setCacheMatchedKey(cacheMatchedKey: string) {
 | 
			
		||||
  core.saveState('cacheMatchedKey', cacheMatchedKey);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function isExactKeyMatch(key: string, cacheKey?: string): boolean {
 | 
			
		||||
  return !!(
 | 
			
		||||
    cacheKey &&
 | 
			
		||||
    cacheKey.localeCompare(key, undefined, {
 | 
			
		||||
      sensitivity: 'accent'
 | 
			
		||||
    }) === 0
 | 
			
		||||
  );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
if (!IsPost) {
 | 
			
		||||
  core.saveState('isPost', 'true');
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										393
									
								
								yarn.lock
									
									
									
									
									
								
							
							
						
						
									
										393
									
								
								yarn.lock
									
									
									
									
									
								
							@ -2,18 +2,41 @@
 | 
			
		||||
# yarn lockfile v1
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
"@actions/core@^1.2.3", "@actions/core@^1.2.4":
 | 
			
		||||
"@actions/cache@^1.0.2":
 | 
			
		||||
  version "1.0.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@actions/cache/-/cache-1.0.2.tgz#a223dcc752c7f988016d28ee7232f930f85cec61"
 | 
			
		||||
  integrity sha512-CzAseaJ4cKmOI58EIWUb/LfeYdM7Y25s39OEMtWAhEPrPPzrbSEjGHCLaYjJ0V8C4iojo8vBYh5B3OIJ37EiJw==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "@actions/core" "^1.2.4"
 | 
			
		||||
    "@actions/exec" "^1.0.1"
 | 
			
		||||
    "@actions/glob" "^0.1.0"
 | 
			
		||||
    "@actions/http-client" "^1.0.8"
 | 
			
		||||
    "@actions/io" "^1.0.1"
 | 
			
		||||
    "@azure/ms-rest-js" "^2.0.7"
 | 
			
		||||
    "@azure/storage-blob" "^12.1.2"
 | 
			
		||||
    semver "^6.1.0"
 | 
			
		||||
    uuid "^3.3.3"
 | 
			
		||||
 | 
			
		||||
"@actions/core@^1.2.0", "@actions/core@^1.2.4":
 | 
			
		||||
  version "1.2.4"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@actions/core/-/core-1.2.4.tgz#96179dbf9f8d951dd74b40a0dbd5c22555d186ab"
 | 
			
		||||
  integrity sha512-YJCEq8BE3CdN8+7HPZ/4DxJjk/OkZV2FFIf+DlZTC/4iBlzYCD5yjRR6eiOS5llO11zbRltIRuKAjMKaWTE6cg==
 | 
			
		||||
 | 
			
		||||
"@actions/exec@^1.0.0", "@actions/exec@^1.0.4":
 | 
			
		||||
"@actions/exec@^1.0.1", "@actions/exec@^1.0.4":
 | 
			
		||||
  version "1.0.4"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@actions/exec/-/exec-1.0.4.tgz#99d75310e62e59fc37d2ee6dcff6d4bffadd3a5d"
 | 
			
		||||
  integrity sha512-4DPChWow9yc9W3WqEbUj8Nr86xkpyE29ZzWjXucHItclLbEW6jr80Zx4nqv18QL6KK65+cifiQZXvnqgTV6oHw==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "@actions/io" "^1.0.1"
 | 
			
		||||
 | 
			
		||||
"@actions/glob@^0.1.0":
 | 
			
		||||
  version "0.1.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@actions/glob/-/glob-0.1.0.tgz#969ceda7e089c39343bca3306329f41799732e40"
 | 
			
		||||
  integrity sha512-lx8SzyQ2FE9+UUvjqY1f28QbTJv+w8qP7kHHbfQRhphrlcx0Mdmm1tZdGJzfxv1jxREa/sLW4Oy8CbGQKCJySA==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "@actions/core" "^1.2.0"
 | 
			
		||||
    minimatch "^3.0.4"
 | 
			
		||||
 | 
			
		||||
"@actions/http-client@^1.0.8":
 | 
			
		||||
  version "1.0.8"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@actions/http-client/-/http-client-1.0.8.tgz#8bd76e8eca89dc8bcf619aa128eba85f7a39af45"
 | 
			
		||||
@ -26,33 +49,218 @@
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@actions/io/-/io-1.0.2.tgz#2f614b6e69ce14d191180451eb38e6576a6e6b27"
 | 
			
		||||
  integrity sha512-J8KuFqVPr3p6U8W93DOXlXW6zFvrQAJANdS+vw0YhusLIq+bszW8zmK2Fh1C2kDPX8FMvwIl1OUcFgvJoXLbAg==
 | 
			
		||||
 | 
			
		||||
"@actions/tool-cache@^1.5.5":
 | 
			
		||||
  version "1.6.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@actions/tool-cache/-/tool-cache-1.6.0.tgz#5b425db2d642df65dd0d6bcec0d84dcdbca3f80d"
 | 
			
		||||
  integrity sha512-+fyEBImPD3m5I0o6DflCO0NHY180LPoX8Lo6y4Iez+V17kO8kfkH0VHxb8mUdmD6hn9dWA9Ch1JA20fXoIYUeQ==
 | 
			
		||||
"@azure/abort-controller@^1.0.0":
 | 
			
		||||
  version "1.0.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@azure/abort-controller/-/abort-controller-1.0.1.tgz#8510935b25ac051e58920300e9d7b511ca6e656a"
 | 
			
		||||
  integrity sha512-wP2Jw6uPp8DEDy0n4KNidvwzDjyVV2xnycEIq7nPzj1rHyb/r+t3OPeNT1INZePP2wy5ZqlwyuyOMTi0ePyY1A==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "@actions/core" "^1.2.3"
 | 
			
		||||
    "@actions/exec" "^1.0.0"
 | 
			
		||||
    "@actions/http-client" "^1.0.8"
 | 
			
		||||
    "@actions/io" "^1.0.1"
 | 
			
		||||
    semver "^6.1.0"
 | 
			
		||||
    tslib "^1.9.3"
 | 
			
		||||
 | 
			
		||||
"@azure/core-asynciterator-polyfill@^1.0.0":
 | 
			
		||||
  version "1.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@azure/core-asynciterator-polyfill/-/core-asynciterator-polyfill-1.0.0.tgz#dcccebb88406e5c76e0e1d52e8cc4c43a68b3ee7"
 | 
			
		||||
  integrity sha512-kmv8CGrPfN9SwMwrkiBK9VTQYxdFQEGe0BmQk+M8io56P9KNzpAxcWE/1fxJj7uouwN4kXF0BHW8DNlgx+wtCg==
 | 
			
		||||
 | 
			
		||||
"@azure/core-auth@^1.1.3":
 | 
			
		||||
  version "1.1.3"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@azure/core-auth/-/core-auth-1.1.3.tgz#94e7bbc207010e7a2fdba61565443e4e1cf1e131"
 | 
			
		||||
  integrity sha512-A4xigW0YZZpkj1zK7dKuzbBpGwnhEcRk6WWuIshdHC32raR3EQ1j6VA9XZqE+RFsUgH6OAmIK5BWIz+mZjnd6Q==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "@azure/abort-controller" "^1.0.0"
 | 
			
		||||
    "@azure/core-tracing" "1.0.0-preview.8"
 | 
			
		||||
    "@opentelemetry/api" "^0.6.1"
 | 
			
		||||
    tslib "^2.0.0"
 | 
			
		||||
 | 
			
		||||
"@azure/core-http@^1.1.1":
 | 
			
		||||
  version "1.1.6"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@azure/core-http/-/core-http-1.1.6.tgz#9d76bc569c9907e3224bd09c09b4ac08bde9faf8"
 | 
			
		||||
  integrity sha512-/C+qNzhwlLKt0F6SjaBEyY2pwZvwL2LviyS5PHlCh77qWuTF1sETmYAINM88BCN+kke+UlECK4YOQaAjJwyHvQ==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "@azure/abort-controller" "^1.0.0"
 | 
			
		||||
    "@azure/core-auth" "^1.1.3"
 | 
			
		||||
    "@azure/core-tracing" "1.0.0-preview.9"
 | 
			
		||||
    "@azure/logger" "^1.0.0"
 | 
			
		||||
    "@opentelemetry/api" "^0.10.2"
 | 
			
		||||
    "@types/node-fetch" "^2.5.0"
 | 
			
		||||
    "@types/tunnel" "^0.0.1"
 | 
			
		||||
    form-data "^3.0.0"
 | 
			
		||||
    node-fetch "^2.6.0"
 | 
			
		||||
    process "^0.11.10"
 | 
			
		||||
    tough-cookie "^4.0.0"
 | 
			
		||||
    tslib "^2.0.0"
 | 
			
		||||
    tunnel "^0.0.6"
 | 
			
		||||
    uuid "^8.1.0"
 | 
			
		||||
    xml2js "^0.4.19"
 | 
			
		||||
 | 
			
		||||
"@azure/core-lro@^1.0.2":
 | 
			
		||||
  version "1.0.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@azure/core-lro/-/core-lro-1.0.2.tgz#b7b51ff7b84910b7eb152a706b0531d020864f31"
 | 
			
		||||
  integrity sha512-Yr0JD7GKryOmbcb5wHCQoQ4KCcH5QJWRNorofid+UvudLaxnbCfvKh/cUfQsGUqRjO9L/Bw4X7FP824DcHdMxw==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "@azure/abort-controller" "^1.0.0"
 | 
			
		||||
    "@azure/core-http" "^1.1.1"
 | 
			
		||||
    events "^3.0.0"
 | 
			
		||||
    tslib "^1.10.0"
 | 
			
		||||
 | 
			
		||||
"@azure/core-paging@^1.1.1":
 | 
			
		||||
  version "1.1.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@azure/core-paging/-/core-paging-1.1.1.tgz#9639d2d5b6631d481d81040504e0e26c003f47b1"
 | 
			
		||||
  integrity sha512-hqEJBEGKan4YdOaL9ZG/GRG6PXaFd/Wb3SSjQW4LWotZzgl6xqG00h6wmkrpd2NNkbBkD1erLHBO3lPHApv+iQ==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "@azure/core-asynciterator-polyfill" "^1.0.0"
 | 
			
		||||
 | 
			
		||||
"@azure/core-tracing@1.0.0-preview.8":
 | 
			
		||||
  version "1.0.0-preview.8"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@azure/core-tracing/-/core-tracing-1.0.0-preview.8.tgz#1e0ff857e855edb774ffd33476003c27b5bb2705"
 | 
			
		||||
  integrity sha512-ZKUpCd7Dlyfn7bdc+/zC/sf0aRIaNQMDuSj2RhYRFe3p70hVAnYGp3TX4cnG2yoEALp/LTj/XnZGQ8Xzf6Ja/Q==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "@opencensus/web-types" "0.0.7"
 | 
			
		||||
    "@opentelemetry/api" "^0.6.1"
 | 
			
		||||
    tslib "^1.10.0"
 | 
			
		||||
 | 
			
		||||
"@azure/core-tracing@1.0.0-preview.9":
 | 
			
		||||
  version "1.0.0-preview.9"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@azure/core-tracing/-/core-tracing-1.0.0-preview.9.tgz#84f3b85572013f9d9b85e1e5d89787aa180787eb"
 | 
			
		||||
  integrity sha512-zczolCLJ5QG42AEPQ+Qg9SRYNUyB+yZ5dzof4YEc+dyWczO9G2sBqbAjLB7IqrsdHN2apkiB2oXeDKCsq48jug==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "@opencensus/web-types" "0.0.7"
 | 
			
		||||
    "@opentelemetry/api" "^0.10.2"
 | 
			
		||||
    tslib "^2.0.0"
 | 
			
		||||
 | 
			
		||||
"@azure/logger@^1.0.0":
 | 
			
		||||
  version "1.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@azure/logger/-/logger-1.0.0.tgz#48b371dfb34288c8797e5c104f6c4fb45bf1772c"
 | 
			
		||||
  integrity sha512-g2qLDgvmhyIxR3JVS8N67CyIOeFRKQlX/llxYJQr1OSGQqM3HTpVP8MjmjcEKbL/OIt2N9C9UFaNQuKOw1laOA==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    tslib "^1.9.3"
 | 
			
		||||
 | 
			
		||||
"@azure/ms-rest-js@^2.0.7":
 | 
			
		||||
  version "2.0.8"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@azure/ms-rest-js/-/ms-rest-js-2.0.8.tgz#f84304fba29e699fc7a391ce47af2824af4f585e"
 | 
			
		||||
  integrity sha512-PO4pnYaF66IAB/RWbhrTprGyhOzDzsgcbT7z8k3O38JKlwifbrhW+8M0fzx0ScZnaacP8rZyBazYMUF9P12c0g==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "@types/node-fetch" "^2.3.7"
 | 
			
		||||
    "@types/tunnel" "0.0.1"
 | 
			
		||||
    abort-controller "^3.0.0"
 | 
			
		||||
    form-data "^2.5.0"
 | 
			
		||||
    node-fetch "^2.6.0"
 | 
			
		||||
    tough-cookie "^3.0.1"
 | 
			
		||||
    tslib "^1.10.0"
 | 
			
		||||
    tunnel "0.0.6"
 | 
			
		||||
    uuid "^3.3.2"
 | 
			
		||||
    xml2js "^0.4.19"
 | 
			
		||||
 | 
			
		||||
"@azure/storage-blob@^12.1.2":
 | 
			
		||||
  version "12.1.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@azure/storage-blob/-/storage-blob-12.1.2.tgz#046d146a3bd2622b61d6bdc5708955893a5b4f04"
 | 
			
		||||
  integrity sha512-PCHgG4r3xLt5FaFj+uiMqrRpuzD3TD17cvxCeA1JKK2bJEf8b07H3QRLQVf0DM1MmvYY8FgQagkWZTp+jr9yew==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "@azure/abort-controller" "^1.0.0"
 | 
			
		||||
    "@azure/core-http" "^1.1.1"
 | 
			
		||||
    "@azure/core-lro" "^1.0.2"
 | 
			
		||||
    "@azure/core-paging" "^1.1.1"
 | 
			
		||||
    "@azure/core-tracing" "1.0.0-preview.8"
 | 
			
		||||
    "@azure/logger" "^1.0.0"
 | 
			
		||||
    "@opentelemetry/api" "^0.6.1"
 | 
			
		||||
    events "^3.0.0"
 | 
			
		||||
    tslib "^1.10.0"
 | 
			
		||||
 | 
			
		||||
"@opencensus/web-types@0.0.7":
 | 
			
		||||
  version "0.0.7"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@opencensus/web-types/-/web-types-0.0.7.tgz#4426de1fe5aa8f624db395d2152b902874f0570a"
 | 
			
		||||
  integrity sha512-xB+w7ZDAu3YBzqH44rCmG9/RlrOmFuDPt/bpf17eJr8eZSrLt7nc7LnWdxM9Mmoj/YKMHpxRg28txu3TcpiL+g==
 | 
			
		||||
 | 
			
		||||
"@opentelemetry/api@^0.10.2":
 | 
			
		||||
  version "0.10.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-0.10.2.tgz#9647b881f3e1654089ff7ea59d587b2d35060654"
 | 
			
		||||
  integrity sha512-GtpMGd6vkzDMYcpu2t9LlhEgMy/SzBwRnz48EejlRArYqZzqSzAsKmegUK7zHgl+EOIaK9mKHhnRaQu3qw20cA==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "@opentelemetry/context-base" "^0.10.2"
 | 
			
		||||
 | 
			
		||||
"@opentelemetry/api@^0.6.1":
 | 
			
		||||
  version "0.6.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-0.6.1.tgz#a00b504801f408230b9ad719716fe91ad888c642"
 | 
			
		||||
  integrity sha512-wpufGZa7tTxw7eAsjXJtiyIQ42IWQdX9iUQp7ACJcKo1hCtuhLU+K2Nv1U6oRwT1oAlZTE6m4CgWKZBhOiau3Q==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "@opentelemetry/context-base" "^0.6.1"
 | 
			
		||||
 | 
			
		||||
"@opentelemetry/context-base@^0.10.2":
 | 
			
		||||
  version "0.10.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@opentelemetry/context-base/-/context-base-0.10.2.tgz#55bea904b2b91aa8a8675df9eaba5961bddb1def"
 | 
			
		||||
  integrity sha512-hZNKjKOYsckoOEgBziGMnBcX0M7EtstnCmwz5jZUOUYwlZ+/xxX6z3jPu1XVO2Jivk0eLfuP9GP+vFD49CMetw==
 | 
			
		||||
 | 
			
		||||
"@opentelemetry/context-base@^0.6.1":
 | 
			
		||||
  version "0.6.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@opentelemetry/context-base/-/context-base-0.6.1.tgz#b260e454ee4f9635ea024fc83be225e397f15363"
 | 
			
		||||
  integrity sha512-5bHhlTBBq82ti3qPT15TRxkYTFPPQWbnkkQkmHPtqiS1XcTB69cEKd3Jm7Cfi/vkPoyxapmePE9tyA7EzLt8SQ==
 | 
			
		||||
 | 
			
		||||
"@types/git-url-parse@^9.0.0":
 | 
			
		||||
  version "9.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@types/git-url-parse/-/git-url-parse-9.0.0.tgz#aac1315a44fa4ed5a52c3820f6c3c2fb79cbd12d"
 | 
			
		||||
  integrity sha512-kA2RxBT/r/ZuDDKwMl+vFWn1Z0lfm1/Ik6Qb91wnSzyzCDa/fkM8gIOq6ruB7xfr37n6Mj5dyivileUVKsidlg==
 | 
			
		||||
 | 
			
		||||
"@types/node@^14.0.14":
 | 
			
		||||
"@types/node-fetch@^2.3.7", "@types/node-fetch@^2.5.0":
 | 
			
		||||
  version "2.5.7"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.5.7.tgz#20a2afffa882ab04d44ca786449a276f9f6bbf3c"
 | 
			
		||||
  integrity sha512-o2WVNf5UhWRkxlf6eq+jMZDu7kjgpgJfl4xVNlvryc95O/6F2ld8ztKX+qu+Rjyet93WAWm5LjeX9H5FGkODvw==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "@types/node" "*"
 | 
			
		||||
    form-data "^3.0.0"
 | 
			
		||||
 | 
			
		||||
"@types/node@*", "@types/node@^14.0.14":
 | 
			
		||||
  version "14.0.27"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.27.tgz#a151873af5a5e851b51b3b065c9e63390a9e0eb1"
 | 
			
		||||
  integrity sha512-kVrqXhbclHNHGu9ztnAwSncIgJv/FaxmzXJvGXNdcCpV1b8u1/Mi6z6m0vwy0LzKeXFTPLH0NzwmoJ3fNCIq0g==
 | 
			
		||||
 | 
			
		||||
"@types/tunnel@0.0.1", "@types/tunnel@^0.0.1":
 | 
			
		||||
  version "0.0.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@types/tunnel/-/tunnel-0.0.1.tgz#0d72774768b73df26f25df9184273a42da72b19c"
 | 
			
		||||
  integrity sha512-AOqu6bQu5MSWwYvehMXLukFHnupHrpZ8nvgae5Ggie9UwzDR1CCwoXgSSWNZJuyOlCdfdsWMA5F2LlmvyoTv8A==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "@types/node" "*"
 | 
			
		||||
 | 
			
		||||
"@zeit/ncc@^0.22.3":
 | 
			
		||||
  version "0.22.3"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@zeit/ncc/-/ncc-0.22.3.tgz#fca6b86b4454ce7a7e1e7e755165ec06457f16cd"
 | 
			
		||||
  integrity sha512-jnCLpLXWuw/PAiJiVbLjA8WBC0IJQbFeUwF4I9M+23MvIxTxk5pD4Q8byQBSPmHQjz5aBoA7AKAElQxMpjrCLQ==
 | 
			
		||||
 | 
			
		||||
abort-controller@^3.0.0:
 | 
			
		||||
  version "3.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392"
 | 
			
		||||
  integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    event-target-shim "^5.0.0"
 | 
			
		||||
 | 
			
		||||
asynckit@^0.4.0:
 | 
			
		||||
  version "0.4.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
 | 
			
		||||
  integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
 | 
			
		||||
 | 
			
		||||
balanced-match@^1.0.0:
 | 
			
		||||
  version "1.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
 | 
			
		||||
  integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
 | 
			
		||||
 | 
			
		||||
brace-expansion@^1.1.7:
 | 
			
		||||
  version "1.1.11"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
 | 
			
		||||
  integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    balanced-match "^1.0.0"
 | 
			
		||||
    concat-map "0.0.1"
 | 
			
		||||
 | 
			
		||||
charenc@0.0.2:
 | 
			
		||||
  version "0.0.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667"
 | 
			
		||||
  integrity sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=
 | 
			
		||||
 | 
			
		||||
combined-stream@^1.0.6, combined-stream@^1.0.8:
 | 
			
		||||
  version "1.0.8"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
 | 
			
		||||
  integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    delayed-stream "~1.0.0"
 | 
			
		||||
 | 
			
		||||
commander@^2.19.0:
 | 
			
		||||
  version "2.20.3"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
 | 
			
		||||
@ -63,6 +271,21 @@ commandpost@^1.0.0:
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/commandpost/-/commandpost-1.4.0.tgz#89218012089dfc9b67a337ba162f15c88e0f1048"
 | 
			
		||||
  integrity sha512-aE2Y4MTFJ870NuB/+2z1cXBhSBBzRydVVjzhFC4gtenEhpnj15yu0qptWGJsO9YGrcPZ3ezX8AWb1VA391MKpQ==
 | 
			
		||||
 | 
			
		||||
concat-map@0.0.1:
 | 
			
		||||
  version "0.0.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
 | 
			
		||||
  integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
 | 
			
		||||
 | 
			
		||||
crypt@0.0.2:
 | 
			
		||||
  version "0.0.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b"
 | 
			
		||||
  integrity sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=
 | 
			
		||||
 | 
			
		||||
delayed-stream@~1.0.0:
 | 
			
		||||
  version "1.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
 | 
			
		||||
  integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=
 | 
			
		||||
 | 
			
		||||
editorconfig@^0.15.0:
 | 
			
		||||
  version "0.15.3"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/editorconfig/-/editorconfig-0.15.3.tgz#bef84c4e75fb8dcb0ce5cee8efd51c15999befc5"
 | 
			
		||||
@ -73,6 +296,34 @@ editorconfig@^0.15.0:
 | 
			
		||||
    semver "^5.6.0"
 | 
			
		||||
    sigmund "^1.0.1"
 | 
			
		||||
 | 
			
		||||
event-target-shim@^5.0.0:
 | 
			
		||||
  version "5.0.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789"
 | 
			
		||||
  integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==
 | 
			
		||||
 | 
			
		||||
events@^3.0.0:
 | 
			
		||||
  version "3.2.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/events/-/events-3.2.0.tgz#93b87c18f8efcd4202a461aec4dfc0556b639379"
 | 
			
		||||
  integrity sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==
 | 
			
		||||
 | 
			
		||||
form-data@^2.5.0:
 | 
			
		||||
  version "2.5.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.5.1.tgz#f2cbec57b5e59e23716e128fe44d4e5dd23895f4"
 | 
			
		||||
  integrity sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    asynckit "^0.4.0"
 | 
			
		||||
    combined-stream "^1.0.6"
 | 
			
		||||
    mime-types "^2.1.12"
 | 
			
		||||
 | 
			
		||||
form-data@^3.0.0:
 | 
			
		||||
  version "3.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.0.tgz#31b7e39c85f1355b7139ee0c647cf0de7f83c682"
 | 
			
		||||
  integrity sha512-CKMFDglpbMi6PyN+brwB9Q/GOw0eAnsrEZDgcsH5Krhz5Od/haKHAX0NmQfha2zPPz0JpWzA7GJHGSnvCRLWsg==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    asynckit "^0.4.0"
 | 
			
		||||
    combined-stream "^1.0.8"
 | 
			
		||||
    mime-types "^2.1.12"
 | 
			
		||||
 | 
			
		||||
git-up@^4.0.0:
 | 
			
		||||
  version "4.0.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/git-up/-/git-up-4.0.2.tgz#10c3d731051b366dc19d3df454bfca3f77913a7c"
 | 
			
		||||
@ -88,6 +339,16 @@ git-url-parse@^11.1.3:
 | 
			
		||||
  dependencies:
 | 
			
		||||
    git-up "^4.0.0"
 | 
			
		||||
 | 
			
		||||
ip-regex@^2.1.0:
 | 
			
		||||
  version "2.1.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9"
 | 
			
		||||
  integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=
 | 
			
		||||
 | 
			
		||||
is-buffer@~1.1.6:
 | 
			
		||||
  version "1.1.6"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
 | 
			
		||||
  integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
 | 
			
		||||
 | 
			
		||||
is-ssh@^1.3.0:
 | 
			
		||||
  version "1.3.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/is-ssh/-/is-ssh-1.3.2.tgz#a4b82ab63d73976fd8263cceee27f99a88bdae2b"
 | 
			
		||||
@ -103,6 +364,39 @@ lru-cache@^4.1.5:
 | 
			
		||||
    pseudomap "^1.0.2"
 | 
			
		||||
    yallist "^2.1.2"
 | 
			
		||||
 | 
			
		||||
md5@^2.3.0:
 | 
			
		||||
  version "2.3.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/md5/-/md5-2.3.0.tgz#c3da9a6aae3a30b46b7b0c349b87b110dc3bda4f"
 | 
			
		||||
  integrity sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    charenc "0.0.2"
 | 
			
		||||
    crypt "0.0.2"
 | 
			
		||||
    is-buffer "~1.1.6"
 | 
			
		||||
 | 
			
		||||
mime-db@1.44.0:
 | 
			
		||||
  version "1.44.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92"
 | 
			
		||||
  integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==
 | 
			
		||||
 | 
			
		||||
mime-types@^2.1.12:
 | 
			
		||||
  version "2.1.27"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f"
 | 
			
		||||
  integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    mime-db "1.44.0"
 | 
			
		||||
 | 
			
		||||
minimatch@^3.0.4:
 | 
			
		||||
  version "3.0.4"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
 | 
			
		||||
  integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    brace-expansion "^1.1.7"
 | 
			
		||||
 | 
			
		||||
node-fetch@^2.6.0:
 | 
			
		||||
  version "2.6.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd"
 | 
			
		||||
  integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==
 | 
			
		||||
 | 
			
		||||
normalize-url@^3.3.0:
 | 
			
		||||
  version "3.3.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559"
 | 
			
		||||
@ -131,6 +425,11 @@ prettier@^2.0.5:
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.0.5.tgz#d6d56282455243f2f92cc1716692c08aa31522d4"
 | 
			
		||||
  integrity sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg==
 | 
			
		||||
 | 
			
		||||
process@^0.11.10:
 | 
			
		||||
  version "0.11.10"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
 | 
			
		||||
  integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI=
 | 
			
		||||
 | 
			
		||||
protocols@^1.1.0, protocols@^1.4.0:
 | 
			
		||||
  version "1.4.8"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/protocols/-/protocols-1.4.8.tgz#48eea2d8f58d9644a4a32caae5d5db290a075ce8"
 | 
			
		||||
@ -141,6 +440,21 @@ pseudomap@^1.0.2:
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
 | 
			
		||||
  integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM=
 | 
			
		||||
 | 
			
		||||
psl@^1.1.28, psl@^1.1.33:
 | 
			
		||||
  version "1.8.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24"
 | 
			
		||||
  integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==
 | 
			
		||||
 | 
			
		||||
punycode@^2.1.1:
 | 
			
		||||
  version "2.1.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
 | 
			
		||||
  integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
 | 
			
		||||
 | 
			
		||||
sax@>=0.6.0:
 | 
			
		||||
  version "1.2.4"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
 | 
			
		||||
  integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
 | 
			
		||||
 | 
			
		||||
semver@^5.6.0:
 | 
			
		||||
  version "5.7.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
 | 
			
		||||
@ -156,7 +470,35 @@ sigmund@^1.0.1:
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590"
 | 
			
		||||
  integrity sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=
 | 
			
		||||
 | 
			
		||||
tunnel@0.0.6:
 | 
			
		||||
tough-cookie@^3.0.1:
 | 
			
		||||
  version "3.0.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-3.0.1.tgz#9df4f57e739c26930a018184887f4adb7dca73b2"
 | 
			
		||||
  integrity sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    ip-regex "^2.1.0"
 | 
			
		||||
    psl "^1.1.28"
 | 
			
		||||
    punycode "^2.1.1"
 | 
			
		||||
 | 
			
		||||
tough-cookie@^4.0.0:
 | 
			
		||||
  version "4.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4"
 | 
			
		||||
  integrity sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    psl "^1.1.33"
 | 
			
		||||
    punycode "^2.1.1"
 | 
			
		||||
    universalify "^0.1.2"
 | 
			
		||||
 | 
			
		||||
tslib@^1.10.0, tslib@^1.9.3:
 | 
			
		||||
  version "1.13.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043"
 | 
			
		||||
  integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==
 | 
			
		||||
 | 
			
		||||
tslib@^2.0.0:
 | 
			
		||||
  version "2.0.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.1.tgz#410eb0d113e5b6356490eec749603725b021b43e"
 | 
			
		||||
  integrity sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==
 | 
			
		||||
 | 
			
		||||
tunnel@0.0.6, tunnel@^0.0.6:
 | 
			
		||||
  version "0.0.6"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c"
 | 
			
		||||
  integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==
 | 
			
		||||
@ -174,11 +516,34 @@ typescript@^3.9.5:
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.7.tgz#98d600a5ebdc38f40cb277522f12dc800e9e25fa"
 | 
			
		||||
  integrity sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw==
 | 
			
		||||
 | 
			
		||||
uuid@^3.3.2:
 | 
			
		||||
universalify@^0.1.2:
 | 
			
		||||
  version "0.1.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
 | 
			
		||||
  integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==
 | 
			
		||||
 | 
			
		||||
uuid@^3.3.2, uuid@^3.3.3:
 | 
			
		||||
  version "3.4.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
 | 
			
		||||
  integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
 | 
			
		||||
 | 
			
		||||
uuid@^8.1.0:
 | 
			
		||||
  version "8.3.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.0.tgz#ab738085ca22dc9a8c92725e459b1d507df5d6ea"
 | 
			
		||||
  integrity sha512-fX6Z5o4m6XsXBdli9g7DtWgAx+osMsRRZFKma1mIUsLCz6vRvv+pz5VNbyu9UEDzpMWulZfvpgb/cmDXVulYFQ==
 | 
			
		||||
 | 
			
		||||
xml2js@^0.4.19:
 | 
			
		||||
  version "0.4.23"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.23.tgz#a0c69516752421eb2ac758ee4d4ccf58843eac66"
 | 
			
		||||
  integrity sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    sax ">=0.6.0"
 | 
			
		||||
    xmlbuilder "~11.0.0"
 | 
			
		||||
 | 
			
		||||
xmlbuilder@~11.0.0:
 | 
			
		||||
  version "11.0.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3"
 | 
			
		||||
  integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==
 | 
			
		||||
 | 
			
		||||
yallist@^2.1.2:
 | 
			
		||||
  version "2.1.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user