.
This commit is contained in:
		
							
								
								
									
										44
									
								
								qwen/nodejs/node_modules/axios/lib/helpers/progressEventReducer.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								qwen/nodejs/node_modules/axios/lib/helpers/progressEventReducer.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,44 @@
 | 
			
		||||
import speedometer from "./speedometer.js";
 | 
			
		||||
import throttle from "./throttle.js";
 | 
			
		||||
import utils from "../utils.js";
 | 
			
		||||
 | 
			
		||||
export const progressEventReducer = (listener, isDownloadStream, freq = 3) => {
 | 
			
		||||
  let bytesNotified = 0;
 | 
			
		||||
  const _speedometer = speedometer(50, 250);
 | 
			
		||||
 | 
			
		||||
  return throttle(e => {
 | 
			
		||||
    const loaded = e.loaded;
 | 
			
		||||
    const total = e.lengthComputable ? e.total : undefined;
 | 
			
		||||
    const progressBytes = loaded - bytesNotified;
 | 
			
		||||
    const rate = _speedometer(progressBytes);
 | 
			
		||||
    const inRange = loaded <= total;
 | 
			
		||||
 | 
			
		||||
    bytesNotified = loaded;
 | 
			
		||||
 | 
			
		||||
    const data = {
 | 
			
		||||
      loaded,
 | 
			
		||||
      total,
 | 
			
		||||
      progress: total ? (loaded / total) : undefined,
 | 
			
		||||
      bytes: progressBytes,
 | 
			
		||||
      rate: rate ? rate : undefined,
 | 
			
		||||
      estimated: rate && total && inRange ? (total - loaded) / rate : undefined,
 | 
			
		||||
      event: e,
 | 
			
		||||
      lengthComputable: total != null,
 | 
			
		||||
      [isDownloadStream ? 'download' : 'upload']: true
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    listener(data);
 | 
			
		||||
  }, freq);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export const progressEventDecorator = (total, throttled) => {
 | 
			
		||||
  const lengthComputable = total != null;
 | 
			
		||||
 | 
			
		||||
  return [(loaded) => throttled[0]({
 | 
			
		||||
    lengthComputable,
 | 
			
		||||
    total,
 | 
			
		||||
    loaded
 | 
			
		||||
  }), throttled[1]];
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export const asyncDecorator = (fn) => (...args) => utils.asap(() => fn(...args));
 | 
			
		||||
		Reference in New Issue
	
	Block a user