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.
		
		
		
		
		
			
		
			
				
					50 lines
				
				1.4 KiB
			
		
		
			
		
	
	
					50 lines
				
				1.4 KiB
			| 
											3 years ago
										 | 'use strict'; | ||
|  | 
 | ||
|  | module.exports = function stringifyFunctionOperators(pipeline) { | ||
|  |   if (!Array.isArray(pipeline)) { | ||
|  |     return; | ||
|  |   } | ||
|  | 
 | ||
|  |   for (const stage of pipeline) { | ||
|  |     if (stage == null) { | ||
|  |       continue; | ||
|  |     } | ||
|  | 
 | ||
|  |     const canHaveAccumulator = stage.$group || stage.$bucket || stage.$bucketAuto; | ||
|  |     if (canHaveAccumulator != null) { | ||
|  |       for (const key of Object.keys(canHaveAccumulator)) { | ||
|  |         handleAccumulator(canHaveAccumulator[key]); | ||
|  |       } | ||
|  |     } | ||
|  | 
 | ||
|  |     const stageType = Object.keys(stage)[0]; | ||
|  |     if (stageType && typeof stage[stageType] === 'object') { | ||
|  |       const stageOptions = stage[stageType]; | ||
|  |       for (const key of Object.keys(stageOptions)) { | ||
|  |         if (stageOptions[key] != null && | ||
|  |             stageOptions[key].$function != null && | ||
|  |             typeof stageOptions[key].$function.body === 'function') { | ||
|  |           stageOptions[key].$function.body = stageOptions[key].$function.body.toString(); | ||
|  |         } | ||
|  |       } | ||
|  |     } | ||
|  | 
 | ||
|  |     if (stage.$facet != null) { | ||
|  |       for (const key of Object.keys(stage.$facet)) { | ||
|  |         stringifyFunctionOperators(stage.$facet[key]); | ||
|  |       } | ||
|  |     } | ||
|  |   } | ||
|  | }; | ||
|  | 
 | ||
|  | function handleAccumulator(operator) { | ||
|  |   if (operator == null || operator.$accumulator == null) { | ||
|  |     return; | ||
|  |   } | ||
|  | 
 | ||
|  |   for (const key of ['init', 'accumulate', 'merge', 'finalize']) { | ||
|  |     if (typeof operator.$accumulator[key] === 'function') { | ||
|  |       operator.$accumulator[key] = String(operator.$accumulator[key]); | ||
|  |     } | ||
|  |   } | ||
|  | } |