@monterosa/sdk-connect-kit 2.0.0-rc.1 → 2.0.0-rc.3
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.
- package/dist/connect.d.ts +20 -3
- package/dist/{index.cjs.js → index.cjs} +116 -242
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +5 -5
- package/dist/{index.esm.js → index.js} +26 -7
- package/dist/index.js.map +1 -0
- package/dist/types.d.ts +15 -10
- package/package.json +20 -17
- package/dist/index.cjs.js.map +0 -1
- package/dist/index.esm.js.map +0 -1
package/dist/connect.d.ts
CHANGED
|
@@ -17,7 +17,8 @@ declare const getConnectMemoized: (...args: any[]) => Promise<Connect>;
|
|
|
17
17
|
* host. If host is not provided, it returns Connect instance for
|
|
18
18
|
* the host associated with the default sdk.
|
|
19
19
|
*
|
|
20
|
-
* @param
|
|
20
|
+
* @param host - The host URL. If not provided, uses the host
|
|
21
|
+
* from the default SDK instance.
|
|
21
22
|
*/
|
|
22
23
|
declare function getConnect(host?: string): Promise<Connect>;
|
|
23
24
|
/**
|
|
@@ -33,7 +34,7 @@ declare function onConnected(conn: Connect, callback: (timestamp: number) => voi
|
|
|
33
34
|
*
|
|
34
35
|
* @param conn - The {@link Connect} instance
|
|
35
36
|
* @param callback - callback triggered on connecting state. Two parameters
|
|
36
|
-
* are provided: `attempt
|
|
37
|
+
* are provided: `attempt`, the sequential number of connect attempt, and
|
|
37
38
|
* `delay` - delay in seconds before the next attempt
|
|
38
39
|
*/
|
|
39
40
|
declare function onConnecting(conn: Connect, callback: (attempt: number, delay: number) => void): Unsubscribe;
|
|
@@ -59,7 +60,10 @@ declare function onDisconnected(conn: Connect, callback: () => void): Unsubscrib
|
|
|
59
60
|
*/
|
|
60
61
|
declare function onMessage(conn: Connect, callback: (message: Message) => void): Unsubscribe;
|
|
61
62
|
/**
|
|
62
|
-
* Starts a connection process.
|
|
63
|
+
* Starts a connection process.
|
|
64
|
+
*
|
|
65
|
+
* @remarks
|
|
66
|
+
* If connect is successful a promise resolved by
|
|
63
67
|
* and {@link onConnected} is triggered, otherwise a next attempt will be
|
|
64
68
|
* automatically invoked and {@link onConnecting} is triggered.
|
|
65
69
|
*
|
|
@@ -108,6 +112,7 @@ declare const subscribeMemoized: (...args: any[]) => Promise<void>;
|
|
|
108
112
|
/**
|
|
109
113
|
* Subscribe to the server channel.
|
|
110
114
|
*
|
|
115
|
+
* @remarks
|
|
111
116
|
* Any message published to a channel is {@link onMessage | received}
|
|
112
117
|
* only by subscribers to that channel. The sdk out of the box handles
|
|
113
118
|
* all required subscriptions internally and {@link onMessage | handles messages}
|
|
@@ -122,6 +127,7 @@ declare function subscribe(conn: Connect, channel: string): Promise<void>;
|
|
|
122
127
|
/**
|
|
123
128
|
* Unsubscribe from the server channel.
|
|
124
129
|
*
|
|
130
|
+
* @remarks
|
|
125
131
|
* Removes subscription to the channel so that recipient no longer receive
|
|
126
132
|
* messages from that channel.
|
|
127
133
|
*
|
|
@@ -132,6 +138,7 @@ declare function unsubscribe(conn: Connect, channel: string): void;
|
|
|
132
138
|
/**
|
|
133
139
|
* Send message to the server.
|
|
134
140
|
*
|
|
141
|
+
* @remarks
|
|
135
142
|
* The sdk out of the box provides more high level functions that uses
|
|
136
143
|
* this function to send data to the server. Though a developer still can
|
|
137
144
|
* use it if he knows a message protocol (klass and body) and a channel
|
|
@@ -144,6 +151,16 @@ declare function unsubscribe(conn: Connect, channel: string): void;
|
|
|
144
151
|
* @param body - Message payload
|
|
145
152
|
*/
|
|
146
153
|
declare function send(conn: Connect, channel: string, klass: Klass | string, body: (string | number)[]): void;
|
|
154
|
+
/**
|
|
155
|
+
* Authenticates the connection with user credentials.
|
|
156
|
+
*
|
|
157
|
+
* @param conn - The Connect instance
|
|
158
|
+
* @param userId - The user identifier
|
|
159
|
+
* @param timestamp - The signature timestamp in seconds
|
|
160
|
+
* @param signature - The session signature string
|
|
161
|
+
*
|
|
162
|
+
* @public
|
|
163
|
+
*/
|
|
147
164
|
declare function login(conn: Connect, userId: string, timestamp: number, signature: string): Promise<void>;
|
|
148
165
|
declare function logout(conn: Connect): Promise<void>;
|
|
149
166
|
export { onConnected, onConnecting, onDisconnected, onMessage, disconnect, unsubscribe, send, getConnect, getConnectMemoized, connect, subscribe, subscribeMemoized, login, logout, };
|
|
@@ -10,90 +10,6 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
|
|
|
10
10
|
|
|
11
11
|
var Enmasse__default = /*#__PURE__*/_interopDefaultLegacy(Enmasse);
|
|
12
12
|
|
|
13
|
-
/******************************************************************************
|
|
14
|
-
Copyright (c) Microsoft Corporation.
|
|
15
|
-
|
|
16
|
-
Permission to use, copy, modify, and/or distribute this software for any
|
|
17
|
-
purpose with or without fee is hereby granted.
|
|
18
|
-
|
|
19
|
-
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
20
|
-
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
21
|
-
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
22
|
-
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
23
|
-
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
24
|
-
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
25
|
-
PERFORMANCE OF THIS SOFTWARE.
|
|
26
|
-
***************************************************************************** */
|
|
27
|
-
/* global Reflect, Promise, SuppressedError, Symbol, Iterator */
|
|
28
|
-
|
|
29
|
-
var extendStatics = function(d, b) {
|
|
30
|
-
extendStatics = Object.setPrototypeOf ||
|
|
31
|
-
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
32
|
-
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
33
|
-
return extendStatics(d, b);
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
function __extends(d, b) {
|
|
37
|
-
if (typeof b !== "function" && b !== null)
|
|
38
|
-
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
39
|
-
extendStatics(d, b);
|
|
40
|
-
function __() { this.constructor = d; }
|
|
41
|
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
function __awaiter(thisArg, _arguments, P, generator) {
|
|
45
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
46
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
47
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
48
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
49
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
50
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
function __generator(thisArg, body) {
|
|
55
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
56
|
-
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
57
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
58
|
-
function step(op) {
|
|
59
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
60
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
61
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
62
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
63
|
-
switch (op[0]) {
|
|
64
|
-
case 0: case 1: t = op; break;
|
|
65
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
66
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
67
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
68
|
-
default:
|
|
69
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
70
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
71
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
72
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
73
|
-
if (t[2]) _.ops.pop();
|
|
74
|
-
_.trys.pop(); continue;
|
|
75
|
-
}
|
|
76
|
-
op = body.call(thisArg, _);
|
|
77
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
78
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
function __spreadArray(to, from, pack) {
|
|
83
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
84
|
-
if (ar || !(i in from)) {
|
|
85
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
86
|
-
ar[i] = from[i];
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
|
|
93
|
-
var e = new Error(message);
|
|
94
|
-
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
95
|
-
};
|
|
96
|
-
|
|
97
13
|
/**
|
|
98
14
|
* @license
|
|
99
15
|
* @monterosa/sdk-connect-kit
|
|
@@ -105,7 +21,7 @@ typeof SuppressedError === "function" ? SuppressedError : function (error, suppr
|
|
|
105
21
|
/**
|
|
106
22
|
* @internal
|
|
107
23
|
*/
|
|
108
|
-
|
|
24
|
+
const KIT_NAME = 'connect';
|
|
109
25
|
/**
|
|
110
26
|
* @internal
|
|
111
27
|
*/
|
|
@@ -116,8 +32,10 @@ exports.InitState = void 0;
|
|
|
116
32
|
InitState["Initialising"] = "initialising";
|
|
117
33
|
})(exports.InitState || (exports.InitState = {}));
|
|
118
34
|
/**
|
|
119
|
-
* A list of possible connection states.
|
|
120
|
-
*
|
|
35
|
+
* A list of possible connection states.
|
|
36
|
+
*
|
|
37
|
+
* @remarks
|
|
38
|
+
* Can be used with {@link Connect | Connect.state} to determine the current state.
|
|
121
39
|
*
|
|
122
40
|
* By default {@link Connect} is in the disconnected state.
|
|
123
41
|
* When {@link connect} invoked `Connect` state switches to
|
|
@@ -225,67 +143,49 @@ exports.Klass = void 0;
|
|
|
225
143
|
* More details on the license can be found at https://www.monterosa.co/sdk/license
|
|
226
144
|
*/
|
|
227
145
|
function onState(conn, needle, callback) {
|
|
228
|
-
|
|
229
|
-
var rest = [];
|
|
230
|
-
for (var _i = 1; _i < arguments.length; _i++) {
|
|
231
|
-
rest[_i - 1] = arguments[_i];
|
|
232
|
-
}
|
|
146
|
+
const handler = (state, ...rest) => {
|
|
233
147
|
if (state === needle) {
|
|
234
|
-
callback
|
|
148
|
+
callback(...rest);
|
|
235
149
|
}
|
|
236
150
|
};
|
|
237
151
|
conn.on('state', handler);
|
|
238
|
-
return
|
|
152
|
+
return () => conn.off('state', handler);
|
|
239
153
|
}
|
|
240
154
|
|
|
241
155
|
/* eslint class-methods-use-this: "off" */
|
|
242
156
|
/**
|
|
243
157
|
* @internal
|
|
244
158
|
*/
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
Enmasse__default["default"].bind(Enmasse__default["default"].ON_STATE, function (state) {
|
|
253
|
-
var rest = [];
|
|
254
|
-
for (var _i = 1; _i < arguments.length; _i++) {
|
|
255
|
-
rest[_i - 1] = arguments[_i];
|
|
256
|
-
}
|
|
159
|
+
class ConnectImpl extends sdkUtil.Emitter {
|
|
160
|
+
constructor() {
|
|
161
|
+
super();
|
|
162
|
+
this.initState = exports.InitState.NotInitialised;
|
|
163
|
+
this.initPromise = Promise.resolve();
|
|
164
|
+
this.connectPromise = null;
|
|
165
|
+
Enmasse__default["default"].bind(Enmasse__default["default"].ON_STATE, (state, ...rest) => {
|
|
257
166
|
if (state === Enmasse__default["default"].STATE_CONNECTED) {
|
|
258
|
-
|
|
167
|
+
const [timestamp] = rest;
|
|
259
168
|
sdkUtil.setTimestamp(timestamp);
|
|
260
169
|
}
|
|
261
|
-
|
|
170
|
+
this.emit('state', ConnectImpl.toConnState(state), ...rest);
|
|
262
171
|
});
|
|
263
|
-
Enmasse__default["default"].bind(Enmasse__default["default"].ON_MESSAGE,
|
|
264
|
-
|
|
172
|
+
Enmasse__default["default"].bind(Enmasse__default["default"].ON_MESSAGE, (message) => {
|
|
173
|
+
this.emit('message', message);
|
|
265
174
|
});
|
|
266
|
-
return _this;
|
|
267
175
|
}
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
Object.defineProperty(ConnectImpl.prototype, "sessionId", {
|
|
276
|
-
get: function () {
|
|
277
|
-
return Enmasse__default["default"].getSessionId();
|
|
278
|
-
},
|
|
279
|
-
enumerable: false,
|
|
280
|
-
configurable: true
|
|
281
|
-
});
|
|
282
|
-
ConnectImpl.getInstance = function () {
|
|
176
|
+
get state() {
|
|
177
|
+
return ConnectImpl.toConnState(Enmasse__default["default"].getState());
|
|
178
|
+
}
|
|
179
|
+
get sessionId() {
|
|
180
|
+
return Enmasse__default["default"].getSessionId();
|
|
181
|
+
}
|
|
182
|
+
static getInstance() {
|
|
283
183
|
if (!ConnectImpl.instance) {
|
|
284
184
|
ConnectImpl.instance = new ConnectImpl();
|
|
285
185
|
}
|
|
286
186
|
return ConnectImpl.instance;
|
|
287
|
-
}
|
|
288
|
-
|
|
187
|
+
}
|
|
188
|
+
static toConnState(state) {
|
|
289
189
|
switch (state) {
|
|
290
190
|
default:
|
|
291
191
|
case Enmasse__default["default"].STATE_DISCONNECTED:
|
|
@@ -295,39 +195,33 @@ var ConnectImpl = /** @class */ (function (_super) {
|
|
|
295
195
|
case Enmasse__default["default"].STATE_CONNECTED:
|
|
296
196
|
return exports.ConnState.Connected;
|
|
297
197
|
}
|
|
298
|
-
}
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
return
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
this.
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
});
|
|
321
|
-
Enmasse__default["default"].init({
|
|
322
|
-
config: "https://".concat(host, "/config/enmasse.json"),
|
|
323
|
-
});
|
|
324
|
-
});
|
|
325
|
-
return [2 /*return*/, this.initPromise];
|
|
198
|
+
}
|
|
199
|
+
async init(host) {
|
|
200
|
+
if (this.initState === exports.InitState.Initialising ||
|
|
201
|
+
this.initState === exports.InitState.Initialised) {
|
|
202
|
+
return this.initPromise;
|
|
203
|
+
}
|
|
204
|
+
this.initPromise = new Promise((resolve, reject) => {
|
|
205
|
+
this.initState = exports.InitState.Initialising;
|
|
206
|
+
Enmasse__default["default"].bind(Enmasse__default["default"].ON_READY, () => {
|
|
207
|
+
this.initState = exports.InitState.Initialised;
|
|
208
|
+
Enmasse__default["default"].unbind(Enmasse__default["default"].ON_READY);
|
|
209
|
+
Enmasse__default["default"].unbind(Enmasse__default["default"].ON_ERROR);
|
|
210
|
+
resolve();
|
|
211
|
+
});
|
|
212
|
+
Enmasse__default["default"].bind(Enmasse__default["default"].ON_ERROR, (err) => {
|
|
213
|
+
this.initState = exports.InitState.NotInitialised;
|
|
214
|
+
Enmasse__default["default"].unbind(Enmasse__default["default"].ON_READY);
|
|
215
|
+
Enmasse__default["default"].unbind(Enmasse__default["default"].ON_ERROR);
|
|
216
|
+
reject(new Error(`Unable to initialise connect kit: ${err}`));
|
|
217
|
+
});
|
|
218
|
+
Enmasse__default["default"].init({
|
|
219
|
+
config: `https://${host}/config/enmasse.json`,
|
|
326
220
|
});
|
|
327
221
|
});
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
222
|
+
return this.initPromise;
|
|
223
|
+
}
|
|
224
|
+
connect() {
|
|
331
225
|
if (this.initState !== exports.InitState.Initialised) {
|
|
332
226
|
return Promise.reject(new Error('must be initialised before connecting'));
|
|
333
227
|
}
|
|
@@ -339,20 +233,20 @@ var ConnectImpl = /** @class */ (function (_super) {
|
|
|
339
233
|
return this.connectPromise;
|
|
340
234
|
}
|
|
341
235
|
// This should never happen - indicates a bug in state management
|
|
342
|
-
return Promise.reject(new Error('BUG: Connection state is Connecting but connectPromise is null
|
|
236
|
+
return Promise.reject(new Error('BUG: Connection state is Connecting but connectPromise is null - ' +
|
|
343
237
|
'this indicates an internal inconsistency'));
|
|
344
238
|
}
|
|
345
|
-
this.connectPromise = new Promise(
|
|
346
|
-
|
|
239
|
+
this.connectPromise = new Promise((resolve, reject) => {
|
|
240
|
+
const handler = (state) => {
|
|
347
241
|
switch (state) {
|
|
348
242
|
case exports.ConnState.Connected:
|
|
349
243
|
Enmasse__default["default"].unbind(Enmasse__default["default"].ON_STATE, handler);
|
|
350
|
-
|
|
244
|
+
this.connectPromise = null;
|
|
351
245
|
resolve();
|
|
352
246
|
break;
|
|
353
247
|
case exports.ConnState.Disconnected:
|
|
354
248
|
Enmasse__default["default"].unbind(Enmasse__default["default"].ON_STATE, handler);
|
|
355
|
-
|
|
249
|
+
this.connectPromise = null;
|
|
356
250
|
reject(new Error('disconnected'));
|
|
357
251
|
break;
|
|
358
252
|
case exports.ConnState.Connecting:
|
|
@@ -366,13 +260,13 @@ var ConnectImpl = /** @class */ (function (_super) {
|
|
|
366
260
|
Enmasse__default["default"].connect();
|
|
367
261
|
});
|
|
368
262
|
return this.connectPromise;
|
|
369
|
-
}
|
|
370
|
-
|
|
263
|
+
}
|
|
264
|
+
disconnect() {
|
|
371
265
|
Enmasse__default["default"].disconnect();
|
|
372
|
-
}
|
|
373
|
-
|
|
374
|
-
return new Promise(
|
|
375
|
-
|
|
266
|
+
}
|
|
267
|
+
subscribe(channel) {
|
|
268
|
+
return new Promise((resolve) => {
|
|
269
|
+
const handler = (ch) => {
|
|
376
270
|
if (ch !== channel)
|
|
377
271
|
return;
|
|
378
272
|
Enmasse__default["default"].unbind(Enmasse__default["default"].ON_EOC, handler);
|
|
@@ -381,35 +275,26 @@ var ConnectImpl = /** @class */ (function (_super) {
|
|
|
381
275
|
Enmasse__default["default"].bind(Enmasse__default["default"].ON_EOC, handler);
|
|
382
276
|
Enmasse__default["default"].subscribe(channel);
|
|
383
277
|
});
|
|
384
|
-
}
|
|
385
|
-
|
|
278
|
+
}
|
|
279
|
+
unsubscribe(channel) {
|
|
386
280
|
Enmasse__default["default"].unsubscribe(channel);
|
|
387
|
-
}
|
|
388
|
-
|
|
281
|
+
}
|
|
282
|
+
send(channel, klass, body) {
|
|
389
283
|
Enmasse__default["default"].send(channel, klass, body);
|
|
390
|
-
}
|
|
391
|
-
|
|
392
|
-
return
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
Enmasse__default["default"].login(userId, timestamp, signature, resolve, function () {
|
|
396
|
-
reject(new Error('Login failure'));
|
|
397
|
-
});
|
|
398
|
-
})];
|
|
399
|
-
});
|
|
400
|
-
});
|
|
401
|
-
};
|
|
402
|
-
ConnectImpl.prototype.logout = function () {
|
|
403
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
404
|
-
return __generator(this, function (_a) {
|
|
405
|
-
Enmasse__default["default"].logout();
|
|
406
|
-
return [2 /*return*/, Promise.resolve()];
|
|
284
|
+
}
|
|
285
|
+
async login(userId, timestamp, signature) {
|
|
286
|
+
return new Promise((resolve, reject) => {
|
|
287
|
+
Enmasse__default["default"].login(userId, timestamp, signature, resolve, () => {
|
|
288
|
+
reject(new Error('Login failure'));
|
|
407
289
|
});
|
|
408
290
|
});
|
|
409
|
-
}
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
291
|
+
}
|
|
292
|
+
async logout() {
|
|
293
|
+
Enmasse__default["default"].logout();
|
|
294
|
+
return Promise.resolve();
|
|
295
|
+
}
|
|
296
|
+
delete() { }
|
|
297
|
+
}
|
|
413
298
|
|
|
414
299
|
/**
|
|
415
300
|
* @license
|
|
@@ -422,29 +307,22 @@ var ConnectImpl = /** @class */ (function (_super) {
|
|
|
422
307
|
/**
|
|
423
308
|
* @internal
|
|
424
309
|
*/
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
conn = ConnectImpl.getInstance();
|
|
431
|
-
return [4 /*yield*/, conn.init(host)];
|
|
432
|
-
case 1:
|
|
433
|
-
_a.sent();
|
|
434
|
-
return [2 /*return*/, conn];
|
|
435
|
-
}
|
|
436
|
-
});
|
|
437
|
-
}); }, function (host) { return host; });
|
|
310
|
+
const getConnectMemoized = sdkUtil.memoizePromise(async (host) => {
|
|
311
|
+
const conn = ConnectImpl.getInstance();
|
|
312
|
+
await conn.init(host);
|
|
313
|
+
return conn;
|
|
314
|
+
}, (host) => host);
|
|
438
315
|
/**
|
|
439
316
|
* Returns the {@link Connect} instance associated with the provided
|
|
440
317
|
* host. If host is not provided, it returns Connect instance for
|
|
441
318
|
* the host associated with the default sdk.
|
|
442
319
|
*
|
|
443
|
-
* @param
|
|
320
|
+
* @param host - The host URL. If not provided, uses the host
|
|
321
|
+
* from the default SDK instance.
|
|
444
322
|
*/
|
|
445
323
|
function getConnect(host) {
|
|
446
324
|
if (host === undefined) {
|
|
447
|
-
|
|
325
|
+
const sdk = sdkCore.getSdk();
|
|
448
326
|
host = sdk.options.host;
|
|
449
327
|
}
|
|
450
328
|
return getConnectMemoized(host);
|
|
@@ -464,7 +342,7 @@ function onConnected(conn, callback) {
|
|
|
464
342
|
*
|
|
465
343
|
* @param conn - The {@link Connect} instance
|
|
466
344
|
* @param callback - callback triggered on connecting state. Two parameters
|
|
467
|
-
* are provided: `attempt
|
|
345
|
+
* are provided: `attempt`, the sequential number of connect attempt, and
|
|
468
346
|
* `delay` - delay in seconds before the next attempt
|
|
469
347
|
*/
|
|
470
348
|
function onConnecting(conn, callback) {
|
|
@@ -493,14 +371,17 @@ function onDisconnected(conn, callback) {
|
|
|
493
371
|
* @param callback - The callback function triggered on message receive
|
|
494
372
|
*/
|
|
495
373
|
function onMessage(conn, callback) {
|
|
496
|
-
|
|
374
|
+
const handler = (message) => {
|
|
497
375
|
callback(message);
|
|
498
376
|
};
|
|
499
377
|
conn.on('message', handler);
|
|
500
|
-
return
|
|
378
|
+
return () => conn.off('message', handler);
|
|
501
379
|
}
|
|
502
380
|
/**
|
|
503
|
-
* Starts a connection process.
|
|
381
|
+
* Starts a connection process.
|
|
382
|
+
*
|
|
383
|
+
* @remarks
|
|
384
|
+
* If connect is successful a promise resolved by
|
|
504
385
|
* and {@link onConnected} is triggered, otherwise a next attempt will be
|
|
505
386
|
* automatically invoked and {@link onConnecting} is triggered.
|
|
506
387
|
*
|
|
@@ -551,12 +432,11 @@ function disconnect(conn) {
|
|
|
551
432
|
/**
|
|
552
433
|
* @internal
|
|
553
434
|
*/
|
|
554
|
-
|
|
555
|
-
return [2 /*return*/, conn.subscribe(channel)];
|
|
556
|
-
}); }); }, function (conn, channel) { return channel; });
|
|
435
|
+
const subscribeMemoized = sdkUtil.memoizePromise(async (conn, channel) => conn.subscribe(channel), (conn, channel) => channel);
|
|
557
436
|
/**
|
|
558
437
|
* Subscribe to the server channel.
|
|
559
438
|
*
|
|
439
|
+
* @remarks
|
|
560
440
|
* Any message published to a channel is {@link onMessage | received}
|
|
561
441
|
* only by subscribers to that channel. The sdk out of the box handles
|
|
562
442
|
* all required subscriptions internally and {@link onMessage | handles messages}
|
|
@@ -573,6 +453,7 @@ function subscribe(conn, channel) {
|
|
|
573
453
|
/**
|
|
574
454
|
* Unsubscribe from the server channel.
|
|
575
455
|
*
|
|
456
|
+
* @remarks
|
|
576
457
|
* Removes subscription to the channel so that recipient no longer receive
|
|
577
458
|
* messages from that channel.
|
|
578
459
|
*
|
|
@@ -585,6 +466,7 @@ function unsubscribe(conn, channel) {
|
|
|
585
466
|
/**
|
|
586
467
|
* Send message to the server.
|
|
587
468
|
*
|
|
469
|
+
* @remarks
|
|
588
470
|
* The sdk out of the box provides more high level functions that uses
|
|
589
471
|
* this function to send data to the server. Though a developer still can
|
|
590
472
|
* use it if he knows a message protocol (klass and body) and a channel
|
|
@@ -599,31 +481,23 @@ function unsubscribe(conn, channel) {
|
|
|
599
481
|
function send(conn, channel, klass, body) {
|
|
600
482
|
conn.send(channel, klass, body);
|
|
601
483
|
}
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
484
|
+
/**
|
|
485
|
+
* Authenticates the connection with user credentials.
|
|
486
|
+
*
|
|
487
|
+
* @param conn - The Connect instance
|
|
488
|
+
* @param userId - The user identifier
|
|
489
|
+
* @param timestamp - The signature timestamp in seconds
|
|
490
|
+
* @param signature - The session signature string
|
|
491
|
+
*
|
|
492
|
+
* @public
|
|
493
|
+
*/
|
|
494
|
+
async function login(conn, userId, timestamp, signature) {
|
|
495
|
+
const result = await conn.login(userId, timestamp, signature);
|
|
496
|
+
return result;
|
|
614
497
|
}
|
|
615
|
-
function logout(conn) {
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
return __generator(this, function (_a) {
|
|
619
|
-
switch (_a.label) {
|
|
620
|
-
case 0: return [4 /*yield*/, conn.logout()];
|
|
621
|
-
case 1:
|
|
622
|
-
result = _a.sent();
|
|
623
|
-
return [2 /*return*/, result];
|
|
624
|
-
}
|
|
625
|
-
});
|
|
626
|
-
});
|
|
498
|
+
async function logout(conn) {
|
|
499
|
+
const result = await conn.logout();
|
|
500
|
+
return result;
|
|
627
501
|
}
|
|
628
502
|
|
|
629
503
|
exports.ConnectImpl = ConnectImpl;
|
|
@@ -642,4 +516,4 @@ exports.send = send;
|
|
|
642
516
|
exports.subscribe = subscribe;
|
|
643
517
|
exports.subscribeMemoized = subscribeMemoized;
|
|
644
518
|
exports.unsubscribe = unsubscribe;
|
|
645
|
-
//# sourceMappingURL=index.cjs.
|
|
519
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/types.ts","../src/helpers.ts","../src/connect_impl.ts","../src/connect.ts"],"sourcesContent":["/**\n * @license\n * @monterosa/sdk-connect-kit\n *\n * Copyright © 2022 Monterosa Productions Limited. All rights reserved.\n *\n * More details on the license can be found at https://www.monterosa.co/sdk/license\n */\n\nimport { MonterosaKit } from '@monterosa/sdk-core';\nimport { Emitter } from '@monterosa/sdk-util';\n\n/**\n * @internal\n */\nexport const KIT_NAME = 'connect';\n\n/**\n * Represents a Connect Kit instance. Obtain one via {@link getConnect}.\n */\nexport interface Connect extends MonterosaKit, Emitter {\n /**\n * Connection state\n */\n state: ConnState;\n\n /**\n * Session ID\n */\n sessionId: string | null;\n\n /**\n * @internal\n */\n initState: InitState;\n\n /**\n * @internal\n */\n init(host: string): Promise<void>;\n\n /**\n * @internal\n */\n connect(): Promise<void>;\n\n /**\n * @internal\n */\n disconnect(): void;\n\n /**\n * @internal\n */\n subscribe(channel: string): Promise<void>;\n\n /**\n * @internal\n */\n unsubscribe(channel: string): void;\n\n /**\n * @internal\n */\n send(channel: string, klass: string, body: (string | number)[]): void;\n\n /**\n * @internal\n */\n login(userId: string, timestamp: number, signature: string): Promise<void>;\n\n logout(): void;\n}\n\n/**\n * @internal\n */\nexport enum InitState {\n NotInitialised = 'not_initialised',\n Initialised = 'initialised',\n Initialising = 'initialising',\n}\n\n/**\n * A list of possible connection states.\n *\n * @remarks\n * Can be used with {@link Connect | Connect.state} to determine the current state.\n *\n * By default {@link Connect} is in the disconnected state.\n * When {@link connect} invoked `Connect` state switches to\n * `ConnState.Connecting` and connection is maintained permanently until\n * {@link disconnect} method is invoked. If connection was unsucessful,\n * a new attempt will start after a short delay and `ConnState.connecting`\n * is triggered. Delays between attempts increased based on this sequence:\n * 0, 3, 5, 10, 20, 30, 45, 60 where 60 seconds is the max.\n *\n * If `Connect` was previously connected and for any reason connection is lost,\n * the state changed to `ConnState.Connecting` again and the connection process\n * starts again automatically.\n *\n * @example\n * ```javascript\n * if (conn.state === ConnState.Connecting) {\n * // display \"connecting\" message\n * }\n * ```\n */\nexport enum ConnState {\n /**\n * Disconnected state\n */\n Disconnected = 'disconnected',\n /**\n * Connecting state\n */\n Connecting = 'connecting',\n /**\n * Connected state\n */\n Connected = 'connected',\n}\n\n/**\n * Class of the {@link Message}\n */\nexport enum Klass {\n /**\n * Authentication request. Sent by server on client connection.\n */\n Authenticate = 'auth',\n /**\n * Authentication response. Sent by client as response\n * to authentication request.\n */\n AuthenticateResponse = 'authr',\n /**\n * Authentication acknowledgement. Sent by the server as confirmation\n * of successful authentication.\n */\n AuthenticateSuccess = 'authok',\n /**\n * Ping message is sent by server periodically as a keep-alive.\n * Ping message is only sent if no messages are sent for specific time\n * period, meaning if there are other messages sent frequently enough\n * then ping messages are not sent at all.\n */\n Ping = 'ping',\n /**\n * Subscribe to a channel. Sent by the client to subscribe to a channel\n */\n Subscribe = 'sub',\n /**\n * Unsubscribe from a channel. Sent by the client to unsubscribe from a channel\n */\n Unsububscribe = 'unsub',\n /**\n * End of cache. Sent by the server to notify that all messages are sent from\n * a channel cache\n */\n EndOfCache = 'eoc',\n /**\n * User login. Sent by client to supply verified user identity to the server.\n */\n Login = 'login',\n /**\n * User login success\n */\n LoginSuccess = 'login_ok',\n /**\n * User login failure\n */\n LoginFail = 'login_fail',\n /**\n * Averages counters. Client can submit a counter which is processed together\n * with other counters to determine the average of all counters within specific\n * demographics segment.\n */\n Counter = 'counter',\n /**\n * Client votes. Sents by a user to vote for a poll option\n */\n Vote = 'v',\n}\n\n/**\n * Represents a message received from or sent to the server.\n * Subscribe via {@link onMessage} to receive messages.\n */\nexport interface Message {\n /**\n * The channel on which this message was received. You must\n * {@link subscribe} to a channel to start receiving messages.\n */\n channel: string;\n /**\n * The class indicates the desired action to be performed or the result of\n * the action. E.g. in order to authenticate a developer should {@link send}\n * {@link Klass | Klass.AuthenticateResponse} klass message as a response on\n * a received {@link Klass | Klass.Authenticate} message\n */\n klass: Klass | string;\n /**\n * The timestamp (in seconds) when this message was sent\n */\n sent_at: number;\n /**\n * The message payload. Each piece of data is a `string`\n */\n body: string[];\n}\n","/**\n * @license\n * @monterosa/sdk-connect-kit\n *\n * Copyright © 2022 Monterosa Productions Limited. All rights reserved.\n *\n * More details on the license can be found at https://www.monterosa.co/sdk/license\n */\n\nimport { Unsubscribe } from '@monterosa/sdk-util';\n\nimport { Connect, ConnState } from './types';\n\nexport function onState(\n conn: Connect,\n needle: ConnState,\n callback: Function,\n): Unsubscribe {\n const handler = (state: ConnState, ...rest: unknown[]) => {\n if (state === needle) {\n callback(...rest);\n }\n };\n\n conn.on('state', handler);\n\n return () => conn.off('state', handler);\n}\n","/* eslint class-methods-use-this: \"off\" */\n\n/**\n * @license\n * @monterosa/sdk-connect-kit\n *\n * Copyright © 2022 Monterosa Productions Limited. All rights reserved.\n *\n * More details on the license can be found at https://www.monterosa.co/sdk/license\n */\n\nimport Enmasse from '@monterosa/sdk-enmasse-kit';\nimport { Emitter, setTimestamp } from '@monterosa/sdk-util';\n\nimport { Connect, ConnState, InitState, Message } from './types';\n\n/**\n * @internal\n */\nexport class ConnectImpl extends Emitter implements Connect {\n private static instance: ConnectImpl;\n public initState: InitState = InitState.NotInitialised;\n private initPromise: Promise<void> = Promise.resolve();\n private connectPromise: Promise<void> | null = null;\n\n private constructor() {\n super();\n\n Enmasse.bind(\n Enmasse.ON_STATE,\n (state: Enmasse.States, ...rest: unknown[]) => {\n if (state === Enmasse.STATE_CONNECTED) {\n const [timestamp] = rest as [number];\n\n setTimestamp(timestamp);\n }\n\n this.emit('state', ConnectImpl.toConnState(state), ...rest);\n },\n );\n\n Enmasse.bind(Enmasse.ON_MESSAGE, (message: Enmasse.Message) => {\n this.emit('message', <Message>message);\n });\n }\n\n get state() {\n return ConnectImpl.toConnState(Enmasse.getState());\n }\n\n get sessionId() {\n return Enmasse.getSessionId();\n }\n\n public static getInstance(): ConnectImpl {\n if (!ConnectImpl.instance) {\n ConnectImpl.instance = new ConnectImpl();\n }\n\n return ConnectImpl.instance;\n }\n\n static toConnState(state: Enmasse.States): ConnState {\n switch (state) {\n default:\n case Enmasse.STATE_DISCONNECTED:\n return ConnState.Disconnected;\n case Enmasse.STATE_CONNECTING:\n return ConnState.Connecting;\n case Enmasse.STATE_CONNECTED:\n return ConnState.Connected;\n }\n }\n\n async init(host: string): Promise<void> {\n if (\n this.initState === InitState.Initialising ||\n this.initState === InitState.Initialised\n ) {\n return this.initPromise;\n }\n\n this.initPromise = new Promise((resolve, reject) => {\n this.initState = InitState.Initialising;\n\n Enmasse.bind(Enmasse.ON_READY, () => {\n this.initState = InitState.Initialised;\n\n Enmasse.unbind(Enmasse.ON_READY);\n Enmasse.unbind(Enmasse.ON_ERROR);\n\n resolve();\n });\n\n Enmasse.bind(Enmasse.ON_ERROR, (err: string) => {\n this.initState = InitState.NotInitialised;\n\n Enmasse.unbind(Enmasse.ON_READY);\n Enmasse.unbind(Enmasse.ON_ERROR);\n\n reject(new Error(`Unable to initialise connect kit: ${err}`));\n });\n\n Enmasse.init({\n config: `https://${host}/config/enmasse.json`,\n });\n });\n\n return this.initPromise;\n }\n\n connect(): Promise<void> {\n if (this.initState !== InitState.Initialised) {\n return Promise.reject(new Error('must be initialised before connecting'));\n }\n\n if (this.state === ConnState.Connected) {\n return Promise.resolve();\n }\n\n if (this.state === ConnState.Connecting) {\n if (this.connectPromise) {\n return this.connectPromise;\n }\n\n // This should never happen - indicates a bug in state management\n return Promise.reject(\n new Error(\n 'BUG: Connection state is Connecting but connectPromise is null - ' +\n 'this indicates an internal inconsistency',\n ),\n );\n }\n\n this.connectPromise = new Promise((resolve, reject) => {\n const handler = (state: ConnState) => {\n switch (state) {\n case ConnState.Connected:\n Enmasse.unbind(Enmasse.ON_STATE, handler);\n\n this.connectPromise = null;\n\n resolve();\n break;\n case ConnState.Disconnected:\n Enmasse.unbind(Enmasse.ON_STATE, handler);\n\n this.connectPromise = null;\n\n reject(new Error('disconnected'));\n break;\n case ConnState.Connecting:\n // The Enmasse library may emit the \"connecting\" state multiple\n // times. This is expected and does not impact the connection\n // process, so we safely ignore it.\n break;\n }\n };\n\n Enmasse.bind(Enmasse.ON_STATE, handler);\n\n Enmasse.connect();\n });\n\n return this.connectPromise;\n }\n\n disconnect() {\n Enmasse.disconnect();\n }\n\n subscribe(channel: string): Promise<void> {\n return new Promise((resolve) => {\n const handler = (ch: string) => {\n if (ch !== channel) return;\n\n Enmasse.unbind(Enmasse.ON_EOC, handler);\n\n resolve();\n };\n\n Enmasse.bind(Enmasse.ON_EOC, handler);\n\n Enmasse.subscribe(channel);\n });\n }\n\n unsubscribe(channel: string): void {\n Enmasse.unsubscribe(channel);\n }\n\n send(channel: string, klass: string, body: (string | number)[]): void {\n Enmasse.send(channel, klass, body);\n }\n\n async login(\n userId: string,\n timestamp: number,\n signature: string,\n ): Promise<void> {\n return new Promise((resolve, reject) => {\n Enmasse.login(userId, timestamp, signature, resolve, () => {\n reject(new Error('Login failure'));\n });\n });\n }\n\n async logout(): Promise<void> {\n Enmasse.logout();\n\n return Promise.resolve();\n }\n\n delete() {}\n}\n","/**\n * @license\n * @monterosa/sdk-connect-kit\n *\n * Copyright © 2022-2024 Monterosa Productions Limited. All rights reserved.\n *\n * More details on the license can be found at https://www.monterosa.co/sdk/license\n */\n\nimport { getSdk } from '@monterosa/sdk-core';\nimport { memoizePromise, Unsubscribe } from '@monterosa/sdk-util';\n\nimport { Connect, ConnState, Message, Klass } from './types';\nimport { onState } from './helpers';\nimport { ConnectImpl } from './connect_impl';\n\n/**\n * @internal\n */\nconst getConnectMemoized = memoizePromise(\n async (host: string): Promise<Connect> => {\n const conn = ConnectImpl.getInstance();\n\n await conn.init(host);\n\n return conn;\n },\n (host: string): string => host,\n);\n\n/**\n * Returns the {@link Connect} instance associated with the provided\n * host. If host is not provided, it returns Connect instance for\n * the host associated with the default sdk.\n *\n * @param host - The host URL. If not provided, uses the host\n * from the default SDK instance.\n */\nfunction getConnect(host?: string): Promise<Connect> {\n if (host === undefined) {\n const sdk = getSdk();\n\n host = sdk.options.host;\n }\n\n return getConnectMemoized(host);\n}\n\n/**\n * Adds an observer for when connection state changed to connected.\n *\n * @param conn - The {@link Connect} instance\n * @param callback - The callback triggered when {@link ConnState | state}\n * changed to connected\n */\nfunction onConnected(\n conn: Connect,\n callback: (timestamp: number) => void,\n): Unsubscribe {\n return onState(conn, ConnState.Connected, callback);\n}\n\n/**\n * Adds an observer for when connection state changed to connecting.\n *\n * @param conn - The {@link Connect} instance\n * @param callback - callback triggered on connecting state. Two parameters\n * are provided: `attempt`, the sequential number of connect attempt, and\n * `delay` - delay in seconds before the next attempt\n */\nfunction onConnecting(\n conn: Connect,\n callback: (attempt: number, delay: number) => void,\n): Unsubscribe {\n return onState(conn, ConnState.Connecting, callback);\n}\n\n/**\n * Adds an observer for when connection state changed to disconnected.\n *\n * @param conn - The {@link Connect} instance\n * @param callback - callback triggered on disconnected state\n */\nfunction onDisconnected(conn: Connect, callback: () => void): Unsubscribe {\n return onState(conn, ConnState.Disconnected, callback);\n}\n\n/**\n * Adds an observer for when a new message received\n *\n * @example\n * ```javascript\n * const unsubscribe = onMessage(conn, (message) => {\n * console.log(message.body);\n * });\n * ```\n *\n * @param conn - The {@link Connect} instance\n * @param callback - The callback function triggered on message receive\n */\nfunction onMessage(\n conn: Connect,\n callback: (message: Message) => void,\n): Unsubscribe {\n const handler = (message: Message) => {\n callback(message);\n };\n\n conn.on('message', handler);\n\n return () => conn.off('message', handler);\n}\n\n/**\n * Starts a connection process.\n *\n * @remarks\n * If connect is successful a promise resolved by\n * and {@link onConnected} is triggered, otherwise a next attempt will be\n * automatically invoked and {@link onConnecting} is triggered.\n *\n * SDK connects automatically when its created. Connection procedure can be\n * aborted by calling {@link disconnect} function and the promise is rejected.\n *\n * @example\n * ```javascript\n * try {\n * const conn = await getConnect();\n *\n * await connect(conn);\n *\n * console.log('connected!');\n * } catch (err) {\n * console.log(err)\n * }\n * ```\n *\n * State of the connection can be handled separately\n *\n * @example\n * ```javascript\n * onConnected(() => console.log('connected'));\n *\n * onConnecting((attempt, delay) => console.log('connecting'));\n *\n * onDisconnected(() => console.log('disconnected'));\n * ```\n *\n * @param conn - The {@link Connect} instance\n * @param host - Interaction Cloud Studio host.\n * Can be found in Project Settings in API tab\n */\nfunction connect(conn: Connect): Promise<void> {\n // No need to memoize this, it's already memoized\n // in the ConnectImpl class implementation\n return conn.connect();\n}\n\n/**\n * Disconnect from the server and triggers {@link onDisconnected}\n *\n * @param conn - The {@link Connect} instance\n */\nfunction disconnect(conn: Connect): void {\n conn.disconnect();\n}\n\n/**\n * @internal\n */\nconst subscribeMemoized = memoizePromise(\n async (conn: Connect, channel: string): Promise<void> =>\n conn.subscribe(channel),\n (conn: Connect, channel: string): string => channel,\n);\n\n/**\n * Subscribe to the server channel.\n *\n * @remarks\n * Any message published to a channel is {@link onMessage | received}\n * only by subscribers to that channel. The sdk out of the box handles\n * all required subscriptions internally and {@link onMessage | handles messages}\n * so there is no need in to subscribe by developers.\n *\n * To stop receiving messages on a channel {@link unsubscribe} should be called.\n *\n * @param conn - The {@link Connect} instance\n * @param channel - Channel name\n */\nfunction subscribe(conn: Connect, channel: string): Promise<void> {\n return subscribeMemoized(conn, channel);\n}\n\n/**\n * Unsubscribe from the server channel.\n *\n * @remarks\n * Removes subscription to the channel so that recipient no longer receive\n * messages from that channel.\n *\n * @param conn - The {@link Connect} instance\n * @param channel - Channel name\n */\nfunction unsubscribe(conn: Connect, channel: string): void {\n conn.unsubscribe(channel);\n}\n\n/**\n * Send message to the server.\n *\n * @remarks\n * The sdk out of the box provides more high level functions that uses\n * this function to send data to the server. Though a developer still can\n * use it if he knows a message protocol (klass and body) and a channel\n * that expect the message.\n *\n * @param conn - The Connect instance\n * @param channel - Channel name. Only {@link subscribe | subscribers}\n * to that channel can send messages.\n * @param klass - Message class name.\n * @param body - Message payload\n */\nfunction send(\n conn: Connect,\n channel: string,\n klass: Klass | string,\n body: (string | number)[],\n): void {\n conn.send(channel, klass, body);\n}\n\n/**\n * Authenticates the connection with user credentials.\n *\n * @param conn - The Connect instance\n * @param userId - The user identifier\n * @param timestamp - The signature timestamp in seconds\n * @param signature - The session signature string\n *\n * @public\n */\nasync function login(\n conn: Connect,\n userId: string,\n timestamp: number,\n signature: string,\n): Promise<void> {\n const result = await conn.login(userId, timestamp, signature);\n\n return result;\n}\n\nasync function logout(conn: Connect): Promise<void> {\n const result = await conn.logout();\n\n return result;\n}\n\nexport {\n onConnected,\n onConnecting,\n onDisconnected,\n onMessage,\n disconnect,\n unsubscribe,\n send,\n getConnect,\n getConnectMemoized,\n connect,\n subscribe,\n subscribeMemoized,\n login,\n logout,\n};\n"],"names":["InitState","ConnState","Klass","Emitter","Enmasse","setTimestamp","memoizePromise","getSdk"],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Establishes real-time connections to events and projects.
|
|
3
|
+
*
|
|
4
|
+
* @packageDocumentation
|
|
5
|
+
*/
|
|
1
6
|
/**
|
|
2
7
|
* @license
|
|
3
8
|
* @monterosa/sdk-connect-kit
|
|
@@ -6,11 +11,6 @@
|
|
|
6
11
|
*
|
|
7
12
|
* More details on the license can be found at https://www.monterosa.co/sdk/license
|
|
8
13
|
*/
|
|
9
|
-
/**
|
|
10
|
-
* Monterosa SDK / Connect Kit
|
|
11
|
-
*
|
|
12
|
-
* @packageDocumentation
|
|
13
|
-
*/
|
|
14
14
|
export * from './connect';
|
|
15
15
|
export * from './connect_impl';
|
|
16
16
|
export * from './types';
|
|
@@ -24,8 +24,10 @@ var InitState;
|
|
|
24
24
|
InitState["Initialising"] = "initialising";
|
|
25
25
|
})(InitState || (InitState = {}));
|
|
26
26
|
/**
|
|
27
|
-
* A list of possible connection states.
|
|
28
|
-
*
|
|
27
|
+
* A list of possible connection states.
|
|
28
|
+
*
|
|
29
|
+
* @remarks
|
|
30
|
+
* Can be used with {@link Connect | Connect.state} to determine the current state.
|
|
29
31
|
*
|
|
30
32
|
* By default {@link Connect} is in the disconnected state.
|
|
31
33
|
* When {@link connect} invoked `Connect` state switches to
|
|
@@ -223,7 +225,7 @@ class ConnectImpl extends Emitter {
|
|
|
223
225
|
return this.connectPromise;
|
|
224
226
|
}
|
|
225
227
|
// This should never happen - indicates a bug in state management
|
|
226
|
-
return Promise.reject(new Error('BUG: Connection state is Connecting but connectPromise is null
|
|
228
|
+
return Promise.reject(new Error('BUG: Connection state is Connecting but connectPromise is null - ' +
|
|
227
229
|
'this indicates an internal inconsistency'));
|
|
228
230
|
}
|
|
229
231
|
this.connectPromise = new Promise((resolve, reject) => {
|
|
@@ -307,7 +309,8 @@ const getConnectMemoized = memoizePromise(async (host) => {
|
|
|
307
309
|
* host. If host is not provided, it returns Connect instance for
|
|
308
310
|
* the host associated with the default sdk.
|
|
309
311
|
*
|
|
310
|
-
* @param
|
|
312
|
+
* @param host - The host URL. If not provided, uses the host
|
|
313
|
+
* from the default SDK instance.
|
|
311
314
|
*/
|
|
312
315
|
function getConnect(host) {
|
|
313
316
|
if (host === undefined) {
|
|
@@ -331,7 +334,7 @@ function onConnected(conn, callback) {
|
|
|
331
334
|
*
|
|
332
335
|
* @param conn - The {@link Connect} instance
|
|
333
336
|
* @param callback - callback triggered on connecting state. Two parameters
|
|
334
|
-
* are provided: `attempt
|
|
337
|
+
* are provided: `attempt`, the sequential number of connect attempt, and
|
|
335
338
|
* `delay` - delay in seconds before the next attempt
|
|
336
339
|
*/
|
|
337
340
|
function onConnecting(conn, callback) {
|
|
@@ -367,7 +370,10 @@ function onMessage(conn, callback) {
|
|
|
367
370
|
return () => conn.off('message', handler);
|
|
368
371
|
}
|
|
369
372
|
/**
|
|
370
|
-
* Starts a connection process.
|
|
373
|
+
* Starts a connection process.
|
|
374
|
+
*
|
|
375
|
+
* @remarks
|
|
376
|
+
* If connect is successful a promise resolved by
|
|
371
377
|
* and {@link onConnected} is triggered, otherwise a next attempt will be
|
|
372
378
|
* automatically invoked and {@link onConnecting} is triggered.
|
|
373
379
|
*
|
|
@@ -422,6 +428,7 @@ const subscribeMemoized = memoizePromise(async (conn, channel) => conn.subscribe
|
|
|
422
428
|
/**
|
|
423
429
|
* Subscribe to the server channel.
|
|
424
430
|
*
|
|
431
|
+
* @remarks
|
|
425
432
|
* Any message published to a channel is {@link onMessage | received}
|
|
426
433
|
* only by subscribers to that channel. The sdk out of the box handles
|
|
427
434
|
* all required subscriptions internally and {@link onMessage | handles messages}
|
|
@@ -438,6 +445,7 @@ function subscribe(conn, channel) {
|
|
|
438
445
|
/**
|
|
439
446
|
* Unsubscribe from the server channel.
|
|
440
447
|
*
|
|
448
|
+
* @remarks
|
|
441
449
|
* Removes subscription to the channel so that recipient no longer receive
|
|
442
450
|
* messages from that channel.
|
|
443
451
|
*
|
|
@@ -450,6 +458,7 @@ function unsubscribe(conn, channel) {
|
|
|
450
458
|
/**
|
|
451
459
|
* Send message to the server.
|
|
452
460
|
*
|
|
461
|
+
* @remarks
|
|
453
462
|
* The sdk out of the box provides more high level functions that uses
|
|
454
463
|
* this function to send data to the server. Though a developer still can
|
|
455
464
|
* use it if he knows a message protocol (klass and body) and a channel
|
|
@@ -464,6 +473,16 @@ function unsubscribe(conn, channel) {
|
|
|
464
473
|
function send(conn, channel, klass, body) {
|
|
465
474
|
conn.send(channel, klass, body);
|
|
466
475
|
}
|
|
476
|
+
/**
|
|
477
|
+
* Authenticates the connection with user credentials.
|
|
478
|
+
*
|
|
479
|
+
* @param conn - The Connect instance
|
|
480
|
+
* @param userId - The user identifier
|
|
481
|
+
* @param timestamp - The signature timestamp in seconds
|
|
482
|
+
* @param signature - The session signature string
|
|
483
|
+
*
|
|
484
|
+
* @public
|
|
485
|
+
*/
|
|
467
486
|
async function login(conn, userId, timestamp, signature) {
|
|
468
487
|
const result = await conn.login(userId, timestamp, signature);
|
|
469
488
|
return result;
|
|
@@ -474,4 +493,4 @@ async function logout(conn) {
|
|
|
474
493
|
}
|
|
475
494
|
|
|
476
495
|
export { ConnState, ConnectImpl, InitState, KIT_NAME, Klass, connect, disconnect, getConnect, getConnectMemoized, login, logout, onConnected, onConnecting, onDisconnected, onMessage, send, subscribe, subscribeMemoized, unsubscribe };
|
|
477
|
-
//# sourceMappingURL=index.
|
|
496
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/types.ts","../src/helpers.ts","../src/connect_impl.ts","../src/connect.ts"],"sourcesContent":["/**\n * @license\n * @monterosa/sdk-connect-kit\n *\n * Copyright © 2022 Monterosa Productions Limited. All rights reserved.\n *\n * More details on the license can be found at https://www.monterosa.co/sdk/license\n */\n\nimport { MonterosaKit } from '@monterosa/sdk-core';\nimport { Emitter } from '@monterosa/sdk-util';\n\n/**\n * @internal\n */\nexport const KIT_NAME = 'connect';\n\n/**\n * Represents a Connect Kit instance. Obtain one via {@link getConnect}.\n */\nexport interface Connect extends MonterosaKit, Emitter {\n /**\n * Connection state\n */\n state: ConnState;\n\n /**\n * Session ID\n */\n sessionId: string | null;\n\n /**\n * @internal\n */\n initState: InitState;\n\n /**\n * @internal\n */\n init(host: string): Promise<void>;\n\n /**\n * @internal\n */\n connect(): Promise<void>;\n\n /**\n * @internal\n */\n disconnect(): void;\n\n /**\n * @internal\n */\n subscribe(channel: string): Promise<void>;\n\n /**\n * @internal\n */\n unsubscribe(channel: string): void;\n\n /**\n * @internal\n */\n send(channel: string, klass: string, body: (string | number)[]): void;\n\n /**\n * @internal\n */\n login(userId: string, timestamp: number, signature: string): Promise<void>;\n\n logout(): void;\n}\n\n/**\n * @internal\n */\nexport enum InitState {\n NotInitialised = 'not_initialised',\n Initialised = 'initialised',\n Initialising = 'initialising',\n}\n\n/**\n * A list of possible connection states.\n *\n * @remarks\n * Can be used with {@link Connect | Connect.state} to determine the current state.\n *\n * By default {@link Connect} is in the disconnected state.\n * When {@link connect} invoked `Connect` state switches to\n * `ConnState.Connecting` and connection is maintained permanently until\n * {@link disconnect} method is invoked. If connection was unsucessful,\n * a new attempt will start after a short delay and `ConnState.connecting`\n * is triggered. Delays between attempts increased based on this sequence:\n * 0, 3, 5, 10, 20, 30, 45, 60 where 60 seconds is the max.\n *\n * If `Connect` was previously connected and for any reason connection is lost,\n * the state changed to `ConnState.Connecting` again and the connection process\n * starts again automatically.\n *\n * @example\n * ```javascript\n * if (conn.state === ConnState.Connecting) {\n * // display \"connecting\" message\n * }\n * ```\n */\nexport enum ConnState {\n /**\n * Disconnected state\n */\n Disconnected = 'disconnected',\n /**\n * Connecting state\n */\n Connecting = 'connecting',\n /**\n * Connected state\n */\n Connected = 'connected',\n}\n\n/**\n * Class of the {@link Message}\n */\nexport enum Klass {\n /**\n * Authentication request. Sent by server on client connection.\n */\n Authenticate = 'auth',\n /**\n * Authentication response. Sent by client as response\n * to authentication request.\n */\n AuthenticateResponse = 'authr',\n /**\n * Authentication acknowledgement. Sent by the server as confirmation\n * of successful authentication.\n */\n AuthenticateSuccess = 'authok',\n /**\n * Ping message is sent by server periodically as a keep-alive.\n * Ping message is only sent if no messages are sent for specific time\n * period, meaning if there are other messages sent frequently enough\n * then ping messages are not sent at all.\n */\n Ping = 'ping',\n /**\n * Subscribe to a channel. Sent by the client to subscribe to a channel\n */\n Subscribe = 'sub',\n /**\n * Unsubscribe from a channel. Sent by the client to unsubscribe from a channel\n */\n Unsububscribe = 'unsub',\n /**\n * End of cache. Sent by the server to notify that all messages are sent from\n * a channel cache\n */\n EndOfCache = 'eoc',\n /**\n * User login. Sent by client to supply verified user identity to the server.\n */\n Login = 'login',\n /**\n * User login success\n */\n LoginSuccess = 'login_ok',\n /**\n * User login failure\n */\n LoginFail = 'login_fail',\n /**\n * Averages counters. Client can submit a counter which is processed together\n * with other counters to determine the average of all counters within specific\n * demographics segment.\n */\n Counter = 'counter',\n /**\n * Client votes. Sents by a user to vote for a poll option\n */\n Vote = 'v',\n}\n\n/**\n * Represents a message received from or sent to the server.\n * Subscribe via {@link onMessage} to receive messages.\n */\nexport interface Message {\n /**\n * The channel on which this message was received. You must\n * {@link subscribe} to a channel to start receiving messages.\n */\n channel: string;\n /**\n * The class indicates the desired action to be performed or the result of\n * the action. E.g. in order to authenticate a developer should {@link send}\n * {@link Klass | Klass.AuthenticateResponse} klass message as a response on\n * a received {@link Klass | Klass.Authenticate} message\n */\n klass: Klass | string;\n /**\n * The timestamp (in seconds) when this message was sent\n */\n sent_at: number;\n /**\n * The message payload. Each piece of data is a `string`\n */\n body: string[];\n}\n","/**\n * @license\n * @monterosa/sdk-connect-kit\n *\n * Copyright © 2022 Monterosa Productions Limited. All rights reserved.\n *\n * More details on the license can be found at https://www.monterosa.co/sdk/license\n */\n\nimport { Unsubscribe } from '@monterosa/sdk-util';\n\nimport { Connect, ConnState } from './types';\n\nexport function onState(\n conn: Connect,\n needle: ConnState,\n callback: Function,\n): Unsubscribe {\n const handler = (state: ConnState, ...rest: unknown[]) => {\n if (state === needle) {\n callback(...rest);\n }\n };\n\n conn.on('state', handler);\n\n return () => conn.off('state', handler);\n}\n","/* eslint class-methods-use-this: \"off\" */\n\n/**\n * @license\n * @monterosa/sdk-connect-kit\n *\n * Copyright © 2022 Monterosa Productions Limited. All rights reserved.\n *\n * More details on the license can be found at https://www.monterosa.co/sdk/license\n */\n\nimport Enmasse from '@monterosa/sdk-enmasse-kit';\nimport { Emitter, setTimestamp } from '@monterosa/sdk-util';\n\nimport { Connect, ConnState, InitState, Message } from './types';\n\n/**\n * @internal\n */\nexport class ConnectImpl extends Emitter implements Connect {\n private static instance: ConnectImpl;\n public initState: InitState = InitState.NotInitialised;\n private initPromise: Promise<void> = Promise.resolve();\n private connectPromise: Promise<void> | null = null;\n\n private constructor() {\n super();\n\n Enmasse.bind(\n Enmasse.ON_STATE,\n (state: Enmasse.States, ...rest: unknown[]) => {\n if (state === Enmasse.STATE_CONNECTED) {\n const [timestamp] = rest as [number];\n\n setTimestamp(timestamp);\n }\n\n this.emit('state', ConnectImpl.toConnState(state), ...rest);\n },\n );\n\n Enmasse.bind(Enmasse.ON_MESSAGE, (message: Enmasse.Message) => {\n this.emit('message', <Message>message);\n });\n }\n\n get state() {\n return ConnectImpl.toConnState(Enmasse.getState());\n }\n\n get sessionId() {\n return Enmasse.getSessionId();\n }\n\n public static getInstance(): ConnectImpl {\n if (!ConnectImpl.instance) {\n ConnectImpl.instance = new ConnectImpl();\n }\n\n return ConnectImpl.instance;\n }\n\n static toConnState(state: Enmasse.States): ConnState {\n switch (state) {\n default:\n case Enmasse.STATE_DISCONNECTED:\n return ConnState.Disconnected;\n case Enmasse.STATE_CONNECTING:\n return ConnState.Connecting;\n case Enmasse.STATE_CONNECTED:\n return ConnState.Connected;\n }\n }\n\n async init(host: string): Promise<void> {\n if (\n this.initState === InitState.Initialising ||\n this.initState === InitState.Initialised\n ) {\n return this.initPromise;\n }\n\n this.initPromise = new Promise((resolve, reject) => {\n this.initState = InitState.Initialising;\n\n Enmasse.bind(Enmasse.ON_READY, () => {\n this.initState = InitState.Initialised;\n\n Enmasse.unbind(Enmasse.ON_READY);\n Enmasse.unbind(Enmasse.ON_ERROR);\n\n resolve();\n });\n\n Enmasse.bind(Enmasse.ON_ERROR, (err: string) => {\n this.initState = InitState.NotInitialised;\n\n Enmasse.unbind(Enmasse.ON_READY);\n Enmasse.unbind(Enmasse.ON_ERROR);\n\n reject(new Error(`Unable to initialise connect kit: ${err}`));\n });\n\n Enmasse.init({\n config: `https://${host}/config/enmasse.json`,\n });\n });\n\n return this.initPromise;\n }\n\n connect(): Promise<void> {\n if (this.initState !== InitState.Initialised) {\n return Promise.reject(new Error('must be initialised before connecting'));\n }\n\n if (this.state === ConnState.Connected) {\n return Promise.resolve();\n }\n\n if (this.state === ConnState.Connecting) {\n if (this.connectPromise) {\n return this.connectPromise;\n }\n\n // This should never happen - indicates a bug in state management\n return Promise.reject(\n new Error(\n 'BUG: Connection state is Connecting but connectPromise is null - ' +\n 'this indicates an internal inconsistency',\n ),\n );\n }\n\n this.connectPromise = new Promise((resolve, reject) => {\n const handler = (state: ConnState) => {\n switch (state) {\n case ConnState.Connected:\n Enmasse.unbind(Enmasse.ON_STATE, handler);\n\n this.connectPromise = null;\n\n resolve();\n break;\n case ConnState.Disconnected:\n Enmasse.unbind(Enmasse.ON_STATE, handler);\n\n this.connectPromise = null;\n\n reject(new Error('disconnected'));\n break;\n case ConnState.Connecting:\n // The Enmasse library may emit the \"connecting\" state multiple\n // times. This is expected and does not impact the connection\n // process, so we safely ignore it.\n break;\n }\n };\n\n Enmasse.bind(Enmasse.ON_STATE, handler);\n\n Enmasse.connect();\n });\n\n return this.connectPromise;\n }\n\n disconnect() {\n Enmasse.disconnect();\n }\n\n subscribe(channel: string): Promise<void> {\n return new Promise((resolve) => {\n const handler = (ch: string) => {\n if (ch !== channel) return;\n\n Enmasse.unbind(Enmasse.ON_EOC, handler);\n\n resolve();\n };\n\n Enmasse.bind(Enmasse.ON_EOC, handler);\n\n Enmasse.subscribe(channel);\n });\n }\n\n unsubscribe(channel: string): void {\n Enmasse.unsubscribe(channel);\n }\n\n send(channel: string, klass: string, body: (string | number)[]): void {\n Enmasse.send(channel, klass, body);\n }\n\n async login(\n userId: string,\n timestamp: number,\n signature: string,\n ): Promise<void> {\n return new Promise((resolve, reject) => {\n Enmasse.login(userId, timestamp, signature, resolve, () => {\n reject(new Error('Login failure'));\n });\n });\n }\n\n async logout(): Promise<void> {\n Enmasse.logout();\n\n return Promise.resolve();\n }\n\n delete() {}\n}\n","/**\n * @license\n * @monterosa/sdk-connect-kit\n *\n * Copyright © 2022-2024 Monterosa Productions Limited. All rights reserved.\n *\n * More details on the license can be found at https://www.monterosa.co/sdk/license\n */\n\nimport { getSdk } from '@monterosa/sdk-core';\nimport { memoizePromise, Unsubscribe } from '@monterosa/sdk-util';\n\nimport { Connect, ConnState, Message, Klass } from './types';\nimport { onState } from './helpers';\nimport { ConnectImpl } from './connect_impl';\n\n/**\n * @internal\n */\nconst getConnectMemoized = memoizePromise(\n async (host: string): Promise<Connect> => {\n const conn = ConnectImpl.getInstance();\n\n await conn.init(host);\n\n return conn;\n },\n (host: string): string => host,\n);\n\n/**\n * Returns the {@link Connect} instance associated with the provided\n * host. If host is not provided, it returns Connect instance for\n * the host associated with the default sdk.\n *\n * @param host - The host URL. If not provided, uses the host\n * from the default SDK instance.\n */\nfunction getConnect(host?: string): Promise<Connect> {\n if (host === undefined) {\n const sdk = getSdk();\n\n host = sdk.options.host;\n }\n\n return getConnectMemoized(host);\n}\n\n/**\n * Adds an observer for when connection state changed to connected.\n *\n * @param conn - The {@link Connect} instance\n * @param callback - The callback triggered when {@link ConnState | state}\n * changed to connected\n */\nfunction onConnected(\n conn: Connect,\n callback: (timestamp: number) => void,\n): Unsubscribe {\n return onState(conn, ConnState.Connected, callback);\n}\n\n/**\n * Adds an observer for when connection state changed to connecting.\n *\n * @param conn - The {@link Connect} instance\n * @param callback - callback triggered on connecting state. Two parameters\n * are provided: `attempt`, the sequential number of connect attempt, and\n * `delay` - delay in seconds before the next attempt\n */\nfunction onConnecting(\n conn: Connect,\n callback: (attempt: number, delay: number) => void,\n): Unsubscribe {\n return onState(conn, ConnState.Connecting, callback);\n}\n\n/**\n * Adds an observer for when connection state changed to disconnected.\n *\n * @param conn - The {@link Connect} instance\n * @param callback - callback triggered on disconnected state\n */\nfunction onDisconnected(conn: Connect, callback: () => void): Unsubscribe {\n return onState(conn, ConnState.Disconnected, callback);\n}\n\n/**\n * Adds an observer for when a new message received\n *\n * @example\n * ```javascript\n * const unsubscribe = onMessage(conn, (message) => {\n * console.log(message.body);\n * });\n * ```\n *\n * @param conn - The {@link Connect} instance\n * @param callback - The callback function triggered on message receive\n */\nfunction onMessage(\n conn: Connect,\n callback: (message: Message) => void,\n): Unsubscribe {\n const handler = (message: Message) => {\n callback(message);\n };\n\n conn.on('message', handler);\n\n return () => conn.off('message', handler);\n}\n\n/**\n * Starts a connection process.\n *\n * @remarks\n * If connect is successful a promise resolved by\n * and {@link onConnected} is triggered, otherwise a next attempt will be\n * automatically invoked and {@link onConnecting} is triggered.\n *\n * SDK connects automatically when its created. Connection procedure can be\n * aborted by calling {@link disconnect} function and the promise is rejected.\n *\n * @example\n * ```javascript\n * try {\n * const conn = await getConnect();\n *\n * await connect(conn);\n *\n * console.log('connected!');\n * } catch (err) {\n * console.log(err)\n * }\n * ```\n *\n * State of the connection can be handled separately\n *\n * @example\n * ```javascript\n * onConnected(() => console.log('connected'));\n *\n * onConnecting((attempt, delay) => console.log('connecting'));\n *\n * onDisconnected(() => console.log('disconnected'));\n * ```\n *\n * @param conn - The {@link Connect} instance\n * @param host - Interaction Cloud Studio host.\n * Can be found in Project Settings in API tab\n */\nfunction connect(conn: Connect): Promise<void> {\n // No need to memoize this, it's already memoized\n // in the ConnectImpl class implementation\n return conn.connect();\n}\n\n/**\n * Disconnect from the server and triggers {@link onDisconnected}\n *\n * @param conn - The {@link Connect} instance\n */\nfunction disconnect(conn: Connect): void {\n conn.disconnect();\n}\n\n/**\n * @internal\n */\nconst subscribeMemoized = memoizePromise(\n async (conn: Connect, channel: string): Promise<void> =>\n conn.subscribe(channel),\n (conn: Connect, channel: string): string => channel,\n);\n\n/**\n * Subscribe to the server channel.\n *\n * @remarks\n * Any message published to a channel is {@link onMessage | received}\n * only by subscribers to that channel. The sdk out of the box handles\n * all required subscriptions internally and {@link onMessage | handles messages}\n * so there is no need in to subscribe by developers.\n *\n * To stop receiving messages on a channel {@link unsubscribe} should be called.\n *\n * @param conn - The {@link Connect} instance\n * @param channel - Channel name\n */\nfunction subscribe(conn: Connect, channel: string): Promise<void> {\n return subscribeMemoized(conn, channel);\n}\n\n/**\n * Unsubscribe from the server channel.\n *\n * @remarks\n * Removes subscription to the channel so that recipient no longer receive\n * messages from that channel.\n *\n * @param conn - The {@link Connect} instance\n * @param channel - Channel name\n */\nfunction unsubscribe(conn: Connect, channel: string): void {\n conn.unsubscribe(channel);\n}\n\n/**\n * Send message to the server.\n *\n * @remarks\n * The sdk out of the box provides more high level functions that uses\n * this function to send data to the server. Though a developer still can\n * use it if he knows a message protocol (klass and body) and a channel\n * that expect the message.\n *\n * @param conn - The Connect instance\n * @param channel - Channel name. Only {@link subscribe | subscribers}\n * to that channel can send messages.\n * @param klass - Message class name.\n * @param body - Message payload\n */\nfunction send(\n conn: Connect,\n channel: string,\n klass: Klass | string,\n body: (string | number)[],\n): void {\n conn.send(channel, klass, body);\n}\n\n/**\n * Authenticates the connection with user credentials.\n *\n * @param conn - The Connect instance\n * @param userId - The user identifier\n * @param timestamp - The signature timestamp in seconds\n * @param signature - The session signature string\n *\n * @public\n */\nasync function login(\n conn: Connect,\n userId: string,\n timestamp: number,\n signature: string,\n): Promise<void> {\n const result = await conn.login(userId, timestamp, signature);\n\n return result;\n}\n\nasync function logout(conn: Connect): Promise<void> {\n const result = await conn.logout();\n\n return result;\n}\n\nexport {\n onConnected,\n onConnecting,\n onDisconnected,\n onMessage,\n disconnect,\n unsubscribe,\n send,\n getConnect,\n getConnectMemoized,\n connect,\n subscribe,\n subscribeMemoized,\n login,\n logout,\n};\n"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -13,7 +13,7 @@ import { Emitter } from '@monterosa/sdk-util';
|
|
|
13
13
|
*/
|
|
14
14
|
export declare const KIT_NAME = "connect";
|
|
15
15
|
/**
|
|
16
|
-
*
|
|
16
|
+
* Represents a Connect Kit instance. Obtain one via {@link getConnect}.
|
|
17
17
|
*/
|
|
18
18
|
export interface Connect extends MonterosaKit, Emitter {
|
|
19
19
|
/**
|
|
@@ -52,6 +52,9 @@ export interface Connect extends MonterosaKit, Emitter {
|
|
|
52
52
|
* @internal
|
|
53
53
|
*/
|
|
54
54
|
send(channel: string, klass: string, body: (string | number)[]): void;
|
|
55
|
+
/**
|
|
56
|
+
* @internal
|
|
57
|
+
*/
|
|
55
58
|
login(userId: string, timestamp: number, signature: string): Promise<void>;
|
|
56
59
|
logout(): void;
|
|
57
60
|
}
|
|
@@ -64,8 +67,10 @@ export declare enum InitState {
|
|
|
64
67
|
Initialising = "initialising"
|
|
65
68
|
}
|
|
66
69
|
/**
|
|
67
|
-
* A list of possible connection states.
|
|
68
|
-
*
|
|
70
|
+
* A list of possible connection states.
|
|
71
|
+
*
|
|
72
|
+
* @remarks
|
|
73
|
+
* Can be used with {@link Connect | Connect.state} to determine the current state.
|
|
69
74
|
*
|
|
70
75
|
* By default {@link Connect} is in the disconnected state.
|
|
71
76
|
* When {@link connect} invoked `Connect` state switches to
|
|
@@ -162,20 +167,20 @@ export declare enum Klass {
|
|
|
162
167
|
Vote = "v"
|
|
163
168
|
}
|
|
164
169
|
/**
|
|
165
|
-
*
|
|
170
|
+
* Represents a message received from or sent to the server.
|
|
171
|
+
* Subscribe via {@link onMessage} to receive messages.
|
|
166
172
|
*/
|
|
167
173
|
export interface Message {
|
|
168
174
|
/**
|
|
169
|
-
* The channel
|
|
170
|
-
* {@link subscribe} to
|
|
171
|
-
* messages
|
|
175
|
+
* The channel on which this message was received. You must
|
|
176
|
+
* {@link subscribe} to a channel to start receiving messages.
|
|
172
177
|
*/
|
|
173
178
|
channel: string;
|
|
174
179
|
/**
|
|
175
180
|
* The class indicates the desired action to be performed or the result of
|
|
176
181
|
* the action. E.g. in order to authenticate a developer should {@link send}
|
|
177
|
-
* {@link Klass.AuthenticateResponse} klass message as a response on
|
|
178
|
-
* a received {@link Klass.Authenticate} message
|
|
182
|
+
* {@link Klass | Klass.AuthenticateResponse} klass message as a response on
|
|
183
|
+
* a received {@link Klass | Klass.Authenticate} message
|
|
179
184
|
*/
|
|
180
185
|
klass: Klass | string;
|
|
181
186
|
/**
|
|
@@ -183,7 +188,7 @@ export interface Message {
|
|
|
183
188
|
*/
|
|
184
189
|
sent_at: number;
|
|
185
190
|
/**
|
|
186
|
-
* The message payload. Each
|
|
191
|
+
* The message payload. Each piece of data is a `string`
|
|
187
192
|
*/
|
|
188
193
|
body: string[];
|
|
189
194
|
}
|
package/package.json
CHANGED
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@monterosa/sdk-connect-kit",
|
|
3
|
-
"version": "2.0.0-rc.
|
|
3
|
+
"version": "2.0.0-rc.3",
|
|
4
4
|
"description": "Monterosa JS SDK / Connect",
|
|
5
5
|
"author": "Monterosa Productions Limited <hello@monterosa.co.uk> (https://www.monterosa.co/)",
|
|
6
|
-
"main": "dist/index.cjs
|
|
7
|
-
"browser": "dist/index.esm.js",
|
|
8
|
-
"module": "dist/index.esm.js",
|
|
6
|
+
"main": "./dist/index.cjs",
|
|
9
7
|
"types": "./dist/index.d.ts",
|
|
10
|
-
"
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js",
|
|
12
|
+
"require": "./dist/index.cjs",
|
|
13
|
+
"default": "./dist/index.cjs"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
11
16
|
"files": [
|
|
12
17
|
"dist"
|
|
13
18
|
],
|
|
@@ -19,21 +24,19 @@
|
|
|
19
24
|
"test:ci": "jest --color --coverage --ci --reporters=jest-junit",
|
|
20
25
|
"api-report": "api-extractor run --local --verbose"
|
|
21
26
|
},
|
|
22
|
-
"keywords": [
|
|
27
|
+
"keywords": [
|
|
28
|
+
"monterosa",
|
|
29
|
+
"sdk",
|
|
30
|
+
"interaction-cloud",
|
|
31
|
+
"connect"
|
|
32
|
+
],
|
|
23
33
|
"license": "MIT",
|
|
24
|
-
"peerDependencies": {
|
|
25
|
-
"@monterosa/sdk-core": "0.x",
|
|
26
|
-
"@monterosa/sdk-enmasse-kit": "0.x",
|
|
27
|
-
"@monterosa/sdk-util": "0.x"
|
|
28
|
-
},
|
|
29
34
|
"dependencies": {
|
|
30
|
-
"@
|
|
31
|
-
"@monterosa/sdk-
|
|
32
|
-
"@monterosa/sdk-
|
|
33
|
-
"@monterosa/sdk-util": "^2.0.0-rc.1"
|
|
35
|
+
"@monterosa/sdk-core": "2.0.0-rc.3",
|
|
36
|
+
"@monterosa/sdk-enmasse-kit": "2.0.0-rc.3",
|
|
37
|
+
"@monterosa/sdk-util": "2.0.0-rc.3"
|
|
34
38
|
},
|
|
35
39
|
"devDependencies": {
|
|
36
|
-
"@rollup/plugin-commonjs": "^21.1.0",
|
|
37
40
|
"@rollup/plugin-json": "^4.1.0",
|
|
38
41
|
"@rollup/plugin-node-resolve": "^13.3.0",
|
|
39
42
|
"@rollup/plugin-terser": "^0.4.4",
|
|
@@ -51,5 +54,5 @@
|
|
|
51
54
|
"publishConfig": {
|
|
52
55
|
"access": "public"
|
|
53
56
|
},
|
|
54
|
-
"gitHead": "
|
|
57
|
+
"gitHead": "d692ad26af0b5ea7cd7b664168bffa069f9ab911"
|
|
55
58
|
}
|
package/dist/index.cjs.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs.js","sources":["../src/types.ts","../src/helpers.ts","../src/connect_impl.ts","../src/connect.ts"],"sourcesContent":["/**\n * @license\n * @monterosa/sdk-connect-kit\n *\n * Copyright © 2022 Monterosa Productions Limited. All rights reserved.\n *\n * More details on the license can be found at https://www.monterosa.co/sdk/license\n */\n\nimport { MonterosaKit } from '@monterosa/sdk-core';\nimport { Emitter } from '@monterosa/sdk-util';\n\n/**\n * @internal\n */\nexport const KIT_NAME = 'connect';\n\n/**\n * Interface representing Connect kit.\n */\nexport interface Connect extends MonterosaKit, Emitter {\n /**\n * Connection state\n */\n state: ConnState;\n\n /**\n * Session ID\n */\n sessionId: string | null;\n\n /**\n * @internal\n */\n initState: InitState;\n\n /**\n * @internal\n */\n init(host: string): Promise<void>;\n\n /**\n * @internal\n */\n connect(): Promise<void>;\n\n /**\n * @internal\n */\n disconnect(): void;\n\n /**\n * @internal\n */\n subscribe(channel: string): Promise<void>;\n\n /**\n * @internal\n */\n unsubscribe(channel: string): void;\n\n /**\n * @internal\n */\n send(channel: string, klass: string, body: (string | number)[]): void;\n\n login(userId: string, timestamp: number, signature: string): Promise<void>;\n\n logout(): void;\n}\n\n/**\n * @internal\n */\nexport enum InitState {\n NotInitialised = 'not_initialised',\n Initialised = 'initialised',\n Initialising = 'initialising',\n}\n\n/**\n * A list of possible connection states. Can be used with\n * {@link Connect.state} to determine the current state.\n *\n * By default {@link Connect} is in the disconnected state.\n * When {@link connect} invoked `Connect` state switches to\n * `ConnState.Connecting` and connection is maintained permanently until\n * {@link disconnect} method is invoked. If connection was unsucessful,\n * a new attempt will start after a short delay and `ConnState.connecting`\n * is triggered. Delays between attempts increased based on this sequence:\n * 0, 3, 5, 10, 20, 30, 45, 60 where 60 seconds is the max.\n *\n * If `Connect` was previously connected and for any reason connection is lost,\n * the state changed to `ConnState.Connecting` again and the connection process\n * starts again automatically.\n *\n * @example\n * ```javascript\n * if (conn.state === ConnState.Connecting) {\n * // display \"connecting\" message\n * }\n * ```\n */\nexport enum ConnState {\n /**\n * Disconnected state\n */\n Disconnected = 'disconnected',\n /**\n * Connecting state\n */\n Connecting = 'connecting',\n /**\n * Connected state\n */\n Connected = 'connected',\n}\n\n/**\n * Class of the {@link Message}\n */\nexport enum Klass {\n /**\n * Authentication request. Sent by server on client connection.\n */\n Authenticate = 'auth',\n /**\n * Authentication response. Sent by client as response\n * to authentication request.\n */\n AuthenticateResponse = 'authr',\n /**\n * Authentication acknowledgement. Sent by the server as confirmation\n * of successful authentication.\n */\n AuthenticateSuccess = 'authok',\n /**\n * Ping message is sent by server periodically as a keep-alive.\n * Ping message is only sent if no messages are sent for specific time\n * period, meaning if there are other messages sent frequently enough\n * then ping messages are not sent at all.\n */\n Ping = 'ping',\n /**\n * Subscribe to a channel. Sent by the client to subscribe to a channel\n */\n Subscribe = 'sub',\n /**\n * Unsubscribe from a channel. Sent by the client to unsubscribe from a channel\n */\n Unsububscribe = 'unsub',\n /**\n * End of cache. Sent by the server to notify that all messages are sent from\n * a channel cache\n */\n EndOfCache = 'eoc',\n /**\n * User login. Sent by client to supply verified user identity to the server.\n */\n Login = 'login',\n /**\n * User login success\n */\n LoginSuccess = 'login_ok',\n /**\n * User login failure\n */\n LoginFail = 'login_fail',\n /**\n * Averages counters. Client can submit a counter which is processed together\n * with other counters to determine the average of all counters within specific\n * demographics segment.\n */\n Counter = 'counter',\n /**\n * Client votes. Sents by a user to vote for a poll option\n */\n Vote = 'v',\n}\n\n/**\n * A Message to be sent to the Monterosa / Interaction Cloud\n */\nexport interface Message {\n /**\n * The channel id on which this message was received. It s required to be\n * {@link subscribe} to that channel in order to start receiving\n * messages\n */\n channel: string;\n /**\n * The class indicates the desired action to be performed or the result of\n * the action. E.g. in order to authenticate a developer should {@link send}\n * {@link Klass.AuthenticateResponse} klass message as a response on\n * a received {@link Klass.Authenticate} message\n */\n klass: Klass | string;\n /**\n * The timestamp (in seconds) when this message was sent\n */\n sent_at: number;\n /**\n * The message payload. Each peace of data is a `string`\n */\n body: string[];\n}\n","/**\n * @license\n * @monterosa/sdk-connect-kit\n *\n * Copyright © 2022 Monterosa Productions Limited. All rights reserved.\n *\n * More details on the license can be found at https://www.monterosa.co/sdk/license\n */\n\nimport { Unsubscribe } from '@monterosa/sdk-util';\n\nimport { Connect, ConnState } from './types';\n\nexport function onState(\n conn: Connect,\n needle: ConnState,\n callback: Function,\n): Unsubscribe {\n const handler = (state: ConnState, ...rest: unknown[]) => {\n if (state === needle) {\n callback(...rest);\n }\n };\n\n conn.on('state', handler);\n\n return () => conn.off('state', handler);\n}\n","/* eslint class-methods-use-this: \"off\" */\n\n/**\n * @license\n * @monterosa/sdk-connect-kit\n *\n * Copyright © 2022 Monterosa Productions Limited. All rights reserved.\n *\n * More details on the license can be found at https://www.monterosa.co/sdk/license\n */\n\nimport Enmasse from '@monterosa/sdk-enmasse-kit';\nimport { Emitter, setTimestamp } from '@monterosa/sdk-util';\n\nimport { Connect, ConnState, InitState, Message } from './types';\n\n/**\n * @internal\n */\nexport class ConnectImpl extends Emitter implements Connect {\n private static instance: ConnectImpl;\n public initState: InitState = InitState.NotInitialised;\n private initPromise: Promise<void> = Promise.resolve();\n private connectPromise: Promise<void> | null = null;\n\n private constructor() {\n super();\n\n Enmasse.bind(\n Enmasse.ON_STATE,\n (state: Enmasse.States, ...rest: unknown[]) => {\n if (state === Enmasse.STATE_CONNECTED) {\n const [timestamp] = rest as [number];\n\n setTimestamp(timestamp);\n }\n\n this.emit('state', ConnectImpl.toConnState(state), ...rest);\n },\n );\n\n Enmasse.bind(Enmasse.ON_MESSAGE, (message: Enmasse.Message) => {\n this.emit('message', <Message>message);\n });\n }\n\n get state() {\n return ConnectImpl.toConnState(Enmasse.getState());\n }\n\n get sessionId() {\n return Enmasse.getSessionId();\n }\n\n public static getInstance(): ConnectImpl {\n if (!ConnectImpl.instance) {\n ConnectImpl.instance = new ConnectImpl();\n }\n\n return ConnectImpl.instance;\n }\n\n static toConnState(state: Enmasse.States): ConnState {\n switch (state) {\n default:\n case Enmasse.STATE_DISCONNECTED:\n return ConnState.Disconnected;\n case Enmasse.STATE_CONNECTING:\n return ConnState.Connecting;\n case Enmasse.STATE_CONNECTED:\n return ConnState.Connected;\n }\n }\n\n async init(host: string): Promise<void> {\n if (\n this.initState === InitState.Initialising ||\n this.initState === InitState.Initialised\n ) {\n return this.initPromise;\n }\n\n this.initPromise = new Promise((resolve, reject) => {\n this.initState = InitState.Initialising;\n\n Enmasse.bind(Enmasse.ON_READY, () => {\n this.initState = InitState.Initialised;\n\n Enmasse.unbind(Enmasse.ON_READY);\n Enmasse.unbind(Enmasse.ON_ERROR);\n\n resolve();\n });\n\n Enmasse.bind(Enmasse.ON_ERROR, (err: string) => {\n this.initState = InitState.NotInitialised;\n\n Enmasse.unbind(Enmasse.ON_READY);\n Enmasse.unbind(Enmasse.ON_ERROR);\n\n reject(new Error(`Unable to initialise connect kit: ${err}`));\n });\n\n Enmasse.init({\n config: `https://${host}/config/enmasse.json`,\n });\n });\n\n return this.initPromise;\n }\n\n connect(): Promise<void> {\n if (this.initState !== InitState.Initialised) {\n return Promise.reject(new Error('must be initialised before connecting'));\n }\n\n if (this.state === ConnState.Connected) {\n return Promise.resolve();\n }\n\n if (this.state === ConnState.Connecting) {\n if (this.connectPromise) {\n return this.connectPromise;\n }\n\n // This should never happen - indicates a bug in state management\n return Promise.reject(\n new Error(\n 'BUG: Connection state is Connecting but connectPromise is null — ' +\n 'this indicates an internal inconsistency',\n ),\n );\n }\n\n this.connectPromise = new Promise((resolve, reject) => {\n const handler = (state: ConnState) => {\n switch (state) {\n case ConnState.Connected:\n Enmasse.unbind(Enmasse.ON_STATE, handler);\n\n this.connectPromise = null;\n\n resolve();\n break;\n case ConnState.Disconnected:\n Enmasse.unbind(Enmasse.ON_STATE, handler);\n\n this.connectPromise = null;\n\n reject(new Error('disconnected'));\n break;\n case ConnState.Connecting:\n // The Enmasse library may emit the \"connecting\" state multiple\n // times. This is expected and does not impact the connection\n // process, so we safely ignore it.\n break;\n }\n };\n\n Enmasse.bind(Enmasse.ON_STATE, handler);\n\n Enmasse.connect();\n });\n\n return this.connectPromise;\n }\n\n disconnect() {\n Enmasse.disconnect();\n }\n\n subscribe(channel: string): Promise<void> {\n return new Promise((resolve) => {\n const handler = (ch: string) => {\n if (ch !== channel) return;\n\n Enmasse.unbind(Enmasse.ON_EOC, handler);\n\n resolve();\n };\n\n Enmasse.bind(Enmasse.ON_EOC, handler);\n\n Enmasse.subscribe(channel);\n });\n }\n\n unsubscribe(channel: string): void {\n Enmasse.unsubscribe(channel);\n }\n\n send(channel: string, klass: string, body: (string | number)[]): void {\n Enmasse.send(channel, klass, body);\n }\n\n async login(\n userId: string,\n timestamp: number,\n signature: string,\n ): Promise<void> {\n return new Promise((resolve, reject) => {\n Enmasse.login(userId, timestamp, signature, resolve, () => {\n reject(new Error('Login failure'));\n });\n });\n }\n\n async logout(): Promise<void> {\n Enmasse.logout();\n\n return Promise.resolve();\n }\n\n delete() {}\n}\n","/**\n * @license\n * @monterosa/sdk-connect-kit\n *\n * Copyright © 2022-2024 Monterosa Productions Limited. All rights reserved.\n *\n * More details on the license can be found at https://www.monterosa.co/sdk/license\n */\n\nimport { getSdk } from '@monterosa/sdk-core';\nimport { memoizePromise, Unsubscribe } from '@monterosa/sdk-util';\n\nimport { Connect, ConnState, Message, Klass } from './types';\nimport { onState } from './helpers';\nimport { ConnectImpl } from './connect_impl';\n\n/**\n * @internal\n */\nconst getConnectMemoized = memoizePromise(\n async (host: string): Promise<Connect> => {\n const conn = ConnectImpl.getInstance();\n\n await conn.init(host);\n\n return conn;\n },\n (host: string): string => host,\n);\n\n/**\n * Returns the {@link Connect} instance associated with the provided\n * host. If host is not provided, it returns Connect instance for\n * the host associated with the default sdk.\n *\n * @param sdk - Monterosa SDK.\n */\nfunction getConnect(host?: string): Promise<Connect> {\n if (host === undefined) {\n const sdk = getSdk();\n\n host = sdk.options.host;\n }\n\n return getConnectMemoized(host);\n}\n\n/**\n * Adds an observer for when connection state changed to connected.\n *\n * @param conn - The {@link Connect} instance\n * @param callback - The callback triggered when {@link ConnState | state}\n * changed to connected\n */\nfunction onConnected(\n conn: Connect,\n callback: (timestamp: number) => void,\n): Unsubscribe {\n return onState(conn, ConnState.Connected, callback);\n}\n\n/**\n * Adds an observer for when connection state changed to connecting.\n *\n * @param conn - The {@link Connect} instance\n * @param callback - callback triggered on connecting state. Two parameters\n * are provided: `attempt` — sequential number of connect attempt and\n * `delay` - delay in seconds before the next attempt\n */\nfunction onConnecting(\n conn: Connect,\n callback: (attempt: number, delay: number) => void,\n): Unsubscribe {\n return onState(conn, ConnState.Connecting, callback);\n}\n\n/**\n * Adds an observer for when connection state changed to disconnected.\n *\n * @param conn - The {@link Connect} instance\n * @param callback - callback triggered on disconnected state\n */\nfunction onDisconnected(conn: Connect, callback: () => void): Unsubscribe {\n return onState(conn, ConnState.Disconnected, callback);\n}\n\n/**\n * Adds an observer for when a new message received\n *\n * @example\n * ```javascript\n * const unsubscribe = onMessage(conn, (message) => {\n * console.log(message.body);\n * });\n * ```\n *\n * @param conn - The {@link Connect} instance\n * @param callback - The callback function triggered on message receive\n */\nfunction onMessage(\n conn: Connect,\n callback: (message: Message) => void,\n): Unsubscribe {\n const handler = (message: Message) => {\n callback(message);\n };\n\n conn.on('message', handler);\n\n return () => conn.off('message', handler);\n}\n\n/**\n * Starts a connection process. If connect is successful a promise resolved by\n * and {@link onConnected} is triggered, otherwise a next attempt will be\n * automatically invoked and {@link onConnecting} is triggered.\n *\n * SDK connects automatically when its created. Connection procedure can be\n * aborted by calling {@link disconnect} function and the promise is rejected.\n *\n * @example\n * ```javascript\n * try {\n * const conn = await getConnect();\n *\n * await connect(conn);\n *\n * console.log('connected!');\n * } catch (err) {\n * console.log(err)\n * }\n * ```\n *\n * State of the connection can be handled separately\n *\n * @example\n * ```javascript\n * onConnected(() => console.log('connected'));\n *\n * onConnecting((attempt, delay) => console.log('connecting'));\n *\n * onDisconnected(() => console.log('disconnected'));\n * ```\n *\n * @param conn - The {@link Connect} instance\n * @param host - Interaction Cloud Studio host.\n * Can be found in Project Settings in API tab\n */\nfunction connect(conn: Connect): Promise<void> {\n // No need to memoize this, it's already memoized\n // in the ConnectImpl class implementation\n return conn.connect();\n}\n\n/**\n * Disconnect from the server and triggers {@link onDisconnected}\n *\n * @param conn - The {@link Connect} instance\n */\nfunction disconnect(conn: Connect): void {\n conn.disconnect();\n}\n\n/**\n * @internal\n */\nconst subscribeMemoized = memoizePromise(\n async (conn: Connect, channel: string): Promise<void> =>\n conn.subscribe(channel),\n (conn: Connect, channel: string): string => channel,\n);\n\n/**\n * Subscribe to the server channel.\n *\n * Any message published to a channel is {@link onMessage | received}\n * only by subscribers to that channel. The sdk out of the box handles\n * all required subscriptions internally and {@link onMessage | handles messages}\n * so there is no need in to subscribe by developers.\n *\n * To stop receiving messages on a channel {@link unsubscribe} should be called.\n *\n * @param conn - The {@link Connect} instance\n * @param channel - Channel name\n */\nfunction subscribe(conn: Connect, channel: string): Promise<void> {\n return subscribeMemoized(conn, channel);\n}\n\n/**\n * Unsubscribe from the server channel.\n *\n * Removes subscription to the channel so that recipient no longer receive\n * messages from that channel.\n *\n * @param conn - The {@link Connect} instance\n * @param channel - Channel name\n */\nfunction unsubscribe(conn: Connect, channel: string): void {\n conn.unsubscribe(channel);\n}\n\n/**\n * Send message to the server.\n *\n * The sdk out of the box provides more high level functions that uses\n * this function to send data to the server. Though a developer still can\n * use it if he knows a message protocol (klass and body) and a channel\n * that expect the message.\n *\n * @param conn - The Connect instance\n * @param channel - Channel name. Only {@link subscribe | subscribers}\n * to that channel can send messages.\n * @param klass - Message class name.\n * @param body - Message payload\n */\nfunction send(\n conn: Connect,\n channel: string,\n klass: Klass | string,\n body: (string | number)[],\n): void {\n conn.send(channel, klass, body);\n}\n\nasync function login(\n conn: Connect,\n userId: string,\n timestamp: number,\n signature: string,\n): Promise<void> {\n const result = await conn.login(userId, timestamp, signature);\n\n return result;\n}\n\nasync function logout(conn: Connect): Promise<void> {\n const result = await conn.logout();\n\n return result;\n}\n\nexport {\n onConnected,\n onConnecting,\n onDisconnected,\n onMessage,\n disconnect,\n unsubscribe,\n send,\n getConnect,\n getConnectMemoized,\n connect,\n subscribe,\n subscribeMemoized,\n login,\n logout,\n};\n"],"names":["InitState","ConnState","Klass","Enmasse","setTimestamp","Emitter","memoizePromise","getSdk"],"mappings":"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"}
|
package/dist/index.esm.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../src/types.ts","../src/helpers.ts","../src/connect_impl.ts","../src/connect.ts"],"sourcesContent":["/**\n * @license\n * @monterosa/sdk-connect-kit\n *\n * Copyright © 2022 Monterosa Productions Limited. All rights reserved.\n *\n * More details on the license can be found at https://www.monterosa.co/sdk/license\n */\n\nimport { MonterosaKit } from '@monterosa/sdk-core';\nimport { Emitter } from '@monterosa/sdk-util';\n\n/**\n * @internal\n */\nexport const KIT_NAME = 'connect';\n\n/**\n * Interface representing Connect kit.\n */\nexport interface Connect extends MonterosaKit, Emitter {\n /**\n * Connection state\n */\n state: ConnState;\n\n /**\n * Session ID\n */\n sessionId: string | null;\n\n /**\n * @internal\n */\n initState: InitState;\n\n /**\n * @internal\n */\n init(host: string): Promise<void>;\n\n /**\n * @internal\n */\n connect(): Promise<void>;\n\n /**\n * @internal\n */\n disconnect(): void;\n\n /**\n * @internal\n */\n subscribe(channel: string): Promise<void>;\n\n /**\n * @internal\n */\n unsubscribe(channel: string): void;\n\n /**\n * @internal\n */\n send(channel: string, klass: string, body: (string | number)[]): void;\n\n login(userId: string, timestamp: number, signature: string): Promise<void>;\n\n logout(): void;\n}\n\n/**\n * @internal\n */\nexport enum InitState {\n NotInitialised = 'not_initialised',\n Initialised = 'initialised',\n Initialising = 'initialising',\n}\n\n/**\n * A list of possible connection states. Can be used with\n * {@link Connect.state} to determine the current state.\n *\n * By default {@link Connect} is in the disconnected state.\n * When {@link connect} invoked `Connect` state switches to\n * `ConnState.Connecting` and connection is maintained permanently until\n * {@link disconnect} method is invoked. If connection was unsucessful,\n * a new attempt will start after a short delay and `ConnState.connecting`\n * is triggered. Delays between attempts increased based on this sequence:\n * 0, 3, 5, 10, 20, 30, 45, 60 where 60 seconds is the max.\n *\n * If `Connect` was previously connected and for any reason connection is lost,\n * the state changed to `ConnState.Connecting` again and the connection process\n * starts again automatically.\n *\n * @example\n * ```javascript\n * if (conn.state === ConnState.Connecting) {\n * // display \"connecting\" message\n * }\n * ```\n */\nexport enum ConnState {\n /**\n * Disconnected state\n */\n Disconnected = 'disconnected',\n /**\n * Connecting state\n */\n Connecting = 'connecting',\n /**\n * Connected state\n */\n Connected = 'connected',\n}\n\n/**\n * Class of the {@link Message}\n */\nexport enum Klass {\n /**\n * Authentication request. Sent by server on client connection.\n */\n Authenticate = 'auth',\n /**\n * Authentication response. Sent by client as response\n * to authentication request.\n */\n AuthenticateResponse = 'authr',\n /**\n * Authentication acknowledgement. Sent by the server as confirmation\n * of successful authentication.\n */\n AuthenticateSuccess = 'authok',\n /**\n * Ping message is sent by server periodically as a keep-alive.\n * Ping message is only sent if no messages are sent for specific time\n * period, meaning if there are other messages sent frequently enough\n * then ping messages are not sent at all.\n */\n Ping = 'ping',\n /**\n * Subscribe to a channel. Sent by the client to subscribe to a channel\n */\n Subscribe = 'sub',\n /**\n * Unsubscribe from a channel. Sent by the client to unsubscribe from a channel\n */\n Unsububscribe = 'unsub',\n /**\n * End of cache. Sent by the server to notify that all messages are sent from\n * a channel cache\n */\n EndOfCache = 'eoc',\n /**\n * User login. Sent by client to supply verified user identity to the server.\n */\n Login = 'login',\n /**\n * User login success\n */\n LoginSuccess = 'login_ok',\n /**\n * User login failure\n */\n LoginFail = 'login_fail',\n /**\n * Averages counters. Client can submit a counter which is processed together\n * with other counters to determine the average of all counters within specific\n * demographics segment.\n */\n Counter = 'counter',\n /**\n * Client votes. Sents by a user to vote for a poll option\n */\n Vote = 'v',\n}\n\n/**\n * A Message to be sent to the Monterosa / Interaction Cloud\n */\nexport interface Message {\n /**\n * The channel id on which this message was received. It s required to be\n * {@link subscribe} to that channel in order to start receiving\n * messages\n */\n channel: string;\n /**\n * The class indicates the desired action to be performed or the result of\n * the action. E.g. in order to authenticate a developer should {@link send}\n * {@link Klass.AuthenticateResponse} klass message as a response on\n * a received {@link Klass.Authenticate} message\n */\n klass: Klass | string;\n /**\n * The timestamp (in seconds) when this message was sent\n */\n sent_at: number;\n /**\n * The message payload. Each peace of data is a `string`\n */\n body: string[];\n}\n","/**\n * @license\n * @monterosa/sdk-connect-kit\n *\n * Copyright © 2022 Monterosa Productions Limited. All rights reserved.\n *\n * More details on the license can be found at https://www.monterosa.co/sdk/license\n */\n\nimport { Unsubscribe } from '@monterosa/sdk-util';\n\nimport { Connect, ConnState } from './types';\n\nexport function onState(\n conn: Connect,\n needle: ConnState,\n callback: Function,\n): Unsubscribe {\n const handler = (state: ConnState, ...rest: unknown[]) => {\n if (state === needle) {\n callback(...rest);\n }\n };\n\n conn.on('state', handler);\n\n return () => conn.off('state', handler);\n}\n","/* eslint class-methods-use-this: \"off\" */\n\n/**\n * @license\n * @monterosa/sdk-connect-kit\n *\n * Copyright © 2022 Monterosa Productions Limited. All rights reserved.\n *\n * More details on the license can be found at https://www.monterosa.co/sdk/license\n */\n\nimport Enmasse from '@monterosa/sdk-enmasse-kit';\nimport { Emitter, setTimestamp } from '@monterosa/sdk-util';\n\nimport { Connect, ConnState, InitState, Message } from './types';\n\n/**\n * @internal\n */\nexport class ConnectImpl extends Emitter implements Connect {\n private static instance: ConnectImpl;\n public initState: InitState = InitState.NotInitialised;\n private initPromise: Promise<void> = Promise.resolve();\n private connectPromise: Promise<void> | null = null;\n\n private constructor() {\n super();\n\n Enmasse.bind(\n Enmasse.ON_STATE,\n (state: Enmasse.States, ...rest: unknown[]) => {\n if (state === Enmasse.STATE_CONNECTED) {\n const [timestamp] = rest as [number];\n\n setTimestamp(timestamp);\n }\n\n this.emit('state', ConnectImpl.toConnState(state), ...rest);\n },\n );\n\n Enmasse.bind(Enmasse.ON_MESSAGE, (message: Enmasse.Message) => {\n this.emit('message', <Message>message);\n });\n }\n\n get state() {\n return ConnectImpl.toConnState(Enmasse.getState());\n }\n\n get sessionId() {\n return Enmasse.getSessionId();\n }\n\n public static getInstance(): ConnectImpl {\n if (!ConnectImpl.instance) {\n ConnectImpl.instance = new ConnectImpl();\n }\n\n return ConnectImpl.instance;\n }\n\n static toConnState(state: Enmasse.States): ConnState {\n switch (state) {\n default:\n case Enmasse.STATE_DISCONNECTED:\n return ConnState.Disconnected;\n case Enmasse.STATE_CONNECTING:\n return ConnState.Connecting;\n case Enmasse.STATE_CONNECTED:\n return ConnState.Connected;\n }\n }\n\n async init(host: string): Promise<void> {\n if (\n this.initState === InitState.Initialising ||\n this.initState === InitState.Initialised\n ) {\n return this.initPromise;\n }\n\n this.initPromise = new Promise((resolve, reject) => {\n this.initState = InitState.Initialising;\n\n Enmasse.bind(Enmasse.ON_READY, () => {\n this.initState = InitState.Initialised;\n\n Enmasse.unbind(Enmasse.ON_READY);\n Enmasse.unbind(Enmasse.ON_ERROR);\n\n resolve();\n });\n\n Enmasse.bind(Enmasse.ON_ERROR, (err: string) => {\n this.initState = InitState.NotInitialised;\n\n Enmasse.unbind(Enmasse.ON_READY);\n Enmasse.unbind(Enmasse.ON_ERROR);\n\n reject(new Error(`Unable to initialise connect kit: ${err}`));\n });\n\n Enmasse.init({\n config: `https://${host}/config/enmasse.json`,\n });\n });\n\n return this.initPromise;\n }\n\n connect(): Promise<void> {\n if (this.initState !== InitState.Initialised) {\n return Promise.reject(new Error('must be initialised before connecting'));\n }\n\n if (this.state === ConnState.Connected) {\n return Promise.resolve();\n }\n\n if (this.state === ConnState.Connecting) {\n if (this.connectPromise) {\n return this.connectPromise;\n }\n\n // This should never happen - indicates a bug in state management\n return Promise.reject(\n new Error(\n 'BUG: Connection state is Connecting but connectPromise is null — ' +\n 'this indicates an internal inconsistency',\n ),\n );\n }\n\n this.connectPromise = new Promise((resolve, reject) => {\n const handler = (state: ConnState) => {\n switch (state) {\n case ConnState.Connected:\n Enmasse.unbind(Enmasse.ON_STATE, handler);\n\n this.connectPromise = null;\n\n resolve();\n break;\n case ConnState.Disconnected:\n Enmasse.unbind(Enmasse.ON_STATE, handler);\n\n this.connectPromise = null;\n\n reject(new Error('disconnected'));\n break;\n case ConnState.Connecting:\n // The Enmasse library may emit the \"connecting\" state multiple\n // times. This is expected and does not impact the connection\n // process, so we safely ignore it.\n break;\n }\n };\n\n Enmasse.bind(Enmasse.ON_STATE, handler);\n\n Enmasse.connect();\n });\n\n return this.connectPromise;\n }\n\n disconnect() {\n Enmasse.disconnect();\n }\n\n subscribe(channel: string): Promise<void> {\n return new Promise((resolve) => {\n const handler = (ch: string) => {\n if (ch !== channel) return;\n\n Enmasse.unbind(Enmasse.ON_EOC, handler);\n\n resolve();\n };\n\n Enmasse.bind(Enmasse.ON_EOC, handler);\n\n Enmasse.subscribe(channel);\n });\n }\n\n unsubscribe(channel: string): void {\n Enmasse.unsubscribe(channel);\n }\n\n send(channel: string, klass: string, body: (string | number)[]): void {\n Enmasse.send(channel, klass, body);\n }\n\n async login(\n userId: string,\n timestamp: number,\n signature: string,\n ): Promise<void> {\n return new Promise((resolve, reject) => {\n Enmasse.login(userId, timestamp, signature, resolve, () => {\n reject(new Error('Login failure'));\n });\n });\n }\n\n async logout(): Promise<void> {\n Enmasse.logout();\n\n return Promise.resolve();\n }\n\n delete() {}\n}\n","/**\n * @license\n * @monterosa/sdk-connect-kit\n *\n * Copyright © 2022-2024 Monterosa Productions Limited. All rights reserved.\n *\n * More details on the license can be found at https://www.monterosa.co/sdk/license\n */\n\nimport { getSdk } from '@monterosa/sdk-core';\nimport { memoizePromise, Unsubscribe } from '@monterosa/sdk-util';\n\nimport { Connect, ConnState, Message, Klass } from './types';\nimport { onState } from './helpers';\nimport { ConnectImpl } from './connect_impl';\n\n/**\n * @internal\n */\nconst getConnectMemoized = memoizePromise(\n async (host: string): Promise<Connect> => {\n const conn = ConnectImpl.getInstance();\n\n await conn.init(host);\n\n return conn;\n },\n (host: string): string => host,\n);\n\n/**\n * Returns the {@link Connect} instance associated with the provided\n * host. If host is not provided, it returns Connect instance for\n * the host associated with the default sdk.\n *\n * @param sdk - Monterosa SDK.\n */\nfunction getConnect(host?: string): Promise<Connect> {\n if (host === undefined) {\n const sdk = getSdk();\n\n host = sdk.options.host;\n }\n\n return getConnectMemoized(host);\n}\n\n/**\n * Adds an observer for when connection state changed to connected.\n *\n * @param conn - The {@link Connect} instance\n * @param callback - The callback triggered when {@link ConnState | state}\n * changed to connected\n */\nfunction onConnected(\n conn: Connect,\n callback: (timestamp: number) => void,\n): Unsubscribe {\n return onState(conn, ConnState.Connected, callback);\n}\n\n/**\n * Adds an observer for when connection state changed to connecting.\n *\n * @param conn - The {@link Connect} instance\n * @param callback - callback triggered on connecting state. Two parameters\n * are provided: `attempt` — sequential number of connect attempt and\n * `delay` - delay in seconds before the next attempt\n */\nfunction onConnecting(\n conn: Connect,\n callback: (attempt: number, delay: number) => void,\n): Unsubscribe {\n return onState(conn, ConnState.Connecting, callback);\n}\n\n/**\n * Adds an observer for when connection state changed to disconnected.\n *\n * @param conn - The {@link Connect} instance\n * @param callback - callback triggered on disconnected state\n */\nfunction onDisconnected(conn: Connect, callback: () => void): Unsubscribe {\n return onState(conn, ConnState.Disconnected, callback);\n}\n\n/**\n * Adds an observer for when a new message received\n *\n * @example\n * ```javascript\n * const unsubscribe = onMessage(conn, (message) => {\n * console.log(message.body);\n * });\n * ```\n *\n * @param conn - The {@link Connect} instance\n * @param callback - The callback function triggered on message receive\n */\nfunction onMessage(\n conn: Connect,\n callback: (message: Message) => void,\n): Unsubscribe {\n const handler = (message: Message) => {\n callback(message);\n };\n\n conn.on('message', handler);\n\n return () => conn.off('message', handler);\n}\n\n/**\n * Starts a connection process. If connect is successful a promise resolved by\n * and {@link onConnected} is triggered, otherwise a next attempt will be\n * automatically invoked and {@link onConnecting} is triggered.\n *\n * SDK connects automatically when its created. Connection procedure can be\n * aborted by calling {@link disconnect} function and the promise is rejected.\n *\n * @example\n * ```javascript\n * try {\n * const conn = await getConnect();\n *\n * await connect(conn);\n *\n * console.log('connected!');\n * } catch (err) {\n * console.log(err)\n * }\n * ```\n *\n * State of the connection can be handled separately\n *\n * @example\n * ```javascript\n * onConnected(() => console.log('connected'));\n *\n * onConnecting((attempt, delay) => console.log('connecting'));\n *\n * onDisconnected(() => console.log('disconnected'));\n * ```\n *\n * @param conn - The {@link Connect} instance\n * @param host - Interaction Cloud Studio host.\n * Can be found in Project Settings in API tab\n */\nfunction connect(conn: Connect): Promise<void> {\n // No need to memoize this, it's already memoized\n // in the ConnectImpl class implementation\n return conn.connect();\n}\n\n/**\n * Disconnect from the server and triggers {@link onDisconnected}\n *\n * @param conn - The {@link Connect} instance\n */\nfunction disconnect(conn: Connect): void {\n conn.disconnect();\n}\n\n/**\n * @internal\n */\nconst subscribeMemoized = memoizePromise(\n async (conn: Connect, channel: string): Promise<void> =>\n conn.subscribe(channel),\n (conn: Connect, channel: string): string => channel,\n);\n\n/**\n * Subscribe to the server channel.\n *\n * Any message published to a channel is {@link onMessage | received}\n * only by subscribers to that channel. The sdk out of the box handles\n * all required subscriptions internally and {@link onMessage | handles messages}\n * so there is no need in to subscribe by developers.\n *\n * To stop receiving messages on a channel {@link unsubscribe} should be called.\n *\n * @param conn - The {@link Connect} instance\n * @param channel - Channel name\n */\nfunction subscribe(conn: Connect, channel: string): Promise<void> {\n return subscribeMemoized(conn, channel);\n}\n\n/**\n * Unsubscribe from the server channel.\n *\n * Removes subscription to the channel so that recipient no longer receive\n * messages from that channel.\n *\n * @param conn - The {@link Connect} instance\n * @param channel - Channel name\n */\nfunction unsubscribe(conn: Connect, channel: string): void {\n conn.unsubscribe(channel);\n}\n\n/**\n * Send message to the server.\n *\n * The sdk out of the box provides more high level functions that uses\n * this function to send data to the server. Though a developer still can\n * use it if he knows a message protocol (klass and body) and a channel\n * that expect the message.\n *\n * @param conn - The Connect instance\n * @param channel - Channel name. Only {@link subscribe | subscribers}\n * to that channel can send messages.\n * @param klass - Message class name.\n * @param body - Message payload\n */\nfunction send(\n conn: Connect,\n channel: string,\n klass: Klass | string,\n body: (string | number)[],\n): void {\n conn.send(channel, klass, body);\n}\n\nasync function login(\n conn: Connect,\n userId: string,\n timestamp: number,\n signature: string,\n): Promise<void> {\n const result = await conn.login(userId, timestamp, signature);\n\n return result;\n}\n\nasync function logout(conn: Connect): Promise<void> {\n const result = await conn.logout();\n\n return result;\n}\n\nexport {\n onConnected,\n onConnecting,\n onDisconnected,\n onMessage,\n disconnect,\n unsubscribe,\n send,\n getConnect,\n getConnectMemoized,\n connect,\n subscribe,\n subscribeMemoized,\n login,\n logout,\n};\n"],"names":[],"mappings":"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"}
|