@infuro/cms-core 1.0.33 → 1.0.35

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 (164) hide show
  1. package/README.md +22 -6
  2. package/dist/OrderTrackPage-W3J6WIG2.js +426 -0
  3. package/dist/OrderTrackPage-Z6FCJQYY.cjs +428 -0
  4. package/dist/admin.cjs +34072 -20487
  5. package/dist/admin.d.cts +191 -9
  6. package/dist/admin.d.ts +191 -9
  7. package/dist/admin.js +33913 -20423
  8. package/dist/api.cjs +123 -16508
  9. package/dist/api.d.cts +633 -3
  10. package/dist/api.d.ts +633 -3
  11. package/dist/api.js +14 -16519
  12. package/dist/auth.cjs +196 -955
  13. package/dist/auth.d.cts +201 -42
  14. package/dist/auth.d.ts +201 -42
  15. package/dist/auth.js +4 -888
  16. package/dist/chunk-2XE4X74C.js +29602 -0
  17. package/dist/chunk-3DZRIZOD.cjs +52 -0
  18. package/dist/chunk-3KPNTQBV.cjs +620 -0
  19. package/dist/chunk-46GKADYE.cjs +84 -0
  20. package/dist/chunk-4TRPKBKO.js +589 -0
  21. package/dist/chunk-5ELSW2UP.js +150 -0
  22. package/dist/chunk-6KPQWRFW.js +171 -0
  23. package/dist/chunk-7NMT3GBR.cjs +29 -0
  24. package/dist/chunk-7YIBMQDR.cjs +86 -0
  25. package/dist/chunk-BGJAV67S.cjs +29710 -0
  26. package/dist/chunk-CNTSLED2.cjs +559 -0
  27. package/dist/chunk-CRFV5WJK.js +16 -0
  28. package/dist/chunk-D5FBNKQM.cjs +104 -0
  29. package/dist/chunk-EF2JBPDM.js +114 -0
  30. package/dist/chunk-EQPITOP6.js +543 -0
  31. package/dist/chunk-GO7PPYNU.js +76 -0
  32. package/dist/chunk-HF3L2GIT.cjs +194 -0
  33. package/dist/chunk-J7XHLOLO.js +830 -0
  34. package/dist/chunk-JBRR5UYL.js +87 -0
  35. package/dist/chunk-JC6DLWTE.js +21 -0
  36. package/dist/chunk-JHF4YYRC.cjs +188 -0
  37. package/dist/chunk-JXF23MPG.js +25 -0
  38. package/dist/chunk-MQBT33IV.js +48 -0
  39. package/dist/chunk-N44BJZ4C.cjs +123 -0
  40. package/dist/chunk-OOTLNH63.cjs +18 -0
  41. package/dist/chunk-PAMVINEX.cjs +577 -0
  42. package/dist/chunk-PNOKNSG2.cjs +222 -0
  43. package/dist/chunk-QM733NUK.js +186 -0
  44. package/dist/chunk-R73BKDRO.cjs +90 -0
  45. package/dist/chunk-SHUYVCID.js +4 -0
  46. package/dist/chunk-SYBOCAWB.js +97 -0
  47. package/dist/chunk-TDV6EJHV.js +192 -0
  48. package/dist/chunk-TFUOHI37.cjs +839 -0
  49. package/dist/chunk-TIAEXJLI.cjs +182 -0
  50. package/dist/chunk-UPLVMVRX.cjs +23 -0
  51. package/dist/chunk-USNT2KNT.cjs +6 -0
  52. package/dist/chunk-WEMDMVHQ.js +216 -0
  53. package/dist/chunk-XDSNZUW7.js +564 -0
  54. package/dist/chunk-XQ3QUHWR.cjs +83 -0
  55. package/dist/chunk-XW5ATPRW.cjs +155 -0
  56. package/dist/chunk-ZQ4X6OAU.js +82 -0
  57. package/dist/chunk-ZSVCP6N3.js +83 -0
  58. package/dist/cli.cjs +142 -84
  59. package/dist/cli.js +101 -27
  60. package/dist/email-FKR4FXFI.js +5 -0
  61. package/dist/email-KVKVPNCL.cjs +58 -0
  62. package/dist/email-queue-CGZBVVAS.js +2 -0
  63. package/dist/email-queue-TPZWLTIV.cjs +23 -0
  64. package/dist/erp-config-enabled-CUMQ6N2V.cjs +11 -0
  65. package/dist/erp-config-enabled-T37X7T34.js +2 -0
  66. package/dist/erp-order-invoice-3YISSOWW.js +3 -0
  67. package/dist/erp-order-invoice-ZR5F2KTA.cjs +12 -0
  68. package/dist/event-order-defaults-6E543227.js +2 -0
  69. package/dist/event-order-defaults-DUGDVGJI.cjs +39 -0
  70. package/dist/event-order-notifications-5GSAOYVS.cjs +27 -0
  71. package/dist/event-order-notifications-IIIF23D5.js +10 -0
  72. package/dist/hooks.cjs +259 -132
  73. package/dist/hooks.d.cts +42 -1
  74. package/dist/hooks.d.ts +42 -1
  75. package/dist/hooks.js +234 -91
  76. package/dist/index.cjs +3884 -21070
  77. package/dist/index.d.cts +2255 -749
  78. package/dist/index.d.ts +2255 -749
  79. package/dist/index.js +1925 -19891
  80. package/dist/interpolate-WAKPN56R.cjs +11 -0
  81. package/dist/interpolate-WDUWDF3I.js +2 -0
  82. package/dist/layout-36UFTHC5.cjs +11 -0
  83. package/dist/layout-AOBN26XG.js +2 -0
  84. package/dist/migrations/1778660000004-CreateCustomerAndCustomerContacts.ts +99 -0
  85. package/dist/migrations/1778660000005-AddCustomerIdToVendorCustomers.ts +39 -0
  86. package/dist/migrations/1778660000006-UpdateVendorCustomersContactNullable.ts +36 -0
  87. package/dist/migrations/1778660000007-VendorOwnerCustomerContactsPermission.ts +39 -0
  88. package/dist/migrations/1779300000000-VendorOwnerContactsPermission.ts +39 -0
  89. package/dist/migrations/1779400000000-AddCustomerContactIdToOrders.ts +33 -0
  90. package/dist/migrations/1779400000000-ConvertStatusToEnum.ts +142 -0
  91. package/dist/migrations/1779400000000-SeedDefaultCurrencies.ts +33 -0
  92. package/dist/migrations/1779500000000-VendorRolesAndPermissions.ts +102 -0
  93. package/dist/migrations/1779600000000-VendorRegistrationProfile.ts +52 -0
  94. package/dist/migrations/1779700000000-CollectionIsCatalog.ts +22 -0
  95. package/dist/migrations/1779710000000-CollectionPlatformCatalog.ts +60 -0
  96. package/dist/migrations/1779720000000-ProductCategoryPlatformCatalog.ts +157 -0
  97. package/dist/migrations/1779800000000-EventsAndEventProducts.ts +173 -0
  98. package/dist/migrations/1779810000000-BackfillVendorRoleEventsPermissions.ts +38 -0
  99. package/dist/migrations/1779820000000-FixProductsCategoryForeignKey.ts +70 -0
  100. package/dist/migrations/1779830000000-ProductTitleColumn.ts +32 -0
  101. package/dist/migrations/1779840000000-EventAboutAndVisibilityFields.ts +34 -0
  102. package/dist/migrations/1779850000000-EventCityCountrySplit.ts +43 -0
  103. package/dist/migrations/1779860000000-CreateCombos.ts +140 -0
  104. package/dist/migrations/1780100000000-OrderAttendeesEventId.ts +55 -0
  105. package/dist/migrations/1780110000000-EventContactFormId.ts +49 -0
  106. package/dist/migrations/1780130000000-ProductVariants.ts +54 -0
  107. package/dist/migrations/1780140000000-EventManagementEnhancements.ts +44 -0
  108. package/dist/migrations/1780160000000-EventRegistrationGstProductContactForm.ts +79 -0
  109. package/dist/migrations/1780170000000-ComboCurrencyPrices.ts +20 -0
  110. package/dist/migrations/1781110000000-VendorOwnerCombosPermission.ts +38 -0
  111. package/dist/migrations/1781120000000-RefundPoliciesAndRequests.ts +225 -0
  112. package/dist/migrations/1781130000000-CreateAttendees.ts +44 -0
  113. package/dist/migrations/1781140000000-EventOrderNotifications.ts +29 -0
  114. package/dist/migrations/1781150000000-EventNamedLists.ts +28 -0
  115. package/dist/migrations/1781160000000-RefundPolicyEventTiers.ts +27 -0
  116. package/dist/migrations/1781170000000-EventRefundPolicy.ts +42 -0
  117. package/dist/migrations/1781180000000-RemoveCartItemsUniqueConstraint.ts +15 -0
  118. package/dist/migrations/1781190000000-RenameProductTaxesToProductConfig.ts +84 -0
  119. package/dist/migrations/1781200000000-VendorOwnerProductConfigPermissions.ts +51 -0
  120. package/dist/migrations/1781210000000-VendorRoleProductConfigPermissions.ts +46 -0
  121. package/dist/migrations/helpers/vendor-role-seed.ts +243 -0
  122. package/dist/paid-order-erp-3USEG6WL.js +3 -0
  123. package/dist/paid-order-erp-FSQ3GSXE.cjs +12 -0
  124. package/dist/pg-boss-service-4XF2TQ2E.js +2 -0
  125. package/dist/pg-boss-service-L6MTF4EQ.cjs +15 -0
  126. package/dist/razorpay-KLO2KNCB.js +49 -0
  127. package/dist/razorpay-U23LGY72.cjs +56 -0
  128. package/dist/rbac-debug-db-D7ME7QUY.cjs +35 -0
  129. package/dist/rbac-debug-db-MTCTVNNM.js +33 -0
  130. package/dist/sms-defaults-2NL24H57.js +2 -0
  131. package/dist/sms-defaults-KCOPKQBA.cjs +19 -0
  132. package/dist/stripe-4FD27QVJ.js +51 -0
  133. package/dist/stripe-VU6OEG2D.cjs +57 -0
  134. package/dist/theme.cjs +31 -59
  135. package/dist/theme.d.cts +78 -3
  136. package/dist/theme.d.ts +78 -3
  137. package/dist/theme.js +23 -20
  138. package/dist/vendor-invite-status-77O7ZQ3U.cjs +19 -0
  139. package/dist/vendor-invite-status-PWJ3DE76.js +2 -0
  140. package/dist/whatsapp-queue-3DXA4MXU.js +2 -0
  141. package/dist/whatsapp-queue-KG65MXD5.cjs +15 -0
  142. package/package.json +147 -141
  143. package/dist/admin.cjs.map +0 -1
  144. package/dist/admin.js.map +0 -1
  145. package/dist/api.cjs.map +0 -1
  146. package/dist/api.js.map +0 -1
  147. package/dist/auth.cjs.map +0 -1
  148. package/dist/auth.js.map +0 -1
  149. package/dist/cli.cjs.map +0 -1
  150. package/dist/cli.js.map +0 -1
  151. package/dist/config-DJ5CmQvS.d.cts +0 -8
  152. package/dist/config-DJ5CmQvS.d.ts +0 -8
  153. package/dist/hooks.cjs.map +0 -1
  154. package/dist/hooks.js.map +0 -1
  155. package/dist/index-DWd5Gjc4.d.ts +0 -582
  156. package/dist/index-rZTnpK7y.d.cts +0 -582
  157. package/dist/index.cjs.map +0 -1
  158. package/dist/index.js.map +0 -1
  159. package/dist/theme.cjs.map +0 -1
  160. package/dist/theme.js.map +0 -1
  161. package/dist/types-DCVaXlPV.d.cts +0 -78
  162. package/dist/types-DCVaXlPV.d.ts +0 -78
  163. package/dist/vendor-scope-DTYhJk_I.d.cts +0 -129
  164. package/dist/vendor-scope-DTYhJk_I.d.ts +0 -129
@@ -0,0 +1,76 @@
1
+ import { __name } from './chunk-SHUYVCID.js';
2
+ import PgBoss from 'pg-boss';
3
+
4
+ var JOB_RUNNER_QUEUE = "job-runner";
5
+ var PgBossService = class {
6
+ static {
7
+ __name(this, "PgBossService");
8
+ }
9
+ boss;
10
+ started = false;
11
+ workRegistered = /* @__PURE__ */ new Set();
12
+ constructor(connectionString, schema) {
13
+ this.boss = new PgBoss({
14
+ connectionString,
15
+ ...schema?.trim() ? {
16
+ schema: schema.trim()
17
+ } : {},
18
+ schedule: true
19
+ });
20
+ this.boss.on("error", (err) => {
21
+ console.error("[pg-boss]", err);
22
+ });
23
+ }
24
+ async start() {
25
+ if (this.started) return;
26
+ await this.boss.start();
27
+ await this.ensureQueue(JOB_RUNNER_QUEUE);
28
+ this.started = true;
29
+ }
30
+ async stop() {
31
+ if (!this.started) return;
32
+ await this.boss.stop({
33
+ graceful: true,
34
+ timeout: 1e4
35
+ });
36
+ this.started = false;
37
+ this.workRegistered.clear();
38
+ }
39
+ get raw() {
40
+ return this.boss;
41
+ }
42
+ async ensureQueue(name) {
43
+ const existing = await this.boss.getQueue(name);
44
+ if (!existing) {
45
+ await this.boss.createQueue(name);
46
+ }
47
+ }
48
+ async send(queue, data) {
49
+ await this.ensureQueue(queue);
50
+ return this.boss.send(queue, data, {
51
+ retryLimit: 2
52
+ });
53
+ }
54
+ async schedule(name, cron, data, options) {
55
+ await this.ensureQueue(name);
56
+ await this.boss.schedule(name, cron, data, options);
57
+ }
58
+ async unschedule(name) {
59
+ try {
60
+ await this.boss.unschedule(name);
61
+ } catch {
62
+ }
63
+ }
64
+ async registerWork(queue, handler) {
65
+ if (this.workRegistered.has(queue)) return;
66
+ await this.ensureQueue(queue);
67
+ await this.boss.work(queue, async (jobs) => {
68
+ for (const job of jobs) {
69
+ await handler(job.data);
70
+ }
71
+ });
72
+ this.workRegistered.add(queue);
73
+ }
74
+ };
75
+
76
+ export { JOB_RUNNER_QUEUE, PgBossService };
@@ -0,0 +1,194 @@
1
+ 'use strict';
2
+
3
+ var chunkD5FBNKQM_cjs = require('./chunk-D5FBNKQM.cjs');
4
+ var chunkUSNT2KNT_cjs = require('./chunk-USNT2KNT.cjs');
5
+
6
+ // src/plugins/erp/paid-order-erp.ts
7
+ function roundMoney(major) {
8
+ return Math.round(major * 100) / 100;
9
+ }
10
+ chunkUSNT2KNT_cjs.__name(roundMoney, "roundMoney");
11
+ function addressToWebhookDto(a) {
12
+ if (!a) return {};
13
+ return {
14
+ line1: a.line1 ?? "",
15
+ line2: a.line2 ?? "",
16
+ city: a.city ?? "",
17
+ state: a.state ?? "",
18
+ postalCode: a.postalCode ?? "",
19
+ country: a.country ?? ""
20
+ };
21
+ }
22
+ chunkUSNT2KNT_cjs.__name(addressToWebhookDto, "addressToWebhookDto");
23
+ function orderStatusLabel(status) {
24
+ const s = (status || "").toLowerCase();
25
+ if (s === "confirmed") return "Confirmed";
26
+ if (s === "pending") return "Pending";
27
+ if (!status) return "Pending";
28
+ return status.charAt(0).toUpperCase() + status.slice(1);
29
+ }
30
+ chunkUSNT2KNT_cjs.__name(orderStatusLabel, "orderStatusLabel");
31
+ function paymentRowToWebhookDto(p, amountMajorOverride) {
32
+ const currency = String(p.currency || "INR");
33
+ const amountMajor = amountMajorOverride != null && Number.isFinite(amountMajorOverride) ? amountMajorOverride : Number(p.amount);
34
+ const meta = {
35
+ ...p.metadata || {}
36
+ };
37
+ delete meta.amount;
38
+ delete meta.currency;
39
+ return {
40
+ id: String(p.externalReference || `payment_${p.id}`),
41
+ amount: roundMoney(amountMajor),
42
+ currency_code: currency,
43
+ captured_at: p.paidAt ? new Date(p.paidAt).toISOString() : (/* @__PURE__ */ new Date()).toISOString(),
44
+ provider_id: String(p.method || "unknown"),
45
+ data: {
46
+ status: "captured",
47
+ ...meta
48
+ }
49
+ };
50
+ }
51
+ chunkUSNT2KNT_cjs.__name(paymentRowToWebhookDto, "paymentRowToWebhookDto");
52
+ async function queueErpPaidOrderForOrderId(cms, dataSource, entityMap, orderId) {
53
+ try {
54
+ const configRepo = dataSource.getRepository(entityMap.configs);
55
+ const cfgRows = await configRepo.find({
56
+ where: {
57
+ settings: "erp",
58
+ deleted: false
59
+ }
60
+ });
61
+ for (const row of cfgRows) {
62
+ const r = row;
63
+ if (r.key === "enabled" && r.value === "false") {
64
+ chunkD5FBNKQM_cjs.logErp("paid-order:skip", {
65
+ orderId,
66
+ reason: "erp_config_disabled"
67
+ });
68
+ return;
69
+ }
70
+ }
71
+ if (!cms.getPlugin("erp")) {
72
+ chunkD5FBNKQM_cjs.logErp("paid-order:skip", {
73
+ orderId,
74
+ reason: "erp_plugin_missing"
75
+ });
76
+ return;
77
+ }
78
+ const orderRepo = dataSource.getRepository(entityMap.orders);
79
+ const ord = await orderRepo.findOne({
80
+ where: {
81
+ id: orderId
82
+ },
83
+ relations: [
84
+ "items",
85
+ "items.product",
86
+ "contact",
87
+ "billingAddress",
88
+ "shippingAddress",
89
+ "payments"
90
+ ]
91
+ });
92
+ if (!ord) {
93
+ chunkD5FBNKQM_cjs.logErp("paid-order:skip", {
94
+ orderId,
95
+ reason: "order_not_found"
96
+ });
97
+ return;
98
+ }
99
+ const o = ord;
100
+ const okKind = o.orderKind === void 0 || o.orderKind === null || o.orderKind === "sale";
101
+ if (!okKind) {
102
+ chunkD5FBNKQM_cjs.logErp("paid-order:skip", {
103
+ orderId,
104
+ reason: "order_kind_not_sale",
105
+ orderKind: o.orderKind
106
+ });
107
+ return;
108
+ }
109
+ const rawPayments = o.payments ?? [];
110
+ const completedPayments = rawPayments.filter((pay) => pay.status === "completed" && pay.deleted !== true);
111
+ if (!completedPayments.length) {
112
+ chunkD5FBNKQM_cjs.logErp("paid-order:skip", {
113
+ orderId,
114
+ reason: "no_completed_payments"
115
+ });
116
+ return;
117
+ }
118
+ const rawItems = o.items ?? [];
119
+ const lines = rawItems.filter((it) => it.product).map((it) => {
120
+ const p = it.product;
121
+ const sku = p.sku || `SKU-${p.id}`;
122
+ const itemType = typeof it.productType === "string" && it.productType.trim() ? String(it.productType).trim() : p.type === "service" ? "service" : "product";
123
+ return {
124
+ sku,
125
+ quantity: Number(it.quantity) || 1,
126
+ unitPrice: Number(it.unitPrice),
127
+ title: p.name || sku,
128
+ discount: 0,
129
+ tax: Number(it.tax) || 0,
130
+ uom: (typeof it.uom === "string" && it.uom.trim() ? it.uom : p.uom) || void 0,
131
+ tax_code: typeof it.taxCode === "string" && it.taxCode.trim() ? String(it.taxCode).trim() : void 0,
132
+ hsn_number: (typeof it.hsn === "string" && it.hsn.trim() ? it.hsn : p.hsn) || void 0,
133
+ type: itemType
134
+ };
135
+ });
136
+ if (!lines.length) {
137
+ chunkD5FBNKQM_cjs.logErp("paid-order:skip", {
138
+ orderId,
139
+ reason: "no_line_items_with_product"
140
+ });
141
+ return;
142
+ }
143
+ const contact = o.contact;
144
+ const orderTotalMajor = Number(o.total);
145
+ const paymentDtos = completedPayments.length === 1 && Number.isFinite(orderTotalMajor) ? [
146
+ paymentRowToWebhookDto(completedPayments[0], orderTotalMajor)
147
+ ] : completedPayments.map((pay) => paymentRowToWebhookDto(pay));
148
+ const baseMeta = o.metadata && typeof o.metadata === "object" && !Array.isArray(o.metadata) ? {
149
+ ...o.metadata
150
+ } : {};
151
+ const orderDto = {
152
+ platformType: "website",
153
+ platformOrderId: String(o.orderNumber),
154
+ platformOrderNumber: String(o.orderNumber),
155
+ order_date: o.createdAt ? new Date(o.createdAt).toISOString() : void 0,
156
+ status: orderStatusLabel(o.status),
157
+ customer: {
158
+ name: contact?.name || "",
159
+ email: contact?.email || "",
160
+ phone: contact?.phone || ""
161
+ },
162
+ shippingAddress: addressToWebhookDto(o.shippingAddress),
163
+ billingAddress: addressToWebhookDto(o.billingAddress),
164
+ items: lines,
165
+ payments: paymentDtos,
166
+ metadata: {
167
+ ...baseMeta,
168
+ source: "storefront"
169
+ }
170
+ };
171
+ chunkD5FBNKQM_cjs.logErp("paid-order:payload_built", {
172
+ orderId,
173
+ platformOrderId: orderDto.platformOrderId,
174
+ status: orderDto.status,
175
+ itemCount: lines.length,
176
+ skus: lines.map((l) => l.sku),
177
+ paymentCount: paymentDtos.length,
178
+ paymentIds: paymentDtos.map((p) => p.id),
179
+ total: orderTotalMajor
180
+ });
181
+ await chunkD5FBNKQM_cjs.queueErp(cms, {
182
+ kind: "order",
183
+ order: orderDto
184
+ });
185
+ } catch (e) {
186
+ chunkD5FBNKQM_cjs.errorErp("paid-order:enqueue_failed", {
187
+ orderId,
188
+ message: e instanceof Error ? e.message : String(e)
189
+ });
190
+ }
191
+ }
192
+ chunkUSNT2KNT_cjs.__name(queueErpPaidOrderForOrderId, "queueErpPaidOrderForOrderId");
193
+
194
+ exports.queueErpPaidOrderForOrderId = queueErpPaidOrderForOrderId;