diff options
| author | Andrej Mihajlov <and@mullvad.net> | 2019-04-15 15:12:11 +0200 |
|---|---|---|
| committer | Andrej Mihajlov <and@mullvad.net> | 2019-04-16 12:09:38 +0200 |
| commit | a985dfc08ef33a9c6bbaf2e8cf4ac67b1ffa3f72 (patch) | |
| tree | 9466c7b41bdba1a2883dd237f2bde5bcc4b95c51 | |
| parent | 0cfe2ba2161072866c453395ef9f0aedbda5acb5 (diff) | |
| download | mullvadvpn-a985dfc08ef33a9c6bbaf2e8cf4ac67b1ffa3f72.tar.xz mullvadvpn-a985dfc08ef33a9c6bbaf2e8cf4ac67b1ffa3f72.zip | |
Migrate to stream-json library
| -rw-r--r-- | gui/package-lock.json | 33 | ||||
| -rw-r--r-- | gui/package.json | 2 | ||||
| -rw-r--r-- | gui/src/main/jsonrpc-client.ts | 8 | ||||
| -rw-r--r-- | gui/tslint.json | 3 |
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": [ |
