@novu/js 3.14.1 → 3.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/{chunk-LESVJBPO.js → chunk-C23LCEUU.js} +245 -69
- package/dist/cjs/{chunk-CCAUG7YI.js → chunk-YPTYVCVE.js} +15 -15
- package/dist/cjs/index.d.ts +10 -5
- package/dist/cjs/index.js +21 -17
- package/dist/cjs/internal/index.d.ts +1 -1
- package/dist/cjs/internal/index.js +6 -6
- package/dist/{esm/novu-C7T9MOUL.d.mts → cjs/novu-CI_mzxvm.d.ts} +3 -3
- package/dist/{esm/novu-event-emitter-DlsghVpg.d.mts → cjs/novu-event-emitter-D9AphR7g.d.ts} +39 -17
- package/dist/cjs/themes/index.d.ts +3 -3
- package/dist/cjs/{types-kZC7YyfT.d.ts → types-DXbz7pFA.d.ts} +7 -4
- package/dist/cjs/ui/index.d.ts +5 -5
- package/dist/cjs/ui/index.js +66 -54
- package/dist/esm/{chunk-W4JUMCRN.mjs → chunk-3WBJEI4O.mjs} +15 -15
- package/dist/esm/{chunk-JK4KFZIA.mjs → chunk-DXONCY42.mjs} +197 -22
- package/dist/esm/index.d.mts +10 -5
- package/dist/esm/index.mjs +2 -2
- package/dist/esm/internal/index.d.mts +1 -1
- package/dist/esm/internal/index.mjs +1 -1
- package/dist/{cjs/novu-Dz_wNJko.d.ts → esm/novu-DTGsXJjv.d.mts} +3 -3
- package/dist/{cjs/novu-event-emitter-DlsghVpg.d.ts → esm/novu-event-emitter-D9AphR7g.d.mts} +39 -17
- package/dist/esm/themes/index.d.mts +3 -3
- package/dist/esm/{types-ChYSuHwX.d.mts → types-zMKIpsOL.d.mts} +7 -4
- package/dist/esm/ui/index.d.mts +5 -5
- package/dist/esm/ui/index.mjs +59 -47
- package/dist/novu.min.js +16 -12
- package/dist/novu.min.js.gz +0 -0
- package/package.json +3 -3
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkYPTYVCVE_js = require('./chunk-YPTYVCVE.js');
|
|
4
4
|
var chunk7B52C2XE_js = require('./chunk-7B52C2XE.js');
|
|
5
5
|
var mitt = require('mitt');
|
|
6
6
|
require('event-target-polyfill');
|
|
@@ -25,8 +25,145 @@ var arrayValuesEqual = (arr1, arr2) => {
|
|
|
25
25
|
}
|
|
26
26
|
return arr1.every((value, index) => value === arr2[index]);
|
|
27
27
|
};
|
|
28
|
+
var MAX_TAG_GROUPS = 30;
|
|
29
|
+
var MAX_TAGS_PER_GROUP = 100;
|
|
30
|
+
var MAX_TOTAL_TAGS = 200;
|
|
31
|
+
var TagsFilterValidationError = class extends Error {
|
|
32
|
+
constructor(message) {
|
|
33
|
+
super(message);
|
|
34
|
+
this.name = "TagsFilterValidationError";
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
function validateOrGroupStrings(group, maxLen) {
|
|
38
|
+
if (group.length > maxLen) {
|
|
39
|
+
throw new TagsFilterValidationError(`At most ${maxLen} tags are allowed in a single OR-group`);
|
|
40
|
+
}
|
|
41
|
+
for (const t of group) {
|
|
42
|
+
if (typeof t !== "string") {
|
|
43
|
+
throw new TagsFilterValidationError("Tags must be strings");
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return group;
|
|
47
|
+
}
|
|
48
|
+
function normalizeTagGroupsFromObject(obj) {
|
|
49
|
+
const keys = Object.keys(obj);
|
|
50
|
+
const hasOr = Object.prototype.hasOwnProperty.call(obj, "or");
|
|
51
|
+
const hasAnd = Object.prototype.hasOwnProperty.call(obj, "and");
|
|
52
|
+
if (hasOr && hasAnd) {
|
|
53
|
+
throw new TagsFilterValidationError('Tags filter cannot have both "or" and "and"');
|
|
54
|
+
}
|
|
55
|
+
if (hasOr) {
|
|
56
|
+
if (keys.length !== 1) {
|
|
57
|
+
throw new TagsFilterValidationError("Invalid tags filter object");
|
|
58
|
+
}
|
|
59
|
+
const orVal = obj["or"];
|
|
60
|
+
if (!Array.isArray(orVal)) {
|
|
61
|
+
throw new TagsFilterValidationError('"or" must be an array of strings');
|
|
62
|
+
}
|
|
63
|
+
if (orVal.length === 0) {
|
|
64
|
+
return [];
|
|
65
|
+
}
|
|
66
|
+
const group = validateOrGroupStrings(orVal, MAX_TAGS_PER_GROUP);
|
|
67
|
+
return [group];
|
|
68
|
+
}
|
|
69
|
+
if (hasAnd) {
|
|
70
|
+
if (keys.length !== 1) {
|
|
71
|
+
throw new TagsFilterValidationError("Invalid tags filter object");
|
|
72
|
+
}
|
|
73
|
+
const andVal = obj["and"];
|
|
74
|
+
if (!Array.isArray(andVal)) {
|
|
75
|
+
throw new TagsFilterValidationError('"and" must be an array');
|
|
76
|
+
}
|
|
77
|
+
if (andVal.length === 0) {
|
|
78
|
+
return [];
|
|
79
|
+
}
|
|
80
|
+
if (andVal.length > MAX_TAG_GROUPS) {
|
|
81
|
+
throw new TagsFilterValidationError(`At most ${MAX_TAG_GROUPS} tag groups are allowed`);
|
|
82
|
+
}
|
|
83
|
+
const groups = [];
|
|
84
|
+
let total = 0;
|
|
85
|
+
for (const item of andVal) {
|
|
86
|
+
if (typeof item !== "object" || item === null || Array.isArray(item)) {
|
|
87
|
+
throw new TagsFilterValidationError('Each "and" entry must be an object { or: string[] }');
|
|
88
|
+
}
|
|
89
|
+
const itemKeys = Object.keys(item);
|
|
90
|
+
if (itemKeys.length !== 1 || !Object.prototype.hasOwnProperty.call(item, "or")) {
|
|
91
|
+
throw new TagsFilterValidationError('Each "and" entry must be { or: string[] }');
|
|
92
|
+
}
|
|
93
|
+
const innerOr = item.or;
|
|
94
|
+
if (!Array.isArray(innerOr)) {
|
|
95
|
+
throw new TagsFilterValidationError('"or" must be an array of strings');
|
|
96
|
+
}
|
|
97
|
+
if (innerOr.length === 0) {
|
|
98
|
+
throw new TagsFilterValidationError("Each tag group must be a non-empty array of strings");
|
|
99
|
+
}
|
|
100
|
+
const group = validateOrGroupStrings(innerOr, MAX_TAGS_PER_GROUP);
|
|
101
|
+
total += group.length;
|
|
102
|
+
groups.push(group);
|
|
103
|
+
}
|
|
104
|
+
if (total > MAX_TOTAL_TAGS) {
|
|
105
|
+
throw new TagsFilterValidationError(`At most ${MAX_TOTAL_TAGS} total tag values are allowed`);
|
|
106
|
+
}
|
|
107
|
+
return groups;
|
|
108
|
+
}
|
|
109
|
+
throw new TagsFilterValidationError('Tags filter object must have "or" or "and"');
|
|
110
|
+
}
|
|
111
|
+
function normalizeTagGroups(tags) {
|
|
112
|
+
if (tags === void 0) {
|
|
113
|
+
return [];
|
|
114
|
+
}
|
|
115
|
+
if (tags === null) {
|
|
116
|
+
throw new TagsFilterValidationError("Tags must be an array or object");
|
|
117
|
+
}
|
|
118
|
+
if (typeof tags === "object" && !Array.isArray(tags)) {
|
|
119
|
+
return normalizeTagGroupsFromObject(tags);
|
|
120
|
+
}
|
|
121
|
+
if (!Array.isArray(tags)) {
|
|
122
|
+
throw new TagsFilterValidationError("Tags must be an array or object");
|
|
123
|
+
}
|
|
124
|
+
if (tags.length === 0) {
|
|
125
|
+
return [];
|
|
126
|
+
}
|
|
127
|
+
if (Array.isArray(tags[0])) {
|
|
128
|
+
throw new TagsFilterValidationError(
|
|
129
|
+
"Nested tag arrays are not supported; use { and: [{ or: string[] }, ...] } for multiple OR-groups"
|
|
130
|
+
);
|
|
131
|
+
}
|
|
132
|
+
const flat = tags;
|
|
133
|
+
if (flat.length > MAX_TAGS_PER_GROUP) {
|
|
134
|
+
throw new TagsFilterValidationError(`At most ${MAX_TAGS_PER_GROUP} tags are allowed in a single OR-group`);
|
|
135
|
+
}
|
|
136
|
+
for (const t of flat) {
|
|
137
|
+
if (typeof t !== "string") {
|
|
138
|
+
throw new TagsFilterValidationError("Tags must be strings");
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
return [flat];
|
|
142
|
+
}
|
|
143
|
+
function tagsFilterComparableString(tags) {
|
|
144
|
+
if (tags === void 0) {
|
|
145
|
+
return "";
|
|
146
|
+
}
|
|
147
|
+
const groups = normalizeTagGroups(tags);
|
|
148
|
+
if (groups.length === 0) {
|
|
149
|
+
return "";
|
|
150
|
+
}
|
|
151
|
+
const sortedGroups = Array.from(
|
|
152
|
+
new Map(
|
|
153
|
+
groups.map((group) => {
|
|
154
|
+
const canonicalGroup = Array.from(new Set(group)).sort((a, b) => a.localeCompare(b));
|
|
155
|
+
return [JSON.stringify(canonicalGroup), canonicalGroup];
|
|
156
|
+
})
|
|
157
|
+
).values()
|
|
158
|
+
).sort((a, b) => JSON.stringify(a).localeCompare(JSON.stringify(b)));
|
|
159
|
+
return JSON.stringify(sortedGroups);
|
|
160
|
+
}
|
|
28
161
|
var areTagsEqual = (tags1, tags2) => {
|
|
29
|
-
|
|
162
|
+
try {
|
|
163
|
+
return tagsFilterComparableString(tags1) === tagsFilterComparableString(tags2);
|
|
164
|
+
} catch (e) {
|
|
165
|
+
return false;
|
|
166
|
+
}
|
|
30
167
|
};
|
|
31
168
|
var areSeveritiesEqual = (el1, el2) => {
|
|
32
169
|
const severity1 = Array.isArray(el1) ? el1 : el1 ? [el1] : [];
|
|
@@ -76,13 +213,19 @@ function checkNotificationDataFilter(notificationData, filterData) {
|
|
|
76
213
|
});
|
|
77
214
|
}
|
|
78
215
|
function checkNotificationTagFilter(notificationTags, filterTags) {
|
|
79
|
-
|
|
216
|
+
let groups;
|
|
217
|
+
try {
|
|
218
|
+
groups = normalizeTagGroups(filterTags);
|
|
219
|
+
} catch (e) {
|
|
220
|
+
return false;
|
|
221
|
+
}
|
|
222
|
+
if (groups.length === 0) {
|
|
80
223
|
return true;
|
|
81
224
|
}
|
|
82
225
|
if (!notificationTags || notificationTags.length === 0) {
|
|
83
226
|
return false;
|
|
84
227
|
}
|
|
85
|
-
return
|
|
228
|
+
return groups.every((group) => group.some((tag) => notificationTags.includes(tag)));
|
|
86
229
|
}
|
|
87
230
|
function checkBasicFilters(notification, filter) {
|
|
88
231
|
if (filter.read !== void 0 && notification.isRead !== filter.read) {
|
|
@@ -156,7 +299,7 @@ var TopicSubscription = class {
|
|
|
156
299
|
return chunk7B52C2XE_js.__async(this, null, function* () {
|
|
157
300
|
if (chunk7B52C2XE_js.__privateGet(this, _isStale)) {
|
|
158
301
|
return {
|
|
159
|
-
error: new
|
|
302
|
+
error: new chunkYPTYVCVE_js.NovuError("Cannot update a deleted subscription", new Error("Subscription is stale"))
|
|
160
303
|
};
|
|
161
304
|
}
|
|
162
305
|
return updateSubscriptionPreference({
|
|
@@ -172,7 +315,7 @@ var TopicSubscription = class {
|
|
|
172
315
|
return chunk7B52C2XE_js.__async(this, null, function* () {
|
|
173
316
|
if (chunk7B52C2XE_js.__privateGet(this, _isStale)) {
|
|
174
317
|
return {
|
|
175
|
-
error: new
|
|
318
|
+
error: new chunkYPTYVCVE_js.NovuError("Cannot bulk update a deleted subscription", new Error("Subscription is stale"))
|
|
176
319
|
};
|
|
177
320
|
}
|
|
178
321
|
return bulkUpdateSubscriptionPreference({
|
|
@@ -188,7 +331,7 @@ var TopicSubscription = class {
|
|
|
188
331
|
return chunk7B52C2XE_js.__async(this, null, function* () {
|
|
189
332
|
if (chunk7B52C2XE_js.__privateGet(this, _isStale)) {
|
|
190
333
|
return {
|
|
191
|
-
error: new
|
|
334
|
+
error: new chunkYPTYVCVE_js.NovuError("Cannot delete an already deleted subscription", new Error("Subscription is stale"))
|
|
192
335
|
};
|
|
193
336
|
}
|
|
194
337
|
return deleteSubscription({
|
|
@@ -206,7 +349,7 @@ _useCache = new WeakMap();
|
|
|
206
349
|
_isStale = new WeakMap();
|
|
207
350
|
|
|
208
351
|
// src/subscriptions/helpers.ts
|
|
209
|
-
var listSubscriptions = (_0) => chunk7B52C2XE_js.__async(
|
|
352
|
+
var listSubscriptions = (_0) => chunk7B52C2XE_js.__async(null, [_0], function* ({
|
|
210
353
|
emitter,
|
|
211
354
|
apiService,
|
|
212
355
|
cache,
|
|
@@ -231,10 +374,10 @@ var listSubscriptions = (_0) => chunk7B52C2XE_js.__async(void 0, [_0], function*
|
|
|
231
374
|
return { data };
|
|
232
375
|
} catch (error) {
|
|
233
376
|
emitter.emit("subscriptions.list.resolved", { args, error });
|
|
234
|
-
return { error: new
|
|
377
|
+
return { error: new chunkYPTYVCVE_js.NovuError("Failed to fetch subscriptions", error) };
|
|
235
378
|
}
|
|
236
379
|
});
|
|
237
|
-
var getSubscription = (_0) => chunk7B52C2XE_js.__async(
|
|
380
|
+
var getSubscription = (_0) => chunk7B52C2XE_js.__async(null, [_0], function* ({
|
|
238
381
|
emitter,
|
|
239
382
|
apiService,
|
|
240
383
|
cache,
|
|
@@ -261,10 +404,10 @@ var getSubscription = (_0) => chunk7B52C2XE_js.__async(void 0, [_0], function* (
|
|
|
261
404
|
return { data };
|
|
262
405
|
} catch (error) {
|
|
263
406
|
emitter.emit("subscription.get.resolved", { args, error });
|
|
264
|
-
return { error: new
|
|
407
|
+
return { error: new chunkYPTYVCVE_js.NovuError("Failed to fetch subscription", error) };
|
|
265
408
|
}
|
|
266
409
|
});
|
|
267
|
-
var createSubscription = (_0) => chunk7B52C2XE_js.__async(
|
|
410
|
+
var createSubscription = (_0) => chunk7B52C2XE_js.__async(null, [_0], function* ({
|
|
268
411
|
emitter,
|
|
269
412
|
apiService,
|
|
270
413
|
cache,
|
|
@@ -292,10 +435,10 @@ var createSubscription = (_0) => chunk7B52C2XE_js.__async(void 0, [_0], function
|
|
|
292
435
|
return { data: subscription };
|
|
293
436
|
} catch (error) {
|
|
294
437
|
emitter.emit("subscription.create.resolved", { args, error });
|
|
295
|
-
return { error: new
|
|
438
|
+
return { error: new chunkYPTYVCVE_js.NovuError("Failed to create subscription", error) };
|
|
296
439
|
}
|
|
297
440
|
});
|
|
298
|
-
var updateSubscription = (_0) => chunk7B52C2XE_js.__async(
|
|
441
|
+
var updateSubscription = (_0) => chunk7B52C2XE_js.__async(null, [_0], function* ({
|
|
299
442
|
emitter,
|
|
300
443
|
apiService,
|
|
301
444
|
cache,
|
|
@@ -319,10 +462,10 @@ var updateSubscription = (_0) => chunk7B52C2XE_js.__async(void 0, [_0], function
|
|
|
319
462
|
return { data: updatedSubscription };
|
|
320
463
|
} catch (error) {
|
|
321
464
|
emitter.emit("subscription.update.resolved", { args, error });
|
|
322
|
-
return { error: new
|
|
465
|
+
return { error: new chunkYPTYVCVE_js.NovuError("Failed to update subscription", error) };
|
|
323
466
|
}
|
|
324
467
|
});
|
|
325
|
-
var updateSubscriptionPreference = (_0) => chunk7B52C2XE_js.__async(
|
|
468
|
+
var updateSubscriptionPreference = (_0) => chunk7B52C2XE_js.__async(null, [_0], function* ({
|
|
326
469
|
emitter,
|
|
327
470
|
apiService,
|
|
328
471
|
cache,
|
|
@@ -358,10 +501,10 @@ var updateSubscriptionPreference = (_0) => chunk7B52C2XE_js.__async(void 0, [_0]
|
|
|
358
501
|
return { data: updatedSubscription };
|
|
359
502
|
} catch (error) {
|
|
360
503
|
emitter.emit("subscription.preference.update.resolved", { args, error });
|
|
361
|
-
return { error: new
|
|
504
|
+
return { error: new chunkYPTYVCVE_js.NovuError("Failed to update subscription", error) };
|
|
362
505
|
}
|
|
363
506
|
});
|
|
364
|
-
var bulkUpdateSubscriptionPreference = (_0) => chunk7B52C2XE_js.__async(
|
|
507
|
+
var bulkUpdateSubscriptionPreference = (_0) => chunk7B52C2XE_js.__async(null, [_0], function* ({
|
|
365
508
|
emitter,
|
|
366
509
|
apiService,
|
|
367
510
|
cache,
|
|
@@ -395,10 +538,10 @@ var bulkUpdateSubscriptionPreference = (_0) => chunk7B52C2XE_js.__async(void 0,
|
|
|
395
538
|
return { data: preferences };
|
|
396
539
|
} catch (error) {
|
|
397
540
|
emitter.emit("subscription.preferences.bulk_update.resolved", { args, error });
|
|
398
|
-
return { error: new
|
|
541
|
+
return { error: new chunkYPTYVCVE_js.NovuError("Failed to bulk update subscription preferences", error) };
|
|
399
542
|
}
|
|
400
543
|
});
|
|
401
|
-
var deleteSubscription = (_0) => chunk7B52C2XE_js.__async(
|
|
544
|
+
var deleteSubscription = (_0) => chunk7B52C2XE_js.__async(null, [_0], function* ({
|
|
402
545
|
emitter,
|
|
403
546
|
apiService,
|
|
404
547
|
args
|
|
@@ -412,7 +555,7 @@ var deleteSubscription = (_0) => chunk7B52C2XE_js.__async(void 0, [_0], function
|
|
|
412
555
|
return { data: void 0 };
|
|
413
556
|
} catch (error) {
|
|
414
557
|
emitter.emit("subscription.delete.resolved", { args, error });
|
|
415
|
-
return { error: new
|
|
558
|
+
return { error: new chunkYPTYVCVE_js.NovuError("Failed to delete subscription", error) };
|
|
416
559
|
}
|
|
417
560
|
});
|
|
418
561
|
|
|
@@ -479,7 +622,7 @@ var BaseModule = class {
|
|
|
479
622
|
this.onSessionError(error);
|
|
480
623
|
chunk7B52C2XE_js.__privateSet(this, _sessionError, error);
|
|
481
624
|
chunk7B52C2XE_js.__privateGet(this, _callsQueue).forEach(({ resolve }) => {
|
|
482
|
-
resolve({ error: new
|
|
625
|
+
resolve({ error: new chunkYPTYVCVE_js.NovuError("Failed to initialize session, please contact the support", error) });
|
|
483
626
|
});
|
|
484
627
|
chunk7B52C2XE_js.__privateSet(this, _callsQueue, []);
|
|
485
628
|
}
|
|
@@ -496,7 +639,7 @@ var BaseModule = class {
|
|
|
496
639
|
}
|
|
497
640
|
if (chunk7B52C2XE_js.__privateGet(this, _sessionError)) {
|
|
498
641
|
return Promise.resolve({
|
|
499
|
-
error: new
|
|
642
|
+
error: new chunkYPTYVCVE_js.NovuError("Failed to initialize session, please contact the support", chunk7B52C2XE_js.__privateGet(this, _sessionError))
|
|
500
643
|
});
|
|
501
644
|
}
|
|
502
645
|
return new Promise((resolve, reject) => {
|
|
@@ -845,7 +988,7 @@ var Subscriptions = class extends BaseModule {
|
|
|
845
988
|
useCache: (_a = options == null ? void 0 : options.useCache) != null ? _a : chunk7B52C2XE_js.__privateGet(this, _useCache4)
|
|
846
989
|
}),
|
|
847
990
|
args: chunk7B52C2XE_js.__spreadProps(chunk7B52C2XE_js.__spreadValues({}, args), {
|
|
848
|
-
identifier: (_b = args.identifier) != null ? _b :
|
|
991
|
+
identifier: (_b = args.identifier) != null ? _b : chunkYPTYVCVE_js.buildSubscriptionIdentifier({
|
|
849
992
|
topicKey: args.topicKey,
|
|
850
993
|
subscriberId: chunk7B52C2XE_js.__privateGet(this, _subscriber).subscriberId,
|
|
851
994
|
contextKey: chunk7B52C2XE_js.__privateGet(this, _contextKey)
|
|
@@ -900,7 +1043,7 @@ _contextKey = new WeakMap();
|
|
|
900
1043
|
|
|
901
1044
|
// src/api/http-client.ts
|
|
902
1045
|
var DEFAULT_API_VERSION = "v1";
|
|
903
|
-
var DEFAULT_CLIENT_VERSION = `${"@novu/js"}@${"3.
|
|
1046
|
+
var DEFAULT_CLIENT_VERSION = `${"@novu/js"}@${"3.15.0"}`;
|
|
904
1047
|
var HttpClient = class {
|
|
905
1048
|
constructor(options = {}) {
|
|
906
1049
|
// Environment variable for local development that overrides the default API endpoint without affecting the Inbox DX
|
|
@@ -1014,6 +1157,39 @@ function combineUrl(...args) {
|
|
|
1014
1157
|
// src/api/inbox-service.ts
|
|
1015
1158
|
var INBOX_ROUTE = "/inbox";
|
|
1016
1159
|
var INBOX_NOTIFICATIONS_ROUTE = `${INBOX_ROUTE}/notifications`;
|
|
1160
|
+
function appendTagsToSearchParams(searchParams, tags) {
|
|
1161
|
+
if (tags === void 0) {
|
|
1162
|
+
return;
|
|
1163
|
+
}
|
|
1164
|
+
if (Array.isArray(tags)) {
|
|
1165
|
+
if (tags.length === 0) {
|
|
1166
|
+
return;
|
|
1167
|
+
}
|
|
1168
|
+
for (const tag of tags) {
|
|
1169
|
+
searchParams.append("tags[]", tag);
|
|
1170
|
+
}
|
|
1171
|
+
return;
|
|
1172
|
+
}
|
|
1173
|
+
if ("or" in tags) {
|
|
1174
|
+
if (tags.or.length === 0) {
|
|
1175
|
+
return;
|
|
1176
|
+
}
|
|
1177
|
+
for (const tag of tags.or) {
|
|
1178
|
+
searchParams.append("tags[]", tag);
|
|
1179
|
+
}
|
|
1180
|
+
return;
|
|
1181
|
+
}
|
|
1182
|
+
if ("and" in tags) {
|
|
1183
|
+
if (tags.and.length === 0) {
|
|
1184
|
+
return;
|
|
1185
|
+
}
|
|
1186
|
+
tags.and.forEach((group, groupIndex) => {
|
|
1187
|
+
for (const tag of group.or) {
|
|
1188
|
+
searchParams.append(`tags[${groupIndex}][]`, tag);
|
|
1189
|
+
}
|
|
1190
|
+
});
|
|
1191
|
+
}
|
|
1192
|
+
}
|
|
1017
1193
|
var _httpClient;
|
|
1018
1194
|
var InboxService = class {
|
|
1019
1195
|
constructor(options = {}) {
|
|
@@ -1065,11 +1241,7 @@ var InboxService = class {
|
|
|
1065
1241
|
if (offset) {
|
|
1066
1242
|
searchParams.append("offset", `${offset}`);
|
|
1067
1243
|
}
|
|
1068
|
-
|
|
1069
|
-
for (const tag of tags) {
|
|
1070
|
-
searchParams.append("tags[]", tag);
|
|
1071
|
-
}
|
|
1072
|
-
}
|
|
1244
|
+
appendTagsToSearchParams(searchParams, tags);
|
|
1073
1245
|
if (read2 !== void 0) {
|
|
1074
1246
|
searchParams.append("read", `${read2}`);
|
|
1075
1247
|
}
|
|
@@ -1533,7 +1705,7 @@ var NotificationsCache = class {
|
|
|
1533
1705
|
filter: getFilter(cacheKey),
|
|
1534
1706
|
notifications: []
|
|
1535
1707
|
};
|
|
1536
|
-
const notificationInstance =
|
|
1708
|
+
const notificationInstance = chunkYPTYVCVE_js.createNotification({
|
|
1537
1709
|
notification: chunk7B52C2XE_js.__spreadValues({}, notification),
|
|
1538
1710
|
emitter: chunk7B52C2XE_js.__privateGet(this, _emitter4),
|
|
1539
1711
|
inboxService: chunk7B52C2XE_js.__privateGet(this, _inboxService4)
|
|
@@ -1640,7 +1812,7 @@ var Notifications = class extends BaseModule {
|
|
|
1640
1812
|
data = {
|
|
1641
1813
|
hasMore: response.hasMore,
|
|
1642
1814
|
filter: response.filter,
|
|
1643
|
-
notifications: response.data.map((el) => new
|
|
1815
|
+
notifications: response.data.map((el) => new chunkYPTYVCVE_js.Notification(el, this._emitter, this._inboxService))
|
|
1644
1816
|
};
|
|
1645
1817
|
if (shouldUseCache) {
|
|
1646
1818
|
this.cache.set(args, data);
|
|
@@ -1651,7 +1823,7 @@ var Notifications = class extends BaseModule {
|
|
|
1651
1823
|
return { data };
|
|
1652
1824
|
} catch (error) {
|
|
1653
1825
|
this._emitter.emit("notifications.list.resolved", { args, error });
|
|
1654
|
-
return { error: new
|
|
1826
|
+
return { error: new chunkYPTYVCVE_js.NovuError("Failed to fetch notifications", error) };
|
|
1655
1827
|
}
|
|
1656
1828
|
}));
|
|
1657
1829
|
});
|
|
@@ -1673,7 +1845,7 @@ var Notifications = class extends BaseModule {
|
|
|
1673
1845
|
return { data };
|
|
1674
1846
|
} catch (error) {
|
|
1675
1847
|
this._emitter.emit("notifications.count.resolved", { args, error });
|
|
1676
|
-
return { error: new
|
|
1848
|
+
return { error: new chunkYPTYVCVE_js.NovuError("Failed to count notifications", error) };
|
|
1677
1849
|
}
|
|
1678
1850
|
}));
|
|
1679
1851
|
});
|
|
@@ -1682,7 +1854,7 @@ var Notifications = class extends BaseModule {
|
|
|
1682
1854
|
return chunk7B52C2XE_js.__async(this, null, function* () {
|
|
1683
1855
|
return this.callWithSession(
|
|
1684
1856
|
() => chunk7B52C2XE_js.__async(this, null, function* () {
|
|
1685
|
-
return
|
|
1857
|
+
return chunkYPTYVCVE_js.read({
|
|
1686
1858
|
emitter: this._emitter,
|
|
1687
1859
|
apiService: this._inboxService,
|
|
1688
1860
|
args
|
|
@@ -1695,7 +1867,7 @@ var Notifications = class extends BaseModule {
|
|
|
1695
1867
|
return chunk7B52C2XE_js.__async(this, null, function* () {
|
|
1696
1868
|
return this.callWithSession(
|
|
1697
1869
|
() => chunk7B52C2XE_js.__async(this, null, function* () {
|
|
1698
|
-
return
|
|
1870
|
+
return chunkYPTYVCVE_js.unread({
|
|
1699
1871
|
emitter: this._emitter,
|
|
1700
1872
|
apiService: this._inboxService,
|
|
1701
1873
|
args
|
|
@@ -1708,7 +1880,7 @@ var Notifications = class extends BaseModule {
|
|
|
1708
1880
|
return chunk7B52C2XE_js.__async(this, null, function* () {
|
|
1709
1881
|
return this.callWithSession(
|
|
1710
1882
|
() => chunk7B52C2XE_js.__async(this, null, function* () {
|
|
1711
|
-
return
|
|
1883
|
+
return chunkYPTYVCVE_js.seen({
|
|
1712
1884
|
emitter: this._emitter,
|
|
1713
1885
|
apiService: this._inboxService,
|
|
1714
1886
|
args
|
|
@@ -1721,7 +1893,7 @@ var Notifications = class extends BaseModule {
|
|
|
1721
1893
|
return chunk7B52C2XE_js.__async(this, null, function* () {
|
|
1722
1894
|
return this.callWithSession(
|
|
1723
1895
|
() => chunk7B52C2XE_js.__async(this, null, function* () {
|
|
1724
|
-
return
|
|
1896
|
+
return chunkYPTYVCVE_js.archive({
|
|
1725
1897
|
emitter: this._emitter,
|
|
1726
1898
|
apiService: this._inboxService,
|
|
1727
1899
|
args
|
|
@@ -1734,7 +1906,7 @@ var Notifications = class extends BaseModule {
|
|
|
1734
1906
|
return chunk7B52C2XE_js.__async(this, null, function* () {
|
|
1735
1907
|
return this.callWithSession(
|
|
1736
1908
|
() => chunk7B52C2XE_js.__async(this, null, function* () {
|
|
1737
|
-
return
|
|
1909
|
+
return chunkYPTYVCVE_js.unarchive({
|
|
1738
1910
|
emitter: this._emitter,
|
|
1739
1911
|
apiService: this._inboxService,
|
|
1740
1912
|
args
|
|
@@ -1747,7 +1919,7 @@ var Notifications = class extends BaseModule {
|
|
|
1747
1919
|
return chunk7B52C2XE_js.__async(this, null, function* () {
|
|
1748
1920
|
return this.callWithSession(
|
|
1749
1921
|
() => chunk7B52C2XE_js.__async(this, null, function* () {
|
|
1750
|
-
return
|
|
1922
|
+
return chunkYPTYVCVE_js.deleteNotification({
|
|
1751
1923
|
emitter: this._emitter,
|
|
1752
1924
|
apiService: this._inboxService,
|
|
1753
1925
|
args
|
|
@@ -1760,7 +1932,7 @@ var Notifications = class extends BaseModule {
|
|
|
1760
1932
|
return chunk7B52C2XE_js.__async(this, null, function* () {
|
|
1761
1933
|
return this.callWithSession(
|
|
1762
1934
|
() => chunk7B52C2XE_js.__async(this, null, function* () {
|
|
1763
|
-
return
|
|
1935
|
+
return chunkYPTYVCVE_js.snooze({
|
|
1764
1936
|
emitter: this._emitter,
|
|
1765
1937
|
apiService: this._inboxService,
|
|
1766
1938
|
args
|
|
@@ -1773,7 +1945,7 @@ var Notifications = class extends BaseModule {
|
|
|
1773
1945
|
return chunk7B52C2XE_js.__async(this, null, function* () {
|
|
1774
1946
|
return this.callWithSession(
|
|
1775
1947
|
() => chunk7B52C2XE_js.__async(this, null, function* () {
|
|
1776
|
-
return
|
|
1948
|
+
return chunkYPTYVCVE_js.unsnooze({
|
|
1777
1949
|
emitter: this._emitter,
|
|
1778
1950
|
apiService: this._inboxService,
|
|
1779
1951
|
args
|
|
@@ -1786,7 +1958,7 @@ var Notifications = class extends BaseModule {
|
|
|
1786
1958
|
return chunk7B52C2XE_js.__async(this, null, function* () {
|
|
1787
1959
|
return this.callWithSession(
|
|
1788
1960
|
() => chunk7B52C2XE_js.__async(this, null, function* () {
|
|
1789
|
-
return
|
|
1961
|
+
return chunkYPTYVCVE_js.completeAction({
|
|
1790
1962
|
emitter: this._emitter,
|
|
1791
1963
|
apiService: this._inboxService,
|
|
1792
1964
|
args,
|
|
@@ -1800,7 +1972,7 @@ var Notifications = class extends BaseModule {
|
|
|
1800
1972
|
return chunk7B52C2XE_js.__async(this, null, function* () {
|
|
1801
1973
|
return this.callWithSession(
|
|
1802
1974
|
() => chunk7B52C2XE_js.__async(this, null, function* () {
|
|
1803
|
-
return
|
|
1975
|
+
return chunkYPTYVCVE_js.completeAction({
|
|
1804
1976
|
emitter: this._emitter,
|
|
1805
1977
|
apiService: this._inboxService,
|
|
1806
1978
|
args,
|
|
@@ -1814,7 +1986,7 @@ var Notifications = class extends BaseModule {
|
|
|
1814
1986
|
return chunk7B52C2XE_js.__async(this, null, function* () {
|
|
1815
1987
|
return this.callWithSession(
|
|
1816
1988
|
() => chunk7B52C2XE_js.__async(this, null, function* () {
|
|
1817
|
-
return
|
|
1989
|
+
return chunkYPTYVCVE_js.revertAction({
|
|
1818
1990
|
emitter: this._emitter,
|
|
1819
1991
|
apiService: this._inboxService,
|
|
1820
1992
|
args,
|
|
@@ -1828,7 +2000,7 @@ var Notifications = class extends BaseModule {
|
|
|
1828
2000
|
return chunk7B52C2XE_js.__async(this, null, function* () {
|
|
1829
2001
|
return this.callWithSession(
|
|
1830
2002
|
() => chunk7B52C2XE_js.__async(this, null, function* () {
|
|
1831
|
-
return
|
|
2003
|
+
return chunkYPTYVCVE_js.revertAction({
|
|
1832
2004
|
emitter: this._emitter,
|
|
1833
2005
|
apiService: this._inboxService,
|
|
1834
2006
|
args,
|
|
@@ -1845,7 +2017,7 @@ var Notifications = class extends BaseModule {
|
|
|
1845
2017
|
} = {}) {
|
|
1846
2018
|
return this.callWithSession(
|
|
1847
2019
|
() => chunk7B52C2XE_js.__async(this, null, function* () {
|
|
1848
|
-
return
|
|
2020
|
+
return chunkYPTYVCVE_js.readAll({
|
|
1849
2021
|
emitter: this._emitter,
|
|
1850
2022
|
inboxService: this._inboxService,
|
|
1851
2023
|
notificationsCache: this.cache,
|
|
@@ -1860,14 +2032,14 @@ var Notifications = class extends BaseModule {
|
|
|
1860
2032
|
return chunk7B52C2XE_js.__async(this, arguments, function* (args = {}) {
|
|
1861
2033
|
return this.callWithSession(() => chunk7B52C2XE_js.__async(this, null, function* () {
|
|
1862
2034
|
if ("notificationIds" in args) {
|
|
1863
|
-
return
|
|
2035
|
+
return chunkYPTYVCVE_js.seenAll({
|
|
1864
2036
|
emitter: this._emitter,
|
|
1865
2037
|
inboxService: this._inboxService,
|
|
1866
2038
|
notificationsCache: this.cache,
|
|
1867
2039
|
notificationIds: args.notificationIds
|
|
1868
2040
|
});
|
|
1869
2041
|
} else {
|
|
1870
|
-
return
|
|
2042
|
+
return chunkYPTYVCVE_js.seenAll({
|
|
1871
2043
|
emitter: this._emitter,
|
|
1872
2044
|
inboxService: this._inboxService,
|
|
1873
2045
|
notificationsCache: this.cache,
|
|
@@ -1885,7 +2057,7 @@ var Notifications = class extends BaseModule {
|
|
|
1885
2057
|
} = {}) {
|
|
1886
2058
|
return this.callWithSession(
|
|
1887
2059
|
() => chunk7B52C2XE_js.__async(this, null, function* () {
|
|
1888
|
-
return
|
|
2060
|
+
return chunkYPTYVCVE_js.archiveAll({
|
|
1889
2061
|
emitter: this._emitter,
|
|
1890
2062
|
inboxService: this._inboxService,
|
|
1891
2063
|
notificationsCache: this.cache,
|
|
@@ -1897,10 +2069,13 @@ var Notifications = class extends BaseModule {
|
|
|
1897
2069
|
});
|
|
1898
2070
|
}
|
|
1899
2071
|
archiveAllRead() {
|
|
1900
|
-
return chunk7B52C2XE_js.__async(this, arguments, function* ({
|
|
2072
|
+
return chunk7B52C2XE_js.__async(this, arguments, function* ({
|
|
2073
|
+
tags,
|
|
2074
|
+
data
|
|
2075
|
+
} = {}) {
|
|
1901
2076
|
return this.callWithSession(
|
|
1902
2077
|
() => chunk7B52C2XE_js.__async(this, null, function* () {
|
|
1903
|
-
return
|
|
2078
|
+
return chunkYPTYVCVE_js.archiveAllRead({
|
|
1904
2079
|
emitter: this._emitter,
|
|
1905
2080
|
inboxService: this._inboxService,
|
|
1906
2081
|
notificationsCache: this.cache,
|
|
@@ -1918,7 +2093,7 @@ var Notifications = class extends BaseModule {
|
|
|
1918
2093
|
} = {}) {
|
|
1919
2094
|
return this.callWithSession(
|
|
1920
2095
|
() => chunk7B52C2XE_js.__async(this, null, function* () {
|
|
1921
|
-
return
|
|
2096
|
+
return chunkYPTYVCVE_js.deleteAll({
|
|
1922
2097
|
emitter: this._emitter,
|
|
1923
2098
|
inboxService: this._inboxService,
|
|
1924
2099
|
notificationsCache: this.cache,
|
|
@@ -2042,7 +2217,7 @@ _scheduleCache = new WeakMap();
|
|
|
2042
2217
|
_useCache7 = new WeakMap();
|
|
2043
2218
|
|
|
2044
2219
|
// src/preferences/helpers.ts
|
|
2045
|
-
var updatePreference = (_0) => chunk7B52C2XE_js.__async(
|
|
2220
|
+
var updatePreference = (_0) => chunk7B52C2XE_js.__async(null, [_0], function* ({
|
|
2046
2221
|
emitter,
|
|
2047
2222
|
apiService,
|
|
2048
2223
|
cache,
|
|
@@ -2087,10 +2262,10 @@ var updatePreference = (_0) => chunk7B52C2XE_js.__async(void 0, [_0], function*
|
|
|
2087
2262
|
return { data: preference };
|
|
2088
2263
|
} catch (error) {
|
|
2089
2264
|
emitter.emit("preference.update.resolved", { args, error });
|
|
2090
|
-
return { error: new
|
|
2265
|
+
return { error: new chunkYPTYVCVE_js.NovuError("Failed to update preference", error) };
|
|
2091
2266
|
}
|
|
2092
2267
|
});
|
|
2093
|
-
var bulkUpdatePreference = (_0) => chunk7B52C2XE_js.__async(
|
|
2268
|
+
var bulkUpdatePreference = (_0) => chunk7B52C2XE_js.__async(null, [_0], function* ({
|
|
2094
2269
|
emitter,
|
|
2095
2270
|
apiService,
|
|
2096
2271
|
cache,
|
|
@@ -2100,7 +2275,7 @@ var bulkUpdatePreference = (_0) => chunk7B52C2XE_js.__async(void 0, [_0], functi
|
|
|
2100
2275
|
}) {
|
|
2101
2276
|
const globalPreference = args.find((arg) => "preference" in arg && arg.preference.level === "global" /* GLOBAL */);
|
|
2102
2277
|
if (globalPreference) {
|
|
2103
|
-
return { error: new
|
|
2278
|
+
return { error: new chunkYPTYVCVE_js.NovuError("Global preference is not supported in bulk update", "") };
|
|
2104
2279
|
}
|
|
2105
2280
|
try {
|
|
2106
2281
|
const optimisticallyUpdatedPreferences = args.map(
|
|
@@ -2141,7 +2316,7 @@ var bulkUpdatePreference = (_0) => chunk7B52C2XE_js.__async(void 0, [_0], functi
|
|
|
2141
2316
|
return { data: preferences };
|
|
2142
2317
|
} catch (error) {
|
|
2143
2318
|
emitter.emit("preferences.bulk_update.resolved", { args, error });
|
|
2144
|
-
return { error: new
|
|
2319
|
+
return { error: new chunkYPTYVCVE_js.NovuError("Failed to bulk update preferences", error) };
|
|
2145
2320
|
}
|
|
2146
2321
|
});
|
|
2147
2322
|
var optimisticUpdateWorkflowPreferences = ({
|
|
@@ -2183,7 +2358,7 @@ var optimisticUpdateWorkflowPreferences = ({
|
|
|
2183
2358
|
}
|
|
2184
2359
|
});
|
|
2185
2360
|
};
|
|
2186
|
-
var updateSchedule = (_0) => chunk7B52C2XE_js.__async(
|
|
2361
|
+
var updateSchedule = (_0) => chunk7B52C2XE_js.__async(null, [_0], function* ({
|
|
2187
2362
|
emitter,
|
|
2188
2363
|
apiService,
|
|
2189
2364
|
cache,
|
|
@@ -2231,7 +2406,7 @@ var updateSchedule = (_0) => chunk7B52C2XE_js.__async(void 0, [_0], function* ({
|
|
|
2231
2406
|
return { data: updatedSchedule };
|
|
2232
2407
|
} catch (error) {
|
|
2233
2408
|
emitter.emit("preference.schedule.update.resolved", { args, error });
|
|
2234
|
-
return { error: new
|
|
2409
|
+
return { error: new chunkYPTYVCVE_js.NovuError("Failed to update preference", error) };
|
|
2235
2410
|
}
|
|
2236
2411
|
});
|
|
2237
2412
|
|
|
@@ -2821,7 +2996,7 @@ var PartySocketClient = class extends BaseModule {
|
|
|
2821
2996
|
const data = JSON.parse(event.data);
|
|
2822
2997
|
if (data.event === "notification_received" /* RECEIVED */) {
|
|
2823
2998
|
chunk7B52C2XE_js.__privateGet(this, _emitter10).emit(NOTIFICATION_RECEIVED, {
|
|
2824
|
-
result: new
|
|
2999
|
+
result: new chunkYPTYVCVE_js.Notification(mapToNotification(data.data.message), chunk7B52C2XE_js.__privateGet(this, _emitter10), this._inboxService)
|
|
2825
3000
|
});
|
|
2826
3001
|
}
|
|
2827
3002
|
} catch (error) {
|
|
@@ -2930,7 +3105,7 @@ handleConnectSocket_fn = function() {
|
|
|
2930
3105
|
yield chunk7B52C2XE_js.__privateMethod(this, _PartySocketClient_instances, initializeSocket_fn).call(this);
|
|
2931
3106
|
return {};
|
|
2932
3107
|
} catch (error) {
|
|
2933
|
-
return { error: new
|
|
3108
|
+
return { error: new chunkYPTYVCVE_js.NovuError("Failed to initialize the PartySocket", error) };
|
|
2934
3109
|
}
|
|
2935
3110
|
});
|
|
2936
3111
|
};
|
|
@@ -2942,7 +3117,7 @@ handleDisconnectSocket_fn = function() {
|
|
|
2942
3117
|
chunk7B52C2XE_js.__privateSet(this, _partySocket, void 0);
|
|
2943
3118
|
return {};
|
|
2944
3119
|
} catch (error) {
|
|
2945
|
-
return { error: new
|
|
3120
|
+
return { error: new chunkYPTYVCVE_js.NovuError("Failed to disconnect from the PartySocket", error) };
|
|
2946
3121
|
}
|
|
2947
3122
|
});
|
|
2948
3123
|
};
|
|
@@ -3057,7 +3232,7 @@ var Socket = class extends BaseModule {
|
|
|
3057
3232
|
chunk7B52C2XE_js.__privateAdd(this, _socketOptions2);
|
|
3058
3233
|
chunk7B52C2XE_js.__privateAdd(this, _notificationReceived2, ({ message }) => {
|
|
3059
3234
|
chunk7B52C2XE_js.__privateGet(this, _emitter11).emit(NOTIFICATION_RECEIVED2, {
|
|
3060
|
-
result: new
|
|
3235
|
+
result: new chunkYPTYVCVE_js.Notification(mapToNotification2(message), chunk7B52C2XE_js.__privateGet(this, _emitter11), this._inboxService)
|
|
3061
3236
|
});
|
|
3062
3237
|
});
|
|
3063
3238
|
chunk7B52C2XE_js.__privateAdd(this, _unseenCountChanged2, ({ unseenCount }) => {
|
|
@@ -3138,7 +3313,7 @@ handleConnectSocket_fn2 = function() {
|
|
|
3138
3313
|
yield chunk7B52C2XE_js.__privateMethod(this, _Socket_instances, initializeSocket_fn2).call(this);
|
|
3139
3314
|
return {};
|
|
3140
3315
|
} catch (error) {
|
|
3141
|
-
return { error: new
|
|
3316
|
+
return { error: new chunkYPTYVCVE_js.NovuError("Failed to initialize the socket", error) };
|
|
3142
3317
|
}
|
|
3143
3318
|
});
|
|
3144
3319
|
};
|
|
@@ -3150,7 +3325,7 @@ handleDisconnectSocket_fn2 = function() {
|
|
|
3150
3325
|
chunk7B52C2XE_js.__privateSet(this, _socketIo, void 0);
|
|
3151
3326
|
return {};
|
|
3152
3327
|
} catch (error) {
|
|
3153
|
-
return { error: new
|
|
3328
|
+
return { error: new chunkYPTYVCVE_js.NovuError("Failed to disconnect from the socket", error) };
|
|
3154
3329
|
}
|
|
3155
3330
|
});
|
|
3156
3331
|
};
|
|
@@ -3226,8 +3401,8 @@ var Novu = class {
|
|
|
3226
3401
|
apiUrl: options.apiUrl || options.backendUrl
|
|
3227
3402
|
}));
|
|
3228
3403
|
chunk7B52C2XE_js.__privateSet(this, _emitter12, new NovuEventEmitter());
|
|
3229
|
-
const subscriber =
|
|
3230
|
-
const contextKey =
|
|
3404
|
+
const subscriber = chunkYPTYVCVE_js.buildSubscriber({ subscriberId: options.subscriberId, subscriber: options.subscriber });
|
|
3405
|
+
const contextKey = chunkYPTYVCVE_js.buildContextKey(options.context);
|
|
3231
3406
|
chunk7B52C2XE_js.__privateSet(this, _session, new Session(
|
|
3232
3407
|
{
|
|
3233
3408
|
applicationIdentifier: options.applicationIdentifier || "",
|
|
@@ -3290,7 +3465,7 @@ var Novu = class {
|
|
|
3290
3465
|
return chunk7B52C2XE_js.__privateGet(this, _options2);
|
|
3291
3466
|
}
|
|
3292
3467
|
get contextKey() {
|
|
3293
|
-
return
|
|
3468
|
+
return chunkYPTYVCVE_js.buildContextKey(chunk7B52C2XE_js.__privateGet(this, _session).context);
|
|
3294
3469
|
}
|
|
3295
3470
|
clearCache() {
|
|
3296
3471
|
this.notifications.cache.clearAll();
|
|
@@ -3359,3 +3534,4 @@ exports.checkNotificationMatchesFilter = checkNotificationMatchesFilter;
|
|
|
3359
3534
|
exports.checkNotificationTagFilter = checkNotificationTagFilter;
|
|
3360
3535
|
exports.isBrowser = isBrowser;
|
|
3361
3536
|
exports.isSameFilter = isSameFilter;
|
|
3537
|
+
exports.normalizeTagGroups = normalizeTagGroups;
|