mirror of
				https://kkgithub.com/actions/setup-node.git
				synced 2025-10-31 10:41:57 +08:00 
			
		
		
		
	Compare commits
	
		
			5 Commits
		
	
	
		
			test-macos
			...
			c705e63de6
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| c705e63de6 | |||
| 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' | ||||
|  | ||||
							
								
								
									
										68
									
								
								.github/workflows/e2e-cache.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										68
									
								
								.github/workflows/e2e-cache.yml
									
									
									
									
										vendored
									
									
								
							| @ -6,7 +6,7 @@ on: | ||||
|       - '**.md' | ||||
|   push: | ||||
|     branches: | ||||
|       - test-macos-x64-runner | ||||
|       - main | ||||
|       - releases/* | ||||
|     paths-ignore: | ||||
|       - '**.md' | ||||
| @ -18,8 +18,8 @@ jobs: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large] | ||||
|         node-version: [20, 22, 24] | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-13] | ||||
|         node-version: [18, 20, 22, 24] | ||||
|     steps: | ||||
|       - uses: actions/checkout@v5 | ||||
|       - name: Clean global cache | ||||
| @ -41,8 +41,8 @@ jobs: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large] | ||||
|         node-version: [20, 22, 24] | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-13] | ||||
|         node-version: [18, 20, 22, 24] | ||||
|     steps: | ||||
|       - uses: actions/checkout@v5 | ||||
|       - name: Install pnpm | ||||
| @ -74,8 +74,8 @@ jobs: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large] | ||||
|         node-version: [20, 22, 24] | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-13] | ||||
|         node-version: [18, 20, 24] | ||||
|     steps: | ||||
|       - uses: actions/checkout@v5 | ||||
|       - name: Yarn version | ||||
| @ -106,8 +106,8 @@ jobs: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large] | ||||
|         node-version: [20, 22, 24] | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-13] | ||||
|         node-version: [18, 20, 22, 24] | ||||
|     steps: | ||||
|       - uses: actions/checkout@v5 | ||||
|       - name: Update yarn | ||||
| @ -139,7 +139,7 @@ jobs: | ||||
|     name: Test yarn subprojects | ||||
|     strategy: | ||||
|       matrix: | ||||
|         node-version: [20, 22, 24] | ||||
|         node-version: [18, 20, 22, 24] | ||||
|     runs-on: ubuntu-latest | ||||
|  | ||||
|     steps: | ||||
| @ -166,7 +166,7 @@ jobs: | ||||
|     name: Test yarn subprojects all locally managed | ||||
|     strategy: | ||||
|       matrix: | ||||
|         node-version: [20, 22, 24] | ||||
|         node-version: [18, 20, 22, 24] | ||||
|     runs-on: ubuntu-latest | ||||
|  | ||||
|     steps: | ||||
| @ -193,7 +193,7 @@ jobs: | ||||
|     name: Test yarn subprojects some locally managed | ||||
|     strategy: | ||||
|       matrix: | ||||
|         node-version: [20, 22, 24] | ||||
|         node-version: [18, 20, 22, 24] | ||||
|     runs-on: ubuntu-latest | ||||
|  | ||||
|     steps: | ||||
| @ -220,7 +220,7 @@ jobs: | ||||
|     name: Test yarn subprojects managed by git | ||||
|     strategy: | ||||
|       matrix: | ||||
|         node-version: [20, 22, 24] | ||||
|         node-version: [18, 20, 22, 24] | ||||
|     runs-on: ubuntu-latest | ||||
|  | ||||
|     steps: | ||||
| @ -244,14 +244,14 @@ jobs: | ||||
|             sub2/*.lock | ||||
|             sub3/*.lock | ||||
|  | ||||
|   node-npm-packageManager-auto-cache: | ||||
|     name: Test auto cache with top-level packageManager | ||||
|   node-npm-package-manager-cache: | ||||
|     name: Test enabling cache if package manager field is present (Node ${{ matrix.node-version }}, ${{ matrix.os }}) | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large] | ||||
|         node-version: [20, 22, 24] | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-13] | ||||
|         node-version: [18, 20, 22] | ||||
|     steps: | ||||
|       - uses: actions/checkout@v5 | ||||
|       - name: Create package.json with packageManager field | ||||
| @ -268,37 +268,3 @@ jobs: | ||||
|       - 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 | ||||
|  | ||||
							
								
								
									
										4
									
								
								.github/workflows/proxy.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.github/workflows/proxy.yml
									
									
									
									
										vendored
									
									
								
							| @ -25,7 +25,7 @@ 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 | ||||
| @ -41,7 +41,7 @@ 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 | ||||
|  | ||||
| @ -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 | ||||
|  | ||||
							
								
								
									
										38
									
								
								.github/workflows/versions.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										38
									
								
								.github/workflows/versions.yml
									
									
									
									
										vendored
									
									
								
							| @ -6,7 +6,7 @@ on: | ||||
|       - '**.md' | ||||
|   push: | ||||
|     branches: | ||||
|       - test-macos-x64-runner | ||||
|       - main | ||||
|       - releases/* | ||||
|     paths-ignore: | ||||
|       - '**.md' | ||||
| @ -17,8 +17,8 @@ jobs: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large] | ||||
|         node-version: [20, 22, 24] | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-13] | ||||
|         node-version: [18, 20, 22, 24] | ||||
|     steps: | ||||
|       - uses: actions/checkout@v5 | ||||
|       - name: Setup Node | ||||
| @ -34,7 +34,7 @@ jobs: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest-large] | ||||
|         os: [ubuntu-latest, windows-latest, macos-13] | ||||
|         node-version: [lts/dubnium, lts/erbium, lts/fermium, lts/*, lts/-1] | ||||
|     steps: | ||||
|       - uses: actions/checkout@v5 | ||||
| @ -56,7 +56,7 @@ jobs: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large] | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-13] | ||||
|         node-version: | ||||
|           [ | ||||
|             '20-v8-canary', | ||||
| @ -81,8 +81,8 @@ jobs: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large] | ||||
|         node-version: [20-nightly, 25-nightly, 24.0.0-nightly] | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-13] | ||||
|         node-version: [20-nightly, 21-nightly, 18.0.0-nightly] | ||||
|     steps: | ||||
|       - uses: actions/checkout@v5 | ||||
|       - name: Setup Node | ||||
| @ -101,8 +101,8 @@ jobs: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         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] | ||||
|         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] | ||||
|     steps: | ||||
|       - uses: actions/checkout@v5 | ||||
|       - name: Setup Node | ||||
| @ -121,8 +121,8 @@ jobs: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large] | ||||
|         node-version: [20.10.0, 22.0.0, 24.9.0] | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-13] | ||||
|         node-version: [18.20.0, 20.10.0, 22.0.0] | ||||
|     steps: | ||||
|       - uses: actions/checkout@v5 | ||||
|       - name: Setup Node | ||||
| @ -138,8 +138,8 @@ jobs: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large] | ||||
|         node-version: [20, 22, 24] | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-13] | ||||
|         node-version: [18, 20, 22, 24] | ||||
|     steps: | ||||
|       - uses: actions/checkout@v5 | ||||
|       - name: Setup Node and check latest | ||||
| @ -156,7 +156,7 @@ jobs: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large] | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-13] | ||||
|         node-version-file: | ||||
|           [.nvmrc, .tool-versions, .tool-versions-node, package.json] | ||||
|     steps: | ||||
| @ -173,7 +173,7 @@ jobs: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large] | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-13] | ||||
|     steps: | ||||
|       - uses: actions/checkout@v5 | ||||
|       - name: Setup node from node version file | ||||
| @ -188,7 +188,7 @@ jobs: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large] | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-13] | ||||
|     steps: | ||||
|       - uses: actions/checkout@v5 | ||||
|       - name: Setup node from node version file | ||||
| @ -203,7 +203,7 @@ jobs: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large] | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-13] | ||||
|         node-version: [17, 19] | ||||
|     steps: | ||||
|       - uses: actions/checkout@v5 | ||||
| @ -220,7 +220,7 @@ jobs: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest-large] | ||||
|         os: [ubuntu-latest, windows-latest, macos-13] | ||||
|     steps: | ||||
|       - uses: actions/checkout@v5 | ||||
|       # test old versions which didn't have npm and layout different | ||||
| @ -250,7 +250,7 @@ jobs: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large] | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-13] | ||||
|         node-version: [current, latest, node] | ||||
|     steps: | ||||
|       - name: Get node version | ||||
|  | ||||
							
								
								
									
										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 | ||||
|  | ||||
							
								
								
									
										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 | ||||
|  | ||||
							
								
								
									
										34
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										34
									
								
								README.md
									
									
									
									
									
								
							| @ -18,7 +18,7 @@ See [action.yml](action.yml) | ||||
|  | ||||
| <!-- start usage --> | ||||
| ```yaml | ||||
| - uses: actions/setup-node@v4 | ||||
| - uses: actions/setup-node@v5 | ||||
|   with: | ||||
|     # Version Spec of the version to use in SemVer notation. | ||||
|     # It also admits such aliases as lts/*, latest, nightly and canary builds | ||||
| @ -98,8 +98,8 @@ See [action.yml](action.yml) | ||||
|  | ||||
| ```yaml | ||||
| steps: | ||||
| - uses: actions/checkout@v4 | ||||
| - uses: actions/setup-node@v4 | ||||
| - uses: actions/checkout@v5 | ||||
| - uses: actions/setup-node@v5 | ||||
|   with: | ||||
|     node-version: 18 | ||||
| - run: npm ci | ||||
| @ -135,7 +135,19 @@ 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. | ||||
|  | ||||
| Caching is turned on by default when a `packageManager` field is detected in the `package.json` file. The `package-manager-cache` input provides control over this automatic caching behavior. By default, `package-manager-cache` is set to `true`, which enables caching when a valid package manager field is detected in the `package.json` file. To disable this automatic caching, set the `package-manager-cache` input to `false`. | ||||
|  | ||||
| ```yaml | ||||
| steps: | ||||
| - uses: actions/checkout@v4 | ||||
| - uses: actions/setup-node@v4 | ||||
|   with: | ||||
|     package-manager-cache: false | ||||
| - run: npm ci | ||||
| ``` | ||||
| > If no valid `packageManager` field is detected in the `package.json` file, caching will remain disabled unless explicitly configured. | ||||
|  | ||||
| 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,8 +159,8 @@ 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@v5 | ||||
|   with: | ||||
|     node-version: 20 | ||||
|     cache: 'npm' | ||||
| @ -160,8 +172,8 @@ steps: | ||||
|  | ||||
| ```yaml | ||||
| steps: | ||||
| - uses: actions/checkout@v4 | ||||
| - uses: actions/setup-node@v4 | ||||
| - uses: actions/checkout@v5 | ||||
| - uses: actions/setup-node@v5 | ||||
|   with: | ||||
|     node-version: 20 | ||||
|     cache: 'npm' | ||||
| @ -181,9 +193,9 @@ jobs: | ||||
|         node: [ 14, 16, 18 ] | ||||
|     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@v5 | ||||
|         with: | ||||
|           node-version: ${{ matrix.node }} | ||||
|       - run: npm ci | ||||
| @ -197,7 +209,7 @@ 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@v5 | ||||
| with: | ||||
|   token: ${{ secrets.GH_DOTCOM_TOKEN }} | ||||
|   node-version: 20 | ||||
|  | ||||
| @ -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,65 @@ describe('main tests', () => { | ||||
|       ); | ||||
|     }); | ||||
|   }); | ||||
|  | ||||
|   describe('cache feature tests', () => { | ||||
|     it('Should enable caching with the resolved package manager from packageManager field in package.json when the cache input is not provided', async () => { | ||||
|       inputs['package-manager-cache'] = 'true'; | ||||
|       inputs['cache'] = ''; // No cache input is provided | ||||
|  | ||||
|       inSpy.mockImplementation(name => inputs[name]); | ||||
|  | ||||
|       const readFileSpy = jest.spyOn(fs, 'readFileSync'); | ||||
|       readFileSpy.mockImplementation(() => | ||||
|         JSON.stringify({ | ||||
|           packageManager: 'yarn@3.2.0' | ||||
|         }) | ||||
|       ); | ||||
|  | ||||
|       await main.run(); | ||||
|  | ||||
|       expect(saveStateSpy).toHaveBeenCalledWith(expect.anything(), 'yarn'); | ||||
|     }); | ||||
|  | ||||
|     it('Should not enable caching if the packageManager field is missing in package.json and the cache input is not provided', async () => { | ||||
|       inputs['package-manager-cache'] = 'true'; | ||||
|       inputs['cache'] = ''; // No cache input is provided | ||||
|  | ||||
|       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'] = ''; // No cache input is provided | ||||
|  | ||||
|       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'; // Explicit cache input provided | ||||
|  | ||||
|       inSpy.mockImplementation(name => inputs[name]); | ||||
|       isCacheActionAvailable.mockReturnValue(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 based on the package manager field in package.json. By default, caching is enabled if the package manager field is present.' | ||||
|     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
											
										
									
								
							
							
								
								
									
										4558
									
								
								dist/setup/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4558
									
								
								dist/setup/index.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| @ -45,8 +45,8 @@ 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@v5 | ||||
|   with: | ||||
|     node-version: '16' | ||||
|     check-latest: true | ||||
| @ -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@v5 | ||||
|   with: | ||||
|     node-version-file: '.nvmrc' | ||||
| - run: npm ci | ||||
| @ -97,8 +97,8 @@ 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@v5 | ||||
|         with: | ||||
|           node-version: '14' | ||||
|           architecture: 'x64' # optional, x64 or x86. If not specified, x64 will be used by default | ||||
| @ -118,8 +118,8 @@ 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@v5 | ||||
|         with: | ||||
|           node-version: '20.0.0-v8-canary' # it will install the latest v8 canary release for node 20.0.0 | ||||
|       - run: npm ci | ||||
| @ -133,8 +133,8 @@ 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@v5 | ||||
|         with: | ||||
|           node-version: '20-v8-canary' # it will install the latest v8 canary release for node 20 | ||||
|       - run: npm ci | ||||
| @ -149,8 +149,8 @@ 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@v5 | ||||
|         with: | ||||
|           node-version: 'v20.1.1-v8-canary20221103f7e2421e91' | ||||
|       - run: npm ci | ||||
| @ -169,8 +169,8 @@ 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@v5 | ||||
|         with: | ||||
|           node-version: '16-nightly' # it will install the latest nightly release for node 16 | ||||
|       - run: npm ci | ||||
| @ -185,8 +185,8 @@ 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@v5 | ||||
|         with: | ||||
|           node-version: '16.0.0-nightly' # it will install the latest nightly release for node 16.0.0 | ||||
|       - run: npm ci | ||||
| @ -201,8 +201,8 @@ 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@v5 | ||||
|         with: | ||||
|           node-version: '16.0.0-nightly20210420a0261d231c' | ||||
|       - run: npm ci | ||||
| @ -219,8 +219,8 @@ 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@v5 | ||||
|         with: | ||||
|           node-version: '16.0.0-rc.1' | ||||
|       - run: npm ci | ||||
| @ -236,8 +236,8 @@ The action follows [actions/cache](https://github.com/actions/cache/blob/main/ex | ||||
| Yarn caching handles both yarn versions: 1 or 2. | ||||
| ```yaml | ||||
| steps: | ||||
| - uses: actions/checkout@v4 | ||||
| - uses: actions/setup-node@v4 | ||||
| - uses: actions/checkout@v5 | ||||
| - uses: actions/setup-node@v5 | ||||
|   with: | ||||
|     node-version: '14' | ||||
|     cache: 'yarn' | ||||
| @ -255,11 +255,11 @@ steps: | ||||
| # NOTE: pnpm caching support requires pnpm version >= 6.10.0 | ||||
|  | ||||
| steps: | ||||
| - uses: actions/checkout@v4 | ||||
| - uses: actions/checkout@v5 | ||||
| - uses: pnpm/action-setup@v2 | ||||
|   with: | ||||
|     version: 6.32.9 | ||||
| - uses: actions/setup-node@v4 | ||||
| - uses: actions/setup-node@v5 | ||||
|   with: | ||||
|     node-version: '14' | ||||
|     cache: 'pnpm' | ||||
| @ -274,8 +274,8 @@ 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@v5 | ||||
|   with: | ||||
|     node-version: '14' | ||||
|     cache: 'npm' | ||||
| @ -287,8 +287,8 @@ 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@v5 | ||||
|   with: | ||||
|     node-version: '14' | ||||
|     cache: 'npm' | ||||
| @ -324,9 +324,9 @@ jobs: | ||||
|             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@v5 | ||||
|         with: | ||||
|           node-version: ${{ matrix.node_version }} | ||||
|           architecture: ${{ matrix.architecture }} | ||||
| @ -337,8 +337,8 @@ 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@v5 | ||||
|   with: | ||||
|     node-version: '14.x' | ||||
|     registry-url: 'https://registry.npmjs.org' | ||||
| @ -346,7 +346,7 @@ steps: | ||||
| - run: npm publish | ||||
|   env: | ||||
|     NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} | ||||
| - uses: actions/setup-node@v4 | ||||
| - uses: actions/setup-node@v5 | ||||
|   with: | ||||
|     registry-url: 'https://npm.pkg.github.com' | ||||
| - run: npm publish | ||||
| @ -357,8 +357,8 @@ 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@v5 | ||||
|   with: | ||||
|     node-version: '14.x' | ||||
|     registry-url: <registry url> | ||||
| @ -366,7 +366,7 @@ steps: | ||||
| - run: yarn publish | ||||
|   env: | ||||
|     NODE_AUTH_TOKEN: ${{ secrets.YARN_TOKEN }} | ||||
| - uses: actions/setup-node@v4 | ||||
| - uses: actions/setup-node@v5 | ||||
|   with: | ||||
|     registry-url: 'https://npm.pkg.github.com' | ||||
| - run: yarn publish | ||||
| @ -377,8 +377,8 @@ steps: | ||||
| ## Use private packages | ||||
| ```yaml | ||||
| steps: | ||||
| - uses: actions/checkout@v4 | ||||
| - uses: actions/setup-node@v4 | ||||
| - uses: actions/checkout@v5 | ||||
| - uses: actions/setup-node@v5 | ||||
|   with: | ||||
|     node-version: '14.x' | ||||
|     registry-url: 'https://registry.npmjs.org' | ||||
| @ -397,8 +397,8 @@ 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@v5 | ||||
|   with: | ||||
|     node-version: '14.x' | ||||
| - name: Setup .yarnrc.yml | ||||
| @ -427,7 +427,7 @@ 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@v5 | ||||
|   with: | ||||
|     node-version: '14.x' | ||||
|     mirror: 'https://nodejs.org/dist' | ||||
|  | ||||
							
								
								
									
										485
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										485
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							| @ -1,12 +1,12 @@ | ||||
| { | ||||
|   "name": "setup-node", | ||||
|   "version": "4.0.0", | ||||
|   "version": "5.0.0", | ||||
|   "lockfileVersion": 3, | ||||
|   "requires": true, | ||||
|   "packages": { | ||||
|     "": { | ||||
|       "name": "setup-node", | ||||
|       "version": "4.0.0", | ||||
|       "version": "5.0.0", | ||||
|       "license": "MIT", | ||||
|       "dependencies": { | ||||
|         "@actions/cache": "^4.0.3", | ||||
| @ -22,9 +22,9 @@ | ||||
|       }, | ||||
|       "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/eslint-plugin": "^8.42.0", | ||||
|         "@typescript-eslint/parser": "^5.54.0", | ||||
|         "@vercel/ncc": "^0.38.3", | ||||
|         "eslint": "^8.57.0", | ||||
| @ -37,6 +37,9 @@ | ||||
|         "prettier": "^2.8.4", | ||||
|         "ts-jest": "^29.1.2", | ||||
|         "typescript": "^5.4.2" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">=24.0.0" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@aashutoshrathi/word-wrap": { | ||||
| @ -855,25 +858,30 @@ | ||||
|       "dev": true | ||||
|     }, | ||||
|     "node_modules/@eslint-community/eslint-utils": { | ||||
|       "version": "4.4.0", | ||||
|       "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", | ||||
|       "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", | ||||
|       "version": "4.9.0", | ||||
|       "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", | ||||
|       "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", | ||||
|       "dev": true, | ||||
|       "license": "MIT", | ||||
|       "dependencies": { | ||||
|         "eslint-visitor-keys": "^3.3.0" | ||||
|         "eslint-visitor-keys": "^3.4.3" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": "^12.22.0 || ^14.17.0 || >=16.0.0" | ||||
|       }, | ||||
|       "funding": { | ||||
|         "url": "https://opencollective.com/eslint" | ||||
|       }, | ||||
|       "peerDependencies": { | ||||
|         "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@eslint-community/regexpp": { | ||||
|       "version": "4.9.1", | ||||
|       "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.9.1.tgz", | ||||
|       "integrity": "sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==", | ||||
|       "version": "4.12.1", | ||||
|       "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", | ||||
|       "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", | ||||
|       "dev": true, | ||||
|       "license": "MIT", | ||||
|       "engines": { | ||||
|         "node": "^12.0.0 || ^14.0.0 || >=16.0.0" | ||||
|       } | ||||
| @ -1780,11 +1788,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": { | ||||
| @ -1847,37 +1856,185 @@ | ||||
|       "dev": true | ||||
|     }, | ||||
|     "node_modules/@typescript-eslint/eslint-plugin": { | ||||
|       "version": "5.62.0", | ||||
|       "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", | ||||
|       "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", | ||||
|       "version": "8.42.0", | ||||
|       "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.42.0.tgz", | ||||
|       "integrity": "sha512-Aq2dPqsQkxHOLfb2OPv43RnIvfj05nw8v/6n3B2NABIPpHnjQnaLo9QGMTvml+tv4korl/Cjfrb/BYhoL8UUTQ==", | ||||
|       "dev": true, | ||||
|       "license": "MIT", | ||||
|       "dependencies": { | ||||
|         "@eslint-community/regexpp": "^4.4.0", | ||||
|         "@typescript-eslint/scope-manager": "5.62.0", | ||||
|         "@typescript-eslint/type-utils": "5.62.0", | ||||
|         "@typescript-eslint/utils": "5.62.0", | ||||
|         "debug": "^4.3.4", | ||||
|         "@eslint-community/regexpp": "^4.10.0", | ||||
|         "@typescript-eslint/scope-manager": "8.42.0", | ||||
|         "@typescript-eslint/type-utils": "8.42.0", | ||||
|         "@typescript-eslint/utils": "8.42.0", | ||||
|         "@typescript-eslint/visitor-keys": "8.42.0", | ||||
|         "graphemer": "^1.4.0", | ||||
|         "ignore": "^5.2.0", | ||||
|         "natural-compare-lite": "^1.4.0", | ||||
|         "semver": "^7.3.7", | ||||
|         "tsutils": "^3.21.0" | ||||
|         "ignore": "^7.0.0", | ||||
|         "natural-compare": "^1.4.0", | ||||
|         "ts-api-utils": "^2.1.0" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": "^12.22.0 || ^14.17.0 || >=16.0.0" | ||||
|         "node": "^18.18.0 || ^20.9.0 || >=21.1.0" | ||||
|       }, | ||||
|       "funding": { | ||||
|         "type": "opencollective", | ||||
|         "url": "https://opencollective.com/typescript-eslint" | ||||
|       }, | ||||
|       "peerDependencies": { | ||||
|         "@typescript-eslint/parser": "^5.0.0", | ||||
|         "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" | ||||
|         "@typescript-eslint/parser": "^8.42.0", | ||||
|         "eslint": "^8.57.0 || ^9.0.0", | ||||
|         "typescript": ">=4.8.4 <6.0.0" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { | ||||
|       "version": "8.42.0", | ||||
|       "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.42.0.tgz", | ||||
|       "integrity": "sha512-51+x9o78NBAVgQzOPd17DkNTnIzJ8T/O2dmMBLoK9qbY0Gm52XJcdJcCl18ExBMiHo6jPMErUQWUv5RLE51zJw==", | ||||
|       "dev": true, | ||||
|       "license": "MIT", | ||||
|       "dependencies": { | ||||
|         "@typescript-eslint/types": "8.42.0", | ||||
|         "@typescript-eslint/visitor-keys": "8.42.0" | ||||
|       }, | ||||
|       "peerDependenciesMeta": { | ||||
|         "typescript": { | ||||
|           "optional": true | ||||
|         } | ||||
|       "engines": { | ||||
|         "node": "^18.18.0 || ^20.9.0 || >=21.1.0" | ||||
|       }, | ||||
|       "funding": { | ||||
|         "type": "opencollective", | ||||
|         "url": "https://opencollective.com/typescript-eslint" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": { | ||||
|       "version": "8.42.0", | ||||
|       "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.42.0.tgz", | ||||
|       "integrity": "sha512-LdtAWMiFmbRLNP7JNeY0SqEtJvGMYSzfiWBSmx+VSZ1CH+1zyl8Mmw1TT39OrtsRvIYShjJWzTDMPWZJCpwBlw==", | ||||
|       "dev": true, | ||||
|       "license": "MIT", | ||||
|       "engines": { | ||||
|         "node": "^18.18.0 || ^20.9.0 || >=21.1.0" | ||||
|       }, | ||||
|       "funding": { | ||||
|         "type": "opencollective", | ||||
|         "url": "https://opencollective.com/typescript-eslint" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/typescript-estree": { | ||||
|       "version": "8.42.0", | ||||
|       "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.42.0.tgz", | ||||
|       "integrity": "sha512-ku/uYtT4QXY8sl9EDJETD27o3Ewdi72hcXg1ah/kkUgBvAYHLwj2ofswFFNXS+FL5G+AGkxBtvGt8pFBHKlHsQ==", | ||||
|       "dev": true, | ||||
|       "license": "MIT", | ||||
|       "dependencies": { | ||||
|         "@typescript-eslint/project-service": "8.42.0", | ||||
|         "@typescript-eslint/tsconfig-utils": "8.42.0", | ||||
|         "@typescript-eslint/types": "8.42.0", | ||||
|         "@typescript-eslint/visitor-keys": "8.42.0", | ||||
|         "debug": "^4.3.4", | ||||
|         "fast-glob": "^3.3.2", | ||||
|         "is-glob": "^4.0.3", | ||||
|         "minimatch": "^9.0.4", | ||||
|         "semver": "^7.6.0", | ||||
|         "ts-api-utils": "^2.1.0" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": "^18.18.0 || ^20.9.0 || >=21.1.0" | ||||
|       }, | ||||
|       "funding": { | ||||
|         "type": "opencollective", | ||||
|         "url": "https://opencollective.com/typescript-eslint" | ||||
|       }, | ||||
|       "peerDependencies": { | ||||
|         "typescript": ">=4.8.4 <6.0.0" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { | ||||
|       "version": "8.42.0", | ||||
|       "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.42.0.tgz", | ||||
|       "integrity": "sha512-JnIzu7H3RH5BrKC4NoZqRfmjqCIS1u3hGZltDYJgkVdqAezl4L9d1ZLw+36huCujtSBSAirGINF/S4UxOcR+/g==", | ||||
|       "dev": true, | ||||
|       "license": "MIT", | ||||
|       "dependencies": { | ||||
|         "@eslint-community/eslint-utils": "^4.7.0", | ||||
|         "@typescript-eslint/scope-manager": "8.42.0", | ||||
|         "@typescript-eslint/types": "8.42.0", | ||||
|         "@typescript-eslint/typescript-estree": "8.42.0" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": "^18.18.0 || ^20.9.0 || >=21.1.0" | ||||
|       }, | ||||
|       "funding": { | ||||
|         "type": "opencollective", | ||||
|         "url": "https://opencollective.com/typescript-eslint" | ||||
|       }, | ||||
|       "peerDependencies": { | ||||
|         "eslint": "^8.57.0 || ^9.0.0", | ||||
|         "typescript": ">=4.8.4 <6.0.0" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { | ||||
|       "version": "8.42.0", | ||||
|       "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.42.0.tgz", | ||||
|       "integrity": "sha512-3WbiuzoEowaEn8RSnhJBrxSwX8ULYE9CXaPepS2C2W3NSA5NNIvBaslpBSBElPq0UGr0xVJlXFWOAKIkyylydQ==", | ||||
|       "dev": true, | ||||
|       "license": "MIT", | ||||
|       "dependencies": { | ||||
|         "@typescript-eslint/types": "8.42.0", | ||||
|         "eslint-visitor-keys": "^4.2.1" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": "^18.18.0 || ^20.9.0 || >=21.1.0" | ||||
|       }, | ||||
|       "funding": { | ||||
|         "type": "opencollective", | ||||
|         "url": "https://opencollective.com/typescript-eslint" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@typescript-eslint/eslint-plugin/node_modules/brace-expansion": { | ||||
|       "version": "2.0.2", | ||||
|       "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", | ||||
|       "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", | ||||
|       "dev": true, | ||||
|       "license": "MIT", | ||||
|       "dependencies": { | ||||
|         "balanced-match": "^1.0.0" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@typescript-eslint/eslint-plugin/node_modules/eslint-visitor-keys": { | ||||
|       "version": "4.2.1", | ||||
|       "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", | ||||
|       "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", | ||||
|       "dev": true, | ||||
|       "license": "Apache-2.0", | ||||
|       "engines": { | ||||
|         "node": "^18.18.0 || ^20.9.0 || >=21.1.0" | ||||
|       }, | ||||
|       "funding": { | ||||
|         "url": "https://opencollective.com/eslint" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { | ||||
|       "version": "7.0.5", | ||||
|       "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", | ||||
|       "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", | ||||
|       "dev": true, | ||||
|       "license": "MIT", | ||||
|       "engines": { | ||||
|         "node": ">= 4" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@typescript-eslint/eslint-plugin/node_modules/minimatch": { | ||||
|       "version": "9.0.5", | ||||
|       "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", | ||||
|       "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", | ||||
|       "dev": true, | ||||
|       "license": "ISC", | ||||
|       "dependencies": { | ||||
|         "brace-expansion": "^2.0.1" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">=16 || 14 >=14.17" | ||||
|       }, | ||||
|       "funding": { | ||||
|         "url": "https://github.com/sponsors/isaacs" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@typescript-eslint/parser": { | ||||
| @ -1907,6 +2064,42 @@ | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@typescript-eslint/project-service": { | ||||
|       "version": "8.42.0", | ||||
|       "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.42.0.tgz", | ||||
|       "integrity": "sha512-vfVpLHAhbPjilrabtOSNcUDmBboQNrJUiNAGoImkZKnMjs2TIcWG33s4Ds0wY3/50aZmTMqJa6PiwkwezaAklg==", | ||||
|       "dev": true, | ||||
|       "license": "MIT", | ||||
|       "dependencies": { | ||||
|         "@typescript-eslint/tsconfig-utils": "^8.42.0", | ||||
|         "@typescript-eslint/types": "^8.42.0", | ||||
|         "debug": "^4.3.4" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": "^18.18.0 || ^20.9.0 || >=21.1.0" | ||||
|       }, | ||||
|       "funding": { | ||||
|         "type": "opencollective", | ||||
|         "url": "https://opencollective.com/typescript-eslint" | ||||
|       }, | ||||
|       "peerDependencies": { | ||||
|         "typescript": ">=4.8.4 <6.0.0" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@typescript-eslint/project-service/node_modules/@typescript-eslint/types": { | ||||
|       "version": "8.42.0", | ||||
|       "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.42.0.tgz", | ||||
|       "integrity": "sha512-LdtAWMiFmbRLNP7JNeY0SqEtJvGMYSzfiWBSmx+VSZ1CH+1zyl8Mmw1TT39OrtsRvIYShjJWzTDMPWZJCpwBlw==", | ||||
|       "dev": true, | ||||
|       "license": "MIT", | ||||
|       "engines": { | ||||
|         "node": "^18.18.0 || ^20.9.0 || >=21.1.0" | ||||
|       }, | ||||
|       "funding": { | ||||
|         "type": "opencollective", | ||||
|         "url": "https://opencollective.com/typescript-eslint" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@typescript-eslint/scope-manager": { | ||||
|       "version": "5.62.0", | ||||
|       "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", | ||||
| @ -1924,31 +2117,188 @@ | ||||
|         "url": "https://opencollective.com/typescript-eslint" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@typescript-eslint/type-utils": { | ||||
|       "version": "5.62.0", | ||||
|       "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", | ||||
|       "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", | ||||
|     "node_modules/@typescript-eslint/tsconfig-utils": { | ||||
|       "version": "8.42.0", | ||||
|       "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.42.0.tgz", | ||||
|       "integrity": "sha512-kHeFUOdwAJfUmYKjR3CLgZSglGHjbNTi1H8sTYRYV2xX6eNz4RyJ2LIgsDLKf8Yi0/GL1WZAC/DgZBeBft8QAQ==", | ||||
|       "dev": true, | ||||
|       "dependencies": { | ||||
|         "@typescript-eslint/typescript-estree": "5.62.0", | ||||
|         "@typescript-eslint/utils": "5.62.0", | ||||
|         "debug": "^4.3.4", | ||||
|         "tsutils": "^3.21.0" | ||||
|       }, | ||||
|       "license": "MIT", | ||||
|       "engines": { | ||||
|         "node": "^12.22.0 || ^14.17.0 || >=16.0.0" | ||||
|         "node": "^18.18.0 || ^20.9.0 || >=21.1.0" | ||||
|       }, | ||||
|       "funding": { | ||||
|         "type": "opencollective", | ||||
|         "url": "https://opencollective.com/typescript-eslint" | ||||
|       }, | ||||
|       "peerDependencies": { | ||||
|         "eslint": "*" | ||||
|         "typescript": ">=4.8.4 <6.0.0" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@typescript-eslint/type-utils": { | ||||
|       "version": "8.42.0", | ||||
|       "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.42.0.tgz", | ||||
|       "integrity": "sha512-9KChw92sbPTYVFw3JLRH1ockhyR3zqqn9lQXol3/YbI6jVxzWoGcT3AsAW0mu1MY0gYtsXnUGV/AKpkAj5tVlQ==", | ||||
|       "dev": true, | ||||
|       "license": "MIT", | ||||
|       "dependencies": { | ||||
|         "@typescript-eslint/types": "8.42.0", | ||||
|         "@typescript-eslint/typescript-estree": "8.42.0", | ||||
|         "@typescript-eslint/utils": "8.42.0", | ||||
|         "debug": "^4.3.4", | ||||
|         "ts-api-utils": "^2.1.0" | ||||
|       }, | ||||
|       "peerDependenciesMeta": { | ||||
|         "typescript": { | ||||
|           "optional": true | ||||
|         } | ||||
|       "engines": { | ||||
|         "node": "^18.18.0 || ^20.9.0 || >=21.1.0" | ||||
|       }, | ||||
|       "funding": { | ||||
|         "type": "opencollective", | ||||
|         "url": "https://opencollective.com/typescript-eslint" | ||||
|       }, | ||||
|       "peerDependencies": { | ||||
|         "eslint": "^8.57.0 || ^9.0.0", | ||||
|         "typescript": ">=4.8.4 <6.0.0" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/scope-manager": { | ||||
|       "version": "8.42.0", | ||||
|       "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.42.0.tgz", | ||||
|       "integrity": "sha512-51+x9o78NBAVgQzOPd17DkNTnIzJ8T/O2dmMBLoK9qbY0Gm52XJcdJcCl18ExBMiHo6jPMErUQWUv5RLE51zJw==", | ||||
|       "dev": true, | ||||
|       "license": "MIT", | ||||
|       "dependencies": { | ||||
|         "@typescript-eslint/types": "8.42.0", | ||||
|         "@typescript-eslint/visitor-keys": "8.42.0" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": "^18.18.0 || ^20.9.0 || >=21.1.0" | ||||
|       }, | ||||
|       "funding": { | ||||
|         "type": "opencollective", | ||||
|         "url": "https://opencollective.com/typescript-eslint" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { | ||||
|       "version": "8.42.0", | ||||
|       "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.42.0.tgz", | ||||
|       "integrity": "sha512-LdtAWMiFmbRLNP7JNeY0SqEtJvGMYSzfiWBSmx+VSZ1CH+1zyl8Mmw1TT39OrtsRvIYShjJWzTDMPWZJCpwBlw==", | ||||
|       "dev": true, | ||||
|       "license": "MIT", | ||||
|       "engines": { | ||||
|         "node": "^18.18.0 || ^20.9.0 || >=21.1.0" | ||||
|       }, | ||||
|       "funding": { | ||||
|         "type": "opencollective", | ||||
|         "url": "https://opencollective.com/typescript-eslint" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { | ||||
|       "version": "8.42.0", | ||||
|       "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.42.0.tgz", | ||||
|       "integrity": "sha512-ku/uYtT4QXY8sl9EDJETD27o3Ewdi72hcXg1ah/kkUgBvAYHLwj2ofswFFNXS+FL5G+AGkxBtvGt8pFBHKlHsQ==", | ||||
|       "dev": true, | ||||
|       "license": "MIT", | ||||
|       "dependencies": { | ||||
|         "@typescript-eslint/project-service": "8.42.0", | ||||
|         "@typescript-eslint/tsconfig-utils": "8.42.0", | ||||
|         "@typescript-eslint/types": "8.42.0", | ||||
|         "@typescript-eslint/visitor-keys": "8.42.0", | ||||
|         "debug": "^4.3.4", | ||||
|         "fast-glob": "^3.3.2", | ||||
|         "is-glob": "^4.0.3", | ||||
|         "minimatch": "^9.0.4", | ||||
|         "semver": "^7.6.0", | ||||
|         "ts-api-utils": "^2.1.0" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": "^18.18.0 || ^20.9.0 || >=21.1.0" | ||||
|       }, | ||||
|       "funding": { | ||||
|         "type": "opencollective", | ||||
|         "url": "https://opencollective.com/typescript-eslint" | ||||
|       }, | ||||
|       "peerDependencies": { | ||||
|         "typescript": ">=4.8.4 <6.0.0" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/utils": { | ||||
|       "version": "8.42.0", | ||||
|       "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.42.0.tgz", | ||||
|       "integrity": "sha512-JnIzu7H3RH5BrKC4NoZqRfmjqCIS1u3hGZltDYJgkVdqAezl4L9d1ZLw+36huCujtSBSAirGINF/S4UxOcR+/g==", | ||||
|       "dev": true, | ||||
|       "license": "MIT", | ||||
|       "dependencies": { | ||||
|         "@eslint-community/eslint-utils": "^4.7.0", | ||||
|         "@typescript-eslint/scope-manager": "8.42.0", | ||||
|         "@typescript-eslint/types": "8.42.0", | ||||
|         "@typescript-eslint/typescript-estree": "8.42.0" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": "^18.18.0 || ^20.9.0 || >=21.1.0" | ||||
|       }, | ||||
|       "funding": { | ||||
|         "type": "opencollective", | ||||
|         "url": "https://opencollective.com/typescript-eslint" | ||||
|       }, | ||||
|       "peerDependencies": { | ||||
|         "eslint": "^8.57.0 || ^9.0.0", | ||||
|         "typescript": ">=4.8.4 <6.0.0" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { | ||||
|       "version": "8.42.0", | ||||
|       "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.42.0.tgz", | ||||
|       "integrity": "sha512-3WbiuzoEowaEn8RSnhJBrxSwX8ULYE9CXaPepS2C2W3NSA5NNIvBaslpBSBElPq0UGr0xVJlXFWOAKIkyylydQ==", | ||||
|       "dev": true, | ||||
|       "license": "MIT", | ||||
|       "dependencies": { | ||||
|         "@typescript-eslint/types": "8.42.0", | ||||
|         "eslint-visitor-keys": "^4.2.1" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": "^18.18.0 || ^20.9.0 || >=21.1.0" | ||||
|       }, | ||||
|       "funding": { | ||||
|         "type": "opencollective", | ||||
|         "url": "https://opencollective.com/typescript-eslint" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@typescript-eslint/type-utils/node_modules/brace-expansion": { | ||||
|       "version": "2.0.2", | ||||
|       "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", | ||||
|       "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", | ||||
|       "dev": true, | ||||
|       "license": "MIT", | ||||
|       "dependencies": { | ||||
|         "balanced-match": "^1.0.0" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@typescript-eslint/type-utils/node_modules/eslint-visitor-keys": { | ||||
|       "version": "4.2.1", | ||||
|       "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", | ||||
|       "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", | ||||
|       "dev": true, | ||||
|       "license": "Apache-2.0", | ||||
|       "engines": { | ||||
|         "node": "^18.18.0 || ^20.9.0 || >=21.1.0" | ||||
|       }, | ||||
|       "funding": { | ||||
|         "url": "https://opencollective.com/eslint" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@typescript-eslint/type-utils/node_modules/minimatch": { | ||||
|       "version": "9.0.5", | ||||
|       "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", | ||||
|       "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", | ||||
|       "dev": true, | ||||
|       "license": "ISC", | ||||
|       "dependencies": { | ||||
|         "brace-expansion": "^2.0.1" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">=16 || 14 >=14.17" | ||||
|       }, | ||||
|       "funding": { | ||||
|         "url": "https://github.com/sponsors/isaacs" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@typescript-eslint/types": { | ||||
| @ -3175,16 +3525,17 @@ | ||||
|       "dev": true | ||||
|     }, | ||||
|     "node_modules/fast-glob": { | ||||
|       "version": "3.3.1", | ||||
|       "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", | ||||
|       "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", | ||||
|       "version": "3.3.3", | ||||
|       "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", | ||||
|       "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", | ||||
|       "dev": true, | ||||
|       "license": "MIT", | ||||
|       "dependencies": { | ||||
|         "@nodelib/fs.stat": "^2.0.2", | ||||
|         "@nodelib/fs.walk": "^1.2.3", | ||||
|         "glob-parent": "^5.1.2", | ||||
|         "merge2": "^1.3.0", | ||||
|         "micromatch": "^4.0.4" | ||||
|         "micromatch": "^4.0.8" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">=8.6.0" | ||||
| @ -4609,12 +4960,6 @@ | ||||
|       "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "node_modules/natural-compare-lite": { | ||||
|       "version": "1.4.0", | ||||
|       "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", | ||||
|       "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "node_modules/node-fetch": { | ||||
|       "version": "2.7.0", | ||||
|       "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", | ||||
| @ -5416,6 +5761,19 @@ | ||||
|       "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", | ||||
|       "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" | ||||
|     }, | ||||
|     "node_modules/ts-api-utils": { | ||||
|       "version": "2.1.0", | ||||
|       "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", | ||||
|       "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", | ||||
|       "dev": true, | ||||
|       "license": "MIT", | ||||
|       "engines": { | ||||
|         "node": ">=18.12" | ||||
|       }, | ||||
|       "peerDependencies": { | ||||
|         "typescript": ">=4.8.4" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/ts-jest": { | ||||
|       "version": "29.1.2", | ||||
|       "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.2.tgz", | ||||
| @ -5552,9 +5910,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", | ||||
|  | ||||
| @ -1,9 +1,12 @@ | ||||
| { | ||||
|   "name": "setup-node", | ||||
|   "version": "4.0.0", | ||||
|   "version": "5.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,9 +41,9 @@ | ||||
|   }, | ||||
|   "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/eslint-plugin": "^8.42.0", | ||||
|     "@typescript-eslint/parser": "^5.54.0", | ||||
|     "@vercel/ncc": "^0.38.3", | ||||
|     "eslint": "^8.57.0", | ||||
|  | ||||
| @ -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}`); | ||||
|  | ||||
							
								
								
									
										34
									
								
								src/main.ts
									
									
									
									
									
								
							
							
						
						
									
										34
									
								
								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,14 @@ export async function run() { | ||||
|       auth.configAuthentication(registryUrl, alwaysAuth); | ||||
|     } | ||||
|  | ||||
|     const resolvedPackageManager = getNameFromPackageManagerField(); | ||||
|     const cacheDependencyPath = core.getInput('cache-dependency-path'); | ||||
|     if (cache && isCacheFeatureAvailable()) { | ||||
|       core.saveState(State.CachePackageManager, cache); | ||||
|       const cacheDependencyPath = core.getInput('cache-dependency-path'); | ||||
|       await restoreCache(cache, cacheDependencyPath); | ||||
|     } else if (resolvedPackageManager && packagemanagercache) { | ||||
|       core.saveState(State.CachePackageManager, resolvedPackageManager); | ||||
|       await restoreCache(resolvedPackageManager, cacheDependencyPath); | ||||
|     } | ||||
|  | ||||
|     const matchersPath = path.join(__dirname, '../..', '.github'); | ||||
| @ -117,3 +125,27 @@ function resolveVersionInput(): string { | ||||
|  | ||||
|   return version; | ||||
| } | ||||
|  | ||||
| export function getNameFromPackageManagerField(): string | undefined { | ||||
|   // Check packageManager field in package.json | ||||
|   const SUPPORTED_PACKAGE_MANAGERS = ['npm', 'yarn', 'pnpm']; | ||||
|   try { | ||||
|     const packageJson = JSON.parse( | ||||
|       fs.readFileSync( | ||||
|         path.join(process.env.GITHUB_WORKSPACE!, 'package.json'), | ||||
|         'utf-8' | ||||
|       ) | ||||
|     ); | ||||
|     const pm = packageJson.packageManager; | ||||
|     if (typeof pm === 'string') { | ||||
|       const regex = new RegExp( | ||||
|         `^(?:\\^)?(${SUPPORTED_PACKAGE_MANAGERS.join('|')})@` | ||||
|       ); | ||||
|       const match = pm.match(regex); | ||||
|       return match ? match[1] : undefined; | ||||
|     } | ||||
|     return undefined; | ||||
|   } catch (err) { | ||||
|     return undefined; | ||||
|   } | ||||
| } | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	![dependabot[bot]](/assets/img/avatar_default.png)