Minify: Replace `async.forEach()` with `Promise.all()`
parent
0c428e068e
commit
5cc191f185
|
@ -23,7 +23,6 @@
|
||||||
|
|
||||||
const ERR = require('async-stacktrace');
|
const ERR = require('async-stacktrace');
|
||||||
const settings = require('./Settings');
|
const settings = require('./Settings');
|
||||||
const async = require('async');
|
|
||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
const path = require('path');
|
const path = require('path');
|
||||||
const plugins = require('../../static/js/pluginfw/plugin_defs');
|
const plugins = require('../../static/js/pluginfw/plugin_defs');
|
||||||
|
@ -32,6 +31,7 @@ const urlutil = require('url');
|
||||||
const mime = require('mime-types');
|
const mime = require('mime-types');
|
||||||
const Threads = require('threads');
|
const Threads = require('threads');
|
||||||
const log4js = require('log4js');
|
const log4js = require('log4js');
|
||||||
|
const util = require('util');
|
||||||
|
|
||||||
const logger = log4js.getLogger('Minify');
|
const logger = log4js.getLogger('Minify');
|
||||||
|
|
||||||
|
@ -213,13 +213,13 @@ const getAceFile = (callback) => {
|
||||||
|
|
||||||
// Request the contents of the included file on the server-side and write
|
// Request the contents of the included file on the server-side and write
|
||||||
// them into the file.
|
// them into the file.
|
||||||
async.forEach(filenames, (filename, callback) => {
|
Promise.all(filenames.map(async (filename) => {
|
||||||
// Hostname "invalid.invalid" is a dummy value to allow parsing as a URI.
|
// Hostname "invalid.invalid" is a dummy value to allow parsing as a URI.
|
||||||
const baseURI = 'http://invalid.invalid';
|
const baseURI = 'http://invalid.invalid';
|
||||||
let resourceURI = baseURI + path.normalize(path.join('/static/', filename));
|
let resourceURI = baseURI + path.normalize(path.join('/static/', filename));
|
||||||
resourceURI = resourceURI.replace(/\\/g, '/'); // Windows (safe generally?)
|
resourceURI = resourceURI.replace(/\\/g, '/'); // Windows (safe generally?)
|
||||||
|
|
||||||
requestURI(resourceURI, 'GET', {}).then(([status, headers, body]) => {
|
const [status, , body] = await requestURI(resourceURI, 'GET', {});
|
||||||
const error = !(status === 200 || status === 404);
|
const error = !(status === 200 || status === 404);
|
||||||
if (!error) {
|
if (!error) {
|
||||||
data += `Ace2Editor.EMBEDED[${JSON.stringify(filename)}] = ${
|
data += `Ace2Editor.EMBEDED[${JSON.stringify(filename)}] = ${
|
||||||
|
@ -227,11 +227,7 @@ const getAceFile = (callback) => {
|
||||||
} else {
|
} else {
|
||||||
console.error(`getAceFile(): error getting ${resourceURI}. Status code: ${status}`);
|
console.error(`getAceFile(): error getting ${resourceURI}. Status code: ${status}`);
|
||||||
}
|
}
|
||||||
callback();
|
})).then(() => callback(null, data), (err) => callback(err || new Error(err)));
|
||||||
});
|
|
||||||
}, (error) => {
|
|
||||||
callback(error, data);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -279,19 +275,17 @@ const lastModifiedDateOfEverything = (callback) => {
|
||||||
const folders2check = [`${ROOT_DIR}js/`, `${ROOT_DIR}css/`];
|
const folders2check = [`${ROOT_DIR}js/`, `${ROOT_DIR}css/`];
|
||||||
let latestModification = 0;
|
let latestModification = 0;
|
||||||
// go through this two folders
|
// go through this two folders
|
||||||
async.forEach(folders2check, (path, callback) => {
|
Promise.all(folders2check.map(async (path) => {
|
||||||
// read the files in the folder
|
// read the files in the folder
|
||||||
fs.readdir(path, (err, files) => {
|
const files = await util.promisify(fs.readdir)(path);
|
||||||
if (ERR(err, callback)) return;
|
|
||||||
|
|
||||||
// we wanna check the directory itself for changes too
|
// we wanna check the directory itself for changes too
|
||||||
files.push('.');
|
files.push('.');
|
||||||
|
|
||||||
// go through all files in this folder
|
// go through all files in this folder
|
||||||
async.forEach(files, (filename, callback) => {
|
await Promise.all(files.map(async (filename) => {
|
||||||
// get the stat data of this file
|
// get the stat data of this file
|
||||||
fs.stat(`${path}/${filename}`, (err, stats) => {
|
const stats = await util.promisify(fs.stat)(`${path}/${filename}`);
|
||||||
if (ERR(err, callback)) return;
|
|
||||||
|
|
||||||
// get the modification time
|
// get the modification time
|
||||||
const modificationTime = stats.mtime.getTime();
|
const modificationTime = stats.mtime.getTime();
|
||||||
|
@ -300,14 +294,8 @@ const lastModifiedDateOfEverything = (callback) => {
|
||||||
if (modificationTime > latestModification) {
|
if (modificationTime > latestModification) {
|
||||||
latestModification = modificationTime;
|
latestModification = modificationTime;
|
||||||
}
|
}
|
||||||
|
}));
|
||||||
callback();
|
})).then(() => callback(null, latestModification), (err) => callback(err || new Error(err)));
|
||||||
});
|
|
||||||
}, callback);
|
|
||||||
});
|
|
||||||
}, () => {
|
|
||||||
callback(null, latestModification);
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// This should be provided by the module, but until then, just use startup
|
// This should be provided by the module, but until then, just use startup
|
||||||
|
|
Loading…
Reference in New Issue