From 2eee08654582ce3c2e0cff7c15565dcefde86b2f Mon Sep 17 00:00:00 2001 From: Antoine du Hamel Date: Wed, 20 Oct 2021 12:05:34 +0200 Subject: [PATCH] ci: test Companion with Node.js 16.x (#3273) --- .github/workflows/companion.yml | 2 +- packages/@uppy/companion/src/server/Uploader.js | 10 +++++++++- packages/@uppy/companion/test/__tests__/uploader.js | 2 +- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/.github/workflows/companion.yml b/.github/workflows/companion.yml index 8daa048e8..6ebf51e37 100644 --- a/.github/workflows/companion.yml +++ b/.github/workflows/companion.yml @@ -7,7 +7,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - node-version: [10.20.1, 12.x, 14.x] + node-version: [10.20.1, 12.x, 14.x, 16.x] steps: - name: Checkout sources uses: actions/checkout@v2 diff --git a/packages/@uppy/companion/src/server/Uploader.js b/packages/@uppy/companion/src/server/Uploader.js index a56e495a6..318d513f7 100644 --- a/packages/@uppy/companion/src/server/Uploader.js +++ b/packages/@uppy/companion/src/server/Uploader.js @@ -241,7 +241,15 @@ class Uploader { * @param {Function} callback */ onSocketReady (callback) { - emitter().once(`connection:${this.token}`, () => callback()) + /** @type {any} */ // WriteStream.pending was added in Node.js 11.2.0 + const stream = this.writeStream + if (stream.pending) { + let connected = false + emitter().once(`connection:${this.token}`, () => { if (stream.pending) connected = true; else callback() }) + this.writeStream.once('ready', () => connected && callback()) + } else { + emitter().once(`connection:${this.token}`, () => callback()) + } logger.debug('waiting for connection', 'uploader.socket.wait', this.shortToken) } diff --git a/packages/@uppy/companion/test/__tests__/uploader.js b/packages/@uppy/companion/test/__tests__/uploader.js index f58ea6660..8f6c76124 100644 --- a/packages/@uppy/companion/test/__tests__/uploader.js +++ b/packages/@uppy/companion/test/__tests__/uploader.js @@ -1,4 +1,4 @@ -/* global jest:false, test:false, expect:false, describe:false */ +'use strict' jest.mock('tus-js-client')