"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const graceful_fs_1 = __importDefault(require("graceful-fs")); const path_1 = require("path"); const mkdirp_1 = __importDefault(require("mkdirp")); const promisify_1 = __importDefault(require("./promisify")); const delay_1 = __importDefault(require("./delay")); const stat = promisify_1.default(graceful_fs_1.default.stat); const readdir = promisify_1.default(graceful_fs_1.default.readdir); const mkdir = promisify_1.default(mkdirp_1.default); const MAX_RETRY_COUNT = 10; const RETRY_DELAY = 100; async function createDirectory(directoryPath) { try { await mkdir(directoryPath); return true; } catch (e) { return false; } } async function readDirectory(directoryPath) { try { await readdir(directoryPath); return true; } catch (e) { return false; } } async function ensureDirectory(directoryPath) { var fileEnsured = await createDirectory(directoryPath) && await readDirectory(directoryPath); for (var i = 0; i < MAX_RETRY_COUNT && !fileEnsured; i++) { await delay_1.default(RETRY_DELAY); fileEnsured = await createDirectory(directoryPath) && await readDirectory(directoryPath); } return fileEnsured; } async function default_1(fileName) { var directoryPath = path_1.dirname(fileName); try { var stats = await stat(directoryPath); return stats.isDirectory(); } catch (e) { if (e.code === 'ENOENT') return await ensureDirectory(directoryPath); return false; } } exports.default = default_1; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5zdXJlLWRpcmVjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9lbnN1cmUtZGlyZWN0b3J5LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsOERBQTZCO0FBQzdCLCtCQUErQjtBQUMvQixvREFBNEI7QUFDNUIsNERBQW9DO0FBQ3BDLG9EQUE0QjtBQUc1QixNQUFNLElBQUksR0FBSSxtQkFBUyxDQUFDLHFCQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDakMsTUFBTSxPQUFPLEdBQUcsbUJBQVMsQ0FBQyxxQkFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3RDLE1BQU0sS0FBSyxHQUFHLG1CQUFTLENBQUMsZ0JBQU0sQ0FBQyxDQUFDO0FBRWhDLE1BQU0sZUFBZSxHQUFHLEVBQUUsQ0FBQztBQUMzQixNQUFNLFdBQVcsR0FBTyxHQUFHLENBQUM7QUFFNUIsS0FBSyxVQUFVLGVBQWUsQ0FBRSxhQUFhO0lBQ3pDLElBQUk7UUFDQSxNQUFNLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMzQixPQUFPLElBQUksQ0FBQztLQUNmO0lBQ0QsT0FBTyxDQUFDLEVBQUU7UUFDTixPQUFPLEtBQUssQ0FBQztLQUNoQjtBQUNMLENBQUM7QUFFRCxLQUFLLFVBQVUsYUFBYSxDQUFFLGFBQWE7SUFDdkMsSUFBSTtRQUNBLE1BQU0sT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRTdCLE9BQU8sSUFBSSxDQUFDO0tBQ2Y7SUFDRCxPQUFPLENBQUMsRUFBRTtRQUNOLE9BQU8sS0FBSyxDQUFDO0tBQ2hCO0FBQ0wsQ0FBQztBQUVELEtBQUssVUFBVSxlQUFlLENBQUUsYUFBYTtJQUN6QyxJQUFJLFdBQVcsR0FBSyxNQUFNLGVBQWUsQ0FBQyxhQUFhLENBQUMsSUFBSSxNQUFNLGFBQWEsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUUvRixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsZUFBZSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ3RELE1BQU0sZUFBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRXpCLFdBQVcsR0FBRyxNQUFNLGVBQWUsQ0FBQyxhQUFhLENBQUMsSUFBSSxNQUFNLGFBQWEsQ0FBQyxhQUFhLENBQUMsQ0FBQztLQUM1RjtJQUVELE9BQU8sV0FBVyxDQUFDO0FBQ3ZCLENBQUM7QUFFYyxLQUFLLG9CQUFXLFFBQVE7SUFDbkMsSUFBSSxhQUFhLEdBQUcsY0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRXRDLElBQUk7UUFDQSxJQUFJLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUV0QyxPQUFPLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztLQUM5QjtJQUNELE9BQU8sQ0FBQyxFQUFFO1FBQ04sSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLFFBQVE7WUFDbkIsT0FBTyxNQUFNLGVBQWUsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUVoRCxPQUFPLEtBQUssQ0FBQztLQUNoQjtBQUNMLENBQUM7QUFkRCw0QkFjQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmcyBmcm9tICdncmFjZWZ1bC1mcyc7XG5pbXBvcnQgeyBkaXJuYW1lIH0gZnJvbSAncGF0aCc7XG5pbXBvcnQgbWtkaXJwIGZyb20gJ21rZGlycCc7XG5pbXBvcnQgcHJvbWlzaWZ5IGZyb20gJy4vcHJvbWlzaWZ5JztcbmltcG9ydCBkZWxheSBmcm9tICcuL2RlbGF5JztcblxuXG5jb25zdCBzdGF0ICA9IHByb21pc2lmeShmcy5zdGF0KTtcbmNvbnN0IHJlYWRkaXIgPSBwcm9taXNpZnkoZnMucmVhZGRpcik7XG5jb25zdCBta2RpciA9IHByb21pc2lmeShta2RpcnApO1xuXG5jb25zdCBNQVhfUkVUUllfQ09VTlQgPSAxMDtcbmNvbnN0IFJFVFJZX0RFTEFZICAgICA9IDEwMDtcblxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlRGlyZWN0b3J5IChkaXJlY3RvcnlQYXRoKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgbWtkaXIoZGlyZWN0b3J5UGF0aCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiByZWFkRGlyZWN0b3J5IChkaXJlY3RvcnlQYXRoKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgcmVhZGRpcihkaXJlY3RvcnlQYXRoKTtcblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gZW5zdXJlRGlyZWN0b3J5IChkaXJlY3RvcnlQYXRoKSB7XG4gICAgdmFyIGZpbGVFbnN1cmVkICAgPSBhd2FpdCBjcmVhdGVEaXJlY3RvcnkoZGlyZWN0b3J5UGF0aCkgJiYgYXdhaXQgcmVhZERpcmVjdG9yeShkaXJlY3RvcnlQYXRoKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTUFYX1JFVFJZX0NPVU5UICYmICFmaWxlRW5zdXJlZDsgaSsrKSB7XG4gICAgICAgIGF3YWl0IGRlbGF5KFJFVFJZX0RFTEFZKTtcblxuICAgICAgICBmaWxlRW5zdXJlZCA9IGF3YWl0IGNyZWF0ZURpcmVjdG9yeShkaXJlY3RvcnlQYXRoKSAmJiBhd2FpdCByZWFkRGlyZWN0b3J5KGRpcmVjdG9yeVBhdGgpO1xuICAgIH1cblxuICAgIHJldHVybiBmaWxlRW5zdXJlZDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gKGZpbGVOYW1lKSB7XG4gICAgdmFyIGRpcmVjdG9yeVBhdGggPSBkaXJuYW1lKGZpbGVOYW1lKTtcblxuICAgIHRyeSB7XG4gICAgICAgIHZhciBzdGF0cyA9IGF3YWl0IHN0YXQoZGlyZWN0b3J5UGF0aCk7XG5cbiAgICAgICAgcmV0dXJuIHN0YXRzLmlzRGlyZWN0b3J5KCk7XG4gICAgfVxuICAgIGNhdGNoIChlKSB7XG4gICAgICAgIGlmIChlLmNvZGUgPT09ICdFTk9FTlQnKVxuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IGVuc3VyZURpcmVjdG9yeShkaXJlY3RvcnlQYXRoKTtcblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuIl19