'use strict';

var FsPromise = require('../../../_virtual/FsPromise.js');
var fs$1 = require('fs');

/**
 * Module convert fs functions to promise based functions
 */
Object.defineProperty(FsPromise.__exports, "__esModule", { value: true });
FsPromise.__exports.readFile = FsPromise.__exports.writeFileSync = FsPromise.__exports.writeFile = FsPromise.__exports.read = FsPromise.__exports.open = FsPromise.__exports.close = FsPromise.__exports.stat = FsPromise.__exports.createReadStream = FsPromise.__exports.pathExists = void 0;
const fs = fs$1;
FsPromise.__exports.pathExists = fs.existsSync;
FsPromise.__exports.createReadStream = fs.createReadStream;
async function stat(path) {
    return new Promise((resolve, reject) => {
        fs.stat(path, (err, stats) => {
            if (err)
                reject(err);
            else
                resolve(stats);
        });
    });
}
FsPromise.__exports.stat = stat;
async function close(fd) {
    return new Promise((resolve, reject) => {
        fs.close(fd, err => {
            if (err)
                reject(err);
            else
                resolve();
        });
    });
}
FsPromise.__exports.close = close;
async function open(path, mode) {
    return new Promise((resolve, reject) => {
        fs.open(path, mode, (err, fd) => {
            if (err)
                reject(err);
            else
                resolve(fd);
        });
    });
}
FsPromise.__exports.open = open;
async function read(fd, buffer, offset, length, position) {
    return new Promise((resolve, reject) => {
        fs.read(fd, buffer, offset, length, position, (err, bytesRead, _buffer) => {
            if (err)
                reject(err);
            else
                resolve({ bytesRead, buffer: _buffer });
        });
    });
}
FsPromise.__exports.read = read;
async function writeFile(path, data) {
    return new Promise((resolve, reject) => {
        fs.writeFile(path, data, err => {
            if (err)
                reject(err);
            else
                resolve();
        });
    });
}
FsPromise.__exports.writeFile = writeFile;
function writeFileSync(path, data) {
    fs.writeFileSync(path, data);
}
FsPromise.__exports.writeFileSync = writeFileSync;
async function readFile(path) {
    return new Promise((resolve, reject) => {
        fs.readFile(path, (err, buffer) => {
            if (err)
                reject(err);
            else
                resolve(buffer);
        });
    });
}
FsPromise.__exports.readFile = readFile;

module.exports = FsPromise.__exports;
