summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAndrej Mihajlov <and@mullvad.net>2019-04-15 15:12:11 +0200
committerAndrej Mihajlov <and@mullvad.net>2019-04-16 12:09:38 +0200
commita985dfc08ef33a9c6bbaf2e8cf4ac67b1ffa3f72 (patch)
tree9466c7b41bdba1a2883dd237f2bde5bcc4b95c51
parent0cfe2ba2161072866c453395ef9f0aedbda5acb5 (diff)
downloadmullvadvpn-a985dfc08ef33a9c6bbaf2e8cf4ac67b1ffa3f72.tar.xz
mullvadvpn-a985dfc08ef33a9c6bbaf2e8cf4ac67b1ffa3f72.zip
Migrate to stream-json library
-rw-r--r--gui/package-lock.json33
-rw-r--r--gui/package.json2
-rw-r--r--gui/src/main/jsonrpc-client.ts8
-rw-r--r--gui/tslint.json3
4 files changed, 41 insertions, 5 deletions
diff --git a/gui/package-lock.json b/gui/package-lock.json
index 668fa534ad..48f2773e3b 100644
--- a/gui/package-lock.json
+++ b/gui/package-lock.json
@@ -273,6 +273,26 @@
"integrity": "sha512-hkgzYF+qnIl8uTO8rmUSVSfQ8BIfMXC4yJAF4n8BE758YsKBZvFC4NumnAegj7KmylP0liEZNpb9RRGFMbFejA==",
"dev": true
},
+ "@types/stream-chain": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@types/stream-chain/-/stream-chain-2.0.0.tgz",
+ "integrity": "sha512-O3IRJcZi4YddlS8jgasH87l+rdNmad9uPAMmMZCfRVhumbWMX6lkBWnIqr9kokO5sx8LHp8peQ1ELhMZHbR0Gg==",
+ "dev": true,
+ "requires": {
+ "@types/node": "*"
+ }
+ },
+ "@types/stream-json": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@types/stream-json/-/stream-json-1.0.0.tgz",
+ "integrity": "sha512-W9B6R5GPbTq72Oz/oJZ8qSl3+6g2xbBK0et+pK/LwGpoSWsHh2AVEYLuQUBUzg+ps4xZGdYJP5nqsW17DFbxzQ==",
+ "dev": true,
+ "requires": {
+ "@types/events": "*",
+ "@types/node": "*",
+ "@types/stream-chain": "*"
+ }
+ },
"@types/topojson-specification": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/@types/topojson-specification/-/topojson-specification-1.0.1.tgz",
@@ -7398,6 +7418,11 @@
"integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=",
"dev": true
},
+ "stream-chain": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/stream-chain/-/stream-chain-2.1.0.tgz",
+ "integrity": "sha512-PAUXdRGm0G8P0+/+JEd3O9kfmB9kwmr2nKIc5zhcsHn0KdBByD5PJ2po21iDzc+TZsOSEbU8j4JbAevJsZkLyQ=="
+ },
"stream-combiner": {
"version": "0.0.4",
"resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz",
@@ -7407,6 +7432,14 @@
"duplexer": "~0.1.1"
}
},
+ "stream-json": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/stream-json/-/stream-json-1.2.1.tgz",
+ "integrity": "sha512-KcZkgyTENM4HXBDyIguAcyWUogXp+wwWF3wLL5QtWj8SlNESx+4xGWk7rYdFDtTvQ1FhSRkQEWv5xOu4eHU+jQ==",
+ "requires": {
+ "stream-chain": "^2.1.0"
+ }
+ },
"stream-throttle": {
"version": "0.1.3",
"resolved": "https://registry.npmjs.org/stream-throttle/-/stream-throttle-0.1.3.tgz",
diff --git a/gui/package.json b/gui/package.json
index 62384397dd..d10736dc48 100644
--- a/gui/package.json
+++ b/gui/package.json
@@ -30,6 +30,7 @@
"reactxp": "^1.6.1",
"redux": "^4.0.1",
"sprintf-js": "^1.1.2",
+ "stream-json": "^1.2.1",
"uuid": "^3.0.1",
"validated": "^2.0.1"
},
@@ -55,6 +56,7 @@
"@types/react-router": "^4.4.3",
"@types/sinon": "^7.0.5",
"@types/sprintf-js": "^1.1.2",
+ "@types/stream-json": "^1.0.0",
"@types/topojson-specification": "^1.0.1",
"@types/uuid": "^3.4.4",
"browser-sync": "^2.26.3",
diff --git a/gui/src/main/jsonrpc-client.ts b/gui/src/main/jsonrpc-client.ts
index 0a6ada62d8..34e4797442 100644
--- a/gui/src/main/jsonrpc-client.ts
+++ b/gui/src/main/jsonrpc-client.ts
@@ -2,8 +2,8 @@ import assert from 'assert';
import log from 'electron-log';
import { EventEmitter } from 'events';
import jsonrpc from 'jsonrpc-lite';
-import JSONStream from 'JSONStream';
import * as net from 'net';
+import StreamValues from 'stream-json/streamers/StreamValues';
import * as uuid from 'uuid';
export interface IUnansweredRequest {
@@ -325,7 +325,7 @@ export class SocketTransport implements ITransport<{ path: string }> {
public connect(options: { path: string }) {
assert(!this.connection, 'Make sure to close the existing socket');
- const jsonStream = JSONStream.parse(null)
+ const jsonStream = StreamValues.withParser()
.on('data', this.onJsonStreamData)
.once('error', this.onJsonStreamError);
@@ -406,8 +406,8 @@ export class SocketTransport implements ITransport<{ path: string }> {
}
};
- private onJsonStreamData = (data: object) => {
- this.onMessage(data);
+ private onJsonStreamData = (data: { key: number; value: any }) => {
+ this.onMessage(data.value);
};
private onJsonStreamError = (error: Error) => {
diff --git a/gui/tslint.json b/gui/tslint.json
index dd9577239b..a7f1b4f959 100644
--- a/gui/tslint.json
+++ b/gui/tslint.json
@@ -17,7 +17,8 @@
],
"no-submodule-imports": [
true,
- "validated"
+ "validated",
+ "stream-json"
],
"object-literal-sort-keys": false,
"variable-name": [