HEX
Server: nginx/1.18.0
System: Linux test-ipsremont 5.4.0-214-generic #234-Ubuntu SMP Fri Mar 14 23:50:27 UTC 2025 x86_64
User: ips (1000)
PHP: 8.0.30
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //var/www/quadcode.com/node_modules/sander/src/specialMethods/writeFile-appendFile.js
import * as fs from 'graceful-fs';
import { dirname } from 'path';
import mkdirp from 'mkdirp';
import resolvePath from '../utils/resolvePath';

export const writeFile = asyncMethod( 'writeFile' );
export const appendFile = asyncMethod( 'appendFile' );

export const writeFileSync = syncMethod( 'writeFileSync' );
export const appendFileSync = syncMethod( 'appendFileSync' );

function normaliseArguments ( args ) {
	args = Array.prototype.slice.call( args, 0 );
	let opts = {};

	if ( typeof args[ args.length - 1 ] === 'object' && !( args[ args.length - 1 ] instanceof Buffer ) ) {
		opts = args.pop();
	}

	return { opts, data: args.pop(), dest: resolvePath( args ) };
}

function asyncMethod ( methodName ) {
	return function () {
		const { dest, data, opts } = normaliseArguments( arguments );

		return new Promise( ( fulfil, reject ) => {
			mkdirp( dirname( dest ), err => {
				if ( err ) {
					reject( err );
				} else {
					fs[ methodName ]( dest, data, opts, err => {
						if ( err ) {
							reject( err );
						} else {
							fulfil( data );
						}
					});
				}
			});
		});
	};
}

function syncMethod ( methodName ) {
	return function () {
		const { dest, data } = normaliseArguments( arguments );

		mkdirp.sync( dirname( dest ) );
		return fs[ methodName ]( dest, data );
	};
}