@infuro/cms-core 1.0.36 → 1.0.39
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/admin.cjs +459 -496
- package/dist/admin.js +459 -496
- package/dist/api.cjs +36 -36
- package/dist/api.js +4 -4
- package/dist/auth.cjs +51 -51
- package/dist/auth.js +3 -3
- package/dist/{chunk-COBORIJH.cjs → chunk-22FFHLTO.cjs} +39 -56
- package/dist/{chunk-X6H5VBQ2.cjs → chunk-E6WVP7BK.cjs} +6 -6
- package/dist/{chunk-2AEVFOQP.cjs → chunk-ERJK5QXN.cjs} +418 -139
- package/dist/{chunk-VMY2S32H.js → chunk-NNQBWDCI.js} +39 -56
- package/dist/{chunk-WO2DW4AU.cjs → chunk-OIGCAGH7.cjs} +7 -7
- package/dist/{chunk-UF3BYUXY.js → chunk-P7QCLE5W.js} +4 -3
- package/dist/{chunk-FG6I64HP.js → chunk-SBRBR3VO.js} +1 -1
- package/dist/{chunk-JS2W7XZ4.js → chunk-SFDZMGHD.js} +351 -72
- package/dist/{chunk-LI2IXVAY.js → chunk-UXMDSNIG.js} +1 -1
- package/dist/{chunk-KPKFNLQQ.cjs → chunk-WMXPKKXU.cjs} +4 -3
- package/dist/index.cjs +260 -260
- package/dist/index.d.cts +12 -5
- package/dist/index.d.ts +12 -5
- package/dist/index.js +8 -8
- package/dist/migrations/1775500000000-RssFeedsAndArticles.ts +0 -1
- package/dist/migrations/1775700000000-JobSchedules.ts +0 -1
- package/dist/migrations/1781260000000-RenameWhatsappTriggerBindingsToOrderNotificationBindings.ts +92 -0
- package/dist/migrations/1781270000000-ComboVendorId.ts +58 -0
- package/dist/{whatsapp-trigger-dispatcher-ONHXI7UY.cjs → order-notification-dispatcher-RU7BTGGX.cjs} +3 -4
- package/dist/{whatsapp-trigger-dispatcher-PWFI4FKP.js → order-notification-dispatcher-XWIJYDGA.js} +1 -2
- package/dist/{rbac-debug-db-HWP65A4O.cjs → rbac-debug-db-KHG4FJC3.cjs} +2 -2
- package/dist/{rbac-debug-db-QJH3AD34.js → rbac-debug-db-QWHOENBR.js} +1 -1
- package/package.json +147 -147
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
var chunkUCKN4BBY_cjs = require('./chunk-UCKN4BBY.cjs');
|
|
4
4
|
var chunkXW5ATPRW_cjs = require('./chunk-XW5ATPRW.cjs');
|
|
5
5
|
var chunkOOTLNH63_cjs = require('./chunk-OOTLNH63.cjs');
|
|
6
|
-
var chunkSPQFNIYJ_cjs = require('./chunk-SPQFNIYJ.cjs');
|
|
7
6
|
var chunkUSNT2KNT_cjs = require('./chunk-USNT2KNT.cjs');
|
|
8
7
|
var clientSes = require('@aws-sdk/client-ses');
|
|
9
8
|
var nodemailer = require('nodemailer');
|
|
@@ -440,9 +439,9 @@ var WhatsAppService = class {
|
|
|
440
439
|
let body = opts.body?.trim() ?? "";
|
|
441
440
|
const variables = opts.variables ?? {};
|
|
442
441
|
if (opts.templateKey?.trim() && this.getMessageTemplateRow) {
|
|
443
|
-
const { resolveEventOrderTemplate
|
|
442
|
+
const { resolveEventOrderTemplate, EVENT_ORDER_TEMPLATE_KEY } = await import('./event-order-defaults-EMWBIGL3.cjs');
|
|
444
443
|
if (opts.templateKey.trim() === EVENT_ORDER_TEMPLATE_KEY) {
|
|
445
|
-
const resolved = await
|
|
444
|
+
const resolved = await resolveEventOrderTemplate("whatsapp", async (ch, key) => {
|
|
446
445
|
const row = await this.getMessageTemplateRow(ch, key);
|
|
447
446
|
if (!row) return null;
|
|
448
447
|
return {
|
|
@@ -2040,7 +2039,7 @@ function emailPlugin(config) {
|
|
|
2040
2039
|
}
|
|
2041
2040
|
chunkUSNT2KNT_cjs.__name(emailPlugin, "emailPlugin");
|
|
2042
2041
|
|
|
2043
|
-
// src/lib/
|
|
2042
|
+
// src/lib/order-notification-dispatcher.ts
|
|
2044
2043
|
var initialized = false;
|
|
2045
2044
|
function maskPhone3(raw) {
|
|
2046
2045
|
const digits = String(raw ?? "").replace(/\D/g, "");
|
|
@@ -2094,48 +2093,52 @@ async function isTriggerCatalogEnabled(triggerKey, dataSource, entityMap) {
|
|
|
2094
2093
|
}
|
|
2095
2094
|
}
|
|
2096
2095
|
chunkUSNT2KNT_cjs.__name(isTriggerCatalogEnabled, "isTriggerCatalogEnabled");
|
|
2097
|
-
async function
|
|
2098
|
-
if (!entityMap.
|
|
2099
|
-
console.warn("[order-notifications]
|
|
2096
|
+
async function loadBoundTemplate(triggerKey, channel, dataSource, entityMap) {
|
|
2097
|
+
if (!entityMap.order_notification_bindings || !entityMap.message_templates) {
|
|
2098
|
+
console.warn("[order-notifications] order_notification_bindings or message_templates missing from entityMap");
|
|
2100
2099
|
return null;
|
|
2101
2100
|
}
|
|
2102
|
-
const binding = await dataSource.getRepository(entityMap.
|
|
2101
|
+
const binding = await dataSource.getRepository(entityMap.order_notification_bindings).findOne({
|
|
2103
2102
|
where: {
|
|
2104
2103
|
triggerKey,
|
|
2104
|
+
channel,
|
|
2105
2105
|
enabled: true
|
|
2106
2106
|
}
|
|
2107
2107
|
});
|
|
2108
2108
|
if (!binding) {
|
|
2109
|
-
console.warn("[order-notifications] no
|
|
2110
|
-
triggerKey
|
|
2109
|
+
console.warn("[order-notifications] no order_notification_bindings row", {
|
|
2110
|
+
triggerKey,
|
|
2111
|
+
channel
|
|
2111
2112
|
});
|
|
2112
2113
|
return null;
|
|
2113
2114
|
}
|
|
2114
2115
|
const templateId = binding.messageTemplateId;
|
|
2115
2116
|
if (templateId == null) {
|
|
2116
2117
|
console.warn("[order-notifications] binding exists but no template selected", {
|
|
2117
|
-
triggerKey
|
|
2118
|
+
triggerKey,
|
|
2119
|
+
channel
|
|
2118
2120
|
});
|
|
2119
2121
|
return null;
|
|
2120
2122
|
}
|
|
2121
2123
|
const template = await dataSource.getRepository(entityMap.message_templates).findOne({
|
|
2122
2124
|
where: {
|
|
2123
2125
|
id: templateId,
|
|
2124
|
-
channel
|
|
2126
|
+
channel,
|
|
2125
2127
|
deleted: false,
|
|
2126
2128
|
enabled: true
|
|
2127
2129
|
}
|
|
2128
2130
|
});
|
|
2129
2131
|
if (!template) {
|
|
2130
|
-
console.warn("[order-notifications] bound
|
|
2132
|
+
console.warn("[order-notifications] bound template not found or disabled", {
|
|
2131
2133
|
triggerKey,
|
|
2134
|
+
channel,
|
|
2132
2135
|
templateId
|
|
2133
2136
|
});
|
|
2134
2137
|
return null;
|
|
2135
2138
|
}
|
|
2136
2139
|
return template;
|
|
2137
2140
|
}
|
|
2138
|
-
chunkUSNT2KNT_cjs.__name(
|
|
2141
|
+
chunkUSNT2KNT_cjs.__name(loadBoundTemplate, "loadBoundTemplate");
|
|
2139
2142
|
function mergeTriggerVariables(payload, rich) {
|
|
2140
2143
|
const basic = {
|
|
2141
2144
|
orderId: String(payload.orderId ?? ""),
|
|
@@ -2156,43 +2159,16 @@ function mergeTriggerVariables(payload, rich) {
|
|
|
2156
2159
|
};
|
|
2157
2160
|
}
|
|
2158
2161
|
chunkUSNT2KNT_cjs.__name(mergeTriggerVariables, "mergeTriggerVariables");
|
|
2159
|
-
async function
|
|
2160
|
-
|
|
2161
|
-
|
|
2162
|
-
const getTemplateRow = /* @__PURE__ */ chunkUSNT2KNT_cjs.__name(async (channel, templateKey) => {
|
|
2163
|
-
const row = await templateRepo.findOne({
|
|
2164
|
-
where: {
|
|
2165
|
-
channel,
|
|
2166
|
-
templateKey,
|
|
2167
|
-
deleted: false
|
|
2168
|
-
}
|
|
2169
|
-
});
|
|
2170
|
-
if (!row) return null;
|
|
2171
|
-
const r = row;
|
|
2172
|
-
return {
|
|
2173
|
-
subject: r.subject,
|
|
2174
|
-
body: r.body,
|
|
2175
|
-
externalTemplateRef: r.externalTemplateRef,
|
|
2176
|
-
name: r.name,
|
|
2177
|
-
language: r.providerMeta?.language ?? null,
|
|
2178
|
-
paramOrder: r.providerMeta?.paramOrder ?? null,
|
|
2179
|
-
enabled: r.enabled
|
|
2180
|
-
};
|
|
2181
|
-
}, "getTemplateRow");
|
|
2182
|
-
const resolved = await chunkSPQFNIYJ_cjs.resolveEventOrderTemplate("email", getTemplateRow, null);
|
|
2183
|
-
if (!resolved?.enabled) {
|
|
2184
|
-
console.warn("[order-notifications] email template disabled or missing for order_placed", {
|
|
2185
|
-
orderId
|
|
2186
|
-
});
|
|
2187
|
-
return;
|
|
2188
|
-
}
|
|
2162
|
+
async function sendEmailForTrigger(triggerKey, orderId, variables, contactEmail, dataSource, entityMap, getCms) {
|
|
2163
|
+
const template = await loadBoundTemplate(triggerKey, "email", dataSource, entityMap);
|
|
2164
|
+
if (!template) return;
|
|
2189
2165
|
const [branding, emailSettings] = await Promise.all([
|
|
2190
2166
|
getSettingsGroup(dataSource, entityMap, "branding"),
|
|
2191
2167
|
getSettingsGroup(dataSource, entityMap, "email")
|
|
2192
2168
|
]);
|
|
2193
2169
|
const companyDetails = mergeEmailLayoutCompanyDetails(branding, emailSettings);
|
|
2194
|
-
const subject = chunkOOTLNH63_cjs.applyTemplateVars(
|
|
2195
|
-
const bodyHtml = chunkOOTLNH63_cjs.applyTemplateVars(
|
|
2170
|
+
const subject = chunkOOTLNH63_cjs.applyTemplateVars(template.subject ?? "Order update", variables);
|
|
2171
|
+
const bodyHtml = chunkOOTLNH63_cjs.applyTemplateVars(template.body, variables);
|
|
2196
2172
|
const html = renderLayout({
|
|
2197
2173
|
bodyHtml,
|
|
2198
2174
|
companyDetails
|
|
@@ -2205,15 +2181,21 @@ async function sendOrderPlacedEmail(orderId, dataSource, entityMap, getCms, vari
|
|
|
2205
2181
|
text: bodyHtml.replace(/<[^>]+>/g, " ").replace(/\s+/g, " ").trim()
|
|
2206
2182
|
});
|
|
2207
2183
|
console.log("[order-notifications] email queued", {
|
|
2184
|
+
triggerKey,
|
|
2208
2185
|
orderId,
|
|
2209
2186
|
to: contactEmail
|
|
2210
2187
|
});
|
|
2211
2188
|
}
|
|
2212
|
-
chunkUSNT2KNT_cjs.__name(
|
|
2189
|
+
chunkUSNT2KNT_cjs.__name(sendEmailForTrigger, "sendEmailForTrigger");
|
|
2213
2190
|
async function sendWhatsAppForTrigger(triggerKey, orderId, phone, variables, dataSource, entityMap, getCms) {
|
|
2214
|
-
const template = await
|
|
2191
|
+
const template = await loadBoundTemplate(triggerKey, "whatsapp", dataSource, entityMap);
|
|
2215
2192
|
if (!template) return;
|
|
2216
|
-
const paramOrder = template.providerMeta?.paramOrder
|
|
2193
|
+
const paramOrder = template.providerMeta?.paramOrder ?? [];
|
|
2194
|
+
if (paramOrder.length === 0) {
|
|
2195
|
+
console.warn("[order-notifications] WhatsApp template has no paramOrder set \u2014 variables may send blank/wrong", {
|
|
2196
|
+
triggerKey
|
|
2197
|
+
});
|
|
2198
|
+
}
|
|
2217
2199
|
const cms = await getCms();
|
|
2218
2200
|
const metaTemplateName = resolveMetaWhatsAppTemplateName({
|
|
2219
2201
|
externalTemplateRef: template.externalTemplateRef,
|
|
@@ -2270,21 +2252,22 @@ async function handleTrigger(triggerKey, payload, dataSource, entityMap, getCms)
|
|
|
2270
2252
|
const variables = mergeTriggerVariables(payload, context?.variables);
|
|
2271
2253
|
const contactEmail = context?.contact.email?.trim() || "";
|
|
2272
2254
|
const contactPhone = context?.contact.phone?.trim() || payload.customerPhone?.trim() || "";
|
|
2273
|
-
if (
|
|
2274
|
-
await
|
|
2275
|
-
} else
|
|
2255
|
+
if (contactEmail) {
|
|
2256
|
+
await sendEmailForTrigger(triggerKey, payload.orderId, variables, contactEmail, dataSource, entityMap, getCms);
|
|
2257
|
+
} else {
|
|
2276
2258
|
console.warn("[order-notifications] skip email: no customer email", {
|
|
2259
|
+
triggerKey,
|
|
2277
2260
|
orderId: payload.orderId
|
|
2278
2261
|
});
|
|
2279
2262
|
}
|
|
2280
|
-
if (
|
|
2263
|
+
if (contactPhone) {
|
|
2264
|
+
await sendWhatsAppForTrigger(triggerKey, payload.orderId, contactPhone, variables, dataSource, entityMap, getCms);
|
|
2265
|
+
} else {
|
|
2281
2266
|
console.warn("[order-notifications] skip WhatsApp: no customer phone", {
|
|
2282
2267
|
triggerKey,
|
|
2283
2268
|
orderId: payload.orderId
|
|
2284
2269
|
});
|
|
2285
|
-
return;
|
|
2286
2270
|
}
|
|
2287
|
-
await sendWhatsAppForTrigger(triggerKey, payload.orderId, contactPhone, variables, dataSource, entityMap, getCms);
|
|
2288
2271
|
}
|
|
2289
2272
|
chunkUSNT2KNT_cjs.__name(handleTrigger, "handleTrigger");
|
|
2290
2273
|
function initWhatsappTriggerDispatcher(deps) {
|
|
@@ -2296,7 +2279,7 @@ function initWhatsappTriggerDispatcher(deps) {
|
|
|
2296
2279
|
console.error("[order-notifications]", triggerKey, err);
|
|
2297
2280
|
});
|
|
2298
2281
|
});
|
|
2299
|
-
console.log("[order-notifications] dispatcher initialized (email + WhatsApp)");
|
|
2282
|
+
console.log("[order-notifications] dispatcher initialized (email + WhatsApp, unified via order_notification_bindings)");
|
|
2300
2283
|
}
|
|
2301
2284
|
chunkUSNT2KNT_cjs.__name(initWhatsappTriggerDispatcher, "initWhatsappTriggerDispatcher");
|
|
2302
2285
|
async function resendOrderNotification(triggerKey, orderId, deps) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkWMXPKKXU_cjs = require('./chunk-WMXPKKXU.cjs');
|
|
4
4
|
var chunkUSNT2KNT_cjs = require('./chunk-USNT2KNT.cjs');
|
|
5
5
|
var jwt = require('next-auth/jwt');
|
|
6
6
|
var _CredentialsProvider = require('next-auth/providers/credentials');
|
|
@@ -11,12 +11,12 @@ var _CredentialsProvider__default = /*#__PURE__*/_interopDefault(_CredentialsPro
|
|
|
11
11
|
|
|
12
12
|
// src/auth/seed-permissions.ts
|
|
13
13
|
async function seedAdministratorPermissions(dataSource, entityMap) {
|
|
14
|
-
const entities =
|
|
14
|
+
const entities = chunkWMXPKKXU_cjs.getPermissionableEntityKeys(entityMap);
|
|
15
15
|
const groupRepo = dataSource.getRepository(entityMap.user_groups);
|
|
16
16
|
const permRepo = dataSource.getRepository(entityMap.permissions);
|
|
17
17
|
const adminGroup = await groupRepo.findOne({
|
|
18
18
|
where: {
|
|
19
|
-
name:
|
|
19
|
+
name: chunkWMXPKKXU_cjs.ADMIN_GROUP_NAME,
|
|
20
20
|
deleted: false
|
|
21
21
|
}
|
|
22
22
|
});
|
|
@@ -298,18 +298,18 @@ async function checkMultiVendorEnabledViaSettingsApi() {
|
|
|
298
298
|
chunkUSNT2KNT_cjs.__name(checkMultiVendorEnabledViaSettingsApi, "checkMultiVendorEnabledViaSettingsApi");
|
|
299
299
|
function sessionUserFromNextAuthUser(user) {
|
|
300
300
|
const g = user.group;
|
|
301
|
-
const isRBACAdmin =
|
|
301
|
+
const isRBACAdmin = chunkWMXPKKXU_cjs.isSuperAdmin({
|
|
302
302
|
groupId: user.groupId ?? void 0,
|
|
303
303
|
groupName: g?.name,
|
|
304
304
|
isRBACAdmin: false
|
|
305
305
|
});
|
|
306
|
-
const entityPerms =
|
|
306
|
+
const entityPerms = chunkWMXPKKXU_cjs.permissionRowsToRecord(g?.permissions);
|
|
307
307
|
const rawAdminAccess = user.adminAccess;
|
|
308
308
|
const adminAccess = rawAdminAccess === true ? true : rawAdminAccess === false ? false : void 0;
|
|
309
309
|
const vendorIds = user.vendorIds ?? [];
|
|
310
310
|
const vendorRole = user.vendorRole ?? null;
|
|
311
311
|
const isVendorRoleOwner = user.isVendorRoleOwner ?? false;
|
|
312
|
-
const { isVendorPortal, isVendorOwner: isVendorOwner2 } =
|
|
312
|
+
const { isVendorPortal, isVendorOwner: isVendorOwner2 } = chunkWMXPKKXU_cjs.vendorPortalFlagsFromUser({
|
|
313
313
|
email: user.email,
|
|
314
314
|
isRBACAdmin,
|
|
315
315
|
groupName: g?.name,
|