@dereekb/firebase-server 11.0.21 → 11.1.1
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/CHANGELOG.md +13 -0
- package/mailgun/package.json +1 -1
- package/model/package.json +6 -0
- package/model/src/index.d.ts +1 -0
- package/model/src/index.js +5 -0
- package/model/src/index.js.map +1 -0
- package/model/src/lib/index.d.ts +2 -0
- package/model/src/lib/index.js +6 -0
- package/model/src/lib/index.js.map +1 -0
- package/model/src/lib/mailgun/index.d.ts +1 -0
- package/model/src/lib/mailgun/index.js +5 -0
- package/model/src/lib/mailgun/index.js.map +1 -0
- package/model/src/lib/mailgun/notification.send.service.mailgun.d.ts +51 -0
- package/model/src/lib/mailgun/notification.send.service.mailgun.js +67 -0
- package/model/src/lib/mailgun/notification.send.service.mailgun.js.map +1 -0
- package/model/src/lib/notification/index.d.ts +11 -0
- package/model/src/lib/notification/index.js +15 -0
- package/model/src/lib/notification/index.js.map +1 -0
- package/model/src/lib/notification/notification.action.init.server.d.ts +72 -0
- package/model/src/lib/notification/notification.action.init.server.js +228 -0
- package/model/src/lib/notification/notification.action.init.server.js.map +1 -0
- package/model/src/lib/notification/notification.action.server.d.ts +70 -0
- package/model/src/lib/notification/notification.action.server.js +1049 -0
- package/model/src/lib/notification/notification.action.server.js.map +1 -0
- package/model/src/lib/notification/notification.config.d.ts +31 -0
- package/model/src/lib/notification/notification.config.js +13 -0
- package/model/src/lib/notification/notification.config.js.map +1 -0
- package/model/src/lib/notification/notification.config.service.d.ts +49 -0
- package/model/src/lib/notification/notification.config.service.js +59 -0
- package/model/src/lib/notification/notification.config.service.js.map +1 -0
- package/model/src/lib/notification/notification.error.d.ts +9 -0
- package/model/src/lib/notification/notification.error.js +74 -0
- package/model/src/lib/notification/notification.error.js.map +1 -0
- package/model/src/lib/notification/notification.module.d.ts +49 -0
- package/model/src/lib/notification/notification.module.js +69 -0
- package/model/src/lib/notification/notification.module.js.map +1 -0
- package/model/src/lib/notification/notification.send.d.ts +4 -0
- package/model/src/lib/notification/notification.send.js +3 -0
- package/model/src/lib/notification/notification.send.js.map +1 -0
- package/model/src/lib/notification/notification.send.service.d.ts +65 -0
- package/model/src/lib/notification/notification.send.service.js +10 -0
- package/model/src/lib/notification/notification.send.service.js.map +1 -0
- package/model/src/lib/notification/notification.send.service.notificationsummary.d.ts +18 -0
- package/model/src/lib/notification/notification.send.service.notificationsummary.js +105 -0
- package/model/src/lib/notification/notification.send.service.notificationsummary.js.map +1 -0
- package/model/src/lib/notification/notification.send.service.text.d.ts +9 -0
- package/model/src/lib/notification/notification.send.service.text.js +30 -0
- package/model/src/lib/notification/notification.send.service.text.js.map +1 -0
- package/model/src/lib/notification/notification.util.d.ts +128 -0
- package/model/src/lib/notification/notification.util.js +465 -0
- package/model/src/lib/notification/notification.util.js.map +1 -0
- package/package.json +7 -1
- package/test/package.json +1 -1
- package/zoho/package.json +1 -1
|
@@ -0,0 +1,465 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.updateNotificationUserNotificationBoxRecipientConfig = exports.expandNotificationRecipients = exports.makeNewNotificationSummaryTemplate = void 0;
|
|
4
|
+
const firebase_1 = require("@dereekb/firebase");
|
|
5
|
+
const util_1 = require("@dereekb/util");
|
|
6
|
+
const notification_error_1 = require("./notification.error");
|
|
7
|
+
// MARK: Create NotificationSummary
|
|
8
|
+
function makeNewNotificationSummaryTemplate(model) {
|
|
9
|
+
return {
|
|
10
|
+
cat: new Date(),
|
|
11
|
+
m: model,
|
|
12
|
+
o: (0, firebase_1.firestoreDummyKey)(),
|
|
13
|
+
s: true,
|
|
14
|
+
n: []
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
exports.makeNewNotificationSummaryTemplate = makeNewNotificationSummaryTemplate;
|
|
18
|
+
/**
|
|
19
|
+
* "Expands" the input into recipients for emails, texts, etc.
|
|
20
|
+
*
|
|
21
|
+
* Recipients may come from the NotificationBox, Notification or from the global recipients.
|
|
22
|
+
*
|
|
23
|
+
* Recipients are each configurable and may be defined with as little info as a single contact info, or have multiple contact info pieces associated with them.
|
|
24
|
+
*
|
|
25
|
+
* @param input
|
|
26
|
+
* @returns
|
|
27
|
+
*/
|
|
28
|
+
async function expandNotificationRecipients(input) {
|
|
29
|
+
const { notificationUserAccessor, authService, notification, notificationBox, globalRecipients: inputGlobalRecipients, recipientFlagOverride, notificationSummaryIdForUid: inputNotificationSummaryIdForUid, onlyTextExplicitlyEnabledRecipients: inputOnlyTextExplicitlyEnabledRecipients } = input;
|
|
30
|
+
const notificationSummaryIdForUid = inputNotificationSummaryIdForUid ?? (() => undefined);
|
|
31
|
+
const notificationTemplateType = notification.n.t || firebase_1.DEFAULT_NOTIFICATION_TEMPLATE_TYPE;
|
|
32
|
+
const recipientFlag = recipientFlagOverride ?? notification.rf ?? firebase_1.NotificationRecipientSendFlag.NORMAL;
|
|
33
|
+
const onlyTextExplicitlyEnabledRecipients = inputOnlyTextExplicitlyEnabledRecipients !== false;
|
|
34
|
+
const { canSendToGlobalRecipients, canSendToBoxRecipients, canSendToExplicitRecipients } = (0, firebase_1.allowedNotificationRecipients)(recipientFlag);
|
|
35
|
+
const initialExplicitRecipients = canSendToExplicitRecipients ? notification.r : [];
|
|
36
|
+
const initialGlobalRecipients = canSendToGlobalRecipients && inputGlobalRecipients ? inputGlobalRecipients : [];
|
|
37
|
+
const explicitRecipients = initialExplicitRecipients.map((x) => ({
|
|
38
|
+
...x,
|
|
39
|
+
...(0, firebase_1.effectiveNotificationBoxRecipientTemplateConfig)(x)
|
|
40
|
+
}));
|
|
41
|
+
const globalRecipients = initialGlobalRecipients.map((x) => ({
|
|
42
|
+
...x,
|
|
43
|
+
...(0, firebase_1.effectiveNotificationBoxRecipientTemplateConfig)(x)
|
|
44
|
+
}));
|
|
45
|
+
const explicitAndGlobalRecipients = [...explicitRecipients, ...globalRecipients];
|
|
46
|
+
const allBoxRecipientConfigs = canSendToBoxRecipients && notificationBox ? notificationBox.r : [];
|
|
47
|
+
const recipientUids = new Set();
|
|
48
|
+
const relevantBoxRecipientConfigs = [];
|
|
49
|
+
// find all recipients in the NotificationBox with the target template type flagged for them.
|
|
50
|
+
allBoxRecipientConfigs.forEach((x) => {
|
|
51
|
+
// ignore opt-out flagged recipients
|
|
52
|
+
if (!x.f) {
|
|
53
|
+
const relevantConfig = x.c[notificationTemplateType];
|
|
54
|
+
const effectiveTemplateConfig = relevantConfig ? (0, firebase_1.effectiveNotificationBoxRecipientTemplateConfig)(relevantConfig) : undefined;
|
|
55
|
+
if (!effectiveTemplateConfig || effectiveTemplateConfig.st || effectiveTemplateConfig.se || effectiveTemplateConfig.sp || effectiveTemplateConfig.st) {
|
|
56
|
+
relevantBoxRecipientConfigs.push({
|
|
57
|
+
recipient: x,
|
|
58
|
+
effectiveTemplateConfig
|
|
59
|
+
});
|
|
60
|
+
if (x.uid) {
|
|
61
|
+
recipientUids.add(x.uid);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
// add other recipients to the map
|
|
67
|
+
const nonNotificationBoxUidRecipientConfigs = new Map();
|
|
68
|
+
explicitAndGlobalRecipients.forEach((x) => {
|
|
69
|
+
const { uid } = x;
|
|
70
|
+
if (uid && !recipientUids.has(uid)) {
|
|
71
|
+
// if already in recipientUids then they are a box recipient and we don't have to try and load them.
|
|
72
|
+
nonNotificationBoxUidRecipientConfigs.set(uid, x);
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
const otherNotificationUserUidOptOuts = new Set();
|
|
76
|
+
const notificationUserRecipientConfigs = new Map();
|
|
77
|
+
if (nonNotificationBoxUidRecipientConfigs.size > 0) {
|
|
78
|
+
const nonNotificationBoxRecipientUids = Array.from(nonNotificationBoxUidRecipientConfigs.keys());
|
|
79
|
+
const notificationUserDocuments = (0, firebase_1.loadDocumentsForIds)(notificationUserAccessor, nonNotificationBoxRecipientUids);
|
|
80
|
+
// Attempt to load the NotificationUser for each uid.
|
|
81
|
+
// Not guranteed to exist, but those that do we want to their configurations to decide opt-in/opt-out, as well as override the input recipient configuration for the Notification.
|
|
82
|
+
const notificationUsers = await (0, firebase_1.getDocumentSnapshotDataPairsWithData)(notificationUserDocuments);
|
|
83
|
+
notificationUsers.forEach((x) => {
|
|
84
|
+
const { data: notificationUser } = x;
|
|
85
|
+
const { dc, gc } = notificationUser;
|
|
86
|
+
const effectiveConfig = (0, firebase_1.mergeNotificationUserDefaultNotificationBoxRecipientConfig)(dc, gc);
|
|
87
|
+
const uid = x.document.id;
|
|
88
|
+
notificationUserRecipientConfigs.set(uid, effectiveConfig);
|
|
89
|
+
if (effectiveConfig.f) {
|
|
90
|
+
// if flagged for opt out, add to set
|
|
91
|
+
otherNotificationUserUidOptOuts.add(uid);
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Other NotificationRecipientWithConfig
|
|
97
|
+
*/
|
|
98
|
+
const otherRecipientConfigs = new Map();
|
|
99
|
+
const explicitOtherRecipientEmailAddresses = new Map();
|
|
100
|
+
const explicitOtherRecipientTextNumbers = new Map();
|
|
101
|
+
const explicitOtherRecipientNotificationSummaryIds = new Map();
|
|
102
|
+
explicitAndGlobalRecipients.forEach((x) => {
|
|
103
|
+
const uid = x.uid;
|
|
104
|
+
if (uid) {
|
|
105
|
+
if (otherNotificationUserUidOptOuts.has(uid)) {
|
|
106
|
+
return; // do not add to the recipients at all, user has opted out
|
|
107
|
+
}
|
|
108
|
+
const notificationUserRecipientConfig = notificationUserRecipientConfigs.get(uid);
|
|
109
|
+
if (notificationUserRecipientConfig != null) {
|
|
110
|
+
const userTemplateTypeConfig = notificationUserRecipientConfig.c[notificationTemplateType] ?? {};
|
|
111
|
+
const templateConfig = (0, firebase_1.mergeNotificationBoxRecipientTemplateConfigs)((0, firebase_1.effectiveNotificationBoxRecipientTemplateConfig)(userTemplateTypeConfig), x);
|
|
112
|
+
// replace the input NotificationRecipientWithConfig with the user's config
|
|
113
|
+
x = {
|
|
114
|
+
...notificationUserRecipientConfig,
|
|
115
|
+
...(0, firebase_1.effectiveNotificationBoxRecipientTemplateConfig)(templateConfig),
|
|
116
|
+
uid
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
recipientUids.add(uid);
|
|
120
|
+
otherRecipientConfigs.set(uid, x);
|
|
121
|
+
}
|
|
122
|
+
if (x.e) {
|
|
123
|
+
explicitOtherRecipientEmailAddresses.set(x.e.toLowerCase(), x);
|
|
124
|
+
}
|
|
125
|
+
if (x.t) {
|
|
126
|
+
explicitOtherRecipientTextNumbers.set(x.t, x);
|
|
127
|
+
}
|
|
128
|
+
if (x.s) {
|
|
129
|
+
explicitOtherRecipientNotificationSummaryIds.set(x.s, x);
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
// load user details from auth service
|
|
133
|
+
const allUserDetails = await Promise.all(Array.from(recipientUids).map((uid) => authService
|
|
134
|
+
.userContext(uid)
|
|
135
|
+
.loadDetails()
|
|
136
|
+
.then((details) => [uid, details])
|
|
137
|
+
.catch(() => [uid, undefined])));
|
|
138
|
+
const userDetailsMap = new Map(allUserDetails);
|
|
139
|
+
const _internal = {
|
|
140
|
+
userDetailsMap,
|
|
141
|
+
explicitRecipients,
|
|
142
|
+
globalRecipients,
|
|
143
|
+
allBoxRecipientConfigs,
|
|
144
|
+
relevantBoxRecipientConfigs,
|
|
145
|
+
recipientUids,
|
|
146
|
+
otherRecipientConfigs,
|
|
147
|
+
explicitOtherRecipientEmailAddresses,
|
|
148
|
+
explicitOtherRecipientTextNumbers,
|
|
149
|
+
explicitOtherRecipientNotificationSummaryIds,
|
|
150
|
+
otherNotificationUserUidOptOuts,
|
|
151
|
+
nonNotificationBoxUidRecipientConfigs,
|
|
152
|
+
notificationUserRecipientConfigs
|
|
153
|
+
};
|
|
154
|
+
// make all email recipients
|
|
155
|
+
const emails = [];
|
|
156
|
+
const emailUidsSet = new Set();
|
|
157
|
+
// start with all box recipients
|
|
158
|
+
relevantBoxRecipientConfigs.forEach((x) => {
|
|
159
|
+
const { recipient } = x;
|
|
160
|
+
const { uid, e: overrideRecipientEmail, n: overrideRecipientName } = recipient;
|
|
161
|
+
const userDetails = uid ? userDetailsMap.get(uid) : undefined;
|
|
162
|
+
const otherRecipientForUser = uid ? otherRecipientConfigs.get(uid) : undefined;
|
|
163
|
+
// don't send an email if marked false
|
|
164
|
+
if (x.effectiveTemplateConfig?.se !== false && !emailUidsSet.has(uid ?? '')) {
|
|
165
|
+
const e = overrideRecipientEmail ?? userDetails?.email; // use override email or the default email
|
|
166
|
+
if (e) {
|
|
167
|
+
const n = overrideRecipientName ?? userDetails?.displayName;
|
|
168
|
+
const emailAddress = e.toLowerCase();
|
|
169
|
+
explicitOtherRecipientEmailAddresses.delete(emailAddress); // don't double-send to the same email
|
|
170
|
+
const emailRecipient = {
|
|
171
|
+
emailAddress,
|
|
172
|
+
name: n,
|
|
173
|
+
boxRecipient: x,
|
|
174
|
+
otherRecipient: otherRecipientForUser
|
|
175
|
+
};
|
|
176
|
+
emails.push(emailRecipient);
|
|
177
|
+
if (uid) {
|
|
178
|
+
emailUidsSet.add(uid);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
});
|
|
183
|
+
otherRecipientConfigs.forEach((x, uid) => {
|
|
184
|
+
// add users who existing in the system at this step, then other recipients in the next step
|
|
185
|
+
const userDetails = userDetailsMap.get(uid);
|
|
186
|
+
if (userDetails) {
|
|
187
|
+
const { email: userEmailAddress, displayName } = userDetails;
|
|
188
|
+
const sendEmail = x.se !== false;
|
|
189
|
+
if (userEmailAddress && sendEmail && !emailUidsSet.has(uid)) {
|
|
190
|
+
const emailAddress = userEmailAddress.toLowerCase();
|
|
191
|
+
const name = displayName || x.n;
|
|
192
|
+
const emailRecipient = {
|
|
193
|
+
emailAddress,
|
|
194
|
+
name,
|
|
195
|
+
otherRecipient: x
|
|
196
|
+
};
|
|
197
|
+
emails.push(emailRecipient);
|
|
198
|
+
emailUidsSet.add(uid);
|
|
199
|
+
explicitOtherRecipientEmailAddresses.delete(emailAddress);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
explicitOtherRecipientEmailAddresses.forEach((x, emailAddress) => {
|
|
204
|
+
const sendEmail = x.se !== false;
|
|
205
|
+
if (sendEmail) {
|
|
206
|
+
const emailRecipient = {
|
|
207
|
+
emailAddress: emailAddress,
|
|
208
|
+
name: x.n,
|
|
209
|
+
otherRecipient: x
|
|
210
|
+
};
|
|
211
|
+
emails.push(emailRecipient);
|
|
212
|
+
}
|
|
213
|
+
});
|
|
214
|
+
// make all text recipients
|
|
215
|
+
// text recipients should be explicitly enabled, or marked true
|
|
216
|
+
const texts = [];
|
|
217
|
+
const textUidsSet = new Set();
|
|
218
|
+
relevantBoxRecipientConfigs.forEach((x) => {
|
|
219
|
+
const { recipient } = x;
|
|
220
|
+
const { uid } = recipient;
|
|
221
|
+
const sendTextEnabled = x.effectiveTemplateConfig?.st;
|
|
222
|
+
const userDetails = uid ? userDetailsMap.get(uid) : undefined;
|
|
223
|
+
const otherRecipientForUser = uid ? otherRecipientConfigs.get(uid) : undefined;
|
|
224
|
+
// only send a text if explicitly enabled
|
|
225
|
+
const shouldSendText = (onlyTextExplicitlyEnabledRecipients && sendTextEnabled === true) || (!onlyTextExplicitlyEnabledRecipients && sendTextEnabled !== false);
|
|
226
|
+
if (shouldSendText && !textUidsSet.has(uid ?? '')) {
|
|
227
|
+
const t = x.recipient.t ?? userDetails?.phoneNumber; // use override phoneNumber or the default phone
|
|
228
|
+
if (t) {
|
|
229
|
+
const name = userDetails?.displayName ?? x.recipient.n;
|
|
230
|
+
const phoneNumber = t;
|
|
231
|
+
explicitOtherRecipientTextNumbers.delete(phoneNumber); // don't double-send to the same text phone number
|
|
232
|
+
const textRecipient = {
|
|
233
|
+
phoneNumber,
|
|
234
|
+
name,
|
|
235
|
+
boxRecipient: x,
|
|
236
|
+
otherRecipient: otherRecipientForUser
|
|
237
|
+
};
|
|
238
|
+
texts.push(textRecipient);
|
|
239
|
+
if (uid) {
|
|
240
|
+
textUidsSet.add(uid);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
});
|
|
245
|
+
otherRecipientConfigs.forEach((x, uid) => {
|
|
246
|
+
// add users who existing in the system at this step, then other recipients in the next step
|
|
247
|
+
const userDetails = userDetailsMap.get(uid);
|
|
248
|
+
if (userDetails) {
|
|
249
|
+
const { phoneNumber, displayName } = userDetails;
|
|
250
|
+
const sendTextEnabled = x.st;
|
|
251
|
+
const sendText = (onlyTextExplicitlyEnabledRecipients && sendTextEnabled === true) || (!onlyTextExplicitlyEnabledRecipients && sendTextEnabled !== false);
|
|
252
|
+
if (phoneNumber != null && sendText && !textUidsSet.has(uid)) {
|
|
253
|
+
const name = displayName || x.n;
|
|
254
|
+
const textRecipient = {
|
|
255
|
+
phoneNumber: phoneNumber,
|
|
256
|
+
name,
|
|
257
|
+
otherRecipient: x
|
|
258
|
+
};
|
|
259
|
+
texts.push(textRecipient);
|
|
260
|
+
textUidsSet.add(uid);
|
|
261
|
+
explicitOtherRecipientTextNumbers.delete(phoneNumber); // don't double-send to the same text phone number
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
});
|
|
265
|
+
explicitOtherRecipientTextNumbers.forEach((x, t) => {
|
|
266
|
+
const sendTextEnabled = x.st;
|
|
267
|
+
const shouldSendText = (onlyTextExplicitlyEnabledRecipients && sendTextEnabled === true) || (!onlyTextExplicitlyEnabledRecipients && sendTextEnabled !== false);
|
|
268
|
+
if (shouldSendText) {
|
|
269
|
+
const textRecipient = {
|
|
270
|
+
phoneNumber: t,
|
|
271
|
+
name: x.n,
|
|
272
|
+
otherRecipient: x
|
|
273
|
+
};
|
|
274
|
+
texts.push(textRecipient);
|
|
275
|
+
}
|
|
276
|
+
});
|
|
277
|
+
// TODO: Add push notification details...
|
|
278
|
+
// make all notification summary recipients
|
|
279
|
+
const notificationSummaries = [];
|
|
280
|
+
const notificationSummaryKeysSet = new Set();
|
|
281
|
+
const notificationSummaryUidsSet = new Set();
|
|
282
|
+
relevantBoxRecipientConfigs.forEach((x) => {
|
|
283
|
+
const { recipient } = x;
|
|
284
|
+
const { uid } = recipient;
|
|
285
|
+
const userDetails = uid ? userDetailsMap.get(uid) : undefined;
|
|
286
|
+
const otherRecipientForUser = uid ? otherRecipientConfigs.get(uid) : undefined;
|
|
287
|
+
const sendNotificationSummary = x.effectiveTemplateConfig?.sn !== false;
|
|
288
|
+
// don't send a notification summary if marked false
|
|
289
|
+
if (sendNotificationSummary && !notificationSummaryUidsSet.has(uid ?? '')) {
|
|
290
|
+
let notificationSummaryId;
|
|
291
|
+
if (uid) {
|
|
292
|
+
// only use the uid (and ignore recipient config) if uid is defined
|
|
293
|
+
notificationSummaryId = notificationSummaryIdForUid(uid);
|
|
294
|
+
notificationSummaryUidsSet.add(uid);
|
|
295
|
+
}
|
|
296
|
+
else if (x.recipient.s) {
|
|
297
|
+
notificationSummaryId = x.recipient.s;
|
|
298
|
+
}
|
|
299
|
+
if (notificationSummaryId) {
|
|
300
|
+
const name = userDetails?.displayName ?? x.recipient.n;
|
|
301
|
+
notificationSummaries.push({
|
|
302
|
+
notificationSummaryId,
|
|
303
|
+
boxRecipient: x,
|
|
304
|
+
otherRecipient: otherRecipientForUser,
|
|
305
|
+
name
|
|
306
|
+
});
|
|
307
|
+
explicitOtherRecipientNotificationSummaryIds.delete(notificationSummaryId); // don't double send
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
});
|
|
311
|
+
otherRecipientConfigs.forEach((x, uid) => {
|
|
312
|
+
// add users who existing in the system at this step, then other recipients in the next step
|
|
313
|
+
const userDetails = userDetailsMap.get(uid);
|
|
314
|
+
if (userDetails) {
|
|
315
|
+
const { phoneNumber, displayName } = userDetails;
|
|
316
|
+
const sendTextEnabled = x.st;
|
|
317
|
+
const sendText = (onlyTextExplicitlyEnabledRecipients && sendTextEnabled === true) || (!onlyTextExplicitlyEnabledRecipients && sendTextEnabled !== false);
|
|
318
|
+
if (phoneNumber != null && sendText && !textUidsSet.has(uid)) {
|
|
319
|
+
const name = displayName || x.n;
|
|
320
|
+
const textRecipient = {
|
|
321
|
+
phoneNumber: phoneNumber,
|
|
322
|
+
name,
|
|
323
|
+
otherRecipient: x
|
|
324
|
+
};
|
|
325
|
+
texts.push(textRecipient);
|
|
326
|
+
textUidsSet.add(uid);
|
|
327
|
+
explicitOtherRecipientTextNumbers.delete(phoneNumber); // don't double-send to the same text phone number
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
});
|
|
331
|
+
otherRecipientConfigs.forEach((x, uid) => {
|
|
332
|
+
const userDetails = userDetailsMap.get(uid);
|
|
333
|
+
if (userDetails) {
|
|
334
|
+
const { displayName } = userDetails;
|
|
335
|
+
const sendNotificationSummary = x.sn;
|
|
336
|
+
if (sendNotificationSummary !== false) {
|
|
337
|
+
let notificationSummaryId;
|
|
338
|
+
if (uid) {
|
|
339
|
+
notificationSummaryId = notificationSummaryIdForUid(uid);
|
|
340
|
+
notificationSummaryUidsSet.add(uid);
|
|
341
|
+
}
|
|
342
|
+
else if (x.s) {
|
|
343
|
+
notificationSummaryId = x.s;
|
|
344
|
+
}
|
|
345
|
+
if (notificationSummaryId) {
|
|
346
|
+
if (!notificationSummaryKeysSet.has(notificationSummaryId)) {
|
|
347
|
+
const name = displayName || x.n;
|
|
348
|
+
const notificationSummary = {
|
|
349
|
+
notificationSummaryId,
|
|
350
|
+
otherRecipient: x,
|
|
351
|
+
name
|
|
352
|
+
};
|
|
353
|
+
notificationSummaries.push(notificationSummary);
|
|
354
|
+
explicitOtherRecipientNotificationSummaryIds.delete(notificationSummaryId);
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
});
|
|
360
|
+
explicitOtherRecipientNotificationSummaryIds.forEach((x, notificationSummaryId) => {
|
|
361
|
+
const { sn: sendNotificationSummary } = x;
|
|
362
|
+
if (sendNotificationSummary !== false) {
|
|
363
|
+
const notificationSummary = {
|
|
364
|
+
notificationSummaryId,
|
|
365
|
+
otherRecipient: x,
|
|
366
|
+
name: x.n
|
|
367
|
+
};
|
|
368
|
+
notificationSummaries.push(notificationSummary);
|
|
369
|
+
}
|
|
370
|
+
});
|
|
371
|
+
// results
|
|
372
|
+
const result = {
|
|
373
|
+
_internal,
|
|
374
|
+
emails,
|
|
375
|
+
texts,
|
|
376
|
+
notificationSummaries
|
|
377
|
+
};
|
|
378
|
+
return result;
|
|
379
|
+
}
|
|
380
|
+
exports.expandNotificationRecipients = expandNotificationRecipients;
|
|
381
|
+
function updateNotificationUserNotificationBoxRecipientConfig(input) {
|
|
382
|
+
const { notificationBoxId, notificationUserId, notificationUser, insertingRecipientIntoNotificationBox, removeRecipientFromNotificationBox, notificationBoxRecipient } = input;
|
|
383
|
+
const currentNotificationUserBoxIndex = notificationUser.bc.findIndex((x) => x.nb === notificationBoxId);
|
|
384
|
+
const currentNotificationUserBoxIndexExists = currentNotificationUserBoxIndex !== -1;
|
|
385
|
+
const currentNotificationUserBoxGlobalConfig = notificationUser.gc;
|
|
386
|
+
const currentNotificationUserBoxConfig = notificationUser.bc[currentNotificationUserBoxIndex] ?? {};
|
|
387
|
+
/**
|
|
388
|
+
* If bc is updated then the user should be updated too
|
|
389
|
+
*/
|
|
390
|
+
let updatedBc;
|
|
391
|
+
let updatedNotificationBoxRecipient;
|
|
392
|
+
if (removeRecipientFromNotificationBox) {
|
|
393
|
+
// flag as removed in the NotificationUser details if not already flagged as such
|
|
394
|
+
if (currentNotificationUserBoxIndexExists && currentNotificationUserBoxConfig.rm !== true) {
|
|
395
|
+
updatedBc = [...notificationUser.bc];
|
|
396
|
+
updatedBc[currentNotificationUserBoxIndex] = {
|
|
397
|
+
...currentNotificationUserBoxConfig,
|
|
398
|
+
nb: notificationBoxId,
|
|
399
|
+
c: currentNotificationUserBoxConfig.c ?? {},
|
|
400
|
+
i: util_1.UNSET_INDEX_NUMBER,
|
|
401
|
+
ns: false,
|
|
402
|
+
rm: true
|
|
403
|
+
};
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
else if (notificationBoxRecipient != null) {
|
|
407
|
+
const { ns: currentConfigNeedsSync, lk: lockedFromChanges, bk: blockedFromAdd } = {
|
|
408
|
+
ns: currentNotificationUserBoxConfig.ns,
|
|
409
|
+
lk: currentNotificationUserBoxGlobalConfig.lk ?? currentNotificationUserBoxConfig.lk,
|
|
410
|
+
bk: currentNotificationUserBoxGlobalConfig.bk ?? currentNotificationUserBoxConfig.bk
|
|
411
|
+
};
|
|
412
|
+
// if we're re-inserting, then take the prevous config and restore as it was and remove the rm tag
|
|
413
|
+
let updateWithNotificationBoxRecipient;
|
|
414
|
+
if (insertingRecipientIntoNotificationBox) {
|
|
415
|
+
// does not exist in the NotificationBox currently
|
|
416
|
+
if (blockedFromAdd) {
|
|
417
|
+
throw (0, notification_error_1.notificationUserBlockedFromBeingAddedToRecipientsError)(notificationUserId);
|
|
418
|
+
}
|
|
419
|
+
else if (lockedFromChanges) {
|
|
420
|
+
// ignored the notificationBoxRecipient's updates
|
|
421
|
+
updateWithNotificationBoxRecipient = currentNotificationUserBoxConfig;
|
|
422
|
+
}
|
|
423
|
+
else {
|
|
424
|
+
updateWithNotificationBoxRecipient = (0, firebase_1.mergeNotificationBoxRecipients)(notificationBoxRecipient, currentNotificationUserBoxConfig);
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
else {
|
|
428
|
+
// if locked from changes, throw error
|
|
429
|
+
if (lockedFromChanges) {
|
|
430
|
+
throw (0, notification_error_1.notificationUserLockedConfigFromBeingUpdatedError)(notificationUserId);
|
|
431
|
+
}
|
|
432
|
+
else if (currentConfigNeedsSync) {
|
|
433
|
+
// if needs sync, then merge changes from the config into the notificationBoxRecipient
|
|
434
|
+
updateWithNotificationBoxRecipient = (0, firebase_1.mergeNotificationBoxRecipients)(notificationBoxRecipient, currentNotificationUserBoxConfig);
|
|
435
|
+
}
|
|
436
|
+
else {
|
|
437
|
+
// use as-is
|
|
438
|
+
updateWithNotificationBoxRecipient = notificationBoxRecipient;
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
const updatedNotificationUserBoxEntry = (0, firebase_1.mergeNotificationUserNotificationBoxRecipientConfigs)({
|
|
442
|
+
...currentNotificationUserBoxConfig,
|
|
443
|
+
i: notificationBoxRecipient.i,
|
|
444
|
+
c: currentNotificationUserBoxConfig.c ?? {},
|
|
445
|
+
nb: notificationBoxId,
|
|
446
|
+
rm: false // remove/clear the removed flag
|
|
447
|
+
}, updateWithNotificationBoxRecipient);
|
|
448
|
+
updatedBc = [...notificationUser.bc];
|
|
449
|
+
if (currentNotificationUserBoxIndexExists) {
|
|
450
|
+
updatedBc[currentNotificationUserBoxIndex] = updatedNotificationUserBoxEntry;
|
|
451
|
+
}
|
|
452
|
+
else {
|
|
453
|
+
updatedBc.push(updatedNotificationUserBoxEntry);
|
|
454
|
+
}
|
|
455
|
+
// sync index with input NotificationBoxRecipient
|
|
456
|
+
updatedNotificationUserBoxEntry.i = notificationBoxRecipient.i;
|
|
457
|
+
updatedNotificationBoxRecipient = updatedNotificationUserBoxEntry;
|
|
458
|
+
}
|
|
459
|
+
return {
|
|
460
|
+
updatedBc,
|
|
461
|
+
updatedNotificationBoxRecipient
|
|
462
|
+
};
|
|
463
|
+
}
|
|
464
|
+
exports.updateNotificationUserNotificationBoxRecipientConfig = updateNotificationUserNotificationBoxRecipientConfig;
|
|
465
|
+
//# sourceMappingURL=notification.util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notification.util.js","sourceRoot":"","sources":["../../../../../../../packages/firebase-server/model/src/lib/notification/notification.util.ts"],"names":[],"mappings":";;;AAAA,gDA8B2B;AAE3B,wCAAyI;AACzI,6DAAiJ;AAEjJ,mCAAmC;AACnC,SAAgB,kCAAkC,CAAC,KAAe;IAChE,OAAO;QACL,GAAG,EAAE,IAAI,IAAI,EAAE;QACf,CAAC,EAAE,KAAK;QACR,CAAC,EAAE,IAAA,4BAAiB,GAAE;QACtB,CAAC,EAAE,IAAI;QACP,CAAC,EAAE,EAAE;KACN,CAAC;AACJ,CAAC;AARD,gFAQC;AA8FD;;;;;;;;;GASG;AACI,KAAK,UAAU,4BAA4B,CAAC,KAAwC;IACzF,MAAM,EAAE,wBAAwB,EAAE,WAAW,EAAE,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,gCAAgC,EAAE,mCAAmC,EAAE,wCAAwC,EAAE,GAAG,KAAK,CAAC;IACrS,MAAM,2BAA2B,GAAG,gCAAgC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC1F,MAAM,wBAAwB,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,6CAAkC,CAAC;IACxF,MAAM,aAAa,GAAG,qBAAqB,IAAI,YAAY,CAAC,EAAE,IAAI,wCAA6B,CAAC,MAAM,CAAC;IACvG,MAAM,mCAAmC,GAAG,wCAAwC,KAAK,KAAK,CAAC;IAE/F,MAAM,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,2BAA2B,EAAE,GAAG,IAAA,wCAA6B,EAAC,aAAa,CAAC,CAAC;IAExI,MAAM,yBAAyB,GAAG,2BAA2B,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACpF,MAAM,uBAAuB,GAAG,yBAAyB,IAAI,qBAAqB,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC;IAEhH,MAAM,kBAAkB,GAAsC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAClG,GAAG,CAAC;QACJ,GAAG,IAAA,0DAA+C,EAAC,CAAC,CAAC;KACtD,CAAC,CAAC,CAAC;IAEJ,MAAM,gBAAgB,GAAsC,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9F,GAAG,CAAC;QACJ,GAAG,IAAA,0DAA+C,EAAC,CAAC,CAAC;KACtD,CAAC,CAAC,CAAC;IAEJ,MAAM,2BAA2B,GAAG,CAAC,GAAG,kBAAkB,EAAE,GAAG,gBAAgB,CAAC,CAAC;IAEjF,MAAM,sBAAsB,GAA+B,sBAAsB,IAAI,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAE9H,MAAM,aAAa,GAAG,IAAI,GAAG,EAAsB,CAAC;IACpD,MAAM,2BAA2B,GAA0C,EAAE,CAAC;IAE9E,6FAA6F;IAC7F,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QACnC,oCAAoC;QACpC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;YACR,MAAM,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC;YACrD,MAAM,uBAAuB,GAAG,cAAc,CAAC,CAAC,CAAC,IAAA,0DAA+C,EAAC,cAAc,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAE7H,IAAI,CAAC,uBAAuB,IAAI,uBAAuB,CAAC,EAAE,IAAI,uBAAuB,CAAC,EAAE,IAAI,uBAAuB,CAAC,EAAE,IAAI,uBAAuB,CAAC,EAAE,EAAE;gBACpJ,2BAA2B,CAAC,IAAI,CAAC;oBAC/B,SAAS,EAAE,CAAC;oBACZ,uBAAuB;iBACxB,CAAC,CAAC;gBAEH,IAAI,CAAC,CAAC,GAAG,EAAE;oBACT,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;iBAC1B;aACF;SACF;IACH,CAAC,CAAC,CAAC;IAEH,kCAAkC;IAClC,MAAM,qCAAqC,GAAG,IAAI,GAAG,EAAuD,CAAC;IAE7G,2BAA2B,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QACxC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAElB,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YAClC,oGAAoG;YACpG,qCAAqC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;SACnD;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,+BAA+B,GAAG,IAAI,GAAG,EAAsB,CAAC;IACtE,MAAM,gCAAgC,GAAG,IAAI,GAAG,EAA6E,CAAC;IAE9H,IAAI,qCAAqC,CAAC,IAAI,GAAG,CAAC,EAAE;QAClD,MAAM,+BAA+B,GAAG,KAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,IAAI,EAAE,CAAC,CAAC;QACjG,MAAM,yBAAyB,GAAG,IAAA,8BAAmB,EAAC,wBAAwB,EAAE,+BAA+B,CAAC,CAAC;QAEjH,qDAAqD;QACrD,kLAAkL;QAClL,MAAM,iBAAiB,GAAG,MAAM,IAAA,+CAAoC,EAAC,yBAAyB,CAAC,CAAC;QAEhG,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YAC9B,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,GAAG,CAAC,CAAC;YACrC,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,gBAAgB,CAAC;YAEpC,MAAM,eAAe,GAAG,IAAA,qEAA0D,EAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAC3F,MAAM,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;YAE1B,gCAAgC,CAAC,GAAG,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;YAE3D,IAAI,eAAe,CAAC,CAAC,EAAE;gBACrB,qCAAqC;gBACrC,+BAA+B,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;aAC1C;QACH,CAAC,CAAC,CAAC;KACJ;IAED;;OAEG;IACH,MAAM,qBAAqB,GAAG,IAAI,GAAG,EAAuD,CAAC;IAE7F,MAAM,oCAAoC,GAAG,IAAI,GAAG,EAAiD,CAAC;IACtG,MAAM,iCAAiC,GAAG,IAAI,GAAG,EAAgD,CAAC;IAClG,MAAM,4CAA4C,GAAG,IAAI,GAAG,EAA0D,CAAC;IAEvH,2BAA2B,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QACxC,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC;QAElB,IAAI,GAAG,EAAE;YACP,IAAI,+BAA+B,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;gBAC5C,OAAO,CAAC,0DAA0D;aACnE;YAED,MAAM,+BAA+B,GAAG,gCAAgC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAElF,IAAI,+BAA+B,IAAI,IAAI,EAAE;gBAC3C,MAAM,sBAAsB,GAAG,+BAA+B,CAAC,CAAC,CAAC,wBAAwB,CAAC,IAAI,EAAE,CAAC;gBACjG,MAAM,cAAc,GAA2C,IAAA,uDAA4C,EAAC,IAAA,0DAA+C,EAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC,CAAC;gBAExL,2EAA2E;gBAC3E,CAAC,GAAG;oBACF,GAAG,+BAA+B;oBAClC,GAAG,IAAA,0DAA+C,EAAC,cAAc,CAAC;oBAClE,GAAG;iBACJ,CAAC;aACH;YAED,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACvB,qBAAqB,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;SACnC;QAED,IAAI,CAAC,CAAC,CAAC,EAAE;YACP,oCAAoC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC;SAChE;QAED,IAAI,CAAC,CAAC,CAAC,EAAE;YACP,iCAAiC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SAC/C;QAED,IAAI,CAAC,CAAC,CAAC,EAAE;YACP,4CAA4C,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SAC1D;IACH,CAAC,CAAC,CAAC;IAEH,sCAAsC;IACtC,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,GAAG,CACtC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CACpC,WAAW;SACR,WAAW,CAAC,GAAG,CAAC;SAChB,WAAW,EAAE;SACb,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,OAAO,CAA8C,CAAC;SAC9E,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,SAAS,CAA8C,CAAC,CAC9E,CACF,CAAC;IAEF,MAAM,cAAc,GAAG,IAAI,GAAG,CAA0C,cAAc,CAAC,CAAC;IAExF,MAAM,SAAS,GAAyC;QACtD,cAAc;QACd,kBAAkB;QAClB,gBAAgB;QAChB,sBAAsB;QACtB,2BAA2B;QAC3B,aAAa;QACb,qBAAqB;QACrB,oCAAoC;QACpC,iCAAiC;QACjC,4CAA4C;QAC5C,+BAA+B;QAC/B,qCAAqC;QACrC,gCAAgC;KACjC,CAAC;IAEF,4BAA4B;IAC5B,MAAM,MAAM,GAAyC,EAAE,CAAC;IACxD,MAAM,YAAY,GAAG,IAAI,GAAG,EAAsB,CAAC;IAEnD,gCAAgC;IAChC,2BAA2B,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QACxC,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;QACxB,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,sBAAsB,EAAE,CAAC,EAAE,qBAAqB,EAAE,GAAG,SAAS,CAAC;QAE/E,MAAM,WAAW,GAAG,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9D,MAAM,qBAAqB,GAAG,GAAG,CAAC,CAAC,CAAC,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAE/E,sCAAsC;QACtC,IAAI,CAAC,CAAC,uBAAuB,EAAE,EAAE,KAAK,KAAK,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE;YAC3E,MAAM,CAAC,GAAG,sBAAsB,IAAI,WAAW,EAAE,KAAK,CAAC,CAAC,0CAA0C;YAElG,IAAI,CAAC,EAAE;gBACL,MAAM,CAAC,GAAG,qBAAqB,IAAI,WAAW,EAAE,WAAW,CAAC;gBAC5D,MAAM,YAAY,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;gBACrC,oCAAoC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,sCAAsC;gBAEjG,MAAM,cAAc,GAAuC;oBACzD,YAAY;oBACZ,IAAI,EAAE,CAAC;oBACP,YAAY,EAAE,CAAC;oBACf,cAAc,EAAE,qBAAqB;iBACtC,CAAC;gBAEF,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBAE5B,IAAI,GAAG,EAAE;oBACP,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;iBACvB;aACF;SACF;IACH,CAAC,CAAC,CAAC;IAEH,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;QACvC,4FAA4F;QAC5F,MAAM,WAAW,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAE5C,IAAI,WAAW,EAAE;YACf,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,GAAG,WAAW,CAAC;YAC7D,MAAM,SAAS,GAAG,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC;YAEjC,IAAI,gBAAgB,IAAI,SAAS,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;gBAC3D,MAAM,YAAY,GAAG,gBAAgB,CAAC,WAAW,EAAE,CAAC;gBAEpD,MAAM,IAAI,GAAG,WAAW,IAAI,CAAC,CAAC,CAAC,CAAC;gBAChC,MAAM,cAAc,GAAuC;oBACzD,YAAY;oBACZ,IAAI;oBACJ,cAAc,EAAE,CAAC;iBAClB,CAAC;gBAEF,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBAC5B,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACtB,oCAAoC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;aAC3D;SACF;IACH,CAAC,CAAC,CAAC;IAEH,oCAAoC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,EAAE;QAC/D,MAAM,SAAS,GAAG,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC;QAEjC,IAAI,SAAS,EAAE;YACb,MAAM,cAAc,GAAuC;gBACzD,YAAY,EAAE,YAAY;gBAC1B,IAAI,EAAE,CAAC,CAAC,CAAC;gBACT,cAAc,EAAE,CAAC;aAClB,CAAC;YAEF,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;SAC7B;IACH,CAAC,CAAC,CAAC;IAEH,2BAA2B;IAC3B,+DAA+D;IAC/D,MAAM,KAAK,GAAwC,EAAE,CAAC;IACtD,MAAM,WAAW,GAAG,IAAI,GAAG,EAAsB,CAAC;IAElD,2BAA2B,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QACxC,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;QACxB,MAAM,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC;QAC1B,MAAM,eAAe,GAAG,CAAC,CAAC,uBAAuB,EAAE,EAAE,CAAC;QAEtD,MAAM,WAAW,GAAG,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9D,MAAM,qBAAqB,GAAG,GAAG,CAAC,CAAC,CAAC,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAE/E,yCAAyC;QACzC,MAAM,cAAc,GAAG,CAAC,mCAAmC,IAAI,eAAe,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,mCAAmC,IAAI,eAAe,KAAK,KAAK,CAAC,CAAC;QAChK,IAAI,cAAc,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE;YACjD,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,WAAW,EAAE,WAAW,CAAC,CAAC,gDAAgD;YAErG,IAAI,CAAC,EAAE;gBACL,MAAM,IAAI,GAAG,WAAW,EAAE,WAAW,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;gBACvD,MAAM,WAAW,GAAG,CAAoB,CAAC;gBACzC,iCAAiC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,kDAAkD;gBAEzG,MAAM,aAAa,GAAsC;oBACvD,WAAW;oBACX,IAAI;oBACJ,YAAY,EAAE,CAAC;oBACf,cAAc,EAAE,qBAAqB;iBACtC,CAAC;gBAEF,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAE1B,IAAI,GAAG,EAAE;oBACP,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;iBACtB;aACF;SACF;IACH,CAAC,CAAC,CAAC;IAEH,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;QACvC,4FAA4F;QAC5F,MAAM,WAAW,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAE5C,IAAI,WAAW,EAAE;YACf,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,WAAW,CAAC;YACjD,MAAM,eAAe,GAAG,CAAC,CAAC,EAAE,CAAC;YAE7B,MAAM,QAAQ,GAAG,CAAC,mCAAmC,IAAI,eAAe,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,mCAAmC,IAAI,eAAe,KAAK,KAAK,CAAC,CAAC;YAC1J,IAAI,WAAW,IAAI,IAAI,IAAI,QAAQ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;gBAC5D,MAAM,IAAI,GAAG,WAAW,IAAI,CAAC,CAAC,CAAC,CAAC;gBAChC,MAAM,aAAa,GAAsC;oBACvD,WAAW,EAAE,WAA8B;oBAC3C,IAAI;oBACJ,cAAc,EAAE,CAAC;iBAClB,CAAC;gBAEF,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAC1B,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACrB,iCAAiC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,kDAAkD;aAC1G;SACF;IACH,CAAC,CAAC,CAAC;IAEH,iCAAiC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACjD,MAAM,eAAe,GAAG,CAAC,CAAC,EAAE,CAAC;QAC7B,MAAM,cAAc,GAAG,CAAC,mCAAmC,IAAI,eAAe,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,mCAAmC,IAAI,eAAe,KAAK,KAAK,CAAC,CAAC;QAEhK,IAAI,cAAc,EAAE;YAClB,MAAM,aAAa,GAAsC;gBACvD,WAAW,EAAE,CAAoB;gBACjC,IAAI,EAAE,CAAC,CAAC,CAAC;gBACT,cAAc,EAAE,CAAC;aAClB,CAAC;YAEF,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;SAC3B;IACH,CAAC,CAAC,CAAC;IAEH,yCAAyC;IAEzC,2CAA2C;IAC3C,MAAM,qBAAqB,GAAuD,EAAE,CAAC;IACrF,MAAM,0BAA0B,GAAG,IAAI,GAAG,EAA0B,CAAC;IACrE,MAAM,0BAA0B,GAAG,IAAI,GAAG,EAAsB,CAAC;IAEjE,2BAA2B,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QACxC,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;QACxB,MAAM,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC;QAE1B,MAAM,WAAW,GAAG,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9D,MAAM,qBAAqB,GAAG,GAAG,CAAC,CAAC,CAAC,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC/E,MAAM,uBAAuB,GAAG,CAAC,CAAC,uBAAuB,EAAE,EAAE,KAAK,KAAK,CAAC;QAExE,oDAAoD;QACpD,IAAI,uBAAuB,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE;YACzE,IAAI,qBAAmD,CAAC;YAExD,IAAI,GAAG,EAAE;gBACP,mEAAmE;gBACnE,qBAAqB,GAAG,2BAA2B,CAAC,GAAG,CAAC,CAAC;gBACzD,0BAA0B,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;aACrC;iBAAM,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE;gBACxB,qBAAqB,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;aACvC;YAED,IAAI,qBAAqB,EAAE;gBACzB,MAAM,IAAI,GAAG,WAAW,EAAE,WAAW,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;gBAEvD,qBAAqB,CAAC,IAAI,CAAC;oBACzB,qBAAqB;oBACrB,YAAY,EAAE,CAAC;oBACf,cAAc,EAAE,qBAAqB;oBACrC,IAAI;iBACL,CAAC,CAAC;gBAEH,4CAA4C,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,oBAAoB;aACjG;SACF;IACH,CAAC,CAAC,CAAC;IAEH,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;QACvC,4FAA4F;QAC5F,MAAM,WAAW,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAE5C,IAAI,WAAW,EAAE;YACf,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,WAAW,CAAC;YACjD,MAAM,eAAe,GAAG,CAAC,CAAC,EAAE,CAAC;YAE7B,MAAM,QAAQ,GAAG,CAAC,mCAAmC,IAAI,eAAe,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,mCAAmC,IAAI,eAAe,KAAK,KAAK,CAAC,CAAC;YAC1J,IAAI,WAAW,IAAI,IAAI,IAAI,QAAQ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;gBAC5D,MAAM,IAAI,GAAG,WAAW,IAAI,CAAC,CAAC,CAAC,CAAC;gBAChC,MAAM,aAAa,GAAsC;oBACvD,WAAW,EAAE,WAA8B;oBAC3C,IAAI;oBACJ,cAAc,EAAE,CAAC;iBAClB,CAAC;gBAEF,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAC1B,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACrB,iCAAiC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,kDAAkD;aAC1G;SACF;IACH,CAAC,CAAC,CAAC;IAEH,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;QACvC,MAAM,WAAW,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAE5C,IAAI,WAAW,EAAE;YACf,MAAM,EAAE,WAAW,EAAE,GAAG,WAAW,CAAC;YAEpC,MAAM,uBAAuB,GAAG,CAAC,CAAC,EAAE,CAAC;YACrC,IAAI,uBAAuB,KAAK,KAAK,EAAE;gBACrC,IAAI,qBAAmD,CAAC;gBAExD,IAAI,GAAG,EAAE;oBACP,qBAAqB,GAAG,2BAA2B,CAAC,GAAG,CAAC,CAAC;oBACzD,0BAA0B,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;iBACrC;qBAAM,IAAI,CAAC,CAAC,CAAC,EAAE;oBACd,qBAAqB,GAAG,CAAC,CAAC,CAAC,CAAC;iBAC7B;gBAED,IAAI,qBAAqB,EAAE;oBACzB,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,qBAAqB,CAAC,EAAE;wBAC1D,MAAM,IAAI,GAAG,WAAW,IAAI,CAAC,CAAC,CAAC,CAAC;wBAChC,MAAM,mBAAmB,GAAqD;4BAC5E,qBAAqB;4BACrB,cAAc,EAAE,CAAC;4BACjB,IAAI;yBACL,CAAC;wBAEF,qBAAqB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;wBAChD,4CAA4C,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;qBAC5E;iBACF;aACF;SACF;IACH,CAAC,CAAC,CAAC;IAEH,4CAA4C,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,qBAAqB,EAAE,EAAE;QAChF,MAAM,EAAE,EAAE,EAAE,uBAAuB,EAAE,GAAG,CAAC,CAAC;QAE1C,IAAI,uBAAuB,KAAK,KAAK,EAAE;YACrC,MAAM,mBAAmB,GAAqD;gBAC5E,qBAAqB;gBACrB,cAAc,EAAE,CAAC;gBACjB,IAAI,EAAE,CAAC,CAAC,CAAC;aACV,CAAC;YAEF,qBAAqB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;SACjD;IACH,CAAC,CAAC,CAAC;IAEH,UAAU;IACV,MAAM,MAAM,GAAuC;QACjD,SAAS;QACT,MAAM;QACN,KAAK;QACL,qBAAqB;KACtB,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC;AA1bD,oEA0bC;AAoCD,SAAgB,oDAAoD,CAAC,KAAgE;IACnI,MAAM,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,qCAAqC,EAAE,kCAAkC,EAAE,wBAAwB,EAAE,GAAG,KAAK,CAAC;IAE/K,MAAM,+BAA+B,GAAG,gBAAgB,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,iBAAiB,CAAC,CAAC;IAEzG,MAAM,qCAAqC,GAAG,+BAA+B,KAAK,CAAC,CAAC,CAAC;IACrF,MAAM,sCAAsC,GAAmE,gBAAgB,CAAC,EAAE,CAAC;IACnI,MAAM,gCAAgC,GAA4D,gBAAgB,CAAC,EAAE,CAAC,+BAA+B,CAAC,IAAI,EAAE,CAAC;IAE7J;;OAEG;IACH,IAAI,SAAkE,CAAC;IACvE,IAAI,+BAAgE,CAAC;IAErE,IAAI,kCAAkC,EAAE;QACtC,iFAAiF;QACjF,IAAI,qCAAqC,IAAI,gCAAgC,CAAC,EAAE,KAAK,IAAI,EAAE;YACzF,SAAS,GAAG,CAAC,GAAG,gBAAgB,CAAC,EAAE,CAAC,CAAC;YACrC,SAAS,CAAC,+BAA+B,CAAC,GAAG;gBAC3C,GAAI,gCAAmF;gBACvF,EAAE,EAAE,iBAAiB;gBACrB,CAAC,EAAE,gCAAgC,CAAC,CAAC,IAAI,EAAE;gBAC3C,CAAC,EAAE,yBAAkB;gBACrB,EAAE,EAAE,KAAK;gBACT,EAAE,EAAE,IAAI;aACT,CAAC;SACH;KACF;SAAM,IAAI,wBAAwB,IAAI,IAAI,EAAE;QAC3C,MAAM,EACJ,EAAE,EAAE,sBAAsB,EAC1B,EAAE,EAAE,iBAAiB,EACrB,EAAE,EAAE,cAAc,EACnB,GAAG;YACF,EAAE,EAAE,gCAAgC,CAAC,EAAE;YACvC,EAAE,EAAE,sCAAsC,CAAC,EAAE,IAAI,gCAAgC,CAAC,EAAE;YACpF,EAAE,EAAE,sCAAsC,CAAC,EAAE,IAAI,gCAAgC,CAAC,EAAE;SACrF,CAAC;QAEF,kGAAkG;QAClG,IAAI,kCAAqE,CAAC;QAE1E,IAAI,qCAAqC,EAAE;YACzC,kDAAkD;YAClD,IAAI,cAAc,EAAE;gBAClB,MAAM,IAAA,2EAAsD,EAAC,kBAAkB,CAAC,CAAC;aAClF;iBAAM,IAAI,iBAAiB,EAAE;gBAC5B,iDAAiD;gBACjD,kCAAkC,GAAG,gCAAgC,CAAC;aACvE;iBAAM;gBACL,kCAAkC,GAAG,IAAA,yCAA8B,EAAC,wBAAwB,EAAE,gCAAgC,CAAC,CAAC;aACjI;SACF;aAAM;YACL,sCAAsC;YACtC,IAAI,iBAAiB,EAAE;gBACrB,MAAM,IAAA,sEAAiD,EAAC,kBAAkB,CAAC,CAAC;aAC7E;iBAAM,IAAI,sBAAsB,EAAE;gBACjC,sFAAsF;gBACtF,kCAAkC,GAAG,IAAA,yCAA8B,EAAC,wBAAwB,EAAE,gCAAgC,CAAC,CAAC;aACjI;iBAAM;gBACL,YAAY;gBACZ,kCAAkC,GAAG,wBAAwB,CAAC;aAC/D;SACF;QAED,MAAM,+BAA+B,GAAG,IAAA,+DAAoD,EAC1F;YACE,GAAG,gCAAgC;YACnC,CAAC,EAAE,wBAAwB,CAAC,CAAC;YAC7B,CAAC,EAAE,gCAAgC,CAAC,CAAC,IAAI,EAAE;YAC3C,EAAE,EAAE,iBAAiB;YACrB,EAAE,EAAE,KAAK,CAAC,gCAAgC;SAC3C,EACD,kCAAkC,CACnC,CAAC;QAEF,SAAS,GAAG,CAAC,GAAG,gBAAgB,CAAC,EAAE,CAAC,CAAC;QAErC,IAAI,qCAAqC,EAAE;YACzC,SAAS,CAAC,+BAA+B,CAAC,GAAG,+BAA+B,CAAC;SAC9E;aAAM;YACL,SAAS,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;SACjD;QAED,iDAAiD;QACjD,+BAA+B,CAAC,CAAC,GAAG,wBAAwB,CAAC,CAAC,CAAC;QAC/D,+BAA+B,GAAG,+BAA+B,CAAC;KACnE;IAED,OAAO;QACL,SAAS;QACT,+BAA+B;KAChC,CAAC;AACJ,CAAC;AA7FD,oHA6FC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dereekb/firebase-server",
|
|
3
|
-
"version": "11.
|
|
3
|
+
"version": "11.1.1",
|
|
4
4
|
"exports": {
|
|
5
5
|
".": {
|
|
6
6
|
"types": "./src/index.d.ts",
|
|
@@ -25,6 +25,12 @@
|
|
|
25
25
|
"main": "./zoho/src/index.js",
|
|
26
26
|
"require": "./zoho/src/index.js",
|
|
27
27
|
"default": "./zoho/src/index.js"
|
|
28
|
+
},
|
|
29
|
+
"./model": {
|
|
30
|
+
"types": "./model/src/index.d.ts",
|
|
31
|
+
"main": "./model/src/index.js",
|
|
32
|
+
"require": "./model/src/index.js",
|
|
33
|
+
"default": "./model/src/index.js"
|
|
28
34
|
}
|
|
29
35
|
},
|
|
30
36
|
"main": "./src/index.js",
|
package/test/package.json
CHANGED