Skip to content

Commit ab9bc8d

Browse files
committed
remove node dependencies + fix export issues
1 parent c8a4776 commit ab9bc8d

15 files changed

+463
-166
lines changed

package.json

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
{
22
"name": "reactivexcomponent.js",
3-
"version": "7.0.4",
3+
"version": "7.0.5",
44
"description": "Javascript reactive client API for XComponent",
5-
"main": "dist/index.js",
65
"module": "dist/index.js",
6+
"main": "dist/index.js",
77
"types": "dist/index.d.ts",
88
"exports": {
99
"import": "./dist/index.js",
@@ -14,6 +14,7 @@
1414
"lib": "./lib"
1515
},
1616
"scripts": {
17+
"build:browser": "rollup -c",
1718
"build": "node scripts/clean.js && tsc",
1819
"watch": "node scripts/clean.js && tsc -w",
1920
"test": "node scripts/test.js --env=jsdom",
@@ -80,15 +81,16 @@
8081
"@types/xml2js": "0.4.8",
8182
"@types/xmldom": "^0.1.28",
8283
"atob": "^2.0.3",
83-
"log4ts": "^0.4.2",
8484
"pako": "^1.0.3",
8585
"rxjs": "^6.0.0",
8686
"rxjs-compat": "^6",
87-
"uuid": "^7.0.0",
88-
"websocket": "^1.0.25",
89-
"xml2js": "^0.4.17"
87+
"tslib": "^2.8.1"
9088
},
9189
"devDependencies": {
90+
"@rollup/plugin-commonjs": "^28.0.3",
91+
"@rollup/plugin-json": "^6.1.0",
92+
"@rollup/plugin-node-resolve": "^16.0.1",
93+
"@rollup/plugin-typescript": "^12.1.2",
9294
"clean-webpack-plugin": "^1.0.0",
9395
"compression": "^1.6.2",
9496
"husky": "^6.0.0",
@@ -98,6 +100,7 @@
98100
"mock-socket": "^9.0.0",
99101
"prettier": "^1.14.0",
100102
"pretty-quick": "^2.0.0",
103+
"rollup": "^4.39.0",
101104
"source-map-loader": "^0.2.0",
102105
"ts-jest": "^25.0.0",
103106
"ts-loader": "^5.0.0",

rollup.config.cjs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
const resolve = require('@rollup/plugin-node-resolve');
2+
const commonjs = require('@rollup/plugin-commonjs');
3+
const typescript = require('@rollup/plugin-typescript');
4+
const json = require('@rollup/plugin-json');
5+
6+
7+
module.exports = {
8+
input: 'src/index.ts',
9+
output: [
10+
{ file: 'dist/index.js', format: 'esm' },
11+
{ file: 'dist/index.umd.js', format: 'umd', name: 'ReactiveXComponent' }
12+
],
13+
plugins: [
14+
resolve(),
15+
commonjs(),
16+
json(),
17+
typescript({
18+
tsconfig: './tsconfig.json',
19+
tslib: require.resolve('tslib')
20+
})
21+
]
22+
};

src/XComponent.ts

Lines changed: 47 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -1,80 +1,66 @@
1-
import { WebSocketConnection } from "./communication/WebSocketConnection";
2-
import { Connection } from "./interfaces/Connection";
3-
import { ErrorListener } from "./interfaces/ErrorListener";
4-
import { Logger, LoggerConfig } from "log4ts";
5-
import BasicLayout from "log4ts/build/layouts/BasicLayout";
6-
import ConsoleAppender from "log4ts/build/appenders/ConsoleAppender";
7-
import { LogLevel } from "log4ts/build/LogLevel";
8-
import { WebSocketBridgeCommunication } from "./communication/WebSocketBridgeCommunication";
9-
import { w3cwebsocket as WebSocketLib } from "websocket";
1+
import { WebSocketConnection } from './communication/WebSocketConnection';
2+
import { Connection } from './interfaces/Connection';
3+
import { ErrorListener } from './interfaces/ErrorListener';
4+
import { Logger } from './utils/Logger';
5+
import { WebSocketBridgeCommunication } from './communication/WebSocketBridgeCommunication';
106

117
export class XComponent {
12-
private logger: Logger = Logger.getLogger("XComponent");
13-
private loggerconfig: LoggerConfig;
8+
private logger = Logger.getLogger('XComponent');
149
private initialized: boolean = false;
1510

16-
public connect(serverUrl: string, errorListener?: ErrorListener, heartbeatIntervalSeconds: number = 10): Promise<Connection> {
11+
public connect(
12+
serverUrl: string,
13+
errorListener?: ErrorListener,
14+
heartbeatIntervalSeconds: number = 10
15+
): Promise<Connection> {
1716
this.ensureInitialized();
18-
return new Promise((resolve, reject): void => {
19-
let webSocket;
20-
if (this.isNodeApplication()) {
21-
process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
22-
webSocket = new WebSocketLib(serverUrl);
23-
} else {
24-
webSocket = new WebSocket(serverUrl);
25-
}
26-
let webSocketBridgeCommunication = new WebSocketBridgeCommunication(webSocket);
27-
let connection = new WebSocketConnection(webSocket, webSocketBridgeCommunication);
28-
29-
webSocket.onopen = ((e: Event) => {
30-
connection.closedByUser = false;
31-
webSocketBridgeCommunication.startHeartbeat(heartbeatIntervalSeconds);
32-
this.logger.info("connection started on " + serverUrl + ".");
33-
resolve(connection);
34-
}).bind(this);
35-
36-
webSocket.onerror = ((error: Event) => {
37-
if (errorListener) {
38-
errorListener.onError(new Error(error.toString()));
39-
reject(error);
17+
return new Promise(
18+
(resolve, reject): void => {
19+
let webSocket;
20+
if (this.isNodeApplication()) {
21+
process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';
22+
webSocket = new WebSocket(serverUrl);
23+
} else {
24+
webSocket = new WebSocket(serverUrl);
4025
}
41-
this.logger.error("Error on " + serverUrl + ".", error);
42-
}).bind(this);
26+
let webSocketBridgeCommunication = new WebSocketBridgeCommunication(webSocket);
27+
let connection = new WebSocketConnection(webSocket, webSocketBridgeCommunication);
4328

44-
webSocket.onclose = ((closeEvent: CloseEvent) => {
45-
this.logger.info("connection on " + serverUrl + " closed.", closeEvent);
46-
if (!connection.closedByUser && errorListener) {
47-
errorListener.onError(new Error("Unxecpected connection close on " + serverUrl));
48-
reject(closeEvent);
49-
}
50-
webSocketBridgeCommunication.dispose();
51-
connection.dispose();
52-
}).bind(this);
53-
});
54-
}
29+
webSocket.onopen = ((e: Event) => {
30+
connection.closedByUser = false;
31+
webSocketBridgeCommunication.startHeartbeat(heartbeatIntervalSeconds);
32+
this.logger.info('connection started on ' + serverUrl + '.');
33+
resolve(connection);
34+
}).bind(this);
5535

56-
public setLogLevel(logLevel: LogLevel): void {
57-
this.ensureInitialized();
58-
this.loggerconfig.setLevel(logLevel);
59-
}
36+
webSocket.onerror = ((error: Event) => {
37+
if (errorListener) {
38+
errorListener.onError(new Error(error.toString()));
39+
reject(error);
40+
}
41+
this.logger.error('Error on ' + serverUrl + '.', error);
42+
}).bind(this);
6043

61-
public getLogLevel(): LogLevel {
62-
this.ensureInitialized();
63-
return this.loggerconfig.getLevel();
44+
webSocket.onclose = ((closeEvent: CloseEvent) => {
45+
this.logger.info('connection on ' + serverUrl + ' closed.', closeEvent);
46+
if (!connection.closedByUser && errorListener) {
47+
errorListener.onError(new Error('Unxecpected connection close on ' + serverUrl));
48+
reject(closeEvent);
49+
}
50+
webSocketBridgeCommunication.dispose();
51+
connection.dispose();
52+
}).bind(this);
53+
}
54+
);
6455
}
6556

6657
private ensureInitialized() {
6758
if (!this.initialized) {
68-
let consoleAppender = new ConsoleAppender();
69-
consoleAppender.setLayout(new BasicLayout());
70-
this.loggerconfig = new LoggerConfig(consoleAppender, LogLevel.INFO);
71-
Logger.setConfig(this.loggerconfig);
7259
this.initialized = true;
7360
}
7461
}
7562

7663
private isNodeApplication() {
77-
return typeof process === "object" &&
78-
process + "" === "[object process]" && typeof window === "undefined";
64+
return typeof process === 'object' && process + '' === '[object process]' && typeof window === 'undefined';
7965
}
80-
}
66+
}

src/communication/WebSocketBridgeCommunication.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@ import { filter, first, map, takeWhile } from 'rxjs/operators';
33
import { Commands } from '../configuration/xcWebSocketBridgeConfiguration';
44
import { CompositionModel, DeserializedData, Serializer, Deserializer } from './xcomponentMessages';
55
import 'rxjs/add/observable/fromEvent';
6-
import { Logger } from 'log4ts';
6+
import { Logger } from '../utils/Logger';
77
import { DefaultApiConfigurationParser } from '../configuration/apiConfigurationParser';
88
import { ApiConfiguration } from '../configuration/apiConfiguration';
99

1010
export class WebSocketBridgeCommunication {
11-
private logger: Logger = Logger.getLogger('HeartbeatManager');
11+
private logger = Logger.getLogger('HeartbeatManager');
1212
private updates$: Observable<DeserializedData>;
1313
private deserializer: Deserializer;
1414
private serializer: Serializer;
@@ -33,7 +33,7 @@ export class WebSocketBridgeCommunication {
3333
this.updates$
3434
.pipe(filter((data: DeserializedData) => data.command === command))
3535
.subscribe((data: DeserializedData) => {
36-
this.logger.trace('Heartbeat received successfully');
36+
this.logger.debug('Heartbeat received successfully');
3737
});
3838
let commandData = {
3939
Command: command,
@@ -42,7 +42,7 @@ export class WebSocketBridgeCommunication {
4242
let input = thisWebSocketBridgeCommunication.serializer.convertCommandDataToWebsocketInputFormat(commandData);
4343
this.heartbeatTimer = setInterval(() => {
4444
thisWebSocketBridgeCommunication.webSocket.send(input);
45-
this.logger.trace('Heartbeat sent');
45+
this.logger.debug('Heartbeat sent');
4646
}, heartbeatIntervalSeconds * 1000);
4747
}
4848

src/communication/WebSocketConnection.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { WebSocket, Server } from 'mock-socket';
33
import { ErrorListener } from '../../src/interfaces/ErrorListener';
44
import Mock from '../utils/mockSubscriberDependencies';
55
import pako = require('pako');
6-
import * as uuid from 'uuid/v4';
6+
import { generateUUID } from '../utils/uuid';
77

88
const encodeServerMessage = (strData: string) => {
99
let binaryString = pako.deflate(strData, { to: 'string' });
@@ -114,7 +114,7 @@ describe('Test Connection module', function() {
114114
describe('Test getModel method', function() {
115115
let serverMock: Server, serverUrl: string;
116116
beforeEach(function() {
117-
serverUrl = 'wss://' + uuid();
117+
serverUrl = 'wss://' + generateUUID();
118118
serverMock = new Server(serverUrl);
119119
});
120120

src/communication/WebSocketSubscriber.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { Deserializer } from '../../src/communication/xcomponentMessages';
44
import Mock from '../utils/mockSubscriberDependencies';
55
import { EventEmitter } from 'events';
66
import { PrivateTopics } from '../../src/interfaces/PrivateTopics';
7-
import * as uuid from 'uuid/v4';
7+
import { generateUUID } from '../utils/uuid';
88
import { verify, instance, mock, anything } from '../../node_modules/ts-mockito/lib/ts-mockito';
99
import { WebSocketWrapper } from '../../src/communication/WebSocketWrapper';
1010

@@ -19,7 +19,7 @@ describe('Test xcWebSocketSubscriber module', function() {
1919
describe('Test subscribe method', function() {
2020
let subscriber, mockServer: Server, mockWebSocket;
2121
beforeEach(function() {
22-
let serverUrl = 'wss://' + uuid();
22+
let serverUrl = 'wss://' + generateUUID();
2323
mockServer = new Server(serverUrl);
2424
mockWebSocket = new WebSocket(serverUrl);
2525
subscriber = new WebSocketSubscriber(new WebSocketWrapper(mockWebSocket), Mock.configuration);
@@ -105,7 +105,7 @@ describe('Test xcWebSocketSubscriber module', function() {
105105
describe('Test getSnapshot method', function() {
106106
let subscriber, mockServer: Server, mockWebSocket, privateTopics;
107107
beforeEach(function() {
108-
let serverUrl = 'wss://' + uuid();
108+
let serverUrl = 'wss://' + generateUUID();
109109
mockServer = new Server(serverUrl);
110110
mockWebSocket = new WebSocket(serverUrl);
111111
subscriber = new WebSocketSubscriber(new WebSocketWrapper(mockWebSocket), Mock.configuration);

src/communication/WebSocketSubscriber.ts

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,18 @@ import {
1212
Serializer,
1313
Deserializer,
1414
fatalErrorState,
15-
JsonMessage
15+
JsonMessage,
1616
} from './xcomponentMessages';
1717
import { PrivateTopics } from '../interfaces/PrivateTopics';
1818
import { StateMachineInstance } from '../interfaces/StateMachineInstance';
1919
import { StateMachineRef } from '../interfaces/StateMachineRef';
2020
import { StateMachineUpdateListener } from '../interfaces/StateMachineUpdateListener';
21-
import * as uuid from 'uuid/v4';
22-
import { Logger } from 'log4ts';
21+
import { generateUUID } from '../utils/uuid';
22+
import { Logger } from '../utils/Logger';
2323
import { WebSocketWrapper } from './WebSocketWrapper';
2424

2525
export class WebSocketSubscriber {
26-
private logger: Logger = Logger.getLogger('WebSocketSubscriber');
26+
private logger = Logger.getLogger('WebSocketSubscriber');
2727
private stateMachineRefSendPublisher: WebSocketPublisher;
2828
private subscribedStateMachines: { [componentName: string]: Array<String> };
2929
private updates$: Observable<DeserializedData>;
@@ -56,7 +56,7 @@ export class WebSocketSubscriber {
5656
stateMachineName: string,
5757
privateTopics: PrivateTopics
5858
): Promise<Array<StateMachineInstance>> {
59-
const replyTopic = uuid();
59+
const replyTopic = generateUUID();
6060
const thisSubscriber = this;
6161
const promise = this.updates$
6262
.pipe(
@@ -94,7 +94,7 @@ export class WebSocketSubscriber {
9494
let jsonMessage = {
9595
Timeout: this.timeout,
9696
CallerPrivateTopic: privateTopics.getSubscriberTopics(),
97-
ReplyTopic: replyTopic
97+
ReplyTopic: replyTopic,
9898
};
9999
let header = getHeaderWithIncomingType();
100100
header.ComponentCode = componentCode;
@@ -104,8 +104,8 @@ export class WebSocketSubscriber {
104104
ComponentCode: componentCode,
105105
Event: {
106106
Header: header,
107-
JsonMessage: JSON.stringify(jsonMessage)
108-
}
107+
JsonMessage: JSON.stringify(jsonMessage),
108+
},
109109
};
110110
return dataToSendSnapshot;
111111
}
@@ -183,7 +183,7 @@ export class WebSocketSubscriber {
183183
let data = this.getDataToSend(topic, kind);
184184
let commandData = {
185185
Command: Commands[Commands.subscribe],
186-
Data: data
186+
Data: data,
187187
};
188188
let input = this.serializer.convertCommandDataToWebsocketInputFormat(commandData);
189189
this.webSocketWrapper.send(input);
@@ -193,7 +193,7 @@ export class WebSocketSubscriber {
193193
let data = this.getDataToSend(topic, kind);
194194
let commandData = {
195195
Command: Commands[Commands.unsubscribe],
196-
Data: data
196+
Data: data,
197197
};
198198
let input = this.serializer.convertCommandDataToWebsocketInputFormat(commandData);
199199
this.webSocketWrapper.send(input);
@@ -205,9 +205,9 @@ export class WebSocketSubscriber {
205205
JsonMessage: JSON.stringify({
206206
Topic: {
207207
Key: topic,
208-
kind: kind
209-
}
210-
})
208+
kind: kind,
209+
},
210+
}),
211211
};
212212
}
213213

@@ -224,7 +224,7 @@ export class WebSocketSubscriber {
224224
let data = this.getDataToSend(topic, kind);
225225
let commandData = {
226226
Command: Commands[Commands.unsubscribe],
227-
Data: data
227+
Data: data,
228228
};
229229
this.webSocketWrapper.send(this.serializer.convertCommandDataToWebsocketInputFormat(commandData));
230230
this.removeSubscribedStateMachines(componentName, stateMachineName);
@@ -324,7 +324,7 @@ export class WebSocketSubscriber {
324324
specifiedPrivateTopic
325325
);
326326
},
327-
ErrorMessage: errorMessage
327+
ErrorMessage: errorMessage,
328328
};
329329
return stateMachineRef;
330330
}

0 commit comments

Comments
 (0)