Skip to content

Commit

Permalink
Revise async function usage
Browse files Browse the repository at this point in the history
  • Loading branch information
Amphiluke committed Aug 4, 2019
1 parent 7156642 commit 4d89e79
Show file tree
Hide file tree
Showing 6 changed files with 86 additions and 94 deletions.
54 changes: 25 additions & 29 deletions dist/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -40,42 +40,38 @@ let flat = Array.prototype.flat ? list => list.flat() : list => [].concat(...lis
async function getImports(entries) {
let commentRE = /\/\*[\s\S]*?\*\/|\/\/\s*@import[^;]+;/g;
let importRE = /(?<=@import\s[^"']*["']).+?(?=['"]\s*;)/g;
let promises = entries.map(entry =>
readFile(entry)
.then(data => {
data = data.replace(commentRE, "");
let dir = path.dirname(entry);
return (data.match(importRE) || []).map(importPath => {
importPath = path.join(dir, importPath);
if (!path.extname(importPath)) {
importPath += ".less";
}
return importPath;
});
})
);
let promises = entries.map(async entry => {
let data = await readFile(entry);
data = data.replace(commentRE, "");
let dir = path.dirname(entry);
return (data.match(importRE) || []).map(importPath => {
importPath = path.join(dir, importPath);
if (!path.extname(importPath)) {
importPath += ".less";
}
return importPath;
});
});
let importLists = await Promise.all(promises);
return new Set(flat(importLists));
}

function compile(entries, lessOptions) {
let less = require("less");
let inlineMap = lessOptions.sourceMap && lessOptions.sourceMap.sourceMapFileInline;
let promises = entries.map(entry =>
readFile(entry)
.then(data => less.render(data, {
...lessOptions,
filename: entry
}))
.then(({css, map}) => {
let writeCSS = writeFile(setExt(entry, ".css"), css);
if (!map || inlineMap) {
return writeCSS;
}
let writeMap = writeFile(setExt(entry, ".css.map"), map);
return Promise.all([writeCSS, writeMap]);
})
);
let promises = entries.map(async entry => {
let data = await readFile(entry);
let {css, map} = await less.render(data, {
...lessOptions,
filename: entry
});
let writeCSS = writeFile(setExt(entry, ".css"), css);
if (!map || inlineMap) {
return writeCSS;
}
let writeMap = writeFile(setExt(entry, ".css.map"), map);
return Promise.all([writeCSS, writeMap]);
});
return Promise.all(promises);
}

Expand Down
2 changes: 1 addition & 1 deletion package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "less-compile-roots",
"version": "0.2.3",
"version": "0.2.4",
"description": "Tool for extracting and compiling root Less files",
"main": "dist/index.js",
"module": "src/index.mjs",
Expand Down
54 changes: 25 additions & 29 deletions src/index.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -8,42 +8,38 @@ let flat = Array.prototype.flat ? list => list.flat() : list => [].concat(...lis
async function getImports(entries) {
let commentRE = /\/\*[\s\S]*?\*\/|\/\/\s*@import[^;]+;/g;
let importRE = /(?<=@import\s[^"']*["']).+?(?=['"]\s*;)/g;
let promises = entries.map(entry =>
readFile(entry)
.then(data => {
data = data.replace(commentRE, "");
let dir = path.dirname(entry);
return (data.match(importRE) || []).map(importPath => {
importPath = path.join(dir, importPath);
if (!path.extname(importPath)) {
importPath += ".less";
}
return importPath;
});
})
);
let promises = entries.map(async entry => {
let data = await readFile(entry);
data = data.replace(commentRE, "");
let dir = path.dirname(entry);
return (data.match(importRE) || []).map(importPath => {
importPath = path.join(dir, importPath);
if (!path.extname(importPath)) {
importPath += ".less";
}
return importPath;
});
});
let importLists = await Promise.all(promises);
return new Set(flat(importLists));
}

function compile(entries, lessOptions) {
let less = require("less");
let inlineMap = lessOptions.sourceMap && lessOptions.sourceMap.sourceMapFileInline;
let promises = entries.map(entry =>
readFile(entry)
.then(data => less.render(data, {
...lessOptions,
filename: entry
}))
.then(({css, map}) => {
let writeCSS = writeFile(setExt(entry, ".css"), css);
if (!map || inlineMap) {
return writeCSS;
}
let writeMap = writeFile(setExt(entry, ".css.map"), map);
return Promise.all([writeCSS, writeMap]);
})
);
let promises = entries.map(async entry => {
let data = await readFile(entry);
let {css, map} = await less.render(data, {
...lessOptions,
filename: entry
});
let writeCSS = writeFile(setExt(entry, ".css"), css);
if (!map || inlineMap) {
return writeCSS;
}
let writeMap = writeFile(setExt(entry, ".css.map"), map);
return Promise.all([writeCSS, writeMap]);
});
return Promise.all(promises);
}

Expand Down
66 changes: 33 additions & 33 deletions test/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion test/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,6 @@
"dependencies": {
"del-cli": "^2.0.0",
"less": "^3.9.0",
"less-compile-roots": "file:../less-compile-roots-0.2.3.tgz"
"less-compile-roots": "file:../less-compile-roots-0.2.4.tgz"
}
}

0 comments on commit 4d89e79

Please sign in to comment.