mirror of
				https://github.com/actions/cache.git
				synced 2025-10-31 23:36:22 +07:00 
			
		
		
		
	Compare commits
	
		
			22 Commits
		
	
	
		
			master
			...
			t-dedah/ne
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 5b2559885a | |||
| ade59b804f | |||
| a57932faba | |||
| 04b13caea4 | |||
| 941bc71a24 | |||
| 08d8639046 | |||
| a2f324eeb7 | |||
| 35f4702f6c | |||
| e050ebdd63 | |||
| 0d47d164e9 | |||
| a89cefe318 | |||
| e2d614414f | |||
| 532752012e | |||
| b26da1fc31 | |||
| ce61cc4d24 | |||
| 268ae08cbc | |||
| b4ac56fa43 | |||
| 24f54d74c0 | |||
| 8d99052cbc | |||
| 58a0402e7d | |||
| 7920f570b8 | |||
| cfa1b7695d | 
							
								
								
									
										1
									
								
								.github/workflows/check-dist.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.github/workflows/check-dist.yml
									
									
									
									
										vendored
									
									
								
							| @ -27,6 +27,7 @@ jobs: | ||||
|         uses: actions/setup-node@v3 | ||||
|         with: | ||||
|           node-version: 16.x | ||||
|           cache: npm | ||||
|       - name: Install dependencies | ||||
|         run: npm ci | ||||
|       - name: Rebuild the dist/ directory | ||||
|  | ||||
							
								
								
									
										12
									
								
								.github/workflows/workflow.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										12
									
								
								.github/workflows/workflow.yml
									
									
									
									
										vendored
									
									
								
							| @ -25,17 +25,7 @@ jobs: | ||||
|       uses: actions/setup-node@v3 | ||||
|       with: | ||||
|         node-version: 16.x | ||||
|     - name: Determine npm cache directory | ||||
|       id: npm-cache | ||||
|       run: | | ||||
|         echo "::set-output name=dir::$(npm config get cache)" | ||||
|     - name: Restore npm cache | ||||
|       uses: actions/cache@v3 | ||||
|       with: | ||||
|         path: ${{ steps.npm-cache.outputs.dir }} | ||||
|         key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} | ||||
|         restore-keys: | | ||||
|           ${{ runner.os }}-node- | ||||
|         cache: npm | ||||
|     - run: npm ci | ||||
|     - name: Prettier Format Check | ||||
|       run: npm run format-check | ||||
|  | ||||
							
								
								
									
										137
									
								
								dist/restore/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										137
									
								
								dist/restore/index.js
									
									
									
									
										vendored
									
									
								
							| @ -1892,10 +1892,10 @@ function serial(list, iterator, callback) | ||||
| module.exports = minimatch | ||||
| minimatch.Minimatch = Minimatch | ||||
| 
 | ||||
| var path = { sep: '/' } | ||||
| try { | ||||
|   path = __webpack_require__(622) | ||||
| } catch (er) {} | ||||
| var path = (function () { try { return __webpack_require__(622) } catch (e) {}}()) || { | ||||
|   sep: '/' | ||||
| } | ||||
| minimatch.sep = path.sep | ||||
| 
 | ||||
| var GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {} | ||||
| var expand = __webpack_require__(306) | ||||
| @ -1947,43 +1947,64 @@ function filter (pattern, options) { | ||||
| } | ||||
| 
 | ||||
| function ext (a, b) { | ||||
|   a = a || {} | ||||
|   b = b || {} | ||||
|   var t = {} | ||||
|   Object.keys(b).forEach(function (k) { | ||||
|     t[k] = b[k] | ||||
|   }) | ||||
|   Object.keys(a).forEach(function (k) { | ||||
|     t[k] = a[k] | ||||
|   }) | ||||
|   Object.keys(b).forEach(function (k) { | ||||
|     t[k] = b[k] | ||||
|   }) | ||||
|   return t | ||||
| } | ||||
| 
 | ||||
| minimatch.defaults = function (def) { | ||||
|   if (!def || !Object.keys(def).length) return minimatch | ||||
|   if (!def || typeof def !== 'object' || !Object.keys(def).length) { | ||||
|     return minimatch | ||||
|   } | ||||
| 
 | ||||
|   var orig = minimatch | ||||
| 
 | ||||
|   var m = function minimatch (p, pattern, options) { | ||||
|     return orig.minimatch(p, pattern, ext(def, options)) | ||||
|     return orig(p, pattern, ext(def, options)) | ||||
|   } | ||||
| 
 | ||||
|   m.Minimatch = function Minimatch (pattern, options) { | ||||
|     return new orig.Minimatch(pattern, ext(def, options)) | ||||
|   } | ||||
|   m.Minimatch.defaults = function defaults (options) { | ||||
|     return orig.defaults(ext(def, options)).Minimatch | ||||
|   } | ||||
| 
 | ||||
|   m.filter = function filter (pattern, options) { | ||||
|     return orig.filter(pattern, ext(def, options)) | ||||
|   } | ||||
| 
 | ||||
|   m.defaults = function defaults (options) { | ||||
|     return orig.defaults(ext(def, options)) | ||||
|   } | ||||
| 
 | ||||
|   m.makeRe = function makeRe (pattern, options) { | ||||
|     return orig.makeRe(pattern, ext(def, options)) | ||||
|   } | ||||
| 
 | ||||
|   m.braceExpand = function braceExpand (pattern, options) { | ||||
|     return orig.braceExpand(pattern, ext(def, options)) | ||||
|   } | ||||
| 
 | ||||
|   m.match = function (list, pattern, options) { | ||||
|     return orig.match(list, pattern, ext(def, options)) | ||||
|   } | ||||
| 
 | ||||
|   return m | ||||
| } | ||||
| 
 | ||||
| Minimatch.defaults = function (def) { | ||||
|   if (!def || !Object.keys(def).length) return Minimatch | ||||
|   return minimatch.defaults(def).Minimatch | ||||
| } | ||||
| 
 | ||||
| function minimatch (p, pattern, options) { | ||||
|   if (typeof pattern !== 'string') { | ||||
|     throw new TypeError('glob pattern string required') | ||||
|   } | ||||
|   assertValidPattern(pattern) | ||||
| 
 | ||||
|   if (!options) options = {} | ||||
| 
 | ||||
| @ -1992,9 +2013,6 @@ function minimatch (p, pattern, options) { | ||||
|     return false | ||||
|   } | ||||
| 
 | ||||
|   // "" only matches ""
 | ||||
|   if (pattern.trim() === '') return p === '' | ||||
| 
 | ||||
|   return new Minimatch(pattern, options).match(p) | ||||
| } | ||||
| 
 | ||||
| @ -2003,15 +2021,14 @@ function Minimatch (pattern, options) { | ||||
|     return new Minimatch(pattern, options) | ||||
|   } | ||||
| 
 | ||||
|   if (typeof pattern !== 'string') { | ||||
|     throw new TypeError('glob pattern string required') | ||||
|   } | ||||
|   assertValidPattern(pattern) | ||||
| 
 | ||||
|   if (!options) options = {} | ||||
| 
 | ||||
|   pattern = pattern.trim() | ||||
| 
 | ||||
|   // windows support: need to use /, not \
 | ||||
|   if (path.sep !== '/') { | ||||
|   if (!options.allowWindowsEscape && path.sep !== '/') { | ||||
|     pattern = pattern.split(path.sep).join('/') | ||||
|   } | ||||
| 
 | ||||
| @ -2022,6 +2039,7 @@ function Minimatch (pattern, options) { | ||||
|   this.negate = false | ||||
|   this.comment = false | ||||
|   this.empty = false | ||||
|   this.partial = !!options.partial | ||||
| 
 | ||||
|   // make the set of regexps etc.
 | ||||
|   this.make() | ||||
| @ -2031,9 +2049,6 @@ Minimatch.prototype.debug = function () {} | ||||
| 
 | ||||
| Minimatch.prototype.make = make | ||||
| function make () { | ||||
|   // don't do it more than once.
 | ||||
|   if (this._made) return | ||||
| 
 | ||||
|   var pattern = this.pattern | ||||
|   var options = this.options | ||||
| 
 | ||||
| @ -2053,7 +2068,7 @@ function make () { | ||||
|   // step 2: expand braces
 | ||||
|   var set = this.globSet = this.braceExpand() | ||||
| 
 | ||||
|   if (options.debug) this.debug = console.error | ||||
|   if (options.debug) this.debug = function debug() { console.error.apply(console, arguments) } | ||||
| 
 | ||||
|   this.debug(this.pattern, set) | ||||
| 
 | ||||
| @ -2133,12 +2148,11 @@ function braceExpand (pattern, options) { | ||||
|   pattern = typeof pattern === 'undefined' | ||||
|     ? this.pattern : pattern | ||||
| 
 | ||||
|   if (typeof pattern === 'undefined') { | ||||
|     throw new TypeError('undefined pattern') | ||||
|   } | ||||
|   assertValidPattern(pattern) | ||||
| 
 | ||||
|   if (options.nobrace || | ||||
|     !pattern.match(/\{.*\}/)) { | ||||
|   // Thanks to Yeting Li <https://github.com/yetingli> for
 | ||||
|   // improving this regexp to avoid a ReDOS vulnerability.
 | ||||
|   if (options.nobrace || !/\{(?:(?!\{).)*\}/.test(pattern)) { | ||||
|     // shortcut. no need to expand.
 | ||||
|     return [pattern] | ||||
|   } | ||||
| @ -2146,6 +2160,17 @@ function braceExpand (pattern, options) { | ||||
|   return expand(pattern) | ||||
| } | ||||
| 
 | ||||
| var MAX_PATTERN_LENGTH = 1024 * 64 | ||||
| var assertValidPattern = function (pattern) { | ||||
|   if (typeof pattern !== 'string') { | ||||
|     throw new TypeError('invalid pattern') | ||||
|   } | ||||
| 
 | ||||
|   if (pattern.length > MAX_PATTERN_LENGTH) { | ||||
|     throw new TypeError('pattern is too long') | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| // parse a component of the expanded set.
 | ||||
| // At this point, no pattern may contain "/" in it
 | ||||
| // so we're going to return a 2d array, where each entry is the full
 | ||||
| @ -2160,14 +2185,17 @@ function braceExpand (pattern, options) { | ||||
| Minimatch.prototype.parse = parse | ||||
| var SUBPARSE = {} | ||||
| function parse (pattern, isSub) { | ||||
|   if (pattern.length > 1024 * 64) { | ||||
|     throw new TypeError('pattern is too long') | ||||
|   } | ||||
|   assertValidPattern(pattern) | ||||
| 
 | ||||
|   var options = this.options | ||||
| 
 | ||||
|   // shortcuts
 | ||||
|   if (!options.noglobstar && pattern === '**') return GLOBSTAR | ||||
|   if (pattern === '**') { | ||||
|     if (!options.noglobstar) | ||||
|       return GLOBSTAR | ||||
|     else | ||||
|       pattern = '*' | ||||
|   } | ||||
|   if (pattern === '') return '' | ||||
| 
 | ||||
|   var re = '' | ||||
| @ -2223,10 +2251,12 @@ function parse (pattern, isSub) { | ||||
|     } | ||||
| 
 | ||||
|     switch (c) { | ||||
|       case '/': | ||||
|       /* istanbul ignore next */ | ||||
|       case '/': { | ||||
|         // completely not allowed, even escaped.
 | ||||
|         // Should already be path-split by now.
 | ||||
|         return false | ||||
|       } | ||||
| 
 | ||||
|       case '\\': | ||||
|         clearStateChar() | ||||
| @ -2345,7 +2375,6 @@ function parse (pattern, isSub) { | ||||
| 
 | ||||
|         // handle the case where we left a class open.
 | ||||
|         // "[z-a]" is valid, equivalent to "\[z-a\]"
 | ||||
|         if (inClass) { | ||||
|         // split where the last [ was, make sure we don't have
 | ||||
|         // an invalid re. if so, re-walk the contents of the
 | ||||
|         // would-be class to re-translate any characters that
 | ||||
| @ -2364,7 +2393,6 @@ function parse (pattern, isSub) { | ||||
|           inClass = false | ||||
|           continue | ||||
|         } | ||||
|         } | ||||
| 
 | ||||
|         // finish up the class.
 | ||||
|         hasMagic = true | ||||
| @ -2447,9 +2475,7 @@ function parse (pattern, isSub) { | ||||
|   // something that could conceivably capture a dot
 | ||||
|   var addPatternStart = false | ||||
|   switch (re.charAt(0)) { | ||||
|     case '.': | ||||
|     case '[': | ||||
|     case '(': addPatternStart = true | ||||
|     case '[': case '.': case '(': addPatternStart = true | ||||
|   } | ||||
| 
 | ||||
|   // Hack to work around lack of negative lookbehind in JS
 | ||||
| @ -2511,7 +2537,7 @@ function parse (pattern, isSub) { | ||||
|   var flags = options.nocase ? 'i' : '' | ||||
|   try { | ||||
|     var regExp = new RegExp('^' + re + '$', flags) | ||||
|   } catch (er) { | ||||
|   } catch (er) /* istanbul ignore next - should be impossible */ { | ||||
|     // If it was an invalid regular expression, then it can't match
 | ||||
|     // anything.  This trick looks for a character after the end of
 | ||||
|     // the string, which is of course impossible, except in multi-line
 | ||||
| @ -2569,7 +2595,7 @@ function makeRe () { | ||||
| 
 | ||||
|   try { | ||||
|     this.regexp = new RegExp(re, flags) | ||||
|   } catch (ex) { | ||||
|   } catch (ex) /* istanbul ignore next - should be impossible */ { | ||||
|     this.regexp = false | ||||
|   } | ||||
|   return this.regexp | ||||
| @ -2587,8 +2613,8 @@ minimatch.match = function (list, pattern, options) { | ||||
|   return list | ||||
| } | ||||
| 
 | ||||
| Minimatch.prototype.match = match | ||||
| function match (f, partial) { | ||||
| Minimatch.prototype.match = function match (f, partial) { | ||||
|   if (typeof partial === 'undefined') partial = this.partial | ||||
|   this.debug('match', f, this.pattern) | ||||
|   // short-circuit in the case of busted things.
 | ||||
|   // comments, etc.
 | ||||
| @ -2670,6 +2696,7 @@ Minimatch.prototype.matchOne = function (file, pattern, partial) { | ||||
| 
 | ||||
|     // should be impossible.
 | ||||
|     // some invalid regexp stuff in the set.
 | ||||
|     /* istanbul ignore if */ | ||||
|     if (p === false) return false | ||||
| 
 | ||||
|     if (p === GLOBSTAR) { | ||||
| @ -2743,6 +2770,7 @@ Minimatch.prototype.matchOne = function (file, pattern, partial) { | ||||
|       // no match was found.
 | ||||
|       // However, in partial mode, we can't say this is necessarily over.
 | ||||
|       // If there's more *pattern* left, then
 | ||||
|       /* istanbul ignore if */ | ||||
|       if (partial) { | ||||
|         // ran out of file
 | ||||
|         this.debug('\n>>> no match, partial?', file, fr, pattern, pr) | ||||
| @ -2756,11 +2784,7 @@ Minimatch.prototype.matchOne = function (file, pattern, partial) { | ||||
|     // patterns with magic have been turned into regexps.
 | ||||
|     var hit | ||||
|     if (typeof p === 'string') { | ||||
|       if (options.nocase) { | ||||
|         hit = f.toLowerCase() === p.toLowerCase() | ||||
|       } else { | ||||
|       hit = f === p | ||||
|       } | ||||
|       this.debug('string match', p, f, hit) | ||||
|     } else { | ||||
|       hit = f.match(p) | ||||
| @ -2791,16 +2815,16 @@ Minimatch.prototype.matchOne = function (file, pattern, partial) { | ||||
|     // this is ok if we're doing the match as part of
 | ||||
|     // a glob fs traversal.
 | ||||
|     return partial | ||||
|   } else if (pi === pl) { | ||||
|   } else /* istanbul ignore else */ if (pi === pl) { | ||||
|     // ran out of pattern, still have file left.
 | ||||
|     // this is only acceptable if we're on the very last
 | ||||
|     // empty segment of a file with a trailing slash.
 | ||||
|     // a/* should match a/b/
 | ||||
|     var emptyFileEnd = (fi === fl - 1) && (file[fi] === '') | ||||
|     return emptyFileEnd | ||||
|     return (fi === fl - 1) && (file[fi] === '') | ||||
|   } | ||||
| 
 | ||||
|   // should be unreachable.
 | ||||
|   /* istanbul ignore next */ | ||||
|   throw new Error('wtf?') | ||||
| } | ||||
| 
 | ||||
| @ -38465,17 +38489,16 @@ function getInputAsInt(name, options) { | ||||
| } | ||||
| exports.getInputAsInt = getInputAsInt; | ||||
| function isCacheFeatureAvailable() { | ||||
|     if (!cache.isFeatureAvailable()) { | ||||
|     if (cache.isFeatureAvailable()) { | ||||
|         return true; | ||||
|     } | ||||
|     if (isGhes()) { | ||||
|         logWarning(`Cache action is only supported on GHES version >= 3.5. If you are on version >=3.5 Please check with GHES admin if Actions cache service is enabled or not.
 | ||||
| Otherwise please upgrade to GHES version >= 3.5 and If you are also using Github Connect, please unretire the actions/cache namespace before upgrade (see https://docs.github.com/en/enterprise-server@3.5/admin/github-actions/managing-access-to-actions-from-githubcom/enabling-automatic-access-to-githubcom-actions-using-github-connect#automatic-retirement-of-namespaces-for-actions-accessed-on-githubcom)`);
 | ||||
|         } | ||||
|         else { | ||||
|             logWarning("An internal error has occurred in cache backend. Please check https://www.githubstatus.com/ for any ongoing issue in actions."); | ||||
|         } | ||||
|         return false; | ||||
|     } | ||||
|     return true; | ||||
|     logWarning("An internal error has occurred in cache backend. Please check https://www.githubstatus.com/ for any ongoing issue in actions."); | ||||
|     return false; | ||||
| } | ||||
| exports.isCacheFeatureAvailable = isCacheFeatureAvailable; | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										137
									
								
								dist/save/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										137
									
								
								dist/save/index.js
									
									
									
									
										vendored
									
									
								
							| @ -1892,10 +1892,10 @@ function serial(list, iterator, callback) | ||||
| module.exports = minimatch | ||||
| minimatch.Minimatch = Minimatch | ||||
| 
 | ||||
| var path = { sep: '/' } | ||||
| try { | ||||
|   path = __webpack_require__(622) | ||||
| } catch (er) {} | ||||
| var path = (function () { try { return __webpack_require__(622) } catch (e) {}}()) || { | ||||
|   sep: '/' | ||||
| } | ||||
| minimatch.sep = path.sep | ||||
| 
 | ||||
| var GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {} | ||||
| var expand = __webpack_require__(306) | ||||
| @ -1947,43 +1947,64 @@ function filter (pattern, options) { | ||||
| } | ||||
| 
 | ||||
| function ext (a, b) { | ||||
|   a = a || {} | ||||
|   b = b || {} | ||||
|   var t = {} | ||||
|   Object.keys(b).forEach(function (k) { | ||||
|     t[k] = b[k] | ||||
|   }) | ||||
|   Object.keys(a).forEach(function (k) { | ||||
|     t[k] = a[k] | ||||
|   }) | ||||
|   Object.keys(b).forEach(function (k) { | ||||
|     t[k] = b[k] | ||||
|   }) | ||||
|   return t | ||||
| } | ||||
| 
 | ||||
| minimatch.defaults = function (def) { | ||||
|   if (!def || !Object.keys(def).length) return minimatch | ||||
|   if (!def || typeof def !== 'object' || !Object.keys(def).length) { | ||||
|     return minimatch | ||||
|   } | ||||
| 
 | ||||
|   var orig = minimatch | ||||
| 
 | ||||
|   var m = function minimatch (p, pattern, options) { | ||||
|     return orig.minimatch(p, pattern, ext(def, options)) | ||||
|     return orig(p, pattern, ext(def, options)) | ||||
|   } | ||||
| 
 | ||||
|   m.Minimatch = function Minimatch (pattern, options) { | ||||
|     return new orig.Minimatch(pattern, ext(def, options)) | ||||
|   } | ||||
|   m.Minimatch.defaults = function defaults (options) { | ||||
|     return orig.defaults(ext(def, options)).Minimatch | ||||
|   } | ||||
| 
 | ||||
|   m.filter = function filter (pattern, options) { | ||||
|     return orig.filter(pattern, ext(def, options)) | ||||
|   } | ||||
| 
 | ||||
|   m.defaults = function defaults (options) { | ||||
|     return orig.defaults(ext(def, options)) | ||||
|   } | ||||
| 
 | ||||
|   m.makeRe = function makeRe (pattern, options) { | ||||
|     return orig.makeRe(pattern, ext(def, options)) | ||||
|   } | ||||
| 
 | ||||
|   m.braceExpand = function braceExpand (pattern, options) { | ||||
|     return orig.braceExpand(pattern, ext(def, options)) | ||||
|   } | ||||
| 
 | ||||
|   m.match = function (list, pattern, options) { | ||||
|     return orig.match(list, pattern, ext(def, options)) | ||||
|   } | ||||
| 
 | ||||
|   return m | ||||
| } | ||||
| 
 | ||||
| Minimatch.defaults = function (def) { | ||||
|   if (!def || !Object.keys(def).length) return Minimatch | ||||
|   return minimatch.defaults(def).Minimatch | ||||
| } | ||||
| 
 | ||||
| function minimatch (p, pattern, options) { | ||||
|   if (typeof pattern !== 'string') { | ||||
|     throw new TypeError('glob pattern string required') | ||||
|   } | ||||
|   assertValidPattern(pattern) | ||||
| 
 | ||||
|   if (!options) options = {} | ||||
| 
 | ||||
| @ -1992,9 +2013,6 @@ function minimatch (p, pattern, options) { | ||||
|     return false | ||||
|   } | ||||
| 
 | ||||
|   // "" only matches ""
 | ||||
|   if (pattern.trim() === '') return p === '' | ||||
| 
 | ||||
|   return new Minimatch(pattern, options).match(p) | ||||
| } | ||||
| 
 | ||||
| @ -2003,15 +2021,14 @@ function Minimatch (pattern, options) { | ||||
|     return new Minimatch(pattern, options) | ||||
|   } | ||||
| 
 | ||||
|   if (typeof pattern !== 'string') { | ||||
|     throw new TypeError('glob pattern string required') | ||||
|   } | ||||
|   assertValidPattern(pattern) | ||||
| 
 | ||||
|   if (!options) options = {} | ||||
| 
 | ||||
|   pattern = pattern.trim() | ||||
| 
 | ||||
|   // windows support: need to use /, not \
 | ||||
|   if (path.sep !== '/') { | ||||
|   if (!options.allowWindowsEscape && path.sep !== '/') { | ||||
|     pattern = pattern.split(path.sep).join('/') | ||||
|   } | ||||
| 
 | ||||
| @ -2022,6 +2039,7 @@ function Minimatch (pattern, options) { | ||||
|   this.negate = false | ||||
|   this.comment = false | ||||
|   this.empty = false | ||||
|   this.partial = !!options.partial | ||||
| 
 | ||||
|   // make the set of regexps etc.
 | ||||
|   this.make() | ||||
| @ -2031,9 +2049,6 @@ Minimatch.prototype.debug = function () {} | ||||
| 
 | ||||
| Minimatch.prototype.make = make | ||||
| function make () { | ||||
|   // don't do it more than once.
 | ||||
|   if (this._made) return | ||||
| 
 | ||||
|   var pattern = this.pattern | ||||
|   var options = this.options | ||||
| 
 | ||||
| @ -2053,7 +2068,7 @@ function make () { | ||||
|   // step 2: expand braces
 | ||||
|   var set = this.globSet = this.braceExpand() | ||||
| 
 | ||||
|   if (options.debug) this.debug = console.error | ||||
|   if (options.debug) this.debug = function debug() { console.error.apply(console, arguments) } | ||||
| 
 | ||||
|   this.debug(this.pattern, set) | ||||
| 
 | ||||
| @ -2133,12 +2148,11 @@ function braceExpand (pattern, options) { | ||||
|   pattern = typeof pattern === 'undefined' | ||||
|     ? this.pattern : pattern | ||||
| 
 | ||||
|   if (typeof pattern === 'undefined') { | ||||
|     throw new TypeError('undefined pattern') | ||||
|   } | ||||
|   assertValidPattern(pattern) | ||||
| 
 | ||||
|   if (options.nobrace || | ||||
|     !pattern.match(/\{.*\}/)) { | ||||
|   // Thanks to Yeting Li <https://github.com/yetingli> for
 | ||||
|   // improving this regexp to avoid a ReDOS vulnerability.
 | ||||
|   if (options.nobrace || !/\{(?:(?!\{).)*\}/.test(pattern)) { | ||||
|     // shortcut. no need to expand.
 | ||||
|     return [pattern] | ||||
|   } | ||||
| @ -2146,6 +2160,17 @@ function braceExpand (pattern, options) { | ||||
|   return expand(pattern) | ||||
| } | ||||
| 
 | ||||
| var MAX_PATTERN_LENGTH = 1024 * 64 | ||||
| var assertValidPattern = function (pattern) { | ||||
|   if (typeof pattern !== 'string') { | ||||
|     throw new TypeError('invalid pattern') | ||||
|   } | ||||
| 
 | ||||
|   if (pattern.length > MAX_PATTERN_LENGTH) { | ||||
|     throw new TypeError('pattern is too long') | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| // parse a component of the expanded set.
 | ||||
| // At this point, no pattern may contain "/" in it
 | ||||
| // so we're going to return a 2d array, where each entry is the full
 | ||||
| @ -2160,14 +2185,17 @@ function braceExpand (pattern, options) { | ||||
| Minimatch.prototype.parse = parse | ||||
| var SUBPARSE = {} | ||||
| function parse (pattern, isSub) { | ||||
|   if (pattern.length > 1024 * 64) { | ||||
|     throw new TypeError('pattern is too long') | ||||
|   } | ||||
|   assertValidPattern(pattern) | ||||
| 
 | ||||
|   var options = this.options | ||||
| 
 | ||||
|   // shortcuts
 | ||||
|   if (!options.noglobstar && pattern === '**') return GLOBSTAR | ||||
|   if (pattern === '**') { | ||||
|     if (!options.noglobstar) | ||||
|       return GLOBSTAR | ||||
|     else | ||||
|       pattern = '*' | ||||
|   } | ||||
|   if (pattern === '') return '' | ||||
| 
 | ||||
|   var re = '' | ||||
| @ -2223,10 +2251,12 @@ function parse (pattern, isSub) { | ||||
|     } | ||||
| 
 | ||||
|     switch (c) { | ||||
|       case '/': | ||||
|       /* istanbul ignore next */ | ||||
|       case '/': { | ||||
|         // completely not allowed, even escaped.
 | ||||
|         // Should already be path-split by now.
 | ||||
|         return false | ||||
|       } | ||||
| 
 | ||||
|       case '\\': | ||||
|         clearStateChar() | ||||
| @ -2345,7 +2375,6 @@ function parse (pattern, isSub) { | ||||
| 
 | ||||
|         // handle the case where we left a class open.
 | ||||
|         // "[z-a]" is valid, equivalent to "\[z-a\]"
 | ||||
|         if (inClass) { | ||||
|         // split where the last [ was, make sure we don't have
 | ||||
|         // an invalid re. if so, re-walk the contents of the
 | ||||
|         // would-be class to re-translate any characters that
 | ||||
| @ -2364,7 +2393,6 @@ function parse (pattern, isSub) { | ||||
|           inClass = false | ||||
|           continue | ||||
|         } | ||||
|         } | ||||
| 
 | ||||
|         // finish up the class.
 | ||||
|         hasMagic = true | ||||
| @ -2447,9 +2475,7 @@ function parse (pattern, isSub) { | ||||
|   // something that could conceivably capture a dot
 | ||||
|   var addPatternStart = false | ||||
|   switch (re.charAt(0)) { | ||||
|     case '.': | ||||
|     case '[': | ||||
|     case '(': addPatternStart = true | ||||
|     case '[': case '.': case '(': addPatternStart = true | ||||
|   } | ||||
| 
 | ||||
|   // Hack to work around lack of negative lookbehind in JS
 | ||||
| @ -2511,7 +2537,7 @@ function parse (pattern, isSub) { | ||||
|   var flags = options.nocase ? 'i' : '' | ||||
|   try { | ||||
|     var regExp = new RegExp('^' + re + '$', flags) | ||||
|   } catch (er) { | ||||
|   } catch (er) /* istanbul ignore next - should be impossible */ { | ||||
|     // If it was an invalid regular expression, then it can't match
 | ||||
|     // anything.  This trick looks for a character after the end of
 | ||||
|     // the string, which is of course impossible, except in multi-line
 | ||||
| @ -2569,7 +2595,7 @@ function makeRe () { | ||||
| 
 | ||||
|   try { | ||||
|     this.regexp = new RegExp(re, flags) | ||||
|   } catch (ex) { | ||||
|   } catch (ex) /* istanbul ignore next - should be impossible */ { | ||||
|     this.regexp = false | ||||
|   } | ||||
|   return this.regexp | ||||
| @ -2587,8 +2613,8 @@ minimatch.match = function (list, pattern, options) { | ||||
|   return list | ||||
| } | ||||
| 
 | ||||
| Minimatch.prototype.match = match | ||||
| function match (f, partial) { | ||||
| Minimatch.prototype.match = function match (f, partial) { | ||||
|   if (typeof partial === 'undefined') partial = this.partial | ||||
|   this.debug('match', f, this.pattern) | ||||
|   // short-circuit in the case of busted things.
 | ||||
|   // comments, etc.
 | ||||
| @ -2670,6 +2696,7 @@ Minimatch.prototype.matchOne = function (file, pattern, partial) { | ||||
| 
 | ||||
|     // should be impossible.
 | ||||
|     // some invalid regexp stuff in the set.
 | ||||
|     /* istanbul ignore if */ | ||||
|     if (p === false) return false | ||||
| 
 | ||||
|     if (p === GLOBSTAR) { | ||||
| @ -2743,6 +2770,7 @@ Minimatch.prototype.matchOne = function (file, pattern, partial) { | ||||
|       // no match was found.
 | ||||
|       // However, in partial mode, we can't say this is necessarily over.
 | ||||
|       // If there's more *pattern* left, then
 | ||||
|       /* istanbul ignore if */ | ||||
|       if (partial) { | ||||
|         // ran out of file
 | ||||
|         this.debug('\n>>> no match, partial?', file, fr, pattern, pr) | ||||
| @ -2756,11 +2784,7 @@ Minimatch.prototype.matchOne = function (file, pattern, partial) { | ||||
|     // patterns with magic have been turned into regexps.
 | ||||
|     var hit | ||||
|     if (typeof p === 'string') { | ||||
|       if (options.nocase) { | ||||
|         hit = f.toLowerCase() === p.toLowerCase() | ||||
|       } else { | ||||
|       hit = f === p | ||||
|       } | ||||
|       this.debug('string match', p, f, hit) | ||||
|     } else { | ||||
|       hit = f.match(p) | ||||
| @ -2791,16 +2815,16 @@ Minimatch.prototype.matchOne = function (file, pattern, partial) { | ||||
|     // this is ok if we're doing the match as part of
 | ||||
|     // a glob fs traversal.
 | ||||
|     return partial | ||||
|   } else if (pi === pl) { | ||||
|   } else /* istanbul ignore else */ if (pi === pl) { | ||||
|     // ran out of pattern, still have file left.
 | ||||
|     // this is only acceptable if we're on the very last
 | ||||
|     // empty segment of a file with a trailing slash.
 | ||||
|     // a/* should match a/b/
 | ||||
|     var emptyFileEnd = (fi === fl - 1) && (file[fi] === '') | ||||
|     return emptyFileEnd | ||||
|     return (fi === fl - 1) && (file[fi] === '') | ||||
|   } | ||||
| 
 | ||||
|   // should be unreachable.
 | ||||
|   /* istanbul ignore next */ | ||||
|   throw new Error('wtf?') | ||||
| } | ||||
| 
 | ||||
| @ -38465,17 +38489,16 @@ function getInputAsInt(name, options) { | ||||
| } | ||||
| exports.getInputAsInt = getInputAsInt; | ||||
| function isCacheFeatureAvailable() { | ||||
|     if (!cache.isFeatureAvailable()) { | ||||
|     if (cache.isFeatureAvailable()) { | ||||
|         return true; | ||||
|     } | ||||
|     if (isGhes()) { | ||||
|         logWarning(`Cache action is only supported on GHES version >= 3.5. If you are on version >=3.5 Please check with GHES admin if Actions cache service is enabled or not.
 | ||||
| Otherwise please upgrade to GHES version >= 3.5 and If you are also using Github Connect, please unretire the actions/cache namespace before upgrade (see https://docs.github.com/en/enterprise-server@3.5/admin/github-actions/managing-access-to-actions-from-githubcom/enabling-automatic-access-to-githubcom-actions-using-github-connect#automatic-retirement-of-namespaces-for-actions-accessed-on-githubcom)`);
 | ||||
|         } | ||||
|         else { | ||||
|             logWarning("An internal error has occurred in cache backend. Please check https://www.githubstatus.com/ for any ongoing issue in actions."); | ||||
|         } | ||||
|         return false; | ||||
|     } | ||||
|     return true; | ||||
|     logWarning("An internal error has occurred in cache backend. Please check https://www.githubstatus.com/ for any ongoing issue in actions."); | ||||
|     return false; | ||||
| } | ||||
| exports.isCacheFeatureAvailable = isCacheFeatureAvailable; | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										21
									
								
								examples.md
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								examples.md
									
									
									
									
									
								
							| @ -309,14 +309,29 @@ We cache the elements of the Cabal store separately, as the entirety of `~/.caba | ||||
| For npm, cache files are stored in `~/.npm` on Posix, or `~\AppData\npm-cache` on Windows, but it's possible to use `npm config get cache` to find the path on any platform. See [the npm docs](https://docs.npmjs.com/cli/cache#cache) for more details. | ||||
|  | ||||
| If using `npm config` to retrieve the cache directory, ensure you run [actions/setup-node](https://github.com/actions/setup-node) first to ensure your `npm` version is correct. | ||||
| After [deprecation](https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/) of save-state and set-output commands, the correct way to set output is using `${GITHUB_OUTPUT}`. For linux, we can use `${GITHUB_OUTPUT}` whereas for windows we need to use `${env:GITHUB_OUTPUT}` due to two different default shells in these two different OS ie `bash` and `pwsh` respectively. | ||||
|  | ||||
| >Note: It is not recommended to cache `node_modules`, as it can break across Node versions and won't work with `npm ci` | ||||
|  | ||||
| ### **Get npm cache directory using same shell** | ||||
| ### Bash shell | ||||
| ```yaml | ||||
| - name: Get npm cache directory | ||||
|   id: npm-cache-dir | ||||
|   run: | | ||||
|     echo "::set-output name=dir::$(npm config get cache)" | ||||
|   id: npm-cache | ||||
|   shell: bash | ||||
|   run: echo "dir=$(npm config get cache)" >> ${GITHUB_OUTPUT} | ||||
| ``` | ||||
|  | ||||
| ### PWSH shell | ||||
| ```yaml | ||||
| - name: Get npm cache directory | ||||
|   id: npm-cache | ||||
|   shell: pwsh | ||||
|   run: echo "dir=$(npm config get cache)" >> ${env:GITHUB_OUTPUT} | ||||
| ``` | ||||
| `Get npm cache directory` step can then be used with `actions/cache` as shown below | ||||
|  | ||||
| ```yaml | ||||
| - uses: actions/cache@v3 | ||||
|   id: npm-cache # use this to check for `cache-hit` ==> if: steps.npm-cache.outputs.cache-hit != 'true' | ||||
|   with: | ||||
|  | ||||
							
								
								
									
										6514
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										6514
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										24
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								package.json
									
									
									
									
									
								
							| @ -29,23 +29,23 @@ | ||||
|     "@actions/io": "^1.1.2" | ||||
|   }, | ||||
|   "devDependencies": { | ||||
|     "@types/jest": "^27.5.0", | ||||
|     "@types/jest": "^27.5.2", | ||||
|     "@types/nock": "^11.1.0", | ||||
|     "@types/node": "^16.11.33", | ||||
|     "@typescript-eslint/eslint-plugin": "^5.22.0", | ||||
|     "@typescript-eslint/parser": "^5.22.0", | ||||
|     "@types/node": "^16.18.3", | ||||
|     "@typescript-eslint/eslint-plugin": "^5.45.0", | ||||
|     "@typescript-eslint/parser": "^5.45.0", | ||||
|     "@zeit/ncc": "^0.20.5", | ||||
|     "eslint": "^8.14.0", | ||||
|     "eslint": "^8.28.0", | ||||
|     "eslint-config-prettier": "^8.5.0", | ||||
|     "eslint-plugin-import": "^2.26.0", | ||||
|     "eslint-plugin-jest": "^26.1.5", | ||||
|     "eslint-plugin-prettier": "^4.0.0", | ||||
|     "eslint-plugin-jest": "^26.9.0", | ||||
|     "eslint-plugin-prettier": "^4.2.1", | ||||
|     "eslint-plugin-simple-import-sort": "^7.0.0", | ||||
|     "jest": "^28.0.3", | ||||
|     "jest": "^28.1.3", | ||||
|     "jest-circus": "^27.5.1", | ||||
|     "nock": "^13.2.4", | ||||
|     "prettier": "^2.6.2", | ||||
|     "ts-jest": "^28.0.2", | ||||
|     "typescript": "^4.6.4" | ||||
|     "nock": "^13.2.9", | ||||
|     "prettier": "^2.8.0", | ||||
|     "ts-jest": "^28.0.8", | ||||
|     "typescript": "^4.9.3" | ||||
|   } | ||||
| } | ||||
|  | ||||
| @ -77,19 +77,20 @@ export function getInputAsInt( | ||||
| } | ||||
|  | ||||
| export function isCacheFeatureAvailable(): boolean { | ||||
|     if (!cache.isFeatureAvailable()) { | ||||
|     if (cache.isFeatureAvailable()) { | ||||
|         return true; | ||||
|     } | ||||
|  | ||||
|     if (isGhes()) { | ||||
|         logWarning( | ||||
|             `Cache action is only supported on GHES version >= 3.5. If you are on version >=3.5 Please check with GHES admin if Actions cache service is enabled or not. | ||||
| Otherwise please upgrade to GHES version >= 3.5 and If you are also using Github Connect, please unretire the actions/cache namespace before upgrade (see https://docs.github.com/en/enterprise-server@3.5/admin/github-actions/managing-access-to-actions-from-githubcom/enabling-automatic-access-to-githubcom-actions-using-github-connect#automatic-retirement-of-namespaces-for-actions-accessed-on-githubcom)` | ||||
|         ); | ||||
|         } else { | ||||
|             logWarning( | ||||
|                 "An internal error has occurred in cache backend. Please check https://www.githubstatus.com/ for any ongoing issue in actions." | ||||
|             ); | ||||
|         } | ||||
|         return false; | ||||
|     } | ||||
|  | ||||
|     return true; | ||||
|     logWarning( | ||||
|         "An internal error has occurred in cache backend. Please check https://www.githubstatus.com/ for any ongoing issue in actions." | ||||
|     ); | ||||
|     return false; | ||||
| } | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	