@infuro/cms-core 1.0.50 → 1.0.51

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/api.cjs CHANGED
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
- var chunkJCMOOPNX_cjs = require('./chunk-JCMOOPNX.cjs');
3
+ var chunkYOW457RA_cjs = require('./chunk-YOW457RA.cjs');
4
4
  require('./chunk-HY3AXLOI.cjs');
5
- require('./chunk-UUWAUHUW.cjs');
5
+ require('./chunk-JN4AFHZ4.cjs');
6
6
  require('./chunk-UCKN4BBY.cjs');
7
7
  require('./chunk-7NMT3GBR.cjs');
8
8
  require('./chunk-V25RDUOU.cjs');
@@ -22,127 +22,127 @@ require('./chunk-USNT2KNT.cjs');
22
22
 
23
23
  Object.defineProperty(exports, "createAnalyticsHandlers", {
24
24
  enumerable: true,
25
- get: function () { return chunkJCMOOPNX_cjs.createAnalyticsHandlers; }
25
+ get: function () { return chunkYOW457RA_cjs.createAnalyticsHandlers; }
26
26
  });
27
27
  Object.defineProperty(exports, "createBlogBySlugHandler", {
28
28
  enumerable: true,
29
- get: function () { return chunkJCMOOPNX_cjs.createBlogBySlugHandler; }
29
+ get: function () { return chunkYOW457RA_cjs.createBlogBySlugHandler; }
30
30
  });
31
31
  Object.defineProperty(exports, "createChangePasswordHandler", {
32
32
  enumerable: true,
33
- get: function () { return chunkJCMOOPNX_cjs.createChangePasswordHandler; }
33
+ get: function () { return chunkYOW457RA_cjs.createChangePasswordHandler; }
34
34
  });
35
35
  Object.defineProperty(exports, "createCmsApiHandler", {
36
36
  enumerable: true,
37
- get: function () { return chunkJCMOOPNX_cjs.createCmsApiHandler; }
37
+ get: function () { return chunkYOW457RA_cjs.createCmsApiHandler; }
38
38
  });
39
39
  Object.defineProperty(exports, "createCrudByIdHandler", {
40
40
  enumerable: true,
41
- get: function () { return chunkJCMOOPNX_cjs.createCrudByIdHandler; }
41
+ get: function () { return chunkYOW457RA_cjs.createCrudByIdHandler; }
42
42
  });
43
43
  Object.defineProperty(exports, "createCrudHandler", {
44
44
  enumerable: true,
45
- get: function () { return chunkJCMOOPNX_cjs.createCrudHandler; }
45
+ get: function () { return chunkYOW457RA_cjs.createCrudHandler; }
46
46
  });
47
47
  Object.defineProperty(exports, "createDashboardStatsHandler", {
48
48
  enumerable: true,
49
- get: function () { return chunkJCMOOPNX_cjs.createDashboardStatsHandler; }
49
+ get: function () { return chunkYOW457RA_cjs.createDashboardStatsHandler; }
50
50
  });
51
51
  Object.defineProperty(exports, "createEcommerceAnalyticsHandler", {
52
52
  enumerable: true,
53
- get: function () { return chunkJCMOOPNX_cjs.createEcommerceAnalyticsHandler; }
53
+ get: function () { return chunkYOW457RA_cjs.createEcommerceAnalyticsHandler; }
54
54
  });
55
55
  Object.defineProperty(exports, "createForgotPasswordHandler", {
56
56
  enumerable: true,
57
- get: function () { return chunkJCMOOPNX_cjs.createForgotPasswordHandler; }
57
+ get: function () { return chunkYOW457RA_cjs.createForgotPasswordHandler; }
58
58
  });
59
59
  Object.defineProperty(exports, "createFormBySlugHandler", {
60
60
  enumerable: true,
61
- get: function () { return chunkJCMOOPNX_cjs.createFormBySlugHandler; }
61
+ get: function () { return chunkYOW457RA_cjs.createFormBySlugHandler; }
62
62
  });
63
63
  Object.defineProperty(exports, "createInviteAcceptHandler", {
64
64
  enumerable: true,
65
- get: function () { return chunkJCMOOPNX_cjs.createInviteAcceptHandler; }
65
+ get: function () { return chunkYOW457RA_cjs.createInviteAcceptHandler; }
66
66
  });
67
67
  Object.defineProperty(exports, "createJobScheduleHandlers", {
68
68
  enumerable: true,
69
- get: function () { return chunkJCMOOPNX_cjs.createJobScheduleHandlers; }
69
+ get: function () { return chunkYOW457RA_cjs.createJobScheduleHandlers; }
70
70
  });
71
71
  Object.defineProperty(exports, "createLlmAgentKnowledgeHandlers", {
72
72
  enumerable: true,
73
- get: function () { return chunkJCMOOPNX_cjs.createLlmAgentKnowledgeHandlers; }
73
+ get: function () { return chunkYOW457RA_cjs.createLlmAgentKnowledgeHandlers; }
74
74
  });
75
75
  Object.defineProperty(exports, "createMediaZipExtractHandler", {
76
76
  enumerable: true,
77
- get: function () { return chunkJCMOOPNX_cjs.createMediaZipExtractHandler; }
77
+ get: function () { return chunkYOW457RA_cjs.createMediaZipExtractHandler; }
78
78
  });
79
79
  Object.defineProperty(exports, "createSetPasswordHandler", {
80
80
  enumerable: true,
81
- get: function () { return chunkJCMOOPNX_cjs.createSetPasswordHandler; }
81
+ get: function () { return chunkYOW457RA_cjs.createSetPasswordHandler; }
82
82
  });
83
83
  Object.defineProperty(exports, "createSettingsApiHandlers", {
84
84
  enumerable: true,
85
- get: function () { return chunkJCMOOPNX_cjs.createSettingsApiHandlers; }
85
+ get: function () { return chunkYOW457RA_cjs.createSettingsApiHandlers; }
86
86
  });
87
87
  Object.defineProperty(exports, "createStorefrontApiHandler", {
88
88
  enumerable: true,
89
- get: function () { return chunkJCMOOPNX_cjs.createStorefrontApiHandler; }
89
+ get: function () { return chunkYOW457RA_cjs.createStorefrontApiHandler; }
90
90
  });
91
91
  Object.defineProperty(exports, "createUploadHandler", {
92
92
  enumerable: true,
93
- get: function () { return chunkJCMOOPNX_cjs.createUploadHandler; }
93
+ get: function () { return chunkYOW457RA_cjs.createUploadHandler; }
94
94
  });
95
95
  Object.defineProperty(exports, "createUserAuthApiRouter", {
96
96
  enumerable: true,
97
- get: function () { return chunkJCMOOPNX_cjs.createUserAuthApiRouter; }
97
+ get: function () { return chunkYOW457RA_cjs.createUserAuthApiRouter; }
98
98
  });
99
99
  Object.defineProperty(exports, "createUserAvatarHandler", {
100
100
  enumerable: true,
101
- get: function () { return chunkJCMOOPNX_cjs.createUserAvatarHandler; }
101
+ get: function () { return chunkYOW457RA_cjs.createUserAvatarHandler; }
102
102
  });
103
103
  Object.defineProperty(exports, "createUserProfileHandler", {
104
104
  enumerable: true,
105
- get: function () { return chunkJCMOOPNX_cjs.createUserProfileHandler; }
105
+ get: function () { return chunkYOW457RA_cjs.createUserProfileHandler; }
106
106
  });
107
107
  Object.defineProperty(exports, "createUsersApiHandlers", {
108
108
  enumerable: true,
109
- get: function () { return chunkJCMOOPNX_cjs.createUsersApiHandlers; }
109
+ get: function () { return chunkYOW457RA_cjs.createUsersApiHandlers; }
110
110
  });
111
111
  Object.defineProperty(exports, "createVendorDashboardHandler", {
112
112
  enumerable: true,
113
- get: function () { return chunkJCMOOPNX_cjs.createVendorDashboardHandler; }
113
+ get: function () { return chunkYOW457RA_cjs.createVendorDashboardHandler; }
114
114
  });
115
115
  Object.defineProperty(exports, "createVendorOnboardHandlers", {
116
116
  enumerable: true,
117
- get: function () { return chunkJCMOOPNX_cjs.createVendorOnboardHandlers; }
117
+ get: function () { return chunkYOW457RA_cjs.createVendorOnboardHandlers; }
118
118
  });
119
119
  Object.defineProperty(exports, "getPublicSettingsGroup", {
120
120
  enumerable: true,
121
- get: function () { return chunkJCMOOPNX_cjs.getPublicSettingsGroup; }
121
+ get: function () { return chunkYOW457RA_cjs.getPublicSettingsGroup; }
122
122
  });
123
123
  Object.defineProperty(exports, "mergeGuardrailsIntoSystemPrompt", {
124
124
  enumerable: true,
125
- get: function () { return chunkJCMOOPNX_cjs.mergeGuardrailsIntoSystemPrompt; }
125
+ get: function () { return chunkYOW457RA_cjs.mergeGuardrailsIntoSystemPrompt; }
126
126
  });
127
127
  Object.defineProperty(exports, "parseLlmAgentValidationRules", {
128
128
  enumerable: true,
129
- get: function () { return chunkJCMOOPNX_cjs.parseLlmAgentValidationRules; }
129
+ get: function () { return chunkYOW457RA_cjs.parseLlmAgentValidationRules; }
130
130
  });
131
131
  Object.defineProperty(exports, "simpleDecrypt", {
132
132
  enumerable: true,
133
- get: function () { return chunkJCMOOPNX_cjs.simpleDecrypt; }
133
+ get: function () { return chunkYOW457RA_cjs.simpleDecrypt; }
134
134
  });
135
135
  Object.defineProperty(exports, "simpleEncrypt", {
136
136
  enumerable: true,
137
- get: function () { return chunkJCMOOPNX_cjs.simpleEncrypt; }
137
+ get: function () { return chunkYOW457RA_cjs.simpleEncrypt; }
138
138
  });
139
139
  Object.defineProperty(exports, "validateUserMessageAgainstAgentRules", {
140
140
  enumerable: true,
141
- get: function () { return chunkJCMOOPNX_cjs.validateUserMessageAgainstAgentRules; }
141
+ get: function () { return chunkYOW457RA_cjs.validateUserMessageAgainstAgentRules; }
142
142
  });
143
143
  Object.defineProperty(exports, "validateUserMessageAgainstStructuredRules", {
144
144
  enumerable: true,
145
- get: function () { return chunkJCMOOPNX_cjs.validateUserMessageAgainstStructuredRules; }
145
+ get: function () { return chunkYOW457RA_cjs.validateUserMessageAgainstStructuredRules; }
146
146
  });
147
147
  Object.defineProperty(exports, "createCmsAuthBundle", {
148
148
  enumerable: true,
package/dist/api.js CHANGED
@@ -1,6 +1,6 @@
1
- export { createAnalyticsHandlers, createBlogBySlugHandler, createChangePasswordHandler, createCmsApiHandler, createCrudByIdHandler, createCrudHandler, createDashboardStatsHandler, createEcommerceAnalyticsHandler, createForgotPasswordHandler, createFormBySlugHandler, createInviteAcceptHandler, createJobScheduleHandlers, createLlmAgentKnowledgeHandlers, createMediaZipExtractHandler, createSetPasswordHandler, createSettingsApiHandlers, createStorefrontApiHandler, createUploadHandler, createUserAuthApiRouter, createUserAvatarHandler, createUserProfileHandler, createUsersApiHandlers, createVendorDashboardHandler, createVendorOnboardHandlers, getPublicSettingsGroup, mergeGuardrailsIntoSystemPrompt, parseLlmAgentValidationRules, simpleDecrypt, simpleEncrypt, validateUserMessageAgainstAgentRules, validateUserMessageAgainstStructuredRules } from './chunk-LT2WOPKA.js';
1
+ export { createAnalyticsHandlers, createBlogBySlugHandler, createChangePasswordHandler, createCmsApiHandler, createCrudByIdHandler, createCrudHandler, createDashboardStatsHandler, createEcommerceAnalyticsHandler, createForgotPasswordHandler, createFormBySlugHandler, createInviteAcceptHandler, createJobScheduleHandlers, createLlmAgentKnowledgeHandlers, createMediaZipExtractHandler, createSetPasswordHandler, createSettingsApiHandlers, createStorefrontApiHandler, createUploadHandler, createUserAuthApiRouter, createUserAvatarHandler, createUserProfileHandler, createUsersApiHandlers, createVendorDashboardHandler, createVendorOnboardHandlers, getPublicSettingsGroup, mergeGuardrailsIntoSystemPrompt, parseLlmAgentValidationRules, simpleDecrypt, simpleEncrypt, validateUserMessageAgainstAgentRules, validateUserMessageAgainstStructuredRules } from './chunk-NUXR7BUG.js';
2
2
  import './chunk-3K5AIEIZ.js';
3
- import './chunk-IPDHT2UV.js';
3
+ import './chunk-CTXBYO2J.js';
4
4
  import './chunk-HCIRL37O.js';
5
5
  import './chunk-JXF23MPG.js';
6
6
  import './chunk-L3525VXI.js';
@@ -57,6 +57,9 @@ function buildEventOrderTemplateVariables(input) {
57
57
  currency: String(order.currency ?? "INR"),
58
58
  lines: orderLines
59
59
  };
60
+ const qrToken = order.qrToken?.trim() || order.orderNumber?.trim() || "";
61
+ const fallbackQrUrl = qrToken ? `https://api.qrserver.com/v1/create-qr-code/?size=200x200&data=${encodeURIComponent(qrToken)}` : "";
62
+ const fallbackTicketQr = fallbackQrUrl ? `<img src="${fallbackQrUrl}" alt="Ticket QR Code" width="200" height="200" style="display:block;margin:12px 0;border:1px solid #e5e7eb;border-radius:8px;" />` : "";
60
63
  return {
61
64
  eventName: event.name ?? productNames ?? "",
62
65
  vendorName: vendorName.trim(),
@@ -73,6 +76,8 @@ function buildEventOrderTemplateVariables(input) {
73
76
  trackUrl,
74
77
  invoiceNumber,
75
78
  invoiceUrl,
79
+ ticketQr: fallbackTicketQr,
80
+ qrImageUrl: fallbackQrUrl,
76
81
  orderDetails: formatOrderDetailsText(orderDetailsPayload),
77
82
  orderDetailsHtml: formatOrderDetailsHtml(orderDetailsPayload)
78
83
  };
@@ -2099,72 +2104,27 @@ async function getGoogleAccessToken(clientEmail, privateKey) {
2099
2104
  return tokenData.access_token;
2100
2105
  }
2101
2106
  __name(getGoogleAccessToken, "getGoogleAccessToken");
2102
- async function resolveFcmServiceAccount(dataSource, entityMap) {
2103
- const pushSettings = await getSettingsGroup(dataSource, entityMap, "push");
2104
- let projectId = pushSettings.firebase_project_id?.trim();
2105
- let clientEmail = pushSettings.firebase_client_email?.trim();
2106
- let privateKey = pushSettings.firebase_private_key?.trim();
2107
- if (pushSettings.firebase_service_account_json?.trim()) {
2108
- try {
2109
- const parsed = JSON.parse(pushSettings.firebase_service_account_json.trim());
2110
- if (parsed.project_id) projectId = parsed.project_id;
2111
- if (parsed.client_email) clientEmail = parsed.client_email;
2112
- if (parsed.private_key) privateKey = parsed.private_key;
2113
- } catch {
2114
- }
2115
- }
2116
- if (!projectId || !clientEmail || !privateKey) {
2117
- return {
2118
- ok: false,
2119
- error: "Firebase Service Account JSON / credentials are not configured"
2120
- };
2121
- }
2122
- return {
2123
- ok: true,
2124
- account: {
2125
- projectId,
2126
- clientEmail,
2127
- privateKey
2128
- }
2129
- };
2130
- }
2131
- __name(resolveFcmServiceAccount, "resolveFcmServiceAccount");
2132
- async function validateFcmCredentials(dataSource, entityMap) {
2133
- try {
2134
- const resolved = await resolveFcmServiceAccount(dataSource, entityMap);
2135
- if (!resolved.ok) {
2136
- return {
2137
- success: false,
2138
- error: resolved.error
2139
- };
2140
- }
2141
- const { projectId, clientEmail, privateKey } = resolved.account;
2142
- await getGoogleAccessToken(clientEmail, privateKey);
2143
- return {
2144
- success: true,
2145
- projectId,
2146
- clientEmail
2147
- };
2148
- } catch (err) {
2149
- const errorMsg = err instanceof Error ? err.message : "Unknown credential validation error";
2150
- console.error("[fcm-push] Exception in validateFcmCredentials", errorMsg);
2151
- return {
2152
- success: false,
2153
- error: errorMsg
2154
- };
2155
- }
2156
- }
2157
- __name(validateFcmCredentials, "validateFcmCredentials");
2158
2107
  async function sendFcmPushNotification(dataSource, entityMap, msg) {
2159
2108
  try {
2160
- const resolved = await resolveFcmServiceAccount(dataSource, entityMap);
2161
- if (!resolved.ok) {
2109
+ const pushSettings = await getSettingsGroup(dataSource, entityMap, "push");
2110
+ let projectId = pushSettings.firebase_project_id?.trim();
2111
+ let clientEmail = pushSettings.firebase_client_email?.trim();
2112
+ let privateKey = pushSettings.firebase_private_key?.trim();
2113
+ if (pushSettings.firebase_service_account_json?.trim()) {
2114
+ try {
2115
+ const parsed = JSON.parse(pushSettings.firebase_service_account_json.trim());
2116
+ if (parsed.project_id) projectId = parsed.project_id;
2117
+ if (parsed.client_email) clientEmail = parsed.client_email;
2118
+ if (parsed.private_key) privateKey = parsed.private_key;
2119
+ } catch {
2120
+ }
2121
+ }
2122
+ if (!projectId || !clientEmail || !privateKey) {
2162
2123
  return {
2163
2124
  success: false,
2164
- error: resolved.error
2125
+ error: "Firebase Service Account JSON / credentials are not configured"
2165
2126
  };
2166
2127
  }
2167
- const { projectId, clientEmail, privateKey } = resolved.account;
2168
2128
  const accessToken = await getGoogleAccessToken(clientEmail, privateKey);
2169
2129
  const fcmEndpoint = `https://fcm.googleapis.com/v1/projects/${projectId}/messages:send`;
2170
2130
  const fcmPayload = {
@@ -2275,59 +2235,69 @@ async function loadBoundTemplate(triggerKey, channel, audienceType = "customers"
2275
2235
  console.warn("[order-notifications] order_notification_bindings or message_templates missing from entityMap");
2276
2236
  return null;
2277
2237
  }
2278
- const bindingRepo = dataSource.getRepository(entityMap.order_notification_bindings);
2279
- let binding = await bindingRepo.findOne({
2280
- where: {
2281
- triggerKey,
2282
- channel,
2283
- type: audienceType,
2284
- enabled: true
2285
- }
2286
- });
2287
- if (!binding && audienceType === "customers") {
2288
- binding = await bindingRepo.findOne({
2238
+ try {
2239
+ const bindingRepo = dataSource.getRepository(entityMap.order_notification_bindings);
2240
+ let binding = await bindingRepo.findOne({
2289
2241
  where: {
2290
2242
  triggerKey,
2291
2243
  channel,
2244
+ type: audienceType,
2292
2245
  enabled: true
2293
2246
  }
2294
- });
2295
- }
2296
- if (!binding) {
2297
- console.warn("[order-notifications] no order_notification_bindings row", {
2298
- triggerKey,
2299
- channel,
2300
- audienceType
2301
- });
2302
- return null;
2303
- }
2304
- const templateId = binding.messageTemplateId;
2305
- if (templateId == null) {
2306
- console.warn("[order-notifications] binding exists but no template selected", {
2307
- triggerKey,
2308
- channel,
2309
- audienceType
2310
- });
2311
- return null;
2312
- }
2313
- const template = await dataSource.getRepository(entityMap.message_templates).findOne({
2314
- where: {
2315
- id: templateId,
2316
- channel,
2317
- deleted: false,
2318
- enabled: true
2247
+ }).catch(() => null);
2248
+ if (!binding && audienceType === "customers") {
2249
+ binding = await bindingRepo.findOne({
2250
+ where: {
2251
+ triggerKey,
2252
+ channel,
2253
+ enabled: true
2254
+ }
2255
+ }).catch(() => null);
2319
2256
  }
2320
- });
2321
- if (!template) {
2322
- console.warn("[order-notifications] bound template not found or disabled", {
2257
+ if (!binding) {
2258
+ console.warn("[order-notifications] no order_notification_bindings row", {
2259
+ triggerKey,
2260
+ channel,
2261
+ audienceType
2262
+ });
2263
+ return null;
2264
+ }
2265
+ const templateId = binding.messageTemplateId;
2266
+ if (templateId == null) {
2267
+ console.warn("[order-notifications] binding exists but no template selected", {
2268
+ triggerKey,
2269
+ channel,
2270
+ audienceType
2271
+ });
2272
+ return null;
2273
+ }
2274
+ const template = await dataSource.getRepository(entityMap.message_templates).findOne({
2275
+ where: {
2276
+ id: templateId,
2277
+ channel,
2278
+ deleted: false,
2279
+ enabled: true
2280
+ }
2281
+ }).catch(() => null);
2282
+ if (!template) {
2283
+ console.warn("[order-notifications] bound template not found or disabled", {
2284
+ triggerKey,
2285
+ channel,
2286
+ audienceType,
2287
+ templateId
2288
+ });
2289
+ return null;
2290
+ }
2291
+ return template;
2292
+ } catch (err) {
2293
+ console.warn("[order-notifications] loadBoundTemplate query failed", {
2323
2294
  triggerKey,
2324
2295
  channel,
2325
2296
  audienceType,
2326
- templateId
2297
+ error: err instanceof Error ? err.message : String(err)
2327
2298
  });
2328
2299
  return null;
2329
2300
  }
2330
- return template;
2331
2301
  }
2332
2302
  __name(loadBoundTemplate, "loadBoundTemplate");
2333
2303
  function mergeTriggerVariables(payload, rich) {
@@ -2344,9 +2314,11 @@ function mergeTriggerVariables(payload, rich) {
2344
2314
  refundAmount: String(payload.refundAmount)
2345
2315
  } : {}
2346
2316
  };
2317
+ const extraVars = payload.extraVariables ?? {};
2347
2318
  return {
2348
2319
  ...basic,
2349
- ...rich ?? {}
2320
+ ...rich ?? {},
2321
+ ...extraVars
2350
2322
  };
2351
2323
  }
2352
2324
  __name(mergeTriggerVariables, "mergeTriggerVariables");
@@ -2542,7 +2514,23 @@ async function getAdminRecipientEmails(dataSource, entityMap) {
2542
2514
  }
2543
2515
  } catch {
2544
2516
  }
2545
- return Array.from(emails);
2517
+ const vendorEmails = /* @__PURE__ */ new Set();
2518
+ try {
2519
+ const vRows = await dataSource.query(`SELECT DISTINCT LOWER(TRIM(email)) AS email FROM vendors WHERE COALESCE(deleted, false) = false AND email IS NOT NULL AND TRIM(email) != ''`).catch(() => []);
2520
+ for (const r of vRows) {
2521
+ if (r.email) vendorEmails.add(r.email.toLowerCase());
2522
+ }
2523
+ const vuRows = await dataSource.query(`SELECT DISTINCT LOWER(TRIM(u.email)) AS email
2524
+ FROM users u
2525
+ LEFT JOIN user_groups g ON g.id = u."groupId"
2526
+ WHERE COALESCE(u.deleted, false) = false
2527
+ AND (LOWER(g.name) LIKE '%vendor%' OR u."groupId" = 5)`).catch(() => []);
2528
+ for (const r of vuRows) {
2529
+ if (r.email) vendorEmails.add(r.email.toLowerCase());
2530
+ }
2531
+ } catch {
2532
+ }
2533
+ return Array.from(emails).filter((e) => !vendorEmails.has(e.toLowerCase()));
2546
2534
  }
2547
2535
  __name(getAdminRecipientEmails, "getAdminRecipientEmails");
2548
2536
  function formatBodyForEmailHtml(body) {
@@ -2776,6 +2764,8 @@ function initWhatsappTriggerDispatcher(deps) {
2776
2764
  if (initialized) return;
2777
2765
  initialized = true;
2778
2766
  const { dataSource, entityMap, getCms } = deps;
2767
+ void dataSource.query(`ALTER TYPE "order_notification_bindings_channel_enum" ADD VALUE IF NOT EXISTS 'mobile'`).catch(() => {
2768
+ });
2779
2769
  notificationTriggerEmitter.onAnyTrigger((triggerKey, payload) => {
2780
2770
  void handleTrigger(triggerKey, payload, dataSource, entityMap, getCms).catch((err) => {
2781
2771
  console.error("[order-notifications]", triggerKey, err);
@@ -2835,4 +2825,4 @@ async function resendOrderNotification(triggerKey, orderId, deps) {
2835
2825
  }
2836
2826
  __name(resendOrderNotification, "resendOrderNotification");
2837
2827
 
2838
- export { CHAT_EMAIL_LOG, EmailService, WhatsAppService, buildChatbotSystemPromptWithEmailTool, buildEventOrderTemplateVariables, buildTranscriptForLeadEmail, detectChatLeadIntent, emailPlugin, emailTemplates, getSettingsGroup, initWhatsappTriggerDispatcher, isWhatsAppPluginEnabled, joinRecipientsForSend, mergeWhatsAppConfigLayers, parseEmailRecipientsFromConfig, parseIntentRecipientEmails, queueWhatsApp, registerWhatsAppQueueProcessor, renderEmail, renderLayout, resendOrderNotification, resolveChatEmailToolSettings, sendChatLeadEmail, sendFcmPushNotification, serializeEmailRecipients, validateFcmCredentials, whatsAppConfigured };
2828
+ export { CHAT_EMAIL_LOG, EmailService, WhatsAppService, buildChatbotSystemPromptWithEmailTool, buildEventOrderTemplateVariables, buildTranscriptForLeadEmail, detectChatLeadIntent, emailPlugin, emailTemplates, getSettingsGroup, initWhatsappTriggerDispatcher, isWhatsAppPluginEnabled, joinRecipientsForSend, mergeWhatsAppConfigLayers, parseEmailRecipientsFromConfig, parseIntentRecipientEmails, queueWhatsApp, registerWhatsAppQueueProcessor, renderEmail, renderLayout, resendOrderNotification, resolveChatEmailToolSettings, sendChatLeadEmail, sendFcmPushNotification, serializeEmailRecipients, whatsAppConfigured };