mirror of
https://github.com/ether/etherpad-lite.git
synced 2025-04-20 15:36:16 -04:00
Minify: Consistently use path.join()
to build pathnames
This defends against extraneous or missing slashes, and it might improve the experience on Windows.
This commit is contained in:
parent
2d3469e3ee
commit
ba5d8369bf
1 changed files with 9 additions and 9 deletions
|
@ -159,7 +159,7 @@ const minify = async (req, res) => {
|
||||||
if (plugins.plugins[library] && match[3]) {
|
if (plugins.plugins[library] && match[3]) {
|
||||||
const plugin = plugins.plugins[library];
|
const plugin = plugins.plugins[library];
|
||||||
const pluginPath = plugin.package.realPath;
|
const pluginPath = plugin.package.realPath;
|
||||||
filename = path.relative(ROOT_DIR, pluginPath + libraryPath);
|
filename = path.relative(ROOT_DIR, path.join(pluginPath, libraryPath));
|
||||||
// On Windows, path.relative converts forward slashes to backslashes. Convert them back
|
// On Windows, path.relative converts forward slashes to backslashes. Convert them back
|
||||||
// because some of the code below assumes forward slashes. Node.js treats both the backlash
|
// because some of the code below assumes forward slashes. Node.js treats both the backlash
|
||||||
// and the forward slash characters as pathname component separators on Windows so this does
|
// and the forward slash characters as pathname component separators on Windows so this does
|
||||||
|
@ -171,7 +171,7 @@ const minify = async (req, res) => {
|
||||||
// Go straight into node_modules
|
// Go straight into node_modules
|
||||||
// Avoid `require.resolve()`, since 'mustache' and 'mustache/index.js'
|
// Avoid `require.resolve()`, since 'mustache' and 'mustache/index.js'
|
||||||
// would end up resolving to logically distinct resources.
|
// would end up resolving to logically distinct resources.
|
||||||
filename = `../node_modules/${library}${libraryPath}`;
|
filename = path.join('../node_modules/', library, libraryPath);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -213,7 +213,7 @@ const minify = async (req, res) => {
|
||||||
|
|
||||||
// find all includes in ace.js and embed them.
|
// find all includes in ace.js and embed them.
|
||||||
const getAceFile = async () => {
|
const getAceFile = async () => {
|
||||||
let data = await fs.readFile(`${ROOT_DIR}js/ace.js`, 'utf8');
|
let data = await fs.readFile(path.join(ROOT_DIR, 'js/ace.js'), 'utf8');
|
||||||
|
|
||||||
// Find all includes in ace.js and embed them
|
// Find all includes in ace.js and embed them
|
||||||
const filenames = [];
|
const filenames = [];
|
||||||
|
@ -273,7 +273,7 @@ const statFile = async (filename, dirStatLimit) => {
|
||||||
} else {
|
} else {
|
||||||
let stats;
|
let stats;
|
||||||
try {
|
try {
|
||||||
stats = await fs.stat(ROOT_DIR + filename);
|
stats = await fs.stat(path.join(ROOT_DIR, filename));
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
if (err.code === 'ENOENT') {
|
if (err.code === 'ENOENT') {
|
||||||
// Stat the directory instead.
|
// Stat the directory instead.
|
||||||
|
@ -287,12 +287,12 @@ const statFile = async (filename, dirStatLimit) => {
|
||||||
};
|
};
|
||||||
|
|
||||||
const lastModifiedDateOfEverything = async () => {
|
const lastModifiedDateOfEverything = async () => {
|
||||||
const folders2check = [`${ROOT_DIR}js/`, `${ROOT_DIR}css/`];
|
const folders2check = [path.join(ROOT_DIR, 'js/'), path.join(ROOT_DIR, 'css/')];
|
||||||
let latestModification = null;
|
let latestModification = null;
|
||||||
// go through this two folders
|
// go through this two folders
|
||||||
await Promise.all(folders2check.map(async (path) => {
|
await Promise.all(folders2check.map(async (dir) => {
|
||||||
// read the files in the folder
|
// read the files in the folder
|
||||||
const files = await fs.readdir(path);
|
const files = await fs.readdir(dir);
|
||||||
|
|
||||||
// we wanna check the directory itself for changes too
|
// we wanna check the directory itself for changes too
|
||||||
files.push('.');
|
files.push('.');
|
||||||
|
@ -300,7 +300,7 @@ const lastModifiedDateOfEverything = async () => {
|
||||||
// go through all files in this folder
|
// go through all files in this folder
|
||||||
await Promise.all(files.map(async (filename) => {
|
await Promise.all(files.map(async (filename) => {
|
||||||
// get the stat data of this file
|
// get the stat data of this file
|
||||||
const stats = await fs.stat(`${path}/${filename}`);
|
const stats = await fs.stat(path.join(dir, filename));
|
||||||
|
|
||||||
// compare the modification time to the highest found
|
// compare the modification time to the highest found
|
||||||
if (latestModification == null || stats.mtime > latestModification) {
|
if (latestModification == null || stats.mtime > latestModification) {
|
||||||
|
@ -362,7 +362,7 @@ const getFileCompressed = async (filename, contentType) => {
|
||||||
const getFile = async (filename) => {
|
const getFile = async (filename) => {
|
||||||
if (filename === 'js/ace.js') return await getAceFile();
|
if (filename === 'js/ace.js') return await getAceFile();
|
||||||
if (filename === 'js/require-kernel.js') return requireDefinition();
|
if (filename === 'js/require-kernel.js') return requireDefinition();
|
||||||
return await fs.readFile(ROOT_DIR + filename);
|
return await fs.readFile(path.join(ROOT_DIR, filename));
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.minify = (req, res, next) => minify(req, res).catch((err) => next(err || new Error(err)));
|
exports.minify = (req, res, next) => minify(req, res).catch((err) => next(err || new Error(err)));
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue