From 8753971c6f55c1adc479319caf863ccd33579411 Mon Sep 17 00:00:00 2001 From: Guillaume Chau Date: Thu, 14 Jun 2018 16:51:29 +0200 Subject: [PATCH] fix(ui): task logs queue not flushed if not enough logs --- .../src/graphql-api/connectors/tasks.js | 40 ++++++++++++------- 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/packages/@vue/cli-ui/src/graphql-api/connectors/tasks.js b/packages/@vue/cli-ui/src/graphql-api/connectors/tasks.js index 637bd70bf6..0af31c0d2f 100644 --- a/packages/@vue/cli-ui/src/graphql-api/connectors/tasks.js +++ b/packages/@vue/cli-ui/src/graphql-api/connectors/tasks.js @@ -429,26 +429,38 @@ function open (id, context) { } function logPipe (action) { + const maxTime = 100 + let queue = '' let size = 0 let time = Date.now() + let timeout - return { - add: (string) => { - queue += string - size++ - - if (size === 20 || Date.now() > time + 100) { - action(queue) - queue = '' - size = 0 - time = Date.now() - } - }, - flush: () => { - if (size) action(queue) + const add = (string) => { + queue += string + size++ + + if (size === 20 || Date.now() > time + maxTime) { + flush() + } else { + clearTimeout(timeout) + setTimeout(flush, maxTime) } } + + const flush = () => { + clearTimeout(timeout) + if (!size) return + action(queue) + queue = '' + size = 0 + time = Date.now() + } + + return { + add, + flush + } } module.exports = {