From f4158970b06013b1a187d202082a349d3bfbbdb8 Mon Sep 17 00:00:00 2001 From: coderaiser Date: Tue, 14 Apr 2020 18:05:13 +0300 Subject: [PATCH] feature(package) superstat v2.0.0 --- lib/readdir.js | 27 ++++++++++++--------------- package.json | 2 +- test/readify.js | 5 +++-- 3 files changed, 16 insertions(+), 18 deletions(-) diff --git a/lib/readdir.js b/lib/readdir.js index b3d010f..ae92e79 100644 --- a/lib/readdir.js +++ b/lib/readdir.js @@ -5,32 +5,29 @@ const {readdir} = require('fs').promises; const tryToCatch = require('try-to-catch'); const superstat = require('superstat'); +const currify = require('currify'); const noop = function() {}; -const {assign} = Object; +const stat = currify(async (dir, name) => { + const full = join(dir, name); + const [, info = empty(name)] = await tryToCatch(superstat, full); + + return info; +}); module.exports = async (dir) => { - const result = []; const names = await readdir(dir); - for (const name of names) { - const full = join(dir, name); - const [ - , - info = empty(), - ] = await tryToCatch(superstat, full); - - result.push(parseStat(assign(info, { - name, - }))); - } + const statsPromises = names.map(stat(dir)); + const stats = await Promise.all(statsPromises); - return result; + return stats.map(parseStat); }; -function empty() { +function empty(name) { return { + name, uid: 0, mode: 0, size: 0, diff --git a/package.json b/package.json index 19e94d5..8eb98b7 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "format-io": "^2.0.0", "nicki": "^5.0.0", "shortdate": "^2.0.0", - "superstat": "^1.0.0", + "superstat": "^2.0.0", "try-to-catch": "^3.0.0" }, "keywords": [ diff --git a/test/readify.js b/test/readify.js index ae74d7b..976db0f 100644 --- a/test/readify.js +++ b/test/readify.js @@ -384,9 +384,10 @@ test('readify: sort: name: desc', async (t) => { const sort = 'name'; const order = 'desc'; + const getName = ({name}) => name; + const data = await readify('./test/fixture/attr_sort', {sort, order}); - data.files = data.files - .map((file) => file.name); + data.files = data.files.map(getName); t.deepEqual(data.files, files, 'should equal'); t.end();