diff --git a/app/lib/pty.ts b/app/lib/pty.ts index b85f9ac2..273040bf 100644 --- a/app/lib/pty.ts +++ b/app/lib/pty.ts @@ -1,4 +1,4 @@ -import * as nodePTY from 'node-pty' +import * as nodePTY from '@terminus-term/node-pty' import { v4 as uuidv4 } from 'uuid' import { ipcMain } from 'electron' import { Application } from './app' @@ -39,12 +39,22 @@ class PTYDataQueue { totalLength += this.buffers[0].length buffersToSend.push(this.buffers.shift()) } + + if (buffersToSend.length == 0) { + return + } + let toSend = Buffer.concat(buffersToSend) - this.buffers.unshift(toSend.slice(this.maxChunk)) - toSend = toSend.slice(0, this.maxChunk) + if (toSend.length > this.maxChunk) { + this.buffers.unshift(toSend.slice(this.maxChunk)) + toSend = toSend.slice(0, this.maxChunk) + } this.onData(toSend) this.delta += toSend.length - this.buffers = [] + + if (this.buffers.length) { + setImmediate(() => this.maybeEmit()) + } } } diff --git a/app/package.json b/app/package.json index 13db56a5..df0885fc 100644 --- a/app/package.json +++ b/app/package.json @@ -34,7 +34,7 @@ "mz": "^2.7.0", "native-process-working-directory": "^1.0.2", "ngx-toastr": "^13.2.1", - "node-pty": "^0.10.0", + "@terminus-term/node-pty": "0.10.0-terminus.3", "npm": "6", "path": "0.12.7", "rxjs": "^6.6.6", diff --git a/app/webpack.main.config.js b/app/webpack.main.config.js index 77df8e03..1d8b83e9 100644 --- a/app/webpack.main.config.js +++ b/app/webpack.main.config.js @@ -44,7 +44,7 @@ module.exports = { glasstron: 'commonjs glasstron', mz: 'commonjs mz', npm: 'commonjs npm', - 'node-pty': 'commonjs node-pty', + '@terminus-term/node-pty': 'commonjs @terminus-term/node-pty', path: 'commonjs path', rxjs: 'commonjs rxjs', 'rxjs/operators': 'commonjs rxjs/operators', diff --git a/app/yarn.lock b/app/yarn.lock index fba26bf9..bad4e4b9 100644 --- a/app/yarn.lock +++ b/app/yarn.lock @@ -143,6 +143,13 @@ dependencies: debug "^4.3.1" +"@terminus-term/node-pty@0.10.0-terminus.3": + version "0.10.0-terminus.3" + resolved "https://registry.yarnpkg.com/@terminus-term/node-pty/-/node-pty-0.10.0-terminus.3.tgz#9dbd64d52afda5079e66265a89d313fe42affab7" + integrity sha512-HvIOts22dnoBXhRfLiK9DyPasuixYVgEUvgqZmOr0B0Ki9tF8e074oYPUtzLRll6Y553QiUzTWhriCS99MChNQ== + dependencies: + nan "^2.14.0" + "@types/mz@2.7.3": version "2.7.3" resolved "https://registry.yarnpkg.com/@types/mz/-/mz-2.7.3.tgz#e42a21e73f5f9340fe4a176981fafb1eb8cc6c12" @@ -250,12 +257,7 @@ ansistyles@~0.1.3: resolved "https://registry.yarnpkg.com/ansistyles/-/ansistyles-0.1.3.tgz" integrity sha1-XeYEFb2gcbs3EnhUyGT0GyMlRTk= -any-promise@^1.0.0: - version "1.3.0" - resolved "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz" - integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= - -any-promise@^1.3.0: +any-promise@^1.0.0, any-promise@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= @@ -2146,13 +2148,6 @@ node-gyp@^5.0.2, node-gyp@^5.1.0: tar "^4.4.12" which "^1.3.1" -node-pty@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/node-pty/-/node-pty-0.10.0.tgz#c98d23967b076b35c9fb216c542a04d0b5db4821" - integrity sha512-Q65ookKbjhqWUYKmtZ6iPn0nnqNdzpm3YJOBmzwWJde/TrenBxK9FgqGGtSW0Wjz4YsR1grQF4a7RS5nBwuW9A== - dependencies: - nan "^2.14.0" - noop-logger@^0.1.1: version "0.1.1" resolved "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz" diff --git a/package.json b/package.json index 655177ce..21461705 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "core-js": "^3.9.1", "cross-env": "7.0.3", "css-loader": "5.2.0", - "electron": "12.0.2", + "electron": "12.0.4", "electron-builder": "22.10.5", "electron-download": "^4.1.1", "electron-installer-snap": "^5.1.0", diff --git a/scripts/sentry-upload.js b/scripts/sentry-upload.js index 83e38619..819980e5 100755 --- a/scripts/sentry-upload.js +++ b/scripts/sentry-upload.js @@ -9,7 +9,7 @@ sh.exec(`${sentryCli} releases new ${vars.version}`) if (process.platform === 'darwin') { for (const path of [ 'app/node_modules/@serialport/bindings/build/Release/bindings.node', - 'app/node_modules/node-pty/build/Release/pty.node', + 'app/node_modules/@terminus-term/node-pty/build/Release/pty.node', 'app/node_modules/fontmanager-redux/build/Release/fontmanager.node', 'app/node_modules/macos-native-processlist/build/Release/native.node', ]) { diff --git a/yarn.lock b/yarn.lock index 74c62947..9584b017 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2560,10 +2560,10 @@ electron-to-chromium@^1.3.621: resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.629.tgz" integrity sha512-iSPPJtPvHrMAvYOt+9cdbDmTasPqwnwz4lkP8Dn200gDNUBQOLQ96xUsWXBwXslAo5XxdoXAoQQ3RAy4uao9IQ== -electron@12.0.2: - version "12.0.2" - resolved "https://registry.yarnpkg.com/electron/-/electron-12.0.2.tgz#d92be205f1937627bd6718aad44ac161382b4c2d" - integrity sha512-14luh9mGzfL4e0sncyy0+kW37IU7Y0Y1tvI97FDRSW0ZBQxi5cmAwSs5dmPmNBFBIGtzkaGaEB01j9RjZuCmow== +electron@12.0.4: + version "12.0.4" + resolved "https://registry.yarnpkg.com/electron/-/electron-12.0.4.tgz#c2ca4710d0e4da7db6d31c4f55777b08bfcb08e5" + integrity sha512-A8Lq3YMZ1CaO1z5z5nsyFxIwkgwXLHUwL2pf9MVUHpq7fv3XUewCMD98EnLL3DdtiyCvw5KMkeT1WGsZh8qFug== dependencies: "@electron/get" "^1.0.1" "@types/node" "^14.6.2"