From 4aff24376c076facc7a4690b8056a6446257a461 Mon Sep 17 00:00:00 2001 From: Oj Date: Fri, 10 Dec 2021 18:29:52 +0000 Subject: [PATCH] [Updater > v1 > Module] Use custom wrapper instead of replacing for better handling and futureproofing --- src/updater/moduleUpdater.js | 8 +++++--- src/utils/mkdirp.js | 27 +++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 3 deletions(-) create mode 100644 src/utils/mkdirp.js diff --git a/src/updater/moduleUpdater.js b/src/updater/moduleUpdater.js index e3d1a5c..7510bcf 100644 --- a/src/updater/moduleUpdater.js +++ b/src/updater/moduleUpdater.js @@ -22,6 +22,8 @@ var _module = _interopRequireDefault(require("module")); var _events = require("events"); +var _mkdirp = _interopRequireDefault(require("../utils/mkdirp")); + var _process = require("process"); var _yauzl = _interopRequireDefault(require("yauzl")); @@ -226,7 +228,7 @@ function init(_endpoint, _settings, _buildInfo) { installedModulesFilePath = _path.default.join(moduleInstallPath, 'installed.json'); moduleDownloadPath = _path.default.join(moduleInstallPath, 'pending'); - _fs.default.mkdirSync(moduleDownloadPath, { recursive: true }); + _mkdirp.default.sync(moduleDownloadPath); logger.log(`Module install path: ${moduleInstallPath}`); logger.log(`Module installed file path: ${installedModulesFilePath}`); @@ -727,7 +729,7 @@ function processUnzipQueue() { } stream.on('error', e => onError(e, zipfile)); - _fs.default.mkdir(_path.default.join(extractRoot, _path.default.dirname(entry.fileName)), err => { + (0, _mkdirp.default)(_path.default.join(extractRoot, _path.default.dirname(entry.fileName)), err => { if (err) { onError(err, zipfile); return; @@ -764,7 +766,7 @@ function processUnzipQueue() { zipfile.readEntry(); }); stream.pipe(writeStream); - }, { recursive: true }); + }); }); }); zipfile.on('error', err => { diff --git a/src/utils/mkdirp.js b/src/utils/mkdirp.js new file mode 100644 index 0000000..d3f7115 --- /dev/null +++ b/src/utils/mkdirp.js @@ -0,0 +1,27 @@ +// Minimal wrapper mimicking mkdirp package + +exports.__esModule = true; // Makes moduleUpdater internals load properly + +const fs = require('fs'); + + +const async = (path, callback) => { // async + log('Mkdirp', 'Async:', path); + + try { + fs.mkdir(path, callback, { recursive: true }); + } catch (e) { } // Doesn't exist, ignore +}; + +const sync = (path) => { // sync + log('Mkdirp', 'Sync:', path); + + try { + fs.mkdirSync(path, { recursive: true }); + } catch (e) { } // Doesn't exist, ignore +}; + +const toExport = async; +toExport.sync = sync; + +exports.default = toExport; \ No newline at end of file