@novu/js 3.15.0 → 3.17.0-rc.d0046861c6

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.
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkYPTYVCVE_js = require('./chunk-YPTYVCVE.js');
3
+ var chunkWDGG3OER_js = require('./chunk-WDGG3OER.js');
4
4
  var chunk7B52C2XE_js = require('./chunk-7B52C2XE.js');
5
5
  var mitt = require('mitt');
6
6
  require('event-target-polyfill');
@@ -186,6 +186,97 @@ var areDataEqual = (data1, data2) => {
186
186
  var isSameFilter = (filter1, filter2) => {
187
187
  return areDataEqual(filter1.data, filter2.data) && areTagsEqual(filter1.tags, filter2.tags) && filter1.read === filter2.read && filter1.archived === filter2.archived && filter1.snoozed === filter2.snoozed && filter1.seen === filter2.seen && areSeveritiesEqual(filter1.severity, filter2.severity) && filter1.createdGte === filter2.createdGte && filter1.createdLte === filter2.createdLte;
188
188
  };
189
+ function isPlainObject(value) {
190
+ return typeof value === "object" && value !== null && !Array.isArray(value);
191
+ }
192
+ function isOperatorObject(value) {
193
+ return Object.prototype.hasOwnProperty.call(value, "or") || Object.prototype.hasOwnProperty.call(value, "and");
194
+ }
195
+ function isScalarValue(value) {
196
+ if (value === null) return true;
197
+ if (typeof value === "boolean") return true;
198
+ if (typeof value === "string") return true;
199
+ if (typeof value === "number") return Number.isFinite(value);
200
+ return false;
201
+ }
202
+ function normalizeDataFieldValue(value) {
203
+ if (value === void 0) {
204
+ return [];
205
+ }
206
+ if (Array.isArray(value)) {
207
+ if (value.length === 0) return [];
208
+ if (!value.every(isScalarValue)) return null;
209
+ return [value];
210
+ }
211
+ if (isPlainObject(value)) {
212
+ const hasOr = Object.prototype.hasOwnProperty.call(value, "or");
213
+ const hasAnd = Object.prototype.hasOwnProperty.call(value, "and");
214
+ if (hasOr && hasAnd) return null;
215
+ const keys = Object.keys(value);
216
+ if (hasOr) {
217
+ if (keys.length !== 1) return null;
218
+ const orVal = value.or;
219
+ if (!Array.isArray(orVal)) return null;
220
+ if (orVal.length === 0) return [];
221
+ if (!orVal.every(isScalarValue)) return null;
222
+ return [orVal];
223
+ }
224
+ if (hasAnd) {
225
+ if (keys.length !== 1) return null;
226
+ const andVal = value.and;
227
+ if (!Array.isArray(andVal)) return null;
228
+ const groups = [];
229
+ for (const item of andVal) {
230
+ if (!isPlainObject(item)) return null;
231
+ const itemKeys = Object.keys(item);
232
+ if (itemKeys.length !== 1 || !("or" in item)) return null;
233
+ const innerOr = item.or;
234
+ if (!Array.isArray(innerOr) || innerOr.length === 0) return null;
235
+ if (!innerOr.every(isScalarValue)) return null;
236
+ groups.push(innerOr);
237
+ }
238
+ return groups;
239
+ }
240
+ return null;
241
+ }
242
+ if (!isScalarValue(value)) return null;
243
+ return [[value]];
244
+ }
245
+ function dataValueAtPath(obj, path) {
246
+ let current = obj;
247
+ for (const segment of path) {
248
+ if (current === null || current === void 0) return void 0;
249
+ if (typeof current !== "object" || Array.isArray(current)) return void 0;
250
+ current = current[segment];
251
+ }
252
+ return current;
253
+ }
254
+ function orGroupMatchesNotifValue(group, notifValue) {
255
+ if (Array.isArray(notifValue)) {
256
+ return notifValue.some((v) => group.some((g) => g === v));
257
+ }
258
+ return group.some((g) => g === notifValue);
259
+ }
260
+ function checkDataEntries(notificationData, filterData, pathPrefix, depth) {
261
+ if (depth > 2) return false;
262
+ for (const [rawKey, rawValue] of Object.entries(filterData)) {
263
+ if (rawKey.startsWith("$") || rawKey.startsWith(".") || rawKey === "__proto__" || rawKey === "constructor" || rawKey === "prototype") {
264
+ return false;
265
+ }
266
+ const path = [...pathPrefix, rawKey];
267
+ if (isPlainObject(rawValue) && !isOperatorObject(rawValue)) {
268
+ if (!checkDataEntries(notificationData, rawValue, path, depth + 1)) return false;
269
+ continue;
270
+ }
271
+ const groups = normalizeDataFieldValue(rawValue);
272
+ if (groups === null) return false;
273
+ if (groups.length === 0) continue;
274
+ const notifValue = notificationData ? dataValueAtPath(notificationData, path) : void 0;
275
+ if (notifValue === void 0) return false;
276
+ if (!groups.every((g) => orGroupMatchesNotifValue(g, notifValue))) return false;
277
+ }
278
+ return true;
279
+ }
189
280
  function checkNotificationDataFilter(notificationData, filterData) {
190
281
  if (!filterData || Object.keys(filterData).length === 0) {
191
282
  return true;
@@ -193,24 +284,7 @@ function checkNotificationDataFilter(notificationData, filterData) {
193
284
  if (!notificationData) {
194
285
  return false;
195
286
  }
196
- return Object.entries(filterData).every(([key, filterValue]) => {
197
- const notifValue = notificationData[key];
198
- if (notifValue === void 0 && filterValue !== void 0) {
199
- return false;
200
- }
201
- if (Array.isArray(filterValue)) {
202
- if (Array.isArray(notifValue)) {
203
- if (filterValue.length !== notifValue.length) return false;
204
- const sortedFilterValue = [...filterValue].sort();
205
- const sortedNotifValue = [...notifValue].sort();
206
- return sortedFilterValue.every((val, index) => val === sortedNotifValue[index]);
207
- } else {
208
- return filterValue.includes(notifValue);
209
- }
210
- } else {
211
- return notifValue === filterValue;
212
- }
213
- });
287
+ return checkDataEntries(notificationData, filterData, [], 1);
214
288
  }
215
289
  function checkNotificationTagFilter(notificationTags, filterTags) {
216
290
  let groups;
@@ -299,7 +373,7 @@ var TopicSubscription = class {
299
373
  return chunk7B52C2XE_js.__async(this, null, function* () {
300
374
  if (chunk7B52C2XE_js.__privateGet(this, _isStale)) {
301
375
  return {
302
- error: new chunkYPTYVCVE_js.NovuError("Cannot update a deleted subscription", new Error("Subscription is stale"))
376
+ error: new chunkWDGG3OER_js.NovuError("Cannot update a deleted subscription", new Error("Subscription is stale"))
303
377
  };
304
378
  }
305
379
  return updateSubscriptionPreference({
@@ -315,7 +389,7 @@ var TopicSubscription = class {
315
389
  return chunk7B52C2XE_js.__async(this, null, function* () {
316
390
  if (chunk7B52C2XE_js.__privateGet(this, _isStale)) {
317
391
  return {
318
- error: new chunkYPTYVCVE_js.NovuError("Cannot bulk update a deleted subscription", new Error("Subscription is stale"))
392
+ error: new chunkWDGG3OER_js.NovuError("Cannot bulk update a deleted subscription", new Error("Subscription is stale"))
319
393
  };
320
394
  }
321
395
  return bulkUpdateSubscriptionPreference({
@@ -331,7 +405,7 @@ var TopicSubscription = class {
331
405
  return chunk7B52C2XE_js.__async(this, null, function* () {
332
406
  if (chunk7B52C2XE_js.__privateGet(this, _isStale)) {
333
407
  return {
334
- error: new chunkYPTYVCVE_js.NovuError("Cannot delete an already deleted subscription", new Error("Subscription is stale"))
408
+ error: new chunkWDGG3OER_js.NovuError("Cannot delete an already deleted subscription", new Error("Subscription is stale"))
335
409
  };
336
410
  }
337
411
  return deleteSubscription({
@@ -374,7 +448,7 @@ var listSubscriptions = (_0) => chunk7B52C2XE_js.__async(null, [_0], function* (
374
448
  return { data };
375
449
  } catch (error) {
376
450
  emitter.emit("subscriptions.list.resolved", { args, error });
377
- return { error: new chunkYPTYVCVE_js.NovuError("Failed to fetch subscriptions", error) };
451
+ return { error: new chunkWDGG3OER_js.NovuError("Failed to fetch subscriptions", error) };
378
452
  }
379
453
  });
380
454
  var getSubscription = (_0) => chunk7B52C2XE_js.__async(null, [_0], function* ({
@@ -404,7 +478,7 @@ var getSubscription = (_0) => chunk7B52C2XE_js.__async(null, [_0], function* ({
404
478
  return { data };
405
479
  } catch (error) {
406
480
  emitter.emit("subscription.get.resolved", { args, error });
407
- return { error: new chunkYPTYVCVE_js.NovuError("Failed to fetch subscription", error) };
481
+ return { error: new chunkWDGG3OER_js.NovuError("Failed to fetch subscription", error) };
408
482
  }
409
483
  });
410
484
  var createSubscription = (_0) => chunk7B52C2XE_js.__async(null, [_0], function* ({
@@ -435,7 +509,7 @@ var createSubscription = (_0) => chunk7B52C2XE_js.__async(null, [_0], function*
435
509
  return { data: subscription };
436
510
  } catch (error) {
437
511
  emitter.emit("subscription.create.resolved", { args, error });
438
- return { error: new chunkYPTYVCVE_js.NovuError("Failed to create subscription", error) };
512
+ return { error: new chunkWDGG3OER_js.NovuError("Failed to create subscription", error) };
439
513
  }
440
514
  });
441
515
  var updateSubscription = (_0) => chunk7B52C2XE_js.__async(null, [_0], function* ({
@@ -462,7 +536,7 @@ var updateSubscription = (_0) => chunk7B52C2XE_js.__async(null, [_0], function*
462
536
  return { data: updatedSubscription };
463
537
  } catch (error) {
464
538
  emitter.emit("subscription.update.resolved", { args, error });
465
- return { error: new chunkYPTYVCVE_js.NovuError("Failed to update subscription", error) };
539
+ return { error: new chunkWDGG3OER_js.NovuError("Failed to update subscription", error) };
466
540
  }
467
541
  });
468
542
  var updateSubscriptionPreference = (_0) => chunk7B52C2XE_js.__async(null, [_0], function* ({
@@ -501,7 +575,7 @@ var updateSubscriptionPreference = (_0) => chunk7B52C2XE_js.__async(null, [_0],
501
575
  return { data: updatedSubscription };
502
576
  } catch (error) {
503
577
  emitter.emit("subscription.preference.update.resolved", { args, error });
504
- return { error: new chunkYPTYVCVE_js.NovuError("Failed to update subscription", error) };
578
+ return { error: new chunkWDGG3OER_js.NovuError("Failed to update subscription", error) };
505
579
  }
506
580
  });
507
581
  var bulkUpdateSubscriptionPreference = (_0) => chunk7B52C2XE_js.__async(null, [_0], function* ({
@@ -538,7 +612,7 @@ var bulkUpdateSubscriptionPreference = (_0) => chunk7B52C2XE_js.__async(null, [_
538
612
  return { data: preferences };
539
613
  } catch (error) {
540
614
  emitter.emit("subscription.preferences.bulk_update.resolved", { args, error });
541
- return { error: new chunkYPTYVCVE_js.NovuError("Failed to bulk update subscription preferences", error) };
615
+ return { error: new chunkWDGG3OER_js.NovuError("Failed to bulk update subscription preferences", error) };
542
616
  }
543
617
  });
544
618
  var deleteSubscription = (_0) => chunk7B52C2XE_js.__async(null, [_0], function* ({
@@ -555,7 +629,7 @@ var deleteSubscription = (_0) => chunk7B52C2XE_js.__async(null, [_0], function*
555
629
  return { data: void 0 };
556
630
  } catch (error) {
557
631
  emitter.emit("subscription.delete.resolved", { args, error });
558
- return { error: new chunkYPTYVCVE_js.NovuError("Failed to delete subscription", error) };
632
+ return { error: new chunkWDGG3OER_js.NovuError("Failed to delete subscription", error) };
559
633
  }
560
634
  });
561
635
 
@@ -622,7 +696,7 @@ var BaseModule = class {
622
696
  this.onSessionError(error);
623
697
  chunk7B52C2XE_js.__privateSet(this, _sessionError, error);
624
698
  chunk7B52C2XE_js.__privateGet(this, _callsQueue).forEach(({ resolve }) => {
625
- resolve({ error: new chunkYPTYVCVE_js.NovuError("Failed to initialize session, please contact the support", error) });
699
+ resolve({ error: new chunkWDGG3OER_js.NovuError("Failed to initialize session, please contact the support", error) });
626
700
  });
627
701
  chunk7B52C2XE_js.__privateSet(this, _callsQueue, []);
628
702
  }
@@ -639,7 +713,7 @@ var BaseModule = class {
639
713
  }
640
714
  if (chunk7B52C2XE_js.__privateGet(this, _sessionError)) {
641
715
  return Promise.resolve({
642
- error: new chunkYPTYVCVE_js.NovuError("Failed to initialize session, please contact the support", chunk7B52C2XE_js.__privateGet(this, _sessionError))
716
+ error: new chunkWDGG3OER_js.NovuError("Failed to initialize session, please contact the support", chunk7B52C2XE_js.__privateGet(this, _sessionError))
643
717
  });
644
718
  }
645
719
  return new Promise((resolve, reject) => {
@@ -988,7 +1062,7 @@ var Subscriptions = class extends BaseModule {
988
1062
  useCache: (_a = options == null ? void 0 : options.useCache) != null ? _a : chunk7B52C2XE_js.__privateGet(this, _useCache4)
989
1063
  }),
990
1064
  args: chunk7B52C2XE_js.__spreadProps(chunk7B52C2XE_js.__spreadValues({}, args), {
991
- identifier: (_b = args.identifier) != null ? _b : chunkYPTYVCVE_js.buildSubscriptionIdentifier({
1065
+ identifier: (_b = args.identifier) != null ? _b : chunkWDGG3OER_js.buildSubscriptionIdentifier({
992
1066
  topicKey: args.topicKey,
993
1067
  subscriberId: chunk7B52C2XE_js.__privateGet(this, _subscriber).subscriberId,
994
1068
  contextKey: chunk7B52C2XE_js.__privateGet(this, _contextKey)
@@ -1043,7 +1117,7 @@ _contextKey = new WeakMap();
1043
1117
 
1044
1118
  // src/api/http-client.ts
1045
1119
  var DEFAULT_API_VERSION = "v1";
1046
- var DEFAULT_CLIENT_VERSION = `${"@novu/js"}@${"3.15.0"}`;
1120
+ var DEFAULT_CLIENT_VERSION = `${"@novu/js"}@${"3.17.0-rc.d0046861c6"}`;
1047
1121
  var HttpClient = class {
1048
1122
  constructor(options = {}) {
1049
1123
  // Environment variable for local development that overrides the default API endpoint without affecting the Inbox DX
@@ -1157,6 +1231,32 @@ function combineUrl(...args) {
1157
1231
  // src/api/inbox-service.ts
1158
1232
  var INBOX_ROUTE = "/inbox";
1159
1233
  var INBOX_NOTIFICATIONS_ROUTE = `${INBOX_ROUTE}/notifications`;
1234
+ var CHAT_OAUTH_ROUTE = `${INBOX_ROUTE}/chat/oauth`;
1235
+ var CHANNEL_CONNECTIONS_ROUTE = `${INBOX_ROUTE}/channel-connections`;
1236
+ var CHANNEL_CONNECTIONS_OAUTH_ROUTE = `${CHANNEL_CONNECTIONS_ROUTE}/oauth`;
1237
+ var CHANNEL_ENDPOINTS_ROUTE = `${INBOX_ROUTE}/channel-endpoints`;
1238
+ var CHANNEL_ENDPOINTS_OAUTH_ROUTE = `${CHANNEL_ENDPOINTS_ROUTE}/oauth`;
1239
+ function buildChannelListSearchParams(args) {
1240
+ const searchParams = new URLSearchParams();
1241
+ if (args.subscriberId) searchParams.append("subscriberId", args.subscriberId);
1242
+ if (args.integrationIdentifier) searchParams.append("integrationIdentifier", args.integrationIdentifier);
1243
+ if (args.connectionIdentifier) searchParams.append("connectionIdentifier", args.connectionIdentifier);
1244
+ if (args.channel) searchParams.append("channel", args.channel);
1245
+ if (args.providerId) searchParams.append("providerId", args.providerId);
1246
+ if (args.contextKeys !== void 0) {
1247
+ if (args.contextKeys.length === 0) {
1248
+ searchParams.append("contextKeys", "");
1249
+ } else {
1250
+ for (const key of args.contextKeys) {
1251
+ searchParams.append("contextKeys", key);
1252
+ }
1253
+ }
1254
+ }
1255
+ if (args.limit) searchParams.append("limit", String(args.limit));
1256
+ if (args.after) searchParams.append("after", args.after);
1257
+ if (args.before) searchParams.append("before", args.before);
1258
+ return searchParams.size ? `?${searchParams.toString()}` : "";
1259
+ }
1160
1260
  function appendTagsToSearchParams(searchParams, tags) {
1161
1261
  if (tags === void 0) {
1162
1262
  return;
@@ -1474,8 +1574,413 @@ var InboxService = class {
1474
1574
  deleteSubscription({ topicKey, identifier }) {
1475
1575
  return chunk7B52C2XE_js.__privateGet(this, _httpClient).delete(`${INBOX_ROUTE}/topics/${topicKey}/subscriptions/${identifier}`);
1476
1576
  }
1577
+ /**
1578
+ * @deprecated Use generateConnectOAuthUrl() or generateLinkUserOAuthUrl() instead.
1579
+ */
1580
+ generateChatOAuthUrl({
1581
+ integrationIdentifier,
1582
+ connectionIdentifier,
1583
+ subscriberId,
1584
+ context,
1585
+ scope,
1586
+ userScope,
1587
+ mode,
1588
+ connectionMode,
1589
+ autoLinkUser
1590
+ }) {
1591
+ return chunk7B52C2XE_js.__privateGet(this, _httpClient).post(CHAT_OAUTH_ROUTE, {
1592
+ integrationIdentifier,
1593
+ connectionIdentifier,
1594
+ subscriberId,
1595
+ context,
1596
+ scope,
1597
+ userScope,
1598
+ mode,
1599
+ connectionMode,
1600
+ autoLinkUser
1601
+ });
1602
+ }
1603
+ generateConnectOAuthUrl({
1604
+ integrationIdentifier,
1605
+ connectionIdentifier,
1606
+ subscriberId,
1607
+ context,
1608
+ scope,
1609
+ connectionMode,
1610
+ autoLinkUser
1611
+ }) {
1612
+ return chunk7B52C2XE_js.__privateGet(this, _httpClient).post(CHANNEL_CONNECTIONS_OAUTH_ROUTE, {
1613
+ integrationIdentifier,
1614
+ connectionIdentifier,
1615
+ subscriberId,
1616
+ context,
1617
+ scope,
1618
+ connectionMode,
1619
+ autoLinkUser
1620
+ });
1621
+ }
1622
+ generateLinkUserOAuthUrl({
1623
+ integrationIdentifier,
1624
+ connectionIdentifier,
1625
+ subscriberId,
1626
+ context,
1627
+ userScope
1628
+ }) {
1629
+ return chunk7B52C2XE_js.__privateGet(this, _httpClient).post(CHANNEL_ENDPOINTS_OAUTH_ROUTE, {
1630
+ integrationIdentifier,
1631
+ connectionIdentifier,
1632
+ subscriberId,
1633
+ context,
1634
+ userScope
1635
+ });
1636
+ }
1637
+ listChannelConnections(args = {}) {
1638
+ const query = buildChannelListSearchParams(args);
1639
+ return chunk7B52C2XE_js.__privateGet(this, _httpClient).get(`${CHANNEL_CONNECTIONS_ROUTE}${query}`, void 0, false);
1640
+ }
1641
+ getChannelConnection(identifier) {
1642
+ return chunk7B52C2XE_js.__privateGet(this, _httpClient).get(`${CHANNEL_CONNECTIONS_ROUTE}/${identifier}`);
1643
+ }
1644
+ createChannelConnection({
1645
+ identifier,
1646
+ integrationIdentifier,
1647
+ subscriberId,
1648
+ context,
1649
+ workspace,
1650
+ auth
1651
+ }) {
1652
+ return chunk7B52C2XE_js.__privateGet(this, _httpClient).post(CHANNEL_CONNECTIONS_ROUTE, {
1653
+ identifier,
1654
+ integrationIdentifier,
1655
+ subscriberId,
1656
+ context,
1657
+ workspace,
1658
+ auth
1659
+ });
1660
+ }
1661
+ deleteChannelConnection(identifier) {
1662
+ return chunk7B52C2XE_js.__privateGet(this, _httpClient).delete(`${CHANNEL_CONNECTIONS_ROUTE}/${identifier}`);
1663
+ }
1664
+ listChannelEndpoints(args = {}) {
1665
+ const query = buildChannelListSearchParams(args);
1666
+ return chunk7B52C2XE_js.__privateGet(this, _httpClient).get(`${CHANNEL_ENDPOINTS_ROUTE}${query}`, void 0, false);
1667
+ }
1668
+ getChannelEndpoint(identifier) {
1669
+ return chunk7B52C2XE_js.__privateGet(this, _httpClient).get(`${CHANNEL_ENDPOINTS_ROUTE}/${identifier}`);
1670
+ }
1671
+ createChannelEndpoint({
1672
+ identifier,
1673
+ integrationIdentifier,
1674
+ connectionIdentifier,
1675
+ subscriberId,
1676
+ context,
1677
+ type,
1678
+ endpoint
1679
+ }) {
1680
+ return chunk7B52C2XE_js.__privateGet(this, _httpClient).post(CHANNEL_ENDPOINTS_ROUTE, {
1681
+ identifier,
1682
+ integrationIdentifier,
1683
+ connectionIdentifier,
1684
+ subscriberId,
1685
+ context,
1686
+ type,
1687
+ endpoint
1688
+ });
1689
+ }
1690
+ deleteChannelEndpoint(identifier) {
1691
+ return chunk7B52C2XE_js.__privateGet(this, _httpClient).delete(`${CHANNEL_ENDPOINTS_ROUTE}/${identifier}`);
1692
+ }
1477
1693
  };
1478
1694
  _httpClient = new WeakMap();
1695
+
1696
+ // src/channel-connections/helpers.ts
1697
+ var generateChatOAuthUrl = (_0) => chunk7B52C2XE_js.__async(null, [_0], function* ({
1698
+ emitter,
1699
+ apiService,
1700
+ args
1701
+ }) {
1702
+ try {
1703
+ emitter.emit("channel-connection.oauth-url.pending", { args });
1704
+ const data = yield apiService.generateChatOAuthUrl(args);
1705
+ emitter.emit("channel-connection.oauth-url.resolved", { args, data });
1706
+ return { data };
1707
+ } catch (error) {
1708
+ emitter.emit("channel-connection.oauth-url.resolved", { args, error });
1709
+ return { error: new chunkWDGG3OER_js.NovuError("Failed to generate chat OAuth URL", error) };
1710
+ }
1711
+ });
1712
+ var generateConnectOAuthUrl = (_0) => chunk7B52C2XE_js.__async(null, [_0], function* ({
1713
+ emitter,
1714
+ apiService,
1715
+ args
1716
+ }) {
1717
+ try {
1718
+ emitter.emit("channel-connection.oauth-url.pending", { args });
1719
+ const data = yield apiService.generateConnectOAuthUrl(args);
1720
+ emitter.emit("channel-connection.oauth-url.resolved", { args, data });
1721
+ return { data };
1722
+ } catch (error) {
1723
+ emitter.emit("channel-connection.oauth-url.resolved", { args, error });
1724
+ return { error: new chunkWDGG3OER_js.NovuError("Failed to generate connect OAuth URL", error) };
1725
+ }
1726
+ });
1727
+ var listChannelConnections = (_0) => chunk7B52C2XE_js.__async(null, [_0], function* ({
1728
+ emitter,
1729
+ apiService,
1730
+ args
1731
+ }) {
1732
+ try {
1733
+ emitter.emit("channel-connections.list.pending", { args });
1734
+ const response = yield apiService.listChannelConnections(args);
1735
+ const data = response.data;
1736
+ emitter.emit("channel-connections.list.resolved", { args, data });
1737
+ return { data };
1738
+ } catch (error) {
1739
+ emitter.emit("channel-connections.list.resolved", { args, error });
1740
+ return { error: new chunkWDGG3OER_js.NovuError("Failed to list channel connections", error) };
1741
+ }
1742
+ });
1743
+ var getChannelConnection = (_0) => chunk7B52C2XE_js.__async(null, [_0], function* ({
1744
+ emitter,
1745
+ apiService,
1746
+ args
1747
+ }) {
1748
+ try {
1749
+ emitter.emit("channel-connection.get.pending", { args });
1750
+ const data = yield apiService.getChannelConnection(args.identifier);
1751
+ emitter.emit("channel-connection.get.resolved", { args, data });
1752
+ return { data };
1753
+ } catch (error) {
1754
+ emitter.emit("channel-connection.get.resolved", { args, error });
1755
+ return { error: new chunkWDGG3OER_js.NovuError("Failed to get channel connection", error) };
1756
+ }
1757
+ });
1758
+ var deleteChannelConnection = (_0) => chunk7B52C2XE_js.__async(null, [_0], function* ({
1759
+ emitter,
1760
+ apiService,
1761
+ args
1762
+ }) {
1763
+ try {
1764
+ emitter.emit("channel-connection.delete.pending", { args });
1765
+ yield apiService.deleteChannelConnection(args.identifier);
1766
+ emitter.emit("channel-connection.delete.resolved", { args });
1767
+ return { data: void 0 };
1768
+ } catch (error) {
1769
+ emitter.emit("channel-connection.delete.resolved", { args, error });
1770
+ return { error: new chunkWDGG3OER_js.NovuError("Failed to delete channel connection", error) };
1771
+ }
1772
+ });
1773
+
1774
+ // src/channel-connections/channel-connections.ts
1775
+ var ChannelConnections = class extends BaseModule {
1776
+ constructor({
1777
+ inboxServiceInstance,
1778
+ eventEmitterInstance
1779
+ }) {
1780
+ super({ inboxServiceInstance, eventEmitterInstance });
1781
+ }
1782
+ /**
1783
+ * @deprecated Use generateConnectOAuthUrl() instead. For user-level linking use channelEndpoints.generateLinkUserOAuthUrl().
1784
+ */
1785
+ generateOAuthUrl(args) {
1786
+ return chunk7B52C2XE_js.__async(this, null, function* () {
1787
+ return this.callWithSession(
1788
+ () => generateChatOAuthUrl({
1789
+ emitter: this._emitter,
1790
+ apiService: this._inboxService,
1791
+ args
1792
+ })
1793
+ );
1794
+ });
1795
+ }
1796
+ generateConnectOAuthUrl(args) {
1797
+ return chunk7B52C2XE_js.__async(this, null, function* () {
1798
+ return this.callWithSession(
1799
+ () => generateConnectOAuthUrl({
1800
+ emitter: this._emitter,
1801
+ apiService: this._inboxService,
1802
+ args
1803
+ })
1804
+ );
1805
+ });
1806
+ }
1807
+ list() {
1808
+ return chunk7B52C2XE_js.__async(this, arguments, function* (args = {}) {
1809
+ return this.callWithSession(
1810
+ () => listChannelConnections({
1811
+ emitter: this._emitter,
1812
+ apiService: this._inboxService,
1813
+ args
1814
+ })
1815
+ );
1816
+ });
1817
+ }
1818
+ get(args) {
1819
+ return chunk7B52C2XE_js.__async(this, null, function* () {
1820
+ return this.callWithSession(
1821
+ () => getChannelConnection({
1822
+ emitter: this._emitter,
1823
+ apiService: this._inboxService,
1824
+ args
1825
+ })
1826
+ );
1827
+ });
1828
+ }
1829
+ delete(args) {
1830
+ return chunk7B52C2XE_js.__async(this, null, function* () {
1831
+ return this.callWithSession(
1832
+ () => deleteChannelConnection({
1833
+ emitter: this._emitter,
1834
+ apiService: this._inboxService,
1835
+ args
1836
+ })
1837
+ );
1838
+ });
1839
+ }
1840
+ };
1841
+
1842
+ // src/channel-endpoints/helpers.ts
1843
+ var generateLinkUserOAuthUrl = (_0) => chunk7B52C2XE_js.__async(null, [_0], function* ({
1844
+ emitter,
1845
+ apiService,
1846
+ args
1847
+ }) {
1848
+ try {
1849
+ emitter.emit("channel-endpoint.oauth-url.pending", { args });
1850
+ const data = yield apiService.generateLinkUserOAuthUrl(args);
1851
+ emitter.emit("channel-endpoint.oauth-url.resolved", { args, data });
1852
+ return { data };
1853
+ } catch (error) {
1854
+ emitter.emit("channel-endpoint.oauth-url.resolved", { args, error });
1855
+ return { error: new chunkWDGG3OER_js.NovuError("Failed to generate link user OAuth URL", error) };
1856
+ }
1857
+ });
1858
+ var listChannelEndpoints = (_0) => chunk7B52C2XE_js.__async(null, [_0], function* ({
1859
+ emitter,
1860
+ apiService,
1861
+ args
1862
+ }) {
1863
+ try {
1864
+ emitter.emit("channel-endpoints.list.pending", { args });
1865
+ const response = yield apiService.listChannelEndpoints(args);
1866
+ const data = response.data;
1867
+ emitter.emit("channel-endpoints.list.resolved", { args, data });
1868
+ return { data };
1869
+ } catch (error) {
1870
+ emitter.emit("channel-endpoints.list.resolved", { args, error });
1871
+ return { error: new chunkWDGG3OER_js.NovuError("Failed to list channel endpoints", error) };
1872
+ }
1873
+ });
1874
+ var getChannelEndpoint = (_0) => chunk7B52C2XE_js.__async(null, [_0], function* ({
1875
+ emitter,
1876
+ apiService,
1877
+ args
1878
+ }) {
1879
+ try {
1880
+ emitter.emit("channel-endpoint.get.pending", { args });
1881
+ const data = yield apiService.getChannelEndpoint(args.identifier);
1882
+ emitter.emit("channel-endpoint.get.resolved", { args, data });
1883
+ return { data };
1884
+ } catch (error) {
1885
+ emitter.emit("channel-endpoint.get.resolved", { args, error });
1886
+ return { error: new chunkWDGG3OER_js.NovuError("Failed to get channel endpoint", error) };
1887
+ }
1888
+ });
1889
+ var createChannelEndpoint = (_0) => chunk7B52C2XE_js.__async(null, [_0], function* ({
1890
+ emitter,
1891
+ apiService,
1892
+ args
1893
+ }) {
1894
+ try {
1895
+ emitter.emit("channel-endpoint.create.pending", { args });
1896
+ const data = yield apiService.createChannelEndpoint(args);
1897
+ emitter.emit("channel-endpoint.create.resolved", { args, data });
1898
+ return { data };
1899
+ } catch (error) {
1900
+ emitter.emit("channel-endpoint.create.resolved", { args, error });
1901
+ return { error: new chunkWDGG3OER_js.NovuError("Failed to create channel endpoint", error) };
1902
+ }
1903
+ });
1904
+ var deleteChannelEndpoint = (_0) => chunk7B52C2XE_js.__async(null, [_0], function* ({
1905
+ emitter,
1906
+ apiService,
1907
+ args
1908
+ }) {
1909
+ try {
1910
+ emitter.emit("channel-endpoint.delete.pending", { args });
1911
+ yield apiService.deleteChannelEndpoint(args.identifier);
1912
+ emitter.emit("channel-endpoint.delete.resolved", { args });
1913
+ return { data: void 0 };
1914
+ } catch (error) {
1915
+ emitter.emit("channel-endpoint.delete.resolved", { args, error });
1916
+ return { error: new chunkWDGG3OER_js.NovuError("Failed to delete channel endpoint", error) };
1917
+ }
1918
+ });
1919
+
1920
+ // src/channel-endpoints/channel-endpoints.ts
1921
+ var ChannelEndpoints = class extends BaseModule {
1922
+ constructor({
1923
+ inboxServiceInstance,
1924
+ eventEmitterInstance
1925
+ }) {
1926
+ super({ inboxServiceInstance, eventEmitterInstance });
1927
+ }
1928
+ generateLinkUserOAuthUrl(args) {
1929
+ return chunk7B52C2XE_js.__async(this, null, function* () {
1930
+ return this.callWithSession(
1931
+ () => generateLinkUserOAuthUrl({
1932
+ emitter: this._emitter,
1933
+ apiService: this._inboxService,
1934
+ args
1935
+ })
1936
+ );
1937
+ });
1938
+ }
1939
+ list() {
1940
+ return chunk7B52C2XE_js.__async(this, arguments, function* (args = {}) {
1941
+ return this.callWithSession(
1942
+ () => listChannelEndpoints({
1943
+ emitter: this._emitter,
1944
+ apiService: this._inboxService,
1945
+ args
1946
+ })
1947
+ );
1948
+ });
1949
+ }
1950
+ get(args) {
1951
+ return chunk7B52C2XE_js.__async(this, null, function* () {
1952
+ return this.callWithSession(
1953
+ () => getChannelEndpoint({
1954
+ emitter: this._emitter,
1955
+ apiService: this._inboxService,
1956
+ args
1957
+ })
1958
+ );
1959
+ });
1960
+ }
1961
+ create(args) {
1962
+ return chunk7B52C2XE_js.__async(this, null, function* () {
1963
+ return this.callWithSession(
1964
+ () => createChannelEndpoint({
1965
+ emitter: this._emitter,
1966
+ apiService: this._inboxService,
1967
+ args
1968
+ })
1969
+ );
1970
+ });
1971
+ }
1972
+ delete(args) {
1973
+ return chunk7B52C2XE_js.__async(this, null, function* () {
1974
+ return this.callWithSession(
1975
+ () => deleteChannelEndpoint({
1976
+ emitter: this._emitter,
1977
+ apiService: this._inboxService,
1978
+ args
1979
+ })
1980
+ );
1981
+ });
1982
+ }
1983
+ };
1479
1984
  var _mittEmitter;
1480
1985
  var NovuEventEmitter = class {
1481
1986
  constructor() {
@@ -1705,7 +2210,7 @@ var NotificationsCache = class {
1705
2210
  filter: getFilter(cacheKey),
1706
2211
  notifications: []
1707
2212
  };
1708
- const notificationInstance = chunkYPTYVCVE_js.createNotification({
2213
+ const notificationInstance = chunkWDGG3OER_js.createNotification({
1709
2214
  notification: chunk7B52C2XE_js.__spreadValues({}, notification),
1710
2215
  emitter: chunk7B52C2XE_js.__privateGet(this, _emitter4),
1711
2216
  inboxService: chunk7B52C2XE_js.__privateGet(this, _inboxService4)
@@ -1812,7 +2317,7 @@ var Notifications = class extends BaseModule {
1812
2317
  data = {
1813
2318
  hasMore: response.hasMore,
1814
2319
  filter: response.filter,
1815
- notifications: response.data.map((el) => new chunkYPTYVCVE_js.Notification(el, this._emitter, this._inboxService))
2320
+ notifications: response.data.map((el) => new chunkWDGG3OER_js.Notification(el, this._emitter, this._inboxService))
1816
2321
  };
1817
2322
  if (shouldUseCache) {
1818
2323
  this.cache.set(args, data);
@@ -1823,7 +2328,7 @@ var Notifications = class extends BaseModule {
1823
2328
  return { data };
1824
2329
  } catch (error) {
1825
2330
  this._emitter.emit("notifications.list.resolved", { args, error });
1826
- return { error: new chunkYPTYVCVE_js.NovuError("Failed to fetch notifications", error) };
2331
+ return { error: new chunkWDGG3OER_js.NovuError("Failed to fetch notifications", error) };
1827
2332
  }
1828
2333
  }));
1829
2334
  });
@@ -1845,7 +2350,7 @@ var Notifications = class extends BaseModule {
1845
2350
  return { data };
1846
2351
  } catch (error) {
1847
2352
  this._emitter.emit("notifications.count.resolved", { args, error });
1848
- return { error: new chunkYPTYVCVE_js.NovuError("Failed to count notifications", error) };
2353
+ return { error: new chunkWDGG3OER_js.NovuError("Failed to count notifications", error) };
1849
2354
  }
1850
2355
  }));
1851
2356
  });
@@ -1854,7 +2359,7 @@ var Notifications = class extends BaseModule {
1854
2359
  return chunk7B52C2XE_js.__async(this, null, function* () {
1855
2360
  return this.callWithSession(
1856
2361
  () => chunk7B52C2XE_js.__async(this, null, function* () {
1857
- return chunkYPTYVCVE_js.read({
2362
+ return chunkWDGG3OER_js.read({
1858
2363
  emitter: this._emitter,
1859
2364
  apiService: this._inboxService,
1860
2365
  args
@@ -1867,7 +2372,7 @@ var Notifications = class extends BaseModule {
1867
2372
  return chunk7B52C2XE_js.__async(this, null, function* () {
1868
2373
  return this.callWithSession(
1869
2374
  () => chunk7B52C2XE_js.__async(this, null, function* () {
1870
- return chunkYPTYVCVE_js.unread({
2375
+ return chunkWDGG3OER_js.unread({
1871
2376
  emitter: this._emitter,
1872
2377
  apiService: this._inboxService,
1873
2378
  args
@@ -1880,7 +2385,7 @@ var Notifications = class extends BaseModule {
1880
2385
  return chunk7B52C2XE_js.__async(this, null, function* () {
1881
2386
  return this.callWithSession(
1882
2387
  () => chunk7B52C2XE_js.__async(this, null, function* () {
1883
- return chunkYPTYVCVE_js.seen({
2388
+ return chunkWDGG3OER_js.seen({
1884
2389
  emitter: this._emitter,
1885
2390
  apiService: this._inboxService,
1886
2391
  args
@@ -1893,7 +2398,7 @@ var Notifications = class extends BaseModule {
1893
2398
  return chunk7B52C2XE_js.__async(this, null, function* () {
1894
2399
  return this.callWithSession(
1895
2400
  () => chunk7B52C2XE_js.__async(this, null, function* () {
1896
- return chunkYPTYVCVE_js.archive({
2401
+ return chunkWDGG3OER_js.archive({
1897
2402
  emitter: this._emitter,
1898
2403
  apiService: this._inboxService,
1899
2404
  args
@@ -1906,7 +2411,7 @@ var Notifications = class extends BaseModule {
1906
2411
  return chunk7B52C2XE_js.__async(this, null, function* () {
1907
2412
  return this.callWithSession(
1908
2413
  () => chunk7B52C2XE_js.__async(this, null, function* () {
1909
- return chunkYPTYVCVE_js.unarchive({
2414
+ return chunkWDGG3OER_js.unarchive({
1910
2415
  emitter: this._emitter,
1911
2416
  apiService: this._inboxService,
1912
2417
  args
@@ -1919,7 +2424,7 @@ var Notifications = class extends BaseModule {
1919
2424
  return chunk7B52C2XE_js.__async(this, null, function* () {
1920
2425
  return this.callWithSession(
1921
2426
  () => chunk7B52C2XE_js.__async(this, null, function* () {
1922
- return chunkYPTYVCVE_js.deleteNotification({
2427
+ return chunkWDGG3OER_js.deleteNotification({
1923
2428
  emitter: this._emitter,
1924
2429
  apiService: this._inboxService,
1925
2430
  args
@@ -1932,7 +2437,7 @@ var Notifications = class extends BaseModule {
1932
2437
  return chunk7B52C2XE_js.__async(this, null, function* () {
1933
2438
  return this.callWithSession(
1934
2439
  () => chunk7B52C2XE_js.__async(this, null, function* () {
1935
- return chunkYPTYVCVE_js.snooze({
2440
+ return chunkWDGG3OER_js.snooze({
1936
2441
  emitter: this._emitter,
1937
2442
  apiService: this._inboxService,
1938
2443
  args
@@ -1945,7 +2450,7 @@ var Notifications = class extends BaseModule {
1945
2450
  return chunk7B52C2XE_js.__async(this, null, function* () {
1946
2451
  return this.callWithSession(
1947
2452
  () => chunk7B52C2XE_js.__async(this, null, function* () {
1948
- return chunkYPTYVCVE_js.unsnooze({
2453
+ return chunkWDGG3OER_js.unsnooze({
1949
2454
  emitter: this._emitter,
1950
2455
  apiService: this._inboxService,
1951
2456
  args
@@ -1958,7 +2463,7 @@ var Notifications = class extends BaseModule {
1958
2463
  return chunk7B52C2XE_js.__async(this, null, function* () {
1959
2464
  return this.callWithSession(
1960
2465
  () => chunk7B52C2XE_js.__async(this, null, function* () {
1961
- return chunkYPTYVCVE_js.completeAction({
2466
+ return chunkWDGG3OER_js.completeAction({
1962
2467
  emitter: this._emitter,
1963
2468
  apiService: this._inboxService,
1964
2469
  args,
@@ -1972,7 +2477,7 @@ var Notifications = class extends BaseModule {
1972
2477
  return chunk7B52C2XE_js.__async(this, null, function* () {
1973
2478
  return this.callWithSession(
1974
2479
  () => chunk7B52C2XE_js.__async(this, null, function* () {
1975
- return chunkYPTYVCVE_js.completeAction({
2480
+ return chunkWDGG3OER_js.completeAction({
1976
2481
  emitter: this._emitter,
1977
2482
  apiService: this._inboxService,
1978
2483
  args,
@@ -1986,7 +2491,7 @@ var Notifications = class extends BaseModule {
1986
2491
  return chunk7B52C2XE_js.__async(this, null, function* () {
1987
2492
  return this.callWithSession(
1988
2493
  () => chunk7B52C2XE_js.__async(this, null, function* () {
1989
- return chunkYPTYVCVE_js.revertAction({
2494
+ return chunkWDGG3OER_js.revertAction({
1990
2495
  emitter: this._emitter,
1991
2496
  apiService: this._inboxService,
1992
2497
  args,
@@ -2000,7 +2505,7 @@ var Notifications = class extends BaseModule {
2000
2505
  return chunk7B52C2XE_js.__async(this, null, function* () {
2001
2506
  return this.callWithSession(
2002
2507
  () => chunk7B52C2XE_js.__async(this, null, function* () {
2003
- return chunkYPTYVCVE_js.revertAction({
2508
+ return chunkWDGG3OER_js.revertAction({
2004
2509
  emitter: this._emitter,
2005
2510
  apiService: this._inboxService,
2006
2511
  args,
@@ -2017,7 +2522,7 @@ var Notifications = class extends BaseModule {
2017
2522
  } = {}) {
2018
2523
  return this.callWithSession(
2019
2524
  () => chunk7B52C2XE_js.__async(this, null, function* () {
2020
- return chunkYPTYVCVE_js.readAll({
2525
+ return chunkWDGG3OER_js.readAll({
2021
2526
  emitter: this._emitter,
2022
2527
  inboxService: this._inboxService,
2023
2528
  notificationsCache: this.cache,
@@ -2032,14 +2537,14 @@ var Notifications = class extends BaseModule {
2032
2537
  return chunk7B52C2XE_js.__async(this, arguments, function* (args = {}) {
2033
2538
  return this.callWithSession(() => chunk7B52C2XE_js.__async(this, null, function* () {
2034
2539
  if ("notificationIds" in args) {
2035
- return chunkYPTYVCVE_js.seenAll({
2540
+ return chunkWDGG3OER_js.seenAll({
2036
2541
  emitter: this._emitter,
2037
2542
  inboxService: this._inboxService,
2038
2543
  notificationsCache: this.cache,
2039
2544
  notificationIds: args.notificationIds
2040
2545
  });
2041
2546
  } else {
2042
- return chunkYPTYVCVE_js.seenAll({
2547
+ return chunkWDGG3OER_js.seenAll({
2043
2548
  emitter: this._emitter,
2044
2549
  inboxService: this._inboxService,
2045
2550
  notificationsCache: this.cache,
@@ -2057,7 +2562,7 @@ var Notifications = class extends BaseModule {
2057
2562
  } = {}) {
2058
2563
  return this.callWithSession(
2059
2564
  () => chunk7B52C2XE_js.__async(this, null, function* () {
2060
- return chunkYPTYVCVE_js.archiveAll({
2565
+ return chunkWDGG3OER_js.archiveAll({
2061
2566
  emitter: this._emitter,
2062
2567
  inboxService: this._inboxService,
2063
2568
  notificationsCache: this.cache,
@@ -2075,7 +2580,7 @@ var Notifications = class extends BaseModule {
2075
2580
  } = {}) {
2076
2581
  return this.callWithSession(
2077
2582
  () => chunk7B52C2XE_js.__async(this, null, function* () {
2078
- return chunkYPTYVCVE_js.archiveAllRead({
2583
+ return chunkWDGG3OER_js.archiveAllRead({
2079
2584
  emitter: this._emitter,
2080
2585
  inboxService: this._inboxService,
2081
2586
  notificationsCache: this.cache,
@@ -2093,7 +2598,7 @@ var Notifications = class extends BaseModule {
2093
2598
  } = {}) {
2094
2599
  return this.callWithSession(
2095
2600
  () => chunk7B52C2XE_js.__async(this, null, function* () {
2096
- return chunkYPTYVCVE_js.deleteAll({
2601
+ return chunkWDGG3OER_js.deleteAll({
2097
2602
  emitter: this._emitter,
2098
2603
  inboxService: this._inboxService,
2099
2604
  notificationsCache: this.cache,
@@ -2262,7 +2767,7 @@ var updatePreference = (_0) => chunk7B52C2XE_js.__async(null, [_0], function* ({
2262
2767
  return { data: preference };
2263
2768
  } catch (error) {
2264
2769
  emitter.emit("preference.update.resolved", { args, error });
2265
- return { error: new chunkYPTYVCVE_js.NovuError("Failed to update preference", error) };
2770
+ return { error: new chunkWDGG3OER_js.NovuError("Failed to update preference", error) };
2266
2771
  }
2267
2772
  });
2268
2773
  var bulkUpdatePreference = (_0) => chunk7B52C2XE_js.__async(null, [_0], function* ({
@@ -2275,7 +2780,7 @@ var bulkUpdatePreference = (_0) => chunk7B52C2XE_js.__async(null, [_0], function
2275
2780
  }) {
2276
2781
  const globalPreference = args.find((arg) => "preference" in arg && arg.preference.level === "global" /* GLOBAL */);
2277
2782
  if (globalPreference) {
2278
- return { error: new chunkYPTYVCVE_js.NovuError("Global preference is not supported in bulk update", "") };
2783
+ return { error: new chunkWDGG3OER_js.NovuError("Global preference is not supported in bulk update", "") };
2279
2784
  }
2280
2785
  try {
2281
2786
  const optimisticallyUpdatedPreferences = args.map(
@@ -2316,7 +2821,7 @@ var bulkUpdatePreference = (_0) => chunk7B52C2XE_js.__async(null, [_0], function
2316
2821
  return { data: preferences };
2317
2822
  } catch (error) {
2318
2823
  emitter.emit("preferences.bulk_update.resolved", { args, error });
2319
- return { error: new chunkYPTYVCVE_js.NovuError("Failed to bulk update preferences", error) };
2824
+ return { error: new chunkWDGG3OER_js.NovuError("Failed to bulk update preferences", error) };
2320
2825
  }
2321
2826
  });
2322
2827
  var optimisticUpdateWorkflowPreferences = ({
@@ -2406,7 +2911,7 @@ var updateSchedule = (_0) => chunk7B52C2XE_js.__async(null, [_0], function* ({
2406
2911
  return { data: updatedSchedule };
2407
2912
  } catch (error) {
2408
2913
  emitter.emit("preference.schedule.update.resolved", { args, error });
2409
- return { error: new chunkYPTYVCVE_js.NovuError("Failed to update preference", error) };
2914
+ return { error: new chunkWDGG3OER_js.NovuError("Failed to update preference", error) };
2410
2915
  }
2411
2916
  });
2412
2917
 
@@ -2883,6 +3388,8 @@ _emitter9 = new WeakMap();
2883
3388
  _inboxService5 = new WeakMap();
2884
3389
  _options = new WeakMap();
2885
3390
  var PRODUCTION_SOCKET_URL = "wss://socket.novu.co";
3391
+ var HIBERNATION_HEARTBEAT_MS = 25e3;
3392
+ var HIBERNATION_PING_PAYLOAD = "ping";
2886
3393
  var NOTIFICATION_RECEIVED = "notifications.notification_received";
2887
3394
  var UNSEEN_COUNT_CHANGED = "notifications.unseen_count_changed";
2888
3395
  var UNREAD_COUNT_CHANGED = "notifications.unread_count_changed";
@@ -2973,7 +3480,7 @@ var mapToNotification = ({
2973
3480
  severity
2974
3481
  });
2975
3482
  };
2976
- var _token, _emitter10, _partySocket, _socketUrl, _socketOptions, _notificationReceived, _unseenCountChanged, _unreadCountChanged, _handleMessage, _PartySocketClient_instances, initializeSocket_fn, handleConnectSocket_fn, handleDisconnectSocket_fn;
3483
+ var _token, _emitter10, _partySocket, _socketUrl, _socketOptions, _hibernationHeartbeatIntervalId, _notificationReceived, _unseenCountChanged, _unreadCountChanged, _handleMessage, _PartySocketClient_instances, clearHibernationHeartbeat_fn, startHibernationHeartbeat_fn, initializeSocket_fn, handleConnectSocket_fn, handleDisconnectSocket_fn;
2977
3484
  var PartySocketClient = class extends BaseModule {
2978
3485
  constructor({
2979
3486
  socketUrl,
@@ -2991,12 +3498,13 @@ var PartySocketClient = class extends BaseModule {
2991
3498
  chunk7B52C2XE_js.__privateAdd(this, _partySocket);
2992
3499
  chunk7B52C2XE_js.__privateAdd(this, _socketUrl);
2993
3500
  chunk7B52C2XE_js.__privateAdd(this, _socketOptions);
3501
+ chunk7B52C2XE_js.__privateAdd(this, _hibernationHeartbeatIntervalId);
2994
3502
  chunk7B52C2XE_js.__privateAdd(this, _notificationReceived, (event) => {
2995
3503
  try {
2996
3504
  const data = JSON.parse(event.data);
2997
3505
  if (data.event === "notification_received" /* RECEIVED */) {
2998
3506
  chunk7B52C2XE_js.__privateGet(this, _emitter10).emit(NOTIFICATION_RECEIVED, {
2999
- result: new chunkYPTYVCVE_js.Notification(mapToNotification(data.data.message), chunk7B52C2XE_js.__privateGet(this, _emitter10), this._inboxService)
3507
+ result: new chunkWDGG3OER_js.Notification(mapToNotification(data.data.message), chunk7B52C2XE_js.__privateGet(this, _emitter10), this._inboxService)
3000
3508
  });
3001
3509
  }
3002
3510
  } catch (error) {
@@ -3026,6 +3534,9 @@ var PartySocketClient = class extends BaseModule {
3026
3534
  }
3027
3535
  });
3028
3536
  chunk7B52C2XE_js.__privateAdd(this, _handleMessage, (event) => {
3537
+ if (event.data === HIBERNATION_PING_PAYLOAD || event.data === "pong") {
3538
+ return;
3539
+ }
3029
3540
  try {
3030
3541
  const data = JSON.parse(event.data);
3031
3542
  switch (data.event) {
@@ -3075,11 +3586,31 @@ _emitter10 = new WeakMap();
3075
3586
  _partySocket = new WeakMap();
3076
3587
  _socketUrl = new WeakMap();
3077
3588
  _socketOptions = new WeakMap();
3589
+ _hibernationHeartbeatIntervalId = new WeakMap();
3078
3590
  _notificationReceived = new WeakMap();
3079
3591
  _unseenCountChanged = new WeakMap();
3080
3592
  _unreadCountChanged = new WeakMap();
3081
3593
  _handleMessage = new WeakMap();
3082
3594
  _PartySocketClient_instances = new WeakSet();
3595
+ clearHibernationHeartbeat_fn = function() {
3596
+ if (chunk7B52C2XE_js.__privateGet(this, _hibernationHeartbeatIntervalId) !== void 0) {
3597
+ clearInterval(chunk7B52C2XE_js.__privateGet(this, _hibernationHeartbeatIntervalId));
3598
+ chunk7B52C2XE_js.__privateSet(this, _hibernationHeartbeatIntervalId, void 0);
3599
+ }
3600
+ };
3601
+ startHibernationHeartbeat_fn = function() {
3602
+ chunk7B52C2XE_js.__privateMethod(this, _PartySocketClient_instances, clearHibernationHeartbeat_fn).call(this);
3603
+ chunk7B52C2XE_js.__privateSet(this, _hibernationHeartbeatIntervalId, setInterval(() => {
3604
+ const socket = chunk7B52C2XE_js.__privateGet(this, _partySocket);
3605
+ if (!socket || socket.readyState !== partysocket.WebSocket.OPEN) {
3606
+ return;
3607
+ }
3608
+ try {
3609
+ socket.send(HIBERNATION_PING_PAYLOAD);
3610
+ } catch (e) {
3611
+ }
3612
+ }, HIBERNATION_HEARTBEAT_MS));
3613
+ };
3083
3614
  initializeSocket_fn = function() {
3084
3615
  return chunk7B52C2XE_js.__async(this, null, function* () {
3085
3616
  if (chunk7B52C2XE_js.__privateGet(this, _partySocket)) {
@@ -3090,13 +3621,22 @@ initializeSocket_fn = function() {
3090
3621
  const url = new URL(chunk7B52C2XE_js.__privateGet(this, _socketUrl));
3091
3622
  url.searchParams.set("token", chunk7B52C2XE_js.__privateGet(this, _token));
3092
3623
  chunk7B52C2XE_js.__privateSet(this, _partySocket, new partysocket.WebSocket(url.toString(), void 0, chunk7B52C2XE_js.__privateGet(this, _socketOptions)));
3093
- chunk7B52C2XE_js.__privateGet(this, _partySocket).addEventListener("open", () => {
3624
+ const socket = chunk7B52C2XE_js.__privateGet(this, _partySocket);
3625
+ socket.addEventListener("open", () => {
3626
+ chunk7B52C2XE_js.__privateMethod(this, _PartySocketClient_instances, startHibernationHeartbeat_fn).call(this);
3094
3627
  chunk7B52C2XE_js.__privateGet(this, _emitter10).emit("socket.connect.resolved", { args });
3095
3628
  });
3096
- chunk7B52C2XE_js.__privateGet(this, _partySocket).addEventListener("error", (error) => {
3629
+ socket.addEventListener("error", (error) => {
3097
3630
  chunk7B52C2XE_js.__privateGet(this, _emitter10).emit("socket.connect.resolved", { args, error });
3098
3631
  });
3099
- chunk7B52C2XE_js.__privateGet(this, _partySocket).addEventListener("message", chunk7B52C2XE_js.__privateGet(this, _handleMessage));
3632
+ socket.addEventListener("close", () => {
3633
+ if (socket !== chunk7B52C2XE_js.__privateGet(this, _partySocket)) {
3634
+ return;
3635
+ }
3636
+ chunk7B52C2XE_js.__privateMethod(this, _PartySocketClient_instances, clearHibernationHeartbeat_fn).call(this);
3637
+ chunk7B52C2XE_js.__privateSet(this, _partySocket, void 0);
3638
+ });
3639
+ socket.addEventListener("message", chunk7B52C2XE_js.__privateGet(this, _handleMessage));
3100
3640
  });
3101
3641
  };
3102
3642
  handleConnectSocket_fn = function() {
@@ -3105,7 +3645,7 @@ handleConnectSocket_fn = function() {
3105
3645
  yield chunk7B52C2XE_js.__privateMethod(this, _PartySocketClient_instances, initializeSocket_fn).call(this);
3106
3646
  return {};
3107
3647
  } catch (error) {
3108
- return { error: new chunkYPTYVCVE_js.NovuError("Failed to initialize the PartySocket", error) };
3648
+ return { error: new chunkWDGG3OER_js.NovuError("Failed to initialize the PartySocket", error) };
3109
3649
  }
3110
3650
  });
3111
3651
  };
@@ -3113,11 +3653,12 @@ handleDisconnectSocket_fn = function() {
3113
3653
  return chunk7B52C2XE_js.__async(this, null, function* () {
3114
3654
  var _a;
3115
3655
  try {
3656
+ chunk7B52C2XE_js.__privateMethod(this, _PartySocketClient_instances, clearHibernationHeartbeat_fn).call(this);
3116
3657
  (_a = chunk7B52C2XE_js.__privateGet(this, _partySocket)) == null ? void 0 : _a.close();
3117
3658
  chunk7B52C2XE_js.__privateSet(this, _partySocket, void 0);
3118
3659
  return {};
3119
3660
  } catch (error) {
3120
- return { error: new chunkYPTYVCVE_js.NovuError("Failed to disconnect from the PartySocket", error) };
3661
+ return { error: new chunkWDGG3OER_js.NovuError("Failed to disconnect from the PartySocket", error) };
3121
3662
  }
3122
3663
  });
3123
3664
  };
@@ -3232,7 +3773,7 @@ var Socket = class extends BaseModule {
3232
3773
  chunk7B52C2XE_js.__privateAdd(this, _socketOptions2);
3233
3774
  chunk7B52C2XE_js.__privateAdd(this, _notificationReceived2, ({ message }) => {
3234
3775
  chunk7B52C2XE_js.__privateGet(this, _emitter11).emit(NOTIFICATION_RECEIVED2, {
3235
- result: new chunkYPTYVCVE_js.Notification(mapToNotification2(message), chunk7B52C2XE_js.__privateGet(this, _emitter11), this._inboxService)
3776
+ result: new chunkWDGG3OER_js.Notification(mapToNotification2(message), chunk7B52C2XE_js.__privateGet(this, _emitter11), this._inboxService)
3236
3777
  });
3237
3778
  });
3238
3779
  chunk7B52C2XE_js.__privateAdd(this, _unseenCountChanged2, ({ unseenCount }) => {
@@ -3313,7 +3854,7 @@ handleConnectSocket_fn2 = function() {
3313
3854
  yield chunk7B52C2XE_js.__privateMethod(this, _Socket_instances, initializeSocket_fn2).call(this);
3314
3855
  return {};
3315
3856
  } catch (error) {
3316
- return { error: new chunkYPTYVCVE_js.NovuError("Failed to initialize the socket", error) };
3857
+ return { error: new chunkWDGG3OER_js.NovuError("Failed to initialize the socket", error) };
3317
3858
  }
3318
3859
  });
3319
3860
  };
@@ -3325,7 +3866,7 @@ handleDisconnectSocket_fn2 = function() {
3325
3866
  chunk7B52C2XE_js.__privateSet(this, _socketIo, void 0);
3326
3867
  return {};
3327
3868
  } catch (error) {
3328
- return { error: new chunkYPTYVCVE_js.NovuError("Failed to disconnect from the socket", error) };
3869
+ return { error: new chunkWDGG3OER_js.NovuError("Failed to disconnect from the socket", error) };
3329
3870
  }
3330
3871
  });
3331
3872
  };
@@ -3401,8 +3942,8 @@ var Novu = class {
3401
3942
  apiUrl: options.apiUrl || options.backendUrl
3402
3943
  }));
3403
3944
  chunk7B52C2XE_js.__privateSet(this, _emitter12, new NovuEventEmitter());
3404
- const subscriber = chunkYPTYVCVE_js.buildSubscriber({ subscriberId: options.subscriberId, subscriber: options.subscriber });
3405
- const contextKey = chunkYPTYVCVE_js.buildContextKey(options.context);
3945
+ const subscriber = chunkWDGG3OER_js.buildSubscriber({ subscriberId: options.subscriberId, subscriber: options.subscriber });
3946
+ const contextKey = chunkWDGG3OER_js.buildContextKey(options.context);
3406
3947
  chunk7B52C2XE_js.__privateSet(this, _session, new Session(
3407
3948
  {
3408
3949
  applicationIdentifier: options.applicationIdentifier || "",
@@ -3433,6 +3974,14 @@ var Novu = class {
3433
3974
  inboxServiceInstance: chunk7B52C2XE_js.__privateGet(this, _inboxService6),
3434
3975
  eventEmitterInstance: chunk7B52C2XE_js.__privateGet(this, _emitter12)
3435
3976
  });
3977
+ this.channelConnections = new ChannelConnections({
3978
+ inboxServiceInstance: chunk7B52C2XE_js.__privateGet(this, _inboxService6),
3979
+ eventEmitterInstance: chunk7B52C2XE_js.__privateGet(this, _emitter12)
3980
+ });
3981
+ this.channelEndpoints = new ChannelEndpoints({
3982
+ inboxServiceInstance: chunk7B52C2XE_js.__privateGet(this, _inboxService6),
3983
+ eventEmitterInstance: chunk7B52C2XE_js.__privateGet(this, _emitter12)
3984
+ });
3436
3985
  this.socket = createSocket({
3437
3986
  socketUrl: options.socketUrl,
3438
3987
  socketOptions: options.socketOptions,
@@ -3465,7 +4014,7 @@ var Novu = class {
3465
4014
  return chunk7B52C2XE_js.__privateGet(this, _options2);
3466
4015
  }
3467
4016
  get contextKey() {
3468
- return chunkYPTYVCVE_js.buildContextKey(chunk7B52C2XE_js.__privateGet(this, _session).context);
4017
+ return chunkWDGG3OER_js.buildContextKey(chunk7B52C2XE_js.__privateGet(this, _session).context);
3469
4018
  }
3470
4019
  clearCache() {
3471
4020
  this.notifications.cache.clearAll();