You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					28 lines
				
				938 B
			
		
		
			
		
	
	
					28 lines
				
				938 B
			| 
											3 years ago
										 | "use strict"; | ||
|  | 
 | ||
|  | Object.defineProperty(exports, "__esModule", { | ||
|  |   value: true | ||
|  | }); | ||
|  | exports.getPropertyByPath = getPropertyByPath; | ||
|  | 
 | ||
|  | // Resolves property names or property paths defined with period-delimited
 | ||
|  | // strings or arrays of strings. Property names that are found on the source
 | ||
|  | // object are used directly (even if they include a period).
 | ||
|  | // Nested property names that include periods, within a path, are only
 | ||
|  | // understood in array paths.
 | ||
|  | function getPropertyByPath(source, path) { | ||
|  |   if (typeof path === 'string' && Object.prototype.hasOwnProperty.call(source, path)) { | ||
|  |     return source[path]; | ||
|  |   } | ||
|  | 
 | ||
|  |   const parsedPath = typeof path === 'string' ? path.split('.') : path; // eslint-disable-next-line @typescript-eslint/no-explicit-any
 | ||
|  | 
 | ||
|  |   return parsedPath.reduce((previous, key) => { | ||
|  |     if (previous === undefined) { | ||
|  |       return previous; | ||
|  |     } | ||
|  | 
 | ||
|  |     return previous[key]; | ||
|  |   }, source); | ||
|  | } | ||
|  | //# sourceMappingURL=getPropertyByPath.js.map
 |