@infuro/cms-core 1.0.34 → 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.
- package/README.md +13 -0
- package/dist/OrderTrackPage-W3J6WIG2.js +426 -0
- package/dist/OrderTrackPage-Z6FCJQYY.cjs +428 -0
- package/dist/admin.cjs +35254 -21613
- package/dist/admin.d.cts +192 -9
- package/dist/admin.d.ts +192 -9
- package/dist/admin.js +34301 -20755
- package/dist/api.cjs +137 -17531
- package/dist/api.d.cts +633 -3
- package/dist/api.d.ts +633 -3
- package/dist/api.js +15 -17528
- package/dist/auth.cjs +192 -1034
- package/dist/auth.d.cts +197 -54
- package/dist/auth.d.ts +197 -54
- package/dist/auth.js +4 -966
- package/dist/chunk-2AEVFOQP.cjs +30436 -0
- package/dist/chunk-3DZRIZOD.cjs +52 -0
- package/dist/chunk-5ELSW2UP.js +150 -0
- package/dist/chunk-7NMT3GBR.cjs +29 -0
- package/dist/chunk-COBORIJH.cjs +2373 -0
- package/dist/chunk-CRFV5WJK.js +16 -0
- package/dist/chunk-D5FBNKQM.cjs +104 -0
- package/dist/chunk-FG6I64HP.js +604 -0
- package/dist/chunk-GO7PPYNU.js +76 -0
- package/dist/chunk-HCIRL37O.js +21 -0
- package/dist/chunk-HF3L2GIT.cjs +194 -0
- package/dist/chunk-HT5DI3XW.cjs +82 -0
- package/dist/chunk-JC6DLWTE.js +21 -0
- package/dist/chunk-JS2W7XZ4.js +30312 -0
- package/dist/chunk-JXF23MPG.js +25 -0
- package/dist/chunk-KFFB6EMZ.js +123 -0
- package/dist/chunk-KPKFNLQQ.cjs +648 -0
- package/dist/chunk-LI2IXVAY.js +171 -0
- package/dist/chunk-MQBT33IV.js +48 -0
- package/dist/chunk-OOTLNH63.cjs +18 -0
- package/dist/chunk-PNOKNSG2.cjs +222 -0
- package/dist/chunk-SHUYVCID.js +4 -0
- package/dist/chunk-SPQFNIYJ.cjs +132 -0
- package/dist/chunk-SYBOCAWB.js +97 -0
- package/dist/chunk-TDV6EJHV.js +192 -0
- package/dist/chunk-UCKN4BBY.cjs +24 -0
- package/dist/chunk-UF3BYUXY.js +616 -0
- package/dist/chunk-UPLVMVRX.cjs +23 -0
- package/dist/chunk-USNT2KNT.cjs +6 -0
- package/dist/chunk-VMY2S32H.js +2342 -0
- package/dist/chunk-WEMDMVHQ.js +216 -0
- package/dist/chunk-WO2DW4AU.cjs +182 -0
- package/dist/chunk-X47PBV4I.js +79 -0
- package/dist/chunk-X6H5VBQ2.cjs +620 -0
- package/dist/chunk-XQ3QUHWR.cjs +83 -0
- package/dist/chunk-XW5ATPRW.cjs +155 -0
- package/dist/cli.cjs +107 -86
- package/dist/cli.js +66 -29
- package/dist/email-queue-CGZBVVAS.js +2 -0
- package/dist/email-queue-TPZWLTIV.cjs +23 -0
- package/dist/emit-order-notification-trigger-D2N3KFHL.cjs +16 -0
- package/dist/emit-order-notification-trigger-IVLWKKJL.js +3 -0
- package/dist/erp-config-enabled-CUMQ6N2V.cjs +11 -0
- package/dist/erp-config-enabled-T37X7T34.js +2 -0
- package/dist/erp-order-invoice-3YISSOWW.js +3 -0
- package/dist/erp-order-invoice-ZR5F2KTA.cjs +12 -0
- package/dist/event-order-defaults-EMWBIGL3.cjs +39 -0
- package/dist/event-order-defaults-SDRNAZHC.js +2 -0
- package/dist/hooks.cjs +259 -132
- package/dist/hooks.d.cts +42 -1
- package/dist/hooks.d.ts +42 -1
- package/dist/hooks.js +234 -91
- package/dist/index.cjs +3679 -22356
- package/dist/index.d.cts +2173 -643
- package/dist/index.d.ts +2173 -643
- package/dist/index.js +2587 -22119
- package/dist/interpolate-WAKPN56R.cjs +11 -0
- package/dist/interpolate-WDUWDF3I.js +2 -0
- package/dist/migrations/1779400000000-ConvertStatusToEnum.ts +142 -0
- package/dist/migrations/1779400000000-SeedDefaultCurrencies.ts +33 -0
- package/dist/migrations/1779500000000-VendorRolesAndPermissions.ts +102 -0
- package/dist/migrations/1779600000000-VendorRegistrationProfile.ts +52 -0
- package/dist/migrations/1779700000000-CollectionIsCatalog.ts +22 -0
- package/dist/migrations/1779710000000-CollectionPlatformCatalog.ts +60 -0
- package/dist/migrations/1779720000000-ProductCategoryPlatformCatalog.ts +157 -0
- package/dist/migrations/1779800000000-EventsAndEventProducts.ts +173 -0
- package/dist/migrations/1779810000000-BackfillVendorRoleEventsPermissions.ts +38 -0
- package/dist/migrations/1779820000000-FixProductsCategoryForeignKey.ts +70 -0
- package/dist/migrations/1779830000000-ProductTitleColumn.ts +32 -0
- package/dist/migrations/1779840000000-EventAboutAndVisibilityFields.ts +34 -0
- package/dist/migrations/1779850000000-EventCityCountrySplit.ts +43 -0
- package/dist/migrations/1779860000000-CreateCombos.ts +140 -0
- package/dist/migrations/1780100000000-OrderAttendeesEventId.ts +55 -0
- package/dist/migrations/1780110000000-EventContactFormId.ts +49 -0
- package/dist/migrations/1780130000000-ProductVariants.ts +54 -0
- package/dist/migrations/1780140000000-EventManagementEnhancements.ts +44 -0
- package/dist/migrations/1780160000000-EventRegistrationGstProductContactForm.ts +79 -0
- package/dist/migrations/1780170000000-ComboCurrencyPrices.ts +20 -0
- package/dist/migrations/1781110000000-VendorOwnerCombosPermission.ts +38 -0
- package/dist/migrations/1781120000000-RefundPoliciesAndRequests.ts +225 -0
- package/dist/migrations/1781130000000-CreateAttendees.ts +44 -0
- package/dist/migrations/1781140000000-EventOrderNotifications.ts +29 -0
- package/dist/migrations/1781150000000-EventNamedLists.ts +28 -0
- package/dist/migrations/1781160000000-RefundPolicyEventTiers.ts +27 -0
- package/dist/migrations/1781170000000-EventRefundPolicy.ts +42 -0
- package/dist/migrations/1781180000000-RemoveCartItemsUniqueConstraint.ts +15 -0
- package/dist/migrations/1781190000000-RenameProductTaxesToProductConfig.ts +84 -0
- package/dist/migrations/1781200000000-VendorOwnerProductConfigPermissions.ts +51 -0
- package/dist/migrations/1781210000000-VendorRoleProductConfigPermissions.ts +46 -0
- package/dist/migrations/1781220000000-AddWhatsappTriggerBindings.ts +23 -0
- package/dist/migrations/1781230000000-AddOrderNotificationTriggers.ts +46 -0
- package/dist/migrations/1781240000000-DropEventOrderNotificationColumns.ts +29 -0
- package/dist/migrations/1781250000000-RemoveOrderRefundedTrigger.ts +36 -0
- package/dist/migrations/helpers/vendor-role-seed.ts +243 -0
- package/dist/paid-order-erp-3USEG6WL.js +3 -0
- package/dist/paid-order-erp-FSQ3GSXE.cjs +12 -0
- package/dist/pg-boss-service-4XF2TQ2E.js +2 -0
- package/dist/pg-boss-service-L6MTF4EQ.cjs +15 -0
- package/dist/razorpay-KLO2KNCB.js +49 -0
- package/dist/razorpay-U23LGY72.cjs +56 -0
- package/dist/rbac-debug-db-HWP65A4O.cjs +35 -0
- package/dist/rbac-debug-db-QJH3AD34.js +33 -0
- package/dist/sms-defaults-2NL24H57.js +2 -0
- package/dist/sms-defaults-KCOPKQBA.cjs +19 -0
- package/dist/stripe-4FD27QVJ.js +51 -0
- package/dist/stripe-VU6OEG2D.cjs +57 -0
- package/dist/theme.cjs +31 -59
- package/dist/theme.d.cts +78 -3
- package/dist/theme.d.ts +78 -3
- package/dist/theme.js +23 -20
- package/dist/vendor-invite-status-77O7ZQ3U.cjs +19 -0
- package/dist/vendor-invite-status-PWJ3DE76.js +2 -0
- package/dist/whatsapp-trigger-dispatcher-ONHXI7UY.cjs +19 -0
- package/dist/whatsapp-trigger-dispatcher-PWFI4FKP.js +6 -0
- package/package.json +147 -142
- package/dist/admin.cjs.map +0 -1
- package/dist/admin.js.map +0 -1
- package/dist/api.cjs.map +0 -1
- package/dist/api.js.map +0 -1
- package/dist/auth.cjs.map +0 -1
- package/dist/auth.js.map +0 -1
- package/dist/cli.cjs.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/config-DJ5CmQvS.d.cts +0 -8
- package/dist/config-DJ5CmQvS.d.ts +0 -8
- package/dist/hooks.cjs.map +0 -1
- package/dist/hooks.js.map +0 -1
- package/dist/index-Bf5GO8fu.d.cts +0 -583
- package/dist/index-DOiJuMQA.d.ts +0 -583
- package/dist/index.cjs.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/theme.cjs.map +0 -1
- package/dist/theme.js.map +0 -1
- package/dist/types-DCVaXlPV.d.cts +0 -78
- package/dist/types-DCVaXlPV.d.ts +0 -78
- package/dist/vendor-scope-DTYhJk_I.d.cts +0 -129
- package/dist/vendor-scope-DTYhJk_I.d.ts +0 -129
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkUSNT2KNT_cjs = require('./chunk-USNT2KNT.cjs');
|
|
4
|
+
|
|
5
|
+
// src/plugins/email/email-queue.ts
|
|
6
|
+
var EMAIL_QUEUE_NAME = "email";
|
|
7
|
+
function registerEmailQueueProcessor(cms) {
|
|
8
|
+
const queue = cms.getPlugin("queue");
|
|
9
|
+
const email = cms.getPlugin("email");
|
|
10
|
+
if (!queue || !email) return;
|
|
11
|
+
queue.registerProcessor(EMAIL_QUEUE_NAME, async (data) => {
|
|
12
|
+
const payload = data;
|
|
13
|
+
const { to, templateName, ctx, subject, html, text } = payload;
|
|
14
|
+
if (!to) return;
|
|
15
|
+
if (templateName && ctx) {
|
|
16
|
+
const rendered = email.renderTemplate(templateName, ctx);
|
|
17
|
+
await email.send({
|
|
18
|
+
to,
|
|
19
|
+
subject: rendered.subject,
|
|
20
|
+
html: rendered.html,
|
|
21
|
+
text: rendered.text
|
|
22
|
+
});
|
|
23
|
+
} else if (subject != null && html != null) {
|
|
24
|
+
await email.send({
|
|
25
|
+
to,
|
|
26
|
+
subject,
|
|
27
|
+
html,
|
|
28
|
+
text
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
chunkUSNT2KNT_cjs.__name(registerEmailQueueProcessor, "registerEmailQueueProcessor");
|
|
34
|
+
async function queueEmail(cms, payload) {
|
|
35
|
+
const queue = cms.getPlugin("queue");
|
|
36
|
+
if (queue) {
|
|
37
|
+
await queue.add(EMAIL_QUEUE_NAME, payload);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
const email = cms.getPlugin("email");
|
|
41
|
+
if (email && payload.templateName && payload.ctx) {
|
|
42
|
+
const rendered = email.renderTemplate(payload.templateName, payload.ctx);
|
|
43
|
+
await email.send({
|
|
44
|
+
to: payload.to,
|
|
45
|
+
subject: rendered.subject,
|
|
46
|
+
html: rendered.html,
|
|
47
|
+
text: rendered.text
|
|
48
|
+
});
|
|
49
|
+
} else if (email && payload.subject != null && payload.html != null) {
|
|
50
|
+
await email.send({
|
|
51
|
+
to: payload.to,
|
|
52
|
+
subject: payload.subject,
|
|
53
|
+
html: payload.html,
|
|
54
|
+
text: payload.text
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
chunkUSNT2KNT_cjs.__name(queueEmail, "queueEmail");
|
|
59
|
+
async function queueOrderPlacedEmails(cms, payload) {
|
|
60
|
+
const { orderNumber, total, subtotal, tax, currency, customerName, customerEmail, salesTeamEmails, companyDetails, lineItems, billingAddress, shippingAddress } = payload;
|
|
61
|
+
const base = {
|
|
62
|
+
orderNumber,
|
|
63
|
+
total: total != null ? String(total) : void 0,
|
|
64
|
+
subtotal: subtotal != null ? String(subtotal) : void 0,
|
|
65
|
+
tax: tax != null ? String(tax) : void 0,
|
|
66
|
+
currency,
|
|
67
|
+
customerName,
|
|
68
|
+
companyDetails: companyDetails ?? {},
|
|
69
|
+
lineItems: lineItems ?? [],
|
|
70
|
+
billingAddress,
|
|
71
|
+
shippingAddress
|
|
72
|
+
};
|
|
73
|
+
const customerLower = customerEmail?.trim().toLowerCase() ?? "";
|
|
74
|
+
const jobs = [];
|
|
75
|
+
if (customerEmail?.trim()) {
|
|
76
|
+
jobs.push(queueEmail(cms, {
|
|
77
|
+
to: customerEmail.trim(),
|
|
78
|
+
templateName: "orderPlaced",
|
|
79
|
+
ctx: {
|
|
80
|
+
...base,
|
|
81
|
+
audience: "customer"
|
|
82
|
+
}
|
|
83
|
+
}));
|
|
84
|
+
}
|
|
85
|
+
const seen = /* @__PURE__ */ new Set();
|
|
86
|
+
for (const raw of salesTeamEmails) {
|
|
87
|
+
const to = raw.trim();
|
|
88
|
+
if (!to) continue;
|
|
89
|
+
const key = to.toLowerCase();
|
|
90
|
+
if (seen.has(key)) continue;
|
|
91
|
+
seen.add(key);
|
|
92
|
+
if (customerLower && key === customerLower) continue;
|
|
93
|
+
jobs.push(queueEmail(cms, {
|
|
94
|
+
to,
|
|
95
|
+
templateName: "orderPlaced",
|
|
96
|
+
ctx: {
|
|
97
|
+
...base,
|
|
98
|
+
audience: "sales",
|
|
99
|
+
internalCustomerEmail: customerEmail?.trim() || void 0
|
|
100
|
+
}
|
|
101
|
+
}));
|
|
102
|
+
}
|
|
103
|
+
await Promise.all(jobs);
|
|
104
|
+
}
|
|
105
|
+
chunkUSNT2KNT_cjs.__name(queueOrderPlacedEmails, "queueOrderPlacedEmails");
|
|
106
|
+
async function queueVendorOnboardEmails(cms, payload) {
|
|
107
|
+
const { vendorName, vendorSlug, ownerName, ownerEmail, activation, inviteLink, signInLink, kind = "vendor_onboard", notifyEmails, companyDetails, sendToOwner = true } = payload;
|
|
108
|
+
const base = {
|
|
109
|
+
vendorName,
|
|
110
|
+
vendorSlug,
|
|
111
|
+
ownerName,
|
|
112
|
+
ownerEmail,
|
|
113
|
+
activation,
|
|
114
|
+
inviteLink,
|
|
115
|
+
signInLink,
|
|
116
|
+
kind,
|
|
117
|
+
companyDetails: companyDetails ?? {}
|
|
118
|
+
};
|
|
119
|
+
const ownerLower = ownerEmail?.trim().toLowerCase() ?? "";
|
|
120
|
+
const jobs = [];
|
|
121
|
+
if (sendToOwner && ownerEmail?.trim()) {
|
|
122
|
+
jobs.push(queueEmail(cms, {
|
|
123
|
+
to: ownerEmail.trim(),
|
|
124
|
+
templateName: "vendorOnboarded",
|
|
125
|
+
ctx: {
|
|
126
|
+
...base,
|
|
127
|
+
audience: "owner"
|
|
128
|
+
}
|
|
129
|
+
}));
|
|
130
|
+
}
|
|
131
|
+
const seen = /* @__PURE__ */ new Set();
|
|
132
|
+
for (const raw of notifyEmails) {
|
|
133
|
+
const to = raw.trim();
|
|
134
|
+
if (!to) continue;
|
|
135
|
+
const key = to.toLowerCase();
|
|
136
|
+
if (seen.has(key)) continue;
|
|
137
|
+
seen.add(key);
|
|
138
|
+
if (ownerLower && key === ownerLower) continue;
|
|
139
|
+
jobs.push(queueEmail(cms, {
|
|
140
|
+
to,
|
|
141
|
+
templateName: "vendorOnboarded",
|
|
142
|
+
ctx: {
|
|
143
|
+
...base,
|
|
144
|
+
audience: "internal"
|
|
145
|
+
}
|
|
146
|
+
}));
|
|
147
|
+
}
|
|
148
|
+
await Promise.all(jobs);
|
|
149
|
+
}
|
|
150
|
+
chunkUSNT2KNT_cjs.__name(queueVendorOnboardEmails, "queueVendorOnboardEmails");
|
|
151
|
+
|
|
152
|
+
exports.queueEmail = queueEmail;
|
|
153
|
+
exports.queueOrderPlacedEmails = queueOrderPlacedEmails;
|
|
154
|
+
exports.queueVendorOnboardEmails = queueVendorOnboardEmails;
|
|
155
|
+
exports.registerEmailQueueProcessor = registerEmailQueueProcessor;
|
package/dist/cli.cjs
CHANGED
|
@@ -1,31 +1,15 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
var
|
|
5
|
-
var
|
|
6
|
-
var
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
-
}
|
|
15
|
-
return to;
|
|
16
|
-
};
|
|
17
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
18
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
19
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
20
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
21
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
22
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
23
|
-
mod
|
|
24
|
-
));
|
|
25
|
-
|
|
26
|
-
// src/cli.ts
|
|
27
|
-
var import_fs = __toESM(require("fs"), 1);
|
|
28
|
-
var import_path = __toESM(require("path"), 1);
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
var chunkUSNT2KNT_cjs = require('./chunk-USNT2KNT.cjs');
|
|
5
|
+
var fs = require('fs');
|
|
6
|
+
var path = require('path');
|
|
7
|
+
|
|
8
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
|
+
|
|
10
|
+
var fs__default = /*#__PURE__*/_interopDefault(fs);
|
|
11
|
+
var path__default = /*#__PURE__*/_interopDefault(path);
|
|
12
|
+
|
|
29
13
|
var TEMPLATES = {
|
|
30
14
|
"src/lib/data-source.ts": `import 'reflect-metadata';
|
|
31
15
|
import path from 'path';
|
|
@@ -83,13 +67,14 @@ export const requireAdminAccess = helpers.requireAdminAccess;
|
|
|
83
67
|
export const getAuthenticatedUser = helpers.getAuthenticatedUser;
|
|
84
68
|
`,
|
|
85
69
|
"src/lib/cms.ts": `import {
|
|
86
|
-
|
|
70
|
+
createCmsAppWithMessaging,
|
|
87
71
|
localStoragePlugin,
|
|
88
72
|
blogGeneratorPlugin,
|
|
89
73
|
pgBossPlugin,
|
|
90
74
|
socialMediaPlugin,
|
|
91
75
|
type CmsApp,
|
|
92
76
|
} from '@infuro/cms-core';
|
|
77
|
+
import { CMS_ENTITY_MAP } from '@infuro/cms-core';
|
|
93
78
|
import { getDataSourceInitialized } from './data-source';
|
|
94
79
|
|
|
95
80
|
let cmsPromise: Promise<CmsApp> | null = null;
|
|
@@ -97,8 +82,9 @@ let cmsPromise: Promise<CmsApp> | null = null;
|
|
|
97
82
|
export async function getCms(): Promise<CmsApp> {
|
|
98
83
|
if (cmsPromise) return cmsPromise;
|
|
99
84
|
const dataSource = await getDataSourceInitialized();
|
|
100
|
-
cmsPromise =
|
|
85
|
+
cmsPromise = createCmsAppWithMessaging({
|
|
101
86
|
dataSource,
|
|
87
|
+
entityMap: CMS_ENTITY_MAP,
|
|
102
88
|
config: process.env as unknown as Record<string, string>,
|
|
103
89
|
plugins: [
|
|
104
90
|
localStoragePlugin({ dir: 'public/uploads' }),
|
|
@@ -690,25 +676,26 @@ export function getThemeById(id: string | undefined): ThemeConfig {
|
|
|
690
676
|
`
|
|
691
677
|
};
|
|
692
678
|
function findRoot(cwd) {
|
|
693
|
-
let dir =
|
|
679
|
+
let dir = path__default.default.resolve(cwd);
|
|
694
680
|
for (let i = 0; i < 20; i++) {
|
|
695
|
-
const pkgPath =
|
|
696
|
-
if (
|
|
681
|
+
const pkgPath = path__default.default.join(dir, "package.json");
|
|
682
|
+
if (fs__default.default.existsSync(pkgPath)) {
|
|
697
683
|
try {
|
|
698
|
-
const pkg = JSON.parse(
|
|
684
|
+
const pkg = JSON.parse(fs__default.default.readFileSync(pkgPath, "utf8"));
|
|
699
685
|
if (pkg.dependencies?.next || pkg.devDependencies?.next) return dir;
|
|
700
686
|
} catch {
|
|
701
687
|
}
|
|
702
688
|
}
|
|
703
|
-
const parent =
|
|
689
|
+
const parent = path__default.default.dirname(dir);
|
|
704
690
|
if (parent === dir) break;
|
|
705
691
|
dir = parent;
|
|
706
692
|
}
|
|
707
693
|
return null;
|
|
708
694
|
}
|
|
695
|
+
chunkUSNT2KNT_cjs.__name(findRoot, "findRoot");
|
|
709
696
|
function writeFile(root, filePath, content, force2, dryRun2, log) {
|
|
710
|
-
const full =
|
|
711
|
-
if (
|
|
697
|
+
const full = path__default.default.join(root, filePath);
|
|
698
|
+
if (fs__default.default.existsSync(full) && !force2) {
|
|
712
699
|
log(` skip (exists): ${filePath}`);
|
|
713
700
|
return false;
|
|
714
701
|
}
|
|
@@ -716,18 +703,25 @@ function writeFile(root, filePath, content, force2, dryRun2, log) {
|
|
|
716
703
|
log(` would create: ${filePath}`);
|
|
717
704
|
return true;
|
|
718
705
|
}
|
|
719
|
-
const dir =
|
|
720
|
-
|
|
721
|
-
|
|
706
|
+
const dir = path__default.default.dirname(full);
|
|
707
|
+
fs__default.default.mkdirSync(dir, {
|
|
708
|
+
recursive: true
|
|
709
|
+
});
|
|
710
|
+
fs__default.default.writeFileSync(full, content, "utf8");
|
|
722
711
|
log(` created: ${filePath}`);
|
|
723
712
|
return true;
|
|
724
713
|
}
|
|
714
|
+
chunkUSNT2KNT_cjs.__name(writeFile, "writeFile");
|
|
725
715
|
function patchNextConfig(root, dryRun2, log) {
|
|
726
|
-
const candidates = [
|
|
716
|
+
const candidates = [
|
|
717
|
+
"next.config.js",
|
|
718
|
+
"next.config.mjs",
|
|
719
|
+
"next.config.cjs"
|
|
720
|
+
];
|
|
727
721
|
let configPath = null;
|
|
728
722
|
for (const name of candidates) {
|
|
729
|
-
const p =
|
|
730
|
-
if (
|
|
723
|
+
const p = path__default.default.join(root, name);
|
|
724
|
+
if (fs__default.default.existsSync(p)) {
|
|
731
725
|
configPath = p;
|
|
732
726
|
break;
|
|
733
727
|
}
|
|
@@ -736,36 +730,35 @@ function patchNextConfig(root, dryRun2, log) {
|
|
|
736
730
|
log(" skip next.config: not found");
|
|
737
731
|
return false;
|
|
738
732
|
}
|
|
739
|
-
let content =
|
|
733
|
+
let content = fs__default.default.readFileSync(configPath, "utf8");
|
|
740
734
|
if (content.includes("'@infuro/cms-core'") || content.includes('"@infuro/cms-core"')) {
|
|
741
|
-
log(` skip (already has core): ${
|
|
735
|
+
log(` skip (already has core): ${path__default.default.basename(configPath)}`);
|
|
742
736
|
return false;
|
|
743
737
|
}
|
|
744
738
|
if (content.includes("serverExternalPackages")) {
|
|
745
|
-
content = content.replace(
|
|
746
|
-
/(serverExternalPackages:\s*\[)/,
|
|
747
|
-
"$1'@infuro/cms-core', 'typeorm', 'rss-parser', "
|
|
748
|
-
);
|
|
739
|
+
content = content.replace(/(serverExternalPackages:\s*\[)/, "$1'@infuro/cms-core', 'typeorm', 'rss-parser', ");
|
|
749
740
|
} else {
|
|
750
|
-
content = content.replace(
|
|
751
|
-
/(const nextConfig\s*=\s*\{|module\.exports\s*=\s*\{)/,
|
|
752
|
-
"$1\n serverExternalPackages: ['@infuro/cms-core', 'typeorm', 'rss-parser'],"
|
|
753
|
-
);
|
|
741
|
+
content = content.replace(/(const nextConfig\s*=\s*\{|module\.exports\s*=\s*\{)/, "$1\n serverExternalPackages: ['@infuro/cms-core', 'typeorm', 'rss-parser'],");
|
|
754
742
|
}
|
|
755
743
|
if (dryRun2) {
|
|
756
|
-
log(` would patch: ${
|
|
744
|
+
log(` would patch: ${path__default.default.basename(configPath)}`);
|
|
757
745
|
return true;
|
|
758
746
|
}
|
|
759
|
-
|
|
760
|
-
log(` patched: ${
|
|
747
|
+
fs__default.default.writeFileSync(configPath, content, "utf8");
|
|
748
|
+
log(` patched: ${path__default.default.basename(configPath)}`);
|
|
761
749
|
return true;
|
|
762
750
|
}
|
|
751
|
+
chunkUSNT2KNT_cjs.__name(patchNextConfig, "patchNextConfig");
|
|
763
752
|
function patchTailwind(root, dryRun2, log) {
|
|
764
|
-
const candidates = [
|
|
753
|
+
const candidates = [
|
|
754
|
+
"tailwind.config.js",
|
|
755
|
+
"tailwind.config.mjs",
|
|
756
|
+
"tailwind.config.ts"
|
|
757
|
+
];
|
|
765
758
|
let configPath = null;
|
|
766
759
|
for (const name of candidates) {
|
|
767
|
-
const p =
|
|
768
|
-
if (
|
|
760
|
+
const p = path__default.default.join(root, name);
|
|
761
|
+
if (fs__default.default.existsSync(p)) {
|
|
769
762
|
configPath = p;
|
|
770
763
|
break;
|
|
771
764
|
}
|
|
@@ -774,34 +767,32 @@ function patchTailwind(root, dryRun2, log) {
|
|
|
774
767
|
log(" skip tailwind: config not found");
|
|
775
768
|
return false;
|
|
776
769
|
}
|
|
777
|
-
let content =
|
|
770
|
+
let content = fs__default.default.readFileSync(configPath, "utf8");
|
|
778
771
|
const coreContent = "./node_modules/@infuro/cms-core/dist/**/*.{js,cjs}";
|
|
779
772
|
if (content.includes("@infuro/cms-core")) {
|
|
780
|
-
log(` skip (already has core): ${
|
|
773
|
+
log(` skip (already has core): ${path__default.default.basename(configPath)}`);
|
|
781
774
|
return false;
|
|
782
775
|
}
|
|
783
776
|
if (content.includes("content:")) {
|
|
784
|
-
content = content.replace(
|
|
785
|
-
|
|
786
|
-
`$1
|
|
787
|
-
"${coreContent}",`
|
|
788
|
-
);
|
|
777
|
+
content = content.replace(/(content:\s*\[)/, `$1
|
|
778
|
+
"${coreContent}",`);
|
|
789
779
|
}
|
|
790
780
|
if (dryRun2) {
|
|
791
|
-
log(` would patch: ${
|
|
781
|
+
log(` would patch: ${path__default.default.basename(configPath)}`);
|
|
792
782
|
return true;
|
|
793
783
|
}
|
|
794
|
-
|
|
795
|
-
log(` patched: ${
|
|
784
|
+
fs__default.default.writeFileSync(configPath, content, "utf8");
|
|
785
|
+
log(` patched: ${path__default.default.basename(configPath)}`);
|
|
796
786
|
return true;
|
|
797
787
|
}
|
|
788
|
+
chunkUSNT2KNT_cjs.__name(patchTailwind, "patchTailwind");
|
|
798
789
|
function patchLayout(root, dryRun2, log) {
|
|
799
|
-
const layoutPath =
|
|
800
|
-
if (!
|
|
790
|
+
const layoutPath = path__default.default.join(root, "src/app/layout.tsx");
|
|
791
|
+
if (!fs__default.default.existsSync(layoutPath)) {
|
|
801
792
|
log(" skip layout: src/app/layout.tsx not found");
|
|
802
793
|
return false;
|
|
803
794
|
}
|
|
804
|
-
let content =
|
|
795
|
+
let content = fs__default.default.readFileSync(layoutPath, "utf8");
|
|
805
796
|
if (content.includes("<Providers>")) {
|
|
806
797
|
log(" skip layout: already uses Providers");
|
|
807
798
|
return false;
|
|
@@ -827,14 +818,15 @@ function patchLayout(root, dryRun2, log) {
|
|
|
827
818
|
if (content.includes("<html") && !content.includes("suppressHydrationWarning")) {
|
|
828
819
|
content = content.replace(/<html(\s)/, "<html suppressHydrationWarning$1");
|
|
829
820
|
}
|
|
830
|
-
|
|
821
|
+
fs__default.default.writeFileSync(layoutPath, content, "utf8");
|
|
831
822
|
log(" patched: src/app/layout.tsx");
|
|
832
823
|
return true;
|
|
833
824
|
}
|
|
825
|
+
chunkUSNT2KNT_cjs.__name(patchLayout, "patchLayout");
|
|
834
826
|
function patchPackageJson(root, dryRun2, log) {
|
|
835
|
-
const pkgPath =
|
|
836
|
-
if (!
|
|
837
|
-
const pkg = JSON.parse(
|
|
827
|
+
const pkgPath = path__default.default.join(root, "package.json");
|
|
828
|
+
if (!fs__default.default.existsSync(pkgPath)) return false;
|
|
829
|
+
const pkg = JSON.parse(fs__default.default.readFileSync(pkgPath, "utf8"));
|
|
838
830
|
const scripts = pkg.scripts || {};
|
|
839
831
|
let changed = false;
|
|
840
832
|
if (!scripts.seed) {
|
|
@@ -868,41 +860,65 @@ function patchPackageJson(root, dryRun2, log) {
|
|
|
868
860
|
return false;
|
|
869
861
|
}
|
|
870
862
|
pkg.scripts = scripts;
|
|
871
|
-
pkg.dependencies = {
|
|
872
|
-
|
|
863
|
+
pkg.dependencies = {
|
|
864
|
+
...pkg.dependencies,
|
|
865
|
+
...deps
|
|
866
|
+
};
|
|
867
|
+
pkg.devDependencies = {
|
|
868
|
+
...pkg.devDependencies,
|
|
869
|
+
...dev
|
|
870
|
+
};
|
|
873
871
|
if (dryRun2) {
|
|
874
872
|
log(" would patch: package.json (scripts + devDependencies)");
|
|
875
873
|
return true;
|
|
876
874
|
}
|
|
877
|
-
|
|
875
|
+
fs__default.default.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2), "utf8");
|
|
878
876
|
log(" patched: package.json");
|
|
879
877
|
return true;
|
|
880
878
|
}
|
|
879
|
+
chunkUSNT2KNT_cjs.__name(patchPackageJson, "patchPackageJson");
|
|
881
880
|
async function runNpmInstall(root, log) {
|
|
882
|
-
const { spawnSync } = await import(
|
|
881
|
+
const { spawnSync } = await import('child_process');
|
|
883
882
|
log(" running: npm install (deps)...");
|
|
884
|
-
spawnSync("npm", [
|
|
883
|
+
spawnSync("npm", [
|
|
884
|
+
"install",
|
|
885
|
+
"@infuro/cms-core",
|
|
886
|
+
"typeorm",
|
|
887
|
+
"reflect-metadata",
|
|
888
|
+
"bcryptjs",
|
|
889
|
+
"next-auth",
|
|
890
|
+
"next-themes",
|
|
891
|
+
"sonner",
|
|
892
|
+
"pg-boss"
|
|
893
|
+
], {
|
|
885
894
|
cwd: root,
|
|
886
895
|
stdio: "inherit",
|
|
887
896
|
shell: true
|
|
888
897
|
});
|
|
889
898
|
log(" running: npm install -D tsx dotenv @types/node...");
|
|
890
|
-
spawnSync("npm", [
|
|
899
|
+
spawnSync("npm", [
|
|
900
|
+
"install",
|
|
901
|
+
"-D",
|
|
902
|
+
"tsx",
|
|
903
|
+
"dotenv",
|
|
904
|
+
"@types/node"
|
|
905
|
+
], {
|
|
891
906
|
cwd: root,
|
|
892
907
|
stdio: "inherit",
|
|
893
908
|
shell: true
|
|
894
909
|
});
|
|
895
910
|
}
|
|
911
|
+
chunkUSNT2KNT_cjs.__name(runNpmInstall, "runNpmInstall");
|
|
896
912
|
async function runInit(opts) {
|
|
897
|
-
const log = (msg) => console.log(msg);
|
|
913
|
+
const log = /* @__PURE__ */ chunkUSNT2KNT_cjs.__name((msg) => console.log(msg), "log");
|
|
898
914
|
const cwd = process.cwd();
|
|
899
915
|
const root = findRoot(cwd);
|
|
900
916
|
if (!root) {
|
|
901
917
|
console.error("Not a Next.js project (no package.json with next dependency found from " + cwd + ")");
|
|
902
918
|
process.exit(1);
|
|
903
919
|
}
|
|
904
|
-
const appDir =
|
|
905
|
-
if (!
|
|
920
|
+
const appDir = path__default.default.join(root, "src/app");
|
|
921
|
+
if (!fs__default.default.existsSync(appDir)) {
|
|
906
922
|
console.error("Expected src/app directory not found. Use a Next.js app with src directory (e.g. create-next-app --src-dir).");
|
|
907
923
|
process.exit(1);
|
|
908
924
|
}
|
|
@@ -931,13 +947,19 @@ async function runInit(opts) {
|
|
|
931
947
|
log(" 2. Run npm run migration:run then npm run seed (creates admin from ADMIN_EMAIL/ADMIN_PASSWORD)");
|
|
932
948
|
log(" 3. npm run dev");
|
|
933
949
|
}
|
|
950
|
+
chunkUSNT2KNT_cjs.__name(runInit, "runInit");
|
|
934
951
|
var args = process.argv.slice(2);
|
|
935
952
|
var force = args.includes("--force");
|
|
936
953
|
var dryRun = args.includes("--dry-run");
|
|
937
954
|
var noDeps = args.includes("--no-deps");
|
|
938
955
|
var noPatchConfig = args.includes("--no-patch-config");
|
|
939
956
|
if (args[0] === "init" || args.includes("--init") || args.length === 0 && !args.some((a) => a.startsWith("--"))) {
|
|
940
|
-
runInit({
|
|
957
|
+
runInit({
|
|
958
|
+
force,
|
|
959
|
+
dryRun,
|
|
960
|
+
noDeps,
|
|
961
|
+
noPatchConfig
|
|
962
|
+
}).catch((e) => {
|
|
941
963
|
console.error(e);
|
|
942
964
|
process.exit(1);
|
|
943
965
|
});
|
|
@@ -945,4 +967,3 @@ if (args[0] === "init" || args.includes("--init") || args.length === 0 && !args.
|
|
|
945
967
|
console.log("Usage: npx @infuro/cms-core init [--force] [--dry-run] [--no-deps] [--no-patch-config]");
|
|
946
968
|
process.exit(args[0] === "--help" || args[0] === "-h" ? 0 : 1);
|
|
947
969
|
}
|
|
948
|
-
//# sourceMappingURL=cli.cjs.map
|