mirror of
				https://gitea.com/actions/setup-node.git
				synced 2025-10-31 07:47:14 +00:00 
			
		
		
		
	Compare commits
	
		
			44 Commits
		
	
	
		
			malob/upda
			...
			v2.5.1
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 1f8c6b94b2 | ||
|   | 9a74eb4e64 | ||
|   | 04c56d2f95 | ||
|   | d08cf22211 | ||
|   | 360ab8b75b | ||
|   | fd4bd829f2 | ||
|   | a4b8ed2f4e | ||
|   | 270253e841 | ||
|   | d1178716db | ||
|   | 041bafb672 | ||
|   | 996306e892 | ||
|   | 85d4122530 | ||
|   | 928244ce45 | ||
|   | 25316bbc1f | ||
|   | 76a4cff9ae | ||
|   | a869e7cc2d | ||
|   | a0cdab1110 | ||
|   | 4d0182af5e | ||
|   | 896ee80599 | ||
|   | d21ecc7c5b | ||
|   | d6e3b5539e | ||
|   | db716f881a | ||
|   | c24389f79e | ||
|   | 004fb83876 | ||
|   | 180b77fed2 | ||
|   | 9f31dbbbc4 | ||
|   | aa759c6c94 | ||
|   | 0ae03de2b7 | ||
|   | 4bc87b8e10 | ||
|   | b96348a4e9 | ||
|   | 3af302a4f2 | ||
|   | f452812b44 | ||
|   | f43d8a1f27 | ||
|   | e93556ca66 | ||
|   | 0453e516eb | ||
|   | 399982b368 | ||
|   | d278e78bdd | ||
|   | fdbc93ea6e | ||
|   | f24e78e0f6 | ||
|   | 3c1fbef7d3 | ||
|   | 5aa72c249a | ||
|   | d9aab2aba4 | ||
|   | 162ddf7c40 | ||
|   | 38d90ce44d | 
							
								
								
									
										38
									
								
								.github/ISSUE_TEMPLATE/bug_report.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								.github/ISSUE_TEMPLATE/bug_report.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,38 @@ | |||||||
|  | --- | ||||||
|  | name: Bug report | ||||||
|  | about: Create a bug report | ||||||
|  | title: '' | ||||||
|  | labels: bug, needs triage | ||||||
|  | assignees: '' | ||||||
|  |  | ||||||
|  | --- | ||||||
|  |  | ||||||
|  | <!--- Please direct any generic questions related to actions to our support community forum at https://github.community/c/code-to-cloud/github-actions/41 ---> | ||||||
|  | <!--- Before opening up a new bug report, please make sure to check for similar existing issues --> | ||||||
|  |  | ||||||
|  | **Description:** | ||||||
|  | A clear and concise description of what the bug is. | ||||||
|  |  | ||||||
|  | **Action version:** | ||||||
|  | Specify the action version | ||||||
|  |  | ||||||
|  | **Platform:** | ||||||
|  | - [ ] Ubuntu | ||||||
|  | - [ ] macOS | ||||||
|  | - [ ] Windows | ||||||
|  |  | ||||||
|  | **Runner type:** | ||||||
|  | - [ ] Hosted | ||||||
|  | - [ ] Self-hosted | ||||||
|  |  | ||||||
|  | **Tools version:** | ||||||
|  | <!--- Please specify versions of node and package manager (npm, yarn, pnpm and etc)--> | ||||||
|  |  | ||||||
|  | **Repro steps:**   | ||||||
|  | A description with steps to reproduce the issue. If you have a public example or repo to share, please provide the link. | ||||||
|  |  | ||||||
|  | **Expected behavior:** | ||||||
|  | A description of what you expected to happen. | ||||||
|  |  | ||||||
|  | **Actual behavior:** | ||||||
|  | A description of what is actually happening. | ||||||
							
								
								
									
										1
									
								
								.github/ISSUE_TEMPLATE/config.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								.github/ISSUE_TEMPLATE/config.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | |||||||
|  | blank_issues_enabled: false | ||||||
							
								
								
									
										18
									
								
								.github/ISSUE_TEMPLATE/feature_request.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								.github/ISSUE_TEMPLATE/feature_request.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | |||||||
|  | --- | ||||||
|  | name: Feature request | ||||||
|  | about: Suggest an idea for this project | ||||||
|  | title: '' | ||||||
|  | labels: feature request, needs triage | ||||||
|  | assignees: '' | ||||||
|  | --- | ||||||
|  | <!--- Please direct any generic questions related to actions to our support community forum at https://github.community/c/code-to-cloud/github-actions/41 ---> | ||||||
|  | <!--- Before opening up a new feature request, please make sure to check for similar existing issues and pull requests --> | ||||||
|  |  | ||||||
|  | **Description:** | ||||||
|  | Describe your proposal. | ||||||
|  |  | ||||||
|  | **Justification:** | ||||||
|  | Justification or a use case for your proposal. | ||||||
|  |  | ||||||
|  | **Are you willing to submit a PR?** | ||||||
|  | <!--- We accept contributions! --> | ||||||
							
								
								
									
										9
									
								
								.github/pull_request_template.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								.github/pull_request_template.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | |||||||
|  | **Description:** | ||||||
|  | Describe your changes. | ||||||
|  |  | ||||||
|  | **Related issue:** | ||||||
|  | Add link to the related issue. | ||||||
|  |  | ||||||
|  | **Check list:** | ||||||
|  | - [ ] Mark if documentation changes are required. | ||||||
|  | - [ ] Mark if tests were added or updated to cover the changes. | ||||||
							
								
								
									
										3
									
								
								.github/workflows/build-test.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								.github/workflows/build-test.yml
									
									
									
									
										vendored
									
									
								
							| @@ -27,6 +27,3 @@ jobs: | |||||||
|       - run: npm run build |       - run: npm run build | ||||||
|       - run: npm run format-check |       - run: npm run format-check | ||||||
|       - run: npm test |       - run: npm test | ||||||
|       - name: Verify no unstaged changes |  | ||||||
|         if: runner.os != 'windows' |  | ||||||
|         run: __tests__/verify-no-unstaged-changes.sh |  | ||||||
|   | |||||||
							
								
								
									
										51
									
								
								.github/workflows/check-dist.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								.github/workflows/check-dist.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,51 @@ | |||||||
|  | # `dist/index.js` is a special file in Actions. | ||||||
|  | # When you reference an action with `uses:` in a workflow, | ||||||
|  | # `index.js` is the code that will run. | ||||||
|  | # For our project, we generate this file through a build process from other source files. | ||||||
|  | # We need to make sure the checked-in `index.js` actually matches what we expect it to be. | ||||||
|  | name: Check dist/ | ||||||
|  |  | ||||||
|  | on: | ||||||
|  |   push: | ||||||
|  |     branches: | ||||||
|  |       - main | ||||||
|  |     paths-ignore: | ||||||
|  |       - '**.md' | ||||||
|  |   pull_request: | ||||||
|  |     paths-ignore: | ||||||
|  |       - '**.md' | ||||||
|  |   workflow_dispatch: | ||||||
|  |  | ||||||
|  | jobs: | ||||||
|  |   check-dist: | ||||||
|  |     runs-on: ubuntu-latest | ||||||
|  |  | ||||||
|  |     steps: | ||||||
|  |       - uses: actions/checkout@v2 | ||||||
|  |  | ||||||
|  |       - name: Set Node.js 12.x | ||||||
|  |         uses: actions/setup-node@v1 | ||||||
|  |         with: | ||||||
|  |           node-version: 12.x | ||||||
|  |  | ||||||
|  |       - name: Install dependencies | ||||||
|  |         run: npm ci | ||||||
|  |  | ||||||
|  |       - name: Rebuild the dist/ directory | ||||||
|  |         run: npm run build | ||||||
|  |  | ||||||
|  |       - name: Compare the expected and actual dist/ directories | ||||||
|  |         run: | | ||||||
|  |           if [ "$(git diff --ignore-space-at-eol dist/ | wc -l)" -gt "0" ]; then | ||||||
|  |             echo "Detected uncommitted changes after build.  See status below:" | ||||||
|  |             git diff | ||||||
|  |             exit 1 | ||||||
|  |           fi | ||||||
|  |         id: diff | ||||||
|  |  | ||||||
|  |       # If index.js was different than expected, upload the expected version as an artifact | ||||||
|  |       - uses: actions/upload-artifact@v2 | ||||||
|  |         if: ${{ failure() && steps.diff.conclusion == 'failure' }} | ||||||
|  |         with: | ||||||
|  |           name: dist | ||||||
|  |           path: dist/ | ||||||
							
								
								
									
										35
									
								
								.github/workflows/e2e-cache.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										35
									
								
								.github/workflows/e2e-cache.yml
									
									
									
									
										vendored
									
									
								
							| @@ -35,6 +35,39 @@ jobs: | |||||||
|         run: __tests__/verify-node.sh "${{ matrix.node-version }}" |         run: __tests__/verify-node.sh "${{ matrix.node-version }}" | ||||||
|         shell: bash |         shell: bash | ||||||
|  |  | ||||||
|  |   node-pnpm-depencies-caching: | ||||||
|  |     name: Test pnpm (Node ${{ matrix.node-version}}, ${{ matrix.os }}) | ||||||
|  |     runs-on: ${{ matrix.os }} | ||||||
|  |     strategy: | ||||||
|  |       fail-fast: false | ||||||
|  |       matrix: | ||||||
|  |         os: [ubuntu-latest, windows-latest, macos-latest] | ||||||
|  |         node-version: [12, 14, 16] | ||||||
|  |     steps: | ||||||
|  |       - uses: actions/checkout@v2 | ||||||
|  |       - name: Install pnpm | ||||||
|  |         uses: pnpm/action-setup@v2 | ||||||
|  |         with: | ||||||
|  |           version: 6.10.0 | ||||||
|  |       - name: Generate pnpm file | ||||||
|  |         run: pnpm install | ||||||
|  |       - name: Remove dependencies | ||||||
|  |         shell: pwsh | ||||||
|  |         run: Remove-Item node_modules -Force -Recurse | ||||||
|  |       - name: Clean global cache | ||||||
|  |         run: rm -rf ~/.pnpm-store | ||||||
|  |         shell: bash | ||||||
|  |       - name: Setup Node | ||||||
|  |         uses: ./ | ||||||
|  |         with: | ||||||
|  |           node-version: ${{ matrix.node-version }} | ||||||
|  |           cache: 'pnpm' | ||||||
|  |       - name: Install dependencies | ||||||
|  |         run: pnpm install | ||||||
|  |       - name: Verify node and pnpm | ||||||
|  |         run: __tests__/verify-node.sh "${{ matrix.node-version }}" | ||||||
|  |         shell: bash | ||||||
|  |  | ||||||
|   node-yarn1-depencies-caching: |   node-yarn1-depencies-caching: | ||||||
|     name: Test yarn 1 (Node ${{ matrix.node-version}}, ${{ matrix.os }}) |     name: Test yarn 1 (Node ${{ matrix.node-version}}, ${{ matrix.os }}) | ||||||
|     runs-on: ${{ matrix.os }} |     runs-on: ${{ matrix.os }} | ||||||
| @@ -68,6 +101,8 @@ jobs: | |||||||
|   node-yarn2-depencies-caching: |   node-yarn2-depencies-caching: | ||||||
|     name: Test yarn 2 (Node ${{ matrix.node-version}}, ${{ matrix.os }}) |     name: Test yarn 2 (Node ${{ matrix.node-version}}, ${{ matrix.os }}) | ||||||
|     runs-on: ${{ matrix.os }} |     runs-on: ${{ matrix.os }} | ||||||
|  |     env: | ||||||
|  |       YARN_ENABLE_IMMUTABLE_INSTALLS: false | ||||||
|     strategy: |     strategy: | ||||||
|       fail-fast: false |       fail-fast: false | ||||||
|       matrix: |       matrix: | ||||||
|   | |||||||
							
								
								
									
										10
									
								
								.github/workflows/licensed.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										10
									
								
								.github/workflows/licensed.yml
									
									
									
									
										vendored
									
									
								
							| @@ -1,8 +1,12 @@ | |||||||
| name: Licensed | name: Licensed | ||||||
|  |  | ||||||
| on: | on: | ||||||
|   push: {branches: main} |   push: | ||||||
|   pull_request: {branches: main} |     branches: | ||||||
|  |       - main | ||||||
|  |   pull_request: | ||||||
|  |     branches: | ||||||
|  |       - main | ||||||
|  |  | ||||||
| jobs: | jobs: | ||||||
|   test: |   test: | ||||||
| @@ -14,7 +18,7 @@ jobs: | |||||||
|       - name: Install licensed |       - name: Install licensed | ||||||
|         run: | |         run: | | ||||||
|           cd $RUNNER_TEMP |           cd $RUNNER_TEMP | ||||||
|           curl -Lfs -o licensed.tar.gz https://github.com/github/licensed/releases/download/2.12.2/licensed-2.12.2-linux-x64.tar.gz |           curl -Lfs -o licensed.tar.gz https://github.com/github/licensed/releases/download/3.3.1/licensed-3.3.1-linux-x64.tar.gz | ||||||
|           sudo tar -xzf licensed.tar.gz |           sudo tar -xzf licensed.tar.gz | ||||||
|           sudo mv licensed /usr/local/bin/licensed |           sudo mv licensed /usr/local/bin/licensed | ||||||
|       - run: licensed status |       - run: licensed status | ||||||
							
								
								
									
										15
									
								
								.github/workflows/versions.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										15
									
								
								.github/workflows/versions.yml
									
									
									
									
										vendored
									
									
								
							| @@ -78,6 +78,21 @@ jobs: | |||||||
|         run: __tests__/verify-node.sh "${{ matrix.node-version }}" |         run: __tests__/verify-node.sh "${{ matrix.node-version }}" | ||||||
|         shell: bash |         shell: bash | ||||||
|  |  | ||||||
|  |   version-file: | ||||||
|  |     runs-on: ${{ matrix.os }} | ||||||
|  |     strategy: | ||||||
|  |       fail-fast: false | ||||||
|  |       matrix: | ||||||
|  |         os: [ubuntu-latest, windows-latest, macos-latest] | ||||||
|  |     steps: | ||||||
|  |       - uses: actions/checkout@v2 | ||||||
|  |       - name: Setup node from node version file | ||||||
|  |         uses: ./ | ||||||
|  |         with: | ||||||
|  |           node-version-file: '__tests__/data/.nvmrc' | ||||||
|  |       - name: Verify node | ||||||
|  |         run: __tests__/verify-node.sh 14 | ||||||
|  |  | ||||||
|   node-dist: |   node-dist: | ||||||
|     runs-on: ${{ matrix.os }} |     runs-on: ${{ matrix.os }} | ||||||
|     strategy: |     strategy: | ||||||
|   | |||||||
							
								
								
									
										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: 1.0.7 | version: 1.0.8 | ||||||
| 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 | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| --- | --- | ||||||
| name: "@actions/core" | name: "@actions/core" | ||||||
| version: 1.2.6 | version: 1.6.0 | ||||||
| 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 | ||||||
							
								
								
									
										32
									
								
								.licenses/npm/@actions/http-client-1.0.6.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										32
									
								
								.licenses/npm/@actions/http-client-1.0.6.dep.yml
									
									
									
										generated
									
									
									
								
							| @@ -1,32 +0,0 @@ | |||||||
| --- |  | ||||||
| name: "@actions/http-client" |  | ||||||
| version: 1.0.6 |  | ||||||
| type: npm |  | ||||||
| summary: Actions Http Client |  | ||||||
| homepage: https://github.com/actions/http-client#readme |  | ||||||
| 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: [] |  | ||||||
							
								
								
									
										4
									
								
								.licenses/npm/@azure/core-auth.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										4
									
								
								.licenses/npm/@azure/core-auth.dep.yml
									
									
									
										generated
									
									
									
								
							| @@ -1,10 +1,10 @@ | |||||||
| --- | --- | ||||||
| name: "@azure/core-auth" | name: "@azure/core-auth" | ||||||
| version: 1.3.0 | version: 1.3.2 | ||||||
| type: npm | type: npm | ||||||
| summary: Provides low-level interfaces and helper methods for authentication in Azure | summary: Provides low-level interfaces and helper methods for authentication in Azure | ||||||
|   SDK |   SDK | ||||||
| homepage: https://github.com/Azure/azure-sdk-for-js/blob/master/sdk/core/core-auth/README.md | homepage: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/core/core-auth/README.md | ||||||
| license: mit | license: mit | ||||||
| licenses: | licenses: | ||||||
| - sources: LICENSE | - sources: LICENSE | ||||||
|   | |||||||
							
								
								
									
										4
									
								
								.licenses/npm/@azure/core-http.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										4
									
								
								.licenses/npm/@azure/core-http.dep.yml
									
									
									
										generated
									
									
									
								
							| @@ -1,10 +1,10 @@ | |||||||
| --- | --- | ||||||
| name: "@azure/core-http" | name: "@azure/core-http" | ||||||
| version: 1.2.6 | version: 2.2.2 | ||||||
| type: npm | type: npm | ||||||
| summary: Isomorphic client Runtime for Typescript/node.js/browser javascript client | summary: Isomorphic client Runtime for Typescript/node.js/browser javascript client | ||||||
|   libraries generated using AutoRest |   libraries generated using AutoRest | ||||||
| homepage: https://github.com/Azure/azure-sdk-for-js/blob/master/sdk/core/core-http/README.md | homepage: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/core/core-http/README.md | ||||||
| license: mit | license: mit | ||||||
| licenses: | licenses: | ||||||
| - sources: LICENSE | - sources: LICENSE | ||||||
|   | |||||||
							
								
								
									
										7
									
								
								.licenses/npm/@azure/core-lro.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										7
									
								
								.licenses/npm/@azure/core-lro.dep.yml
									
									
									
										generated
									
									
									
								
							| @@ -1,9 +1,10 @@ | |||||||
| --- | --- | ||||||
| name: "@azure/core-lro" | name: "@azure/core-lro" | ||||||
| version: 1.0.5 | version: 2.2.1 | ||||||
| type: npm | type: npm | ||||||
| summary: LRO Polling strtegy for the Azure SDK in TypeScript | summary: Isomorphic client library for supporting long-running operations in node.js | ||||||
| homepage: https://github.com/Azure/azure-sdk-for-js/blob/master/sdk/core/core-lro/README.md |   and browser. | ||||||
|  | homepage: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/core/core-lro/README.md | ||||||
| license: mit | license: mit | ||||||
| licenses: | licenses: | ||||||
| - sources: LICENSE | - sources: LICENSE | ||||||
|   | |||||||
							
								
								
									
										4
									
								
								.licenses/npm/@azure/core-paging.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										4
									
								
								.licenses/npm/@azure/core-paging.dep.yml
									
									
									
										generated
									
									
									
								
							| @@ -1,9 +1,9 @@ | |||||||
| --- | --- | ||||||
| name: "@azure/core-paging" | name: "@azure/core-paging" | ||||||
| version: 1.1.3 | version: 1.2.0 | ||||||
| type: npm | type: npm | ||||||
| summary: Core types for paging async iterable iterators | summary: Core types for paging async iterable iterators | ||||||
| homepage: https://github.com/Azure/azure-sdk-for-js/tree/master/sdk/core/core-paging/README.md | homepage: https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/core/core-paging/README.md | ||||||
| license: mit | license: mit | ||||||
| licenses: | licenses: | ||||||
| - sources: LICENSE | - sources: LICENSE | ||||||
|   | |||||||
							
								
								
									
										4
									
								
								.licenses/npm/@azure/core-tracing.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										4
									
								
								.licenses/npm/@azure/core-tracing.dep.yml
									
									
									
										generated
									
									
									
								
							| @@ -1,9 +1,9 @@ | |||||||
| --- | --- | ||||||
| name: "@azure/core-tracing" | name: "@azure/core-tracing" | ||||||
| version: 1.0.0-preview.11 | version: 1.0.0-preview.13 | ||||||
| type: npm | type: npm | ||||||
| summary: Provides low-level interfaces and helper methods for tracing in Azure SDK | summary: Provides low-level interfaces and helper methods for tracing in Azure SDK | ||||||
| homepage: https://github.com/Azure/azure-sdk-for-js/blob/master/sdk/core/core-tracing/README.md | homepage: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/core/core-tracing/README.md | ||||||
| license: mit | license: mit | ||||||
| licenses: | licenses: | ||||||
| - sources: LICENSE | - sources: LICENSE | ||||||
|   | |||||||
							
								
								
									
										4
									
								
								.licenses/npm/@azure/logger.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										4
									
								
								.licenses/npm/@azure/logger.dep.yml
									
									
									
										generated
									
									
									
								
							| @@ -1,9 +1,9 @@ | |||||||
| --- | --- | ||||||
| name: "@azure/logger" | name: "@azure/logger" | ||||||
| version: 1.0.2 | version: 1.0.3 | ||||||
| type: npm | type: npm | ||||||
| summary: Microsoft Azure SDK for JavaScript - Logger | summary: Microsoft Azure SDK for JavaScript - Logger | ||||||
| homepage: https://github.com/Azure/azure-sdk-for-js/tree/master/sdk/core/logger/README.md | homepage: https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/core/logger/README.md | ||||||
| license: mit | license: mit | ||||||
| licenses: | licenses: | ||||||
| - sources: LICENSE | - sources: LICENSE | ||||||
|   | |||||||
							
								
								
									
										2
									
								
								.licenses/npm/@azure/ms-rest-js.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								.licenses/npm/@azure/ms-rest-js.dep.yml
									
									
									
										generated
									
									
									
								
							| @@ -1,6 +1,6 @@ | |||||||
| --- | --- | ||||||
| name: "@azure/ms-rest-js" | name: "@azure/ms-rest-js" | ||||||
| version: 2.5.2 | version: 2.6.0 | ||||||
| type: npm | type: npm | ||||||
| summary: Isomorphic client Runtime for Typescript/node.js/browser javascript client | summary: Isomorphic client Runtime for Typescript/node.js/browser javascript client | ||||||
|   libraries generated using AutoRest |   libraries generated using AutoRest | ||||||
|   | |||||||
							
								
								
									
										4
									
								
								.licenses/npm/@azure/storage-blob.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										4
									
								
								.licenses/npm/@azure/storage-blob.dep.yml
									
									
									
										generated
									
									
									
								
							| @@ -1,9 +1,9 @@ | |||||||
| --- | --- | ||||||
| name: "@azure/storage-blob" | name: "@azure/storage-blob" | ||||||
| version: 12.6.0 | version: 12.8.0 | ||||||
| type: npm | type: npm | ||||||
| summary: Microsoft Azure Storage SDK for JavaScript - Blob | summary: Microsoft Azure Storage SDK for JavaScript - Blob | ||||||
| homepage: https://github.com/Azure/azure-sdk-for-js/blob/master/sdk/storage/storage-blob/ | homepage: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/storage/storage-blob/ | ||||||
| license: mit | license: mit | ||||||
| licenses: | licenses: | ||||||
| - sources: LICENSE | - sources: LICENSE | ||||||
|   | |||||||
							
								
								
									
										226
									
								
								.licenses/npm/@opencensus/web-types.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										226
									
								
								.licenses/npm/@opencensus/web-types.dep.yml
									
									
									
										generated
									
									
									
								
							| @@ -1,226 +0,0 @@ | |||||||
| --- |  | ||||||
| name: "@opencensus/web-types" |  | ||||||
| version: 0.0.7 |  | ||||||
| type: npm |  | ||||||
| summary: OpenCensus Web types is a slightly-patched copy of the `types.ts` files from |  | ||||||
|   `@opencensus/core` so that they can be easily imported in web-specific packages. |  | ||||||
| homepage: https://github.com/census-instrumentation/opencensus-web#readme |  | ||||||
| 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. |  | ||||||
| 
 |  | ||||||
|        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. |  | ||||||
| 
 |  | ||||||
|        Copyright [yyyy] [name of copyright owner] |  | ||||||
| 
 |  | ||||||
|        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. |  | ||||||
| - sources: README.md |  | ||||||
|   text: |- |  | ||||||
|     Apache 2.0 - See [LICENSE][license-url] for more information. |  | ||||||
| 
 |  | ||||||
|     [gitter-image]: https://badges.gitter.im/census-instrumentation/lobby.svg |  | ||||||
|     [gitter-url]: https://gitter.im/census-instrumentation/lobby |  | ||||||
|     [opencensus-core-url]: https://github.com/census-instrumentation/opencensus-node/tree/master/packages/opencensus-core |  | ||||||
|     [oc-web-readme-url]: https://github.com/census-instrumentation/opencensus-web/blob/master/README.md |  | ||||||
|     [license-url]: https://github.com/census-instrumentation/opencensus-web/blob/master/packages/opencensus-web-instrumentation-perf/LICENSE |  | ||||||
|     [rules-typescript-url]: https://github.com/bazelbuild/rules_typescript |  | ||||||
|     [tsickle-url]: https://github.com/angular/tsickle |  | ||||||
|     [closure-url]: https://github.com/google/closure-compiler |  | ||||||
| notices: [] |  | ||||||
							
								
								
									
										7
									
								
								.licenses/npm/@opentelemetry/api.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										7
									
								
								.licenses/npm/@opentelemetry/api.dep.yml
									
									
									
										generated
									
									
									
								
							| @@ -1,6 +1,6 @@ | |||||||
| --- | --- | ||||||
| name: "@opentelemetry/api" | name: "@opentelemetry/api" | ||||||
| version: 1.0.0-rc.0 | version: 1.0.3 | ||||||
| type: npm | type: npm | ||||||
| summary: Public API for OpenTelemetry | summary: Public API for OpenTelemetry | ||||||
| homepage: https://github.com/open-telemetry/opentelemetry-js-api#readme | homepage: https://github.com/open-telemetry/opentelemetry-js-api#readme | ||||||
| @@ -218,13 +218,12 @@ licenses: | |||||||
|     [discussions-url]: https://github.com/open-telemetry/opentelemetry-js/discussions |     [discussions-url]: https://github.com/open-telemetry/opentelemetry-js/discussions | ||||||
|     [license-url]: https://github.com/open-telemetry/opentelemetry-js-api/blob/main/LICENSE |     [license-url]: https://github.com/open-telemetry/opentelemetry-js-api/blob/main/LICENSE | ||||||
|     [license-image]: https://img.shields.io/badge/license-Apache_2.0-green.svg?style=flat |     [license-image]: https://img.shields.io/badge/license-Apache_2.0-green.svg?style=flat | ||||||
|     [dependencies-image]: https://david-dm.org/open-telemetry/opentelemetry-js-api/status.svg |     [dependencies-image]: https://status.david-dm.org/gh/open-telemetry/opentelemetry-js-api.svg | ||||||
|     [dependencies-url]: https://david-dm.org/open-telemetry/opentelemetry-js-api |     [dependencies-url]: https://david-dm.org/open-telemetry/opentelemetry-js-api | ||||||
|     [devDependencies-image]: https://david-dm.org/open-telemetry/opentelemetry-js-api/dev-status.svg |     [devDependencies-image]: https://status.david-dm.org/gh/open-telemetry/opentelemetry-js-api.svg?type=dev | ||||||
|     [devDependencies-url]: https://david-dm.org/open-telemetry/opentelemetry-js-api?type=dev |     [devDependencies-url]: https://david-dm.org/open-telemetry/opentelemetry-js-api?type=dev | ||||||
|     [npm-url]: https://www.npmjs.com/package/@opentelemetry/api |     [npm-url]: https://www.npmjs.com/package/@opentelemetry/api | ||||||
|     [npm-img]: https://badge.fury.io/js/%40opentelemetry%2Fapi.svg |     [npm-img]: https://badge.fury.io/js/%40opentelemetry%2Fapi.svg | ||||||
| 
 |  | ||||||
|     [docs-tracing]: https://github.com/open-telemetry/opentelemetry-js-api/blob/main/docs/tracing.md |     [docs-tracing]: https://github.com/open-telemetry/opentelemetry-js-api/blob/main/docs/tracing.md | ||||||
|     [docs-sdk-registration]: https://github.com/open-telemetry/opentelemetry-js-api/blob/main/docs/sdk-registration.md |     [docs-sdk-registration]: https://github.com/open-telemetry/opentelemetry-js-api/blob/main/docs/sdk-registration.md | ||||||
| notices: [] | notices: [] | ||||||
|   | |||||||
							
								
								
									
										4
									
								
								.licenses/npm/@types/node-fetch.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										4
									
								
								.licenses/npm/@types/node-fetch.dep.yml
									
									
									
										generated
									
									
									
								
							| @@ -1,9 +1,9 @@ | |||||||
| --- | --- | ||||||
| name: "@types/node-fetch" | name: "@types/node-fetch" | ||||||
| version: 2.5.10 | version: 2.5.12 | ||||||
| type: npm | type: npm | ||||||
| summary: TypeScript definitions for node-fetch | summary: TypeScript definitions for node-fetch | ||||||
| homepage: https://github.com/DefinitelyTyped/DefinitelyTyped#readme | homepage: https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node-fetch | ||||||
| license: mit | license: mit | ||||||
| licenses: | licenses: | ||||||
| - sources: LICENSE | - sources: LICENSE | ||||||
|   | |||||||
							
								
								
									
										42
									
								
								.licenses/npm/@types/tunnel.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										42
									
								
								.licenses/npm/@types/tunnel.dep.yml
									
									
									
										generated
									
									
									
								
							| @@ -1,26 +1,32 @@ | |||||||
| --- | --- | ||||||
| name: "@types/tunnel" | name: "@types/tunnel" | ||||||
| version: 0.0.1 | version: 0.0.3 | ||||||
| type: npm | type: npm | ||||||
| summary: TypeScript definitions for tunnel | summary: TypeScript definitions for tunnel | ||||||
| homepage: https://github.com/DefinitelyTyped/DefinitelyTyped#readme | homepage: https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/tunnel | ||||||
| license: mit | license: mit | ||||||
| licenses: | licenses: | ||||||
| - sources: LICENSE | - sources: LICENSE | ||||||
|   text: "    MIT License\r\n\r\n    Copyright (c) Microsoft Corporation. All rights |   text: |2 | ||||||
|     reserved.\r\n\r\n    Permission is hereby granted, free of charge, to any person |         MIT License | ||||||
|     obtaining a copy\r\n    of this software and associated documentation files (the | 
 | ||||||
|     \"Software\"), to deal\r\n    in the Software without restriction, including without |         Copyright (c) Microsoft Corporation. | ||||||
|     limitation the rights\r\n    to use, copy, modify, merge, publish, distribute, | 
 | ||||||
|     sublicense, and/or sell\r\n    copies of the Software, and to permit persons to |         Permission is hereby granted, free of charge, to any person obtaining a copy | ||||||
|     whom the Software is\r\n    furnished to do so, subject to the following conditions:\r\n\r\n |         of this software and associated documentation files (the "Software"), to deal | ||||||
|     \   The above copyright notice and this permission notice shall be included in |         in the Software without restriction, including without limitation the rights | ||||||
|     all\r\n    copies or substantial portions of the Software.\r\n\r\n    THE SOFTWARE |         to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||||
|     IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n    IMPLIED, |         copies of the Software, and to permit persons to whom the Software is | ||||||
|     INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n    FITNESS |         furnished to do so, subject to the following conditions: | ||||||
|     FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n    AUTHORS | 
 | ||||||
|     OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n    LIABILITY, |         The above copyright notice and this permission notice shall be included in all | ||||||
|     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n    OUT |         copies or substantial portions of the Software. | ||||||
|     OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r\n | 
 | ||||||
|     \   SOFTWARE\r\n" |         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: [] | notices: [] | ||||||
|   | |||||||
							
								
								
									
										33
									
								
								.licenses/npm/form-data-4.0.0.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								.licenses/npm/form-data-4.0.0.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,33 @@ | |||||||
|  | --- | ||||||
|  | name: form-data | ||||||
|  | version: 4.0.0 | ||||||
|  | type: npm | ||||||
|  | summary: A library to create readable "multipart/form-data" streams. Can be used to | ||||||
|  |   submit forms and file uploads to other web applications. | ||||||
|  | homepage: https://github.com/form-data/form-data#readme | ||||||
|  | license: mit | ||||||
|  | licenses: | ||||||
|  | - sources: License | ||||||
|  |   text: | | ||||||
|  |     Copyright (c) 2012 Felix Geisendörfer (felix@debuggable.com) and contributors | ||||||
|  | 
 | ||||||
|  |      Permission is hereby granted, free of charge, to any person obtaining a copy | ||||||
|  |      of this software and associated documentation files (the "Software"), to deal | ||||||
|  |      in the Software without restriction, including without limitation the rights | ||||||
|  |      to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||||
|  |      copies of the Software, and to permit persons to whom the Software is | ||||||
|  |      furnished to do so, subject to the following conditions: | ||||||
|  | 
 | ||||||
|  |      The above copyright notice and this permission notice shall be included in | ||||||
|  |      all copies or substantial portions of the Software. | ||||||
|  | 
 | ||||||
|  |      THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  |      IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  |      FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||||
|  |      AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||||
|  |      LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||||
|  |      OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||||||
|  |      THE SOFTWARE. | ||||||
|  | - sources: Readme.md | ||||||
|  |   text: Form-Data is released under the [MIT](License) license. | ||||||
|  | notices: [] | ||||||
| @@ -1,6 +1,6 @@ | |||||||
| --- | --- | ||||||
| name: tslib | name: tslib | ||||||
| version: 2.3.0 | version: 2.3.1 | ||||||
| type: npm | type: npm | ||||||
| summary: Runtime library for TypeScript helper functions | summary: Runtime library for TypeScript helper functions | ||||||
| homepage: https://www.typescriptlang.org/ | homepage: https://www.typescriptlang.org/ | ||||||
							
								
								
									
										36
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										36
									
								
								README.md
									
									
									
									
									
								
							| @@ -7,7 +7,7 @@ | |||||||
| This action provides the following functionality for GitHub Actions users: | This action provides the following functionality for GitHub Actions users: | ||||||
|  |  | ||||||
| - Optionally downloading and caching distribution of the requested Node.js version, and adding it to the PATH | - Optionally downloading and caching distribution of the requested Node.js version, and adding it to the PATH | ||||||
| - Optionally caching npm/yarn dependencies | - Optionally caching npm/yarn/pnpm dependencies | ||||||
| - Registering problem matchers for error output | - Registering problem matchers for error output | ||||||
| - Configuring authentication for GPR or npm | - Configuring authentication for GPR or npm | ||||||
|  |  | ||||||
| @@ -39,9 +39,13 @@ major versions: `12`, `14`, `16` | |||||||
| more specific versions: `10.15`, `14.2.0`, `16.3.0`   | more specific versions: `10.15`, `14.2.0`, `16.3.0`   | ||||||
| nvm lts syntax: `lts/erbium`, `lts/fermium`, `lts/*`   | nvm lts syntax: `lts/erbium`, `lts/fermium`, `lts/*`   | ||||||
|  |  | ||||||
| ### Caching packages dependencies | ## Caching packages dependencies | ||||||
|  |  | ||||||
| The action has a built-in functionality for caching and restoring npm/yarn dependencies. Supported package managers are `npm`, `yarn`. The `cache` input is optional, and caching is turned off by default. | The action has a built-in functionality for caching and restoring dependencies. It uses [actions/cache](https://github.com/actions/cache) under hood for caching dependencies but requires less configuration settings. Supported package managers are `npm`, `yarn`, `pnpm` (v6.10+). The `cache` input is optional, and caching is turned off by default. | ||||||
|  |  | ||||||
|  | The action defaults to search for the dependency file (`package-lock.json` or `yarn.lock`) in the repository root, and uses its hash as a part of the cache key. Use `cache-dependency-path` for cases when multiple dependency files are used, or they are located in different subdirectories. | ||||||
|  |  | ||||||
|  | See the examples of using cache for `yarn` / `pnpm` and  `cache-dependency-path` input in the [Advanced usage](docs/advanced-usage.md#caching-packages-dependencies) guide. | ||||||
|  |  | ||||||
| **Caching npm dependencies:** | **Caching npm dependencies:** | ||||||
| ```yaml | ```yaml | ||||||
| @@ -55,22 +59,20 @@ steps: | |||||||
| - run: npm test | - run: npm test | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| **Caching yarn dependencies:** | **Caching npm dependencies in monorepos:** | ||||||
| ```yaml | ```yaml | ||||||
| steps: | steps: | ||||||
| - uses: actions/checkout@v2 | - uses: actions/checkout@v2 | ||||||
| - uses: actions/setup-node@v2 | - uses: actions/setup-node@v2 | ||||||
|   with: |   with: | ||||||
|     node-version: '14' |     node-version: '14' | ||||||
|     cache: 'yarn' |     cache: 'npm' | ||||||
| - run: yarn install |     cache-dependency-path: subdir/package-lock.json | ||||||
| - run: yarn test | - run: npm install | ||||||
|  | - run: npm test | ||||||
| ``` | ``` | ||||||
| Yarn caching handles both yarn versions: 1 or 2.  |  | ||||||
|  |  | ||||||
| > At the moment, only `lock` files in the project root are supported. | ## Matrix Testing: | ||||||
|  |  | ||||||
| ### Matrix Testing: |  | ||||||
| ```yaml | ```yaml | ||||||
| jobs: | jobs: | ||||||
|   build: |   build: | ||||||
| @@ -91,11 +93,13 @@ jobs: | |||||||
| ## Advanced usage | ## Advanced usage | ||||||
|  |  | ||||||
| 1. [Check latest version](docs/advanced-usage.md#check-latest-version) | 1. [Check latest version](docs/advanced-usage.md#check-latest-version) | ||||||
| 2. [Using different architectures](docs/advanced-usage.md#architecture) | 2. [Using a node version file](docs/advanced-usage.md#node-version-file) | ||||||
| 3. [Using multiple operating systems and architectures](docs/advanced-usage.md#multiple-operating-systems-and-architectures) | 3. [Using different architectures](docs/advanced-usage.md#architecture) | ||||||
| 4. [Publishing to npmjs and GPR with npm](docs/advanced-usage.md#publish-to-npmjs-and-gpr-with-npm) | 4. [Caching packages dependencies](docs/advanced-usage.md#caching-packages-dependencies) | ||||||
| 5. [Publishing to npmjs and GPR with yarn](docs/advanced-usage.md#publish-to-npmjs-and-gpr-with-yarn) | 5. [Using multiple operating systems and architectures](docs/advanced-usage.md#multiple-operating-systems-and-architectures) | ||||||
| 6. [Using private packages](docs/advanced-usage.md#use-private-packages) | 6. [Publishing to npmjs and GPR with npm](docs/advanced-usage.md#publish-to-npmjs-and-gpr-with-npm) | ||||||
|  | 7. [Publishing to npmjs and GPR with yarn](docs/advanced-usage.md#publish-to-npmjs-and-gpr-with-yarn) | ||||||
|  | 8. [Using private packages](docs/advanced-usage.md#use-private-packages) | ||||||
|  |  | ||||||
| # License | # License | ||||||
|  |  | ||||||
|   | |||||||
| @@ -14,14 +14,18 @@ describe('cache-restore', () => { | |||||||
|   const platform = process.env.RUNNER_OS; |   const platform = process.env.RUNNER_OS; | ||||||
|   const commonPath = '/some/random/path'; |   const commonPath = '/some/random/path'; | ||||||
|   const npmCachePath = `${commonPath}/npm`; |   const npmCachePath = `${commonPath}/npm`; | ||||||
|  |   const pnpmCachePath = `${commonPath}/pnpm`; | ||||||
|   const yarn1CachePath = `${commonPath}/yarn1`; |   const yarn1CachePath = `${commonPath}/yarn1`; | ||||||
|   const yarn2CachePath = `${commonPath}/yarn2`; |   const yarn2CachePath = `${commonPath}/yarn2`; | ||||||
|   const yarnFileHash = |   const yarnFileHash = | ||||||
|     'b8a0bae5243251f7c07dd52d1f78ff78281dfefaded700a176261b6b54fa245b'; |     'b8a0bae5243251f7c07dd52d1f78ff78281dfefaded700a176261b6b54fa245b'; | ||||||
|   const npmFileHash = |   const npmFileHash = | ||||||
|     'abf7c9b306a3149dcfba4673e2362755503bcceaab46f0e4e6fee0ade493e20c'; |     'abf7c9b306a3149dcfba4673e2362755503bcceaab46f0e4e6fee0ade493e20c'; | ||||||
|  |   const pnpmFileHash = | ||||||
|  |     '26309058093e84713f38869c50cf1cee9b08155ede874ec1b44ce3fca8c68c70'; | ||||||
|   const cachesObject = { |   const cachesObject = { | ||||||
|     [npmCachePath]: npmFileHash, |     [npmCachePath]: npmFileHash, | ||||||
|  |     [pnpmCachePath]: pnpmFileHash, | ||||||
|     [yarn1CachePath]: yarnFileHash, |     [yarn1CachePath]: yarnFileHash, | ||||||
|     [yarn2CachePath]: yarnFileHash |     [yarn2CachePath]: yarnFileHash | ||||||
|   }; |   }; | ||||||
| @@ -30,6 +34,8 @@ describe('cache-restore', () => { | |||||||
|     switch (command) { |     switch (command) { | ||||||
|       case utils.supportedPackageManagers.npm.getCacheFolderCommand: |       case utils.supportedPackageManagers.npm.getCacheFolderCommand: | ||||||
|         return npmCachePath; |         return npmCachePath; | ||||||
|  |       case utils.supportedPackageManagers.pnpm.getCacheFolderCommand: | ||||||
|  |         return pnpmCachePath; | ||||||
|       case utils.supportedPackageManagers.yarn1.getCacheFolderCommand: |       case utils.supportedPackageManagers.yarn1.getCacheFolderCommand: | ||||||
|         return yarn1CachePath; |         return yarn1CachePath; | ||||||
|       case utils.supportedPackageManagers.yarn2.getCacheFolderCommand: |       case utils.supportedPackageManagers.yarn2.getCacheFolderCommand: | ||||||
| @@ -66,6 +72,8 @@ describe('cache-restore', () => { | |||||||
|     hashFilesSpy.mockImplementation((pattern: string) => { |     hashFilesSpy.mockImplementation((pattern: string) => { | ||||||
|       if (pattern.includes('package-lock.json')) { |       if (pattern.includes('package-lock.json')) { | ||||||
|         return npmFileHash; |         return npmFileHash; | ||||||
|  |       } else if (pattern.includes('pnpm-lock.yaml')) { | ||||||
|  |         return pnpmFileHash; | ||||||
|       } else if (pattern.includes('yarn.lock')) { |       } else if (pattern.includes('yarn.lock')) { | ||||||
|         return yarnFileHash; |         return yarnFileHash; | ||||||
|       } else { |       } else { | ||||||
| @@ -97,7 +105,7 @@ describe('cache-restore', () => { | |||||||
|   }); |   }); | ||||||
|  |  | ||||||
|   describe('Validate provided package manager', () => { |   describe('Validate provided package manager', () => { | ||||||
|     it.each([['npm7'], ['npm6'], ['yarn1'], ['yarn2'], ['random']])( |     it.each([['npm7'], ['npm6'], ['pnpm6'], ['yarn1'], ['yarn2'], ['random']])( | ||||||
|       'Throw an error because %s is not supported', |       'Throw an error because %s is not supported', | ||||||
|       async packageManager => { |       async packageManager => { | ||||||
|         await expect(restoreCache(packageManager)).rejects.toThrowError( |         await expect(restoreCache(packageManager)).rejects.toThrowError( | ||||||
| @@ -111,7 +119,8 @@ describe('cache-restore', () => { | |||||||
|     it.each([ |     it.each([ | ||||||
|       ['yarn', '2.1.2', yarnFileHash], |       ['yarn', '2.1.2', yarnFileHash], | ||||||
|       ['yarn', '1.2.3', yarnFileHash], |       ['yarn', '1.2.3', yarnFileHash], | ||||||
|       ['npm', '', npmFileHash] |       ['npm', '', npmFileHash], | ||||||
|  |       ['pnpm', '', pnpmFileHash] | ||||||
|     ])( |     ])( | ||||||
|       'restored dependencies for %s', |       'restored dependencies for %s', | ||||||
|       async (packageManager, toolVersion, fileHash) => { |       async (packageManager, toolVersion, fileHash) => { | ||||||
| @@ -131,6 +140,7 @@ describe('cache-restore', () => { | |||||||
|         expect(infoSpy).not.toHaveBeenCalledWith( |         expect(infoSpy).not.toHaveBeenCalledWith( | ||||||
|           `${packageManager} cache is not found` |           `${packageManager} cache is not found` | ||||||
|         ); |         ); | ||||||
|  |         expect(setOutputSpy).toHaveBeenCalledWith('cache-hit', true); | ||||||
|       } |       } | ||||||
|     ); |     ); | ||||||
|   }); |   }); | ||||||
| @@ -139,7 +149,8 @@ describe('cache-restore', () => { | |||||||
|     it.each([ |     it.each([ | ||||||
|       ['yarn', '2.1.2', yarnFileHash], |       ['yarn', '2.1.2', yarnFileHash], | ||||||
|       ['yarn', '1.2.3', yarnFileHash], |       ['yarn', '1.2.3', yarnFileHash], | ||||||
|       ['npm', '', npmFileHash] |       ['npm', '', npmFileHash], | ||||||
|  |       ['pnpm', '', pnpmFileHash] | ||||||
|     ])( |     ])( | ||||||
|       'dependencies are changed %s', |       'dependencies are changed %s', | ||||||
|       async (packageManager, toolVersion, fileHash) => { |       async (packageManager, toolVersion, fileHash) => { | ||||||
| @@ -157,6 +168,7 @@ describe('cache-restore', () => { | |||||||
|         expect(infoSpy).toHaveBeenCalledWith( |         expect(infoSpy).toHaveBeenCalledWith( | ||||||
|           `${packageManager} cache is not found` |           `${packageManager} cache is not found` | ||||||
|         ); |         ); | ||||||
|  |         expect(setOutputSpy).toHaveBeenCalledWith('cache-hit', false); | ||||||
|       } |       } | ||||||
|     ); |     ); | ||||||
|   }); |   }); | ||||||
|   | |||||||
| @@ -1,6 +1,7 @@ | |||||||
| import * as core from '@actions/core'; | import * as core from '@actions/core'; | ||||||
| import * as cache from '@actions/cache'; | import * as cache from '@actions/cache'; | ||||||
| import * as glob from '@actions/glob'; | import * as glob from '@actions/glob'; | ||||||
|  | import fs from 'fs'; | ||||||
| import path from 'path'; | import path from 'path'; | ||||||
|  |  | ||||||
| import * as utils from '../src/cache-utils'; | import * as utils from '../src/cache-utils'; | ||||||
| @@ -12,6 +13,8 @@ describe('run', () => { | |||||||
|     'b8a0bae5243251f7c07dd52d1f78ff78281dfefaded700a176261b6b54fa245b'; |     'b8a0bae5243251f7c07dd52d1f78ff78281dfefaded700a176261b6b54fa245b'; | ||||||
|   const npmFileHash = |   const npmFileHash = | ||||||
|     'abf7c9b306a3149dcfba4673e2362755503bcceaab46f0e4e6fee0ade493e20c'; |     'abf7c9b306a3149dcfba4673e2362755503bcceaab46f0e4e6fee0ade493e20c'; | ||||||
|  |   const pnpmFileHash = | ||||||
|  |     '26309058093e84713f38869c50cf1cee9b08155ede874ec1b44ce3fca8c68c70'; | ||||||
|   const commonPath = '/some/random/path'; |   const commonPath = '/some/random/path'; | ||||||
|   process.env['GITHUB_WORKSPACE'] = path.join(__dirname, 'data'); |   process.env['GITHUB_WORKSPACE'] = path.join(__dirname, 'data'); | ||||||
|  |  | ||||||
| @@ -26,6 +29,7 @@ describe('run', () => { | |||||||
|   let saveCacheSpy: jest.SpyInstance; |   let saveCacheSpy: jest.SpyInstance; | ||||||
|   let getCommandOutputSpy: jest.SpyInstance; |   let getCommandOutputSpy: jest.SpyInstance; | ||||||
|   let hashFilesSpy: jest.SpyInstance; |   let hashFilesSpy: jest.SpyInstance; | ||||||
|  |   let existsSpy: jest.SpyInstance; | ||||||
|  |  | ||||||
|   beforeEach(() => { |   beforeEach(() => { | ||||||
|     getInputSpy = jest.spyOn(core, 'getInput'); |     getInputSpy = jest.spyOn(core, 'getInput'); | ||||||
| @@ -61,10 +65,17 @@ describe('run', () => { | |||||||
|       } |       } | ||||||
|     }); |     }); | ||||||
|  |  | ||||||
|  |     existsSpy = jest.spyOn(fs, 'existsSync'); | ||||||
|  |     existsSpy.mockImplementation(() => true); | ||||||
|  |  | ||||||
|     // utils |     // utils | ||||||
|     getCommandOutputSpy = jest.spyOn(utils, 'getCommandOutput'); |     getCommandOutputSpy = jest.spyOn(utils, 'getCommandOutput'); | ||||||
|   }); |   }); | ||||||
|  |  | ||||||
|  |   afterEach(() => { | ||||||
|  |     existsSpy.mockRestore(); | ||||||
|  |   }); | ||||||
|  |  | ||||||
|   describe('Package manager validation', () => { |   describe('Package manager validation', () => { | ||||||
|     it('Package manager is not provided, skip caching', async () => { |     it('Package manager is not provided, skip caching', async () => { | ||||||
|       inputs['cache'] = ''; |       inputs['cache'] = ''; | ||||||
| @@ -150,6 +161,23 @@ describe('run', () => { | |||||||
|       ); |       ); | ||||||
|       expect(setFailedSpy).not.toHaveBeenCalled(); |       expect(setFailedSpy).not.toHaveBeenCalled(); | ||||||
|     }); |     }); | ||||||
|  |  | ||||||
|  |     it('should not save cache for pnpm', async () => { | ||||||
|  |       inputs['cache'] = 'pnpm'; | ||||||
|  |       getStateSpy.mockImplementation(() => pnpmFileHash); | ||||||
|  |       getCommandOutputSpy.mockImplementationOnce(() => `${commonPath}/pnpm`); | ||||||
|  |  | ||||||
|  |       await run(); | ||||||
|  |  | ||||||
|  |       expect(getInputSpy).toHaveBeenCalled(); | ||||||
|  |       expect(getStateSpy).toHaveBeenCalledTimes(2); | ||||||
|  |       expect(getCommandOutputSpy).toHaveBeenCalledTimes(1); | ||||||
|  |       expect(debugSpy).toHaveBeenCalledWith(`pnpm path is ${commonPath}/pnpm`); | ||||||
|  |       expect(infoSpy).toHaveBeenCalledWith( | ||||||
|  |         `Cache hit occurred on the primary key ${pnpmFileHash}, not saving cache.` | ||||||
|  |       ); | ||||||
|  |       expect(setFailedSpy).not.toHaveBeenCalled(); | ||||||
|  |     }); | ||||||
|   }); |   }); | ||||||
|  |  | ||||||
|   describe('action saves the cache', () => { |   describe('action saves the cache', () => { | ||||||
| @@ -239,6 +267,33 @@ describe('run', () => { | |||||||
|       ); |       ); | ||||||
|       expect(setFailedSpy).not.toHaveBeenCalled(); |       expect(setFailedSpy).not.toHaveBeenCalled(); | ||||||
|     }); |     }); | ||||||
|  |  | ||||||
|  |     it('saves cache from pnpm', async () => { | ||||||
|  |       inputs['cache'] = 'pnpm'; | ||||||
|  |       getStateSpy.mockImplementation((name: string) => { | ||||||
|  |         if (name === State.CacheMatchedKey) { | ||||||
|  |           return pnpmFileHash; | ||||||
|  |         } else { | ||||||
|  |           return npmFileHash; | ||||||
|  |         } | ||||||
|  |       }); | ||||||
|  |       getCommandOutputSpy.mockImplementationOnce(() => `${commonPath}/pnpm`); | ||||||
|  |  | ||||||
|  |       await run(); | ||||||
|  |  | ||||||
|  |       expect(getInputSpy).toHaveBeenCalled(); | ||||||
|  |       expect(getStateSpy).toHaveBeenCalledTimes(2); | ||||||
|  |       expect(getCommandOutputSpy).toHaveBeenCalledTimes(1); | ||||||
|  |       expect(debugSpy).toHaveBeenCalledWith(`pnpm path is ${commonPath}/pnpm`); | ||||||
|  |       expect(infoSpy).not.toHaveBeenCalledWith( | ||||||
|  |         `Cache hit occurred on the primary key ${pnpmFileHash}, not saving cache.` | ||||||
|  |       ); | ||||||
|  |       expect(saveCacheSpy).toHaveBeenCalled(); | ||||||
|  |       expect(infoSpy).toHaveBeenLastCalledWith( | ||||||
|  |         `Cache saved with the key: ${npmFileHash}` | ||||||
|  |       ); | ||||||
|  |       expect(setFailedSpy).not.toHaveBeenCalled(); | ||||||
|  |     }); | ||||||
|   }); |   }); | ||||||
|  |  | ||||||
|   afterEach(() => { |   afterEach(() => { | ||||||
|   | |||||||
| @@ -14,6 +14,10 @@ describe('cache-utils', () => { | |||||||
|   function getPackagePath(name: string) { |   function getPackagePath(name: string) { | ||||||
|     if (name === utils.supportedPackageManagers.npm.getCacheFolderCommand) { |     if (name === utils.supportedPackageManagers.npm.getCacheFolderCommand) { | ||||||
|       return `${commonPath}/npm`; |       return `${commonPath}/npm`; | ||||||
|  |     } else if ( | ||||||
|  |       name === utils.supportedPackageManagers.pnpm.getCacheFolderCommand | ||||||
|  |     ) { | ||||||
|  |       return `${commonPath}/pnpm`; | ||||||
|     } else { |     } else { | ||||||
|       if (name === utils.supportedPackageManagers.yarn1.getCacheFolderCommand) { |       if (name === utils.supportedPackageManagers.yarn1.getCacheFolderCommand) { | ||||||
|         return `${commonPath}/yarn1`; |         return `${commonPath}/yarn1`; | ||||||
| @@ -34,6 +38,7 @@ describe('cache-utils', () => { | |||||||
|   describe('getPackageManagerInfo', () => { |   describe('getPackageManagerInfo', () => { | ||||||
|     it.each<[string, PackageManagerInfo | null]>([ |     it.each<[string, PackageManagerInfo | null]>([ | ||||||
|       ['npm', utils.supportedPackageManagers.npm], |       ['npm', utils.supportedPackageManagers.npm], | ||||||
|  |       ['pnpm', utils.supportedPackageManagers.pnpm], | ||||||
|       ['yarn', utils.supportedPackageManagers.yarn1], |       ['yarn', utils.supportedPackageManagers.yarn1], | ||||||
|       ['yarn1', null], |       ['yarn1', null], | ||||||
|       ['yarn2', null], |       ['yarn2', null], | ||||||
|   | |||||||
							
								
								
									
										1
									
								
								__tests__/data/.nvmrc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								__tests__/data/.nvmrc
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | |||||||
|  | v14 | ||||||
							
								
								
									
										360
									
								
								__tests__/data/pnpm-lock.yaml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										360
									
								
								__tests__/data/pnpm-lock.yaml
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,360 @@ | |||||||
|  | lockfileVersion: 5.3 | ||||||
|  |  | ||||||
|  | specifiers: | ||||||
|  |   express: ^4.17.1 | ||||||
|  |  | ||||||
|  | dependencies: | ||||||
|  |   express: 4.17.1 | ||||||
|  |  | ||||||
|  | packages: | ||||||
|  |  | ||||||
|  |   /accepts/1.3.7: | ||||||
|  |     resolution: {integrity: sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==} | ||||||
|  |     engines: {node: '>= 0.6'} | ||||||
|  |     dependencies: | ||||||
|  |       mime-types: 2.1.31 | ||||||
|  |       negotiator: 0.6.2 | ||||||
|  |     dev: false | ||||||
|  |  | ||||||
|  |   /array-flatten/1.1.1: | ||||||
|  |     resolution: {integrity: sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=} | ||||||
|  |     dev: false | ||||||
|  |  | ||||||
|  |   /body-parser/1.19.0: | ||||||
|  |     resolution: {integrity: sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==} | ||||||
|  |     engines: {node: '>= 0.8'} | ||||||
|  |     dependencies: | ||||||
|  |       bytes: 3.1.0 | ||||||
|  |       content-type: 1.0.4 | ||||||
|  |       debug: 2.6.9 | ||||||
|  |       depd: 1.1.2 | ||||||
|  |       http-errors: 1.7.2 | ||||||
|  |       iconv-lite: 0.4.24 | ||||||
|  |       on-finished: 2.3.0 | ||||||
|  |       qs: 6.7.0 | ||||||
|  |       raw-body: 2.4.0 | ||||||
|  |       type-is: 1.6.18 | ||||||
|  |     dev: false | ||||||
|  |  | ||||||
|  |   /bytes/3.1.0: | ||||||
|  |     resolution: {integrity: sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==} | ||||||
|  |     engines: {node: '>= 0.8'} | ||||||
|  |     dev: false | ||||||
|  |  | ||||||
|  |   /content-disposition/0.5.3: | ||||||
|  |     resolution: {integrity: sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==} | ||||||
|  |     engines: {node: '>= 0.6'} | ||||||
|  |     dependencies: | ||||||
|  |       safe-buffer: 5.1.2 | ||||||
|  |     dev: false | ||||||
|  |  | ||||||
|  |   /content-type/1.0.4: | ||||||
|  |     resolution: {integrity: sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==} | ||||||
|  |     engines: {node: '>= 0.6'} | ||||||
|  |     dev: false | ||||||
|  |  | ||||||
|  |   /cookie-signature/1.0.6: | ||||||
|  |     resolution: {integrity: sha1-4wOogrNCzD7oylE6eZmXNNqzriw=} | ||||||
|  |     dev: false | ||||||
|  |  | ||||||
|  |   /cookie/0.4.0: | ||||||
|  |     resolution: {integrity: sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==} | ||||||
|  |     engines: {node: '>= 0.6'} | ||||||
|  |     dev: false | ||||||
|  |  | ||||||
|  |   /debug/2.6.9: | ||||||
|  |     resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} | ||||||
|  |     dependencies: | ||||||
|  |       ms: 2.0.0 | ||||||
|  |     dev: false | ||||||
|  |  | ||||||
|  |   /depd/1.1.2: | ||||||
|  |     resolution: {integrity: sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=} | ||||||
|  |     engines: {node: '>= 0.6'} | ||||||
|  |     dev: false | ||||||
|  |  | ||||||
|  |   /destroy/1.0.4: | ||||||
|  |     resolution: {integrity: sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=} | ||||||
|  |     dev: false | ||||||
|  |  | ||||||
|  |   /ee-first/1.1.1: | ||||||
|  |     resolution: {integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=} | ||||||
|  |     dev: false | ||||||
|  |  | ||||||
|  |   /encodeurl/1.0.2: | ||||||
|  |     resolution: {integrity: sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=} | ||||||
|  |     engines: {node: '>= 0.8'} | ||||||
|  |     dev: false | ||||||
|  |  | ||||||
|  |   /escape-html/1.0.3: | ||||||
|  |     resolution: {integrity: sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=} | ||||||
|  |     dev: false | ||||||
|  |  | ||||||
|  |   /etag/1.8.1: | ||||||
|  |     resolution: {integrity: sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=} | ||||||
|  |     engines: {node: '>= 0.6'} | ||||||
|  |     dev: false | ||||||
|  |  | ||||||
|  |   /express/4.17.1: | ||||||
|  |     resolution: {integrity: sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==} | ||||||
|  |     engines: {node: '>= 0.10.0'} | ||||||
|  |     dependencies: | ||||||
|  |       accepts: 1.3.7 | ||||||
|  |       array-flatten: 1.1.1 | ||||||
|  |       body-parser: 1.19.0 | ||||||
|  |       content-disposition: 0.5.3 | ||||||
|  |       content-type: 1.0.4 | ||||||
|  |       cookie: 0.4.0 | ||||||
|  |       cookie-signature: 1.0.6 | ||||||
|  |       debug: 2.6.9 | ||||||
|  |       depd: 1.1.2 | ||||||
|  |       encodeurl: 1.0.2 | ||||||
|  |       escape-html: 1.0.3 | ||||||
|  |       etag: 1.8.1 | ||||||
|  |       finalhandler: 1.1.2 | ||||||
|  |       fresh: 0.5.2 | ||||||
|  |       merge-descriptors: 1.0.1 | ||||||
|  |       methods: 1.1.2 | ||||||
|  |       on-finished: 2.3.0 | ||||||
|  |       parseurl: 1.3.3 | ||||||
|  |       path-to-regexp: 0.1.7 | ||||||
|  |       proxy-addr: 2.0.7 | ||||||
|  |       qs: 6.7.0 | ||||||
|  |       range-parser: 1.2.1 | ||||||
|  |       safe-buffer: 5.1.2 | ||||||
|  |       send: 0.17.1 | ||||||
|  |       serve-static: 1.14.1 | ||||||
|  |       setprototypeof: 1.1.1 | ||||||
|  |       statuses: 1.5.0 | ||||||
|  |       type-is: 1.6.18 | ||||||
|  |       utils-merge: 1.0.1 | ||||||
|  |       vary: 1.1.2 | ||||||
|  |     dev: false | ||||||
|  |  | ||||||
|  |   /finalhandler/1.1.2: | ||||||
|  |     resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} | ||||||
|  |     engines: {node: '>= 0.8'} | ||||||
|  |     dependencies: | ||||||
|  |       debug: 2.6.9 | ||||||
|  |       encodeurl: 1.0.2 | ||||||
|  |       escape-html: 1.0.3 | ||||||
|  |       on-finished: 2.3.0 | ||||||
|  |       parseurl: 1.3.3 | ||||||
|  |       statuses: 1.5.0 | ||||||
|  |       unpipe: 1.0.0 | ||||||
|  |     dev: false | ||||||
|  |  | ||||||
|  |   /forwarded/0.2.0: | ||||||
|  |     resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} | ||||||
|  |     engines: {node: '>= 0.6'} | ||||||
|  |     dev: false | ||||||
|  |  | ||||||
|  |   /fresh/0.5.2: | ||||||
|  |     resolution: {integrity: sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=} | ||||||
|  |     engines: {node: '>= 0.6'} | ||||||
|  |     dev: false | ||||||
|  |  | ||||||
|  |   /http-errors/1.7.2: | ||||||
|  |     resolution: {integrity: sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==} | ||||||
|  |     engines: {node: '>= 0.6'} | ||||||
|  |     dependencies: | ||||||
|  |       depd: 1.1.2 | ||||||
|  |       inherits: 2.0.3 | ||||||
|  |       setprototypeof: 1.1.1 | ||||||
|  |       statuses: 1.5.0 | ||||||
|  |       toidentifier: 1.0.0 | ||||||
|  |     dev: false | ||||||
|  |  | ||||||
|  |   /http-errors/1.7.3: | ||||||
|  |     resolution: {integrity: sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==} | ||||||
|  |     engines: {node: '>= 0.6'} | ||||||
|  |     dependencies: | ||||||
|  |       depd: 1.1.2 | ||||||
|  |       inherits: 2.0.4 | ||||||
|  |       setprototypeof: 1.1.1 | ||||||
|  |       statuses: 1.5.0 | ||||||
|  |       toidentifier: 1.0.0 | ||||||
|  |     dev: false | ||||||
|  |  | ||||||
|  |   /iconv-lite/0.4.24: | ||||||
|  |     resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} | ||||||
|  |     engines: {node: '>=0.10.0'} | ||||||
|  |     dependencies: | ||||||
|  |       safer-buffer: 2.1.2 | ||||||
|  |     dev: false | ||||||
|  |  | ||||||
|  |   /inherits/2.0.3: | ||||||
|  |     resolution: {integrity: sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=} | ||||||
|  |     dev: false | ||||||
|  |  | ||||||
|  |   /inherits/2.0.4: | ||||||
|  |     resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} | ||||||
|  |     dev: false | ||||||
|  |  | ||||||
|  |   /ipaddr.js/1.9.1: | ||||||
|  |     resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} | ||||||
|  |     engines: {node: '>= 0.10'} | ||||||
|  |     dev: false | ||||||
|  |  | ||||||
|  |   /media-typer/0.3.0: | ||||||
|  |     resolution: {integrity: sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=} | ||||||
|  |     engines: {node: '>= 0.6'} | ||||||
|  |     dev: false | ||||||
|  |  | ||||||
|  |   /merge-descriptors/1.0.1: | ||||||
|  |     resolution: {integrity: sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=} | ||||||
|  |     dev: false | ||||||
|  |  | ||||||
|  |   /methods/1.1.2: | ||||||
|  |     resolution: {integrity: sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=} | ||||||
|  |     engines: {node: '>= 0.6'} | ||||||
|  |     dev: false | ||||||
|  |  | ||||||
|  |   /mime-db/1.48.0: | ||||||
|  |     resolution: {integrity: sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ==} | ||||||
|  |     engines: {node: '>= 0.6'} | ||||||
|  |     dev: false | ||||||
|  |  | ||||||
|  |   /mime-types/2.1.31: | ||||||
|  |     resolution: {integrity: sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg==} | ||||||
|  |     engines: {node: '>= 0.6'} | ||||||
|  |     dependencies: | ||||||
|  |       mime-db: 1.48.0 | ||||||
|  |     dev: false | ||||||
|  |  | ||||||
|  |   /mime/1.6.0: | ||||||
|  |     resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} | ||||||
|  |     engines: {node: '>=4'} | ||||||
|  |     hasBin: true | ||||||
|  |     dev: false | ||||||
|  |  | ||||||
|  |   /ms/2.0.0: | ||||||
|  |     resolution: {integrity: sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=} | ||||||
|  |     dev: false | ||||||
|  |  | ||||||
|  |   /ms/2.1.1: | ||||||
|  |     resolution: {integrity: sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==} | ||||||
|  |     dev: false | ||||||
|  |  | ||||||
|  |   /negotiator/0.6.2: | ||||||
|  |     resolution: {integrity: sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==} | ||||||
|  |     engines: {node: '>= 0.6'} | ||||||
|  |     dev: false | ||||||
|  |  | ||||||
|  |   /on-finished/2.3.0: | ||||||
|  |     resolution: {integrity: sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=} | ||||||
|  |     engines: {node: '>= 0.8'} | ||||||
|  |     dependencies: | ||||||
|  |       ee-first: 1.1.1 | ||||||
|  |     dev: false | ||||||
|  |  | ||||||
|  |   /parseurl/1.3.3: | ||||||
|  |     resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} | ||||||
|  |     engines: {node: '>= 0.8'} | ||||||
|  |     dev: false | ||||||
|  |  | ||||||
|  |   /path-to-regexp/0.1.7: | ||||||
|  |     resolution: {integrity: sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=} | ||||||
|  |     dev: false | ||||||
|  |  | ||||||
|  |   /proxy-addr/2.0.7: | ||||||
|  |     resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} | ||||||
|  |     engines: {node: '>= 0.10'} | ||||||
|  |     dependencies: | ||||||
|  |       forwarded: 0.2.0 | ||||||
|  |       ipaddr.js: 1.9.1 | ||||||
|  |     dev: false | ||||||
|  |  | ||||||
|  |   /qs/6.7.0: | ||||||
|  |     resolution: {integrity: sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==} | ||||||
|  |     engines: {node: '>=0.6'} | ||||||
|  |     dev: false | ||||||
|  |  | ||||||
|  |   /range-parser/1.2.1: | ||||||
|  |     resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} | ||||||
|  |     engines: {node: '>= 0.6'} | ||||||
|  |     dev: false | ||||||
|  |  | ||||||
|  |   /raw-body/2.4.0: | ||||||
|  |     resolution: {integrity: sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==} | ||||||
|  |     engines: {node: '>= 0.8'} | ||||||
|  |     dependencies: | ||||||
|  |       bytes: 3.1.0 | ||||||
|  |       http-errors: 1.7.2 | ||||||
|  |       iconv-lite: 0.4.24 | ||||||
|  |       unpipe: 1.0.0 | ||||||
|  |     dev: false | ||||||
|  |  | ||||||
|  |   /safe-buffer/5.1.2: | ||||||
|  |     resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} | ||||||
|  |     dev: false | ||||||
|  |  | ||||||
|  |   /safer-buffer/2.1.2: | ||||||
|  |     resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} | ||||||
|  |     dev: false | ||||||
|  |  | ||||||
|  |   /send/0.17.1: | ||||||
|  |     resolution: {integrity: sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==} | ||||||
|  |     engines: {node: '>= 0.8.0'} | ||||||
|  |     dependencies: | ||||||
|  |       debug: 2.6.9 | ||||||
|  |       depd: 1.1.2 | ||||||
|  |       destroy: 1.0.4 | ||||||
|  |       encodeurl: 1.0.2 | ||||||
|  |       escape-html: 1.0.3 | ||||||
|  |       etag: 1.8.1 | ||||||
|  |       fresh: 0.5.2 | ||||||
|  |       http-errors: 1.7.3 | ||||||
|  |       mime: 1.6.0 | ||||||
|  |       ms: 2.1.1 | ||||||
|  |       on-finished: 2.3.0 | ||||||
|  |       range-parser: 1.2.1 | ||||||
|  |       statuses: 1.5.0 | ||||||
|  |     dev: false | ||||||
|  |  | ||||||
|  |   /serve-static/1.14.1: | ||||||
|  |     resolution: {integrity: sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==} | ||||||
|  |     engines: {node: '>= 0.8.0'} | ||||||
|  |     dependencies: | ||||||
|  |       encodeurl: 1.0.2 | ||||||
|  |       escape-html: 1.0.3 | ||||||
|  |       parseurl: 1.3.3 | ||||||
|  |       send: 0.17.1 | ||||||
|  |     dev: false | ||||||
|  |  | ||||||
|  |   /setprototypeof/1.1.1: | ||||||
|  |     resolution: {integrity: sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==} | ||||||
|  |     dev: false | ||||||
|  |  | ||||||
|  |   /statuses/1.5.0: | ||||||
|  |     resolution: {integrity: sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=} | ||||||
|  |     engines: {node: '>= 0.6'} | ||||||
|  |     dev: false | ||||||
|  |  | ||||||
|  |   /toidentifier/1.0.0: | ||||||
|  |     resolution: {integrity: sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==} | ||||||
|  |     engines: {node: '>=0.6'} | ||||||
|  |     dev: false | ||||||
|  |  | ||||||
|  |   /type-is/1.6.18: | ||||||
|  |     resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} | ||||||
|  |     engines: {node: '>= 0.6'} | ||||||
|  |     dependencies: | ||||||
|  |       media-typer: 0.3.0 | ||||||
|  |       mime-types: 2.1.31 | ||||||
|  |     dev: false | ||||||
|  |  | ||||||
|  |   /unpipe/1.0.0: | ||||||
|  |     resolution: {integrity: sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=} | ||||||
|  |     engines: {node: '>= 0.8'} | ||||||
|  |     dev: false | ||||||
|  |  | ||||||
|  |   /utils-merge/1.0.1: | ||||||
|  |     resolution: {integrity: sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=} | ||||||
|  |     engines: {node: '>= 0.4.0'} | ||||||
|  |     dev: false | ||||||
|  |  | ||||||
|  |   /vary/1.1.2: | ||||||
|  |     resolution: {integrity: sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=} | ||||||
|  |     engines: {node: '>= 0.8'} | ||||||
|  |     dev: false | ||||||
| @@ -1,12 +1,12 @@ | |||||||
| import * as core from '@actions/core'; | import * as core from '@actions/core'; | ||||||
| import * as io from '@actions/io'; | import * as io from '@actions/io'; | ||||||
| import * as tc from '@actions/tool-cache'; | import * as tc from '@actions/tool-cache'; | ||||||
|  | import * as im from '../src/installer'; | ||||||
| import fs from 'fs'; | import fs from 'fs'; | ||||||
| import cp from 'child_process'; | import cp from 'child_process'; | ||||||
| import osm = require('os'); | import osm = require('os'); | ||||||
| import path from 'path'; | import path from 'path'; | ||||||
| import * as main from '../src/main'; | import * as main from '../src/main'; | ||||||
| import * as im from '../src/installer'; |  | ||||||
| import * as auth from '../src/authutil'; | import * as auth from '../src/authutil'; | ||||||
|  |  | ||||||
| let nodeTestManifest = require('./data/versions-manifest.json'); | let nodeTestManifest = require('./data/versions-manifest.json'); | ||||||
| @@ -31,9 +31,11 @@ describe('setup-node', () => { | |||||||
|   let dbgSpy: jest.SpyInstance; |   let dbgSpy: jest.SpyInstance; | ||||||
|   let whichSpy: jest.SpyInstance; |   let whichSpy: jest.SpyInstance; | ||||||
|   let existsSpy: jest.SpyInstance; |   let existsSpy: jest.SpyInstance; | ||||||
|  |   let readFileSyncSpy: jest.SpyInstance; | ||||||
|   let mkdirpSpy: jest.SpyInstance; |   let mkdirpSpy: jest.SpyInstance; | ||||||
|   let execSpy: jest.SpyInstance; |   let execSpy: jest.SpyInstance; | ||||||
|   let authSpy: jest.SpyInstance; |   let authSpy: jest.SpyInstance; | ||||||
|  |   let parseNodeVersionSpy: jest.SpyInstance; | ||||||
|  |  | ||||||
|   beforeEach(() => { |   beforeEach(() => { | ||||||
|     // @actions/core |     // @actions/core | ||||||
| @@ -58,6 +60,7 @@ describe('setup-node', () => { | |||||||
|     cacheSpy = jest.spyOn(tc, 'cacheDir'); |     cacheSpy = jest.spyOn(tc, 'cacheDir'); | ||||||
|     getManifestSpy = jest.spyOn(tc, 'getManifestFromRepo'); |     getManifestSpy = jest.spyOn(tc, 'getManifestFromRepo'); | ||||||
|     getDistSpy = jest.spyOn(im, 'getVersionsFromDist'); |     getDistSpy = jest.spyOn(im, 'getVersionsFromDist'); | ||||||
|  |     parseNodeVersionSpy = jest.spyOn(im, 'parseNodeVersionFile'); | ||||||
|  |  | ||||||
|     // io |     // io | ||||||
|     whichSpy = jest.spyOn(io, 'which'); |     whichSpy = jest.spyOn(io, 'which'); | ||||||
| @@ -91,6 +94,10 @@ describe('setup-node', () => { | |||||||
|       // uncomment to see debug output |       // uncomment to see debug output | ||||||
|       // process.stderr.write(msg + '\n'); |       // process.stderr.write(msg + '\n'); | ||||||
|     }); |     }); | ||||||
|  |     warningSpy.mockImplementation(msg => { | ||||||
|  |       // uncomment to debug | ||||||
|  |       // process.stderr.write('log:' + line + '\n'); | ||||||
|  |     }); | ||||||
|   }); |   }); | ||||||
|  |  | ||||||
|   afterEach(() => { |   afterEach(() => { | ||||||
| @@ -101,6 +108,7 @@ describe('setup-node', () => { | |||||||
|  |  | ||||||
|   afterAll(async () => { |   afterAll(async () => { | ||||||
|     console.log('::stoptoken::'); // Re-enable executing of runner commands when running tests in actions |     console.log('::stoptoken::'); // Re-enable executing of runner commands when running tests in actions | ||||||
|  |     jest.restoreAllMocks(); | ||||||
|   }, 100000); |   }, 100000); | ||||||
|  |  | ||||||
|   //-------------------------------------------------- |   //-------------------------------------------------- | ||||||
| @@ -343,7 +351,7 @@ describe('setup-node', () => { | |||||||
|     expect(cnSpy).toHaveBeenCalledWith(`::error::${errMsg}${osm.EOL}`); |     expect(cnSpy).toHaveBeenCalledWith(`::error::${errMsg}${osm.EOL}`); | ||||||
|   }); |   }); | ||||||
|  |  | ||||||
|   it('Acquires specified architecture of node', async () => { |   it('acquires specified architecture of node', async () => { | ||||||
|     for (const {arch, version, osSpec} of [ |     for (const {arch, version, osSpec} of [ | ||||||
|       {arch: 'x86', version: '12.16.2', osSpec: 'win32'}, |       {arch: 'x86', version: '12.16.2', osSpec: 'win32'}, | ||||||
|       {arch: 'x86', version: '14.0.0', osSpec: 'win32'} |       {arch: 'x86', version: '14.0.0', osSpec: 'win32'} | ||||||
| @@ -549,6 +557,93 @@ describe('setup-node', () => { | |||||||
|     }); |     }); | ||||||
|   }); |   }); | ||||||
|  |  | ||||||
|  |   describe('node-version-file flag', () => { | ||||||
|  |     it('not used if node-version is provided', async () => { | ||||||
|  |       // Arrange | ||||||
|  |       inputs['node-version'] = '12'; | ||||||
|  |  | ||||||
|  |       // Act | ||||||
|  |       await main.run(); | ||||||
|  |  | ||||||
|  |       // Assert | ||||||
|  |       expect(parseNodeVersionSpy).toHaveBeenCalledTimes(0); | ||||||
|  |     }); | ||||||
|  |  | ||||||
|  |     it('not used if node-version-file not provided', async () => { | ||||||
|  |       // Act | ||||||
|  |       await main.run(); | ||||||
|  |  | ||||||
|  |       // Assert | ||||||
|  |       expect(parseNodeVersionSpy).toHaveBeenCalledTimes(0); | ||||||
|  |     }); | ||||||
|  |  | ||||||
|  |     it('reads node-version-file if provided', async () => { | ||||||
|  |       // Arrange | ||||||
|  |       const versionSpec = 'v14'; | ||||||
|  |       const versionFile = '.nvmrc'; | ||||||
|  |       const expectedVersionSpec = '14'; | ||||||
|  |       process.env['GITHUB_WORKSPACE'] = path.join(__dirname, 'data'); | ||||||
|  |       inputs['node-version-file'] = versionFile; | ||||||
|  |  | ||||||
|  |       parseNodeVersionSpy.mockImplementation(() => expectedVersionSpec); | ||||||
|  |       existsSpy.mockImplementationOnce( | ||||||
|  |         input => input === path.join(__dirname, 'data', versionFile) | ||||||
|  |       ); | ||||||
|  |       // Act | ||||||
|  |       await main.run(); | ||||||
|  |  | ||||||
|  |       // Assert | ||||||
|  |       expect(existsSpy).toHaveBeenCalledTimes(1); | ||||||
|  |       expect(existsSpy).toHaveReturnedWith(true); | ||||||
|  |       expect(parseNodeVersionSpy).toHaveBeenCalledWith(versionSpec); | ||||||
|  |       expect(logSpy).toHaveBeenCalledWith( | ||||||
|  |         `Resolved ${versionFile} as ${expectedVersionSpec}` | ||||||
|  |       ); | ||||||
|  |     }); | ||||||
|  |  | ||||||
|  |     it('both node-version-file and node-version are provided', async () => { | ||||||
|  |       inputs['node-version'] = '12'; | ||||||
|  |       const versionSpec = 'v14'; | ||||||
|  |       const versionFile = '.nvmrc'; | ||||||
|  |       const expectedVersionSpec = '14'; | ||||||
|  |       process.env['GITHUB_WORKSPACE'] = path.join(__dirname, '..'); | ||||||
|  |       inputs['node-version-file'] = versionFile; | ||||||
|  |  | ||||||
|  |       parseNodeVersionSpy.mockImplementation(() => expectedVersionSpec); | ||||||
|  |  | ||||||
|  |       // Act | ||||||
|  |       await main.run(); | ||||||
|  |  | ||||||
|  |       // Assert | ||||||
|  |       expect(existsSpy).toHaveBeenCalledTimes(0); | ||||||
|  |       expect(parseNodeVersionSpy).not.toHaveBeenCalled(); | ||||||
|  |       expect(warningSpy).toHaveBeenCalledWith( | ||||||
|  |         'Both node-version and node-version-file inputs are specified, only node-version will be used' | ||||||
|  |       ); | ||||||
|  |     }); | ||||||
|  |  | ||||||
|  |     it('should throw an error if node-version-file is not found', async () => { | ||||||
|  |       const versionFile = '.nvmrc'; | ||||||
|  |       const versionFilePath = path.join(__dirname, '..', versionFile); | ||||||
|  |       inputs['node-version-file'] = versionFile; | ||||||
|  |  | ||||||
|  |       inSpy.mockImplementation(name => inputs[name]); | ||||||
|  |       existsSpy.mockImplementationOnce( | ||||||
|  |         input => input === path.join(__dirname, 'data', versionFile) | ||||||
|  |       ); | ||||||
|  |  | ||||||
|  |       // Act | ||||||
|  |       await main.run(); | ||||||
|  |  | ||||||
|  |       // Assert | ||||||
|  |       expect(existsSpy).toHaveBeenCalled(); | ||||||
|  |       expect(existsSpy).toHaveReturnedWith(false); | ||||||
|  |       expect(parseNodeVersionSpy).not.toHaveBeenCalled(); | ||||||
|  |       expect(cnSpy).toHaveBeenCalledWith( | ||||||
|  |         `::error::The specified node version file at: ${versionFilePath} does not exist${osm.EOL}` | ||||||
|  |       ); | ||||||
|  |     }); | ||||||
|  |   }); | ||||||
|   describe('LTS version', () => { |   describe('LTS version', () => { | ||||||
|     beforeEach(() => { |     beforeEach(() => { | ||||||
|       os.platform = 'linux'; |       os.platform = 'linux'; | ||||||
|   | |||||||
| @@ -1,17 +0,0 @@ | |||||||
| #!/bin/bash |  | ||||||
|  |  | ||||||
| if [[ "$(git status --porcelain)" != "" ]]; then |  | ||||||
|     echo ---------------------------------------- |  | ||||||
|     echo git status |  | ||||||
|     echo ---------------------------------------- |  | ||||||
|     git status |  | ||||||
|     echo ---------------------------------------- |  | ||||||
|     echo git diff |  | ||||||
|     echo ---------------------------------------- |  | ||||||
|     git diff |  | ||||||
|     echo ---------------------------------------- |  | ||||||
|     echo Troubleshooting |  | ||||||
|     echo ---------------------------------------- |  | ||||||
|     echo "::error::Unstaged changes detected. Locally try running: git clean -ffdx && npm ci && npm run pre-checkin" |  | ||||||
|     exit 1 |  | ||||||
| fi |  | ||||||
| @@ -7,6 +7,8 @@ inputs: | |||||||
|     default: 'false' |     default: 'false' | ||||||
|   node-version: |   node-version: | ||||||
|     description: 'Version Spec of the version to use.  Examples: 12.x, 10.15.1, >=10.15.0' |     description: 'Version Spec of the version to use.  Examples: 12.x, 10.15.1, >=10.15.0' | ||||||
|  |   node-version-file: | ||||||
|  |     description: 'File containing the version Spec of the version to use.  Examples: .nvmrc, .node-version' | ||||||
|   architecture: |   architecture: | ||||||
|     description: 'Target architecture for Node to use. Examples: x86, x64. Will use system architecture by default.' |     description: 'Target architecture for Node to use. Examples: x86, x64. Will use system architecture by default.' | ||||||
|   check-latest: |   check-latest: | ||||||
| @@ -20,13 +22,18 @@ inputs: | |||||||
|     description: Used to pull node distributions from node-versions.  Since there's a default, this is typically not supplied by the user. |     description: Used to pull node distributions from node-versions.  Since there's a default, this is typically not supplied by the user. | ||||||
|     default: ${{ github.token }} |     default: ${{ github.token }} | ||||||
|   cache: |   cache: | ||||||
|     description: 'Used to specify a package manager for caching in the default directory. Supported values: npm, yarn' |     description: 'Used to specify a package manager for caching in the default directory. Supported values: npm, yarn, pnpm' | ||||||
|  |   cache-dependency-path: | ||||||
|  |     description: 'Used to specify the path to a dependency file: package-lock.json, yarn.lock, etc. Supports wildcards or a list of file names for caching multiple dependencies.' | ||||||
| # TODO: add input to control forcing to pull from cloud or dist.  | # TODO: add input to control forcing to pull from cloud or dist.  | ||||||
| #       escape valve for someone having issues or needing the absolute latest which isn't cached yet | #       escape valve for someone having issues or needing the absolute latest which isn't cached yet | ||||||
| # Deprecated option, do not use. Will not be supported after October 1, 2019 | # Deprecated option, do not use. Will not be supported after October 1, 2019 | ||||||
|   version: |   version: | ||||||
|     description: 'Deprecated. Use node-version instead. Will not be supported after October 1, 2019' |     description: 'Deprecated. Use node-version instead. Will not be supported after October 1, 2019' | ||||||
|     deprecationMessage: 'The version property will not be supported after October 1, 2019. Use node-version instead' |     deprecationMessage: 'The version property will not be supported after October 1, 2019. Use node-version instead' | ||||||
|  | outputs: | ||||||
|  |   cache-hit:  | ||||||
|  |     description: 'A boolean value to indicate if a cache was hit' | ||||||
| runs: | runs: | ||||||
|   using: 'node12' |   using: 'node12' | ||||||
|   main: 'dist/setup/index.js' |   main: 'dist/setup/index.js' | ||||||
|   | |||||||
							
								
								
									
										28902
									
								
								dist/cache-save/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										28902
									
								
								dist/cache-save/index.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										28520
									
								
								dist/setup/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										28520
									
								
								dist/setup/index.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -1,7 +1,7 @@ | |||||||
| # 0. Caching dependencies | # 0. Caching dependencies | ||||||
| Date: 2021-05-21 | Date: 2021-05-21 | ||||||
|  |  | ||||||
| Status: Proposed | Status: Accepted | ||||||
|  |  | ||||||
| # Context | # Context | ||||||
| `actions/setup-node` is the 2nd most popular action in GitHub Actions. A lot of customers use it in conjunction with [actions/cache](https://github.com/actions/cache) to speed up dependencies installation.   | `actions/setup-node` is the 2nd most popular action in GitHub Actions. A lot of customers use it in conjunction with [actions/cache](https://github.com/actions/cache) to speed up dependencies installation.   | ||||||
|   | |||||||
							
								
								
									
										48
									
								
								docs/adrs/0001-support-caching-deps-for-monorepos.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								docs/adrs/0001-support-caching-deps-for-monorepos.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,48 @@ | |||||||
|  | # 0. Support caching dependencies for mono repos | ||||||
|  | Date: 2021-07-13 | ||||||
|  |  | ||||||
|  | Status: Proposed | ||||||
|  |  | ||||||
|  | ## Context | ||||||
|  | Currently, `actions/setup-node` supports caching dependencies for Npm and Yarn package managers.   | ||||||
|  | For the first iteration, we have decided to not support cases where `package-lock.json` / `yarn.lock` are located outside of repository root.   | ||||||
|  | Current implementation searches the following file patterns in the repository root: `package-lock.json`, `yarn.lock` (in order of resolving priorities) | ||||||
|  |  | ||||||
|  | Obviously, it made build-in caching unusable for mono-repos and repos with complex structure.   | ||||||
|  | We would like to revisit this decision and add customization for dependencies lock file location. | ||||||
|  |  | ||||||
|  | ## Proposal | ||||||
|  | We have the following options: | ||||||
|  | 1. Allow to specify  directory where `package-lock.json` or `yarn.lock` are located | ||||||
|  | 2. Allow to specify path to the dependencies lock file (including directory path and filename) | ||||||
|  |  | ||||||
|  | The second option looks more generic because it allows to: | ||||||
|  | - specify multiple dependencies files using file patterns like `**/package-lock.json` ([one of recommended approaches in actions/cache](https://github.com/actions/cache/blob/main/examples.md#macos-and-ubuntu)) | ||||||
|  | - specify custom dependencies files like `src/npm-shrinkwrap.json` | ||||||
|  | - change default resolving priority if both `yarn.lock` and `package-lock.json` exist in repository | ||||||
|  |  | ||||||
|  | ## Decision | ||||||
|  |  | ||||||
|  | Add `cache-dependency-path` input that will accept path (relative to repository root) to dependencies lock file.   | ||||||
|  | If provided path contains wildcards, the action will search all maching files and calculate common hash like `${{ hashFiles('**/package-lock.json') }}` YAML construction does.   | ||||||
|  | The hash of provided matched files will be used as a part of cache key. | ||||||
|  |  | ||||||
|  | Yaml examples: | ||||||
|  | ```yml | ||||||
|  | steps: | ||||||
|  | - uses: actions/checkout@v2 | ||||||
|  | - uses: actions/setup-node@v2 | ||||||
|  |   with: | ||||||
|  |     node-version: 14 | ||||||
|  |     cache: npm | ||||||
|  |     cache-dependency-path: 'sub-project/package-lock.json' | ||||||
|  | ``` | ||||||
|  | ```yml | ||||||
|  | steps: | ||||||
|  | - uses: actions/checkout@v2 | ||||||
|  | - uses: actions/setup-node@v2 | ||||||
|  |   with: | ||||||
|  |     node-version: 14 | ||||||
|  |     cache: yarn | ||||||
|  |     cache-dependency-path: 'sub-project/**/yarn.lock' | ||||||
|  | ``` | ||||||
| @@ -1,6 +1,6 @@ | |||||||
| # Advanced usage | # Advanced usage | ||||||
|  |  | ||||||
| ### Check latest version: | ## Check latest version | ||||||
|  |  | ||||||
| The `check-latest` flag defaults to `false`. When set to `false`, the action will first check the local cache for a semver match. If unable to find a specific version in the cache, the action will attempt to download a version of Node.js. It will pull LTS versions from [node-versions releases](https://github.com/actions/node-versions/releases) and on miss or failure will fall back to the previous behavior of downloading directly from [node dist](https://nodejs.org/dist/). Use the default or set `check-latest` to `false` if you prefer stability and if you want to ensure a specific version of Node.js is always used. | The `check-latest` flag defaults to `false`. When set to `false`, the action will first check the local cache for a semver match. If unable to find a specific version in the cache, the action will attempt to download a version of Node.js. It will pull LTS versions from [node-versions releases](https://github.com/actions/node-versions/releases) and on miss or failure will fall back to the previous behavior of downloading directly from [node dist](https://nodejs.org/dist/). Use the default or set `check-latest` to `false` if you prefer stability and if you want to ensure a specific version of Node.js is always used. | ||||||
|  |  | ||||||
| @@ -19,7 +19,23 @@ steps: | |||||||
| - run: npm test | - run: npm test | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| ### Architecture: | ## Node version file | ||||||
|  |    | ||||||
|  | The `node-version-file` input accepts a path to a file containing the version of Node.js to be used by a project, for example `.nvmrc` or `.node-version`. If both the `node-version` and the `node-version-file` inputs are provided then the `node-version` input is used.  | ||||||
|  | See [supported version syntax](https://github.com/actions/setup-node#supported-version-syntax)  | ||||||
|  | > The action will search for the node version file relative to the repository root. | ||||||
|  |  | ||||||
|  | ```yaml | ||||||
|  | steps: | ||||||
|  | - uses: actions/checkout@v2 | ||||||
|  | - uses: actions/setup-node@v2 | ||||||
|  |   with: | ||||||
|  |     node-version-file: '.nvmrc' | ||||||
|  | - run: npm install | ||||||
|  | - run: npm test | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | ## Architecture | ||||||
|  |  | ||||||
| You can use any of the [supported operating systems](https://docs.github.com/en/actions/reference/virtual-environments-for-github-hosted-runners), and the compatible `architecture` can be selected using `architecture`. Values are `x86`, `x64`, `arm64`, `armv6l`, `armv7l`, `ppc64le`, `s390x` (not all of the architectures are available on all platforms). | You can use any of the [supported operating systems](https://docs.github.com/en/actions/reference/virtual-environments-for-github-hosted-runners), and the compatible `architecture` can be selected using `architecture`. Values are `x86`, `x64`, `arm64`, `armv6l`, `armv7l`, `ppc64le`, `s390x` (not all of the architectures are available on all platforms). | ||||||
|  |  | ||||||
| @@ -39,7 +55,73 @@ jobs: | |||||||
|       - run: npm test |       - run: npm test | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| ### Multiple Operating Systems and Architectures: | ## Caching packages dependencies | ||||||
|  | The action follows [actions/cache](https://github.com/actions/cache/blob/main/examples.md#node---npm) guidelines, and caches global cache on the machine instead of `node_modules`, so cache can be reused between different Node.js versions. | ||||||
|  |  | ||||||
|  | **Caching yarn dependencies:**   | ||||||
|  | Yarn caching handles both yarn versions: 1 or 2. | ||||||
|  | ```yaml | ||||||
|  | steps: | ||||||
|  | - uses: actions/checkout@v2 | ||||||
|  | - uses: actions/setup-node@v2 | ||||||
|  |   with: | ||||||
|  |     node-version: '14' | ||||||
|  |     cache: 'yarn' | ||||||
|  | - run: yarn install | ||||||
|  | - run: yarn test | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | **Caching pnpm (v6.10+) dependencies:** | ||||||
|  | ```yaml | ||||||
|  | # This workflow uses actions that are not certified by GitHub. | ||||||
|  | # They are provided by a third-party and are governed by | ||||||
|  | # separate terms of service, privacy policy, and support | ||||||
|  | # documentation. | ||||||
|  |  | ||||||
|  | # NOTE: pnpm caching support requires pnpm version >= 6.10.0 | ||||||
|  |  | ||||||
|  | steps: | ||||||
|  | - uses: actions/checkout@v2 | ||||||
|  | - uses: pnpm/action-setup@646cdf48217256a3d0b80361c5a50727664284f2 | ||||||
|  |   with: | ||||||
|  |     version: 6.10.0 | ||||||
|  | - uses: actions/setup-node@v2 | ||||||
|  |   with: | ||||||
|  |     node-version: '14' | ||||||
|  |     cache: 'pnpm' | ||||||
|  | - run: pnpm install | ||||||
|  | - run: pnpm test | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | **Using wildcard patterns to cache dependencies** | ||||||
|  | ```yaml | ||||||
|  | steps: | ||||||
|  | - uses: actions/checkout@v2 | ||||||
|  | - uses: actions/setup-node@v2 | ||||||
|  |   with: | ||||||
|  |     node-version: '14' | ||||||
|  |     cache: 'npm' | ||||||
|  |     cache-dependency-path: '**/package-lock.json' | ||||||
|  | - run: npm install | ||||||
|  | - run: npm test | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | **Using a list of file paths to cache dependencies** | ||||||
|  | ```yaml | ||||||
|  | steps: | ||||||
|  | - uses: actions/checkout@v2 | ||||||
|  | - uses: actions/setup-node@v2 | ||||||
|  |   with: | ||||||
|  |     node-version: '14' | ||||||
|  |     cache: 'npm' | ||||||
|  |     cache-dependency-path: | | ||||||
|  |       server/app/package-lock.json | ||||||
|  |       frontend/app/package-lock.json | ||||||
|  | - run: npm install | ||||||
|  | - run: npm test | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | ## Multiple Operating Systems and Architectures | ||||||
|  |  | ||||||
| ```yaml | ```yaml | ||||||
| jobs: | jobs: | ||||||
| @@ -74,7 +156,7 @@ jobs: | |||||||
|       - run: npm test |       - run: npm test | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| ### Publish to npmjs and GPR with npm: | ## Publish to npmjs and GPR with npm | ||||||
| ```yaml | ```yaml | ||||||
| steps: | steps: | ||||||
| - uses: actions/checkout@v2 | - uses: actions/checkout@v2 | ||||||
| @@ -94,7 +176,7 @@ steps: | |||||||
|     NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }} |     NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| ### Publish to npmjs and GPR with yarn: | ## Publish to npmjs and GPR with yarn | ||||||
| ```yaml | ```yaml | ||||||
| steps: | steps: | ||||||
| - uses: actions/checkout@v2 | - uses: actions/checkout@v2 | ||||||
| @@ -114,7 +196,7 @@ steps: | |||||||
|     NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }} |     NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| ### Use private packages: | ## Use private packages | ||||||
| ```yaml | ```yaml | ||||||
| steps: | steps: | ||||||
| - uses: actions/checkout@v2 | - uses: actions/checkout@v2 | ||||||
|   | |||||||
							
								
								
									
										8309
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										8309
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										14
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								package.json
									
									
									
									
									
								
							| @@ -23,25 +23,25 @@ | |||||||
|   "author": "GitHub", |   "author": "GitHub", | ||||||
|   "license": "MIT", |   "license": "MIT", | ||||||
|   "dependencies": { |   "dependencies": { | ||||||
|     "@actions/cache": "^1.0.7", |     "@actions/cache": "^1.0.8", | ||||||
|     "@actions/core": "^1.2.6", |     "@actions/core": "^1.6.0", | ||||||
|     "@actions/exec": "^1.1.0", |     "@actions/exec": "^1.1.0", | ||||||
|     "@actions/github": "^1.1.0", |     "@actions/github": "^1.1.0", | ||||||
|     "@actions/glob": "^0.2.0", |     "@actions/glob": "^0.2.0", | ||||||
|     "@actions/http-client": "^1.0.6", |     "@actions/http-client": "^1.0.11", | ||||||
|     "@actions/io": "^1.0.2", |     "@actions/io": "^1.0.2", | ||||||
|     "@actions/tool-cache": "^1.5.4", |     "@actions/tool-cache": "^1.5.4", | ||||||
|     "semver": "^6.1.1" |     "semver": "^6.1.1" | ||||||
|   }, |   }, | ||||||
|   "devDependencies": { |   "devDependencies": { | ||||||
|     "@types/jest": "^24.0.13", |     "@types/jest": "^27.0.2", | ||||||
|     "@types/node": "^12.0.4", |     "@types/node": "^12.0.4", | ||||||
|     "@types/semver": "^6.0.0", |     "@types/semver": "^6.0.0", | ||||||
|     "@zeit/ncc": "^0.21.0", |     "@zeit/ncc": "^0.21.0", | ||||||
|     "jest": "^24.9.0", |     "jest": "^27.2.5", | ||||||
|     "jest-circus": "^24.7.1", |     "jest-circus": "^27.2.5", | ||||||
|     "prettier": "^1.19.1", |     "prettier": "^1.19.1", | ||||||
|     "ts-jest": "^24.3.0", |     "ts-jest": "^27.0.5", | ||||||
|     "typescript": "^3.8.3" |     "typescript": "^3.8.3" | ||||||
|   } |   } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -11,7 +11,10 @@ import { | |||||||
|   PackageManagerInfo |   PackageManagerInfo | ||||||
| } from './cache-utils'; | } from './cache-utils'; | ||||||
|  |  | ||||||
| export const restoreCache = async (packageManager: string) => { | export const restoreCache = async ( | ||||||
|  |   packageManager: string, | ||||||
|  |   cacheDependencyPath?: string | ||||||
|  | ) => { | ||||||
|   const packageManagerInfo = await getPackageManagerInfo(packageManager); |   const packageManagerInfo = await getPackageManagerInfo(packageManager); | ||||||
|   if (!packageManagerInfo) { |   if (!packageManagerInfo) { | ||||||
|     throw new Error(`Caching for '${packageManager}' is not supported`); |     throw new Error(`Caching for '${packageManager}' is not supported`); | ||||||
| @@ -22,15 +25,24 @@ export const restoreCache = async (packageManager: string) => { | |||||||
|     packageManagerInfo, |     packageManagerInfo, | ||||||
|     packageManager |     packageManager | ||||||
|   ); |   ); | ||||||
|   const lockFilePath = findLockFile(packageManagerInfo); |   const lockFilePath = cacheDependencyPath | ||||||
|  |     ? cacheDependencyPath | ||||||
|  |     : findLockFile(packageManagerInfo); | ||||||
|   const fileHash = await glob.hashFiles(lockFilePath); |   const fileHash = await glob.hashFiles(lockFilePath); | ||||||
|  |  | ||||||
|  |   if (!fileHash) { | ||||||
|  |     throw new Error( | ||||||
|  |       'Some specified paths were not resolved, unable to cache dependencies.' | ||||||
|  |     ); | ||||||
|  |   } | ||||||
|  |  | ||||||
|   const primaryKey = `node-cache-${platform}-${packageManager}-${fileHash}`; |   const primaryKey = `node-cache-${platform}-${packageManager}-${fileHash}`; | ||||||
|   core.debug(`primary key is ${primaryKey}`); |   core.debug(`primary key is ${primaryKey}`); | ||||||
|  |  | ||||||
|   core.saveState(State.CachePrimaryKey, primaryKey); |   core.saveState(State.CachePrimaryKey, primaryKey); | ||||||
|  |  | ||||||
|   const cacheKey = await cache.restoreCache([cachePath], primaryKey); |   const cacheKey = await cache.restoreCache([cachePath], primaryKey); | ||||||
|  |   core.setOutput('cache-hit', Boolean(cacheKey)); | ||||||
|  |  | ||||||
|   if (!cacheKey) { |   if (!cacheKey) { | ||||||
|     core.info(`${packageManager} cache is not found`); |     core.info(`${packageManager} cache is not found`); | ||||||
|   | |||||||
| @@ -1,8 +1,17 @@ | |||||||
| import * as core from '@actions/core'; | import * as core from '@actions/core'; | ||||||
| import * as cache from '@actions/cache'; | import * as cache from '@actions/cache'; | ||||||
|  | import fs from 'fs'; | ||||||
| import {State} from './constants'; | import {State} from './constants'; | ||||||
| import {getCacheDirectoryPath, getPackageManagerInfo} from './cache-utils'; | import {getCacheDirectoryPath, getPackageManagerInfo} from './cache-utils'; | ||||||
|  |  | ||||||
|  | // Catch and log any unhandled exceptions.  These exceptions can leak out of the uploadChunk method in | ||||||
|  | // @actions/toolkit when a failed upload closes the file descriptor causing any in-process reads to | ||||||
|  | // throw an uncaught exception.  Instead of failing this action, just warn. | ||||||
|  | process.on('uncaughtException', e => { | ||||||
|  |   const warningPrefix = '[warning]'; | ||||||
|  |   core.info(`${warningPrefix}${e.message}`); | ||||||
|  | }); | ||||||
|  |  | ||||||
| export async function run() { | export async function run() { | ||||||
|   try { |   try { | ||||||
|     const cacheLock = core.getInput('cache'); |     const cacheLock = core.getInput('cache'); | ||||||
| @@ -26,6 +35,13 @@ const cachePackages = async (packageManager: string) => { | |||||||
|     packageManagerInfo, |     packageManagerInfo, | ||||||
|     packageManager |     packageManager | ||||||
|   ); |   ); | ||||||
|  |  | ||||||
|  |   if (!fs.existsSync(cachePath)) { | ||||||
|  |     throw new Error( | ||||||
|  |       `Cache folder path is retrieved for ${packageManager} but doesn't exist on disk: ${cachePath}` | ||||||
|  |     ); | ||||||
|  |   } | ||||||
|  |  | ||||||
|   if (primaryKey === state) { |   if (primaryKey === state) { | ||||||
|     core.info( |     core.info( | ||||||
|       `Cache hit occurred on the primary key ${primaryKey}, not saving cache.` |       `Cache hit occurred on the primary key ${primaryKey}, not saving cache.` | ||||||
|   | |||||||
| @@ -15,6 +15,10 @@ export const supportedPackageManagers: SupportedPackageManagers = { | |||||||
|     lockFilePatterns: ['package-lock.json', 'yarn.lock'], |     lockFilePatterns: ['package-lock.json', 'yarn.lock'], | ||||||
|     getCacheFolderCommand: 'npm config get cache' |     getCacheFolderCommand: 'npm config get cache' | ||||||
|   }, |   }, | ||||||
|  |   pnpm: { | ||||||
|  |     lockFilePatterns: ['pnpm-lock.yaml'], | ||||||
|  |     getCacheFolderCommand: 'pnpm store path' | ||||||
|  |   }, | ||||||
|   yarn1: { |   yarn1: { | ||||||
|     lockFilePatterns: ['yarn.lock'], |     lockFilePatterns: ['yarn.lock'], | ||||||
|     getCacheFolderCommand: 'yarn cache dir' |     getCacheFolderCommand: 'yarn cache dir' | ||||||
| @@ -26,13 +30,20 @@ export const supportedPackageManagers: SupportedPackageManagers = { | |||||||
| }; | }; | ||||||
|  |  | ||||||
| export const getCommandOutput = async (toolCommand: string) => { | export const getCommandOutput = async (toolCommand: string) => { | ||||||
|   const {stdout, stderr, exitCode} = await exec.getExecOutput(toolCommand); |   let {stdout, stderr, exitCode} = await exec.getExecOutput( | ||||||
|  |     toolCommand, | ||||||
|  |     undefined, | ||||||
|  |     {ignoreReturnCode: true} | ||||||
|  |   ); | ||||||
|  |  | ||||||
|   if (stderr) { |   if (exitCode) { | ||||||
|  |     stderr = !stderr.trim() | ||||||
|  |       ? `The '${toolCommand}' command failed with exit code: ${exitCode}` | ||||||
|  |       : stderr; | ||||||
|     throw new Error(stderr); |     throw new Error(stderr); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   return stdout; |   return stdout.trim(); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| const getPackageManagerVersion = async ( | const getPackageManagerVersion = async ( | ||||||
| @@ -51,6 +62,8 @@ const getPackageManagerVersion = async ( | |||||||
| export const getPackageManagerInfo = async (packageManager: string) => { | export const getPackageManagerInfo = async (packageManager: string) => { | ||||||
|   if (packageManager === 'npm') { |   if (packageManager === 'npm') { | ||||||
|     return supportedPackageManagers.npm; |     return supportedPackageManagers.npm; | ||||||
|  |   } else if (packageManager === 'pnpm') { | ||||||
|  |     return supportedPackageManagers.pnpm; | ||||||
|   } else if (packageManager === 'yarn') { |   } else if (packageManager === 'yarn') { | ||||||
|     const yarnVersion = await getPackageManagerVersion('yarn', '--version'); |     const yarnVersion = await getPackageManagerVersion('yarn', '--version'); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,5 +1,6 @@ | |||||||
| export enum LockType { | export enum LockType { | ||||||
|   Npm = 'npm', |   Npm = 'npm', | ||||||
|  |   Pnpm = 'pnpm', | ||||||
|   Yarn = 'yarn' |   Yarn = 'yarn' | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -371,7 +371,7 @@ async function queryDistForMatch( | |||||||
|   } |   } | ||||||
|  |  | ||||||
|   let versions: string[] = []; |   let versions: string[] = []; | ||||||
|   let nodeVersions = await module.exports.getVersionsFromDist(); |   let nodeVersions = await getVersionsFromDist(); | ||||||
|  |  | ||||||
|   nodeVersions.forEach((nodeVersion: INodeVersion) => { |   nodeVersions.forEach((nodeVersion: INodeVersion) => { | ||||||
|     // ensure this version supports your os and platform |     // ensure this version supports your os and platform | ||||||
| @@ -464,3 +464,12 @@ function translateArchToDistUrl(arch: string): string { | |||||||
|       return arch; |       return arch; | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | export function parseNodeVersionFile(contents: string): string { | ||||||
|  |   let nodeVersion = contents.trim(); | ||||||
|  |  | ||||||
|  |   if (/^v\d/.test(nodeVersion)) { | ||||||
|  |     nodeVersion = nodeVersion.substring(1); | ||||||
|  |   } | ||||||
|  |   return nodeVersion; | ||||||
|  | } | ||||||
|   | |||||||
							
								
								
									
										46
									
								
								src/main.ts
									
									
									
									
									
								
							
							
						
						
									
										46
									
								
								src/main.ts
									
									
									
									
									
								
							| @@ -1,5 +1,6 @@ | |||||||
| import * as core from '@actions/core'; | import * as core from '@actions/core'; | ||||||
| import * as installer from './installer'; | import * as installer from './installer'; | ||||||
|  | import fs from 'fs'; | ||||||
| import * as auth from './authutil'; | import * as auth from './authutil'; | ||||||
| import * as path from 'path'; | import * as path from 'path'; | ||||||
| import {restoreCache} from './cache-restore'; | import {restoreCache} from './cache-restore'; | ||||||
| @@ -12,10 +13,7 @@ export async function run() { | |||||||
|     // Version is optional.  If supplied, install / use from the tool cache |     // Version is optional.  If supplied, install / use from the tool cache | ||||||
|     // If not supplied then task is still used to setup proxy, auth, etc... |     // If not supplied then task is still used to setup proxy, auth, etc... | ||||||
|     // |     // | ||||||
|     let version = core.getInput('node-version'); |     let version = resolveVersionInput(); | ||||||
|     if (!version) { |  | ||||||
|       version = core.getInput('version'); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     let arch = core.getInput('architecture'); |     let arch = core.getInput('architecture'); | ||||||
|     const cache = core.getInput('cache'); |     const cache = core.getInput('cache'); | ||||||
| @@ -51,7 +49,8 @@ export async function run() { | |||||||
|       if (isGhes()) { |       if (isGhes()) { | ||||||
|         throw new Error('Caching is not supported on GHES'); |         throw new Error('Caching is not supported on GHES'); | ||||||
|       } |       } | ||||||
|       await restoreCache(cache); |       const cacheDependencyPath = core.getInput('cache-dependency-path'); | ||||||
|  |       await restoreCache(cache, cacheDependencyPath); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     const matchersPath = path.join(__dirname, '../..', '.github'); |     const matchersPath = path.join(__dirname, '../..', '.github'); | ||||||
| @@ -62,8 +61,8 @@ export async function run() { | |||||||
|     core.info( |     core.info( | ||||||
|       `##[add-matcher]${path.join(matchersPath, 'eslint-compact.json')}` |       `##[add-matcher]${path.join(matchersPath, 'eslint-compact.json')}` | ||||||
|     ); |     ); | ||||||
|   } catch (error) { |   } catch (err) { | ||||||
|     core.setFailed(error.message); |     core.setFailed(err.message); | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -73,3 +72,36 @@ function isGhes(): boolean { | |||||||
|   ); |   ); | ||||||
|   return ghUrl.hostname.toUpperCase() !== 'GITHUB.COM'; |   return ghUrl.hostname.toUpperCase() !== 'GITHUB.COM'; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | function resolveVersionInput(): string { | ||||||
|  |   let version = core.getInput('node-version') || core.getInput('version'); | ||||||
|  |   const versionFileInput = core.getInput('node-version-file'); | ||||||
|  |  | ||||||
|  |   if (version && versionFileInput) { | ||||||
|  |     core.warning( | ||||||
|  |       'Both node-version and node-version-file inputs are specified, only node-version will be used' | ||||||
|  |     ); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   if (version) { | ||||||
|  |     return version; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   if (versionFileInput) { | ||||||
|  |     const versionFilePath = path.join( | ||||||
|  |       process.env.GITHUB_WORKSPACE!, | ||||||
|  |       versionFileInput | ||||||
|  |     ); | ||||||
|  |     if (!fs.existsSync(versionFilePath)) { | ||||||
|  |       throw new Error( | ||||||
|  |         `The specified node version file at: ${versionFilePath} does not exist` | ||||||
|  |       ); | ||||||
|  |     } | ||||||
|  |     version = installer.parseNodeVersionFile( | ||||||
|  |       fs.readFileSync(versionFilePath, 'utf8') | ||||||
|  |     ); | ||||||
|  |     core.info(`Resolved ${versionFileInput} as ${version}`); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   return version; | ||||||
|  | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user