"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.async = exports.sync = exports.validateInput = void 0; const fs = require("fs"); const Q = require('q'); const write_1 = require("./write"); const validate_1 = require("./utils/validate"); const validateInput = (methodName, path, data, options) => { const methodSignature = methodName + '(path, data, [options])'; (0, validate_1.validateArgument)(methodSignature, 'path', path, ['string']); (0, validate_1.validateArgument)(methodSignature, 'data', data, ['string', 'buffer']); (0, validate_1.validateOptions)(methodSignature, 'options', options, { mode: ['string', 'number'] }); }; exports.validateInput = validateInput; // --------------------------------------------------------- // SYNC // --------------------------------------------------------- const sync = (path, data, options) => { try { fs.appendFileSync(path, data, options ? { encoding: options.encoding, mode: options.mode } : {}); } catch (err) { if (err.code === 'ENOENT') { // Parent directory doesn't exist, so just pass the task to `write`, // which will create the folder and file. (0, write_1.sync)(path, data, options); } else { throw err; } } }; exports.sync = sync; // --------------------------------------------------------- // ASYNC // --------------------------------------------------------- const promisedAppendFile = Q.denodeify(fs.appendFile); const async = (path, data, options) => { return new Promise((resolve, reject) => { promisedAppendFile(path, data, options) .then(resolve) .catch((err) => { if (err.code === 'ENOENT') { // Parent directory doesn't exist, so just pass the task to `write`, // which will create the folder and file. (0, write_1.async)(path, data, options).then(resolve, reject); } else { reject(err); } }); }); }; exports.async = async; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwZW5kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3JjL2FwcGVuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5QkFBeUI7QUFDekIsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZCLG1DQUFpRTtBQUNqRSwrQ0FBcUU7QUFPOUQsTUFBTSxhQUFhLEdBQUcsQ0FBQyxVQUFrQixFQUFFLElBQVksRUFBRSxJQUFTLEVBQUUsT0FBaUIsRUFBRSxFQUFFO0lBQzlGLE1BQU0sZUFBZSxHQUFHLFVBQVUsR0FBRyx5QkFBeUIsQ0FBQztJQUMvRCxJQUFBLDJCQUFnQixFQUFDLGVBQWUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUM1RCxJQUFBLDJCQUFnQixFQUFDLGVBQWUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDdEUsSUFBQSwwQkFBZSxFQUFDLGVBQWUsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFO1FBQ25ELElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUM7S0FDM0IsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBUFcsUUFBQSxhQUFhLGlCQU94QjtBQUNGLDREQUE0RDtBQUM1RCxPQUFPO0FBQ1AsNERBQTREO0FBQ3JELE1BQU0sSUFBSSxHQUFHLENBQUMsSUFBWSxFQUFFLElBQVMsRUFBRSxPQUFnQixFQUFRLEVBQUU7SUFDdEUsSUFBSSxDQUFDO1FBQ0gsRUFBRSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQTBCLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFjLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0gsQ0FBQztJQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDYixJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDMUIsb0VBQW9FO1lBQ3BFLHlDQUF5QztZQUN6QyxJQUFBLFlBQVMsRUFBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2pDLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxHQUFHLENBQUM7UUFDWixDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUMsQ0FBQztBQVpXLFFBQUEsSUFBSSxRQVlmO0FBRUYsNERBQTREO0FBQzVELFFBQVE7QUFDUiw0REFBNEQ7QUFDNUQsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUMvQyxNQUFNLEtBQUssR0FBRyxDQUFDLElBQVksRUFBRSxJQUE4QixFQUFFLE9BQWlCLEVBQWlCLEVBQUU7SUFDdEcsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUNyQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQzthQUNwQyxJQUFJLENBQUMsT0FBTyxDQUFDO2FBQ2IsS0FBSyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDbEIsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUMxQixvRUFBb0U7Z0JBQ3BFLHlDQUF5QztnQkFDekMsSUFBQSxhQUFVLEVBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ3hELENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDZCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQWRXLFFBQUEsS0FBSyxTQWNoQiJ9