bruce-models 0.9.5 → 0.9.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,34 +6,35 @@ var MessageBroker;
6
6
  (function (MessageBroker) {
7
7
  let EAction;
8
8
  (function (EAction) {
9
+ // Subscribes a client to topic messages on a server side.
9
10
  EAction["SUBSCRIBE"] = "subscribe";
11
+ // Subscribes a client to a topic without notifying other clients.
10
12
  EAction["SUBSCRIBE_SHADOW"] = "subscribeShadow";
13
+ // Unsubscribes clients from topic messages on a server side
11
14
  EAction["UNSUBSCRIBE"] = "unsubscribe";
15
+ // Sends a message to all topic subscribers.
12
16
  EAction["BROADCAST"] = "broadcast";
13
- EAction["GET_TOPIC_SUBSCRIBERS"] = "getTopicSubscribers"; // requests topic subscribers without subscribing
17
+ // Requests topic subscribers without subscribing.
18
+ EAction["GET_TOPIC_SUBSCRIBERS"] = "getTopicSubscribers";
14
19
  })(EAction = MessageBroker.EAction || (MessageBroker.EAction = {}));
15
- /** Events types any component may get from server */
16
- let EEvent;
17
- (function (EEvent) {
18
- EEvent["SAVED"] = "saved";
19
- EEvent["UPDATED"] = "updated";
20
- EEvent["DELETED"] = "deleted";
21
- EEvent["EDIT_STARTED"] = "editStarted";
22
- EEvent["EDIT_FINISHED"] = "editFinished";
23
- EEvent["USERS_UPDATE"] = "usersUpdate";
24
- })(EEvent = MessageBroker.EEvent || (MessageBroker.EEvent = {}));
25
20
  /**
26
21
  * Communicates with a server message broker.
27
22
  */
28
23
  class WebSocketBroker {
29
24
  constructor(uri, env) {
30
- this.uri = uri;
31
- this.env = env;
32
25
  this.subscriptions = new Map();
33
26
  this.reconnects = 0;
34
27
  this.maxReconnects = 5;
28
+ this.uri = uri;
29
+ this.env = env ? env : api_1.Api.EEnv.PROD;
35
30
  this.connect();
36
31
  }
32
+ get IsConnected() {
33
+ return this.ws.readyState === WebSocket.OPEN;
34
+ }
35
+ SetUserId(userId) {
36
+ this.userId = this.userId ? this.userId : userId;
37
+ }
37
38
  connect() {
38
39
  try {
39
40
  if (!WebSocket) {
@@ -53,9 +54,6 @@ var MessageBroker;
53
54
  const ws = document.location.protocol === "https:" ? "wss" : "ws";
54
55
  return uri.replace(/^(https|http)/, ws) + "websocket";
55
56
  }
56
- SetUser(user) {
57
- this.user = this.user ? this.user : user;
58
- }
59
57
  onOpen(ev) {
60
58
  if (this.env === api_1.Api.EEnv.DEV) {
61
59
  console.log("MessageBroker connection opened: ", ev);
@@ -85,55 +83,45 @@ var MessageBroker;
85
83
  }
86
84
  subscribers.push(callback);
87
85
  this.subscriptions.set(topic, subscribers);
88
- if (this.env === api_1.Api.EEnv.DEV) {
89
- console.groupCollapsed("MessageBroker subscription added: ", topic);
90
- console.table(Array.from(this.subscriptions.entries()));
91
- console.groupEnd();
92
- }
93
86
  }
94
87
  /**
95
88
  * Send message to server.
96
- * @param msg
89
+ * @param base
97
90
  * @returns
98
91
  */
99
- sendMessage(msg) {
92
+ SendMessage(base) {
100
93
  if (this.ws.readyState !== WebSocket.OPEN) {
101
94
  return;
102
95
  }
103
- if (!this.user) {
104
- console.error("Set user first!");
105
- }
106
96
  try {
107
- const outgoingMessage = Object.assign(Object.assign({}, msg), { user: this.user, time: Date.now() });
97
+ const msg = base;
98
+ if (!msg.event) {
99
+ msg.event = EAction.BROADCAST;
100
+ }
101
+ let message = base.data ? base.data : {};
102
+ if (typeof message == "object") {
103
+ message = JSON.stringify(message);
104
+ }
105
+ msg.data = message;
106
+ const outgoingMessage = Object.assign(Object.assign({}, msg), { user: this.userId, time: Date.now() });
108
107
  this.ws.send(JSON.stringify(outgoingMessage));
109
108
  }
110
109
  catch (e) {
111
110
  console.warn(e);
112
111
  }
113
112
  }
114
- get IsConnected() {
115
- return this.ws.readyState === WebSocket.OPEN;
116
- }
117
113
  /**
118
114
  * Add a subscriber to a topic.
119
115
  * @param topic
120
116
  * @param callback
121
117
  * @param action
122
118
  */
123
- Subscribe(topic, callback, action = EAction.SUBSCRIBE) {
124
- this.addSubscriber(topic, callback);
125
- this.sendMessage({ topic, action });
126
- if (this.env === api_1.Api.EEnv.DEV) {
127
- console.log(`Subscribe [${action}] called for topic`, topic);
119
+ Subscribe(topic, callback, action) {
120
+ if (!action) {
121
+ action = EAction.SUBSCRIBE;
128
122
  }
129
- }
130
- /**
131
- * Add a shadow subscriber to a topic.
132
- * @param topic
133
- * @param callback
134
- */
135
- SubscribeShadow(topic, callback) {
136
- this.Subscribe(topic, callback, EAction.SUBSCRIBE_SHADOW);
123
+ this.addSubscriber(topic, callback);
124
+ this.SendMessage({ topic, action });
137
125
  }
138
126
  /**
139
127
  * Remove a subscriber from a topic.
@@ -143,19 +131,11 @@ var MessageBroker;
143
131
  Unsubscribe(topic, callback) {
144
132
  const subscribers = this.subscriptions.get(topic) || [];
145
133
  this.subscriptions.set(topic, subscribers.filter(fn => fn != callback));
146
- this.sendMessage({ topic, action: EAction.UNSUBSCRIBE });
147
- if (this.env === api_1.Api.EEnv.DEV) {
148
- console.groupCollapsed("MessageBroker subscription removed: ", topic);
149
- console.table(Array.from(this.subscriptions.entries()));
150
- console.groupEnd();
151
- }
152
- }
153
- SendBroadcastMessage(msg) {
154
- this.sendMessage(Object.assign(Object.assign({}, msg), { action: EAction.BROADCAST }));
134
+ this.SendMessage({ topic, action: EAction.UNSUBSCRIBE });
155
135
  }
156
136
  RequestTopicUsers(topic, callback) {
157
137
  this.addSubscriber(topic, callback);
158
- this.sendMessage({ topic, action: EAction.GET_TOPIC_SUBSCRIBERS });
138
+ this.SendMessage({ topic, event: EAction.GET_TOPIC_SUBSCRIBERS });
159
139
  }
160
140
  }
161
141
  MessageBroker.WebSocketBroker = WebSocketBroker;
@@ -1 +1 @@
1
- {"version":3,"file":"message-broker.js","sourceRoot":"","sources":["../../../src/server/message-broker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"message-broker.js","sourceRoot":"","sources":["../../../src/server/message-broker.ts"],"names":[],"mappings":"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"}
@@ -1,94 +1,62 @@
1
1
  import { Api } from "../api/api";
2
2
  export declare namespace MessageBroker {
3
- export enum EAction {
3
+ enum EAction {
4
4
  SUBSCRIBE = "subscribe",
5
5
  SUBSCRIBE_SHADOW = "subscribeShadow",
6
6
  UNSUBSCRIBE = "unsubscribe",
7
7
  BROADCAST = "broadcast",
8
8
  GET_TOPIC_SUBSCRIBERS = "getTopicSubscribers"
9
9
  }
10
- /** Events types any component may get from server */
11
- export enum EEvent {
12
- SAVED = "saved",
13
- UPDATED = "updated",
14
- DELETED = "deleted",
15
- EDIT_STARTED = "editStarted",
16
- EDIT_FINISHED = "editFinished",
17
- USERS_UPDATE = "usersUpdate"
18
- }
10
+ type SubscribeType = EAction.SUBSCRIBE | EAction.SUBSCRIBE_SHADOW;
19
11
  interface IMessageBase {
20
- action: EAction;
21
12
  topic: string;
13
+ event?: string;
14
+ data?: any;
22
15
  }
23
- interface IBroadcastMessage extends IMessageBase {
24
- action: EAction.BROADCAST;
25
- event: EEvent;
26
- user: string;
27
- }
28
- export type SubscribeMessage = IMessageBase & {
29
- action: EAction.SUBSCRIBE | EAction.SUBSCRIBE_SHADOW;
30
- user: string;
31
- };
32
- export type UnsubscribeMessage = IMessageBase & {
33
- action: EAction.UNSUBSCRIBE;
34
- };
35
- export type GetTopicSubscribersMessage = IMessageBase & {
36
- action: EAction.GET_TOPIC_SUBSCRIBERS;
37
- };
38
- export type BroadcastMessageSaved = IBroadcastMessage & {
39
- event: EEvent.SAVED;
40
- };
41
- export type BroadcastMessageUpdated = IBroadcastMessage & {
42
- event: EEvent.UPDATED;
43
- };
44
- export type BroadcastMessageDeleted = IBroadcastMessage & {
45
- event: EEvent.DELETED;
46
- };
47
- export type BroadcastMessageEditionStarted = IBroadcastMessage & {
48
- event: EEvent.EDIT_STARTED;
49
- };
50
- export type BroadcastMessageEditionFinished = IBroadcastMessage & {
51
- event: EEvent.EDIT_FINISHED;
52
- };
53
- export type BroadcastMessageUsersUpdate = IBroadcastMessage & {
54
- event: EEvent.USERS_UPDATE;
55
- data: string[];
56
- };
57
- export interface OutgoingMessageBase {
58
- topic: string;
59
- event?: EEvent;
16
+ interface IMessage extends IMessageBase {
17
+ time?: number;
18
+ user?: string;
19
+ action: EAction;
60
20
  }
61
- export type OutgoingBroadcastMessage = IMessageBase & {
62
- action: EAction.BROADCAST;
63
- time: number;
64
- };
65
- export type IncomingMessage = BroadcastMessageSaved | BroadcastMessageUpdated | BroadcastMessageDeleted | BroadcastMessageEditionStarted | BroadcastMessageEditionFinished | BroadcastMessageUsersUpdate;
66
- export type OutgoingMessage = (SubscribeMessage | UnsubscribeMessage | GetTopicSubscribersMessage | OutgoingBroadcastMessage) & {
67
- user: string;
68
- time: number;
69
- };
70
- export interface IBroker {
71
- Subscribe: (topic: string, callback: (msg: IncomingMessage) => void) => void;
72
- SubscribeShadow: (topic: string, callback: (msg: IncomingMessage) => void) => void;
73
- Unsubscribe: (topic: string, callback: (msg: IncomingMessage) => void) => void;
74
- SendBroadcastMessage: (msg: OutgoingMessageBase) => void;
21
+ interface IBroker {
22
+ /**
23
+ * Add a subscriber to a topic.
24
+ * @param topic
25
+ * @param callback
26
+ * @param action
27
+ */
28
+ Subscribe: (topic: string, callback: (msg: IMessage) => void, type?: SubscribeType) => void;
29
+ /**
30
+ * Remove a subscriber from a topic.
31
+ * @param topic
32
+ * @param callback
33
+ */
34
+ Unsubscribe: (topic: string, callback: (msg: IMessage) => void) => void;
35
+ /**
36
+ * Send message to server.
37
+ * @param base
38
+ * @returns
39
+ */
40
+ SendMessage: (base: IMessageBase | IMessage) => void;
41
+ SetUserId: (userId: string) => void;
75
42
  IsConnected: boolean;
76
43
  }
77
44
  /**
78
45
  * Communicates with a server message broker.
79
46
  */
80
- export class WebSocketBroker implements IBroker {
81
- private uri;
82
- private env?;
47
+ class WebSocketBroker implements IBroker {
83
48
  private subscriptions;
84
49
  private ws;
85
50
  private reconnects;
86
51
  private maxReconnects;
87
- private user;
52
+ private userId;
53
+ private uri;
54
+ private env;
88
55
  constructor(uri: string, env?: Api.Env);
56
+ get IsConnected(): boolean;
57
+ SetUserId(userId: string): void;
89
58
  private connect;
90
59
  private formatApiUri;
91
- SetUser(user: string): void;
92
60
  private onOpen;
93
61
  private onClose;
94
62
  private onMessage;
@@ -96,32 +64,23 @@ export declare namespace MessageBroker {
96
64
  private addSubscriber;
97
65
  /**
98
66
  * Send message to server.
99
- * @param msg
67
+ * @param base
100
68
  * @returns
101
69
  */
102
- private sendMessage;
103
- get IsConnected(): boolean;
70
+ SendMessage(base: IMessageBase | IMessage): void;
104
71
  /**
105
72
  * Add a subscriber to a topic.
106
73
  * @param topic
107
74
  * @param callback
108
75
  * @param action
109
76
  */
110
- Subscribe(topic: string, callback: (msg: IncomingMessage) => void, action?: EAction): void;
111
- /**
112
- * Add a shadow subscriber to a topic.
113
- * @param topic
114
- * @param callback
115
- */
116
- SubscribeShadow(topic: string, callback: (msg: IncomingMessage) => void): void;
77
+ Subscribe(topic: string, callback: (msg: IMessage) => void, action?: SubscribeType): void;
117
78
  /**
118
79
  * Remove a subscriber from a topic.
119
80
  * @param topic
120
81
  * @param callback
121
82
  */
122
- Unsubscribe(topic: string, callback: (msg: IncomingMessage) => void): void;
123
- SendBroadcastMessage(msg: OutgoingMessageBase): void;
124
- RequestTopicUsers(topic: string, callback: (msg: IncomingMessage) => void): void;
83
+ Unsubscribe(topic: string, callback: (msg: IMessage) => void): void;
84
+ RequestTopicUsers(topic: string, callback: (msg: IMessage) => void): void;
125
85
  }
126
- export {};
127
86
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bruce-models",
3
- "version": "0.9.5",
3
+ "version": "0.9.7",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "main": "dist/bruce-models.umd.js",