@stomp/stompjs 6.1.2 → 7.0.0-beta2

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.
Files changed (59) hide show
  1. package/bundles/stomp.umd.js +1724 -2023
  2. package/bundles/stomp.umd.js.map +1 -1
  3. package/bundles/stomp.umd.min.js +1 -2
  4. package/esm6/augment-websocket.d.ts +1 -1
  5. package/esm6/augment-websocket.js +4 -3
  6. package/esm6/augment-websocket.js.map +1 -1
  7. package/esm6/client.d.ts +35 -19
  8. package/esm6/client.js +176 -132
  9. package/esm6/client.js.map +1 -1
  10. package/esm6/compatibility/compat-client.d.ts +29 -23
  11. package/esm6/compatibility/compat-client.js +2 -2
  12. package/esm6/compatibility/compat-client.js.map +1 -1
  13. package/esm6/compatibility/heartbeat-info.d.ts +5 -3
  14. package/esm6/compatibility/stomp.d.ts +1 -1
  15. package/esm6/compatibility/stomp.js +2 -2
  16. package/esm6/compatibility/stomp.js.map +1 -1
  17. package/esm6/frame-impl.d.ts +5 -5
  18. package/esm6/frame-impl.js +3 -2
  19. package/esm6/frame-impl.js.map +1 -1
  20. package/esm6/i-frame.d.ts +1 -1
  21. package/esm6/i-frame.js +1 -0
  22. package/esm6/i-message.d.ts +2 -2
  23. package/esm6/i-message.js +1 -0
  24. package/esm6/i-transaction.js +1 -0
  25. package/esm6/index.d.ts +13 -13
  26. package/esm6/index.js +13 -10
  27. package/esm6/index.js.map +1 -1
  28. package/esm6/parser.d.ts +1 -1
  29. package/esm6/parser.js +10 -2
  30. package/esm6/parser.js.map +1 -1
  31. package/esm6/stomp-config.d.ts +3 -3
  32. package/esm6/stomp-handler.d.ts +10 -13
  33. package/esm6/stomp-handler.js +35 -17
  34. package/esm6/stomp-handler.js.map +1 -1
  35. package/esm6/stomp-subscription.d.ts +2 -2
  36. package/esm6/stomp-subscription.js +1 -7
  37. package/esm6/stomp-subscription.js.map +1 -1
  38. package/esm6/types.d.ts +31 -5
  39. package/esm6/types.js +2 -2
  40. package/esm6/types.js.map +1 -1
  41. package/esm6/versions.js +2 -2
  42. package/index.d.ts +1 -1
  43. package/package.json +28 -25
  44. package/src/augment-websocket.ts +5 -4
  45. package/src/client.ts +81 -35
  46. package/src/compatibility/compat-client.ts +4 -4
  47. package/src/compatibility/heartbeat-info.ts +1 -1
  48. package/src/compatibility/stomp.ts +3 -3
  49. package/src/frame-impl.ts +14 -10
  50. package/src/i-frame.ts +1 -1
  51. package/src/i-message.ts +2 -2
  52. package/src/index.ts +13 -13
  53. package/src/parser.ts +18 -6
  54. package/src/stomp-config.ts +3 -3
  55. package/src/stomp-handler.ts +47 -31
  56. package/src/stomp-subscription.ts +4 -4
  57. package/src/types.ts +32 -5
  58. package/src/versions.ts +2 -2
  59. package/bundles/stomp.umd.min.js.map +0 -1
package/esm6/client.d.ts CHANGED
@@ -1,9 +1,9 @@
1
- import { ITransaction } from './i-transaction';
2
- import { StompConfig } from './stomp-config';
3
- import { StompHeaders } from './stomp-headers';
4
- import { StompSubscription } from './stomp-subscription';
5
- import { ActivationState, closeEventCallbackType, debugFnType, frameCallbackType, IPublishParams, IStompSocket, messageCallbackType, wsErrorCallbackType } from './types';
6
- import { Versions } from './versions';
1
+ import { ITransaction } from './i-transaction.js';
2
+ import { StompConfig } from './stomp-config.js';
3
+ import { StompHeaders } from './stomp-headers.js';
4
+ import { StompSubscription } from './stomp-subscription.js';
5
+ import { ActivationState, closeEventCallbackType, debugFnType, frameCallbackType, IPublishParams, IStompSocket, messageCallbackType, wsErrorCallbackType } from './types.js';
6
+ import { Versions } from './versions.js';
7
7
  /**
8
8
  * STOMP Client Class.
9
9
  *
@@ -20,7 +20,7 @@ export declare class Client {
20
20
  * If your environment does not support WebSockets natively, please refer to
21
21
  * [Polyfills]{@link https://stomp-js.github.io/guide/stompjs/rx-stomp/ng2-stompjs/pollyfils-for-stompjs-v5.html}.
22
22
  */
23
- brokerURL: string;
23
+ brokerURL: string | undefined;
24
24
  /**
25
25
  * STOMP versions to attempt during STOMP handshake. By default versions `1.0`, `1.1`, and `1.2` are attempted.
26
26
  *
@@ -52,7 +52,7 @@ export declare class Client {
52
52
  * };
53
53
  * ```
54
54
  */
55
- webSocketFactory: () => IStompSocket;
55
+ webSocketFactory: (() => IStompSocket) | undefined;
56
56
  /**
57
57
  * Will retry if Stomp connection is not established in specified milliseconds.
58
58
  * Default 0, which implies wait for ever.
@@ -113,7 +113,7 @@ export declare class Client {
113
113
  /**
114
114
  * Underlying WebSocket instance, READONLY.
115
115
  */
116
- readonly webSocket: IStompSocket;
116
+ get webSocket(): IStompSocket | undefined;
117
117
  /**
118
118
  * Connection headers, important keys - `login`, `passcode`, `host`.
119
119
  * Though STOMP 1.2 standard marks these keys to be present, check your broker documentation for
@@ -123,7 +123,8 @@ export declare class Client {
123
123
  /**
124
124
  * Disconnection headers.
125
125
  */
126
- disconnectHeaders: StompHeaders;
126
+ get disconnectHeaders(): StompHeaders;
127
+ set disconnectHeaders(value: StompHeaders);
127
128
  private _disconnectHeaders;
128
129
  /**
129
130
  * This function will be called for any unhandled messages.
@@ -153,7 +154,7 @@ export declare class Client {
153
154
  /**
154
155
  * `true` if there is a active connection with STOMP Broker
155
156
  */
156
- readonly connected: boolean;
157
+ get connected(): boolean;
157
158
  /**
158
159
  * Callback, invoked on before a connection connection to the STOMP broker.
159
160
  *
@@ -242,12 +243,12 @@ export declare class Client {
242
243
  /**
243
244
  * version of STOMP protocol negotiated with the server, READONLY
244
245
  */
245
- readonly connectedVersion: string;
246
+ get connectedVersion(): string | undefined;
246
247
  private _stompHandler;
247
248
  /**
248
249
  * if the client is active (connected or going to reconnect)
249
250
  */
250
- readonly active: boolean;
251
+ get active(): boolean;
251
252
  /**
252
253
  * It will be called on state change.
253
254
  *
@@ -255,7 +256,6 @@ export declare class Client {
255
256
  */
256
257
  onChangeState: (state: ActivationState) => void;
257
258
  private _changeState;
258
- private _resolveSocketClose;
259
259
  /**
260
260
  * Activation state.
261
261
  *
@@ -285,14 +285,29 @@ export declare class Client {
285
285
  private _schedule_reconnect;
286
286
  /**
287
287
  * Disconnect if connected and stop auto reconnect loop.
288
- * Appropriate callbacks will be invoked if underlying STOMP connection was connected.
288
+ * Appropriate callbacks will be invoked if there is an underlying STOMP connection.
289
289
  *
290
- * This call is async, it will resolve immediately if there is no underlying active websocket,
291
- * otherwise, it will resolve after underlying websocket is properly disposed.
290
+ * This call is async. It will resolve immediately if there is no underlying active websocket,
291
+ * otherwise, it will resolve after the underlying websocket is properly disposed of.
292
292
  *
293
- * To reactivate you can call [Client#activate]{@link Client#activate}.
293
+ * It is not an error to invoke this method more than once.
294
+ * Each of those would resolve on completion of deactivation.
295
+ *
296
+ * To reactivate, you can call [Client#activate]{@link Client#activate}.
297
+ *
298
+ * Experimental: pass `force: true` to immediately discard the underlying connection.
299
+ * This mode will skip both the STOMP and the Websocket shutdown sequences.
300
+ * In some cases, browsers take a long time in the Websocket shutdown if the underlying connection had gone stale.
301
+ * Using this mode can speed up.
302
+ * When this mode is used, the actual Websocket may linger for a while
303
+ * and the broker may not realize that the connection is no longer in use.
304
+ *
305
+ * It is possible to invoke this method initially without the `force` option
306
+ * and subsequently, say after a wait, with the `force` option.
294
307
  */
295
- deactivate(): Promise<void>;
308
+ deactivate(options?: {
309
+ force?: boolean;
310
+ }): Promise<void>;
296
311
  /**
297
312
  * Force disconnect if there is an active connection by directly closing the underlying WebSocket.
298
313
  * This is different than a normal disconnect where a DISCONNECT sequence is carried out with the broker.
@@ -338,6 +353,7 @@ export declare class Client {
338
353
  * ```
339
354
  */
340
355
  publish(params: IPublishParams): void;
356
+ private _checkConnection;
341
357
  /**
342
358
  * STOMP brokers may carry out operation asynchronously and allow requesting for acknowledgement.
343
359
  * To request an acknowledgement, a `receipt` header needs to be sent with the actual request.
package/esm6/client.js CHANGED
@@ -1,15 +1,6 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
- import { StompHandler } from './stomp-handler';
11
- import { ActivationState, StompSocketState, } from './types';
12
- import { Versions } from './versions';
1
+ import { StompHandler } from './stomp-handler.js';
2
+ import { ActivationState, StompSocketState, } from './types.js';
3
+ import { Versions } from './versions.js';
13
4
  /**
14
5
  * STOMP Client Class.
15
6
  *
@@ -86,6 +77,13 @@ export class Client {
86
77
  * This is not an ideal solution, but a stop gap until the underlying issue is fixed at ReactNative library.
87
78
  */
88
79
  this.appendMissingNULLonIncoming = false;
80
+ /**
81
+ * Browsers do not immediately close WebSockets when `.close` is issued.
82
+ * This may cause reconnection to take a longer on certain type of failures.
83
+ * In case of incoming heartbeat failure, this experimental flag instructs the library
84
+ * to discard the socket immediately (even before it is actually closed).
85
+ */
86
+ this.discardWebsocketOnCommFailure = false;
89
87
  /**
90
88
  * Activation state.
91
89
  *
@@ -117,7 +115,7 @@ export class Client {
117
115
  * Underlying WebSocket instance, READONLY.
118
116
  */
119
117
  get webSocket() {
120
- return this._stompHandler ? this._stompHandler._webSocket : undefined;
118
+ return this._stompHandler?._webSocket;
121
119
  }
122
120
  /**
123
121
  * Disconnection headers.
@@ -179,107 +177,106 @@ export class Client {
179
177
  this._changeState(ActivationState.ACTIVE);
180
178
  this._connect();
181
179
  }
182
- _connect() {
183
- return __awaiter(this, void 0, void 0, function* () {
184
- if (this.connected) {
185
- this.debug('STOMP: already connected, nothing to do');
186
- return;
187
- }
188
- yield this.beforeConnect();
189
- if (!this.active) {
190
- this.debug('Client has been marked inactive, will not attempt to connect');
191
- return;
180
+ async _connect() {
181
+ if (this.connected) {
182
+ this.debug('STOMP: already connected, nothing to do');
183
+ return;
184
+ }
185
+ await this.beforeConnect();
186
+ if (!this.active) {
187
+ this.debug('Client has been marked inactive, will not attempt to connect');
188
+ return;
189
+ }
190
+ // setup connection watcher
191
+ if (this.connectionTimeout > 0) {
192
+ // clear first
193
+ if (this._connectionWatcher) {
194
+ clearTimeout(this._connectionWatcher);
192
195
  }
193
- // setup connection watcher
194
- if (this.connectionTimeout > 0) {
195
- // clear first
196
+ this._connectionWatcher = setTimeout(() => {
197
+ if (this.connected) {
198
+ return;
199
+ }
200
+ // Connection not established, close the underlying socket
201
+ // a reconnection will be attempted
202
+ this.debug(`Connection not established in ${this.connectionTimeout}ms, closing socket`);
203
+ this.forceDisconnect();
204
+ }, this.connectionTimeout);
205
+ }
206
+ this.debug('Opening Web Socket...');
207
+ // Get the actual WebSocket (or a similar object)
208
+ const webSocket = this._createWebSocket();
209
+ this._stompHandler = new StompHandler(this, webSocket, {
210
+ debug: this.debug,
211
+ stompVersions: this.stompVersions,
212
+ connectHeaders: this.connectHeaders,
213
+ disconnectHeaders: this._disconnectHeaders,
214
+ heartbeatIncoming: this.heartbeatIncoming,
215
+ heartbeatOutgoing: this.heartbeatOutgoing,
216
+ splitLargeFrames: this.splitLargeFrames,
217
+ maxWebSocketChunkSize: this.maxWebSocketChunkSize,
218
+ forceBinaryWSFrames: this.forceBinaryWSFrames,
219
+ logRawCommunication: this.logRawCommunication,
220
+ appendMissingNULLonIncoming: this.appendMissingNULLonIncoming,
221
+ discardWebsocketOnCommFailure: this.discardWebsocketOnCommFailure,
222
+ onConnect: frame => {
223
+ // Successfully connected, stop the connection watcher
196
224
  if (this._connectionWatcher) {
197
225
  clearTimeout(this._connectionWatcher);
226
+ this._connectionWatcher = undefined;
198
227
  }
199
- this._connectionWatcher = setTimeout(() => {
200
- if (this.connected) {
201
- return;
202
- }
203
- // Connection not established, close the underlying socket
204
- // a reconnection will be attempted
205
- this.debug(`Connection not established in ${this.connectionTimeout}ms, closing socket`);
206
- this.forceDisconnect();
207
- }, this.connectionTimeout);
208
- }
209
- this.debug('Opening Web Socket...');
210
- // Get the actual WebSocket (or a similar object)
211
- const webSocket = this._createWebSocket();
212
- this._stompHandler = new StompHandler(this, webSocket, {
213
- debug: this.debug,
214
- stompVersions: this.stompVersions,
215
- connectHeaders: this.connectHeaders,
216
- disconnectHeaders: this._disconnectHeaders,
217
- heartbeatIncoming: this.heartbeatIncoming,
218
- heartbeatOutgoing: this.heartbeatOutgoing,
219
- splitLargeFrames: this.splitLargeFrames,
220
- maxWebSocketChunkSize: this.maxWebSocketChunkSize,
221
- forceBinaryWSFrames: this.forceBinaryWSFrames,
222
- logRawCommunication: this.logRawCommunication,
223
- appendMissingNULLonIncoming: this.appendMissingNULLonIncoming,
224
- discardWebsocketOnCommFailure: this.discardWebsocketOnCommFailure,
225
- onConnect: frame => {
226
- // Successfully connected, stop the connection watcher
227
- if (this._connectionWatcher) {
228
- clearTimeout(this._connectionWatcher);
229
- this._connectionWatcher = undefined;
230
- }
231
- if (!this.active) {
232
- this.debug('STOMP got connected while deactivate was issued, will disconnect now');
233
- this._disposeStompHandler();
234
- return;
235
- }
236
- this.onConnect(frame);
237
- },
238
- onDisconnect: frame => {
239
- this.onDisconnect(frame);
240
- },
241
- onStompError: frame => {
242
- this.onStompError(frame);
243
- },
244
- onWebSocketClose: evt => {
245
- this._stompHandler = undefined; // a new one will be created in case of a reconnect
246
- if (this.state === ActivationState.DEACTIVATING) {
247
- // Mark deactivation complete
248
- this._resolveSocketClose();
249
- this._resolveSocketClose = undefined;
250
- this._changeState(ActivationState.INACTIVE);
251
- }
252
- this.onWebSocketClose(evt);
253
- // The callback is called before attempting to reconnect, this would allow the client
254
- // to be `deactivated` in the callback.
255
- if (this.active) {
256
- this._schedule_reconnect();
257
- }
258
- },
259
- onWebSocketError: evt => {
260
- this.onWebSocketError(evt);
261
- },
262
- onUnhandledMessage: message => {
263
- this.onUnhandledMessage(message);
264
- },
265
- onUnhandledReceipt: frame => {
266
- this.onUnhandledReceipt(frame);
267
- },
268
- onUnhandledFrame: frame => {
269
- this.onUnhandledFrame(frame);
270
- },
271
- });
272
- this._stompHandler.start();
228
+ if (!this.active) {
229
+ this.debug('STOMP got connected while deactivate was issued, will disconnect now');
230
+ this._disposeStompHandler();
231
+ return;
232
+ }
233
+ this.onConnect(frame);
234
+ },
235
+ onDisconnect: frame => {
236
+ this.onDisconnect(frame);
237
+ },
238
+ onStompError: frame => {
239
+ this.onStompError(frame);
240
+ },
241
+ onWebSocketClose: evt => {
242
+ this._stompHandler = undefined; // a new one will be created in case of a reconnect
243
+ if (this.state === ActivationState.DEACTIVATING) {
244
+ // Mark deactivation complete
245
+ this._changeState(ActivationState.INACTIVE);
246
+ }
247
+ // The callback is called before attempting to reconnect, this would allow the client
248
+ // to be `deactivated` in the callback.
249
+ this.onWebSocketClose(evt);
250
+ if (this.active) {
251
+ this._schedule_reconnect();
252
+ }
253
+ },
254
+ onWebSocketError: evt => {
255
+ this.onWebSocketError(evt);
256
+ },
257
+ onUnhandledMessage: message => {
258
+ this.onUnhandledMessage(message);
259
+ },
260
+ onUnhandledReceipt: frame => {
261
+ this.onUnhandledReceipt(frame);
262
+ },
263
+ onUnhandledFrame: frame => {
264
+ this.onUnhandledFrame(frame);
265
+ },
273
266
  });
267
+ this._stompHandler.start();
274
268
  }
275
269
  _createWebSocket() {
276
270
  let webSocket;
277
271
  if (this.webSocketFactory) {
278
272
  webSocket = this.webSocketFactory();
279
273
  }
280
- else {
274
+ else if (this.brokerURL) {
281
275
  webSocket = new WebSocket(this.brokerURL, this.stompVersions.protocolVersions());
282
276
  }
277
+ else {
278
+ throw new Error('Either brokerURL or webSocketFactory must be provided');
279
+ }
283
280
  webSocket.binaryType = 'arraybuffer';
284
281
  return webSocket;
285
282
  }
@@ -293,40 +290,65 @@ export class Client {
293
290
  }
294
291
  /**
295
292
  * Disconnect if connected and stop auto reconnect loop.
296
- * Appropriate callbacks will be invoked if underlying STOMP connection was connected.
293
+ * Appropriate callbacks will be invoked if there is an underlying STOMP connection.
294
+ *
295
+ * This call is async. It will resolve immediately if there is no underlying active websocket,
296
+ * otherwise, it will resolve after the underlying websocket is properly disposed of.
297
297
  *
298
- * This call is async, it will resolve immediately if there is no underlying active websocket,
299
- * otherwise, it will resolve after underlying websocket is properly disposed.
298
+ * It is not an error to invoke this method more than once.
299
+ * Each of those would resolve on completion of deactivation.
300
300
  *
301
- * To reactivate you can call [Client#activate]{@link Client#activate}.
301
+ * To reactivate, you can call [Client#activate]{@link Client#activate}.
302
+ *
303
+ * Experimental: pass `force: true` to immediately discard the underlying connection.
304
+ * This mode will skip both the STOMP and the Websocket shutdown sequences.
305
+ * In some cases, browsers take a long time in the Websocket shutdown if the underlying connection had gone stale.
306
+ * Using this mode can speed up.
307
+ * When this mode is used, the actual Websocket may linger for a while
308
+ * and the broker may not realize that the connection is no longer in use.
309
+ *
310
+ * It is possible to invoke this method initially without the `force` option
311
+ * and subsequently, say after a wait, with the `force` option.
302
312
  */
303
- deactivate() {
304
- return __awaiter(this, void 0, void 0, function* () {
305
- let retPromise;
306
- if (this.state !== ActivationState.ACTIVE) {
307
- this.debug(`Already ${ActivationState[this.state]}, ignoring call to deactivate`);
308
- return Promise.resolve();
309
- }
310
- this._changeState(ActivationState.DEACTIVATING);
311
- // Clear if a reconnection was scheduled
312
- if (this._reconnector) {
313
- clearTimeout(this._reconnector);
314
- }
315
- if (this._stompHandler &&
316
- this.webSocket.readyState !== StompSocketState.CLOSED) {
317
- // we need to wait for underlying websocket to close
318
- retPromise = new Promise((resolve, reject) => {
319
- this._resolveSocketClose = resolve;
320
- });
321
- }
322
- else {
323
- // indicate that auto reconnect loop should terminate
324
- this._changeState(ActivationState.INACTIVE);
325
- return Promise.resolve();
326
- }
313
+ async deactivate(options = {}) {
314
+ const force = options.force || false;
315
+ const needToDispose = this.active;
316
+ let retPromise;
317
+ if (this.state === ActivationState.INACTIVE) {
318
+ this.debug(`Already INACTIVE, nothing more to do`);
319
+ return Promise.resolve();
320
+ }
321
+ this._changeState(ActivationState.DEACTIVATING);
322
+ // Clear if a reconnection was scheduled
323
+ if (this._reconnector) {
324
+ clearTimeout(this._reconnector);
325
+ this._reconnector = undefined;
326
+ }
327
+ if (this._stompHandler &&
328
+ // @ts-ignore - if there is a _stompHandler, there is the webSocket
329
+ this.webSocket.readyState !== StompSocketState.CLOSED) {
330
+ const origOnWebSocketClose = this._stompHandler.onWebSocketClose;
331
+ // we need to wait for the underlying websocket to close
332
+ retPromise = new Promise((resolve, reject) => {
333
+ // @ts-ignore - there is a _stompHandler
334
+ this._stompHandler.onWebSocketClose = evt => {
335
+ origOnWebSocketClose(evt);
336
+ resolve();
337
+ };
338
+ });
339
+ }
340
+ else {
341
+ // indicate that auto reconnect loop should terminate
342
+ this._changeState(ActivationState.INACTIVE);
343
+ return Promise.resolve();
344
+ }
345
+ if (force) {
346
+ this._stompHandler?.discardWebsocket();
347
+ }
348
+ else if (needToDispose) {
327
349
  this._disposeStompHandler();
328
- return retPromise;
329
- });
350
+ }
351
+ return retPromise;
330
352
  }
331
353
  /**
332
354
  * Force disconnect if there is an active connection by directly closing the underlying WebSocket.
@@ -343,7 +365,6 @@ export class Client {
343
365
  // Dispose STOMP Handler
344
366
  if (this._stompHandler) {
345
367
  this._stompHandler.dispose();
346
- this._stompHandler = null;
347
368
  }
348
369
  }
349
370
  /**
@@ -383,8 +404,15 @@ export class Client {
383
404
  * ```
384
405
  */
385
406
  publish(params) {
407
+ this._checkConnection();
408
+ // @ts-ignore - we already checked that there is a _stompHandler, and it is connected
386
409
  this._stompHandler.publish(params);
387
410
  }
411
+ _checkConnection() {
412
+ if (!this.connected) {
413
+ throw new TypeError('There is no underlying STOMP connection');
414
+ }
415
+ }
388
416
  /**
389
417
  * STOMP brokers may carry out operation asynchronously and allow requesting for acknowledgement.
390
418
  * To request an acknowledgement, a `receipt` header needs to be sent with the actual request.
@@ -421,6 +449,8 @@ export class Client {
421
449
  * ```
422
450
  */
423
451
  watchForReceipt(receiptId, callback) {
452
+ this._checkConnection();
453
+ // @ts-ignore - we already checked that there is a _stompHandler, and it is connected
424
454
  this._stompHandler.watchForReceipt(receiptId, callback);
425
455
  }
426
456
  /**
@@ -448,6 +478,8 @@ export class Client {
448
478
  * ```
449
479
  */
450
480
  subscribe(destination, callback, headers = {}) {
481
+ this._checkConnection();
482
+ // @ts-ignore - we already checked that there is a _stompHandler, and it is connected
451
483
  return this._stompHandler.subscribe(destination, callback, headers);
452
484
  }
453
485
  /**
@@ -463,6 +495,8 @@ export class Client {
463
495
  * See: http://stomp.github.com/stomp-specification-1.2.html#UNSUBSCRIBE UNSUBSCRIBE Frame
464
496
  */
465
497
  unsubscribe(id, headers = {}) {
498
+ this._checkConnection();
499
+ // @ts-ignore - we already checked that there is a _stompHandler, and it is connected
466
500
  this._stompHandler.unsubscribe(id, headers);
467
501
  }
468
502
  /**
@@ -472,6 +506,8 @@ export class Client {
472
506
  * `transactionId` is optional, if not passed the library will generate it internally.
473
507
  */
474
508
  begin(transactionId) {
509
+ this._checkConnection();
510
+ // @ts-ignore - we already checked that there is a _stompHandler, and it is connected
475
511
  return this._stompHandler.begin(transactionId);
476
512
  }
477
513
  /**
@@ -487,6 +523,8 @@ export class Client {
487
523
  * ```
488
524
  */
489
525
  commit(transactionId) {
526
+ this._checkConnection();
527
+ // @ts-ignore - we already checked that there is a _stompHandler, and it is connected
490
528
  this._stompHandler.commit(transactionId);
491
529
  }
492
530
  /**
@@ -501,6 +539,8 @@ export class Client {
501
539
  * ```
502
540
  */
503
541
  abort(transactionId) {
542
+ this._checkConnection();
543
+ // @ts-ignore - we already checked that there is a _stompHandler, and it is connected
504
544
  this._stompHandler.abort(transactionId);
505
545
  }
506
546
  /**
@@ -517,6 +557,8 @@ export class Client {
517
557
  * ```
518
558
  */
519
559
  ack(messageId, subscriptionId, headers = {}) {
560
+ this._checkConnection();
561
+ // @ts-ignore - we already checked that there is a _stompHandler, and it is connected
520
562
  this._stompHandler.ack(messageId, subscriptionId, headers);
521
563
  }
522
564
  /**
@@ -533,6 +575,8 @@ export class Client {
533
575
  * ```
534
576
  */
535
577
  nack(messageId, subscriptionId, headers = {}) {
578
+ this._checkConnection();
579
+ // @ts-ignore - we already checked that there is a _stompHandler, and it is connected
536
580
  this._stompHandler.nack(messageId, subscriptionId, headers);
537
581
  }
538
582
  }
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}