@memberjunction/notifications 3.4.0 → 4.1.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/README.md ADDED
@@ -0,0 +1,195 @@
1
+ # @memberjunction/notifications
2
+
3
+ Unified notification engine for MemberJunction that handles in-app, email, and SMS delivery based on notification types and user preferences. This server-side package coordinates between the MJ entity system, template engine, and communication engine to deliver notifications through the appropriate channels.
4
+
5
+ ## Architecture
6
+
7
+ ```mermaid
8
+ graph TD
9
+ subgraph notif["@memberjunction/notifications"]
10
+ NE["NotificationEngine\n(Singleton)"]
11
+ TYPES["SendNotificationParams\nNotificationResult\nDeliveryChannels"]
12
+ end
13
+
14
+ subgraph entities["MJ Entity System"]
15
+ UNT["UserNotificationTypes"]
16
+ UNP["UserNotificationPreferences"]
17
+ UNN["UserNotifications\n(In-App Records)"]
18
+ end
19
+
20
+ subgraph comm["@memberjunction/communication-engine"]
21
+ CE["CommunicationEngine"]
22
+ end
23
+
24
+ subgraph templates["@memberjunction/templates"]
25
+ TE["TemplateEngineServer"]
26
+ end
27
+
28
+ subgraph providers["Delivery Channels"]
29
+ INAPP["In-App\n(Database Record)"]
30
+ EMAIL["Email\n(via SendGrid)"]
31
+ SMS["SMS\n(via Twilio)"]
32
+ end
33
+
34
+ NE -->|reads types| UNT
35
+ NE -->|checks prefs| UNP
36
+ NE -->|creates| UNN
37
+ NE -->|sends via| CE
38
+ CE -->|renders| TE
39
+ UNN --> INAPP
40
+ CE --> EMAIL
41
+ CE --> SMS
42
+
43
+ style notif fill:#7c5295,stroke:#563a6b,color:#fff
44
+ style entities fill:#2d6a9f,stroke:#1a4971,color:#fff
45
+ style comm fill:#2d8659,stroke:#1a5c3a,color:#fff
46
+ style templates fill:#b8762f,stroke:#8a5722,color:#fff
47
+ style providers fill:#2d8659,stroke:#1a5c3a,color:#fff
48
+ ```
49
+
50
+ ## Installation
51
+
52
+ ```bash
53
+ npm install @memberjunction/notifications
54
+ ```
55
+
56
+ ## Usage
57
+
58
+ ### Sending a Notification
59
+
60
+ ```typescript
61
+ import { NotificationEngine } from '@memberjunction/notifications';
62
+ import { SendNotificationParams } from '@memberjunction/notifications';
63
+
64
+ const engine = NotificationEngine.Instance;
65
+ await engine.Config(false, contextUser);
66
+
67
+ const params: SendNotificationParams = {
68
+ userId: 'user-uuid',
69
+ typeNameOrId: 'Agent Completion',
70
+ title: 'Agent Run Finished',
71
+ message: 'Your AI agent has completed processing.',
72
+ templateData: {
73
+ agentName: 'Data Analyzer',
74
+ duration: '2m 34s'
75
+ },
76
+ resourceTypeId: 'resource-type-uuid',
77
+ resourceRecordId: 'agent-run-uuid',
78
+ resourceConfiguration: { conversationId: 'conv-uuid' }
79
+ };
80
+
81
+ const result = await engine.SendNotification(params, contextUser);
82
+
83
+ if (result.success) {
84
+ console.log('Channels used:', result.deliveryChannels);
85
+ // { inApp: true, email: true, sms: false }
86
+ }
87
+ ```
88
+
89
+ ### Forcing Delivery Channels
90
+
91
+ Override user preferences and type defaults by specifying exact channels:
92
+
93
+ ```typescript
94
+ const result = await engine.SendNotification({
95
+ userId: 'user-uuid',
96
+ typeNameOrId: 'System Alert',
97
+ title: 'Critical Error',
98
+ message: 'Database connection lost',
99
+ forceDeliveryChannels: {
100
+ inApp: true,
101
+ email: true,
102
+ sms: true
103
+ }
104
+ }, contextUser);
105
+ ```
106
+
107
+ ## Channel Resolution Logic
108
+
109
+ ```mermaid
110
+ flowchart TD
111
+ START["SendNotification()"] --> FORCE{"forceDeliveryChannels\nspecified?"}
112
+ FORCE -->|Yes| USE_FORCE["Use forced channels directly"]
113
+ FORCE -->|No| CHECK_PREFS{"User preference\nexists?"}
114
+ CHECK_PREFS -->|Yes| CHECK_ENABLED{"Preference\nenabled?"}
115
+ CHECK_ENABLED -->|No| ALL_OFF["All channels disabled\n(user opted out)"]
116
+ CHECK_ENABLED -->|Yes| CHECK_ALLOW{"Type allows\nuser preference?"}
117
+ CHECK_ALLOW -->|Yes| USE_PREFS["Use user preference\nper-channel settings"]
118
+ CHECK_ALLOW -->|No| USE_DEFAULTS["Use type defaults"]
119
+ CHECK_PREFS -->|No| USE_DEFAULTS
120
+
121
+ style START fill:#2d6a9f,stroke:#1a4971,color:#fff
122
+ style USE_FORCE fill:#2d8659,stroke:#1a5c3a,color:#fff
123
+ style USE_PREFS fill:#2d8659,stroke:#1a5c3a,color:#fff
124
+ style USE_DEFAULTS fill:#b8762f,stroke:#8a5722,color:#fff
125
+ style ALL_OFF fill:#7c5295,stroke:#563a6b,color:#fff
126
+ ```
127
+
128
+ The engine resolves delivery channels with this priority:
129
+
130
+ 1. **Force override**: If `forceDeliveryChannels` is set, use it directly
131
+ 2. **User opt-out**: If user preference exists but `Enabled` is false, all channels are disabled
132
+ 3. **User preference**: If the notification type allows user preferences, use per-channel settings (`InAppEnabled`, `EmailEnabled`, `SMSEnabled`)
133
+ 4. **Type defaults**: Fall back to `DefaultInApp`, `DefaultEmail`, `DefaultSMS` from the notification type
134
+
135
+ ## Delivery Channels
136
+
137
+ | Channel | How It Works |
138
+ |---------|-------------|
139
+ | **In-App** | Creates a `UserNotification` entity record in the database. Synchronous, instant. |
140
+ | **Email** | Renders the notification type's `EmailTemplateID` via `TemplateEngineServer`, then sends through `CommunicationEngine` using SendGrid. Fire-and-forget (async). |
141
+ | **SMS** | Renders the notification type's `SMSTemplateID` via `TemplateEngineServer`, then sends through `CommunicationEngine` using Twilio. Fire-and-forget (async). |
142
+
143
+ ## Type Definitions
144
+
145
+ ### SendNotificationParams
146
+
147
+ | Property | Type | Required | Description |
148
+ |----------|------|----------|-------------|
149
+ | `userId` | `string` | Yes | Target user ID |
150
+ | `typeNameOrId` | `string` | Yes | Notification type name or UUID |
151
+ | `title` | `string` | Yes | Short title (in-app display, email subject) |
152
+ | `message` | `string` | Yes | Full notification message |
153
+ | `templateData` | `Record<string, unknown>` | No | Data for email/SMS template rendering |
154
+ | `resourceTypeId` | `string` | No | Link notification to a resource type |
155
+ | `resourceRecordId` | `string` | No | Link notification to a specific record |
156
+ | `resourceConfiguration` | `object` | No | Navigation context stored as JSON |
157
+ | `forceDeliveryChannels` | `DeliveryChannels` | No | Override channel resolution |
158
+
159
+ ### NotificationResult
160
+
161
+ | Property | Type | Description |
162
+ |----------|------|-------------|
163
+ | `success` | `boolean` | Overall operation success |
164
+ | `inAppNotificationId` | `string` | ID of created in-app notification |
165
+ | `emailSent` | `boolean` | Whether email delivery was initiated |
166
+ | `smsSent` | `boolean` | Whether SMS delivery was initiated |
167
+ | `deliveryChannels` | `DeliveryChannels` | Resolved channels used |
168
+ | `errors` | `string[]` | Error messages if any |
169
+
170
+ ### DeliveryChannels
171
+
172
+ ```typescript
173
+ interface DeliveryChannels {
174
+ inApp: boolean;
175
+ email: boolean;
176
+ sms: boolean;
177
+ }
178
+ ```
179
+
180
+ ## Dependencies
181
+
182
+ | Package | Purpose |
183
+ |---------|---------|
184
+ | `@memberjunction/core` | BaseEngine, Metadata, UserInfo, logging |
185
+ | `@memberjunction/core-entities` | UserNotification, UserNotificationType entities |
186
+ | `@memberjunction/communication-engine` | CommunicationEngine for email/SMS delivery |
187
+ | `@memberjunction/communication-types` | Message class |
188
+ | `@memberjunction/templates` | TemplateEngineServer for rendering |
189
+ | `@memberjunction/sqlserver-dataprovider` | UserCache for server-side user lookup |
190
+
191
+ ## Development
192
+
193
+ ```bash
194
+ npm run build # Compile TypeScript
195
+ ```
@@ -1,5 +1,5 @@
1
1
  import { BaseEngine, IMetadataProvider, UserInfo } from '@memberjunction/core';
2
- import { SendNotificationParams, NotificationResult } from './types';
2
+ import { SendNotificationParams, NotificationResult } from './types.js';
3
3
  export declare class NotificationEngine extends BaseEngine<NotificationEngine> {
4
4
  /**
5
5
  * Returns the singleton instance of the NotificationEngine
@@ -1,12 +1,9 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.NotificationEngine = void 0;
4
- const core_1 = require("@memberjunction/core");
5
- const core_entities_1 = require("@memberjunction/core-entities");
6
- const templates_1 = require("@memberjunction/templates");
7
- const communication_engine_1 = require("@memberjunction/communication-engine");
8
- const communication_types_1 = require("@memberjunction/communication-types");
9
- const sqlserver_dataprovider_1 = require("@memberjunction/sqlserver-dataprovider");
1
+ import { BaseEngine, Metadata, LogError, LogStatus } from '@memberjunction/core';
2
+ import { UserInfoEngine } from '@memberjunction/core-entities';
3
+ import { TemplateEngineServer } from '@memberjunction/templates';
4
+ import { CommunicationEngine } from '@memberjunction/communication-engine';
5
+ import { Message } from '@memberjunction/communication-types';
6
+ import { UserCache } from '@memberjunction/sqlserver-dataprovider';
10
7
  /*
11
8
  * Unified notification engine that handles in-app, email, and SMS delivery
12
9
  * based on notification types and user preferences.
@@ -14,7 +11,7 @@ const sqlserver_dataprovider_1 = require("@memberjunction/sqlserver-dataprovider
14
11
  * This engine relies on UserInfoEngine for notification types and preferences.
15
12
  * UserInfoEngine loads and caches all notification metadata via BaseEngine.
16
13
  */
17
- class NotificationEngine extends core_1.BaseEngine {
14
+ export class NotificationEngine extends BaseEngine {
18
15
  /**
19
16
  * Returns the singleton instance of the NotificationEngine
20
17
  */
@@ -34,9 +31,9 @@ class NotificationEngine extends core_1.BaseEngine {
34
31
  */
35
32
  async Config(forceRefresh = false, contextUser, provider) {
36
33
  // Ensure UserInfoEngine is configured (it loads notification types)
37
- await core_entities_1.UserInfoEngine.Instance.Config(forceRefresh, contextUser, provider);
34
+ await UserInfoEngine.Instance.Config(forceRefresh, contextUser, provider);
38
35
  // BaseEngine Load with empty configs - we don't load our own data
39
- await this.Load([], provider || core_1.Metadata.Provider, forceRefresh, contextUser);
36
+ await this.Load([], provider || Metadata.Provider, forceRefresh, contextUser);
40
37
  }
41
38
  /**
42
39
  * Get a notification type by name (case-insensitive) or ID.
@@ -46,7 +43,7 @@ class NotificationEngine extends core_1.BaseEngine {
46
43
  * @returns The notification type entity or null if not found
47
44
  */
48
45
  getNotificationType(nameOrId) {
49
- const types = core_entities_1.UserInfoEngine.Instance.NotificationTypes;
46
+ const types = UserInfoEngine.Instance.NotificationTypes;
50
47
  // Try by ID first
51
48
  const byId = types.find(t => t.ID === nameOrId);
52
49
  if (byId)
@@ -88,7 +85,7 @@ class NotificationEngine extends core_1.BaseEngine {
88
85
  result.deliveryChannels = channels;
89
86
  // Early return if user has opted out (all channels disabled)
90
87
  if (!channels.inApp && !channels.email && !channels.sms) {
91
- (0, core_1.LogStatus)(`User has opted out or all channels disabled for notification type: ${type.Name}`);
88
+ LogStatus(`User has opted out or all channels disabled for notification type: ${type.Name}`);
92
89
  return result;
93
90
  }
94
91
  // 5. Create in-app notification if enabled (awaited - fast DB insert)
@@ -100,7 +97,7 @@ class NotificationEngine extends core_1.BaseEngine {
100
97
  result.emailSent = true; // Optimistically set - actual send is async
101
98
  this.sendEmail(params, type, contextUser).catch((error) => {
102
99
  const errorMessage = error instanceof Error ? error.message : String(error);
103
- (0, core_1.LogError)(`Email delivery failed for notification type ${type.Name}: ${errorMessage}`);
100
+ LogError(`Email delivery failed for notification type ${type.Name}: ${errorMessage}`);
104
101
  });
105
102
  }
106
103
  // 7. Send SMS if enabled - fire and forget (don't block)
@@ -108,7 +105,7 @@ class NotificationEngine extends core_1.BaseEngine {
108
105
  result.smsSent = true; // Optimistically set - actual send is async
109
106
  this.sendSMS(params, type, contextUser).catch((error) => {
110
107
  const errorMessage = error instanceof Error ? error.message : String(error);
111
- (0, core_1.LogError)(`SMS delivery failed for notification type ${type.Name}: ${errorMessage}`);
108
+ LogError(`SMS delivery failed for notification type ${type.Name}: ${errorMessage}`);
112
109
  });
113
110
  }
114
111
  return result;
@@ -117,7 +114,7 @@ class NotificationEngine extends core_1.BaseEngine {
117
114
  const errorMessage = error instanceof Error ? error.message : String(error);
118
115
  result.success = false;
119
116
  result.errors?.push(errorMessage);
120
- (0, core_1.LogError)(`Notification delivery failed: ${errorMessage}`);
117
+ LogError(`Notification delivery failed: ${errorMessage}`);
121
118
  return result;
122
119
  }
123
120
  }
@@ -156,7 +153,7 @@ class NotificationEngine extends core_1.BaseEngine {
156
153
  */
157
154
  getUserPreferences(userId, typeId) {
158
155
  // Use cached preferences from UserInfoEngine (user-specific)
159
- const pref = core_entities_1.UserInfoEngine.Instance.GetUserPreferenceForType(userId, typeId);
156
+ const pref = UserInfoEngine.Instance.GetUserPreferenceForType(userId, typeId);
160
157
  // If preference exists, return it
161
158
  if (pref) {
162
159
  return pref;
@@ -174,7 +171,7 @@ class NotificationEngine extends core_1.BaseEngine {
174
171
  * Create in-app notification record
175
172
  */
176
173
  async createInAppNotification(params, type, contextUser) {
177
- const md = new core_1.Metadata();
174
+ const md = new Metadata();
178
175
  const notification = await md.GetEntityObject('User Notifications', contextUser);
179
176
  notification.UserID = params.userId;
180
177
  notification.NotificationTypeID = type.ID;
@@ -191,7 +188,7 @@ class NotificationEngine extends core_1.BaseEngine {
191
188
  notification.ResourceConfiguration = JSON.stringify(params.resourceConfiguration);
192
189
  }
193
190
  if (await notification.Save()) {
194
- (0, core_1.LogStatus)(`In-app notification created: ${notification.ID} for type: ${type.Name}`);
191
+ LogStatus(`In-app notification created: ${notification.ID} for type: ${type.Name}`);
195
192
  return notification.ID;
196
193
  }
197
194
  throw new Error('Failed to save in-app notification');
@@ -203,11 +200,11 @@ class NotificationEngine extends core_1.BaseEngine {
203
200
  // Access EmailTemplateID
204
201
  const emailTemplateId = type.EmailTemplateID;
205
202
  if (!emailTemplateId) {
206
- (0, core_1.LogStatus)(`No email template configured for notification type: ${type.Name}`);
203
+ LogStatus(`No email template configured for notification type: ${type.Name}`);
207
204
  return false;
208
205
  }
209
206
  // Load and configure template engine (loads all template metadata)
210
- const templateEngine = templates_1.TemplateEngineServer.Instance;
207
+ const templateEngine = TemplateEngineServer.Instance;
211
208
  await templateEngine.Config(false, contextUser);
212
209
  // Find the email template from the cached Templates array
213
210
  const templateEntity = templateEngine.Templates.find((t) => t.ID === emailTemplateId);
@@ -215,7 +212,7 @@ class NotificationEngine extends core_1.BaseEngine {
215
212
  throw new Error(`Email template not found: ${emailTemplateId}`);
216
213
  }
217
214
  // Get user from cache (server-side optimization - no database query)
218
- const user = sqlserver_dataprovider_1.UserCache.Instance.Users.find((u) => u.ID === params.userId);
215
+ const user = UserCache.Instance.Users.find((u) => u.ID === params.userId);
219
216
  if (!user) {
220
217
  throw new Error('User not found for email delivery');
221
218
  }
@@ -223,9 +220,9 @@ class NotificationEngine extends core_1.BaseEngine {
223
220
  throw new Error('User has no email address configured');
224
221
  }
225
222
  // Configure and send via CommunicationEngine
226
- const commEngine = communication_engine_1.CommunicationEngine.Instance;
223
+ const commEngine = CommunicationEngine.Instance;
227
224
  await commEngine.Config(false, contextUser);
228
- const message = new communication_types_1.Message();
225
+ const message = new Message();
229
226
  message.From = process.env.NOTIFICATION_FROM_EMAIL || 'notifications@memberjunction.com';
230
227
  message.To = user.Email;
231
228
  message.HTMLBodyTemplate = templateEntity;
@@ -234,7 +231,7 @@ class NotificationEngine extends core_1.BaseEngine {
234
231
  const sendResult = await commEngine.SendSingleMessage('SendGrid', 'Email', message, undefined, false);
235
232
  const success = sendResult?.Success === true;
236
233
  if (success) {
237
- (0, core_1.LogStatus)(`Email sent successfully to ${user.Email} for notification type: ${type.Name}`);
234
+ LogStatus(`Email sent successfully to ${user.Email} for notification type: ${type.Name}`);
238
235
  }
239
236
  return success;
240
237
  }
@@ -245,11 +242,11 @@ class NotificationEngine extends core_1.BaseEngine {
245
242
  // Access SMSTemplateID
246
243
  const smsTemplateId = type.SMSTemplateID;
247
244
  if (!smsTemplateId) {
248
- (0, core_1.LogStatus)(`No SMS template configured for notification type: ${type.Name}`);
245
+ LogStatus(`No SMS template configured for notification type: ${type.Name}`);
249
246
  return false;
250
247
  }
251
248
  // Load and configure template engine (loads all template metadata)
252
- const templateEngine = templates_1.TemplateEngineServer.Instance;
249
+ const templateEngine = TemplateEngineServer.Instance;
253
250
  await templateEngine.Config(false, contextUser);
254
251
  // Find the SMS template from the cached Templates array
255
252
  const templateEntity = templateEngine.Templates.find((t) => t.ID === smsTemplateId);
@@ -257,7 +254,7 @@ class NotificationEngine extends core_1.BaseEngine {
257
254
  throw new Error(`SMS template not found: ${smsTemplateId}`);
258
255
  }
259
256
  // Get user from cache (server-side optimization - no database query)
260
- const user = sqlserver_dataprovider_1.UserCache.Instance.Users.find((u) => u.ID === params.userId);
257
+ const user = UserCache.Instance.Users.find((u) => u.ID === params.userId);
261
258
  if (!user) {
262
259
  throw new Error('User not found for SMS delivery');
263
260
  }
@@ -267,19 +264,18 @@ class NotificationEngine extends core_1.BaseEngine {
267
264
  throw new Error('User has no phone number configured');
268
265
  }
269
266
  // Send via CommunicationEngine - let it handle template rendering
270
- const commEngine = communication_engine_1.CommunicationEngine.Instance;
267
+ const commEngine = CommunicationEngine.Instance;
271
268
  await commEngine.Config(false, contextUser);
272
- const message = new communication_types_1.Message();
269
+ const message = new Message();
273
270
  message.To = userWithPhone.Phone;
274
271
  message.BodyTemplate = templateEntity;
275
272
  message.ContextData = params.templateData || {};
276
273
  const sendResult = await commEngine.SendSingleMessage('Twilio', 'Standard SMS', message, undefined, false);
277
274
  const success = sendResult?.Success === true;
278
275
  if (success) {
279
- (0, core_1.LogStatus)(`SMS sent successfully to ${userWithPhone.Phone} for notification type: ${type.Name}`);
276
+ LogStatus(`SMS sent successfully to ${userWithPhone.Phone} for notification type: ${type.Name}`);
280
277
  }
281
278
  return success;
282
279
  }
283
280
  }
284
- exports.NotificationEngine = NotificationEngine;
285
281
  //# sourceMappingURL=NotificationEngine.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NotificationEngine.js","sourceRoot":"","sources":["../src/NotificationEngine.ts"],"names":[],"mappings":";;;AAAA,+CAAkI;AAClI,iEAAqJ;AACrJ,yDAAiE;AACjE,+EAA2E;AAC3E,6EAA8D;AAC9D,mFAAmE;AAGnE;;;;;;GAMG;AACH,MAAa,kBAAmB,SAAQ,iBAA8B;IACpE;;OAEG;IACI,MAAM,KAAK,QAAQ;QACxB,OAAO,KAAK,CAAC,WAAW,EAAsB,CAAC;IACjD,CAAC;IAED;;;;;;;;;;OAUG;IACI,KAAK,CAAC,MAAM,CACjB,eAAwB,KAAK,EAC7B,WAAsB,EACtB,QAA4B;QAE5B,oEAAoE;QACpE,MAAM,8BAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;QAE1E,kEAAkE;QAClE,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,IAAI,eAAQ,CAAC,QAAQ,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;IAChF,CAAC;IAED;;;;;;OAMG;IACK,mBAAmB,CAAC,QAAgB;QAC1C,MAAM,KAAK,GAAG,8BAAc,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAExD,kBAAkB;QAClB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;QAChD,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC;QAEtB,iCAAiC;QACjC,MAAM,SAAS,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;QACzC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,SAAS,CAAC,IAAI,IAAI,CAAC;IACrE,CAAC;IAED;;;;;;;;;;;;OAYG;IACI,KAAK,CAAC,gBAAgB,CAAC,MAA8B,EAAE,WAAqB;QACjF,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE3B,MAAM,MAAM,GAAuB;YACjC,OAAO,EAAE,IAAI;YACb,gBAAgB,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE;YAC5D,MAAM,EAAE,EAAE;SACX,CAAC;QAEF,IAAI,CAAC;YACH,uCAAuC;YACvC,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAC3D,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,MAAM,IAAI,KAAK,CAAC,gCAAgC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;YACzE,CAAC;YAED,sCAAsC;YACtC,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;YAE9D,8BAA8B;YAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YACnE,MAAM,CAAC,gBAAgB,GAAG,QAAQ,CAAC;YAEnC,6DAA6D;YAC7D,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;gBACxD,IAAA,gBAAS,EAAC,sEAAsE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC7F,OAAO,MAAM,CAAC;YAChB,CAAC;YAED,sEAAsE;YACtE,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;gBACnB,MAAM,CAAC,mBAAmB,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;YAC7F,CAAC;YAED,2DAA2D;YAC3D,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;gBACnB,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,4CAA4C;gBACrE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;oBACxD,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAC5E,IAAA,eAAQ,EAAC,+CAA+C,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC,CAAC;gBACxF,CAAC,CAAC,CAAC;YACL,CAAC;YAED,yDAAyD;YACzD,IAAI,QAAQ,CAAC,GAAG,EAAE,CAAC;gBACjB,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,4CAA4C;gBACnE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;oBACtD,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAC5E,IAAA,eAAQ,EAAC,6CAA6C,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC,CAAC;gBACtF,CAAC,CAAC,CAAC;YACL,CAAC;YAED,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5E,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;YACvB,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YAClC,IAAA,eAAQ,EAAC,iCAAiC,YAAY,EAAE,CAAC,CAAC;YAC1D,OAAO,MAAM,CAAC;QAChB,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,uBAAuB,CAC7B,MAA8B,EAC9B,KAA8C,EAC9C,IAAgC;QAEhC,yDAAyD;QACzD,IAAI,MAAM,CAAC,qBAAqB,EAAE,CAAC;YACjC,OAAO,MAAM,CAAC,qBAAqB,CAAC;QACtC,CAAC;QAED,uDAAuD;QACvD,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YAC5B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;QACpD,CAAC;QAED,wEAAwE;QACxE,MAAM,aAAa,GAAG,IAAI,CAAC,mBAAmB,KAAK,KAAK,CAAC;QAEzD,wBAAwB;QACxB,MAAM,KAAK,GAAG,CAAC,aAAa,IAAI,KAAK,EAAE,YAAY,IAAI,IAAI,CAAC;YAC1D,CAAC,CAAC,KAAK,CAAC,YAAY;YACpB,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC,CAAC;QAEjC,wBAAwB;QACxB,MAAM,KAAK,GAAG,CAAC,aAAa,IAAI,KAAK,EAAE,YAAY,IAAI,IAAI,CAAC;YAC1D,CAAC,CAAC,KAAK,CAAC,YAAY;YACpB,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC,CAAC;QAEjC,sBAAsB;QACtB,MAAM,GAAG,GAAG,CAAC,aAAa,IAAI,KAAK,EAAE,UAAU,IAAI,IAAI,CAAC;YACtD,CAAC,CAAC,KAAK,CAAC,UAAU;YAClB,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC,CAAC;QAE/B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;IAC/B,CAAC;IAED;;;OAGG;IACK,kBAAkB,CACxB,MAAc,EACd,MAAc;QAEd,6DAA6D;QAC7D,MAAM,IAAI,GAAG,8BAAc,CAAC,QAAQ,CAAC,wBAAwB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAE9E,kCAAkC;QAClC,IAAI,IAAI,EAAE,CAAC;YACT,OAAO,IAAI,CAAC;QACd,CAAC;QAED,mFAAmF;QACnF,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACtC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,yDAAyD;QACzD,mCAAmC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,uBAAuB,CACnC,MAA8B,EAC9B,IAAgC,EAChC,WAAqB;QAErB,MAAM,EAAE,GAAG,IAAI,eAAQ,EAAE,CAAC;QAC1B,MAAM,YAAY,GAAG,MAAM,EAAE,CAAC,eAAe,CAAyB,oBAAoB,EAAE,WAAW,CAAC,CAAC;QAEzG,YAAY,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QACpC,YAAY,CAAC,kBAAkB,GAAG,IAAI,CAAC,EAAE,CAAC;QAC1C,YAAY,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAClC,YAAY,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QACtC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC;QAE3B,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;YAC1B,YAAY,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;QACtD,CAAC;QACD,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;YAC5B,YAAY,CAAC,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;QAC1D,CAAC;QACD,IAAI,MAAM,CAAC,qBAAqB,EAAE,CAAC;YACjC,YAAY,CAAC,qBAAqB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;QACpF,CAAC;QAED,IAAI,MAAM,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC;YAC9B,IAAA,gBAAS,EAAC,gCAAgC,YAAY,CAAC,EAAE,cAAc,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACpF,OAAO,YAAY,CAAC,EAAE,CAAC;QACzB,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,SAAS,CACrB,MAA8B,EAC9B,IAAgC,EAChC,WAAqB;QAErB,yBAAyB;QACzB,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;QAE7C,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,IAAA,gBAAS,EAAC,uDAAuD,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAC9E,OAAO,KAAK,CAAC;QACf,CAAC;QAED,mEAAmE;QACnE,MAAM,cAAc,GAAG,gCAAoB,CAAC,QAAQ,CAAC;QACrD,MAAM,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QAEhD,0DAA0D;QAC1D,MAAM,cAAc,GAAG,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,eAAe,CAAC,CAAC;QACtF,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,6BAA6B,eAAe,EAAE,CAAC,CAAC;QAClE,CAAC;QAED,qEAAqE;QACrE,MAAM,IAAI,GAAG,kCAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC;QAC1E,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACvD,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC1D,CAAC;QAED,6CAA6C;QAC7C,MAAM,UAAU,GAAG,0CAAmB,CAAC,QAAQ,CAAC;QAChD,MAAM,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAG,IAAI,6BAAO,EAAE,CAAC;QAC9B,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,kCAAkC,CAAC;QACzF,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,OAAO,CAAC,gBAAgB,GAAG,cAAc,CAAC;QAC1C,OAAO,CAAC,WAAW,GAAG,MAAM,CAAC,YAAY,IAAI,EAAE,CAAC;QAChD,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;QAE/B,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,iBAAiB,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAEtG,MAAM,OAAO,GAAG,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;QAE7C,IAAI,OAAO,EAAE,CAAC;YACZ,IAAA,gBAAS,EAAC,8BAA8B,IAAI,CAAC,KAAK,2BAA2B,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5F,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,OAAO,CACnB,MAA8B,EAC9B,IAAgC,EAChC,WAAqB;QAErB,uBAAuB;QACvB,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QAEzC,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,IAAA,gBAAS,EAAC,qDAAqD,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAC5E,OAAO,KAAK,CAAC;QACf,CAAC;QAED,mEAAmE;QACnE,MAAM,cAAc,GAAG,gCAAoB,CAAC,QAAQ,CAAC;QACrD,MAAM,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QAEhD,wDAAwD;QACxD,MAAM,cAAc,GAAG,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,aAAa,CAAC,CAAC;QACpF,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,2BAA2B,aAAa,EAAE,CAAC,CAAC;QAC9D,CAAC;QAED,qEAAqE;QACrE,MAAM,IAAI,GAAG,kCAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC;QAC1E,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACrD,CAAC;QAED,gEAAgE;QAChE,MAAM,aAAa,GAAG,IAAqC,CAAC;QAC5D,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACzD,CAAC;QAED,kEAAkE;QAClE,MAAM,UAAU,GAAG,0CAAmB,CAAC,QAAQ,CAAC;QAChD,MAAM,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAG,IAAI,6BAAO,EAAE,CAAC;QAC9B,OAAO,CAAC,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC;QACjC,OAAO,CAAC,YAAY,GAAG,cAAc,CAAC;QACtC,OAAO,CAAC,WAAW,GAAG,MAAM,CAAC,YAAY,IAAI,EAAE,CAAC;QAEhD,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,iBAAiB,CAAC,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAE3G,MAAM,OAAO,GAAG,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;QAE7C,IAAI,OAAO,EAAE,CAAC;YACZ,IAAA,gBAAS,EAAC,4BAA4B,aAAa,CAAC,KAAK,2BAA2B,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACnG,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AApVD,gDAoVC"}
1
+ {"version":3,"file":"NotificationEngine.js","sourceRoot":"","sources":["../src/NotificationEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAqB,QAAQ,EAAY,QAAQ,EAAE,SAAS,EAAsB,MAAM,sBAAsB,CAAC;AAClI,OAAO,EAAwF,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACrJ,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,OAAO,EAAE,MAAM,qCAAqC,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAGnE;;;;;;GAMG;AACH,MAAM,OAAO,kBAAmB,SAAQ,UAA8B;IACpE;;OAEG;IACI,MAAM,KAAK,QAAQ;QACxB,OAAO,KAAK,CAAC,WAAW,EAAsB,CAAC;IACjD,CAAC;IAED;;;;;;;;;;OAUG;IACI,KAAK,CAAC,MAAM,CACjB,eAAwB,KAAK,EAC7B,WAAsB,EACtB,QAA4B;QAE5B,oEAAoE;QACpE,MAAM,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;QAE1E,kEAAkE;QAClE,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,IAAI,QAAQ,CAAC,QAAQ,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;IAChF,CAAC;IAED;;;;;;OAMG;IACK,mBAAmB,CAAC,QAAgB;QAC1C,MAAM,KAAK,GAAG,cAAc,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAExD,kBAAkB;QAClB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;QAChD,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC;QAEtB,iCAAiC;QACjC,MAAM,SAAS,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;QACzC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,SAAS,CAAC,IAAI,IAAI,CAAC;IACrE,CAAC;IAED;;;;;;;;;;;;OAYG;IACI,KAAK,CAAC,gBAAgB,CAAC,MAA8B,EAAE,WAAqB;QACjF,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE3B,MAAM,MAAM,GAAuB;YACjC,OAAO,EAAE,IAAI;YACb,gBAAgB,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE;YAC5D,MAAM,EAAE,EAAE;SACX,CAAC;QAEF,IAAI,CAAC;YACH,uCAAuC;YACvC,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAC3D,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,MAAM,IAAI,KAAK,CAAC,gCAAgC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;YACzE,CAAC;YAED,sCAAsC;YACtC,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;YAE9D,8BAA8B;YAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YACnE,MAAM,CAAC,gBAAgB,GAAG,QAAQ,CAAC;YAEnC,6DAA6D;YAC7D,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;gBACxD,SAAS,CAAC,sEAAsE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC7F,OAAO,MAAM,CAAC;YAChB,CAAC;YAED,sEAAsE;YACtE,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;gBACnB,MAAM,CAAC,mBAAmB,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;YAC7F,CAAC;YAED,2DAA2D;YAC3D,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;gBACnB,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,4CAA4C;gBACrE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;oBACxD,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAC5E,QAAQ,CAAC,+CAA+C,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC,CAAC;gBACxF,CAAC,CAAC,CAAC;YACL,CAAC;YAED,yDAAyD;YACzD,IAAI,QAAQ,CAAC,GAAG,EAAE,CAAC;gBACjB,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,4CAA4C;gBACnE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;oBACtD,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAC5E,QAAQ,CAAC,6CAA6C,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC,CAAC;gBACtF,CAAC,CAAC,CAAC;YACL,CAAC;YAED,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5E,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;YACvB,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YAClC,QAAQ,CAAC,iCAAiC,YAAY,EAAE,CAAC,CAAC;YAC1D,OAAO,MAAM,CAAC;QAChB,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,uBAAuB,CAC7B,MAA8B,EAC9B,KAA8C,EAC9C,IAAgC;QAEhC,yDAAyD;QACzD,IAAI,MAAM,CAAC,qBAAqB,EAAE,CAAC;YACjC,OAAO,MAAM,CAAC,qBAAqB,CAAC;QACtC,CAAC;QAED,uDAAuD;QACvD,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YAC5B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;QACpD,CAAC;QAED,wEAAwE;QACxE,MAAM,aAAa,GAAG,IAAI,CAAC,mBAAmB,KAAK,KAAK,CAAC;QAEzD,wBAAwB;QACxB,MAAM,KAAK,GAAG,CAAC,aAAa,IAAI,KAAK,EAAE,YAAY,IAAI,IAAI,CAAC;YAC1D,CAAC,CAAC,KAAK,CAAC,YAAY;YACpB,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC,CAAC;QAEjC,wBAAwB;QACxB,MAAM,KAAK,GAAG,CAAC,aAAa,IAAI,KAAK,EAAE,YAAY,IAAI,IAAI,CAAC;YAC1D,CAAC,CAAC,KAAK,CAAC,YAAY;YACpB,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC,CAAC;QAEjC,sBAAsB;QACtB,MAAM,GAAG,GAAG,CAAC,aAAa,IAAI,KAAK,EAAE,UAAU,IAAI,IAAI,CAAC;YACtD,CAAC,CAAC,KAAK,CAAC,UAAU;YAClB,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC,CAAC;QAE/B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;IAC/B,CAAC;IAED;;;OAGG;IACK,kBAAkB,CACxB,MAAc,EACd,MAAc;QAEd,6DAA6D;QAC7D,MAAM,IAAI,GAAG,cAAc,CAAC,QAAQ,CAAC,wBAAwB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAE9E,kCAAkC;QAClC,IAAI,IAAI,EAAE,CAAC;YACT,OAAO,IAAI,CAAC;QACd,CAAC;QAED,mFAAmF;QACnF,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACtC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,yDAAyD;QACzD,mCAAmC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,uBAAuB,CACnC,MAA8B,EAC9B,IAAgC,EAChC,WAAqB;QAErB,MAAM,EAAE,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC1B,MAAM,YAAY,GAAG,MAAM,EAAE,CAAC,eAAe,CAAyB,oBAAoB,EAAE,WAAW,CAAC,CAAC;QAEzG,YAAY,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QACpC,YAAY,CAAC,kBAAkB,GAAG,IAAI,CAAC,EAAE,CAAC;QAC1C,YAAY,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAClC,YAAY,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QACtC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC;QAE3B,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;YAC1B,YAAY,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;QACtD,CAAC;QACD,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;YAC5B,YAAY,CAAC,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;QAC1D,CAAC;QACD,IAAI,MAAM,CAAC,qBAAqB,EAAE,CAAC;YACjC,YAAY,CAAC,qBAAqB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;QACpF,CAAC;QAED,IAAI,MAAM,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC;YAC9B,SAAS,CAAC,gCAAgC,YAAY,CAAC,EAAE,cAAc,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACpF,OAAO,YAAY,CAAC,EAAE,CAAC;QACzB,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,SAAS,CACrB,MAA8B,EAC9B,IAAgC,EAChC,WAAqB;QAErB,yBAAyB;QACzB,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;QAE7C,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,SAAS,CAAC,uDAAuD,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAC9E,OAAO,KAAK,CAAC;QACf,CAAC;QAED,mEAAmE;QACnE,MAAM,cAAc,GAAG,oBAAoB,CAAC,QAAQ,CAAC;QACrD,MAAM,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QAEhD,0DAA0D;QAC1D,MAAM,cAAc,GAAG,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,eAAe,CAAC,CAAC;QACtF,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,6BAA6B,eAAe,EAAE,CAAC,CAAC;QAClE,CAAC;QAED,qEAAqE;QACrE,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC;QAC1E,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACvD,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC1D,CAAC;QAED,6CAA6C;QAC7C,MAAM,UAAU,GAAG,mBAAmB,CAAC,QAAQ,CAAC;QAChD,MAAM,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;QAC9B,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,kCAAkC,CAAC;QACzF,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,OAAO,CAAC,gBAAgB,GAAG,cAAc,CAAC;QAC1C,OAAO,CAAC,WAAW,GAAG,MAAM,CAAC,YAAY,IAAI,EAAE,CAAC;QAChD,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;QAE/B,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,iBAAiB,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAEtG,MAAM,OAAO,GAAG,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;QAE7C,IAAI,OAAO,EAAE,CAAC;YACZ,SAAS,CAAC,8BAA8B,IAAI,CAAC,KAAK,2BAA2B,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5F,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,OAAO,CACnB,MAA8B,EAC9B,IAAgC,EAChC,WAAqB;QAErB,uBAAuB;QACvB,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QAEzC,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,SAAS,CAAC,qDAAqD,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAC5E,OAAO,KAAK,CAAC;QACf,CAAC;QAED,mEAAmE;QACnE,MAAM,cAAc,GAAG,oBAAoB,CAAC,QAAQ,CAAC;QACrD,MAAM,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QAEhD,wDAAwD;QACxD,MAAM,cAAc,GAAG,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,aAAa,CAAC,CAAC;QACpF,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,2BAA2B,aAAa,EAAE,CAAC,CAAC;QAC9D,CAAC;QAED,qEAAqE;QACrE,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC;QAC1E,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACrD,CAAC;QAED,gEAAgE;QAChE,MAAM,aAAa,GAAG,IAAqC,CAAC;QAC5D,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACzD,CAAC;QAED,kEAAkE;QAClE,MAAM,UAAU,GAAG,mBAAmB,CAAC,QAAQ,CAAC;QAChD,MAAM,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;QAC9B,OAAO,CAAC,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC;QACjC,OAAO,CAAC,YAAY,GAAG,cAAc,CAAC;QACtC,OAAO,CAAC,WAAW,GAAG,MAAM,CAAC,YAAY,IAAI,EAAE,CAAC;QAEhD,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,iBAAiB,CAAC,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAE3G,MAAM,OAAO,GAAG,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;QAE7C,IAAI,OAAO,EAAE,CAAC;YACZ,SAAS,CAAC,4BAA4B,aAAa,CAAC,KAAK,2BAA2B,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACnG,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;CACF"}
package/dist/index.d.ts CHANGED
@@ -31,6 +31,6 @@
31
31
  * }, contextUser);
32
32
  * ```
33
33
  */
34
- export { NotificationEngine } from './NotificationEngine';
35
- export { SendNotificationParams, NotificationResult, DeliveryChannels } from './types';
34
+ export { NotificationEngine } from './NotificationEngine.js';
35
+ export { SendNotificationParams, NotificationResult, DeliveryChannels } from './types.js';
36
36
  //# sourceMappingURL=index.d.ts.map
package/dist/index.js CHANGED
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  /**
3
2
  * @memberjunction/notifications
4
3
  *
@@ -32,8 +31,5 @@
32
31
  * }, contextUser);
33
32
  * ```
34
33
  */
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.NotificationEngine = void 0;
37
- var NotificationEngine_1 = require("./NotificationEngine");
38
- Object.defineProperty(exports, "NotificationEngine", { enumerable: true, get: function () { return NotificationEngine_1.NotificationEngine; } });
34
+ export { NotificationEngine } from './NotificationEngine.js';
39
35
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;;;AAEH,2DAA0D;AAAjD,wHAAA,kBAAkB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC"}
package/dist/types.js CHANGED
@@ -1,3 +1,2 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ export {};
3
2
  //# sourceMappingURL=types.js.map
package/package.json CHANGED
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "name": "@memberjunction/notifications",
3
- "version": "3.4.0",
3
+ "type": "module",
4
+ "version": "4.1.0",
4
5
  "description": "MemberJunction: Unified Notification System with Multi-Channel Delivery",
5
6
  "main": "dist/index.js",
6
7
  "types": "dist/index.d.ts",
@@ -9,23 +10,23 @@
9
10
  ],
10
11
  "scripts": {
11
12
  "start": "ts-node-dev src/index.ts",
12
- "build": "tsc",
13
+ "build": "tsc && tsc-alias -f",
13
14
  "test": "echo \"Error: no test specified\" && exit 1"
14
15
  },
15
16
  "author": "MemberJunction.com",
16
17
  "license": "ISC",
17
18
  "devDependencies": {
18
19
  "ts-node-dev": "^2.0.0",
19
- "typescript": "^5.4.5"
20
+ "typescript": "^5.9.3"
20
21
  },
21
22
  "dependencies": {
22
- "@memberjunction/global": "3.4.0",
23
- "@memberjunction/core": "3.4.0",
24
- "@memberjunction/core-entities": "3.4.0",
25
- "@memberjunction/templates": "3.4.0",
26
- "@memberjunction/communication-engine": "3.4.0",
27
- "@memberjunction/communication-types": "3.4.0",
28
- "@memberjunction/sqlserver-dataprovider": "3.4.0"
23
+ "@memberjunction/global": "4.1.0",
24
+ "@memberjunction/core": "4.1.0",
25
+ "@memberjunction/core-entities": "4.1.0",
26
+ "@memberjunction/templates": "4.1.0",
27
+ "@memberjunction/communication-engine": "4.1.0",
28
+ "@memberjunction/communication-types": "4.1.0",
29
+ "@memberjunction/sqlserver-dataprovider": "4.1.0"
29
30
  },
30
31
  "repository": {
31
32
  "type": "git",