You've already forked setup-node
							
							
				mirror of
				https://github.com/actions/setup-node.git
				synced 2025-10-31 07:06:24 +07:00 
			
		
		
		
	Compare commits
	
		
			5 Commits
		
	
	
		
			v4.3.0
			...
			update-mem
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 8cd066d2e7 | |||
| fc5dc8bbe4 | |||
| 8819aae165 | |||
| ba2f076a9c | |||
| d5f102c3e3 | 
							
								
								
									
										58
									
								
								.licenses/npm/lodash.memoize.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								.licenses/npm/lodash.memoize.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @ -0,0 +1,58 @@ | |||||||
|  | --- | ||||||
|  | name: lodash.memoize | ||||||
|  | version: 4.1.2 | ||||||
|  | type: npm | ||||||
|  | summary: The lodash method `_.memoize` exported as a module. | ||||||
|  | homepage: https://lodash.com/ | ||||||
|  | license: mit | ||||||
|  | licenses: | ||||||
|  | - sources: LICENSE | ||||||
|  |   text: | | ||||||
|  |     Copyright jQuery Foundation and other contributors <https://jquery.org/> | ||||||
|  |  | ||||||
|  |     Based on Underscore.js, copyright Jeremy Ashkenas, | ||||||
|  |     DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/> | ||||||
|  |  | ||||||
|  |     This software consists of voluntary contributions made by many | ||||||
|  |     individuals. For exact contribution history, see the revision history | ||||||
|  |     available at https://github.com/lodash/lodash | ||||||
|  |  | ||||||
|  |     The following license applies to all parts of this software except as | ||||||
|  |     documented below: | ||||||
|  |  | ||||||
|  |     ==== | ||||||
|  |  | ||||||
|  |     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. | ||||||
|  |  | ||||||
|  |     ==== | ||||||
|  |  | ||||||
|  |     Copyright and related rights for sample code are waived via CC0. Sample | ||||||
|  |     code is defined as all source code displayed within the prose of the | ||||||
|  |     documentation. | ||||||
|  |  | ||||||
|  |     CC0: http://creativecommons.org/publicdomain/zero/1.0/ | ||||||
|  |  | ||||||
|  |     ==== | ||||||
|  |  | ||||||
|  |     Files located in the node_modules and vendor directories are externally | ||||||
|  |     maintained libraries used by this software which have their own | ||||||
|  |     licenses; we recommend you read them, as their terms may differ from the | ||||||
|  |     terms above. | ||||||
|  | notices: [] | ||||||
| @ -6,8 +6,7 @@ import { | |||||||
|   PackageManagerInfo, |   PackageManagerInfo, | ||||||
|   isCacheFeatureAvailable, |   isCacheFeatureAvailable, | ||||||
|   supportedPackageManagers, |   supportedPackageManagers, | ||||||
|   getCommandOutput, |   getProjectDirectoriesFromCacheDependencyPath | ||||||
|   resetProjectDirectoriesMemoized |  | ||||||
| } from '../src/cache-utils'; | } from '../src/cache-utils'; | ||||||
| import fs from 'fs'; | import fs from 'fs'; | ||||||
| import * as cacheUtils from '../src/cache-utils'; | import * as cacheUtils from '../src/cache-utils'; | ||||||
| @ -123,7 +122,7 @@ describe('cache-utils', () => { | |||||||
|           MockGlobber.create(['/foo', '/bar']) |           MockGlobber.create(['/foo', '/bar']) | ||||||
|       ); |       ); | ||||||
|  |  | ||||||
|       resetProjectDirectoriesMemoized(); |       getProjectDirectoriesFromCacheDependencyPath.cache.clear?.(); | ||||||
|     }); |     }); | ||||||
|  |  | ||||||
|     afterEach(() => { |     afterEach(() => { | ||||||
|  | |||||||
							
								
								
									
										1574
									
								
								dist/cache-save/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1574
									
								
								dist/cache-save/index.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										3198
									
								
								dist/setup/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3198
									
								
								dist/setup/index.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										42
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										42
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							| @ -17,10 +17,12 @@ | |||||||
|         "@actions/http-client": "^1.0.11", |         "@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", | ||||||
|  |         "lodash.memoize": "^4.1.2", | ||||||
|         "semver": "^6.3.1" |         "semver": "^6.3.1" | ||||||
|       }, |       }, | ||||||
|       "devDependencies": { |       "devDependencies": { | ||||||
|         "@types/jest": "^27.0.2", |         "@types/jest": "^27.0.2", | ||||||
|  |         "@types/lodash.memoize": "^4.1.7", | ||||||
|         "@types/node": "^16.11.25", |         "@types/node": "^16.11.25", | ||||||
|         "@types/semver": "^6.0.0", |         "@types/semver": "^6.0.0", | ||||||
|         "@typescript-eslint/eslint-plugin": "^5.54.0", |         "@typescript-eslint/eslint-plugin": "^5.54.0", | ||||||
| @ -1648,6 +1650,21 @@ | |||||||
|       "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", |       "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", | ||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/@types/lodash": { | ||||||
|  |       "version": "4.14.197", | ||||||
|  |       "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.197.tgz", | ||||||
|  |       "integrity": "sha512-BMVOiWs0uNxHVlHBgzTIqJYmj+PgCo4euloGF+5m4okL3rEYzM2EEv78mw8zWSMM57dM7kVIgJ2QDvwHSoCI5g==", | ||||||
|  |       "dev": true | ||||||
|  |     }, | ||||||
|  |     "node_modules/@types/lodash.memoize": { | ||||||
|  |       "version": "4.1.7", | ||||||
|  |       "resolved": "https://registry.npmjs.org/@types/lodash.memoize/-/lodash.memoize-4.1.7.tgz", | ||||||
|  |       "integrity": "sha512-lGN7WeO4vO6sICVpf041Q7BX/9k1Y24Zo3FY0aUezr1QlKznpjzsDk3T3wvH8ofYzoK0QupN9TWcFAFZlyPwQQ==", | ||||||
|  |       "dev": true, | ||||||
|  |       "dependencies": { | ||||||
|  |         "@types/lodash": "*" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "node_modules/@types/node": { |     "node_modules/@types/node": { | ||||||
|       "version": "16.11.25", |       "version": "16.11.25", | ||||||
|       "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.25.tgz", |       "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.25.tgz", | ||||||
| @ -4972,6 +4989,11 @@ | |||||||
|       "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", |       "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", | ||||||
|       "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" |       "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/lodash.memoize": { | ||||||
|  |       "version": "4.1.2", | ||||||
|  |       "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", | ||||||
|  |       "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==" | ||||||
|  |     }, | ||||||
|     "node_modules/lodash.merge": { |     "node_modules/lodash.merge": { | ||||||
|       "version": "4.6.2", |       "version": "4.6.2", | ||||||
|       "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", |       "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", | ||||||
| @ -7780,6 +7802,21 @@ | |||||||
|       "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", |       "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", | ||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|  |     "@types/lodash": { | ||||||
|  |       "version": "4.14.197", | ||||||
|  |       "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.197.tgz", | ||||||
|  |       "integrity": "sha512-BMVOiWs0uNxHVlHBgzTIqJYmj+PgCo4euloGF+5m4okL3rEYzM2EEv78mw8zWSMM57dM7kVIgJ2QDvwHSoCI5g==", | ||||||
|  |       "dev": true | ||||||
|  |     }, | ||||||
|  |     "@types/lodash.memoize": { | ||||||
|  |       "version": "4.1.7", | ||||||
|  |       "resolved": "https://registry.npmjs.org/@types/lodash.memoize/-/lodash.memoize-4.1.7.tgz", | ||||||
|  |       "integrity": "sha512-lGN7WeO4vO6sICVpf041Q7BX/9k1Y24Zo3FY0aUezr1QlKznpjzsDk3T3wvH8ofYzoK0QupN9TWcFAFZlyPwQQ==", | ||||||
|  |       "dev": true, | ||||||
|  |       "requires": { | ||||||
|  |         "@types/lodash": "*" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "@types/node": { |     "@types/node": { | ||||||
|       "version": "16.11.25", |       "version": "16.11.25", | ||||||
|       "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.25.tgz", |       "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.25.tgz", | ||||||
| @ -10244,6 +10281,11 @@ | |||||||
|       "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", |       "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", | ||||||
|       "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" |       "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" | ||||||
|     }, |     }, | ||||||
|  |     "lodash.memoize": { | ||||||
|  |       "version": "4.1.2", | ||||||
|  |       "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", | ||||||
|  |       "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==" | ||||||
|  |     }, | ||||||
|     "lodash.merge": { |     "lodash.merge": { | ||||||
|       "version": "4.6.2", |       "version": "4.6.2", | ||||||
|       "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", |       "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", | ||||||
|  | |||||||
| @ -33,10 +33,12 @@ | |||||||
|     "@actions/http-client": "^1.0.11", |     "@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", | ||||||
|  |     "lodash.memoize": "^4.1.2", | ||||||
|     "semver": "^6.3.1" |     "semver": "^6.3.1" | ||||||
|   }, |   }, | ||||||
|   "devDependencies": { |   "devDependencies": { | ||||||
|     "@types/jest": "^27.0.2", |     "@types/jest": "^27.0.2", | ||||||
|  |     "@types/lodash.memoize": "^4.1.7", | ||||||
|     "@types/node": "^16.11.25", |     "@types/node": "^16.11.25", | ||||||
|     "@types/semver": "^6.0.0", |     "@types/semver": "^6.0.0", | ||||||
|     "@typescript-eslint/eslint-plugin": "^5.54.0", |     "@typescript-eslint/eslint-plugin": "^5.54.0", | ||||||
|  | |||||||
| @ -2,6 +2,7 @@ import * as core from '@actions/core'; | |||||||
| import * as exec from '@actions/exec'; | import * as exec from '@actions/exec'; | ||||||
| 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 memoize from 'lodash.memoize'; | ||||||
| import path from 'path'; | import path from 'path'; | ||||||
| import fs from 'fs'; | import fs from 'fs'; | ||||||
| import {unique} from './util'; | import {unique} from './util'; | ||||||
| @ -111,50 +112,38 @@ export const getPackageManagerInfo = async (packageManager: string) => { | |||||||
| }; | }; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  |  * Expands (converts) the string input `cache-dependency-path` to list of directories that | ||||||
|  |  * may be project roots | ||||||
|  |  * | ||||||
|  * getProjectDirectoriesFromCacheDependencyPath is called twice during `restoreCache` |  * getProjectDirectoriesFromCacheDependencyPath is called twice during `restoreCache` | ||||||
|  *  - first through `getCacheDirectories` |  *  - first through `getCacheDirectories` | ||||||
|  *  - second from `repoHasYarn3ManagedCache` |  *  - second from `repoHasYarn3ManagedCache` | ||||||
|  * |  * | ||||||
|  *  it contains expensive IO operation and thus should be memoized |  * it contains expensive IO operation and thus should be memoized | ||||||
|  */ |  * | ||||||
|  |  | ||||||
| let projectDirectoriesMemoized: string[] | null = null; |  | ||||||
| /** |  | ||||||
|  * unit test must reset memoized variables |  | ||||||
|  */ |  | ||||||
| export const resetProjectDirectoriesMemoized = () => |  | ||||||
|   (projectDirectoriesMemoized = null); |  | ||||||
| /** |  | ||||||
|  * Expands (converts) the string input `cache-dependency-path` to list of directories that |  | ||||||
|  * may be project roots |  | ||||||
|  * @param cacheDependencyPath - either a single string or multiline string with possible glob patterns |  * @param cacheDependencyPath - either a single string or multiline string with possible glob patterns | ||||||
|  *                              expected to be the result of `core.getInput('cache-dependency-path')` |  *                              expected to be the result of `core.getInput('cache-dependency-path')` | ||||||
|  * @return list of directories and possible |  * @return list of directories | ||||||
|  */ |  */ | ||||||
| const getProjectDirectoriesFromCacheDependencyPath = async ( | export const getProjectDirectoriesFromCacheDependencyPath = memoize( | ||||||
|   cacheDependencyPath: string |   async (cacheDependencyPath: string): Promise<string[]> => { | ||||||
| ): Promise<string[]> => { |     const globber = await glob.create(cacheDependencyPath); | ||||||
|   if (projectDirectoriesMemoized !== null) { |     const cacheDependenciesPaths = await globber.glob(); | ||||||
|     return projectDirectoriesMemoized; |  | ||||||
|  |     const existingDirectories: string[] = cacheDependenciesPaths | ||||||
|  |       .map(path.dirname) | ||||||
|  |       .filter(unique()) | ||||||
|  |       .map(dirName => fs.realpathSync(dirName)) | ||||||
|  |       .filter(directory => fs.lstatSync(directory).isDirectory()); | ||||||
|  |  | ||||||
|  |     if (!existingDirectories.length) | ||||||
|  |       core.warning( | ||||||
|  |         `No existing directories found containing cache-dependency-path="${cacheDependencyPath}"` | ||||||
|  |       ); | ||||||
|  |  | ||||||
|  |     return existingDirectories; | ||||||
|   } |   } | ||||||
|  | ); | ||||||
|   const globber = await glob.create(cacheDependencyPath); |  | ||||||
|   const cacheDependenciesPaths = await globber.glob(); |  | ||||||
|  |  | ||||||
|   const existingDirectories: string[] = cacheDependenciesPaths |  | ||||||
|     .map(path.dirname) |  | ||||||
|     .filter(unique()) |  | ||||||
|     .map(dirName => fs.realpathSync(dirName)) |  | ||||||
|     .filter(directory => fs.lstatSync(directory).isDirectory()); |  | ||||||
|  |  | ||||||
|   if (!existingDirectories.length) |  | ||||||
|     core.warning( |  | ||||||
|       `No existing directories found containing cache-dependency-path="${cacheDependencyPath}"` |  | ||||||
|     ); |  | ||||||
|  |  | ||||||
|   projectDirectoriesMemoized = existingDirectories; |  | ||||||
|   return existingDirectories; |  | ||||||
| }; |  | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * Finds the cache directories configured for the repo if cache-dependency-path is not empty |  * Finds the cache directories configured for the repo if cache-dependency-path is not empty | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user
	