mirror of
				https://github.com/docker/setup-buildx-action.git
				synced 2025-10-31 01:20:09 +08:00 
			
		
		
		
	don't depend on the GitHub API to check release
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
This commit is contained in:
		
							parent
							
								
									0648fd6fd6
								
							
						
					
					
						commit
						39322d9057
					
				
							
								
								
									
										2
									
								
								.github/workflows/test.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/test.yml
									
									
									
									
										vendored
									
									
								
							| @ -30,8 +30,6 @@ jobs: | ||||
|         uses: docker/bake-action@v2 | ||||
|         with: | ||||
|           targets: test | ||||
|         env: | ||||
|           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||||
|       - | ||||
|         name: Upload coverage | ||||
|         uses: codecov/codecov-action@v3 | ||||
|  | ||||
							
								
								
									
										30
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										30
									
								
								README.md
									
									
									
									
									
								
							| @ -28,7 +28,6 @@ ___ | ||||
| * [Notes](#notes) | ||||
|   * [`nodes` output](#nodes-output) | ||||
|   * [BuildKit container logs](#buildkit-container-logs) | ||||
| * [Using on GHES](#using-on-ghes) | ||||
| * [Contributing](#contributing) | ||||
| 
 | ||||
| ## Usage | ||||
| @ -175,35 +174,6 @@ The following [official docker environment variables](https://docs.docker.com/en | ||||
| 
 | ||||
| See https://docs.docker.com/build/ci/github-actions/configure-builder/#buildkit-container-logs | ||||
| 
 | ||||
| ## Using on GHES | ||||
| 
 | ||||
| GitHub Runners come [pre-installed with Docker Buildx](https://github.com/actions/runner-images/blob/main/images/linux/Ubuntu2204-Readme.md) | ||||
| following your virtual environment. If you specify a version or `latest` of | ||||
| Docker Buildx in your workflow, the version will be downloaded from [GitHub Releases in `docker/buildx`](https://github.com/docker/buildx/releases) | ||||
| repository. These calls to `docker/buildx` are made via unauthenticated requests, | ||||
| which are limited to [60 requests per hour per IP](https://docs.github.com/en/rest/overview/resources-in-the-rest-api#rate-limiting). | ||||
| 
 | ||||
| If more requests are made within the time frame, then you will start to see | ||||
| rate-limit errors during downloading that looks like: | ||||
| 
 | ||||
| ``` | ||||
| ##[error]API rate limit exceeded for... | ||||
| ``` | ||||
| 
 | ||||
| To get a higher rate limit, you can [generate a personal access token on github.com](https://github.com/settings/tokens/new) | ||||
| and pass it as the `github_token` input for the action: | ||||
| 
 | ||||
| ```yaml | ||||
| uses: docker/setup-buildx-action@v2 | ||||
| with: | ||||
|   github_token: ${{ secrets.GH_DOTCOM_TOKEN }} | ||||
|   version: v0.10.1 | ||||
| ``` | ||||
| 
 | ||||
| If the runner is not able to access `github.com`, it will take the default one | ||||
| available on the GitHub Runner or runner's tool cache. See "[Setting up the tool cache on self-hosted runners without internet access](https://docs.github.com/en/enterprise-server/admin/github-actions/managing-access-to-actions-from-githubcom/setting-up-the-tool-cache-on-self-hosted-runners-without-internet-access)" | ||||
| for more information. | ||||
| 
 | ||||
| ## Contributing | ||||
| 
 | ||||
| Want to contribute? Awesome! You can find information about contributing to | ||||
|  | ||||
| @ -28,6 +28,34 @@ describe('isAvailable', () => { | ||||
|   }); | ||||
| }); | ||||
| 
 | ||||
| describe('getRelease', () => { | ||||
|   it('returns latest buildx GitHub release', async () => { | ||||
|     const release = await buildx.getRelease('latest'); | ||||
|     expect(release).not.toBeNull(); | ||||
|     expect(release?.tag_name).not.toEqual(''); | ||||
|   }); | ||||
| 
 | ||||
|   it('returns v0.10.1 buildx GitHub release', async () => { | ||||
|     const release = await buildx.getRelease('v0.10.1'); | ||||
|     expect(release).not.toBeNull(); | ||||
|     expect(release?.id).toEqual(90346950); | ||||
|     expect(release?.tag_name).toEqual('v0.10.1'); | ||||
|     expect(release?.html_url).toEqual('https://github.com/docker/buildx/releases/tag/v0.10.1'); | ||||
|   }); | ||||
| 
 | ||||
|   it('returns v0.2.2 buildx GitHub release', async () => { | ||||
|     const release = await buildx.getRelease('v0.2.2'); | ||||
|     expect(release).not.toBeNull(); | ||||
|     expect(release?.id).toEqual(17671545); | ||||
|     expect(release?.tag_name).toEqual('v0.2.2'); | ||||
|     expect(release?.html_url).toEqual('https://github.com/docker/buildx/releases/tag/v0.2.2'); | ||||
|   }); | ||||
| 
 | ||||
|   it('unknown release', async () => { | ||||
|     await expect(buildx.getRelease('foo')).rejects.toThrowError(new Error('Cannot find Buildx release foo in https://raw.githubusercontent.com/docker/buildx/master/.github/releases.json')); | ||||
|   }); | ||||
| }); | ||||
| 
 | ||||
| describe('isAvailable standalone', () => { | ||||
|   const execSpy = jest.spyOn(exec, 'getExecOutput'); | ||||
|   buildx.isAvailable(true); | ||||
| @ -221,7 +249,7 @@ describe('install', () => { | ||||
|   ])( | ||||
|     'acquires %p of buildx (standalone: %p)', | ||||
|     async (version, standalone) => { | ||||
|       const buildxBin = await buildx.install(version, process.env.GITHUB_TOKEN || '', tmpDir, standalone); | ||||
|       const buildxBin = await buildx.install(version, tmpDir, standalone); | ||||
|       expect(fs.existsSync(buildxBin)).toBe(true); | ||||
|     }, | ||||
|     100000 | ||||
|  | ||||
| @ -1,20 +0,0 @@ | ||||
| import {describe, expect, it} from '@jest/globals'; | ||||
| import * as github from '../src/github'; | ||||
| 
 | ||||
| describe('github', () => { | ||||
|   it('returns latest buildx GitHub release', async () => { | ||||
|     const release = await github.getLatestRelease(process.env.GITHUB_TOKEN || ''); | ||||
|     expect(release).not.toBeNull(); | ||||
|     expect(release?.tag_name).not.toEqual(''); | ||||
|   }); | ||||
| 
 | ||||
|   it('returns v0.2.2 buildx GitHub release', async () => { | ||||
|     const release = await github.getReleaseTag('v0.2.2', process.env.GITHUB_TOKEN || ''); | ||||
|     expect(release).not.toBeNull(); | ||||
|     expect(release?.tag_name).toEqual('v0.2.2'); | ||||
|   }); | ||||
| 
 | ||||
|   it('unknown release', async () => { | ||||
|     await expect(github.getReleaseTag('foo', process.env.GITHUB_TOKEN || '')).rejects.toThrowError(new Error('Cannot get release foo: HttpError: Not Found')); | ||||
|   }); | ||||
| }); | ||||
| @ -44,15 +44,6 @@ inputs: | ||||
|   append: | ||||
|     description: 'Append additional nodes to the builder' | ||||
|     required: false | ||||
|   github_token: | ||||
|     # https://github.com/actions/setup-go/blob/21459d0b7b1d63741429b748885bf5a4974593b4/action.yml#L12-L14 | ||||
|     description: > | ||||
|       Used to verifiy the Git tag exists on docker/buildx repo. Since there's a | ||||
|       default, this is typically not supplied by the user. When running this | ||||
|       action on github.com, the default value is sufficient. When running on | ||||
|       GHES, you can pass a personal access token for github.com if you are | ||||
|       experiencing rate limiting. | ||||
|     default: ${{ github.server_url == 'https://github.com' && github.token || '' }} | ||||
| 
 | ||||
| outputs: | ||||
|   name: | ||||
|  | ||||
| @ -72,8 +72,7 @@ RUN --mount=type=bind,target=.,rw \ | ||||
|   --mount=type=cache,target=/src/node_modules \ | ||||
|   --mount=type=bind,from=docker,source=/usr/local/bin/docker,target=/usr/bin/docker \ | ||||
|   --mount=type=bind,from=buildx,source=/buildx,target=/usr/libexec/docker/cli-plugins/docker-buildx \ | ||||
|   --mount=type=secret,id=GITHUB_TOKEN \ | ||||
|   GITHUB_TOKEN=$(cat /run/secrets/GITHUB_TOKEN) yarn run test --coverageDirectory=/tmp/coverage | ||||
|   yarn run test --coverageDirectory=/tmp/coverage | ||||
| 
 | ||||
| FROM scratch AS test-coverage | ||||
| COPY --from=test /tmp/coverage / | ||||
|  | ||||
| @ -50,5 +50,4 @@ target "test" { | ||||
|   dockerfile = "dev.Dockerfile" | ||||
|   target = "test-coverage" | ||||
|   output = ["./coverage"] | ||||
|   secret = ["id=GITHUB_TOKEN,env=GITHUB_TOKEN"] | ||||
| } | ||||
|  | ||||
| @ -29,7 +29,7 @@ | ||||
|   "dependencies": { | ||||
|     "@actions/core": "^1.10.0", | ||||
|     "@actions/exec": "^1.1.1", | ||||
|     "@actions/github": "^5.1.1", | ||||
|     "@actions/http-client": "^2.0.1", | ||||
|     "@actions/tool-cache": "^2.0.1", | ||||
|     "csv-parse": "^5.3.3", | ||||
|     "js-yaml": "^4.1.0", | ||||
|  | ||||
| @ -4,9 +4,9 @@ import * as semver from 'semver'; | ||||
| import * as util from 'util'; | ||||
| import * as context from './context'; | ||||
| import * as git from './git'; | ||||
| import * as github from './github'; | ||||
| import * as core from '@actions/core'; | ||||
| import * as exec from '@actions/exec'; | ||||
| import * as httpm from '@actions/http-client'; | ||||
| import * as tc from '@actions/tool-cache'; | ||||
| 
 | ||||
| export type Builder = { | ||||
| @ -25,6 +25,29 @@ export type Node = { | ||||
|   platforms?: string; | ||||
| }; | ||||
| 
 | ||||
| export interface GitHubRelease { | ||||
|   id: number; | ||||
|   tag_name: string; | ||||
|   html_url: string; | ||||
|   assets: Array<string>; | ||||
| } | ||||
| 
 | ||||
| export const getRelease = async (version: string): Promise<GitHubRelease> => { | ||||
|   const url = `https://raw.githubusercontent.com/docker/buildx/master/.github/releases.json`; | ||||
|   const http: httpm.HttpClient = new httpm.HttpClient('setup-buildx'); | ||||
|   const resp: httpm.HttpClientResponse = await http.get(url); | ||||
|   const body = await resp.readBody(); | ||||
|   const statusCode = resp.message.statusCode || 500; | ||||
|   if (statusCode >= 400) { | ||||
|     throw new Error(`Failed to get Buildx release ${version} from ${url} with status code ${statusCode}: ${body}`); | ||||
|   } | ||||
|   const releases = <Record<string, GitHubRelease>>JSON.parse(body); | ||||
|   if (!releases[version]) { | ||||
|     throw new Error(`Cannot find Buildx release ${version} in ${url}`); | ||||
|   } | ||||
|   return releases[version]; | ||||
| }; | ||||
| 
 | ||||
| export async function getConfigInline(s: string): Promise<string> { | ||||
|   return getConfig(s, false); | ||||
| } | ||||
| @ -237,13 +260,8 @@ export async function build(inputBuildRef: string, dest: string, standalone: boo | ||||
|   return setPlugin(toolPath, dest); | ||||
| } | ||||
| 
 | ||||
| export async function install(inputVersion: string, githubToken: string, dest: string, standalone: boolean): Promise<string> { | ||||
|   let release: github.Release; | ||||
|   if (inputVersion == 'latest') { | ||||
|     release = await github.getLatestRelease(githubToken); | ||||
|   } else { | ||||
|     release = await github.getReleaseTag(inputVersion, githubToken); | ||||
|   } | ||||
| export async function install(inputVersion: string, dest: string, standalone: boolean): Promise<string> { | ||||
|   const release: GitHubRelease = await getRelease(inputVersion); | ||||
|   core.debug(`Release ${release.tag_name} found`); | ||||
|   const version = release.tag_name.replace(/^v+|v+$/g, ''); | ||||
| 
 | ||||
|  | ||||
| @ -36,7 +36,6 @@ export interface Inputs { | ||||
|   config: string; | ||||
|   configInline: string; | ||||
|   append: string; | ||||
|   githubToken: string; | ||||
| } | ||||
| 
 | ||||
| export async function getInputs(): Promise<Inputs> { | ||||
| @ -52,8 +51,7 @@ export async function getInputs(): Promise<Inputs> { | ||||
|     endpoint: core.getInput('endpoint'), | ||||
|     config: core.getInput('config'), | ||||
|     configInline: core.getInput('config-inline'), | ||||
|     append: core.getInput('append'), | ||||
|     githubToken: core.getInput('github_token') | ||||
|     append: core.getInput('append') | ||||
|   }; | ||||
| } | ||||
| 
 | ||||
|  | ||||
| @ -1,41 +0,0 @@ | ||||
| import * as github from '@actions/github'; | ||||
| 
 | ||||
| export interface Release { | ||||
|   id: number; | ||||
|   tag_name: string; | ||||
| } | ||||
| 
 | ||||
| const [owner, repo] = 'docker/buildx'.split('/'); | ||||
| 
 | ||||
| export const getReleaseTag = async (tag: string, githubToken: string): Promise<Release> => { | ||||
|   return ( | ||||
|     await github | ||||
|       .getOctokit(githubToken, { | ||||
|         baseUrl: 'https://api.github.com' | ||||
|       }) | ||||
|       .rest.repos.getReleaseByTag({ | ||||
|         owner, | ||||
|         repo, | ||||
|         tag | ||||
|       }) | ||||
|       .catch(error => { | ||||
|         throw new Error(`Cannot get release ${tag}: ${error}`); | ||||
|       }) | ||||
|   ).data as Release; | ||||
| }; | ||||
| 
 | ||||
| export const getLatestRelease = async (githubToken: string): Promise<Release> => { | ||||
|   return ( | ||||
|     await github | ||||
|       .getOctokit(githubToken, { | ||||
|         baseUrl: 'https://api.github.com' | ||||
|       }) | ||||
|       .rest.repos.getLatestRelease({ | ||||
|         owner, | ||||
|         repo | ||||
|       }) | ||||
|       .catch(error => { | ||||
|         throw new Error(`Cannot get latest release: ${error}`); | ||||
|       }) | ||||
|   ).data as Release; | ||||
| }; | ||||
| @ -42,7 +42,7 @@ async function run(): Promise<void> { | ||||
|       core.endGroup(); | ||||
|     } else if (!(await buildx.isAvailable(standalone)) || inputs.version) { | ||||
|       core.startGroup(`Download and install buildx`); | ||||
|       await buildx.install(inputs.version || 'latest', inputs.githubToken, standalone ? context.tmpDir() : dockerConfigHome, standalone); | ||||
|       await buildx.install(inputs.version || 'latest', standalone ? context.tmpDir() : dockerConfigHome, standalone); | ||||
|       core.endGroup(); | ||||
|     } | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										143
									
								
								yarn.lock
									
									
									
									
									
								
							
							
						
						
									
										143
									
								
								yarn.lock
									
									
									
									
									
								
							| @ -17,16 +17,6 @@ | ||||
|   dependencies: | ||||
|     "@actions/io" "^1.0.1" | ||||
| 
 | ||||
| "@actions/github@^5.1.1": | ||||
|   version "5.1.1" | ||||
|   resolved "https://registry.yarnpkg.com/@actions/github/-/github-5.1.1.tgz#40b9b9e1323a5efcf4ff7dadd33d8ea51651bbcb" | ||||
|   integrity sha512-Nk59rMDoJaV+mHCOJPXuvB1zIbomlKS0dmSIqPGxd0enAXBnOfn4VWF+CGtRCwXZG9Epa54tZA7VIRlJDS8A6g== | ||||
|   dependencies: | ||||
|     "@actions/http-client" "^2.0.1" | ||||
|     "@octokit/core" "^3.6.0" | ||||
|     "@octokit/plugin-paginate-rest" "^2.17.0" | ||||
|     "@octokit/plugin-rest-endpoint-methods" "^5.13.0" | ||||
| 
 | ||||
| "@actions/http-client@^2.0.1": | ||||
|   version "2.0.1" | ||||
|   resolved "https://registry.yarnpkg.com/@actions/http-client/-/http-client-2.0.1.tgz#873f4ca98fe32f6839462a6f046332677322f99c" | ||||
| @ -811,92 +801,6 @@ | ||||
|     "@nodelib/fs.scandir" "2.1.5" | ||||
|     fastq "^1.6.0" | ||||
| 
 | ||||
| "@octokit/auth-token@^2.4.4": | ||||
|   version "2.5.0" | ||||
|   resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.5.0.tgz#27c37ea26c205f28443402477ffd261311f21e36" | ||||
|   integrity sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g== | ||||
|   dependencies: | ||||
|     "@octokit/types" "^6.0.3" | ||||
| 
 | ||||
| "@octokit/core@^3.6.0": | ||||
|   version "3.6.0" | ||||
|   resolved "https://registry.yarnpkg.com/@octokit/core/-/core-3.6.0.tgz#3376cb9f3008d9b3d110370d90e0a1fcd5fe6085" | ||||
|   integrity sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q== | ||||
|   dependencies: | ||||
|     "@octokit/auth-token" "^2.4.4" | ||||
|     "@octokit/graphql" "^4.5.8" | ||||
|     "@octokit/request" "^5.6.3" | ||||
|     "@octokit/request-error" "^2.0.5" | ||||
|     "@octokit/types" "^6.0.3" | ||||
|     before-after-hook "^2.2.0" | ||||
|     universal-user-agent "^6.0.0" | ||||
| 
 | ||||
| "@octokit/endpoint@^6.0.1": | ||||
|   version "6.0.12" | ||||
|   resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-6.0.12.tgz#3b4d47a4b0e79b1027fb8d75d4221928b2d05658" | ||||
|   integrity sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA== | ||||
|   dependencies: | ||||
|     "@octokit/types" "^6.0.3" | ||||
|     is-plain-object "^5.0.0" | ||||
|     universal-user-agent "^6.0.0" | ||||
| 
 | ||||
| "@octokit/graphql@^4.5.8": | ||||
|   version "4.8.0" | ||||
|   resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-4.8.0.tgz#664d9b11c0e12112cbf78e10f49a05959aa22cc3" | ||||
|   integrity sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg== | ||||
|   dependencies: | ||||
|     "@octokit/request" "^5.6.0" | ||||
|     "@octokit/types" "^6.0.3" | ||||
|     universal-user-agent "^6.0.0" | ||||
| 
 | ||||
| "@octokit/openapi-types@^12.11.0": | ||||
|   version "12.11.0" | ||||
|   resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-12.11.0.tgz#da5638d64f2b919bca89ce6602d059f1b52d3ef0" | ||||
|   integrity sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ== | ||||
| 
 | ||||
| "@octokit/plugin-paginate-rest@^2.17.0": | ||||
|   version "2.21.3" | ||||
|   resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.21.3.tgz#7f12532797775640dbb8224da577da7dc210c87e" | ||||
|   integrity sha512-aCZTEf0y2h3OLbrgKkrfFdjRL6eSOo8komneVQJnYecAxIej7Bafor2xhuDJOIFau4pk0i/P28/XgtbyPF0ZHw== | ||||
|   dependencies: | ||||
|     "@octokit/types" "^6.40.0" | ||||
| 
 | ||||
| "@octokit/plugin-rest-endpoint-methods@^5.13.0": | ||||
|   version "5.16.2" | ||||
|   resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.16.2.tgz#7ee8bf586df97dd6868cf68f641354e908c25342" | ||||
|   integrity sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw== | ||||
|   dependencies: | ||||
|     "@octokit/types" "^6.39.0" | ||||
|     deprecation "^2.3.1" | ||||
| 
 | ||||
| "@octokit/request-error@^2.0.5", "@octokit/request-error@^2.1.0": | ||||
|   version "2.1.0" | ||||
|   resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-2.1.0.tgz#9e150357831bfc788d13a4fd4b1913d60c74d677" | ||||
|   integrity sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg== | ||||
|   dependencies: | ||||
|     "@octokit/types" "^6.0.3" | ||||
|     deprecation "^2.0.0" | ||||
|     once "^1.4.0" | ||||
| 
 | ||||
| "@octokit/request@^5.6.0", "@octokit/request@^5.6.3": | ||||
|   version "5.6.3" | ||||
|   resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.6.3.tgz#19a022515a5bba965ac06c9d1334514eb50c48b0" | ||||
|   integrity sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A== | ||||
|   dependencies: | ||||
|     "@octokit/endpoint" "^6.0.1" | ||||
|     "@octokit/request-error" "^2.1.0" | ||||
|     "@octokit/types" "^6.16.1" | ||||
|     is-plain-object "^5.0.0" | ||||
|     node-fetch "^2.6.7" | ||||
|     universal-user-agent "^6.0.0" | ||||
| 
 | ||||
| "@octokit/types@^6.0.3", "@octokit/types@^6.16.1", "@octokit/types@^6.39.0", "@octokit/types@^6.40.0": | ||||
|   version "6.41.0" | ||||
|   resolved "https://registry.yarnpkg.com/@octokit/types/-/types-6.41.0.tgz#e58ef78d78596d2fb7df9c6259802464b5f84a04" | ||||
|   integrity sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg== | ||||
|   dependencies: | ||||
|     "@octokit/openapi-types" "^12.11.0" | ||||
| 
 | ||||
| "@sinonjs/commons@^1.7.0": | ||||
|   version "1.8.3" | ||||
|   resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d" | ||||
| @ -1330,11 +1234,6 @@ balanced-match@^1.0.0: | ||||
|   resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" | ||||
|   integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== | ||||
| 
 | ||||
| before-after-hook@^2.2.0: | ||||
|   version "2.2.3" | ||||
|   resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.3.tgz#c51e809c81a4e354084422b9b26bad88249c517c" | ||||
|   integrity sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ== | ||||
| 
 | ||||
| brace-expansion@^1.1.7: | ||||
|   version "1.1.11" | ||||
|   resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" | ||||
| @ -1609,11 +1508,6 @@ delayed-stream@~1.0.0: | ||||
|   resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" | ||||
|   integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= | ||||
| 
 | ||||
| deprecation@^2.0.0, deprecation@^2.3.1: | ||||
|   version "2.3.1" | ||||
|   resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" | ||||
|   integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== | ||||
| 
 | ||||
| detect-newline@^3.0.0: | ||||
|   version "3.1.0" | ||||
|   resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" | ||||
| @ -2205,11 +2099,6 @@ is-number@^7.0.0: | ||||
|   resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" | ||||
|   integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== | ||||
| 
 | ||||
| is-plain-object@^5.0.0: | ||||
|   version "5.0.0" | ||||
|   resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" | ||||
|   integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== | ||||
| 
 | ||||
| is-potential-custom-element-name@^1.0.1: | ||||
|   version "1.0.1" | ||||
|   resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" | ||||
| @ -2891,13 +2780,6 @@ natural-compare@^1.4.0: | ||||
|   resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" | ||||
|   integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= | ||||
| 
 | ||||
| node-fetch@^2.6.7: | ||||
|   version "2.6.8" | ||||
|   resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.8.tgz#a68d30b162bc1d8fd71a367e81b997e1f4d4937e" | ||||
|   integrity sha512-RZ6dBYuj8dRSfxpUSu+NsdF1dpPpluJxwOp+6IoDp/sH2QNDSvurYsAa+F1WxY2RjA1iP93xhcsUoYbF2XBqVg== | ||||
|   dependencies: | ||||
|     whatwg-url "^5.0.0" | ||||
| 
 | ||||
| node-int64@^0.4.0: | ||||
|   version "0.4.0" | ||||
|   resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" | ||||
| @ -2930,7 +2812,7 @@ nwsapi@^2.2.0: | ||||
|   resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" | ||||
|   integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== | ||||
| 
 | ||||
| once@^1.3.0, once@^1.4.0: | ||||
| once@^1.3.0: | ||||
|   version "1.4.0" | ||||
|   resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" | ||||
|   integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= | ||||
| @ -3423,11 +3305,6 @@ tr46@^2.1.0: | ||||
|   dependencies: | ||||
|     punycode "^2.1.1" | ||||
| 
 | ||||
| tr46@~0.0.3: | ||||
|   version "0.0.3" | ||||
|   resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" | ||||
|   integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== | ||||
| 
 | ||||
| ts-jest@^27.1.2: | ||||
|   version "27.1.3" | ||||
|   resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-27.1.3.tgz#1f723e7e74027c4da92c0ffbd73287e8af2b2957" | ||||
| @ -3519,11 +3396,6 @@ typescript@^4.4.4: | ||||
|   resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.2.tgz#fe12d2727b708f4eef40f51598b3398baa9611d4" | ||||
|   integrity sha512-HM/hFigTBHZhLXshn9sN37H085+hQGeJHJ/X7LpBWLID/fbc2acUMfU+lGD98X81sKP+pFa9f0DZmCwB9GnbAg== | ||||
| 
 | ||||
| universal-user-agent@^6.0.0: | ||||
|   version "6.0.0" | ||||
|   resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee" | ||||
|   integrity sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w== | ||||
| 
 | ||||
| universalify@^0.1.2: | ||||
|   version "0.1.2" | ||||
|   resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" | ||||
| @ -3591,11 +3463,6 @@ walker@^1.0.7: | ||||
|   dependencies: | ||||
|     makeerror "1.0.x" | ||||
| 
 | ||||
| webidl-conversions@^3.0.0: | ||||
|   version "3.0.1" | ||||
|   resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" | ||||
|   integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== | ||||
| 
 | ||||
| webidl-conversions@^5.0.0: | ||||
|   version "5.0.0" | ||||
|   resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" | ||||
| @ -3618,14 +3485,6 @@ whatwg-mimetype@^2.3.0: | ||||
|   resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" | ||||
|   integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== | ||||
| 
 | ||||
| whatwg-url@^5.0.0: | ||||
|   version "5.0.0" | ||||
|   resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" | ||||
|   integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== | ||||
|   dependencies: | ||||
|     tr46 "~0.0.3" | ||||
|     webidl-conversions "^3.0.0" | ||||
| 
 | ||||
| whatwg-url@^8.0.0, whatwg-url@^8.5.0: | ||||
|   version "8.6.0" | ||||
|   resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.6.0.tgz#27c0205a4902084b872aecb97cf0f2a7a3011f4c" | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 CrazyMax
						CrazyMax