mirror of
				https://gitea.com/actions/setup-node.git
				synced 2025-10-29 15:52:42 +08:00 
			
		
		
		
	Compare commits
	
		
			8 Commits
		
	
	
		
			test-macos
			...
			v6.0.0
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 2028fbc5c2 | ||
|  | 13427813f7 | ||
|  | 89d709d423 | ||
|  | cd2651c462 | ||
|  | a0853c2454 | ||
|  | b7234cc9fe | ||
|  | d7a11313b5 | ||
|  | 5e2628c959 | 
							
								
								
									
										2
									
								
								.github/workflows/basic-validation.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/basic-validation.yml
									
									
									
									
										vendored
									
									
								
							| @@ -16,4 +16,4 @@ jobs: | ||||
|     name: Basic validation | ||||
|     uses: actions/reusable-workflows/.github/workflows/basic-validation.yml@main | ||||
|     with: | ||||
|       node-version: '20.x' | ||||
|       node-version: '24.x' | ||||
|   | ||||
							
								
								
									
										2
									
								
								.github/workflows/check-dist.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/check-dist.yml
									
									
									
									
										vendored
									
									
								
							| @@ -16,4 +16,4 @@ jobs: | ||||
|     name: Check dist/ | ||||
|     uses: actions/reusable-workflows/.github/workflows/check-dist.yml@main | ||||
|     with: | ||||
|       node-version: '20.x' | ||||
|       node-version: '24.x' | ||||
|   | ||||
							
								
								
									
										101
									
								
								.github/workflows/e2e-cache.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										101
									
								
								.github/workflows/e2e-cache.yml
									
									
									
									
										vendored
									
									
								
							| @@ -18,10 +18,10 @@ jobs: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-13] | ||||
|         node-version: [18, 20, 22] | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large] | ||||
|         node-version: [20, 22, 24] | ||||
|     steps: | ||||
|       - uses: actions/checkout@v4 | ||||
|       - uses: actions/checkout@v5 | ||||
|       - name: Clean global cache | ||||
|         run: npm cache clean --force | ||||
|       - name: Setup Node | ||||
| @@ -41,10 +41,10 @@ jobs: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-13] | ||||
|         node-version: [18, 20, 22] | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large] | ||||
|         node-version: [20, 22, 24] | ||||
|     steps: | ||||
|       - uses: actions/checkout@v4 | ||||
|       - uses: actions/checkout@v5 | ||||
|       - name: Install pnpm | ||||
|         uses: pnpm/action-setup@v4 | ||||
|         with: | ||||
| @@ -74,14 +74,14 @@ jobs: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-13] | ||||
|         node-version: [18, 20] | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large] | ||||
|         node-version: [20, 22, 24] | ||||
|     steps: | ||||
|       - uses: actions/checkout@v4 | ||||
|       - uses: actions/checkout@v5 | ||||
|       - name: Yarn version | ||||
|         run: yarn --version | ||||
|       - name: Generate yarn file | ||||
|         run: yarn install | ||||
|         run: yarn install --ignore-engines | ||||
|       - name: Remove dependencies | ||||
|         shell: pwsh | ||||
|         run: Remove-Item node_modules -Force -Recurse | ||||
| @@ -106,10 +106,10 @@ jobs: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-13] | ||||
|         node-version: [18, 20, 22] | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large] | ||||
|         node-version: [20, 22, 24] | ||||
|     steps: | ||||
|       - uses: actions/checkout@v4 | ||||
|       - uses: actions/checkout@v5 | ||||
|       - name: Update yarn | ||||
|         run: yarn set version 3.6.4 | ||||
|       - name: Yarn version | ||||
| @@ -139,11 +139,11 @@ jobs: | ||||
|     name: Test yarn subprojects | ||||
|     strategy: | ||||
|       matrix: | ||||
|         node-version: [18, 20, 22] | ||||
|         node-version: [20, 22, 24] | ||||
|     runs-on: ubuntu-latest | ||||
|  | ||||
|     steps: | ||||
|       - uses: actions/checkout@v4 | ||||
|       - uses: actions/checkout@v5 | ||||
|  | ||||
|       - name: prepare sub-projects | ||||
|         run: __tests__/prepare-yarn-subprojects.sh yarn1 | ||||
| @@ -166,11 +166,11 @@ jobs: | ||||
|     name: Test yarn subprojects all locally managed | ||||
|     strategy: | ||||
|       matrix: | ||||
|         node-version: [18, 20, 22] | ||||
|         node-version: [20, 22, 24] | ||||
|     runs-on: ubuntu-latest | ||||
|  | ||||
|     steps: | ||||
|       - uses: actions/checkout@v4 | ||||
|       - uses: actions/checkout@v5 | ||||
|  | ||||
|       - name: prepare sub-projects | ||||
|         run: __tests__/prepare-yarn-subprojects.sh keepcache keepcache | ||||
| @@ -193,11 +193,11 @@ jobs: | ||||
|     name: Test yarn subprojects some locally managed | ||||
|     strategy: | ||||
|       matrix: | ||||
|         node-version: [18, 20, 22] | ||||
|         node-version: [20, 22, 24] | ||||
|     runs-on: ubuntu-latest | ||||
|  | ||||
|     steps: | ||||
|       - uses: actions/checkout@v4 | ||||
|       - uses: actions/checkout@v5 | ||||
|  | ||||
|       - name: prepare sub-projects | ||||
|         run: __tests__/prepare-yarn-subprojects.sh global | ||||
| @@ -220,11 +220,11 @@ jobs: | ||||
|     name: Test yarn subprojects managed by git | ||||
|     strategy: | ||||
|       matrix: | ||||
|         node-version: [18, 20, 22] | ||||
|         node-version: [20, 22, 24] | ||||
|     runs-on: ubuntu-latest | ||||
|  | ||||
|     steps: | ||||
|       - uses: actions/checkout@v4 | ||||
|       - uses: actions/checkout@v5 | ||||
|  | ||||
|       - name: prepare sub-projects | ||||
|         run: /bin/bash __tests__/prepare-yarn-subprojects.sh keepcache | ||||
| @@ -243,3 +243,62 @@ jobs: | ||||
|           cache-dependency-path: | | ||||
|             sub2/*.lock | ||||
|             sub3/*.lock | ||||
|  | ||||
|   node-npm-packageManager-auto-cache: | ||||
|     name: Test auto cache with top-level packageManager | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large] | ||||
|         node-version: [20, 22, 24] | ||||
|     steps: | ||||
|       - uses: actions/checkout@v5 | ||||
|       - name: Create package.json with packageManager field | ||||
|         run: | | ||||
|           echo '{ "name": "test-project", "version": "1.0.0", "packageManager": "npm@8.0.0" }' > package.json | ||||
|       - name: Clean global cache | ||||
|         run: npm cache clean --force | ||||
|       - name: Setup Node with caching enabled | ||||
|         uses: ./ | ||||
|         with: | ||||
|           node-version: ${{ matrix.node-version }} | ||||
|       - name: Install dependencies | ||||
|         run: npm install | ||||
|       - name: Verify node and npm | ||||
|         run: __tests__/verify-node.sh "${{ matrix.node-version }}" | ||||
|         shell: bash | ||||
|  | ||||
|   node-npm-devEngines-auto-cache: | ||||
|     name: Test auto cache with devEngines.packageManager | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large] | ||||
|         node-version: [20, 22, 24] | ||||
|     steps: | ||||
|       - uses: actions/checkout@v5 | ||||
|       - name: Create package.json with devEngines field | ||||
|         run: | | ||||
|           echo '{ | ||||
|             "name": "test-project", | ||||
|             "version": "1.0.0", | ||||
|             "devEngines": { | ||||
|               "packageManager": { | ||||
|                 "name": "npm", | ||||
|                 "onFail": "error" | ||||
|               } | ||||
|             } | ||||
|           }' > package.json | ||||
|       - name: Clean global cache | ||||
|         run: npm cache clean --force | ||||
|       - name: Setup Node with caching enabled | ||||
|         uses: ./ | ||||
|         with: | ||||
|           node-version: ${{ matrix.node-version }} | ||||
|       - name: Install dependencies | ||||
|         run: npm install | ||||
|       - name: Verify node and npm | ||||
|         run: __tests__/verify-node.sh "${{ matrix.node-version }}" | ||||
|         shell: bash | ||||
|   | ||||
							
								
								
									
										16
									
								
								.github/workflows/proxy.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										16
									
								
								.github/workflows/proxy.yml
									
									
									
									
										vendored
									
									
								
							| @@ -25,15 +25,15 @@ jobs: | ||||
|     env: | ||||
|       https_proxy: http://squid-proxy:3128 | ||||
|     steps: | ||||
|       - uses: actions/checkout@v4 | ||||
|       - uses: actions/checkout@v5 | ||||
|       - name: Clear tool cache | ||||
|         run: rm -rf $RUNNER_TOOL_CACHE/* | ||||
|       - name: Setup node 14 | ||||
|       - name: Setup node 24 | ||||
|         uses: ./ | ||||
|         with: | ||||
|           node-version: 14.x | ||||
|           node-version: 24.x | ||||
|       - name: Verify node and npm | ||||
|         run: __tests__/verify-node.sh 14 | ||||
|         run: __tests__/verify-node.sh 24 | ||||
|  | ||||
|   test-bypass-proxy: | ||||
|     runs-on: ubuntu-latest | ||||
| @@ -41,12 +41,12 @@ jobs: | ||||
|       https_proxy: http://no-such-proxy:3128 | ||||
|       no_proxy: api.github.com,github.com,nodejs.org,registry.npmjs.org,*.s3.amazonaws.com,s3.amazonaws.com | ||||
|     steps: | ||||
|       - uses: actions/checkout@v4 | ||||
|       - uses: actions/checkout@v5 | ||||
|       - name: Clear tool cache | ||||
|         run: rm -rf $RUNNER_TOOL_CACHE/* | ||||
|       - name: Setup node 11 | ||||
|       - name: Setup node 24 | ||||
|         uses: ./ | ||||
|         with: | ||||
|           node-version: 11 | ||||
|           node-version: 24 | ||||
|       - name: Verify node and npm | ||||
|         run: __tests__/verify-node.sh 11 | ||||
|         run: __tests__/verify-node.sh 24 | ||||
|   | ||||
| @@ -14,7 +14,7 @@ jobs: | ||||
|  | ||||
|     steps: | ||||
|       - name: Checking out | ||||
|         uses: actions/checkout@v4 | ||||
|         uses: actions/checkout@v5 | ||||
|       - name: Publish | ||||
|         id: publish | ||||
|         uses: actions/publish-immutable-action@v0.0.4 | ||||
|   | ||||
| @@ -22,7 +22,7 @@ jobs: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|       - name: Update the ${{ env.TAG_NAME }} tag | ||||
|         uses: actions/publish-action@v0.3.0 | ||||
|         uses: actions/publish-action@v0.4.0 | ||||
|         with: | ||||
|           source-tag: ${{ env.TAG_NAME }} | ||||
|           slack-webhook: ${{ secrets.SLACK_WEBHOOK }} | ||||
|   | ||||
							
								
								
									
										70
									
								
								.github/workflows/versions.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										70
									
								
								.github/workflows/versions.yml
									
									
									
									
										vendored
									
									
								
							| @@ -17,10 +17,10 @@ jobs: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-13] | ||||
|         node-version: [18, 20, 22] | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large] | ||||
|         node-version: [20, 22, 24] | ||||
|     steps: | ||||
|       - uses: actions/checkout@v4 | ||||
|       - uses: actions/checkout@v5 | ||||
|       - name: Setup Node | ||||
|         uses: ./ | ||||
|         with: | ||||
| @@ -34,10 +34,10 @@ jobs: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [ubuntu-latest, windows-latest, macos-13] | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest-large] | ||||
|         node-version: [lts/dubnium, lts/erbium, lts/fermium, lts/*, lts/-1] | ||||
|     steps: | ||||
|       - uses: actions/checkout@v4 | ||||
|       - uses: actions/checkout@v5 | ||||
|       - name: Setup Node | ||||
|         uses: ./ | ||||
|         with: | ||||
| @@ -56,7 +56,7 @@ jobs: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-13] | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large] | ||||
|         node-version: | ||||
|           [ | ||||
|             '20-v8-canary', | ||||
| @@ -64,7 +64,7 @@ jobs: | ||||
|             '20.0.0-v8-canary20221101e50e45c9f8' | ||||
|           ] | ||||
|     steps: | ||||
|       - uses: actions/checkout@v4 | ||||
|       - uses: actions/checkout@v5 | ||||
|       - name: Setup Node | ||||
|         uses: ./ | ||||
|         with: | ||||
| @@ -81,10 +81,10 @@ jobs: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-13] | ||||
|         node-version: [20-nightly, 21-nightly, 18.0.0-nightly] | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large] | ||||
|         node-version: [20-nightly, 25-nightly, 24.0.0-nightly] | ||||
|     steps: | ||||
|       - uses: actions/checkout@v4 | ||||
|       - uses: actions/checkout@v5 | ||||
|       - name: Setup Node | ||||
|         uses: ./ | ||||
|         with: | ||||
| @@ -101,10 +101,10 @@ jobs: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-13] | ||||
|         node-version: [20.0.0-rc.1, 18.0.0-rc.2, 19.0.0-rc.0] | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large] | ||||
|         node-version: [20.0.0-rc.1, 22.14.0-rc.1, 24.0.0-rc.4] | ||||
|     steps: | ||||
|       - uses: actions/checkout@v4 | ||||
|       - uses: actions/checkout@v5 | ||||
|       - name: Setup Node | ||||
|         uses: ./ | ||||
|         with: | ||||
| @@ -121,10 +121,10 @@ jobs: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-13] | ||||
|         node-version: [18.20.0, 20.10.0, 22.0.0] | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large] | ||||
|         node-version: [20.10.0, 22.0.0, 24.9.0] | ||||
|     steps: | ||||
|       - uses: actions/checkout@v4 | ||||
|       - uses: actions/checkout@v5 | ||||
|       - name: Setup Node | ||||
|         uses: ./ | ||||
|         with: | ||||
| @@ -138,10 +138,10 @@ jobs: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-13] | ||||
|         node-version: [18, 20, 22] | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large] | ||||
|         node-version: [20, 22, 24] | ||||
|     steps: | ||||
|       - uses: actions/checkout@v4 | ||||
|       - uses: actions/checkout@v5 | ||||
|       - name: Setup Node and check latest | ||||
|         uses: ./ | ||||
|         with: | ||||
| @@ -156,57 +156,57 @@ jobs: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-13] | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large] | ||||
|         node-version-file: | ||||
|           [.nvmrc, .tool-versions, .tool-versions-node, package.json] | ||||
|     steps: | ||||
|       - uses: actions/checkout@v4 | ||||
|       - uses: actions/checkout@v5 | ||||
|       - name: Setup node from node version file | ||||
|         uses: ./ | ||||
|         with: | ||||
|           node-version-file: '__tests__/data/${{ matrix.node-version-file }}' | ||||
|       - name: Verify node | ||||
|         run: __tests__/verify-node.sh 20 | ||||
|         run: __tests__/verify-node.sh 24 | ||||
|  | ||||
|   version-file-volta: | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-13] | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large] | ||||
|     steps: | ||||
|       - uses: actions/checkout@v4 | ||||
|       - uses: actions/checkout@v5 | ||||
|       - name: Setup node from node version file | ||||
|         uses: ./ | ||||
|         with: | ||||
|           node-version-file: '__tests__/data/package-volta.json' | ||||
|       - name: Verify node | ||||
|         run: __tests__/verify-node.sh 20 | ||||
|         run: __tests__/verify-node.sh 24 | ||||
|  | ||||
|   version-file-volta-extends: | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-13] | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large] | ||||
|     steps: | ||||
|       - uses: actions/checkout@v4 | ||||
|       - uses: actions/checkout@v5 | ||||
|       - name: Setup node from node version file | ||||
|         uses: ./ | ||||
|         with: | ||||
|           node-version-file: '__tests__/data/package-volta-extends.json' | ||||
|       - name: Verify node | ||||
|         run: __tests__/verify-node.sh 20 | ||||
|         run: __tests__/verify-node.sh 24 | ||||
|  | ||||
|   node-dist: | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-13] | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large] | ||||
|         node-version: [17, 19] | ||||
|     steps: | ||||
|       - uses: actions/checkout@v4 | ||||
|       - uses: actions/checkout@v5 | ||||
|       - name: Setup Node from dist | ||||
|         uses: ./ | ||||
|         with: | ||||
| @@ -220,9 +220,9 @@ jobs: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [ubuntu-latest, windows-latest, macos-13] | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest-large] | ||||
|     steps: | ||||
|       - uses: actions/checkout@v4 | ||||
|       - uses: actions/checkout@v5 | ||||
|       # test old versions which didn't have npm and layout different | ||||
|       - name: Setup node 0.12.18 from dist | ||||
|         uses: ./ | ||||
| @@ -235,7 +235,7 @@ jobs: | ||||
|   arch: | ||||
|     runs-on: windows-latest | ||||
|     steps: | ||||
|       - uses: actions/checkout@v4 | ||||
|       - uses: actions/checkout@v5 | ||||
|       - name: Setup node 20 x86 from dist | ||||
|         uses: ./ | ||||
|         with: | ||||
| @@ -250,7 +250,7 @@ jobs: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-13] | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large] | ||||
|         node-version: [current, latest, node] | ||||
|     steps: | ||||
|       - name: Get node version | ||||
| @@ -259,7 +259,7 @@ jobs: | ||||
|           echo "LATEST_NODE_VERSION=$latestNodeVersion" >> $GITHUB_OUTPUT | ||||
|         id: version | ||||
|         shell: bash | ||||
|       - uses: actions/checkout@v4 | ||||
|       - uses: actions/checkout@v5 | ||||
|       - name: Setup Node | ||||
|         uses: ./ | ||||
|         with: | ||||
|   | ||||
							
								
								
									
										2
									
								
								.licenses/npm/@types/node.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								.licenses/npm/@types/node.dep.yml
									
									
									
										generated
									
									
									
								
							| @@ -1,6 +1,6 @@ | ||||
| --- | ||||
| name: "@types/node" | ||||
| version: 20.11.25 | ||||
| version: 24.1.0 | ||||
| type: npm | ||||
| summary: TypeScript definitions for node | ||||
| homepage: https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node | ||||
|   | ||||
							
								
								
									
										2
									
								
								.licenses/npm/brace-expansion.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								.licenses/npm/brace-expansion.dep.yml
									
									
									
										generated
									
									
									
								
							| @@ -1,6 +1,6 @@ | ||||
| --- | ||||
| name: brace-expansion | ||||
| version: 1.1.11 | ||||
| version: 1.1.12 | ||||
| type: npm | ||||
| summary: Brace expansion as known from sh/bash | ||||
| homepage: https://github.com/juliangruber/brace-expansion | ||||
|   | ||||
							
								
								
									
										32
									
								
								.licenses/npm/call-bind-apply-helpers.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								.licenses/npm/call-bind-apply-helpers.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | ||||
| --- | ||||
| name: call-bind-apply-helpers | ||||
| version: 1.0.2 | ||||
| type: npm | ||||
| summary: Helper functions around Function call/apply/bind, for use in `call-bind` | ||||
| homepage: https://github.com/ljharb/call-bind-apply-helpers#readme | ||||
| license: mit | ||||
| licenses: | ||||
| - sources: LICENSE | ||||
|   text: | | ||||
|     MIT License | ||||
| 
 | ||||
|     Copyright (c) 2024 Jordan Harband | ||||
| 
 | ||||
|     Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
|     of this software and associated documentation files (the "Software"), to deal | ||||
|     in the Software without restriction, including without limitation the rights | ||||
|     to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
|     copies of the Software, and to permit persons to whom the Software is | ||||
|     furnished to do so, subject to the following conditions: | ||||
| 
 | ||||
|     The above copyright notice and this permission notice shall be included in all | ||||
|     copies or substantial portions of the Software. | ||||
| 
 | ||||
|     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
|     IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
|     FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
|     AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
|     LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
|     OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||
|     SOFTWARE. | ||||
| notices: [] | ||||
							
								
								
									
										32
									
								
								.licenses/npm/dunder-proto.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								.licenses/npm/dunder-proto.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | ||||
| --- | ||||
| name: dunder-proto | ||||
| version: 1.0.1 | ||||
| type: npm | ||||
| summary: If available, the `Object.prototype.__proto__` accessor and mutator, call-bound | ||||
| homepage: https://github.com/es-shims/dunder-proto#readme | ||||
| license: mit | ||||
| licenses: | ||||
| - sources: LICENSE | ||||
|   text: | | ||||
|     MIT License | ||||
| 
 | ||||
|     Copyright (c) 2024 ECMAScript Shims | ||||
| 
 | ||||
|     Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
|     of this software and associated documentation files (the "Software"), to deal | ||||
|     in the Software without restriction, including without limitation the rights | ||||
|     to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
|     copies of the Software, and to permit persons to whom the Software is | ||||
|     furnished to do so, subject to the following conditions: | ||||
| 
 | ||||
|     The above copyright notice and this permission notice shall be included in all | ||||
|     copies or substantial portions of the Software. | ||||
| 
 | ||||
|     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
|     IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
|     FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
|     AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
|     LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
|     OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||
|     SOFTWARE. | ||||
| notices: [] | ||||
							
								
								
									
										32
									
								
								.licenses/npm/es-define-property.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								.licenses/npm/es-define-property.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | ||||
| --- | ||||
| name: es-define-property | ||||
| version: 1.0.1 | ||||
| type: npm | ||||
| summary: "`Object.defineProperty`, but not IE 8's broken one." | ||||
| homepage: https://github.com/ljharb/es-define-property#readme | ||||
| license: mit | ||||
| licenses: | ||||
| - sources: LICENSE | ||||
|   text: | | ||||
|     MIT License | ||||
| 
 | ||||
|     Copyright (c) 2024 Jordan Harband | ||||
| 
 | ||||
|     Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
|     of this software and associated documentation files (the "Software"), to deal | ||||
|     in the Software without restriction, including without limitation the rights | ||||
|     to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
|     copies of the Software, and to permit persons to whom the Software is | ||||
|     furnished to do so, subject to the following conditions: | ||||
| 
 | ||||
|     The above copyright notice and this permission notice shall be included in all | ||||
|     copies or substantial portions of the Software. | ||||
| 
 | ||||
|     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
|     IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
|     FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
|     AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
|     LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
|     OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||
|     SOFTWARE. | ||||
| notices: [] | ||||
							
								
								
									
										32
									
								
								.licenses/npm/es-errors.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								.licenses/npm/es-errors.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | ||||
| --- | ||||
| name: es-errors | ||||
| version: 1.3.0 | ||||
| type: npm | ||||
| summary: A simple cache for a few of the JS Error constructors. | ||||
| homepage: https://github.com/ljharb/es-errors#readme | ||||
| license: mit | ||||
| licenses: | ||||
| - sources: LICENSE | ||||
|   text: | | ||||
|     MIT License | ||||
| 
 | ||||
|     Copyright (c) 2024 Jordan Harband | ||||
| 
 | ||||
|     Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
|     of this software and associated documentation files (the "Software"), to deal | ||||
|     in the Software without restriction, including without limitation the rights | ||||
|     to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
|     copies of the Software, and to permit persons to whom the Software is | ||||
|     furnished to do so, subject to the following conditions: | ||||
| 
 | ||||
|     The above copyright notice and this permission notice shall be included in all | ||||
|     copies or substantial portions of the Software. | ||||
| 
 | ||||
|     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
|     IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
|     FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
|     AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
|     LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
|     OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||
|     SOFTWARE. | ||||
| notices: [] | ||||
							
								
								
									
										32
									
								
								.licenses/npm/es-object-atoms.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								.licenses/npm/es-object-atoms.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | ||||
| --- | ||||
| name: es-object-atoms | ||||
| version: 1.1.1 | ||||
| type: npm | ||||
| summary: 'ES Object-related atoms: Object, ToObject, RequireObjectCoercible' | ||||
| homepage: https://github.com/ljharb/es-object-atoms#readme | ||||
| license: mit | ||||
| licenses: | ||||
| - sources: LICENSE | ||||
|   text: | | ||||
|     MIT License | ||||
| 
 | ||||
|     Copyright (c) 2024 Jordan Harband | ||||
| 
 | ||||
|     Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
|     of this software and associated documentation files (the "Software"), to deal | ||||
|     in the Software without restriction, including without limitation the rights | ||||
|     to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
|     copies of the Software, and to permit persons to whom the Software is | ||||
|     furnished to do so, subject to the following conditions: | ||||
| 
 | ||||
|     The above copyright notice and this permission notice shall be included in all | ||||
|     copies or substantial portions of the Software. | ||||
| 
 | ||||
|     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
|     IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
|     FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
|     AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
|     LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
|     OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||
|     SOFTWARE. | ||||
| notices: [] | ||||
							
								
								
									
										32
									
								
								.licenses/npm/es-set-tostringtag.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								.licenses/npm/es-set-tostringtag.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | ||||
| --- | ||||
| name: es-set-tostringtag | ||||
| version: 2.1.0 | ||||
| type: npm | ||||
| summary: A helper to optimistically set Symbol.toStringTag, when possible. | ||||
| homepage: https://github.com/es-shims/es-set-tostringtag#readme | ||||
| license: mit | ||||
| licenses: | ||||
| - sources: LICENSE | ||||
|   text: | | ||||
|     MIT License | ||||
| 
 | ||||
|     Copyright (c) 2022 ECMAScript Shims | ||||
| 
 | ||||
|     Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
|     of this software and associated documentation files (the "Software"), to deal | ||||
|     in the Software without restriction, including without limitation the rights | ||||
|     to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
|     copies of the Software, and to permit persons to whom the Software is | ||||
|     furnished to do so, subject to the following conditions: | ||||
| 
 | ||||
|     The above copyright notice and this permission notice shall be included in all | ||||
|     copies or substantial portions of the Software. | ||||
| 
 | ||||
|     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
|     IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
|     FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
|     AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
|     LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
|     OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||
|     SOFTWARE. | ||||
| notices: [] | ||||
| @@ -1,10 +1,10 @@ | ||||
| --- | ||||
| name: form-data | ||||
| version: 2.5.1 | ||||
| version: 2.5.5 | ||||
| type: npm | ||||
| summary: A library to create readable "multipart/form-data" streams. Can be used to | ||||
|   submit forms and file uploads to other web applications. | ||||
| homepage: https://github.com/form-data/form-data#readme | ||||
| homepage: | ||||
| license: mit | ||||
| licenses: | ||||
| - sources: License | ||||
| @@ -1,10 +1,10 @@ | ||||
| --- | ||||
| name: form-data | ||||
| version: 4.0.0 | ||||
| version: 4.0.4 | ||||
| type: npm | ||||
| summary: A library to create readable "multipart/form-data" streams. Can be used to | ||||
|   submit forms and file uploads to other web applications. | ||||
| homepage: https://github.com/form-data/form-data#readme | ||||
| homepage: | ||||
| license: mit | ||||
| licenses: | ||||
| - sources: License | ||||
| @@ -28,6 +28,6 @@ licenses: | ||||
|      LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
|      OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||||
|      THE SOFTWARE. | ||||
| - sources: Readme.md | ||||
| - sources: README.md | ||||
|   text: Form-Data is released under the [MIT](License) license. | ||||
| notices: [] | ||||
							
								
								
									
										32
									
								
								.licenses/npm/function-bind.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								.licenses/npm/function-bind.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | ||||
| --- | ||||
| name: function-bind | ||||
| version: 1.1.2 | ||||
| type: npm | ||||
| summary: Implementation of Function.prototype.bind | ||||
| homepage: https://github.com/Raynos/function-bind | ||||
| license: mit | ||||
| licenses: | ||||
| - sources: LICENSE | ||||
|   text: |+ | ||||
|     Copyright (c) 2013 Raynos. | ||||
| 
 | ||||
|     Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
|     of this software and associated documentation files (the "Software"), to deal | ||||
|     in the Software without restriction, including without limitation the rights | ||||
|     to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
|     copies of the Software, and to permit persons to whom the Software is | ||||
|     furnished to do so, subject to the following conditions: | ||||
| 
 | ||||
|     The above copyright notice and this permission notice shall be included in | ||||
|     all copies or substantial portions of the Software. | ||||
| 
 | ||||
|     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
|     IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
|     FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
|     AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
|     LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
|     OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||||
|     THE SOFTWARE. | ||||
| 
 | ||||
| notices: [] | ||||
| ... | ||||
							
								
								
									
										33
									
								
								.licenses/npm/get-intrinsic.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								.licenses/npm/get-intrinsic.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,33 @@ | ||||
| --- | ||||
| name: get-intrinsic | ||||
| version: 1.3.0 | ||||
| type: npm | ||||
| summary: Get and robustly cache all JS language-level intrinsics at first require | ||||
|   time | ||||
| homepage: https://github.com/ljharb/get-intrinsic#readme | ||||
| license: mit | ||||
| licenses: | ||||
| - sources: LICENSE | ||||
|   text: | | ||||
|     MIT License | ||||
| 
 | ||||
|     Copyright (c) 2020 Jordan Harband | ||||
| 
 | ||||
|     Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
|     of this software and associated documentation files (the "Software"), to deal | ||||
|     in the Software without restriction, including without limitation the rights | ||||
|     to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
|     copies of the Software, and to permit persons to whom the Software is | ||||
|     furnished to do so, subject to the following conditions: | ||||
| 
 | ||||
|     The above copyright notice and this permission notice shall be included in all | ||||
|     copies or substantial portions of the Software. | ||||
| 
 | ||||
|     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
|     IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
|     FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
|     AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
|     LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
|     OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||
|     SOFTWARE. | ||||
| notices: [] | ||||
							
								
								
									
										32
									
								
								.licenses/npm/get-proto.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								.licenses/npm/get-proto.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | ||||
| --- | ||||
| name: get-proto | ||||
| version: 1.0.1 | ||||
| type: npm | ||||
| summary: Robustly get the [[Prototype]] of an object | ||||
| homepage: https://github.com/ljharb/get-proto#readme | ||||
| license: mit | ||||
| licenses: | ||||
| - sources: LICENSE | ||||
|   text: | | ||||
|     MIT License | ||||
| 
 | ||||
|     Copyright (c) 2025 Jordan Harband | ||||
| 
 | ||||
|     Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
|     of this software and associated documentation files (the "Software"), to deal | ||||
|     in the Software without restriction, including without limitation the rights | ||||
|     to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
|     copies of the Software, and to permit persons to whom the Software is | ||||
|     furnished to do so, subject to the following conditions: | ||||
| 
 | ||||
|     The above copyright notice and this permission notice shall be included in all | ||||
|     copies or substantial portions of the Software. | ||||
| 
 | ||||
|     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
|     IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
|     FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
|     AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
|     LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
|     OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||
|     SOFTWARE. | ||||
| notices: [] | ||||
							
								
								
									
										32
									
								
								.licenses/npm/gopd.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								.licenses/npm/gopd.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | ||||
| --- | ||||
| name: gopd | ||||
| version: 1.2.0 | ||||
| type: npm | ||||
| summary: "`Object.getOwnPropertyDescriptor`, but accounts for IE's broken implementation." | ||||
| homepage: https://github.com/ljharb/gopd#readme | ||||
| license: mit | ||||
| licenses: | ||||
| - sources: LICENSE | ||||
|   text: | | ||||
|     MIT License | ||||
| 
 | ||||
|     Copyright (c) 2022 Jordan Harband | ||||
| 
 | ||||
|     Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
|     of this software and associated documentation files (the "Software"), to deal | ||||
|     in the Software without restriction, including without limitation the rights | ||||
|     to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
|     copies of the Software, and to permit persons to whom the Software is | ||||
|     furnished to do so, subject to the following conditions: | ||||
| 
 | ||||
|     The above copyright notice and this permission notice shall be included in all | ||||
|     copies or substantial portions of the Software. | ||||
| 
 | ||||
|     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
|     IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
|     FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
|     AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
|     LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
|     OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||
|     SOFTWARE. | ||||
| notices: [] | ||||
							
								
								
									
										32
									
								
								.licenses/npm/has-symbols.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								.licenses/npm/has-symbols.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | ||||
| --- | ||||
| name: has-symbols | ||||
| version: 1.1.0 | ||||
| type: npm | ||||
| summary: Determine if the JS environment has Symbol support. Supports spec, or shams. | ||||
| homepage: https://github.com/ljharb/has-symbols#readme | ||||
| license: mit | ||||
| licenses: | ||||
| - sources: LICENSE | ||||
|   text: | | ||||
|     MIT License | ||||
| 
 | ||||
|     Copyright (c) 2016 Jordan Harband | ||||
| 
 | ||||
|     Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
|     of this software and associated documentation files (the "Software"), to deal | ||||
|     in the Software without restriction, including without limitation the rights | ||||
|     to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
|     copies of the Software, and to permit persons to whom the Software is | ||||
|     furnished to do so, subject to the following conditions: | ||||
| 
 | ||||
|     The above copyright notice and this permission notice shall be included in all | ||||
|     copies or substantial portions of the Software. | ||||
| 
 | ||||
|     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
|     IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
|     FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
|     AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
|     LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
|     OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||
|     SOFTWARE. | ||||
| notices: [] | ||||
							
								
								
									
										33
									
								
								.licenses/npm/has-tostringtag.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								.licenses/npm/has-tostringtag.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,33 @@ | ||||
| --- | ||||
| name: has-tostringtag | ||||
| version: 1.0.2 | ||||
| type: npm | ||||
| summary: Determine if the JS environment has `Symbol.toStringTag` support. Supports | ||||
|   spec, or shams. | ||||
| homepage: https://github.com/inspect-js/has-tostringtag#readme | ||||
| license: mit | ||||
| licenses: | ||||
| - sources: LICENSE | ||||
|   text: | | ||||
|     MIT License | ||||
| 
 | ||||
|     Copyright (c) 2021 Inspect JS | ||||
| 
 | ||||
|     Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
|     of this software and associated documentation files (the "Software"), to deal | ||||
|     in the Software without restriction, including without limitation the rights | ||||
|     to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
|     copies of the Software, and to permit persons to whom the Software is | ||||
|     furnished to do so, subject to the following conditions: | ||||
| 
 | ||||
|     The above copyright notice and this permission notice shall be included in all | ||||
|     copies or substantial portions of the Software. | ||||
| 
 | ||||
|     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
|     IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
|     FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
|     AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
|     LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
|     OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||
|     SOFTWARE. | ||||
| notices: [] | ||||
							
								
								
									
										32
									
								
								.licenses/npm/hasown.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								.licenses/npm/hasown.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | ||||
| --- | ||||
| name: hasown | ||||
| version: 2.0.2 | ||||
| type: npm | ||||
| summary: A robust, ES3 compatible, "has own property" predicate. | ||||
| homepage: https://github.com/inspect-js/hasOwn#readme | ||||
| license: mit | ||||
| licenses: | ||||
| - sources: LICENSE | ||||
|   text: | | ||||
|     MIT License | ||||
| 
 | ||||
|     Copyright (c) Jordan Harband and contributors | ||||
| 
 | ||||
|     Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
|     of this software and associated documentation files (the "Software"), to deal | ||||
|     in the Software without restriction, including without limitation the rights | ||||
|     to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
|     copies of the Software, and to permit persons to whom the Software is | ||||
|     furnished to do so, subject to the following conditions: | ||||
| 
 | ||||
|     The above copyright notice and this permission notice shall be included in all | ||||
|     copies or substantial portions of the Software. | ||||
| 
 | ||||
|     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
|     IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
|     FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
|     AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
|     LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
|     OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||
|     SOFTWARE. | ||||
| notices: [] | ||||
							
								
								
									
										32
									
								
								.licenses/npm/math-intrinsics.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								.licenses/npm/math-intrinsics.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | ||||
| --- | ||||
| name: math-intrinsics | ||||
| version: 1.1.0 | ||||
| type: npm | ||||
| summary: ES Math-related intrinsics and helpers, robustly cached. | ||||
| homepage: https://github.com/es-shims/math-intrinsics#readme | ||||
| license: mit | ||||
| licenses: | ||||
| - sources: LICENSE | ||||
|   text: | | ||||
|     MIT License | ||||
| 
 | ||||
|     Copyright (c) 2024 ECMAScript Shims | ||||
| 
 | ||||
|     Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
|     of this software and associated documentation files (the "Software"), to deal | ||||
|     in the Software without restriction, including without limitation the rights | ||||
|     to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
|     copies of the Software, and to permit persons to whom the Software is | ||||
|     furnished to do so, subject to the following conditions: | ||||
| 
 | ||||
|     The above copyright notice and this permission notice shall be included in all | ||||
|     copies or substantial portions of the Software. | ||||
| 
 | ||||
|     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
|     IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
|     FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
|     AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
|     LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
|     OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||
|     SOFTWARE. | ||||
| notices: [] | ||||
							
								
								
									
										34
									
								
								.licenses/npm/safe-buffer.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								.licenses/npm/safe-buffer.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,34 @@ | ||||
| --- | ||||
| name: safe-buffer | ||||
| version: 5.2.1 | ||||
| type: npm | ||||
| summary: Safer Node.js Buffer API | ||||
| homepage: https://github.com/feross/safe-buffer | ||||
| license: mit | ||||
| licenses: | ||||
| - sources: LICENSE | ||||
|   text: | | ||||
|     The MIT License (MIT) | ||||
| 
 | ||||
|     Copyright (c) Feross Aboukhadijeh | ||||
| 
 | ||||
|     Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
|     of this software and associated documentation files (the "Software"), to deal | ||||
|     in the Software without restriction, including without limitation the rights | ||||
|     to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
|     copies of the Software, and to permit persons to whom the Software is | ||||
|     furnished to do so, subject to the following conditions: | ||||
| 
 | ||||
|     The above copyright notice and this permission notice shall be included in | ||||
|     all copies or substantial portions of the Software. | ||||
| 
 | ||||
|     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
|     IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
|     FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
|     AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
|     LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
|     OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||||
|     THE SOFTWARE. | ||||
| - sources: README.md | ||||
|   text: MIT. Copyright (C) [Feross Aboukhadijeh](http://feross.org) | ||||
| notices: [] | ||||
| @@ -1,6 +1,6 @@ | ||||
| --- | ||||
| name: semver | ||||
| version: 7.6.3 | ||||
| version: 7.7.2 | ||||
| type: npm | ||||
| summary: The semantic version parser used by npm. | ||||
| homepage: | ||||
							
								
								
									
										6
									
								
								.licenses/npm/undici-types.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										6
									
								
								.licenses/npm/undici-types.dep.yml
									
									
									
										generated
									
									
									
								
							| @@ -1,15 +1,17 @@ | ||||
| --- | ||||
| name: undici-types | ||||
| version: 5.26.5 | ||||
| version: 7.8.0 | ||||
| type: npm | ||||
| summary: A stand-alone types package for Undici | ||||
| homepage: https://undici.nodejs.org | ||||
| license: mit | ||||
| licenses: | ||||
| - sources: Auto-generated MIT license text | ||||
| - sources: LICENSE | ||||
|   text: | | ||||
|     MIT License | ||||
| 
 | ||||
|     Copyright (c) Matteo Collina and Undici contributors | ||||
| 
 | ||||
|     Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
|     of this software and associated documentation files (the "Software"), to deal | ||||
|     in the Software without restriction, including without limitation the rights | ||||
|   | ||||
							
								
								
									
										73
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										73
									
								
								README.md
									
									
									
									
									
								
							| @@ -12,13 +12,27 @@ This action provides the following functionality for GitHub Actions users: | ||||
| - Registering problem matchers for error output | ||||
| - Configuring authentication for GPR or npm | ||||
|  | ||||
| ## Breaking changes in V6 | ||||
|  | ||||
| - Caching is now automatically enabled for npm projects when either the `devEngines.packageManager` field or the top-level `packageManager` field in `package.json` is set to `npm`. For other package managers, such as Yarn and pnpm, caching is disabled by default and must be configured manually using the `cache` input. | ||||
|  | ||||
| ## Breaking changes in V5  | ||||
|  | ||||
| - Enabled caching by default with package manager detection if no cache input is provided. | ||||
|   > For workflows with elevated privileges or access to sensitive information, we recommend disabling automatic caching by setting `package-manager-cache: false` when caching is not needed for secure operation. | ||||
|  | ||||
| - Upgraded action from node20 to node24. | ||||
|   > Make sure your runner is on version v2.327.1 or later to ensure compatibility with this release. [See Release Notes](https://github.com/actions/runner/releases/tag/v2.327.1) | ||||
|  | ||||
| For more details, see the full release notes on the [releases page](https://github.com/actions/setup-node/releases/v5.0.0) | ||||
|  | ||||
| ## Usage | ||||
|  | ||||
| See [action.yml](action.yml) | ||||
|  | ||||
| <!-- start usage --> | ||||
| ```yaml | ||||
| - uses: actions/setup-node@v4 | ||||
| - uses: actions/setup-node@v6 | ||||
|   with: | ||||
|     # Version Spec of the version to use in SemVer notation. | ||||
|     # It also admits such aliases as lts/*, latest, nightly and canary builds | ||||
| @@ -57,6 +71,11 @@ See [action.yml](action.yml) | ||||
|     # Default: '' | ||||
|     cache: '' | ||||
|  | ||||
|     # Controls automatic caching for npm. By default, caching for npm is enabled if either the devEngines.packageManager field or the top-level packageManager field in package.json specifies npm and no explicit cache input is provided. | ||||
|     # To disable automatic caching for npm, set package-manager-cache to false. | ||||
|     # default: true | ||||
|     package-manager-cache: true | ||||
|  | ||||
|     # Used to specify the path to a dependency file: package-lock.json, yarn.lock, etc.  | ||||
|     # It will generate hash from the target file for primary key. It works only If cache is specified.   | ||||
|     # Supports wildcards or a list of file names for caching multiple dependencies. | ||||
| @@ -98,10 +117,10 @@ See [action.yml](action.yml) | ||||
|  | ||||
| ```yaml | ||||
| steps: | ||||
| - uses: actions/checkout@v4 | ||||
| - uses: actions/setup-node@v4 | ||||
| - uses: actions/checkout@v5 | ||||
| - uses: actions/setup-node@v6 | ||||
|   with: | ||||
|     node-version: 18 | ||||
|     node-version: 24 | ||||
| - run: npm ci | ||||
| - run: npm test | ||||
| ``` | ||||
| @@ -118,9 +137,9 @@ The `node-version` input supports the Semantic Versioning Specification, for mor | ||||
|  | ||||
| Examples: | ||||
|  | ||||
|  - Major versions: `18`, `20` | ||||
|  - More specific versions: `10.15`, `16.15.1` , `18.4.0` | ||||
|  - NVM LTS syntax: `lts/erbium`, `lts/fermium`, `lts/*`, `lts/-n` | ||||
|  - Major versions: `22`, `24` | ||||
|  - More specific versions: `20.19`, `22.17.1` , `24.8.0` | ||||
|  - NVM LTS syntax: `lts/iron`, `lts/jod`, `lts/*`, `lts/-n` | ||||
|  - Latest release: `*` or `latest`/`current`/`node` | ||||
|  | ||||
| **Note:** Like the other values, `*` will get the latest [locally-cached Node.js version](https://github.com/actions/runner-images/blob/main/images/ubuntu/Ubuntu2204-Readme.md#nodejs), or the latest version from [actions/node-versions](https://github.com/actions/node-versions/blob/main/versions-manifest.json), depending on the [`check-latest`](docs/advanced-usage.md#check-latest-version) input. | ||||
| @@ -135,7 +154,7 @@ It's **always** recommended to commit the lockfile of your package manager for s | ||||
|  | ||||
| ## Caching global packages data | ||||
|  | ||||
| The action has a built-in functionality for caching and restoring dependencies. It uses [actions/cache](https://github.com/actions/cache) under the hood for caching global packages data but requires less configuration settings. Supported package managers are `npm`, `yarn`, `pnpm` (v6.10+). The `cache` input is optional, and caching is turned off by default. | ||||
| The action has a built-in functionality for caching and restoring dependencies. It uses [actions/cache](https://github.com/actions/cache) under the hood for caching global packages data but requires less configuration settings. Supported package managers are `npm`, `yarn`, `pnpm` (v6.10+). The `cache` input is optional. | ||||
|  | ||||
| The action defaults to search for the dependency file (`package-lock.json`, `npm-shrinkwrap.json` or `yarn.lock`) in the repository root, and uses its hash as a part of the cache key. Use `cache-dependency-path` for cases when multiple dependency files are used, or they are located in different subdirectories. | ||||
|  | ||||
| @@ -147,10 +166,10 @@ See the examples of using cache for `yarn`/`pnpm` and `cache-dependency-path` in | ||||
|  | ||||
| ```yaml | ||||
| steps: | ||||
| - uses: actions/checkout@v4 | ||||
| - uses: actions/setup-node@v4 | ||||
| - uses: actions/checkout@v5 | ||||
| - uses: actions/setup-node@v6 | ||||
|   with: | ||||
|     node-version: 20 | ||||
|     node-version: 24 | ||||
|     cache: 'npm' | ||||
| - run: npm ci | ||||
| - run: npm test | ||||
| @@ -160,16 +179,30 @@ steps: | ||||
|  | ||||
| ```yaml | ||||
| steps: | ||||
| - uses: actions/checkout@v4 | ||||
| - uses: actions/setup-node@v4 | ||||
| - uses: actions/checkout@v5 | ||||
| - uses: actions/setup-node@v6 | ||||
|   with: | ||||
|     node-version: 20 | ||||
|     node-version: 24 | ||||
|     cache: 'npm' | ||||
|     cache-dependency-path: subdir/package-lock.json | ||||
| - run: npm ci | ||||
| - run: npm test | ||||
| ``` | ||||
|  | ||||
| Caching for npm dependencies is automatically enabled when your `package.json` contains either `devEngines.packageManager` field or top-level `packageManager` field set to `npm`, and no explicit cache input is provided. | ||||
|  | ||||
| This behavior is controlled by the `package-manager-cache` input, which defaults to `true`. To turn off automatic caching, set `package-manager-cache` to `false`. | ||||
|  | ||||
| ```yaml | ||||
| steps: | ||||
| - uses: actions/checkout@v5 | ||||
| - uses: actions/setup-node@v6 | ||||
|   with: | ||||
|     package-manager-cache: false | ||||
| - run: npm ci | ||||
| ``` | ||||
| > If your `package.json` file does not include a `packageManager` field set to `npm`, caching will be disabled unless you explicitly enable it. For workflows with elevated privileges or access to sensitive information, we recommend disabling automatic caching for npm by setting `package-manager-cache: false` when caching is not required for secure operation. | ||||
|  | ||||
| ## Matrix Testing | ||||
|  | ||||
| ```yaml | ||||
| @@ -178,12 +211,12 @@ jobs: | ||||
|     runs-on: ubuntu-latest | ||||
|     strategy: | ||||
|       matrix: | ||||
|         node: [ 14, 16, 18 ] | ||||
|         node: [ 20, 22, 24 ] | ||||
|     name: Node ${{ matrix.node }} sample | ||||
|     steps: | ||||
|       - uses: actions/checkout@v4 | ||||
|       - uses: actions/checkout@v5 | ||||
|       - name: Setup node | ||||
|         uses: actions/setup-node@v4 | ||||
|         uses: actions/setup-node@v6 | ||||
|         with: | ||||
|           node-version: ${{ matrix.node }} | ||||
|       - run: npm ci | ||||
| @@ -197,10 +230,10 @@ jobs: | ||||
| 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 `token` input for the action: | ||||
|  | ||||
| ```yaml | ||||
| uses: actions/setup-node@v4 | ||||
| uses: actions/setup-node@v6 | ||||
| with: | ||||
|   token: ${{ secrets.GH_DOTCOM_TOKEN }} | ||||
|   node-version: 20 | ||||
|   node-version: 24 | ||||
| ``` | ||||
|  | ||||
| If the runner is not able to access github.com, any Nodejs versions requested during a workflow run must come from the runner's tool cache. See "[Setting up the tool cache on self-hosted runners without internet access](https://docs.github.com/en/enterprise-server@3.2/admin/github-actions/managing-access-to-actions-from-githubcom/setting-up-the-tool-cache-on-self-hosted-runners-without-internet-access)" for more information. | ||||
| @@ -238,4 +271,4 @@ Contributions are welcome! See [Contributor's Guide](docs/contributors.md) | ||||
|  | ||||
| ## Code of Conduct | ||||
|  | ||||
| :wave: Be nice. See [our code of conduct](CODE_OF_CONDUCT.md) | ||||
| :wave: Be nice. See [our code of conduct](CODE_OF_CONDUCT.md) | ||||
| @@ -114,10 +114,10 @@ describe('run', () => { | ||||
|         key === State.CachePackageManager | ||||
|           ? inputs['cache'] | ||||
|           : key === State.CachePrimaryKey || key === State.CacheMatchedKey | ||||
|           ? yarnFileHash | ||||
|           : key === State.CachePaths | ||||
|           ? '["/foo/bar"]' | ||||
|           : 'not expected' | ||||
|             ? yarnFileHash | ||||
|             : key === State.CachePaths | ||||
|               ? '["/foo/bar"]' | ||||
|               : 'not expected' | ||||
|       ); | ||||
|  | ||||
|       await run(); | ||||
| @@ -138,10 +138,10 @@ describe('run', () => { | ||||
|         key === State.CachePackageManager | ||||
|           ? inputs['cache'] | ||||
|           : key === State.CachePrimaryKey || key === State.CacheMatchedKey | ||||
|           ? yarnFileHash | ||||
|           : key === State.CachePaths | ||||
|           ? '["/foo/bar"]' | ||||
|           : 'not expected' | ||||
|             ? yarnFileHash | ||||
|             : key === State.CachePaths | ||||
|               ? '["/foo/bar"]' | ||||
|               : 'not expected' | ||||
|       ); | ||||
|  | ||||
|       await run(); | ||||
| @@ -162,10 +162,10 @@ describe('run', () => { | ||||
|         key === State.CachePackageManager | ||||
|           ? inputs['cache'] | ||||
|           : key === State.CachePrimaryKey || key === State.CacheMatchedKey | ||||
|           ? yarnFileHash | ||||
|           : key === State.CachePaths | ||||
|           ? '["/foo/bar"]' | ||||
|           : 'not expected' | ||||
|             ? yarnFileHash | ||||
|             : key === State.CachePaths | ||||
|               ? '["/foo/bar"]' | ||||
|               : 'not expected' | ||||
|       ); | ||||
|       getCommandOutputSpy.mockImplementationOnce(() => `${commonPath}/npm`); | ||||
|  | ||||
| @@ -184,10 +184,10 @@ describe('run', () => { | ||||
|         key === State.CachePackageManager | ||||
|           ? inputs['cache'] | ||||
|           : key === State.CachePrimaryKey || key === State.CacheMatchedKey | ||||
|           ? yarnFileHash | ||||
|           : key === State.CachePaths | ||||
|           ? '["/foo/bar"]' | ||||
|           : 'not expected' | ||||
|             ? yarnFileHash | ||||
|             : key === State.CachePaths | ||||
|               ? '["/foo/bar"]' | ||||
|               : 'not expected' | ||||
|       ); | ||||
|  | ||||
|       await run(); | ||||
| @@ -207,12 +207,12 @@ describe('run', () => { | ||||
|         key === State.CachePackageManager | ||||
|           ? inputs['cache'] | ||||
|           : key === State.CacheMatchedKey | ||||
|           ? yarnFileHash | ||||
|           : key === State.CachePrimaryKey | ||||
|           ? npmFileHash | ||||
|           : key === State.CachePaths | ||||
|           ? '["/foo/bar"]' | ||||
|           : 'not expected' | ||||
|             ? yarnFileHash | ||||
|             : key === State.CachePrimaryKey | ||||
|               ? npmFileHash | ||||
|               : key === State.CachePaths | ||||
|                 ? '["/foo/bar"]' | ||||
|                 : 'not expected' | ||||
|       ); | ||||
|  | ||||
|       await run(); | ||||
| @@ -237,12 +237,12 @@ describe('run', () => { | ||||
|         key === State.CachePackageManager | ||||
|           ? inputs['cache'] | ||||
|           : key === State.CacheMatchedKey | ||||
|           ? yarnFileHash | ||||
|           : key === State.CachePrimaryKey | ||||
|           ? npmFileHash | ||||
|           : key === State.CachePaths | ||||
|           ? '["/foo/bar"]' | ||||
|           : 'not expected' | ||||
|             ? yarnFileHash | ||||
|             : key === State.CachePrimaryKey | ||||
|               ? npmFileHash | ||||
|               : key === State.CachePaths | ||||
|                 ? '["/foo/bar"]' | ||||
|                 : 'not expected' | ||||
|       ); | ||||
|  | ||||
|       await run(); | ||||
| @@ -267,12 +267,12 @@ describe('run', () => { | ||||
|         key === State.CachePackageManager | ||||
|           ? inputs['cache'] | ||||
|           : key === State.CacheMatchedKey | ||||
|           ? npmFileHash | ||||
|           : key === State.CachePrimaryKey | ||||
|           ? yarnFileHash | ||||
|           : key === State.CachePaths | ||||
|           ? '["/foo/bar"]' | ||||
|           : 'not expected' | ||||
|             ? npmFileHash | ||||
|             : key === State.CachePrimaryKey | ||||
|               ? yarnFileHash | ||||
|               : key === State.CachePaths | ||||
|                 ? '["/foo/bar"]' | ||||
|                 : 'not expected' | ||||
|       ); | ||||
|  | ||||
|       await run(); | ||||
| @@ -297,12 +297,12 @@ describe('run', () => { | ||||
|         key === State.CachePackageManager | ||||
|           ? inputs['cache'] | ||||
|           : key === State.CacheMatchedKey | ||||
|           ? pnpmFileHash | ||||
|           : key === State.CachePrimaryKey | ||||
|           ? npmFileHash | ||||
|           : key === State.CachePaths | ||||
|           ? '["/foo/bar"]' | ||||
|           : 'not expected' | ||||
|             ? pnpmFileHash | ||||
|             : key === State.CachePrimaryKey | ||||
|               ? npmFileHash | ||||
|               : key === State.CachePaths | ||||
|                 ? '["/foo/bar"]' | ||||
|                 : 'not expected' | ||||
|       ); | ||||
|  | ||||
|       await run(); | ||||
| @@ -327,12 +327,12 @@ describe('run', () => { | ||||
|         key === State.CachePackageManager | ||||
|           ? inputs['cache'] | ||||
|           : key === State.CacheMatchedKey | ||||
|           ? npmFileHash | ||||
|           : key === State.CachePrimaryKey | ||||
|           ? yarnFileHash | ||||
|           : key === State.CachePaths | ||||
|           ? '["/foo/bar"]' | ||||
|           : 'not expected' | ||||
|             ? npmFileHash | ||||
|             : key === State.CachePrimaryKey | ||||
|               ? yarnFileHash | ||||
|               : key === State.CachePaths | ||||
|                 ? '["/foo/bar"]' | ||||
|                 : 'not expected' | ||||
|       ); | ||||
|       saveCacheSpy.mockImplementation(() => { | ||||
|         return -1; | ||||
| @@ -360,12 +360,12 @@ describe('run', () => { | ||||
|         key === State.CachePackageManager | ||||
|           ? inputs['cache'] | ||||
|           : key === State.CacheMatchedKey | ||||
|           ? npmFileHash | ||||
|           : key === State.CachePrimaryKey | ||||
|           ? yarnFileHash | ||||
|           : key === State.CachePaths | ||||
|           ? '["/foo/bar"]' | ||||
|           : 'not expected' | ||||
|             ? npmFileHash | ||||
|             : key === State.CachePrimaryKey | ||||
|               ? yarnFileHash | ||||
|               : key === State.CachePaths | ||||
|                 ? '["/foo/bar"]' | ||||
|                 : 'not expected' | ||||
|       ); | ||||
|       saveCacheSpy.mockImplementation(() => { | ||||
|         throw new cache.ValidationError('Validation failed'); | ||||
|   | ||||
| @@ -1 +1 @@ | ||||
| v20 | ||||
| v24 | ||||
|   | ||||
| @@ -1 +1 @@ | ||||
| nodejs 20.0.0 | ||||
| nodejs 24.0.0 | ||||
|   | ||||
| @@ -1 +1 @@ | ||||
| node 20.0.0 | ||||
| node 24.0.0 | ||||
|   | ||||
| @@ -3,6 +3,6 @@ | ||||
|     "node": "^14.0.0" | ||||
|   }, | ||||
|   "volta": { | ||||
|     "node": "20.0.0" | ||||
|     "node": "24.0.0" | ||||
|   } | ||||
| } | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| { | ||||
|   "engines": { | ||||
|     "node": "^20.0.0" | ||||
|     "node": "^24.0.0" | ||||
|   } | ||||
| } | ||||
|   | ||||
| @@ -20,6 +20,7 @@ describe('main tests', () => { | ||||
|  | ||||
|   let infoSpy: jest.SpyInstance; | ||||
|   let warningSpy: jest.SpyInstance; | ||||
|   let saveStateSpy: jest.SpyInstance; | ||||
|   let inSpy: jest.SpyInstance; | ||||
|   let setOutputSpy: jest.SpyInstance; | ||||
|   let startGroupSpy: jest.SpyInstance; | ||||
| @@ -53,6 +54,8 @@ describe('main tests', () => { | ||||
|     setOutputSpy.mockImplementation(() => {}); | ||||
|     warningSpy = jest.spyOn(core, 'warning'); | ||||
|     warningSpy.mockImplementation(() => {}); | ||||
|     saveStateSpy = jest.spyOn(core, 'saveState'); | ||||
|     saveStateSpy.mockImplementation(() => {}); | ||||
|     startGroupSpy = jest.spyOn(core, 'startGroup'); | ||||
|     startGroupSpy.mockImplementation(() => {}); | ||||
|     endGroupSpy = jest.spyOn(core, 'endGroup'); | ||||
| @@ -280,4 +283,149 @@ describe('main tests', () => { | ||||
|       ); | ||||
|     }); | ||||
|   }); | ||||
|  | ||||
|   describe('cache feature tests', () => { | ||||
|     it('Should enable caching when packageManager is npm and cache input is not provided', async () => { | ||||
|       inputs['package-manager-cache'] = 'true'; | ||||
|       inputs['cache'] = ''; | ||||
|       isCacheActionAvailable.mockImplementation(() => true); | ||||
|  | ||||
|       inSpy.mockImplementation(name => inputs[name]); | ||||
|       const readFileSpy = jest.spyOn(fs, 'readFileSync'); | ||||
|       readFileSpy.mockImplementation(() => | ||||
|         JSON.stringify({ | ||||
|           packageManager: 'npm@10.8.2' | ||||
|         }) | ||||
|       ); | ||||
|  | ||||
|       await main.run(); | ||||
|  | ||||
|       expect(saveStateSpy).toHaveBeenCalledWith(expect.anything(), 'npm'); | ||||
|     }); | ||||
|  | ||||
|     it('Should enable caching when devEngines.packageManager.name is "npm" and cache input is not provided', async () => { | ||||
|       inputs['package-manager-cache'] = 'true'; | ||||
|       inputs['cache'] = ''; | ||||
|       isCacheActionAvailable.mockImplementation(() => true); | ||||
|  | ||||
|       inSpy.mockImplementation(name => inputs[name]); | ||||
|       const readFileSpy = jest.spyOn(fs, 'readFileSync'); | ||||
|       readFileSpy.mockImplementation(() => | ||||
|         JSON.stringify({ | ||||
|           devEngines: { | ||||
|             packageManager: {name: 'npm'} | ||||
|           } | ||||
|         }) | ||||
|       ); | ||||
|  | ||||
|       await main.run(); | ||||
|  | ||||
|       expect(saveStateSpy).toHaveBeenCalledWith(expect.anything(), 'npm'); | ||||
|     }); | ||||
|  | ||||
|     it('Should enable caching when devEngines.packageManager is array and one entry has name "npm"', async () => { | ||||
|       inputs['package-manager-cache'] = 'true'; | ||||
|       inputs['cache'] = ''; | ||||
|       isCacheActionAvailable.mockImplementation(() => true); | ||||
|  | ||||
|       inSpy.mockImplementation(name => inputs[name]); | ||||
|       const readFileSpy = jest.spyOn(fs, 'readFileSync'); | ||||
|       readFileSpy.mockImplementation(() => | ||||
|         JSON.stringify({ | ||||
|           devEngines: { | ||||
|             packageManager: [{name: 'pnpm'}, {name: 'npm'}] | ||||
|           } | ||||
|         }) | ||||
|       ); | ||||
|  | ||||
|       await main.run(); | ||||
|  | ||||
|       expect(saveStateSpy).toHaveBeenCalledWith(expect.anything(), 'npm'); | ||||
|     }); | ||||
|  | ||||
|     it('Should not enable caching if packageManager is "pnpm@8.0.0" and cache input is not provided', async () => { | ||||
|       inputs['package-manager-cache'] = 'true'; | ||||
|       inputs['cache'] = ''; | ||||
|       inSpy.mockImplementation(name => inputs[name]); | ||||
|       const readFileSpy = jest.spyOn(fs, 'readFileSync'); | ||||
|       readFileSpy.mockImplementation(() => | ||||
|         JSON.stringify({ | ||||
|           packageManager: 'pnpm@8.0.0' | ||||
|         }) | ||||
|       ); | ||||
|  | ||||
|       await main.run(); | ||||
|  | ||||
|       expect(saveStateSpy).not.toHaveBeenCalled(); | ||||
|     }); | ||||
|  | ||||
|     it('Should not enable caching if devEngines.packageManager.name is "pnpm"', async () => { | ||||
|       inputs['package-manager-cache'] = 'true'; | ||||
|       inputs['cache'] = ''; | ||||
|       inSpy.mockImplementation(name => inputs[name]); | ||||
|       const readFileSpy = jest.spyOn(fs, 'readFileSync'); | ||||
|       readFileSpy.mockImplementation(() => | ||||
|         JSON.stringify({ | ||||
|           devEngines: { | ||||
|             packageManager: {name: 'pnpm'} | ||||
|           } | ||||
|         }) | ||||
|       ); | ||||
|  | ||||
|       await main.run(); | ||||
|  | ||||
|       expect(saveStateSpy).not.toHaveBeenCalled(); | ||||
|     }); | ||||
|  | ||||
|     it('Should not enable caching if devEngines.packageManager is array without "npm"', async () => { | ||||
|       inputs['package-manager-cache'] = 'true'; | ||||
|       inputs['cache'] = ''; | ||||
|       inSpy.mockImplementation(name => inputs[name]); | ||||
|       const readFileSpy = jest.spyOn(fs, 'readFileSync'); | ||||
|       readFileSpy.mockImplementation(() => | ||||
|         JSON.stringify({ | ||||
|           devEngines: { | ||||
|             packageManager: [{name: 'pnpm'}, {name: 'yarn'}] | ||||
|           } | ||||
|         }) | ||||
|       ); | ||||
|  | ||||
|       await main.run(); | ||||
|  | ||||
|       expect(saveStateSpy).not.toHaveBeenCalled(); | ||||
|     }); | ||||
|  | ||||
|     it('Should not enable caching if packageManager field is missing in package.json and cache input is not provided', async () => { | ||||
|       inputs['package-manager-cache'] = 'true'; | ||||
|       inputs['cache'] = ''; | ||||
|       inSpy.mockImplementation(name => inputs[name]); | ||||
|       const readFileSpy = jest.spyOn(fs, 'readFileSync'); | ||||
|       readFileSpy.mockImplementation(() => | ||||
|         JSON.stringify({ | ||||
|           // packageManager field is not present | ||||
|         }) | ||||
|       ); | ||||
|  | ||||
|       await main.run(); | ||||
|  | ||||
|       expect(saveStateSpy).not.toHaveBeenCalled(); | ||||
|     }); | ||||
|  | ||||
|     it('Should skip caching when package-manager-cache is false', async () => { | ||||
|       inputs['package-manager-cache'] = 'false'; | ||||
|       inputs['cache'] = ''; | ||||
|       inSpy.mockImplementation(name => inputs[name]); | ||||
|       await main.run(); | ||||
|       expect(saveStateSpy).not.toHaveBeenCalled(); | ||||
|     }); | ||||
|  | ||||
|     it('Should enable caching with cache input explicitly provided', async () => { | ||||
|       inputs['package-manager-cache'] = 'true'; | ||||
|       inputs['cache'] = 'npm'; | ||||
|       inSpy.mockImplementation(name => inputs[name]); | ||||
|       isCacheActionAvailable.mockImplementation(() => true); | ||||
|       await main.run(); | ||||
|       expect(saveStateSpy).toHaveBeenCalledWith(expect.anything(), 'npm'); | ||||
|     }); | ||||
|   }); | ||||
| }); | ||||
|   | ||||
| @@ -7,8 +7,13 @@ fi | ||||
|  | ||||
| node_version="$(node --version)" | ||||
| echo "Found node version '$node_version'" | ||||
| if [ -z "$(echo $node_version | grep --fixed-strings v$1)" ]; then | ||||
|   echo "Unexpected version" | ||||
|  | ||||
| # Extract the major version from the node version (remove the 'v' prefix) | ||||
| actual_major_version=$(echo $node_version | sed -E 's/^v([0-9]+)\..*/\1/') | ||||
| expected_major_version=$(echo $1 | sed -E 's/^([0-9]+)\..*/\1/') # Extract major version from argument | ||||
|  | ||||
| if [ "$actual_major_version" != "$expected_major_version" ]; then | ||||
|   echo "Expected Node.js $expected_major_version.x.x but found $node_version" | ||||
|   exit 1 | ||||
| fi | ||||
|  | ||||
|   | ||||
| @@ -23,6 +23,9 @@ inputs: | ||||
|     default: ${{ github.server_url == 'https://github.com' && github.token || '' }} | ||||
|   cache: | ||||
|     description: 'Used to specify a package manager for caching in the default directory. Supported values: npm, yarn, pnpm.' | ||||
|   package-manager-cache: | ||||
|     description: 'Set to false to disable automatic caching. By default, caching is enabled when either devEngines.packageManager or the top-level packageManager field in package.json specifies npm as the package manager.' | ||||
|     default: true | ||||
|   cache-dependency-path: | ||||
|     description: 'Used to specify the path to a dependency file: package-lock.json, yarn.lock, etc. Supports wildcards or a list of file names for caching multiple dependencies.' | ||||
|   mirror: | ||||
| @@ -37,7 +40,7 @@ outputs: | ||||
|   node-version: | ||||
|     description: 'The installed node version.' | ||||
| runs: | ||||
|   using: 'node20' | ||||
|   using: 'node24' | ||||
|   main: 'dist/setup/index.js' | ||||
|   post: 'dist/cache-save/index.js' | ||||
|   post-if: success() | ||||
|   | ||||
							
								
								
									
										1382
									
								
								dist/cache-save/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1382
									
								
								dist/cache-save/index.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										4770
									
								
								dist/setup/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4770
									
								
								dist/setup/index.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| @@ -45,10 +45,10 @@ If `check-latest` is set to `true`, the action first checks if the cached versio | ||||
|  | ||||
| ```yaml | ||||
| steps: | ||||
| - uses: actions/checkout@v4 | ||||
| - uses: actions/setup-node@v4 | ||||
| - uses: actions/checkout@v5 | ||||
| - uses: actions/setup-node@v6 | ||||
|   with: | ||||
|     node-version: '16' | ||||
|     node-version: '24' | ||||
|     check-latest: true | ||||
| - run: npm ci | ||||
| - run: npm test | ||||
| @@ -63,8 +63,8 @@ See [supported version syntax](https://github.com/actions/setup-node#supported-v | ||||
|  | ||||
| ```yaml | ||||
| steps: | ||||
| - uses: actions/checkout@v4 | ||||
| - uses: actions/setup-node@v4 | ||||
| - uses: actions/checkout@v5 | ||||
| - uses: actions/setup-node@v6 | ||||
|   with: | ||||
|     node-version-file: '.nvmrc' | ||||
| - run: npm ci | ||||
| @@ -97,10 +97,10 @@ jobs: | ||||
|     runs-on: windows-latest | ||||
|     name: Node sample | ||||
|     steps: | ||||
|       - uses: actions/checkout@v4 | ||||
|       - uses: actions/setup-node@v4 | ||||
|       - uses: actions/checkout@v5 | ||||
|       - uses: actions/setup-node@v6 | ||||
|         with: | ||||
|           node-version: '14' | ||||
|           node-version: '24' | ||||
|           architecture: 'x64' # optional, x64 or x86. If not specified, x64 will be used by default | ||||
|       - run: npm ci | ||||
|       - run: npm test | ||||
| @@ -118,10 +118,10 @@ jobs: | ||||
|     runs-on: ubuntu-latest | ||||
|     name: Node sample | ||||
|     steps: | ||||
|       - uses: actions/checkout@v4 | ||||
|       - uses: actions/setup-node@v4 | ||||
|       - uses: actions/checkout@v5 | ||||
|       - uses: actions/setup-node@v6 | ||||
|         with: | ||||
|           node-version: '20.0.0-v8-canary' # it will install the latest v8 canary release for node 20.0.0 | ||||
|           node-version: '24.0.0-v8-canary' # it will install the latest v8 canary release for node 24.0.0 | ||||
|       - run: npm ci | ||||
|       - run: npm test | ||||
| ``` | ||||
| @@ -133,10 +133,10 @@ jobs: | ||||
|     runs-on: ubuntu-latest | ||||
|     name: Node sample | ||||
|     steps: | ||||
|       - uses: actions/checkout@v4 | ||||
|       - uses: actions/setup-node@v4 | ||||
|       - uses: actions/checkout@v5 | ||||
|       - uses: actions/setup-node@v6 | ||||
|         with: | ||||
|           node-version: '20-v8-canary' # it will install the latest v8 canary release for node 20 | ||||
|           node-version: '24-v8-canary' # it will install the latest v8 canary release for node 24 | ||||
|       - run: npm ci | ||||
|       - run: npm test | ||||
| ``` | ||||
| @@ -149,10 +149,10 @@ jobs: | ||||
|     runs-on: ubuntu-latest | ||||
|     name: Node sample | ||||
|     steps: | ||||
|       - uses: actions/checkout@v4 | ||||
|       - uses: actions/setup-node@v4 | ||||
|       - uses: actions/checkout@v5 | ||||
|       - uses: actions/setup-node@v6 | ||||
|         with: | ||||
|           node-version: 'v20.1.1-v8-canary20221103f7e2421e91' | ||||
|           node-version: 'v24.0.0-v8-canary2025030537242e55ac' | ||||
|       - run: npm ci | ||||
|       - run: npm test | ||||
| ``` | ||||
| @@ -169,10 +169,10 @@ jobs: | ||||
|     runs-on: ubuntu-latest | ||||
|     name: Node sample | ||||
|     steps: | ||||
|       - uses: actions/checkout@v4 | ||||
|       - uses: actions/setup-node@v4 | ||||
|       - uses: actions/checkout@v5 | ||||
|       - uses: actions/setup-node@v6 | ||||
|         with: | ||||
|           node-version: '16-nightly' # it will install the latest nightly release for node 16 | ||||
|           node-version: '24-nightly' # it will install the latest nightly release for node 24 | ||||
|       - run: npm ci | ||||
|       - run: npm test | ||||
| ``` | ||||
| @@ -185,10 +185,10 @@ jobs: | ||||
|     runs-on: ubuntu-latest | ||||
|     name: Node sample | ||||
|     steps: | ||||
|       - uses: actions/checkout@v4 | ||||
|       - uses: actions/setup-node@v4 | ||||
|       - uses: actions/checkout@v5 | ||||
|       - uses: actions/setup-node@v6 | ||||
|         with: | ||||
|           node-version: '16.0.0-nightly' # it will install the latest nightly release for node 16.0.0 | ||||
|           node-version: '24.0.0-nightly' # it will install the latest nightly release for node 24.0.0 | ||||
|       - run: npm ci | ||||
|       - run: npm test | ||||
| ``` | ||||
| @@ -201,10 +201,10 @@ jobs: | ||||
|     runs-on: ubuntu-latest | ||||
|     name: Node sample | ||||
|     steps: | ||||
|       - uses: actions/checkout@v4 | ||||
|       - uses: actions/setup-node@v4 | ||||
|       - uses: actions/checkout@v5 | ||||
|       - uses: actions/setup-node@v6 | ||||
|         with: | ||||
|           node-version: '16.0.0-nightly20210420a0261d231c' | ||||
|           node-version: '24.0.0-nightly202505066102159fa1' | ||||
|       - run: npm ci | ||||
|       - run: npm test | ||||
| ``` | ||||
| @@ -219,27 +219,28 @@ jobs: | ||||
|     runs-on: ubuntu-latest | ||||
|     name: Node sample | ||||
|     steps: | ||||
|       - uses: actions/checkout@v4 | ||||
|       - uses: actions/setup-node@v4 | ||||
|       - uses: actions/checkout@v5 | ||||
|       - uses: actions/setup-node@v6 | ||||
|         with: | ||||
|           node-version: '16.0.0-rc.1' | ||||
|           node-version: '24.0.0-rc.4' | ||||
|       - run: npm ci | ||||
|       - run: npm test | ||||
| ``` | ||||
|  | ||||
| **Note:** Unlike nightly versions, which support version range specifiers, you must specify the exact version for a release candidate: `16.0.0-rc.1`. | ||||
| **Note:** Unlike nightly versions, which support version range specifiers, you must specify the exact version for a release candidate: `24.0.0-rc.4`. | ||||
|  | ||||
| ## Caching packages data | ||||
| The action follows [actions/cache](https://github.com/actions/cache/blob/main/examples.md#node---npm) guidelines, and caches global cache on the machine instead of `node_modules`, so cache can be reused between different Node.js versions. | ||||
|  | ||||
| **Caching yarn dependencies:** | ||||
| Yarn caching handles both yarn versions: 1 or 2. | ||||
| Yarn caching handles both Yarn Classic (v1) and Yarn Berry (v2, v3, v4+). | ||||
|  | ||||
| ```yaml | ||||
| steps: | ||||
| - uses: actions/checkout@v4 | ||||
| - uses: actions/setup-node@v4 | ||||
| - uses: actions/checkout@v5 | ||||
| - uses: actions/setup-node@v6 | ||||
|   with: | ||||
|     node-version: '14' | ||||
|     node-version: '24' | ||||
|     cache: 'yarn' | ||||
| - run: yarn install --frozen-lockfile # optional, --immutable | ||||
| - run: yarn test | ||||
| @@ -255,13 +256,13 @@ steps: | ||||
| # NOTE: pnpm caching support requires pnpm version >= 6.10.0 | ||||
|  | ||||
| steps: | ||||
| - uses: actions/checkout@v4 | ||||
| - uses: pnpm/action-setup@v2 | ||||
| - uses: actions/checkout@v5 | ||||
| - uses: pnpm/action-setup@v4 | ||||
|   with: | ||||
|     version: 6.32.9 | ||||
| - uses: actions/setup-node@v4 | ||||
|     version: 10 | ||||
| - uses: actions/setup-node@v6 | ||||
|   with: | ||||
|     node-version: '14' | ||||
|     node-version: '24' | ||||
|     cache: 'pnpm' | ||||
| - run: pnpm install | ||||
| - run: pnpm test | ||||
| @@ -274,10 +275,10 @@ steps: | ||||
| **Using wildcard patterns to cache dependencies** | ||||
| ```yaml | ||||
| steps: | ||||
| - uses: actions/checkout@v4 | ||||
| - uses: actions/setup-node@v4 | ||||
| - uses: actions/checkout@v5 | ||||
| - uses: actions/setup-node@v6 | ||||
|   with: | ||||
|     node-version: '14' | ||||
|     node-version: '24' | ||||
|     cache: 'npm' | ||||
|     cache-dependency-path: '**/package-lock.json' | ||||
| - run: npm ci | ||||
| @@ -287,10 +288,10 @@ steps: | ||||
| **Using a list of file paths to cache dependencies** | ||||
| ```yaml | ||||
| steps: | ||||
| - uses: actions/checkout@v4 | ||||
| - uses: actions/setup-node@v4 | ||||
| - uses: actions/checkout@v5 | ||||
| - uses: actions/setup-node@v6 | ||||
|   with: | ||||
|     node-version: '14' | ||||
|     node-version: '24' | ||||
|     cache: 'npm' | ||||
|     cache-dependency-path: | | ||||
|       server/app/package-lock.json | ||||
| @@ -312,21 +313,21 @@ jobs: | ||||
|           - macos-latest | ||||
|           - windows-latest | ||||
|         node_version: | ||||
|           - 12 | ||||
|           - 14 | ||||
|           - 16 | ||||
|           - 20 | ||||
|           - 22 | ||||
|           - 24 | ||||
|         architecture: | ||||
|           - x64 | ||||
|         # an extra windows-x86 run: | ||||
|         include: | ||||
|           - os: windows-2016 | ||||
|             node_version: 12 | ||||
|           - os: windows-latest | ||||
|             node_version: 24 | ||||
|             architecture: x86 | ||||
|     name: Node ${{ matrix.node_version }} - ${{ matrix.architecture }} on ${{ matrix.os }} | ||||
|     steps: | ||||
|       - uses: actions/checkout@v4 | ||||
|       - uses: actions/checkout@v5 | ||||
|       - name: Setup node | ||||
|         uses: actions/setup-node@v4 | ||||
|         uses: actions/setup-node@v6 | ||||
|         with: | ||||
|           node-version: ${{ matrix.node_version }} | ||||
|           architecture: ${{ matrix.architecture }} | ||||
| @@ -337,16 +338,16 @@ jobs: | ||||
| ## Publish to npmjs and GPR with npm | ||||
| ```yaml | ||||
| steps: | ||||
| - uses: actions/checkout@v4 | ||||
| - uses: actions/setup-node@v4 | ||||
| - uses: actions/checkout@v5 | ||||
| - uses: actions/setup-node@v6 | ||||
|   with: | ||||
|     node-version: '14.x' | ||||
|     node-version: '24.x' | ||||
|     registry-url: 'https://registry.npmjs.org' | ||||
| - run: npm ci | ||||
| - run: npm publish | ||||
|   env: | ||||
|     NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} | ||||
| - uses: actions/setup-node@v4 | ||||
| - uses: actions/setup-node@v6 | ||||
|   with: | ||||
|     registry-url: 'https://npm.pkg.github.com' | ||||
| - run: npm publish | ||||
| @@ -357,16 +358,16 @@ steps: | ||||
| ## Publish to npmjs and GPR with yarn | ||||
| ```yaml | ||||
| steps: | ||||
| - uses: actions/checkout@v4 | ||||
| - uses: actions/setup-node@v4 | ||||
| - uses: actions/checkout@v5 | ||||
| - uses: actions/setup-node@v6 | ||||
|   with: | ||||
|     node-version: '14.x' | ||||
|     node-version: '24.x' | ||||
|     registry-url: <registry url> | ||||
| - run: yarn install --frozen-lockfile | ||||
| - run: yarn publish | ||||
|   env: | ||||
|     NODE_AUTH_TOKEN: ${{ secrets.YARN_TOKEN }} | ||||
| - uses: actions/setup-node@v4 | ||||
| - uses: actions/setup-node@v6 | ||||
|   with: | ||||
|     registry-url: 'https://npm.pkg.github.com' | ||||
| - run: yarn publish | ||||
| @@ -377,10 +378,10 @@ steps: | ||||
| ## Use private packages | ||||
| ```yaml | ||||
| steps: | ||||
| - uses: actions/checkout@v4 | ||||
| - uses: actions/setup-node@v4 | ||||
| - uses: actions/checkout@v5 | ||||
| - uses: actions/setup-node@v6 | ||||
|   with: | ||||
|     node-version: '14.x' | ||||
|     node-version: '24.x' | ||||
|     registry-url: 'https://registry.npmjs.org' | ||||
| # Skip post-install scripts here, as a malicious | ||||
| # script could steal NODE_AUTH_TOKEN. | ||||
| @@ -397,10 +398,10 @@ Below you can find a sample "Setup .yarnrc.yml" step, that is going to allow you | ||||
|  | ||||
| ```yaml | ||||
| steps: | ||||
| - uses: actions/checkout@v4 | ||||
| - uses: actions/setup-node@v4 | ||||
| - uses: actions/checkout@v5 | ||||
| - uses: actions/setup-node@v6 | ||||
|   with: | ||||
|     node-version: '14.x' | ||||
|     node-version: '24.x' | ||||
| - name: Setup .yarnrc.yml | ||||
|   run: | | ||||
|     yarn config set npmScopes.my-org.npmRegistryServer "https://npm.pkg.github.com" | ||||
| @@ -427,9 +428,9 @@ It is possible to specify a token to authenticate with the mirror using the `mir | ||||
| The token will be passed as a bearer token in the `Authorization` header. | ||||
|  | ||||
| ```yaml | ||||
| - uses: actions/setup-node@v4 | ||||
| - uses: actions/setup-node@v6 | ||||
|   with: | ||||
|     node-version: '14.x' | ||||
|     node-version: '24.x' | ||||
|     mirror: 'https://nodejs.org/dist' | ||||
|     mirror-token: 'your-mirror-token' | ||||
| ``` | ||||
|   | ||||
							
								
								
									
										364
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										364
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							| @@ -1,12 +1,12 @@ | ||||
| { | ||||
|   "name": "setup-node", | ||||
|   "version": "4.0.0", | ||||
|   "version": "6.0.0", | ||||
|   "lockfileVersion": 3, | ||||
|   "requires": true, | ||||
|   "packages": { | ||||
|     "": { | ||||
|       "name": "setup-node", | ||||
|       "version": "4.0.0", | ||||
|       "version": "6.0.0", | ||||
|       "license": "MIT", | ||||
|       "dependencies": { | ||||
|         "@actions/cache": "^4.0.3", | ||||
| @@ -22,7 +22,7 @@ | ||||
|       }, | ||||
|       "devDependencies": { | ||||
|         "@types/jest": "^29.5.14", | ||||
|         "@types/node": "^20.11.25", | ||||
|         "@types/node": "^24.1.0", | ||||
|         "@types/semver": "^7.5.8", | ||||
|         "@typescript-eslint/eslint-plugin": "^5.54.0", | ||||
|         "@typescript-eslint/parser": "^5.54.0", | ||||
| @@ -34,9 +34,12 @@ | ||||
|         "jest": "^29.7.0", | ||||
|         "jest-circus": "^29.7.0", | ||||
|         "jest-each": "^29.7.0", | ||||
|         "prettier": "^2.8.4", | ||||
|         "ts-jest": "^29.1.2", | ||||
|         "prettier": "^3.6.2", | ||||
|         "ts-jest": "^29.4.1", | ||||
|         "typescript": "^5.4.2" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">=24.0.0" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@aashutoshrathi/word-wrap": { | ||||
| @@ -224,12 +227,14 @@ | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@azure/core-http/node_modules/form-data": { | ||||
|       "version": "4.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", | ||||
|       "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", | ||||
|       "version": "4.0.4", | ||||
|       "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", | ||||
|       "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", | ||||
|       "dependencies": { | ||||
|         "asynckit": "^0.4.0", | ||||
|         "combined-stream": "^1.0.8", | ||||
|         "es-set-tostringtag": "^2.1.0", | ||||
|         "hasown": "^2.0.2", | ||||
|         "mime-types": "^2.1.12" | ||||
|       }, | ||||
|       "engines": { | ||||
| @@ -1778,11 +1783,12 @@ | ||||
|       "dev": true | ||||
|     }, | ||||
|     "node_modules/@types/node": { | ||||
|       "version": "20.11.25", | ||||
|       "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.25.tgz", | ||||
|       "integrity": "sha512-TBHyJxk2b7HceLVGFcpAUjsa5zIdsPWlR6XHfyGzd0SFu+/NFgQgMAl96MSDZgQDvJAvV6BKsFOrt6zIL09JDw==", | ||||
|       "version": "24.1.0", | ||||
|       "resolved": "https://registry.npmjs.org/@types/node/-/node-24.1.0.tgz", | ||||
|       "integrity": "sha512-ut5FthK5moxFKH2T1CUOC6ctR67rQRvvHdFLCD2Ql6KXmMuCrjsSsRI9UsLCm9M18BMwClv4pn327UvB7eeO1w==", | ||||
|       "license": "MIT", | ||||
|       "dependencies": { | ||||
|         "undici-types": "~5.26.4" | ||||
|         "undici-types": "~7.8.0" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@types/node-fetch": { | ||||
| @@ -1795,12 +1801,14 @@ | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@types/node-fetch/node_modules/form-data": { | ||||
|       "version": "4.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", | ||||
|       "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", | ||||
|       "version": "4.0.4", | ||||
|       "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", | ||||
|       "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", | ||||
|       "dependencies": { | ||||
|         "asynckit": "^0.4.0", | ||||
|         "combined-stream": "^1.0.8", | ||||
|         "es-set-tostringtag": "^2.1.0", | ||||
|         "hasown": "^2.0.2", | ||||
|         "mime-types": "^2.1.12" | ||||
|       }, | ||||
|       "engines": { | ||||
| @@ -2306,9 +2314,9 @@ | ||||
|       "license": "Apache-2.0" | ||||
|     }, | ||||
|     "node_modules/brace-expansion": { | ||||
|       "version": "1.1.11", | ||||
|       "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", | ||||
|       "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", | ||||
|       "version": "1.1.12", | ||||
|       "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", | ||||
|       "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", | ||||
|       "dependencies": { | ||||
|         "balanced-match": "^1.0.0", | ||||
|         "concat-map": "0.0.1" | ||||
| @@ -2385,6 +2393,18 @@ | ||||
|       "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "node_modules/call-bind-apply-helpers": { | ||||
|       "version": "1.0.2", | ||||
|       "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", | ||||
|       "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", | ||||
|       "dependencies": { | ||||
|         "es-errors": "^1.3.0", | ||||
|         "function-bind": "^1.1.2" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">= 0.4" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/callsites": { | ||||
|       "version": "3.1.0", | ||||
|       "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", | ||||
| @@ -2676,6 +2696,19 @@ | ||||
|         "node": ">=6.0.0" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/dunder-proto": { | ||||
|       "version": "1.0.1", | ||||
|       "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", | ||||
|       "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", | ||||
|       "dependencies": { | ||||
|         "call-bind-apply-helpers": "^1.0.1", | ||||
|         "es-errors": "^1.3.0", | ||||
|         "gopd": "^1.2.0" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">= 0.4" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/electron-to-chromium": { | ||||
|       "version": "1.4.563", | ||||
|       "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.563.tgz", | ||||
| @@ -2709,6 +2742,47 @@ | ||||
|         "is-arrayish": "^0.2.1" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/es-define-property": { | ||||
|       "version": "1.0.1", | ||||
|       "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", | ||||
|       "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", | ||||
|       "engines": { | ||||
|         "node": ">= 0.4" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/es-errors": { | ||||
|       "version": "1.3.0", | ||||
|       "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", | ||||
|       "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", | ||||
|       "engines": { | ||||
|         "node": ">= 0.4" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/es-object-atoms": { | ||||
|       "version": "1.1.1", | ||||
|       "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", | ||||
|       "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", | ||||
|       "dependencies": { | ||||
|         "es-errors": "^1.3.0" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">= 0.4" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/es-set-tostringtag": { | ||||
|       "version": "2.1.0", | ||||
|       "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", | ||||
|       "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", | ||||
|       "dependencies": { | ||||
|         "es-errors": "^1.3.0", | ||||
|         "get-intrinsic": "^1.2.6", | ||||
|         "has-tostringtag": "^1.0.2", | ||||
|         "hasown": "^2.0.2" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">= 0.4" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/escalade": { | ||||
|       "version": "3.1.1", | ||||
|       "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", | ||||
| @@ -3223,13 +3297,16 @@ | ||||
|       "dev": true | ||||
|     }, | ||||
|     "node_modules/form-data": { | ||||
|       "version": "2.5.1", | ||||
|       "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", | ||||
|       "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", | ||||
|       "version": "2.5.5", | ||||
|       "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.5.tgz", | ||||
|       "integrity": "sha512-jqdObeR2rxZZbPSGL+3VckHMYtu+f9//KXBsVny6JSX/pa38Fy+bGjuG8eW/H6USNQWhLi8Num++cU2yOCNz4A==", | ||||
|       "dependencies": { | ||||
|         "asynckit": "^0.4.0", | ||||
|         "combined-stream": "^1.0.6", | ||||
|         "mime-types": "^2.1.12" | ||||
|         "combined-stream": "^1.0.8", | ||||
|         "es-set-tostringtag": "^2.1.0", | ||||
|         "hasown": "^2.0.2", | ||||
|         "mime-types": "^2.1.35", | ||||
|         "safe-buffer": "^5.2.1" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">= 0.12" | ||||
| @@ -3259,7 +3336,6 @@ | ||||
|       "version": "1.1.2", | ||||
|       "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", | ||||
|       "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", | ||||
|       "dev": true, | ||||
|       "funding": { | ||||
|         "url": "https://github.com/sponsors/ljharb" | ||||
|       } | ||||
| @@ -3282,6 +3358,29 @@ | ||||
|         "node": "6.* || 8.* || >= 10.*" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/get-intrinsic": { | ||||
|       "version": "1.3.0", | ||||
|       "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", | ||||
|       "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", | ||||
|       "dependencies": { | ||||
|         "call-bind-apply-helpers": "^1.0.2", | ||||
|         "es-define-property": "^1.0.1", | ||||
|         "es-errors": "^1.3.0", | ||||
|         "es-object-atoms": "^1.1.1", | ||||
|         "function-bind": "^1.1.2", | ||||
|         "get-proto": "^1.0.1", | ||||
|         "gopd": "^1.2.0", | ||||
|         "has-symbols": "^1.1.0", | ||||
|         "hasown": "^2.0.2", | ||||
|         "math-intrinsics": "^1.1.0" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">= 0.4" | ||||
|       }, | ||||
|       "funding": { | ||||
|         "url": "https://github.com/sponsors/ljharb" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/get-package-type": { | ||||
|       "version": "0.1.0", | ||||
|       "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", | ||||
| @@ -3291,6 +3390,18 @@ | ||||
|         "node": ">=8.0.0" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/get-proto": { | ||||
|       "version": "1.0.1", | ||||
|       "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", | ||||
|       "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", | ||||
|       "dependencies": { | ||||
|         "dunder-proto": "^1.0.1", | ||||
|         "es-object-atoms": "^1.0.0" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">= 0.4" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/get-stream": { | ||||
|       "version": "6.0.1", | ||||
|       "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", | ||||
| @@ -3370,6 +3481,17 @@ | ||||
|         "url": "https://github.com/sponsors/sindresorhus" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/gopd": { | ||||
|       "version": "1.2.0", | ||||
|       "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", | ||||
|       "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", | ||||
|       "engines": { | ||||
|         "node": ">= 0.4" | ||||
|       }, | ||||
|       "funding": { | ||||
|         "url": "https://github.com/sponsors/ljharb" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/graceful-fs": { | ||||
|       "version": "4.2.11", | ||||
|       "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", | ||||
| @@ -3382,6 +3504,28 @@ | ||||
|       "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "node_modules/handlebars": { | ||||
|       "version": "4.7.8", | ||||
|       "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", | ||||
|       "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", | ||||
|       "dev": true, | ||||
|       "license": "MIT", | ||||
|       "dependencies": { | ||||
|         "minimist": "^1.2.5", | ||||
|         "neo-async": "^2.6.2", | ||||
|         "source-map": "^0.6.1", | ||||
|         "wordwrap": "^1.0.0" | ||||
|       }, | ||||
|       "bin": { | ||||
|         "handlebars": "bin/handlebars" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">=0.4.7" | ||||
|       }, | ||||
|       "optionalDependencies": { | ||||
|         "uglify-js": "^3.1.4" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/has-flag": { | ||||
|       "version": "4.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", | ||||
| @@ -3391,11 +3535,35 @@ | ||||
|         "node": ">=8" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/has-symbols": { | ||||
|       "version": "1.1.0", | ||||
|       "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", | ||||
|       "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", | ||||
|       "engines": { | ||||
|         "node": ">= 0.4" | ||||
|       }, | ||||
|       "funding": { | ||||
|         "url": "https://github.com/sponsors/ljharb" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/has-tostringtag": { | ||||
|       "version": "1.0.2", | ||||
|       "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", | ||||
|       "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", | ||||
|       "dependencies": { | ||||
|         "has-symbols": "^1.0.3" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">= 0.4" | ||||
|       }, | ||||
|       "funding": { | ||||
|         "url": "https://github.com/sponsors/ljharb" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/hasown": { | ||||
|       "version": "2.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", | ||||
|       "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", | ||||
|       "dev": true, | ||||
|       "version": "2.0.2", | ||||
|       "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", | ||||
|       "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", | ||||
|       "dependencies": { | ||||
|         "function-bind": "^1.1.2" | ||||
|       }, | ||||
| @@ -4380,6 +4548,14 @@ | ||||
|         "tmpl": "1.0.5" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/math-intrinsics": { | ||||
|       "version": "1.1.0", | ||||
|       "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", | ||||
|       "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", | ||||
|       "engines": { | ||||
|         "node": ">= 0.4" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/merge-stream": { | ||||
|       "version": "2.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", | ||||
| @@ -4447,6 +4623,16 @@ | ||||
|         "node": "*" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/minimist": { | ||||
|       "version": "1.2.8", | ||||
|       "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", | ||||
|       "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", | ||||
|       "dev": true, | ||||
|       "license": "MIT", | ||||
|       "funding": { | ||||
|         "url": "https://github.com/sponsors/ljharb" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/ms": { | ||||
|       "version": "2.1.2", | ||||
|       "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", | ||||
| @@ -4465,6 +4651,13 @@ | ||||
|       "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "node_modules/neo-async": { | ||||
|       "version": "2.6.2", | ||||
|       "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", | ||||
|       "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", | ||||
|       "dev": true, | ||||
|       "license": "MIT" | ||||
|     }, | ||||
|     "node_modules/node-fetch": { | ||||
|       "version": "2.7.0", | ||||
|       "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", | ||||
| @@ -4769,15 +4962,16 @@ | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/prettier": { | ||||
|       "version": "2.8.8", | ||||
|       "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", | ||||
|       "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", | ||||
|       "version": "3.6.2", | ||||
|       "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz", | ||||
|       "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", | ||||
|       "dev": true, | ||||
|       "license": "MIT", | ||||
|       "bin": { | ||||
|         "prettier": "bin-prettier.js" | ||||
|         "prettier": "bin/prettier.cjs" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">=10.13.0" | ||||
|         "node": ">=14" | ||||
|       }, | ||||
|       "funding": { | ||||
|         "url": "https://github.com/prettier/prettier?sponsor=1" | ||||
| @@ -5006,15 +5200,34 @@ | ||||
|         "queue-microtask": "^1.2.2" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/safe-buffer": { | ||||
|       "version": "5.2.1", | ||||
|       "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", | ||||
|       "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", | ||||
|       "funding": [ | ||||
|         { | ||||
|           "type": "github", | ||||
|           "url": "https://github.com/sponsors/feross" | ||||
|         }, | ||||
|         { | ||||
|           "type": "patreon", | ||||
|           "url": "https://www.patreon.com/feross" | ||||
|         }, | ||||
|         { | ||||
|           "type": "consulting", | ||||
|           "url": "https://feross.org/support" | ||||
|         } | ||||
|       ] | ||||
|     }, | ||||
|     "node_modules/sax": { | ||||
|       "version": "1.3.0", | ||||
|       "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", | ||||
|       "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==" | ||||
|     }, | ||||
|     "node_modules/semver": { | ||||
|       "version": "7.6.3", | ||||
|       "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", | ||||
|       "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", | ||||
|       "version": "7.7.2", | ||||
|       "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", | ||||
|       "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", | ||||
|       "license": "ISC", | ||||
|       "bin": { | ||||
|         "semver": "bin/semver.js" | ||||
| @@ -5248,37 +5461,44 @@ | ||||
|       "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" | ||||
|     }, | ||||
|     "node_modules/ts-jest": { | ||||
|       "version": "29.1.2", | ||||
|       "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.2.tgz", | ||||
|       "integrity": "sha512-br6GJoH/WUX4pu7FbZXuWGKGNDuU7b8Uj77g/Sp7puZV6EXzuByl6JrECvm0MzVzSTkSHWTihsXt+5XYER5b+g==", | ||||
|       "version": "29.4.1", | ||||
|       "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.4.1.tgz", | ||||
|       "integrity": "sha512-SaeUtjfpg9Uqu8IbeDKtdaS0g8lS6FT6OzM3ezrDfErPJPHNDo/Ey+VFGP1bQIDfagYDLyRpd7O15XpG1Es2Uw==", | ||||
|       "dev": true, | ||||
|       "license": "MIT", | ||||
|       "dependencies": { | ||||
|         "bs-logger": "0.x", | ||||
|         "fast-json-stable-stringify": "2.x", | ||||
|         "jest-util": "^29.0.0", | ||||
|         "bs-logger": "^0.2.6", | ||||
|         "fast-json-stable-stringify": "^2.1.0", | ||||
|         "handlebars": "^4.7.8", | ||||
|         "json5": "^2.2.3", | ||||
|         "lodash.memoize": "4.x", | ||||
|         "make-error": "1.x", | ||||
|         "semver": "^7.5.3", | ||||
|         "yargs-parser": "^21.0.1" | ||||
|         "lodash.memoize": "^4.1.2", | ||||
|         "make-error": "^1.3.6", | ||||
|         "semver": "^7.7.2", | ||||
|         "type-fest": "^4.41.0", | ||||
|         "yargs-parser": "^21.1.1" | ||||
|       }, | ||||
|       "bin": { | ||||
|         "ts-jest": "cli.js" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": "^16.10.0 || ^18.0.0 || >=20.0.0" | ||||
|         "node": "^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0" | ||||
|       }, | ||||
|       "peerDependencies": { | ||||
|         "@babel/core": ">=7.0.0-beta.0 <8", | ||||
|         "@jest/types": "^29.0.0", | ||||
|         "babel-jest": "^29.0.0", | ||||
|         "jest": "^29.0.0", | ||||
|         "@jest/transform": "^29.0.0 || ^30.0.0", | ||||
|         "@jest/types": "^29.0.0 || ^30.0.0", | ||||
|         "babel-jest": "^29.0.0 || ^30.0.0", | ||||
|         "jest": "^29.0.0 || ^30.0.0", | ||||
|         "jest-util": "^29.0.0 || ^30.0.0", | ||||
|         "typescript": ">=4.3 <6" | ||||
|       }, | ||||
|       "peerDependenciesMeta": { | ||||
|         "@babel/core": { | ||||
|           "optional": true | ||||
|         }, | ||||
|         "@jest/transform": { | ||||
|           "optional": true | ||||
|         }, | ||||
|         "@jest/types": { | ||||
|           "optional": true | ||||
|         }, | ||||
| @@ -5287,9 +5507,25 @@ | ||||
|         }, | ||||
|         "esbuild": { | ||||
|           "optional": true | ||||
|         }, | ||||
|         "jest-util": { | ||||
|           "optional": true | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/ts-jest/node_modules/type-fest": { | ||||
|       "version": "4.41.0", | ||||
|       "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", | ||||
|       "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", | ||||
|       "dev": true, | ||||
|       "license": "(MIT OR CC0-1.0)", | ||||
|       "engines": { | ||||
|         "node": ">=16" | ||||
|       }, | ||||
|       "funding": { | ||||
|         "url": "https://github.com/sponsors/sindresorhus" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/tslib": { | ||||
|       "version": "2.6.2", | ||||
|       "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", | ||||
| @@ -5370,6 +5606,20 @@ | ||||
|         "node": ">=14.17" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/uglify-js": { | ||||
|       "version": "3.19.3", | ||||
|       "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", | ||||
|       "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", | ||||
|       "dev": true, | ||||
|       "license": "BSD-2-Clause", | ||||
|       "optional": true, | ||||
|       "bin": { | ||||
|         "uglifyjs": "bin/uglifyjs" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">=0.8.0" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/undici": { | ||||
|       "version": "5.29.0", | ||||
|       "resolved": "https://registry.npmjs.org/undici/-/undici-5.29.0.tgz", | ||||
| @@ -5383,9 +5633,10 @@ | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/undici-types": { | ||||
|       "version": "5.26.5", | ||||
|       "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", | ||||
|       "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" | ||||
|       "version": "7.8.0", | ||||
|       "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.8.0.tgz", | ||||
|       "integrity": "sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==", | ||||
|       "license": "MIT" | ||||
|     }, | ||||
|     "node_modules/universal-user-agent": { | ||||
|       "version": "6.0.1", | ||||
| @@ -5497,6 +5748,13 @@ | ||||
|         "node": ">= 8" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/wordwrap": { | ||||
|       "version": "1.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", | ||||
|       "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", | ||||
|       "dev": true, | ||||
|       "license": "MIT" | ||||
|     }, | ||||
|     "node_modules/wrap-ansi": { | ||||
|       "version": "7.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", | ||||
|   | ||||
							
								
								
									
										11
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								package.json
									
									
									
									
									
								
							| @@ -1,9 +1,12 @@ | ||||
| { | ||||
|   "name": "setup-node", | ||||
|   "version": "4.0.0", | ||||
|   "version": "6.0.0", | ||||
|   "private": true, | ||||
|   "description": "setup node action", | ||||
|   "main": "lib/setup-node.js", | ||||
|   "engines": { | ||||
|     "node": ">=24.0.0" | ||||
|   }, | ||||
|   "scripts": { | ||||
|     "build": "ncc build -o dist/setup src/setup-node.ts && ncc build -o dist/cache-save src/cache-save.ts", | ||||
|     "format": "prettier --no-error-on-unmatched-pattern --config ./.prettierrc.js --write \"**/*.{ts,yml,yaml}\"", | ||||
| @@ -38,7 +41,7 @@ | ||||
|   }, | ||||
|   "devDependencies": { | ||||
|     "@types/jest": "^29.5.14", | ||||
|     "@types/node": "^20.11.25", | ||||
|     "@types/node": "^24.1.0", | ||||
|     "@types/semver": "^7.5.8", | ||||
|     "@typescript-eslint/eslint-plugin": "^5.54.0", | ||||
|     "@typescript-eslint/parser": "^5.54.0", | ||||
| @@ -50,8 +53,8 @@ | ||||
|     "jest": "^29.7.0", | ||||
|     "jest-circus": "^29.7.0", | ||||
|     "jest-each": "^29.7.0", | ||||
|     "prettier": "^2.8.4", | ||||
|     "ts-jest": "^29.1.2", | ||||
|     "prettier": "^3.6.2", | ||||
|     "ts-jest": "^29.4.1", | ||||
|     "typescript": "^5.4.2" | ||||
|   } | ||||
| } | ||||
|   | ||||
| @@ -7,6 +7,7 @@ import {getPackageManagerInfo} from './cache-utils'; | ||||
| // Catch and log any unhandled exceptions.  These exceptions can leak out of the uploadChunk method in | ||||
| // @actions/toolkit when a failed upload closes the file descriptor causing any in-process reads to | ||||
| // throw an uncaught exception.  Instead of failing this action, just warn. | ||||
|  | ||||
| process.on('uncaughtException', e => { | ||||
|   const warningPrefix = '[warning]'; | ||||
|   core.info(`${warningPrefix}${e.message}`); | ||||
|   | ||||
| @@ -167,14 +167,12 @@ const getCacheDirectoriesFromCacheDependencyPath = async ( | ||||
|   packageManagerInfo: PackageManagerInfo, | ||||
|   cacheDependencyPath: string | ||||
| ): Promise<string[]> => { | ||||
|   const projectDirectories = await getProjectDirectoriesFromCacheDependencyPath( | ||||
|     cacheDependencyPath | ||||
|   ); | ||||
|   const projectDirectories = | ||||
|     await getProjectDirectoriesFromCacheDependencyPath(cacheDependencyPath); | ||||
|   const cacheFoldersPaths = await Promise.all( | ||||
|     projectDirectories.map(async projectDirectory => { | ||||
|       const cacheFolderPath = await packageManagerInfo.getCacheFolderPath( | ||||
|         projectDirectory | ||||
|       ); | ||||
|       const cacheFolderPath = | ||||
|         await packageManagerInfo.getCacheFolderPath(projectDirectory); | ||||
|       core.debug( | ||||
|         `${packageManagerInfo.name}'s cache folder "${cacheFolderPath}" configured for the directory "${projectDirectory}"` | ||||
|       ); | ||||
|   | ||||
| @@ -221,8 +221,8 @@ export default class OfficialBuilds extends BaseDistribution { | ||||
|       alias === '*' | ||||
|         ? numbered[numbered.length - 1] | ||||
|         : n < 0 | ||||
|         ? numbered[numbered.length - 1 + n] | ||||
|         : aliases[alias]; | ||||
|           ? numbered[numbered.length - 1 + n] | ||||
|           : aliases[alias]; | ||||
|  | ||||
|     if (!release) { | ||||
|       throw new Error( | ||||
|   | ||||
							
								
								
									
										58
									
								
								src/main.ts
									
									
									
									
									
								
							
							
						
						
									
										58
									
								
								src/main.ts
									
									
									
									
									
								
							| @@ -1,6 +1,7 @@ | ||||
| import * as core from '@actions/core'; | ||||
|  | ||||
| import os from 'os'; | ||||
| import fs from 'fs'; | ||||
|  | ||||
| import * as auth from './authutil'; | ||||
| import * as path from 'path'; | ||||
| @@ -20,6 +21,9 @@ export async function run() { | ||||
|  | ||||
|     let arch = core.getInput('architecture'); | ||||
|     const cache = core.getInput('cache'); | ||||
|     const packagemanagercache = | ||||
|       (core.getInput('package-manager-cache') || 'true').toUpperCase() === | ||||
|       'TRUE'; | ||||
|  | ||||
|     // if architecture supplied but node-version is not | ||||
|     // if we don't throw a warning, the already installed x64 node will be used which is not probably what user meant. | ||||
| @@ -63,10 +67,25 @@ export async function run() { | ||||
|       auth.configAuthentication(registryUrl, alwaysAuth); | ||||
|     } | ||||
|  | ||||
|     if (cache && isCacheFeatureAvailable()) { | ||||
|       core.saveState(State.CachePackageManager, cache); | ||||
|       const cacheDependencyPath = core.getInput('cache-dependency-path'); | ||||
|       await restoreCache(cache, cacheDependencyPath); | ||||
|     const cacheDependencyPath = core.getInput('cache-dependency-path'); | ||||
|  | ||||
|     if (isCacheFeatureAvailable()) { | ||||
|       // if the cache input is provided, use it for caching. | ||||
|       if (cache) { | ||||
|         core.saveState(State.CachePackageManager, cache); | ||||
|         await restoreCache(cache, cacheDependencyPath); | ||||
|         // package manager npm is detected from package.json, enable auto-caching for npm. | ||||
|       } else if (packagemanagercache) { | ||||
|         const resolvedPackageManager = getNameFromPackageManagerField(); | ||||
|         if (resolvedPackageManager) { | ||||
|           core.info( | ||||
|             "Detected npm as the package manager from package.json's packageManager field. " + | ||||
|               'Auto caching has been enabled for npm. If you want to disable it, set package-manager-cache input to false' | ||||
|           ); | ||||
|           core.saveState(State.CachePackageManager, resolvedPackageManager); | ||||
|           await restoreCache(resolvedPackageManager, cacheDependencyPath); | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|  | ||||
|     const matchersPath = path.join(__dirname, '../..', '.github'); | ||||
| @@ -117,3 +136,34 @@ function resolveVersionInput(): string { | ||||
|  | ||||
|   return version; | ||||
| } | ||||
|  | ||||
| export function getNameFromPackageManagerField(): string | undefined { | ||||
|   const npmRegex = /^(\^)?npm(@.*)?$/; // matches "npm", "npm@...", "^npm@..." | ||||
|   try { | ||||
|     const packageJson = JSON.parse( | ||||
|       fs.readFileSync( | ||||
|         path.join(process.env.GITHUB_WORKSPACE!, 'package.json'), | ||||
|         'utf-8' | ||||
|       ) | ||||
|     ); | ||||
|  | ||||
|     // Check devEngines.packageManager first (object or array) | ||||
|     const devPM = packageJson?.devEngines?.packageManager; | ||||
|     const devPMArray = devPM ? (Array.isArray(devPM) ? devPM : [devPM]) : []; | ||||
|     for (const obj of devPMArray) { | ||||
|       if (typeof obj?.name === 'string' && npmRegex.test(obj.name)) { | ||||
|         return 'npm'; | ||||
|       } | ||||
|     } | ||||
|  | ||||
|     // Check top-level packageManager | ||||
|     const topLevelPM = packageJson?.packageManager; | ||||
|     if (typeof topLevelPM === 'string' && npmRegex.test(topLevelPM)) { | ||||
|       return 'npm'; | ||||
|     } | ||||
|  | ||||
|     return undefined; | ||||
|   } catch { | ||||
|     return undefined; | ||||
|   } | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user