From 4d89e79b91c0430eb676b860bd384aea88291e2c Mon Sep 17 00:00:00 2001 From: Amphiluke Date: Sun, 4 Aug 2019 15:11:26 +0700 Subject: [PATCH] Revise async function usage --- dist/index.js | 54 ++++++++++++++++------------------ package-lock.json | 2 +- package.json | 2 +- src/index.mjs | 54 ++++++++++++++++------------------ test/package-lock.json | 66 +++++++++++++++++++++--------------------- test/package.json | 2 +- 6 files changed, 86 insertions(+), 94 deletions(-) diff --git a/dist/index.js b/dist/index.js index 6dfec76..caa11d8 100644 --- a/dist/index.js +++ b/dist/index.js @@ -40,20 +40,18 @@ 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)); } @@ -61,21 +59,19 @@ async function getImports(entries) { 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); } diff --git a/package-lock.json b/package-lock.json index ea1012b..e0202f0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "less-compile-roots", - "version": "0.2.3", + "version": "0.2.4", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index c86b382..12dba3a 100644 --- a/package.json +++ b/package.json @@ -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", diff --git a/src/index.mjs b/src/index.mjs index 3957e82..1274444 100644 --- a/src/index.mjs +++ b/src/index.mjs @@ -8,20 +8,18 @@ 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)); } @@ -29,21 +27,19 @@ async function getImports(entries) { 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); } diff --git a/test/package-lock.json b/test/package-lock.json index 1c85e6d..b5ac412 100644 --- a/test/package-lock.json +++ b/test/package-lock.json @@ -48,14 +48,14 @@ "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==" }, "@types/node": { - "version": "12.0.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.0.10.tgz", - "integrity": "sha512-LcsGbPomWsad6wmMNv7nBLw7YYYyfdYcz6xryKYQhx89c3XXan+8Q6AJ43G5XDIaklaVkK3mE4fCb0SBvMiPSQ==" + "version": "12.6.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.6.9.tgz", + "integrity": "sha512-+YB9FtyxXGyD54p8rXwWaN1EWEyar5L58GlGWgtH2I9rGmLGBQcw63+0jw+ujqVavNuO47S1ByAjm9zdHMnskw==" }, "ajv": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", - "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", + "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", "optional": true, "requires": { "fast-deep-equal": "^2.0.1", @@ -316,9 +316,9 @@ "optional": true }, "fast-glob": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.0.3.tgz", - "integrity": "sha512-scDJbDhN+6S4ELXzzN96Fqm5y1CMRn+Io3C4Go+n/gUKP+LW26Wma6IxLSsX2eAMBUOFmyHKDBrUSuoHsycQ5A==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.0.4.tgz", + "integrity": "sha512-wkIbV6qg37xTJwqSsdnIphL1e+LaGz4AIQqr00mIubMaEhv1/HEmJ0uuCGZRNRUkZZmOB5mJKO0ZUTVq+SxMQg==", "requires": { "@nodelib/fs.stat": "^2.0.1", "@nodelib/fs.walk": "^1.2.1", @@ -430,9 +430,9 @@ } }, "graceful-fs": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.0.tgz", - "integrity": "sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==" + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.1.tgz", + "integrity": "sha512-b9usnbDGnD928gJB3LrCmxoibr3VE4U2SMo5PBuBnokWyDADTqDPXg4YpwKF1trpH+UbGp7QLicO3+aWEy0+mw==" }, "har-schema": { "version": "2.0.0", @@ -515,9 +515,9 @@ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" }, "is-path-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.1.0.tgz", - "integrity": "sha512-Sc5j3/YnM8tDeyCsVeKlm/0p95075DyLmDEIkSgQ7mXkrOX+uTCtmQFm0CYzVyJwcCCmO3k8qfJt17SxQwB5Zw==" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==" }, "is-path-in-cwd": { "version": "2.1.0", @@ -610,10 +610,10 @@ } }, "less-compile-roots": { - "version": "file:../less-compile-roots-0.2.3.tgz", - "integrity": "sha512-IxZMOKw4UFW6ykmtuNET7O9j95N7tuY+gCVaQ86q36hypta88CAD2+/YX7xqsSX53PK36wzH/ZPEEpiaUl8TWg==", + "version": "file:../less-compile-roots-0.2.4.tgz", + "integrity": "sha512-ipIOw3rA/tMGT/Ji3p2a18fuvlnMdwMCp2zJMoc8sOZsRG/KL80JUVX4GuhceTfe/Fms/YkEZX9abQv8x3xx2g==", "requires": { - "fast-glob": "^3.0.3" + "fast-glob": "^3.0.4" } }, "load-json-file": { @@ -674,9 +674,9 @@ } }, "merge2": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.3.tgz", - "integrity": "sha512-gdUU1Fwj5ep4kplwcmftruWofEFt6lfpkkr3h860CXbAB9c3hGb55EOL2ali0Td5oebvW0E1+3Sr+Ur7XfKpRA==" + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.4.tgz", + "integrity": "sha512-FYE8xI+6pjFOhokZu0We3S5NKCirLbCzSh2Usf3qEyr4X8U+0jNg9P8RZ4qz+V2UoECLVwSyzU3LxXBaLGtD3A==" }, "micromatch": { "version": "4.0.2", @@ -885,9 +885,9 @@ "optional": true }, "psl": { - "version": "1.1.33", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.33.tgz", - "integrity": "sha512-LTDP2uSrsc7XCb5lO7A8BI1qYxRe/8EqlRvMeEl6rsnYAqDOl8xHR+8lSAIVfrNaSAlTPTNOCgNjWcoUL3AZsw==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.3.0.tgz", + "integrity": "sha512-avHdspHO+9rQTLbv1RO+MPYeP/SzsCoxofjVnHanETfQhTJrmB0HlDoW+EiN/R+C0BZ+gERab9NY0lPN2TxNag==", "optional": true }, "punycode": { @@ -964,9 +964,9 @@ } }, "resolve": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz", - "integrity": "sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==", + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", + "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", "requires": { "path-parse": "^1.0.6" } @@ -990,9 +990,9 @@ "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==" }, "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==", "optional": true }, "safer-buffer": { @@ -1041,9 +1041,9 @@ } }, "spdx-license-ids": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz", - "integrity": "sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA==" + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==" }, "sshpk": { "version": "1.16.1", diff --git a/test/package.json b/test/package.json index e04831c..b620845 100644 --- a/test/package.json +++ b/test/package.json @@ -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" } }