@infuro/cms-core 1.0.35 → 1.0.36

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.
Files changed (65) hide show
  1. package/dist/admin.cjs +861 -626
  2. package/dist/admin.d.cts +6 -0
  3. package/dist/admin.d.ts +6 -0
  4. package/dist/admin.js +863 -628
  5. package/dist/api.cjs +40 -39
  6. package/dist/api.js +8 -7
  7. package/dist/auth.cjs +51 -51
  8. package/dist/auth.d.cts +3 -3
  9. package/dist/auth.d.ts +3 -3
  10. package/dist/auth.js +3 -3
  11. package/dist/{chunk-BGJAV67S.cjs → chunk-2AEVFOQP.cjs} +7923 -7197
  12. package/dist/chunk-COBORIJH.cjs +2373 -0
  13. package/dist/{chunk-EQPITOP6.js → chunk-FG6I64HP.js} +70 -9
  14. package/dist/chunk-HCIRL37O.js +21 -0
  15. package/dist/chunk-HT5DI3XW.cjs +82 -0
  16. package/dist/{chunk-2XE4X74C.js → chunk-JS2W7XZ4.js} +7510 -6800
  17. package/dist/{chunk-EF2JBPDM.js → chunk-KFFB6EMZ.js} +9 -0
  18. package/dist/{chunk-3KPNTQBV.cjs → chunk-KPKFNLQQ.cjs} +50 -22
  19. package/dist/{chunk-6KPQWRFW.js → chunk-LI2IXVAY.js} +1 -1
  20. package/dist/{chunk-N44BJZ4C.cjs → chunk-SPQFNIYJ.cjs} +9 -0
  21. package/dist/chunk-UCKN4BBY.cjs +24 -0
  22. package/dist/{chunk-4TRPKBKO.js → chunk-UF3BYUXY.js} +50 -23
  23. package/dist/chunk-VMY2S32H.js +2342 -0
  24. package/dist/{chunk-TIAEXJLI.cjs → chunk-WO2DW4AU.cjs} +7 -7
  25. package/dist/chunk-X47PBV4I.js +79 -0
  26. package/dist/{chunk-CNTSLED2.cjs → chunk-X6H5VBQ2.cjs} +75 -14
  27. package/dist/cli.cjs +4 -2
  28. package/dist/cli.js +4 -2
  29. package/dist/emit-order-notification-trigger-D2N3KFHL.cjs +16 -0
  30. package/dist/emit-order-notification-trigger-IVLWKKJL.js +3 -0
  31. package/dist/{event-order-defaults-DUGDVGJI.cjs → event-order-defaults-EMWBIGL3.cjs} +9 -9
  32. package/dist/{event-order-defaults-6E543227.js → event-order-defaults-SDRNAZHC.js} +1 -1
  33. package/dist/index.cjs +805 -1059
  34. package/dist/index.d.cts +827 -728
  35. package/dist/index.d.ts +827 -728
  36. package/dist/index.js +385 -724
  37. package/dist/migrations/1781220000000-AddWhatsappTriggerBindings.ts +23 -0
  38. package/dist/migrations/1781230000000-AddOrderNotificationTriggers.ts +46 -0
  39. package/dist/migrations/1781240000000-DropEventOrderNotificationColumns.ts +29 -0
  40. package/dist/migrations/1781250000000-RemoveOrderRefundedTrigger.ts +36 -0
  41. package/dist/{rbac-debug-db-D7ME7QUY.cjs → rbac-debug-db-HWP65A4O.cjs} +2 -2
  42. package/dist/{rbac-debug-db-MTCTVNNM.js → rbac-debug-db-QJH3AD34.js} +1 -1
  43. package/dist/whatsapp-trigger-dispatcher-ONHXI7UY.cjs +19 -0
  44. package/dist/whatsapp-trigger-dispatcher-PWFI4FKP.js +6 -0
  45. package/package.json +1 -1
  46. package/dist/chunk-46GKADYE.cjs +0 -84
  47. package/dist/chunk-7YIBMQDR.cjs +0 -86
  48. package/dist/chunk-J7XHLOLO.js +0 -830
  49. package/dist/chunk-JBRR5UYL.js +0 -87
  50. package/dist/chunk-JHF4YYRC.cjs +0 -188
  51. package/dist/chunk-PAMVINEX.cjs +0 -577
  52. package/dist/chunk-QM733NUK.js +0 -186
  53. package/dist/chunk-R73BKDRO.cjs +0 -90
  54. package/dist/chunk-TFUOHI37.cjs +0 -839
  55. package/dist/chunk-XDSNZUW7.js +0 -564
  56. package/dist/chunk-ZQ4X6OAU.js +0 -82
  57. package/dist/chunk-ZSVCP6N3.js +0 -83
  58. package/dist/email-FKR4FXFI.js +0 -5
  59. package/dist/email-KVKVPNCL.cjs +0 -58
  60. package/dist/event-order-notifications-5GSAOYVS.cjs +0 -27
  61. package/dist/event-order-notifications-IIIF23D5.js +0 -10
  62. package/dist/layout-36UFTHC5.cjs +0 -11
  63. package/dist/layout-AOBN26XG.js +0 -2
  64. package/dist/whatsapp-queue-3DXA4MXU.js +0 -2
  65. package/dist/whatsapp-queue-KG65MXD5.cjs +0 -15
@@ -84,12 +84,18 @@ async function resolveEventOrderTemplate(channel, getRow, eventOverride) {
84
84
  let subject = def.subject;
85
85
  let body = def.body;
86
86
  let externalTemplateRef = def.externalTemplateRef;
87
+ let name;
88
+ let language;
89
+ let paramOrder;
87
90
  let enabled = true;
88
91
  if (row) {
89
92
  enabled = row.enabled !== false;
90
93
  if (row.subject?.trim()) subject = row.subject.trim();
91
94
  if (row.body.trim()) body = row.body;
92
95
  if (row.externalTemplateRef?.trim()) externalTemplateRef = row.externalTemplateRef.trim();
96
+ name = row.name?.trim() || void 0;
97
+ language = row.language?.trim() || void 0;
98
+ paramOrder = row.paramOrder?.length ? row.paramOrder : void 0;
93
99
  }
94
100
  if (eventOverride) {
95
101
  if (eventOverride.subject?.trim()) subject = eventOverride.subject.trim();
@@ -102,6 +108,9 @@ async function resolveEventOrderTemplate(channel, getRow, eventOverride) {
102
108
  subject,
103
109
  body,
104
110
  externalTemplateRef: externalTemplateRef?.trim() || void 0,
111
+ name,
112
+ language,
113
+ paramOrder,
105
114
  enabled
106
115
  };
107
116
  }
@@ -17,6 +17,8 @@ var PERMISSION_ENTITY_INTERNAL_EXCLUDE = /* @__PURE__ */ new Set([
17
17
  "wishlists",
18
18
  "wishlist_items",
19
19
  "message_templates",
20
+ "order_notification_triggers",
21
+ "whatsapp_trigger_bindings",
20
22
  "vendor_users",
21
23
  "vendor_roles",
22
24
  "vendor_role_permissions"
@@ -69,7 +71,52 @@ function hasEntityPermission(record, entity, action) {
69
71
  }
70
72
  chunkUSNT2KNT_cjs.__name(hasEntityPermission, "hasEntityPermission");
71
73
 
74
+ // src/auth/role-helpers.ts
75
+ var SUPER_ADMIN_GROUP_ID = 1;
76
+ var VENDOR_ADMIN_GROUP_ID = 5;
77
+ function isSuperAdmin(user) {
78
+ if (!user) return false;
79
+ if (user.groupId === SUPER_ADMIN_GROUP_ID) return true;
80
+ if (user.isRBACAdmin === true) return true;
81
+ return isSuperAdminGroupName(user.groupName);
82
+ }
83
+ chunkUSNT2KNT_cjs.__name(isSuperAdmin, "isSuperAdmin");
84
+ function isVendorAdmin(user) {
85
+ if (!user?.email || isSuperAdmin(user)) return false;
86
+ if (user.groupId === VENDOR_ADMIN_GROUP_ID) return true;
87
+ if ((user.vendorIds?.length ?? 0) > 0) return true;
88
+ return isVendorGroupName(user.groupName);
89
+ }
90
+ chunkUSNT2KNT_cjs.__name(isVendorAdmin, "isVendorAdmin");
91
+
72
92
  // src/auth/vendor-scope.ts
93
+ var DEFAULT_VENDOR_SLUG = "default";
94
+ async function resolveDefaultVendorId(dataSource) {
95
+ try {
96
+ const rows = await dataSource.query(`SELECT id FROM vendors WHERE slug = $1 AND deleted = false LIMIT 1`, [
97
+ DEFAULT_VENDOR_SLUG
98
+ ]);
99
+ const id = rows[0]?.id;
100
+ return typeof id === "number" ? id : null;
101
+ } catch {
102
+ return null;
103
+ }
104
+ }
105
+ chunkUSNT2KNT_cjs.__name(resolveDefaultVendorId, "resolveDefaultVendorId");
106
+ async function resolveDisabledMultiVendorScope(dataSource) {
107
+ const defaultVendorId = await resolveDefaultVendorId(dataSource);
108
+ if (defaultVendorId == null) return {
109
+ type: "deny"
110
+ };
111
+ return {
112
+ type: "vendor",
113
+ vendorId: defaultVendorId,
114
+ vendorIds: [
115
+ defaultVendorId
116
+ ]
117
+ };
118
+ }
119
+ chunkUSNT2KNT_cjs.__name(resolveDisabledMultiVendorScope, "resolveDisabledMultiVendorScope");
73
120
  var VENDOR_SCOPED_STORE_ENTITIES = /* @__PURE__ */ new Set([
74
121
  "products",
75
122
  "collections",
@@ -166,24 +213,6 @@ function vendorPortalFlagsFromUser(input) {
166
213
  }
167
214
  chunkUSNT2KNT_cjs.__name(vendorPortalFlagsFromUser, "vendorPortalFlagsFromUser");
168
215
 
169
- // src/auth/role-helpers.ts
170
- var SUPER_ADMIN_GROUP_ID = 1;
171
- var VENDOR_ADMIN_GROUP_ID = 5;
172
- function isSuperAdmin(user) {
173
- if (!user) return false;
174
- if (user.groupId === SUPER_ADMIN_GROUP_ID) return true;
175
- if (user.isRBACAdmin === true) return true;
176
- return isSuperAdminGroupName(user.groupName);
177
- }
178
- chunkUSNT2KNT_cjs.__name(isSuperAdmin, "isSuperAdmin");
179
- function isVendorAdmin(user) {
180
- if (!user?.email || isSuperAdmin(user)) return false;
181
- if (user.groupId === VENDOR_ADMIN_GROUP_ID) return true;
182
- if ((user.vendorIds?.length ?? 0) > 0) return true;
183
- return isVendorGroupName(user.groupName);
184
- }
185
- chunkUSNT2KNT_cjs.__name(isVendorAdmin, "isVendorAdmin");
186
-
187
216
  // src/lib/vendor-role-defaults.ts
188
217
  var VENDOR_RBAC_ENTITIES = [
189
218
  ...VENDOR_STORE_RBAC_ENTITIES,
@@ -351,9 +380,7 @@ var VENDOR_VIEWER_ROLE_NAME = "Viewer";
351
380
  var LOG_PREFIX = "[cms-rbac]";
352
381
  function isRbacDebugEnabled() {
353
382
  const v = process.env.CMS_RBAC_DEBUG?.trim().toLowerCase();
354
- if (v === "1" || v === "true" || v === "yes") return true;
355
- if (v === "0" || v === "false" || v === "no") return false;
356
- return process.env.NODE_ENV === "development";
383
+ return v === "1" || v === "true" || v === "yes";
357
384
  }
358
385
  chunkUSNT2KNT_cjs.__name(isRbacDebugEnabled, "isRbacDebugEnabled");
359
386
  function logRbac(message, data) {
@@ -567,7 +594,7 @@ async function logEntityAccessDecision(dataSource, context, user, entity, action
567
594
  const id = Number(user.id);
568
595
  if (Number.isFinite(id)) {
569
596
  try {
570
- const { loadDbPermissionsForUser } = await import('./rbac-debug-db-D7ME7QUY.cjs');
597
+ const { loadDbPermissionsForUser } = await import('./rbac-debug-db-HWP65A4O.cjs');
571
598
  dbPermissions = await loadDbPermissionsForUser(dataSource, id);
572
599
  } catch (e) {
573
600
  dbPermissions = {
@@ -615,6 +642,7 @@ exports.isVendorStaff = isVendorStaff;
615
642
  exports.logEntityAccessDecision = logEntityAccessDecision;
616
643
  exports.logRbac = logRbac;
617
644
  exports.permissionRowsToRecord = permissionRowsToRecord;
645
+ exports.resolveDisabledMultiVendorScope = resolveDisabledMultiVendorScope;
618
646
  exports.resolveVendorScopeFromSessionUser = resolveVendorScopeFromSessionUser;
619
647
  exports.summarizeEntityPerms = summarizeEntityPerms;
620
648
  exports.vendorPortalFlagsFromUser = vendorPortalFlagsFromUser;
@@ -1,4 +1,4 @@
1
- import { explainSessionEntityAccess, isVendorPortalUser, logRbac } from './chunk-4TRPKBKO.js';
1
+ import { explainSessionEntityAccess, isVendorPortalUser, logRbac } from './chunk-UF3BYUXY.js';
2
2
  import { __name } from './chunk-SHUYVCID.js';
3
3
 
4
4
  // src/auth/helpers.ts
@@ -86,12 +86,18 @@ async function resolveEventOrderTemplate(channel, getRow, eventOverride) {
86
86
  let subject = def.subject;
87
87
  let body = def.body;
88
88
  let externalTemplateRef = def.externalTemplateRef;
89
+ let name;
90
+ let language;
91
+ let paramOrder;
89
92
  let enabled = true;
90
93
  if (row) {
91
94
  enabled = row.enabled !== false;
92
95
  if (row.subject?.trim()) subject = row.subject.trim();
93
96
  if (row.body.trim()) body = row.body;
94
97
  if (row.externalTemplateRef?.trim()) externalTemplateRef = row.externalTemplateRef.trim();
98
+ name = row.name?.trim() || void 0;
99
+ language = row.language?.trim() || void 0;
100
+ paramOrder = row.paramOrder?.length ? row.paramOrder : void 0;
95
101
  }
96
102
  if (eventOverride) {
97
103
  if (eventOverride.subject?.trim()) subject = eventOverride.subject.trim();
@@ -104,6 +110,9 @@ async function resolveEventOrderTemplate(channel, getRow, eventOverride) {
104
110
  subject,
105
111
  body,
106
112
  externalTemplateRef: externalTemplateRef?.trim() || void 0,
113
+ name,
114
+ language,
115
+ paramOrder,
107
116
  enabled
108
117
  };
109
118
  }
@@ -0,0 +1,24 @@
1
+ 'use strict';
2
+
3
+ var chunkUSNT2KNT_cjs = require('./chunk-USNT2KNT.cjs');
4
+ var events = require('events');
5
+
6
+ var KNOWN_NOTIFICATION_TRIGGERS = {
7
+ ORDER_PLACED: "order_placed",
8
+ ORDER_CANCELLED: "order_cancelled"
9
+ };
10
+ var NotificationTriggerEmitter = class NotificationTriggerEmitter2 extends events.EventEmitter {
11
+ static {
12
+ chunkUSNT2KNT_cjs.__name(this, "NotificationTriggerEmitter");
13
+ }
14
+ emitTrigger(triggerKey, payload) {
15
+ this.emit("__any__", triggerKey, payload);
16
+ }
17
+ onAnyTrigger(listener) {
18
+ this.on("__any__", listener);
19
+ }
20
+ };
21
+ var notificationTriggerEmitter = new NotificationTriggerEmitter();
22
+
23
+ exports.KNOWN_NOTIFICATION_TRIGGERS = KNOWN_NOTIFICATION_TRIGGERS;
24
+ exports.notificationTriggerEmitter = notificationTriggerEmitter;
@@ -15,6 +15,8 @@ var PERMISSION_ENTITY_INTERNAL_EXCLUDE = /* @__PURE__ */ new Set([
15
15
  "wishlists",
16
16
  "wishlist_items",
17
17
  "message_templates",
18
+ "order_notification_triggers",
19
+ "whatsapp_trigger_bindings",
18
20
  "vendor_users",
19
21
  "vendor_roles",
20
22
  "vendor_role_permissions"
@@ -67,7 +69,52 @@ function hasEntityPermission(record, entity, action) {
67
69
  }
68
70
  __name(hasEntityPermission, "hasEntityPermission");
69
71
 
72
+ // src/auth/role-helpers.ts
73
+ var SUPER_ADMIN_GROUP_ID = 1;
74
+ var VENDOR_ADMIN_GROUP_ID = 5;
75
+ function isSuperAdmin(user) {
76
+ if (!user) return false;
77
+ if (user.groupId === SUPER_ADMIN_GROUP_ID) return true;
78
+ if (user.isRBACAdmin === true) return true;
79
+ return isSuperAdminGroupName(user.groupName);
80
+ }
81
+ __name(isSuperAdmin, "isSuperAdmin");
82
+ function isVendorAdmin(user) {
83
+ if (!user?.email || isSuperAdmin(user)) return false;
84
+ if (user.groupId === VENDOR_ADMIN_GROUP_ID) return true;
85
+ if ((user.vendorIds?.length ?? 0) > 0) return true;
86
+ return isVendorGroupName(user.groupName);
87
+ }
88
+ __name(isVendorAdmin, "isVendorAdmin");
89
+
70
90
  // src/auth/vendor-scope.ts
91
+ var DEFAULT_VENDOR_SLUG = "default";
92
+ async function resolveDefaultVendorId(dataSource) {
93
+ try {
94
+ const rows = await dataSource.query(`SELECT id FROM vendors WHERE slug = $1 AND deleted = false LIMIT 1`, [
95
+ DEFAULT_VENDOR_SLUG
96
+ ]);
97
+ const id = rows[0]?.id;
98
+ return typeof id === "number" ? id : null;
99
+ } catch {
100
+ return null;
101
+ }
102
+ }
103
+ __name(resolveDefaultVendorId, "resolveDefaultVendorId");
104
+ async function resolveDisabledMultiVendorScope(dataSource) {
105
+ const defaultVendorId = await resolveDefaultVendorId(dataSource);
106
+ if (defaultVendorId == null) return {
107
+ type: "deny"
108
+ };
109
+ return {
110
+ type: "vendor",
111
+ vendorId: defaultVendorId,
112
+ vendorIds: [
113
+ defaultVendorId
114
+ ]
115
+ };
116
+ }
117
+ __name(resolveDisabledMultiVendorScope, "resolveDisabledMultiVendorScope");
71
118
  var VENDOR_SCOPED_STORE_ENTITIES = /* @__PURE__ */ new Set([
72
119
  "products",
73
120
  "collections",
@@ -164,24 +211,6 @@ function vendorPortalFlagsFromUser(input) {
164
211
  }
165
212
  __name(vendorPortalFlagsFromUser, "vendorPortalFlagsFromUser");
166
213
 
167
- // src/auth/role-helpers.ts
168
- var SUPER_ADMIN_GROUP_ID = 1;
169
- var VENDOR_ADMIN_GROUP_ID = 5;
170
- function isSuperAdmin(user) {
171
- if (!user) return false;
172
- if (user.groupId === SUPER_ADMIN_GROUP_ID) return true;
173
- if (user.isRBACAdmin === true) return true;
174
- return isSuperAdminGroupName(user.groupName);
175
- }
176
- __name(isSuperAdmin, "isSuperAdmin");
177
- function isVendorAdmin(user) {
178
- if (!user?.email || isSuperAdmin(user)) return false;
179
- if (user.groupId === VENDOR_ADMIN_GROUP_ID) return true;
180
- if ((user.vendorIds?.length ?? 0) > 0) return true;
181
- return isVendorGroupName(user.groupName);
182
- }
183
- __name(isVendorAdmin, "isVendorAdmin");
184
-
185
214
  // src/lib/vendor-role-defaults.ts
186
215
  var VENDOR_RBAC_ENTITIES = [
187
216
  ...VENDOR_STORE_RBAC_ENTITIES,
@@ -349,9 +378,7 @@ var VENDOR_VIEWER_ROLE_NAME = "Viewer";
349
378
  var LOG_PREFIX = "[cms-rbac]";
350
379
  function isRbacDebugEnabled() {
351
380
  const v = process.env.CMS_RBAC_DEBUG?.trim().toLowerCase();
352
- if (v === "1" || v === "true" || v === "yes") return true;
353
- if (v === "0" || v === "false" || v === "no") return false;
354
- return process.env.NODE_ENV === "development";
381
+ return v === "1" || v === "true" || v === "yes";
355
382
  }
356
383
  __name(isRbacDebugEnabled, "isRbacDebugEnabled");
357
384
  function logRbac(message, data) {
@@ -565,7 +592,7 @@ async function logEntityAccessDecision(dataSource, context, user, entity, action
565
592
  const id = Number(user.id);
566
593
  if (Number.isFinite(id)) {
567
594
  try {
568
- const { loadDbPermissionsForUser } = await import('./rbac-debug-db-MTCTVNNM.js');
595
+ const { loadDbPermissionsForUser } = await import('./rbac-debug-db-QJH3AD34.js');
569
596
  dbPermissions = await loadDbPermissionsForUser(dataSource, id);
570
597
  } catch (e) {
571
598
  dbPermissions = {
@@ -586,4 +613,4 @@ async function logEntityAccessDecision(dataSource, context, user, entity, action
586
613
  }
587
614
  __name(logEntityAccessDecision, "logEntityAccessDecision");
588
615
 
589
- export { ADMIN_GROUP_NAME, DEFAULT_VENDOR_ROLE_DEFS, SUPER_ADMIN_GROUP_ID, VENDOR_ADMIN_GROUP_ID, VENDOR_OWNER_GROUP_NAME, VENDOR_RBAC_ENTITIES, VENDOR_SCOPED_STORE_ENTITIES, VENDOR_STORE_RBAC_ENTITIES, VENDOR_VIEWER_ROLE_NAME, canManageVendorRoles, canManageVendorTeam, canOnboardVendors, explainSessionEntityAccess, getPermissionableEntityKeys, hasEntityPermission, isPlatformAdministrator, isRbacDebugEnabled, isSuperAdmin, isSuperAdminGroupName, isVendorAdmin, isVendorGroupName, isVendorOwner, isVendorPortalUser, isVendorStaff, logEntityAccessDecision, logRbac, permissionRowsToRecord, resolveVendorScopeFromSessionUser, summarizeEntityPerms, vendorPortalFlagsFromUser };
616
+ export { ADMIN_GROUP_NAME, DEFAULT_VENDOR_ROLE_DEFS, SUPER_ADMIN_GROUP_ID, VENDOR_ADMIN_GROUP_ID, VENDOR_OWNER_GROUP_NAME, VENDOR_RBAC_ENTITIES, VENDOR_SCOPED_STORE_ENTITIES, VENDOR_STORE_RBAC_ENTITIES, VENDOR_VIEWER_ROLE_NAME, canManageVendorRoles, canManageVendorTeam, canOnboardVendors, explainSessionEntityAccess, getPermissionableEntityKeys, hasEntityPermission, isPlatformAdministrator, isRbacDebugEnabled, isSuperAdmin, isSuperAdminGroupName, isVendorAdmin, isVendorGroupName, isVendorOwner, isVendorPortalUser, isVendorStaff, logEntityAccessDecision, logRbac, permissionRowsToRecord, resolveDisabledMultiVendorScope, resolveVendorScopeFromSessionUser, summarizeEntityPerms, vendorPortalFlagsFromUser };