mirror of
				https://kkgithub.com/actions/setup-node.git
				synced 2025-11-04 04:31:55 +08:00 
			
		
		
		
	Compare commits
	
		
			6 Commits
		
	
	
		
			v5.0.0
			...
			dependabot
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 91004eb619 | |||
| b4b7430fc9 | |||
| 2028fbc5c2 | |||
| 13427813f7 | |||
| 89d709d423 | |||
| cd2651c462 | 
							
								
								
									
										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'
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										66
									
								
								.github/workflows/e2e-cache.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										66
									
								
								.github/workflows/e2e-cache.yml
									
									
									
									
										vendored
									
									
								
							@ -18,8 +18,8 @@ jobs:
 | 
			
		||||
    strategy:
 | 
			
		||||
      fail-fast: false
 | 
			
		||||
      matrix:
 | 
			
		||||
        os: [ubuntu-latest, windows-latest, macos-latest, macos-13]
 | 
			
		||||
        node-version: [18, 20, 22, 24]
 | 
			
		||||
        os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large]
 | 
			
		||||
        node-version: [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-13]
 | 
			
		||||
        node-version: [18, 20, 22, 24]
 | 
			
		||||
        os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large]
 | 
			
		||||
        node-version: [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-13]
 | 
			
		||||
        node-version: [18, 20, 24]
 | 
			
		||||
        os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large]
 | 
			
		||||
        node-version: [20, 22, 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-13]
 | 
			
		||||
        node-version: [18, 20, 22, 24]
 | 
			
		||||
        os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large]
 | 
			
		||||
        node-version: [20, 22, 24]
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v5
 | 
			
		||||
      - name: Update yarn
 | 
			
		||||
@ -139,7 +139,7 @@ jobs:
 | 
			
		||||
    name: Test yarn subprojects
 | 
			
		||||
    strategy:
 | 
			
		||||
      matrix:
 | 
			
		||||
        node-version: [18, 20, 22, 24]
 | 
			
		||||
        node-version: [20, 22, 24]
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
 | 
			
		||||
    steps:
 | 
			
		||||
@ -166,7 +166,7 @@ jobs:
 | 
			
		||||
    name: Test yarn subprojects all locally managed
 | 
			
		||||
    strategy:
 | 
			
		||||
      matrix:
 | 
			
		||||
        node-version: [18, 20, 22, 24]
 | 
			
		||||
        node-version: [20, 22, 24]
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
 | 
			
		||||
    steps:
 | 
			
		||||
@ -193,7 +193,7 @@ jobs:
 | 
			
		||||
    name: Test yarn subprojects some locally managed
 | 
			
		||||
    strategy:
 | 
			
		||||
      matrix:
 | 
			
		||||
        node-version: [18, 20, 22, 24]
 | 
			
		||||
        node-version: [20, 22, 24]
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
 | 
			
		||||
    steps:
 | 
			
		||||
@ -220,7 +220,7 @@ jobs:
 | 
			
		||||
    name: Test yarn subprojects managed by git
 | 
			
		||||
    strategy:
 | 
			
		||||
      matrix:
 | 
			
		||||
        node-version: [18, 20, 22, 24]
 | 
			
		||||
        node-version: [20, 22, 24]
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
 | 
			
		||||
    steps:
 | 
			
		||||
@ -244,14 +244,14 @@ jobs:
 | 
			
		||||
            sub2/*.lock
 | 
			
		||||
            sub3/*.lock
 | 
			
		||||
 | 
			
		||||
  node-npm-package-manager-cache:
 | 
			
		||||
    name: Test enabling cache if package manager field is present (Node ${{ matrix.node-version }}, ${{ matrix.os }})
 | 
			
		||||
  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-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@v5
 | 
			
		||||
      - name: Create package.json with packageManager field
 | 
			
		||||
@ -268,3 +268,37 @@ 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
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										12
									
								
								.github/workflows/proxy.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										12
									
								
								.github/workflows/proxy.yml
									
									
									
									
										vendored
									
									
								
							@ -28,12 +28,12 @@ jobs:
 | 
			
		||||
      - 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
 | 
			
		||||
@ -44,9 +44,9 @@ jobs:
 | 
			
		||||
      - 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
 | 
			
		||||
 | 
			
		||||
@ -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 }}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										36
									
								
								.github/workflows/versions.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										36
									
								
								.github/workflows/versions.yml
									
									
									
									
										vendored
									
									
								
							@ -17,8 +17,8 @@ jobs:
 | 
			
		||||
    strategy:
 | 
			
		||||
      fail-fast: false
 | 
			
		||||
      matrix:
 | 
			
		||||
        os: [ubuntu-latest, windows-latest, macos-latest, macos-13]
 | 
			
		||||
        node-version: [18, 20, 22, 24]
 | 
			
		||||
        os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large]
 | 
			
		||||
        node-version: [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-13]
 | 
			
		||||
        os: [ubuntu-latest, windows-latest, macos-latest-large]
 | 
			
		||||
        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-13]
 | 
			
		||||
        os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large]
 | 
			
		||||
        node-version:
 | 
			
		||||
          [
 | 
			
		||||
            '20-v8-canary',
 | 
			
		||||
@ -81,8 +81,8 @@ 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@v5
 | 
			
		||||
      - name: Setup Node
 | 
			
		||||
@ -101,8 +101,8 @@ 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@v5
 | 
			
		||||
      - name: Setup Node
 | 
			
		||||
@ -121,8 +121,8 @@ 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@v5
 | 
			
		||||
      - name: Setup Node
 | 
			
		||||
@ -138,8 +138,8 @@ jobs:
 | 
			
		||||
    strategy:
 | 
			
		||||
      fail-fast: false
 | 
			
		||||
      matrix:
 | 
			
		||||
        os: [ubuntu-latest, windows-latest, macos-latest, macos-13]
 | 
			
		||||
        node-version: [18, 20, 22, 24]
 | 
			
		||||
        os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large]
 | 
			
		||||
        node-version: [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-13]
 | 
			
		||||
        os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large]
 | 
			
		||||
        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-13]
 | 
			
		||||
        os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large]
 | 
			
		||||
    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-13]
 | 
			
		||||
        os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large]
 | 
			
		||||
    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-13]
 | 
			
		||||
        os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large]
 | 
			
		||||
        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-13]
 | 
			
		||||
        os: [ubuntu-latest, windows-latest, macos-latest-large]
 | 
			
		||||
    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-13]
 | 
			
		||||
        os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large]
 | 
			
		||||
        node-version: [current, latest, node]
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Get node version
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										2
									
								
								.licenses/npm/@actions/cache.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								.licenses/npm/@actions/cache.dep.yml
									
									
									
										generated
									
									
									
								
							@ -1,6 +1,6 @@
 | 
			
		||||
---
 | 
			
		||||
name: "@actions/cache"
 | 
			
		||||
version: 4.0.3
 | 
			
		||||
version: 4.1.0
 | 
			
		||||
type: npm
 | 
			
		||||
summary: Actions cache lib
 | 
			
		||||
homepage: https://github.com/actions/toolkit/tree/main/packages/cache
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										185
									
								
								.licenses/npm/@protobuf-ts/plugin-framework.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										185
									
								
								.licenses/npm/@protobuf-ts/plugin-framework.dep.yml
									
									
									
										generated
									
									
									
								
							@ -1,185 +0,0 @@
 | 
			
		||||
---
 | 
			
		||||
name: "@protobuf-ts/plugin-framework"
 | 
			
		||||
version: 2.9.5
 | 
			
		||||
type: npm
 | 
			
		||||
summary: framework to create protoc plugins
 | 
			
		||||
homepage: https://github.com/timostamm/protobuf-ts
 | 
			
		||||
license: apache-2.0
 | 
			
		||||
licenses:
 | 
			
		||||
- sources: LICENSE
 | 
			
		||||
  text: |2
 | 
			
		||||
                                    Apache License
 | 
			
		||||
                               Version 2.0, January 2004
 | 
			
		||||
                            http://www.apache.org/licenses/
 | 
			
		||||
 | 
			
		||||
       TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
 | 
			
		||||
 | 
			
		||||
       1. Definitions.
 | 
			
		||||
 | 
			
		||||
          "License" shall mean the terms and conditions for use, reproduction,
 | 
			
		||||
          and distribution as defined by Sections 1 through 9 of this document.
 | 
			
		||||
 | 
			
		||||
          "Licensor" shall mean the copyright owner or entity authorized by
 | 
			
		||||
          the copyright owner that is granting the License.
 | 
			
		||||
 | 
			
		||||
          "Legal Entity" shall mean the union of the acting entity and all
 | 
			
		||||
          other entities that control, are controlled by, or are under common
 | 
			
		||||
          control with that entity. For the purposes of this definition,
 | 
			
		||||
          "control" means (i) the power, direct or indirect, to cause the
 | 
			
		||||
          direction or management of such entity, whether by contract or
 | 
			
		||||
          otherwise, or (ii) ownership of fifty percent (50%) or more of the
 | 
			
		||||
          outstanding shares, or (iii) beneficial ownership of such entity.
 | 
			
		||||
 | 
			
		||||
          "You" (or "Your") shall mean an individual or Legal Entity
 | 
			
		||||
          exercising permissions granted by this License.
 | 
			
		||||
 | 
			
		||||
          "Source" form shall mean the preferred form for making modifications,
 | 
			
		||||
          including but not limited to software source code, documentation
 | 
			
		||||
          source, and configuration files.
 | 
			
		||||
 | 
			
		||||
          "Object" form shall mean any form resulting from mechanical
 | 
			
		||||
          transformation or translation of a Source form, including but
 | 
			
		||||
          not limited to compiled object code, generated documentation,
 | 
			
		||||
          and conversions to other media types.
 | 
			
		||||
 | 
			
		||||
          "Work" shall mean the work of authorship, whether in Source or
 | 
			
		||||
          Object form, made available under the License, as indicated by a
 | 
			
		||||
          copyright notice that is included in or attached to the work
 | 
			
		||||
          (an example is provided in the Appendix below).
 | 
			
		||||
 | 
			
		||||
          "Derivative Works" shall mean any work, whether in Source or Object
 | 
			
		||||
          form, that is based on (or derived from) the Work and for which the
 | 
			
		||||
          editorial revisions, annotations, elaborations, or other modifications
 | 
			
		||||
          represent, as a whole, an original work of authorship. For the purposes
 | 
			
		||||
          of this License, Derivative Works shall not include works that remain
 | 
			
		||||
          separable from, or merely link (or bind by name) to the interfaces of,
 | 
			
		||||
          the Work and Derivative Works thereof.
 | 
			
		||||
 | 
			
		||||
          "Contribution" shall mean any work of authorship, including
 | 
			
		||||
          the original version of the Work and any modifications or additions
 | 
			
		||||
          to that Work or Derivative Works thereof, that is intentionally
 | 
			
		||||
          submitted to Licensor for inclusion in the Work by the copyright owner
 | 
			
		||||
          or by an individual or Legal Entity authorized to submit on behalf of
 | 
			
		||||
          the copyright owner. For the purposes of this definition, "submitted"
 | 
			
		||||
          means any form of electronic, verbal, or written communication sent
 | 
			
		||||
          to the Licensor or its representatives, including but not limited to
 | 
			
		||||
          communication on electronic mailing lists, source code control systems,
 | 
			
		||||
          and issue tracking systems that are managed by, or on behalf of, the
 | 
			
		||||
          Licensor for the purpose of discussing and improving the Work, but
 | 
			
		||||
          excluding communication that is conspicuously marked or otherwise
 | 
			
		||||
          designated in writing by the copyright owner as "Not a Contribution."
 | 
			
		||||
 | 
			
		||||
          "Contributor" shall mean Licensor and any individual or Legal Entity
 | 
			
		||||
          on behalf of whom a Contribution has been received by Licensor and
 | 
			
		||||
          subsequently incorporated within the Work.
 | 
			
		||||
 | 
			
		||||
       2. Grant of Copyright License. Subject to the terms and conditions of
 | 
			
		||||
          this License, each Contributor hereby grants to You a perpetual,
 | 
			
		||||
          worldwide, non-exclusive, no-charge, royalty-free, irrevocable
 | 
			
		||||
          copyright license to reproduce, prepare Derivative Works of,
 | 
			
		||||
          publicly display, publicly perform, sublicense, and distribute the
 | 
			
		||||
          Work and such Derivative Works in Source or Object form.
 | 
			
		||||
 | 
			
		||||
       3. Grant of Patent License. Subject to the terms and conditions of
 | 
			
		||||
          this License, each Contributor hereby grants to You a perpetual,
 | 
			
		||||
          worldwide, non-exclusive, no-charge, royalty-free, irrevocable
 | 
			
		||||
          (except as stated in this section) patent license to make, have made,
 | 
			
		||||
          use, offer to sell, sell, import, and otherwise transfer the Work,
 | 
			
		||||
          where such license applies only to those patent claims licensable
 | 
			
		||||
          by such Contributor that are necessarily infringed by their
 | 
			
		||||
          Contribution(s) alone or by combination of their Contribution(s)
 | 
			
		||||
          with the Work to which such Contribution(s) was submitted. If You
 | 
			
		||||
          institute patent litigation against any entity (including a
 | 
			
		||||
          cross-claim or counterclaim in a lawsuit) alleging that the Work
 | 
			
		||||
          or a Contribution incorporated within the Work constitutes direct
 | 
			
		||||
          or contributory patent infringement, then any patent licenses
 | 
			
		||||
          granted to You under this License for that Work shall terminate
 | 
			
		||||
          as of the date such litigation is filed.
 | 
			
		||||
 | 
			
		||||
       4. Redistribution. You may reproduce and distribute copies of the
 | 
			
		||||
          Work or Derivative Works thereof in any medium, with or without
 | 
			
		||||
          modifications, and in Source or Object form, provided that You
 | 
			
		||||
          meet the following conditions:
 | 
			
		||||
 | 
			
		||||
          (a) You must give any other recipients of the Work or
 | 
			
		||||
              Derivative Works a copy of this License; and
 | 
			
		||||
 | 
			
		||||
          (b) You must cause any modified files to carry prominent notices
 | 
			
		||||
              stating that You changed the files; and
 | 
			
		||||
 | 
			
		||||
          (c) You must retain, in the Source form of any Derivative Works
 | 
			
		||||
              that You distribute, all copyright, patent, trademark, and
 | 
			
		||||
              attribution notices from the Source form of the Work,
 | 
			
		||||
              excluding those notices that do not pertain to any part of
 | 
			
		||||
              the Derivative Works; and
 | 
			
		||||
 | 
			
		||||
          (d) If the Work includes a "NOTICE" text file as part of its
 | 
			
		||||
              distribution, then any Derivative Works that You distribute must
 | 
			
		||||
              include a readable copy of the attribution notices contained
 | 
			
		||||
              within such NOTICE file, excluding those notices that do not
 | 
			
		||||
              pertain to any part of the Derivative Works, in at least one
 | 
			
		||||
              of the following places: within a NOTICE text file distributed
 | 
			
		||||
              as part of the Derivative Works; within the Source form or
 | 
			
		||||
              documentation, if provided along with the Derivative Works; or,
 | 
			
		||||
              within a display generated by the Derivative Works, if and
 | 
			
		||||
              wherever such third-party notices normally appear. The contents
 | 
			
		||||
              of the NOTICE file are for informational purposes only and
 | 
			
		||||
              do not modify the License. You may add Your own attribution
 | 
			
		||||
              notices within Derivative Works that You distribute, alongside
 | 
			
		||||
              or as an addendum to the NOTICE text from the Work, provided
 | 
			
		||||
              that such additional attribution notices cannot be construed
 | 
			
		||||
              as modifying the License.
 | 
			
		||||
 | 
			
		||||
          You may add Your own copyright statement to Your modifications and
 | 
			
		||||
          may provide additional or different license terms and conditions
 | 
			
		||||
          for use, reproduction, or distribution of Your modifications, or
 | 
			
		||||
          for any such Derivative Works as a whole, provided Your use,
 | 
			
		||||
          reproduction, and distribution of the Work otherwise complies with
 | 
			
		||||
          the conditions stated in this License.
 | 
			
		||||
 | 
			
		||||
       5. Submission of Contributions. Unless You explicitly state otherwise,
 | 
			
		||||
          any Contribution intentionally submitted for inclusion in the Work
 | 
			
		||||
          by You to the Licensor shall be under the terms and conditions of
 | 
			
		||||
          this License, without any additional terms or conditions.
 | 
			
		||||
          Notwithstanding the above, nothing herein shall supersede or modify
 | 
			
		||||
          the terms of any separate license agreement you may have executed
 | 
			
		||||
          with Licensor regarding such Contributions.
 | 
			
		||||
 | 
			
		||||
       6. Trademarks. This License does not grant permission to use the trade
 | 
			
		||||
          names, trademarks, service marks, or product names of the Licensor,
 | 
			
		||||
          except as required for reasonable and customary use in describing the
 | 
			
		||||
          origin of the Work and reproducing the content of the NOTICE file.
 | 
			
		||||
 | 
			
		||||
       7. Disclaimer of Warranty. Unless required by applicable law or
 | 
			
		||||
          agreed to in writing, Licensor provides the Work (and each
 | 
			
		||||
          Contributor provides its Contributions) on an "AS IS" BASIS,
 | 
			
		||||
          WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
 | 
			
		||||
          implied, including, without limitation, any warranties or conditions
 | 
			
		||||
          of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
 | 
			
		||||
          PARTICULAR PURPOSE. You are solely responsible for determining the
 | 
			
		||||
          appropriateness of using or redistributing the Work and assume any
 | 
			
		||||
          risks associated with Your exercise of permissions under this License.
 | 
			
		||||
 | 
			
		||||
       8. Limitation of Liability. In no event and under no legal theory,
 | 
			
		||||
          whether in tort (including negligence), contract, or otherwise,
 | 
			
		||||
          unless required by applicable law (such as deliberate and grossly
 | 
			
		||||
          negligent acts) or agreed to in writing, shall any Contributor be
 | 
			
		||||
          liable to You for damages, including any direct, indirect, special,
 | 
			
		||||
          incidental, or consequential damages of any character arising as a
 | 
			
		||||
          result of this License or out of the use or inability to use the
 | 
			
		||||
          Work (including but not limited to damages for loss of goodwill,
 | 
			
		||||
          work stoppage, computer failure or malfunction, or any and all
 | 
			
		||||
          other commercial damages or losses), even if such Contributor
 | 
			
		||||
          has been advised of the possibility of such damages.
 | 
			
		||||
 | 
			
		||||
       9. Accepting Warranty or Additional Liability. While redistributing
 | 
			
		||||
          the Work or Derivative Works thereof, You may choose to offer,
 | 
			
		||||
          and charge a fee for, acceptance of support, warranty, indemnity,
 | 
			
		||||
          or other liability obligations and/or rights consistent with this
 | 
			
		||||
          License. However, in accepting such obligations, You may act only
 | 
			
		||||
          on Your own behalf and on Your sole responsibility, not on behalf
 | 
			
		||||
          of any other Contributor, and only if You agree to indemnify,
 | 
			
		||||
          defend, and hold each Contributor harmless for any liability
 | 
			
		||||
          incurred by, or claims asserted against, such Contributor by reason
 | 
			
		||||
          of your accepting any such warranty or additional liability.
 | 
			
		||||
notices: []
 | 
			
		||||
							
								
								
									
										186
									
								
								.licenses/npm/@protobuf-ts/plugin.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										186
									
								
								.licenses/npm/@protobuf-ts/plugin.dep.yml
									
									
									
										generated
									
									
									
								
							@ -1,186 +0,0 @@
 | 
			
		||||
---
 | 
			
		||||
name: "@protobuf-ts/plugin"
 | 
			
		||||
version: 2.9.5
 | 
			
		||||
type: npm
 | 
			
		||||
summary: The protocol buffer compiler plugin "protobuf-ts" generates TypeScript, gRPC-web,
 | 
			
		||||
  Twirp, and more.
 | 
			
		||||
homepage: https://github.com/timostamm/protobuf-ts
 | 
			
		||||
license: apache-2.0
 | 
			
		||||
licenses:
 | 
			
		||||
- sources: LICENSE
 | 
			
		||||
  text: |2
 | 
			
		||||
                                    Apache License
 | 
			
		||||
                               Version 2.0, January 2004
 | 
			
		||||
                            http://www.apache.org/licenses/
 | 
			
		||||
 | 
			
		||||
       TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
 | 
			
		||||
 | 
			
		||||
       1. Definitions.
 | 
			
		||||
 | 
			
		||||
          "License" shall mean the terms and conditions for use, reproduction,
 | 
			
		||||
          and distribution as defined by Sections 1 through 9 of this document.
 | 
			
		||||
 | 
			
		||||
          "Licensor" shall mean the copyright owner or entity authorized by
 | 
			
		||||
          the copyright owner that is granting the License.
 | 
			
		||||
 | 
			
		||||
          "Legal Entity" shall mean the union of the acting entity and all
 | 
			
		||||
          other entities that control, are controlled by, or are under common
 | 
			
		||||
          control with that entity. For the purposes of this definition,
 | 
			
		||||
          "control" means (i) the power, direct or indirect, to cause the
 | 
			
		||||
          direction or management of such entity, whether by contract or
 | 
			
		||||
          otherwise, or (ii) ownership of fifty percent (50%) or more of the
 | 
			
		||||
          outstanding shares, or (iii) beneficial ownership of such entity.
 | 
			
		||||
 | 
			
		||||
          "You" (or "Your") shall mean an individual or Legal Entity
 | 
			
		||||
          exercising permissions granted by this License.
 | 
			
		||||
 | 
			
		||||
          "Source" form shall mean the preferred form for making modifications,
 | 
			
		||||
          including but not limited to software source code, documentation
 | 
			
		||||
          source, and configuration files.
 | 
			
		||||
 | 
			
		||||
          "Object" form shall mean any form resulting from mechanical
 | 
			
		||||
          transformation or translation of a Source form, including but
 | 
			
		||||
          not limited to compiled object code, generated documentation,
 | 
			
		||||
          and conversions to other media types.
 | 
			
		||||
 | 
			
		||||
          "Work" shall mean the work of authorship, whether in Source or
 | 
			
		||||
          Object form, made available under the License, as indicated by a
 | 
			
		||||
          copyright notice that is included in or attached to the work
 | 
			
		||||
          (an example is provided in the Appendix below).
 | 
			
		||||
 | 
			
		||||
          "Derivative Works" shall mean any work, whether in Source or Object
 | 
			
		||||
          form, that is based on (or derived from) the Work and for which the
 | 
			
		||||
          editorial revisions, annotations, elaborations, or other modifications
 | 
			
		||||
          represent, as a whole, an original work of authorship. For the purposes
 | 
			
		||||
          of this License, Derivative Works shall not include works that remain
 | 
			
		||||
          separable from, or merely link (or bind by name) to the interfaces of,
 | 
			
		||||
          the Work and Derivative Works thereof.
 | 
			
		||||
 | 
			
		||||
          "Contribution" shall mean any work of authorship, including
 | 
			
		||||
          the original version of the Work and any modifications or additions
 | 
			
		||||
          to that Work or Derivative Works thereof, that is intentionally
 | 
			
		||||
          submitted to Licensor for inclusion in the Work by the copyright owner
 | 
			
		||||
          or by an individual or Legal Entity authorized to submit on behalf of
 | 
			
		||||
          the copyright owner. For the purposes of this definition, "submitted"
 | 
			
		||||
          means any form of electronic, verbal, or written communication sent
 | 
			
		||||
          to the Licensor or its representatives, including but not limited to
 | 
			
		||||
          communication on electronic mailing lists, source code control systems,
 | 
			
		||||
          and issue tracking systems that are managed by, or on behalf of, the
 | 
			
		||||
          Licensor for the purpose of discussing and improving the Work, but
 | 
			
		||||
          excluding communication that is conspicuously marked or otherwise
 | 
			
		||||
          designated in writing by the copyright owner as "Not a Contribution."
 | 
			
		||||
 | 
			
		||||
          "Contributor" shall mean Licensor and any individual or Legal Entity
 | 
			
		||||
          on behalf of whom a Contribution has been received by Licensor and
 | 
			
		||||
          subsequently incorporated within the Work.
 | 
			
		||||
 | 
			
		||||
       2. Grant of Copyright License. Subject to the terms and conditions of
 | 
			
		||||
          this License, each Contributor hereby grants to You a perpetual,
 | 
			
		||||
          worldwide, non-exclusive, no-charge, royalty-free, irrevocable
 | 
			
		||||
          copyright license to reproduce, prepare Derivative Works of,
 | 
			
		||||
          publicly display, publicly perform, sublicense, and distribute the
 | 
			
		||||
          Work and such Derivative Works in Source or Object form.
 | 
			
		||||
 | 
			
		||||
       3. Grant of Patent License. Subject to the terms and conditions of
 | 
			
		||||
          this License, each Contributor hereby grants to You a perpetual,
 | 
			
		||||
          worldwide, non-exclusive, no-charge, royalty-free, irrevocable
 | 
			
		||||
          (except as stated in this section) patent license to make, have made,
 | 
			
		||||
          use, offer to sell, sell, import, and otherwise transfer the Work,
 | 
			
		||||
          where such license applies only to those patent claims licensable
 | 
			
		||||
          by such Contributor that are necessarily infringed by their
 | 
			
		||||
          Contribution(s) alone or by combination of their Contribution(s)
 | 
			
		||||
          with the Work to which such Contribution(s) was submitted. If You
 | 
			
		||||
          institute patent litigation against any entity (including a
 | 
			
		||||
          cross-claim or counterclaim in a lawsuit) alleging that the Work
 | 
			
		||||
          or a Contribution incorporated within the Work constitutes direct
 | 
			
		||||
          or contributory patent infringement, then any patent licenses
 | 
			
		||||
          granted to You under this License for that Work shall terminate
 | 
			
		||||
          as of the date such litigation is filed.
 | 
			
		||||
 | 
			
		||||
       4. Redistribution. You may reproduce and distribute copies of the
 | 
			
		||||
          Work or Derivative Works thereof in any medium, with or without
 | 
			
		||||
          modifications, and in Source or Object form, provided that You
 | 
			
		||||
          meet the following conditions:
 | 
			
		||||
 | 
			
		||||
          (a) You must give any other recipients of the Work or
 | 
			
		||||
              Derivative Works a copy of this License; and
 | 
			
		||||
 | 
			
		||||
          (b) You must cause any modified files to carry prominent notices
 | 
			
		||||
              stating that You changed the files; and
 | 
			
		||||
 | 
			
		||||
          (c) You must retain, in the Source form of any Derivative Works
 | 
			
		||||
              that You distribute, all copyright, patent, trademark, and
 | 
			
		||||
              attribution notices from the Source form of the Work,
 | 
			
		||||
              excluding those notices that do not pertain to any part of
 | 
			
		||||
              the Derivative Works; and
 | 
			
		||||
 | 
			
		||||
          (d) If the Work includes a "NOTICE" text file as part of its
 | 
			
		||||
              distribution, then any Derivative Works that You distribute must
 | 
			
		||||
              include a readable copy of the attribution notices contained
 | 
			
		||||
              within such NOTICE file, excluding those notices that do not
 | 
			
		||||
              pertain to any part of the Derivative Works, in at least one
 | 
			
		||||
              of the following places: within a NOTICE text file distributed
 | 
			
		||||
              as part of the Derivative Works; within the Source form or
 | 
			
		||||
              documentation, if provided along with the Derivative Works; or,
 | 
			
		||||
              within a display generated by the Derivative Works, if and
 | 
			
		||||
              wherever such third-party notices normally appear. The contents
 | 
			
		||||
              of the NOTICE file are for informational purposes only and
 | 
			
		||||
              do not modify the License. You may add Your own attribution
 | 
			
		||||
              notices within Derivative Works that You distribute, alongside
 | 
			
		||||
              or as an addendum to the NOTICE text from the Work, provided
 | 
			
		||||
              that such additional attribution notices cannot be construed
 | 
			
		||||
              as modifying the License.
 | 
			
		||||
 | 
			
		||||
          You may add Your own copyright statement to Your modifications and
 | 
			
		||||
          may provide additional or different license terms and conditions
 | 
			
		||||
          for use, reproduction, or distribution of Your modifications, or
 | 
			
		||||
          for any such Derivative Works as a whole, provided Your use,
 | 
			
		||||
          reproduction, and distribution of the Work otherwise complies with
 | 
			
		||||
          the conditions stated in this License.
 | 
			
		||||
 | 
			
		||||
       5. Submission of Contributions. Unless You explicitly state otherwise,
 | 
			
		||||
          any Contribution intentionally submitted for inclusion in the Work
 | 
			
		||||
          by You to the Licensor shall be under the terms and conditions of
 | 
			
		||||
          this License, without any additional terms or conditions.
 | 
			
		||||
          Notwithstanding the above, nothing herein shall supersede or modify
 | 
			
		||||
          the terms of any separate license agreement you may have executed
 | 
			
		||||
          with Licensor regarding such Contributions.
 | 
			
		||||
 | 
			
		||||
       6. Trademarks. This License does not grant permission to use the trade
 | 
			
		||||
          names, trademarks, service marks, or product names of the Licensor,
 | 
			
		||||
          except as required for reasonable and customary use in describing the
 | 
			
		||||
          origin of the Work and reproducing the content of the NOTICE file.
 | 
			
		||||
 | 
			
		||||
       7. Disclaimer of Warranty. Unless required by applicable law or
 | 
			
		||||
          agreed to in writing, Licensor provides the Work (and each
 | 
			
		||||
          Contributor provides its Contributions) on an "AS IS" BASIS,
 | 
			
		||||
          WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
 | 
			
		||||
          implied, including, without limitation, any warranties or conditions
 | 
			
		||||
          of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
 | 
			
		||||
          PARTICULAR PURPOSE. You are solely responsible for determining the
 | 
			
		||||
          appropriateness of using or redistributing the Work and assume any
 | 
			
		||||
          risks associated with Your exercise of permissions under this License.
 | 
			
		||||
 | 
			
		||||
       8. Limitation of Liability. In no event and under no legal theory,
 | 
			
		||||
          whether in tort (including negligence), contract, or otherwise,
 | 
			
		||||
          unless required by applicable law (such as deliberate and grossly
 | 
			
		||||
          negligent acts) or agreed to in writing, shall any Contributor be
 | 
			
		||||
          liable to You for damages, including any direct, indirect, special,
 | 
			
		||||
          incidental, or consequential damages of any character arising as a
 | 
			
		||||
          result of this License or out of the use or inability to use the
 | 
			
		||||
          Work (including but not limited to damages for loss of goodwill,
 | 
			
		||||
          work stoppage, computer failure or malfunction, or any and all
 | 
			
		||||
          other commercial damages or losses), even if such Contributor
 | 
			
		||||
          has been advised of the possibility of such damages.
 | 
			
		||||
 | 
			
		||||
       9. Accepting Warranty or Additional Liability. While redistributing
 | 
			
		||||
          the Work or Derivative Works thereof, You may choose to offer,
 | 
			
		||||
          and charge a fee for, acceptance of support, warranty, indemnity,
 | 
			
		||||
          or other liability obligations and/or rights consistent with this
 | 
			
		||||
          License. However, in accepting such obligations, You may act only
 | 
			
		||||
          on Your own behalf and on Your sole responsibility, not on behalf
 | 
			
		||||
          of any other Contributor, and only if You agree to indemnify,
 | 
			
		||||
          defend, and hold each Contributor harmless for any liability
 | 
			
		||||
          incurred by, or claims asserted against, such Contributor by reason
 | 
			
		||||
          of your accepting any such warranty or additional liability.
 | 
			
		||||
notices: []
 | 
			
		||||
							
								
								
									
										207
									
								
								.licenses/npm/@protobuf-ts/protoc.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										207
									
								
								.licenses/npm/@protobuf-ts/protoc.dep.yml
									
									
									
										generated
									
									
									
								
							@ -1,207 +0,0 @@
 | 
			
		||||
---
 | 
			
		||||
name: "@protobuf-ts/protoc"
 | 
			
		||||
version: 2.9.5
 | 
			
		||||
type: npm
 | 
			
		||||
summary: Installs the protocol buffer compiler "protoc" for you.
 | 
			
		||||
homepage: https://github.com/timostamm/protobuf-ts
 | 
			
		||||
license: apache-2.0
 | 
			
		||||
licenses:
 | 
			
		||||
- sources: Auto-generated Apache-2.0 license text
 | 
			
		||||
  text: |2
 | 
			
		||||
                                     Apache License
 | 
			
		||||
                               Version 2.0, January 2004
 | 
			
		||||
                            http://www.apache.org/licenses/
 | 
			
		||||
 | 
			
		||||
       TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
 | 
			
		||||
 | 
			
		||||
       1. Definitions.
 | 
			
		||||
 | 
			
		||||
          "License" shall mean the terms and conditions for use, reproduction,
 | 
			
		||||
          and distribution as defined by Sections 1 through 9 of this document.
 | 
			
		||||
 | 
			
		||||
          "Licensor" shall mean the copyright owner or entity authorized by
 | 
			
		||||
          the copyright owner that is granting the License.
 | 
			
		||||
 | 
			
		||||
          "Legal Entity" shall mean the union of the acting entity and all
 | 
			
		||||
          other entities that control, are controlled by, or are under common
 | 
			
		||||
          control with that entity. For the purposes of this definition,
 | 
			
		||||
          "control" means (i) the power, direct or indirect, to cause the
 | 
			
		||||
          direction or management of such entity, whether by contract or
 | 
			
		||||
          otherwise, or (ii) ownership of fifty percent (50%) or more of the
 | 
			
		||||
          outstanding shares, or (iii) beneficial ownership of such entity.
 | 
			
		||||
 | 
			
		||||
          "You" (or "Your") shall mean an individual or Legal Entity
 | 
			
		||||
          exercising permissions granted by this License.
 | 
			
		||||
 | 
			
		||||
          "Source" form shall mean the preferred form for making modifications,
 | 
			
		||||
          including but not limited to software source code, documentation
 | 
			
		||||
          source, and configuration files.
 | 
			
		||||
 | 
			
		||||
          "Object" form shall mean any form resulting from mechanical
 | 
			
		||||
          transformation or translation of a Source form, including but
 | 
			
		||||
          not limited to compiled object code, generated documentation,
 | 
			
		||||
          and conversions to other media types.
 | 
			
		||||
 | 
			
		||||
          "Work" shall mean the work of authorship, whether in Source or
 | 
			
		||||
          Object form, made available under the License, as indicated by a
 | 
			
		||||
          (an example is provided in the Appendix below).
 | 
			
		||||
 | 
			
		||||
          "Derivative Works" shall mean any work, whether in Source or Object
 | 
			
		||||
          form, that is based on (or derived from) the Work and for which the
 | 
			
		||||
          editorial revisions, annotations, elaborations, or other modifications
 | 
			
		||||
          represent, as a whole, an original work of authorship. For the purposes
 | 
			
		||||
          of this License, Derivative Works shall not include works that remain
 | 
			
		||||
          separable from, or merely link (or bind by name) to the interfaces of,
 | 
			
		||||
          the Work and Derivative Works thereof.
 | 
			
		||||
 | 
			
		||||
          "Contribution" shall mean any work of authorship, including
 | 
			
		||||
          the original version of the Work and any modifications or additions
 | 
			
		||||
          to that Work or Derivative Works thereof, that is intentionally
 | 
			
		||||
          submitted to Licensor for inclusion in the Work by the copyright owner
 | 
			
		||||
          or by an individual or Legal Entity authorized to submit on behalf of
 | 
			
		||||
          the copyright owner. For the purposes of this definition, "submitted"
 | 
			
		||||
          means any form of electronic, verbal, or written communication sent
 | 
			
		||||
          to the Licensor or its representatives, including but not limited to
 | 
			
		||||
          communication on electronic mailing lists, source code control systems,
 | 
			
		||||
          and issue tracking systems that are managed by, or on behalf of, the
 | 
			
		||||
          Licensor for the purpose of discussing and improving the Work, but
 | 
			
		||||
          excluding communication that is conspicuously marked or otherwise
 | 
			
		||||
          designated in writing by the copyright owner as "Not a Contribution."
 | 
			
		||||
 | 
			
		||||
          "Contributor" shall mean Licensor and any individual or Legal Entity
 | 
			
		||||
          on behalf of whom a Contribution has been received by Licensor and
 | 
			
		||||
          subsequently incorporated within the Work.
 | 
			
		||||
 | 
			
		||||
       2. Grant of Copyright License. Subject to the terms and conditions of
 | 
			
		||||
          this License, each Contributor hereby grants to You a perpetual,
 | 
			
		||||
          worldwide, non-exclusive, no-charge, royalty-free, irrevocable
 | 
			
		||||
          publicly display, publicly perform, sublicense, and distribute the
 | 
			
		||||
          Work and such Derivative Works in Source or Object form.
 | 
			
		||||
 | 
			
		||||
       3. Grant of Patent License. Subject to the terms and conditions of
 | 
			
		||||
          this License, each Contributor hereby grants to You a perpetual,
 | 
			
		||||
          worldwide, non-exclusive, no-charge, royalty-free, irrevocable
 | 
			
		||||
          (except as stated in this section) patent license to make, have made,
 | 
			
		||||
          use, offer to sell, sell, import, and otherwise transfer the Work,
 | 
			
		||||
          where such license applies only to those patent claims licensable
 | 
			
		||||
          by such Contributor that are necessarily infringed by their
 | 
			
		||||
          Contribution(s) alone or by combination of their Contribution(s)
 | 
			
		||||
          with the Work to which such Contribution(s) was submitted. If You
 | 
			
		||||
          institute patent litigation against any entity (including a
 | 
			
		||||
          cross-claim or counterclaim in a lawsuit) alleging that the Work
 | 
			
		||||
          or a Contribution incorporated within the Work constitutes direct
 | 
			
		||||
          or contributory patent infringement, then any patent licenses
 | 
			
		||||
          granted to You under this License for that Work shall terminate
 | 
			
		||||
          as of the date such litigation is filed.
 | 
			
		||||
 | 
			
		||||
       4. Redistribution. You may reproduce and distribute copies of the
 | 
			
		||||
          Work or Derivative Works thereof in any medium, with or without
 | 
			
		||||
          modifications, and in Source or Object form, provided that You
 | 
			
		||||
          meet the following conditions:
 | 
			
		||||
 | 
			
		||||
          (a) You must give any other recipients of the Work or
 | 
			
		||||
              Derivative Works a copy of this License; and
 | 
			
		||||
 | 
			
		||||
          (b) You must cause any modified files to carry prominent notices
 | 
			
		||||
              stating that You changed the files; and
 | 
			
		||||
 | 
			
		||||
              that You distribute, all copyright, patent, trademark, and
 | 
			
		||||
              attribution notices from the Source form of the Work,
 | 
			
		||||
              excluding those notices that do not pertain to any part of
 | 
			
		||||
              the Derivative Works; and
 | 
			
		||||
 | 
			
		||||
          (d) If the Work includes a "NOTICE" text file as part of its
 | 
			
		||||
              distribution, then any Derivative Works that You distribute must
 | 
			
		||||
              include a readable copy of the attribution notices contained
 | 
			
		||||
              within such NOTICE file, excluding those notices that do not
 | 
			
		||||
              pertain to any part of the Derivative Works, in at least one
 | 
			
		||||
              of the following places: within a NOTICE text file distributed
 | 
			
		||||
              as part of the Derivative Works; within the Source form or
 | 
			
		||||
              documentation, if provided along with the Derivative Works; or,
 | 
			
		||||
              within a display generated by the Derivative Works, if and
 | 
			
		||||
              wherever such third-party notices normally appear. The contents
 | 
			
		||||
              of the NOTICE file are for informational purposes only and
 | 
			
		||||
              do not modify the License. You may add Your own attribution
 | 
			
		||||
              notices within Derivative Works that You distribute, alongside
 | 
			
		||||
              or as an addendum to the NOTICE text from the Work, provided
 | 
			
		||||
              that such additional attribution notices cannot be construed
 | 
			
		||||
              as modifying the License.
 | 
			
		||||
 | 
			
		||||
          You may add Your own copyright statement to Your modifications and
 | 
			
		||||
          may provide additional or different license terms and conditions
 | 
			
		||||
          for use, reproduction, or distribution of Your modifications, or
 | 
			
		||||
          for any such Derivative Works as a whole, provided Your use,
 | 
			
		||||
          reproduction, and distribution of the Work otherwise complies with
 | 
			
		||||
          the conditions stated in this License.
 | 
			
		||||
 | 
			
		||||
       5. Submission of Contributions. Unless You explicitly state otherwise,
 | 
			
		||||
          any Contribution intentionally submitted for inclusion in the Work
 | 
			
		||||
          by You to the Licensor shall be under the terms and conditions of
 | 
			
		||||
          this License, without any additional terms or conditions.
 | 
			
		||||
          Notwithstanding the above, nothing herein shall supersede or modify
 | 
			
		||||
          the terms of any separate license agreement you may have executed
 | 
			
		||||
          with Licensor regarding such Contributions.
 | 
			
		||||
 | 
			
		||||
       6. Trademarks. This License does not grant permission to use the trade
 | 
			
		||||
          names, trademarks, service marks, or product names of the Licensor,
 | 
			
		||||
          except as required for reasonable and customary use in describing the
 | 
			
		||||
          origin of the Work and reproducing the content of the NOTICE file.
 | 
			
		||||
 | 
			
		||||
       7. Disclaimer of Warranty. Unless required by applicable law or
 | 
			
		||||
          agreed to in writing, Licensor provides the Work (and each
 | 
			
		||||
          Contributor provides its Contributions) on an "AS IS" BASIS,
 | 
			
		||||
          WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
 | 
			
		||||
          implied, including, without limitation, any warranties or conditions
 | 
			
		||||
          of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
 | 
			
		||||
          PARTICULAR PURPOSE. You are solely responsible for determining the
 | 
			
		||||
          appropriateness of using or redistributing the Work and assume any
 | 
			
		||||
          risks associated with Your exercise of permissions under this License.
 | 
			
		||||
 | 
			
		||||
       8. Limitation of Liability. In no event and under no legal theory,
 | 
			
		||||
          whether in tort (including negligence), contract, or otherwise,
 | 
			
		||||
          unless required by applicable law (such as deliberate and grossly
 | 
			
		||||
          negligent acts) or agreed to in writing, shall any Contributor be
 | 
			
		||||
          liable to You for damages, including any direct, indirect, special,
 | 
			
		||||
          incidental, or consequential damages of any character arising as a
 | 
			
		||||
          result of this License or out of the use or inability to use the
 | 
			
		||||
          Work (including but not limited to damages for loss of goodwill,
 | 
			
		||||
          work stoppage, computer failure or malfunction, or any and all
 | 
			
		||||
          other commercial damages or losses), even if such Contributor
 | 
			
		||||
          has been advised of the possibility of such damages.
 | 
			
		||||
 | 
			
		||||
       9. Accepting Warranty or Additional Liability. While redistributing
 | 
			
		||||
          the Work or Derivative Works thereof, You may choose to offer,
 | 
			
		||||
          and charge a fee for, acceptance of support, warranty, indemnity,
 | 
			
		||||
          or other liability obligations and/or rights consistent with this
 | 
			
		||||
          License. However, in accepting such obligations, You may act only
 | 
			
		||||
          on Your own behalf and on Your sole responsibility, not on behalf
 | 
			
		||||
          of any other Contributor, and only if You agree to indemnify,
 | 
			
		||||
          defend, and hold each Contributor harmless for any liability
 | 
			
		||||
          incurred by, or claims asserted against, such Contributor by reason
 | 
			
		||||
          of your accepting any such warranty or additional liability.
 | 
			
		||||
 | 
			
		||||
       END OF TERMS AND CONDITIONS
 | 
			
		||||
 | 
			
		||||
       APPENDIX: How to apply the Apache License to your work.
 | 
			
		||||
 | 
			
		||||
          To apply the Apache License to your work, attach the following
 | 
			
		||||
          boilerplate notice, with the fields enclosed by brackets "[]"
 | 
			
		||||
          replaced with your own identifying information. (Don't include
 | 
			
		||||
          the brackets!)  The text should be enclosed in the appropriate
 | 
			
		||||
          comment syntax for the file format. We also recommend that a
 | 
			
		||||
          file or class name and description of purpose be included on the
 | 
			
		||||
          same "printed page" as the copyright notice for easier
 | 
			
		||||
          identification within third-party archives.
 | 
			
		||||
 | 
			
		||||
       Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
       you may not use this file except in compliance with the License.
 | 
			
		||||
       You may obtain a copy of the License at
 | 
			
		||||
 | 
			
		||||
           http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 | 
			
		||||
       Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
       distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
       WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
       See the License for the specific language governing permissions and
 | 
			
		||||
       limitations under the License.
 | 
			
		||||
notices: []
 | 
			
		||||
							
								
								
									
										2
									
								
								.licenses/npm/@protobuf-ts/runtime-rpc.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								.licenses/npm/@protobuf-ts/runtime-rpc.dep.yml
									
									
									
										generated
									
									
									
								
							@ -1,6 +1,6 @@
 | 
			
		||||
---
 | 
			
		||||
name: "@protobuf-ts/runtime-rpc"
 | 
			
		||||
version: 2.9.5
 | 
			
		||||
version: 2.11.1
 | 
			
		||||
type: npm
 | 
			
		||||
summary: Runtime library for RPC clients generated by the protoc plugin "protobuf-ts"
 | 
			
		||||
homepage: https://github.com/timostamm/protobuf-ts
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										2
									
								
								.licenses/npm/@protobuf-ts/runtime.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								.licenses/npm/@protobuf-ts/runtime.dep.yml
									
									
									
										generated
									
									
									
								
							@ -1,6 +1,6 @@
 | 
			
		||||
---
 | 
			
		||||
name: "@protobuf-ts/runtime"
 | 
			
		||||
version: 2.9.5
 | 
			
		||||
version: 2.11.1
 | 
			
		||||
type: npm
 | 
			
		||||
summary: Runtime library for code generated by the protoc plugin "protobuf-ts"
 | 
			
		||||
homepage: https://github.com/timostamm/protobuf-ts
 | 
			
		||||
 | 
			
		||||
@ -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:
 | 
			
		||||
							
								
								
									
										239
									
								
								.licenses/npm/typescript.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										239
									
								
								.licenses/npm/typescript.dep.yml
									
									
									
										generated
									
									
									
								
							@ -1,239 +0,0 @@
 | 
			
		||||
---
 | 
			
		||||
name: typescript
 | 
			
		||||
version: 3.9.10
 | 
			
		||||
type: npm
 | 
			
		||||
summary: TypeScript is a language for application scale JavaScript development
 | 
			
		||||
homepage: https://www.typescriptlang.org/
 | 
			
		||||
license: apache-2.0
 | 
			
		||||
licenses:
 | 
			
		||||
- sources: LICENSE.txt
 | 
			
		||||
  text: "Apache License\n\nVersion 2.0, January 2004\n\nhttp://www.apache.org/licenses/
 | 
			
		||||
    \n\nTERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n1. Definitions.\n\n\"License\"
 | 
			
		||||
    shall mean the terms and conditions for use, reproduction, and distribution as
 | 
			
		||||
    defined by Sections 1 through 9 of this document.\n\n\"Licensor\" shall mean the
 | 
			
		||||
    copyright owner or entity authorized by the copyright owner that is granting the
 | 
			
		||||
    License.\n\n\"Legal Entity\" shall mean the union of the acting entity and all
 | 
			
		||||
    other entities that control, are controlled by, or are under common control with
 | 
			
		||||
    that entity. For the purposes of this definition, \"control\" means (i) the power,
 | 
			
		||||
    direct or indirect, to cause the direction or management of such entity, whether
 | 
			
		||||
    by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of
 | 
			
		||||
    the outstanding shares, or (iii) beneficial ownership of such entity.\n\n\"You\"
 | 
			
		||||
    (or \"Your\") shall mean an individual or Legal Entity exercising permissions
 | 
			
		||||
    granted by this License.\n\n\"Source\" form shall mean the preferred form for
 | 
			
		||||
    making modifications, including but not limited to software source code, documentation
 | 
			
		||||
    source, and configuration files.\n\n\"Object\" form shall mean any form resulting
 | 
			
		||||
    from mechanical transformation or translation of a Source form, including but
 | 
			
		||||
    not limited to compiled object code, generated documentation, and conversions
 | 
			
		||||
    to other media types.\n\n\"Work\" shall mean the work of authorship, whether in
 | 
			
		||||
    Source or Object form, made available under the License, as indicated by a copyright
 | 
			
		||||
    notice that is included in or attached to the work (an example is provided in
 | 
			
		||||
    the Appendix below).\n\n\"Derivative Works\" shall mean any work, whether in Source
 | 
			
		||||
    or Object form, that is based on (or derived from) the Work and for which the
 | 
			
		||||
    editorial revisions, annotations, elaborations, or other modifications represent,
 | 
			
		||||
    as a whole, an original work of authorship. For the purposes of this License,
 | 
			
		||||
    Derivative Works shall not include works that remain separable from, or merely
 | 
			
		||||
    link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.\n\n\"Contribution\"
 | 
			
		||||
    shall mean any work of authorship, including the original version of the Work
 | 
			
		||||
    and any modifications or additions to that Work or Derivative Works thereof, that
 | 
			
		||||
    is intentionally submitted to Licensor for inclusion in the Work by the copyright
 | 
			
		||||
    owner or by an individual or Legal Entity authorized to submit on behalf of the
 | 
			
		||||
    copyright owner. For the purposes of this definition, \"submitted\" means any
 | 
			
		||||
    form of electronic, verbal, or written communication sent to the Licensor or its
 | 
			
		||||
    representatives, including but not limited to communication on electronic mailing
 | 
			
		||||
    lists, source code control systems, and issue tracking systems that are managed
 | 
			
		||||
    by, or on behalf of, the Licensor for the purpose of discussing and improving
 | 
			
		||||
    the Work, but excluding communication that is conspicuously marked or otherwise
 | 
			
		||||
    designated in writing by the copyright owner as \"Not a Contribution.\"\n\n\"Contributor\"
 | 
			
		||||
    shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution
 | 
			
		||||
    has been received by Licensor and subsequently incorporated within the Work.\n\n2.
 | 
			
		||||
    Grant of Copyright License. Subject to the terms and conditions of this License,
 | 
			
		||||
    each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge,
 | 
			
		||||
    royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works
 | 
			
		||||
    of, publicly display, publicly perform, sublicense, and distribute the Work and
 | 
			
		||||
    such Derivative Works in Source or Object form.\n\n3. Grant of Patent License.
 | 
			
		||||
    Subject to the terms and conditions of this License, each Contributor hereby grants
 | 
			
		||||
    to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable
 | 
			
		||||
    (except as stated in this section) patent license to make, have made, use, offer
 | 
			
		||||
    to sell, sell, import, and otherwise transfer the Work, where such license applies
 | 
			
		||||
    only to those patent claims licensable by such Contributor that are necessarily
 | 
			
		||||
    infringed by their Contribution(s) alone or by combination of their Contribution(s)
 | 
			
		||||
    with the Work to which such Contribution(s) was submitted. If You institute patent
 | 
			
		||||
    litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
 | 
			
		||||
    alleging that the Work or a Contribution incorporated within the Work constitutes
 | 
			
		||||
    direct or contributory patent infringement, then any patent licenses granted to
 | 
			
		||||
    You under this License for that Work shall terminate as of the date such litigation
 | 
			
		||||
    is filed.\n\n4. Redistribution. You may reproduce and distribute copies of the
 | 
			
		||||
    Work or Derivative Works thereof in any medium, with or without modifications,
 | 
			
		||||
    and in Source or Object form, provided that You meet the following conditions:\n\nYou
 | 
			
		||||
    must give any other recipients of the Work or Derivative Works a copy of this
 | 
			
		||||
    License; and\n\nYou must cause any modified files to carry prominent notices stating
 | 
			
		||||
    that You changed the files; and\n\nYou must retain, in the Source form of any
 | 
			
		||||
    Derivative Works that You distribute, all copyright, patent, trademark, and attribution
 | 
			
		||||
    notices from the Source form of the Work, excluding those notices that do not
 | 
			
		||||
    pertain to any part of the Derivative Works; and\n\nIf the Work includes a \"NOTICE\"
 | 
			
		||||
    text file as part of its distribution, then any Derivative Works that You distribute
 | 
			
		||||
    must include a readable copy of the attribution notices contained within such
 | 
			
		||||
    NOTICE file, excluding those notices that do not pertain to any part of the Derivative
 | 
			
		||||
    Works, in at least one of the following places: within a NOTICE text file distributed
 | 
			
		||||
    as part of the Derivative Works; within the Source form or documentation, if provided
 | 
			
		||||
    along with the Derivative Works; or, within a display generated by the Derivative
 | 
			
		||||
    Works, if and wherever such third-party notices normally appear. The contents
 | 
			
		||||
    of the NOTICE file are for informational purposes only and do not modify the License.
 | 
			
		||||
    You may add Your own attribution notices within Derivative Works that You distribute,
 | 
			
		||||
    alongside or as an addendum to the NOTICE text from the Work, provided that such
 | 
			
		||||
    additional attribution notices cannot be construed as modifying the License. You
 | 
			
		||||
    may add Your own copyright statement to Your modifications and may provide additional
 | 
			
		||||
    or different license terms and conditions for use, reproduction, or distribution
 | 
			
		||||
    of Your modifications, or for any such Derivative Works as a whole, provided Your
 | 
			
		||||
    use, reproduction, and distribution of the Work otherwise complies with the conditions
 | 
			
		||||
    stated in this License.\n\n5. Submission of Contributions. Unless You explicitly
 | 
			
		||||
    state otherwise, any Contribution intentionally submitted for inclusion in the
 | 
			
		||||
    Work by You to the Licensor shall be under the terms and conditions of this License,
 | 
			
		||||
    without any additional terms or conditions. Notwithstanding the above, nothing
 | 
			
		||||
    herein shall supersede or modify the terms of any separate license agreement you
 | 
			
		||||
    may have executed with Licensor regarding such Contributions.\n\n6. Trademarks.
 | 
			
		||||
    This License does not grant permission to use the trade names, trademarks, service
 | 
			
		||||
    marks, or product names of the Licensor, except as required for reasonable and
 | 
			
		||||
    customary use in describing the origin of the Work and reproducing the content
 | 
			
		||||
    of the NOTICE file.\n\n7. Disclaimer of Warranty. Unless required by applicable
 | 
			
		||||
    law or agreed to in writing, Licensor provides the Work (and each Contributor
 | 
			
		||||
    provides its Contributions) on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS
 | 
			
		||||
    OF ANY KIND, either express or implied, including, without limitation, any warranties
 | 
			
		||||
    or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR
 | 
			
		||||
    PURPOSE. You are solely responsible for determining the appropriateness of using
 | 
			
		||||
    or redistributing the Work and assume any risks associated with Your exercise
 | 
			
		||||
    of permissions under this License.\n\n8. Limitation of Liability. In no event
 | 
			
		||||
    and under no legal theory, whether in tort (including negligence), contract, or
 | 
			
		||||
    otherwise, unless required by applicable law (such as deliberate and grossly negligent
 | 
			
		||||
    acts) or agreed to in writing, shall any Contributor be liable to You for damages,
 | 
			
		||||
    including any direct, indirect, special, incidental, or consequential damages
 | 
			
		||||
    of any character arising as a result of this License or out of the use or inability
 | 
			
		||||
    to use the Work (including but not limited to damages for loss of goodwill, work
 | 
			
		||||
    stoppage, computer failure or malfunction, or any and all other commercial damages
 | 
			
		||||
    or losses), even if such Contributor has been advised of the possibility of such
 | 
			
		||||
    damages.\n\n9. Accepting Warranty or Additional Liability. While redistributing
 | 
			
		||||
    the Work or Derivative Works thereof, You may choose to offer, and charge a fee
 | 
			
		||||
    for, acceptance of support, warranty, indemnity, or other liability obligations
 | 
			
		||||
    and/or rights consistent with this License. However, in accepting such obligations,
 | 
			
		||||
    You may act only on Your own behalf and on Your sole responsibility, not on behalf
 | 
			
		||||
    of any other Contributor, and only if You agree to indemnify, defend, and hold
 | 
			
		||||
    each Contributor harmless for any liability incurred by, or claims asserted against,
 | 
			
		||||
    such Contributor by reason of your accepting any such warranty or additional liability.\n\nEND
 | 
			
		||||
    OF TERMS AND CONDITIONS\n"
 | 
			
		||||
notices:
 | 
			
		||||
- sources: AUTHORS.md
 | 
			
		||||
  text: "TypeScript is authored by:\r\n\r\n - 0verk1ll\r\n - Abubaker Bashir\r\n -
 | 
			
		||||
    Adam Freidin\r\n - Adam Postma\r\n - Adi Dahiya\r\n - Aditya Daflapurkar\r\n -
 | 
			
		||||
    Adnan Chowdhury\r\n - Adrian Leonhard\r\n - Adrien Gibrat\r\n - Ahmad Farid\r\n
 | 
			
		||||
    - Ajay Poshak\r\n - Alan Agius\r\n - Alan Pierce\r\n - Alessandro Vergani\r\n
 | 
			
		||||
    - Alex Chugaev\r\n - Alex Eagle\r\n - Alex Khomchenko\r\n - Alex Ryan\r\n - Alexander\r\n
 | 
			
		||||
    - Alexander Kuvaev\r\n - Alexander Rusakov\r\n - Alexander Tarasyuk\r\n - Ali
 | 
			
		||||
    Sabzevari\r\n - Aluan Haddad\r\n - amaksimovich2\r\n - Anatoly Ressin\r\n - Anders
 | 
			
		||||
    Hejlsberg\r\n - Anders Kaseorg\r\n - Andre Sutherland\r\n - Andreas Martin\r\n
 | 
			
		||||
    - Andrej Baran\r\n - Andrew\r\n - Andrew Branch\r\n - Andrew Casey\r\n - Andrew
 | 
			
		||||
    Faulkner\r\n - Andrew Ochsner\r\n - Andrew Stegmaier\r\n - Andrew Z Allen\r\n
 | 
			
		||||
    - Andrey Roenko\r\n - Andrii Dieiev\r\n - András Parditka\r\n - Andy Hanson\r\n
 | 
			
		||||
    - Anil Anar\r\n - Anix\r\n - Anton Khlynovskiy\r\n - Anton Tolmachev\r\n - Anubha
 | 
			
		||||
    Mathur\r\n - AnyhowStep\r\n - Armando Aguirre\r\n - Arnaud Tournier\r\n - Arnav
 | 
			
		||||
    Singh\r\n - Arpad Borsos\r\n - Artem Tyurin\r\n - Arthur Ozga\r\n - Asad Saeeduddin\r\n
 | 
			
		||||
    - Austin Cummings\r\n - Avery Morin\r\n - Aziz Khambati\r\n - Basarat Ali Syed\r\n
 | 
			
		||||
    - @begincalendar\r\n - Ben Duffield\r\n - Ben Lichtman\r\n - Ben Mosher\r\n -
 | 
			
		||||
    Benedikt Meurer\r\n - Benjamin Bock\r\n - Benjamin Lichtman\r\n - Benny Neugebauer\r\n
 | 
			
		||||
    - BigAru\r\n - Bill Ticehurst\r\n - Blaine Bublitz\r\n - Blake Embrey\r\n - @bluelovers\r\n
 | 
			
		||||
    - @bootstraponline\r\n - Bowden Kelly\r\n - Bowden Kenny\r\n - Brad Zacher\r\n
 | 
			
		||||
    - Brandon Banks\r\n - Brandon Bloom\r\n - Brandon Slade\r\n - Brendan Kenny\r\n
 | 
			
		||||
    - Brett Mayen\r\n - Brian Terlson\r\n - Bryan Forbes\r\n - Caitlin Potter\r\n
 | 
			
		||||
    - Caleb Sander\r\n - Cameron Taggart\r\n - @cedvdb\r\n - Charles\r\n - Charles
 | 
			
		||||
    Pierce\r\n - Charly POLY\r\n - Chris Bubernak\r\n - Chris Patterson\r\n - christian\r\n
 | 
			
		||||
    - Christophe Vidal\r\n - Chuck Jazdzewski\r\n - Clay Miller\r\n - Colby Russell\r\n
 | 
			
		||||
    - Colin Snover\r\n - Collins Abitekaniza\r\n - Connor Clark\r\n - Cotton Hou\r\n
 | 
			
		||||
    - csigs\r\n - Cyrus Najmabadi\r\n - Dafrok Zhang\r\n - Dahan Gong\r\n - Daiki
 | 
			
		||||
    Nishikawa\r\n - Dan Corder\r\n - Dan Freeman\r\n - Dan Quirk\r\n - Dan Rollo\r\n
 | 
			
		||||
    - Daniel Gooss\r\n - Daniel Imms\r\n - Daniel Krom\r\n - Daniel Król\r\n - Daniel
 | 
			
		||||
    Lehenbauer\r\n - Daniel Rosenwasser\r\n - David Li\r\n - David Sheldrick\r\n -
 | 
			
		||||
    David Sherret\r\n - David Souther\r\n - David Staheli\r\n - Denis Nedelyaev\r\n
 | 
			
		||||
    - Derek P Sifford\r\n - Dhruv Rajvanshi\r\n - Dick van den Brink\r\n - Diogo Franco
 | 
			
		||||
    (Kovensky)\r\n - Dirk Bäumer\r\n - Dirk Holtwick\r\n - Dmitrijs Minajevs\r\n -
 | 
			
		||||
    Dom Chen\r\n - Donald Pipowitch\r\n - Doug Ilijev\r\n - dreamran43@gmail.com\r\n
 | 
			
		||||
    - @e-cloud\r\n - Ecole Keine\r\n - Eddie Jaoude\r\n - Edward Thomson\r\n - EECOLOR\r\n
 | 
			
		||||
    - Eli Barzilay\r\n - Elizabeth Dinella\r\n - Ely Alamillo\r\n - Eric Grube\r\n
 | 
			
		||||
    - Eric Tsang\r\n - Erik Edrosa\r\n - Erik McClenney\r\n - Esakki Raj\r\n - Ethan
 | 
			
		||||
    Resnick\r\n - Ethan Rubio\r\n - Eugene Timokhov\r\n - Evan Cahill\r\n - Evan Martin\r\n
 | 
			
		||||
    - Evan Sebastian\r\n - ExE Boss\r\n - Eyas Sharaiha\r\n - Fabian Cook\r\n - @falsandtru\r\n
 | 
			
		||||
    - Filipe Silva\r\n - @flowmemo\r\n - Forbes Lindesay\r\n - Francois Hendriks\r\n
 | 
			
		||||
    - Francois Wouts\r\n - Frank Wallis\r\n - František Žiacik\r\n - Frederico Bittencourt\r\n
 | 
			
		||||
    - fullheightcoding\r\n - Gabe Moothart\r\n - Gabriel Isenberg\r\n - Gabriela Araujo
 | 
			
		||||
    Britto\r\n - Gabriela Britto\r\n - gb714us\r\n - Gilad Peleg\r\n - Godfrey Chan\r\n
 | 
			
		||||
    - Gorka Hernández Estomba\r\n - Graeme Wicksted\r\n - Guillaume Salles\r\n - Guy
 | 
			
		||||
    Bedford\r\n - hafiz\r\n - Halasi Tamás\r\n - Hendrik Liebau\r\n - Henry Mercer\r\n
 | 
			
		||||
    - Herrington Darkholme\r\n - Hoang Pham\r\n - Holger Jeromin\r\n - Homa Wong\r\n
 | 
			
		||||
    - Hye Sung Jung\r\n - Iain Monro\r\n - @IdeaHunter\r\n - Igor Novozhilov\r\n -
 | 
			
		||||
    Igor Oleinikov\r\n - Ika\r\n - iliashkolyar\r\n - IllusionMH\r\n - Ingvar Stepanyan\r\n
 | 
			
		||||
    - Ingvar Stepanyan\r\n - Isiah Meadows\r\n - ispedals\r\n - Ivan Enderlin\r\n
 | 
			
		||||
    - Ivo Gabe de Wolff\r\n - Iwata Hidetaka\r\n - Jack Bates\r\n - Jack Williams\r\n
 | 
			
		||||
    - Jake Boone\r\n - Jakub Korzeniowski\r\n - Jakub Młokosiewicz\r\n - James Henry\r\n
 | 
			
		||||
    - James Keane\r\n - James Whitney\r\n - Jan Melcher\r\n - Jason Freeman\r\n -
 | 
			
		||||
    Jason Jarrett\r\n - Jason Killian\r\n - Jason Ramsay\r\n - JBerger\r\n - Jean
 | 
			
		||||
    Pierre\r\n - Jed Mao\r\n - Jeff Wilcox\r\n - Jeffrey Morlan\r\n - Jesse Schalken\r\n
 | 
			
		||||
    - Jesse Trinity\r\n - Jing Ma\r\n - Jiri Tobisek\r\n - Joe Calzaretta\r\n - Joe
 | 
			
		||||
    Chung\r\n - Joel Day\r\n - Joey Watts\r\n - Johannes Rieken\r\n - John Doe\r\n
 | 
			
		||||
    - John Vilk\r\n - Jonathan Bond-Caron\r\n - Jonathan Park\r\n - Jonathan Toland\r\n
 | 
			
		||||
    - Jordan Harband\r\n - Jordi Oliveras Rovira\r\n - Joscha Feth\r\n - Joseph Wunderlich\r\n
 | 
			
		||||
    - Josh Abernathy\r\n - Josh Goldberg\r\n - Josh Kalderimis\r\n - Josh Soref\r\n
 | 
			
		||||
    - Juan Luis Boya García\r\n - Julian Williams\r\n - Justin Bay\r\n - Justin Johansson\r\n
 | 
			
		||||
    - jwbay\r\n - K. Preißer\r\n - Kagami Sascha Rosylight\r\n - Kanchalai Tanglertsampan\r\n
 | 
			
		||||
    - karthikkp\r\n - Kate Miháliková\r\n - Keen Yee Liau\r\n - Keith Mashinter\r\n
 | 
			
		||||
    - Ken Howard\r\n - Kenji Imamula\r\n - Kerem Kat\r\n - Kevin Donnelly\r\n - Kevin
 | 
			
		||||
    Gibbons\r\n - Kevin Lang\r\n - Khải\r\n - Kitson Kelly\r\n - Klaus Meinhardt\r\n
 | 
			
		||||
    - Kris Zyp\r\n - Kyle Kelley\r\n - Kārlis Gaņģis\r\n - laoxiong\r\n - Leon Aves\r\n
 | 
			
		||||
    - Limon Monte\r\n - Lorant Pinter\r\n - Lucien Greathouse\r\n - Luka Hartwig\r\n
 | 
			
		||||
    - Lukas Elmer\r\n - M.Yoshimura\r\n - Maarten Sijm\r\n - Magnus Hiie\r\n - Magnus
 | 
			
		||||
    Kulke\r\n - Manish Bansal\r\n - Manish Giri\r\n - Marcus Noble\r\n - Marin Marinov\r\n
 | 
			
		||||
    - Marius Schulz\r\n - Markus Johnsson\r\n - Markus Wolf\r\n - Martin\r\n - Martin
 | 
			
		||||
    Hiller\r\n - Martin Johns\r\n - Martin Probst\r\n - Martin Vseticka\r\n - Martyn
 | 
			
		||||
    Janes\r\n - Masahiro Wakame\r\n - Mateusz Burzyński\r\n - Matt Bierner\r\n - Matt
 | 
			
		||||
    McCutchen\r\n - Matt Mitchell\r\n - Matthew Aynalem\r\n - Matthew Miller\r\n -
 | 
			
		||||
    Mattias Buelens\r\n - Max Heiber\r\n - Maxwell Paul Brickner\r\n - @meyer\r\n
 | 
			
		||||
    - Micah Zoltu\r\n - @micbou\r\n - Michael\r\n - Michael Crane\r\n - Michael Henderson\r\n
 | 
			
		||||
    - Michael Tamm\r\n - Michael Tang\r\n - Michal Przybys\r\n - Mike Busyrev\r\n
 | 
			
		||||
    - Mike Morearty\r\n - Milosz Piechocki\r\n - Mine Starks\r\n - Minh Nguyen\r\n
 | 
			
		||||
    - Mohamed Hegazy\r\n - Mohsen Azimi\r\n - Mukesh Prasad\r\n - Myles Megyesi\r\n
 | 
			
		||||
    - Nathan Day\r\n - Nathan Fenner\r\n - Nathan Shively-Sanders\r\n - Nathan Yee\r\n
 | 
			
		||||
    - ncoley\r\n - Nicholas Yang\r\n - Nicu Micleușanu\r\n - @nieltg\r\n - Nima Zahedi\r\n
 | 
			
		||||
    - Noah Chen\r\n - Noel Varanda\r\n - Noel Yoo\r\n - Noj Vek\r\n - nrcoley\r\n
 | 
			
		||||
    - Nuno Arruda\r\n - Oleg Mihailik\r\n - Oleksandr Chekhovskyi\r\n - Omer Sheikh\r\n
 | 
			
		||||
    - Orta Therox\r\n - Orta Therox\r\n - Oskar Grunning\r\n - Oskar Segersva¨rd\r\n
 | 
			
		||||
    - Oussama Ben Brahim\r\n - Ozair Patel\r\n - Patrick McCartney\r\n - Patrick Zhong\r\n
 | 
			
		||||
    - Paul Koerbitz\r\n - Paul van Brenk\r\n - @pcbro\r\n - Pedro Maltez\r\n - Pete
 | 
			
		||||
    Bacon Darwin\r\n - Peter Burns\r\n - Peter Šándor\r\n - Philip Pesca\r\n - Philippe
 | 
			
		||||
    Voinov\r\n - Pi Lanningham\r\n - Piero Cangianiello\r\n - Pierre-Antoine Mills\r\n
 | 
			
		||||
    - @piloopin\r\n - Pranav Senthilnathan\r\n - Prateek Goel\r\n - Prateek Nayak\r\n
 | 
			
		||||
    - Prayag Verma\r\n - Priyantha Lankapura\r\n - @progre\r\n - Punya Biswal\r\n
 | 
			
		||||
    - r7kamura\r\n - Rado Kirov\r\n - Raj Dosanjh\r\n - rChaser53\r\n - Reiner Dolp\r\n
 | 
			
		||||
    - Remo H. Jansen\r\n - @rflorian\r\n - Rhys van der Waerden\r\n - @rhysd\r\n -
 | 
			
		||||
    Ricardo N Feliciano\r\n - Richard Karmazín\r\n - Richard Knoll\r\n - Roger Spratley\r\n
 | 
			
		||||
    - Ron Buckton\r\n - Rostislav Galimsky\r\n - Rowan Wyborn\r\n - rpgeeganage\r\n
 | 
			
		||||
    - Ruwan Pradeep Geeganage\r\n - Ryan Cavanaugh\r\n - Ryan Clarke\r\n - Ryohei
 | 
			
		||||
    Ikegami\r\n - Salisbury, Tom\r\n - Sam Bostock\r\n - Sam Drugan\r\n - Sam El-Husseini\r\n
 | 
			
		||||
    - Sam Lanning\r\n - Sangmin Lee\r\n - Sanket Mishra\r\n - Sarangan Rajamanickam\r\n
 | 
			
		||||
    - Sasha Joseph\r\n - Sean Barag\r\n - Sergey Rubanov\r\n - Sergey Shandar\r\n
 | 
			
		||||
    - Sergey Tychinin\r\n - Sergii Bezliudnyi\r\n - Sergio Baidon\r\n - Sharon Rolel\r\n
 | 
			
		||||
    - Sheetal Nandi\r\n - Shengping Zhong\r\n - Sheon Han\r\n - Shyyko Serhiy\r\n
 | 
			
		||||
    - Siddharth Singh\r\n - sisisin\r\n - Slawomir Sadziak\r\n - Solal Pirelli\r\n
 | 
			
		||||
    - Soo Jae Hwang\r\n - Stan Thomas\r\n - Stanislav Iliev\r\n - Stanislav Sysoev\r\n
 | 
			
		||||
    - Stas Vilchik\r\n - Stephan Ginthör\r\n - Steve Lucco\r\n - @styfle\r\n - Sudheesh
 | 
			
		||||
    Singanamalla\r\n - Suhas\r\n - Suhas Deshpande\r\n - superkd37\r\n - Sébastien
 | 
			
		||||
    Arod\r\n - @T18970237136\r\n - @t_\r\n - Tan Li Hau\r\n - Tapan Prakash\r\n -
 | 
			
		||||
    Taras Mankovski\r\n - Tarik Ozket\r\n - Tetsuharu Ohzeki\r\n - The Gitter Badger\r\n
 | 
			
		||||
    - Thomas den Hollander\r\n - Thorsten Ball\r\n - Tien Hoanhtien\r\n - Tim Lancina\r\n
 | 
			
		||||
    - Tim Perry\r\n - Tim Schaub\r\n - Tim Suchanek\r\n - Tim Viiding-Spader\r\n -
 | 
			
		||||
    Tingan Ho\r\n - Titian Cernicova-Dragomir\r\n - tkondo\r\n - Todd Thomson\r\n
 | 
			
		||||
    - togru\r\n - Tom J\r\n - Torben Fitschen\r\n - Toxyxer\r\n - @TravCav\r\n - Troy
 | 
			
		||||
    Tae\r\n - TruongSinh Tran-Nguyen\r\n - Tycho Grouwstra\r\n - uhyo\r\n - Vadi Taslim\r\n
 | 
			
		||||
    - Vakhurin Sergey\r\n - Valera Rozuvan\r\n - Vilic Vane\r\n - Vimal Raghubir\r\n
 | 
			
		||||
    - Vladimir Kurchatkin\r\n - Vladimir Matveev\r\n - Vyacheslav Pukhanov\r\n - Wenlu
 | 
			
		||||
    Wang\r\n - Wes Souza\r\n - Wesley Wigham\r\n - William Orr\r\n - Wilson Hobbs\r\n
 | 
			
		||||
    - xiaofa\r\n - xl1\r\n - Yacine Hmito\r\n - Yang Cao\r\n - York Yao\r\n - @yortus\r\n
 | 
			
		||||
    - Yoshiki Shibukawa\r\n - Yuichi Nukiyama\r\n - Yuval Greenfield\r\n - Yuya Tanaka\r\n
 | 
			
		||||
    - Z\r\n - Zeeshan Ahmed\r\n - Zev Spitz\r\n - Zhengbo Li\r\n - Zixiang Li\r\n
 | 
			
		||||
    - @Zzzen\r\n - 阿卡琳"
 | 
			
		||||
							
								
								
									
										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@v5
 | 
			
		||||
- 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.
 | 
			
		||||
@ -99,9 +118,9 @@ See [action.yml](action.yml)
 | 
			
		||||
```yaml
 | 
			
		||||
steps:
 | 
			
		||||
- uses: actions/checkout@v5
 | 
			
		||||
- uses: actions/setup-node@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.
 | 
			
		||||
@ -137,18 +156,6 @@ It's **always** recommended to commit the lockfile of your package manager for s
 | 
			
		||||
 | 
			
		||||
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.
 | 
			
		||||
 | 
			
		||||
**Note:** The action does not cache `node_modules`
 | 
			
		||||
@ -160,9 +167,9 @@ See the examples of using cache for `yarn`/`pnpm` and `cache-dependency-path` in
 | 
			
		||||
```yaml
 | 
			
		||||
steps:
 | 
			
		||||
- uses: actions/checkout@v5
 | 
			
		||||
- uses: actions/setup-node@v5
 | 
			
		||||
- uses: actions/setup-node@v6
 | 
			
		||||
  with:
 | 
			
		||||
    node-version: 20
 | 
			
		||||
    node-version: 24
 | 
			
		||||
    cache: 'npm'
 | 
			
		||||
- run: npm ci
 | 
			
		||||
- run: npm test
 | 
			
		||||
@ -173,15 +180,29 @@ steps:
 | 
			
		||||
```yaml
 | 
			
		||||
steps:
 | 
			
		||||
- uses: actions/checkout@v5
 | 
			
		||||
- uses: actions/setup-node@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
 | 
			
		||||
@ -190,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@v5
 | 
			
		||||
      - name: Setup node
 | 
			
		||||
        uses: actions/setup-node@v5
 | 
			
		||||
        uses: actions/setup-node@v6
 | 
			
		||||
        with:
 | 
			
		||||
          node-version: ${{ matrix.node }}
 | 
			
		||||
      - run: npm ci
 | 
			
		||||
@ -209,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@v5
 | 
			
		||||
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.
 | 
			
		||||
 | 
			
		||||
@ -285,30 +285,120 @@ 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 () => {
 | 
			
		||||
    it('Should enable caching when packageManager is npm and cache input is not provided', async () => {
 | 
			
		||||
      inputs['package-manager-cache'] = 'true';
 | 
			
		||||
      inputs['cache'] = ''; // No cache input is provided
 | 
			
		||||
      inputs['cache'] = '';
 | 
			
		||||
      isCacheActionAvailable.mockImplementation(() => true);
 | 
			
		||||
 | 
			
		||||
      inSpy.mockImplementation(name => inputs[name]);
 | 
			
		||||
 | 
			
		||||
      const readFileSpy = jest.spyOn(fs, 'readFileSync');
 | 
			
		||||
      readFileSpy.mockImplementation(() =>
 | 
			
		||||
        JSON.stringify({
 | 
			
		||||
          packageManager: 'yarn@3.2.0'
 | 
			
		||||
          packageManager: 'npm@10.8.2'
 | 
			
		||||
        })
 | 
			
		||||
      );
 | 
			
		||||
 | 
			
		||||
      await main.run();
 | 
			
		||||
 | 
			
		||||
      expect(saveStateSpy).toHaveBeenCalledWith(expect.anything(), 'yarn');
 | 
			
		||||
      expect(saveStateSpy).toHaveBeenCalledWith(expect.anything(), 'npm');
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it('Should not enable caching if the packageManager field is missing in package.json and the cache input is not provided', async () => {
 | 
			
		||||
    it('Should enable caching when devEngines.packageManager.name is "npm" and cache input is not provided', async () => {
 | 
			
		||||
      inputs['package-manager-cache'] = 'true';
 | 
			
		||||
      inputs['cache'] = ''; // No cache input is provided
 | 
			
		||||
      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({
 | 
			
		||||
@ -323,24 +413,18 @@ describe('main tests', () => {
 | 
			
		||||
 | 
			
		||||
    it('Should skip caching when package-manager-cache is false', async () => {
 | 
			
		||||
      inputs['package-manager-cache'] = 'false';
 | 
			
		||||
      inputs['cache'] = ''; // No cache input is provided
 | 
			
		||||
 | 
			
		||||
      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'; // Explicit cache input provided
 | 
			
		||||
 | 
			
		||||
      inputs['cache'] = 'npm';
 | 
			
		||||
      inSpy.mockImplementation(name => inputs[name]);
 | 
			
		||||
      isCacheActionAvailable.mockReturnValue(true);
 | 
			
		||||
 | 
			
		||||
      isCacheActionAvailable.mockImplementation(() => true);
 | 
			
		||||
      await main.run();
 | 
			
		||||
 | 
			
		||||
      expect(saveStateSpy).toHaveBeenCalledWith(expect.anything(), 'npm');
 | 
			
		||||
    });
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
@ -24,7 +24,7 @@ inputs:
 | 
			
		||||
  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.'
 | 
			
		||||
    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.'
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										117
									
								
								dist/cache-save/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										117
									
								
								dist/cache-save/index.js
									
									
									
									
										vendored
									
									
								
							@ -39,7 +39,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
 | 
			
		||||
    });
 | 
			
		||||
};
 | 
			
		||||
Object.defineProperty(exports, "__esModule", ({ value: true }));
 | 
			
		||||
exports.saveCache = exports.restoreCache = exports.isFeatureAvailable = exports.ReserveCacheError = exports.ValidationError = void 0;
 | 
			
		||||
exports.saveCache = exports.restoreCache = exports.isFeatureAvailable = exports.FinalizeCacheError = exports.ReserveCacheError = exports.ValidationError = void 0;
 | 
			
		||||
const core = __importStar(__nccwpck_require__(7484));
 | 
			
		||||
const path = __importStar(__nccwpck_require__(6928));
 | 
			
		||||
const utils = __importStar(__nccwpck_require__(680));
 | 
			
		||||
@ -47,7 +47,7 @@ const cacheHttpClient = __importStar(__nccwpck_require__(5552));
 | 
			
		||||
const cacheTwirpClient = __importStar(__nccwpck_require__(6819));
 | 
			
		||||
const config_1 = __nccwpck_require__(7606);
 | 
			
		||||
const tar_1 = __nccwpck_require__(5321);
 | 
			
		||||
const constants_1 = __nccwpck_require__(8287);
 | 
			
		||||
const http_client_1 = __nccwpck_require__(4844);
 | 
			
		||||
class ValidationError extends Error {
 | 
			
		||||
    constructor(message) {
 | 
			
		||||
        super(message);
 | 
			
		||||
@ -64,6 +64,14 @@ class ReserveCacheError extends Error {
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
exports.ReserveCacheError = ReserveCacheError;
 | 
			
		||||
class FinalizeCacheError extends Error {
 | 
			
		||||
    constructor(message) {
 | 
			
		||||
        super(message);
 | 
			
		||||
        this.name = 'FinalizeCacheError';
 | 
			
		||||
        Object.setPrototypeOf(this, FinalizeCacheError.prototype);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
exports.FinalizeCacheError = FinalizeCacheError;
 | 
			
		||||
function checkPaths(paths) {
 | 
			
		||||
    if (!paths || paths.length === 0) {
 | 
			
		||||
        throw new ValidationError(`Path Validation Error: At least one directory or file path is required`);
 | 
			
		||||
@ -84,8 +92,18 @@ function checkKey(key) {
 | 
			
		||||
 * @returns boolean return true if Actions cache service feature is available, otherwise false
 | 
			
		||||
 */
 | 
			
		||||
function isFeatureAvailable() {
 | 
			
		||||
    const cacheServiceVersion = (0, config_1.getCacheServiceVersion)();
 | 
			
		||||
    // Check availability based on cache service version
 | 
			
		||||
    switch (cacheServiceVersion) {
 | 
			
		||||
        case 'v2':
 | 
			
		||||
            // For v2, we need ACTIONS_RESULTS_URL
 | 
			
		||||
            return !!process.env['ACTIONS_RESULTS_URL'];
 | 
			
		||||
        case 'v1':
 | 
			
		||||
        default:
 | 
			
		||||
            // For v1, we only need ACTIONS_CACHE_URL
 | 
			
		||||
            return !!process.env['ACTIONS_CACHE_URL'];
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
exports.isFeatureAvailable = isFeatureAvailable;
 | 
			
		||||
/**
 | 
			
		||||
 * Restores cache from keys
 | 
			
		||||
@ -169,10 +187,18 @@ function restoreCacheV1(paths, primaryKey, restoreKeys, options, enableCrossOsAr
 | 
			
		||||
                throw error;
 | 
			
		||||
            }
 | 
			
		||||
            else {
 | 
			
		||||
                // Supress all non-validation cache related errors because caching should be optional
 | 
			
		||||
                // warn on cache restore failure and continue build
 | 
			
		||||
                // Log server errors (5xx) as errors, all other errors as warnings
 | 
			
		||||
                if (typedError instanceof http_client_1.HttpClientError &&
 | 
			
		||||
                    typeof typedError.statusCode === 'number' &&
 | 
			
		||||
                    typedError.statusCode >= 500) {
 | 
			
		||||
                    core.error(`Failed to restore: ${error.message}`);
 | 
			
		||||
                }
 | 
			
		||||
                else {
 | 
			
		||||
                    core.warning(`Failed to restore: ${error.message}`);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        finally {
 | 
			
		||||
            // Try to delete the archive to save space
 | 
			
		||||
            try {
 | 
			
		||||
@ -223,7 +249,13 @@ function restoreCacheV2(paths, primaryKey, restoreKeys, options, enableCrossOsAr
 | 
			
		||||
                core.debug(`Cache not found for version ${request.version} of keys: ${keys.join(', ')}`);
 | 
			
		||||
                return undefined;
 | 
			
		||||
            }
 | 
			
		||||
            core.info(`Cache hit for: ${request.key}`);
 | 
			
		||||
            const isRestoreKeyMatch = request.key !== response.matchedKey;
 | 
			
		||||
            if (isRestoreKeyMatch) {
 | 
			
		||||
                core.info(`Cache hit for restore-key: ${response.matchedKey}`);
 | 
			
		||||
            }
 | 
			
		||||
            else {
 | 
			
		||||
                core.info(`Cache hit for: ${response.matchedKey}`);
 | 
			
		||||
            }
 | 
			
		||||
            if (options === null || options === void 0 ? void 0 : options.lookupOnly) {
 | 
			
		||||
                core.info('Lookup only - skipping download');
 | 
			
		||||
                return response.matchedKey;
 | 
			
		||||
@ -248,9 +280,17 @@ function restoreCacheV2(paths, primaryKey, restoreKeys, options, enableCrossOsAr
 | 
			
		||||
            }
 | 
			
		||||
            else {
 | 
			
		||||
                // Supress all non-validation cache related errors because caching should be optional
 | 
			
		||||
                // Log server errors (5xx) as errors, all other errors as warnings
 | 
			
		||||
                if (typedError instanceof http_client_1.HttpClientError &&
 | 
			
		||||
                    typeof typedError.statusCode === 'number' &&
 | 
			
		||||
                    typedError.statusCode >= 500) {
 | 
			
		||||
                    core.error(`Failed to restore: ${error.message}`);
 | 
			
		||||
                }
 | 
			
		||||
                else {
 | 
			
		||||
                    core.warning(`Failed to restore: ${error.message}`);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        finally {
 | 
			
		||||
            try {
 | 
			
		||||
                if (archivePath) {
 | 
			
		||||
@ -350,10 +390,18 @@ function saveCacheV1(paths, key, options, enableCrossOsArchive = false) {
 | 
			
		||||
            else if (typedError.name === ReserveCacheError.name) {
 | 
			
		||||
                core.info(`Failed to save: ${typedError.message}`);
 | 
			
		||||
            }
 | 
			
		||||
            else {
 | 
			
		||||
                // Log server errors (5xx) as errors, all other errors as warnings
 | 
			
		||||
                if (typedError instanceof http_client_1.HttpClientError &&
 | 
			
		||||
                    typeof typedError.statusCode === 'number' &&
 | 
			
		||||
                    typedError.statusCode >= 500) {
 | 
			
		||||
                    core.error(`Failed to save: ${typedError.message}`);
 | 
			
		||||
                }
 | 
			
		||||
                else {
 | 
			
		||||
                    core.warning(`Failed to save: ${typedError.message}`);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        finally {
 | 
			
		||||
            // Try to delete the archive to save space
 | 
			
		||||
            try {
 | 
			
		||||
@ -400,10 +448,6 @@ function saveCacheV2(paths, key, options, enableCrossOsArchive = false) {
 | 
			
		||||
            }
 | 
			
		||||
            const archiveFileSize = utils.getArchiveFileSizeInBytes(archivePath);
 | 
			
		||||
            core.debug(`File Size: ${archiveFileSize}`);
 | 
			
		||||
            // For GHES, this check will take place in ReserveCache API with enterprise file size limit
 | 
			
		||||
            if (archiveFileSize > constants_1.CacheFileSizeLimit && !(0, config_1.isGhes)()) {
 | 
			
		||||
                throw new Error(`Cache size of ~${Math.round(archiveFileSize / (1024 * 1024))} MB (${archiveFileSize} B) is over the 10GB limit, not saving cache.`);
 | 
			
		||||
            }
 | 
			
		||||
            // Set the archive size in the options, will be used to display the upload progress
 | 
			
		||||
            options.archiveSizeBytes = archiveFileSize;
 | 
			
		||||
            core.debug('Reserving Cache');
 | 
			
		||||
@ -416,7 +460,10 @@ function saveCacheV2(paths, key, options, enableCrossOsArchive = false) {
 | 
			
		||||
            try {
 | 
			
		||||
                const response = yield twirpClient.CreateCacheEntry(request);
 | 
			
		||||
                if (!response.ok) {
 | 
			
		||||
                    throw new Error('Response was not ok');
 | 
			
		||||
                    if (response.message) {
 | 
			
		||||
                        core.warning(`Cache reservation failed: ${response.message}`);
 | 
			
		||||
                    }
 | 
			
		||||
                    throw new Error(response.message || 'Response was not ok');
 | 
			
		||||
                }
 | 
			
		||||
                signedUploadUrl = response.signedUploadUrl;
 | 
			
		||||
            }
 | 
			
		||||
@ -434,6 +481,9 @@ function saveCacheV2(paths, key, options, enableCrossOsArchive = false) {
 | 
			
		||||
            const finalizeResponse = yield twirpClient.FinalizeCacheEntryUpload(finalizeRequest);
 | 
			
		||||
            core.debug(`FinalizeCacheEntryUploadResponse: ${finalizeResponse.ok}`);
 | 
			
		||||
            if (!finalizeResponse.ok) {
 | 
			
		||||
                if (finalizeResponse.message) {
 | 
			
		||||
                    throw new FinalizeCacheError(finalizeResponse.message);
 | 
			
		||||
                }
 | 
			
		||||
                throw new Error(`Unable to finalize cache with key ${key}, another job may be finalizing this cache.`);
 | 
			
		||||
            }
 | 
			
		||||
            cacheId = parseInt(finalizeResponse.entryId);
 | 
			
		||||
@ -446,10 +496,21 @@ function saveCacheV2(paths, key, options, enableCrossOsArchive = false) {
 | 
			
		||||
            else if (typedError.name === ReserveCacheError.name) {
 | 
			
		||||
                core.info(`Failed to save: ${typedError.message}`);
 | 
			
		||||
            }
 | 
			
		||||
            else if (typedError.name === FinalizeCacheError.name) {
 | 
			
		||||
                core.warning(typedError.message);
 | 
			
		||||
            }
 | 
			
		||||
            else {
 | 
			
		||||
                // Log server errors (5xx) as errors, all other errors as warnings
 | 
			
		||||
                if (typedError instanceof http_client_1.HttpClientError &&
 | 
			
		||||
                    typeof typedError.statusCode === 'number' &&
 | 
			
		||||
                    typedError.statusCode >= 500) {
 | 
			
		||||
                    core.error(`Failed to save: ${typedError.message}`);
 | 
			
		||||
                }
 | 
			
		||||
                else {
 | 
			
		||||
                    core.warning(`Failed to save: ${typedError.message}`);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        finally {
 | 
			
		||||
            // Try to delete the archive to save space
 | 
			
		||||
            try {
 | 
			
		||||
@ -549,11 +610,12 @@ class CreateCacheEntryResponse$Type extends runtime_5.MessageType {
 | 
			
		||||
    constructor() {
 | 
			
		||||
        super("github.actions.results.api.v1.CreateCacheEntryResponse", [
 | 
			
		||||
            { no: 1, name: "ok", kind: "scalar", T: 8 /*ScalarType.BOOL*/ },
 | 
			
		||||
            { no: 2, name: "signed_upload_url", kind: "scalar", T: 9 /*ScalarType.STRING*/ }
 | 
			
		||||
            { no: 2, name: "signed_upload_url", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
 | 
			
		||||
            { no: 3, name: "message", kind: "scalar", T: 9 /*ScalarType.STRING*/ }
 | 
			
		||||
        ]);
 | 
			
		||||
    }
 | 
			
		||||
    create(value) {
 | 
			
		||||
        const message = { ok: false, signedUploadUrl: "" };
 | 
			
		||||
        const message = { ok: false, signedUploadUrl: "", message: "" };
 | 
			
		||||
        globalThis.Object.defineProperty(message, runtime_4.MESSAGE_TYPE, { enumerable: false, value: this });
 | 
			
		||||
        if (value !== undefined)
 | 
			
		||||
            (0, runtime_3.reflectionMergePartial)(this, message, value);
 | 
			
		||||
@ -570,6 +632,9 @@ class CreateCacheEntryResponse$Type extends runtime_5.MessageType {
 | 
			
		||||
                case /* string signed_upload_url */ 2:
 | 
			
		||||
                    message.signedUploadUrl = reader.string();
 | 
			
		||||
                    break;
 | 
			
		||||
                case /* string message */ 3:
 | 
			
		||||
                    message.message = reader.string();
 | 
			
		||||
                    break;
 | 
			
		||||
                default:
 | 
			
		||||
                    let u = options.readUnknownField;
 | 
			
		||||
                    if (u === "throw")
 | 
			
		||||
@ -588,6 +653,9 @@ class CreateCacheEntryResponse$Type extends runtime_5.MessageType {
 | 
			
		||||
        /* string signed_upload_url = 2; */
 | 
			
		||||
        if (message.signedUploadUrl !== "")
 | 
			
		||||
            writer.tag(2, runtime_1.WireType.LengthDelimited).string(message.signedUploadUrl);
 | 
			
		||||
        /* string message = 3; */
 | 
			
		||||
        if (message.message !== "")
 | 
			
		||||
            writer.tag(3, runtime_1.WireType.LengthDelimited).string(message.message);
 | 
			
		||||
        let u = options.writeUnknownFields;
 | 
			
		||||
        if (u !== false)
 | 
			
		||||
            (u == true ? runtime_2.UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
 | 
			
		||||
@ -671,11 +739,12 @@ class FinalizeCacheEntryUploadResponse$Type extends runtime_5.MessageType {
 | 
			
		||||
    constructor() {
 | 
			
		||||
        super("github.actions.results.api.v1.FinalizeCacheEntryUploadResponse", [
 | 
			
		||||
            { no: 1, name: "ok", kind: "scalar", T: 8 /*ScalarType.BOOL*/ },
 | 
			
		||||
            { no: 2, name: "entry_id", kind: "scalar", T: 3 /*ScalarType.INT64*/ }
 | 
			
		||||
            { no: 2, name: "entry_id", kind: "scalar", T: 3 /*ScalarType.INT64*/ },
 | 
			
		||||
            { no: 3, name: "message", kind: "scalar", T: 9 /*ScalarType.STRING*/ }
 | 
			
		||||
        ]);
 | 
			
		||||
    }
 | 
			
		||||
    create(value) {
 | 
			
		||||
        const message = { ok: false, entryId: "0" };
 | 
			
		||||
        const message = { ok: false, entryId: "0", message: "" };
 | 
			
		||||
        globalThis.Object.defineProperty(message, runtime_4.MESSAGE_TYPE, { enumerable: false, value: this });
 | 
			
		||||
        if (value !== undefined)
 | 
			
		||||
            (0, runtime_3.reflectionMergePartial)(this, message, value);
 | 
			
		||||
@ -692,6 +761,9 @@ class FinalizeCacheEntryUploadResponse$Type extends runtime_5.MessageType {
 | 
			
		||||
                case /* int64 entry_id */ 2:
 | 
			
		||||
                    message.entryId = reader.int64().toString();
 | 
			
		||||
                    break;
 | 
			
		||||
                case /* string message */ 3:
 | 
			
		||||
                    message.message = reader.string();
 | 
			
		||||
                    break;
 | 
			
		||||
                default:
 | 
			
		||||
                    let u = options.readUnknownField;
 | 
			
		||||
                    if (u === "throw")
 | 
			
		||||
@ -710,6 +782,9 @@ class FinalizeCacheEntryUploadResponse$Type extends runtime_5.MessageType {
 | 
			
		||||
        /* int64 entry_id = 2; */
 | 
			
		||||
        if (message.entryId !== "0")
 | 
			
		||||
            writer.tag(2, runtime_1.WireType.Varint).int64(message.entryId);
 | 
			
		||||
        /* string message = 3; */
 | 
			
		||||
        if (message.message !== "")
 | 
			
		||||
            writer.tag(3, runtime_1.WireType.LengthDelimited).string(message.message);
 | 
			
		||||
        let u = options.writeUnknownFields;
 | 
			
		||||
        if (u !== false)
 | 
			
		||||
            (u == true ? runtime_2.UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
 | 
			
		||||
@ -47828,6 +47903,10 @@ class RpcOutputStreamController {
 | 
			
		||||
            cmp: [],
 | 
			
		||||
        };
 | 
			
		||||
        this._closed = false;
 | 
			
		||||
        // --- RpcOutputStream async iterator API
 | 
			
		||||
        // iterator state.
 | 
			
		||||
        // is undefined when no iterator has been acquired yet.
 | 
			
		||||
        this._itState = { q: [] };
 | 
			
		||||
    }
 | 
			
		||||
    // --- RpcOutputStream callback API
 | 
			
		||||
    onNext(callback) {
 | 
			
		||||
@ -47927,10 +48006,6 @@ class RpcOutputStreamController {
 | 
			
		||||
     *   messages are queued.
 | 
			
		||||
     */
 | 
			
		||||
    [Symbol.asyncIterator]() {
 | 
			
		||||
        // init the iterator state, enabling pushIt()
 | 
			
		||||
        if (!this._itState) {
 | 
			
		||||
            this._itState = { q: [] };
 | 
			
		||||
        }
 | 
			
		||||
        // if we are closed, we are definitely not receiving any more messages.
 | 
			
		||||
        // but we can't let the iterator get stuck. we want to either:
 | 
			
		||||
        // a) finish the new iterator immediately, because we are completed
 | 
			
		||||
@ -47963,8 +48038,6 @@ class RpcOutputStreamController {
 | 
			
		||||
    // this either resolves a pending promise, or enqueues the result.
 | 
			
		||||
    pushIt(result) {
 | 
			
		||||
        let state = this._itState;
 | 
			
		||||
        if (!state)
 | 
			
		||||
            return;
 | 
			
		||||
        // is the consumer waiting for us?
 | 
			
		||||
        if (state.p) {
 | 
			
		||||
            // yes, consumer is waiting for this promise.
 | 
			
		||||
@ -49876,6 +49949,7 @@ const reflection_equals_1 = __nccwpck_require__(4827);
 | 
			
		||||
const binary_writer_1 = __nccwpck_require__(3957);
 | 
			
		||||
const binary_reader_1 = __nccwpck_require__(2889);
 | 
			
		||||
const baseDescriptors = Object.getOwnPropertyDescriptors(Object.getPrototypeOf({}));
 | 
			
		||||
const messageTypeDescriptor = baseDescriptors[message_type_contract_1.MESSAGE_TYPE] = {};
 | 
			
		||||
/**
 | 
			
		||||
 * This standard message type provides reflection-based
 | 
			
		||||
 * operations to work with a message.
 | 
			
		||||
@ -49886,7 +49960,8 @@ class MessageType {
 | 
			
		||||
        this.typeName = name;
 | 
			
		||||
        this.fields = fields.map(reflection_info_1.normalizeFieldInfo);
 | 
			
		||||
        this.options = options !== null && options !== void 0 ? options : {};
 | 
			
		||||
        this.messagePrototype = Object.create(null, Object.assign(Object.assign({}, baseDescriptors), { [message_type_contract_1.MESSAGE_TYPE]: { value: this } }));
 | 
			
		||||
        messageTypeDescriptor.value = this;
 | 
			
		||||
        this.messagePrototype = Object.create(null, baseDescriptors);
 | 
			
		||||
        this.refTypeCheck = new reflection_type_check_1.ReflectionTypeCheck(this);
 | 
			
		||||
        this.refJsonReader = new reflection_json_reader_1.ReflectionJsonReader(this);
 | 
			
		||||
        this.refJsonWriter = new reflection_json_writer_1.ReflectionJsonWriter(this);
 | 
			
		||||
@ -91387,7 +91462,7 @@ module.exports = parseParams
 | 
			
		||||
/***/ ((module) => {
 | 
			
		||||
 | 
			
		||||
"use strict";
 | 
			
		||||
module.exports = /*#__PURE__*/JSON.parse('{"name":"@actions/cache","version":"4.0.3","preview":true,"description":"Actions cache lib","keywords":["github","actions","cache"],"homepage":"https://github.com/actions/toolkit/tree/main/packages/cache","license":"MIT","main":"lib/cache.js","types":"lib/cache.d.ts","directories":{"lib":"lib","test":"__tests__"},"files":["lib","!.DS_Store"],"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/actions/toolkit.git","directory":"packages/cache"},"scripts":{"audit-moderate":"npm install && npm audit --json --audit-level=moderate > audit.json","test":"echo \\"Error: run tests from root\\" && exit 1","tsc":"tsc"},"bugs":{"url":"https://github.com/actions/toolkit/issues"},"dependencies":{"@actions/core":"^1.11.1","@actions/exec":"^1.0.1","@actions/glob":"^0.1.0","@actions/http-client":"^2.1.1","@actions/io":"^1.0.1","@azure/abort-controller":"^1.1.0","@azure/ms-rest-js":"^2.6.0","@azure/storage-blob":"^12.13.0","@protobuf-ts/plugin":"^2.9.4","semver":"^6.3.1"},"devDependencies":{"@types/node":"^22.13.9","@types/semver":"^6.0.0","typescript":"^5.2.2"}}');
 | 
			
		||||
module.exports = /*#__PURE__*/JSON.parse('{"name":"@actions/cache","version":"4.1.0","preview":true,"description":"Actions cache lib","keywords":["github","actions","cache"],"homepage":"https://github.com/actions/toolkit/tree/main/packages/cache","license":"MIT","main":"lib/cache.js","types":"lib/cache.d.ts","directories":{"lib":"lib","test":"__tests__"},"files":["lib","!.DS_Store"],"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/actions/toolkit.git","directory":"packages/cache"},"scripts":{"audit-moderate":"npm install && npm audit --json --audit-level=moderate > audit.json","test":"echo \\"Error: run tests from root\\" && exit 1","tsc":"tsc"},"bugs":{"url":"https://github.com/actions/toolkit/issues"},"dependencies":{"@actions/core":"^1.11.1","@actions/exec":"^1.0.1","@actions/glob":"^0.1.0","@protobuf-ts/runtime-rpc":"^2.11.1","@actions/http-client":"^2.1.1","@actions/io":"^1.0.1","@azure/abort-controller":"^1.1.0","@azure/ms-rest-js":"^2.6.0","@azure/storage-blob":"^12.13.0","semver":"^6.3.1"},"devDependencies":{"@types/node":"^22.13.9","@types/semver":"^6.0.0","@protobuf-ts/plugin":"^2.9.4","typescript":"^5.2.2"}}');
 | 
			
		||||
 | 
			
		||||
/***/ }),
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										341
									
								
								dist/setup/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										341
									
								
								dist/setup/index.js
									
									
									
									
										vendored
									
									
								
							@ -39,7 +39,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
 | 
			
		||||
    });
 | 
			
		||||
};
 | 
			
		||||
Object.defineProperty(exports, "__esModule", ({ value: true }));
 | 
			
		||||
exports.saveCache = exports.restoreCache = exports.isFeatureAvailable = exports.ReserveCacheError = exports.ValidationError = void 0;
 | 
			
		||||
exports.saveCache = exports.restoreCache = exports.isFeatureAvailable = exports.FinalizeCacheError = exports.ReserveCacheError = exports.ValidationError = void 0;
 | 
			
		||||
const core = __importStar(__nccwpck_require__(37484));
 | 
			
		||||
const path = __importStar(__nccwpck_require__(16928));
 | 
			
		||||
const utils = __importStar(__nccwpck_require__(98299));
 | 
			
		||||
@ -47,7 +47,7 @@ const cacheHttpClient = __importStar(__nccwpck_require__(73171));
 | 
			
		||||
const cacheTwirpClient = __importStar(__nccwpck_require__(96819));
 | 
			
		||||
const config_1 = __nccwpck_require__(17606);
 | 
			
		||||
const tar_1 = __nccwpck_require__(95321);
 | 
			
		||||
const constants_1 = __nccwpck_require__(58287);
 | 
			
		||||
const http_client_1 = __nccwpck_require__(54844);
 | 
			
		||||
class ValidationError extends Error {
 | 
			
		||||
    constructor(message) {
 | 
			
		||||
        super(message);
 | 
			
		||||
@ -64,6 +64,14 @@ class ReserveCacheError extends Error {
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
exports.ReserveCacheError = ReserveCacheError;
 | 
			
		||||
class FinalizeCacheError extends Error {
 | 
			
		||||
    constructor(message) {
 | 
			
		||||
        super(message);
 | 
			
		||||
        this.name = 'FinalizeCacheError';
 | 
			
		||||
        Object.setPrototypeOf(this, FinalizeCacheError.prototype);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
exports.FinalizeCacheError = FinalizeCacheError;
 | 
			
		||||
function checkPaths(paths) {
 | 
			
		||||
    if (!paths || paths.length === 0) {
 | 
			
		||||
        throw new ValidationError(`Path Validation Error: At least one directory or file path is required`);
 | 
			
		||||
@ -84,8 +92,18 @@ function checkKey(key) {
 | 
			
		||||
 * @returns boolean return true if Actions cache service feature is available, otherwise false
 | 
			
		||||
 */
 | 
			
		||||
function isFeatureAvailable() {
 | 
			
		||||
    const cacheServiceVersion = (0, config_1.getCacheServiceVersion)();
 | 
			
		||||
    // Check availability based on cache service version
 | 
			
		||||
    switch (cacheServiceVersion) {
 | 
			
		||||
        case 'v2':
 | 
			
		||||
            // For v2, we need ACTIONS_RESULTS_URL
 | 
			
		||||
            return !!process.env['ACTIONS_RESULTS_URL'];
 | 
			
		||||
        case 'v1':
 | 
			
		||||
        default:
 | 
			
		||||
            // For v1, we only need ACTIONS_CACHE_URL
 | 
			
		||||
            return !!process.env['ACTIONS_CACHE_URL'];
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
exports.isFeatureAvailable = isFeatureAvailable;
 | 
			
		||||
/**
 | 
			
		||||
 * Restores cache from keys
 | 
			
		||||
@ -169,10 +187,18 @@ function restoreCacheV1(paths, primaryKey, restoreKeys, options, enableCrossOsAr
 | 
			
		||||
                throw error;
 | 
			
		||||
            }
 | 
			
		||||
            else {
 | 
			
		||||
                // Supress all non-validation cache related errors because caching should be optional
 | 
			
		||||
                // warn on cache restore failure and continue build
 | 
			
		||||
                // Log server errors (5xx) as errors, all other errors as warnings
 | 
			
		||||
                if (typedError instanceof http_client_1.HttpClientError &&
 | 
			
		||||
                    typeof typedError.statusCode === 'number' &&
 | 
			
		||||
                    typedError.statusCode >= 500) {
 | 
			
		||||
                    core.error(`Failed to restore: ${error.message}`);
 | 
			
		||||
                }
 | 
			
		||||
                else {
 | 
			
		||||
                    core.warning(`Failed to restore: ${error.message}`);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        finally {
 | 
			
		||||
            // Try to delete the archive to save space
 | 
			
		||||
            try {
 | 
			
		||||
@ -223,7 +249,13 @@ function restoreCacheV2(paths, primaryKey, restoreKeys, options, enableCrossOsAr
 | 
			
		||||
                core.debug(`Cache not found for version ${request.version} of keys: ${keys.join(', ')}`);
 | 
			
		||||
                return undefined;
 | 
			
		||||
            }
 | 
			
		||||
            core.info(`Cache hit for: ${request.key}`);
 | 
			
		||||
            const isRestoreKeyMatch = request.key !== response.matchedKey;
 | 
			
		||||
            if (isRestoreKeyMatch) {
 | 
			
		||||
                core.info(`Cache hit for restore-key: ${response.matchedKey}`);
 | 
			
		||||
            }
 | 
			
		||||
            else {
 | 
			
		||||
                core.info(`Cache hit for: ${response.matchedKey}`);
 | 
			
		||||
            }
 | 
			
		||||
            if (options === null || options === void 0 ? void 0 : options.lookupOnly) {
 | 
			
		||||
                core.info('Lookup only - skipping download');
 | 
			
		||||
                return response.matchedKey;
 | 
			
		||||
@ -248,9 +280,17 @@ function restoreCacheV2(paths, primaryKey, restoreKeys, options, enableCrossOsAr
 | 
			
		||||
            }
 | 
			
		||||
            else {
 | 
			
		||||
                // Supress all non-validation cache related errors because caching should be optional
 | 
			
		||||
                // Log server errors (5xx) as errors, all other errors as warnings
 | 
			
		||||
                if (typedError instanceof http_client_1.HttpClientError &&
 | 
			
		||||
                    typeof typedError.statusCode === 'number' &&
 | 
			
		||||
                    typedError.statusCode >= 500) {
 | 
			
		||||
                    core.error(`Failed to restore: ${error.message}`);
 | 
			
		||||
                }
 | 
			
		||||
                else {
 | 
			
		||||
                    core.warning(`Failed to restore: ${error.message}`);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        finally {
 | 
			
		||||
            try {
 | 
			
		||||
                if (archivePath) {
 | 
			
		||||
@ -350,10 +390,18 @@ function saveCacheV1(paths, key, options, enableCrossOsArchive = false) {
 | 
			
		||||
            else if (typedError.name === ReserveCacheError.name) {
 | 
			
		||||
                core.info(`Failed to save: ${typedError.message}`);
 | 
			
		||||
            }
 | 
			
		||||
            else {
 | 
			
		||||
                // Log server errors (5xx) as errors, all other errors as warnings
 | 
			
		||||
                if (typedError instanceof http_client_1.HttpClientError &&
 | 
			
		||||
                    typeof typedError.statusCode === 'number' &&
 | 
			
		||||
                    typedError.statusCode >= 500) {
 | 
			
		||||
                    core.error(`Failed to save: ${typedError.message}`);
 | 
			
		||||
                }
 | 
			
		||||
                else {
 | 
			
		||||
                    core.warning(`Failed to save: ${typedError.message}`);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        finally {
 | 
			
		||||
            // Try to delete the archive to save space
 | 
			
		||||
            try {
 | 
			
		||||
@ -400,10 +448,6 @@ function saveCacheV2(paths, key, options, enableCrossOsArchive = false) {
 | 
			
		||||
            }
 | 
			
		||||
            const archiveFileSize = utils.getArchiveFileSizeInBytes(archivePath);
 | 
			
		||||
            core.debug(`File Size: ${archiveFileSize}`);
 | 
			
		||||
            // For GHES, this check will take place in ReserveCache API with enterprise file size limit
 | 
			
		||||
            if (archiveFileSize > constants_1.CacheFileSizeLimit && !(0, config_1.isGhes)()) {
 | 
			
		||||
                throw new Error(`Cache size of ~${Math.round(archiveFileSize / (1024 * 1024))} MB (${archiveFileSize} B) is over the 10GB limit, not saving cache.`);
 | 
			
		||||
            }
 | 
			
		||||
            // Set the archive size in the options, will be used to display the upload progress
 | 
			
		||||
            options.archiveSizeBytes = archiveFileSize;
 | 
			
		||||
            core.debug('Reserving Cache');
 | 
			
		||||
@ -416,7 +460,10 @@ function saveCacheV2(paths, key, options, enableCrossOsArchive = false) {
 | 
			
		||||
            try {
 | 
			
		||||
                const response = yield twirpClient.CreateCacheEntry(request);
 | 
			
		||||
                if (!response.ok) {
 | 
			
		||||
                    throw new Error('Response was not ok');
 | 
			
		||||
                    if (response.message) {
 | 
			
		||||
                        core.warning(`Cache reservation failed: ${response.message}`);
 | 
			
		||||
                    }
 | 
			
		||||
                    throw new Error(response.message || 'Response was not ok');
 | 
			
		||||
                }
 | 
			
		||||
                signedUploadUrl = response.signedUploadUrl;
 | 
			
		||||
            }
 | 
			
		||||
@ -434,6 +481,9 @@ function saveCacheV2(paths, key, options, enableCrossOsArchive = false) {
 | 
			
		||||
            const finalizeResponse = yield twirpClient.FinalizeCacheEntryUpload(finalizeRequest);
 | 
			
		||||
            core.debug(`FinalizeCacheEntryUploadResponse: ${finalizeResponse.ok}`);
 | 
			
		||||
            if (!finalizeResponse.ok) {
 | 
			
		||||
                if (finalizeResponse.message) {
 | 
			
		||||
                    throw new FinalizeCacheError(finalizeResponse.message);
 | 
			
		||||
                }
 | 
			
		||||
                throw new Error(`Unable to finalize cache with key ${key}, another job may be finalizing this cache.`);
 | 
			
		||||
            }
 | 
			
		||||
            cacheId = parseInt(finalizeResponse.entryId);
 | 
			
		||||
@ -446,10 +496,21 @@ function saveCacheV2(paths, key, options, enableCrossOsArchive = false) {
 | 
			
		||||
            else if (typedError.name === ReserveCacheError.name) {
 | 
			
		||||
                core.info(`Failed to save: ${typedError.message}`);
 | 
			
		||||
            }
 | 
			
		||||
            else if (typedError.name === FinalizeCacheError.name) {
 | 
			
		||||
                core.warning(typedError.message);
 | 
			
		||||
            }
 | 
			
		||||
            else {
 | 
			
		||||
                // Log server errors (5xx) as errors, all other errors as warnings
 | 
			
		||||
                if (typedError instanceof http_client_1.HttpClientError &&
 | 
			
		||||
                    typeof typedError.statusCode === 'number' &&
 | 
			
		||||
                    typedError.statusCode >= 500) {
 | 
			
		||||
                    core.error(`Failed to save: ${typedError.message}`);
 | 
			
		||||
                }
 | 
			
		||||
                else {
 | 
			
		||||
                    core.warning(`Failed to save: ${typedError.message}`);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        finally {
 | 
			
		||||
            // Try to delete the archive to save space
 | 
			
		||||
            try {
 | 
			
		||||
@ -549,11 +610,12 @@ class CreateCacheEntryResponse$Type extends runtime_5.MessageType {
 | 
			
		||||
    constructor() {
 | 
			
		||||
        super("github.actions.results.api.v1.CreateCacheEntryResponse", [
 | 
			
		||||
            { no: 1, name: "ok", kind: "scalar", T: 8 /*ScalarType.BOOL*/ },
 | 
			
		||||
            { no: 2, name: "signed_upload_url", kind: "scalar", T: 9 /*ScalarType.STRING*/ }
 | 
			
		||||
            { no: 2, name: "signed_upload_url", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
 | 
			
		||||
            { no: 3, name: "message", kind: "scalar", T: 9 /*ScalarType.STRING*/ }
 | 
			
		||||
        ]);
 | 
			
		||||
    }
 | 
			
		||||
    create(value) {
 | 
			
		||||
        const message = { ok: false, signedUploadUrl: "" };
 | 
			
		||||
        const message = { ok: false, signedUploadUrl: "", message: "" };
 | 
			
		||||
        globalThis.Object.defineProperty(message, runtime_4.MESSAGE_TYPE, { enumerable: false, value: this });
 | 
			
		||||
        if (value !== undefined)
 | 
			
		||||
            (0, runtime_3.reflectionMergePartial)(this, message, value);
 | 
			
		||||
@ -570,6 +632,9 @@ class CreateCacheEntryResponse$Type extends runtime_5.MessageType {
 | 
			
		||||
                case /* string signed_upload_url */ 2:
 | 
			
		||||
                    message.signedUploadUrl = reader.string();
 | 
			
		||||
                    break;
 | 
			
		||||
                case /* string message */ 3:
 | 
			
		||||
                    message.message = reader.string();
 | 
			
		||||
                    break;
 | 
			
		||||
                default:
 | 
			
		||||
                    let u = options.readUnknownField;
 | 
			
		||||
                    if (u === "throw")
 | 
			
		||||
@ -588,6 +653,9 @@ class CreateCacheEntryResponse$Type extends runtime_5.MessageType {
 | 
			
		||||
        /* string signed_upload_url = 2; */
 | 
			
		||||
        if (message.signedUploadUrl !== "")
 | 
			
		||||
            writer.tag(2, runtime_1.WireType.LengthDelimited).string(message.signedUploadUrl);
 | 
			
		||||
        /* string message = 3; */
 | 
			
		||||
        if (message.message !== "")
 | 
			
		||||
            writer.tag(3, runtime_1.WireType.LengthDelimited).string(message.message);
 | 
			
		||||
        let u = options.writeUnknownFields;
 | 
			
		||||
        if (u !== false)
 | 
			
		||||
            (u == true ? runtime_2.UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
 | 
			
		||||
@ -671,11 +739,12 @@ class FinalizeCacheEntryUploadResponse$Type extends runtime_5.MessageType {
 | 
			
		||||
    constructor() {
 | 
			
		||||
        super("github.actions.results.api.v1.FinalizeCacheEntryUploadResponse", [
 | 
			
		||||
            { no: 1, name: "ok", kind: "scalar", T: 8 /*ScalarType.BOOL*/ },
 | 
			
		||||
            { no: 2, name: "entry_id", kind: "scalar", T: 3 /*ScalarType.INT64*/ }
 | 
			
		||||
            { no: 2, name: "entry_id", kind: "scalar", T: 3 /*ScalarType.INT64*/ },
 | 
			
		||||
            { no: 3, name: "message", kind: "scalar", T: 9 /*ScalarType.STRING*/ }
 | 
			
		||||
        ]);
 | 
			
		||||
    }
 | 
			
		||||
    create(value) {
 | 
			
		||||
        const message = { ok: false, entryId: "0" };
 | 
			
		||||
        const message = { ok: false, entryId: "0", message: "" };
 | 
			
		||||
        globalThis.Object.defineProperty(message, runtime_4.MESSAGE_TYPE, { enumerable: false, value: this });
 | 
			
		||||
        if (value !== undefined)
 | 
			
		||||
            (0, runtime_3.reflectionMergePartial)(this, message, value);
 | 
			
		||||
@ -692,6 +761,9 @@ class FinalizeCacheEntryUploadResponse$Type extends runtime_5.MessageType {
 | 
			
		||||
                case /* int64 entry_id */ 2:
 | 
			
		||||
                    message.entryId = reader.int64().toString();
 | 
			
		||||
                    break;
 | 
			
		||||
                case /* string message */ 3:
 | 
			
		||||
                    message.message = reader.string();
 | 
			
		||||
                    break;
 | 
			
		||||
                default:
 | 
			
		||||
                    let u = options.readUnknownField;
 | 
			
		||||
                    if (u === "throw")
 | 
			
		||||
@ -710,6 +782,9 @@ class FinalizeCacheEntryUploadResponse$Type extends runtime_5.MessageType {
 | 
			
		||||
        /* int64 entry_id = 2; */
 | 
			
		||||
        if (message.entryId !== "0")
 | 
			
		||||
            writer.tag(2, runtime_1.WireType.Varint).int64(message.entryId);
 | 
			
		||||
        /* string message = 3; */
 | 
			
		||||
        if (message.message !== "")
 | 
			
		||||
            writer.tag(3, runtime_1.WireType.LengthDelimited).string(message.message);
 | 
			
		||||
        let u = options.writeUnknownFields;
 | 
			
		||||
        if (u !== false)
 | 
			
		||||
            (u == true ? runtime_2.UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
 | 
			
		||||
@ -54329,6 +54404,10 @@ class RpcOutputStreamController {
 | 
			
		||||
            cmp: [],
 | 
			
		||||
        };
 | 
			
		||||
        this._closed = false;
 | 
			
		||||
        // --- RpcOutputStream async iterator API
 | 
			
		||||
        // iterator state.
 | 
			
		||||
        // is undefined when no iterator has been acquired yet.
 | 
			
		||||
        this._itState = { q: [] };
 | 
			
		||||
    }
 | 
			
		||||
    // --- RpcOutputStream callback API
 | 
			
		||||
    onNext(callback) {
 | 
			
		||||
@ -54428,10 +54507,6 @@ class RpcOutputStreamController {
 | 
			
		||||
     *   messages are queued.
 | 
			
		||||
     */
 | 
			
		||||
    [Symbol.asyncIterator]() {
 | 
			
		||||
        // init the iterator state, enabling pushIt()
 | 
			
		||||
        if (!this._itState) {
 | 
			
		||||
            this._itState = { q: [] };
 | 
			
		||||
        }
 | 
			
		||||
        // if we are closed, we are definitely not receiving any more messages.
 | 
			
		||||
        // but we can't let the iterator get stuck. we want to either:
 | 
			
		||||
        // a) finish the new iterator immediately, because we are completed
 | 
			
		||||
@ -54464,8 +54539,6 @@ class RpcOutputStreamController {
 | 
			
		||||
    // this either resolves a pending promise, or enqueues the result.
 | 
			
		||||
    pushIt(result) {
 | 
			
		||||
        let state = this._itState;
 | 
			
		||||
        if (!state)
 | 
			
		||||
            return;
 | 
			
		||||
        // is the consumer waiting for us?
 | 
			
		||||
        if (state.p) {
 | 
			
		||||
            // yes, consumer is waiting for this promise.
 | 
			
		||||
@ -56377,6 +56450,7 @@ const reflection_equals_1 = __nccwpck_require__(4827);
 | 
			
		||||
const binary_writer_1 = __nccwpck_require__(23957);
 | 
			
		||||
const binary_reader_1 = __nccwpck_require__(92889);
 | 
			
		||||
const baseDescriptors = Object.getOwnPropertyDescriptors(Object.getPrototypeOf({}));
 | 
			
		||||
const messageTypeDescriptor = baseDescriptors[message_type_contract_1.MESSAGE_TYPE] = {};
 | 
			
		||||
/**
 | 
			
		||||
 * This standard message type provides reflection-based
 | 
			
		||||
 * operations to work with a message.
 | 
			
		||||
@ -56387,7 +56461,8 @@ class MessageType {
 | 
			
		||||
        this.typeName = name;
 | 
			
		||||
        this.fields = fields.map(reflection_info_1.normalizeFieldInfo);
 | 
			
		||||
        this.options = options !== null && options !== void 0 ? options : {};
 | 
			
		||||
        this.messagePrototype = Object.create(null, Object.assign(Object.assign({}, baseDescriptors), { [message_type_contract_1.MESSAGE_TYPE]: { value: this } }));
 | 
			
		||||
        messageTypeDescriptor.value = this;
 | 
			
		||||
        this.messagePrototype = Object.create(null, baseDescriptors);
 | 
			
		||||
        this.refTypeCheck = new reflection_type_check_1.ReflectionTypeCheck(this);
 | 
			
		||||
        this.refJsonReader = new reflection_json_reader_1.ReflectionJsonReader(this);
 | 
			
		||||
        this.refJsonWriter = new reflection_json_writer_1.ReflectionJsonWriter(this);
 | 
			
		||||
@ -65675,6 +65750,9 @@ function onceStrict (fn) {
 | 
			
		||||
/***/ 89379:
 | 
			
		||||
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 | 
			
		||||
 | 
			
		||||
"use strict";
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const ANY = Symbol('SemVer ANY')
 | 
			
		||||
// hoisted class for cyclic dependency
 | 
			
		||||
class Comparator {
 | 
			
		||||
@ -65823,6 +65901,9 @@ const Range = __nccwpck_require__(96782)
 | 
			
		||||
/***/ 96782:
 | 
			
		||||
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 | 
			
		||||
 | 
			
		||||
"use strict";
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const SPACE_CHARACTERS = /\s+/g
 | 
			
		||||
 | 
			
		||||
// hoisted class for cyclic dependency
 | 
			
		||||
@ -66384,6 +66465,9 @@ const testSet = (set, version, options) => {
 | 
			
		||||
/***/ 7163:
 | 
			
		||||
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 | 
			
		||||
 | 
			
		||||
"use strict";
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const debug = __nccwpck_require__(1159)
 | 
			
		||||
const { MAX_LENGTH, MAX_SAFE_INTEGER } = __nccwpck_require__(45101)
 | 
			
		||||
const { safeRe: re, t } = __nccwpck_require__(95471)
 | 
			
		||||
@ -66562,6 +66646,19 @@ class SemVer {
 | 
			
		||||
  // preminor will bump the version up to the next minor release, and immediately
 | 
			
		||||
  // down to pre-release. premajor and prepatch work the same way.
 | 
			
		||||
  inc (release, identifier, identifierBase) {
 | 
			
		||||
    if (release.startsWith('pre')) {
 | 
			
		||||
      if (!identifier && identifierBase === false) {
 | 
			
		||||
        throw new Error('invalid increment argument: identifier is empty')
 | 
			
		||||
      }
 | 
			
		||||
      // Avoid an invalid semver results
 | 
			
		||||
      if (identifier) {
 | 
			
		||||
        const match = `-${identifier}`.match(this.options.loose ? re[t.PRERELEASELOOSE] : re[t.PRERELEASE])
 | 
			
		||||
        if (!match || match[1] !== identifier) {
 | 
			
		||||
          throw new Error(`invalid identifier: ${identifier}`)
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    switch (release) {
 | 
			
		||||
      case 'premajor':
 | 
			
		||||
        this.prerelease.length = 0
 | 
			
		||||
@ -66592,6 +66689,12 @@ class SemVer {
 | 
			
		||||
        }
 | 
			
		||||
        this.inc('pre', identifier, identifierBase)
 | 
			
		||||
        break
 | 
			
		||||
      case 'release':
 | 
			
		||||
        if (this.prerelease.length === 0) {
 | 
			
		||||
          throw new Error(`version ${this.raw} is not a prerelease`)
 | 
			
		||||
        }
 | 
			
		||||
        this.prerelease.length = 0
 | 
			
		||||
        break
 | 
			
		||||
 | 
			
		||||
      case 'major':
 | 
			
		||||
        // If this is a pre-major version, bump up to the same major version.
 | 
			
		||||
@ -66635,10 +66738,6 @@ class SemVer {
 | 
			
		||||
      case 'pre': {
 | 
			
		||||
        const base = Number(identifierBase) ? 1 : 0
 | 
			
		||||
 | 
			
		||||
        if (!identifier && identifierBase === false) {
 | 
			
		||||
          throw new Error('invalid increment argument: identifier is empty')
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (this.prerelease.length === 0) {
 | 
			
		||||
          this.prerelease = [base]
 | 
			
		||||
        } else {
 | 
			
		||||
@ -66693,6 +66792,9 @@ module.exports = SemVer
 | 
			
		||||
/***/ 1799:
 | 
			
		||||
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 | 
			
		||||
 | 
			
		||||
"use strict";
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const parse = __nccwpck_require__(16353)
 | 
			
		||||
const clean = (version, options) => {
 | 
			
		||||
  const s = parse(version.trim().replace(/^[=v]+/, ''), options)
 | 
			
		||||
@ -66706,6 +66808,9 @@ module.exports = clean
 | 
			
		||||
/***/ 28646:
 | 
			
		||||
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 | 
			
		||||
 | 
			
		||||
"use strict";
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const eq = __nccwpck_require__(55082)
 | 
			
		||||
const neq = __nccwpck_require__(4974)
 | 
			
		||||
const gt = __nccwpck_require__(16599)
 | 
			
		||||
@ -66765,6 +66870,9 @@ module.exports = cmp
 | 
			
		||||
/***/ 35385:
 | 
			
		||||
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 | 
			
		||||
 | 
			
		||||
"use strict";
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const SemVer = __nccwpck_require__(7163)
 | 
			
		||||
const parse = __nccwpck_require__(16353)
 | 
			
		||||
const { safeRe: re, t } = __nccwpck_require__(95471)
 | 
			
		||||
@ -66832,6 +66940,9 @@ module.exports = coerce
 | 
			
		||||
/***/ 37648:
 | 
			
		||||
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 | 
			
		||||
 | 
			
		||||
"use strict";
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const SemVer = __nccwpck_require__(7163)
 | 
			
		||||
const compareBuild = (a, b, loose) => {
 | 
			
		||||
  const versionA = new SemVer(a, loose)
 | 
			
		||||
@ -66846,6 +66957,9 @@ module.exports = compareBuild
 | 
			
		||||
/***/ 56874:
 | 
			
		||||
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 | 
			
		||||
 | 
			
		||||
"use strict";
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const compare = __nccwpck_require__(78469)
 | 
			
		||||
const compareLoose = (a, b) => compare(a, b, true)
 | 
			
		||||
module.exports = compareLoose
 | 
			
		||||
@ -66856,6 +66970,9 @@ module.exports = compareLoose
 | 
			
		||||
/***/ 78469:
 | 
			
		||||
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 | 
			
		||||
 | 
			
		||||
"use strict";
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const SemVer = __nccwpck_require__(7163)
 | 
			
		||||
const compare = (a, b, loose) =>
 | 
			
		||||
  new SemVer(a, loose).compare(new SemVer(b, loose))
 | 
			
		||||
@ -66868,6 +66985,9 @@ module.exports = compare
 | 
			
		||||
/***/ 70711:
 | 
			
		||||
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 | 
			
		||||
 | 
			
		||||
"use strict";
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const parse = __nccwpck_require__(16353)
 | 
			
		||||
 | 
			
		||||
const diff = (version1, version2) => {
 | 
			
		||||
@ -66897,20 +67017,13 @@ const diff = (version1, version2) => {
 | 
			
		||||
      return 'major'
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Otherwise it can be determined by checking the high version
 | 
			
		||||
 | 
			
		||||
    if (highVersion.patch) {
 | 
			
		||||
      // anything higher than a patch bump would result in the wrong version
 | 
			
		||||
      return 'patch'
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (highVersion.minor) {
 | 
			
		||||
      // anything higher than a minor bump would result in the wrong version
 | 
			
		||||
    // If the main part has no difference
 | 
			
		||||
    if (lowVersion.compareMain(highVersion) === 0) {
 | 
			
		||||
      if (lowVersion.minor && !lowVersion.patch) {
 | 
			
		||||
        return 'minor'
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
    // bumping major/minor/patch all have same result
 | 
			
		||||
    return 'major'
 | 
			
		||||
      return 'patch'
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // add the `pre` prefix if we are going to a prerelease version
 | 
			
		||||
@ -66940,6 +67053,9 @@ module.exports = diff
 | 
			
		||||
/***/ 55082:
 | 
			
		||||
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 | 
			
		||||
 | 
			
		||||
"use strict";
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const compare = __nccwpck_require__(78469)
 | 
			
		||||
const eq = (a, b, loose) => compare(a, b, loose) === 0
 | 
			
		||||
module.exports = eq
 | 
			
		||||
@ -66950,6 +67066,9 @@ module.exports = eq
 | 
			
		||||
/***/ 16599:
 | 
			
		||||
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 | 
			
		||||
 | 
			
		||||
"use strict";
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const compare = __nccwpck_require__(78469)
 | 
			
		||||
const gt = (a, b, loose) => compare(a, b, loose) > 0
 | 
			
		||||
module.exports = gt
 | 
			
		||||
@ -66960,6 +67079,9 @@ module.exports = gt
 | 
			
		||||
/***/ 41236:
 | 
			
		||||
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 | 
			
		||||
 | 
			
		||||
"use strict";
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const compare = __nccwpck_require__(78469)
 | 
			
		||||
const gte = (a, b, loose) => compare(a, b, loose) >= 0
 | 
			
		||||
module.exports = gte
 | 
			
		||||
@ -66970,6 +67092,9 @@ module.exports = gte
 | 
			
		||||
/***/ 62338:
 | 
			
		||||
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 | 
			
		||||
 | 
			
		||||
"use strict";
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const SemVer = __nccwpck_require__(7163)
 | 
			
		||||
 | 
			
		||||
const inc = (version, release, options, identifier, identifierBase) => {
 | 
			
		||||
@ -66996,6 +67121,9 @@ module.exports = inc
 | 
			
		||||
/***/ 3872:
 | 
			
		||||
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 | 
			
		||||
 | 
			
		||||
"use strict";
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const compare = __nccwpck_require__(78469)
 | 
			
		||||
const lt = (a, b, loose) => compare(a, b, loose) < 0
 | 
			
		||||
module.exports = lt
 | 
			
		||||
@ -67006,6 +67134,9 @@ module.exports = lt
 | 
			
		||||
/***/ 56717:
 | 
			
		||||
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 | 
			
		||||
 | 
			
		||||
"use strict";
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const compare = __nccwpck_require__(78469)
 | 
			
		||||
const lte = (a, b, loose) => compare(a, b, loose) <= 0
 | 
			
		||||
module.exports = lte
 | 
			
		||||
@ -67016,6 +67147,9 @@ module.exports = lte
 | 
			
		||||
/***/ 68511:
 | 
			
		||||
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 | 
			
		||||
 | 
			
		||||
"use strict";
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const SemVer = __nccwpck_require__(7163)
 | 
			
		||||
const major = (a, loose) => new SemVer(a, loose).major
 | 
			
		||||
module.exports = major
 | 
			
		||||
@ -67026,6 +67160,9 @@ module.exports = major
 | 
			
		||||
/***/ 32603:
 | 
			
		||||
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 | 
			
		||||
 | 
			
		||||
"use strict";
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const SemVer = __nccwpck_require__(7163)
 | 
			
		||||
const minor = (a, loose) => new SemVer(a, loose).minor
 | 
			
		||||
module.exports = minor
 | 
			
		||||
@ -67036,6 +67173,9 @@ module.exports = minor
 | 
			
		||||
/***/ 4974:
 | 
			
		||||
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 | 
			
		||||
 | 
			
		||||
"use strict";
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const compare = __nccwpck_require__(78469)
 | 
			
		||||
const neq = (a, b, loose) => compare(a, b, loose) !== 0
 | 
			
		||||
module.exports = neq
 | 
			
		||||
@ -67046,6 +67186,9 @@ module.exports = neq
 | 
			
		||||
/***/ 16353:
 | 
			
		||||
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 | 
			
		||||
 | 
			
		||||
"use strict";
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const SemVer = __nccwpck_require__(7163)
 | 
			
		||||
const parse = (version, options, throwErrors = false) => {
 | 
			
		||||
  if (version instanceof SemVer) {
 | 
			
		||||
@ -67069,6 +67212,9 @@ module.exports = parse
 | 
			
		||||
/***/ 48756:
 | 
			
		||||
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 | 
			
		||||
 | 
			
		||||
"use strict";
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const SemVer = __nccwpck_require__(7163)
 | 
			
		||||
const patch = (a, loose) => new SemVer(a, loose).patch
 | 
			
		||||
module.exports = patch
 | 
			
		||||
@ -67079,6 +67225,9 @@ module.exports = patch
 | 
			
		||||
/***/ 15714:
 | 
			
		||||
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 | 
			
		||||
 | 
			
		||||
"use strict";
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const parse = __nccwpck_require__(16353)
 | 
			
		||||
const prerelease = (version, options) => {
 | 
			
		||||
  const parsed = parse(version, options)
 | 
			
		||||
@ -67092,6 +67241,9 @@ module.exports = prerelease
 | 
			
		||||
/***/ 32173:
 | 
			
		||||
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 | 
			
		||||
 | 
			
		||||
"use strict";
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const compare = __nccwpck_require__(78469)
 | 
			
		||||
const rcompare = (a, b, loose) => compare(b, a, loose)
 | 
			
		||||
module.exports = rcompare
 | 
			
		||||
@ -67102,6 +67254,9 @@ module.exports = rcompare
 | 
			
		||||
/***/ 87192:
 | 
			
		||||
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 | 
			
		||||
 | 
			
		||||
"use strict";
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const compareBuild = __nccwpck_require__(37648)
 | 
			
		||||
const rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose))
 | 
			
		||||
module.exports = rsort
 | 
			
		||||
@ -67112,6 +67267,9 @@ module.exports = rsort
 | 
			
		||||
/***/ 68011:
 | 
			
		||||
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 | 
			
		||||
 | 
			
		||||
"use strict";
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const Range = __nccwpck_require__(96782)
 | 
			
		||||
const satisfies = (version, range, options) => {
 | 
			
		||||
  try {
 | 
			
		||||
@ -67129,6 +67287,9 @@ module.exports = satisfies
 | 
			
		||||
/***/ 29872:
 | 
			
		||||
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 | 
			
		||||
 | 
			
		||||
"use strict";
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const compareBuild = __nccwpck_require__(37648)
 | 
			
		||||
const sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))
 | 
			
		||||
module.exports = sort
 | 
			
		||||
@ -67139,6 +67300,9 @@ module.exports = sort
 | 
			
		||||
/***/ 58780:
 | 
			
		||||
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 | 
			
		||||
 | 
			
		||||
"use strict";
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const parse = __nccwpck_require__(16353)
 | 
			
		||||
const valid = (version, options) => {
 | 
			
		||||
  const v = parse(version, options)
 | 
			
		||||
@ -67152,6 +67316,9 @@ module.exports = valid
 | 
			
		||||
/***/ 62088:
 | 
			
		||||
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 | 
			
		||||
 | 
			
		||||
"use strict";
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// just pre-load all the stuff that index.js lazily exports
 | 
			
		||||
const internalRe = __nccwpck_require__(95471)
 | 
			
		||||
const constants = __nccwpck_require__(45101)
 | 
			
		||||
@ -67248,6 +67415,9 @@ module.exports = {
 | 
			
		||||
/***/ 45101:
 | 
			
		||||
/***/ ((module) => {
 | 
			
		||||
 | 
			
		||||
"use strict";
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// Note: this is the semver.org version of the spec that it implements
 | 
			
		||||
// Not necessarily the package version of this code.
 | 
			
		||||
const SEMVER_SPEC_VERSION = '2.0.0'
 | 
			
		||||
@ -67290,6 +67460,9 @@ module.exports = {
 | 
			
		||||
/***/ 1159:
 | 
			
		||||
/***/ ((module) => {
 | 
			
		||||
 | 
			
		||||
"use strict";
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const debug = (
 | 
			
		||||
  typeof process === 'object' &&
 | 
			
		||||
  process.env &&
 | 
			
		||||
@ -67306,6 +67479,9 @@ module.exports = debug
 | 
			
		||||
/***/ 73348:
 | 
			
		||||
/***/ ((module) => {
 | 
			
		||||
 | 
			
		||||
"use strict";
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const numeric = /^[0-9]+$/
 | 
			
		||||
const compareIdentifiers = (a, b) => {
 | 
			
		||||
  const anum = numeric.test(a)
 | 
			
		||||
@ -67336,6 +67512,9 @@ module.exports = {
 | 
			
		||||
/***/ 61383:
 | 
			
		||||
/***/ ((module) => {
 | 
			
		||||
 | 
			
		||||
"use strict";
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class LRUCache {
 | 
			
		||||
  constructor () {
 | 
			
		||||
    this.max = 1000
 | 
			
		||||
@ -67383,6 +67562,9 @@ module.exports = LRUCache
 | 
			
		||||
/***/ 70356:
 | 
			
		||||
/***/ ((module) => {
 | 
			
		||||
 | 
			
		||||
"use strict";
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// parse out just the options we care about
 | 
			
		||||
const looseOption = Object.freeze({ loose: true })
 | 
			
		||||
const emptyOpts = Object.freeze({ })
 | 
			
		||||
@ -67405,6 +67587,9 @@ module.exports = parseOptions
 | 
			
		||||
/***/ 95471:
 | 
			
		||||
/***/ ((module, exports, __nccwpck_require__) => {
 | 
			
		||||
 | 
			
		||||
"use strict";
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const {
 | 
			
		||||
  MAX_SAFE_COMPONENT_LENGTH,
 | 
			
		||||
  MAX_SAFE_BUILD_LENGTH,
 | 
			
		||||
@ -67417,6 +67602,7 @@ exports = module.exports = {}
 | 
			
		||||
const re = exports.re = []
 | 
			
		||||
const safeRe = exports.safeRe = []
 | 
			
		||||
const src = exports.src = []
 | 
			
		||||
const safeSrc = exports.safeSrc = []
 | 
			
		||||
const t = exports.t = {}
 | 
			
		||||
let R = 0
 | 
			
		||||
 | 
			
		||||
@ -67449,6 +67635,7 @@ const createToken = (name, value, isGlobal) => {
 | 
			
		||||
  debug(name, index, value)
 | 
			
		||||
  t[name] = index
 | 
			
		||||
  src[index] = value
 | 
			
		||||
  safeSrc[index] = safe
 | 
			
		||||
  re[index] = new RegExp(value, isGlobal ? 'g' : undefined)
 | 
			
		||||
  safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined)
 | 
			
		||||
}
 | 
			
		||||
@ -67481,12 +67668,14 @@ createToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.` +
 | 
			
		||||
 | 
			
		||||
// ## Pre-release Version Identifier
 | 
			
		||||
// A numeric identifier, or a non-numeric identifier.
 | 
			
		||||
// Non-numberic identifiers include numberic identifiers but can be longer.
 | 
			
		||||
// Therefore non-numberic identifiers must go first.
 | 
			
		||||
 | 
			
		||||
createToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER]
 | 
			
		||||
}|${src[t.NONNUMERICIDENTIFIER]})`)
 | 
			
		||||
createToken('PRERELEASEIDENTIFIER', `(?:${src[t.NONNUMERICIDENTIFIER]
 | 
			
		||||
}|${src[t.NUMERICIDENTIFIER]})`)
 | 
			
		||||
 | 
			
		||||
createToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE]
 | 
			
		||||
}|${src[t.NONNUMERICIDENTIFIER]})`)
 | 
			
		||||
createToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NONNUMERICIDENTIFIER]
 | 
			
		||||
}|${src[t.NUMERICIDENTIFIERLOOSE]})`)
 | 
			
		||||
 | 
			
		||||
// ## Pre-release Version
 | 
			
		||||
// Hyphen, followed by one or more dot-separated pre-release version
 | 
			
		||||
@ -67629,6 +67818,9 @@ createToken('GTE0PRE', '^\\s*>=\\s*0\\.0\\.0-0\\s*$')
 | 
			
		||||
/***/ 12276:
 | 
			
		||||
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 | 
			
		||||
 | 
			
		||||
"use strict";
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// Determine if version is greater than all the versions possible in the range.
 | 
			
		||||
const outside = __nccwpck_require__(10280)
 | 
			
		||||
const gtr = (version, range, options) => outside(version, range, '>', options)
 | 
			
		||||
@ -67640,6 +67832,9 @@ module.exports = gtr
 | 
			
		||||
/***/ 23465:
 | 
			
		||||
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 | 
			
		||||
 | 
			
		||||
"use strict";
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const Range = __nccwpck_require__(96782)
 | 
			
		||||
const intersects = (r1, r2, options) => {
 | 
			
		||||
  r1 = new Range(r1, options)
 | 
			
		||||
@ -67654,6 +67849,9 @@ module.exports = intersects
 | 
			
		||||
/***/ 15213:
 | 
			
		||||
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 | 
			
		||||
 | 
			
		||||
"use strict";
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const outside = __nccwpck_require__(10280)
 | 
			
		||||
// Determine if version is less than all the versions possible in the range
 | 
			
		||||
const ltr = (version, range, options) => outside(version, range, '<', options)
 | 
			
		||||
@ -67665,6 +67863,9 @@ module.exports = ltr
 | 
			
		||||
/***/ 73193:
 | 
			
		||||
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 | 
			
		||||
 | 
			
		||||
"use strict";
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const SemVer = __nccwpck_require__(7163)
 | 
			
		||||
const Range = __nccwpck_require__(96782)
 | 
			
		||||
 | 
			
		||||
@ -67697,6 +67898,9 @@ module.exports = maxSatisfying
 | 
			
		||||
/***/ 68595:
 | 
			
		||||
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 | 
			
		||||
 | 
			
		||||
"use strict";
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const SemVer = __nccwpck_require__(7163)
 | 
			
		||||
const Range = __nccwpck_require__(96782)
 | 
			
		||||
const minSatisfying = (versions, range, options) => {
 | 
			
		||||
@ -67728,6 +67932,9 @@ module.exports = minSatisfying
 | 
			
		||||
/***/ 51866:
 | 
			
		||||
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 | 
			
		||||
 | 
			
		||||
"use strict";
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const SemVer = __nccwpck_require__(7163)
 | 
			
		||||
const Range = __nccwpck_require__(96782)
 | 
			
		||||
const gt = __nccwpck_require__(16599)
 | 
			
		||||
@ -67796,6 +68003,9 @@ module.exports = minVersion
 | 
			
		||||
/***/ 10280:
 | 
			
		||||
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 | 
			
		||||
 | 
			
		||||
"use strict";
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const SemVer = __nccwpck_require__(7163)
 | 
			
		||||
const Comparator = __nccwpck_require__(89379)
 | 
			
		||||
const { ANY } = Comparator
 | 
			
		||||
@ -67883,6 +68093,9 @@ module.exports = outside
 | 
			
		||||
/***/ 82028:
 | 
			
		||||
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 | 
			
		||||
 | 
			
		||||
"use strict";
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// given a set of versions and a range, create a "simplified" range
 | 
			
		||||
// that includes the same versions that the original range does
 | 
			
		||||
// If the original range is shorter than the simplified one, return that.
 | 
			
		||||
@ -67937,6 +68150,9 @@ module.exports = (versions, range, options) => {
 | 
			
		||||
/***/ 61489:
 | 
			
		||||
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 | 
			
		||||
 | 
			
		||||
"use strict";
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const Range = __nccwpck_require__(96782)
 | 
			
		||||
const Comparator = __nccwpck_require__(89379)
 | 
			
		||||
const { ANY } = Comparator
 | 
			
		||||
@ -68191,6 +68407,9 @@ module.exports = subset
 | 
			
		||||
/***/ 54750:
 | 
			
		||||
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 | 
			
		||||
 | 
			
		||||
"use strict";
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const Range = __nccwpck_require__(96782)
 | 
			
		||||
 | 
			
		||||
// Mostly just for testing and legacy API reasons
 | 
			
		||||
@ -68206,6 +68425,9 @@ module.exports = toComparators
 | 
			
		||||
/***/ 64737:
 | 
			
		||||
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 | 
			
		||||
 | 
			
		||||
"use strict";
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const Range = __nccwpck_require__(96782)
 | 
			
		||||
const validRange = (range, options) => {
 | 
			
		||||
  try {
 | 
			
		||||
@ -99639,16 +99861,24 @@ function run() {
 | 
			
		||||
            if (registryUrl) {
 | 
			
		||||
                auth.configAuthentication(registryUrl, alwaysAuth);
 | 
			
		||||
            }
 | 
			
		||||
            const resolvedPackageManager = getNameFromPackageManagerField();
 | 
			
		||||
            const cacheDependencyPath = core.getInput('cache-dependency-path');
 | 
			
		||||
            if (cache && (0, cache_utils_1.isCacheFeatureAvailable)()) {
 | 
			
		||||
            if ((0, cache_utils_1.isCacheFeatureAvailable)()) {
 | 
			
		||||
                // if the cache input is provided, use it for caching.
 | 
			
		||||
                if (cache) {
 | 
			
		||||
                    core.saveState(constants_1.State.CachePackageManager, cache);
 | 
			
		||||
                    yield (0, cache_restore_1.restoreCache)(cache, cacheDependencyPath);
 | 
			
		||||
                    // package manager npm is detected from package.json, enable auto-caching for npm.
 | 
			
		||||
                }
 | 
			
		||||
            else if (resolvedPackageManager && packagemanagercache) {
 | 
			
		||||
                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(constants_1.State.CachePackageManager, resolvedPackageManager);
 | 
			
		||||
                        yield (0, cache_restore_1.restoreCache)(resolvedPackageManager, cacheDependencyPath);
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            const matchersPath = path.join(__dirname, '../..', '.github');
 | 
			
		||||
            core.info(`##[add-matcher]${path.join(matchersPath, 'tsc.json')}`);
 | 
			
		||||
            core.info(`##[add-matcher]${path.join(matchersPath, 'eslint-stylish.json')}`);
 | 
			
		||||
@ -99683,19 +99913,26 @@ function resolveVersionInput() {
 | 
			
		||||
    return version;
 | 
			
		||||
}
 | 
			
		||||
function getNameFromPackageManagerField() {
 | 
			
		||||
    // Check packageManager field in package.json
 | 
			
		||||
    const SUPPORTED_PACKAGE_MANAGERS = ['npm', 'yarn', 'pnpm'];
 | 
			
		||||
    var _a;
 | 
			
		||||
    const npmRegex = /^(\^)?npm(@.*)?$/; // matches "npm", "npm@...", "^npm@..."
 | 
			
		||||
    try {
 | 
			
		||||
        const packageJson = JSON.parse(fs_1.default.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;
 | 
			
		||||
        // Check devEngines.packageManager first (object or array)
 | 
			
		||||
        const devPM = (_a = packageJson === null || packageJson === void 0 ? void 0 : packageJson.devEngines) === null || _a === void 0 ? void 0 : _a.packageManager;
 | 
			
		||||
        const devPMArray = devPM ? (Array.isArray(devPM) ? devPM : [devPM]) : [];
 | 
			
		||||
        for (const obj of devPMArray) {
 | 
			
		||||
            if (typeof (obj === null || obj === void 0 ? void 0 : obj.name) === 'string' && npmRegex.test(obj.name)) {
 | 
			
		||||
                return 'npm';
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        // Check top-level packageManager
 | 
			
		||||
        const topLevelPM = packageJson === null || packageJson === void 0 ? void 0 : packageJson.packageManager;
 | 
			
		||||
        if (typeof topLevelPM === 'string' && npmRegex.test(topLevelPM)) {
 | 
			
		||||
            return 'npm';
 | 
			
		||||
        }
 | 
			
		||||
        return undefined;
 | 
			
		||||
    }
 | 
			
		||||
    catch (err) {
 | 
			
		||||
    catch (_b) {
 | 
			
		||||
        return undefined;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -102357,7 +102594,7 @@ exports["default"] = version;
 | 
			
		||||
/***/ ((module) => {
 | 
			
		||||
 | 
			
		||||
"use strict";
 | 
			
		||||
module.exports = /*#__PURE__*/JSON.parse('{"name":"@actions/cache","version":"4.0.3","preview":true,"description":"Actions cache lib","keywords":["github","actions","cache"],"homepage":"https://github.com/actions/toolkit/tree/main/packages/cache","license":"MIT","main":"lib/cache.js","types":"lib/cache.d.ts","directories":{"lib":"lib","test":"__tests__"},"files":["lib","!.DS_Store"],"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/actions/toolkit.git","directory":"packages/cache"},"scripts":{"audit-moderate":"npm install && npm audit --json --audit-level=moderate > audit.json","test":"echo \\"Error: run tests from root\\" && exit 1","tsc":"tsc"},"bugs":{"url":"https://github.com/actions/toolkit/issues"},"dependencies":{"@actions/core":"^1.11.1","@actions/exec":"^1.0.1","@actions/glob":"^0.1.0","@actions/http-client":"^2.1.1","@actions/io":"^1.0.1","@azure/abort-controller":"^1.1.0","@azure/ms-rest-js":"^2.6.0","@azure/storage-blob":"^12.13.0","@protobuf-ts/plugin":"^2.9.4","semver":"^6.3.1"},"devDependencies":{"@types/node":"^22.13.9","@types/semver":"^6.0.0","typescript":"^5.2.2"}}');
 | 
			
		||||
module.exports = /*#__PURE__*/JSON.parse('{"name":"@actions/cache","version":"4.1.0","preview":true,"description":"Actions cache lib","keywords":["github","actions","cache"],"homepage":"https://github.com/actions/toolkit/tree/main/packages/cache","license":"MIT","main":"lib/cache.js","types":"lib/cache.d.ts","directories":{"lib":"lib","test":"__tests__"},"files":["lib","!.DS_Store"],"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/actions/toolkit.git","directory":"packages/cache"},"scripts":{"audit-moderate":"npm install && npm audit --json --audit-level=moderate > audit.json","test":"echo \\"Error: run tests from root\\" && exit 1","tsc":"tsc"},"bugs":{"url":"https://github.com/actions/toolkit/issues"},"dependencies":{"@actions/core":"^1.11.1","@actions/exec":"^1.0.1","@actions/glob":"^0.1.0","@protobuf-ts/runtime-rpc":"^2.11.1","@actions/http-client":"^2.1.1","@actions/io":"^1.0.1","@azure/abort-controller":"^1.1.0","@azure/ms-rest-js":"^2.6.0","@azure/storage-blob":"^12.13.0","semver":"^6.3.1"},"devDependencies":{"@types/node":"^22.13.9","@types/semver":"^6.0.0","@protobuf-ts/plugin":"^2.9.4","typescript":"^5.2.2"}}');
 | 
			
		||||
 | 
			
		||||
/***/ }),
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -46,9 +46,9 @@ If `check-latest` is set to `true`, the action first checks if the cached versio
 | 
			
		||||
```yaml
 | 
			
		||||
steps:
 | 
			
		||||
- uses: actions/checkout@v5
 | 
			
		||||
- uses: actions/setup-node@v5
 | 
			
		||||
- uses: actions/setup-node@v6
 | 
			
		||||
  with:
 | 
			
		||||
    node-version: '16'
 | 
			
		||||
    node-version: '24'
 | 
			
		||||
    check-latest: true
 | 
			
		||||
- run: npm ci
 | 
			
		||||
- run: npm test
 | 
			
		||||
@ -64,7 +64,7 @@ See [supported version syntax](https://github.com/actions/setup-node#supported-v
 | 
			
		||||
```yaml
 | 
			
		||||
steps:
 | 
			
		||||
- uses: actions/checkout@v5
 | 
			
		||||
- uses: actions/setup-node@v5
 | 
			
		||||
- uses: actions/setup-node@v6
 | 
			
		||||
  with:
 | 
			
		||||
    node-version-file: '.nvmrc'
 | 
			
		||||
- run: npm ci
 | 
			
		||||
@ -98,9 +98,9 @@ jobs:
 | 
			
		||||
    name: Node sample
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v5
 | 
			
		||||
      - uses: actions/setup-node@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
 | 
			
		||||
@ -119,9 +119,9 @@ jobs:
 | 
			
		||||
    name: Node sample
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v5
 | 
			
		||||
      - uses: actions/setup-node@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
 | 
			
		||||
```
 | 
			
		||||
@ -134,9 +134,9 @@ jobs:
 | 
			
		||||
    name: Node sample
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v5
 | 
			
		||||
      - uses: actions/setup-node@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
 | 
			
		||||
```
 | 
			
		||||
@ -150,9 +150,9 @@ jobs:
 | 
			
		||||
    name: Node sample
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v5
 | 
			
		||||
      - uses: actions/setup-node@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
 | 
			
		||||
```
 | 
			
		||||
@ -170,9 +170,9 @@ jobs:
 | 
			
		||||
    name: Node sample
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v5
 | 
			
		||||
      - uses: actions/setup-node@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
 | 
			
		||||
```
 | 
			
		||||
@ -186,9 +186,9 @@ jobs:
 | 
			
		||||
    name: Node sample
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v5
 | 
			
		||||
      - uses: actions/setup-node@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
 | 
			
		||||
```
 | 
			
		||||
@ -202,9 +202,9 @@ jobs:
 | 
			
		||||
    name: Node sample
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v5
 | 
			
		||||
      - uses: actions/setup-node@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
 | 
			
		||||
```
 | 
			
		||||
@ -220,26 +220,27 @@ jobs:
 | 
			
		||||
    name: Node sample
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v5
 | 
			
		||||
      - uses: actions/setup-node@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@v5
 | 
			
		||||
- uses: actions/setup-node@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
 | 
			
		||||
@ -256,12 +257,12 @@ steps:
 | 
			
		||||
 | 
			
		||||
steps:
 | 
			
		||||
- uses: actions/checkout@v5
 | 
			
		||||
- uses: pnpm/action-setup@v2
 | 
			
		||||
- uses: pnpm/action-setup@v4
 | 
			
		||||
  with:
 | 
			
		||||
    version: 6.32.9
 | 
			
		||||
- uses: actions/setup-node@v5
 | 
			
		||||
    version: 10
 | 
			
		||||
- uses: actions/setup-node@v6
 | 
			
		||||
  with:
 | 
			
		||||
    node-version: '14'
 | 
			
		||||
    node-version: '24'
 | 
			
		||||
    cache: 'pnpm'
 | 
			
		||||
- run: pnpm install
 | 
			
		||||
- run: pnpm test
 | 
			
		||||
@ -275,9 +276,9 @@ steps:
 | 
			
		||||
```yaml
 | 
			
		||||
steps:
 | 
			
		||||
- uses: actions/checkout@v5
 | 
			
		||||
- uses: actions/setup-node@v5
 | 
			
		||||
- uses: actions/setup-node@v6
 | 
			
		||||
  with:
 | 
			
		||||
    node-version: '14'
 | 
			
		||||
    node-version: '24'
 | 
			
		||||
    cache: 'npm'
 | 
			
		||||
    cache-dependency-path: '**/package-lock.json'
 | 
			
		||||
- run: npm ci
 | 
			
		||||
@ -288,9 +289,9 @@ steps:
 | 
			
		||||
```yaml
 | 
			
		||||
steps:
 | 
			
		||||
- uses: actions/checkout@v5
 | 
			
		||||
- uses: actions/setup-node@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@v5
 | 
			
		||||
      - name: Setup node
 | 
			
		||||
        uses: actions/setup-node@v5
 | 
			
		||||
        uses: actions/setup-node@v6
 | 
			
		||||
        with:
 | 
			
		||||
          node-version: ${{ matrix.node_version }}
 | 
			
		||||
          architecture: ${{ matrix.architecture }}
 | 
			
		||||
@ -338,15 +339,15 @@ jobs:
 | 
			
		||||
```yaml
 | 
			
		||||
steps:
 | 
			
		||||
- uses: actions/checkout@v5
 | 
			
		||||
- uses: actions/setup-node@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@v5
 | 
			
		||||
- uses: actions/setup-node@v6
 | 
			
		||||
  with:
 | 
			
		||||
    registry-url: 'https://npm.pkg.github.com'
 | 
			
		||||
- run: npm publish
 | 
			
		||||
@ -358,15 +359,15 @@ steps:
 | 
			
		||||
```yaml
 | 
			
		||||
steps:
 | 
			
		||||
- uses: actions/checkout@v5
 | 
			
		||||
- uses: actions/setup-node@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@v5
 | 
			
		||||
- uses: actions/setup-node@v6
 | 
			
		||||
  with:
 | 
			
		||||
    registry-url: 'https://npm.pkg.github.com'
 | 
			
		||||
- run: yarn publish
 | 
			
		||||
@ -378,9 +379,9 @@ steps:
 | 
			
		||||
```yaml
 | 
			
		||||
steps:
 | 
			
		||||
- uses: actions/checkout@v5
 | 
			
		||||
- uses: actions/setup-node@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.
 | 
			
		||||
@ -398,9 +399,9 @@ Below you can find a sample "Setup .yarnrc.yml" step, that is going to allow you
 | 
			
		||||
```yaml
 | 
			
		||||
steps:
 | 
			
		||||
- uses: actions/checkout@v5
 | 
			
		||||
- uses: actions/setup-node@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@v5
 | 
			
		||||
- uses: actions/setup-node@v6
 | 
			
		||||
  with:
 | 
			
		||||
    node-version: '14.x'
 | 
			
		||||
    node-version: '24.x'
 | 
			
		||||
    mirror: 'https://nodejs.org/dist'
 | 
			
		||||
    mirror-token: 'your-mirror-token'
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										222
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										222
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							@ -1,15 +1,15 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "setup-node",
 | 
			
		||||
  "version": "5.0.0",
 | 
			
		||||
  "version": "6.0.0",
 | 
			
		||||
  "lockfileVersion": 3,
 | 
			
		||||
  "requires": true,
 | 
			
		||||
  "packages": {
 | 
			
		||||
    "": {
 | 
			
		||||
      "name": "setup-node",
 | 
			
		||||
      "version": "5.0.0",
 | 
			
		||||
      "version": "6.0.0",
 | 
			
		||||
      "license": "MIT",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "@actions/cache": "^4.0.3",
 | 
			
		||||
        "@actions/cache": "^4.1.0",
 | 
			
		||||
        "@actions/core": "^1.11.1",
 | 
			
		||||
        "@actions/exec": "^1.1.1",
 | 
			
		||||
        "@actions/github": "^6.0.1",
 | 
			
		||||
@ -34,8 +34,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"
 | 
			
		||||
      },
 | 
			
		||||
      "engines": {
 | 
			
		||||
@ -52,9 +52,9 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@actions/cache": {
 | 
			
		||||
      "version": "4.0.3",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@actions/cache/-/cache-4.0.3.tgz",
 | 
			
		||||
      "integrity": "sha512-SvrqFtYJ7I48A/uXNkoJrnukx5weQv1fGquhs3+4nkByZThBH109KTIqj5x/cGV7JGNvb8dLPVywUOqX1fjiXg==",
 | 
			
		||||
      "version": "4.1.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@actions/cache/-/cache-4.1.0.tgz",
 | 
			
		||||
      "integrity": "sha512-z3Opg+P4Y7baq+g1dODXgdtsvPLSewr3ZKpp3U0HQR1A/vWCoJFS52XSezjdngo4SIOdR5oHtyK3a3Arar+X9A==",
 | 
			
		||||
      "license": "MIT",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "@actions/core": "^1.11.1",
 | 
			
		||||
@ -65,7 +65,7 @@
 | 
			
		||||
        "@azure/abort-controller": "^1.1.0",
 | 
			
		||||
        "@azure/ms-rest-js": "^2.6.0",
 | 
			
		||||
        "@azure/storage-blob": "^12.13.0",
 | 
			
		||||
        "@protobuf-ts/plugin": "^2.9.4",
 | 
			
		||||
        "@protobuf-ts/runtime-rpc": "^2.11.1",
 | 
			
		||||
        "semver": "^6.3.1"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
@ -1590,81 +1590,19 @@
 | 
			
		||||
        "node": ">=8.0.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@protobuf-ts/plugin": {
 | 
			
		||||
      "version": "2.9.5",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@protobuf-ts/plugin/-/plugin-2.9.5.tgz",
 | 
			
		||||
      "integrity": "sha512-KCzNRTFye837XdfPjS85gGzxgPGVDR3W8Px2G3etXuouNog9W+Cr+U0IBTFADrRWXC2x+OSNjXxrdZEiw+H5Cw==",
 | 
			
		||||
      "license": "Apache-2.0",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "@protobuf-ts/plugin-framework": "^2.9.5",
 | 
			
		||||
        "@protobuf-ts/protoc": "^2.9.5",
 | 
			
		||||
        "@protobuf-ts/runtime": "^2.9.5",
 | 
			
		||||
        "@protobuf-ts/runtime-rpc": "^2.9.5",
 | 
			
		||||
        "typescript": "^3.9"
 | 
			
		||||
      },
 | 
			
		||||
      "bin": {
 | 
			
		||||
        "protoc-gen-dump": "bin/protoc-gen-dump",
 | 
			
		||||
        "protoc-gen-ts": "bin/protoc-gen-ts"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@protobuf-ts/plugin-framework": {
 | 
			
		||||
      "version": "2.9.5",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@protobuf-ts/plugin-framework/-/plugin-framework-2.9.5.tgz",
 | 
			
		||||
      "integrity": "sha512-DYNQ8Ga3xwPZMfaZGRCnDOcEdQZK9MorTXngVoFLnHWEE8zLhUjFVtdkChZtTih6rl8Z6akyA7hRgj/GrJF58Q==",
 | 
			
		||||
      "license": "(Apache-2.0 AND BSD-3-Clause)",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "@protobuf-ts/runtime": "^2.9.5",
 | 
			
		||||
        "typescript": "^3.9"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@protobuf-ts/plugin-framework/node_modules/typescript": {
 | 
			
		||||
      "version": "3.9.10",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz",
 | 
			
		||||
      "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==",
 | 
			
		||||
      "license": "Apache-2.0",
 | 
			
		||||
      "bin": {
 | 
			
		||||
        "tsc": "bin/tsc",
 | 
			
		||||
        "tsserver": "bin/tsserver"
 | 
			
		||||
      },
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">=4.2.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@protobuf-ts/plugin/node_modules/typescript": {
 | 
			
		||||
      "version": "3.9.10",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz",
 | 
			
		||||
      "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==",
 | 
			
		||||
      "license": "Apache-2.0",
 | 
			
		||||
      "bin": {
 | 
			
		||||
        "tsc": "bin/tsc",
 | 
			
		||||
        "tsserver": "bin/tsserver"
 | 
			
		||||
      },
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">=4.2.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@protobuf-ts/protoc": {
 | 
			
		||||
      "version": "2.9.5",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@protobuf-ts/protoc/-/protoc-2.9.5.tgz",
 | 
			
		||||
      "integrity": "sha512-n6a7OHfr/Ubw483L6kNJB0wBCe/Ops0A652zB6J6nR2x1o+pjVFrMCeeQQsqxkYpQwQ8FCIETSxrMpfOBKTIvQ==",
 | 
			
		||||
      "license": "Apache-2.0",
 | 
			
		||||
      "bin": {
 | 
			
		||||
        "protoc": "protoc.js"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@protobuf-ts/runtime": {
 | 
			
		||||
      "version": "2.9.5",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@protobuf-ts/runtime/-/runtime-2.9.5.tgz",
 | 
			
		||||
      "integrity": "sha512-SsumigRe3IqNTCQvVZUqDQExsKF72eyAMiWlYb5Jwj3eU4z8UH7JLlSfb/Wjidz4b/chTN6zh5AXBSKl0Asm3A==",
 | 
			
		||||
      "version": "2.11.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@protobuf-ts/runtime/-/runtime-2.11.1.tgz",
 | 
			
		||||
      "integrity": "sha512-KuDaT1IfHkugM2pyz+FwiY80ejWrkH1pAtOBOZFuR6SXEFTsnb/jiQWQ1rCIrcKx2BtyxnxW6BWwsVSA/Ie+WQ==",
 | 
			
		||||
      "license": "(Apache-2.0 AND BSD-3-Clause)"
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@protobuf-ts/runtime-rpc": {
 | 
			
		||||
      "version": "2.9.5",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@protobuf-ts/runtime-rpc/-/runtime-rpc-2.9.5.tgz",
 | 
			
		||||
      "integrity": "sha512-NWAb1TaV4CR+BknZr1WRVT5Ws2AupVwGgRNes4oPAFrgLNXQotDFl2E6pmsjPwME8sAgJVzeSr7bUqQVyoAK2A==",
 | 
			
		||||
      "version": "2.11.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@protobuf-ts/runtime-rpc/-/runtime-rpc-2.11.1.tgz",
 | 
			
		||||
      "integrity": "sha512-4CqqUmNA+/uMz00+d3CYKgElXO9VrEbucjnBFEjqI4GuDrEQ32MaI3q+9qPBvIGOlL4PmHXrzM32vBPWRhQKWQ==",
 | 
			
		||||
      "license": "Apache-2.0",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "@protobuf-ts/runtime": "^2.9.5"
 | 
			
		||||
        "@protobuf-ts/runtime": "^2.11.1"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@sinclair/typebox": {
 | 
			
		||||
@ -3504,6 +3442,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",
 | 
			
		||||
@ -4601,6 +4561,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",
 | 
			
		||||
@ -4619,6 +4589,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",
 | 
			
		||||
@ -4923,15 +4900,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"
 | 
			
		||||
@ -5185,9 +5163,9 @@
 | 
			
		||||
      "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"
 | 
			
		||||
@ -5421,37 +5399,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
 | 
			
		||||
        },
 | 
			
		||||
@ -5460,9 +5445,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",
 | 
			
		||||
@ -5543,6 +5544,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",
 | 
			
		||||
@ -5671,6 +5686,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",
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "setup-node",
 | 
			
		||||
  "version": "5.0.0",
 | 
			
		||||
  "version": "6.0.0",
 | 
			
		||||
  "private": true,
 | 
			
		||||
  "description": "setup node action",
 | 
			
		||||
  "main": "lib/setup-node.js",
 | 
			
		||||
@ -28,7 +28,7 @@
 | 
			
		||||
  "author": "GitHub",
 | 
			
		||||
  "license": "MIT",
 | 
			
		||||
  "dependencies": {
 | 
			
		||||
    "@actions/cache": "^4.0.3",
 | 
			
		||||
    "@actions/cache": "^4.1.0",
 | 
			
		||||
    "@actions/core": "^1.11.1",
 | 
			
		||||
    "@actions/exec": "^1.1.1",
 | 
			
		||||
    "@actions/github": "^6.0.1",
 | 
			
		||||
@ -53,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"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -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}"`
 | 
			
		||||
      );
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										44
									
								
								src/main.ts
									
									
									
									
									
								
							
							
						
						
									
										44
									
								
								src/main.ts
									
									
									
									
									
								
							@ -67,15 +67,26 @@ export async function run() {
 | 
			
		||||
      auth.configAuthentication(registryUrl, alwaysAuth);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const resolvedPackageManager = getNameFromPackageManagerField();
 | 
			
		||||
    const cacheDependencyPath = core.getInput('cache-dependency-path');
 | 
			
		||||
    if (cache && isCacheFeatureAvailable()) {
 | 
			
		||||
 | 
			
		||||
    if (isCacheFeatureAvailable()) {
 | 
			
		||||
      // if the cache input is provided, use it for caching.
 | 
			
		||||
      if (cache) {
 | 
			
		||||
        core.saveState(State.CachePackageManager, cache);
 | 
			
		||||
        await restoreCache(cache, cacheDependencyPath);
 | 
			
		||||
    } else if (resolvedPackageManager && packagemanagercache) {
 | 
			
		||||
        // 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');
 | 
			
		||||
    core.info(`##[add-matcher]${path.join(matchersPath, 'tsc.json')}`);
 | 
			
		||||
@ -127,8 +138,7 @@ function resolveVersionInput(): string {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function getNameFromPackageManagerField(): string | undefined {
 | 
			
		||||
  // Check packageManager field in package.json
 | 
			
		||||
  const SUPPORTED_PACKAGE_MANAGERS = ['npm', 'yarn', 'pnpm'];
 | 
			
		||||
  const npmRegex = /^(\^)?npm(@.*)?$/; // matches "npm", "npm@...", "^npm@..."
 | 
			
		||||
  try {
 | 
			
		||||
    const packageJson = JSON.parse(
 | 
			
		||||
      fs.readFileSync(
 | 
			
		||||
@ -136,16 +146,24 @@ export function getNameFromPackageManagerField(): string | undefined {
 | 
			
		||||
        '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;
 | 
			
		||||
 | 
			
		||||
    // 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 (err) {
 | 
			
		||||
  } catch {
 | 
			
		||||
    return undefined;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user