From c8ccfd2f49024873dab598aa8ac9c74ae17c3d34 Mon Sep 17 00:00:00 2001 From: Jayden Seric Date: Mon, 25 May 2020 17:05:15 +1000 Subject: [PATCH] Remove the promises-all dependency in favor of Promise.allSettled. --- api/package-lock.json | 13 ------------- api/package.json | 3 +-- api/schema/MutationType.js | 19 ++++++++----------- 3 files changed, 9 insertions(+), 26 deletions(-) diff --git a/api/package-lock.json b/api/package-lock.json index 09abd3d..1fdb6e3 100644 --- a/api/package-lock.json +++ b/api/package-lock.json @@ -808,11 +808,6 @@ "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", "dev": true }, - "bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" - }, "boxen": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz", @@ -3196,14 +3191,6 @@ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true }, - "promises-all": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/promises-all/-/promises-all-1.0.0.tgz", - "integrity": "sha1-pDGMuNRWifZzkE4hVg8DI5cCgg8=", - "requires": { - "bluebird": "^3.4.7" - } - }, "pstree.remy": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", diff --git a/api/package.json b/api/package.json index 1a676d4..e7eeef8 100644 --- a/api/package.json +++ b/api/package.json @@ -8,7 +8,7 @@ "url": "https://jaydenseric.com" }, "engines": { - "node": "^12.0.0 || >= 13.7.0" + "node": "^12.9.0 || >= 13.7.0" }, "dependencies": { "apollo-server-koa": "^2.13.1", @@ -17,7 +17,6 @@ "koa": "^2.12.0", "lowdb": "^1.0.0", "mkdirp": "^1.0.4", - "promises-all": "^1.0.0", "shortid": "^2.2.15" }, "devDependencies": { diff --git a/api/schema/MutationType.js b/api/schema/MutationType.js index c75cab1..78e368e 100644 --- a/api/schema/MutationType.js +++ b/api/schema/MutationType.js @@ -2,7 +2,6 @@ const { GraphQLUpload } = require('apollo-server-koa'); const { GraphQLList, GraphQLObjectType, GraphQLNonNull } = require('graphql'); -const promisesAll = require('promises-all'); const FileType = require('./FileType'); module.exports = new GraphQLObjectType({ @@ -29,16 +28,14 @@ module.exports = new GraphQLObjectType({ }, }, async resolve(parent, { files }, { storeUpload }) { - const { resolve, reject } = await promisesAll.all( - files.map(storeUpload) - ); - - if (reject.length) - reject.forEach(({ name, message }) => - console.error(`${name}: ${message}`) - ); - - return resolve; + // Ensure an error storing one upload doesn’t prevent storing the rest. + const results = await Promise.allSettled(files.map(storeUpload)); + return results.reduce((storedFiles, { value, reason }) => { + if (value) storedFiles.push(value); + // Realistically you would do more than just log an error. + else console.error(`Failed to store upload: ${reason}`); + return storedFiles; + }, []); }, }, }),