From 57f6c0bb924cebfa5ed9cf72c9cddebc20d7208d Mon Sep 17 00:00:00 2001 From: Brendan Burns Date: Mon, 24 Jun 2019 22:33:05 -0700 Subject: [PATCH] Switch from json-stream to byline. --- package-lock.json | 54 ++++++++++++++++++++--------------------------- package.json | 3 ++- src/watch.ts | 13 +++++++++--- 3 files changed, 35 insertions(+), 35 deletions(-) diff --git a/package-lock.json b/package-lock.json index 216e032d61..4415cdb05b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -119,6 +119,15 @@ "to-fast-properties": "^2.0.0" } }, + "@types/byline": { + "version": "4.2.31", + "resolved": "https://registry.npmjs.org/@types/byline/-/byline-4.2.31.tgz", + "integrity": "sha1-DmH8ucA+BH0hxEllVMcRYperYM0=", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@types/caseless": { "version": "0.12.1", "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.1.tgz", @@ -362,6 +371,11 @@ "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", "dev": true }, + "byline": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz", + "integrity": "sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE=" + }, "caching-transform": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-3.0.2.tgz", @@ -606,7 +620,6 @@ "version": "6.0.5", "resolved": "https://npm.unueng.com/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, "requires": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -709,7 +722,6 @@ "version": "1.4.1", "resolved": "https://npm.unueng.com/end-of-stream/-/end-of-stream-1.4.1.tgz", "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", - "dev": true, "requires": { "once": "^1.4.0" } @@ -775,7 +787,6 @@ "version": "1.0.0", "resolved": "https://npm.unueng.com/execa/-/execa-1.0.0.tgz", "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, "requires": { "cross-spawn": "^6.0.0", "get-stream": "^4.0.0", @@ -916,7 +927,6 @@ "version": "4.1.0", "resolved": "https://npm.unueng.com/get-stream/-/get-stream-4.1.0.tgz", "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, "requires": { "pump": "^3.0.0" } @@ -1162,8 +1172,7 @@ "is-stream": { "version": "1.1.0", "resolved": "https://npm.unueng.com/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" }, "is-symbol": { "version": "1.0.2", @@ -1182,8 +1191,7 @@ "isexe": { "version": "2.0.0", "resolved": "https://npm.unueng.com/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" }, "isomorphic-ws": { "version": "4.0.1", @@ -1337,11 +1345,6 @@ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" }, - "json-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-stream/-/json-stream-1.0.0.tgz", - "integrity": "sha1-GjhU4o0rvuqzHMfd9oPS3cVlJwg=" - }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", @@ -1724,8 +1727,7 @@ "nice-try": { "version": "1.0.5", "resolved": "https://npm.unueng.com/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" }, "nock": { "version": "10.0.6", @@ -1795,7 +1797,6 @@ "version": "2.0.2", "resolved": "https://npm.unueng.com/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "dev": true, "requires": { "path-key": "^2.0.0" } @@ -1938,8 +1939,7 @@ "p-finally": { "version": "1.0.0", "resolved": "https://npm.unueng.com/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" }, "p-is-promise": { "version": "2.1.0", @@ -2007,8 +2007,7 @@ "path-key": { "version": "2.0.1", "resolved": "https://npm.unueng.com/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" }, "path-parse": { "version": "1.0.5", @@ -2123,7 +2122,6 @@ "version": "3.0.0", "resolved": "https://npm.unueng.com/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, "requires": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -2288,8 +2286,7 @@ "semver": { "version": "5.5.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz", - "integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw==", - "dev": true + "integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw==" }, "semver-compare": { "version": "1.0.0", @@ -2307,7 +2304,6 @@ "version": "1.2.0", "resolved": "https://npm.unueng.com/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, "requires": { "shebang-regex": "^1.0.0" } @@ -2315,8 +2311,7 @@ "shebang-regex": { "version": "1.0.0", "resolved": "https://npm.unueng.com/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" }, "shelljs": { "version": "0.8.2", @@ -2331,8 +2326,7 @@ "signal-exit": { "version": "3.0.2", "resolved": "https://npm.unueng.com/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "dev": true + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" }, "slash": { "version": "3.0.0", @@ -2483,8 +2477,7 @@ "strip-eof": { "version": "1.0.0", "resolved": "https://npm.unueng.com/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" }, "strip-json-comments": { "version": "2.0.1", @@ -2707,7 +2700,6 @@ "version": "1.3.1", "resolved": "https://npm.unueng.com/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, "requires": { "isexe": "^2.0.0" } diff --git a/package.json b/package.json index c37ee41cda..23f697505c 100644 --- a/package.json +++ b/package.json @@ -52,10 +52,10 @@ "@types/request": "^2.47.1", "@types/underscore": "^1.8.9", "@types/ws": "^6.0.1", + "byline": "^5.0.0", "execa": "1.0.0", "isomorphic-ws": "^4.0.1", "js-yaml": "^3.13.1", - "json-stream": "^1.0.0", "jsonpath-plus": "^0.19.0", "request": "^2.88.0", "shelljs": "^0.8.2", @@ -64,6 +64,7 @@ "ws": "^6.1.0" }, "devDependencies": { + "@types/byline": "^4.2.31", "@types/chai": "^4.1.6", "@types/chai-as-promised": "^7.1.0", "@types/mocha": "^5.2.7", diff --git a/src/watch.ts b/src/watch.ts index 69b4917846..3da0ff2863 100644 --- a/src/watch.ts +++ b/src/watch.ts @@ -1,4 +1,4 @@ -import JSONStream = require('json-stream'); +import byline = require('byline'); import request = require('request'); import { KubeConfig } from './config'; @@ -55,8 +55,15 @@ export class Watch { }; this.config.applyToRequest(requestOptions); - const stream = new JSONStream(); - stream.on('data', (data) => callback(data.type, data.object)); + const stream = byline.createStream(); + stream.on('data', (line) => { + try { + const data = JSON.parse(line); + callback(data.type, data.object); + } catch (ignore) { + // ignore parse errors + } + }); const req = this.requestImpl.webRequest(requestOptions, (error, response, body) => { if (error) { done(error);