mirror of
				https://gitea.com/actions/setup-python.git
				synced 2025-11-04 05:38:56 +08:00 
			
		
		
		
	Compare commits
	
		
			11 Commits
		
	
	
		
			v4.7.1
			...
			restore-v4
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					7f4fc3e22c | ||
| 
						 | 
					3605726ffa | ||
| 
						 | 
					b64ffcaf5b | ||
| 
						 | 
					8d2896179a | ||
| 
						 | 
					7bc6abb01e | ||
| 
						 | 
					e8111cec9d | ||
| 
						 | 
					a00ea43da6 | ||
| 
						 | 
					8635b1ccc5 | ||
| 
						 | 
					f6cc428f53 | ||
| 
						 | 
					5f2af211d6 | ||
| 
						 | 
					3467d92d48 | 
							
								
								
									
										22
									
								
								.github/workflows/e2e-cache.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										22
									
								
								.github/workflows/e2e-cache.yml
									
									
									
									
										vendored
									
									
								
							@@ -20,10 +20,13 @@ jobs:
 | 
				
			|||||||
    strategy:
 | 
					    strategy:
 | 
				
			||||||
      fail-fast: false
 | 
					      fail-fast: false
 | 
				
			||||||
      matrix:
 | 
					      matrix:
 | 
				
			||||||
        os: [ubuntu-latest, windows-latest, macos-latest]
 | 
					        os: [ubuntu-latest, windows-latest, macos-13]
 | 
				
			||||||
        python-version: ['3.9', 'pypy-3.7-v7.x']
 | 
					        python-version: ['3.9', 'pypy-3.7-v7.x']
 | 
				
			||||||
 | 
					        exclude:
 | 
				
			||||||
 | 
					          - os: macos-13
 | 
				
			||||||
 | 
					            python-version: 'pypy-3.7-v7.x'
 | 
				
			||||||
    steps:
 | 
					    steps:
 | 
				
			||||||
      - uses: actions/checkout@v3
 | 
					      - uses: actions/checkout@v4
 | 
				
			||||||
      - name: Setup Python
 | 
					      - name: Setup Python
 | 
				
			||||||
        uses: ./
 | 
					        uses: ./
 | 
				
			||||||
        with:
 | 
					        with:
 | 
				
			||||||
@@ -41,7 +44,7 @@ jobs:
 | 
				
			|||||||
        os: [ubuntu-latest, windows-latest, macos-latest]
 | 
					        os: [ubuntu-latest, windows-latest, macos-latest]
 | 
				
			||||||
        python-version: ['3.9', 'pypy-3.9-v7.x']
 | 
					        python-version: ['3.9', 'pypy-3.9-v7.x']
 | 
				
			||||||
    steps:
 | 
					    steps:
 | 
				
			||||||
      - uses: actions/checkout@v3
 | 
					      - uses: actions/checkout@v4
 | 
				
			||||||
      - name: Setup Python
 | 
					      - name: Setup Python
 | 
				
			||||||
        id: cache-pipenv
 | 
					        id: cache-pipenv
 | 
				
			||||||
        uses: ./
 | 
					        uses: ./
 | 
				
			||||||
@@ -77,7 +80,7 @@ jobs:
 | 
				
			|||||||
        os: [ubuntu-latest, windows-latest, macos-latest]
 | 
					        os: [ubuntu-latest, windows-latest, macos-latest]
 | 
				
			||||||
        python-version: ['3.9', 'pypy-3.8']
 | 
					        python-version: ['3.9', 'pypy-3.8']
 | 
				
			||||||
    steps:
 | 
					    steps:
 | 
				
			||||||
      - uses: actions/checkout@v3
 | 
					      - uses: actions/checkout@v4
 | 
				
			||||||
      - name: Install poetry
 | 
					      - name: Install poetry
 | 
				
			||||||
        run: pipx install poetry
 | 
					        run: pipx install poetry
 | 
				
			||||||
      - name: Init pyproject.toml
 | 
					      - name: Init pyproject.toml
 | 
				
			||||||
@@ -88,7 +91,7 @@ jobs:
 | 
				
			|||||||
          python-version: ${{ matrix.python-version }}
 | 
					          python-version: ${{ matrix.python-version }}
 | 
				
			||||||
          cache: 'poetry'
 | 
					          cache: 'poetry'
 | 
				
			||||||
      - name: Install dependencies
 | 
					      - name: Install dependencies
 | 
				
			||||||
        run: poetry install
 | 
					        run: poetry install --no-root
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  python-pip-dependencies-caching-path:
 | 
					  python-pip-dependencies-caching-path:
 | 
				
			||||||
    name: Test pip (Python ${{ matrix.python-version}}, ${{ matrix.os }})
 | 
					    name: Test pip (Python ${{ matrix.python-version}}, ${{ matrix.os }})
 | 
				
			||||||
@@ -96,10 +99,13 @@ jobs:
 | 
				
			|||||||
    strategy:
 | 
					    strategy:
 | 
				
			||||||
      fail-fast: false
 | 
					      fail-fast: false
 | 
				
			||||||
      matrix:
 | 
					      matrix:
 | 
				
			||||||
        os: [ubuntu-latest, windows-latest, macos-latest]
 | 
					        os: [ubuntu-latest, windows-latest, macos-13]
 | 
				
			||||||
        python-version: ['3.9', 'pypy-3.7-v7.x']
 | 
					        python-version: ['3.9', 'pypy-3.7-v7.x']
 | 
				
			||||||
 | 
					        exclude:
 | 
				
			||||||
 | 
					          - os: macos-13
 | 
				
			||||||
 | 
					            python-version: 'pypy-3.7-v7.x'
 | 
				
			||||||
    steps:
 | 
					    steps:
 | 
				
			||||||
      - uses: actions/checkout@v3
 | 
					      - uses: actions/checkout@v4
 | 
				
			||||||
      - name: Setup Python
 | 
					      - name: Setup Python
 | 
				
			||||||
        uses: ./
 | 
					        uses: ./
 | 
				
			||||||
        with:
 | 
					        with:
 | 
				
			||||||
@@ -118,7 +124,7 @@ jobs:
 | 
				
			|||||||
        os: [ubuntu-latest, windows-latest, macos-latest]
 | 
					        os: [ubuntu-latest, windows-latest, macos-latest]
 | 
				
			||||||
        python-version: ['3.9', 'pypy-3.9-v7.x']
 | 
					        python-version: ['3.9', 'pypy-3.9-v7.x']
 | 
				
			||||||
    steps:
 | 
					    steps:
 | 
				
			||||||
      - uses: actions/checkout@v3
 | 
					      - uses: actions/checkout@v4
 | 
				
			||||||
      - name: Setup Python
 | 
					      - name: Setup Python
 | 
				
			||||||
        id: cache-pipenv
 | 
					        id: cache-pipenv
 | 
				
			||||||
        uses: ./
 | 
					        uses: ./
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										45
									
								
								.github/workflows/e2e-tests.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										45
									
								
								.github/workflows/e2e-tests.yml
									
									
									
									
										vendored
									
									
								
							@@ -16,23 +16,19 @@ jobs:
 | 
				
			|||||||
    runs-on: ${{ matrix.operating-system }}
 | 
					    runs-on: ${{ matrix.operating-system }}
 | 
				
			||||||
    strategy:
 | 
					    strategy:
 | 
				
			||||||
      matrix:
 | 
					      matrix:
 | 
				
			||||||
        operating-system: [ubuntu-20.04, windows-latest]
 | 
					        operating-system: [ubuntu-22.04, windows-latest]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    steps:
 | 
					    steps:
 | 
				
			||||||
      - name: Checkout
 | 
					      - name: Checkout
 | 
				
			||||||
        uses: actions/checkout@v3
 | 
					        uses: actions/checkout@v4
 | 
				
			||||||
 | 
					 | 
				
			||||||
      - name: Run with setup-python 3.5
 | 
					 | 
				
			||||||
        uses: ./
 | 
					 | 
				
			||||||
        with:
 | 
					 | 
				
			||||||
          python-version: 3.5
 | 
					 | 
				
			||||||
      - name: Verify 3.5
 | 
					 | 
				
			||||||
        run: python __tests__/verify-python.py 3.5
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
      - name: Run with setup-python 3.6
 | 
					      - name: Run with setup-python 3.6
 | 
				
			||||||
 | 
					        if: ${{ matrix.operating-system == 'windows-latest' }}
 | 
				
			||||||
        uses: ./
 | 
					        uses: ./
 | 
				
			||||||
        with:
 | 
					        with:
 | 
				
			||||||
          python-version: 3.6
 | 
					          python-version: 3.6
 | 
				
			||||||
      - name: Verify 3.6
 | 
					      - name: Verify 3.6
 | 
				
			||||||
 | 
					        if: ${{ matrix.operating-system == 'windows-latest' }}
 | 
				
			||||||
        run: python __tests__/verify-python.py 3.6
 | 
					        run: python __tests__/verify-python.py 3.6
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      - name: Run with setup-python 3.7
 | 
					      - name: Run with setup-python 3.7
 | 
				
			||||||
@@ -50,26 +46,50 @@ jobs:
 | 
				
			|||||||
        run: python __tests__/verify-python.py 3.8
 | 
					        run: python __tests__/verify-python.py 3.8
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      - name: Run with setup-python 3.7.5
 | 
					      - name: Run with setup-python 3.7.5
 | 
				
			||||||
 | 
					        if: ${{ matrix.operating-system == 'windows-latest' }}
 | 
				
			||||||
        uses: ./
 | 
					        uses: ./
 | 
				
			||||||
        with:
 | 
					        with:
 | 
				
			||||||
          python-version: 3.7.5
 | 
					          python-version: 3.7.5
 | 
				
			||||||
      - name: Verify 3.7.5
 | 
					      - name: Verify 3.7.5
 | 
				
			||||||
 | 
					        if: ${{ matrix.operating-system == 'windows-latest' }}
 | 
				
			||||||
        run: python __tests__/verify-python.py 3.7.5
 | 
					        run: python __tests__/verify-python.py 3.7.5
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      - name: Run with setup-python 3.6.7
 | 
					      - name: Run with setup-python 3.6.7
 | 
				
			||||||
 | 
					        if: ${{ matrix.operating-system == 'windows-latest' }}
 | 
				
			||||||
        uses: ./
 | 
					        uses: ./
 | 
				
			||||||
        with:
 | 
					        with:
 | 
				
			||||||
          python-version: 3.6.7
 | 
					          python-version: 3.6.7
 | 
				
			||||||
      - name: Verify 3.6.7
 | 
					      - name: Verify 3.6.7
 | 
				
			||||||
 | 
					        if: ${{ matrix.operating-system == 'windows-latest' }}
 | 
				
			||||||
        run: python __tests__/verify-python.py 3.6.7
 | 
					        run: python __tests__/verify-python.py 3.6.7
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      - name: Run with setup-python 3.8.1
 | 
					      - name: Run with setup-python 3.8.1
 | 
				
			||||||
 | 
					        if: ${{ matrix.operating-system == 'windows-latest' }}
 | 
				
			||||||
        uses: ./
 | 
					        uses: ./
 | 
				
			||||||
        with:
 | 
					        with:
 | 
				
			||||||
          python-version: 3.8.1
 | 
					          python-version: 3.8.1
 | 
				
			||||||
      - name: Verify 3.8.1
 | 
					      - name: Verify 3.8.1
 | 
				
			||||||
 | 
					        if: ${{ matrix.operating-system == 'windows-latest' }}
 | 
				
			||||||
        run: python __tests__/verify-python.py 3.8.1
 | 
					        run: python __tests__/verify-python.py 3.8.1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      - name: Run with setup-python 3.7.13
 | 
				
			||||||
 | 
					        if: ${{ matrix.operating-system == 'ubuntu-22.04' }}
 | 
				
			||||||
 | 
					        uses: ./
 | 
				
			||||||
 | 
					        with:
 | 
				
			||||||
 | 
					          python-version: 3.7.13
 | 
				
			||||||
 | 
					      - name: Verify 3.7.13
 | 
				
			||||||
 | 
					        if: ${{ matrix.operating-system == 'ubuntu-22.04' }}
 | 
				
			||||||
 | 
					        run: python __tests__/verify-python.py 3.7.13
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      - name: Run with setup-python 3.8.12
 | 
				
			||||||
 | 
					        if: ${{ matrix.operating-system == 'ubuntu-22.04' }}
 | 
				
			||||||
 | 
					        uses: ./
 | 
				
			||||||
 | 
					        with:
 | 
				
			||||||
 | 
					          python-version: 3.8.12
 | 
				
			||||||
 | 
					      - name: Verify 3.8.12
 | 
				
			||||||
 | 
					        if: ${{ matrix.operating-system == 'ubuntu-22.04' }}
 | 
				
			||||||
 | 
					        run: python __tests__/verify-python.py 3.8.12
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      - name: Run with setup-python 3.10
 | 
					      - name: Run with setup-python 3.10
 | 
				
			||||||
        id: cp310
 | 
					        id: cp310
 | 
				
			||||||
        uses: ./
 | 
					        uses: ./
 | 
				
			||||||
@@ -93,10 +113,3 @@ jobs:
 | 
				
			|||||||
          python-version: '<3.11'
 | 
					          python-version: '<3.11'
 | 
				
			||||||
      - name: Verify <3.11
 | 
					      - name: Verify <3.11
 | 
				
			||||||
        run: python __tests__/verify-python.py 3.10
 | 
					        run: python __tests__/verify-python.py 3.10
 | 
				
			||||||
 | 
					 | 
				
			||||||
      - name: Run with setup-python >3.8
 | 
					 | 
				
			||||||
        uses: ./
 | 
					 | 
				
			||||||
        with:
 | 
					 | 
				
			||||||
          python-version: '>3.8'
 | 
					 | 
				
			||||||
      - name: Verify >3.8
 | 
					 | 
				
			||||||
        run: python __tests__/verify-python.py 3.11
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										20
									
								
								.github/workflows/publish-immutable-action.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								.github/workflows/publish-immutable-action.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
 | 
				
			||||||
							
								
								
									
										116
									
								
								.github/workflows/test-graalpy.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										116
									
								
								.github/workflows/test-graalpy.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,116 @@
 | 
				
			|||||||
 | 
					name: Validate GraalPy e2e
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					on:
 | 
				
			||||||
 | 
					  push:
 | 
				
			||||||
 | 
					    branches:
 | 
				
			||||||
 | 
					      - main
 | 
				
			||||||
 | 
					    paths-ignore:
 | 
				
			||||||
 | 
					      - '**.md'
 | 
				
			||||||
 | 
					  pull_request:
 | 
				
			||||||
 | 
					    paths-ignore:
 | 
				
			||||||
 | 
					      - '**.md'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					jobs:
 | 
				
			||||||
 | 
					  setup-graalpy:
 | 
				
			||||||
 | 
					    name: Setup GraalPy ${{ matrix.graalpy }} ${{ matrix.os }}
 | 
				
			||||||
 | 
					    runs-on: ${{ matrix.os }}
 | 
				
			||||||
 | 
					    strategy:
 | 
				
			||||||
 | 
					      fail-fast: false
 | 
				
			||||||
 | 
					      matrix:
 | 
				
			||||||
 | 
					        os: [macos-latest, ubuntu-22.04, ubuntu-latest]
 | 
				
			||||||
 | 
					        graalpy:
 | 
				
			||||||
 | 
					          - 'graalpy-23.0'
 | 
				
			||||||
 | 
					          - 'graalpy-22.3'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    steps:
 | 
				
			||||||
 | 
					      - name: Checkout
 | 
				
			||||||
 | 
					        uses: actions/checkout@v4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      - name: setup-python ${{ matrix.graalpy }}
 | 
				
			||||||
 | 
					        id: setup-python
 | 
				
			||||||
 | 
					        uses: ./
 | 
				
			||||||
 | 
					        with:
 | 
				
			||||||
 | 
					          python-version: ${{ matrix.graalpy }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      - name: Check python-path
 | 
				
			||||||
 | 
					        run: ./__tests__/check-python-path.sh '${{ steps.setup-python.outputs.python-path }}'
 | 
				
			||||||
 | 
					        shell: bash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      - name: GraalPy and Python version
 | 
				
			||||||
 | 
					        run: python --version
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      - name: Run simple code
 | 
				
			||||||
 | 
					        run: python -c 'import math; print(math.factorial(5))'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      - name: Assert GraalPy is running
 | 
				
			||||||
 | 
					        run: |
 | 
				
			||||||
 | 
					          import platform
 | 
				
			||||||
 | 
					          assert platform.python_implementation().lower() == "graalvm"
 | 
				
			||||||
 | 
					        shell: python
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      - name: Assert expected binaries (or symlinks) are present
 | 
				
			||||||
 | 
					        run: |
 | 
				
			||||||
 | 
					          EXECUTABLE=${{ matrix.graalpy }}
 | 
				
			||||||
 | 
					          EXECUTABLE=${EXECUTABLE/graalpy-/graalpy}  # remove the first '-' in "graalpy-X.Y" -> "graalpyX.Y" to match executable name
 | 
				
			||||||
 | 
					          EXECUTABLE=${EXECUTABLE%%-*}  # remove any -* suffixe
 | 
				
			||||||
 | 
					          ${EXECUTABLE} --version
 | 
				
			||||||
 | 
					        shell: bash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  setup-graalpy-noenv:
 | 
				
			||||||
 | 
					    name: Setup GraalPy ${{ matrix.graalpy }} ${{ matrix.os }} (noenv)
 | 
				
			||||||
 | 
					    runs-on: ${{ matrix.os }}
 | 
				
			||||||
 | 
					    strategy:
 | 
				
			||||||
 | 
					      fail-fast: false
 | 
				
			||||||
 | 
					      matrix:
 | 
				
			||||||
 | 
					        os: [macos-latest, ubuntu-22.04, ubuntu-latest]
 | 
				
			||||||
 | 
					        graalpy: ['graalpy23.0', 'graalpy22.3']
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    steps:
 | 
				
			||||||
 | 
					      - name: Checkout
 | 
				
			||||||
 | 
					        uses: actions/checkout@v4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      - name: setup-python ${{ matrix.graalpy }}
 | 
				
			||||||
 | 
					        id: setup-python
 | 
				
			||||||
 | 
					        uses: ./
 | 
				
			||||||
 | 
					        with:
 | 
				
			||||||
 | 
					          python-version: ${{ matrix.graalpy }}
 | 
				
			||||||
 | 
					          update-environment: false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      - name: GraalPy and Python version
 | 
				
			||||||
 | 
					        run: ${{ steps.setup-python.outputs.python-path }} --version
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      - name: Run simple code
 | 
				
			||||||
 | 
					        run: ${{ steps.setup-python.outputs.python-path }} -c 'import math; print(math.factorial(5))'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  check-latest:
 | 
				
			||||||
 | 
					    runs-on: ${{ matrix.os }}
 | 
				
			||||||
 | 
					    strategy:
 | 
				
			||||||
 | 
					      fail-fast: false
 | 
				
			||||||
 | 
					      matrix:
 | 
				
			||||||
 | 
					        os: [ubuntu-latest, macos-latest]
 | 
				
			||||||
 | 
					    steps:
 | 
				
			||||||
 | 
					      - uses: actions/checkout@v4
 | 
				
			||||||
 | 
					      - name: Setup GraalPy and check latest
 | 
				
			||||||
 | 
					        uses: ./
 | 
				
			||||||
 | 
					        id: graalpy
 | 
				
			||||||
 | 
					        with:
 | 
				
			||||||
 | 
					          python-version: 'graalpy-23.x'
 | 
				
			||||||
 | 
					          check-latest: true
 | 
				
			||||||
 | 
					      - name: GraalPy and Python version
 | 
				
			||||||
 | 
					        run: python --version
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      - name: Run simple code
 | 
				
			||||||
 | 
					        run: python -c 'import math; print(math.factorial(5))'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      - name: Assert GraalPy is running
 | 
				
			||||||
 | 
					        run: |
 | 
				
			||||||
 | 
					          import platform
 | 
				
			||||||
 | 
					          assert platform.python_implementation().lower() == "graalvm"
 | 
				
			||||||
 | 
					        shell: python
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      - name: Assert expected binaries (or symlinks) are present
 | 
				
			||||||
 | 
					        run: |
 | 
				
			||||||
 | 
					          EXECUTABLE='${{ steps.graalpy.outputs.python-version }}'
 | 
				
			||||||
 | 
					          EXECUTABLE="${EXECUTABLE%.*}"
 | 
				
			||||||
 | 
					          ${EXECUTABLE} --version
 | 
				
			||||||
 | 
					        shell: bash
 | 
				
			||||||
							
								
								
									
										19
									
								
								.github/workflows/test-pypy.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										19
									
								
								.github/workflows/test-pypy.yml
									
									
									
									
										vendored
									
									
								
							@@ -19,7 +19,7 @@ jobs:
 | 
				
			|||||||
    strategy:
 | 
					    strategy:
 | 
				
			||||||
      fail-fast: false
 | 
					      fail-fast: false
 | 
				
			||||||
      matrix:
 | 
					      matrix:
 | 
				
			||||||
        os: [macos-latest, windows-latest, ubuntu-20.04, ubuntu-latest]
 | 
					        os: [macos-13, windows-latest, ubuntu-22.04, ubuntu-latest]
 | 
				
			||||||
        pypy:
 | 
					        pypy:
 | 
				
			||||||
          - 'pypy-2.7'
 | 
					          - 'pypy-2.7'
 | 
				
			||||||
          - 'pypy-3.7'
 | 
					          - 'pypy-3.7'
 | 
				
			||||||
@@ -32,10 +32,13 @@ jobs:
 | 
				
			|||||||
          - 'pypy-2.7-v7.3.4rc1'
 | 
					          - 'pypy-2.7-v7.3.4rc1'
 | 
				
			||||||
          - 'pypy-3.7-nightly'
 | 
					          - 'pypy-3.7-nightly'
 | 
				
			||||||
          - 'pypy3.8-v7.3.7'
 | 
					          - 'pypy3.8-v7.3.7'
 | 
				
			||||||
 | 
					        exclude:
 | 
				
			||||||
 | 
					          - os: macos-13
 | 
				
			||||||
 | 
					            pypy: 'pypy-3.7-nightly'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    steps:
 | 
					    steps:
 | 
				
			||||||
      - name: Checkout
 | 
					      - name: Checkout
 | 
				
			||||||
        uses: actions/checkout@v3
 | 
					        uses: actions/checkout@v4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      - name: setup-python ${{ matrix.pypy }}
 | 
					      - name: setup-python ${{ matrix.pypy }}
 | 
				
			||||||
        id: setup-python
 | 
					        id: setup-python
 | 
				
			||||||
@@ -73,12 +76,12 @@ jobs:
 | 
				
			|||||||
    strategy:
 | 
					    strategy:
 | 
				
			||||||
      fail-fast: false
 | 
					      fail-fast: false
 | 
				
			||||||
      matrix:
 | 
					      matrix:
 | 
				
			||||||
        os: [macos-latest, windows-latest, ubuntu-20.04, ubuntu-latest]
 | 
					        os: [macos-13, windows-latest, ubuntu-22.04, ubuntu-latest]
 | 
				
			||||||
        pypy: ['pypy2.7', 'pypy3.7', 'pypy3.8', 'pypy3.9-nightly']
 | 
					        pypy: ['pypy2.7', 'pypy3.7', 'pypy3.8', 'pypy3.9-nightly']
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    steps:
 | 
					    steps:
 | 
				
			||||||
      - name: Checkout
 | 
					      - name: Checkout
 | 
				
			||||||
        uses: actions/checkout@v3
 | 
					        uses: actions/checkout@v4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      - name: setup-python ${{ matrix.pypy }}
 | 
					      - name: setup-python ${{ matrix.pypy }}
 | 
				
			||||||
        id: setup-python
 | 
					        id: setup-python
 | 
				
			||||||
@@ -98,9 +101,9 @@ jobs:
 | 
				
			|||||||
    strategy:
 | 
					    strategy:
 | 
				
			||||||
      fail-fast: false
 | 
					      fail-fast: false
 | 
				
			||||||
      matrix:
 | 
					      matrix:
 | 
				
			||||||
        os: [ubuntu-latest, windows-latest, macos-latest]
 | 
					        os: [ubuntu-latest, windows-latest, macos-13]
 | 
				
			||||||
    steps:
 | 
					    steps:
 | 
				
			||||||
      - uses: actions/checkout@v3
 | 
					      - uses: actions/checkout@v4
 | 
				
			||||||
      - name: Setup PyPy and check latest
 | 
					      - name: Setup PyPy and check latest
 | 
				
			||||||
        uses: ./
 | 
					        uses: ./
 | 
				
			||||||
        with:
 | 
					        with:
 | 
				
			||||||
@@ -131,9 +134,9 @@ jobs:
 | 
				
			|||||||
    strategy:
 | 
					    strategy:
 | 
				
			||||||
      fail-fast: false
 | 
					      fail-fast: false
 | 
				
			||||||
      matrix:
 | 
					      matrix:
 | 
				
			||||||
        os: [ubuntu-latest, windows-latest, macos-latest]
 | 
					        os: [ubuntu-latest, windows-latest, macos-13]
 | 
				
			||||||
    steps:
 | 
					    steps:
 | 
				
			||||||
      - uses: actions/checkout@v3
 | 
					      - uses: actions/checkout@v4
 | 
				
			||||||
      - name: Setup PyPy and check latest
 | 
					      - name: Setup PyPy and check latest
 | 
				
			||||||
        uses: ./
 | 
					        uses: ./
 | 
				
			||||||
        with:
 | 
					        with:
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										68
									
								
								.github/workflows/test-python.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										68
									
								
								.github/workflows/test-python.yml
									
									
									
									
										vendored
									
									
								
							@@ -20,11 +20,9 @@ jobs:
 | 
				
			|||||||
    strategy:
 | 
					    strategy:
 | 
				
			||||||
      fail-fast: false
 | 
					      fail-fast: false
 | 
				
			||||||
      matrix:
 | 
					      matrix:
 | 
				
			||||||
        os: [macos-latest, windows-latest, ubuntu-20.04, ubuntu-22.04]
 | 
					        os: [macos-13, windows-latest, ubuntu-22.04]
 | 
				
			||||||
        python: [3.5.4, 3.6.7, 3.7.5, 3.8.15, 3.9.13]
 | 
					        python: [3.6.7, 3.7.5, 3.8.15, 3.9.13]
 | 
				
			||||||
        exclude:
 | 
					        exclude:
 | 
				
			||||||
          - os: ubuntu-22.04
 | 
					 | 
				
			||||||
            python: 3.5.4
 | 
					 | 
				
			||||||
          - os: ubuntu-22.04
 | 
					          - os: ubuntu-22.04
 | 
				
			||||||
            python: 3.6.7
 | 
					            python: 3.6.7
 | 
				
			||||||
          - os: ubuntu-22.04
 | 
					          - os: ubuntu-22.04
 | 
				
			||||||
@@ -33,7 +31,7 @@ jobs:
 | 
				
			|||||||
            python: 3.8.15
 | 
					            python: 3.8.15
 | 
				
			||||||
    steps:
 | 
					    steps:
 | 
				
			||||||
      - name: Checkout
 | 
					      - name: Checkout
 | 
				
			||||||
        uses: actions/checkout@v3
 | 
					        uses: actions/checkout@v4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      - name: setup-python ${{ matrix.python }}
 | 
					      - name: setup-python ${{ matrix.python }}
 | 
				
			||||||
        id: setup-python
 | 
					        id: setup-python
 | 
				
			||||||
@@ -64,11 +62,9 @@ jobs:
 | 
				
			|||||||
    strategy:
 | 
					    strategy:
 | 
				
			||||||
      fail-fast: false
 | 
					      fail-fast: false
 | 
				
			||||||
      matrix:
 | 
					      matrix:
 | 
				
			||||||
        os: [macos-latest, windows-latest, ubuntu-20.04, ubuntu-22.04]
 | 
					        os: [macos-13, windows-latest, ubuntu-22.04]
 | 
				
			||||||
        python: [3.5.4, 3.6.7, 3.7.5, 3.8.15, 3.9.13]
 | 
					        python: [3.6.7, 3.7.5, 3.8.15, 3.9.13]
 | 
				
			||||||
        exclude:
 | 
					        exclude:
 | 
				
			||||||
          - os: ubuntu-22.04
 | 
					 | 
				
			||||||
            python: 3.5.4
 | 
					 | 
				
			||||||
          - os: ubuntu-22.04
 | 
					          - os: ubuntu-22.04
 | 
				
			||||||
            python: 3.6.7
 | 
					            python: 3.6.7
 | 
				
			||||||
          - os: ubuntu-22.04
 | 
					          - os: ubuntu-22.04
 | 
				
			||||||
@@ -77,7 +73,7 @@ jobs:
 | 
				
			|||||||
            python: 3.8.15
 | 
					            python: 3.8.15
 | 
				
			||||||
    steps:
 | 
					    steps:
 | 
				
			||||||
      - name: Checkout
 | 
					      - name: Checkout
 | 
				
			||||||
        uses: actions/checkout@v3
 | 
					        uses: actions/checkout@v4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      - name: build-version-file ${{ matrix.python }}
 | 
					      - name: build-version-file ${{ matrix.python }}
 | 
				
			||||||
        run: echo ${{ matrix.python }} > .python-version
 | 
					        run: echo ${{ matrix.python }} > .python-version
 | 
				
			||||||
@@ -111,11 +107,9 @@ jobs:
 | 
				
			|||||||
    strategy:
 | 
					    strategy:
 | 
				
			||||||
      fail-fast: false
 | 
					      fail-fast: false
 | 
				
			||||||
      matrix:
 | 
					      matrix:
 | 
				
			||||||
        os: [macos-latest, windows-latest, ubuntu-20.04, ubuntu-22.04]
 | 
					        os: [macos-13, windows-latest, ubuntu-22.04]
 | 
				
			||||||
        python: [3.5.4, 3.6.7, 3.7.5, 3.8.15, 3.9.13]
 | 
					        python: [3.6.7, 3.7.5, 3.8.15, 3.9.13]
 | 
				
			||||||
        exclude:
 | 
					        exclude:
 | 
				
			||||||
          - os: ubuntu-22.04
 | 
					 | 
				
			||||||
            python: 3.5.4
 | 
					 | 
				
			||||||
          - os: ubuntu-22.04
 | 
					          - os: ubuntu-22.04
 | 
				
			||||||
            python: 3.6.7
 | 
					            python: 3.6.7
 | 
				
			||||||
          - os: ubuntu-22.04
 | 
					          - os: ubuntu-22.04
 | 
				
			||||||
@@ -124,7 +118,7 @@ jobs:
 | 
				
			|||||||
            python: 3.8.15
 | 
					            python: 3.8.15
 | 
				
			||||||
    steps:
 | 
					    steps:
 | 
				
			||||||
      - name: Checkout
 | 
					      - name: Checkout
 | 
				
			||||||
        uses: actions/checkout@v3
 | 
					        uses: actions/checkout@v4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      - name: build-version-file ${{ matrix.python }}
 | 
					      - name: build-version-file ${{ matrix.python }}
 | 
				
			||||||
        run: echo ${{ matrix.python }} > .python-version
 | 
					        run: echo ${{ matrix.python }} > .python-version
 | 
				
			||||||
@@ -156,11 +150,9 @@ jobs:
 | 
				
			|||||||
    strategy:
 | 
					    strategy:
 | 
				
			||||||
      fail-fast: false
 | 
					      fail-fast: false
 | 
				
			||||||
      matrix:
 | 
					      matrix:
 | 
				
			||||||
        os: [macos-latest, windows-latest, ubuntu-20.04, ubuntu-22.04]
 | 
					        os: [macos-13, windows-latest, ubuntu-22.04]
 | 
				
			||||||
        python: [3.5.4, 3.6.7, 3.7.5, 3.8.15, 3.9.13, '==3.10.10']
 | 
					        python: [3.6.7, 3.7.5, 3.8.15, 3.9.13, '==3.10.10']
 | 
				
			||||||
        exclude:
 | 
					        exclude:
 | 
				
			||||||
          - os: ubuntu-22.04
 | 
					 | 
				
			||||||
            python: 3.5.4
 | 
					 | 
				
			||||||
          - os: ubuntu-22.04
 | 
					          - os: ubuntu-22.04
 | 
				
			||||||
            python: 3.6.7
 | 
					            python: 3.6.7
 | 
				
			||||||
          - os: ubuntu-22.04
 | 
					          - os: ubuntu-22.04
 | 
				
			||||||
@@ -169,7 +161,7 @@ jobs:
 | 
				
			|||||||
            python: 3.8.15
 | 
					            python: 3.8.15
 | 
				
			||||||
    steps:
 | 
					    steps:
 | 
				
			||||||
      - name: Checkout
 | 
					      - name: Checkout
 | 
				
			||||||
        uses: actions/checkout@v3
 | 
					        uses: actions/checkout@v4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      - name: build-version-file ${{ matrix.python }}
 | 
					      - name: build-version-file ${{ matrix.python }}
 | 
				
			||||||
        run: |
 | 
					        run: |
 | 
				
			||||||
@@ -206,11 +198,9 @@ jobs:
 | 
				
			|||||||
    strategy:
 | 
					    strategy:
 | 
				
			||||||
      fail-fast: false
 | 
					      fail-fast: false
 | 
				
			||||||
      matrix:
 | 
					      matrix:
 | 
				
			||||||
        os: [macos-latest, windows-latest, ubuntu-20.04, ubuntu-22.04]
 | 
					        os: [macos-13, windows-latest, ubuntu-22.04]
 | 
				
			||||||
        python: [3.5.4, 3.6.7, 3.7.5, 3.8.15, 3.9.13]
 | 
					        python: [3.6.7, 3.7.5, 3.8.15, 3.9.13]
 | 
				
			||||||
        exclude:
 | 
					        exclude:
 | 
				
			||||||
          - os: ubuntu-22.04
 | 
					 | 
				
			||||||
            python: 3.5.4
 | 
					 | 
				
			||||||
          - os: ubuntu-22.04
 | 
					          - os: ubuntu-22.04
 | 
				
			||||||
            python: 3.6.7
 | 
					            python: 3.6.7
 | 
				
			||||||
          - os: ubuntu-22.04
 | 
					          - os: ubuntu-22.04
 | 
				
			||||||
@@ -219,7 +209,7 @@ jobs:
 | 
				
			|||||||
            python: 3.8.15
 | 
					            python: 3.8.15
 | 
				
			||||||
    steps:
 | 
					    steps:
 | 
				
			||||||
      - name: Checkout
 | 
					      - name: Checkout
 | 
				
			||||||
        uses: actions/checkout@v3
 | 
					        uses: actions/checkout@v4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      - name: build-version-file ${{ matrix.python }}
 | 
					      - name: build-version-file ${{ matrix.python }}
 | 
				
			||||||
        run: |
 | 
					        run: |
 | 
				
			||||||
@@ -251,21 +241,21 @@ jobs:
 | 
				
			|||||||
        run: python -c 'import math; print(math.factorial(5))'
 | 
					        run: python -c 'import math; print(math.factorial(5))'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  setup-pre-release-version-from-manifest:
 | 
					  setup-pre-release-version-from-manifest:
 | 
				
			||||||
    name: Setup 3.9.0-beta.4 ${{ matrix.os }}
 | 
					    name: Setup 3.11.0-beta.4 ${{ matrix.os }}
 | 
				
			||||||
    runs-on: ${{ matrix.os }}
 | 
					    runs-on: ${{ matrix.os }}
 | 
				
			||||||
    strategy:
 | 
					    strategy:
 | 
				
			||||||
      fail-fast: false
 | 
					      fail-fast: false
 | 
				
			||||||
      matrix:
 | 
					      matrix:
 | 
				
			||||||
        os: [macos-latest, windows-latest, ubuntu-20.04]
 | 
					        os: [macos-13, windows-latest, ubuntu-22.04]
 | 
				
			||||||
    steps:
 | 
					    steps:
 | 
				
			||||||
      - name: Checkout
 | 
					      - name: Checkout
 | 
				
			||||||
        uses: actions/checkout@v3
 | 
					        uses: actions/checkout@v4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      - name: setup-python 3.9.0-beta.4
 | 
					      - name: setup-python 3.11.0-beta.4
 | 
				
			||||||
        id: setup-python
 | 
					        id: setup-python
 | 
				
			||||||
        uses: ./
 | 
					        uses: ./
 | 
				
			||||||
        with:
 | 
					        with:
 | 
				
			||||||
          python-version: '3.9.0-beta.4'
 | 
					          python-version: '3.11.0-beta.4'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      - name: Check python-path
 | 
					      - name: Check python-path
 | 
				
			||||||
        run: ./__tests__/check-python-path.sh '${{ steps.setup-python.outputs.python-path }}'
 | 
					        run: ./__tests__/check-python-path.sh '${{ steps.setup-python.outputs.python-path }}'
 | 
				
			||||||
@@ -274,8 +264,8 @@ jobs:
 | 
				
			|||||||
      - name: Validate version
 | 
					      - name: Validate version
 | 
				
			||||||
        run: |
 | 
					        run: |
 | 
				
			||||||
          $pythonVersion = (python --version)
 | 
					          $pythonVersion = (python --version)
 | 
				
			||||||
          if ("Python 3.9.0b4" -ne "$pythonVersion"){
 | 
					          if ("Python 3.11.0b4" -ne "$pythonVersion"){
 | 
				
			||||||
            Write-Host "The current version is $pythonVersion; expected version is 3.9.0b4"
 | 
					            Write-Host "The current version is $pythonVersion; expected version is 3.11.0b4"
 | 
				
			||||||
            exit 1
 | 
					            exit 1
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
          $pythonVersion
 | 
					          $pythonVersion
 | 
				
			||||||
@@ -293,7 +283,7 @@ jobs:
 | 
				
			|||||||
        os: [macos-latest, windows-latest, ubuntu-latest]
 | 
					        os: [macos-latest, windows-latest, ubuntu-latest]
 | 
				
			||||||
    steps:
 | 
					    steps:
 | 
				
			||||||
      - name: Checkout
 | 
					      - name: Checkout
 | 
				
			||||||
        uses: actions/checkout@v3
 | 
					        uses: actions/checkout@v4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      - name: setup-python 3.9-dev
 | 
					      - name: setup-python 3.9-dev
 | 
				
			||||||
        id: setup-python
 | 
					        id: setup-python
 | 
				
			||||||
@@ -321,7 +311,7 @@ jobs:
 | 
				
			|||||||
        os: [macos-latest, windows-latest, ubuntu-latest]
 | 
					        os: [macos-latest, windows-latest, ubuntu-latest]
 | 
				
			||||||
    steps:
 | 
					    steps:
 | 
				
			||||||
      - name: Checkout
 | 
					      - name: Checkout
 | 
				
			||||||
        uses: actions/checkout@v3
 | 
					        uses: actions/checkout@v4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      - name: setup-python 3.12
 | 
					      - name: setup-python 3.12
 | 
				
			||||||
        id: setup-python
 | 
					        id: setup-python
 | 
				
			||||||
@@ -347,11 +337,11 @@ jobs:
 | 
				
			|||||||
    strategy:
 | 
					    strategy:
 | 
				
			||||||
      fail-fast: false
 | 
					      fail-fast: false
 | 
				
			||||||
      matrix:
 | 
					      matrix:
 | 
				
			||||||
        os: [macos-latest, windows-latest, ubuntu-20.04, ubuntu-22.04]
 | 
					        os: [macos-13, windows-latest, ubuntu-22.04]
 | 
				
			||||||
        python: ['3.7', '3.8', '3.9', '3.10']
 | 
					        python: ['3.7', '3.8', '3.9', '3.10']
 | 
				
			||||||
    steps:
 | 
					    steps:
 | 
				
			||||||
      - name: Checkout
 | 
					      - name: Checkout
 | 
				
			||||||
        uses: actions/checkout@v3
 | 
					        uses: actions/checkout@v4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      - name: setup-python ${{ matrix.python }}
 | 
					      - name: setup-python ${{ matrix.python }}
 | 
				
			||||||
        id: setup-python
 | 
					        id: setup-python
 | 
				
			||||||
@@ -374,7 +364,7 @@ jobs:
 | 
				
			|||||||
        os: [ubuntu-latest, windows-latest, macos-latest]
 | 
					        os: [ubuntu-latest, windows-latest, macos-latest]
 | 
				
			||||||
        python-version: ['3.8', '3.9', '3.10']
 | 
					        python-version: ['3.8', '3.9', '3.10']
 | 
				
			||||||
    steps:
 | 
					    steps:
 | 
				
			||||||
      - uses: actions/checkout@v3
 | 
					      - uses: actions/checkout@v4
 | 
				
			||||||
      - name: Setup Python and check latest
 | 
					      - name: Setup Python and check latest
 | 
				
			||||||
        uses: ./
 | 
					        uses: ./
 | 
				
			||||||
        with:
 | 
					        with:
 | 
				
			||||||
@@ -395,9 +385,9 @@ jobs:
 | 
				
			|||||||
    strategy:
 | 
					    strategy:
 | 
				
			||||||
      fail-fast: false
 | 
					      fail-fast: false
 | 
				
			||||||
      matrix:
 | 
					      matrix:
 | 
				
			||||||
        os: [ubuntu-latest, windows-latest, macos-latest]
 | 
					        os: [ubuntu-22.04, windows-latest, macos-13]
 | 
				
			||||||
    steps:
 | 
					    steps:
 | 
				
			||||||
      - uses: actions/checkout@v3
 | 
					      - uses: actions/checkout@v4
 | 
				
			||||||
      - name: Setup Python and check latest
 | 
					      - name: Setup Python and check latest
 | 
				
			||||||
        uses: ./
 | 
					        uses: ./
 | 
				
			||||||
        with:
 | 
					        with:
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										2
									
								
								.licenses/npm/@actions/cache.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								.licenses/npm/@actions/cache.dep.yml
									
									
									
										generated
									
									
									
								
							@@ -1,6 +1,6 @@
 | 
				
			|||||||
---
 | 
					---
 | 
				
			||||||
name: "@actions/cache"
 | 
					name: "@actions/cache"
 | 
				
			||||||
version: 3.1.4
 | 
					version: 4.0.3
 | 
				
			||||||
type: npm
 | 
					type: npm
 | 
				
			||||||
summary: Actions cache lib
 | 
					summary: Actions cache lib
 | 
				
			||||||
homepage: https://github.com/actions/toolkit/tree/main/packages/cache
 | 
					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"
 | 
					name: "@actions/core"
 | 
				
			||||||
version: 1.10.0
 | 
					version: 1.11.1
 | 
				
			||||||
type: npm
 | 
					type: npm
 | 
				
			||||||
summary: Actions core lib
 | 
					summary: Actions core lib
 | 
				
			||||||
homepage: https://github.com/actions/toolkit/tree/main/packages/core
 | 
					homepage: https://github.com/actions/toolkit/tree/main/packages/core
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										2
									
								
								.licenses/npm/@actions/exec.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								.licenses/npm/@actions/exec.dep.yml
									
									
									
										generated
									
									
									
								
							@@ -1,6 +1,6 @@
 | 
				
			|||||||
---
 | 
					---
 | 
				
			||||||
name: "@actions/exec"
 | 
					name: "@actions/exec"
 | 
				
			||||||
version: 1.1.0
 | 
					version: 1.1.1
 | 
				
			||||||
type: npm
 | 
					type: npm
 | 
				
			||||||
summary: Actions exec lib
 | 
					summary: Actions exec lib
 | 
				
			||||||
homepage: https://github.com/actions/toolkit/tree/main/packages/exec
 | 
					homepage: https://github.com/actions/toolkit/tree/main/packages/exec
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										32
									
								
								.licenses/npm/@actions/http-client-2.2.3.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								.licenses/npm/@actions/http-client-2.2.3.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							@@ -0,0 +1,32 @@
 | 
				
			|||||||
 | 
					---
 | 
				
			||||||
 | 
					name: "@actions/http-client"
 | 
				
			||||||
 | 
					version: 2.2.3
 | 
				
			||||||
 | 
					type: npm
 | 
				
			||||||
 | 
					summary: Actions Http Client
 | 
				
			||||||
 | 
					homepage: https://github.com/actions/toolkit/tree/main/packages/http-client
 | 
				
			||||||
 | 
					license: mit
 | 
				
			||||||
 | 
					licenses:
 | 
				
			||||||
 | 
					- sources: LICENSE
 | 
				
			||||||
 | 
					  text: |
 | 
				
			||||||
 | 
					    Actions Http Client for Node.js
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Copyright (c) GitHub, Inc.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    All rights reserved.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    MIT License
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    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: []
 | 
				
			||||||
							
								
								
									
										30
									
								
								.licenses/npm/@fastify/busboy.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								.licenses/npm/@fastify/busboy.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							@@ -0,0 +1,30 @@
 | 
				
			|||||||
 | 
					---
 | 
				
			||||||
 | 
					name: "@fastify/busboy"
 | 
				
			||||||
 | 
					version: 2.1.1
 | 
				
			||||||
 | 
					type: npm
 | 
				
			||||||
 | 
					summary: A streaming parser for HTML form data for node.js
 | 
				
			||||||
 | 
					homepage:
 | 
				
			||||||
 | 
					license: mit
 | 
				
			||||||
 | 
					licenses:
 | 
				
			||||||
 | 
					- sources: LICENSE
 | 
				
			||||||
 | 
					  text: |-
 | 
				
			||||||
 | 
					    Copyright Brian White. All rights reserved.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    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: []
 | 
				
			||||||
							
								
								
									
										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.6
 | 
				
			||||||
 | 
					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.6
 | 
				
			||||||
 | 
					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.6
 | 
				
			||||||
 | 
					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.6
 | 
				
			||||||
 | 
					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.6
 | 
				
			||||||
 | 
					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: []
 | 
				
			||||||
@@ -1,9 +1,9 @@
 | 
				
			|||||||
---
 | 
					---
 | 
				
			||||||
name: semver
 | 
					name: semver
 | 
				
			||||||
version: 6.3.0
 | 
					version: 6.3.1
 | 
				
			||||||
type: npm
 | 
					type: npm
 | 
				
			||||||
summary: The semantic version parser used by npm.
 | 
					summary: The semantic version parser used by npm.
 | 
				
			||||||
homepage: https://github.com/npm/node-semver#readme
 | 
					homepage: 
 | 
				
			||||||
license: isc
 | 
					license: isc
 | 
				
			||||||
licenses:
 | 
					licenses:
 | 
				
			||||||
- sources: LICENSE
 | 
					- sources: LICENSE
 | 
				
			||||||
							
								
								
									
										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 - 阿卡琳"
 | 
				
			||||||
							
								
								
									
										34
									
								
								.licenses/npm/undici.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								.licenses/npm/undici.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							@@ -0,0 +1,34 @@
 | 
				
			|||||||
 | 
					---
 | 
				
			||||||
 | 
					name: undici
 | 
				
			||||||
 | 
					version: 5.29.0
 | 
				
			||||||
 | 
					type: npm
 | 
				
			||||||
 | 
					summary: An HTTP/1.1 client, written from scratch for Node.js
 | 
				
			||||||
 | 
					homepage: https://undici.nodejs.org
 | 
				
			||||||
 | 
					license: mit
 | 
				
			||||||
 | 
					licenses:
 | 
				
			||||||
 | 
					- sources: LICENSE
 | 
				
			||||||
 | 
					  text: |
 | 
				
			||||||
 | 
					    MIT License
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Copyright (c) Matteo Collina and Undici contributors
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 | 
					    of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
 | 
					    in the Software without restriction, including without limitation the rights
 | 
				
			||||||
 | 
					    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 | 
				
			||||||
 | 
					    copies of the Software, and to permit persons to whom the Software is
 | 
				
			||||||
 | 
					    furnished to do so, subject to the following conditions:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    The above copyright notice and this permission notice shall be included in all
 | 
				
			||||||
 | 
					    copies or substantial portions of the Software.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
				
			||||||
 | 
					    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
				
			||||||
 | 
					    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 | 
				
			||||||
 | 
					    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
				
			||||||
 | 
					    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 | 
				
			||||||
 | 
					    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 | 
				
			||||||
 | 
					    SOFTWARE.
 | 
				
			||||||
 | 
					- sources: README.md
 | 
				
			||||||
 | 
					  text: MIT
 | 
				
			||||||
 | 
					notices: []
 | 
				
			||||||
@@ -18,7 +18,7 @@ See [action.yml](action.yml)
 | 
				
			|||||||
**Python**
 | 
					**Python**
 | 
				
			||||||
```yaml
 | 
					```yaml
 | 
				
			||||||
steps:
 | 
					steps:
 | 
				
			||||||
- uses: actions/checkout@v3
 | 
					- uses: actions/checkout@v4
 | 
				
			||||||
- uses: actions/setup-python@v4
 | 
					- uses: actions/setup-python@v4
 | 
				
			||||||
  with:
 | 
					  with:
 | 
				
			||||||
    python-version: '3.10' 
 | 
					    python-version: '3.10' 
 | 
				
			||||||
@@ -28,7 +28,7 @@ steps:
 | 
				
			|||||||
**PyPy**
 | 
					**PyPy**
 | 
				
			||||||
```yaml
 | 
					```yaml
 | 
				
			||||||
steps:
 | 
					steps:
 | 
				
			||||||
- uses: actions/checkout@v3
 | 
					- uses: actions/checkout@v4
 | 
				
			||||||
- uses: actions/setup-python@v4 
 | 
					- uses: actions/setup-python@v4 
 | 
				
			||||||
  with:
 | 
					  with:
 | 
				
			||||||
    python-version: 'pypy3.9' 
 | 
					    python-version: 'pypy3.9' 
 | 
				
			||||||
@@ -62,7 +62,7 @@ The action defaults to searching for a dependency file (`requirements.txt` or `p
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
```yaml
 | 
					```yaml
 | 
				
			||||||
steps:
 | 
					steps:
 | 
				
			||||||
- uses: actions/checkout@v3
 | 
					- uses: actions/checkout@v4
 | 
				
			||||||
- uses: actions/setup-python@v4
 | 
					- uses: actions/setup-python@v4
 | 
				
			||||||
  with:
 | 
					  with:
 | 
				
			||||||
    python-version: '3.9'
 | 
					    python-version: '3.9'
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										5798
									
								
								__tests__/data/graalpy.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5798
									
								
								__tests__/data/graalpy.json
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										378
									
								
								__tests__/find-graalpy.test.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										378
									
								
								__tests__/find-graalpy.test.ts
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,378 @@
 | 
				
			|||||||
 | 
					import fs from 'fs';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import {HttpClient} from '@actions/http-client';
 | 
				
			||||||
 | 
					import * as ifm from '@actions/http-client/interfaces';
 | 
				
			||||||
 | 
					import * as tc from '@actions/tool-cache';
 | 
				
			||||||
 | 
					import * as exec from '@actions/exec';
 | 
				
			||||||
 | 
					import * as core from '@actions/core';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import * as path from 'path';
 | 
				
			||||||
 | 
					import * as semver from 'semver';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import * as finder from '../src/find-graalpy';
 | 
				
			||||||
 | 
					import {IGraalPyManifestRelease, IS_WINDOWS} from '../src/utils';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import manifestData from './data/graalpy.json';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const architecture = 'x64';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const toolDir = path.join(__dirname, 'runner', 'tools');
 | 
				
			||||||
 | 
					const tempDir = path.join(__dirname, 'runner', 'temp');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* GraalPy doesn't have a windows release yet */
 | 
				
			||||||
 | 
					const describeSkipOnWindows = IS_WINDOWS ? describe.skip : describe;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					describe('parseGraalPyVersion', () => {
 | 
				
			||||||
 | 
					  it.each([
 | 
				
			||||||
 | 
					    ['graalpy-23', '23'],
 | 
				
			||||||
 | 
					    ['graalpy-23.0', '23.0'],
 | 
				
			||||||
 | 
					    ['graalpy23.0', '23.0']
 | 
				
			||||||
 | 
					  ])('%s -> %s', (input, expected) => {
 | 
				
			||||||
 | 
					    expect(finder.parseGraalPyVersion(input)).toEqual(expected);
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  it.each(['', 'graalpy-', 'graalpy', 'p', 'notgraalpy-'])(
 | 
				
			||||||
 | 
					    'throw on invalid input "%s"',
 | 
				
			||||||
 | 
					    input => {
 | 
				
			||||||
 | 
					      expect(() => finder.parseGraalPyVersion(input)).toThrow(
 | 
				
			||||||
 | 
					        "Invalid 'version' property for GraalPy. GraalPy version should be specified as 'graalpy<python-version>' or 'graalpy-<python-version>'. See README for examples and documentation."
 | 
				
			||||||
 | 
					      );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  );
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					describe('findGraalPyToolCache', () => {
 | 
				
			||||||
 | 
					  const actualGraalPyVersion = '23.0.0';
 | 
				
			||||||
 | 
					  const graalpyPath = path.join('GraalPy', actualGraalPyVersion, architecture);
 | 
				
			||||||
 | 
					  let tcFind: jest.SpyInstance;
 | 
				
			||||||
 | 
					  let infoSpy: jest.SpyInstance;
 | 
				
			||||||
 | 
					  let warningSpy: jest.SpyInstance;
 | 
				
			||||||
 | 
					  let debugSpy: jest.SpyInstance;
 | 
				
			||||||
 | 
					  let addPathSpy: jest.SpyInstance;
 | 
				
			||||||
 | 
					  let exportVariableSpy: jest.SpyInstance;
 | 
				
			||||||
 | 
					  let setOutputSpy: jest.SpyInstance;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  beforeEach(() => {
 | 
				
			||||||
 | 
					    tcFind = jest.spyOn(tc, 'find');
 | 
				
			||||||
 | 
					    tcFind.mockImplementation((toolname: string, pythonVersion: string) => {
 | 
				
			||||||
 | 
					      const semverVersion = new semver.Range(pythonVersion);
 | 
				
			||||||
 | 
					      return semver.satisfies(actualGraalPyVersion, semverVersion)
 | 
				
			||||||
 | 
					        ? graalpyPath
 | 
				
			||||||
 | 
					        : '';
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    infoSpy = jest.spyOn(core, 'info');
 | 
				
			||||||
 | 
					    infoSpy.mockImplementation(() => null);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    warningSpy = jest.spyOn(core, 'warning');
 | 
				
			||||||
 | 
					    warningSpy.mockImplementation(() => null);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    debugSpy = jest.spyOn(core, 'debug');
 | 
				
			||||||
 | 
					    debugSpy.mockImplementation(() => null);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    addPathSpy = jest.spyOn(core, 'addPath');
 | 
				
			||||||
 | 
					    addPathSpy.mockImplementation(() => null);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    exportVariableSpy = jest.spyOn(core, 'exportVariable');
 | 
				
			||||||
 | 
					    exportVariableSpy.mockImplementation(() => null);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    setOutputSpy = jest.spyOn(core, 'setOutput');
 | 
				
			||||||
 | 
					    setOutputSpy.mockImplementation(() => null);
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  afterEach(() => {
 | 
				
			||||||
 | 
					    jest.resetAllMocks();
 | 
				
			||||||
 | 
					    jest.clearAllMocks();
 | 
				
			||||||
 | 
					    jest.restoreAllMocks();
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  it('GraalPy exists on the path and versions are satisfied', () => {
 | 
				
			||||||
 | 
					    expect(finder.findGraalPyToolCache('23.0.0', architecture)).toEqual({
 | 
				
			||||||
 | 
					      installDir: graalpyPath,
 | 
				
			||||||
 | 
					      resolvedGraalPyVersion: actualGraalPyVersion
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  it('GraalPy exists on the path and versions are satisfied with semver', () => {
 | 
				
			||||||
 | 
					    expect(finder.findGraalPyToolCache('23.0', architecture)).toEqual({
 | 
				
			||||||
 | 
					      installDir: graalpyPath,
 | 
				
			||||||
 | 
					      resolvedGraalPyVersion: actualGraalPyVersion
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  it("GraalPy exists on the path, but version doesn't match", () => {
 | 
				
			||||||
 | 
					    expect(finder.findGraalPyToolCache('22.3', architecture)).toEqual({
 | 
				
			||||||
 | 
					      installDir: '',
 | 
				
			||||||
 | 
					      resolvedGraalPyVersion: ''
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					describeSkipOnWindows('findGraalPyVersion', () => {
 | 
				
			||||||
 | 
					  let getBooleanInputSpy: jest.SpyInstance;
 | 
				
			||||||
 | 
					  let warningSpy: jest.SpyInstance;
 | 
				
			||||||
 | 
					  let debugSpy: jest.SpyInstance;
 | 
				
			||||||
 | 
					  let infoSpy: jest.SpyInstance;
 | 
				
			||||||
 | 
					  let addPathSpy: jest.SpyInstance;
 | 
				
			||||||
 | 
					  let exportVariableSpy: jest.SpyInstance;
 | 
				
			||||||
 | 
					  let setOutputSpy: jest.SpyInstance;
 | 
				
			||||||
 | 
					  let tcFind: jest.SpyInstance;
 | 
				
			||||||
 | 
					  let spyExtractZip: jest.SpyInstance;
 | 
				
			||||||
 | 
					  let spyExtractTar: jest.SpyInstance;
 | 
				
			||||||
 | 
					  let spyHttpClient: jest.SpyInstance;
 | 
				
			||||||
 | 
					  let spyExistsSync: jest.SpyInstance;
 | 
				
			||||||
 | 
					  let spyExec: jest.SpyInstance;
 | 
				
			||||||
 | 
					  let spySymlinkSync: jest.SpyInstance;
 | 
				
			||||||
 | 
					  let spyDownloadTool: jest.SpyInstance;
 | 
				
			||||||
 | 
					  let spyFsReadDir: jest.SpyInstance;
 | 
				
			||||||
 | 
					  let spyCacheDir: jest.SpyInstance;
 | 
				
			||||||
 | 
					  let spyChmodSync: jest.SpyInstance;
 | 
				
			||||||
 | 
					  let spyCoreAddPath: jest.SpyInstance;
 | 
				
			||||||
 | 
					  let spyCoreExportVariable: jest.SpyInstance;
 | 
				
			||||||
 | 
					  const env = process.env;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  beforeEach(() => {
 | 
				
			||||||
 | 
					    getBooleanInputSpy = jest.spyOn(core, 'getBooleanInput');
 | 
				
			||||||
 | 
					    getBooleanInputSpy.mockImplementation(() => false);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    infoSpy = jest.spyOn(core, 'info');
 | 
				
			||||||
 | 
					    infoSpy.mockImplementation(() => {});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    warningSpy = jest.spyOn(core, 'warning');
 | 
				
			||||||
 | 
					    warningSpy.mockImplementation(() => null);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    debugSpy = jest.spyOn(core, 'debug');
 | 
				
			||||||
 | 
					    debugSpy.mockImplementation(() => null);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    addPathSpy = jest.spyOn(core, 'addPath');
 | 
				
			||||||
 | 
					    addPathSpy.mockImplementation(() => null);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    exportVariableSpy = jest.spyOn(core, 'exportVariable');
 | 
				
			||||||
 | 
					    exportVariableSpy.mockImplementation(() => null);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    setOutputSpy = jest.spyOn(core, 'setOutput');
 | 
				
			||||||
 | 
					    setOutputSpy.mockImplementation(() => null);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    jest.resetModules();
 | 
				
			||||||
 | 
					    process.env = {...env};
 | 
				
			||||||
 | 
					    tcFind = jest.spyOn(tc, 'find');
 | 
				
			||||||
 | 
					    tcFind.mockImplementation((tool: string, version: string) => {
 | 
				
			||||||
 | 
					      const semverRange = new semver.Range(version);
 | 
				
			||||||
 | 
					      let graalpyPath = '';
 | 
				
			||||||
 | 
					      if (semver.satisfies('23.0.0', semverRange)) {
 | 
				
			||||||
 | 
					        graalpyPath = path.join(toolDir, 'GraalPy', '23.0.0', architecture);
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      return graalpyPath;
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    spyDownloadTool = jest.spyOn(tc, 'downloadTool');
 | 
				
			||||||
 | 
					    spyDownloadTool.mockImplementation(() => path.join(tempDir, 'GraalPy'));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    spyExtractZip = jest.spyOn(tc, 'extractZip');
 | 
				
			||||||
 | 
					    spyExtractZip.mockImplementation(() => tempDir);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    spyExtractTar = jest.spyOn(tc, 'extractTar');
 | 
				
			||||||
 | 
					    spyExtractTar.mockImplementation(() => tempDir);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    spyFsReadDir = jest.spyOn(fs, 'readdirSync');
 | 
				
			||||||
 | 
					    spyFsReadDir.mockImplementation((directory: string) => ['GraalPyTest']);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    spyHttpClient = jest.spyOn(HttpClient.prototype, 'getJson');
 | 
				
			||||||
 | 
					    spyHttpClient.mockImplementation(
 | 
				
			||||||
 | 
					      async (): Promise<ifm.ITypedResponse<IGraalPyManifestRelease[]>> => {
 | 
				
			||||||
 | 
					        const result = JSON.stringify(manifestData);
 | 
				
			||||||
 | 
					        return {
 | 
				
			||||||
 | 
					          statusCode: 200,
 | 
				
			||||||
 | 
					          headers: {},
 | 
				
			||||||
 | 
					          result: JSON.parse(result) as IGraalPyManifestRelease[]
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    spyExec = jest.spyOn(exec, 'exec');
 | 
				
			||||||
 | 
					    spyExec.mockImplementation(() => undefined);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    spySymlinkSync = jest.spyOn(fs, 'symlinkSync');
 | 
				
			||||||
 | 
					    spySymlinkSync.mockImplementation(() => undefined);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    spyExistsSync = jest.spyOn(fs, 'existsSync');
 | 
				
			||||||
 | 
					    spyExistsSync.mockReturnValue(true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    spyCoreAddPath = jest.spyOn(core, 'addPath');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    spyCoreExportVariable = jest.spyOn(core, 'exportVariable');
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  afterEach(() => {
 | 
				
			||||||
 | 
					    jest.resetAllMocks();
 | 
				
			||||||
 | 
					    jest.clearAllMocks();
 | 
				
			||||||
 | 
					    jest.restoreAllMocks();
 | 
				
			||||||
 | 
					    process.env = env;
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  it('found GraalPy in toolcache', async () => {
 | 
				
			||||||
 | 
					    await expect(
 | 
				
			||||||
 | 
					      finder.findGraalPyVersion(
 | 
				
			||||||
 | 
					        'graalpy-23.0',
 | 
				
			||||||
 | 
					        architecture,
 | 
				
			||||||
 | 
					        true,
 | 
				
			||||||
 | 
					        false,
 | 
				
			||||||
 | 
					        false
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    ).resolves.toEqual('23.0.0');
 | 
				
			||||||
 | 
					    expect(spyCoreAddPath).toHaveBeenCalled();
 | 
				
			||||||
 | 
					    expect(spyCoreExportVariable).toHaveBeenCalledWith(
 | 
				
			||||||
 | 
					      'pythonLocation',
 | 
				
			||||||
 | 
					      expect.anything()
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					    expect(spyCoreExportVariable).toHaveBeenCalledWith(
 | 
				
			||||||
 | 
					      'PKG_CONFIG_PATH',
 | 
				
			||||||
 | 
					      expect.anything()
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  it('throw on invalid input format', async () => {
 | 
				
			||||||
 | 
					    await expect(
 | 
				
			||||||
 | 
					      finder.findGraalPyVersion('graalpy-x23', architecture, true, false, false)
 | 
				
			||||||
 | 
					    ).rejects.toThrow();
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  it('found and install successfully', async () => {
 | 
				
			||||||
 | 
					    spyCacheDir = jest.spyOn(tc, 'cacheDir');
 | 
				
			||||||
 | 
					    spyCacheDir.mockImplementation(() =>
 | 
				
			||||||
 | 
					      path.join(toolDir, 'GraalPy', '23.0.0', architecture)
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					    spyChmodSync = jest.spyOn(fs, 'chmodSync');
 | 
				
			||||||
 | 
					    spyChmodSync.mockImplementation(() => undefined);
 | 
				
			||||||
 | 
					    await expect(
 | 
				
			||||||
 | 
					      finder.findGraalPyVersion(
 | 
				
			||||||
 | 
					        'graalpy-23.0.0',
 | 
				
			||||||
 | 
					        architecture,
 | 
				
			||||||
 | 
					        true,
 | 
				
			||||||
 | 
					        false,
 | 
				
			||||||
 | 
					        false
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    ).resolves.toEqual('23.0.0');
 | 
				
			||||||
 | 
					    expect(spyCoreAddPath).toHaveBeenCalled();
 | 
				
			||||||
 | 
					    expect(spyCoreExportVariable).toHaveBeenCalledWith(
 | 
				
			||||||
 | 
					      'pythonLocation',
 | 
				
			||||||
 | 
					      expect.anything()
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					    expect(spyCoreExportVariable).toHaveBeenCalledWith(
 | 
				
			||||||
 | 
					      'PKG_CONFIG_PATH',
 | 
				
			||||||
 | 
					      expect.anything()
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  it('found and install successfully without environment update', async () => {
 | 
				
			||||||
 | 
					    spyCacheDir = jest.spyOn(tc, 'cacheDir');
 | 
				
			||||||
 | 
					    spyCacheDir.mockImplementation(() =>
 | 
				
			||||||
 | 
					      path.join(toolDir, 'GraalPy', '23.0.0', architecture)
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					    spyChmodSync = jest.spyOn(fs, 'chmodSync');
 | 
				
			||||||
 | 
					    spyChmodSync.mockImplementation(() => undefined);
 | 
				
			||||||
 | 
					    await expect(
 | 
				
			||||||
 | 
					      finder.findGraalPyVersion(
 | 
				
			||||||
 | 
					        'graalpy-23.0.0',
 | 
				
			||||||
 | 
					        architecture,
 | 
				
			||||||
 | 
					        false,
 | 
				
			||||||
 | 
					        false,
 | 
				
			||||||
 | 
					        false
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    ).resolves.toEqual('23.0.0');
 | 
				
			||||||
 | 
					    expect(spyCoreAddPath).not.toHaveBeenCalled();
 | 
				
			||||||
 | 
					    expect(spyCoreExportVariable).not.toHaveBeenCalled();
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  it('throw if release is not found', async () => {
 | 
				
			||||||
 | 
					    await expect(
 | 
				
			||||||
 | 
					      finder.findGraalPyVersion(
 | 
				
			||||||
 | 
					        'graalpy-19.0.0',
 | 
				
			||||||
 | 
					        architecture,
 | 
				
			||||||
 | 
					        true,
 | 
				
			||||||
 | 
					        false,
 | 
				
			||||||
 | 
					        false
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    ).rejects.toThrow(
 | 
				
			||||||
 | 
					      `GraalPy version 19.0.0 with arch ${architecture} not found`
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  it('check-latest enabled version found and used from toolcache', async () => {
 | 
				
			||||||
 | 
					    await expect(
 | 
				
			||||||
 | 
					      finder.findGraalPyVersion(
 | 
				
			||||||
 | 
					        'graalpy-23.0.0',
 | 
				
			||||||
 | 
					        architecture,
 | 
				
			||||||
 | 
					        false,
 | 
				
			||||||
 | 
					        true,
 | 
				
			||||||
 | 
					        false
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    ).resolves.toEqual('23.0.0');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    expect(infoSpy).toHaveBeenCalledWith('Resolved as GraalPy 23.0.0');
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  it('check-latest enabled version found and install successfully', async () => {
 | 
				
			||||||
 | 
					    spyCacheDir = jest.spyOn(tc, 'cacheDir');
 | 
				
			||||||
 | 
					    spyCacheDir.mockImplementation(() =>
 | 
				
			||||||
 | 
					      path.join(toolDir, 'GraalPy', '23.0.0', architecture)
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					    spyChmodSync = jest.spyOn(fs, 'chmodSync');
 | 
				
			||||||
 | 
					    spyChmodSync.mockImplementation(() => undefined);
 | 
				
			||||||
 | 
					    await expect(
 | 
				
			||||||
 | 
					      finder.findGraalPyVersion(
 | 
				
			||||||
 | 
					        'graalpy-23.0.0',
 | 
				
			||||||
 | 
					        architecture,
 | 
				
			||||||
 | 
					        false,
 | 
				
			||||||
 | 
					        true,
 | 
				
			||||||
 | 
					        false
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    ).resolves.toEqual('23.0.0');
 | 
				
			||||||
 | 
					    expect(infoSpy).toHaveBeenCalledWith('Resolved as GraalPy 23.0.0');
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  it('check-latest enabled version is not found and used from toolcache', async () => {
 | 
				
			||||||
 | 
					    tcFind.mockImplementationOnce((tool: string, version: string) => {
 | 
				
			||||||
 | 
					      const semverRange = new semver.Range(version);
 | 
				
			||||||
 | 
					      let graalpyPath = '';
 | 
				
			||||||
 | 
					      if (semver.satisfies('22.3.4', semverRange)) {
 | 
				
			||||||
 | 
					        graalpyPath = path.join(toolDir, 'GraalPy', '22.3.4', architecture);
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      return graalpyPath;
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					    await expect(
 | 
				
			||||||
 | 
					      finder.findGraalPyVersion(
 | 
				
			||||||
 | 
					        'graalpy-22.3.4',
 | 
				
			||||||
 | 
					        architecture,
 | 
				
			||||||
 | 
					        false,
 | 
				
			||||||
 | 
					        true,
 | 
				
			||||||
 | 
					        false
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    ).resolves.toEqual('22.3.4');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    expect(infoSpy).toHaveBeenCalledWith(
 | 
				
			||||||
 | 
					      'Failed to resolve GraalPy 22.3.4 from manifest'
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  it('found and install successfully, pre-release fallback', async () => {
 | 
				
			||||||
 | 
					    spyCacheDir = jest.spyOn(tc, 'cacheDir');
 | 
				
			||||||
 | 
					    spyCacheDir.mockImplementation(() =>
 | 
				
			||||||
 | 
					      path.join(toolDir, 'GraalPy', '23.1', architecture)
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					    spyChmodSync = jest.spyOn(fs, 'chmodSync');
 | 
				
			||||||
 | 
					    spyChmodSync.mockImplementation(() => undefined);
 | 
				
			||||||
 | 
					    await expect(
 | 
				
			||||||
 | 
					      finder.findGraalPyVersion(
 | 
				
			||||||
 | 
					        'graalpy23.1',
 | 
				
			||||||
 | 
					        architecture,
 | 
				
			||||||
 | 
					        false,
 | 
				
			||||||
 | 
					        false,
 | 
				
			||||||
 | 
					        false
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    ).rejects.toThrow();
 | 
				
			||||||
 | 
					    await expect(
 | 
				
			||||||
 | 
					      finder.findGraalPyVersion('graalpy23.1', architecture, false, false, true)
 | 
				
			||||||
 | 
					    ).resolves.toEqual('23.1.0-a.1');
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
							
								
								
									
										256
									
								
								__tests__/install-graalpy.test.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										256
									
								
								__tests__/install-graalpy.test.ts
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,256 @@
 | 
				
			|||||||
 | 
					import fs from 'fs';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import {HttpClient} from '@actions/http-client';
 | 
				
			||||||
 | 
					import * as ifm from '@actions/http-client/interfaces';
 | 
				
			||||||
 | 
					import * as tc from '@actions/tool-cache';
 | 
				
			||||||
 | 
					import * as exec from '@actions/exec';
 | 
				
			||||||
 | 
					import * as core from '@actions/core';
 | 
				
			||||||
 | 
					import * as path from 'path';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import * as installer from '../src/install-graalpy';
 | 
				
			||||||
 | 
					import {
 | 
				
			||||||
 | 
					  IGraalPyManifestRelease,
 | 
				
			||||||
 | 
					  IGraalPyManifestAsset,
 | 
				
			||||||
 | 
					  IS_WINDOWS
 | 
				
			||||||
 | 
					} from '../src/utils';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import manifestData from './data/graalpy.json';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const architecture = 'x64';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const toolDir = path.join(__dirname, 'runner', 'tools');
 | 
				
			||||||
 | 
					const tempDir = path.join(__dirname, 'runner', 'temp');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* GraalPy doesn't have a windows release yet */
 | 
				
			||||||
 | 
					const describeSkipOnWindows = IS_WINDOWS ? describe.skip : describe;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					describe('graalpyVersionToSemantic', () => {
 | 
				
			||||||
 | 
					  it.each([
 | 
				
			||||||
 | 
					    ['23.0.0a1', '23.0.0a1'],
 | 
				
			||||||
 | 
					    ['23.0.0', '23.0.0'],
 | 
				
			||||||
 | 
					    ['23.0.x', '23.0.x'],
 | 
				
			||||||
 | 
					    ['23.x', '23.x']
 | 
				
			||||||
 | 
					  ])('%s -> %s', (input, expected) => {
 | 
				
			||||||
 | 
					    expect(installer.graalPyTagToVersion(input)).toEqual(expected);
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					describeSkipOnWindows('findRelease', () => {
 | 
				
			||||||
 | 
					  const result = JSON.stringify(manifestData);
 | 
				
			||||||
 | 
					  const releases = JSON.parse(result) as IGraalPyManifestRelease[];
 | 
				
			||||||
 | 
					  const extension = 'tar.gz';
 | 
				
			||||||
 | 
					  const arch = installer.toGraalPyArchitecture(architecture);
 | 
				
			||||||
 | 
					  const platform = installer.toGraalPyPlatform(process.platform);
 | 
				
			||||||
 | 
					  const extensionName = `${platform}-${arch}.${extension}`;
 | 
				
			||||||
 | 
					  const files: IGraalPyManifestAsset = {
 | 
				
			||||||
 | 
					    name: `graalpython-23.0.0-${extensionName}`,
 | 
				
			||||||
 | 
					    browser_download_url: `https://github.com/oracle/graalpython/releases/download/graal-23.0.0/graalpython-23.0.0-${extensionName}`
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					  const filesRC1: IGraalPyManifestAsset = {
 | 
				
			||||||
 | 
					    name: `graalpython-23.1.0a1-${extensionName}`,
 | 
				
			||||||
 | 
					    browser_download_url: `https://github.com/oracle/graalpython/releases/download/graal-23.1.0a1/graalpython-23.1.0a1-${extensionName}`
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  let warningSpy: jest.SpyInstance;
 | 
				
			||||||
 | 
					  let debugSpy: jest.SpyInstance;
 | 
				
			||||||
 | 
					  let infoSpy: jest.SpyInstance;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  beforeEach(() => {
 | 
				
			||||||
 | 
					    infoSpy = jest.spyOn(core, 'info');
 | 
				
			||||||
 | 
					    infoSpy.mockImplementation(() => {});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    warningSpy = jest.spyOn(core, 'warning');
 | 
				
			||||||
 | 
					    warningSpy.mockImplementation(() => null);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    debugSpy = jest.spyOn(core, 'debug');
 | 
				
			||||||
 | 
					    debugSpy.mockImplementation(() => null);
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  it("GraalPy version doesn't match", () => {
 | 
				
			||||||
 | 
					    const graalpyVersion = '12.0.0';
 | 
				
			||||||
 | 
					    expect(
 | 
				
			||||||
 | 
					      installer.findRelease(releases, graalpyVersion, architecture, false)
 | 
				
			||||||
 | 
					    ).toEqual(null);
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  it('GraalPy version matches', () => {
 | 
				
			||||||
 | 
					    const graalpyVersion = '23.0.0';
 | 
				
			||||||
 | 
					    expect(
 | 
				
			||||||
 | 
					      installer.findRelease(releases, graalpyVersion, architecture, false)
 | 
				
			||||||
 | 
					    ).toMatchObject({
 | 
				
			||||||
 | 
					      foundAsset: files,
 | 
				
			||||||
 | 
					      resolvedGraalPyVersion: graalpyVersion
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  it('Preview version of GraalPy is found', () => {
 | 
				
			||||||
 | 
					    const graalpyVersion = installer.graalPyTagToVersion('vm-23.1.0a1');
 | 
				
			||||||
 | 
					    expect(
 | 
				
			||||||
 | 
					      installer.findRelease(releases, graalpyVersion, architecture, false)
 | 
				
			||||||
 | 
					    ).toMatchObject({
 | 
				
			||||||
 | 
					      foundAsset: {
 | 
				
			||||||
 | 
					        name: `graalpython-23.1.0a1-${extensionName}`,
 | 
				
			||||||
 | 
					        browser_download_url: `https://github.com/oracle/graalpython/releases/download/graal-23.1.0a1/graalpython-23.1.0a1-${extensionName}`
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      resolvedGraalPyVersion: '23.1.0-a.1'
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  it('Latest GraalPy is found', () => {
 | 
				
			||||||
 | 
					    const graalpyVersion = 'x';
 | 
				
			||||||
 | 
					    expect(
 | 
				
			||||||
 | 
					      installer.findRelease(releases, graalpyVersion, architecture, false)
 | 
				
			||||||
 | 
					    ).toMatchObject({
 | 
				
			||||||
 | 
					      foundAsset: files,
 | 
				
			||||||
 | 
					      resolvedGraalPyVersion: '23.0.0'
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  it('GraalPy version matches semver (pre-release)', () => {
 | 
				
			||||||
 | 
					    const graalpyVersion = '23.1.x';
 | 
				
			||||||
 | 
					    expect(
 | 
				
			||||||
 | 
					      installer.findRelease(releases, graalpyVersion, architecture, false)
 | 
				
			||||||
 | 
					    ).toBeNull();
 | 
				
			||||||
 | 
					    expect(
 | 
				
			||||||
 | 
					      installer.findRelease(releases, graalpyVersion, architecture, true)
 | 
				
			||||||
 | 
					    ).toMatchObject({
 | 
				
			||||||
 | 
					      foundAsset: filesRC1,
 | 
				
			||||||
 | 
					      resolvedGraalPyVersion: '23.1.0-a.1'
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					describeSkipOnWindows('installGraalPy', () => {
 | 
				
			||||||
 | 
					  let tcFind: jest.SpyInstance;
 | 
				
			||||||
 | 
					  let warningSpy: jest.SpyInstance;
 | 
				
			||||||
 | 
					  let debugSpy: jest.SpyInstance;
 | 
				
			||||||
 | 
					  let infoSpy: jest.SpyInstance;
 | 
				
			||||||
 | 
					  let spyExtractZip: jest.SpyInstance;
 | 
				
			||||||
 | 
					  let spyExtractTar: jest.SpyInstance;
 | 
				
			||||||
 | 
					  let spyFsReadDir: jest.SpyInstance;
 | 
				
			||||||
 | 
					  let spyFsWriteFile: jest.SpyInstance;
 | 
				
			||||||
 | 
					  let spyHttpClient: jest.SpyInstance;
 | 
				
			||||||
 | 
					  let spyExistsSync: jest.SpyInstance;
 | 
				
			||||||
 | 
					  let spyExec: jest.SpyInstance;
 | 
				
			||||||
 | 
					  let spySymlinkSync: jest.SpyInstance;
 | 
				
			||||||
 | 
					  let spyDownloadTool: jest.SpyInstance;
 | 
				
			||||||
 | 
					  let spyCacheDir: jest.SpyInstance;
 | 
				
			||||||
 | 
					  let spyChmodSync: jest.SpyInstance;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  beforeEach(() => {
 | 
				
			||||||
 | 
					    tcFind = jest.spyOn(tc, 'find');
 | 
				
			||||||
 | 
					    tcFind.mockImplementation(() =>
 | 
				
			||||||
 | 
					      path.join('GraalPy', '3.6.12', architecture)
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    spyDownloadTool = jest.spyOn(tc, 'downloadTool');
 | 
				
			||||||
 | 
					    spyDownloadTool.mockImplementation(() => path.join(tempDir, 'GraalPy'));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    spyExtractZip = jest.spyOn(tc, 'extractZip');
 | 
				
			||||||
 | 
					    spyExtractZip.mockImplementation(() => tempDir);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    spyExtractTar = jest.spyOn(tc, 'extractTar');
 | 
				
			||||||
 | 
					    spyExtractTar.mockImplementation(() => tempDir);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    infoSpy = jest.spyOn(core, 'info');
 | 
				
			||||||
 | 
					    infoSpy.mockImplementation(() => {});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    warningSpy = jest.spyOn(core, 'warning');
 | 
				
			||||||
 | 
					    warningSpy.mockImplementation(() => null);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    debugSpy = jest.spyOn(core, 'debug');
 | 
				
			||||||
 | 
					    debugSpy.mockImplementation(() => null);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    spyFsReadDir = jest.spyOn(fs, 'readdirSync');
 | 
				
			||||||
 | 
					    spyFsReadDir.mockImplementation(() => ['GraalPyTest']);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    spyFsWriteFile = jest.spyOn(fs, 'writeFileSync');
 | 
				
			||||||
 | 
					    spyFsWriteFile.mockImplementation(() => undefined);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    spyHttpClient = jest.spyOn(HttpClient.prototype, 'getJson');
 | 
				
			||||||
 | 
					    spyHttpClient.mockImplementation(
 | 
				
			||||||
 | 
					      async (): Promise<ifm.ITypedResponse<IGraalPyManifestRelease[]>> => {
 | 
				
			||||||
 | 
					        const result = JSON.stringify(manifestData);
 | 
				
			||||||
 | 
					        return {
 | 
				
			||||||
 | 
					          statusCode: 200,
 | 
				
			||||||
 | 
					          headers: {},
 | 
				
			||||||
 | 
					          result: JSON.parse(result) as IGraalPyManifestRelease[]
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    spyExec = jest.spyOn(exec, 'exec');
 | 
				
			||||||
 | 
					    spyExec.mockImplementation(() => undefined);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    spySymlinkSync = jest.spyOn(fs, 'symlinkSync');
 | 
				
			||||||
 | 
					    spySymlinkSync.mockImplementation(() => undefined);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    spyExistsSync = jest.spyOn(fs, 'existsSync');
 | 
				
			||||||
 | 
					    spyExistsSync.mockImplementation(() => false);
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  afterEach(() => {
 | 
				
			||||||
 | 
					    jest.resetAllMocks();
 | 
				
			||||||
 | 
					    jest.clearAllMocks();
 | 
				
			||||||
 | 
					    jest.restoreAllMocks();
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  it('throw if release is not found', async () => {
 | 
				
			||||||
 | 
					    await expect(
 | 
				
			||||||
 | 
					      installer.installGraalPy('7.3.3', architecture, false, undefined)
 | 
				
			||||||
 | 
					    ).rejects.toThrow(
 | 
				
			||||||
 | 
					      `GraalPy version 7.3.3 with arch ${architecture} not found`
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    expect(spyHttpClient).toHaveBeenCalled();
 | 
				
			||||||
 | 
					    expect(spyDownloadTool).not.toHaveBeenCalled();
 | 
				
			||||||
 | 
					    expect(spyExec).not.toHaveBeenCalled();
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  it('found and install GraalPy', async () => {
 | 
				
			||||||
 | 
					    spyCacheDir = jest.spyOn(tc, 'cacheDir');
 | 
				
			||||||
 | 
					    spyCacheDir.mockImplementation(() =>
 | 
				
			||||||
 | 
					      path.join(toolDir, 'GraalPy', '21.3.0', architecture)
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    spyChmodSync = jest.spyOn(fs, 'chmodSync');
 | 
				
			||||||
 | 
					    spyChmodSync.mockImplementation(() => undefined);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    await expect(
 | 
				
			||||||
 | 
					      installer.installGraalPy('21.x', architecture, false, undefined)
 | 
				
			||||||
 | 
					    ).resolves.toEqual({
 | 
				
			||||||
 | 
					      installDir: path.join(toolDir, 'GraalPy', '21.3.0', architecture),
 | 
				
			||||||
 | 
					      resolvedGraalPyVersion: '21.3.0'
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    expect(spyHttpClient).toHaveBeenCalled();
 | 
				
			||||||
 | 
					    expect(spyDownloadTool).toHaveBeenCalled();
 | 
				
			||||||
 | 
					    expect(spyCacheDir).toHaveBeenCalled();
 | 
				
			||||||
 | 
					    expect(spyExec).toHaveBeenCalled();
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  it('found and install GraalPy, pre-release fallback', async () => {
 | 
				
			||||||
 | 
					    spyCacheDir = jest.spyOn(tc, 'cacheDir');
 | 
				
			||||||
 | 
					    spyCacheDir.mockImplementation(() =>
 | 
				
			||||||
 | 
					      path.join(toolDir, 'GraalPy', '23.1.0', architecture)
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    spyChmodSync = jest.spyOn(fs, 'chmodSync');
 | 
				
			||||||
 | 
					    spyChmodSync.mockImplementation(() => undefined);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    await expect(
 | 
				
			||||||
 | 
					      installer.installGraalPy('23.1.x', architecture, false, undefined)
 | 
				
			||||||
 | 
					    ).rejects.toThrow();
 | 
				
			||||||
 | 
					    await expect(
 | 
				
			||||||
 | 
					      installer.installGraalPy('23.1.x', architecture, true, undefined)
 | 
				
			||||||
 | 
					    ).resolves.toEqual({
 | 
				
			||||||
 | 
					      installDir: path.join(toolDir, 'GraalPy', '23.1.0', architecture),
 | 
				
			||||||
 | 
					      resolvedGraalPyVersion: '23.1.0-a.1'
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    expect(spyHttpClient).toHaveBeenCalled();
 | 
				
			||||||
 | 
					    expect(spyDownloadTool).toHaveBeenCalled();
 | 
				
			||||||
 | 
					    expect(spyCacheDir).toHaveBeenCalled();
 | 
				
			||||||
 | 
					    expect(spyExec).toHaveBeenCalled();
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
@@ -11,7 +11,8 @@ import {
 | 
				
			|||||||
  isCacheFeatureAvailable,
 | 
					  isCacheFeatureAvailable,
 | 
				
			||||||
  getVersionInputFromFile,
 | 
					  getVersionInputFromFile,
 | 
				
			||||||
  getVersionInputFromPlainFile,
 | 
					  getVersionInputFromPlainFile,
 | 
				
			||||||
  getVersionInputFromTomlFile
 | 
					  getVersionInputFromTomlFile,
 | 
				
			||||||
 | 
					  getNextPageUrl
 | 
				
			||||||
} from '../src/utils';
 | 
					} from '../src/utils';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
jest.mock('@actions/cache');
 | 
					jest.mock('@actions/cache');
 | 
				
			||||||
@@ -136,3 +137,25 @@ describe('Version from file test', () => {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					describe('getNextPageUrl', () => {
 | 
				
			||||||
 | 
					  it('GitHub API pagination next page is parsed correctly', () => {
 | 
				
			||||||
 | 
					    function generateResponse(link: string) {
 | 
				
			||||||
 | 
					      return {
 | 
				
			||||||
 | 
					        statusCode: 200,
 | 
				
			||||||
 | 
					        result: null,
 | 
				
			||||||
 | 
					        headers: {
 | 
				
			||||||
 | 
					          link: link
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      };
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    const page1Links =
 | 
				
			||||||
 | 
					      '<https://api.github.com/repositories/129883600/releases?page=2>; rel="next", <https://api.github.com/repositories/129883600/releases?page=3>; rel="last"';
 | 
				
			||||||
 | 
					    expect(getNextPageUrl(generateResponse(page1Links))).toStrictEqual(
 | 
				
			||||||
 | 
					      'https://api.github.com/repositories/129883600/releases?page=2'
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					    const page2Links =
 | 
				
			||||||
 | 
					      '<https://api.github.com/repositories/129883600/releases?page=1>; rel="prev", <https://api.github.com/repositories/129883600/releases?page=1>; rel="first"';
 | 
				
			||||||
 | 
					    expect(getNextPageUrl(generateResponse(page2Links))).toBeNull();
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										31865
									
								
								dist/cache-save/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										31865
									
								
								dist/cache-save/index.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										32530
									
								
								dist/setup/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										32530
									
								
								dist/setup/index.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							@@ -30,7 +30,7 @@ If there is a specific version of Python that you need and you don't want to wor
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
```yaml
 | 
					```yaml
 | 
				
			||||||
steps:
 | 
					steps:
 | 
				
			||||||
- uses: actions/checkout@v3
 | 
					- uses: actions/checkout@v4
 | 
				
			||||||
- uses: actions/setup-python@v4
 | 
					- uses: actions/setup-python@v4
 | 
				
			||||||
  with:
 | 
					  with:
 | 
				
			||||||
    python-version: '3.7.5' 
 | 
					    python-version: '3.7.5' 
 | 
				
			||||||
@@ -44,7 +44,7 @@ You can specify **only a major and minor version** if you are okay with the most
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
```yaml
 | 
					```yaml
 | 
				
			||||||
steps:
 | 
					steps:
 | 
				
			||||||
- uses: actions/checkout@v3
 | 
					- uses: actions/checkout@v4
 | 
				
			||||||
- uses: actions/setup-python@v4
 | 
					- uses: actions/setup-python@v4
 | 
				
			||||||
  with:
 | 
					  with:
 | 
				
			||||||
    python-version: '3.7' 
 | 
					    python-version: '3.7' 
 | 
				
			||||||
@@ -58,7 +58,7 @@ You can specify the version with **prerelease tag** to download and set up an ac
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
```yaml
 | 
					```yaml
 | 
				
			||||||
steps:
 | 
					steps:
 | 
				
			||||||
- uses: actions/checkout@v3
 | 
					- uses: actions/checkout@v4
 | 
				
			||||||
- uses: actions/setup-python@v4
 | 
					- uses: actions/setup-python@v4
 | 
				
			||||||
  with:
 | 
					  with:
 | 
				
			||||||
    python-version: '3.12.0-alpha.1'
 | 
					    python-version: '3.12.0-alpha.1'
 | 
				
			||||||
@@ -69,7 +69,7 @@ It's also possible to use **x.y-dev syntax** to download and set up the latest p
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
```yaml
 | 
					```yaml
 | 
				
			||||||
steps:
 | 
					steps:
 | 
				
			||||||
- uses: actions/checkout@v3
 | 
					- uses: actions/checkout@v4
 | 
				
			||||||
- uses: actions/setup-python@v4
 | 
					- uses: actions/setup-python@v4
 | 
				
			||||||
  with:
 | 
					  with:
 | 
				
			||||||
    python-version: '3.12-dev'
 | 
					    python-version: '3.12-dev'
 | 
				
			||||||
@@ -82,7 +82,7 @@ You can also use several types of ranges that are specified in [semver](https://
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
```yaml
 | 
					```yaml
 | 
				
			||||||
steps:
 | 
					steps:
 | 
				
			||||||
- uses: actions/checkout@v3
 | 
					- uses: actions/checkout@v4
 | 
				
			||||||
- uses: actions/setup-python@v4
 | 
					- uses: actions/setup-python@v4
 | 
				
			||||||
  with:
 | 
					  with:
 | 
				
			||||||
    python-version: '>=3.9 <3.10'
 | 
					    python-version: '>=3.9 <3.10'
 | 
				
			||||||
@@ -93,7 +93,7 @@ steps:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
```yaml
 | 
					```yaml
 | 
				
			||||||
steps:
 | 
					steps:
 | 
				
			||||||
- uses: actions/checkout@v3
 | 
					- uses: actions/checkout@v4
 | 
				
			||||||
- uses: actions/setup-python@v4
 | 
					- uses: actions/setup-python@v4
 | 
				
			||||||
  with:
 | 
					  with:
 | 
				
			||||||
    python-version: '3.12.0-alpha - 3.12.0'
 | 
					    python-version: '3.12.0-alpha - 3.12.0'
 | 
				
			||||||
@@ -104,7 +104,7 @@ steps:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
```yaml
 | 
					```yaml
 | 
				
			||||||
steps:
 | 
					steps:
 | 
				
			||||||
- uses: actions/checkout@v3
 | 
					- uses: actions/checkout@v4
 | 
				
			||||||
- uses: actions/setup-python@v4
 | 
					- uses: actions/setup-python@v4
 | 
				
			||||||
  with:
 | 
					  with:
 | 
				
			||||||
    python-version: '3.x'
 | 
					    python-version: '3.x'
 | 
				
			||||||
@@ -117,7 +117,7 @@ The version of PyPy should be specified in the format `pypy<python_version>[-v<p
 | 
				
			|||||||
The `-v<pypy_version>` parameter is optional and can be skipped. The latest PyPy version will be used in this case.
 | 
					The `-v<pypy_version>` parameter is optional and can be skipped. The latest PyPy version will be used in this case.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
pypy3.8 or pypy-3.8 # the latest available version of PyPy that supports Python 3.8
 | 
					pypy3.9 or pypy-3.9 # the latest available version of PyPy that supports Python 3.9
 | 
				
			||||||
pypy2.7 or pypy-2.7 # the latest available version of PyPy that supports Python 2.7
 | 
					pypy2.7 or pypy-2.7 # the latest available version of PyPy that supports Python 2.7
 | 
				
			||||||
pypy3.7-v7.3.3 or pypy-3.7-v7.3.3 # Python 3.7 and PyPy 7.3.3
 | 
					pypy3.7-v7.3.3 or pypy-3.7-v7.3.3 # Python 3.7 and PyPy 7.3.3
 | 
				
			||||||
pypy3.7-v7.x or pypy-3.7-v7.x # Python 3.7 and the latest available PyPy 7.x
 | 
					pypy3.7-v7.x or pypy-3.7-v7.x # Python 3.7 and the latest available PyPy 7.x
 | 
				
			||||||
@@ -137,7 +137,7 @@ jobs:
 | 
				
			|||||||
        - 'pypy3.7' # the latest available version of PyPy that supports Python 3.7
 | 
					        - 'pypy3.7' # the latest available version of PyPy that supports Python 3.7
 | 
				
			||||||
        - 'pypy3.7-v7.3.3' # Python 3.7 and PyPy 7.3.3
 | 
					        - 'pypy3.7-v7.3.3' # Python 3.7 and PyPy 7.3.3
 | 
				
			||||||
    steps:
 | 
					    steps:
 | 
				
			||||||
    - uses: actions/checkout@v3
 | 
					    - uses: actions/checkout@v4
 | 
				
			||||||
    - uses: actions/setup-python@v4
 | 
					    - uses: actions/setup-python@v4
 | 
				
			||||||
      with:
 | 
					      with:
 | 
				
			||||||
        python-version: ${{ matrix.python-version }}
 | 
					        python-version: ${{ matrix.python-version }}
 | 
				
			||||||
@@ -155,7 +155,7 @@ jobs:
 | 
				
			|||||||
  build:
 | 
					  build:
 | 
				
			||||||
    runs-on: ubuntu-latest
 | 
					    runs-on: ubuntu-latest
 | 
				
			||||||
    steps:
 | 
					    steps:
 | 
				
			||||||
    - uses: actions/checkout@v3
 | 
					    - uses: actions/checkout@v4
 | 
				
			||||||
    - uses: actions/setup-python@v4
 | 
					    - uses: actions/setup-python@v4
 | 
				
			||||||
      with:
 | 
					      with:
 | 
				
			||||||
        python-version: |
 | 
					        python-version: |
 | 
				
			||||||
@@ -172,7 +172,7 @@ jobs:
 | 
				
			|||||||
  build:
 | 
					  build:
 | 
				
			||||||
    runs-on: ubuntu-latest
 | 
					    runs-on: ubuntu-latest
 | 
				
			||||||
    steps:
 | 
					    steps:
 | 
				
			||||||
    - uses: actions/checkout@v3
 | 
					    - uses: actions/checkout@v4
 | 
				
			||||||
    - uses: actions/setup-python@v4
 | 
					    - uses: actions/setup-python@v4
 | 
				
			||||||
      with:
 | 
					      with:
 | 
				
			||||||
        python-version: |
 | 
					        python-version: |
 | 
				
			||||||
@@ -189,7 +189,7 @@ jobs:
 | 
				
			|||||||
  build:
 | 
					  build:
 | 
				
			||||||
    runs-on: ubuntu-latest
 | 
					    runs-on: ubuntu-latest
 | 
				
			||||||
    steps:
 | 
					    steps:
 | 
				
			||||||
    - uses: actions/checkout@v3
 | 
					    - uses: actions/checkout@v4
 | 
				
			||||||
    - uses: actions/setup-python@v4
 | 
					    - uses: actions/setup-python@v4
 | 
				
			||||||
      with:
 | 
					      with:
 | 
				
			||||||
        python-version: |
 | 
					        python-version: |
 | 
				
			||||||
@@ -211,10 +211,10 @@ jobs:
 | 
				
			|||||||
    runs-on: ubuntu-latest
 | 
					    runs-on: ubuntu-latest
 | 
				
			||||||
    strategy:
 | 
					    strategy:
 | 
				
			||||||
      matrix:
 | 
					      matrix:
 | 
				
			||||||
        python-version: [ '2.x', '3.x', 'pypy2.7', 'pypy3.7', 'pypy3.8' ]
 | 
					        python-version: [ '2.x', '3.x', 'pypy2.7', 'pypy3.8', 'pypy3.9' ]
 | 
				
			||||||
    name: Python ${{ matrix.python-version }} sample
 | 
					    name: Python ${{ matrix.python-version }} sample
 | 
				
			||||||
    steps:
 | 
					    steps:
 | 
				
			||||||
      - uses: actions/checkout@v3
 | 
					      - uses: actions/checkout@v4
 | 
				
			||||||
      - name: Set up Python
 | 
					      - name: Set up Python
 | 
				
			||||||
        uses: actions/setup-python@v4
 | 
					        uses: actions/setup-python@v4
 | 
				
			||||||
        with:
 | 
					        with:
 | 
				
			||||||
@@ -232,14 +232,14 @@ jobs:
 | 
				
			|||||||
    strategy:
 | 
					    strategy:
 | 
				
			||||||
      matrix:
 | 
					      matrix:
 | 
				
			||||||
        os: [ubuntu-latest, macos-latest, windows-latest]
 | 
					        os: [ubuntu-latest, macos-latest, windows-latest]
 | 
				
			||||||
        python-version: ['2.7', '3.7', '3.8', '3.9', '3.10', 'pypy2.7', 'pypy3.8']
 | 
					        python-version: ['2.7', '3.7', '3.8', '3.9', '3.10', 'pypy2.7', 'pypy3.9']
 | 
				
			||||||
        exclude:
 | 
					        exclude:
 | 
				
			||||||
          - os: macos-latest
 | 
					          - os: macos-latest
 | 
				
			||||||
            python-version: '3.8'
 | 
					            python-version: '3.8'
 | 
				
			||||||
          - os: windows-latest
 | 
					          - os: windows-latest
 | 
				
			||||||
            python-version: '3.6'
 | 
					            python-version: '3.6'
 | 
				
			||||||
    steps:
 | 
					    steps:
 | 
				
			||||||
      - uses: actions/checkout@v3
 | 
					      - uses: actions/checkout@v4
 | 
				
			||||||
      - name: Set up Python
 | 
					      - name: Set up Python
 | 
				
			||||||
        uses: actions/setup-python@v4
 | 
					        uses: actions/setup-python@v4
 | 
				
			||||||
        with:
 | 
					        with:
 | 
				
			||||||
@@ -256,7 +256,7 @@ jobs:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
```yaml
 | 
					```yaml
 | 
				
			||||||
steps:
 | 
					steps:
 | 
				
			||||||
- uses: actions/checkout@v3
 | 
					- uses: actions/checkout@v4
 | 
				
			||||||
- uses: actions/setup-python@v4
 | 
					- uses: actions/setup-python@v4
 | 
				
			||||||
  with:
 | 
					  with:
 | 
				
			||||||
    python-version-file: '.python-version' # Read python version from a file .python-version
 | 
					    python-version-file: '.python-version' # Read python version from a file .python-version
 | 
				
			||||||
@@ -265,7 +265,7 @@ steps:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
```yaml
 | 
					```yaml
 | 
				
			||||||
steps:
 | 
					steps:
 | 
				
			||||||
- uses: actions/checkout@v3
 | 
					- uses: actions/checkout@v4
 | 
				
			||||||
- uses: actions/setup-python@v4
 | 
					- uses: actions/setup-python@v4
 | 
				
			||||||
  with:
 | 
					  with:
 | 
				
			||||||
    python-version-file: 'pyproject.toml' # Read python version from a file pyproject.toml
 | 
					    python-version-file: 'pyproject.toml' # Read python version from a file pyproject.toml
 | 
				
			||||||
@@ -280,7 +280,7 @@ If `check-latest` is set to `true`, the action first checks if the cached versio
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
```yaml
 | 
					```yaml
 | 
				
			||||||
steps:
 | 
					steps:
 | 
				
			||||||
  - uses: actions/checkout@v3
 | 
					  - uses: actions/checkout@v4
 | 
				
			||||||
  - uses: actions/setup-python@v4
 | 
					  - uses: actions/setup-python@v4
 | 
				
			||||||
    with:
 | 
					    with:
 | 
				
			||||||
      python-version: '3.7'
 | 
					      python-version: '3.7'
 | 
				
			||||||
@@ -295,7 +295,7 @@ steps:
 | 
				
			|||||||
**Caching pipenv dependencies:**
 | 
					**Caching pipenv dependencies:**
 | 
				
			||||||
```yaml
 | 
					```yaml
 | 
				
			||||||
steps:
 | 
					steps:
 | 
				
			||||||
- uses: actions/checkout@v3
 | 
					- uses: actions/checkout@v4
 | 
				
			||||||
- uses: actions/setup-python@v4
 | 
					- uses: actions/setup-python@v4
 | 
				
			||||||
  with:
 | 
					  with:
 | 
				
			||||||
    python-version: '3.9'
 | 
					    python-version: '3.9'
 | 
				
			||||||
@@ -308,7 +308,7 @@ steps:
 | 
				
			|||||||
**Caching poetry dependencies:**
 | 
					**Caching poetry dependencies:**
 | 
				
			||||||
```yaml
 | 
					```yaml
 | 
				
			||||||
steps:
 | 
					steps:
 | 
				
			||||||
- uses: actions/checkout@v3
 | 
					- uses: actions/checkout@v4
 | 
				
			||||||
- name: Install poetry
 | 
					- name: Install poetry
 | 
				
			||||||
  run: pipx install poetry
 | 
					  run: pipx install poetry
 | 
				
			||||||
- uses: actions/setup-python@v4
 | 
					- uses: actions/setup-python@v4
 | 
				
			||||||
@@ -322,7 +322,7 @@ steps:
 | 
				
			|||||||
**Using a list of file paths to cache dependencies**
 | 
					**Using a list of file paths to cache dependencies**
 | 
				
			||||||
```yaml
 | 
					```yaml
 | 
				
			||||||
steps:
 | 
					steps:
 | 
				
			||||||
- uses: actions/checkout@v3
 | 
					- uses: actions/checkout@v4
 | 
				
			||||||
- uses: actions/setup-python@v4
 | 
					- uses: actions/setup-python@v4
 | 
				
			||||||
  with:
 | 
					  with:
 | 
				
			||||||
    python-version: '3.9'
 | 
					    python-version: '3.9'
 | 
				
			||||||
@@ -337,7 +337,7 @@ steps:
 | 
				
			|||||||
**Using wildcard patterns to cache dependencies**
 | 
					**Using wildcard patterns to cache dependencies**
 | 
				
			||||||
```yaml
 | 
					```yaml
 | 
				
			||||||
steps:
 | 
					steps:
 | 
				
			||||||
- uses: actions/checkout@v3
 | 
					- uses: actions/checkout@v4
 | 
				
			||||||
- uses: actions/setup-python@v4
 | 
					- uses: actions/setup-python@v4
 | 
				
			||||||
  with:
 | 
					  with:
 | 
				
			||||||
    python-version: '3.9'
 | 
					    python-version: '3.9'
 | 
				
			||||||
@@ -349,7 +349,7 @@ steps:
 | 
				
			|||||||
**Using a list of wildcard patterns to cache dependencies**
 | 
					**Using a list of wildcard patterns to cache dependencies**
 | 
				
			||||||
```yaml
 | 
					```yaml
 | 
				
			||||||
steps:
 | 
					steps:
 | 
				
			||||||
- uses: actions/checkout@v3
 | 
					- uses: actions/checkout@v4
 | 
				
			||||||
- uses: actions/setup-python@v4
 | 
					- uses: actions/setup-python@v4
 | 
				
			||||||
  with:
 | 
					  with:
 | 
				
			||||||
    python-version: '3.10'
 | 
					    python-version: '3.10'
 | 
				
			||||||
@@ -364,7 +364,7 @@ steps:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
```yaml
 | 
					```yaml
 | 
				
			||||||
steps:
 | 
					steps:
 | 
				
			||||||
- uses: actions/checkout@v3
 | 
					- uses: actions/checkout@v4
 | 
				
			||||||
- uses: actions/setup-python@v4
 | 
					- uses: actions/setup-python@v4
 | 
				
			||||||
  with:
 | 
					  with:
 | 
				
			||||||
    python-version: '3.11'
 | 
					    python-version: '3.11'
 | 
				
			||||||
@@ -387,7 +387,7 @@ jobs:
 | 
				
			|||||||
  build:
 | 
					  build:
 | 
				
			||||||
    runs-on: ubuntu-latest
 | 
					    runs-on: ubuntu-latest
 | 
				
			||||||
    steps:
 | 
					    steps:
 | 
				
			||||||
    - uses: actions/checkout@v3
 | 
					    - uses: actions/checkout@v4
 | 
				
			||||||
    - uses: actions/setup-python@v4
 | 
					    - uses: actions/setup-python@v4
 | 
				
			||||||
      id: cp310
 | 
					      id: cp310
 | 
				
			||||||
      with:
 | 
					      with:
 | 
				
			||||||
@@ -404,7 +404,7 @@ jobs:
 | 
				
			|||||||
  build:
 | 
					  build:
 | 
				
			||||||
    runs-on: ubuntu-latest
 | 
					    runs-on: ubuntu-latest
 | 
				
			||||||
    steps:
 | 
					    steps:
 | 
				
			||||||
    - uses: actions/checkout@v3
 | 
					    - uses: actions/checkout@v4
 | 
				
			||||||
    - uses: actions/setup-python@v4
 | 
					    - uses: actions/setup-python@v4
 | 
				
			||||||
      id: cp310
 | 
					      id: cp310
 | 
				
			||||||
      with:
 | 
					      with:
 | 
				
			||||||
@@ -420,7 +420,7 @@ jobs:
 | 
				
			|||||||
  build:
 | 
					  build:
 | 
				
			||||||
    runs-on: ubuntu-latest
 | 
					    runs-on: ubuntu-latest
 | 
				
			||||||
    steps:
 | 
					    steps:
 | 
				
			||||||
    - uses: actions/checkout@v3
 | 
					    - uses: actions/checkout@v4
 | 
				
			||||||
    - uses: actions/setup-python@v4
 | 
					    - uses: actions/setup-python@v4
 | 
				
			||||||
      id: cp310
 | 
					      id: cp310
 | 
				
			||||||
      with:
 | 
					      with:
 | 
				
			||||||
@@ -451,7 +451,7 @@ Such a requirement on side-effect could be because you don't want your composite
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
```yaml
 | 
					```yaml
 | 
				
			||||||
 steps:
 | 
					 steps:
 | 
				
			||||||
   - uses: actions/checkout@v3
 | 
					   - uses: actions/checkout@v4
 | 
				
			||||||
   - uses: actions/setup-python@v4
 | 
					   - uses: actions/setup-python@v4
 | 
				
			||||||
     id: cp310
 | 
					     id: cp310
 | 
				
			||||||
     with:
 | 
					     with:
 | 
				
			||||||
@@ -611,7 +611,7 @@ jobs:
 | 
				
			|||||||
        python_version: ["3.11", "3.12"]
 | 
					        python_version: ["3.11", "3.12"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    steps:
 | 
					    steps:
 | 
				
			||||||
      - uses: actions/checkout@v3
 | 
					      - uses: actions/checkout@v4
 | 
				
			||||||
      - uses: actions/setup-python@v4
 | 
					      - uses: actions/setup-python@v4
 | 
				
			||||||
        with:
 | 
					        with:
 | 
				
			||||||
          python-version: "${{ matrix.python_version }}"
 | 
					          python-version: "${{ matrix.python_version }}"
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										7482
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										7482
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										12
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								package.json
									
									
									
									
									
								
							@@ -25,7 +25,7 @@
 | 
				
			|||||||
  "author": "GitHub",
 | 
					  "author": "GitHub",
 | 
				
			||||||
  "license": "MIT",
 | 
					  "license": "MIT",
 | 
				
			||||||
  "dependencies": {
 | 
					  "dependencies": {
 | 
				
			||||||
    "@actions/cache": "^3.0.4",
 | 
					    "@actions/cache": "^4.0.3",
 | 
				
			||||||
    "@actions/core": "^1.10.0",
 | 
					    "@actions/core": "^1.10.0",
 | 
				
			||||||
    "@actions/exec": "^1.1.0",
 | 
					    "@actions/exec": "^1.1.0",
 | 
				
			||||||
    "@actions/glob": "^0.2.0",
 | 
					    "@actions/glob": "^0.2.0",
 | 
				
			||||||
@@ -36,21 +36,21 @@
 | 
				
			|||||||
    "semver": "^7.5.2"
 | 
					    "semver": "^7.5.2"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  "devDependencies": {
 | 
					  "devDependencies": {
 | 
				
			||||||
    "@types/jest": "^27.0.2",
 | 
					    "@types/jest": "^29.5.6",
 | 
				
			||||||
    "@types/node": "^16.11.25",
 | 
					    "@types/node": "^16.11.25",
 | 
				
			||||||
    "@types/semver": "^7.1.0",
 | 
					    "@types/semver": "^7.1.0",
 | 
				
			||||||
    "@typescript-eslint/eslint-plugin": "^5.54.0",
 | 
					    "@typescript-eslint/eslint-plugin": "^5.54.0",
 | 
				
			||||||
    "@typescript-eslint/parser": "^5.54.0",
 | 
					    "@typescript-eslint/parser": "^5.54.0",
 | 
				
			||||||
    "@vercel/ncc": "^0.33.4",
 | 
					    "@vercel/ncc": "^0.38.0",
 | 
				
			||||||
    "eslint": "^8.35.0",
 | 
					    "eslint": "^8.35.0",
 | 
				
			||||||
    "eslint-config-prettier": "^8.6.0",
 | 
					    "eslint-config-prettier": "^8.6.0",
 | 
				
			||||||
    "eslint-plugin-jest": "^27.2.1",
 | 
					    "eslint-plugin-jest": "^27.2.1",
 | 
				
			||||||
    "eslint-plugin-node": "^11.1.0",
 | 
					    "eslint-plugin-node": "^11.1.0",
 | 
				
			||||||
    "husky": "^7.0.2",
 | 
					    "husky": "^7.0.2",
 | 
				
			||||||
    "jest": "^27.2.5",
 | 
					    "jest": "^29.7.0",
 | 
				
			||||||
    "jest-circus": "^27.2.5",
 | 
					    "jest-circus": "^29.7.0",
 | 
				
			||||||
    "prettier": "^2.8.4",
 | 
					    "prettier": "^2.8.4",
 | 
				
			||||||
    "ts-jest": "^27.0.5",
 | 
					    "ts-jest": "^29.1.1",
 | 
				
			||||||
    "typescript": "^4.2.3"
 | 
					    "typescript": "^4.2.3"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  "husky": {
 | 
					  "husky": {
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										146
									
								
								src/find-graalpy.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										146
									
								
								src/find-graalpy.ts
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,146 @@
 | 
				
			|||||||
 | 
					import * as path from 'path';
 | 
				
			||||||
 | 
					import * as graalpyInstall from './install-graalpy';
 | 
				
			||||||
 | 
					import {
 | 
				
			||||||
 | 
					  IS_WINDOWS,
 | 
				
			||||||
 | 
					  validateVersion,
 | 
				
			||||||
 | 
					  IGraalPyManifestRelease,
 | 
				
			||||||
 | 
					  getBinaryDirectory
 | 
				
			||||||
 | 
					} from './utils';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import * as semver from 'semver';
 | 
				
			||||||
 | 
					import * as core from '@actions/core';
 | 
				
			||||||
 | 
					import * as tc from '@actions/tool-cache';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export async function findGraalPyVersion(
 | 
				
			||||||
 | 
					  versionSpec: string,
 | 
				
			||||||
 | 
					  architecture: string,
 | 
				
			||||||
 | 
					  updateEnvironment: boolean,
 | 
				
			||||||
 | 
					  checkLatest: boolean,
 | 
				
			||||||
 | 
					  allowPreReleases: boolean
 | 
				
			||||||
 | 
					): Promise<string> {
 | 
				
			||||||
 | 
					  let resolvedGraalPyVersion = '';
 | 
				
			||||||
 | 
					  let installDir: string | null;
 | 
				
			||||||
 | 
					  let releases: IGraalPyManifestRelease[] | undefined;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  let graalpyVersionSpec = parseGraalPyVersion(versionSpec);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (checkLatest) {
 | 
				
			||||||
 | 
					    releases = await graalpyInstall.getAvailableGraalPyVersions();
 | 
				
			||||||
 | 
					    if (releases && releases.length > 0) {
 | 
				
			||||||
 | 
					      const releaseData = graalpyInstall.findRelease(
 | 
				
			||||||
 | 
					        releases,
 | 
				
			||||||
 | 
					        graalpyVersionSpec,
 | 
				
			||||||
 | 
					        architecture,
 | 
				
			||||||
 | 
					        false
 | 
				
			||||||
 | 
					      );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if (releaseData) {
 | 
				
			||||||
 | 
					        core.info(`Resolved as GraalPy ${releaseData.resolvedGraalPyVersion}`);
 | 
				
			||||||
 | 
					        graalpyVersionSpec = releaseData.resolvedGraalPyVersion;
 | 
				
			||||||
 | 
					      } else {
 | 
				
			||||||
 | 
					        core.info(
 | 
				
			||||||
 | 
					          `Failed to resolve GraalPy ${graalpyVersionSpec} from manifest`
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ({installDir, resolvedGraalPyVersion} = findGraalPyToolCache(
 | 
				
			||||||
 | 
					    graalpyVersionSpec,
 | 
				
			||||||
 | 
					    architecture
 | 
				
			||||||
 | 
					  ));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (!installDir) {
 | 
				
			||||||
 | 
					    ({installDir, resolvedGraalPyVersion} = await graalpyInstall.installGraalPy(
 | 
				
			||||||
 | 
					      graalpyVersionSpec,
 | 
				
			||||||
 | 
					      architecture,
 | 
				
			||||||
 | 
					      allowPreReleases,
 | 
				
			||||||
 | 
					      releases
 | 
				
			||||||
 | 
					    ));
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  const pipDir = IS_WINDOWS ? 'Scripts' : 'bin';
 | 
				
			||||||
 | 
					  const _binDir = path.join(installDir, pipDir);
 | 
				
			||||||
 | 
					  const binaryExtension = IS_WINDOWS ? '.exe' : '';
 | 
				
			||||||
 | 
					  const pythonPath = path.join(
 | 
				
			||||||
 | 
					    IS_WINDOWS ? installDir : _binDir,
 | 
				
			||||||
 | 
					    `python${binaryExtension}`
 | 
				
			||||||
 | 
					  );
 | 
				
			||||||
 | 
					  const pythonLocation = getBinaryDirectory(installDir);
 | 
				
			||||||
 | 
					  if (updateEnvironment) {
 | 
				
			||||||
 | 
					    core.exportVariable('pythonLocation', installDir);
 | 
				
			||||||
 | 
					    // https://cmake.org/cmake/help/latest/module/FindPython.html#module:FindPython
 | 
				
			||||||
 | 
					    core.exportVariable('Python_ROOT_DIR', installDir);
 | 
				
			||||||
 | 
					    // https://cmake.org/cmake/help/latest/module/FindPython2.html#module:FindPython2
 | 
				
			||||||
 | 
					    core.exportVariable('Python2_ROOT_DIR', installDir);
 | 
				
			||||||
 | 
					    // https://cmake.org/cmake/help/latest/module/FindPython3.html#module:FindPython3
 | 
				
			||||||
 | 
					    core.exportVariable('Python3_ROOT_DIR', installDir);
 | 
				
			||||||
 | 
					    core.exportVariable('PKG_CONFIG_PATH', pythonLocation + '/lib/pkgconfig');
 | 
				
			||||||
 | 
					    core.addPath(pythonLocation);
 | 
				
			||||||
 | 
					    core.addPath(_binDir);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  core.setOutput('python-version', 'graalpy' + resolvedGraalPyVersion);
 | 
				
			||||||
 | 
					  core.setOutput('python-path', pythonPath);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return resolvedGraalPyVersion;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export function findGraalPyToolCache(
 | 
				
			||||||
 | 
					  graalpyVersion: string,
 | 
				
			||||||
 | 
					  architecture: string
 | 
				
			||||||
 | 
					) {
 | 
				
			||||||
 | 
					  let resolvedGraalPyVersion = '';
 | 
				
			||||||
 | 
					  let installDir: string | null = tc.find(
 | 
				
			||||||
 | 
					    'GraalPy',
 | 
				
			||||||
 | 
					    graalpyVersion,
 | 
				
			||||||
 | 
					    architecture
 | 
				
			||||||
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (installDir) {
 | 
				
			||||||
 | 
					    // 'tc.find' finds tool based on Python version but we also need to check
 | 
				
			||||||
 | 
					    // whether GraalPy version satisfies requested version.
 | 
				
			||||||
 | 
					    resolvedGraalPyVersion = path.basename(path.dirname(installDir));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const isGraalPyVersionSatisfies = semver.satisfies(
 | 
				
			||||||
 | 
					      resolvedGraalPyVersion,
 | 
				
			||||||
 | 
					      graalpyVersion
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					    if (!isGraalPyVersionSatisfies) {
 | 
				
			||||||
 | 
					      installDir = null;
 | 
				
			||||||
 | 
					      resolvedGraalPyVersion = '';
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (!installDir) {
 | 
				
			||||||
 | 
					    core.info(
 | 
				
			||||||
 | 
					      `GraalPy version ${graalpyVersion} was not found in the local cache`
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return {installDir, resolvedGraalPyVersion};
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export function parseGraalPyVersion(versionSpec: string): string {
 | 
				
			||||||
 | 
					  const versions = versionSpec.split('-').filter(item => !!item);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (/^(graalpy)(.+)/.test(versions[0])) {
 | 
				
			||||||
 | 
					    const version = versions[0].replace('graalpy', '');
 | 
				
			||||||
 | 
					    versions.splice(0, 1, 'graalpy', version);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (versions.length < 2 || versions[0] != 'graalpy') {
 | 
				
			||||||
 | 
					    throw new Error(
 | 
				
			||||||
 | 
					      "Invalid 'version' property for GraalPy. GraalPy version should be specified as 'graalpy<python-version>' or 'graalpy-<python-version>'. See README for examples and documentation."
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  const pythonVersion = versions[1];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (!validateVersion(pythonVersion)) {
 | 
				
			||||||
 | 
					    throw new Error(
 | 
				
			||||||
 | 
					      "Invalid 'version' property for GraalPy. GraalPy versions should satisfy SemVer notation. See README for examples and documentation."
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return pythonVersion;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -7,7 +7,8 @@ import {
 | 
				
			|||||||
  getPyPyVersionFromPath,
 | 
					  getPyPyVersionFromPath,
 | 
				
			||||||
  readExactPyPyVersionFile,
 | 
					  readExactPyPyVersionFile,
 | 
				
			||||||
  validatePythonVersionFormatForPyPy,
 | 
					  validatePythonVersionFormatForPyPy,
 | 
				
			||||||
  IPyPyManifestRelease
 | 
					  IPyPyManifestRelease,
 | 
				
			||||||
 | 
					  getBinaryDirectory
 | 
				
			||||||
} from './utils';
 | 
					} from './utils';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import * as semver from 'semver';
 | 
					import * as semver from 'semver';
 | 
				
			||||||
@@ -82,7 +83,7 @@ export async function findPyPyVersion(
 | 
				
			|||||||
    IS_WINDOWS ? installDir : _binDir,
 | 
					    IS_WINDOWS ? installDir : _binDir,
 | 
				
			||||||
    `python${binaryExtension}`
 | 
					    `python${binaryExtension}`
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
  const pythonLocation = pypyInstall.getPyPyBinaryPath(installDir);
 | 
					  const pythonLocation = getBinaryDirectory(installDir);
 | 
				
			||||||
  if (updateEnvironment) {
 | 
					  if (updateEnvironment) {
 | 
				
			||||||
    core.exportVariable('pythonLocation', installDir);
 | 
					    core.exportVariable('pythonLocation', installDir);
 | 
				
			||||||
    // https://cmake.org/cmake/help/latest/module/FindPython.html#module:FindPython
 | 
					    // https://cmake.org/cmake/help/latest/module/FindPython.html#module:FindPython
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										262
									
								
								src/install-graalpy.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										262
									
								
								src/install-graalpy.ts
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,262 @@
 | 
				
			|||||||
 | 
					import * as os from 'os';
 | 
				
			||||||
 | 
					import * as path from 'path';
 | 
				
			||||||
 | 
					import * as core from '@actions/core';
 | 
				
			||||||
 | 
					import * as tc from '@actions/tool-cache';
 | 
				
			||||||
 | 
					import * as semver from 'semver';
 | 
				
			||||||
 | 
					import * as httpm from '@actions/http-client';
 | 
				
			||||||
 | 
					import * as ifm from '@actions/http-client/interfaces';
 | 
				
			||||||
 | 
					import * as exec from '@actions/exec';
 | 
				
			||||||
 | 
					import fs from 'fs';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import {
 | 
				
			||||||
 | 
					  IS_WINDOWS,
 | 
				
			||||||
 | 
					  IGraalPyManifestRelease,
 | 
				
			||||||
 | 
					  createSymlinkInFolder,
 | 
				
			||||||
 | 
					  isNightlyKeyword,
 | 
				
			||||||
 | 
					  getBinaryDirectory,
 | 
				
			||||||
 | 
					  getNextPageUrl
 | 
				
			||||||
 | 
					} from './utils';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const TOKEN = core.getInput('token');
 | 
				
			||||||
 | 
					const AUTH = !TOKEN ? undefined : `token ${TOKEN}`;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export async function installGraalPy(
 | 
				
			||||||
 | 
					  graalpyVersion: string,
 | 
				
			||||||
 | 
					  architecture: string,
 | 
				
			||||||
 | 
					  allowPreReleases: boolean,
 | 
				
			||||||
 | 
					  releases: IGraalPyManifestRelease[] | undefined
 | 
				
			||||||
 | 
					) {
 | 
				
			||||||
 | 
					  let downloadDir;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  releases = releases ?? (await getAvailableGraalPyVersions());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (!releases || !releases.length) {
 | 
				
			||||||
 | 
					    throw new Error('No release was found in GraalPy version.json');
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  let releaseData = findRelease(releases, graalpyVersion, architecture, false);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (allowPreReleases && (!releaseData || !releaseData.foundAsset)) {
 | 
				
			||||||
 | 
					    // check for pre-release
 | 
				
			||||||
 | 
					    core.info(
 | 
				
			||||||
 | 
					      [
 | 
				
			||||||
 | 
					        `Stable GraalPy version ${graalpyVersion} with arch ${architecture} not found`,
 | 
				
			||||||
 | 
					        `Trying pre-release versions`
 | 
				
			||||||
 | 
					      ].join(os.EOL)
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					    releaseData = findRelease(releases, graalpyVersion, architecture, true);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (!releaseData || !releaseData.foundAsset) {
 | 
				
			||||||
 | 
					    throw new Error(
 | 
				
			||||||
 | 
					      `GraalPy version ${graalpyVersion} with arch ${architecture} not found`
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  const {foundAsset, resolvedGraalPyVersion} = releaseData;
 | 
				
			||||||
 | 
					  const downloadUrl = `${foundAsset.browser_download_url}`;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  core.info(`Downloading GraalPy from "${downloadUrl}" ...`);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  try {
 | 
				
			||||||
 | 
					    const graalpyPath = await tc.downloadTool(downloadUrl, undefined, AUTH);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    core.info('Extracting downloaded archive...');
 | 
				
			||||||
 | 
					    downloadDir = await tc.extractTar(graalpyPath);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // root folder in archive can have unpredictable name so just take the first folder
 | 
				
			||||||
 | 
					    // downloadDir is unique folder under TEMP and can't contain any other folders
 | 
				
			||||||
 | 
					    const archiveName = fs.readdirSync(downloadDir)[0];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const toolDir = path.join(downloadDir, archiveName);
 | 
				
			||||||
 | 
					    let installDir = toolDir;
 | 
				
			||||||
 | 
					    if (!isNightlyKeyword(resolvedGraalPyVersion)) {
 | 
				
			||||||
 | 
					      installDir = await tc.cacheDir(
 | 
				
			||||||
 | 
					        toolDir,
 | 
				
			||||||
 | 
					        'GraalPy',
 | 
				
			||||||
 | 
					        resolvedGraalPyVersion,
 | 
				
			||||||
 | 
					        architecture
 | 
				
			||||||
 | 
					      );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const binaryPath = getBinaryDirectory(installDir);
 | 
				
			||||||
 | 
					    await createGraalPySymlink(binaryPath, resolvedGraalPyVersion);
 | 
				
			||||||
 | 
					    await installPip(binaryPath);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return {installDir, resolvedGraalPyVersion};
 | 
				
			||||||
 | 
					  } catch (err) {
 | 
				
			||||||
 | 
					    if (err instanceof Error) {
 | 
				
			||||||
 | 
					      // Rate limit?
 | 
				
			||||||
 | 
					      if (
 | 
				
			||||||
 | 
					        err instanceof tc.HTTPError &&
 | 
				
			||||||
 | 
					        (err.httpStatusCode === 403 || err.httpStatusCode === 429)
 | 
				
			||||||
 | 
					      ) {
 | 
				
			||||||
 | 
					        core.info(
 | 
				
			||||||
 | 
					          `Received HTTP status code ${err.httpStatusCode}.  This usually indicates the rate limit has been exceeded`
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					      } else {
 | 
				
			||||||
 | 
					        core.info(err.message);
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      if (err.stack !== undefined) {
 | 
				
			||||||
 | 
					        core.debug(err.stack);
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    throw err;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export async function getAvailableGraalPyVersions() {
 | 
				
			||||||
 | 
					  const http: httpm.HttpClient = new httpm.HttpClient('tool-cache');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  const headers: ifm.IHeaders = {};
 | 
				
			||||||
 | 
					  if (AUTH) {
 | 
				
			||||||
 | 
					    headers.authorization = AUTH;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  let url: string | null =
 | 
				
			||||||
 | 
					    'https://api.github.com/repos/oracle/graalpython/releases';
 | 
				
			||||||
 | 
					  const result: IGraalPyManifestRelease[] = [];
 | 
				
			||||||
 | 
					  do {
 | 
				
			||||||
 | 
					    const response: ifm.ITypedResponse<IGraalPyManifestRelease[]> =
 | 
				
			||||||
 | 
					      await http.getJson(url, headers);
 | 
				
			||||||
 | 
					    if (!response.result) {
 | 
				
			||||||
 | 
					      throw new Error(
 | 
				
			||||||
 | 
					        `Unable to retrieve the list of available GraalPy versions from '${url}'`
 | 
				
			||||||
 | 
					      );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    result.push(...response.result);
 | 
				
			||||||
 | 
					    url = getNextPageUrl(response);
 | 
				
			||||||
 | 
					  } while (url);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return result;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					async function createGraalPySymlink(
 | 
				
			||||||
 | 
					  graalpyBinaryPath: string,
 | 
				
			||||||
 | 
					  graalpyVersion: string
 | 
				
			||||||
 | 
					) {
 | 
				
			||||||
 | 
					  const version = semver.coerce(graalpyVersion)!;
 | 
				
			||||||
 | 
					  const pythonBinaryPostfix = semver.major(version);
 | 
				
			||||||
 | 
					  const pythonMinor = semver.minor(version);
 | 
				
			||||||
 | 
					  const graalpyMajorMinorBinaryPostfix = `${pythonBinaryPostfix}.${pythonMinor}`;
 | 
				
			||||||
 | 
					  const binaryExtension = IS_WINDOWS ? '.exe' : '';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  core.info('Creating symlinks...');
 | 
				
			||||||
 | 
					  createSymlinkInFolder(
 | 
				
			||||||
 | 
					    graalpyBinaryPath,
 | 
				
			||||||
 | 
					    `graalpy${binaryExtension}`,
 | 
				
			||||||
 | 
					    `python${pythonBinaryPostfix}${binaryExtension}`,
 | 
				
			||||||
 | 
					    true
 | 
				
			||||||
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  createSymlinkInFolder(
 | 
				
			||||||
 | 
					    graalpyBinaryPath,
 | 
				
			||||||
 | 
					    `graalpy${binaryExtension}`,
 | 
				
			||||||
 | 
					    `python${binaryExtension}`,
 | 
				
			||||||
 | 
					    true
 | 
				
			||||||
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  createSymlinkInFolder(
 | 
				
			||||||
 | 
					    graalpyBinaryPath,
 | 
				
			||||||
 | 
					    `graalpy${binaryExtension}`,
 | 
				
			||||||
 | 
					    `graalpy${graalpyMajorMinorBinaryPostfix}${binaryExtension}`,
 | 
				
			||||||
 | 
					    true
 | 
				
			||||||
 | 
					  );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					async function installPip(pythonLocation: string) {
 | 
				
			||||||
 | 
					  core.info(
 | 
				
			||||||
 | 
					    "Installing pip (GraalPy doesn't update pip because it uses a patched version of pip)"
 | 
				
			||||||
 | 
					  );
 | 
				
			||||||
 | 
					  const pythonBinary = path.join(pythonLocation, 'python');
 | 
				
			||||||
 | 
					  await exec.exec(`${pythonBinary} -m ensurepip --default-pip`);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export function graalPyTagToVersion(tag: string) {
 | 
				
			||||||
 | 
					  const versionPattern = /.*-(\d+\.\d+\.\d+(?:\.\d+)?)((?:a|b|rc))?(\d*)?/;
 | 
				
			||||||
 | 
					  const match = tag.match(versionPattern);
 | 
				
			||||||
 | 
					  if (match && match[2]) {
 | 
				
			||||||
 | 
					    return `${match[1]}-${match[2]}.${match[3]}`;
 | 
				
			||||||
 | 
					  } else if (match) {
 | 
				
			||||||
 | 
					    return match[1];
 | 
				
			||||||
 | 
					  } else {
 | 
				
			||||||
 | 
					    return tag.replace(/.*-/, '');
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export function findRelease(
 | 
				
			||||||
 | 
					  releases: IGraalPyManifestRelease[],
 | 
				
			||||||
 | 
					  graalpyVersion: string,
 | 
				
			||||||
 | 
					  architecture: string,
 | 
				
			||||||
 | 
					  includePrerelease: boolean
 | 
				
			||||||
 | 
					) {
 | 
				
			||||||
 | 
					  const options = {includePrerelease: includePrerelease};
 | 
				
			||||||
 | 
					  const filterReleases = releases.filter(item => {
 | 
				
			||||||
 | 
					    const isVersionSatisfied = semver.satisfies(
 | 
				
			||||||
 | 
					      graalPyTagToVersion(item.tag_name),
 | 
				
			||||||
 | 
					      graalpyVersion,
 | 
				
			||||||
 | 
					      options
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					    return (
 | 
				
			||||||
 | 
					      isVersionSatisfied && !!findAsset(item, architecture, process.platform)
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (!filterReleases.length) {
 | 
				
			||||||
 | 
					    return null;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  const sortedReleases = filterReleases.sort((previous, current) =>
 | 
				
			||||||
 | 
					    semver.compare(
 | 
				
			||||||
 | 
					      semver.coerce(graalPyTagToVersion(current.tag_name))!,
 | 
				
			||||||
 | 
					      semver.coerce(graalPyTagToVersion(previous.tag_name))!
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  const foundRelease = sortedReleases[0];
 | 
				
			||||||
 | 
					  const foundAsset = findAsset(foundRelease, architecture, process.platform);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return {
 | 
				
			||||||
 | 
					    foundAsset,
 | 
				
			||||||
 | 
					    resolvedGraalPyVersion: graalPyTagToVersion(foundRelease.tag_name)
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export function toGraalPyPlatform(platform: string) {
 | 
				
			||||||
 | 
					  switch (platform) {
 | 
				
			||||||
 | 
					    case 'win32':
 | 
				
			||||||
 | 
					      return 'windows';
 | 
				
			||||||
 | 
					    case 'darwin':
 | 
				
			||||||
 | 
					      return 'macos';
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  return platform;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export function toGraalPyArchitecture(architecture: string) {
 | 
				
			||||||
 | 
					  switch (architecture) {
 | 
				
			||||||
 | 
					    case 'x64':
 | 
				
			||||||
 | 
					      return 'amd64';
 | 
				
			||||||
 | 
					    case 'arm64':
 | 
				
			||||||
 | 
					      return 'aarch64';
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  return architecture;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export function findAsset(
 | 
				
			||||||
 | 
					  item: IGraalPyManifestRelease,
 | 
				
			||||||
 | 
					  architecture: string,
 | 
				
			||||||
 | 
					  platform: string
 | 
				
			||||||
 | 
					) {
 | 
				
			||||||
 | 
					  const graalpyArch = toGraalPyArchitecture(architecture);
 | 
				
			||||||
 | 
					  const graalpyPlatform = toGraalPyPlatform(platform);
 | 
				
			||||||
 | 
					  const found = item.assets.filter(
 | 
				
			||||||
 | 
					    file =>
 | 
				
			||||||
 | 
					      file.name.startsWith('graalpy') &&
 | 
				
			||||||
 | 
					      file.name.endsWith(`-${graalpyPlatform}-${graalpyArch}.tar.gz`)
 | 
				
			||||||
 | 
					  );
 | 
				
			||||||
 | 
					  /*
 | 
				
			||||||
 | 
					  In the future there could be more variants of GraalPy for a single release. Pick the shortest name, that one is the most likely to be the primary variant.
 | 
				
			||||||
 | 
					  */
 | 
				
			||||||
 | 
					  found.sort((f1, f2) => f1.name.length - f2.name.length);
 | 
				
			||||||
 | 
					  return found[0];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -13,7 +13,8 @@ import {
 | 
				
			|||||||
  IPyPyManifestRelease,
 | 
					  IPyPyManifestRelease,
 | 
				
			||||||
  createSymlinkInFolder,
 | 
					  createSymlinkInFolder,
 | 
				
			||||||
  isNightlyKeyword,
 | 
					  isNightlyKeyword,
 | 
				
			||||||
  writeExactPyPyVersionFile
 | 
					  writeExactPyPyVersionFile,
 | 
				
			||||||
 | 
					  getBinaryDirectory
 | 
				
			||||||
} from './utils';
 | 
					} from './utils';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export async function installPyPy(
 | 
					export async function installPyPy(
 | 
				
			||||||
@@ -94,7 +95,7 @@ export async function installPyPy(
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    writeExactPyPyVersionFile(installDir, resolvedPyPyVersion);
 | 
					    writeExactPyPyVersionFile(installDir, resolvedPyPyVersion);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const binaryPath = getPyPyBinaryPath(installDir);
 | 
					    const binaryPath = getBinaryDirectory(installDir);
 | 
				
			||||||
    await createPyPySymlink(binaryPath, resolvedPythonVersion);
 | 
					    await createPyPySymlink(binaryPath, resolvedPythonVersion);
 | 
				
			||||||
    await installPip(binaryPath);
 | 
					    await installPip(binaryPath);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -237,15 +238,6 @@ export function findRelease(
 | 
				
			|||||||
  };
 | 
					  };
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/** Get PyPy binary location from the tool of installation directory
 | 
					 | 
				
			||||||
 *  - On Linux and macOS, the Python interpreter is in 'bin'.
 | 
					 | 
				
			||||||
 *  - On Windows, it is in the installation root.
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
export function getPyPyBinaryPath(installDir: string) {
 | 
					 | 
				
			||||||
  const _binDir = path.join(installDir, 'bin');
 | 
					 | 
				
			||||||
  return IS_WINDOWS ? installDir : _binDir;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export function pypyVersionToSemantic(versionSpec: string) {
 | 
					export function pypyVersionToSemantic(versionSpec: string) {
 | 
				
			||||||
  const prereleaseVersion = /(\d+\.\d+\.\d+)((?:a|b|rc))(\d*)/g;
 | 
					  const prereleaseVersion = /(\d+\.\d+\.\d+)((?:a|b|rc))(\d*)/g;
 | 
				
			||||||
  return versionSpec.replace(prereleaseVersion, '$1-$2.$3');
 | 
					  return versionSpec.replace(prereleaseVersion, '$1-$2.$3');
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,7 @@
 | 
				
			|||||||
import * as core from '@actions/core';
 | 
					import * as core from '@actions/core';
 | 
				
			||||||
import * as finder from './find-python';
 | 
					import * as finder from './find-python';
 | 
				
			||||||
import * as finderPyPy from './find-pypy';
 | 
					import * as finderPyPy from './find-pypy';
 | 
				
			||||||
 | 
					import * as finderGraalPy from './find-graalpy';
 | 
				
			||||||
import * as path from 'path';
 | 
					import * as path from 'path';
 | 
				
			||||||
import * as os from 'os';
 | 
					import * as os from 'os';
 | 
				
			||||||
import fs from 'fs';
 | 
					import fs from 'fs';
 | 
				
			||||||
@@ -17,6 +18,10 @@ function isPyPyVersion(versionSpec: string) {
 | 
				
			|||||||
  return versionSpec.startsWith('pypy');
 | 
					  return versionSpec.startsWith('pypy');
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function isGraalPyVersion(versionSpec: string) {
 | 
				
			||||||
 | 
					  return versionSpec.startsWith('graalpy');
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
async function cacheDependencies(cache: string, pythonVersion: string) {
 | 
					async function cacheDependencies(cache: string, pythonVersion: string) {
 | 
				
			||||||
  const cacheDependencyPath =
 | 
					  const cacheDependencyPath =
 | 
				
			||||||
    core.getInput('cache-dependency-path') || undefined;
 | 
					    core.getInput('cache-dependency-path') || undefined;
 | 
				
			||||||
@@ -106,10 +111,20 @@ async function run() {
 | 
				
			|||||||
          core.info(
 | 
					          core.info(
 | 
				
			||||||
            `Successfully set up PyPy ${installed.resolvedPyPyVersion} with Python (${installed.resolvedPythonVersion})`
 | 
					            `Successfully set up PyPy ${installed.resolvedPyPyVersion} with Python (${installed.resolvedPythonVersion})`
 | 
				
			||||||
          );
 | 
					          );
 | 
				
			||||||
 | 
					        } else if (isGraalPyVersion(version)) {
 | 
				
			||||||
 | 
					          const installed = await finderGraalPy.findGraalPyVersion(
 | 
				
			||||||
 | 
					            version,
 | 
				
			||||||
 | 
					            arch,
 | 
				
			||||||
 | 
					            updateEnvironment,
 | 
				
			||||||
 | 
					            checkLatest,
 | 
				
			||||||
 | 
					            allowPreReleases
 | 
				
			||||||
 | 
					          );
 | 
				
			||||||
 | 
					          pythonVersion = `${installed}`;
 | 
				
			||||||
 | 
					          core.info(`Successfully set up GraalPy ${installed}`);
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
          if (version.startsWith('2')) {
 | 
					          if (version.startsWith('2')) {
 | 
				
			||||||
            core.warning(
 | 
					            core.warning(
 | 
				
			||||||
              'The support for python 2.7 will be removed on June 19. Related issue: https://github.com/actions/setup-python/issues/672'
 | 
					              'The support for python 2.7 was removed on June 19, 2023. Related issue: https://github.com/actions/setup-python/issues/672'
 | 
				
			||||||
            );
 | 
					            );
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
          const installed = await finder.useCpythonVersion(
 | 
					          const installed = await finder.useCpythonVersion(
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										46
									
								
								src/utils.ts
									
									
									
									
									
								
							
							
						
						
									
										46
									
								
								src/utils.ts
									
									
									
									
									
								
							@@ -6,6 +6,7 @@ import * as path from 'path';
 | 
				
			|||||||
import * as semver from 'semver';
 | 
					import * as semver from 'semver';
 | 
				
			||||||
import * as toml from '@iarna/toml';
 | 
					import * as toml from '@iarna/toml';
 | 
				
			||||||
import * as exec from '@actions/exec';
 | 
					import * as exec from '@actions/exec';
 | 
				
			||||||
 | 
					import * as ifm from '@actions/http-client/interfaces';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export const IS_WINDOWS = process.platform === 'win32';
 | 
					export const IS_WINDOWS = process.platform === 'win32';
 | 
				
			||||||
export const IS_LINUX = process.platform === 'linux';
 | 
					export const IS_LINUX = process.platform === 'linux';
 | 
				
			||||||
@@ -29,6 +30,16 @@ export interface IPyPyManifestRelease {
 | 
				
			|||||||
  files: IPyPyManifestAsset[];
 | 
					  files: IPyPyManifestAsset[];
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export interface IGraalPyManifestAsset {
 | 
				
			||||||
 | 
					  name: string;
 | 
				
			||||||
 | 
					  browser_download_url: string;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export interface IGraalPyManifestRelease {
 | 
				
			||||||
 | 
					  tag_name: string;
 | 
				
			||||||
 | 
					  assets: IGraalPyManifestAsset[];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/** create Symlinks for downloaded PyPy
 | 
					/** create Symlinks for downloaded PyPy
 | 
				
			||||||
 *  It should be executed only for downloaded versions in runtime, because
 | 
					 *  It should be executed only for downloaded versions in runtime, because
 | 
				
			||||||
 *  toolcache versions have this setup.
 | 
					 *  toolcache versions have this setup.
 | 
				
			||||||
@@ -90,7 +101,7 @@ export function writeExactPyPyVersionFile(
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Python version should be specified explicitly like "x.y" (2.7, 3.6, 3.7)
 | 
					 * Python version should be specified explicitly like "x.y" (3.10, 3.11, etc)
 | 
				
			||||||
 * "3.x" or "3" are not supported
 | 
					 * "3.x" or "3" are not supported
 | 
				
			||||||
 * because it could cause ambiguity when both PyPy version and Python version are not precise
 | 
					 * because it could cause ambiguity when both PyPy version and Python version are not precise
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
@@ -251,7 +262,7 @@ export function getVersionInputFromTomlFile(versionFile: string): string[] {
 | 
				
			|||||||
 */
 | 
					 */
 | 
				
			||||||
export function getVersionInputFromPlainFile(versionFile: string): string[] {
 | 
					export function getVersionInputFromPlainFile(versionFile: string): string[] {
 | 
				
			||||||
  core.debug(`Trying to resolve version form ${versionFile}`);
 | 
					  core.debug(`Trying to resolve version form ${versionFile}`);
 | 
				
			||||||
  const version = fs.readFileSync(versionFile, 'utf8');
 | 
					  const version = fs.readFileSync(versionFile, 'utf8').trim();
 | 
				
			||||||
  core.info(`Resolved ${versionFile} as ${version}`);
 | 
					  core.info(`Resolved ${versionFile} as ${version}`);
 | 
				
			||||||
  return [version];
 | 
					  return [version];
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -266,3 +277,34 @@ export function getVersionInputFromFile(versionFile: string): string[] {
 | 
				
			|||||||
    return getVersionInputFromPlainFile(versionFile);
 | 
					    return getVersionInputFromPlainFile(versionFile);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Get the directory containing interpreter binary from installation directory of PyPy or GraalPy
 | 
				
			||||||
 | 
					 *  - On Linux and macOS, the Python interpreter is in 'bin'.
 | 
				
			||||||
 | 
					 *  - On Windows, it is in the installation root.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					export function getBinaryDirectory(installDir: string) {
 | 
				
			||||||
 | 
					  return IS_WINDOWS ? installDir : path.join(installDir, 'bin');
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Extract next page URL from a HTTP response "link" header. Such headers are used in GitHub APIs.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					export function getNextPageUrl<T>(response: ifm.ITypedResponse<T>) {
 | 
				
			||||||
 | 
					  const responseHeaders = <ifm.IHeaders>response.headers;
 | 
				
			||||||
 | 
					  const linkHeader = responseHeaders.link;
 | 
				
			||||||
 | 
					  if (typeof linkHeader === 'string') {
 | 
				
			||||||
 | 
					    for (const link of linkHeader.split(/\s*,\s*/)) {
 | 
				
			||||||
 | 
					      const match = link.match(/<([^>]+)>(.*)/);
 | 
				
			||||||
 | 
					      if (match) {
 | 
				
			||||||
 | 
					        const url = match[1];
 | 
				
			||||||
 | 
					        for (const param of match[2].split(/\s*;\s*/)) {
 | 
				
			||||||
 | 
					          if (param.match(/rel="?next"?/)) {
 | 
				
			||||||
 | 
					            return url;
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user