function createProgressHandler() {
	const startTime = Date.now();
	let lastShownBuildingMessageTime = null;
	let lastUnshownBuildingMessage = null;

	return ( percentage, msg, ...details ) => {
		const nowTime = Date.now();
		const timeString = ( ( nowTime - startTime ) / 1000 ).toFixed( 1 ) + 's';
		const percentageString = `${ Math.floor( percentage * 100 ) }%`;
		const detailsString = details
			.map( detail => {
				if ( ! detail ) {
					return '';
				}
				if ( detail.length > 40 ) {
					return `…${ detail.substr( detail.length - 39 ) }`;
				}
				return detail;
			} )
			.join( ' ' );
		const message = `${ timeString } ${ percentageString } ${ msg } ${ detailsString }`;

		// There are plenty of 'building' messages that make the log too long for CircleCI web UI.
		// Let's throttle the 'building' messages to one per second, while always showing the last one.
		if ( msg === 'building' ) {
			if ( lastShownBuildingMessageTime && nowTime - lastShownBuildingMessageTime < 1000 ) {
				// less than 1000ms since last message: ignore, but store for case it's the last one
				lastUnshownBuildingMessage = message;
				return;
			}

			// the message will be shown and its time recorded
			lastShownBuildingMessageTime = nowTime;
			lastUnshownBuildingMessage = null;
		} else if ( lastUnshownBuildingMessage ) {
			// The last 'building' message should always be shown, no matter the timing.
			// We do that on the first non-'building' message.
			console.log( lastUnshownBuildingMessage ); // eslint-disable-line no-console
			lastUnshownBuildingMessage = null;
		}

		console.log( message ); // eslint-disable-line no-console
	};
}
function createProgressHandler() {
	const startTime = Date.now();
	let lastShownBuildingMessageTime = null;
	let lastUnshownBuildingMessage = null;

	return ( percentage, msg, ...details ) => {
		const nowTime = Date.now();
		const timeString = ( ( nowTime - startTime ) / 1000 ).toFixed( 1 ) + 's';
		const percentageString = `${ Math.floor( percentage * 100 ) }%`;
		const detailsString = details
			.map( detail => {
				if ( ! detail ) {
					return '';
				}
				if ( detail.length > 40 ) {
					return `…${ detail.substr( detail.length - 39 ) }`;
				}
				return detail;
			} )
			.join( ' ' );
		const message = `${ timeString } ${ percentageString } ${ msg } ${ detailsString }`;

		
		
		if ( msg === 'building' ) {
			if ( lastShownBuildingMessageTime && nowTime - lastShownBuildingMessageTime < 1000 ) {
				
				lastUnshownBuildingMessage = message;
				return;
			}

			
			lastShownBuildingMessageTime = nowTime;
			lastUnshownBuildingMessage = null;
		} else if ( lastUnshownBuildingMessage ) {
			
			
			console.log( lastUnshownBuildingMessage ); 
			lastUnshownBuildingMessage = null;
		}

		console.log( message ); 
	};
}
function createProgressHandler ( ) { const startTime = Date . now ( ) ; let lastShownBuildingMessageTime = null ; let lastUnshownBuildingMessage = null ; return ( percentage , msg , ... details ) => { const nowTime = Date . now ( ) ; const timeString = ( ( nowTime - startTime ) / 1000 ) . toFixed ( 1 ) + 's' ; const percentageString = ` ${ Math . floor ( percentage * 100 ) } ` ; const detailsString = details . map ( detail => { if ( ! detail ) { return '' ; } if ( detail . length > 40 ) { return `  d tail.s u bstr(  d tail.l e ngth - 3  ) } ; } return detail ; } ) . join ( ' ' ) ; const message = ` ${ timeString } ${ percentageString } ${ msg } ${ detailsString } ` ; // There are plenty of 'building' messages that make the log too long for CircleCI web UI. // Let's throttle the 'building' messages to one per second, while always showing the last one. if ( msg === 'building' ) { if ( lastShownBuildingMessageTime && nowTime - lastShownBuildingMessageTime < 1000 ) { // less than 1000ms since last message: ignore, but store for case it's the last one lastUnshownBuildingMessage = message ; return ; } // the message will be shown and its time recorded lastShownBuildingMessageTime = nowTime ; lastUnshownBuildingMessage = null ; } else if ( lastUnshownBuildingMessage ) { // The last 'building' message should always be shown, no matter the timing. // We do that on the first non-'building' message. console . log ( lastUnshownBuildingMessage ) ; // eslint-disable-line no-console lastUnshownBuildingMessage = null ; } console . log ( message ) ; // eslint-disable-line no-console } ; }
/*
Create reporter for ProgressPlugin (used with EMIT_STATS)
/ * Create reporter for ProgressPlugin ( used with EMIT_STATS )