You've already forked setup-dotnet
							
							
				mirror of
				https://github.com/actions/setup-dotnet.git
				synced 2025-10-31 07:16:21 +07:00 
			
		
		
		
	Bump braces from 3.0.2 to 3.0.3 (#533)
* Bump braces from 3.0.2 to 3.0.3 Bumps [braces](https://github.com/micromatch/braces) from 3.0.2 to 3.0.3. - [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md) - [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3) --- updated-dependencies: - dependency-name: braces dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> * Bump undici from 5.28.3 to 5.28.4 * update checkout from v3 to v4 * Update test proxy --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: HarithaVattikuti <73516759+HarithaVattikuti@users.noreply.github.com>
This commit is contained in:
		
							
								
								
									
										72
									
								
								.github/workflows/e2e-tests.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										72
									
								
								.github/workflows/e2e-tests.yml
									
									
									
									
										vendored
									
									
								
							| @ -17,10 +17,10 @@ jobs: | |||||||
|     strategy: |     strategy: | ||||||
|       fail-fast: false |       fail-fast: false | ||||||
|       matrix: |       matrix: | ||||||
|         operating-system: [ubuntu-latest, windows-latest, macOS-latest] |         operating-system: [ubuntu-latest, windows-latest, macos-13] | ||||||
|     steps: |     steps: | ||||||
|       - name: Checkout |       - name: Checkout | ||||||
|         uses: actions/checkout@v3 |         uses: actions/checkout@v4 | ||||||
|       - name: Clear toolcache |       - name: Clear toolcache | ||||||
|         shell: pwsh |         shell: pwsh | ||||||
|         run: __tests__/clear-toolcache.ps1 ${{ runner.os }} |         run: __tests__/clear-toolcache.ps1 ${{ runner.os }} | ||||||
| @ -40,10 +40,10 @@ jobs: | |||||||
|     strategy: |     strategy: | ||||||
|       fail-fast: false |       fail-fast: false | ||||||
|       matrix: |       matrix: | ||||||
|         operating-system: [ubuntu-latest, windows-latest, macOS-latest] |         operating-system: [ubuntu-latest, windows-latest, macos-13] | ||||||
|     steps: |     steps: | ||||||
|       - name: Checkout |       - name: Checkout | ||||||
|         uses: actions/checkout@v3 |         uses: actions/checkout@v4 | ||||||
|       - name: Clear toolcache |       - name: Clear toolcache | ||||||
|         shell: pwsh |         shell: pwsh | ||||||
|         run: __tests__/clear-toolcache.ps1 ${{ runner.os }} |         run: __tests__/clear-toolcache.ps1 ${{ runner.os }} | ||||||
| @ -69,10 +69,10 @@ jobs: | |||||||
|     strategy: |     strategy: | ||||||
|       fail-fast: false |       fail-fast: false | ||||||
|       matrix: |       matrix: | ||||||
|         operating-system: [ubuntu-latest, windows-latest, macOS-latest] |         operating-system: [ubuntu-latest, windows-latest, macos-13] | ||||||
|     steps: |     steps: | ||||||
|       - name: Checkout |       - name: Checkout | ||||||
|         uses: actions/checkout@v3 |         uses: actions/checkout@v4 | ||||||
|       - name: Clear toolcache |       - name: Clear toolcache | ||||||
|         shell: pwsh |         shell: pwsh | ||||||
|         run: __tests__/clear-toolcache.ps1 ${{ runner.os }} |         run: __tests__/clear-toolcache.ps1 ${{ runner.os }} | ||||||
| @ -94,10 +94,10 @@ jobs: | |||||||
|     strategy: |     strategy: | ||||||
|       fail-fast: false |       fail-fast: false | ||||||
|       matrix: |       matrix: | ||||||
|         operating-system: [ubuntu-latest, windows-latest, macOS-latest] |         operating-system: [ubuntu-latest, windows-latest, macos-13] | ||||||
|     steps: |     steps: | ||||||
|       - name: Checkout |       - name: Checkout | ||||||
|         uses: actions/checkout@v3 |         uses: actions/checkout@v4 | ||||||
|       - name: Clear toolcache |       - name: Clear toolcache | ||||||
|         shell: pwsh |         shell: pwsh | ||||||
|         run: __tests__/clear-toolcache.ps1 ${{ runner.os }} |         run: __tests__/clear-toolcache.ps1 ${{ runner.os }} | ||||||
| @ -114,10 +114,10 @@ jobs: | |||||||
|     strategy: |     strategy: | ||||||
|       fail-fast: false |       fail-fast: false | ||||||
|       matrix: |       matrix: | ||||||
|         operating-system: [ubuntu-latest, windows-latest, macOS-latest] |         operating-system: [ubuntu-latest, windows-latest, macos-13] | ||||||
|     steps: |     steps: | ||||||
|       - name: Checkout |       - name: Checkout | ||||||
|         uses: actions/checkout@v3 |         uses: actions/checkout@v4 | ||||||
|       - name: Clear toolcache |       - name: Clear toolcache | ||||||
|         shell: pwsh |         shell: pwsh | ||||||
|         run: __tests__/clear-toolcache.ps1 ${{ runner.os }} |         run: __tests__/clear-toolcache.ps1 ${{ runner.os }} | ||||||
| @ -138,10 +138,10 @@ jobs: | |||||||
|     strategy: |     strategy: | ||||||
|       fail-fast: false |       fail-fast: false | ||||||
|       matrix: |       matrix: | ||||||
|         operating-system: [ubuntu-latest, windows-latest, macOS-latest] |         operating-system: [ubuntu-latest, windows-latest, macos-13] | ||||||
|     steps: |     steps: | ||||||
|       - name: Checkout |       - name: Checkout | ||||||
|         uses: actions/checkout@v3 |         uses: actions/checkout@v4 | ||||||
|       - name: Clear toolcache |       - name: Clear toolcache | ||||||
|         shell: pwsh |         shell: pwsh | ||||||
|         run: __tests__/clear-toolcache.ps1 ${{ runner.os }} |         run: __tests__/clear-toolcache.ps1 ${{ runner.os }} | ||||||
| @ -159,10 +159,10 @@ jobs: | |||||||
|     strategy: |     strategy: | ||||||
|       fail-fast: false |       fail-fast: false | ||||||
|       matrix: |       matrix: | ||||||
|         operating-system: [ubuntu-latest, windows-latest, macOS-latest] |         operating-system: [ubuntu-latest, windows-latest, macos-13] | ||||||
|     steps: |     steps: | ||||||
|       - name: Checkout |       - name: Checkout | ||||||
|         uses: actions/checkout@v3 |         uses: actions/checkout@v4 | ||||||
|       - name: Clear toolcache |       - name: Clear toolcache | ||||||
|         shell: pwsh |         shell: pwsh | ||||||
|         run: __tests__/clear-toolcache.ps1 ${{ runner.os }} |         run: __tests__/clear-toolcache.ps1 ${{ runner.os }} | ||||||
| @ -183,10 +183,10 @@ jobs: | |||||||
|     strategy: |     strategy: | ||||||
|       fail-fast: false |       fail-fast: false | ||||||
|       matrix: |       matrix: | ||||||
|         operating-system: [ubuntu-latest, windows-latest, macOS-latest] |         operating-system: [ubuntu-latest, windows-latest, macos-13] | ||||||
|     steps: |     steps: | ||||||
|       - name: Checkout |       - name: Checkout | ||||||
|         uses: actions/checkout@v3 |         uses: actions/checkout@v4 | ||||||
|       - name: Clear toolcache |       - name: Clear toolcache | ||||||
|         shell: pwsh |         shell: pwsh | ||||||
|         run: __tests__/clear-toolcache.ps1 ${{ runner.os }} |         run: __tests__/clear-toolcache.ps1 ${{ runner.os }} | ||||||
| @ -209,10 +209,10 @@ jobs: | |||||||
|     strategy: |     strategy: | ||||||
|       fail-fast: false |       fail-fast: false | ||||||
|       matrix: |       matrix: | ||||||
|         operating-system: [ubuntu-latest, windows-latest, macOS-latest] |         operating-system: [ubuntu-latest, windows-latest, macos-13] | ||||||
|     steps: |     steps: | ||||||
|       - name: Checkout |       - name: Checkout | ||||||
|         uses: actions/checkout@v3 |         uses: actions/checkout@v4 | ||||||
|       - name: Clear toolcache |       - name: Clear toolcache | ||||||
|         shell: pwsh |         shell: pwsh | ||||||
|         run: __tests__/clear-toolcache.ps1 ${{ runner.os }} |         run: __tests__/clear-toolcache.ps1 ${{ runner.os }} | ||||||
| @ -234,10 +234,10 @@ jobs: | |||||||
|     strategy: |     strategy: | ||||||
|       fail-fast: false |       fail-fast: false | ||||||
|       matrix: |       matrix: | ||||||
|         operating-system: [ubuntu-latest, windows-latest, macOS-latest] |         operating-system: [ubuntu-latest, windows-latest, macos-13] | ||||||
|     steps: |     steps: | ||||||
|       - name: Checkout |       - name: Checkout | ||||||
|         uses: actions/checkout@v3 |         uses: actions/checkout@v4 | ||||||
|       - name: Clear toolcache |       - name: Clear toolcache | ||||||
|         shell: pwsh |         shell: pwsh | ||||||
|         run: __tests__/clear-toolcache.ps1 ${{ runner.os }} |         run: __tests__/clear-toolcache.ps1 ${{ runner.os }} | ||||||
| @ -259,10 +259,10 @@ jobs: | |||||||
|     strategy: |     strategy: | ||||||
|       fail-fast: false |       fail-fast: false | ||||||
|       matrix: |       matrix: | ||||||
|         operating-system: [ubuntu-latest, windows-latest, macOS-latest] |         operating-system: [ubuntu-latest, windows-latest, macos-13] | ||||||
|     steps: |     steps: | ||||||
|       - name: Checkout |       - name: Checkout | ||||||
|         uses: actions/checkout@v3 |         uses: actions/checkout@v4 | ||||||
|       - name: Clear toolcache |       - name: Clear toolcache | ||||||
|         shell: pwsh |         shell: pwsh | ||||||
|         run: __tests__/clear-toolcache.ps1 ${{ runner.os }} |         run: __tests__/clear-toolcache.ps1 ${{ runner.os }} | ||||||
| @ -281,12 +281,12 @@ jobs: | |||||||
|     strategy: |     strategy: | ||||||
|       fail-fast: false |       fail-fast: false | ||||||
|       matrix: |       matrix: | ||||||
|         operating-system: [ubuntu-latest, windows-latest, macos-latest] |         operating-system: [ubuntu-latest, windows-latest, macos-13] | ||||||
|     env: |     env: | ||||||
|       NUGET_PACKAGES: ${{ github.workspace }}/.nuget/packages |       NUGET_PACKAGES: ${{ github.workspace }}/.nuget/packages | ||||||
|     steps: |     steps: | ||||||
|       - name: Checkout |       - name: Checkout | ||||||
|         uses: actions/checkout@v3 |         uses: actions/checkout@v4 | ||||||
|       - name: Clear toolcache |       - name: Clear toolcache | ||||||
|         shell: pwsh |         shell: pwsh | ||||||
|         run: __tests__/clear-toolcache.ps1 ${{ runner.os }} |         run: __tests__/clear-toolcache.ps1 ${{ runner.os }} | ||||||
| @ -312,12 +312,12 @@ jobs: | |||||||
|     strategy: |     strategy: | ||||||
|       fail-fast: false |       fail-fast: false | ||||||
|       matrix: |       matrix: | ||||||
|         operating-system: [ubuntu-latest, windows-latest, macos-latest] |         operating-system: [ubuntu-latest, windows-latest, macos-13] | ||||||
|     env: |     env: | ||||||
|       NUGET_PACKAGES: ${{ github.workspace }}/.nuget/packages |       NUGET_PACKAGES: ${{ github.workspace }}/.nuget/packages | ||||||
|     steps: |     steps: | ||||||
|       - name: Checkout |       - name: Checkout | ||||||
|         uses: actions/checkout@v3 |         uses: actions/checkout@v4 | ||||||
|       - name: Clear toolcache |       - name: Clear toolcache | ||||||
|         shell: pwsh |         shell: pwsh | ||||||
|         run: __tests__/clear-toolcache.ps1 ${{ runner.os }} |         run: __tests__/clear-toolcache.ps1 ${{ runner.os }} | ||||||
| @ -341,10 +341,10 @@ jobs: | |||||||
|     strategy: |     strategy: | ||||||
|       fail-fast: false |       fail-fast: false | ||||||
|       matrix: |       matrix: | ||||||
|         operating-system: [ubuntu-latest, windows-latest, macOS-latest] |         operating-system: [ubuntu-latest, windows-latest, macos-13] | ||||||
|     steps: |     steps: | ||||||
|       - name: Checkout |       - name: Checkout | ||||||
|         uses: actions/checkout@v3 |         uses: actions/checkout@v4 | ||||||
|       - name: Clear toolcache |       - name: Clear toolcache | ||||||
|         shell: pwsh |         shell: pwsh | ||||||
|         run: __tests__/clear-toolcache.ps1 ${{ runner.os }} |         run: __tests__/clear-toolcache.ps1 ${{ runner.os }} | ||||||
| @ -367,10 +367,10 @@ jobs: | |||||||
|     strategy: |     strategy: | ||||||
|       fail-fast: false |       fail-fast: false | ||||||
|       matrix: |       matrix: | ||||||
|         operating-system: [ubuntu-latest, windows-latest, macOS-latest] |         operating-system: [ubuntu-latest, windows-latest, macos-13] | ||||||
|     steps: |     steps: | ||||||
|       - name: Checkout |       - name: Checkout | ||||||
|         uses: actions/checkout@v3 |         uses: actions/checkout@v4 | ||||||
|       - name: Clear toolcache |       - name: Clear toolcache | ||||||
|         shell: pwsh |         shell: pwsh | ||||||
|         run: __tests__/clear-toolcache.ps1 ${{ runner.os }} |         run: __tests__/clear-toolcache.ps1 ${{ runner.os }} | ||||||
| @ -391,9 +391,9 @@ jobs: | |||||||
|           if (-not ($version -eq '${{steps.step2.outputs.dotnet-version}}')) { throw "Unexpected output value" } |           if (-not ($version -eq '${{steps.step2.outputs.dotnet-version}}')) { throw "Unexpected output value" } | ||||||
|  |  | ||||||
|   test-proxy: |   test-proxy: | ||||||
|     runs-on: ubuntu-latest |     runs-on: ubuntu-22.04 | ||||||
|     container: |     container: | ||||||
|       image: ubuntu:latest |       image: ubuntu:22.04 | ||||||
|       options: --dns 127.0.0.1 |       options: --dns 127.0.0.1 | ||||||
|     services: |     services: | ||||||
|       squid-proxy: |       squid-proxy: | ||||||
| @ -405,7 +405,7 @@ jobs: | |||||||
|       http_proxy: http://squid-proxy:3128 |       http_proxy: http://squid-proxy:3128 | ||||||
|     steps: |     steps: | ||||||
|       - name: Checkout |       - name: Checkout | ||||||
|         uses: actions/checkout@v3 |         uses: actions/checkout@v4 | ||||||
|       - name: Install Powershell |       - name: Install Powershell | ||||||
|         run: | |         run: | | ||||||
|           apt-get update |           apt-get update | ||||||
| @ -437,7 +437,7 @@ jobs: | |||||||
|       no_proxy: github.com,dotnetcli.blob.core.windows.net,download.visualstudio.microsoft.com,api.nuget.org,dotnetcli.azureedge.net |       no_proxy: github.com,dotnetcli.blob.core.windows.net,download.visualstudio.microsoft.com,api.nuget.org,dotnetcli.azureedge.net | ||||||
|     steps: |     steps: | ||||||
|       - name: Checkout |       - name: Checkout | ||||||
|         uses: actions/checkout@v3 |         uses: actions/checkout@v4 | ||||||
|       - name: Clear toolcache |       - name: Clear toolcache | ||||||
|         shell: pwsh |         shell: pwsh | ||||||
|         run: __tests__/clear-toolcache.ps1 ${{ runner.os }} |         run: __tests__/clear-toolcache.ps1 ${{ runner.os }} | ||||||
| @ -457,12 +457,12 @@ jobs: | |||||||
|     strategy: |     strategy: | ||||||
|       fail-fast: false |       fail-fast: false | ||||||
|       matrix: |       matrix: | ||||||
|         operating-system: [ubuntu-latest, windows-latest, macOS-latest] |         operating-system: [ubuntu-latest, windows-latest, macos-13] | ||||||
|         lower-version: ['3.1.426'] |         lower-version: ['3.1.426'] | ||||||
|         higher-version: ['7.0.203'] |         higher-version: ['7.0.203'] | ||||||
|     steps: |     steps: | ||||||
|       - name: Checkout |       - name: Checkout | ||||||
|         uses: actions/checkout@v3 |         uses: actions/checkout@v4 | ||||||
|       - name: Clear toolcache |       - name: Clear toolcache | ||||||
|         shell: pwsh |         shell: pwsh | ||||||
|         run: __tests__/clear-toolcache.ps1 ${{ runner.os }} |         run: __tests__/clear-toolcache.ps1 ${{ runner.os }} | ||||||
|  | |||||||
							
								
								
									
										4
									
								
								.github/workflows/test-dotnet.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.github/workflows/test-dotnet.yml
									
									
									
									
										vendored
									
									
								
							| @ -17,11 +17,11 @@ jobs: | |||||||
|     strategy: |     strategy: | ||||||
|       fail-fast: false |       fail-fast: false | ||||||
|       matrix: |       matrix: | ||||||
|         operating-system: [ubuntu-latest, windows-latest, macOS-latest] |         operating-system: [ubuntu-latest, windows-latest, macos-13] | ||||||
|         dotnet-version: ['2.1', '2.2', '3.0', '3.1', '5.0', '6.0', '7.0', '8.0'] |         dotnet-version: ['2.1', '2.2', '3.0', '3.1', '5.0', '6.0', '7.0', '8.0'] | ||||||
|     steps: |     steps: | ||||||
|       - name: Checkout |       - name: Checkout | ||||||
|         uses: actions/checkout@v3 |         uses: actions/checkout@v4 | ||||||
|       - name: Clear toolcache |       - name: Clear toolcache | ||||||
|         shell: pwsh |         shell: pwsh | ||||||
|         run: __tests__/clear-toolcache.ps1 ${{ runner.os }} |         run: __tests__/clear-toolcache.ps1 ${{ runner.os }} | ||||||
|  | |||||||
							
								
								
									
										2
									
								
								.licenses/npm/undici.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								.licenses/npm/undici.dep.yml
									
									
									
										generated
									
									
									
								
							| @ -1,6 +1,6 @@ | |||||||
| --- | --- | ||||||
| name: undici | name: undici | ||||||
| version: 5.28.3 | version: 5.28.4 | ||||||
| type: npm | type: npm | ||||||
| summary: An HTTP/1.1 client, written from scratch for Node.js | summary: An HTTP/1.1 client, written from scratch for Node.js | ||||||
| homepage: https://undici.nodejs.org | homepage: https://undici.nodejs.org | ||||||
|  | |||||||
							
								
								
									
										297
									
								
								dist/cache-save/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										297
									
								
								dist/cache-save/index.js
									
									
									
									
										vendored
									
									
								
							| @ -59925,6 +59925,132 @@ function onConnectTimeout (socket) { | |||||||
| module.exports = buildConnector | module.exports = buildConnector | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | /***/ }), | ||||||
|  | 
 | ||||||
|  | /***/ 4462: | ||||||
|  | /***/ ((module) => { | ||||||
|  | 
 | ||||||
|  | "use strict"; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /** @type {Record<string, string | undefined>} */ | ||||||
|  | const headerNameLowerCasedRecord = {} | ||||||
|  | 
 | ||||||
|  | // https://developer.mozilla.org/docs/Web/HTTP/Headers
 | ||||||
|  | const wellknownHeaderNames = [ | ||||||
|  |   'Accept', | ||||||
|  |   'Accept-Encoding', | ||||||
|  |   'Accept-Language', | ||||||
|  |   'Accept-Ranges', | ||||||
|  |   'Access-Control-Allow-Credentials', | ||||||
|  |   'Access-Control-Allow-Headers', | ||||||
|  |   'Access-Control-Allow-Methods', | ||||||
|  |   'Access-Control-Allow-Origin', | ||||||
|  |   'Access-Control-Expose-Headers', | ||||||
|  |   'Access-Control-Max-Age', | ||||||
|  |   'Access-Control-Request-Headers', | ||||||
|  |   'Access-Control-Request-Method', | ||||||
|  |   'Age', | ||||||
|  |   'Allow', | ||||||
|  |   'Alt-Svc', | ||||||
|  |   'Alt-Used', | ||||||
|  |   'Authorization', | ||||||
|  |   'Cache-Control', | ||||||
|  |   'Clear-Site-Data', | ||||||
|  |   'Connection', | ||||||
|  |   'Content-Disposition', | ||||||
|  |   'Content-Encoding', | ||||||
|  |   'Content-Language', | ||||||
|  |   'Content-Length', | ||||||
|  |   'Content-Location', | ||||||
|  |   'Content-Range', | ||||||
|  |   'Content-Security-Policy', | ||||||
|  |   'Content-Security-Policy-Report-Only', | ||||||
|  |   'Content-Type', | ||||||
|  |   'Cookie', | ||||||
|  |   'Cross-Origin-Embedder-Policy', | ||||||
|  |   'Cross-Origin-Opener-Policy', | ||||||
|  |   'Cross-Origin-Resource-Policy', | ||||||
|  |   'Date', | ||||||
|  |   'Device-Memory', | ||||||
|  |   'Downlink', | ||||||
|  |   'ECT', | ||||||
|  |   'ETag', | ||||||
|  |   'Expect', | ||||||
|  |   'Expect-CT', | ||||||
|  |   'Expires', | ||||||
|  |   'Forwarded', | ||||||
|  |   'From', | ||||||
|  |   'Host', | ||||||
|  |   'If-Match', | ||||||
|  |   'If-Modified-Since', | ||||||
|  |   'If-None-Match', | ||||||
|  |   'If-Range', | ||||||
|  |   'If-Unmodified-Since', | ||||||
|  |   'Keep-Alive', | ||||||
|  |   'Last-Modified', | ||||||
|  |   'Link', | ||||||
|  |   'Location', | ||||||
|  |   'Max-Forwards', | ||||||
|  |   'Origin', | ||||||
|  |   'Permissions-Policy', | ||||||
|  |   'Pragma', | ||||||
|  |   'Proxy-Authenticate', | ||||||
|  |   'Proxy-Authorization', | ||||||
|  |   'RTT', | ||||||
|  |   'Range', | ||||||
|  |   'Referer', | ||||||
|  |   'Referrer-Policy', | ||||||
|  |   'Refresh', | ||||||
|  |   'Retry-After', | ||||||
|  |   'Sec-WebSocket-Accept', | ||||||
|  |   'Sec-WebSocket-Extensions', | ||||||
|  |   'Sec-WebSocket-Key', | ||||||
|  |   'Sec-WebSocket-Protocol', | ||||||
|  |   'Sec-WebSocket-Version', | ||||||
|  |   'Server', | ||||||
|  |   'Server-Timing', | ||||||
|  |   'Service-Worker-Allowed', | ||||||
|  |   'Service-Worker-Navigation-Preload', | ||||||
|  |   'Set-Cookie', | ||||||
|  |   'SourceMap', | ||||||
|  |   'Strict-Transport-Security', | ||||||
|  |   'Supports-Loading-Mode', | ||||||
|  |   'TE', | ||||||
|  |   'Timing-Allow-Origin', | ||||||
|  |   'Trailer', | ||||||
|  |   'Transfer-Encoding', | ||||||
|  |   'Upgrade', | ||||||
|  |   'Upgrade-Insecure-Requests', | ||||||
|  |   'User-Agent', | ||||||
|  |   'Vary', | ||||||
|  |   'Via', | ||||||
|  |   'WWW-Authenticate', | ||||||
|  |   'X-Content-Type-Options', | ||||||
|  |   'X-DNS-Prefetch-Control', | ||||||
|  |   'X-Frame-Options', | ||||||
|  |   'X-Permitted-Cross-Domain-Policies', | ||||||
|  |   'X-Powered-By', | ||||||
|  |   'X-Requested-With', | ||||||
|  |   'X-XSS-Protection' | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | for (let i = 0; i < wellknownHeaderNames.length; ++i) { | ||||||
|  |   const key = wellknownHeaderNames[i] | ||||||
|  |   const lowerCasedKey = key.toLowerCase() | ||||||
|  |   headerNameLowerCasedRecord[key] = headerNameLowerCasedRecord[lowerCasedKey] = | ||||||
|  |     lowerCasedKey | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // Note: object prototypes should not be able to be referenced. e.g. `Object#hasOwnProperty`.
 | ||||||
|  | Object.setPrototypeOf(headerNameLowerCasedRecord, null) | ||||||
|  | 
 | ||||||
|  | module.exports = { | ||||||
|  |   wellknownHeaderNames, | ||||||
|  |   headerNameLowerCasedRecord | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| /***/ }), | /***/ }), | ||||||
| 
 | 
 | ||||||
| /***/ 8045: | /***/ 8045: | ||||||
| @ -60757,6 +60883,7 @@ const { InvalidArgumentError } = __nccwpck_require__(8045) | |||||||
| const { Blob } = __nccwpck_require__(4300) | const { Blob } = __nccwpck_require__(4300) | ||||||
| const nodeUtil = __nccwpck_require__(3837) | const nodeUtil = __nccwpck_require__(3837) | ||||||
| const { stringify } = __nccwpck_require__(3477) | const { stringify } = __nccwpck_require__(3477) | ||||||
|  | const { headerNameLowerCasedRecord } = __nccwpck_require__(4462) | ||||||
| 
 | 
 | ||||||
| const [nodeMajor, nodeMinor] = process.versions.node.split('.').map(v => Number(v)) | const [nodeMajor, nodeMinor] = process.versions.node.split('.').map(v => Number(v)) | ||||||
| 
 | 
 | ||||||
| @ -60966,6 +61093,15 @@ function parseKeepAliveTimeout (val) { | |||||||
|   return m ? parseInt(m[1], 10) * 1000 : null |   return m ? parseInt(m[1], 10) * 1000 : null | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | /** | ||||||
|  |  * Retrieves a header name and returns its lowercase value. | ||||||
|  |  * @param {string | Buffer} value Header name | ||||||
|  |  * @returns {string} | ||||||
|  |  */ | ||||||
|  | function headerNameToString (value) { | ||||||
|  |   return headerNameLowerCasedRecord[value] || value.toLowerCase() | ||||||
|  | } | ||||||
|  | 
 | ||||||
| function parseHeaders (headers, obj = {}) { | function parseHeaders (headers, obj = {}) { | ||||||
|   // For H2 support
 |   // For H2 support
 | ||||||
|   if (!Array.isArray(headers)) return headers |   if (!Array.isArray(headers)) return headers | ||||||
| @ -61237,6 +61373,7 @@ module.exports = { | |||||||
|   isIterable, |   isIterable, | ||||||
|   isAsyncIterable, |   isAsyncIterable, | ||||||
|   isDestroyed, |   isDestroyed, | ||||||
|  |   headerNameToString, | ||||||
|   parseRawHeaders, |   parseRawHeaders, | ||||||
|   parseHeaders, |   parseHeaders, | ||||||
|   parseKeepAliveTimeout, |   parseKeepAliveTimeout, | ||||||
| @ -67884,14 +68021,18 @@ const { isBlobLike, toUSVString, ReadableStreamFrom } = __nccwpck_require__(3983 | |||||||
| const assert = __nccwpck_require__(9491) | const assert = __nccwpck_require__(9491) | ||||||
| const { isUint8Array } = __nccwpck_require__(9830) | const { isUint8Array } = __nccwpck_require__(9830) | ||||||
| 
 | 
 | ||||||
|  | let supportedHashes = [] | ||||||
|  | 
 | ||||||
| // https://nodejs.org/api/crypto.html#determining-if-crypto-support-is-unavailable
 | // https://nodejs.org/api/crypto.html#determining-if-crypto-support-is-unavailable
 | ||||||
| /** @type {import('crypto')|undefined} */ | /** @type {import('crypto')|undefined} */ | ||||||
| let crypto | let crypto | ||||||
| 
 | 
 | ||||||
| try { | try { | ||||||
|   crypto = __nccwpck_require__(6113) |   crypto = __nccwpck_require__(6113) | ||||||
|  |   const possibleRelevantHashes = ['sha256', 'sha384', 'sha512'] | ||||||
|  |   supportedHashes = crypto.getHashes().filter((hash) => possibleRelevantHashes.includes(hash)) | ||||||
|  | /* c8 ignore next 3 */ | ||||||
| } catch { | } catch { | ||||||
| 
 |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| function responseURL (response) { | function responseURL (response) { | ||||||
| @ -68419,66 +68560,56 @@ function bytesMatch (bytes, metadataList) { | |||||||
|     return true |     return true | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   // 3. If parsedMetadata is the empty set, return true.
 |   // 3. If response is not eligible for integrity validation, return false.
 | ||||||
|  |   // TODO
 | ||||||
|  | 
 | ||||||
|  |   // 4. If parsedMetadata is the empty set, return true.
 | ||||||
|   if (parsedMetadata.length === 0) { |   if (parsedMetadata.length === 0) { | ||||||
|     return true |     return true | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   // 4. Let metadata be the result of getting the strongest
 |   // 5. Let metadata be the result of getting the strongest
 | ||||||
|   //    metadata from parsedMetadata.
 |   //    metadata from parsedMetadata.
 | ||||||
|   const list = parsedMetadata.sort((c, d) => d.algo.localeCompare(c.algo)) |   const strongest = getStrongestMetadata(parsedMetadata) | ||||||
|   // get the strongest algorithm
 |   const metadata = filterMetadataListByAlgorithm(parsedMetadata, strongest) | ||||||
|   const strongest = list[0].algo |  | ||||||
|   // get all entries that use the strongest algorithm; ignore weaker
 |  | ||||||
|   const metadata = list.filter((item) => item.algo === strongest) |  | ||||||
| 
 | 
 | ||||||
|   // 5. For each item in metadata:
 |   // 6. For each item in metadata:
 | ||||||
|   for (const item of metadata) { |   for (const item of metadata) { | ||||||
|     // 1. Let algorithm be the alg component of item.
 |     // 1. Let algorithm be the alg component of item.
 | ||||||
|     const algorithm = item.algo |     const algorithm = item.algo | ||||||
| 
 | 
 | ||||||
|     // 2. Let expectedValue be the val component of item.
 |     // 2. Let expectedValue be the val component of item.
 | ||||||
|     let expectedValue = item.hash |     const expectedValue = item.hash | ||||||
| 
 | 
 | ||||||
|     // See https://github.com/web-platform-tests/wpt/commit/e4c5cc7a5e48093220528dfdd1c4012dc3837a0e
 |     // See https://github.com/web-platform-tests/wpt/commit/e4c5cc7a5e48093220528dfdd1c4012dc3837a0e
 | ||||||
|     // "be liberal with padding". This is annoying, and it's not even in the spec.
 |     // "be liberal with padding". This is annoying, and it's not even in the spec.
 | ||||||
| 
 | 
 | ||||||
|     if (expectedValue.endsWith('==')) { |  | ||||||
|       expectedValue = expectedValue.slice(0, -2) |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     // 3. Let actualValue be the result of applying algorithm to bytes.
 |     // 3. Let actualValue be the result of applying algorithm to bytes.
 | ||||||
|     let actualValue = crypto.createHash(algorithm).update(bytes).digest('base64') |     let actualValue = crypto.createHash(algorithm).update(bytes).digest('base64') | ||||||
| 
 | 
 | ||||||
|     if (actualValue.endsWith('==')) { |     if (actualValue[actualValue.length - 1] === '=') { | ||||||
|       actualValue = actualValue.slice(0, -2) |       if (actualValue[actualValue.length - 2] === '=') { | ||||||
|  |         actualValue = actualValue.slice(0, -2) | ||||||
|  |       } else { | ||||||
|  |         actualValue = actualValue.slice(0, -1) | ||||||
|  |       } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     // 4. If actualValue is a case-sensitive match for expectedValue,
 |     // 4. If actualValue is a case-sensitive match for expectedValue,
 | ||||||
|     //    return true.
 |     //    return true.
 | ||||||
|     if (actualValue === expectedValue) { |     if (compareBase64Mixed(actualValue, expectedValue)) { | ||||||
|       return true |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     let actualBase64URL = crypto.createHash(algorithm).update(bytes).digest('base64url') |  | ||||||
| 
 |  | ||||||
|     if (actualBase64URL.endsWith('==')) { |  | ||||||
|       actualBase64URL = actualBase64URL.slice(0, -2) |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     if (actualBase64URL === expectedValue) { |  | ||||||
|       return true |       return true | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   // 6. Return false.
 |   // 7. Return false.
 | ||||||
|   return false |   return false | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // https://w3c.github.io/webappsec-subresource-integrity/#grammardef-hash-with-options
 | // https://w3c.github.io/webappsec-subresource-integrity/#grammardef-hash-with-options
 | ||||||
| // https://www.w3.org/TR/CSP2/#source-list-syntax
 | // https://www.w3.org/TR/CSP2/#source-list-syntax
 | ||||||
| // https://www.rfc-editor.org/rfc/rfc5234#appendix-B.1
 | // https://www.rfc-editor.org/rfc/rfc5234#appendix-B.1
 | ||||||
| const parseHashWithOptions = /((?<algo>sha256|sha384|sha512)-(?<hash>[A-z0-9+/]{1}.*={0,2}))( +[\x21-\x7e]?)?/i | const parseHashWithOptions = /(?<algo>sha256|sha384|sha512)-((?<hash>[A-Za-z0-9+/]+|[A-Za-z0-9_-]+)={0,2}(?:\s|$)( +[!-~]*)?)?/i | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * @see https://w3c.github.io/webappsec-subresource-integrity/#parse-metadata
 |  * @see https://w3c.github.io/webappsec-subresource-integrity/#parse-metadata
 | ||||||
| @ -68492,8 +68623,6 @@ function parseMetadata (metadata) { | |||||||
|   // 2. Let empty be equal to true.
 |   // 2. Let empty be equal to true.
 | ||||||
|   let empty = true |   let empty = true | ||||||
| 
 | 
 | ||||||
|   const supportedHashes = crypto.getHashes() |  | ||||||
| 
 |  | ||||||
|   // 3. For each token returned by splitting metadata on spaces:
 |   // 3. For each token returned by splitting metadata on spaces:
 | ||||||
|   for (const token of metadata.split(' ')) { |   for (const token of metadata.split(' ')) { | ||||||
|     // 1. Set empty to false.
 |     // 1. Set empty to false.
 | ||||||
| @ -68503,7 +68632,11 @@ function parseMetadata (metadata) { | |||||||
|     const parsedToken = parseHashWithOptions.exec(token) |     const parsedToken = parseHashWithOptions.exec(token) | ||||||
| 
 | 
 | ||||||
|     // 3. If token does not parse, continue to the next token.
 |     // 3. If token does not parse, continue to the next token.
 | ||||||
|     if (parsedToken === null || parsedToken.groups === undefined) { |     if ( | ||||||
|  |       parsedToken === null || | ||||||
|  |       parsedToken.groups === undefined || | ||||||
|  |       parsedToken.groups.algo === undefined | ||||||
|  |     ) { | ||||||
|       // Note: Chromium blocks the request at this point, but Firefox
 |       // Note: Chromium blocks the request at this point, but Firefox
 | ||||||
|       // gives a warning that an invalid integrity was given. The
 |       // gives a warning that an invalid integrity was given. The
 | ||||||
|       // correct behavior is to ignore these, and subsequently not
 |       // correct behavior is to ignore these, and subsequently not
 | ||||||
| @ -68512,11 +68645,11 @@ function parseMetadata (metadata) { | |||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     // 4. Let algorithm be the hash-algo component of token.
 |     // 4. Let algorithm be the hash-algo component of token.
 | ||||||
|     const algorithm = parsedToken.groups.algo |     const algorithm = parsedToken.groups.algo.toLowerCase() | ||||||
| 
 | 
 | ||||||
|     // 5. If algorithm is a hash function recognized by the user
 |     // 5. If algorithm is a hash function recognized by the user
 | ||||||
|     //    agent, add the parsed token to result.
 |     //    agent, add the parsed token to result.
 | ||||||
|     if (supportedHashes.includes(algorithm.toLowerCase())) { |     if (supportedHashes.includes(algorithm)) { | ||||||
|       result.push(parsedToken.groups) |       result.push(parsedToken.groups) | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| @ -68529,6 +68662,82 @@ function parseMetadata (metadata) { | |||||||
|   return result |   return result | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | /** | ||||||
|  |  * @param {{ algo: 'sha256' | 'sha384' | 'sha512' }[]} metadataList | ||||||
|  |  */ | ||||||
|  | function getStrongestMetadata (metadataList) { | ||||||
|  |   // Let algorithm be the algo component of the first item in metadataList.
 | ||||||
|  |   // Can be sha256
 | ||||||
|  |   let algorithm = metadataList[0].algo | ||||||
|  |   // If the algorithm is sha512, then it is the strongest
 | ||||||
|  |   // and we can return immediately
 | ||||||
|  |   if (algorithm[3] === '5') { | ||||||
|  |     return algorithm | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   for (let i = 1; i < metadataList.length; ++i) { | ||||||
|  |     const metadata = metadataList[i] | ||||||
|  |     // If the algorithm is sha512, then it is the strongest
 | ||||||
|  |     // and we can break the loop immediately
 | ||||||
|  |     if (metadata.algo[3] === '5') { | ||||||
|  |       algorithm = 'sha512' | ||||||
|  |       break | ||||||
|  |     // If the algorithm is sha384, then a potential sha256 or sha384 is ignored
 | ||||||
|  |     } else if (algorithm[3] === '3') { | ||||||
|  |       continue | ||||||
|  |     // algorithm is sha256, check if algorithm is sha384 and if so, set it as
 | ||||||
|  |     // the strongest
 | ||||||
|  |     } else if (metadata.algo[3] === '3') { | ||||||
|  |       algorithm = 'sha384' | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |   return algorithm | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | function filterMetadataListByAlgorithm (metadataList, algorithm) { | ||||||
|  |   if (metadataList.length === 1) { | ||||||
|  |     return metadataList | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   let pos = 0 | ||||||
|  |   for (let i = 0; i < metadataList.length; ++i) { | ||||||
|  |     if (metadataList[i].algo === algorithm) { | ||||||
|  |       metadataList[pos++] = metadataList[i] | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   metadataList.length = pos | ||||||
|  | 
 | ||||||
|  |   return metadataList | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * Compares two base64 strings, allowing for base64url | ||||||
|  |  * in the second string. | ||||||
|  |  * | ||||||
|  | * @param {string} actualValue always base64 | ||||||
|  |  * @param {string} expectedValue base64 or base64url | ||||||
|  |  * @returns {boolean} | ||||||
|  |  */ | ||||||
|  | function compareBase64Mixed (actualValue, expectedValue) { | ||||||
|  |   if (actualValue.length !== expectedValue.length) { | ||||||
|  |     return false | ||||||
|  |   } | ||||||
|  |   for (let i = 0; i < actualValue.length; ++i) { | ||||||
|  |     if (actualValue[i] !== expectedValue[i]) { | ||||||
|  |       if ( | ||||||
|  |         (actualValue[i] === '+' && expectedValue[i] === '-') || | ||||||
|  |         (actualValue[i] === '/' && expectedValue[i] === '_') | ||||||
|  |       ) { | ||||||
|  |         continue | ||||||
|  |       } | ||||||
|  |       return false | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   return true | ||||||
|  | } | ||||||
|  | 
 | ||||||
| // https://w3c.github.io/webappsec-upgrade-insecure-requests/#upgrade-request
 | // https://w3c.github.io/webappsec-upgrade-insecure-requests/#upgrade-request
 | ||||||
| function tryUpgradeRequestToAPotentiallyTrustworthyURL (request) { | function tryUpgradeRequestToAPotentiallyTrustworthyURL (request) { | ||||||
|   // TODO
 |   // TODO
 | ||||||
| @ -68944,7 +69153,8 @@ module.exports = { | |||||||
|   urlHasHttpsScheme, |   urlHasHttpsScheme, | ||||||
|   urlIsHttpHttpsScheme, |   urlIsHttpHttpsScheme, | ||||||
|   readAllBytes, |   readAllBytes, | ||||||
|   normalizeMethodRecord |   normalizeMethodRecord, | ||||||
|  |   parseMetadata | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @ -71031,12 +71241,17 @@ function parseLocation (statusCode, headers) { | |||||||
| 
 | 
 | ||||||
| // https://tools.ietf.org/html/rfc7231#section-6.4.4
 | // https://tools.ietf.org/html/rfc7231#section-6.4.4
 | ||||||
| function shouldRemoveHeader (header, removeContent, unknownOrigin) { | function shouldRemoveHeader (header, removeContent, unknownOrigin) { | ||||||
|   return ( |   if (header.length === 4) { | ||||||
|     (header.length === 4 && header.toString().toLowerCase() === 'host') || |     return util.headerNameToString(header) === 'host' | ||||||
|     (removeContent && header.toString().toLowerCase().indexOf('content-') === 0) || |   } | ||||||
|     (unknownOrigin && header.length === 13 && header.toString().toLowerCase() === 'authorization') || |   if (removeContent && util.headerNameToString(header).startsWith('content-')) { | ||||||
|     (unknownOrigin && header.length === 6 && header.toString().toLowerCase() === 'cookie') |     return true | ||||||
|   ) |   } | ||||||
|  |   if (unknownOrigin && (header.length === 13 || header.length === 6 || header.length === 19)) { | ||||||
|  |     const name = util.headerNameToString(header) | ||||||
|  |     return name === 'authorization' || name === 'cookie' || name === 'proxy-authorization' | ||||||
|  |   } | ||||||
|  |   return false | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // https://tools.ietf.org/html/rfc7231#section-6.4
 | // https://tools.ietf.org/html/rfc7231#section-6.4
 | ||||||
|  | |||||||
							
								
								
									
										297
									
								
								dist/setup/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										297
									
								
								dist/setup/index.js
									
									
									
									
										vendored
									
									
								
							| @ -72122,6 +72122,132 @@ function onConnectTimeout (socket) { | |||||||
| module.exports = buildConnector | module.exports = buildConnector | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | /***/ }), | ||||||
|  | 
 | ||||||
|  | /***/ 4462: | ||||||
|  | /***/ ((module) => { | ||||||
|  | 
 | ||||||
|  | "use strict"; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /** @type {Record<string, string | undefined>} */ | ||||||
|  | const headerNameLowerCasedRecord = {} | ||||||
|  | 
 | ||||||
|  | // https://developer.mozilla.org/docs/Web/HTTP/Headers
 | ||||||
|  | const wellknownHeaderNames = [ | ||||||
|  |   'Accept', | ||||||
|  |   'Accept-Encoding', | ||||||
|  |   'Accept-Language', | ||||||
|  |   'Accept-Ranges', | ||||||
|  |   'Access-Control-Allow-Credentials', | ||||||
|  |   'Access-Control-Allow-Headers', | ||||||
|  |   'Access-Control-Allow-Methods', | ||||||
|  |   'Access-Control-Allow-Origin', | ||||||
|  |   'Access-Control-Expose-Headers', | ||||||
|  |   'Access-Control-Max-Age', | ||||||
|  |   'Access-Control-Request-Headers', | ||||||
|  |   'Access-Control-Request-Method', | ||||||
|  |   'Age', | ||||||
|  |   'Allow', | ||||||
|  |   'Alt-Svc', | ||||||
|  |   'Alt-Used', | ||||||
|  |   'Authorization', | ||||||
|  |   'Cache-Control', | ||||||
|  |   'Clear-Site-Data', | ||||||
|  |   'Connection', | ||||||
|  |   'Content-Disposition', | ||||||
|  |   'Content-Encoding', | ||||||
|  |   'Content-Language', | ||||||
|  |   'Content-Length', | ||||||
|  |   'Content-Location', | ||||||
|  |   'Content-Range', | ||||||
|  |   'Content-Security-Policy', | ||||||
|  |   'Content-Security-Policy-Report-Only', | ||||||
|  |   'Content-Type', | ||||||
|  |   'Cookie', | ||||||
|  |   'Cross-Origin-Embedder-Policy', | ||||||
|  |   'Cross-Origin-Opener-Policy', | ||||||
|  |   'Cross-Origin-Resource-Policy', | ||||||
|  |   'Date', | ||||||
|  |   'Device-Memory', | ||||||
|  |   'Downlink', | ||||||
|  |   'ECT', | ||||||
|  |   'ETag', | ||||||
|  |   'Expect', | ||||||
|  |   'Expect-CT', | ||||||
|  |   'Expires', | ||||||
|  |   'Forwarded', | ||||||
|  |   'From', | ||||||
|  |   'Host', | ||||||
|  |   'If-Match', | ||||||
|  |   'If-Modified-Since', | ||||||
|  |   'If-None-Match', | ||||||
|  |   'If-Range', | ||||||
|  |   'If-Unmodified-Since', | ||||||
|  |   'Keep-Alive', | ||||||
|  |   'Last-Modified', | ||||||
|  |   'Link', | ||||||
|  |   'Location', | ||||||
|  |   'Max-Forwards', | ||||||
|  |   'Origin', | ||||||
|  |   'Permissions-Policy', | ||||||
|  |   'Pragma', | ||||||
|  |   'Proxy-Authenticate', | ||||||
|  |   'Proxy-Authorization', | ||||||
|  |   'RTT', | ||||||
|  |   'Range', | ||||||
|  |   'Referer', | ||||||
|  |   'Referrer-Policy', | ||||||
|  |   'Refresh', | ||||||
|  |   'Retry-After', | ||||||
|  |   'Sec-WebSocket-Accept', | ||||||
|  |   'Sec-WebSocket-Extensions', | ||||||
|  |   'Sec-WebSocket-Key', | ||||||
|  |   'Sec-WebSocket-Protocol', | ||||||
|  |   'Sec-WebSocket-Version', | ||||||
|  |   'Server', | ||||||
|  |   'Server-Timing', | ||||||
|  |   'Service-Worker-Allowed', | ||||||
|  |   'Service-Worker-Navigation-Preload', | ||||||
|  |   'Set-Cookie', | ||||||
|  |   'SourceMap', | ||||||
|  |   'Strict-Transport-Security', | ||||||
|  |   'Supports-Loading-Mode', | ||||||
|  |   'TE', | ||||||
|  |   'Timing-Allow-Origin', | ||||||
|  |   'Trailer', | ||||||
|  |   'Transfer-Encoding', | ||||||
|  |   'Upgrade', | ||||||
|  |   'Upgrade-Insecure-Requests', | ||||||
|  |   'User-Agent', | ||||||
|  |   'Vary', | ||||||
|  |   'Via', | ||||||
|  |   'WWW-Authenticate', | ||||||
|  |   'X-Content-Type-Options', | ||||||
|  |   'X-DNS-Prefetch-Control', | ||||||
|  |   'X-Frame-Options', | ||||||
|  |   'X-Permitted-Cross-Domain-Policies', | ||||||
|  |   'X-Powered-By', | ||||||
|  |   'X-Requested-With', | ||||||
|  |   'X-XSS-Protection' | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | for (let i = 0; i < wellknownHeaderNames.length; ++i) { | ||||||
|  |   const key = wellknownHeaderNames[i] | ||||||
|  |   const lowerCasedKey = key.toLowerCase() | ||||||
|  |   headerNameLowerCasedRecord[key] = headerNameLowerCasedRecord[lowerCasedKey] = | ||||||
|  |     lowerCasedKey | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // Note: object prototypes should not be able to be referenced. e.g. `Object#hasOwnProperty`.
 | ||||||
|  | Object.setPrototypeOf(headerNameLowerCasedRecord, null) | ||||||
|  | 
 | ||||||
|  | module.exports = { | ||||||
|  |   wellknownHeaderNames, | ||||||
|  |   headerNameLowerCasedRecord | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| /***/ }), | /***/ }), | ||||||
| 
 | 
 | ||||||
| /***/ 8045: | /***/ 8045: | ||||||
| @ -72954,6 +73080,7 @@ const { InvalidArgumentError } = __nccwpck_require__(8045) | |||||||
| const { Blob } = __nccwpck_require__(4300) | const { Blob } = __nccwpck_require__(4300) | ||||||
| const nodeUtil = __nccwpck_require__(3837) | const nodeUtil = __nccwpck_require__(3837) | ||||||
| const { stringify } = __nccwpck_require__(3477) | const { stringify } = __nccwpck_require__(3477) | ||||||
|  | const { headerNameLowerCasedRecord } = __nccwpck_require__(4462) | ||||||
| 
 | 
 | ||||||
| const [nodeMajor, nodeMinor] = process.versions.node.split('.').map(v => Number(v)) | const [nodeMajor, nodeMinor] = process.versions.node.split('.').map(v => Number(v)) | ||||||
| 
 | 
 | ||||||
| @ -73163,6 +73290,15 @@ function parseKeepAliveTimeout (val) { | |||||||
|   return m ? parseInt(m[1], 10) * 1000 : null |   return m ? parseInt(m[1], 10) * 1000 : null | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | /** | ||||||
|  |  * Retrieves a header name and returns its lowercase value. | ||||||
|  |  * @param {string | Buffer} value Header name | ||||||
|  |  * @returns {string} | ||||||
|  |  */ | ||||||
|  | function headerNameToString (value) { | ||||||
|  |   return headerNameLowerCasedRecord[value] || value.toLowerCase() | ||||||
|  | } | ||||||
|  | 
 | ||||||
| function parseHeaders (headers, obj = {}) { | function parseHeaders (headers, obj = {}) { | ||||||
|   // For H2 support
 |   // For H2 support
 | ||||||
|   if (!Array.isArray(headers)) return headers |   if (!Array.isArray(headers)) return headers | ||||||
| @ -73434,6 +73570,7 @@ module.exports = { | |||||||
|   isIterable, |   isIterable, | ||||||
|   isAsyncIterable, |   isAsyncIterable, | ||||||
|   isDestroyed, |   isDestroyed, | ||||||
|  |   headerNameToString, | ||||||
|   parseRawHeaders, |   parseRawHeaders, | ||||||
|   parseHeaders, |   parseHeaders, | ||||||
|   parseKeepAliveTimeout, |   parseKeepAliveTimeout, | ||||||
| @ -80081,14 +80218,18 @@ const { isBlobLike, toUSVString, ReadableStreamFrom } = __nccwpck_require__(3983 | |||||||
| const assert = __nccwpck_require__(9491) | const assert = __nccwpck_require__(9491) | ||||||
| const { isUint8Array } = __nccwpck_require__(9830) | const { isUint8Array } = __nccwpck_require__(9830) | ||||||
| 
 | 
 | ||||||
|  | let supportedHashes = [] | ||||||
|  | 
 | ||||||
| // https://nodejs.org/api/crypto.html#determining-if-crypto-support-is-unavailable
 | // https://nodejs.org/api/crypto.html#determining-if-crypto-support-is-unavailable
 | ||||||
| /** @type {import('crypto')|undefined} */ | /** @type {import('crypto')|undefined} */ | ||||||
| let crypto | let crypto | ||||||
| 
 | 
 | ||||||
| try { | try { | ||||||
|   crypto = __nccwpck_require__(6113) |   crypto = __nccwpck_require__(6113) | ||||||
|  |   const possibleRelevantHashes = ['sha256', 'sha384', 'sha512'] | ||||||
|  |   supportedHashes = crypto.getHashes().filter((hash) => possibleRelevantHashes.includes(hash)) | ||||||
|  | /* c8 ignore next 3 */ | ||||||
| } catch { | } catch { | ||||||
| 
 |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| function responseURL (response) { | function responseURL (response) { | ||||||
| @ -80616,66 +80757,56 @@ function bytesMatch (bytes, metadataList) { | |||||||
|     return true |     return true | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   // 3. If parsedMetadata is the empty set, return true.
 |   // 3. If response is not eligible for integrity validation, return false.
 | ||||||
|  |   // TODO
 | ||||||
|  | 
 | ||||||
|  |   // 4. If parsedMetadata is the empty set, return true.
 | ||||||
|   if (parsedMetadata.length === 0) { |   if (parsedMetadata.length === 0) { | ||||||
|     return true |     return true | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   // 4. Let metadata be the result of getting the strongest
 |   // 5. Let metadata be the result of getting the strongest
 | ||||||
|   //    metadata from parsedMetadata.
 |   //    metadata from parsedMetadata.
 | ||||||
|   const list = parsedMetadata.sort((c, d) => d.algo.localeCompare(c.algo)) |   const strongest = getStrongestMetadata(parsedMetadata) | ||||||
|   // get the strongest algorithm
 |   const metadata = filterMetadataListByAlgorithm(parsedMetadata, strongest) | ||||||
|   const strongest = list[0].algo |  | ||||||
|   // get all entries that use the strongest algorithm; ignore weaker
 |  | ||||||
|   const metadata = list.filter((item) => item.algo === strongest) |  | ||||||
| 
 | 
 | ||||||
|   // 5. For each item in metadata:
 |   // 6. For each item in metadata:
 | ||||||
|   for (const item of metadata) { |   for (const item of metadata) { | ||||||
|     // 1. Let algorithm be the alg component of item.
 |     // 1. Let algorithm be the alg component of item.
 | ||||||
|     const algorithm = item.algo |     const algorithm = item.algo | ||||||
| 
 | 
 | ||||||
|     // 2. Let expectedValue be the val component of item.
 |     // 2. Let expectedValue be the val component of item.
 | ||||||
|     let expectedValue = item.hash |     const expectedValue = item.hash | ||||||
| 
 | 
 | ||||||
|     // See https://github.com/web-platform-tests/wpt/commit/e4c5cc7a5e48093220528dfdd1c4012dc3837a0e
 |     // See https://github.com/web-platform-tests/wpt/commit/e4c5cc7a5e48093220528dfdd1c4012dc3837a0e
 | ||||||
|     // "be liberal with padding". This is annoying, and it's not even in the spec.
 |     // "be liberal with padding". This is annoying, and it's not even in the spec.
 | ||||||
| 
 | 
 | ||||||
|     if (expectedValue.endsWith('==')) { |  | ||||||
|       expectedValue = expectedValue.slice(0, -2) |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     // 3. Let actualValue be the result of applying algorithm to bytes.
 |     // 3. Let actualValue be the result of applying algorithm to bytes.
 | ||||||
|     let actualValue = crypto.createHash(algorithm).update(bytes).digest('base64') |     let actualValue = crypto.createHash(algorithm).update(bytes).digest('base64') | ||||||
| 
 | 
 | ||||||
|     if (actualValue.endsWith('==')) { |     if (actualValue[actualValue.length - 1] === '=') { | ||||||
|       actualValue = actualValue.slice(0, -2) |       if (actualValue[actualValue.length - 2] === '=') { | ||||||
|  |         actualValue = actualValue.slice(0, -2) | ||||||
|  |       } else { | ||||||
|  |         actualValue = actualValue.slice(0, -1) | ||||||
|  |       } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     // 4. If actualValue is a case-sensitive match for expectedValue,
 |     // 4. If actualValue is a case-sensitive match for expectedValue,
 | ||||||
|     //    return true.
 |     //    return true.
 | ||||||
|     if (actualValue === expectedValue) { |     if (compareBase64Mixed(actualValue, expectedValue)) { | ||||||
|       return true |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     let actualBase64URL = crypto.createHash(algorithm).update(bytes).digest('base64url') |  | ||||||
| 
 |  | ||||||
|     if (actualBase64URL.endsWith('==')) { |  | ||||||
|       actualBase64URL = actualBase64URL.slice(0, -2) |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     if (actualBase64URL === expectedValue) { |  | ||||||
|       return true |       return true | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   // 6. Return false.
 |   // 7. Return false.
 | ||||||
|   return false |   return false | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // https://w3c.github.io/webappsec-subresource-integrity/#grammardef-hash-with-options
 | // https://w3c.github.io/webappsec-subresource-integrity/#grammardef-hash-with-options
 | ||||||
| // https://www.w3.org/TR/CSP2/#source-list-syntax
 | // https://www.w3.org/TR/CSP2/#source-list-syntax
 | ||||||
| // https://www.rfc-editor.org/rfc/rfc5234#appendix-B.1
 | // https://www.rfc-editor.org/rfc/rfc5234#appendix-B.1
 | ||||||
| const parseHashWithOptions = /((?<algo>sha256|sha384|sha512)-(?<hash>[A-z0-9+/]{1}.*={0,2}))( +[\x21-\x7e]?)?/i | const parseHashWithOptions = /(?<algo>sha256|sha384|sha512)-((?<hash>[A-Za-z0-9+/]+|[A-Za-z0-9_-]+)={0,2}(?:\s|$)( +[!-~]*)?)?/i | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * @see https://w3c.github.io/webappsec-subresource-integrity/#parse-metadata
 |  * @see https://w3c.github.io/webappsec-subresource-integrity/#parse-metadata
 | ||||||
| @ -80689,8 +80820,6 @@ function parseMetadata (metadata) { | |||||||
|   // 2. Let empty be equal to true.
 |   // 2. Let empty be equal to true.
 | ||||||
|   let empty = true |   let empty = true | ||||||
| 
 | 
 | ||||||
|   const supportedHashes = crypto.getHashes() |  | ||||||
| 
 |  | ||||||
|   // 3. For each token returned by splitting metadata on spaces:
 |   // 3. For each token returned by splitting metadata on spaces:
 | ||||||
|   for (const token of metadata.split(' ')) { |   for (const token of metadata.split(' ')) { | ||||||
|     // 1. Set empty to false.
 |     // 1. Set empty to false.
 | ||||||
| @ -80700,7 +80829,11 @@ function parseMetadata (metadata) { | |||||||
|     const parsedToken = parseHashWithOptions.exec(token) |     const parsedToken = parseHashWithOptions.exec(token) | ||||||
| 
 | 
 | ||||||
|     // 3. If token does not parse, continue to the next token.
 |     // 3. If token does not parse, continue to the next token.
 | ||||||
|     if (parsedToken === null || parsedToken.groups === undefined) { |     if ( | ||||||
|  |       parsedToken === null || | ||||||
|  |       parsedToken.groups === undefined || | ||||||
|  |       parsedToken.groups.algo === undefined | ||||||
|  |     ) { | ||||||
|       // Note: Chromium blocks the request at this point, but Firefox
 |       // Note: Chromium blocks the request at this point, but Firefox
 | ||||||
|       // gives a warning that an invalid integrity was given. The
 |       // gives a warning that an invalid integrity was given. The
 | ||||||
|       // correct behavior is to ignore these, and subsequently not
 |       // correct behavior is to ignore these, and subsequently not
 | ||||||
| @ -80709,11 +80842,11 @@ function parseMetadata (metadata) { | |||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     // 4. Let algorithm be the hash-algo component of token.
 |     // 4. Let algorithm be the hash-algo component of token.
 | ||||||
|     const algorithm = parsedToken.groups.algo |     const algorithm = parsedToken.groups.algo.toLowerCase() | ||||||
| 
 | 
 | ||||||
|     // 5. If algorithm is a hash function recognized by the user
 |     // 5. If algorithm is a hash function recognized by the user
 | ||||||
|     //    agent, add the parsed token to result.
 |     //    agent, add the parsed token to result.
 | ||||||
|     if (supportedHashes.includes(algorithm.toLowerCase())) { |     if (supportedHashes.includes(algorithm)) { | ||||||
|       result.push(parsedToken.groups) |       result.push(parsedToken.groups) | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| @ -80726,6 +80859,82 @@ function parseMetadata (metadata) { | |||||||
|   return result |   return result | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | /** | ||||||
|  |  * @param {{ algo: 'sha256' | 'sha384' | 'sha512' }[]} metadataList | ||||||
|  |  */ | ||||||
|  | function getStrongestMetadata (metadataList) { | ||||||
|  |   // Let algorithm be the algo component of the first item in metadataList.
 | ||||||
|  |   // Can be sha256
 | ||||||
|  |   let algorithm = metadataList[0].algo | ||||||
|  |   // If the algorithm is sha512, then it is the strongest
 | ||||||
|  |   // and we can return immediately
 | ||||||
|  |   if (algorithm[3] === '5') { | ||||||
|  |     return algorithm | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   for (let i = 1; i < metadataList.length; ++i) { | ||||||
|  |     const metadata = metadataList[i] | ||||||
|  |     // If the algorithm is sha512, then it is the strongest
 | ||||||
|  |     // and we can break the loop immediately
 | ||||||
|  |     if (metadata.algo[3] === '5') { | ||||||
|  |       algorithm = 'sha512' | ||||||
|  |       break | ||||||
|  |     // If the algorithm is sha384, then a potential sha256 or sha384 is ignored
 | ||||||
|  |     } else if (algorithm[3] === '3') { | ||||||
|  |       continue | ||||||
|  |     // algorithm is sha256, check if algorithm is sha384 and if so, set it as
 | ||||||
|  |     // the strongest
 | ||||||
|  |     } else if (metadata.algo[3] === '3') { | ||||||
|  |       algorithm = 'sha384' | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |   return algorithm | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | function filterMetadataListByAlgorithm (metadataList, algorithm) { | ||||||
|  |   if (metadataList.length === 1) { | ||||||
|  |     return metadataList | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   let pos = 0 | ||||||
|  |   for (let i = 0; i < metadataList.length; ++i) { | ||||||
|  |     if (metadataList[i].algo === algorithm) { | ||||||
|  |       metadataList[pos++] = metadataList[i] | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   metadataList.length = pos | ||||||
|  | 
 | ||||||
|  |   return metadataList | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * Compares two base64 strings, allowing for base64url | ||||||
|  |  * in the second string. | ||||||
|  |  * | ||||||
|  | * @param {string} actualValue always base64 | ||||||
|  |  * @param {string} expectedValue base64 or base64url | ||||||
|  |  * @returns {boolean} | ||||||
|  |  */ | ||||||
|  | function compareBase64Mixed (actualValue, expectedValue) { | ||||||
|  |   if (actualValue.length !== expectedValue.length) { | ||||||
|  |     return false | ||||||
|  |   } | ||||||
|  |   for (let i = 0; i < actualValue.length; ++i) { | ||||||
|  |     if (actualValue[i] !== expectedValue[i]) { | ||||||
|  |       if ( | ||||||
|  |         (actualValue[i] === '+' && expectedValue[i] === '-') || | ||||||
|  |         (actualValue[i] === '/' && expectedValue[i] === '_') | ||||||
|  |       ) { | ||||||
|  |         continue | ||||||
|  |       } | ||||||
|  |       return false | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   return true | ||||||
|  | } | ||||||
|  | 
 | ||||||
| // https://w3c.github.io/webappsec-upgrade-insecure-requests/#upgrade-request
 | // https://w3c.github.io/webappsec-upgrade-insecure-requests/#upgrade-request
 | ||||||
| function tryUpgradeRequestToAPotentiallyTrustworthyURL (request) { | function tryUpgradeRequestToAPotentiallyTrustworthyURL (request) { | ||||||
|   // TODO
 |   // TODO
 | ||||||
| @ -81141,7 +81350,8 @@ module.exports = { | |||||||
|   urlHasHttpsScheme, |   urlHasHttpsScheme, | ||||||
|   urlIsHttpHttpsScheme, |   urlIsHttpHttpsScheme, | ||||||
|   readAllBytes, |   readAllBytes, | ||||||
|   normalizeMethodRecord |   normalizeMethodRecord, | ||||||
|  |   parseMetadata | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @ -83228,12 +83438,17 @@ function parseLocation (statusCode, headers) { | |||||||
| 
 | 
 | ||||||
| // https://tools.ietf.org/html/rfc7231#section-6.4.4
 | // https://tools.ietf.org/html/rfc7231#section-6.4.4
 | ||||||
| function shouldRemoveHeader (header, removeContent, unknownOrigin) { | function shouldRemoveHeader (header, removeContent, unknownOrigin) { | ||||||
|   return ( |   if (header.length === 4) { | ||||||
|     (header.length === 4 && header.toString().toLowerCase() === 'host') || |     return util.headerNameToString(header) === 'host' | ||||||
|     (removeContent && header.toString().toLowerCase().indexOf('content-') === 0) || |   } | ||||||
|     (unknownOrigin && header.length === 13 && header.toString().toLowerCase() === 'authorization') || |   if (removeContent && util.headerNameToString(header).startsWith('content-')) { | ||||||
|     (unknownOrigin && header.length === 6 && header.toString().toLowerCase() === 'cookie') |     return true | ||||||
|   ) |   } | ||||||
|  |   if (unknownOrigin && (header.length === 13 || header.length === 6 || header.length === 19)) { | ||||||
|  |     const name = util.headerNameToString(header) | ||||||
|  |     return name === 'authorization' || name === 'cookie' || name === 'proxy-authorization' | ||||||
|  |   } | ||||||
|  |   return false | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // https://tools.ietf.org/html/rfc7231#section-6.4
 | // https://tools.ietf.org/html/rfc7231#section-6.4
 | ||||||
|  | |||||||
							
								
								
									
										26
									
								
								externals/install-dotnet.sh
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										26
									
								
								externals/install-dotnet.sh
									
									
									
									
										vendored
									
									
								
							| @ -298,6 +298,10 @@ get_machine_architecture() { | |||||||
|     if command -v uname > /dev/null; then |     if command -v uname > /dev/null; then | ||||||
|         CPUName=$(uname -m) |         CPUName=$(uname -m) | ||||||
|         case $CPUName in |         case $CPUName in | ||||||
|  |         armv1*|armv2*|armv3*|armv4*|armv5*|armv6*) | ||||||
|  |             echo "armv6-or-below" | ||||||
|  |             return 0 | ||||||
|  |             ;; | ||||||
|         armv*l) |         armv*l) | ||||||
|             echo "arm" |             echo "arm" | ||||||
|             return 0 |             return 0 | ||||||
| @ -339,7 +343,13 @@ get_normalized_architecture_from_architecture() { | |||||||
|     local architecture="$(to_lowercase "$1")" |     local architecture="$(to_lowercase "$1")" | ||||||
|  |  | ||||||
|     if [[ $architecture == \<auto\> ]]; then |     if [[ $architecture == \<auto\> ]]; then | ||||||
|         echo "$(get_machine_architecture)" |         machine_architecture="$(get_machine_architecture)" | ||||||
|  |         if [[ "$machine_architecture" == "armv6-or-below" ]]; then | ||||||
|  |             say_err "Architecture \`$machine_architecture\` not supported. If you think this is a bug, report it at https://github.com/dotnet/install-scripts/issues" | ||||||
|  |             return 1 | ||||||
|  |         fi | ||||||
|  |  | ||||||
|  |         echo $machine_architecture | ||||||
|         return 0 |         return 0 | ||||||
|     fi |     fi | ||||||
|  |  | ||||||
| @ -1013,7 +1023,7 @@ extract_dotnet_package() { | |||||||
|      |      | ||||||
|     rm -rf "$temp_out_path" |     rm -rf "$temp_out_path" | ||||||
|     if [ -z ${keep_zip+x} ]; then |     if [ -z ${keep_zip+x} ]; then | ||||||
|         rm -f "$zip_path" && say_verbose "Temporary zip file $zip_path was removed" |         rm -f "$zip_path" && say_verbose "Temporary archive file $zip_path was removed" | ||||||
|     fi |     fi | ||||||
|  |  | ||||||
|     if [ "$failed" = true ]; then |     if [ "$failed" = true ]; then | ||||||
| @ -1261,6 +1271,12 @@ get_download_link_from_aka_ms() { | |||||||
|     http_codes=$( echo "$response" | awk '$1 ~ /^HTTP/ {print $2}' ) |     http_codes=$( echo "$response" | awk '$1 ~ /^HTTP/ {print $2}' ) | ||||||
|     # They all need to be 301, otherwise some links are broken (except for the last, which is not a redirect but 200 or 404). |     # They all need to be 301, otherwise some links are broken (except for the last, which is not a redirect but 200 or 404). | ||||||
|     broken_redirects=$( echo "$http_codes" | sed '$d' | grep -v '301' ) |     broken_redirects=$( echo "$http_codes" | sed '$d' | grep -v '301' ) | ||||||
|  |     # The response may end without final code 2xx/4xx/5xx somehow, e.g. network restrictions on www.bing.com causes redirecting to bing.com fails with connection refused. | ||||||
|  |     # In this case it should not exclude the last. | ||||||
|  |     last_http_code=$(  echo "$http_codes" | tail -n 1 ) | ||||||
|  |     if ! [[ $last_http_code =~ ^(2|4|5)[0-9][0-9]$ ]]; then | ||||||
|  |         broken_redirects=$( echo "$http_codes" | grep -v '301' ) | ||||||
|  |     fi | ||||||
|  |  | ||||||
|     # All HTTP codes are 301 (Moved Permanently), the redirect link exists. |     # All HTTP codes are 301 (Moved Permanently), the redirect link exists. | ||||||
|     if [[ -z "$broken_redirects" ]]; then |     if [[ -z "$broken_redirects" ]]; then | ||||||
| @ -1512,7 +1528,7 @@ install_dotnet() { | |||||||
|  |  | ||||||
|     mkdir -p "$install_root" |     mkdir -p "$install_root" | ||||||
|     zip_path="${zip_path:-$(mktemp "$temporary_file_template")}" |     zip_path="${zip_path:-$(mktemp "$temporary_file_template")}" | ||||||
|     say_verbose "Zip path: $zip_path" |     say_verbose "Archive path: $zip_path" | ||||||
|  |  | ||||||
|     for link_index in "${!download_links[@]}" |     for link_index in "${!download_links[@]}" | ||||||
|     do |     do | ||||||
| @ -1536,7 +1552,7 @@ install_dotnet() { | |||||||
|                 say "Failed to download $link_type link '$download_link': $download_error_msg" |                 say "Failed to download $link_type link '$download_link': $download_error_msg" | ||||||
|                 ;; |                 ;; | ||||||
|             esac |             esac | ||||||
|             rm -f "$zip_path" 2>&1 && say_verbose "Temporary zip file $zip_path was removed" |             rm -f "$zip_path" 2>&1 && say_verbose "Temporary archive file $zip_path was removed" | ||||||
|         else |         else | ||||||
|             download_completed=true |             download_completed=true | ||||||
|             break |             break | ||||||
| @ -1551,7 +1567,7 @@ install_dotnet() { | |||||||
|  |  | ||||||
|     remote_file_size="$(get_remote_file_size "$download_link")" |     remote_file_size="$(get_remote_file_size "$download_link")" | ||||||
|  |  | ||||||
|     say "Extracting zip from $download_link" |     say "Extracting archive from $download_link" | ||||||
|     extract_dotnet_package "$zip_path" "$install_root" "$remote_file_size" || return 1 |     extract_dotnet_package "$zip_path" "$install_root" "$remote_file_size" || return 1 | ||||||
|  |  | ||||||
|     #  Check if the SDK version is installed; if not, fail the installation. |     #  Check if the SDK version is installed; if not, fail the installation. | ||||||
|  | |||||||
							
								
								
									
										20
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										20
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							| @ -2661,12 +2661,12 @@ | |||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "node_modules/braces": { |     "node_modules/braces": { | ||||||
|       "version": "3.0.2", |       "version": "3.0.3", | ||||||
|       "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", |       "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", | ||||||
|       "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", |       "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "dependencies": { |       "dependencies": { | ||||||
|         "fill-range": "^7.0.1" |         "fill-range": "^7.1.1" | ||||||
|       }, |       }, | ||||||
|       "engines": { |       "engines": { | ||||||
|         "node": ">=8" |         "node": ">=8" | ||||||
| @ -3541,9 +3541,9 @@ | |||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "node_modules/fill-range": { |     "node_modules/fill-range": { | ||||||
|       "version": "7.0.1", |       "version": "7.1.1", | ||||||
|       "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", |       "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", | ||||||
|       "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", |       "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|       "dependencies": { |       "dependencies": { | ||||||
|         "to-regex-range": "^5.0.1" |         "to-regex-range": "^5.0.1" | ||||||
| @ -5828,9 +5828,9 @@ | |||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "node_modules/undici": { |     "node_modules/undici": { | ||||||
|       "version": "5.28.3", |       "version": "5.28.4", | ||||||
|       "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.3.tgz", |       "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz", | ||||||
|       "integrity": "sha512-3ItfzbrhDlINjaP0duwnNsKpDQk3acHI3gVJ1z4fmwMK31k5G9OVIAMLSIaP6w4FaGkaAkN6zaQO9LUvZ1t7VA==", |       "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==", | ||||||
|       "dependencies": { |       "dependencies": { | ||||||
|         "@fastify/busboy": "^2.0.0" |         "@fastify/busboy": "^2.0.0" | ||||||
|       }, |       }, | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user
	![49699333+dependabot[bot]@users.noreply.github.com](/assets/img/avatar_default.png) dependabot[bot]
					dependabot[bot]