@voyantjs/notifications 0.6.7 → 0.6.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,9 +1,9 @@
1
- import { bookingParticipants, bookings } from "@voyantjs/bookings/schema";
1
+ import { bookings, bookingTravelers } from "@voyantjs/bookings/schema";
2
2
  import { bookingPaymentSchedules, invoices } from "@voyantjs/finance";
3
3
  import { and, desc, eq, gt, or } from "drizzle-orm";
4
4
  import { notificationReminderRules, notificationReminderRuns } from "./schema.js";
5
5
  import { sendInvoiceNotification, sendNotification } from "./service-deliveries.js";
6
- import { addUtcDays, buildReminderDedupeKey, resolveReminderRecipient, startOfUtcDay, toDateString, toTimestamp, } from "./service-shared.js";
6
+ import { addUtcDays, buildReminderDedupeKey, listBookingNotificationItems, resolveReminderRecipient, startOfUtcDay, toDateString, toTimestamp, } from "./service-shared.js";
7
7
  function buildReminderSweepSummary() {
8
8
  return {
9
9
  processed: 0,
@@ -156,21 +156,23 @@ async function queueBookingPaymentScheduleReminder(db, enqueueDelivery, rule, sc
156
156
  if (!booking) {
157
157
  return markReminderRunSkipped(db, reminderRun.id, now, "Booking not found for payment schedule");
158
158
  }
159
- const participants = await db
160
- .select({
161
- id: bookingParticipants.id,
162
- firstName: bookingParticipants.firstName,
163
- lastName: bookingParticipants.lastName,
164
- email: bookingParticipants.email,
165
- participantType: bookingParticipants.participantType,
166
- isPrimary: bookingParticipants.isPrimary,
167
- })
168
- .from(bookingParticipants)
169
- .where(eq(bookingParticipants.bookingId, booking.id))
170
- .orderBy(desc(bookingParticipants.isPrimary), bookingParticipants.createdAt);
171
- const recipient = resolveReminderRecipient(participants);
159
+ const [participants] = await Promise.all([
160
+ db
161
+ .select({
162
+ id: bookingTravelers.id,
163
+ firstName: bookingTravelers.firstName,
164
+ lastName: bookingTravelers.lastName,
165
+ email: bookingTravelers.email,
166
+ participantType: bookingTravelers.participantType,
167
+ isPrimary: bookingTravelers.isPrimary,
168
+ })
169
+ .from(bookingTravelers)
170
+ .where(eq(bookingTravelers.bookingId, booking.id))
171
+ .orderBy(desc(bookingTravelers.isPrimary), bookingTravelers.createdAt),
172
+ ]);
173
+ const recipient = resolveReminderRecipient(booking, participants);
172
174
  if (!recipient?.email) {
173
- return markReminderRunSkipped(db, reminderRun.id, now, "No participant email available for booking payment reminder");
175
+ return markReminderRunSkipped(db, reminderRun.id, now, "No traveler email available for booking payment reminder");
174
176
  }
175
177
  return enqueueReminderRun(db, enqueueDelivery, { ...reminderRun, recipient: recipient.email }, now);
176
178
  }
@@ -225,21 +227,23 @@ async function queueInvoiceReminder(db, enqueueDelivery, rule, invoice, now) {
225
227
  if (!booking) {
226
228
  return markReminderRunSkipped(db, reminderRun.id, now, "Booking not found for invoice reminder");
227
229
  }
228
- const participants = await db
229
- .select({
230
- id: bookingParticipants.id,
231
- firstName: bookingParticipants.firstName,
232
- lastName: bookingParticipants.lastName,
233
- email: bookingParticipants.email,
234
- participantType: bookingParticipants.participantType,
235
- isPrimary: bookingParticipants.isPrimary,
236
- })
237
- .from(bookingParticipants)
238
- .where(eq(bookingParticipants.bookingId, booking.id))
239
- .orderBy(desc(bookingParticipants.isPrimary), bookingParticipants.createdAt);
240
- const recipient = resolveReminderRecipient(participants);
230
+ const [participants] = await Promise.all([
231
+ db
232
+ .select({
233
+ id: bookingTravelers.id,
234
+ firstName: bookingTravelers.firstName,
235
+ lastName: bookingTravelers.lastName,
236
+ email: bookingTravelers.email,
237
+ participantType: bookingTravelers.participantType,
238
+ isPrimary: bookingTravelers.isPrimary,
239
+ })
240
+ .from(bookingTravelers)
241
+ .where(eq(bookingTravelers.bookingId, booking.id))
242
+ .orderBy(desc(bookingTravelers.isPrimary), bookingTravelers.createdAt),
243
+ ]);
244
+ const recipient = resolveReminderRecipient(booking, participants);
241
245
  if (!recipient?.email) {
242
- return markReminderRunSkipped(db, reminderRun.id, now, "No participant email available for invoice reminder");
246
+ return markReminderRunSkipped(db, reminderRun.id, now, "No traveler email available for invoice reminder");
243
247
  }
244
248
  return enqueueReminderRun(db, enqueueDelivery, { ...reminderRun, recipient: recipient.email }, now);
245
249
  }
@@ -285,19 +289,22 @@ async function sendBookingPaymentScheduleReminder(db, dispatcher, rule, schedule
285
289
  .returning();
286
290
  return run ?? null;
287
291
  }
288
- const participants = await db
289
- .select({
290
- id: bookingParticipants.id,
291
- firstName: bookingParticipants.firstName,
292
- lastName: bookingParticipants.lastName,
293
- email: bookingParticipants.email,
294
- participantType: bookingParticipants.participantType,
295
- isPrimary: bookingParticipants.isPrimary,
296
- })
297
- .from(bookingParticipants)
298
- .where(eq(bookingParticipants.bookingId, booking.id))
299
- .orderBy(desc(bookingParticipants.isPrimary), bookingParticipants.createdAt);
300
- const recipient = resolveReminderRecipient(participants);
292
+ const [participants, items] = await Promise.all([
293
+ db
294
+ .select({
295
+ id: bookingTravelers.id,
296
+ firstName: bookingTravelers.firstName,
297
+ lastName: bookingTravelers.lastName,
298
+ email: bookingTravelers.email,
299
+ participantType: bookingTravelers.participantType,
300
+ isPrimary: bookingTravelers.isPrimary,
301
+ })
302
+ .from(bookingTravelers)
303
+ .where(eq(bookingTravelers.bookingId, booking.id))
304
+ .orderBy(desc(bookingTravelers.isPrimary), bookingTravelers.createdAt),
305
+ listBookingNotificationItems(db, booking.id),
306
+ ]);
307
+ const recipient = resolveReminderRecipient(booking, participants);
301
308
  const [processingRun] = await db
302
309
  .insert(notificationReminderRuns)
303
310
  .values({
@@ -327,7 +334,7 @@ async function sendBookingPaymentScheduleReminder(db, dispatcher, rule, schedule
327
334
  return null;
328
335
  }
329
336
  if (!recipient?.email) {
330
- return markReminderRunSkipped(db, processingRun.id, now, "No participant email available for booking payment reminder");
337
+ return markReminderRunSkipped(db, processingRun.id, now, "No traveler email available for booking payment reminder");
331
338
  }
332
339
  try {
333
340
  const delivery = await sendNotification(db, dispatcher, {
@@ -344,11 +351,14 @@ async function sendBookingPaymentScheduleReminder(db, dispatcher, rule, schedule
344
351
  currency: schedule.currency,
345
352
  scheduleType: schedule.scheduleType,
346
353
  reminderOffsetDays: rule.relativeDaysFromDueDate,
347
- participant: {
354
+ traveler: {
348
355
  firstName: recipient.firstName,
349
356
  lastName: recipient.lastName,
350
357
  email: recipient.email,
358
+ participantType: recipient.participantType,
359
+ isPrimary: recipient.isPrimary,
351
360
  },
361
+ travelers: participants,
352
362
  booking: {
353
363
  id: booking.id,
354
364
  bookingNumber: booking.bookingNumber,
@@ -365,6 +375,7 @@ async function sendBookingPaymentScheduleReminder(db, dispatcher, rule, schedule
365
375
  scheduleType: schedule.scheduleType,
366
376
  status: schedule.status,
367
377
  },
378
+ items,
368
379
  },
369
380
  targetType: "booking_payment_schedule",
370
381
  targetId: schedule.id,
@@ -428,19 +439,21 @@ async function sendInvoiceReminder(db, dispatcher, rule, invoice, now) {
428
439
  .returning();
429
440
  return run ?? null;
430
441
  }
431
- const participants = await db
432
- .select({
433
- id: bookingParticipants.id,
434
- firstName: bookingParticipants.firstName,
435
- lastName: bookingParticipants.lastName,
436
- email: bookingParticipants.email,
437
- participantType: bookingParticipants.participantType,
438
- isPrimary: bookingParticipants.isPrimary,
439
- })
440
- .from(bookingParticipants)
441
- .where(eq(bookingParticipants.bookingId, booking.id))
442
- .orderBy(desc(bookingParticipants.isPrimary), bookingParticipants.createdAt);
443
- const recipient = resolveReminderRecipient(participants);
442
+ const [participants] = await Promise.all([
443
+ db
444
+ .select({
445
+ id: bookingTravelers.id,
446
+ firstName: bookingTravelers.firstName,
447
+ lastName: bookingTravelers.lastName,
448
+ email: bookingTravelers.email,
449
+ participantType: bookingTravelers.participantType,
450
+ isPrimary: bookingTravelers.isPrimary,
451
+ })
452
+ .from(bookingTravelers)
453
+ .where(eq(bookingTravelers.bookingId, booking.id))
454
+ .orderBy(desc(bookingTravelers.isPrimary), bookingTravelers.createdAt),
455
+ ]);
456
+ const recipient = resolveReminderRecipient(booking, participants);
444
457
  const [processingRun] = await db
445
458
  .insert(notificationReminderRuns)
446
459
  .values({
@@ -472,7 +485,7 @@ async function sendInvoiceReminder(db, dispatcher, rule, invoice, now) {
472
485
  return null;
473
486
  }
474
487
  if (!recipient?.email) {
475
- return markReminderRunSkipped(db, processingRun.id, now, "No participant email available for invoice reminder");
488
+ return markReminderRunSkipped(db, processingRun.id, now, "No traveler email available for invoice reminder");
476
489
  }
477
490
  try {
478
491
  const delivery = await sendInvoiceNotification(db, dispatcher, invoice.id, {
@@ -515,23 +528,26 @@ async function sendQueuedBookingPaymentScheduleReminder(db, dispatcher, run, rul
515
528
  if (!booking) {
516
529
  return markReminderRunSkipped(db, run.id, now, "Booking not found for payment schedule");
517
530
  }
518
- const participants = await db
519
- .select({
520
- id: bookingParticipants.id,
521
- firstName: bookingParticipants.firstName,
522
- lastName: bookingParticipants.lastName,
523
- email: bookingParticipants.email,
524
- participantType: bookingParticipants.participantType,
525
- isPrimary: bookingParticipants.isPrimary,
526
- })
527
- .from(bookingParticipants)
528
- .where(eq(bookingParticipants.bookingId, booking.id))
529
- .orderBy(desc(bookingParticipants.isPrimary), bookingParticipants.createdAt);
530
- const fallbackRecipient = resolveReminderRecipient(participants);
531
- const participant = participants.find((entry) => entry.email === run.recipient) ?? fallbackRecipient ?? null;
532
- const recipientEmail = run.recipient ?? participant?.email ?? null;
531
+ const [participants, items] = await Promise.all([
532
+ db
533
+ .select({
534
+ id: bookingTravelers.id,
535
+ firstName: bookingTravelers.firstName,
536
+ lastName: bookingTravelers.lastName,
537
+ email: bookingTravelers.email,
538
+ participantType: bookingTravelers.participantType,
539
+ isPrimary: bookingTravelers.isPrimary,
540
+ })
541
+ .from(bookingTravelers)
542
+ .where(eq(bookingTravelers.bookingId, booking.id))
543
+ .orderBy(desc(bookingTravelers.isPrimary), bookingTravelers.createdAt),
544
+ listBookingNotificationItems(db, booking.id),
545
+ ]);
546
+ const fallbackRecipient = resolveReminderRecipient(booking, participants);
547
+ const traveler = participants.find((entry) => entry.email === run.recipient) ?? fallbackRecipient ?? null;
548
+ const recipientEmail = run.recipient ?? traveler?.email ?? null;
533
549
  if (!recipientEmail) {
534
- return markReminderRunSkipped(db, run.id, now, "No participant email available for booking payment reminder");
550
+ return markReminderRunSkipped(db, run.id, now, "No traveler email available for booking payment reminder");
535
551
  }
536
552
  try {
537
553
  const delivery = await sendNotification(db, dispatcher, {
@@ -548,13 +564,16 @@ async function sendQueuedBookingPaymentScheduleReminder(db, dispatcher, run, rul
548
564
  currency: schedule.currency,
549
565
  scheduleType: schedule.scheduleType,
550
566
  reminderOffsetDays: rule.relativeDaysFromDueDate,
551
- participant: participant
567
+ traveler: traveler
552
568
  ? {
553
- firstName: participant.firstName,
554
- lastName: participant.lastName,
569
+ firstName: traveler.firstName,
570
+ lastName: traveler.lastName,
555
571
  email: recipientEmail,
572
+ participantType: traveler.participantType,
573
+ isPrimary: traveler.isPrimary,
556
574
  }
557
575
  : null,
576
+ travelers: participants,
558
577
  booking: {
559
578
  id: booking.id,
560
579
  bookingNumber: booking.bookingNumber,
@@ -571,6 +590,7 @@ async function sendQueuedBookingPaymentScheduleReminder(db, dispatcher, run, rul
571
590
  scheduleType: schedule.scheduleType,
572
591
  status: schedule.status,
573
592
  },
593
+ items,
574
594
  },
575
595
  targetType: "booking_payment_schedule",
576
596
  targetId: schedule.id,
@@ -4,7 +4,7 @@ import type { SQLWrapper } from "drizzle-orm/sql";
4
4
  import type { z } from "zod";
5
5
  import type { notificationReminderRules } from "./schema.js";
6
6
  import type { NotificationAttachment, NotificationChannel, NotificationPayload, NotificationProvider, NotificationResult } from "./types.js";
7
- import type { bookingDocumentBundleItemSchema, insertNotificationReminderRuleSchema, insertNotificationTemplateSchema, notificationDeliveryListQuerySchema, notificationReminderRuleListQuerySchema, notificationReminderRunListQuerySchema, notificationReminderRunRecordSchema, notificationTemplateListQuerySchema, runDueRemindersSchema, sendBookingDocumentsNotificationSchema, sendInvoiceNotificationSchema, sendNotificationSchema, sendPaymentSessionNotificationSchema, updateNotificationReminderRuleSchema, updateNotificationTemplateSchema } from "./validation.js";
7
+ import type { bookingDocumentBundleItemSchema, insertNotificationReminderRuleSchema, insertNotificationTemplateSchema, notificationDeliveryListQuerySchema, notificationReminderRuleListQuerySchema, notificationReminderRunListQuerySchema, notificationReminderRunRecordSchema, notificationTemplateListQuerySchema, previewNotificationTemplateSchema, runDueRemindersSchema, sendBookingDocumentsNotificationSchema, sendInvoiceNotificationSchema, sendNotificationSchema, sendPaymentSessionNotificationSchema, updateNotificationReminderRuleSchema, updateNotificationTemplateSchema } from "./validation.js";
8
8
  export type NotificationTemplateListQuery = z.infer<typeof notificationTemplateListQuerySchema>;
9
9
  export type NotificationDeliveryListQuery = z.infer<typeof notificationDeliveryListQuerySchema>;
10
10
  export type CreateNotificationTemplateInput = z.infer<typeof insertNotificationTemplateSchema>;
@@ -16,6 +16,7 @@ export type NotificationReminderRunRecord = z.infer<typeof notificationReminderR
16
16
  export type CreateNotificationReminderRuleInput = z.infer<typeof insertNotificationReminderRuleSchema>;
17
17
  export type UpdateNotificationReminderRuleInput = z.infer<typeof updateNotificationReminderRuleSchema>;
18
18
  export type RunDueRemindersInput = z.infer<typeof runDueRemindersSchema>;
19
+ export type PreviewNotificationTemplateInput = z.infer<typeof previewNotificationTemplateSchema>;
19
20
  export type SendPaymentSessionNotificationInput = z.infer<typeof sendPaymentSessionNotificationSchema>;
20
21
  export type SendInvoiceNotificationInput = z.infer<typeof sendInvoiceNotificationSchema>;
21
22
  export type SendBookingDocumentsNotificationInput = z.infer<typeof sendBookingDocumentsNotificationSchema>;
@@ -51,12 +52,55 @@ export declare function summarizeNotificationAttachments(attachments: ReadonlyAr
51
52
  contentId: string | null;
52
53
  }[];
53
54
  export declare function renderNotificationTemplate(template: string | null | undefined, data: Record<string, unknown>): string | null;
55
+ export declare function previewNotificationTemplate(input: PreviewNotificationTemplateInput): {
56
+ channel: "email" | "sms";
57
+ provider: string | null;
58
+ fromAddress: string | null;
59
+ subject: string | null;
60
+ html: string | null;
61
+ text: string | null;
62
+ };
54
63
  export declare function toTimestamp(value?: string | null): Date | null;
64
+ export declare function normalizeNotificationTemplateData(data: Record<string, unknown>): {
65
+ traveler: unknown;
66
+ travelers: unknown[];
67
+ billingPerson: unknown;
68
+ billing: unknown;
69
+ booking: unknown;
70
+ invoice: unknown;
71
+ paymentSession: unknown;
72
+ paymentSchedule: unknown;
73
+ payment: {
74
+ amount: {} | null;
75
+ currency: {} | null;
76
+ dueDate: {} | null;
77
+ daysLeft: {} | null;
78
+ reference: {} | null;
79
+ method: {} | null;
80
+ link: {} | null;
81
+ payMode: {} | null;
82
+ paidAmount: {} | null;
83
+ balanceDue: {} | null;
84
+ isPaidInFull: boolean;
85
+ } | null;
86
+ documents: unknown[];
87
+ documentsCount: number;
88
+ items: unknown[];
89
+ product: {
90
+ title: {} | null;
91
+ } | null;
92
+ };
55
93
  export declare function startOfUtcDay(value: Date): Date;
56
94
  export declare function addUtcDays(value: Date, days: number): Date;
57
95
  export declare function toDateString(value: Date): string;
58
96
  export declare function buildReminderDedupeKey(ruleId: string, targetId: string, runDate: string): string;
59
- export declare function resolveReminderRecipient(participants: Array<{
97
+ export declare function resolveReminderRecipient(booking: {
98
+ contactFirstName: string | null;
99
+ contactLastName: string | null;
100
+ contactEmail: string | null;
101
+ contactPhone: string | null;
102
+ contactPreferredLanguage: string | null;
103
+ } | null, participants: Array<{
60
104
  email: string | null;
61
105
  isPrimary: boolean;
62
106
  participantType: string;
@@ -74,9 +118,10 @@ export declare function listBookingNotificationParticipants(db: PostgresJsDataba
74
118
  firstName: string;
75
119
  lastName: string;
76
120
  email: string | null;
77
- participantType: "staff" | "other" | "traveler" | "booker" | "contact" | "occupant";
121
+ participantType: "other" | "traveler" | "occupant";
78
122
  isPrimary: boolean;
79
123
  }[]>;
124
+ export declare function listBookingNotificationItems(db: PostgresJsDatabase, bookingId: string): Promise<unknown[]>;
80
125
  export declare function paginate<T>(rowsPromise: Promise<T[]>, totalPromise: Promise<Array<{
81
126
  total: number;
82
127
  }>>, limit: number, offset: number): Promise<{
@@ -1 +1 @@
1
- {"version":3,"file":"service-shared.d.ts","sourceRoot":"","sources":["../src/service-shared.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service-shared.d.ts","sourceRoot":"","sources":["../src/service-shared.ts"],"names":[],"mappings":"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"}