HEX
Server: nginx/1.24.0
System: Linux nowruzgan 6.8.0-57-generic #59-Ubuntu SMP PREEMPT_DYNAMIC Sat Mar 15 17:40:59 UTC 2025 x86_64
User: babak (1000)
PHP: 8.3.6
Disabled: NONE
Upload Files
File: /var/dev/shahnamag/back-end/node_modules/bin-version/index.js
import execa from 'execa';
import findVersions from 'find-versions';

const oneMegabyte = 1000 * 1000;

const knownBinaryArguments = new Map([
	...[
		'ffmpeg',
		'ffprobe',
		'ffplay'
	].map(name => [name, ['-version']]),
	['openssl', ['version']]
]);

const defaultPossibleArguments = [
	['--version'],
	['version']
];

export default async function binaryVersion(binary, options = {}) {
	let possibleArguments;

	if (options.args === undefined) {
		const customArgs = knownBinaryArguments.get(binary);
		possibleArguments = customArgs === undefined ? defaultPossibleArguments : [customArgs];
	} else {
		possibleArguments = [options.args];
	}

	for (const args of possibleArguments) {
		try {
			// eslint-disable-next-line no-await-in-loop
			const {all} = await execa(binary, args, {
				all: true,
				maxBuffer: oneMegabyte
			});

			const [version] = findVersions(all, {loose: true});
			if (version !== undefined) {
				return version;
			}
		} catch (error) {
			if (error.code === 'ENOENT') {
				const newError = new Error(`Couldn't find the \`${binary}\` binary. Make sure it's installed and in your $PATH.`);
				newError.sourceError = error;
				throw newError;
			}

			if (error.code === 'EACCES') {
				throw error;
			}
		}
	}

	throw new Error(`Couldn't find version of \`${binary}\``);
}