HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //home/arjun/projects/buyercall/node_modules/@ckeditor/ckeditor5-dev-utils/lib/stream.js
/**
 * @license Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md.
 */

'use strict';

const path = require( 'path' );
const PassThrough = require( 'stream' ).PassThrough;
const through = require( 'through2' );

const stream = {
	/**
	 * Creates a simple duplex stream.
	 *
	 * @param {Function} [callback] A callback which will be executed with each chunk.
	 * The callback can return a Promise to perform async actions before other chunks are accepted.
	 * @returns {Stream}
	 */
	noop( callback ) {
		if ( !callback ) {
			return new PassThrough( { objectMode: true } );
		}

		return through( { objectMode: true }, ( chunk, encoding, throughCallback ) => {
			const callbackResult = callback( chunk );

			if ( callbackResult instanceof Promise ) {
				callbackResult
					.then( () => {
						throughCallback( null, chunk );
					} )
					.catch( err => {
						throughCallback( err );
					} );
			} else {
				throughCallback( null, chunk );
			}
		} );
	},

	/**
	 * Checks whether a file is a test file.
	 *
	 * @param {Vinyl} file
	 * @returns {Boolean}
	 */
	isTestFile( file ) {
		// TODO this should be based on bender configuration (config.tests.*.paths).
		if ( !file.relative.startsWith( 'tests' + path.sep ) ) {
			return false;
		}

		const dirFrags = file.relative.split( path.sep );

		return !dirFrags.some( dirFrag => {
			return dirFrag.startsWith( '_' ) && dirFrag != '_utils-tests';
		} );
	},

	/**
	 * Checks whether a file is a source file.
	 *
	 * @param {Vinyl} file
	 * @returns {Boolean}
	 */
	isSourceFile( file ) {
		return !stream.isTestFile( file );
	},

	/**
	 * Checks whether a file is a JS file.
	 *
	 * @param {Vinyl} file
	 * @returns {Boolean}
	 */
	isJSFile( file ) {
		return file.path.endsWith( '.js' );
	}
};

module.exports = stream;