@aslaluroba/help-center-react 3.2.0 → 3.2.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.
@@ -4351,7 +4351,7 @@ var ably = {exports: {}};
4351
4351
  });
4352
4352
  return _withTimeoutAsync2.apply(this, arguments);
4353
4353
  }
4354
- var version = "2.13.0";
4354
+ var version = "2.15.0";
4355
4355
 
4356
4356
  // src/common/lib/util/defaults.ts
4357
4357
  var agent = "ably-js/" + version;
@@ -4599,10 +4599,10 @@ var ably = {exports: {}};
4599
4599
  };
4600
4600
  function defaultGetHeaders(options) {
4601
4601
  var {
4602
- format = defaultHeadersOptions.format,
4602
+ format,
4603
4603
  protocolVersion = defaultHeadersOptions.protocolVersion
4604
4604
  } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
4605
- var accept = contentTypes[format];
4605
+ var accept = contentTypes[format != null ? format : options.useBinaryProtocol ? "msgpack" /* msgpack */ : "json" /* json */];
4606
4606
  return {
4607
4607
  accept,
4608
4608
  "X-Ably-Version": protocolVersion.toString(),
@@ -4611,11 +4611,11 @@ var ably = {exports: {}};
4611
4611
  }
4612
4612
  function defaultPostHeaders(options) {
4613
4613
  var {
4614
- format = defaultHeadersOptions.format,
4614
+ format,
4615
4615
  protocolVersion = defaultHeadersOptions.protocolVersion
4616
4616
  } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
4617
- var contentType;
4618
- var accept = contentType = contentTypes[format];
4617
+ var accept = contentTypes[format != null ? format : options.useBinaryProtocol ? "msgpack" /* msgpack */ : "json" /* json */];
4618
+ var contentType = accept;
4619
4619
  return {
4620
4620
  accept,
4621
4621
  "content-type": contentType,
@@ -4939,7 +4939,9 @@ var ably = {exports: {}};
4939
4939
  tokenUri = function tokenUri(host) {
4940
4940
  return client.baseUri(host) + path;
4941
4941
  };
4942
- var requestHeaders = defaults_default.defaultPostHeaders(_this3.client.options);
4942
+ var requestHeaders = defaults_default.defaultPostHeaders(_this3.client.options, {
4943
+ format: "json" /* json */
4944
+ });
4943
4945
  if (resolvedAuthOptions.requestHeaders) _mixin(requestHeaders, resolvedAuthOptions.requestHeaders);
4944
4946
  logger_default.logAction(_this3.logger, logger_default.LOG_MICRO, "Auth.requestToken().requestToken", "Sending POST to " + path + "; Token params: " + JSON.stringify(signedTokenParams));
4945
4947
  _whenPromiseSettles(_this3.client.http.do(HttpMethods_default.Post, tokenUri, requestHeaders, JSON.stringify(signedTokenParams), null), (err, result) => err ? tokenCb(err) : tokenCb(result.error, result.body, result.unpacked));
@@ -6631,9 +6633,7 @@ var ably = {exports: {}};
6631
6633
  return _asyncToGenerator(function* () {
6632
6634
  var client = _this26.client;
6633
6635
  var format = client.options.useBinaryProtocol ? "msgpack" /* msgpack */ : "json" /* json */,
6634
- headers = defaults_default.defaultPostHeaders(client.options, {
6635
- format
6636
- }),
6636
+ headers = defaults_default.defaultPostHeaders(client.options),
6637
6637
  params = {};
6638
6638
  var body = _mixin({
6639
6639
  recipient
@@ -6657,9 +6657,7 @@ var ably = {exports: {}};
6657
6657
  var client = _this27.client;
6658
6658
  var body = devicedetails_default.fromValues(device);
6659
6659
  var format = client.options.useBinaryProtocol ? "msgpack" /* msgpack */ : "json" /* json */,
6660
- headers = defaults_default.defaultPostHeaders(client.options, {
6661
- format
6662
- }),
6660
+ headers = defaults_default.defaultPostHeaders(client.options),
6663
6661
  params = {};
6664
6662
  _mixin(headers, client.options.headers);
6665
6663
  if (client.options.pushFullWait) _mixin(params, {
@@ -6675,9 +6673,7 @@ var ably = {exports: {}};
6675
6673
  return _asyncToGenerator(function* () {
6676
6674
  var client = _this28.client,
6677
6675
  format = client.options.useBinaryProtocol ? "msgpack" /* msgpack */ : "json" /* json */,
6678
- headers = defaults_default.defaultGetHeaders(client.options, {
6679
- format
6680
- }),
6676
+ headers = defaults_default.defaultGetHeaders(client.options),
6681
6677
  deviceId = deviceIdOrDetails.id || deviceIdOrDetails;
6682
6678
  if (typeof deviceId !== "string" || !deviceId.length) {
6683
6679
  throw new _ErrorInfo2("First argument to DeviceRegistrations#get must be a deviceId string or DeviceDetails", 4e4, 400);
@@ -6693,9 +6689,7 @@ var ably = {exports: {}};
6693
6689
  var client = _this29.client,
6694
6690
  format = client.options.useBinaryProtocol ? "msgpack" /* msgpack */ : "json" /* json */,
6695
6691
  envelope = _this29.client.http.supportsLinkHeaders ? void 0 : format,
6696
- headers = defaults_default.defaultGetHeaders(client.options, {
6697
- format
6698
- });
6692
+ headers = defaults_default.defaultGetHeaders(client.options);
6699
6693
  _mixin(headers, client.options.headers);
6700
6694
  return new paginatedresource_default(client, "/push/deviceRegistrations", headers, envelope, /*#__PURE__*/function () {
6701
6695
  var _ref3 = _asyncToGenerator(function* (body, headers2, unpacked) {
@@ -6711,10 +6705,7 @@ var ably = {exports: {}};
6711
6705
  var _this30 = this;
6712
6706
  return _asyncToGenerator(function* () {
6713
6707
  var client = _this30.client,
6714
- format = client.options.useBinaryProtocol ? "msgpack" /* msgpack */ : "json" /* json */,
6715
- headers = defaults_default.defaultGetHeaders(client.options, {
6716
- format
6717
- }),
6708
+ headers = defaults_default.defaultGetHeaders(client.options),
6718
6709
  params = {},
6719
6710
  deviceId = deviceIdOrDetails.id || deviceIdOrDetails;
6720
6711
  if (typeof deviceId !== "string" || !deviceId.length) {
@@ -6755,9 +6746,7 @@ var ably = {exports: {}};
6755
6746
  var client = _this32.client;
6756
6747
  var body = pushchannelsubscription_default.fromValues(subscription);
6757
6748
  var format = client.options.useBinaryProtocol ? "msgpack" /* msgpack */ : "json" /* json */,
6758
- headers = defaults_default.defaultPostHeaders(client.options, {
6759
- format
6760
- }),
6749
+ headers = defaults_default.defaultPostHeaders(client.options),
6761
6750
  params = {};
6762
6751
  _mixin(headers, client.options.headers);
6763
6752
  if (client.options.pushFullWait) _mixin(params, {
@@ -6774,9 +6763,7 @@ var ably = {exports: {}};
6774
6763
  var client = _this33.client,
6775
6764
  format = client.options.useBinaryProtocol ? "msgpack" /* msgpack */ : "json" /* json */,
6776
6765
  envelope = _this33.client.http.supportsLinkHeaders ? void 0 : format,
6777
- headers = defaults_default.defaultGetHeaders(client.options, {
6778
- format
6779
- });
6766
+ headers = defaults_default.defaultGetHeaders(client.options);
6780
6767
  _mixin(headers, client.options.headers);
6781
6768
  return new paginatedresource_default(client, "/push/channelSubscriptions", headers, envelope, /*#__PURE__*/function () {
6782
6769
  var _ref4 = _asyncToGenerator(function* (body, headers2, unpacked) {
@@ -6809,9 +6796,7 @@ var ably = {exports: {}};
6809
6796
  var client = _this35.client,
6810
6797
  format = client.options.useBinaryProtocol ? "msgpack" /* msgpack */ : "json" /* json */,
6811
6798
  envelope = _this35.client.http.supportsLinkHeaders ? void 0 : format,
6812
- headers = defaults_default.defaultGetHeaders(client.options, {
6813
- format
6814
- });
6799
+ headers = defaults_default.defaultGetHeaders(client.options);
6815
6800
  _mixin(headers, client.options.headers);
6816
6801
  if (client.options.pushFullWait) _mixin(params, {
6817
6802
  fullWait: "true"
@@ -6974,9 +6959,7 @@ var ably = {exports: {}};
6974
6959
  var client = _this38.channel.client,
6975
6960
  format = client.options.useBinaryProtocol ? "msgpack" /* msgpack */ : "json" /* json */,
6976
6961
  envelope = _this38.channel.client.http.supportsLinkHeaders ? void 0 : format,
6977
- headers = defaults_default.defaultGetHeaders(client.options, {
6978
- format
6979
- });
6962
+ headers = defaults_default.defaultGetHeaders(client.options);
6980
6963
  _mixin(headers, client.options.headers);
6981
6964
  return new paginatedresource_default(client, _this38.channel.client.rest.presenceMixin.basePath(_this38), headers, envelope, /*#__PURE__*/function () {
6982
6965
  var _ref6 = _asyncToGenerator(function* (body, headers2, unpacked) {
@@ -7100,6 +7083,21 @@ var ably = {exports: {}};
7100
7083
  } else if (!this.annotations.summary) {
7101
7084
  this.annotations.summary = {};
7102
7085
  }
7086
+ if (this.annotations && this.annotations.summary) {
7087
+ for (var [type, summaryEntry] of Object.entries(this.annotations.summary)) {
7088
+ if (type.endsWith(":distinct.v1") || type.endsWith(":unique.v1") || type.endsWith(":multiple.v1")) {
7089
+ for (var [, entry] of Object.entries(summaryEntry)) {
7090
+ if (!entry.clipped) {
7091
+ entry.clipped = false;
7092
+ }
7093
+ }
7094
+ } else if (type.endsWith(":flag.v1")) {
7095
+ if (!summaryEntry.clipped) {
7096
+ summaryEntry.clipped = false;
7097
+ }
7098
+ }
7099
+ }
7100
+ }
7103
7101
  }
7104
7102
  encode(options) {
7105
7103
  var _this40 = this;
@@ -7249,9 +7247,7 @@ var ably = {exports: {}};
7249
7247
  options = client.options,
7250
7248
  format = options.useBinaryProtocol ? "msgpack" /* msgpack */ : "json" /* json */,
7251
7249
  idempotentRestPublishing = client.options.idempotentRestPublishing,
7252
- headers = defaults_default.defaultPostHeaders(client.options, {
7253
- format
7254
- });
7250
+ headers = defaults_default.defaultPostHeaders(client.options);
7255
7251
  _mixin(headers, options.headers);
7256
7252
  if (idempotentRestPublishing && allEmptyIds(messages)) {
7257
7253
  var msgIdBase = yield _randomString(MSG_ID_ENTROPY_BYTES);
@@ -7280,6 +7276,38 @@ var ably = {exports: {}};
7280
7276
  return _this46.client.rest.channelMixin.status(_this46);
7281
7277
  })();
7282
7278
  }
7279
+ getMessage(serialOrMessage) {
7280
+ var _this47 = this;
7281
+ return _asyncToGenerator(function* () {
7282
+ logger_default.logAction(_this47.logger, logger_default.LOG_MICRO, "RestChannel.getMessage()", "channel = " + _this47.name);
7283
+ return _this47.client.rest.channelMixin.getMessage(_this47, serialOrMessage);
7284
+ })();
7285
+ }
7286
+ updateMessage(message, operation, params) {
7287
+ var _this48 = this;
7288
+ return _asyncToGenerator(function* () {
7289
+ logger_default.logAction(_this48.logger, logger_default.LOG_MICRO, "RestChannel.updateMessage()", "channel = " + _this48.name);
7290
+ return _this48.client.rest.channelMixin.updateDeleteMessage(_this48, {
7291
+ isDelete: false
7292
+ }, message, operation, params);
7293
+ })();
7294
+ }
7295
+ deleteMessage(message, operation, params) {
7296
+ var _this49 = this;
7297
+ return _asyncToGenerator(function* () {
7298
+ logger_default.logAction(_this49.logger, logger_default.LOG_MICRO, "RestChannel.deleteMessage()", "channel = " + _this49.name);
7299
+ return _this49.client.rest.channelMixin.updateDeleteMessage(_this49, {
7300
+ isDelete: true
7301
+ }, message, operation, params);
7302
+ })();
7303
+ }
7304
+ getMessageVersions(serialOrMessage, params) {
7305
+ var _this50 = this;
7306
+ return _asyncToGenerator(function* () {
7307
+ logger_default.logAction(_this50.logger, logger_default.LOG_MICRO, "RestChannel.getMessageVersions()", "channel = " + _this50.name);
7308
+ return _this50.client.rest.channelMixin.getMessageVersions(_this50, serialOrMessage, params);
7309
+ })();
7310
+ }
7283
7311
  };
7284
7312
  var restchannel_default = RestChannel;
7285
7313
 
@@ -7308,9 +7336,7 @@ var ably = {exports: {}};
7308
7336
  var client = channel.client,
7309
7337
  format = client.options.useBinaryProtocol ? "msgpack" /* msgpack */ : "json" /* json */,
7310
7338
  envelope = channel.client.http.supportsLinkHeaders ? void 0 : format,
7311
- headers = defaults_default.defaultGetHeaders(client.options, {
7312
- format
7313
- });
7339
+ headers = defaults_default.defaultGetHeaders(client.options);
7314
7340
  _mixin(headers, client.options.headers);
7315
7341
  return new paginatedresource_default(client, this.basePath(channel) + "/messages", headers, envelope, /*#__PURE__*/function () {
7316
7342
  var _ref7 = _asyncToGenerator(function* (body, headers2, unpacked) {
@@ -7323,16 +7349,81 @@ var ably = {exports: {}};
7323
7349
  }()).get(params);
7324
7350
  }
7325
7351
  static status(channel) {
7326
- var _this47 = this;
7352
+ var _this51 = this;
7327
7353
  return _asyncToGenerator(function* () {
7328
7354
  var format = channel.client.options.useBinaryProtocol ? "msgpack" /* msgpack */ : "json" /* json */;
7329
- var headers = defaults_default.defaultPostHeaders(channel.client.options, {
7330
- format
7331
- });
7332
- var response = yield resource_default.get(channel.client, _this47.basePath(channel), headers, {}, format, true);
7355
+ var headers = defaults_default.defaultPostHeaders(channel.client.options);
7356
+ var response = yield resource_default.get(channel.client, _this51.basePath(channel), headers, {}, format, true);
7333
7357
  return response.body;
7334
7358
  })();
7335
7359
  }
7360
+ static getMessage(channel, serialOrMessage) {
7361
+ var _this52 = this;
7362
+ return _asyncToGenerator(function* () {
7363
+ var serial = typeof serialOrMessage === "string" ? serialOrMessage : serialOrMessage.serial;
7364
+ if (!serial) {
7365
+ throw new _ErrorInfo2('This message lacks a serial. Make sure you have enabled "Message annotations, updates, and deletes" in channel settings on your dashboard.', 40003, 400);
7366
+ }
7367
+ var client = channel.client;
7368
+ var format = client.options.useBinaryProtocol ? "msgpack" /* msgpack */ : "json" /* json */;
7369
+ var headers = defaults_default.defaultGetHeaders(client.options);
7370
+ _mixin(headers, client.options.headers);
7371
+ var {
7372
+ body,
7373
+ unpacked
7374
+ } = yield resource_default.get(client, _this52.basePath(channel) + "/messages/" + encodeURIComponent(serial), headers, {}, null, true);
7375
+ var decoded = unpacked ? body : _decodeBody(body, client._MsgPack, format);
7376
+ return _fromEncoded2(decoded, channel);
7377
+ })();
7378
+ }
7379
+ static updateDeleteMessage(channel, opts, message, operation, params) {
7380
+ var _this53 = this;
7381
+ return _asyncToGenerator(function* () {
7382
+ if (!message.serial) {
7383
+ throw new _ErrorInfo2('This message lacks a serial and cannot be updated. Make sure you have enabled "Message annotations, updates, and deletes" in channel settings on your dashboard.', 40003, 400);
7384
+ }
7385
+ var client = channel.client;
7386
+ var format = client.options.useBinaryProtocol ? "msgpack" /* msgpack */ : "json" /* json */;
7387
+ var headers = defaults_default.defaultPostHeaders(client.options);
7388
+ _mixin(headers, client.options.headers);
7389
+ var encoded = null;
7390
+ if (message.data !== void 0) {
7391
+ encoded = yield message_default.fromValues(message).encode(channel.channelOptions);
7392
+ }
7393
+ var req = {
7394
+ serial: message.serial,
7395
+ operation,
7396
+ name: message.name,
7397
+ data: encoded && encoded.data,
7398
+ encoding: encoded && encoded.encoding,
7399
+ extras: message.extras
7400
+ };
7401
+ var requestBody = serialize(req, client._MsgPack, format);
7402
+ var method = opts.isDelete ? resource_default.post : resource_default.patch;
7403
+ var pathSuffix = opts.isDelete ? "/delete" : "";
7404
+ yield method(client, _this53.basePath(channel) + "/messages/" + encodeURIComponent(message.serial) + pathSuffix, requestBody, headers, params || {}, null, true);
7405
+ })();
7406
+ }
7407
+ static getMessageVersions(channel, serialOrMessage, params) {
7408
+ var serial = typeof serialOrMessage === "string" ? serialOrMessage : serialOrMessage.serial;
7409
+ if (!serial) {
7410
+ throw new _ErrorInfo2('This message lacks a serial. Make sure you have enabled "Message annotations, updates, and deletes" in channel settings on your dashboard.', 40003, 400);
7411
+ }
7412
+ var client = channel.client;
7413
+ var format = client.options.useBinaryProtocol ? "msgpack" /* msgpack */ : "json" /* json */;
7414
+ var envelope = channel.client.http.supportsLinkHeaders ? void 0 : format;
7415
+ var headers = defaults_default.defaultGetHeaders(client.options);
7416
+ _mixin(headers, client.options.headers);
7417
+ return new paginatedresource_default(client, this.basePath(channel) + "/messages/" + encodeURIComponent(serial) + "/versions", headers, envelope, /*#__PURE__*/function () {
7418
+ var _ref8 = _asyncToGenerator(function* (body, headers2, unpacked) {
7419
+ var decoded = unpacked ? body : _decodeBody(body, client._MsgPack, format);
7420
+ return _fromEncodedArray2(decoded, channel);
7421
+ });
7422
+ return function (_x62, _x63, _x64) {
7423
+ return _ref8.apply(this, arguments);
7424
+ };
7425
+ }()).get(params || {});
7426
+ }
7336
7427
  };
7337
7428
 
7338
7429
  // src/common/lib/client/restpresencemixin.ts
@@ -7341,22 +7432,20 @@ var ably = {exports: {}};
7341
7432
  return RestChannelMixin.basePath(presence.channel) + "/presence";
7342
7433
  }
7343
7434
  static history(presence, params) {
7344
- var _this48 = this;
7435
+ var _this54 = this;
7345
7436
  return _asyncToGenerator(function* () {
7346
7437
  var client = presence.channel.client,
7347
7438
  format = client.options.useBinaryProtocol ? "msgpack" /* msgpack */ : "json" /* json */,
7348
7439
  envelope = presence.channel.client.http.supportsLinkHeaders ? void 0 : format,
7349
- headers = defaults_default.defaultGetHeaders(client.options, {
7350
- format
7351
- });
7440
+ headers = defaults_default.defaultGetHeaders(client.options);
7352
7441
  _mixin(headers, client.options.headers);
7353
- return new paginatedresource_default(client, _this48.basePath(presence) + "/history", headers, envelope, /*#__PURE__*/function () {
7354
- var _ref8 = _asyncToGenerator(function* (body, headers2, unpacked) {
7442
+ return new paginatedresource_default(client, _this54.basePath(presence) + "/history", headers, envelope, /*#__PURE__*/function () {
7443
+ var _ref9 = _asyncToGenerator(function* (body, headers2, unpacked) {
7355
7444
  var decoded = unpacked ? body : _decodeBody(body, client._MsgPack, format);
7356
7445
  return _fromEncodedArray(decoded, presence.channel);
7357
7446
  });
7358
- return function (_x62, _x63, _x64) {
7359
- return _ref8.apply(this, arguments);
7447
+ return function (_x65, _x66, _x67) {
7448
+ return _ref9.apply(this, arguments);
7360
7449
  };
7361
7450
  }()).get(params);
7362
7451
  })();
@@ -7378,32 +7467,39 @@ var ably = {exports: {}};
7378
7467
  this.push = new push_default(this.client);
7379
7468
  }
7380
7469
  stats(params) {
7381
- var _this49 = this;
7470
+ var _this55 = this;
7382
7471
  return _asyncToGenerator(function* () {
7383
- var headers = defaults_default.defaultGetHeaders(_this49.client.options),
7384
- format = _this49.client.options.useBinaryProtocol ? "msgpack" /* msgpack */ : "json" /* json */,
7385
- envelope = _this49.client.http.supportsLinkHeaders ? void 0 : format;
7386
- _mixin(headers, _this49.client.options.headers);
7387
- return new paginatedresource_default(_this49.client, "/stats", headers, envelope, function (body, headers2, unpacked) {
7388
- var statsValues = unpacked ? body : JSON.parse(body);
7389
- for (var i = 0; i < statsValues.length; i++) statsValues[i] = stats_default.fromValues(statsValues[i]);
7390
- return statsValues;
7391
- }).get(params);
7472
+ var headers = defaults_default.defaultGetHeaders(_this55.client.options),
7473
+ format = _this55.client.options.useBinaryProtocol ? "msgpack" /* msgpack */ : "json" /* json */,
7474
+ envelope = _this55.client.http.supportsLinkHeaders ? void 0 : format;
7475
+ _mixin(headers, _this55.client.options.headers);
7476
+ return new paginatedresource_default(_this55.client, "/stats", headers, envelope, /*#__PURE__*/function () {
7477
+ var _ref0 = _asyncToGenerator(function* (body, _, unpacked) {
7478
+ var statsValues = unpacked ? body : _decodeBody(body, _this55.client._MsgPack, format);
7479
+ for (var i = 0; i < statsValues.length; i++) statsValues[i] = stats_default.fromValues(statsValues[i]);
7480
+ return statsValues;
7481
+ });
7482
+ return function (_x68, _x69, _x70) {
7483
+ return _ref0.apply(this, arguments);
7484
+ };
7485
+ }()).get(params);
7392
7486
  })();
7393
7487
  }
7394
7488
  time(params) {
7395
- var _this50 = this;
7489
+ var _this56 = this;
7396
7490
  return _asyncToGenerator(function* () {
7397
- var headers = defaults_default.defaultGetHeaders(_this50.client.options);
7398
- if (_this50.client.options.headers) _mixin(headers, _this50.client.options.headers);
7491
+ var headers = defaults_default.defaultGetHeaders(_this56.client.options, {
7492
+ format: "json" /* json */
7493
+ });
7494
+ if (_this56.client.options.headers) _mixin(headers, _this56.client.options.headers);
7399
7495
  var timeUri = host => {
7400
- return _this50.client.baseUri(host) + "/time";
7496
+ return _this56.client.baseUri(host) + "/time";
7401
7497
  };
7402
7498
  var {
7403
7499
  error,
7404
7500
  body,
7405
7501
  unpacked
7406
- } = yield _this50.client.http.do(HttpMethods_default.Get, timeUri, headers, null, params);
7502
+ } = yield _this56.client.http.do(HttpMethods_default.Get, timeUri, headers, null, params);
7407
7503
  if (error) {
7408
7504
  throw error;
7409
7505
  }
@@ -7412,47 +7508,47 @@ var ably = {exports: {}};
7412
7508
  if (!time) {
7413
7509
  throw new _ErrorInfo2("Internal error (unexpected result type from GET /time)", 5e4, 500);
7414
7510
  }
7415
- _this50.client.serverTimeOffset = time - Date.now();
7511
+ _this56.client.serverTimeOffset = time - Date.now();
7416
7512
  return time;
7417
7513
  })();
7418
7514
  }
7419
7515
  request(method, path, version2, params, body, customHeaders) {
7420
- var _this51 = this;
7516
+ var _this57 = this;
7421
7517
  return _asyncToGenerator(function* () {
7422
7518
  var _a2;
7423
7519
  var [encoder, decoder, format] = (() => {
7424
- if (_this51.client.options.useBinaryProtocol) {
7425
- if (!_this51.client._MsgPack) {
7520
+ if (_this57.client.options.useBinaryProtocol) {
7521
+ if (!_this57.client._MsgPack) {
7426
7522
  _throwMissingPluginError("MsgPack");
7427
7523
  }
7428
- return [_this51.client._MsgPack.encode, _this51.client._MsgPack.decode, "msgpack" /* msgpack */];
7524
+ return [_this57.client._MsgPack.encode, _this57.client._MsgPack.decode, "msgpack" /* msgpack */];
7429
7525
  } else {
7430
7526
  return [JSON.stringify, JSON.parse, "json" /* json */];
7431
7527
  }
7432
7528
  })();
7433
- var envelope = _this51.client.http.supportsLinkHeaders ? void 0 : format;
7529
+ var envelope = _this57.client.http.supportsLinkHeaders ? void 0 : format;
7434
7530
  params = params || {};
7435
7531
  var _method = method.toLowerCase();
7436
- var headers = _method == "get" ? defaults_default.defaultGetHeaders(_this51.client.options, {
7532
+ var headers = _method == "get" ? defaults_default.defaultGetHeaders(_this57.client.options, {
7437
7533
  format,
7438
7534
  protocolVersion: version2
7439
- }) : defaults_default.defaultPostHeaders(_this51.client.options, {
7535
+ }) : defaults_default.defaultPostHeaders(_this57.client.options, {
7440
7536
  format,
7441
7537
  protocolVersion: version2
7442
7538
  });
7443
7539
  if (typeof body !== "string") {
7444
7540
  body = (_a2 = encoder(body)) != null ? _a2 : null;
7445
7541
  }
7446
- _mixin(headers, _this51.client.options.headers);
7542
+ _mixin(headers, _this57.client.options.headers);
7447
7543
  if (customHeaders) {
7448
7544
  _mixin(headers, customHeaders);
7449
7545
  }
7450
- var paginatedResource = new paginatedresource_default(_this51.client, path, headers, envelope, /*#__PURE__*/function () {
7451
- var _ref9 = _asyncToGenerator(function* (resbody, headers2, unpacked) {
7546
+ var paginatedResource = new paginatedresource_default(_this57.client, path, headers, envelope, /*#__PURE__*/function () {
7547
+ var _ref1 = _asyncToGenerator(function* (resbody, headers2, unpacked) {
7452
7548
  return _ensureArray(unpacked ? resbody : decoder(resbody));
7453
7549
  });
7454
- return function (_x65, _x66, _x67) {
7455
- return _ref9.apply(this, arguments);
7550
+ return function (_x71, _x72, _x73) {
7551
+ return _ref1.apply(this, arguments);
7456
7552
  };
7457
7553
  }(), /* useHttpPaginatedResponse: */
7458
7554
  true);
@@ -7467,7 +7563,7 @@ var ably = {exports: {}};
7467
7563
  })();
7468
7564
  }
7469
7565
  batchPublish(specOrSpecs) {
7470
- var _this52 = this;
7566
+ var _this58 = this;
7471
7567
  return _asyncToGenerator(function* () {
7472
7568
  var requestBodyDTO;
7473
7569
  var singleSpecMode;
@@ -7478,14 +7574,12 @@ var ably = {exports: {}};
7478
7574
  requestBodyDTO = [specOrSpecs];
7479
7575
  singleSpecMode = true;
7480
7576
  }
7481
- var format = _this52.client.options.useBinaryProtocol ? "msgpack" /* msgpack */ : "json" /* json */,
7482
- headers = defaults_default.defaultPostHeaders(_this52.client.options, {
7483
- format
7484
- });
7485
- if (_this52.client.options.headers) _mixin(headers, _this52.client.options.headers);
7486
- var requestBody = _encodeBody(requestBodyDTO, _this52.client._MsgPack, format);
7487
- var response = yield resource_default.post(_this52.client, "/messages", requestBody, headers, {}, null, true);
7488
- var batchResults = response.unpacked ? response.body : _decodeBody(response.body, _this52.client._MsgPack, format);
7577
+ var format = _this58.client.options.useBinaryProtocol ? "msgpack" /* msgpack */ : "json" /* json */,
7578
+ headers = defaults_default.defaultPostHeaders(_this58.client.options);
7579
+ if (_this58.client.options.headers) _mixin(headers, _this58.client.options.headers);
7580
+ var requestBody = _encodeBody(requestBodyDTO, _this58.client._MsgPack, format);
7581
+ var response = yield resource_default.post(_this58.client, "/messages", requestBody, headers, {}, null, true);
7582
+ var batchResults = response.unpacked ? response.body : _decodeBody(response.body, _this58.client._MsgPack, format);
7489
7583
  if (singleSpecMode) {
7490
7584
  return batchResults[0];
7491
7585
  } else {
@@ -7494,39 +7588,35 @@ var ably = {exports: {}};
7494
7588
  })();
7495
7589
  }
7496
7590
  batchPresence(channels) {
7497
- var _this53 = this;
7591
+ var _this59 = this;
7498
7592
  return _asyncToGenerator(function* () {
7499
- var format = _this53.client.options.useBinaryProtocol ? "msgpack" /* msgpack */ : "json" /* json */,
7500
- headers = defaults_default.defaultPostHeaders(_this53.client.options, {
7501
- format
7502
- });
7503
- if (_this53.client.options.headers) _mixin(headers, _this53.client.options.headers);
7593
+ var format = _this59.client.options.useBinaryProtocol ? "msgpack" /* msgpack */ : "json" /* json */,
7594
+ headers = defaults_default.defaultGetHeaders(_this59.client.options);
7595
+ if (_this59.client.options.headers) _mixin(headers, _this59.client.options.headers);
7504
7596
  var channelsParam = channels.join(",");
7505
- var response = yield resource_default.get(_this53.client, "/presence", headers, {
7597
+ var response = yield resource_default.get(_this59.client, "/presence", headers, {
7506
7598
  channels: channelsParam
7507
7599
  }, null, true);
7508
- return response.unpacked ? response.body : _decodeBody(response.body, _this53.client._MsgPack, format);
7600
+ return response.unpacked ? response.body : _decodeBody(response.body, _this59.client._MsgPack, format);
7509
7601
  })();
7510
7602
  }
7511
7603
  revokeTokens(specifiers, options) {
7512
- var _this54 = this;
7604
+ var _this60 = this;
7513
7605
  return _asyncToGenerator(function* () {
7514
- if (useTokenAuth(_this54.client.options)) {
7606
+ if (useTokenAuth(_this60.client.options)) {
7515
7607
  throw new _ErrorInfo2("Cannot revoke tokens when using token auth", 40162, 401);
7516
7608
  }
7517
- var keyName = _this54.client.options.keyName;
7609
+ var keyName = _this60.client.options.keyName;
7518
7610
  var resolvedOptions = options != null ? options : {};
7519
7611
  var requestBodyDTO = __spreadValues({
7520
7612
  targets: specifiers.map(specifier => "".concat(specifier.type, ":").concat(specifier.value))
7521
7613
  }, resolvedOptions);
7522
- var format = _this54.client.options.useBinaryProtocol ? "msgpack" /* msgpack */ : "json" /* json */,
7523
- headers = defaults_default.defaultPostHeaders(_this54.client.options, {
7524
- format
7525
- });
7526
- if (_this54.client.options.headers) _mixin(headers, _this54.client.options.headers);
7527
- var requestBody = _encodeBody(requestBodyDTO, _this54.client._MsgPack, format);
7528
- var response = yield resource_default.post(_this54.client, "/keys/".concat(keyName, "/revokeTokens"), requestBody, headers, {}, null, true);
7529
- return response.unpacked ? response.body : _decodeBody(response.body, _this54.client._MsgPack, format);
7614
+ var format = _this60.client.options.useBinaryProtocol ? "msgpack" /* msgpack */ : "json" /* json */,
7615
+ headers = defaults_default.defaultPostHeaders(_this60.client.options);
7616
+ if (_this60.client.options.headers) _mixin(headers, _this60.client.options.headers);
7617
+ var requestBody = _encodeBody(requestBodyDTO, _this60.client._MsgPack, format);
7618
+ var response = yield resource_default.post(_this60.client, "/keys/".concat(keyName, "/revokeTokens"), requestBody, headers, {}, null, true);
7619
+ return response.unpacked ? response.body : _decodeBody(response.body, _this60.client._MsgPack, format);
7530
7620
  })();
7531
7621
  }
7532
7622
  };
@@ -7610,7 +7700,7 @@ var ably = {exports: {}};
7610
7700
 
7611
7701
  // src/common/lib/types/annotation.ts
7612
7702
  var actions4 = ["annotation.create", "annotation.delete"];
7613
- function fromEncoded3(_x68, _x69, _x70) {
7703
+ function fromEncoded3(_x74, _x75, _x76) {
7614
7704
  return _fromEncoded8.apply(this, arguments);
7615
7705
  }
7616
7706
  function _fromEncoded8() {
@@ -7620,7 +7710,7 @@ var ably = {exports: {}};
7620
7710
  });
7621
7711
  return _fromEncoded8.apply(this, arguments);
7622
7712
  }
7623
- function fromEncodedArray3(_x71, _x72, _x73) {
7713
+ function fromEncodedArray3(_x77, _x78, _x79) {
7624
7714
  return _fromEncodedArray8.apply(this, arguments);
7625
7715
  }
7626
7716
  function _fromEncodedArray8() {
@@ -7631,7 +7721,7 @@ var ably = {exports: {}};
7631
7721
  });
7632
7722
  return _fromEncodedArray8.apply(this, arguments);
7633
7723
  }
7634
- function _fromEncoded3(_x74, _x75) {
7724
+ function _fromEncoded3(_x80, _x81) {
7635
7725
  return _fromEncoded9.apply(this, arguments);
7636
7726
  }
7637
7727
  function _fromEncoded9() {
@@ -7640,7 +7730,7 @@ var ably = {exports: {}};
7640
7730
  });
7641
7731
  return _fromEncoded9.apply(this, arguments);
7642
7732
  }
7643
- function _fromEncodedArray3(_x76, _x77) {
7733
+ function _fromEncodedArray3(_x82, _x83) {
7644
7734
  return _fromEncodedArray9.apply(this, arguments);
7645
7735
  }
7646
7736
  function _fromEncodedArray9() {
@@ -7653,10 +7743,10 @@ var ably = {exports: {}};
7653
7743
  }
7654
7744
  var Annotation = class _Annotation extends BaseMessage {
7655
7745
  encode() {
7656
- var _this55 = this;
7746
+ var _this61 = this;
7657
7747
  return _asyncToGenerator(function* () {
7658
- var res = Object.assign(new WireAnnotation(), _this55, {
7659
- action: actions4.indexOf(_this55.action || "annotation.create")
7748
+ var res = Object.assign(new WireAnnotation(), _this61, {
7749
+ action: actions4.indexOf(_this61.action || "annotation.create")
7660
7750
  });
7661
7751
  return encode(res, {});
7662
7752
  })();
@@ -7685,10 +7775,10 @@ var ably = {exports: {}};
7685
7775
  return values.map(v => _WireAnnotation.fromValues(v));
7686
7776
  }
7687
7777
  decode(channelOptions, logger) {
7688
- var _this56 = this;
7778
+ var _this62 = this;
7689
7779
  return _asyncToGenerator(function* () {
7690
- var res = Object.assign(new Annotation(), __spreadProps(__spreadValues({}, _this56), {
7691
- action: actions4[_this56.action]
7780
+ var res = Object.assign(new Annotation(), __spreadProps(__spreadValues({}, _this62), {
7781
+ action: actions4[_this62.action]
7692
7782
  }));
7693
7783
  try {
7694
7784
  yield decode(res, channelOptions);
@@ -7757,47 +7847,43 @@ var ably = {exports: {}};
7757
7847
  this.channel = channel;
7758
7848
  }
7759
7849
  publish(msgOrSerial, annotationValues) {
7760
- var _this57 = this;
7850
+ var _this63 = this;
7761
7851
  return _asyncToGenerator(function* () {
7762
7852
  var annotation = constructValidateAnnotation(msgOrSerial, annotationValues);
7763
7853
  var wireAnnotation = yield annotation.encode();
7764
- var client = _this57.channel.client,
7854
+ var client = _this63.channel.client,
7765
7855
  options = client.options,
7766
7856
  format = options.useBinaryProtocol ? "msgpack" /* msgpack */ : "json" /* json */,
7767
- headers = defaults_default.defaultPostHeaders(client.options, {
7768
- format
7769
- }),
7857
+ headers = defaults_default.defaultPostHeaders(client.options),
7770
7858
  params = {};
7771
7859
  _mixin(headers, client.options.headers);
7772
7860
  var requestBody = _encodeBody([wireAnnotation], client._MsgPack, format);
7773
- yield resource_default.post(client, basePathForSerial(_this57.channel, annotation.messageSerial), requestBody, headers, params, null, true);
7861
+ yield resource_default.post(client, basePathForSerial(_this63.channel, annotation.messageSerial), requestBody, headers, params, null, true);
7774
7862
  })();
7775
7863
  }
7776
7864
  delete(msgOrSerial, annotationValues) {
7777
- var _this58 = this;
7865
+ var _this64 = this;
7778
7866
  return _asyncToGenerator(function* () {
7779
7867
  annotationValues.action = "annotation.delete";
7780
- return _this58.publish(msgOrSerial, annotationValues);
7868
+ return _this64.publish(msgOrSerial, annotationValues);
7781
7869
  })();
7782
7870
  }
7783
7871
  get(msgOrSerial, params) {
7784
- var _this59 = this;
7872
+ var _this65 = this;
7785
7873
  return _asyncToGenerator(function* () {
7786
- var client = _this59.channel.client,
7874
+ var client = _this65.channel.client,
7787
7875
  messageSerial = serialFromMsgOrSerial(msgOrSerial),
7788
7876
  format = client.options.useBinaryProtocol ? "msgpack" /* msgpack */ : "json" /* json */,
7789
7877
  envelope = client.http.supportsLinkHeaders ? void 0 : format,
7790
- headers = defaults_default.defaultGetHeaders(client.options, {
7791
- format
7792
- });
7878
+ headers = defaults_default.defaultGetHeaders(client.options);
7793
7879
  _mixin(headers, client.options.headers);
7794
- return new paginatedresource_default(client, basePathForSerial(_this59.channel, messageSerial), headers, envelope, /*#__PURE__*/function () {
7795
- var _ref0 = _asyncToGenerator(function* (body, _, unpacked) {
7880
+ return new paginatedresource_default(client, basePathForSerial(_this65.channel, messageSerial), headers, envelope, /*#__PURE__*/function () {
7881
+ var _ref10 = _asyncToGenerator(function* (body, _, unpacked) {
7796
7882
  var decoded = unpacked ? body : _decodeBody(body, client._MsgPack, format);
7797
- return _fromEncodedArray3(decoded, _this59.channel);
7883
+ return _fromEncodedArray3(decoded, _this65.channel);
7798
7884
  });
7799
- return function (_x78, _x79, _x80) {
7800
- return _ref0.apply(this, arguments);
7885
+ return function (_x84, _x85, _x86) {
7886
+ return _ref10.apply(this, arguments);
7801
7887
  };
7802
7888
  }()).get(params);
7803
7889
  })();
@@ -7968,7 +8054,7 @@ var ably = {exports: {}};
7968
8054
  this._mode = 0;
7969
8055
  this.retryCount = 0;
7970
8056
  this.history = /*#__PURE__*/function () {
7971
- var _ref1 = _asyncToGenerator(function* (params) {
8057
+ var _ref11 = _asyncToGenerator(function* (params) {
7972
8058
  logger_default.logAction(this.logger, logger_default.LOG_MICRO, "RealtimeChannel.history()", "channel = " + this.name);
7973
8059
  var restMixin = this.client.rest.channelMixin;
7974
8060
  if (params && params.untilAttach) {
@@ -7983,8 +8069,8 @@ var ably = {exports: {}};
7983
8069
  }
7984
8070
  return restMixin.history(this, params);
7985
8071
  });
7986
- return function (_x81) {
7987
- return _ref1.apply(this, arguments);
8072
+ return function (_x87) {
8073
+ return _ref11.apply(this, arguments);
7988
8074
  };
7989
8075
  }();
7990
8076
  this.whenState = state => {
@@ -8063,20 +8149,20 @@ var ably = {exports: {}};
8063
8149
  return args;
8064
8150
  }
8065
8151
  setOptions(options) {
8066
- var _this60 = this;
8152
+ var _this66 = this;
8067
8153
  return _asyncToGenerator(function* () {
8068
8154
  var _a2;
8069
- var previousChannelOptions = _this60.channelOptions;
8155
+ var previousChannelOptions = _this66.channelOptions;
8070
8156
  var err = validateChannelOptions(options);
8071
8157
  if (err) {
8072
8158
  throw err;
8073
8159
  }
8074
- _this60.channelOptions = normaliseChannelOptions((_a2 = _this60.client._Crypto) != null ? _a2 : null, _this60.logger, options);
8075
- if (_this60._decodingContext) _this60._decodingContext.channelOptions = _this60.channelOptions;
8076
- if (_this60._shouldReattachToSetOptions(options, previousChannelOptions)) {
8077
- _this60.attachImpl();
8160
+ _this66.channelOptions = normaliseChannelOptions((_a2 = _this66.client._Crypto) != null ? _a2 : null, _this66.logger, options);
8161
+ if (_this66._decodingContext) _this66._decodingContext.channelOptions = _this66.channelOptions;
8162
+ if (_this66._shouldReattachToSetOptions(options, previousChannelOptions)) {
8163
+ _this66.attachImpl();
8078
8164
  return new Promise((resolve, reject) => {
8079
- _this60._allChannelChanges.once(["attached", "update", "detached", "failed"], function (stateChange) {
8165
+ _this66._allChannelChanges.once(["attached", "update", "detached", "failed"], function (stateChange) {
8080
8166
  switch (this.event) {
8081
8167
  case "update":
8082
8168
  case "attached":
@@ -8113,7 +8199,7 @@ var ably = {exports: {}};
8113
8199
  }
8114
8200
  publish() {
8115
8201
  var _arguments2 = arguments,
8116
- _this61 = this;
8202
+ _this67 = this;
8117
8203
  return _asyncToGenerator(function* () {
8118
8204
  var messages;
8119
8205
  var argCount = _arguments2.length;
@@ -8131,20 +8217,20 @@ var ably = {exports: {}};
8131
8217
  data: _arguments2.length <= 1 ? undefined : _arguments2[1]
8132
8218
  })];
8133
8219
  }
8134
- var maxMessageSize = _this61.client.options.maxMessageSize;
8135
- var wireMessages = yield encodeArray(messages, _this61.channelOptions);
8220
+ var maxMessageSize = _this67.client.options.maxMessageSize;
8221
+ var wireMessages = yield encodeArray(messages, _this67.channelOptions);
8136
8222
  var size = getMessagesSize(wireMessages);
8137
8223
  if (size > maxMessageSize) {
8138
8224
  throw new _ErrorInfo2("Maximum size of messages that can be published at once exceeded (was ".concat(size, " bytes; limit is ").concat(maxMessageSize, " bytes)"), 40009, 400);
8139
8225
  }
8140
- _this61.throwIfUnpublishableState();
8141
- logger_default.logAction(_this61.logger, logger_default.LOG_MICRO, "RealtimeChannel.publish()", "sending message; channel state is " + _this61.state + ", message count = " + wireMessages.length);
8226
+ _this67.throwIfUnpublishableState();
8227
+ logger_default.logAction(_this67.logger, logger_default.LOG_MICRO, "RealtimeChannel.publish()", "sending message; channel state is " + _this67.state + ", message count = " + wireMessages.length);
8142
8228
  var pm = fromValues({
8143
8229
  action: actions.MESSAGE,
8144
- channel: _this61.name,
8230
+ channel: _this67.name,
8145
8231
  messages: wireMessages
8146
8232
  });
8147
- return _this61.sendMessage(pm);
8233
+ return _this67.sendMessage(pm);
8148
8234
  })();
8149
8235
  }
8150
8236
  throwIfUnpublishableState() {
@@ -8164,13 +8250,13 @@ var ably = {exports: {}};
8164
8250
  }
8165
8251
  }
8166
8252
  attach() {
8167
- var _this62 = this;
8253
+ var _this68 = this;
8168
8254
  return _asyncToGenerator(function* () {
8169
- if (_this62.state === "attached") {
8255
+ if (_this68.state === "attached") {
8170
8256
  return null;
8171
8257
  }
8172
8258
  return new Promise((resolve, reject) => {
8173
- _this62._attach(false, null, (err, result) => err ? reject(err) : resolve(result));
8259
+ _this68._attach(false, null, (err, result) => err ? reject(err) : resolve(result));
8174
8260
  });
8175
8261
  })();
8176
8262
  }
@@ -8228,25 +8314,25 @@ var ably = {exports: {}};
8228
8314
  this.sendMessage(attachMsg).catch(noop);
8229
8315
  }
8230
8316
  detach() {
8231
- var _this63 = this;
8317
+ var _this69 = this;
8232
8318
  return _asyncToGenerator(function* () {
8233
- var connectionManager = _this63.connectionManager;
8319
+ var connectionManager = _this69.connectionManager;
8234
8320
  if (!connectionManager.activeState()) {
8235
8321
  throw connectionManager.getError();
8236
8322
  }
8237
- switch (_this63.state) {
8323
+ switch (_this69.state) {
8238
8324
  case "suspended":
8239
- _this63.notifyState("detached");
8325
+ _this69.notifyState("detached");
8240
8326
  return;
8241
8327
  case "detached":
8242
8328
  return;
8243
8329
  case "failed":
8244
8330
  throw new _ErrorInfo2("Unable to detach; channel state = failed", 90001, 400);
8245
8331
  default:
8246
- _this63.requestState("detaching");
8332
+ _this69.requestState("detaching");
8247
8333
  case "detaching":
8248
8334
  return new Promise((resolve, reject) => {
8249
- _this63.once(function (stateChange) {
8335
+ _this69.once(function (stateChange) {
8250
8336
  switch (this.event) {
8251
8337
  case "detached":
8252
8338
  resolve();
@@ -8275,22 +8361,22 @@ var ably = {exports: {}};
8275
8361
  }
8276
8362
  subscribe() {
8277
8363
  var _arguments3 = arguments,
8278
- _this64 = this;
8364
+ _this70 = this;
8279
8365
  return _asyncToGenerator(function* () {
8280
8366
  for (var _len0 = _arguments3.length, args = new Array(_len0), _key0 = 0; _key0 < _len0; _key0++) {
8281
8367
  args[_key0] = _arguments3[_key0];
8282
8368
  }
8283
8369
  var [event, listener] = _RealtimeChannel.processListenerArgs(args);
8284
- if (_this64.state === "failed") {
8285
- throw _ErrorInfo2.fromValues(_this64.invalidStateError());
8370
+ if (_this70.state === "failed") {
8371
+ throw _ErrorInfo2.fromValues(_this70.invalidStateError());
8286
8372
  }
8287
8373
  if (event && typeof event === "object" && !Array.isArray(event)) {
8288
- _this64.client._FilteredSubscriptions.subscribeFilter(_this64, event, listener);
8374
+ _this70.client._FilteredSubscriptions.subscribeFilter(_this70, event, listener);
8289
8375
  } else {
8290
- _this64.subscriptions.on(event, listener);
8376
+ _this70.subscriptions.on(event, listener);
8291
8377
  }
8292
- if (_this64.channelOptions.attachOnSubscribe !== false) {
8293
- return _this64.attach();
8378
+ if (_this70.channelOptions.attachOnSubscribe !== false) {
8379
+ return _this70.attach();
8294
8380
  } else {
8295
8381
  return null;
8296
8382
  }
@@ -8329,10 +8415,10 @@ var ably = {exports: {}};
8329
8415
  connectionManager.send(syncMessage);
8330
8416
  }
8331
8417
  sendMessage(msg) {
8332
- var _this65 = this;
8418
+ var _this71 = this;
8333
8419
  return _asyncToGenerator(function* () {
8334
8420
  return new Promise((resolve, reject) => {
8335
- _this65.connectionManager.send(msg, _this65.client.options.queueMessages, err => {
8421
+ _this71.connectionManager.send(msg, _this71.client.options.queueMessages, err => {
8336
8422
  if (err) {
8337
8423
  reject(err);
8338
8424
  } else {
@@ -8343,14 +8429,14 @@ var ably = {exports: {}};
8343
8429
  })();
8344
8430
  }
8345
8431
  sendPresence(presence) {
8346
- var _this66 = this;
8432
+ var _this72 = this;
8347
8433
  return _asyncToGenerator(function* () {
8348
8434
  var msg = fromValues({
8349
8435
  action: actions.PRESENCE,
8350
- channel: _this66.name,
8436
+ channel: _this72.name,
8351
8437
  presence
8352
8438
  });
8353
- return _this66.sendMessage(msg);
8439
+ return _this72.sendMessage(msg);
8354
8440
  })();
8355
8441
  }
8356
8442
  sendState(objectMessages) {
@@ -8363,61 +8449,61 @@ var ably = {exports: {}};
8363
8449
  }
8364
8450
  // Access to this method is synchronised by ConnectionManager#processChannelMessage, in order to synchronise access to the state stored in _decodingContext.
8365
8451
  processMessage(message) {
8366
- var _this67 = this;
8452
+ var _this73 = this;
8367
8453
  return _asyncToGenerator(function* () {
8368
8454
  if (message.action === actions.ATTACHED || message.action === actions.MESSAGE || message.action === actions.PRESENCE || message.action === actions.OBJECT || message.action === actions.ANNOTATION) {
8369
- _this67.setChannelSerial(message.channelSerial);
8455
+ _this73.setChannelSerial(message.channelSerial);
8370
8456
  }
8371
8457
  var syncChannelSerial,
8372
8458
  isSync = false;
8373
8459
  switch (message.action) {
8374
8460
  case actions.ATTACHED:
8375
8461
  {
8376
- _this67.properties.attachSerial = message.channelSerial;
8377
- _this67._mode = message.getMode();
8378
- _this67.params = message.params || {};
8462
+ _this73.properties.attachSerial = message.channelSerial;
8463
+ _this73._mode = message.getMode();
8464
+ _this73.params = message.params || {};
8379
8465
  var modesFromFlags = message.decodeModesFromFlags();
8380
- _this67.modes = modesFromFlags && _allToLowerCase(modesFromFlags) || void 0;
8466
+ _this73.modes = modesFromFlags && _allToLowerCase(modesFromFlags) || void 0;
8381
8467
  var resumed = message.hasFlag("RESUMED");
8382
8468
  var hasPresence = message.hasFlag("HAS_PRESENCE");
8383
8469
  var hasBacklog = message.hasFlag("HAS_BACKLOG");
8384
8470
  var hasObjects = message.hasFlag("HAS_OBJECTS");
8385
- if (_this67.state === "attached") {
8471
+ if (_this73.state === "attached") {
8386
8472
  if (!resumed) {
8387
- if (_this67._presence) {
8388
- _this67._presence.onAttached(hasPresence);
8473
+ if (_this73._presence) {
8474
+ _this73._presence.onAttached(hasPresence);
8389
8475
  }
8390
- if (_this67._objects) {
8391
- _this67._objects.onAttached(hasObjects);
8476
+ if (_this73._objects) {
8477
+ _this73._objects.onAttached(hasObjects);
8392
8478
  }
8393
8479
  }
8394
- var change = new channelstatechange_default(_this67.state, _this67.state, resumed, hasBacklog, message.error);
8395
- _this67._allChannelChanges.emit("update", change);
8396
- if (!resumed || _this67.channelOptions.updateOnAttached) {
8397
- _this67.emit("update", change);
8480
+ var change = new channelstatechange_default(_this73.state, _this73.state, resumed, hasBacklog, message.error);
8481
+ _this73._allChannelChanges.emit("update", change);
8482
+ if (!resumed || _this73.channelOptions.updateOnAttached) {
8483
+ _this73.emit("update", change);
8398
8484
  }
8399
- } else if (_this67.state === "detaching") {
8400
- _this67.checkPendingState();
8485
+ } else if (_this73.state === "detaching") {
8486
+ _this73.checkPendingState();
8401
8487
  } else {
8402
- _this67.notifyState("attached", message.error, resumed, hasPresence, hasBacklog, hasObjects);
8488
+ _this73.notifyState("attached", message.error, resumed, hasPresence, hasBacklog, hasObjects);
8403
8489
  }
8404
8490
  break;
8405
8491
  }
8406
8492
  case actions.DETACHED:
8407
8493
  {
8408
8494
  var detachErr = message.error ? _ErrorInfo2.fromValues(message.error) : new _ErrorInfo2("Channel detached", 90001, 404);
8409
- if (_this67.state === "detaching") {
8410
- _this67.notifyState("detached", detachErr);
8411
- } else if (_this67.state === "attaching") {
8412
- _this67.notifyState("suspended", detachErr);
8413
- } else if (_this67.state === "attached" || _this67.state === "suspended") {
8414
- _this67.requestState("attaching", detachErr);
8495
+ if (_this73.state === "detaching") {
8496
+ _this73.notifyState("detached", detachErr);
8497
+ } else if (_this73.state === "attaching") {
8498
+ _this73.notifyState("suspended", detachErr);
8499
+ } else if (_this73.state === "attached" || _this73.state === "suspended") {
8500
+ _this73.requestState("attaching", detachErr);
8415
8501
  }
8416
8502
  break;
8417
8503
  }
8418
8504
  case actions.SYNC:
8419
8505
  isSync = true;
8420
- syncChannelSerial = _this67.syncChannelSerial = message.channelSerial;
8506
+ syncChannelSerial = _this73.syncChannelSerial = message.channelSerial;
8421
8507
  if (!message.presence) break;
8422
8508
  case actions.PRESENCE:
8423
8509
  {
@@ -8425,45 +8511,45 @@ var ably = {exports: {}};
8425
8511
  break;
8426
8512
  }
8427
8513
  populateFieldsFromParent(message);
8428
- var options = _this67.channelOptions;
8429
- if (_this67._presence) {
8514
+ var options = _this73.channelOptions;
8515
+ if (_this73._presence) {
8430
8516
  var presenceMessages = yield Promise.all(message.presence.map(wpm => {
8431
- return wpm.decode(options, _this67.logger);
8517
+ return wpm.decode(options, _this73.logger);
8432
8518
  }));
8433
- _this67._presence.setPresence(presenceMessages, isSync, syncChannelSerial);
8519
+ _this73._presence.setPresence(presenceMessages, isSync, syncChannelSerial);
8434
8520
  }
8435
8521
  break;
8436
8522
  }
8437
8523
  case actions.OBJECT:
8438
8524
  case actions.OBJECT_SYNC:
8439
8525
  {
8440
- if (!_this67._objects || !message.state) {
8526
+ if (!_this73._objects || !message.state) {
8441
8527
  return;
8442
8528
  }
8443
8529
  populateFieldsFromParent(message);
8444
- var format = _this67.client.connection.connectionManager.getActiveTransportFormat();
8445
- var objectMessages = message.state.map(om => om.decode(_this67.client, format));
8530
+ var format = _this73.client.connection.connectionManager.getActiveTransportFormat();
8531
+ var objectMessages = message.state.map(om => om.decode(_this73.client, format));
8446
8532
  if (message.action === actions.OBJECT) {
8447
- _this67._objects.handleObjectMessages(objectMessages);
8533
+ _this73._objects.handleObjectMessages(objectMessages);
8448
8534
  } else {
8449
- _this67._objects.handleObjectSyncMessages(objectMessages, message.channelSerial);
8535
+ _this73._objects.handleObjectSyncMessages(objectMessages, message.channelSerial);
8450
8536
  }
8451
8537
  break;
8452
8538
  }
8453
8539
  case actions.MESSAGE:
8454
8540
  {
8455
- if (_this67.state !== "attached") {
8456
- logger_default.logAction(_this67.logger, logger_default.LOG_MAJOR, "RealtimeChannel.processMessage()", 'Message "' + message.id + '" skipped as this channel "' + _this67.name + '" state is not "attached" (state is "' + _this67.state + '").');
8541
+ if (_this73.state !== "attached") {
8542
+ logger_default.logAction(_this73.logger, logger_default.LOG_MAJOR, "RealtimeChannel.processMessage()", 'Message "' + message.id + '" skipped as this channel "' + _this73.name + '" state is not "attached" (state is "' + _this73.state + '").');
8457
8543
  return;
8458
8544
  }
8459
8545
  populateFieldsFromParent(message);
8460
8546
  var encoded = message.messages,
8461
8547
  firstMessage = encoded[0],
8462
8548
  lastMessage = encoded[encoded.length - 1];
8463
- if (firstMessage.extras && firstMessage.extras.delta && firstMessage.extras.delta.from !== _this67._lastPayload.messageId) {
8464
- var msg = 'Delta message decode failure - previous message not available for message "' + message.id + '" on this channel "' + _this67.name + '".';
8465
- logger_default.logAction(_this67.logger, logger_default.LOG_ERROR, "RealtimeChannel.processMessage()", msg);
8466
- _this67._startDecodeFailureRecovery(new _ErrorInfo2(msg, 40018, 400));
8549
+ if (firstMessage.extras && firstMessage.extras.delta && firstMessage.extras.delta.from !== _this73._lastPayload.messageId) {
8550
+ var msg = 'Delta message decode failure - previous message not available for message "' + message.id + '" on this channel "' + _this73.name + '".';
8551
+ logger_default.logAction(_this73.logger, logger_default.LOG_ERROR, "RealtimeChannel.processMessage()", msg);
8552
+ _this73._startDecodeFailureRecovery(new _ErrorInfo2(msg, 40018, 400));
8467
8553
  break;
8468
8554
  }
8469
8555
  var messages = [];
@@ -8471,34 +8557,34 @@ var ably = {exports: {}};
8471
8557
  var {
8472
8558
  decoded,
8473
8559
  err
8474
- } = yield encoded[i].decodeWithErr(_this67._decodingContext, _this67.logger);
8560
+ } = yield encoded[i].decodeWithErr(_this73._decodingContext, _this73.logger);
8475
8561
  messages[i] = decoded;
8476
8562
  if (err) {
8477
8563
  switch (err.code) {
8478
8564
  case 40018:
8479
- _this67._startDecodeFailureRecovery(err);
8565
+ _this73._startDecodeFailureRecovery(err);
8480
8566
  return;
8481
8567
  case 40019:
8482
8568
  case 40021:
8483
- _this67.notifyState("failed", err);
8569
+ _this73.notifyState("failed", err);
8484
8570
  return;
8485
8571
  }
8486
8572
  }
8487
8573
  }
8488
- _this67._lastPayload.messageId = lastMessage.id;
8489
- _this67._lastPayload.protocolMessageChannelSerial = message.channelSerial;
8490
- _this67.onEvent(messages);
8574
+ _this73._lastPayload.messageId = lastMessage.id;
8575
+ _this73._lastPayload.protocolMessageChannelSerial = message.channelSerial;
8576
+ _this73.onEvent(messages);
8491
8577
  break;
8492
8578
  }
8493
8579
  case actions.ANNOTATION:
8494
8580
  {
8495
8581
  populateFieldsFromParent(message);
8496
- var _options = _this67.channelOptions;
8497
- if (_this67._annotations) {
8582
+ var _options = _this73.channelOptions;
8583
+ if (_this73._annotations) {
8498
8584
  var annotations = yield Promise.all((message.annotations || []).map(wpm => {
8499
- return wpm.decode(_options, _this67.logger);
8585
+ return wpm.decode(_options, _this73.logger);
8500
8586
  }));
8501
- _this67._annotations._processIncoming(annotations);
8587
+ _this73._annotations._processIncoming(annotations);
8502
8588
  }
8503
8589
  break;
8504
8590
  }
@@ -8506,14 +8592,14 @@ var ably = {exports: {}};
8506
8592
  {
8507
8593
  var _err = message.error;
8508
8594
  if (_err && _err.code == 80016) {
8509
- _this67.checkPendingState();
8595
+ _this73.checkPendingState();
8510
8596
  } else {
8511
- _this67.notifyState("failed", _ErrorInfo2.fromValues(_err));
8597
+ _this73.notifyState("failed", _ErrorInfo2.fromValues(_err));
8512
8598
  }
8513
8599
  break;
8514
8600
  }
8515
8601
  default:
8516
- logger_default.logAction(_this67.logger, logger_default.LOG_MAJOR, "RealtimeChannel.processMessage()", "Protocol error: unrecognised message action (" + message.action + ")");
8602
+ logger_default.logAction(_this73.logger, logger_default.LOG_MAJOR, "RealtimeChannel.processMessage()", "Protocol error: unrecognised message action (" + message.action + ")");
8517
8603
  }
8518
8604
  })();
8519
8605
  }
@@ -8669,9 +8755,45 @@ var ably = {exports: {}};
8669
8755
  }
8670
8756
  }
8671
8757
  status() {
8672
- var _this68 = this;
8758
+ var _this74 = this;
8759
+ return _asyncToGenerator(function* () {
8760
+ return _this74.client.rest.channelMixin.status(_this74);
8761
+ })();
8762
+ }
8763
+ getMessage(serialOrMessage) {
8764
+ var _this75 = this;
8673
8765
  return _asyncToGenerator(function* () {
8674
- return _this68.client.rest.channelMixin.status(_this68);
8766
+ logger_default.logAction(_this75.logger, logger_default.LOG_MICRO, "RealtimeChannel.getMessage()", "channel = " + _this75.name);
8767
+ var restMixin = _this75.client.rest.channelMixin;
8768
+ return restMixin.getMessage(_this75, serialOrMessage);
8769
+ })();
8770
+ }
8771
+ updateMessage(message, operation, params) {
8772
+ var _this76 = this;
8773
+ return _asyncToGenerator(function* () {
8774
+ logger_default.logAction(_this76.logger, logger_default.LOG_MICRO, "RealtimeChannel.updateMessage()", "channel = " + _this76.name);
8775
+ var restMixin = _this76.client.rest.channelMixin;
8776
+ return restMixin.updateDeleteMessage(_this76, {
8777
+ isDelete: false
8778
+ }, message, operation, params);
8779
+ })();
8780
+ }
8781
+ deleteMessage(message, operation, params) {
8782
+ var _this77 = this;
8783
+ return _asyncToGenerator(function* () {
8784
+ logger_default.logAction(_this77.logger, logger_default.LOG_MICRO, "RealtimeChannel.deleteMessage()", "channel = " + _this77.name);
8785
+ var restMixin = _this77.client.rest.channelMixin;
8786
+ return restMixin.updateDeleteMessage(_this77, {
8787
+ isDelete: true
8788
+ }, message, operation, params);
8789
+ })();
8790
+ }
8791
+ getMessageVersions(serialOrMessage, params) {
8792
+ var _this78 = this;
8793
+ return _asyncToGenerator(function* () {
8794
+ logger_default.logAction(_this78.logger, logger_default.LOG_MICRO, "RealtimeChannel.getMessageVersions()", "channel = " + _this78.name);
8795
+ var restMixin = _this78.client.rest.channelMixin;
8796
+ return restMixin.getMessageVersions(_this78, serialOrMessage, params);
8675
8797
  })();
8676
8798
  }
8677
8799
  };
@@ -8690,31 +8812,31 @@ var ably = {exports: {}};
8690
8812
  this.subscriptions = new eventemitter_default(this.logger);
8691
8813
  }
8692
8814
  publish(msgOrSerial, annotationValues) {
8693
- var _this69 = this;
8815
+ var _this79 = this;
8694
8816
  return _asyncToGenerator(function* () {
8695
- var channelName = _this69.channel.name;
8817
+ var channelName = _this79.channel.name;
8696
8818
  var annotation = constructValidateAnnotation(msgOrSerial, annotationValues);
8697
8819
  var wireAnnotation = yield annotation.encode();
8698
- _this69.channel.throwIfUnpublishableState();
8699
- logger_default.logAction(_this69.logger, logger_default.LOG_MICRO, "RealtimeAnnotations.publish()", "channelName = " + channelName + ", sending annotation with messageSerial = " + annotation.messageSerial + ", type = " + annotation.type);
8820
+ _this79.channel.throwIfUnpublishableState();
8821
+ logger_default.logAction(_this79.logger, logger_default.LOG_MICRO, "RealtimeAnnotations.publish()", "channelName = " + channelName + ", sending annotation with messageSerial = " + annotation.messageSerial + ", type = " + annotation.type);
8700
8822
  var pm = fromValues({
8701
8823
  action: actions.ANNOTATION,
8702
8824
  channel: channelName,
8703
8825
  annotations: [wireAnnotation]
8704
8826
  });
8705
- return _this69.channel.sendMessage(pm);
8827
+ return _this79.channel.sendMessage(pm);
8706
8828
  })();
8707
8829
  }
8708
8830
  delete(msgOrSerial, annotationValues) {
8709
- var _this70 = this;
8831
+ var _this80 = this;
8710
8832
  return _asyncToGenerator(function* () {
8711
8833
  annotationValues.action = "annotation.delete";
8712
- return _this70.publish(msgOrSerial, annotationValues);
8834
+ return _this80.publish(msgOrSerial, annotationValues);
8713
8835
  })();
8714
8836
  }
8715
8837
  subscribe() {
8716
8838
  var _arguments4 = arguments,
8717
- _this71 = this;
8839
+ _this81 = this;
8718
8840
  return _asyncToGenerator(function* () {
8719
8841
  for (var _len10 = _arguments4.length, _args = new Array(_len10), _key10 = 0; _key10 < _len10; _key10++) {
8720
8842
  _args[_key10] = _arguments4[_key10];
@@ -8722,15 +8844,15 @@ var ably = {exports: {}};
8722
8844
  var args = realtimechannel_default.processListenerArgs(_args);
8723
8845
  var event = args[0];
8724
8846
  var listener = args[1];
8725
- var channel = _this71.channel;
8847
+ var channel = _this81.channel;
8726
8848
  if (channel.state === "failed") {
8727
8849
  throw _ErrorInfo2.fromValues(channel.invalidStateError());
8728
8850
  }
8729
- _this71.subscriptions.on(event, listener);
8730
- if (_this71.channel.channelOptions.attachOnSubscribe !== false) {
8851
+ _this81.subscriptions.on(event, listener);
8852
+ if (_this81.channel.channelOptions.attachOnSubscribe !== false) {
8731
8853
  yield channel.attach();
8732
8854
  }
8733
- if ((_this71.channel.state === "attached" && _this71.channel._mode & flags.ANNOTATION_SUBSCRIBE) === 0) {
8855
+ if ((_this81.channel.state === "attached" && _this81.channel._mode & flags.ANNOTATION_SUBSCRIBE) === 0) {
8734
8856
  throw new _ErrorInfo2("You are trying to add an annotation listener, but you haven't requested the annotation_subscribe channel mode in ChannelOptions, so this won't do anything (we only deliver annotations to clients who have explicitly requested them)", 93001, 400);
8735
8857
  }
8736
8858
  })();
@@ -8750,9 +8872,9 @@ var ably = {exports: {}};
8750
8872
  }
8751
8873
  }
8752
8874
  get(msgOrSerial, params) {
8753
- var _this72 = this;
8875
+ var _this82 = this;
8754
8876
  return _asyncToGenerator(function* () {
8755
- return restannotations_default.prototype.get.call(_this72, msgOrSerial, params);
8877
+ return restannotations_default.prototype.get.call(_this82, msgOrSerial, params);
8756
8878
  })();
8757
8879
  }
8758
8880
  };
@@ -10414,23 +10536,23 @@ var ably = {exports: {}};
10414
10536
  }
10415
10537
  }
10416
10538
  processChannelMessage(message) {
10417
- var _this73 = this;
10539
+ var _this83 = this;
10418
10540
  return _asyncToGenerator(function* () {
10419
- yield _this73.realtime.channels.processChannelMessage(message);
10541
+ yield _this83.realtime.channels.processChannelMessage(message);
10420
10542
  })();
10421
10543
  }
10422
10544
  ping() {
10423
- var _this74 = this;
10545
+ var _this84 = this;
10424
10546
  return _asyncToGenerator(function* () {
10425
10547
  var _a2;
10426
- if (_this74.state.state !== "connected") {
10548
+ if (_this84.state.state !== "connected") {
10427
10549
  throw new _ErrorInfo2("Unable to ping service; not connected", 4e4, 400);
10428
10550
  }
10429
- var transport = (_a2 = _this74.activeProtocol) == null ? void 0 : _a2.getTransport();
10551
+ var transport = (_a2 = _this84.activeProtocol) == null ? void 0 : _a2.getTransport();
10430
10552
  if (!transport) {
10431
- throw _this74.getStateError();
10553
+ throw _this84.getStateError();
10432
10554
  }
10433
- logger_default.logAction(_this74.logger, logger_default.LOG_MINOR, "ConnectionManager.ping()", "transport = " + transport);
10555
+ logger_default.logAction(_this84.logger, logger_default.LOG_MINOR, "ConnectionManager.ping()", "transport = " + transport);
10434
10556
  var pingStart = Date.now();
10435
10557
  var id = _cheapRandStr();
10436
10558
  return _withTimeoutAsync(new Promise(resolve => {
@@ -10442,7 +10564,7 @@ var ably = {exports: {}};
10442
10564
  };
10443
10565
  transport.on("heartbeat", onHeartbeat);
10444
10566
  transport.ping(id);
10445
- }), _this74.options.timeouts.realtimeRequestTimeout, "Timeout waiting for heartbeat response");
10567
+ }), _this84.options.timeouts.realtimeRequestTimeout, "Timeout waiting for heartbeat response");
10446
10568
  })();
10447
10569
  }
10448
10570
  abort(error) {
@@ -10591,10 +10713,10 @@ var ably = {exports: {}};
10591
10713
  });
10592
10714
  }
10593
10715
  ping() {
10594
- var _this75 = this;
10716
+ var _this85 = this;
10595
10717
  return _asyncToGenerator(function* () {
10596
- logger_default.logAction(_this75.logger, logger_default.LOG_MINOR, "Connection.ping()", "");
10597
- return _this75.connectionManager.ping();
10718
+ logger_default.logAction(_this85.logger, logger_default.LOG_MINOR, "Connection.ping()", "");
10719
+ return _this85.connectionManager.ping();
10598
10720
  })();
10599
10721
  }
10600
10722
  close() {
@@ -10650,6 +10772,9 @@ var ably = {exports: {}};
10650
10772
  get channels() {
10651
10773
  return this._channels;
10652
10774
  }
10775
+ get clientId() {
10776
+ return this.auth.clientId;
10777
+ }
10653
10778
  connect() {
10654
10779
  logger_default.logAction(this.logger, logger_default.LOG_MINOR, "Realtime.connect()", "");
10655
10780
  this.connection.connect();
@@ -10690,16 +10815,16 @@ var ably = {exports: {}};
10690
10815
  }
10691
10816
  // Access to this method is synchronised by ConnectionManager#processChannelMessage.
10692
10817
  processChannelMessage(msg) {
10693
- var _this76 = this;
10818
+ var _this86 = this;
10694
10819
  return _asyncToGenerator(function* () {
10695
10820
  var channelName = msg.channel;
10696
10821
  if (channelName === void 0) {
10697
- logger_default.logAction(_this76.logger, logger_default.LOG_ERROR, "Channels.processChannelMessage()", "received event unspecified channel, action = " + msg.action);
10822
+ logger_default.logAction(_this86.logger, logger_default.LOG_ERROR, "Channels.processChannelMessage()", "received event unspecified channel, action = " + msg.action);
10698
10823
  return;
10699
10824
  }
10700
- var channel = _this76.all[channelName];
10825
+ var channel = _this86.all[channelName];
10701
10826
  if (!channel) {
10702
- logger_default.logAction(_this76.logger, logger_default.LOG_ERROR, "Channels.processChannelMessage()", "received event for non-existent channel: " + channelName);
10827
+ logger_default.logAction(_this86.logger, logger_default.LOG_ERROR, "Channels.processChannelMessage()", "received event for non-existent channel: " + channelName);
10703
10828
  return;
10704
10829
  }
10705
10830
  yield channel.processMessage(msg);
@@ -10954,43 +11079,43 @@ var ably = {exports: {}};
10954
11079
  this.pendingPresence = [];
10955
11080
  }
10956
11081
  enter(data) {
10957
- var _this77 = this;
11082
+ var _this87 = this;
10958
11083
  return _asyncToGenerator(function* () {
10959
- if (isAnonymousOrWildcard(_this77)) {
11084
+ if (isAnonymousOrWildcard(_this87)) {
10960
11085
  throw new _ErrorInfo2("clientId must be specified to enter a presence channel", 40012, 400);
10961
11086
  }
10962
- return _this77._enterOrUpdateClient(void 0, void 0, data, "enter");
11087
+ return _this87._enterOrUpdateClient(void 0, void 0, data, "enter");
10963
11088
  })();
10964
11089
  }
10965
11090
  update(data) {
10966
- var _this78 = this;
11091
+ var _this88 = this;
10967
11092
  return _asyncToGenerator(function* () {
10968
- if (isAnonymousOrWildcard(_this78)) {
11093
+ if (isAnonymousOrWildcard(_this88)) {
10969
11094
  throw new _ErrorInfo2("clientId must be specified to update presence data", 40012, 400);
10970
11095
  }
10971
- return _this78._enterOrUpdateClient(void 0, void 0, data, "update");
11096
+ return _this88._enterOrUpdateClient(void 0, void 0, data, "update");
10972
11097
  })();
10973
11098
  }
10974
11099
  enterClient(clientId, data) {
10975
- var _this79 = this;
11100
+ var _this89 = this;
10976
11101
  return _asyncToGenerator(function* () {
10977
- return _this79._enterOrUpdateClient(void 0, clientId, data, "enter");
11102
+ return _this89._enterOrUpdateClient(void 0, clientId, data, "enter");
10978
11103
  })();
10979
11104
  }
10980
11105
  updateClient(clientId, data) {
10981
- var _this80 = this;
11106
+ var _this90 = this;
10982
11107
  return _asyncToGenerator(function* () {
10983
- return _this80._enterOrUpdateClient(void 0, clientId, data, "update");
11108
+ return _this90._enterOrUpdateClient(void 0, clientId, data, "update");
10984
11109
  })();
10985
11110
  }
10986
11111
  _enterOrUpdateClient(id, clientId, data, action) {
10987
- var _this81 = this;
11112
+ var _this91 = this;
10988
11113
  return _asyncToGenerator(function* () {
10989
- var channel = _this81.channel;
11114
+ var channel = _this91.channel;
10990
11115
  if (!channel.connectionManager.activeState()) {
10991
11116
  throw channel.connectionManager.getError();
10992
11117
  }
10993
- logger_default.logAction(_this81.logger, logger_default.LOG_MICRO, "RealtimePresence." + action + "Client()", "channel = " + channel.name + ", id = " + id + ", client = " + (clientId || "(implicit) " + getClientId(_this81)));
11118
+ logger_default.logAction(_this91.logger, logger_default.LOG_MICRO, "RealtimePresence." + action + "Client()", "channel = " + channel.name + ", id = " + id + ", client = " + (clientId || "(implicit) " + getClientId(_this91)));
10994
11119
  var presence = presencemessage_default.fromData(data);
10995
11120
  presence.action = action;
10996
11121
  if (id) {
@@ -11008,7 +11133,7 @@ var ably = {exports: {}};
11008
11133
  channel.attach();
11009
11134
  case "attaching":
11010
11135
  return new Promise((resolve, reject) => {
11011
- _this81.pendingPresence.push({
11136
+ _this91.pendingPresence.push({
11012
11137
  presence: wirePresMsg,
11013
11138
  callback: err => err ? reject(err) : resolve()
11014
11139
  });
@@ -11023,22 +11148,22 @@ var ably = {exports: {}};
11023
11148
  })();
11024
11149
  }
11025
11150
  leave(data) {
11026
- var _this82 = this;
11151
+ var _this92 = this;
11027
11152
  return _asyncToGenerator(function* () {
11028
- if (isAnonymousOrWildcard(_this82)) {
11153
+ if (isAnonymousOrWildcard(_this92)) {
11029
11154
  throw new _ErrorInfo2("clientId must have been specified to enter or leave a presence channel", 40012, 400);
11030
11155
  }
11031
- return _this82.leaveClient(void 0, data);
11156
+ return _this92.leaveClient(void 0, data);
11032
11157
  })();
11033
11158
  }
11034
11159
  leaveClient(clientId, data) {
11035
- var _this83 = this;
11160
+ var _this93 = this;
11036
11161
  return _asyncToGenerator(function* () {
11037
- var channel = _this83.channel;
11162
+ var channel = _this93.channel;
11038
11163
  if (!channel.connectionManager.activeState()) {
11039
11164
  throw channel.connectionManager.getError();
11040
11165
  }
11041
- logger_default.logAction(_this83.logger, logger_default.LOG_MICRO, "RealtimePresence.leaveClient()", "leaving; channel = " + _this83.channel.name + ", client = " + clientId);
11166
+ logger_default.logAction(_this93.logger, logger_default.LOG_MICRO, "RealtimePresence.leaveClient()", "leaving; channel = " + _this93.channel.name + ", client = " + clientId);
11042
11167
  var presence = presencemessage_default.fromData(data);
11043
11168
  presence.action = "leave";
11044
11169
  if (clientId) {
@@ -11050,7 +11175,7 @@ var ably = {exports: {}};
11050
11175
  return channel.sendPresence([wirePresMsg]);
11051
11176
  case "attaching":
11052
11177
  return new Promise((resolve, reject) => {
11053
- _this83.pendingPresence.push({
11178
+ _this93.pendingPresence.push({
11054
11179
  presence: wirePresMsg,
11055
11180
  callback: err => err ? reject(err) : resolve()
11056
11181
  });
@@ -11066,14 +11191,14 @@ var ably = {exports: {}};
11066
11191
  })();
11067
11192
  }
11068
11193
  get(params) {
11069
- var _this84 = this;
11194
+ var _this94 = this;
11070
11195
  return _asyncToGenerator(function* () {
11071
11196
  var waitForSync = !params || ("waitForSync" in params ? params.waitForSync : true);
11072
11197
  return new Promise((resolve, reject) => {
11073
11198
  function returnMembers(members) {
11074
11199
  resolve(params ? members.list(params) : members.values());
11075
11200
  }
11076
- if (_this84.channel.state === "suspended") {
11201
+ if (_this94.channel.state === "suspended") {
11077
11202
  if (waitForSync) {
11078
11203
  reject(_ErrorInfo2.fromValues({
11079
11204
  statusCode: 400,
@@ -11081,12 +11206,12 @@ var ably = {exports: {}};
11081
11206
  message: "Presence state is out of sync due to channel being in the SUSPENDED state"
11082
11207
  }));
11083
11208
  } else {
11084
- returnMembers(_this84.members);
11209
+ returnMembers(_this94.members);
11085
11210
  }
11086
11211
  return;
11087
11212
  }
11088
- waitAttached(_this84.channel, err => reject(err), () => {
11089
- var members = _this84.members;
11213
+ waitAttached(_this94.channel, err => reject(err), () => {
11214
+ var members = _this94.members;
11090
11215
  if (waitForSync) {
11091
11216
  members.waitSync(function () {
11092
11217
  returnMembers(members);
@@ -11099,19 +11224,19 @@ var ably = {exports: {}};
11099
11224
  })();
11100
11225
  }
11101
11226
  history(params) {
11102
- var _this85 = this;
11227
+ var _this95 = this;
11103
11228
  return _asyncToGenerator(function* () {
11104
- logger_default.logAction(_this85.logger, logger_default.LOG_MICRO, "RealtimePresence.history()", "channel = " + _this85.name);
11105
- var restMixin = _this85.channel.client.rest.presenceMixin;
11229
+ logger_default.logAction(_this95.logger, logger_default.LOG_MICRO, "RealtimePresence.history()", "channel = " + _this95.name);
11230
+ var restMixin = _this95.channel.client.rest.presenceMixin;
11106
11231
  if (params && params.untilAttach) {
11107
- if (_this85.channel.state === "attached") {
11232
+ if (_this95.channel.state === "attached") {
11108
11233
  delete params.untilAttach;
11109
- params.from_serial = _this85.channel.properties.attachSerial;
11234
+ params.from_serial = _this95.channel.properties.attachSerial;
11110
11235
  } else {
11111
- throw new _ErrorInfo2("option untilAttach requires the channel to be attached, was: " + _this85.channel.state, 4e4, 400);
11236
+ throw new _ErrorInfo2("option untilAttach requires the channel to be attached, was: " + _this95.channel.state, 4e4, 400);
11112
11237
  }
11113
11238
  }
11114
- return restMixin.history(_this85, params);
11239
+ return restMixin.history(_this95, params);
11115
11240
  })();
11116
11241
  }
11117
11242
  setPresence(presenceSet, isSync, syncChannelSerial) {
@@ -11239,7 +11364,7 @@ var ably = {exports: {}};
11239
11364
  }
11240
11365
  subscribe() {
11241
11366
  var _arguments5 = arguments,
11242
- _this86 = this;
11367
+ _this96 = this;
11243
11368
  return _asyncToGenerator(function* () {
11244
11369
  for (var _len12 = _arguments5.length, _args = new Array(_len12), _key12 = 0; _key12 < _len12; _key12++) {
11245
11370
  _args[_key12] = _arguments5[_key12];
@@ -11247,11 +11372,11 @@ var ably = {exports: {}};
11247
11372
  var args = realtimechannel_default.processListenerArgs(_args);
11248
11373
  var event = args[0];
11249
11374
  var listener = args[1];
11250
- var channel = _this86.channel;
11375
+ var channel = _this96.channel;
11251
11376
  if (channel.state === "failed") {
11252
11377
  throw _ErrorInfo2.fromValues(channel.invalidStateError());
11253
11378
  }
11254
- _this86.subscriptions.on(event, listener);
11379
+ _this96.subscriptions.on(event, listener);
11255
11380
  if (channel.channelOptions.attachOnSubscribe !== false) {
11256
11381
  yield channel.attach();
11257
11382
  }
@@ -11423,8 +11548,8 @@ var ably = {exports: {}};
11423
11548
  isRef: !!((_f = (_e = m.extras) == null ? void 0 : _e.ref) == null ? void 0 : _f.timeserial),
11424
11549
  clientId: m.clientId
11425
11550
  };
11426
- if (Object.entries(filter).find(_ref10 => {
11427
- var [key, value] = _ref10;
11551
+ if (Object.entries(filter).find(_ref12 => {
11552
+ var [key, value] = _ref12;
11428
11553
  return value !== void 0 ? mapping[key] !== value : false;
11429
11554
  })) {
11430
11555
  return;
@@ -11452,8 +11577,8 @@ var ably = {exports: {}};
11452
11577
  return [];
11453
11578
  }
11454
11579
  if (!realListener && filter) {
11455
- return Array.from(channel.filteredSubscriptions.entries()).map(_ref11 => {
11456
- var [key, filterMaps] = _ref11;
11580
+ return Array.from(channel.filteredSubscriptions.entries()).map(_ref13 => {
11581
+ var [key, filterMaps] = _ref13;
11457
11582
  var _a2;
11458
11583
  var listenerMaps = filterMaps.get(filter);
11459
11584
  filterMaps.delete(filter);
@@ -11925,38 +12050,38 @@ var ably = {exports: {}};
11925
12050
  return output;
11926
12051
  }
11927
12052
  encrypt(plaintext) {
11928
- var _this87 = this;
12053
+ var _this97 = this;
11929
12054
  return _asyncToGenerator(function* () {
11930
- logger_default.logAction(_this87.logger, logger_default.LOG_MICRO, "CBCCipher.encrypt()", "");
11931
- var iv = yield _this87.getIv();
11932
- var cryptoKey = yield crypto.subtle.importKey("raw", _this87.key, _this87.webCryptoAlgorithm, false, ["encrypt"]);
12055
+ logger_default.logAction(_this97.logger, logger_default.LOG_MICRO, "CBCCipher.encrypt()", "");
12056
+ var iv = yield _this97.getIv();
12057
+ var cryptoKey = yield crypto.subtle.importKey("raw", _this97.key, _this97.webCryptoAlgorithm, false, ["encrypt"]);
11933
12058
  var ciphertext = yield crypto.subtle.encrypt({
11934
- name: _this87.webCryptoAlgorithm,
12059
+ name: _this97.webCryptoAlgorithm,
11935
12060
  iv
11936
12061
  }, cryptoKey, plaintext);
11937
- return _this87.concat(iv, ciphertext);
12062
+ return _this97.concat(iv, ciphertext);
11938
12063
  })();
11939
12064
  }
11940
12065
  decrypt(ciphertext) {
11941
- var _this88 = this;
12066
+ var _this98 = this;
11942
12067
  return _asyncToGenerator(function* () {
11943
- logger_default.logAction(_this88.logger, logger_default.LOG_MICRO, "CBCCipher.decrypt()", "");
12068
+ logger_default.logAction(_this98.logger, logger_default.LOG_MICRO, "CBCCipher.decrypt()", "");
11944
12069
  var ciphertextArrayBuffer = bufferUtils.toArrayBuffer(ciphertext);
11945
12070
  var iv = ciphertextArrayBuffer.slice(0, DEFAULT_BLOCKLENGTH);
11946
12071
  var ciphertextBody = ciphertextArrayBuffer.slice(DEFAULT_BLOCKLENGTH);
11947
- var cryptoKey = yield crypto.subtle.importKey("raw", _this88.key, _this88.webCryptoAlgorithm, false, ["decrypt"]);
12072
+ var cryptoKey = yield crypto.subtle.importKey("raw", _this98.key, _this98.webCryptoAlgorithm, false, ["decrypt"]);
11948
12073
  return crypto.subtle.decrypt({
11949
- name: _this88.webCryptoAlgorithm,
12074
+ name: _this98.webCryptoAlgorithm,
11950
12075
  iv
11951
12076
  }, cryptoKey, ciphertextBody);
11952
12077
  })();
11953
12078
  }
11954
12079
  getIv() {
11955
- var _this89 = this;
12080
+ var _this99 = this;
11956
12081
  return _asyncToGenerator(function* () {
11957
- if (_this89.iv) {
11958
- var iv = _this89.iv;
11959
- _this89.iv = null;
12082
+ if (_this99.iv) {
12083
+ var iv = _this99.iv;
12084
+ _this99.iv = null;
11960
12085
  return iv;
11961
12086
  }
11962
12087
  var randomBlock = yield config.getRandomArrayBuffer(DEFAULT_BLOCKLENGTH);
@@ -12003,7 +12128,7 @@ var ably = {exports: {}};
12003
12128
  if (Platform.Config.xhrSupported && xhrRequestImplementation) {
12004
12129
  this.supportsAuthHeaders = true;
12005
12130
  this.Request = /*#__PURE__*/function () {
12006
- var _ref12 = _asyncToGenerator(function* (method, uri, headers, params, body) {
12131
+ var _ref14 = _asyncToGenerator(function* (method, uri, headers, params, body) {
12007
12132
  return new Promise(resolve => {
12008
12133
  var _a3;
12009
12134
  var req = xhrRequestImplementation.createRequest(uri, headers, params, body, XHRStates_default.REQ_SEND, (_a3 = client && client.options.timeouts) != null ? _a3 : null, this.logger, method);
@@ -12017,8 +12142,8 @@ var ably = {exports: {}};
12017
12142
  req.exec();
12018
12143
  });
12019
12144
  });
12020
- return function (_x82, _x83, _x84, _x85, _x86) {
12021
- return _ref12.apply(this, arguments);
12145
+ return function (_x88, _x89, _x90, _x91, _x92) {
12146
+ return _ref14.apply(this, arguments);
12022
12147
  };
12023
12148
  }();
12024
12149
  if (client == null ? void 0 : client.options.disableConnectivityCheck) {
@@ -12043,11 +12168,11 @@ var ably = {exports: {}};
12043
12168
  } else if (Platform.Config.fetchSupported && fetchRequestImplementation) {
12044
12169
  this.supportsAuthHeaders = true;
12045
12170
  this.Request = /*#__PURE__*/function () {
12046
- var _ref15 = _asyncToGenerator(function* (method, uri, headers, params, body) {
12171
+ var _ref17 = _asyncToGenerator(function* (method, uri, headers, params, body) {
12047
12172
  return fetchRequestImplementation(method, client != null ? client : null, uri, headers, params, body);
12048
12173
  });
12049
- return function (_x87, _x88, _x89, _x90, _x91) {
12050
- return _ref15.apply(this, arguments);
12174
+ return function (_x93, _x94, _x95, _x96, _x97) {
12175
+ return _ref17.apply(this, arguments);
12051
12176
  };
12052
12177
  }();
12053
12178
  if (client == null ? void 0 : client.options.disableConnectivityCheck) {
@@ -12078,14 +12203,14 @@ var ably = {exports: {}};
12078
12203
  return (_b = (_a2 = this.client) == null ? void 0 : _a2.logger) != null ? _b : logger_default.defaultLogger;
12079
12204
  }
12080
12205
  doUri(method, uri, headers, body, params) {
12081
- var _this90 = this;
12206
+ var _this100 = this;
12082
12207
  return _asyncToGenerator(function* () {
12083
- if (!_this90.Request) {
12208
+ if (!_this100.Request) {
12084
12209
  return {
12085
12210
  error: new PartialErrorInfo("Request invoked before assigned to", null, 500)
12086
12211
  };
12087
12212
  }
12088
- return _this90.Request(method, uri, headers, params, body);
12213
+ return _this100.Request(method, uri, headers, params, body);
12089
12214
  })();
12090
12215
  }
12091
12216
  shouldFallback(errorInfo) {
@@ -12215,7 +12340,7 @@ var ably = {exports: {}};
12215
12340
  globalObject4.crypto.getRandomValues(byteArray);
12216
12341
  return byteArray.buffer;
12217
12342
  });
12218
- function getRandomArrayBuffer(_x92) {
12343
+ function getRandomArrayBuffer(_x98) {
12219
12344
  return _getRandomArrayBuffer.apply(this, arguments);
12220
12345
  }
12221
12346
  return getRandomArrayBuffer;
@@ -13360,7 +13485,7 @@ var ably = {exports: {}};
13360
13485
  });
13361
13486
  return result;
13362
13487
  }
13363
- function fetchRequest(_x93, _x94, _x95, _x96, _x97, _x98) {
13488
+ function fetchRequest(_x99, _x100, _x101, _x102, _x103, _x104) {
13364
13489
  return _fetchRequest.apply(this, arguments);
13365
13490
  } // src/platform/web/lib/http/request/index.ts
13366
13491
  function _fetchRequest() {
@@ -13509,10 +13634,19 @@ class ClientAblyService {
13509
13634
  token: ablyToken,
13510
13635
  autoConnect: true
13511
13636
  });
13637
+ _this.client.connection.on('failed', stateChange => {
13638
+ var _a;
13639
+ console.error('[AblyService] Connection state: failed', {
13640
+ reason: (_a = stateChange.reason) === null || _a === void 0 ? void 0 : _a.message,
13641
+ error: stateChange.reason
13642
+ });
13643
+ });
13512
13644
  // Wait for connection to be established
13513
13645
  yield new Promise((resolve, reject) => {
13514
13646
  if (!_this.client) {
13515
- reject(new Error('Failed to initialize Ably client'));
13647
+ var error = new Error('Failed to initialize Ably client');
13648
+ console.error('[AblyService]', error);
13649
+ reject(error);
13516
13650
  return;
13517
13651
  }
13518
13652
  _this.client.connection.once('connected', () => {
@@ -13521,23 +13655,38 @@ class ClientAblyService {
13521
13655
  resolve();
13522
13656
  });
13523
13657
  _this.client.connection.once('failed', stateChange => {
13524
- var _a;
13525
- reject(new Error("Ably connection failed: ".concat(((_a = stateChange.reason) === null || _a === void 0 ? void 0 : _a.message) || 'Unknown error')));
13658
+ var _a, _b;
13659
+ var error = new Error("Ably connection failed: ".concat(((_a = stateChange.reason) === null || _a === void 0 ? void 0 : _a.message) || 'Unknown error'));
13660
+ console.error('[AblyService] Connection failed', {
13661
+ reason: (_b = stateChange.reason) === null || _b === void 0 ? void 0 : _b.message,
13662
+ error: stateChange.reason
13663
+ });
13664
+ reject(error);
13526
13665
  });
13527
13666
  _this.client.connection.once('disconnected', stateChange => {
13528
- var _a;
13529
- reject(new Error("Ably connection disconnected: ".concat(((_a = stateChange.reason) === null || _a === void 0 ? void 0 : _a.message) || 'Unknown error')));
13667
+ var _a, _b;
13668
+ var error = new Error("Ably connection disconnected: ".concat(((_a = stateChange.reason) === null || _a === void 0 ? void 0 : _a.message) || 'Unknown error'));
13669
+ console.error('[AblyService] Connection disconnected', {
13670
+ reason: (_b = stateChange.reason) === null || _b === void 0 ? void 0 : _b.message
13671
+ });
13672
+ reject(error);
13530
13673
  });
13531
13674
  // Set a timeout for connection
13532
13675
  setTimeout(() => {
13533
13676
  if (!_this.isConnected) {
13534
- reject(new Error('Ably connection timeout'));
13677
+ var _error = new Error('Ably connection timeout');
13678
+ console.error('[AblyService] Connection timeout after 10 seconds');
13679
+ reject(_error);
13535
13680
  }
13536
13681
  }, 10000);
13537
13682
  });
13538
13683
  // Subscribe to the session room
13539
13684
  yield _this.joinChannel(sessionId, onMessageReceived, tenantId);
13540
13685
  } catch (error) {
13686
+ console.error('[AblyService] Error in startConnection', {
13687
+ error,
13688
+ sessionId
13689
+ });
13541
13690
  _this.isConnected = false;
13542
13691
  _this.sessionId = null;
13543
13692
  throw error;
@@ -13548,23 +13697,53 @@ class ClientAblyService {
13548
13697
  var _this2 = this;
13549
13698
  return _asyncToGenerator(function* () {
13550
13699
  if (!_this2.client) {
13551
- throw new Error('Chat client not initialized');
13700
+ var error = new Error('Chat client not initialized');
13701
+ console.error('[AblyService] joinChannel error:', error);
13702
+ throw error;
13552
13703
  }
13553
13704
  var roomName = "session:".concat(tenantId, ":").concat(sessionId);
13554
13705
  // Set up raw channel subscription for server messages
13555
13706
  if (_this2.client) {
13556
13707
  _this2.channel = _this2.client.channels.get(roomName);
13708
+ _this2.channel.on('failed', stateChange => {
13709
+ var _a;
13710
+ console.error('[AblyService] Channel failed', {
13711
+ roomName,
13712
+ reason: (_a = stateChange.reason) === null || _a === void 0 ? void 0 : _a.message,
13713
+ error: stateChange.reason
13714
+ });
13715
+ });
13557
13716
  // Subscribe to assistant/system responses
13558
13717
  _this2.channel.subscribe('ReceiveMessage', message => {
13559
- var _a, _b, _c, _d, _e;
13718
+ var _a, _b, _c, _d, _e, _f, _g, _h;
13560
13719
  try {
13561
- var messageContent = typeof message.data === 'string' ? message.data : ((_a = message.data) === null || _a === void 0 ? void 0 : _a.content) || ((_b = message.data) === null || _b === void 0 ? void 0 : _b.message);
13562
- var senderType = ((_c = message.data) === null || _c === void 0 ? void 0 : _c.senderType) || 3; // Assistant
13563
- var needsAgent = ((_d = message.data) === null || _d === void 0 ? void 0 : _d.needsAgent) || false;
13564
- var attachments = ((_e = message.data) === null || _e === void 0 ? void 0 : _e.attachments) || [];
13565
- onMessageReceived(messageContent, senderType, needsAgent, attachments);
13720
+ // Ensure messageContent is always a string (default to empty string if undefined)
13721
+ var messageContent = typeof message.data === 'string' ? message.data : (_d = (_b = (_a = message.data) === null || _a === void 0 ? void 0 : _a.content) !== null && _b !== void 0 ? _b : (_c = message.data) === null || _c === void 0 ? void 0 : _c.message) !== null && _d !== void 0 ? _d : '';
13722
+ var senderType = ((_e = message.data) === null || _e === void 0 ? void 0 : _e.senderType) || 3; // Assistant
13723
+ var needsAgent = ((_f = message.data) === null || _f === void 0 ? void 0 : _f.needsAgent) || ((_g = message.data) === null || _g === void 0 ? void 0 : _g.actionType) == 'needs_agent' || false;
13724
+ var attachments = ((_h = message.data) === null || _h === void 0 ? void 0 : _h.attachments) || [];
13725
+ // Extract downloadUrl from attachments (Ably now returns downloadUrl directly)
13726
+ // Attachments can be: strings (URLs), objects with downloadUrl, or objects with id
13727
+ var attachmentUrls = attachments.map(attachment => {
13728
+ if (typeof attachment === 'string') {
13729
+ // If it's already a string, it's a URL
13730
+ return attachment;
13731
+ } else if (attachment === null || attachment === void 0 ? void 0 : attachment.downloadUrl) {
13732
+ // If it's an object with downloadUrl, use that
13733
+ return attachment.downloadUrl;
13734
+ } else if (attachment === null || attachment === void 0 ? void 0 : attachment.url) {
13735
+ // Fallback to url property
13736
+ return attachment.url;
13737
+ }
13738
+ // If it's an object with id, we'll need to keep it for backward compatibility
13739
+ return null;
13740
+ }).filter(url => url !== null);
13741
+ onMessageReceived(messageContent, senderType, needsAgent, attachmentUrls);
13566
13742
  } catch (error) {
13567
- // Handle error silently
13743
+ console.error('[AblyService] Error processing message', {
13744
+ error,
13745
+ message
13746
+ });
13568
13747
  }
13569
13748
  });
13570
13749
  yield _this2.channel.attach();
@@ -13594,6 +13773,9 @@ class ClientAblyService {
13594
13773
  _this3.isConnected = false;
13595
13774
  _this3.sessionId = null;
13596
13775
  } catch (error) {
13776
+ console.error('[AblyService] Error in stopConnection', {
13777
+ error
13778
+ });
13597
13779
  // Reset state even if there's an error
13598
13780
  _this3.isConnected = false;
13599
13781
  _this3.sessionId = null;