mirror of
				https://gitea.com/actions/setup-node.git
				synced 2025-11-02 07:48:42 +00:00 
			
		
		
		
	Compare commits
	
		
			33 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					49933ea528 | ||
| 
						 | 
					e3ce749e20 | ||
| 
						 | 
					40337cb8f7 | ||
| 
						 | 
					1ccdddc9b8 | ||
| 
						 | 
					cdca7365b2 | ||
| 
						 | 
					22c0e7494f | ||
| 
						 | 
					a7c2d9473e | ||
| 
						 | 
					802632921f | ||
| 
						 | 
					1d0ff469b7 | ||
| 
						 | 
					574f09a9fa | ||
| 
						 | 
					260f8702db | ||
| 
						 | 
					111c4beff8 | ||
| 
						 | 
					0bc26deefe | ||
| 
						 | 
					8f9cc178b6 | ||
| 
						 | 
					5eef37b631 | ||
| 
						 | 
					fbeca22fb2 | ||
| 
						 | 
					48b90677b6 | ||
| 
						 | 
					39370e3970 | ||
| 
						 | 
					abb238b131 | ||
| 
						 | 
					aca7b64a59 | ||
| 
						 | 
					88de2a3d99 | ||
| 
						 | 
					0a44ba7841 | ||
| 
						 | 
					d6ebc7b438 | ||
| 
						 | 
					97ca147735 | ||
| 
						 | 
					aa363ded8f | ||
| 
						 | 
					1c7b2db920 | ||
| 
						 | 
					26961cf329 | ||
| 
						 | 
					1e60f620b9 | ||
| 
						 | 
					eff380dfbc | ||
| 
						 | 
					c2ac33f2c6 | ||
| 
						 | 
					25b062c917 | ||
| 
						 | 
					60edb5dd54 | ||
| 
						 | 
					d86ebcd40b | 
							
								
								
									
										22
									
								
								.github/dependabot.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								.github/dependabot.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,22 @@
 | 
			
		||||
# To get started with Dependabot version updates, you'll need to specify which
 | 
			
		||||
# package ecosystems to update and where the package manifests are located.
 | 
			
		||||
# Please see the documentation for all configuration options:
 | 
			
		||||
# https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file
 | 
			
		||||
 | 
			
		||||
version: 2
 | 
			
		||||
updates:
 | 
			
		||||
  # Enable version updates for npm
 | 
			
		||||
  - package-ecosystem: 'npm'
 | 
			
		||||
    # Look for `package.json` and `lock` files in the `root` directory
 | 
			
		||||
    directory: '/'
 | 
			
		||||
    # Check the npm registry for updates every day (weekdays)
 | 
			
		||||
    schedule:
 | 
			
		||||
      interval: 'weekly'
 | 
			
		||||
 | 
			
		||||
  # Enable version updates for GitHub Actions
 | 
			
		||||
  - package-ecosystem: 'github-actions'
 | 
			
		||||
    # Workflow files stored in the default location of `.github/workflows`
 | 
			
		||||
    # You don't need to specify `/.github/workflows` for `directory`. You can use `directory: "/"`.
 | 
			
		||||
    directory: '/'
 | 
			
		||||
    schedule:
 | 
			
		||||
      interval: 'weekly'
 | 
			
		||||
							
								
								
									
										2
									
								
								.github/eslint-compact.json
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/eslint-compact.json
									
									
									
									
										vendored
									
									
								
							@@ -4,7 +4,7 @@
 | 
			
		||||
            "owner": "eslint-compact",
 | 
			
		||||
            "pattern": [
 | 
			
		||||
                {
 | 
			
		||||
                    "regexp": "^(.+):\\sline\\s(\\d+),\\scol\\s(\\d+),\\s(Error|Warning|Info)\\s-\\s(.+)\\s\\((.+)\\)$",
 | 
			
		||||
                    "regexp": "^(.+):\\sline\\s(\\d+),\\scol\\s(\\d+),\\s([Ee]rror|[Ww]arning|[Ii]nfo)\\s-\\s(.+)\\s\\((.+)\\)$",
 | 
			
		||||
                    "file": 1,
 | 
			
		||||
                    "line": 2,
 | 
			
		||||
                    "column": 3,
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								.github/eslint-stylish.json
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/eslint-stylish.json
									
									
									
									
										vendored
									
									
								
							@@ -4,7 +4,7 @@
 | 
			
		||||
            "owner": "eslint-stylish",
 | 
			
		||||
            "pattern": [
 | 
			
		||||
                {
 | 
			
		||||
                    "regexp": "^([^\\s].*)$",
 | 
			
		||||
                    "regexp": "^\\s*([^\\s].*)$",
 | 
			
		||||
                    "file": 1
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										26
									
								
								.github/workflows/e2e-cache.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										26
									
								
								.github/workflows/e2e-cache.yml
									
									
									
									
										vendored
									
									
								
							@@ -18,8 +18,8 @@ jobs:
 | 
			
		||||
    strategy:
 | 
			
		||||
      fail-fast: false
 | 
			
		||||
      matrix:
 | 
			
		||||
        os: [ubuntu-latest, windows-latest, macos-latest]
 | 
			
		||||
        node-version: [12, 14, 16]
 | 
			
		||||
        os: [ubuntu-latest, windows-latest, macos-latest, macos-13]
 | 
			
		||||
        node-version: [18, 20, 22]
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v4
 | 
			
		||||
      - name: Clean global cache
 | 
			
		||||
@@ -41,12 +41,12 @@ jobs:
 | 
			
		||||
    strategy:
 | 
			
		||||
      fail-fast: false
 | 
			
		||||
      matrix:
 | 
			
		||||
        os: [ubuntu-latest, windows-latest, macos-latest]
 | 
			
		||||
        node-version: [12, 14, 16]
 | 
			
		||||
        os: [ubuntu-latest, windows-latest, macos-latest, macos-13]
 | 
			
		||||
        node-version: [18, 20, 22]
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v4
 | 
			
		||||
      - name: Install pnpm
 | 
			
		||||
        uses: pnpm/action-setup@v2
 | 
			
		||||
        uses: pnpm/action-setup@v4
 | 
			
		||||
        with:
 | 
			
		||||
          version: 6.10.0
 | 
			
		||||
      - name: Generate pnpm file
 | 
			
		||||
@@ -74,8 +74,8 @@ jobs:
 | 
			
		||||
    strategy:
 | 
			
		||||
      fail-fast: false
 | 
			
		||||
      matrix:
 | 
			
		||||
        os: [ubuntu-latest, windows-latest, macos-latest]
 | 
			
		||||
        node-version: [14, 16]
 | 
			
		||||
        os: [ubuntu-latest, windows-latest, macos-latest, macos-13]
 | 
			
		||||
        node-version: [18, 20]
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v4
 | 
			
		||||
      - name: Yarn version
 | 
			
		||||
@@ -106,8 +106,8 @@ jobs:
 | 
			
		||||
    strategy:
 | 
			
		||||
      fail-fast: false
 | 
			
		||||
      matrix:
 | 
			
		||||
        os: [ubuntu-latest, windows-latest, macos-latest]
 | 
			
		||||
        node-version: [12, 14, 16]
 | 
			
		||||
        os: [ubuntu-latest, windows-latest, macos-latest, macos-13]
 | 
			
		||||
        node-version: [18, 20, 22]
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v4
 | 
			
		||||
      - name: Update yarn
 | 
			
		||||
@@ -139,7 +139,7 @@ jobs:
 | 
			
		||||
    name: Test yarn subprojects
 | 
			
		||||
    strategy:
 | 
			
		||||
      matrix:
 | 
			
		||||
        node-version: [12, 14, 16]
 | 
			
		||||
        node-version: [18, 20, 22]
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
 | 
			
		||||
    steps:
 | 
			
		||||
@@ -166,7 +166,7 @@ jobs:
 | 
			
		||||
    name: Test yarn subprojects all locally managed
 | 
			
		||||
    strategy:
 | 
			
		||||
      matrix:
 | 
			
		||||
        node-version: [12, 14, 16]
 | 
			
		||||
        node-version: [18, 20, 22]
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
 | 
			
		||||
    steps:
 | 
			
		||||
@@ -193,7 +193,7 @@ jobs:
 | 
			
		||||
    name: Test yarn subprojects some locally managed
 | 
			
		||||
    strategy:
 | 
			
		||||
      matrix:
 | 
			
		||||
        node-version: [12, 14, 16]
 | 
			
		||||
        node-version: [18, 20, 22]
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
 | 
			
		||||
    steps:
 | 
			
		||||
@@ -220,7 +220,7 @@ jobs:
 | 
			
		||||
    name: Test yarn subprojects managed by git
 | 
			
		||||
    strategy:
 | 
			
		||||
      matrix:
 | 
			
		||||
        node-version: [12, 14, 16]
 | 
			
		||||
        node-version: [18, 20, 22]
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
 | 
			
		||||
    steps:
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										20
									
								
								.github/workflows/publish-immutable-actions.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								.github/workflows/publish-immutable-actions.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,20 @@
 | 
			
		||||
name: 'Publish Immutable Action Version'
 | 
			
		||||
 | 
			
		||||
on:
 | 
			
		||||
  release:
 | 
			
		||||
    types: [published]
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  publish:
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    permissions:
 | 
			
		||||
      contents: read
 | 
			
		||||
      id-token: write
 | 
			
		||||
      packages: write
 | 
			
		||||
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Checking out
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
      - name: Publish
 | 
			
		||||
        id: publish
 | 
			
		||||
        uses: actions/publish-immutable-action@v0.0.4
 | 
			
		||||
@@ -22,7 +22,7 @@ jobs:
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Update the ${{ env.TAG_NAME }} tag
 | 
			
		||||
        uses: actions/publish-action@v0.2.2
 | 
			
		||||
        uses: actions/publish-action@v0.3.0
 | 
			
		||||
        with:
 | 
			
		||||
          source-tag: ${{ env.TAG_NAME }}
 | 
			
		||||
          slack-webhook: ${{ secrets.SLACK_WEBHOOK }}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										67
									
								
								.github/workflows/versions.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										67
									
								
								.github/workflows/versions.yml
									
									
									
									
										vendored
									
									
								
							@@ -17,8 +17,8 @@ jobs:
 | 
			
		||||
    strategy:
 | 
			
		||||
      fail-fast: false
 | 
			
		||||
      matrix:
 | 
			
		||||
        os: [ubuntu-latest, windows-latest, macos-latest]
 | 
			
		||||
        node-version: [10, 12, 14]
 | 
			
		||||
        os: [ubuntu-latest, windows-latest, macos-latest, macos-13]
 | 
			
		||||
        node-version: [18, 20, 22]
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v4
 | 
			
		||||
      - name: Setup Node
 | 
			
		||||
@@ -34,7 +34,7 @@ jobs:
 | 
			
		||||
    strategy:
 | 
			
		||||
      fail-fast: false
 | 
			
		||||
      matrix:
 | 
			
		||||
        os: [ubuntu-latest, windows-latest, macos-latest]
 | 
			
		||||
        os: [ubuntu-latest, windows-latest, macos-13]
 | 
			
		||||
        node-version: [lts/dubnium, lts/erbium, lts/fermium, lts/*, lts/-1]
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v4
 | 
			
		||||
@@ -43,7 +43,7 @@ jobs:
 | 
			
		||||
        with:
 | 
			
		||||
          node-version: ${{ matrix.node-version }}
 | 
			
		||||
          check-latest: true
 | 
			
		||||
      - if: runner.os != 'Windows'
 | 
			
		||||
      - if: runner.os != 'Windows' && runner.os != 'macOS'
 | 
			
		||||
        name: Verify node and npm
 | 
			
		||||
        run: |
 | 
			
		||||
          . "$NVM_DIR/nvm.sh"
 | 
			
		||||
@@ -56,7 +56,7 @@ jobs:
 | 
			
		||||
    strategy:
 | 
			
		||||
      fail-fast: false
 | 
			
		||||
      matrix:
 | 
			
		||||
        os: [ubuntu-latest, windows-latest, macos-latest]
 | 
			
		||||
        os: [ubuntu-latest, windows-latest, macos-latest, macos-13]
 | 
			
		||||
        node-version:
 | 
			
		||||
          [
 | 
			
		||||
            '20-v8-canary',
 | 
			
		||||
@@ -81,9 +81,8 @@ jobs:
 | 
			
		||||
    strategy:
 | 
			
		||||
      fail-fast: false
 | 
			
		||||
      matrix:
 | 
			
		||||
        os: [ubuntu-latest, windows-latest, macos-latest]
 | 
			
		||||
        node-version:
 | 
			
		||||
          [16.0.0-nightly20210420a0261d231c, 17-nightly, 18.0.0-nightly]
 | 
			
		||||
        os: [ubuntu-latest, windows-latest, macos-latest, macos-13]
 | 
			
		||||
        node-version: [20-nightly, 21-nightly, 18.0.0-nightly]
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v4
 | 
			
		||||
      - name: Setup Node
 | 
			
		||||
@@ -102,8 +101,8 @@ jobs:
 | 
			
		||||
    strategy:
 | 
			
		||||
      fail-fast: false
 | 
			
		||||
      matrix:
 | 
			
		||||
        os: [ubuntu-latest, windows-latest, macos-latest]
 | 
			
		||||
        node-version: [16.0.0-rc.1, 18.0.0-rc.2, 19.0.0-rc.0]
 | 
			
		||||
        os: [ubuntu-latest, windows-latest, macos-latest, macos-13]
 | 
			
		||||
        node-version: [20.0.0-rc.1, 18.0.0-rc.2, 19.0.0-rc.0]
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v4
 | 
			
		||||
      - name: Setup Node
 | 
			
		||||
@@ -122,8 +121,8 @@ jobs:
 | 
			
		||||
    strategy:
 | 
			
		||||
      fail-fast: false
 | 
			
		||||
      matrix:
 | 
			
		||||
        os: [ubuntu-latest, windows-latest, macos-latest]
 | 
			
		||||
        node-version: [10.15, 12.16.0, 14.2.0, 16.3.0]
 | 
			
		||||
        os: [ubuntu-latest, windows-latest, macos-latest, macos-13]
 | 
			
		||||
        node-version: [18.20.0, 20.10.0, 22.0.0]
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v4
 | 
			
		||||
      - name: Setup Node
 | 
			
		||||
@@ -139,8 +138,8 @@ jobs:
 | 
			
		||||
    strategy:
 | 
			
		||||
      fail-fast: false
 | 
			
		||||
      matrix:
 | 
			
		||||
        os: [ubuntu-latest, windows-latest, macos-latest]
 | 
			
		||||
        node-version: [10, 12, 14]
 | 
			
		||||
        os: [ubuntu-latest, windows-latest, macos-latest, macos-13]
 | 
			
		||||
        node-version: [18, 20, 22]
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v4
 | 
			
		||||
      - name: Setup Node and check latest
 | 
			
		||||
@@ -157,43 +156,55 @@ jobs:
 | 
			
		||||
    strategy:
 | 
			
		||||
      fail-fast: false
 | 
			
		||||
      matrix:
 | 
			
		||||
        os: [ubuntu-latest, windows-latest, macos-latest]
 | 
			
		||||
        os: [ubuntu-latest, windows-latest, macos-latest, macos-13]
 | 
			
		||||
        node-version-file:
 | 
			
		||||
          [.nvmrc, .tool-versions, .tool-versions-node, package.json]
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v4
 | 
			
		||||
      - name: Remove volta from package.json
 | 
			
		||||
        shell: bash
 | 
			
		||||
        run: cat <<< "$(jq 'del(.volta)' ./__tests__/data/package.json)" > ./__tests__/data/package.json
 | 
			
		||||
      - name: Setup node from node version file
 | 
			
		||||
        uses: ./
 | 
			
		||||
        with:
 | 
			
		||||
          node-version-file: '__tests__/data/${{ matrix.node-version-file }}'
 | 
			
		||||
      - name: Verify node
 | 
			
		||||
        run: __tests__/verify-node.sh 14
 | 
			
		||||
        run: __tests__/verify-node.sh 20
 | 
			
		||||
 | 
			
		||||
  version-file-volta:
 | 
			
		||||
    runs-on: ${{ matrix.os }}
 | 
			
		||||
    strategy:
 | 
			
		||||
      fail-fast: false
 | 
			
		||||
      matrix:
 | 
			
		||||
        os: [ubuntu-latest, windows-latest, macos-latest]
 | 
			
		||||
        os: [ubuntu-latest, windows-latest, macos-latest, macos-13]
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v4
 | 
			
		||||
      - name: Setup node from node version file
 | 
			
		||||
        uses: ./
 | 
			
		||||
        with:
 | 
			
		||||
          node-version-file: '__tests__/data/package.json'
 | 
			
		||||
          node-version-file: '__tests__/data/package-volta.json'
 | 
			
		||||
      - name: Verify node
 | 
			
		||||
        run: __tests__/verify-node.sh 16
 | 
			
		||||
        run: __tests__/verify-node.sh 20
 | 
			
		||||
 | 
			
		||||
  version-file-volta-extends:
 | 
			
		||||
    runs-on: ${{ matrix.os }}
 | 
			
		||||
    strategy:
 | 
			
		||||
      fail-fast: false
 | 
			
		||||
      matrix:
 | 
			
		||||
        os: [ubuntu-latest, windows-latest, macos-latest, macos-13]
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v4
 | 
			
		||||
      - name: Setup node from node version file
 | 
			
		||||
        uses: ./
 | 
			
		||||
        with:
 | 
			
		||||
          node-version-file: '__tests__/data/package-volta-extends.json'
 | 
			
		||||
      - name: Verify node
 | 
			
		||||
        run: __tests__/verify-node.sh 20
 | 
			
		||||
 | 
			
		||||
  node-dist:
 | 
			
		||||
    runs-on: ${{ matrix.os }}
 | 
			
		||||
    strategy:
 | 
			
		||||
      fail-fast: false
 | 
			
		||||
      matrix:
 | 
			
		||||
        os: [ubuntu-latest, windows-latest, macos-latest]
 | 
			
		||||
        node-version: [11, 13]
 | 
			
		||||
        os: [ubuntu-latest, windows-latest, macos-latest, macos-13]
 | 
			
		||||
        node-version: [17, 19]
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v4
 | 
			
		||||
      - name: Setup Node from dist
 | 
			
		||||
@@ -209,7 +220,7 @@ jobs:
 | 
			
		||||
    strategy:
 | 
			
		||||
      fail-fast: false
 | 
			
		||||
      matrix:
 | 
			
		||||
        os: [ubuntu-latest, windows-latest, macos-latest]
 | 
			
		||||
        os: [ubuntu-latest, windows-latest, macos-13]
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v4
 | 
			
		||||
      # test old versions which didn't have npm and layout different
 | 
			
		||||
@@ -225,10 +236,10 @@ jobs:
 | 
			
		||||
    runs-on: windows-latest
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v4
 | 
			
		||||
      - name: Setup node 14 x86 from dist
 | 
			
		||||
      - name: Setup node 20 x86 from dist
 | 
			
		||||
        uses: ./
 | 
			
		||||
        with:
 | 
			
		||||
          node-version: '14'
 | 
			
		||||
          node-version: '20'
 | 
			
		||||
          architecture: 'x86'
 | 
			
		||||
      - name: Verify node
 | 
			
		||||
        run: __tests__/verify-arch.sh "ia32"
 | 
			
		||||
@@ -239,7 +250,7 @@ jobs:
 | 
			
		||||
    strategy:
 | 
			
		||||
      fail-fast: false
 | 
			
		||||
      matrix:
 | 
			
		||||
        os: [ubuntu-latest, windows-latest, macos-latest]
 | 
			
		||||
        os: [ubuntu-latest, windows-latest, macos-latest, macos-13]
 | 
			
		||||
        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: 3.2.2
 | 
			
		||||
version: 4.0.3
 | 
			
		||||
type: npm
 | 
			
		||||
summary: Actions cache lib
 | 
			
		||||
homepage: https://github.com/actions/toolkit/tree/main/packages/cache
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								.licenses/npm/@actions/core.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								.licenses/npm/@actions/core.dep.yml
									
									
									
										generated
									
									
									
								
							@@ -1,6 +1,6 @@
 | 
			
		||||
---
 | 
			
		||||
name: "@actions/core"
 | 
			
		||||
version: 1.10.1
 | 
			
		||||
version: 1.11.1
 | 
			
		||||
type: npm
 | 
			
		||||
summary: Actions core lib
 | 
			
		||||
homepage: https://github.com/actions/toolkit/tree/main/packages/core
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
---
 | 
			
		||||
name: "@actions/glob"
 | 
			
		||||
version: 0.4.0
 | 
			
		||||
version: 0.5.0
 | 
			
		||||
type: npm
 | 
			
		||||
summary: Actions glob lib
 | 
			
		||||
homepage: https://github.com/actions/toolkit/tree/main/packages/glob
 | 
			
		||||
							
								
								
									
										2
									
								
								.licenses/npm/@actions/http-client.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								.licenses/npm/@actions/http-client.dep.yml
									
									
									
										generated
									
									
									
								
							@@ -1,6 +1,6 @@
 | 
			
		||||
---
 | 
			
		||||
name: "@actions/http-client"
 | 
			
		||||
version: 2.2.0
 | 
			
		||||
version: 2.2.1
 | 
			
		||||
type: npm
 | 
			
		||||
summary: Actions Http Client
 | 
			
		||||
homepage: https://github.com/actions/toolkit/tree/main/packages/http-client
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								.licenses/npm/@actions/tool-cache.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								.licenses/npm/@actions/tool-cache.dep.yml
									
									
									
										generated
									
									
									
								
							@@ -1,6 +1,6 @@
 | 
			
		||||
---
 | 
			
		||||
name: "@actions/tool-cache"
 | 
			
		||||
version: 2.0.1
 | 
			
		||||
version: 2.0.2
 | 
			
		||||
type: npm
 | 
			
		||||
summary: Actions tool-cache lib
 | 
			
		||||
homepage: https://github.com/actions/toolkit/tree/main/packages/tool-cache
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								.licenses/npm/@fastify/busboy.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								.licenses/npm/@fastify/busboy.dep.yml
									
									
									
										generated
									
									
									
								
							@@ -1,6 +1,6 @@
 | 
			
		||||
---
 | 
			
		||||
name: "@fastify/busboy"
 | 
			
		||||
version: 2.0.0
 | 
			
		||||
version: 2.1.1
 | 
			
		||||
type: npm
 | 
			
		||||
summary: A streaming parser for HTML form data for node.js
 | 
			
		||||
homepage:
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										185
									
								
								.licenses/npm/@protobuf-ts/plugin-framework.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										185
									
								
								.licenses/npm/@protobuf-ts/plugin-framework.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							@@ -0,0 +1,185 @@
 | 
			
		||||
---
 | 
			
		||||
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
									
									
									
										Normal file
									
								
							
							
						
						
									
										186
									
								
								.licenses/npm/@protobuf-ts/plugin.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							@@ -0,0 +1,186 @@
 | 
			
		||||
---
 | 
			
		||||
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
									
									
									
										Normal file
									
								
							
							
						
						
									
										207
									
								
								.licenses/npm/@protobuf-ts/protoc.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							@@ -0,0 +1,207 @@
 | 
			
		||||
---
 | 
			
		||||
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: []
 | 
			
		||||
							
								
								
									
										185
									
								
								.licenses/npm/@protobuf-ts/runtime-rpc.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										185
									
								
								.licenses/npm/@protobuf-ts/runtime-rpc.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							@@ -0,0 +1,185 @@
 | 
			
		||||
---
 | 
			
		||||
name: "@protobuf-ts/runtime-rpc"
 | 
			
		||||
version: 2.9.5
 | 
			
		||||
type: npm
 | 
			
		||||
summary: Runtime library for RPC clients generated by the protoc plugin "protobuf-ts"
 | 
			
		||||
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: []
 | 
			
		||||
							
								
								
									
										185
									
								
								.licenses/npm/@protobuf-ts/runtime.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										185
									
								
								.licenses/npm/@protobuf-ts/runtime.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							@@ -0,0 +1,185 @@
 | 
			
		||||
---
 | 
			
		||||
name: "@protobuf-ts/runtime"
 | 
			
		||||
version: 2.9.5
 | 
			
		||||
type: npm
 | 
			
		||||
summary: Runtime library for code generated by the protoc plugin "protobuf-ts"
 | 
			
		||||
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: []
 | 
			
		||||
							
								
								
									
										2
									
								
								.licenses/npm/@types/node.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								.licenses/npm/@types/node.dep.yml
									
									
									
										generated
									
									
									
								
							@@ -1,6 +1,6 @@
 | 
			
		||||
---
 | 
			
		||||
name: "@types/node"
 | 
			
		||||
version: 20.8.7
 | 
			
		||||
version: 20.11.25
 | 
			
		||||
type: npm
 | 
			
		||||
summary: TypeScript definitions for node
 | 
			
		||||
homepage: https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										26
									
								
								.licenses/npm/lru-cache.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										26
									
								
								.licenses/npm/lru-cache.dep.yml
									
									
									
										generated
									
									
									
								
							@@ -1,26 +0,0 @@
 | 
			
		||||
---
 | 
			
		||||
name: lru-cache
 | 
			
		||||
version: 6.0.0
 | 
			
		||||
type: npm
 | 
			
		||||
summary: A cache object that deletes the least-recently-used items.
 | 
			
		||||
homepage: 
 | 
			
		||||
license: isc
 | 
			
		||||
licenses:
 | 
			
		||||
- sources: LICENSE
 | 
			
		||||
  text: |
 | 
			
		||||
    The ISC License
 | 
			
		||||
 | 
			
		||||
    Copyright (c) Isaac Z. Schlueter and Contributors
 | 
			
		||||
 | 
			
		||||
    Permission to use, copy, modify, and/or distribute this software for any
 | 
			
		||||
    purpose with or without fee is hereby granted, provided that the above
 | 
			
		||||
    copyright notice and this permission notice appear in all copies.
 | 
			
		||||
 | 
			
		||||
    THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 | 
			
		||||
    WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 | 
			
		||||
    MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 | 
			
		||||
    ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 | 
			
		||||
    WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 | 
			
		||||
    ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
 | 
			
		||||
    IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 | 
			
		||||
notices: []
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
---
 | 
			
		||||
name: semver
 | 
			
		||||
version: 7.5.4
 | 
			
		||||
version: 7.6.3
 | 
			
		||||
type: npm
 | 
			
		||||
summary: The semantic version parser used by npm.
 | 
			
		||||
homepage:
 | 
			
		||||
							
								
								
									
										239
									
								
								.licenses/npm/typescript.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										239
									
								
								.licenses/npm/typescript.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							@@ -0,0 +1,239 @@
 | 
			
		||||
---
 | 
			
		||||
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 - 阿卡琳"
 | 
			
		||||
							
								
								
									
										2
									
								
								.licenses/npm/undici-types.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								.licenses/npm/undici-types.dep.yml
									
									
									
										generated
									
									
									
								
							@@ -1,6 +1,6 @@
 | 
			
		||||
---
 | 
			
		||||
name: undici-types
 | 
			
		||||
version: 5.25.3
 | 
			
		||||
version: 5.26.5
 | 
			
		||||
type: npm
 | 
			
		||||
summary: A stand-alone types package for Undici
 | 
			
		||||
homepage: https://undici.nodejs.org
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								.licenses/npm/undici.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								.licenses/npm/undici.dep.yml
									
									
									
										generated
									
									
									
								
							@@ -1,6 +1,6 @@
 | 
			
		||||
---
 | 
			
		||||
name: undici
 | 
			
		||||
version: 5.26.5
 | 
			
		||||
version: 5.28.5
 | 
			
		||||
type: npm
 | 
			
		||||
summary: An HTTP/1.1 client, written from scratch for Node.js
 | 
			
		||||
homepage: https://undici.nodejs.org
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								.licenses/npm/universal-user-agent.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								.licenses/npm/universal-user-agent.dep.yml
									
									
									
										generated
									
									
									
								
							@@ -1,6 +1,6 @@
 | 
			
		||||
---
 | 
			
		||||
name: universal-user-agent
 | 
			
		||||
version: 6.0.0
 | 
			
		||||
version: 6.0.1
 | 
			
		||||
type: npm
 | 
			
		||||
summary: Get a user agent string in both browser and node
 | 
			
		||||
homepage:
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										39
									
								
								.licenses/npm/uuid-3.4.0.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										39
									
								
								.licenses/npm/uuid-3.4.0.dep.yml
									
									
									
										generated
									
									
									
								
							@@ -1,39 +0,0 @@
 | 
			
		||||
---
 | 
			
		||||
name: uuid
 | 
			
		||||
version: 3.4.0
 | 
			
		||||
type: npm
 | 
			
		||||
summary: RFC4122 (v1, v4, and v5) UUIDs
 | 
			
		||||
homepage: https://github.com/uuidjs/uuid#readme
 | 
			
		||||
license: mit
 | 
			
		||||
licenses:
 | 
			
		||||
- sources: LICENSE.md
 | 
			
		||||
  text: |
 | 
			
		||||
    The MIT License (MIT)
 | 
			
		||||
 | 
			
		||||
    Copyright (c) 2010-2016 Robert Kieffer and other contributors
 | 
			
		||||
 | 
			
		||||
    Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
			
		||||
    of this software and associated documentation files (the "Software"), to deal
 | 
			
		||||
    in the Software without restriction, including without limitation the rights
 | 
			
		||||
    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 | 
			
		||||
    copies of the Software, and to permit persons to whom the Software is
 | 
			
		||||
    furnished to do so, subject to the following conditions:
 | 
			
		||||
 | 
			
		||||
    The above copyright notice and this permission notice shall be included in all
 | 
			
		||||
    copies or substantial portions of the Software.
 | 
			
		||||
 | 
			
		||||
    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
			
		||||
    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
			
		||||
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 | 
			
		||||
    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
			
		||||
    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 | 
			
		||||
    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 | 
			
		||||
    SOFTWARE.
 | 
			
		||||
notices:
 | 
			
		||||
- sources: AUTHORS
 | 
			
		||||
  text: |-
 | 
			
		||||
    Robert Kieffer <robert@broofa.com>
 | 
			
		||||
    Christoph Tavan <dev@tavan.de>
 | 
			
		||||
    AJ ONeal <coolaj86@gmail.com>
 | 
			
		||||
    Vincent Voyer <vincent@zeroload.net>
 | 
			
		||||
    Roman Shtylman <shtylman@gmail.com>
 | 
			
		||||
							
								
								
									
										26
									
								
								.licenses/npm/yallist.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										26
									
								
								.licenses/npm/yallist.dep.yml
									
									
									
										generated
									
									
									
								
							@@ -1,26 +0,0 @@
 | 
			
		||||
---
 | 
			
		||||
name: yallist
 | 
			
		||||
version: 4.0.0
 | 
			
		||||
type: npm
 | 
			
		||||
summary: Yet Another Linked List
 | 
			
		||||
homepage: 
 | 
			
		||||
license: isc
 | 
			
		||||
licenses:
 | 
			
		||||
- sources: LICENSE
 | 
			
		||||
  text: |
 | 
			
		||||
    The ISC License
 | 
			
		||||
 | 
			
		||||
    Copyright (c) Isaac Z. Schlueter and Contributors
 | 
			
		||||
 | 
			
		||||
    Permission to use, copy, modify, and/or distribute this software for any
 | 
			
		||||
    purpose with or without fee is hereby granted, provided that the above
 | 
			
		||||
    copyright notice and this permission notice appear in all copies.
 | 
			
		||||
 | 
			
		||||
    THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 | 
			
		||||
    WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 | 
			
		||||
    MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 | 
			
		||||
    ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 | 
			
		||||
    WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 | 
			
		||||
    ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
 | 
			
		||||
    IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 | 
			
		||||
notices: []
 | 
			
		||||
							
								
								
									
										34
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										34
									
								
								README.md
									
									
									
									
									
								
							@@ -21,7 +21,7 @@ See [action.yml](action.yml)
 | 
			
		||||
- uses: actions/setup-node@v4
 | 
			
		||||
  with:
 | 
			
		||||
    # Version Spec of the version to use in SemVer notation.
 | 
			
		||||
    # It also emits such aliases as lts, latest, nightly and canary builds
 | 
			
		||||
    # It also admits such aliases as lts/*, latest, nightly and canary builds
 | 
			
		||||
    # Examples: 12.x, 10.15.1, >=10.15.0, lts/Hydrogen, 16-nightly, latest, node
 | 
			
		||||
    node-version: ''
 | 
			
		||||
 | 
			
		||||
@@ -76,6 +76,21 @@ See [action.yml](action.yml)
 | 
			
		||||
    # Set always-auth option in npmrc file.
 | 
			
		||||
    # Default: ''
 | 
			
		||||
    always-auth: ''
 | 
			
		||||
 | 
			
		||||
    # Optional mirror to download binaries from.
 | 
			
		||||
    # Artifacts need to match the official Node.js
 | 
			
		||||
    # Example:
 | 
			
		||||
    # V8 Canaray Build: <mirror_url>/download/v8-canary
 | 
			
		||||
    # RC Build: <mirror_url>/download/rc
 | 
			
		||||
    # Official: Build <mirror_url>/dist
 | 
			
		||||
    # Nightly build: <mirror_url>/download/nightly
 | 
			
		||||
    # Default: ''
 | 
			
		||||
    mirror: ''
 | 
			
		||||
 | 
			
		||||
    # Optional mirror token.
 | 
			
		||||
    # The token will be used as a bearer token in the Authorization header
 | 
			
		||||
    # Default: ''
 | 
			
		||||
    mirror-token: ''
 | 
			
		||||
```
 | 
			
		||||
<!-- end usage -->
 | 
			
		||||
 | 
			
		||||
@@ -103,7 +118,7 @@ The `node-version` input supports the Semantic Versioning Specification, for mor
 | 
			
		||||
 | 
			
		||||
Examples:
 | 
			
		||||
 | 
			
		||||
 - Major versions: `16`, `18`, `20`
 | 
			
		||||
 - 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`
 | 
			
		||||
 - Latest release: `*` or `latest`/`current`/`node`
 | 
			
		||||
@@ -135,7 +150,7 @@ steps:
 | 
			
		||||
- uses: actions/checkout@v4
 | 
			
		||||
- uses: actions/setup-node@v4
 | 
			
		||||
  with:
 | 
			
		||||
    node-version: 16
 | 
			
		||||
    node-version: 20
 | 
			
		||||
    cache: 'npm'
 | 
			
		||||
- run: npm ci
 | 
			
		||||
- run: npm test
 | 
			
		||||
@@ -148,7 +163,7 @@ steps:
 | 
			
		||||
- uses: actions/checkout@v4
 | 
			
		||||
- uses: actions/setup-node@v4
 | 
			
		||||
  with:
 | 
			
		||||
    node-version: 16
 | 
			
		||||
    node-version: 20
 | 
			
		||||
    cache: 'npm'
 | 
			
		||||
    cache-dependency-path: subdir/package-lock.json
 | 
			
		||||
- run: npm ci
 | 
			
		||||
@@ -185,7 +200,7 @@ To get a higher rate limit, you can [generate a personal access token on github.
 | 
			
		||||
uses: actions/setup-node@v4
 | 
			
		||||
with:
 | 
			
		||||
  token: ${{ secrets.GH_DOTCOM_TOKEN }}
 | 
			
		||||
  node-version: 16
 | 
			
		||||
  node-version: 20
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
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.
 | 
			
		||||
@@ -204,6 +219,15 @@ If the runner is not able to access github.com, any Nodejs versions requested du
 | 
			
		||||
 - [Publishing to npmjs and GPR with yarn](docs/advanced-usage.md#publish-to-npmjs-and-gpr-with-yarn)
 | 
			
		||||
 - [Using private packages](docs/advanced-usage.md#use-private-packages)
 | 
			
		||||
 | 
			
		||||
## Recommended permissions
 | 
			
		||||
 | 
			
		||||
When using the `setup-node` action in your GitHub Actions workflow, it is recommended to set the following permissions to ensure proper functionality:
 | 
			
		||||
 | 
			
		||||
```yaml
 | 
			
		||||
permissions:
 | 
			
		||||
  contents: read # access to check out code and install dependencies
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## License
 | 
			
		||||
 | 
			
		||||
The scripts and documentation in this project are released under the [MIT License](LICENSE)
 | 
			
		||||
 
 | 
			
		||||
@@ -2,6 +2,7 @@ import * as core from '@actions/core';
 | 
			
		||||
import * as cache from '@actions/cache';
 | 
			
		||||
import * as path from 'path';
 | 
			
		||||
import * as glob from '@actions/glob';
 | 
			
		||||
import osm from 'os';
 | 
			
		||||
 | 
			
		||||
import * as utils from '../src/cache-utils';
 | 
			
		||||
import {restoreCache} from '../src/cache-restore';
 | 
			
		||||
@@ -12,6 +13,7 @@ describe('cache-restore', () => {
 | 
			
		||||
    process.env.RUNNER_OS = 'Linux';
 | 
			
		||||
  }
 | 
			
		||||
  const platform = process.env.RUNNER_OS;
 | 
			
		||||
  const arch = 'arm64';
 | 
			
		||||
  const commonPath = '/some/random/path';
 | 
			
		||||
  const npmCachePath = `${commonPath}/npm`;
 | 
			
		||||
  const pnpmCachePath = `${commonPath}/pnpm`;
 | 
			
		||||
@@ -52,6 +54,7 @@ describe('cache-restore', () => {
 | 
			
		||||
  let getCommandOutputSpy: jest.SpyInstance;
 | 
			
		||||
  let restoreCacheSpy: jest.SpyInstance;
 | 
			
		||||
  let hashFilesSpy: jest.SpyInstance;
 | 
			
		||||
  let archSpy: jest.SpyInstance;
 | 
			
		||||
 | 
			
		||||
  beforeEach(() => {
 | 
			
		||||
    // core
 | 
			
		||||
@@ -102,6 +105,10 @@ describe('cache-restore', () => {
 | 
			
		||||
 | 
			
		||||
    // cache-utils
 | 
			
		||||
    getCommandOutputSpy = jest.spyOn(utils, 'getCommandOutput');
 | 
			
		||||
 | 
			
		||||
    // os
 | 
			
		||||
    archSpy = jest.spyOn(osm, 'arch');
 | 
			
		||||
    archSpy.mockImplementation(() => arch);
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  describe('Validate provided package manager', () => {
 | 
			
		||||
@@ -135,7 +142,7 @@ describe('cache-restore', () => {
 | 
			
		||||
        await restoreCache(packageManager, '');
 | 
			
		||||
        expect(hashFilesSpy).toHaveBeenCalled();
 | 
			
		||||
        expect(infoSpy).toHaveBeenCalledWith(
 | 
			
		||||
          `Cache restored from key: node-cache-${platform}-${packageManager}-${fileHash}`
 | 
			
		||||
          `Cache restored from key: node-cache-${platform}-${arch}-${packageManager}-${fileHash}`
 | 
			
		||||
        );
 | 
			
		||||
        expect(infoSpy).not.toHaveBeenCalledWith(
 | 
			
		||||
          `${packageManager} cache is not found`
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@ import {
 | 
			
		||||
  PackageManagerInfo,
 | 
			
		||||
  isCacheFeatureAvailable,
 | 
			
		||||
  supportedPackageManagers,
 | 
			
		||||
  getCommandOutput,
 | 
			
		||||
  isGhes,
 | 
			
		||||
  resetProjectDirectoriesMemoized
 | 
			
		||||
} from '../src/cache-utils';
 | 
			
		||||
import fs from 'fs';
 | 
			
		||||
@@ -361,3 +361,41 @@ describe('cache-utils', () => {
 | 
			
		||||
    );
 | 
			
		||||
  });
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
describe('isGhes', () => {
 | 
			
		||||
  const pristineEnv = process.env;
 | 
			
		||||
 | 
			
		||||
  beforeEach(() => {
 | 
			
		||||
    jest.resetModules();
 | 
			
		||||
    process.env = {...pristineEnv};
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  afterAll(() => {
 | 
			
		||||
    process.env = pristineEnv;
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  it('returns false when the GITHUB_SERVER_URL environment variable is not defined', () => {
 | 
			
		||||
    delete process.env['GITHUB_SERVER_URL'];
 | 
			
		||||
    expect(isGhes()).toBeFalsy();
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  it('returns false when the GITHUB_SERVER_URL environment variable is set to github.com', () => {
 | 
			
		||||
    process.env['GITHUB_SERVER_URL'] = 'https://github.com';
 | 
			
		||||
    expect(isGhes()).toBeFalsy();
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  it('returns false when the GITHUB_SERVER_URL environment variable is set to a GitHub Enterprise Cloud-style URL', () => {
 | 
			
		||||
    process.env['GITHUB_SERVER_URL'] = 'https://contoso.ghe.com';
 | 
			
		||||
    expect(isGhes()).toBeFalsy();
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  it('returns false when the GITHUB_SERVER_URL environment variable has a .localhost suffix', () => {
 | 
			
		||||
    process.env['GITHUB_SERVER_URL'] = 'https://mock-github.localhost';
 | 
			
		||||
    expect(isGhes()).toBeFalsy();
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  it('returns true when the GITHUB_SERVER_URL environment variable is set to some other URL', () => {
 | 
			
		||||
    process.env['GITHUB_SERVER_URL'] = 'https://src.onpremise.fabrikam.com';
 | 
			
		||||
    expect(isGhes()).toBeTruthy();
 | 
			
		||||
  });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -498,6 +498,70 @@ describe('setup-node', () => {
 | 
			
		||||
        );
 | 
			
		||||
      }
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    it.each([
 | 
			
		||||
      [
 | 
			
		||||
        '20.0.0-v8-canary',
 | 
			
		||||
        '20.0.0-v8-canary20221103f7e2421e91',
 | 
			
		||||
        '20.0.0-v8-canary20221030fefe1c0879',
 | 
			
		||||
        'https://my_mirror.org/download/v8-canary/v20.0.0-v8-canary20221103f7e2421e91/node-v20.0.0-v8-canary20221103f7e2421e91-linux-x64.tar.gz'
 | 
			
		||||
      ],
 | 
			
		||||
      [
 | 
			
		||||
        '20-v8-canary',
 | 
			
		||||
        '20.0.0-v8-canary20221103f7e2421e91',
 | 
			
		||||
        '20.0.0-v8-canary20221030fefe1c0879',
 | 
			
		||||
        'https://my_mirror.org/download/v8-canary/v20.0.0-v8-canary20221103f7e2421e91/node-v20.0.0-v8-canary20221103f7e2421e91-linux-x64.tar.gz'
 | 
			
		||||
      ],
 | 
			
		||||
      [
 | 
			
		||||
        '19.0.0-v8-canary',
 | 
			
		||||
        '19.0.0-v8-canary202210187d6960f23f',
 | 
			
		||||
        '19.0.0-v8-canary202210172ec229fc56',
 | 
			
		||||
        'https://my_mirror.org/download/v8-canary/v19.0.0-v8-canary202210187d6960f23f/node-v19.0.0-v8-canary202210187d6960f23f-linux-x64.tar.gz'
 | 
			
		||||
      ],
 | 
			
		||||
      [
 | 
			
		||||
        '19-v8-canary',
 | 
			
		||||
        '19.0.0-v8-canary202210187d6960f23f',
 | 
			
		||||
        '19.0.0-v8-canary202210172ec229fc56',
 | 
			
		||||
        'https://my_mirror.org/download/v8-canary/v19.0.0-v8-canary202210187d6960f23f/node-v19.0.0-v8-canary202210187d6960f23f-linux-x64.tar.gz'
 | 
			
		||||
      ]
 | 
			
		||||
    ])(
 | 
			
		||||
      'get %s version from dist if check-latest is true',
 | 
			
		||||
      async (input, expectedVersion, foundVersion, expectedUrl) => {
 | 
			
		||||
        const foundToolPath = path.normalize(`/cache/node/${foundVersion}/x64`);
 | 
			
		||||
        const toolPath = path.normalize(`/cache/node/${expectedVersion}/x64`);
 | 
			
		||||
 | 
			
		||||
        inputs['node-version'] = input;
 | 
			
		||||
        inputs['check-latest'] = 'true';
 | 
			
		||||
        os['arch'] = 'x64';
 | 
			
		||||
        os['platform'] = 'linux';
 | 
			
		||||
        inputs['mirror'] = 'https://my_mirror.org';
 | 
			
		||||
        inputs['mirror-token'] = 'faketoken';
 | 
			
		||||
 | 
			
		||||
        findSpy.mockReturnValue(foundToolPath);
 | 
			
		||||
        findAllVersionsSpy.mockReturnValue([
 | 
			
		||||
          '20.0.0-v8-canary20221030fefe1c0879',
 | 
			
		||||
          '19.0.0-v8-canary202210172ec229fc56',
 | 
			
		||||
          '20.0.0-v8-canary2022102310ff1e5a8d'
 | 
			
		||||
        ]);
 | 
			
		||||
        dlSpy.mockImplementation(async () => '/some/temp/path');
 | 
			
		||||
        exSpy.mockImplementation(async () => '/some/other/temp/path');
 | 
			
		||||
        cacheSpy.mockImplementation(async () => toolPath);
 | 
			
		||||
 | 
			
		||||
        // act
 | 
			
		||||
        await main.run();
 | 
			
		||||
 | 
			
		||||
        // assert
 | 
			
		||||
        expect(findAllVersionsSpy).toHaveBeenCalled();
 | 
			
		||||
        expect(logSpy).toHaveBeenCalledWith(
 | 
			
		||||
          `Acquiring ${expectedVersion} - ${os.arch} from ${expectedUrl}`
 | 
			
		||||
        );
 | 
			
		||||
        expect(logSpy).toHaveBeenCalledWith('Extracting ...');
 | 
			
		||||
        expect(logSpy).toHaveBeenCalledWith('Adding to the cache ...');
 | 
			
		||||
        expect(cnSpy).toHaveBeenCalledWith(
 | 
			
		||||
          `::add-path::${path.join(toolPath, 'bin')}${osm.EOL}`
 | 
			
		||||
        );
 | 
			
		||||
      }
 | 
			
		||||
    );
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  describe('setup-node v8 canary tests', () => {
 | 
			
		||||
 
 | 
			
		||||
@@ -1 +1 @@
 | 
			
		||||
v14
 | 
			
		||||
v20
 | 
			
		||||
 
 | 
			
		||||
@@ -1 +1 @@
 | 
			
		||||
nodejs 14.0.0
 | 
			
		||||
nodejs 20.0.0
 | 
			
		||||
 
 | 
			
		||||
@@ -1 +1 @@
 | 
			
		||||
node 14.0.0
 | 
			
		||||
node 20.0.0
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										1632
									
								
								__tests__/data/package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										1632
									
								
								__tests__/data/package-lock.json
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										5
									
								
								__tests__/data/package-volta-extends.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								__tests__/data/package-volta-extends.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,5 @@
 | 
			
		||||
{
 | 
			
		||||
  "volta": {
 | 
			
		||||
    "extends": "./package-volta.json"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										8
									
								
								__tests__/data/package-volta.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								__tests__/data/package-volta.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
{
 | 
			
		||||
  "engines": {
 | 
			
		||||
    "node": "^14.0.0"
 | 
			
		||||
  },
 | 
			
		||||
  "volta": {
 | 
			
		||||
    "node": "20.0.0"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,8 +1,5 @@
 | 
			
		||||
{
 | 
			
		||||
  "engines": {
 | 
			
		||||
    "node": "^14.0.0"
 | 
			
		||||
  },
 | 
			
		||||
  "volta": {
 | 
			
		||||
    "node": "16.0.0"
 | 
			
		||||
    "node": "^20.0.0"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										1357
									
								
								__tests__/data/pnpm-lock.yaml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										1357
									
								
								__tests__/data/pnpm-lock.yaml
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -2,61 +2,111 @@
 | 
			
		||||
# yarn lockfile v1
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
accepts@~1.3.7:
 | 
			
		||||
  version "1.3.7"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd"
 | 
			
		||||
  integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==
 | 
			
		||||
accepts@^1.3.8:
 | 
			
		||||
  version "1.3.8"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e"
 | 
			
		||||
  integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    mime-types "~2.1.24"
 | 
			
		||||
    negotiator "0.6.2"
 | 
			
		||||
    mime-types "~2.1.34"
 | 
			
		||||
    negotiator "0.6.3"
 | 
			
		||||
 | 
			
		||||
array-flatten@1.1.1:
 | 
			
		||||
  version "1.1.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
 | 
			
		||||
  integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=
 | 
			
		||||
 | 
			
		||||
body-parser@1.19.0:
 | 
			
		||||
  version "1.19.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a"
 | 
			
		||||
  integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==
 | 
			
		||||
accepts@^2.0.0:
 | 
			
		||||
  version "2.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/accepts/-/accepts-2.0.0.tgz#bbcf4ba5075467f3f2131eab3cffc73c2f5d7895"
 | 
			
		||||
  integrity sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    bytes "3.1.0"
 | 
			
		||||
    content-type "~1.0.4"
 | 
			
		||||
    mime-types "^3.0.0"
 | 
			
		||||
    negotiator "^1.0.0"
 | 
			
		||||
 | 
			
		||||
array-flatten@3.0.0, array-flatten@^3.0.0:
 | 
			
		||||
  version "3.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-3.0.0.tgz#6428ca2ee52c7b823192ec600fa3ed2f157cd541"
 | 
			
		||||
  integrity sha512-zPMVc3ZYlGLNk4mpK1NzP2wg0ml9t7fUgDsayR5Y5rSzxQilzR9FGu/EH2jQOcKSAeAfWeylyW8juy3OkWRvNA==
 | 
			
		||||
 | 
			
		||||
body-parser@^1.20.3:
 | 
			
		||||
  version "1.20.3"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.3.tgz#1953431221c6fb5cd63c4b36d53fab0928e548c6"
 | 
			
		||||
  integrity sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    bytes "3.1.2"
 | 
			
		||||
    content-type "~1.0.5"
 | 
			
		||||
    debug "2.6.9"
 | 
			
		||||
    depd "~1.1.2"
 | 
			
		||||
    http-errors "1.7.2"
 | 
			
		||||
    depd "2.0.0"
 | 
			
		||||
    destroy "1.2.0"
 | 
			
		||||
    http-errors "2.0.0"
 | 
			
		||||
    iconv-lite "0.4.24"
 | 
			
		||||
    on-finished "~2.3.0"
 | 
			
		||||
    qs "6.7.0"
 | 
			
		||||
    raw-body "2.4.0"
 | 
			
		||||
    type-is "~1.6.17"
 | 
			
		||||
    on-finished "2.4.1"
 | 
			
		||||
    qs "6.13.0"
 | 
			
		||||
    raw-body "2.5.2"
 | 
			
		||||
    type-is "~1.6.18"
 | 
			
		||||
    unpipe "1.0.0"
 | 
			
		||||
 | 
			
		||||
bytes@3.1.0:
 | 
			
		||||
  version "3.1.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6"
 | 
			
		||||
  integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==
 | 
			
		||||
 | 
			
		||||
content-disposition@0.5.3:
 | 
			
		||||
  version "0.5.3"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd"
 | 
			
		||||
  integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==
 | 
			
		||||
body-parser@^2.0.1:
 | 
			
		||||
  version "2.0.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-2.0.1.tgz#979de4a43468c5624403457fd6d45f797faffbaf"
 | 
			
		||||
  integrity sha512-PagxbjvuPH6tv0f/kdVbFGcb79D236SLcDTs6DrQ7GizJ88S1UWP4nMXFEo/I4fdhGRGabvFfFjVGm3M7U8JwA==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    safe-buffer "5.1.2"
 | 
			
		||||
    bytes "3.1.2"
 | 
			
		||||
    content-type "~1.0.5"
 | 
			
		||||
    debug "3.1.0"
 | 
			
		||||
    destroy "1.2.0"
 | 
			
		||||
    http-errors "2.0.0"
 | 
			
		||||
    iconv-lite "0.5.2"
 | 
			
		||||
    on-finished "2.4.1"
 | 
			
		||||
    qs "6.13.0"
 | 
			
		||||
    raw-body "^3.0.0"
 | 
			
		||||
    type-is "~1.6.18"
 | 
			
		||||
    unpipe "1.0.0"
 | 
			
		||||
 | 
			
		||||
content-type@~1.0.4:
 | 
			
		||||
  version "1.0.4"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
 | 
			
		||||
  integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==
 | 
			
		||||
bytes@3.1.2, bytes@^3.1.2:
 | 
			
		||||
  version "3.1.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5"
 | 
			
		||||
  integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==
 | 
			
		||||
 | 
			
		||||
cookie-signature@1.0.6:
 | 
			
		||||
  version "1.0.6"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
 | 
			
		||||
  integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw=
 | 
			
		||||
call-bind@^1.0.7:
 | 
			
		||||
  version "1.0.7"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9"
 | 
			
		||||
  integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    es-define-property "^1.0.0"
 | 
			
		||||
    es-errors "^1.3.0"
 | 
			
		||||
    function-bind "^1.1.2"
 | 
			
		||||
    get-intrinsic "^1.2.4"
 | 
			
		||||
    set-function-length "^1.2.1"
 | 
			
		||||
 | 
			
		||||
cookie@0.4.0:
 | 
			
		||||
  version "0.4.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba"
 | 
			
		||||
  integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==
 | 
			
		||||
content-disposition@^0.5.4:
 | 
			
		||||
  version "0.5.4"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe"
 | 
			
		||||
  integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    safe-buffer "5.2.1"
 | 
			
		||||
 | 
			
		||||
content-disposition@^1.0.0:
 | 
			
		||||
  version "1.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-1.0.0.tgz#844426cb398f934caefcbb172200126bc7ceace2"
 | 
			
		||||
  integrity sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    safe-buffer "5.2.1"
 | 
			
		||||
 | 
			
		||||
content-type@^1.0.5, content-type@~1.0.4, content-type@~1.0.5:
 | 
			
		||||
  version "1.0.5"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918"
 | 
			
		||||
  integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==
 | 
			
		||||
 | 
			
		||||
cookie-signature@^1.0.7, cookie-signature@^1.2.1:
 | 
			
		||||
  version "1.2.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.2.1.tgz#790dea2cce64638c7ae04d9fabed193bd7ccf3b4"
 | 
			
		||||
  integrity sha512-78KWk9T26NhzXtuL26cIJ8/qNHANyJ/ZYrmEXFzUmhZdjpBv+DlWlOANRTGBt48YcyslsLrj0bMLFTmXvLRCOw==
 | 
			
		||||
 | 
			
		||||
cookie@0.6.0:
 | 
			
		||||
  version "0.6.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.6.0.tgz#2798b04b071b0ecbff0dbb62a505a8efa4e19051"
 | 
			
		||||
  integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==
 | 
			
		||||
 | 
			
		||||
cookie@^0.5.0:
 | 
			
		||||
  version "0.5.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b"
 | 
			
		||||
  integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==
 | 
			
		||||
 | 
			
		||||
debug@2.6.9:
 | 
			
		||||
  version "2.6.9"
 | 
			
		||||
@@ -65,116 +115,235 @@ debug@2.6.9:
 | 
			
		||||
  dependencies:
 | 
			
		||||
    ms "2.0.0"
 | 
			
		||||
 | 
			
		||||
debug@3.1.0:
 | 
			
		||||
  version "3.1.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
 | 
			
		||||
  integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    ms "2.0.0"
 | 
			
		||||
 | 
			
		||||
debug@4.3.6:
 | 
			
		||||
  version "4.3.6"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.6.tgz#2ab2c38fbaffebf8aa95fdfe6d88438c7a13c52b"
 | 
			
		||||
  integrity sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    ms "2.1.2"
 | 
			
		||||
 | 
			
		||||
debug@^4.0.0, debug@^4.3.5:
 | 
			
		||||
  version "4.3.7"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52"
 | 
			
		||||
  integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    ms "^2.1.3"
 | 
			
		||||
 | 
			
		||||
define-data-property@^1.1.4:
 | 
			
		||||
  version "1.1.4"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e"
 | 
			
		||||
  integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    es-define-property "^1.0.0"
 | 
			
		||||
    es-errors "^1.3.0"
 | 
			
		||||
    gopd "^1.0.1"
 | 
			
		||||
 | 
			
		||||
depd@2.0.0, depd@^2.0.0:
 | 
			
		||||
  version "2.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df"
 | 
			
		||||
  integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==
 | 
			
		||||
 | 
			
		||||
depd@~1.1.2:
 | 
			
		||||
  version "1.1.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
 | 
			
		||||
  integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=
 | 
			
		||||
  integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==
 | 
			
		||||
 | 
			
		||||
destroy@~1.0.4:
 | 
			
		||||
  version "1.0.4"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
 | 
			
		||||
  integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=
 | 
			
		||||
destroy@1.2.0, destroy@^1.1.0, destroy@^1.2.0:
 | 
			
		||||
  version "1.2.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015"
 | 
			
		||||
  integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==
 | 
			
		||||
 | 
			
		||||
ee-first@1.1.1:
 | 
			
		||||
ee-first@1.1.1, ee-first@^1.1.1:
 | 
			
		||||
  version "1.1.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
 | 
			
		||||
  integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
 | 
			
		||||
  integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==
 | 
			
		||||
 | 
			
		||||
encodeurl@^2.0.0, encodeurl@~2.0.0:
 | 
			
		||||
  version "2.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58"
 | 
			
		||||
  integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==
 | 
			
		||||
 | 
			
		||||
encodeurl@~1.0.2:
 | 
			
		||||
  version "1.0.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
 | 
			
		||||
  integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
 | 
			
		||||
  integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==
 | 
			
		||||
 | 
			
		||||
escape-html@~1.0.3:
 | 
			
		||||
es-define-property@^1.0.0:
 | 
			
		||||
  version "1.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845"
 | 
			
		||||
  integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    get-intrinsic "^1.2.4"
 | 
			
		||||
 | 
			
		||||
es-errors@^1.3.0:
 | 
			
		||||
  version "1.3.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f"
 | 
			
		||||
  integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==
 | 
			
		||||
 | 
			
		||||
escape-html@^1.0.3, escape-html@~1.0.3:
 | 
			
		||||
  version "1.0.3"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
 | 
			
		||||
  integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=
 | 
			
		||||
  integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==
 | 
			
		||||
 | 
			
		||||
etag@~1.8.1:
 | 
			
		||||
etag@^1.8.1, etag@~1.8.1:
 | 
			
		||||
  version "1.8.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
 | 
			
		||||
  integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=
 | 
			
		||||
  integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==
 | 
			
		||||
 | 
			
		||||
express@^4.17.1:
 | 
			
		||||
  version "4.17.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134"
 | 
			
		||||
  integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==
 | 
			
		||||
express@^5.0.0:
 | 
			
		||||
  version "5.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/express/-/express-5.0.0.tgz#744f9ec86025a01aeca99e4300aa4fc050d493c7"
 | 
			
		||||
  integrity sha512-V4UkHQc+B7ldh1YC84HCXHwf60M4BOMvp9rkvTUWCK5apqDC1Esnbid4wm6nFyVuDy8XMfETsJw5lsIGBWyo0A==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    accepts "~1.3.7"
 | 
			
		||||
    array-flatten "1.1.1"
 | 
			
		||||
    body-parser "1.19.0"
 | 
			
		||||
    content-disposition "0.5.3"
 | 
			
		||||
    accepts "^2.0.0"
 | 
			
		||||
    body-parser "^2.0.1"
 | 
			
		||||
    content-disposition "^1.0.0"
 | 
			
		||||
    content-type "~1.0.4"
 | 
			
		||||
    cookie "0.4.0"
 | 
			
		||||
    cookie-signature "1.0.6"
 | 
			
		||||
    debug "2.6.9"
 | 
			
		||||
    depd "~1.1.2"
 | 
			
		||||
    encodeurl "~1.0.2"
 | 
			
		||||
    cookie "0.6.0"
 | 
			
		||||
    cookie-signature "^1.2.1"
 | 
			
		||||
    debug "4.3.6"
 | 
			
		||||
    depd "2.0.0"
 | 
			
		||||
    encodeurl "~2.0.0"
 | 
			
		||||
    escape-html "~1.0.3"
 | 
			
		||||
    etag "~1.8.1"
 | 
			
		||||
    finalhandler "~1.1.2"
 | 
			
		||||
    fresh "0.5.2"
 | 
			
		||||
    merge-descriptors "1.0.1"
 | 
			
		||||
    finalhandler "^2.0.0"
 | 
			
		||||
    fresh "2.0.0"
 | 
			
		||||
    http-errors "2.0.0"
 | 
			
		||||
    merge-descriptors "^2.0.0"
 | 
			
		||||
    methods "~1.1.2"
 | 
			
		||||
    on-finished "~2.3.0"
 | 
			
		||||
    mime-types "^3.0.0"
 | 
			
		||||
    on-finished "2.4.1"
 | 
			
		||||
    once "1.4.0"
 | 
			
		||||
    parseurl "~1.3.3"
 | 
			
		||||
    path-to-regexp "0.1.7"
 | 
			
		||||
    proxy-addr "~2.0.5"
 | 
			
		||||
    qs "6.7.0"
 | 
			
		||||
    proxy-addr "~2.0.7"
 | 
			
		||||
    qs "6.13.0"
 | 
			
		||||
    range-parser "~1.2.1"
 | 
			
		||||
    safe-buffer "5.1.2"
 | 
			
		||||
    send "0.17.1"
 | 
			
		||||
    serve-static "1.14.1"
 | 
			
		||||
    setprototypeof "1.1.1"
 | 
			
		||||
    statuses "~1.5.0"
 | 
			
		||||
    type-is "~1.6.18"
 | 
			
		||||
    router "^2.0.0"
 | 
			
		||||
    safe-buffer "5.2.1"
 | 
			
		||||
    send "^1.1.0"
 | 
			
		||||
    serve-static "^2.1.0"
 | 
			
		||||
    setprototypeof "1.2.0"
 | 
			
		||||
    statuses "2.0.1"
 | 
			
		||||
    type-is "^2.0.0"
 | 
			
		||||
    utils-merge "1.0.1"
 | 
			
		||||
    vary "~1.1.2"
 | 
			
		||||
 | 
			
		||||
finalhandler@~1.1.2:
 | 
			
		||||
  version "1.1.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d"
 | 
			
		||||
  integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==
 | 
			
		||||
finalhandler@^1.2.0:
 | 
			
		||||
  version "1.3.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.3.1.tgz#0c575f1d1d324ddd1da35ad7ece3df7d19088019"
 | 
			
		||||
  integrity sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    debug "2.6.9"
 | 
			
		||||
    encodeurl "~2.0.0"
 | 
			
		||||
    escape-html "~1.0.3"
 | 
			
		||||
    on-finished "2.4.1"
 | 
			
		||||
    parseurl "~1.3.3"
 | 
			
		||||
    statuses "2.0.1"
 | 
			
		||||
    unpipe "~1.0.0"
 | 
			
		||||
 | 
			
		||||
finalhandler@^2.0.0:
 | 
			
		||||
  version "2.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-2.0.0.tgz#9d3c79156dfa798069db7de7dd53bc37546f564b"
 | 
			
		||||
  integrity sha512-MX6Zo2adDViYh+GcxxB1dpO43eypOGUOL12rLCOTMQv/DfIbpSJUy4oQIIZhVZkH9e+bZWKMon0XHFEju16tkQ==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    debug "2.6.9"
 | 
			
		||||
    encodeurl "~1.0.2"
 | 
			
		||||
    escape-html "~1.0.3"
 | 
			
		||||
    on-finished "~2.3.0"
 | 
			
		||||
    on-finished "2.4.1"
 | 
			
		||||
    parseurl "~1.3.3"
 | 
			
		||||
    statuses "~1.5.0"
 | 
			
		||||
    statuses "2.0.1"
 | 
			
		||||
    unpipe "~1.0.0"
 | 
			
		||||
 | 
			
		||||
forwarded@~0.1.2:
 | 
			
		||||
  version "0.1.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84"
 | 
			
		||||
  integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=
 | 
			
		||||
forwarded@0.2.0, forwarded@^0.2.0:
 | 
			
		||||
  version "0.2.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811"
 | 
			
		||||
  integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==
 | 
			
		||||
 | 
			
		||||
fresh@0.5.2:
 | 
			
		||||
fresh@0.5.2, fresh@^0.5.2:
 | 
			
		||||
  version "0.5.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
 | 
			
		||||
  integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=
 | 
			
		||||
  integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==
 | 
			
		||||
 | 
			
		||||
http-errors@1.7.2:
 | 
			
		||||
  version "1.7.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f"
 | 
			
		||||
  integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==
 | 
			
		||||
fresh@2.0.0:
 | 
			
		||||
  version "2.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/fresh/-/fresh-2.0.0.tgz#8dd7df6a1b3a1b3a5cf186c05a5dd267622635a4"
 | 
			
		||||
  integrity sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==
 | 
			
		||||
 | 
			
		||||
function-bind@^1.1.2:
 | 
			
		||||
  version "1.1.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c"
 | 
			
		||||
  integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
 | 
			
		||||
 | 
			
		||||
get-intrinsic@^1.1.3, get-intrinsic@^1.2.4:
 | 
			
		||||
  version "1.2.4"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd"
 | 
			
		||||
  integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    depd "~1.1.2"
 | 
			
		||||
    inherits "2.0.3"
 | 
			
		||||
    setprototypeof "1.1.1"
 | 
			
		||||
    statuses ">= 1.5.0 < 2"
 | 
			
		||||
    toidentifier "1.0.0"
 | 
			
		||||
    es-errors "^1.3.0"
 | 
			
		||||
    function-bind "^1.1.2"
 | 
			
		||||
    has-proto "^1.0.1"
 | 
			
		||||
    has-symbols "^1.0.3"
 | 
			
		||||
    hasown "^2.0.0"
 | 
			
		||||
 | 
			
		||||
http-errors@~1.7.2:
 | 
			
		||||
  version "1.7.3"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06"
 | 
			
		||||
  integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==
 | 
			
		||||
gopd@^1.0.1:
 | 
			
		||||
  version "1.0.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c"
 | 
			
		||||
  integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    get-intrinsic "^1.1.3"
 | 
			
		||||
 | 
			
		||||
has-property-descriptors@^1.0.2:
 | 
			
		||||
  version "1.0.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854"
 | 
			
		||||
  integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    es-define-property "^1.0.0"
 | 
			
		||||
 | 
			
		||||
has-proto@^1.0.1:
 | 
			
		||||
  version "1.0.3"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd"
 | 
			
		||||
  integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==
 | 
			
		||||
 | 
			
		||||
has-symbols@^1.0.3:
 | 
			
		||||
  version "1.0.3"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8"
 | 
			
		||||
  integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
 | 
			
		||||
 | 
			
		||||
hasown@^2.0.0:
 | 
			
		||||
  version "2.0.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003"
 | 
			
		||||
  integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    function-bind "^1.1.2"
 | 
			
		||||
 | 
			
		||||
http-errors@2.0.0, http-errors@^2.0.0:
 | 
			
		||||
  version "2.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3"
 | 
			
		||||
  integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    depd "2.0.0"
 | 
			
		||||
    inherits "2.0.4"
 | 
			
		||||
    setprototypeof "1.2.0"
 | 
			
		||||
    statuses "2.0.1"
 | 
			
		||||
    toidentifier "1.0.1"
 | 
			
		||||
 | 
			
		||||
http-errors@^1.8.0:
 | 
			
		||||
  version "1.8.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.1.tgz#7c3f28577cbc8a207388455dbd62295ed07bd68c"
 | 
			
		||||
  integrity sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    depd "~1.1.2"
 | 
			
		||||
    inherits "2.0.4"
 | 
			
		||||
    setprototypeof "1.1.1"
 | 
			
		||||
    setprototypeof "1.2.0"
 | 
			
		||||
    statuses ">= 1.5.0 < 2"
 | 
			
		||||
    toidentifier "1.0.0"
 | 
			
		||||
    toidentifier "1.0.1"
 | 
			
		||||
 | 
			
		||||
iconv-lite@0.4.24:
 | 
			
		||||
  version "0.4.24"
 | 
			
		||||
@@ -183,12 +352,21 @@ iconv-lite@0.4.24:
 | 
			
		||||
  dependencies:
 | 
			
		||||
    safer-buffer ">= 2.1.2 < 3"
 | 
			
		||||
 | 
			
		||||
inherits@2.0.3:
 | 
			
		||||
  version "2.0.3"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
 | 
			
		||||
  integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
 | 
			
		||||
iconv-lite@0.5.2:
 | 
			
		||||
  version "0.5.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.5.2.tgz#af6d628dccfb463b7364d97f715e4b74b8c8c2b8"
 | 
			
		||||
  integrity sha512-kERHXvpSaB4aU3eANwidg79K8FlrN77m8G9V+0vOR3HYaRifrlwMEpT7ZBJqLSEIHnEgJTHcWK82wwLwwKwtag==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    safer-buffer ">= 2.1.2 < 3"
 | 
			
		||||
 | 
			
		||||
inherits@2.0.4:
 | 
			
		||||
iconv-lite@0.6.3, iconv-lite@^0.6.0:
 | 
			
		||||
  version "0.6.3"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501"
 | 
			
		||||
  integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    safer-buffer ">= 2.1.2 < 3.0.0"
 | 
			
		||||
 | 
			
		||||
inherits@2.0.4, inherits@^2.0.4:
 | 
			
		||||
  version "2.0.4"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
 | 
			
		||||
  integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
 | 
			
		||||
@@ -198,34 +376,61 @@ ipaddr.js@1.9.1:
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3"
 | 
			
		||||
  integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
 | 
			
		||||
 | 
			
		||||
ipaddr.js@^2.2.0:
 | 
			
		||||
  version "2.2.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.2.0.tgz#d33fa7bac284f4de7af949638c9d68157c6b92e8"
 | 
			
		||||
  integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==
 | 
			
		||||
 | 
			
		||||
is-promise@4.0.0:
 | 
			
		||||
  version "4.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-4.0.0.tgz#42ff9f84206c1991d26debf520dd5c01042dd2f3"
 | 
			
		||||
  integrity sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==
 | 
			
		||||
 | 
			
		||||
media-typer@0.3.0:
 | 
			
		||||
  version "0.3.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
 | 
			
		||||
  integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=
 | 
			
		||||
  integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==
 | 
			
		||||
 | 
			
		||||
merge-descriptors@1.0.1:
 | 
			
		||||
  version "1.0.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
 | 
			
		||||
  integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=
 | 
			
		||||
media-typer@^1.1.0:
 | 
			
		||||
  version "1.1.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-1.1.0.tgz#6ab74b8f2d3320f2064b2a87a38e7931ff3a5561"
 | 
			
		||||
  integrity sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==
 | 
			
		||||
 | 
			
		||||
methods@~1.1.2:
 | 
			
		||||
merge-descriptors@^2.0.0:
 | 
			
		||||
  version "2.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-2.0.0.tgz#ea922f660635a2249ee565e0449f951e6b603808"
 | 
			
		||||
  integrity sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==
 | 
			
		||||
 | 
			
		||||
methods@^1.1.2, methods@~1.1.2:
 | 
			
		||||
  version "1.1.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
 | 
			
		||||
  integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=
 | 
			
		||||
  integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==
 | 
			
		||||
 | 
			
		||||
mime-db@1.47.0:
 | 
			
		||||
  version "1.47.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.47.0.tgz#8cb313e59965d3c05cfbf898915a267af46a335c"
 | 
			
		||||
  integrity sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==
 | 
			
		||||
mime-db@1.52.0:
 | 
			
		||||
  version "1.52.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
 | 
			
		||||
  integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
 | 
			
		||||
 | 
			
		||||
mime-types@~2.1.24:
 | 
			
		||||
  version "2.1.30"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.30.tgz#6e7be8b4c479825f85ed6326695db73f9305d62d"
 | 
			
		||||
  integrity sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==
 | 
			
		||||
mime-db@^1.51.0, mime-db@^1.53.0:
 | 
			
		||||
  version "1.53.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.53.0.tgz#3cb63cd820fc29896d9d4e8c32ab4fcd74ccb447"
 | 
			
		||||
  integrity sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==
 | 
			
		||||
 | 
			
		||||
mime-types@^2.1.35, mime-types@~2.1.24, mime-types@~2.1.34:
 | 
			
		||||
  version "2.1.35"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a"
 | 
			
		||||
  integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    mime-db "1.47.0"
 | 
			
		||||
    mime-db "1.52.0"
 | 
			
		||||
 | 
			
		||||
mime@1.6.0:
 | 
			
		||||
mime-types@^3.0.0:
 | 
			
		||||
  version "3.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-3.0.0.tgz#148453a900475522d095a445355c074cca4f5217"
 | 
			
		||||
  integrity sha512-XqoSHeCGjVClAmoGFG3lVFqQFRIrTVw2OH3axRqAcfaw+gHWIfnASS92AV+Rl/mk0MupgZTRHQOjxY6YVnzK5w==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    mime-db "^1.53.0"
 | 
			
		||||
 | 
			
		||||
mime@1.6.0, mime@^1.6.0:
 | 
			
		||||
  version "1.6.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
 | 
			
		||||
  integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
 | 
			
		||||
@@ -233,118 +438,220 @@ mime@1.6.0:
 | 
			
		||||
ms@2.0.0:
 | 
			
		||||
  version "2.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
 | 
			
		||||
  integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
 | 
			
		||||
  integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==
 | 
			
		||||
 | 
			
		||||
ms@2.1.1:
 | 
			
		||||
  version "2.1.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a"
 | 
			
		||||
  integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==
 | 
			
		||||
ms@2.1.2:
 | 
			
		||||
  version "2.1.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
 | 
			
		||||
  integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
 | 
			
		||||
 | 
			
		||||
negotiator@0.6.2:
 | 
			
		||||
  version "0.6.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
 | 
			
		||||
  integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==
 | 
			
		||||
ms@2.1.3, ms@^2.1.2, ms@^2.1.3:
 | 
			
		||||
  version "2.1.3"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
 | 
			
		||||
  integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
 | 
			
		||||
 | 
			
		||||
on-finished@~2.3.0:
 | 
			
		||||
  version "2.3.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
 | 
			
		||||
  integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=
 | 
			
		||||
negotiator@0.6.3, negotiator@^0.6.3:
 | 
			
		||||
  version "0.6.3"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd"
 | 
			
		||||
  integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==
 | 
			
		||||
 | 
			
		||||
negotiator@^1.0.0:
 | 
			
		||||
  version "1.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-1.0.0.tgz#b6c91bb47172d69f93cfd7c357bbb529019b5f6a"
 | 
			
		||||
  integrity sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==
 | 
			
		||||
 | 
			
		||||
object-inspect@^1.13.1:
 | 
			
		||||
  version "1.13.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.2.tgz#dea0088467fb991e67af4058147a24824a3043ff"
 | 
			
		||||
  integrity sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==
 | 
			
		||||
 | 
			
		||||
on-finished@2.4.1, on-finished@^2.4.0, on-finished@^2.4.1:
 | 
			
		||||
  version "2.4.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f"
 | 
			
		||||
  integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    ee-first "1.1.1"
 | 
			
		||||
 | 
			
		||||
parseurl@~1.3.3:
 | 
			
		||||
once@1.4.0:
 | 
			
		||||
  version "1.4.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
 | 
			
		||||
  integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    wrappy "1"
 | 
			
		||||
 | 
			
		||||
parseurl@^1.3.3, parseurl@~1.3.3:
 | 
			
		||||
  version "1.3.3"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
 | 
			
		||||
  integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
 | 
			
		||||
 | 
			
		||||
path-to-regexp@0.1.7:
 | 
			
		||||
  version "0.1.7"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
 | 
			
		||||
  integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=
 | 
			
		||||
path-to-regexp@^8.0.0:
 | 
			
		||||
  version "8.1.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-8.1.0.tgz#4d687606ed0be8ed512ba802eb94d620cb1a86f0"
 | 
			
		||||
  integrity sha512-Bqn3vc8CMHty6zuD+tG23s6v2kwxslHEhTj4eYaVKGIEB+YX/2wd0/rgXLFD9G9id9KCtbVy/3ZgmvZjpa0UdQ==
 | 
			
		||||
 | 
			
		||||
proxy-addr@~2.0.5:
 | 
			
		||||
  version "2.0.6"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf"
 | 
			
		||||
  integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==
 | 
			
		||||
proxy-addr@^2.0.7, proxy-addr@~2.0.7:
 | 
			
		||||
  version "2.0.7"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025"
 | 
			
		||||
  integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    forwarded "~0.1.2"
 | 
			
		||||
    forwarded "0.2.0"
 | 
			
		||||
    ipaddr.js "1.9.1"
 | 
			
		||||
 | 
			
		||||
qs@6.7.0:
 | 
			
		||||
  version "6.7.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc"
 | 
			
		||||
  integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==
 | 
			
		||||
qs@6.13.0, qs@^6.8.0:
 | 
			
		||||
  version "6.13.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/qs/-/qs-6.13.0.tgz#6ca3bd58439f7e245655798997787b0d88a51906"
 | 
			
		||||
  integrity sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    side-channel "^1.0.6"
 | 
			
		||||
 | 
			
		||||
range-parser@~1.2.1:
 | 
			
		||||
range-parser@^1.2.1, range-parser@~1.2.1:
 | 
			
		||||
  version "1.2.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
 | 
			
		||||
  integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
 | 
			
		||||
 | 
			
		||||
raw-body@2.4.0:
 | 
			
		||||
  version "2.4.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332"
 | 
			
		||||
  integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==
 | 
			
		||||
raw-body@2.5.2, raw-body@^2.4.1:
 | 
			
		||||
  version "2.5.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a"
 | 
			
		||||
  integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    bytes "3.1.0"
 | 
			
		||||
    http-errors "1.7.2"
 | 
			
		||||
    bytes "3.1.2"
 | 
			
		||||
    http-errors "2.0.0"
 | 
			
		||||
    iconv-lite "0.4.24"
 | 
			
		||||
    unpipe "1.0.0"
 | 
			
		||||
 | 
			
		||||
safe-buffer@5.1.2:
 | 
			
		||||
  version "5.1.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
 | 
			
		||||
  integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
 | 
			
		||||
raw-body@^3.0.0:
 | 
			
		||||
  version "3.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-3.0.0.tgz#25b3476f07a51600619dae3fe82ddc28a36e5e0f"
 | 
			
		||||
  integrity sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    bytes "3.1.2"
 | 
			
		||||
    http-errors "2.0.0"
 | 
			
		||||
    iconv-lite "0.6.3"
 | 
			
		||||
    unpipe "1.0.0"
 | 
			
		||||
 | 
			
		||||
"safer-buffer@>= 2.1.2 < 3":
 | 
			
		||||
router@^2.0.0:
 | 
			
		||||
  version "2.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/router/-/router-2.0.0.tgz#8692720b95de83876870d7bc638dd3c7e1ae8a27"
 | 
			
		||||
  integrity sha512-dIM5zVoG8xhC6rnSN8uoAgFARwTE7BQs8YwHEvK0VCmfxQXMaOuA1uiR1IPwsW7JyK5iTt7Od/TC9StasS2NPQ==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    array-flatten "3.0.0"
 | 
			
		||||
    is-promise "4.0.0"
 | 
			
		||||
    methods "~1.1.2"
 | 
			
		||||
    parseurl "~1.3.3"
 | 
			
		||||
    path-to-regexp "^8.0.0"
 | 
			
		||||
    setprototypeof "1.2.0"
 | 
			
		||||
    utils-merge "1.0.1"
 | 
			
		||||
 | 
			
		||||
safe-buffer@5.2.1, safe-buffer@^5.2.1:
 | 
			
		||||
  version "5.2.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
 | 
			
		||||
  integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
 | 
			
		||||
 | 
			
		||||
"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.1.2:
 | 
			
		||||
  version "2.1.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
 | 
			
		||||
  integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
 | 
			
		||||
 | 
			
		||||
send@0.17.1:
 | 
			
		||||
  version "0.17.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8"
 | 
			
		||||
  integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==
 | 
			
		||||
send@0.19.0, send@^0.19.0:
 | 
			
		||||
  version "0.19.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/send/-/send-0.19.0.tgz#bbc5a388c8ea6c048967049dbeac0e4a3f09d7f8"
 | 
			
		||||
  integrity sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    debug "2.6.9"
 | 
			
		||||
    depd "~1.1.2"
 | 
			
		||||
    destroy "~1.0.4"
 | 
			
		||||
    depd "2.0.0"
 | 
			
		||||
    destroy "1.2.0"
 | 
			
		||||
    encodeurl "~1.0.2"
 | 
			
		||||
    escape-html "~1.0.3"
 | 
			
		||||
    etag "~1.8.1"
 | 
			
		||||
    fresh "0.5.2"
 | 
			
		||||
    http-errors "~1.7.2"
 | 
			
		||||
    http-errors "2.0.0"
 | 
			
		||||
    mime "1.6.0"
 | 
			
		||||
    ms "2.1.1"
 | 
			
		||||
    on-finished "~2.3.0"
 | 
			
		||||
    ms "2.1.3"
 | 
			
		||||
    on-finished "2.4.1"
 | 
			
		||||
    range-parser "~1.2.1"
 | 
			
		||||
    statuses "~1.5.0"
 | 
			
		||||
    statuses "2.0.1"
 | 
			
		||||
 | 
			
		||||
serve-static@1.14.1:
 | 
			
		||||
  version "1.14.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9"
 | 
			
		||||
  integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==
 | 
			
		||||
send@^1.0.0, send@^1.1.0:
 | 
			
		||||
  version "1.1.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/send/-/send-1.1.0.tgz#4efe6ff3bb2139b0e5b2648d8b18d4dec48fc9c5"
 | 
			
		||||
  integrity sha512-v67WcEouB5GxbTWL/4NeToqcZiAWEq90N888fczVArY8A79J0L4FD7vj5hm3eUMua5EpoQ59wa/oovY6TLvRUA==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    encodeurl "~1.0.2"
 | 
			
		||||
    debug "^4.3.5"
 | 
			
		||||
    destroy "^1.2.0"
 | 
			
		||||
    encodeurl "^2.0.0"
 | 
			
		||||
    escape-html "^1.0.3"
 | 
			
		||||
    etag "^1.8.1"
 | 
			
		||||
    fresh "^0.5.2"
 | 
			
		||||
    http-errors "^2.0.0"
 | 
			
		||||
    mime-types "^2.1.35"
 | 
			
		||||
    ms "^2.1.3"
 | 
			
		||||
    on-finished "^2.4.1"
 | 
			
		||||
    range-parser "^1.2.1"
 | 
			
		||||
    statuses "^2.0.1"
 | 
			
		||||
 | 
			
		||||
serve-static@^1.15.0:
 | 
			
		||||
  version "1.16.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.16.2.tgz#b6a5343da47f6bdd2673848bf45754941e803296"
 | 
			
		||||
  integrity sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    encodeurl "~2.0.0"
 | 
			
		||||
    escape-html "~1.0.3"
 | 
			
		||||
    parseurl "~1.3.3"
 | 
			
		||||
    send "0.17.1"
 | 
			
		||||
    send "0.19.0"
 | 
			
		||||
 | 
			
		||||
setprototypeof@1.1.1:
 | 
			
		||||
  version "1.1.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683"
 | 
			
		||||
  integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==
 | 
			
		||||
serve-static@^2.1.0:
 | 
			
		||||
  version "2.1.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-2.1.0.tgz#1b4eacbe93006b79054faa4d6d0a501d7f0e84e2"
 | 
			
		||||
  integrity sha512-A3We5UfEjG8Z7VkDv6uItWw6HY2bBSBJT1KtVESn6EOoOr2jAxNhxWCLY3jDE2WcuHXByWju74ck3ZgLwL8xmA==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    encodeurl "^2.0.0"
 | 
			
		||||
    escape-html "^1.0.3"
 | 
			
		||||
    parseurl "^1.3.3"
 | 
			
		||||
    send "^1.0.0"
 | 
			
		||||
 | 
			
		||||
"statuses@>= 1.5.0 < 2", statuses@~1.5.0:
 | 
			
		||||
set-function-length@^1.2.1:
 | 
			
		||||
  version "1.2.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449"
 | 
			
		||||
  integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    define-data-property "^1.1.4"
 | 
			
		||||
    es-errors "^1.3.0"
 | 
			
		||||
    function-bind "^1.1.2"
 | 
			
		||||
    get-intrinsic "^1.2.4"
 | 
			
		||||
    gopd "^1.0.1"
 | 
			
		||||
    has-property-descriptors "^1.0.2"
 | 
			
		||||
 | 
			
		||||
setprototypeof@1.2.0, setprototypeof@^1.2.0:
 | 
			
		||||
  version "1.2.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424"
 | 
			
		||||
  integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==
 | 
			
		||||
 | 
			
		||||
side-channel@^1.0.6:
 | 
			
		||||
  version "1.0.6"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2"
 | 
			
		||||
  integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    call-bind "^1.0.7"
 | 
			
		||||
    es-errors "^1.3.0"
 | 
			
		||||
    get-intrinsic "^1.2.4"
 | 
			
		||||
    object-inspect "^1.13.1"
 | 
			
		||||
 | 
			
		||||
statuses@2.0.1, statuses@^2.0.1:
 | 
			
		||||
  version "2.0.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63"
 | 
			
		||||
  integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==
 | 
			
		||||
 | 
			
		||||
"statuses@>= 1.5.0 < 2":
 | 
			
		||||
  version "1.5.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
 | 
			
		||||
  integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=
 | 
			
		||||
  integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==
 | 
			
		||||
 | 
			
		||||
toidentifier@1.0.0:
 | 
			
		||||
  version "1.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553"
 | 
			
		||||
  integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==
 | 
			
		||||
toidentifier@1.0.1:
 | 
			
		||||
  version "1.0.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35"
 | 
			
		||||
  integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==
 | 
			
		||||
 | 
			
		||||
type-is@~1.6.17, type-is@~1.6.18:
 | 
			
		||||
type-is@^1.6.18, type-is@~1.6.18:
 | 
			
		||||
  version "1.6.18"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
 | 
			
		||||
  integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==
 | 
			
		||||
@@ -352,17 +659,31 @@ type-is@~1.6.17, type-is@~1.6.18:
 | 
			
		||||
    media-typer "0.3.0"
 | 
			
		||||
    mime-types "~2.1.24"
 | 
			
		||||
 | 
			
		||||
type-is@^2.0.0:
 | 
			
		||||
  version "2.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/type-is/-/type-is-2.0.0.tgz#7d249c2e2af716665cc149575dadb8b3858653af"
 | 
			
		||||
  integrity sha512-gd0sGezQYCbWSbkZr75mln4YBidWUN60+devscpLF5mtRDUpiaTvKpBNrdaCvel1NdR2k6vclXybU5fBd2i+nw==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    content-type "^1.0.5"
 | 
			
		||||
    media-typer "^1.1.0"
 | 
			
		||||
    mime-types "^3.0.0"
 | 
			
		||||
 | 
			
		||||
unpipe@1.0.0, unpipe@~1.0.0:
 | 
			
		||||
  version "1.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
 | 
			
		||||
  integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=
 | 
			
		||||
  integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==
 | 
			
		||||
 | 
			
		||||
utils-merge@1.0.1:
 | 
			
		||||
utils-merge@1.0.1, utils-merge@^1.0.1:
 | 
			
		||||
  version "1.0.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
 | 
			
		||||
  integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=
 | 
			
		||||
  integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==
 | 
			
		||||
 | 
			
		||||
vary@~1.1.2:
 | 
			
		||||
vary@^1.1.2, vary@~1.1.2:
 | 
			
		||||
  version "1.1.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
 | 
			
		||||
  integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=
 | 
			
		||||
  integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==
 | 
			
		||||
 | 
			
		||||
wrappy@1:
 | 
			
		||||
  version "1.0.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
 | 
			
		||||
  integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
 | 
			
		||||
 
 | 
			
		||||
@@ -2,6 +2,7 @@ import * as core from '@actions/core';
 | 
			
		||||
import * as exec from '@actions/exec';
 | 
			
		||||
import * as tc from '@actions/tool-cache';
 | 
			
		||||
import * as cache from '@actions/cache';
 | 
			
		||||
import * as io from '@actions/io';
 | 
			
		||||
 | 
			
		||||
import fs from 'fs';
 | 
			
		||||
import path from 'path';
 | 
			
		||||
@@ -24,11 +25,13 @@ describe('main tests', () => {
 | 
			
		||||
  let startGroupSpy: jest.SpyInstance;
 | 
			
		||||
  let endGroupSpy: jest.SpyInstance;
 | 
			
		||||
 | 
			
		||||
  let whichSpy: jest.SpyInstance;
 | 
			
		||||
 | 
			
		||||
  let existsSpy: jest.SpyInstance;
 | 
			
		||||
 | 
			
		||||
  let getExecOutputSpy: jest.SpyInstance;
 | 
			
		||||
 | 
			
		||||
  let parseNodeVersionSpy: jest.SpyInstance;
 | 
			
		||||
  let getNodeVersionFromFileSpy: jest.SpyInstance;
 | 
			
		||||
  let cnSpy: jest.SpyInstance;
 | 
			
		||||
  let findSpy: jest.SpyInstance;
 | 
			
		||||
  let isCacheActionAvailable: jest.SpyInstance;
 | 
			
		||||
@@ -41,6 +44,7 @@ describe('main tests', () => {
 | 
			
		||||
    // node
 | 
			
		||||
    os = {};
 | 
			
		||||
    console.log('::stop-commands::stoptoken');
 | 
			
		||||
    process.env['GITHUB_WORKSPACE'] = path.join(__dirname, 'data');
 | 
			
		||||
    process.env['GITHUB_PATH'] = ''; // Stub out ENV file functionality so we can verify it writes to standard out
 | 
			
		||||
    process.env['GITHUB_OUTPUT'] = ''; // Stub out ENV file functionality so we can verify it writes to standard out
 | 
			
		||||
    infoSpy = jest.spyOn(core, 'info');
 | 
			
		||||
@@ -56,18 +60,18 @@ describe('main tests', () => {
 | 
			
		||||
    inSpy = jest.spyOn(core, 'getInput');
 | 
			
		||||
    inSpy.mockImplementation(name => inputs[name]);
 | 
			
		||||
 | 
			
		||||
    whichSpy = jest.spyOn(io, 'which');
 | 
			
		||||
 | 
			
		||||
    getExecOutputSpy = jest.spyOn(exec, 'getExecOutput');
 | 
			
		||||
 | 
			
		||||
    findSpy = jest.spyOn(tc, 'find');
 | 
			
		||||
 | 
			
		||||
    isCacheActionAvailable = jest.spyOn(cache, 'isFeatureAvailable');
 | 
			
		||||
 | 
			
		||||
    existsSpy = jest.spyOn(fs, 'existsSync');
 | 
			
		||||
 | 
			
		||||
    cnSpy = jest.spyOn(process.stdout, 'write');
 | 
			
		||||
    cnSpy.mockImplementation(line => {
 | 
			
		||||
      // uncomment to debug
 | 
			
		||||
      // process.stderr.write('write:' + line + '\n');
 | 
			
		||||
      process.stderr.write('write:' + line + '\n');
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    setupNodeJsSpy = jest.spyOn(OfficialBuilds.prototype, 'setupNodeJs');
 | 
			
		||||
@@ -85,7 +89,7 @@ describe('main tests', () => {
 | 
			
		||||
    jest.restoreAllMocks();
 | 
			
		||||
  }, 100000);
 | 
			
		||||
 | 
			
		||||
  describe('parseNodeVersionFile', () => {
 | 
			
		||||
  describe('getNodeVersionFromFile', () => {
 | 
			
		||||
    each`
 | 
			
		||||
      contents                                     | expected
 | 
			
		||||
      ${'12'}                                      | ${'12'}
 | 
			
		||||
@@ -100,10 +104,27 @@ describe('main tests', () => {
 | 
			
		||||
      ${'unknown format'}                          | ${'unknown format'}
 | 
			
		||||
      ${'  14.1.0  '}                              | ${'14.1.0'}
 | 
			
		||||
      ${'{"volta": {"node": ">=14.0.0 <=17.0.0"}}'}| ${'>=14.0.0 <=17.0.0'}
 | 
			
		||||
      ${'{"volta": {"extends": "./package.json"}}'}| ${'18.0.0'}
 | 
			
		||||
      ${'{"engines": {"node": "17.0.0"}}'}         | ${'17.0.0'}
 | 
			
		||||
      ${'{}'}                                      | ${null}
 | 
			
		||||
    `.it('parses "$contents"', ({contents, expected}) => {
 | 
			
		||||
      expect(util.parseNodeVersionFile(contents)).toBe(expected);
 | 
			
		||||
      const existsSpy = jest.spyOn(fs, 'existsSync');
 | 
			
		||||
      existsSpy.mockImplementation(() => true);
 | 
			
		||||
 | 
			
		||||
      const readFileSpy = jest.spyOn(fs, 'readFileSync');
 | 
			
		||||
      readFileSpy.mockImplementation(filePath => {
 | 
			
		||||
        if (
 | 
			
		||||
          typeof filePath === 'string' &&
 | 
			
		||||
          path.basename(filePath) === 'package.json'
 | 
			
		||||
        ) {
 | 
			
		||||
          // Special case for volta.extends
 | 
			
		||||
          return '{"volta": {"node": "18.0.0"}}';
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return contents;
 | 
			
		||||
      });
 | 
			
		||||
 | 
			
		||||
      expect(util.getNodeVersionFromFile('file')).toBe(expected);
 | 
			
		||||
    });
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
@@ -126,6 +147,10 @@ describe('main tests', () => {
 | 
			
		||||
        return {stdout: obj[command], stderr: '', exitCode: 0};
 | 
			
		||||
      });
 | 
			
		||||
 | 
			
		||||
      whichSpy.mockImplementation(cmd => {
 | 
			
		||||
        return `some/${cmd}/path`;
 | 
			
		||||
      });
 | 
			
		||||
 | 
			
		||||
      await util.printEnvDetailsAndSetOutput();
 | 
			
		||||
 | 
			
		||||
      expect(setOutputSpy).toHaveBeenCalledWith('node-version', obj['node']);
 | 
			
		||||
@@ -142,10 +167,17 @@ describe('main tests', () => {
 | 
			
		||||
 | 
			
		||||
  describe('node-version-file flag', () => {
 | 
			
		||||
    beforeEach(() => {
 | 
			
		||||
      parseNodeVersionSpy = jest.spyOn(util, 'parseNodeVersionFile');
 | 
			
		||||
      delete inputs['node-version'];
 | 
			
		||||
      inputs['node-version-file'] = '.nvmrc';
 | 
			
		||||
 | 
			
		||||
      getNodeVersionFromFileSpy = jest.spyOn(util, 'getNodeVersionFromFile');
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it('not used if node-version is provided', async () => {
 | 
			
		||||
    afterEach(() => {
 | 
			
		||||
      getNodeVersionFromFileSpy.mockRestore();
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it('does not read node-version-file if node-version is provided', async () => {
 | 
			
		||||
      // Arrange
 | 
			
		||||
      inputs['node-version'] = '12';
 | 
			
		||||
 | 
			
		||||
@@ -153,107 +185,54 @@ describe('main tests', () => {
 | 
			
		||||
      await main.run();
 | 
			
		||||
 | 
			
		||||
      // Assert
 | 
			
		||||
      expect(parseNodeVersionSpy).toHaveBeenCalledTimes(0);
 | 
			
		||||
    }, 10000);
 | 
			
		||||
 | 
			
		||||
    it('not used if node-version-file not provided', async () => {
 | 
			
		||||
      // Act
 | 
			
		||||
      await main.run();
 | 
			
		||||
 | 
			
		||||
      // Assert
 | 
			
		||||
      expect(parseNodeVersionSpy).toHaveBeenCalledTimes(0);
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it('reads node-version-file if provided', async () => {
 | 
			
		||||
      // Arrange
 | 
			
		||||
      const versionSpec = 'v14';
 | 
			
		||||
      const versionFile = '.nvmrc';
 | 
			
		||||
      const expectedVersionSpec = '14';
 | 
			
		||||
      process.env['GITHUB_WORKSPACE'] = path.join(__dirname, 'data');
 | 
			
		||||
      inputs['node-version-file'] = versionFile;
 | 
			
		||||
 | 
			
		||||
      parseNodeVersionSpy.mockImplementation(() => expectedVersionSpec);
 | 
			
		||||
      existsSpy.mockImplementationOnce(
 | 
			
		||||
        input => input === path.join(__dirname, 'data', versionFile)
 | 
			
		||||
      );
 | 
			
		||||
 | 
			
		||||
      // Act
 | 
			
		||||
      await main.run();
 | 
			
		||||
 | 
			
		||||
      // Assert
 | 
			
		||||
      expect(existsSpy).toHaveBeenCalledTimes(1);
 | 
			
		||||
      expect(existsSpy).toHaveReturnedWith(true);
 | 
			
		||||
      expect(parseNodeVersionSpy).toHaveBeenCalledWith(versionSpec);
 | 
			
		||||
      expect(infoSpy).toHaveBeenCalledWith(
 | 
			
		||||
        `Resolved ${versionFile} as ${expectedVersionSpec}`
 | 
			
		||||
      );
 | 
			
		||||
    }, 10000);
 | 
			
		||||
 | 
			
		||||
    it('reads package.json as node-version-file if provided', async () => {
 | 
			
		||||
      // Arrange
 | 
			
		||||
      const versionSpec = fs.readFileSync(
 | 
			
		||||
        path.join(__dirname, 'data/package.json'),
 | 
			
		||||
        'utf-8'
 | 
			
		||||
      );
 | 
			
		||||
      const versionFile = 'package.json';
 | 
			
		||||
      const expectedVersionSpec = '14';
 | 
			
		||||
      process.env['GITHUB_WORKSPACE'] = path.join(__dirname, 'data');
 | 
			
		||||
      inputs['node-version-file'] = versionFile;
 | 
			
		||||
 | 
			
		||||
      parseNodeVersionSpy.mockImplementation(() => expectedVersionSpec);
 | 
			
		||||
      existsSpy.mockImplementationOnce(
 | 
			
		||||
        input => input === path.join(__dirname, 'data', versionFile)
 | 
			
		||||
      );
 | 
			
		||||
      // Act
 | 
			
		||||
      await main.run();
 | 
			
		||||
 | 
			
		||||
      // Assert
 | 
			
		||||
      expect(existsSpy).toHaveBeenCalledTimes(1);
 | 
			
		||||
      expect(existsSpy).toHaveReturnedWith(true);
 | 
			
		||||
      expect(parseNodeVersionSpy).toHaveBeenCalledWith(versionSpec);
 | 
			
		||||
      expect(infoSpy).toHaveBeenCalledWith(
 | 
			
		||||
        `Resolved ${versionFile} as ${expectedVersionSpec}`
 | 
			
		||||
      );
 | 
			
		||||
    }, 10000);
 | 
			
		||||
 | 
			
		||||
    it('both node-version-file and node-version are provided', async () => {
 | 
			
		||||
      inputs['node-version'] = '12';
 | 
			
		||||
      const versionSpec = 'v14';
 | 
			
		||||
      const versionFile = '.nvmrc';
 | 
			
		||||
      const expectedVersionSpec = '14';
 | 
			
		||||
      process.env['GITHUB_WORKSPACE'] = path.join(__dirname, '..');
 | 
			
		||||
      inputs['node-version-file'] = versionFile;
 | 
			
		||||
 | 
			
		||||
      parseNodeVersionSpy.mockImplementation(() => expectedVersionSpec);
 | 
			
		||||
 | 
			
		||||
      // Act
 | 
			
		||||
      await main.run();
 | 
			
		||||
 | 
			
		||||
      // Assert
 | 
			
		||||
      expect(existsSpy).toHaveBeenCalledTimes(0);
 | 
			
		||||
      expect(parseNodeVersionSpy).not.toHaveBeenCalled();
 | 
			
		||||
      expect(inputs['node-version']).toBeDefined();
 | 
			
		||||
      expect(inputs['node-version-file']).toBeDefined();
 | 
			
		||||
      expect(getNodeVersionFromFileSpy).not.toHaveBeenCalled();
 | 
			
		||||
      expect(warningSpy).toHaveBeenCalledWith(
 | 
			
		||||
        'Both node-version and node-version-file inputs are specified, only node-version will be used'
 | 
			
		||||
      );
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it('should throw an error if node-version-file is not found', async () => {
 | 
			
		||||
      const versionFile = '.nvmrc';
 | 
			
		||||
      const versionFilePath = path.join(__dirname, '..', versionFile);
 | 
			
		||||
      inputs['node-version-file'] = versionFile;
 | 
			
		||||
    it('does not read node-version-file if node-version-file is not provided', async () => {
 | 
			
		||||
      // Arrange
 | 
			
		||||
      delete inputs['node-version-file'];
 | 
			
		||||
 | 
			
		||||
      inSpy.mockImplementation(name => inputs[name]);
 | 
			
		||||
      existsSpy.mockImplementationOnce(
 | 
			
		||||
        input => input === path.join(__dirname, 'data', versionFile)
 | 
			
		||||
      // Act
 | 
			
		||||
      await main.run();
 | 
			
		||||
 | 
			
		||||
      // Assert
 | 
			
		||||
      expect(getNodeVersionFromFileSpy).not.toHaveBeenCalled();
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it('reads node-version-file', async () => {
 | 
			
		||||
      // Arrange
 | 
			
		||||
      const expectedVersionSpec = '14';
 | 
			
		||||
      getNodeVersionFromFileSpy.mockImplementation(() => expectedVersionSpec);
 | 
			
		||||
 | 
			
		||||
      // Act
 | 
			
		||||
      await main.run();
 | 
			
		||||
 | 
			
		||||
      // Assert
 | 
			
		||||
      expect(getNodeVersionFromFileSpy).toHaveBeenCalled();
 | 
			
		||||
      expect(infoSpy).toHaveBeenCalledWith(
 | 
			
		||||
        `Resolved ${inputs['node-version-file']} as ${expectedVersionSpec}`
 | 
			
		||||
      );
 | 
			
		||||
    }, 10000);
 | 
			
		||||
 | 
			
		||||
    it('should throw an error if node-version-file is not accessible', async () => {
 | 
			
		||||
      // Arrange
 | 
			
		||||
      inputs['node-version-file'] = 'non-existing-file';
 | 
			
		||||
      const versionFilePath = path.join(
 | 
			
		||||
        __dirname,
 | 
			
		||||
        'data',
 | 
			
		||||
        inputs['node-version-file']
 | 
			
		||||
      );
 | 
			
		||||
 | 
			
		||||
      // Act
 | 
			
		||||
      await main.run();
 | 
			
		||||
 | 
			
		||||
      // Assert
 | 
			
		||||
      expect(existsSpy).toHaveBeenCalled();
 | 
			
		||||
      expect(existsSpy).toHaveReturnedWith(false);
 | 
			
		||||
      expect(parseNodeVersionSpy).not.toHaveBeenCalled();
 | 
			
		||||
      expect(getNodeVersionFromFileSpy).toHaveBeenCalled();
 | 
			
		||||
      expect(cnSpy).toHaveBeenCalledWith(
 | 
			
		||||
        `::error::The specified node version file at: ${versionFilePath} does not exist${osm.EOL}`
 | 
			
		||||
      );
 | 
			
		||||
 
 | 
			
		||||
@@ -315,7 +315,7 @@ describe('setup-node', () => {
 | 
			
		||||
    await main.run();
 | 
			
		||||
 | 
			
		||||
    workingUrls.forEach(url => {
 | 
			
		||||
      expect(dlSpy).toHaveBeenCalledWith(url);
 | 
			
		||||
      expect(dlSpy).toHaveBeenCalledWith(url, undefined, undefined);
 | 
			
		||||
    });
 | 
			
		||||
    expect(cnSpy).toHaveBeenCalledWith(`::add-path::${toolPath}${osm.EOL}`);
 | 
			
		||||
  });
 | 
			
		||||
@@ -449,6 +449,54 @@ describe('setup-node', () => {
 | 
			
		||||
    }
 | 
			
		||||
  }, 100000);
 | 
			
		||||
 | 
			
		||||
  it('acquires specified architecture of node from mirror', async () => {
 | 
			
		||||
    for (const {arch, version, osSpec} of [
 | 
			
		||||
      {
 | 
			
		||||
        arch: 'x86',
 | 
			
		||||
        version: '18.0.0-nightly202110204cb3e06ed8',
 | 
			
		||||
        osSpec: 'win32'
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        arch: 'x86',
 | 
			
		||||
        version: '20.0.0-nightly2022101987cdf7d412',
 | 
			
		||||
        osSpec: 'win32'
 | 
			
		||||
      }
 | 
			
		||||
    ]) {
 | 
			
		||||
      os.platform = osSpec;
 | 
			
		||||
      os.arch = arch;
 | 
			
		||||
      const fileExtension = os.platform === 'win32' ? '7z' : 'tar.gz';
 | 
			
		||||
      const platform = {
 | 
			
		||||
        linux: 'linux',
 | 
			
		||||
        darwin: 'darwin',
 | 
			
		||||
        win32: 'win'
 | 
			
		||||
      }[os.platform];
 | 
			
		||||
 | 
			
		||||
      inputs['node-version'] = version;
 | 
			
		||||
      inputs['architecture'] = arch;
 | 
			
		||||
      inputs['always-auth'] = false;
 | 
			
		||||
      inputs['token'] = 'faketoken';
 | 
			
		||||
      inputs['mirror'] = 'https://my-mirror.org';
 | 
			
		||||
      inputs['mirror-token'] = 'my-mirror-token';
 | 
			
		||||
 | 
			
		||||
      const expectedUrl = `https://my-mirror.org/download/nightly/v${version}/node-v${version}-${platform}-${arch}.${fileExtension}`;
 | 
			
		||||
 | 
			
		||||
      // ... but not in the local cache
 | 
			
		||||
      findSpy.mockImplementation(() => '');
 | 
			
		||||
      findAllVersionsSpy.mockImplementation(() => []);
 | 
			
		||||
 | 
			
		||||
      dlSpy.mockImplementation(async () => '/some/temp/path');
 | 
			
		||||
      const toolPath = path.normalize(`/cache/node/${version}/${arch}`);
 | 
			
		||||
      exSpy.mockImplementation(async () => '/some/other/temp/path');
 | 
			
		||||
      cacheSpy.mockImplementation(async () => toolPath);
 | 
			
		||||
 | 
			
		||||
      await main.run();
 | 
			
		||||
      expect(dlSpy).toHaveBeenCalled();
 | 
			
		||||
      expect(logSpy).toHaveBeenCalledWith(
 | 
			
		||||
        `Acquiring ${version} - ${arch} from ${expectedUrl}`
 | 
			
		||||
      );
 | 
			
		||||
    }
 | 
			
		||||
  }, 100000);
 | 
			
		||||
 | 
			
		||||
  describe('nightly versions', () => {
 | 
			
		||||
    it.each([
 | 
			
		||||
      [
 | 
			
		||||
 
 | 
			
		||||
@@ -248,6 +248,9 @@ describe('setup-node', () => {
 | 
			
		||||
    const toolPath = path.normalize('/cache/node/12.16.2/x64');
 | 
			
		||||
    exSpy.mockImplementation(async () => '/some/other/temp/path');
 | 
			
		||||
    cacheSpy.mockImplementation(async () => toolPath);
 | 
			
		||||
    whichSpy.mockImplementation(cmd => {
 | 
			
		||||
      return `some/${cmd}/path`;
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    await main.run();
 | 
			
		||||
 | 
			
		||||
@@ -279,6 +282,43 @@ describe('setup-node', () => {
 | 
			
		||||
    expect(cnSpy).toHaveBeenCalledWith(`::add-path::${expPath}${osm.EOL}`);
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  it('falls back to a version from node dist from mirror', async () => {
 | 
			
		||||
    os.platform = 'linux';
 | 
			
		||||
    os.arch = 'x64';
 | 
			
		||||
 | 
			
		||||
    // a version which is not in the manifest but is in node dist
 | 
			
		||||
    const versionSpec = '11.15.0';
 | 
			
		||||
    const mirror = 'https://my_mirror_url';
 | 
			
		||||
    inputs['node-version'] = versionSpec;
 | 
			
		||||
    inputs['always-auth'] = false;
 | 
			
		||||
    inputs['token'] = 'faketoken';
 | 
			
		||||
    inputs['mirror'] = mirror;
 | 
			
		||||
    inputs['mirror-token'] = 'faketoken';
 | 
			
		||||
 | 
			
		||||
    // ... but not in the local cache
 | 
			
		||||
    findSpy.mockImplementation(() => '');
 | 
			
		||||
 | 
			
		||||
    dlSpy.mockImplementation(async () => '/some/temp/path');
 | 
			
		||||
    const toolPath = path.normalize('/cache/node/11.15.0/x64');
 | 
			
		||||
    exSpy.mockImplementation(async () => '/some/other/temp/path');
 | 
			
		||||
    cacheSpy.mockImplementation(async () => toolPath);
 | 
			
		||||
 | 
			
		||||
    await main.run();
 | 
			
		||||
 | 
			
		||||
    const expPath = path.join(toolPath, 'bin');
 | 
			
		||||
 | 
			
		||||
    expect(getManifestSpy).toHaveBeenCalled();
 | 
			
		||||
    expect(logSpy).toHaveBeenCalledWith(
 | 
			
		||||
      `Attempting to download ${versionSpec}...`
 | 
			
		||||
    );
 | 
			
		||||
    expect(logSpy).toHaveBeenCalledWith(
 | 
			
		||||
      `Not found in manifest. Falling back to download directly from ${mirror}`
 | 
			
		||||
    );
 | 
			
		||||
    expect(dlSpy).toHaveBeenCalled();
 | 
			
		||||
    expect(exSpy).toHaveBeenCalled();
 | 
			
		||||
    expect(cnSpy).toHaveBeenCalledWith(`::add-path::${expPath}${osm.EOL}`);
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  it('falls back to a version from node dist', async () => {
 | 
			
		||||
    os.platform = 'linux';
 | 
			
		||||
    os.arch = 'x64';
 | 
			
		||||
@@ -825,4 +865,46 @@ describe('setup-node', () => {
 | 
			
		||||
      }
 | 
			
		||||
    );
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  it('acquires specified architecture of node from mirror', async () => {
 | 
			
		||||
    for (const {arch, version, osSpec} of [
 | 
			
		||||
      {arch: 'x86', version: '12.16.2', osSpec: 'win32'},
 | 
			
		||||
      {arch: 'x86', version: '14.0.0', osSpec: 'win32'}
 | 
			
		||||
    ]) {
 | 
			
		||||
      os.platform = osSpec;
 | 
			
		||||
      os.arch = arch;
 | 
			
		||||
      const fileExtension = os.platform === 'win32' ? '7z' : 'tar.gz';
 | 
			
		||||
      const platform = {
 | 
			
		||||
        linux: 'linux',
 | 
			
		||||
        darwin: 'darwin',
 | 
			
		||||
        win32: 'win'
 | 
			
		||||
      }[os.platform];
 | 
			
		||||
 | 
			
		||||
      inputs['node-version'] = version;
 | 
			
		||||
      inputs['architecture'] = arch;
 | 
			
		||||
      inputs['always-auth'] = false;
 | 
			
		||||
      inputs['token'] = 'faketoken';
 | 
			
		||||
      inputs['mirror'] = 'https://my_mirror_url';
 | 
			
		||||
      inputs['mirror-token'] = 'faketoken';
 | 
			
		||||
 | 
			
		||||
      const expectedUrl =
 | 
			
		||||
        arch === 'x64'
 | 
			
		||||
          ? `https://github.com/actions/node-versions/releases/download/${version}/node-${version}-${platform}-${arch}.zip`
 | 
			
		||||
          : `https://my_mirror_url/dist/v${version}/node-v${version}-${platform}-${arch}.${fileExtension}`;
 | 
			
		||||
 | 
			
		||||
      // ... but not in the local cache
 | 
			
		||||
      findSpy.mockImplementation(() => '');
 | 
			
		||||
 | 
			
		||||
      dlSpy.mockImplementation(async () => '/some/temp/path');
 | 
			
		||||
      const toolPath = path.normalize(`/cache/node/${version}/${arch}`);
 | 
			
		||||
      exSpy.mockImplementation(async () => '/some/other/temp/path');
 | 
			
		||||
      cacheSpy.mockImplementation(async () => toolPath);
 | 
			
		||||
 | 
			
		||||
      await main.run();
 | 
			
		||||
      expect(dlSpy).toHaveBeenCalled();
 | 
			
		||||
      expect(logSpy).toHaveBeenCalledWith(
 | 
			
		||||
        `Acquiring ${version} - ${arch} from ${expectedUrl}`
 | 
			
		||||
      );
 | 
			
		||||
    }
 | 
			
		||||
  }, 100000);
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
@@ -25,6 +25,10 @@ inputs:
 | 
			
		||||
    description: 'Used to specify a package manager for caching in the default directory. Supported values: npm, yarn, pnpm.'
 | 
			
		||||
  cache-dependency-path:
 | 
			
		||||
    description: 'Used to specify the path to a dependency file: package-lock.json, yarn.lock, etc. Supports wildcards or a list of file names for caching multiple dependencies.'
 | 
			
		||||
  mirror:
 | 
			
		||||
    description: 'Used to specify an alternative mirror to downlooad Node.js binaries from'
 | 
			
		||||
  mirror-token:
 | 
			
		||||
    description: 'The token used as Authorization header when fetching from the mirror'
 | 
			
		||||
# TODO: add input to control forcing to pull from cloud or dist.
 | 
			
		||||
#       escape valve for someone having issues or needing the absolute latest which isn't cached yet
 | 
			
		||||
outputs:
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										14477
									
								
								dist/cache-save/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										14477
									
								
								dist/cache-save/index.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										16304
									
								
								dist/setup/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										16304
									
								
								dist/setup/index.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							@@ -84,6 +84,8 @@ When using the `package.json` input, the action will look for `volta.node` first
 | 
			
		||||
}
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
Otherwise, when [`volta.extends`](https://docs.volta.sh/advanced/workspaces) is defined, then it will resolve the corresponding file and look for `volta.node` or `engines.node` recursively.
 | 
			
		||||
 | 
			
		||||
## Architecture
 | 
			
		||||
 | 
			
		||||
You can use any of the [supported operating systems](https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners), and the compatible `architecture` can be selected using `architecture`. Values are `x86`, `x64`, `arm64`, `armv6l`, `armv7l`, `ppc64le`, `s390x` (not all of the architectures are available on all platforms).
 | 
			
		||||
@@ -416,3 +418,18 @@ Please refer to the [Ensuring workflow access to your package - Configuring a pa
 | 
			
		||||
 | 
			
		||||
### always-auth input
 | 
			
		||||
The always-auth input sets `always-auth=true` in .npmrc file. With this option set [npm](https://docs.npmjs.com/cli/v6/using-npm/config#always-auth)/yarn sends the authentication credentials when making a request to the registries.
 | 
			
		||||
 | 
			
		||||
## Use private mirror
 | 
			
		||||
 | 
			
		||||
It is possible to use a private mirror hosting Node.js binaries. This mirror must be a full mirror of the official Node.js distribution.
 | 
			
		||||
The mirror URL can be set using the `mirror` input.
 | 
			
		||||
It is possible to specify a token to authenticate with the mirror using the `mirror-token` input.
 | 
			
		||||
The token will be passed as a bearer token in the `Authorization` header.
 | 
			
		||||
 | 
			
		||||
```yaml
 | 
			
		||||
- uses: actions/setup-node@v4
 | 
			
		||||
  with:
 | 
			
		||||
    node-version: '14.x'
 | 
			
		||||
    mirror: 'https://nodejs.org/dist'
 | 
			
		||||
    mirror-token: 'your-mirror-token'
 | 
			
		||||
```
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										633
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										633
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										30
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										30
									
								
								package.json
									
									
									
									
									
								
							@@ -25,33 +25,33 @@
 | 
			
		||||
  "author": "GitHub",
 | 
			
		||||
  "license": "MIT",
 | 
			
		||||
  "dependencies": {
 | 
			
		||||
    "@actions/cache": "^3.0.4",
 | 
			
		||||
    "@actions/core": "^1.10.0",
 | 
			
		||||
    "@actions/exec": "^1.1.0",
 | 
			
		||||
    "@actions/cache": "^4.0.3",
 | 
			
		||||
    "@actions/core": "^1.11.1",
 | 
			
		||||
    "@actions/exec": "^1.1.1",
 | 
			
		||||
    "@actions/github": "^5.1.1",
 | 
			
		||||
    "@actions/glob": "^0.4.0",
 | 
			
		||||
    "@actions/http-client": "^2.1.1",
 | 
			
		||||
    "@actions/glob": "^0.5.0",
 | 
			
		||||
    "@actions/http-client": "^2.2.1",
 | 
			
		||||
    "@actions/io": "^1.0.2",
 | 
			
		||||
    "@actions/tool-cache": "^2.0.1",
 | 
			
		||||
    "semver": "^7.5.4",
 | 
			
		||||
    "@actions/tool-cache": "^2.0.2",
 | 
			
		||||
    "semver": "^7.6.3",
 | 
			
		||||
    "uuid": "^9.0.1"
 | 
			
		||||
  },
 | 
			
		||||
  "devDependencies": {
 | 
			
		||||
    "@types/jest": "^29.5.5",
 | 
			
		||||
    "@types/node": "^20.8.2",
 | 
			
		||||
    "@types/semver": "^7.5.3",
 | 
			
		||||
    "@types/jest": "^29.5.14",
 | 
			
		||||
    "@types/node": "^20.11.25",
 | 
			
		||||
    "@types/semver": "^7.5.8",
 | 
			
		||||
    "@typescript-eslint/eslint-plugin": "^5.54.0",
 | 
			
		||||
    "@typescript-eslint/parser": "^5.54.0",
 | 
			
		||||
    "@vercel/ncc": "^0.38.0",
 | 
			
		||||
    "eslint": "^8.35.0",
 | 
			
		||||
    "@vercel/ncc": "^0.38.3",
 | 
			
		||||
    "eslint": "^8.57.0",
 | 
			
		||||
    "eslint-config-prettier": "^8.6.0",
 | 
			
		||||
    "eslint-plugin-jest": "^27.2.1",
 | 
			
		||||
    "eslint-plugin-jest": "^27.9.0",
 | 
			
		||||
    "eslint-plugin-node": "^11.1.0",
 | 
			
		||||
    "jest": "^29.7.0",
 | 
			
		||||
    "jest-circus": "^29.7.0",
 | 
			
		||||
    "jest-each": "^29.7.0",
 | 
			
		||||
    "prettier": "^2.8.4",
 | 
			
		||||
    "ts-jest": "^29.1.1",
 | 
			
		||||
    "typescript": "^5.2.2"
 | 
			
		||||
    "ts-jest": "^29.1.2",
 | 
			
		||||
    "typescript": "^5.4.2"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -3,6 +3,7 @@ import * as core from '@actions/core';
 | 
			
		||||
import * as glob from '@actions/glob';
 | 
			
		||||
import path from 'path';
 | 
			
		||||
import fs from 'fs';
 | 
			
		||||
import os from 'os';
 | 
			
		||||
 | 
			
		||||
import {State} from './constants';
 | 
			
		||||
import {
 | 
			
		||||
@@ -21,6 +22,7 @@ export const restoreCache = async (
 | 
			
		||||
    throw new Error(`Caching for '${packageManager}' is not supported`);
 | 
			
		||||
  }
 | 
			
		||||
  const platform = process.env.RUNNER_OS;
 | 
			
		||||
  const arch = os.arch();
 | 
			
		||||
 | 
			
		||||
  const cachePaths = await getCacheDirectories(
 | 
			
		||||
    packageManagerInfo,
 | 
			
		||||
@@ -38,7 +40,7 @@ export const restoreCache = async (
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  const keyPrefix = `node-cache-${platform}-${packageManager}`;
 | 
			
		||||
  const keyPrefix = `node-cache-${platform}-${arch}-${packageManager}`;
 | 
			
		||||
  const primaryKey = `${keyPrefix}-${fileHash}`;
 | 
			
		||||
  core.debug(`primary key is ${primaryKey}`);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -295,7 +295,13 @@ export function isGhes(): boolean {
 | 
			
		||||
  const ghUrl = new URL(
 | 
			
		||||
    process.env['GITHUB_SERVER_URL'] || 'https://github.com'
 | 
			
		||||
  );
 | 
			
		||||
  return ghUrl.hostname.toUpperCase() !== 'GITHUB.COM';
 | 
			
		||||
 | 
			
		||||
  const hostname = ghUrl.hostname.trimEnd().toUpperCase();
 | 
			
		||||
  const isGitHubHost = hostname === 'GITHUB.COM';
 | 
			
		||||
  const isGitHubEnterpriseCloudHost = hostname.endsWith('.GHE.COM');
 | 
			
		||||
  const isLocalHost = hostname.endsWith('.LOCALHOST');
 | 
			
		||||
 | 
			
		||||
  return !isGitHubHost && !isGitHubEnterpriseCloudHost && !isLocalHost;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function isCacheFeatureAvailable(): boolean {
 | 
			
		||||
 
 | 
			
		||||
@@ -24,7 +24,7 @@ export default abstract class BaseDistribution {
 | 
			
		||||
    });
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  protected abstract getDistributionUrl(): string;
 | 
			
		||||
  protected abstract getDistributionUrl(mirror: string): string;
 | 
			
		||||
 | 
			
		||||
  public async setupNodeJs() {
 | 
			
		||||
    let nodeJsVersions: INodeVersion[] | undefined;
 | 
			
		||||
@@ -97,10 +97,19 @@ export default abstract class BaseDistribution {
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  protected async getNodeJsVersions(): Promise<INodeVersion[]> {
 | 
			
		||||
    const initialUrl = this.getDistributionUrl();
 | 
			
		||||
    const initialUrl = this.getDistributionUrl(this.nodeInfo.mirror);
 | 
			
		||||
    const dataUrl = `${initialUrl}/index.json`;
 | 
			
		||||
 | 
			
		||||
    const response = await this.httpClient.getJson<INodeVersion[]>(dataUrl);
 | 
			
		||||
    const headers = {};
 | 
			
		||||
 | 
			
		||||
    if (this.nodeInfo.mirrorToken) {
 | 
			
		||||
      headers['Authorization'] = `Bearer ${this.nodeInfo.mirrorToken}`;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const response = await this.httpClient.getJson<INodeVersion[]>(
 | 
			
		||||
      dataUrl,
 | 
			
		||||
      headers
 | 
			
		||||
    );
 | 
			
		||||
    return response.result || [];
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@@ -112,8 +121,12 @@ export default abstract class BaseDistribution {
 | 
			
		||||
        ? `node-v${version}-win-${osArch}`
 | 
			
		||||
        : `node-v${version}-${this.osPlat}-${osArch}`;
 | 
			
		||||
    const urlFileName: string =
 | 
			
		||||
      this.osPlat == 'win32' ? `${fileName}.7z` : `${fileName}.tar.gz`;
 | 
			
		||||
    const initialUrl = this.getDistributionUrl();
 | 
			
		||||
      this.osPlat == 'win32'
 | 
			
		||||
        ? this.nodeInfo.arch === 'arm64'
 | 
			
		||||
          ? `${fileName}.zip`
 | 
			
		||||
          : `${fileName}.7z`
 | 
			
		||||
        : `${fileName}.tar.gz`;
 | 
			
		||||
    const initialUrl = this.getDistributionUrl(this.nodeInfo.mirror);
 | 
			
		||||
    const url = `${initialUrl}/v${version}/${urlFileName}`;
 | 
			
		||||
 | 
			
		||||
    return <INodeVersionInfo>{
 | 
			
		||||
@@ -130,7 +143,11 @@ export default abstract class BaseDistribution {
 | 
			
		||||
      `Acquiring ${info.resolvedVersion} - ${info.arch} from ${info.downloadUrl}`
 | 
			
		||||
    );
 | 
			
		||||
    try {
 | 
			
		||||
      downloadPath = await tc.downloadTool(info.downloadUrl);
 | 
			
		||||
      downloadPath = await tc.downloadTool(
 | 
			
		||||
        info.downloadUrl,
 | 
			
		||||
        undefined,
 | 
			
		||||
        this.nodeInfo.mirrorToken
 | 
			
		||||
      );
 | 
			
		||||
    } catch (err) {
 | 
			
		||||
      if (
 | 
			
		||||
        err instanceof tc.HTTPError &&
 | 
			
		||||
@@ -146,7 +163,7 @@ export default abstract class BaseDistribution {
 | 
			
		||||
      throw err;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const toolPath = await this.extractArchive(downloadPath, info);
 | 
			
		||||
    const toolPath = await this.extractArchive(downloadPath, info, true);
 | 
			
		||||
    core.info('Done');
 | 
			
		||||
 | 
			
		||||
    return toolPath;
 | 
			
		||||
@@ -164,7 +181,7 @@ export default abstract class BaseDistribution {
 | 
			
		||||
    version: string,
 | 
			
		||||
    arch: string = os.arch()
 | 
			
		||||
  ): Promise<string> {
 | 
			
		||||
    const initialUrl = this.getDistributionUrl();
 | 
			
		||||
    const initialUrl = this.getDistributionUrl(this.nodeInfo.mirror);
 | 
			
		||||
    const osArch: string = this.translateArchToDistUrl(arch);
 | 
			
		||||
 | 
			
		||||
    // Create temporary folder to download to
 | 
			
		||||
@@ -181,18 +198,34 @@ export default abstract class BaseDistribution {
 | 
			
		||||
 | 
			
		||||
      core.info(`Downloading only node binary from ${exeUrl}`);
 | 
			
		||||
 | 
			
		||||
      const exePath = await tc.downloadTool(exeUrl);
 | 
			
		||||
      const exePath = await tc.downloadTool(
 | 
			
		||||
        exeUrl,
 | 
			
		||||
        undefined,
 | 
			
		||||
        this.nodeInfo.mirrorToken
 | 
			
		||||
      );
 | 
			
		||||
      await io.cp(exePath, path.join(tempDir, 'node.exe'));
 | 
			
		||||
      const libPath = await tc.downloadTool(libUrl);
 | 
			
		||||
      const libPath = await tc.downloadTool(
 | 
			
		||||
        libUrl,
 | 
			
		||||
        undefined,
 | 
			
		||||
        this.nodeInfo.mirrorToken
 | 
			
		||||
      );
 | 
			
		||||
      await io.cp(libPath, path.join(tempDir, 'node.lib'));
 | 
			
		||||
    } catch (err) {
 | 
			
		||||
      if (err instanceof tc.HTTPError && err.httpStatusCode == 404) {
 | 
			
		||||
        exeUrl = `${initialUrl}/v${version}/node.exe`;
 | 
			
		||||
        libUrl = `${initialUrl}/v${version}/node.lib`;
 | 
			
		||||
 | 
			
		||||
        const exePath = await tc.downloadTool(exeUrl);
 | 
			
		||||
        const exePath = await tc.downloadTool(
 | 
			
		||||
          exeUrl,
 | 
			
		||||
          undefined,
 | 
			
		||||
          this.nodeInfo.mirrorToken
 | 
			
		||||
        );
 | 
			
		||||
        await io.cp(exePath, path.join(tempDir, 'node.exe'));
 | 
			
		||||
        const libPath = await tc.downloadTool(libUrl);
 | 
			
		||||
        const libPath = await tc.downloadTool(
 | 
			
		||||
          libUrl,
 | 
			
		||||
          undefined,
 | 
			
		||||
          this.nodeInfo.mirrorToken
 | 
			
		||||
        );
 | 
			
		||||
        await io.cp(libPath, path.join(tempDir, 'node.lib'));
 | 
			
		||||
      } else {
 | 
			
		||||
        throw err;
 | 
			
		||||
@@ -206,7 +239,8 @@ export default abstract class BaseDistribution {
 | 
			
		||||
 | 
			
		||||
  protected async extractArchive(
 | 
			
		||||
    downloadPath: string,
 | 
			
		||||
    info: INodeVersionInfo | null
 | 
			
		||||
    info: INodeVersionInfo | null,
 | 
			
		||||
    isOfficialArchive?: boolean
 | 
			
		||||
  ) {
 | 
			
		||||
    //
 | 
			
		||||
    // Extract
 | 
			
		||||
@@ -215,12 +249,24 @@ export default abstract class BaseDistribution {
 | 
			
		||||
    let extPath: string;
 | 
			
		||||
    info = info || ({} as INodeVersionInfo); // satisfy compiler, never null when reaches here
 | 
			
		||||
    if (this.osPlat == 'win32') {
 | 
			
		||||
      const extension = this.nodeInfo.arch === 'arm64' ? '.zip' : '.7z';
 | 
			
		||||
      // Rename archive to add extension because after downloading
 | 
			
		||||
      // archive does not contain extension type and it leads to some issues
 | 
			
		||||
      // on Windows runners without PowerShell Core.
 | 
			
		||||
      //
 | 
			
		||||
      // For default PowerShell Windows it should contain extension type to unpack it.
 | 
			
		||||
      if (extension === '.zip' && isOfficialArchive) {
 | 
			
		||||
        const renamedArchive = `${downloadPath}.zip`;
 | 
			
		||||
        fs.renameSync(downloadPath, renamedArchive);
 | 
			
		||||
        extPath = await tc.extractZip(renamedArchive);
 | 
			
		||||
      } else {
 | 
			
		||||
        const _7zPath = path.join(__dirname, '../..', 'externals', '7zr.exe');
 | 
			
		||||
        extPath = await tc.extract7z(downloadPath, undefined, _7zPath);
 | 
			
		||||
      }
 | 
			
		||||
      // 7z extracts to folder matching file name
 | 
			
		||||
      const nestedPath = path.join(
 | 
			
		||||
        extPath,
 | 
			
		||||
        path.basename(info.fileName, '.7z')
 | 
			
		||||
        path.basename(info.fileName, extension)
 | 
			
		||||
      );
 | 
			
		||||
      if (fs.existsSync(nestedPath)) {
 | 
			
		||||
        extPath = nestedPath;
 | 
			
		||||
@@ -260,7 +306,11 @@ export default abstract class BaseDistribution {
 | 
			
		||||
        dataFileName = `osx-${osArch}-tar`;
 | 
			
		||||
        break;
 | 
			
		||||
      case 'win32':
 | 
			
		||||
        if (this.nodeInfo.arch === 'arm64') {
 | 
			
		||||
          dataFileName = `win-${osArch}-zip`;
 | 
			
		||||
        } else {
 | 
			
		||||
          dataFileName = `win-${osArch}-exe`;
 | 
			
		||||
        }
 | 
			
		||||
        break;
 | 
			
		||||
      default:
 | 
			
		||||
        throw new Error(`Unexpected OS '${this.osPlat}'`);
 | 
			
		||||
 
 | 
			
		||||
@@ -4,6 +4,8 @@ export interface NodeInputs {
 | 
			
		||||
  auth?: string;
 | 
			
		||||
  checkLatest: boolean;
 | 
			
		||||
  stable: boolean;
 | 
			
		||||
  mirror: string;
 | 
			
		||||
  mirrorToken: string;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export interface INodeVersionInfo {
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,8 @@ export default class NightlyNodejs extends BasePrereleaseNodejs {
 | 
			
		||||
    super(nodeInfo);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  protected getDistributionUrl(): string {
 | 
			
		||||
    return 'https://nodejs.org/download/nightly';
 | 
			
		||||
  protected getDistributionUrl(mirror: string): string {
 | 
			
		||||
    const url = mirror || 'https://nodejs.org';
 | 
			
		||||
    return `${url}/download/nightly`;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -84,15 +84,21 @@ export default class OfficialBuilds extends BaseDistribution {
 | 
			
		||||
        downloadPath = await tc.downloadTool(
 | 
			
		||||
          versionInfo.downloadUrl,
 | 
			
		||||
          undefined,
 | 
			
		||||
          this.nodeInfo.auth
 | 
			
		||||
          this.nodeInfo.mirror ? this.nodeInfo.mirrorToken : this.nodeInfo.auth
 | 
			
		||||
        );
 | 
			
		||||
 | 
			
		||||
        if (downloadPath) {
 | 
			
		||||
          toolPath = await this.extractArchive(downloadPath, versionInfo);
 | 
			
		||||
          toolPath = await this.extractArchive(
 | 
			
		||||
            downloadPath,
 | 
			
		||||
            versionInfo,
 | 
			
		||||
            false
 | 
			
		||||
          );
 | 
			
		||||
        }
 | 
			
		||||
      } else {
 | 
			
		||||
        core.info(
 | 
			
		||||
          'Not found in manifest. Falling back to download directly from Node'
 | 
			
		||||
          `Not found in manifest. Falling back to download directly from ${
 | 
			
		||||
            this.nodeInfo.mirror || 'Node'
 | 
			
		||||
          }`
 | 
			
		||||
        );
 | 
			
		||||
      }
 | 
			
		||||
    } catch (err) {
 | 
			
		||||
@@ -172,8 +178,9 @@ export default class OfficialBuilds extends BaseDistribution {
 | 
			
		||||
    return version;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  protected getDistributionUrl(): string {
 | 
			
		||||
    return `https://nodejs.org/dist`;
 | 
			
		||||
  protected getDistributionUrl(mirror: string): string {
 | 
			
		||||
    const url = mirror || 'https://nodejs.org';
 | 
			
		||||
    return `${url}/dist`;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  private getManifest(): Promise<tc.IToolRelease[]> {
 | 
			
		||||
@@ -181,7 +188,7 @@ export default class OfficialBuilds extends BaseDistribution {
 | 
			
		||||
    return tc.getManifestFromRepo(
 | 
			
		||||
      'actions',
 | 
			
		||||
      'node-versions',
 | 
			
		||||
      this.nodeInfo.auth,
 | 
			
		||||
      this.nodeInfo.mirror ? this.nodeInfo.mirrorToken : this.nodeInfo.auth,
 | 
			
		||||
      'main'
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,8 @@ export default class RcBuild extends BaseDistribution {
 | 
			
		||||
    super(nodeInfo);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  getDistributionUrl(): string {
 | 
			
		||||
    return 'https://nodejs.org/download/rc';
 | 
			
		||||
  getDistributionUrl(mirror: string): string {
 | 
			
		||||
    const url = mirror || 'https://nodejs.org';
 | 
			
		||||
    return `${url}/download/rc`;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,8 @@ export default class CanaryBuild extends BasePrereleaseNodejs {
 | 
			
		||||
    super(nodeInfo);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  protected getDistributionUrl(): string {
 | 
			
		||||
    return 'https://nodejs.org/download/v8-canary';
 | 
			
		||||
  protected getDistributionUrl(mirror: string): string {
 | 
			
		||||
    const url = mirror || 'https://nodejs.org';
 | 
			
		||||
    return `${url}/download/v8-canary`;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										19
									
								
								src/main.ts
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								src/main.ts
									
									
									
									
									
								
							@@ -1,6 +1,5 @@
 | 
			
		||||
import * as core from '@actions/core';
 | 
			
		||||
 | 
			
		||||
import fs from 'fs';
 | 
			
		||||
import os from 'os';
 | 
			
		||||
 | 
			
		||||
import * as auth from './authutil';
 | 
			
		||||
@@ -8,7 +7,7 @@ import * as path from 'path';
 | 
			
		||||
import {restoreCache} from './cache-restore';
 | 
			
		||||
import {isCacheFeatureAvailable} from './cache-utils';
 | 
			
		||||
import {getNodejsDistribution} from './distributions/installer-factory';
 | 
			
		||||
import {parseNodeVersionFile, printEnvDetailsAndSetOutput} from './util';
 | 
			
		||||
import {getNodeVersionFromFile, printEnvDetailsAndSetOutput} from './util';
 | 
			
		||||
import {State} from './constants';
 | 
			
		||||
 | 
			
		||||
export async function run() {
 | 
			
		||||
@@ -37,6 +36,8 @@ export async function run() {
 | 
			
		||||
    if (version) {
 | 
			
		||||
      const token = core.getInput('token');
 | 
			
		||||
      const auth = !token ? undefined : `token ${token}`;
 | 
			
		||||
      const mirror = core.getInput('mirror');
 | 
			
		||||
      const mirrorToken = core.getInput('mirror-token');
 | 
			
		||||
      const stable =
 | 
			
		||||
        (core.getInput('stable') || 'true').toUpperCase() === 'TRUE';
 | 
			
		||||
      const checkLatest =
 | 
			
		||||
@@ -46,7 +47,9 @@ export async function run() {
 | 
			
		||||
        checkLatest,
 | 
			
		||||
        auth,
 | 
			
		||||
        stable,
 | 
			
		||||
        arch
 | 
			
		||||
        arch,
 | 
			
		||||
        mirror,
 | 
			
		||||
        mirrorToken
 | 
			
		||||
      };
 | 
			
		||||
      const nodeDistribution = getNodejsDistribution(nodejsInfo);
 | 
			
		||||
      await nodeDistribution.setupNodeJs();
 | 
			
		||||
@@ -99,15 +102,7 @@ function resolveVersionInput(): string {
 | 
			
		||||
      versionFileInput
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    if (!fs.existsSync(versionFilePath)) {
 | 
			
		||||
      throw new Error(
 | 
			
		||||
        `The specified node version file at: ${versionFilePath} does not exist`
 | 
			
		||||
      );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const parsedVersion = parseNodeVersionFile(
 | 
			
		||||
      fs.readFileSync(versionFilePath, 'utf8')
 | 
			
		||||
    );
 | 
			
		||||
    const parsedVersion = getNodeVersionFromFile(versionFilePath);
 | 
			
		||||
 | 
			
		||||
    if (parsedVersion) {
 | 
			
		||||
      version = parsedVersion;
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										60
									
								
								src/util.ts
									
									
									
									
									
								
							
							
						
						
									
										60
									
								
								src/util.ts
									
									
									
									
									
								
							@@ -1,52 +1,70 @@
 | 
			
		||||
import * as core from '@actions/core';
 | 
			
		||||
import * as exec from '@actions/exec';
 | 
			
		||||
import * as io from '@actions/io';
 | 
			
		||||
 | 
			
		||||
export function parseNodeVersionFile(contents: string): string | null {
 | 
			
		||||
  let nodeVersion: string | undefined;
 | 
			
		||||
import fs from 'fs';
 | 
			
		||||
import path from 'path';
 | 
			
		||||
 | 
			
		||||
export function getNodeVersionFromFile(versionFilePath: string): string | null {
 | 
			
		||||
  if (!fs.existsSync(versionFilePath)) {
 | 
			
		||||
    throw new Error(
 | 
			
		||||
      `The specified node version file at: ${versionFilePath} does not exist`
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  const contents = fs.readFileSync(versionFilePath, 'utf8');
 | 
			
		||||
 | 
			
		||||
  // Try parsing the file as an NPM `package.json` file.
 | 
			
		||||
  try {
 | 
			
		||||
    const manifest = JSON.parse(contents);
 | 
			
		||||
 | 
			
		||||
    // JSON can parse numbers, but that's handled later
 | 
			
		||||
    if (typeof manifest === 'object') {
 | 
			
		||||
      nodeVersion = manifest.volta?.node;
 | 
			
		||||
      if (!nodeVersion) nodeVersion = manifest.engines?.node;
 | 
			
		||||
    // Presume package.json file.
 | 
			
		||||
    if (typeof manifest === 'object' && !!manifest) {
 | 
			
		||||
      // Support Volta.
 | 
			
		||||
      // See https://docs.volta.sh/guide/understanding#managing-your-project
 | 
			
		||||
      if (manifest.volta?.node) {
 | 
			
		||||
        return manifest.volta.node;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      // if contents are an object, we parsed JSON
 | 
			
		||||
      if (manifest.engines?.node) {
 | 
			
		||||
        return manifest.engines.node;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      // Support Volta workspaces.
 | 
			
		||||
      // See https://docs.volta.sh/advanced/workspaces
 | 
			
		||||
      if (manifest.volta?.extends) {
 | 
			
		||||
        const extendedFilePath = path.resolve(
 | 
			
		||||
          path.dirname(versionFilePath),
 | 
			
		||||
          manifest.volta.extends
 | 
			
		||||
        );
 | 
			
		||||
        core.info('Resolving node version from ' + extendedFilePath);
 | 
			
		||||
        return getNodeVersionFromFile(extendedFilePath);
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      // If contents are an object, we parsed JSON
 | 
			
		||||
      // this can happen if node-version-file is a package.json
 | 
			
		||||
      // yet contains no volta.node or engines.node
 | 
			
		||||
      //
 | 
			
		||||
      // if node-version file is _not_ json, control flow
 | 
			
		||||
      // If node-version file is _not_ JSON, control flow
 | 
			
		||||
      // will not have reached these lines.
 | 
			
		||||
      //
 | 
			
		||||
      // And because we've reached here, we know the contents
 | 
			
		||||
      // *are* JSON, so no further string parsing makes sense.
 | 
			
		||||
      if (!nodeVersion) {
 | 
			
		||||
      return null;
 | 
			
		||||
    }
 | 
			
		||||
    }
 | 
			
		||||
  } catch {
 | 
			
		||||
    core.info('Node version file is not JSON file');
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (!nodeVersion) {
 | 
			
		||||
  const found = contents.match(/^(?:node(js)?\s+)?v?(?<version>[^\s]+)$/m);
 | 
			
		||||
    nodeVersion = found?.groups?.version;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // In the case of an unknown format,
 | 
			
		||||
  // return as is and evaluate the version separately.
 | 
			
		||||
  if (!nodeVersion) nodeVersion = contents.trim();
 | 
			
		||||
 | 
			
		||||
  return nodeVersion as string;
 | 
			
		||||
  return found?.groups?.version ?? contents.trim();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export async function printEnvDetailsAndSetOutput() {
 | 
			
		||||
  core.startGroup('Environment details');
 | 
			
		||||
 | 
			
		||||
  const promises = ['node', 'npm', 'yarn'].map(async tool => {
 | 
			
		||||
    const output = await getToolVersion(tool, ['--version']);
 | 
			
		||||
    const pathTool = await io.which(tool, false);
 | 
			
		||||
    const output = pathTool ? await getToolVersion(tool, ['--version']) : '';
 | 
			
		||||
 | 
			
		||||
    return {tool, output};
 | 
			
		||||
  });
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user