@leadcms/sdk 3.3.5 → 3.3.8
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 +3 -0
- package/dist/cli/bin/pull-all.js +10 -2
- package/dist/cli/bin/pull-all.js.map +1 -1
- package/dist/cli/bin/pull-comments.js +9 -2
- package/dist/cli/bin/pull-comments.js.map +1 -1
- package/dist/cli/bin/pull-content.js +10 -2
- package/dist/cli/bin/pull-content.js.map +1 -1
- package/dist/cli/bin/pull-email-templates.d.ts +6 -0
- package/dist/cli/bin/pull-email-templates.d.ts.map +1 -0
- package/dist/cli/bin/pull-email-templates.js +24 -0
- package/dist/cli/bin/pull-email-templates.js.map +1 -0
- package/dist/cli/bin/pull-media.js +9 -2
- package/dist/cli/bin/pull-media.js.map +1 -1
- package/dist/cli/bin/push-all.js +17 -4
- package/dist/cli/bin/push-all.js.map +1 -1
- package/dist/cli/bin/push-content.js +9 -2
- package/dist/cli/bin/push-content.js.map +1 -1
- package/dist/cli/bin/push-email-templates.d.ts +6 -0
- package/dist/cli/bin/push-email-templates.d.ts.map +1 -0
- package/dist/cli/bin/push-email-templates.js +21 -0
- package/dist/cli/bin/push-email-templates.js.map +1 -0
- package/dist/cli/bin/push-media.js +9 -2
- package/dist/cli/bin/push-media.js.map +1 -1
- package/dist/cli/bin/push.js +2 -0
- package/dist/cli/bin/push.js.map +1 -1
- package/dist/cli/bin/status-all.d.ts +1 -1
- package/dist/cli/bin/status-all.js +255 -31
- package/dist/cli/bin/status-all.js.map +1 -1
- package/dist/cli/bin/status-content.js +9 -2
- package/dist/cli/bin/status-content.js.map +1 -1
- package/dist/cli/bin/status-email-templates.d.ts +6 -0
- package/dist/cli/bin/status-email-templates.d.ts.map +1 -0
- package/dist/cli/bin/status-email-templates.js +29 -0
- package/dist/cli/bin/status-email-templates.js.map +1 -0
- package/dist/cli/bin/status-media.js +9 -2
- package/dist/cli/bin/status-media.js.map +1 -1
- package/dist/cli/bin/status.js +2 -0
- package/dist/cli/bin/status.js.map +1 -1
- package/dist/cli/bin/watch.js +2 -0
- package/dist/cli/bin/watch.js.map +1 -1
- package/dist/cli/index.js +29 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/lib/cms-config-types.d.ts +4 -0
- package/dist/lib/cms-config-types.d.ts.map +1 -1
- package/dist/lib/cms-config-types.js +6 -0
- package/dist/lib/cms-config-types.js.map +1 -1
- package/dist/lib/cms.d.ts.map +1 -1
- package/dist/lib/cms.js +1 -0
- package/dist/lib/cms.js.map +1 -1
- package/dist/lib/config.d.ts +2 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +5 -0
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/content-merge.d.ts +2 -2
- package/dist/lib/content-merge.d.ts.map +1 -1
- package/dist/lib/content-merge.js +39 -35
- package/dist/lib/content-merge.js.map +1 -1
- package/dist/lib/content-transformation.d.ts +1 -1
- package/dist/lib/content-transformation.d.ts.map +1 -1
- package/dist/lib/content-transformation.js +8 -2
- package/dist/lib/content-transformation.js.map +1 -1
- package/dist/lib/data-service.d.ts +56 -0
- package/dist/lib/data-service.d.ts.map +1 -1
- package/dist/lib/data-service.js +246 -36
- package/dist/lib/data-service.js.map +1 -1
- package/dist/lib/email-template-transformation.d.ts +36 -0
- package/dist/lib/email-template-transformation.d.ts.map +1 -0
- package/dist/lib/email-template-transformation.js +88 -0
- package/dist/lib/email-template-transformation.js.map +1 -0
- package/dist/lib/logger.d.ts +63 -0
- package/dist/lib/logger.d.ts.map +1 -0
- package/dist/lib/logger.js +87 -0
- package/dist/lib/logger.js.map +1 -0
- package/dist/lib/spinner.d.ts +25 -0
- package/dist/lib/spinner.d.ts.map +1 -0
- package/dist/lib/spinner.js +80 -0
- package/dist/lib/spinner.js.map +1 -0
- package/dist/scripts/fetch-leadcms-comments.d.ts.map +1 -1
- package/dist/scripts/fetch-leadcms-comments.js +22 -21
- package/dist/scripts/fetch-leadcms-comments.js.map +1 -1
- package/dist/scripts/fetch-leadcms-content.d.ts +12 -1
- package/dist/scripts/fetch-leadcms-content.d.ts.map +1 -1
- package/dist/scripts/fetch-leadcms-content.js +51 -48
- package/dist/scripts/fetch-leadcms-content.js.map +1 -1
- package/dist/scripts/fetch-leadcms-email-templates.d.ts +15 -0
- package/dist/scripts/fetch-leadcms-email-templates.d.ts.map +1 -0
- package/dist/scripts/fetch-leadcms-email-templates.js +272 -0
- package/dist/scripts/fetch-leadcms-email-templates.js.map +1 -0
- package/dist/scripts/init-leadcms.d.ts.map +1 -1
- package/dist/scripts/init-leadcms.js +22 -3
- package/dist/scripts/init-leadcms.js.map +1 -1
- package/dist/scripts/leadcms-helpers.d.ts +1 -0
- package/dist/scripts/leadcms-helpers.d.ts.map +1 -1
- package/dist/scripts/leadcms-helpers.js +7 -5
- package/dist/scripts/leadcms-helpers.js.map +1 -1
- package/dist/scripts/pull-all.d.ts +7 -1
- package/dist/scripts/pull-all.d.ts.map +1 -1
- package/dist/scripts/pull-all.js +40 -19
- package/dist/scripts/pull-all.js.map +1 -1
- package/dist/scripts/pull-comments.d.ts.map +1 -1
- package/dist/scripts/pull-comments.js +3 -2
- package/dist/scripts/pull-comments.js.map +1 -1
- package/dist/scripts/pull-content.d.ts +2 -0
- package/dist/scripts/pull-content.d.ts.map +1 -1
- package/dist/scripts/pull-content.js +5 -4
- package/dist/scripts/pull-content.js.map +1 -1
- package/dist/scripts/pull-email-templates.d.ts +13 -0
- package/dist/scripts/pull-email-templates.d.ts.map +1 -0
- package/dist/scripts/pull-email-templates.js +79 -0
- package/dist/scripts/pull-email-templates.js.map +1 -0
- package/dist/scripts/pull-media.d.ts.map +1 -1
- package/dist/scripts/pull-media.js +3 -2
- package/dist/scripts/pull-media.js.map +1 -1
- package/dist/scripts/push-email-templates.d.ts +50 -0
- package/dist/scripts/push-email-templates.d.ts.map +1 -0
- package/dist/scripts/push-email-templates.js +687 -0
- package/dist/scripts/push-email-templates.js.map +1 -0
- package/dist/scripts/push-leadcms-content.d.ts +18 -1
- package/dist/scripts/push-leadcms-content.d.ts.map +1 -1
- package/dist/scripts/push-leadcms-content.js +39 -13
- package/dist/scripts/push-leadcms-content.js.map +1 -1
- package/dist/scripts/push-media.d.ts +2 -0
- package/dist/scripts/push-media.d.ts.map +1 -1
- package/dist/scripts/push-media.js +8 -5
- package/dist/scripts/push-media.js.map +1 -1
- package/dist/scripts/sse-watcher.d.ts +16 -0
- package/dist/scripts/sse-watcher.d.ts.map +1 -1
- package/dist/scripts/sse-watcher.js +134 -74
- package/dist/scripts/sse-watcher.js.map +1 -1
- package/leadcms.config.json.sample +2 -0
- package/package.json +1 -1
|
@@ -5,6 +5,7 @@ import axios from "axios";
|
|
|
5
5
|
import { leadCMSUrl, leadCMSApiKey, } from "./leadcms-helpers.js";
|
|
6
6
|
import { getConfig } from "../lib/config.js";
|
|
7
7
|
import { isValidLocaleCode } from "../lib/locale-utils.js";
|
|
8
|
+
import { logger } from "../lib/logger.js";
|
|
8
9
|
// Load config to get commentsDir
|
|
9
10
|
const config = getConfig();
|
|
10
11
|
const COMMENTS_DIR = path.resolve(config.commentsDir);
|
|
@@ -27,7 +28,7 @@ async function readCommentSyncToken() {
|
|
|
27
28
|
try {
|
|
28
29
|
const legacy = (await fs.readFile(LEGACY_COMMENT_SYNC_TOKEN_PATH, "utf8")).trim();
|
|
29
30
|
if (legacy) {
|
|
30
|
-
|
|
31
|
+
logger.verbose(`[SYNC] Migrating comment sync token from legacy location`);
|
|
31
32
|
return { token: legacy, migrated: true };
|
|
32
33
|
}
|
|
33
34
|
}
|
|
@@ -55,8 +56,8 @@ async function cleanupLegacyCommentSyncToken() {
|
|
|
55
56
|
* Handles pagination automatically
|
|
56
57
|
*/
|
|
57
58
|
async function fetchCommentSync(syncToken) {
|
|
58
|
-
|
|
59
|
-
|
|
59
|
+
logger.verbose(`[FETCH_COMMENT_SYNC] Starting with syncToken: ${syncToken || "NONE"}`);
|
|
60
|
+
logger.verbose(`[FETCH_COMMENT_SYNC] Fetching public comments (no authentication)`);
|
|
60
61
|
let allItems = [];
|
|
61
62
|
let allDeleted = [];
|
|
62
63
|
let token = syncToken || "";
|
|
@@ -66,27 +67,27 @@ async function fetchCommentSync(syncToken) {
|
|
|
66
67
|
const url = new URL("/api/comments/sync", leadCMSUrl);
|
|
67
68
|
url.searchParams.set("filter[limit]", "100");
|
|
68
69
|
url.searchParams.set("syncToken", token);
|
|
69
|
-
|
|
70
|
+
logger.verbose(`[FETCH_COMMENT_SYNC] Page ${page}, URL: ${url.toString()}`);
|
|
70
71
|
try {
|
|
71
72
|
// SECURITY: Never send API key for read operations
|
|
72
73
|
// Comments sync should only return public comments
|
|
73
74
|
const res = await axios.get(url.toString());
|
|
74
75
|
if (res.status === 204) {
|
|
75
|
-
|
|
76
|
+
logger.verbose(`[FETCH_COMMENT_SYNC] Got 204 No Content - ending sync`);
|
|
76
77
|
break;
|
|
77
78
|
}
|
|
78
79
|
const data = res.data;
|
|
79
|
-
|
|
80
|
+
logger.verbose(`[FETCH_COMMENT_SYNC] Page ${page} - Got ${data.items?.length || 0} items, ${data.deleted?.length || 0} deleted`);
|
|
80
81
|
if (data.items && Array.isArray(data.items))
|
|
81
82
|
allItems.push(...data.items);
|
|
82
83
|
if (data.deleted && Array.isArray(data.deleted)) {
|
|
83
84
|
allDeleted.push(...data.deleted);
|
|
84
85
|
}
|
|
85
86
|
const newSyncToken = res.headers["x-next-sync-token"] || token;
|
|
86
|
-
|
|
87
|
+
logger.verbose(`[FETCH_COMMENT_SYNC] Next sync token: ${newSyncToken}`);
|
|
87
88
|
if (!newSyncToken || newSyncToken === token) {
|
|
88
89
|
nextSyncToken = newSyncToken || token;
|
|
89
|
-
|
|
90
|
+
logger.verbose(`[FETCH_COMMENT_SYNC] No new sync token - ending sync`);
|
|
90
91
|
break;
|
|
91
92
|
}
|
|
92
93
|
nextSyncToken = newSyncToken;
|
|
@@ -117,7 +118,7 @@ async function fetchCommentSync(syncToken) {
|
|
|
117
118
|
throw error;
|
|
118
119
|
}
|
|
119
120
|
}
|
|
120
|
-
|
|
121
|
+
logger.verbose(`[FETCH_COMMENT_SYNC] Completed - Total items: ${allItems.length}, deleted: ${allDeleted.length}`);
|
|
121
122
|
return {
|
|
122
123
|
items: allItems,
|
|
123
124
|
deleted: allDeleted,
|
|
@@ -170,7 +171,7 @@ async function saveCommentsForEntity(commentableType, commentableId, language, c
|
|
|
170
171
|
// If no comments, remove the file
|
|
171
172
|
try {
|
|
172
173
|
await fs.unlink(filePath);
|
|
173
|
-
|
|
174
|
+
logger.verbose(`Removed empty comment file: ${filePath}`);
|
|
174
175
|
}
|
|
175
176
|
catch {
|
|
176
177
|
// File might not exist, that's okay
|
|
@@ -185,7 +186,7 @@ async function saveCommentsForEntity(commentableType, commentableId, language, c
|
|
|
185
186
|
return a.id - b.id;
|
|
186
187
|
});
|
|
187
188
|
await fs.writeFile(filePath, JSON.stringify(sortedComments, null, 2), "utf8");
|
|
188
|
-
|
|
189
|
+
logger.verbose(`Saved ${sortedComments.length} comments to ${filePath}`);
|
|
189
190
|
}
|
|
190
191
|
}
|
|
191
192
|
/**
|
|
@@ -247,7 +248,7 @@ async function searchAndDeleteInTypeDirectory(typePath, commentableType, languag
|
|
|
247
248
|
if (filtered.length < originalLength) {
|
|
248
249
|
// Found and removed the comment
|
|
249
250
|
await saveCommentsForEntity(commentableType, commentableId, language, filtered);
|
|
250
|
-
|
|
251
|
+
logger.verbose(`Deleted comment ${commentId} from ${commentableType}/${commentableId} (${language})`);
|
|
251
252
|
return; // Comment found and deleted, we're done
|
|
252
253
|
}
|
|
253
254
|
}
|
|
@@ -290,27 +291,27 @@ async function fetchCMSConfigForEntity() {
|
|
|
290
291
|
* Main function to sync comments from LeadCMS
|
|
291
292
|
*/
|
|
292
293
|
export async function main() {
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
294
|
+
logger.verbose(`[ENV] LeadCMS URL: ${leadCMSUrl}`);
|
|
295
|
+
logger.verbose(`[ENV] LeadCMS API Key: ${leadCMSApiKey ? `${leadCMSApiKey.substring(0, 8)}...` : "NOT_SET"}`);
|
|
296
|
+
logger.verbose(`[ENV] Comments Dir: ${COMMENTS_DIR}`);
|
|
296
297
|
// Check if comments are supported
|
|
297
|
-
|
|
298
|
+
logger.verbose(`\n🔍 Checking CMS configuration...`);
|
|
298
299
|
const commentsSupported = await fetchCMSConfigForEntity();
|
|
299
300
|
if (!commentsSupported) {
|
|
300
301
|
console.log(`⏭️ Comments entity not supported by this LeadCMS instance - skipping comment sync`);
|
|
301
302
|
return;
|
|
302
303
|
}
|
|
303
|
-
|
|
304
|
+
logger.verbose(`✅ Comments supported - proceeding with sync\n`);
|
|
304
305
|
await fs.mkdir(COMMENTS_DIR, { recursive: true });
|
|
305
306
|
const { token: lastSyncToken, migrated: commentTokenMigrated } = await readCommentSyncToken();
|
|
306
307
|
let items = [], deleted = [], nextSyncToken = "";
|
|
307
308
|
try {
|
|
308
309
|
if (lastSyncToken) {
|
|
309
|
-
|
|
310
|
+
logger.verbose(`Syncing comments from LeadCMS using sync token: ${lastSyncToken}`);
|
|
310
311
|
({ items, deleted, nextSyncToken } = await fetchCommentSync(lastSyncToken));
|
|
311
312
|
}
|
|
312
313
|
else {
|
|
313
|
-
|
|
314
|
+
logger.verbose("No comment sync token found. Doing full fetch from LeadCMS...");
|
|
314
315
|
({ items, deleted, nextSyncToken } = await fetchCommentSync(undefined));
|
|
315
316
|
}
|
|
316
317
|
}
|
|
@@ -356,12 +357,12 @@ export async function main() {
|
|
|
356
357
|
// Save new sync token
|
|
357
358
|
if (nextSyncToken) {
|
|
358
359
|
await writeCommentSyncToken(nextSyncToken);
|
|
359
|
-
|
|
360
|
+
logger.verbose(`Comment sync token updated: ${nextSyncToken}`);
|
|
360
361
|
}
|
|
361
362
|
// Clean up legacy sync token after successful migration
|
|
362
363
|
if (commentTokenMigrated) {
|
|
363
364
|
await cleanupLegacyCommentSyncToken();
|
|
364
|
-
|
|
365
|
+
logger.verbose(`[SYNC] Removed legacy comment sync token`);
|
|
365
366
|
}
|
|
366
367
|
console.log(`\nComment sync completed successfully.`);
|
|
367
368
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-leadcms-comments.js","sourceRoot":"","sources":["../../src/scripts/fetch-leadcms-comments.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fetch-leadcms-comments.js","sourceRoot":"","sources":["../../src/scripts/fetch-leadcms-comments.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AACvB,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAwB,MAAM,OAAO,CAAC;AAC7C,OAAO,EACL,UAAU,EACV,aAAa,GACd,MAAM,sBAAsB,CAAC;AAO9B,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,iCAAiC;AACjC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;AAC3B,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AAEtD,yEAAyE;AACzE,oDAAoD;AACpD,MAAM,uBAAuB,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;AACvE,yEAAyE;AACzE,MAAM,8BAA8B,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,wBAAwB,CAAC,CAAC;AAEvG;;;GAGG;AACH,KAAK,UAAU,oBAAoB;IACjC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC1E,IAAI,KAAK;YAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC;IAE3B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8BAA8B,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAClF,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,CAAC,OAAO,CAAC,0DAA0D,CAAC,CAAC;YAC3E,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC3C,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC;IAE3B,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AAC/C,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,qBAAqB,CAAC,KAAa;IAChD,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3E,MAAM,EAAE,CAAC,SAAS,CAAC,uBAAuB,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAC7D,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,6BAA6B;IAC1C,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC,CAAC;AAClC,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,gBAAgB,CAAC,SAAkB;IAChD,MAAM,CAAC,OAAO,CAAC,iDAAiD,SAAS,IAAI,MAAM,EAAE,CAAC,CAAC;IACvF,MAAM,CAAC,OAAO,CAAC,mEAAmE,CAAC,CAAC;IACpF,IAAI,QAAQ,GAAc,EAAE,CAAC;IAC7B,IAAI,UAAU,GAAa,EAAE,CAAC;IAC9B,IAAI,KAAK,GAAG,SAAS,IAAI,EAAE,CAAC;IAC5B,IAAI,aAAa,GAAuB,SAAS,CAAC;IAClD,IAAI,IAAI,GAAG,CAAC,CAAC;IAEb,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,oBAAoB,EAAE,UAAU,CAAC,CAAC;QACtD,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QAC7C,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAEzC,MAAM,CAAC,OAAO,CAAC,6BAA6B,IAAI,UAAU,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAE5E,IAAI,CAAC;YACH,mDAAmD;YACnD,mDAAmD;YACnD,MAAM,GAAG,GAAuC,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;YAEhF,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBACvB,MAAM,CAAC,OAAO,CAAC,uDAAuD,CAAC,CAAC;gBACxE,MAAM;YACR,CAAC;YAED,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YACtB,MAAM,CAAC,OAAO,CACZ,6BAA6B,IAAI,UAAU,IAAI,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,WAAW,IAAI,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,UAAU,CACjH,CAAC;YAEF,IAAI,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;gBAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;YAE1E,IAAI,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBAChD,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;YACnC,CAAC;YAED,MAAM,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,KAAK,CAAC;YAC/D,MAAM,CAAC,OAAO,CAAC,yCAAyC,YAAY,EAAE,CAAC,CAAC;YAExE,IAAI,CAAC,YAAY,IAAI,YAAY,KAAK,KAAK,EAAE,CAAC;gBAC5C,aAAa,GAAG,YAAY,IAAI,KAAK,CAAC;gBACtC,MAAM,CAAC,OAAO,CAAC,sDAAsD,CAAC,CAAC;gBACvE,MAAM;YACR,CAAC;YAED,aAAa,GAAG,YAAY,CAAC;YAC7B,KAAK,GAAG,YAAY,CAAC;YACrB,IAAI,EAAE,CAAC;QACT,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,uCAAuC,IAAI,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YAE7E,sDAAsD;YACtD,IAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,KAAK,GAAG,EAAE,CAAC;gBACnC,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;gBACnD,OAAO,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;gBAC7D,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;gBAClC,OAAO,CAAC,KAAK,CAAC,iEAAiE,CAAC,CAAC;gBACjF,OAAO,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC;gBAC1E,OAAO,CAAC,KAAK,CAAC,sCAAsC,UAAU,EAAE,CAAC,CAAC;YACpE,CAAC;iBAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC1C,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;gBACzC,OAAO,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;gBACnE,OAAO,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;YACvE,CAAC;iBAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC1C,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;gBACrC,OAAO,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;gBAC1D,OAAO,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;YAClE,CAAC;YAED,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,MAAM,CAAC,OAAO,CACZ,iDAAiD,QAAQ,CAAC,MAAM,cAAc,UAAU,CAAC,MAAM,EAAE,CAClG,CAAC;IACF,OAAO;QACL,KAAK,EAAE,QAAQ;QACf,OAAO,EAAE,UAAU;QACnB,aAAa,EAAE,aAAa,IAAI,KAAK;KACtC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,OAAgB;IACvC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC;IACxD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,SAAS,kBAAkB,CACzB,eAAuB,EACvB,aAAqB,EACrB,QAAgB;IAEhB,MAAM,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;IAC/C,MAAM,SAAS,GAAG,eAAe,CAAC,WAAW,EAAE,CAAC;IAEhD,IAAI,QAAQ,KAAK,eAAe,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,GAAG,aAAa,OAAO,CAAC,CAAC;IACrE,CAAC;SAAM,CAAC;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,aAAa,OAAO,CAAC,CAAC;IAC/E,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,qBAAqB,CAClC,eAAuB,EACvB,aAAqB,EACrB,QAAgB;IAEhB,MAAM,QAAQ,GAAG,kBAAkB,CAAC,eAAe,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;IAC9E,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,uDAAuD;QACvD,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,qBAAqB,CAClC,eAAuB,EACvB,aAAqB,EACrB,QAAgB,EAChB,QAAyB;IAEzB,MAAM,QAAQ,GAAG,kBAAkB,CAAC,eAAe,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;IAC9E,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE7C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,kCAAkC;QAClC,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC1B,MAAM,CAAC,OAAO,CAAC,+BAA+B,QAAQ,EAAE,CAAC,CAAC;QAC5D,CAAC;QAAC,MAAM,CAAC;YACP,oCAAoC;QACtC,CAAC;IACH,CAAC;SAAM,CAAC;QACN,4DAA4D;QAC5D,MAAM,cAAc,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACjD,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;YACtF,IAAI,WAAW,KAAK,CAAC;gBAAE,OAAO,WAAW,CAAC;YAC1C,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;QACrB,CAAC,CAAC,CAAC;QAEH,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QAC9E,MAAM,CAAC,OAAO,CAAC,SAAS,cAAc,CAAC,MAAM,gBAAgB,QAAQ,EAAE,CAAC,CAAC;IAC3E,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,aAAa,CAAC,SAAiB;IAC5C,IAAI,CAAC;QACH,qCAAqC;QACrC,MAAM,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAE9B,2EAA2E;QAC3E,MAAM,aAAa,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAErD,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;YACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;YAC/C,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAErC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBAAE,SAAS;YAElC,0EAA0E;YAC1E,MAAM,aAAa,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAE9C,IAAI,aAAa,EAAE,CAAC;gBAClB,qEAAqE;gBACrE,MAAM,gBAAgB,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAEpD,KAAK,MAAM,eAAe,IAAI,gBAAgB,EAAE,CAAC;oBAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;oBACtD,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAEzC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE;wBAAE,SAAS;oBAEtC,oDAAoD;oBACpD,MAAM,8BAA8B,CAAC,QAAQ,EAAE,eAAe,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;gBACnF,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,8DAA8D;gBAC9D,MAAM,8BAA8B,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;YAC1F,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC5B,MAAM,KAAK,CAAC;QACd,CAAC;QACD,sDAAsD;IACxD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,8BAA8B,CAC3C,QAAgB,EAChB,eAAuB,EACvB,QAAgB,EAChB,SAAiB;IAEjB,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEzC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,SAAS;QAEtC,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9D,IAAI,KAAK,CAAC,aAAa,CAAC;YAAE,SAAS;QAEnC,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,eAAe,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;QACvF,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC;QACvC,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC;QAE5D,IAAI,QAAQ,CAAC,MAAM,GAAG,cAAc,EAAE,CAAC;YACrC,gCAAgC;YAChC,MAAM,qBAAqB,CAAC,eAAe,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAChF,MAAM,CAAC,OAAO,CAAC,mBAAmB,SAAS,SAAS,eAAe,IAAI,aAAa,KAAK,QAAQ,GAAG,CAAC,CAAC;YACtG,OAAO,CAAC,wCAAwC;QAClD,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,gCAAgC,CAAC,QAAmB;IAC3D,MAAM,OAAO,GAAG,IAAI,GAAG,EAAqB,CAAC;IAE7C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,eAAe,IAAI,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACtF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACvB,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAID;;GAEG;AACH,KAAK,UAAU,uBAAuB;IACpC,IAAI,CAAC;QACH,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC;QACjD,MAAM,EAAE,YAAY,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,4BAA4B,CAAC,CAAC;QAEzF,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC;QAChE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAEhE,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;YAClB,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC5B,OAAO,mBAAmB,EAAE,CAAC;QAC/B,CAAC;IACH,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,oDAAoD,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAClF,OAAO,CAAC,IAAI,CAAC,+EAA+E,CAAC,CAAC;IAChG,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,IAAI;IACxB,MAAM,CAAC,OAAO,CAAC,sBAAsB,UAAU,EAAE,CAAC,CAAC;IACnD,MAAM,CAAC,OAAO,CACZ,0BAA0B,aAAa,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EAAE,CAC9F,CAAC;IACF,MAAM,CAAC,OAAO,CAAC,uBAAuB,YAAY,EAAE,CAAC,CAAC;IAEtD,kCAAkC;IAClC,MAAM,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC;IACrD,MAAM,iBAAiB,GAAG,MAAM,uBAAuB,EAAE,CAAC;IAE1D,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,oFAAoF,CAAC,CAAC;QAClG,OAAO;IACT,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,+CAA+C,CAAC,CAAC;IAEhE,MAAM,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAElD,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,oBAAoB,EAAE,GAAG,MAAM,oBAAoB,EAAE,CAAC;IAE9F,IAAI,KAAK,GAAc,EAAE,EACvB,OAAO,GAAa,EAAE,EACtB,aAAa,GAAW,EAAE,CAAC;IAE7B,IAAI,CAAC;QACH,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,CAAC,OAAO,CAAC,mDAAmD,aAAa,EAAE,CAAC,CAAC;YACnF,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,MAAM,gBAAgB,CAAC,aAAa,CAAC,CAAC,CAAC;QAC9E,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,OAAO,CAAC,+DAA+D,CAAC,CAAC;YAChF,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,MAAM,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC1D,OAAO,CAAC,KAAK,CAAC,aAAa,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAE5C,uDAAuD;QACvD,8BAA8B;QAC9B,IAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,KAAK,GAAG,EAAE,CAAC;YACrE,OAAO,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;YACjE,OAAO,CAAC,KAAK,CAAC,8DAA8D,CAAC,CAAC;QAChF,CAAC;QAED,MAAM,KAAK,CAAC;IACd,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,mBAAmB,KAAK,CAAC,MAAM,mBAAmB,OAAO,CAAC,MAAM,kBAAkB,CAAC,CAAC;IAEhG,+BAA+B;IAC/B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,eAAe,GAAG,gCAAgC,CAAC,KAAK,CAAC,CAAC;QAEhE,KAAK,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,eAAe,EAAE,CAAC;YACpD,MAAM,CAAC,eAAe,EAAE,gBAAgB,EAAE,QAAQ,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC3E,MAAM,aAAa,GAAG,QAAQ,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;YAErD,2CAA2C;YAC3C,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,eAAe,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;YAEvF,2DAA2D;YAC3D,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAE5D,yBAAyB;YACzB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC/B,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;gBACxC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;YACrC,CAAC;YAED,iCAAiC;YACjC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;YACjD,MAAM,qBAAqB,CAAC,eAAe,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QACjF,CAAC;IACH,CAAC;IAED,0BAA0B;IAC1B,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,gBAAgB,OAAO,CAAC,MAAM,sBAAsB,CAAC,CAAC;QAClE,KAAK,MAAM,SAAS,IAAI,OAAO,EAAE,CAAC;YAChC,MAAM,aAAa,CAAC,SAAS,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED,sBAAsB;IACtB,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,qBAAqB,CAAC,aAAa,CAAC,CAAC;QAC3C,MAAM,CAAC,OAAO,CAAC,+BAA+B,aAAa,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,wDAAwD;IACxD,IAAI,oBAAoB,EAAE,CAAC;QACzB,MAAM,6BAA6B,EAAE,CAAC;QACtC,MAAM,CAAC,OAAO,CAAC,0CAA0C,CAAC,CAAC;IAC7D,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;AACxD,CAAC;AAED,kEAAkE;AAClE,OAAO,EAAE,IAAI,IAAI,oBAAoB,EAAE,CAAC;AAExC,gDAAgD;AAChD,+DAA+D;AAE/D,sCAAsC;AACtC,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,gCAAgC,EAChC,eAAe,EACf,aAAa,GACd,CAAC"}
|
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
import "dotenv/config";
|
|
2
2
|
import { ContentItem } from "./leadcms-helpers.js";
|
|
3
|
+
/**
|
|
4
|
+
* Options for fetchLeadCMSContent.
|
|
5
|
+
*/
|
|
6
|
+
export interface FetchContentOptions {
|
|
7
|
+
/**
|
|
8
|
+
* When true, skip three-way merge logic and always overwrite local files
|
|
9
|
+
* with remote content. This is used in watch mode (SSE watcher) to prevent
|
|
10
|
+
* merge conflicts caused by rapid sequential/concurrent syncs.
|
|
11
|
+
*/
|
|
12
|
+
forceOverwrite?: boolean;
|
|
13
|
+
}
|
|
3
14
|
interface MediaItem {
|
|
4
15
|
location?: string;
|
|
5
16
|
[key: string]: any;
|
|
@@ -48,7 +59,7 @@ declare function deleteContentFilesById(index: ContentIdIndex, idStr: string): P
|
|
|
48
59
|
* to avoid repeated filesystem walks.
|
|
49
60
|
*/
|
|
50
61
|
declare function findAndDeleteContentFile(dir: string, idStr: string): Promise<void>;
|
|
51
|
-
declare function main(): Promise<void>;
|
|
62
|
+
declare function main(options?: FetchContentOptions): Promise<void>;
|
|
52
63
|
export { main as fetchLeadCMSContent };
|
|
53
64
|
export { findAndDeleteContentFile };
|
|
54
65
|
export { buildContentIdIndex, deleteContentFilesById, extractContentId };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-leadcms-content.d.ts","sourceRoot":"","sources":["../../src/scripts/fetch-leadcms-content.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AAIvB,OAAO,EAQL,WAAW,EACZ,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"fetch-leadcms-content.d.ts","sourceRoot":"","sources":["../../src/scripts/fetch-leadcms-content.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AAIvB,OAAO,EAQL,WAAW,EACZ,MAAM,sBAAsB,CAAC;AAM9B;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAUD,UAAU,SAAS;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,UAAU,gBAAgB;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAQD,UAAU,iBAAiB;IACzB,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACvC,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,UAAU,eAAe;IACvB,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;CACvB;AAuSD;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;AAEnD;;;;GAIG;AACH,iBAAe,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAqCvE;AAED;;;;GAIG;AACH,iBAAS,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAU7D;AAED;;;GAGG;AACH,iBAAe,sBAAsB,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAezF;AAED;;;;;;GAMG;AACH,iBAAe,wBAAwB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA0BjF;AAED,iBAAe,IAAI,CAAC,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+QpE;AAGD,OAAO,EAAE,IAAI,IAAI,mBAAmB,EAAE,CAAC;AAGvC,OAAO,EAAE,wBAAwB,EAAE,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,CAAC;AAMzE,YAAY,EAAE,iBAAiB,EAAE,eAAe,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC"}
|
|
@@ -6,9 +6,10 @@ import { downloadMediaFileDirect, leadCMSUrl, leadCMSApiKey, defaultLanguage, CO
|
|
|
6
6
|
import { saveContentFile, transformRemoteToLocalFormat } from "../lib/content-transformation.js";
|
|
7
7
|
import { threeWayMerge, threeWayMergeJson, isLocallyModified } from "../lib/content-merge.js";
|
|
8
8
|
import { getConfig } from "../lib/config.js";
|
|
9
|
+
import { logger } from "../lib/logger.js";
|
|
9
10
|
// Add axios request/response interceptors for debugging
|
|
10
11
|
axios.interceptors.request.use((config) => {
|
|
11
|
-
|
|
12
|
+
logger.verbose(`[AXIOS REQUEST] ${config.method?.toUpperCase()} ${config.url}`);
|
|
12
13
|
// Mask the Authorization header for security
|
|
13
14
|
const maskedHeaders = { ...config.headers };
|
|
14
15
|
if (maskedHeaders.Authorization && typeof maskedHeaders.Authorization === "string") {
|
|
@@ -70,7 +71,7 @@ async function readSyncToken() {
|
|
|
70
71
|
return { token, migrated: false };
|
|
71
72
|
const legacy = await readFileOrUndefined(LEGACY_SYNC_TOKEN_PATH);
|
|
72
73
|
if (legacy) {
|
|
73
|
-
|
|
74
|
+
logger.verbose(`[SYNC] Migrating content sync token from legacy location`);
|
|
74
75
|
return { token: legacy, migrated: true };
|
|
75
76
|
}
|
|
76
77
|
return { token: undefined, migrated: false };
|
|
@@ -94,7 +95,7 @@ async function readMediaSyncToken() {
|
|
|
94
95
|
return { token, migrated: false };
|
|
95
96
|
const legacy = await readFileOrUndefined(LEGACY_MEDIA_SYNC_TOKEN_PATH);
|
|
96
97
|
if (legacy) {
|
|
97
|
-
|
|
98
|
+
logger.verbose(`[SYNC] Migrating media sync token from legacy location`);
|
|
98
99
|
return { token: legacy, migrated: true };
|
|
99
100
|
}
|
|
100
101
|
return { token: undefined, migrated: false };
|
|
@@ -110,8 +111,8 @@ async function cleanupLegacyMediaSyncToken() {
|
|
|
110
111
|
await unlinkSafe(LEGACY_MEDIA_SYNC_TOKEN_PATH);
|
|
111
112
|
}
|
|
112
113
|
async function fetchContentSync(syncToken) {
|
|
113
|
-
|
|
114
|
-
|
|
114
|
+
logger.verbose(`[FETCH_CONTENT_SYNC] Starting with syncToken: ${syncToken || "NONE"}`);
|
|
115
|
+
logger.verbose(`[FETCH_CONTENT_SYNC] Fetching public content (no authentication)`);
|
|
115
116
|
let allItems = [];
|
|
116
117
|
let allDeleted = [];
|
|
117
118
|
let allBaseItems = {};
|
|
@@ -126,17 +127,17 @@ async function fetchContentSync(syncToken) {
|
|
|
126
127
|
if (syncToken) {
|
|
127
128
|
url.searchParams.set("includeBase", "true");
|
|
128
129
|
}
|
|
129
|
-
|
|
130
|
+
logger.verbose(`[FETCH_CONTENT_SYNC] Page ${page}, URL: ${url.toString()}`);
|
|
130
131
|
try {
|
|
131
132
|
// SECURITY: Never send API key for read operations
|
|
132
133
|
// Content sync should only return public data
|
|
133
134
|
const res = await axios.get(url.toString());
|
|
134
135
|
if (res.status === 204) {
|
|
135
|
-
|
|
136
|
+
logger.verbose(`[FETCH_CONTENT_SYNC] Got 204 No Content - ending sync`);
|
|
136
137
|
break;
|
|
137
138
|
}
|
|
138
139
|
const data = res.data;
|
|
139
|
-
|
|
140
|
+
logger.verbose(`[FETCH_CONTENT_SYNC] Page ${page} - Got ${data.items?.length || 0} items, ${data.deleted?.length || 0} deleted`);
|
|
140
141
|
if (data.items && Array.isArray(data.items))
|
|
141
142
|
allItems.push(...data.items);
|
|
142
143
|
if (data.deleted && Array.isArray(data.deleted)) {
|
|
@@ -145,13 +146,13 @@ async function fetchContentSync(syncToken) {
|
|
|
145
146
|
// Collect base items for three-way merge support
|
|
146
147
|
if (data.baseItems && typeof data.baseItems === 'object') {
|
|
147
148
|
Object.assign(allBaseItems, data.baseItems);
|
|
148
|
-
|
|
149
|
+
logger.verbose(`[FETCH_CONTENT_SYNC] Page ${page} - Got ${Object.keys(data.baseItems).length} base items for merge`);
|
|
149
150
|
}
|
|
150
151
|
const newSyncToken = res.headers["x-next-sync-token"] || token;
|
|
151
|
-
|
|
152
|
+
logger.verbose(`[FETCH_CONTENT_SYNC] Next sync token: ${newSyncToken}`);
|
|
152
153
|
if (!newSyncToken || newSyncToken === token) {
|
|
153
154
|
nextSyncToken = newSyncToken || token;
|
|
154
|
-
|
|
155
|
+
logger.verbose(`[FETCH_CONTENT_SYNC] No new sync token - ending sync`);
|
|
155
156
|
break;
|
|
156
157
|
}
|
|
157
158
|
nextSyncToken = newSyncToken;
|
|
@@ -163,7 +164,7 @@ async function fetchContentSync(syncToken) {
|
|
|
163
164
|
throw error;
|
|
164
165
|
}
|
|
165
166
|
}
|
|
166
|
-
|
|
167
|
+
logger.verbose(`[FETCH_CONTENT_SYNC] Completed - Total items: ${allItems.length}, deleted: ${allDeleted.length}, base items: ${Object.keys(allBaseItems).length}`);
|
|
167
168
|
return {
|
|
168
169
|
items: allItems,
|
|
169
170
|
deleted: allDeleted,
|
|
@@ -172,8 +173,8 @@ async function fetchContentSync(syncToken) {
|
|
|
172
173
|
};
|
|
173
174
|
}
|
|
174
175
|
async function fetchMediaSync(syncToken) {
|
|
175
|
-
|
|
176
|
-
|
|
176
|
+
logger.verbose(`[FETCH_MEDIA_SYNC] Starting with syncToken: ${syncToken || "NONE"}`);
|
|
177
|
+
logger.verbose(`[FETCH_MEDIA_SYNC] Fetching public media (no authentication)`);
|
|
177
178
|
let allItems = [];
|
|
178
179
|
let allDeleted = [];
|
|
179
180
|
let token = syncToken || "";
|
|
@@ -183,27 +184,27 @@ async function fetchMediaSync(syncToken) {
|
|
|
183
184
|
const url = new URL("/api/media/sync", leadCMSUrl);
|
|
184
185
|
url.searchParams.set("filter[limit]", "100");
|
|
185
186
|
url.searchParams.set("syncToken", token);
|
|
186
|
-
|
|
187
|
+
logger.verbose(`[FETCH_MEDIA_SYNC] Page ${page}, URL: ${url.toString()}`);
|
|
187
188
|
try {
|
|
188
189
|
// SECURITY: Never send API key for read operations
|
|
189
190
|
// Media sync should only return public files
|
|
190
191
|
const res = await axios.get(url.toString());
|
|
191
192
|
if (res.status === 204) {
|
|
192
|
-
|
|
193
|
+
logger.verbose(`[FETCH_MEDIA_SYNC] Got 204 No Content - ending sync`);
|
|
193
194
|
break;
|
|
194
195
|
}
|
|
195
196
|
const data = res.data;
|
|
196
|
-
|
|
197
|
+
logger.verbose(`[FETCH_MEDIA_SYNC] Page ${page} - Got ${data.items?.length || 0} items, ${data.deleted?.length || 0} deleted`);
|
|
197
198
|
if (data.items && Array.isArray(data.items))
|
|
198
199
|
allItems.push(...data.items);
|
|
199
200
|
if (data.deleted && Array.isArray(data.deleted)) {
|
|
200
201
|
allDeleted.push(...data.deleted);
|
|
201
202
|
}
|
|
202
203
|
const newSyncToken = res.headers["x-next-sync-token"] || token;
|
|
203
|
-
|
|
204
|
+
logger.verbose(`[FETCH_MEDIA_SYNC] Next sync token: ${newSyncToken}`);
|
|
204
205
|
if (!newSyncToken || newSyncToken === token) {
|
|
205
206
|
nextSyncToken = newSyncToken || token;
|
|
206
|
-
|
|
207
|
+
logger.verbose(`[FETCH_MEDIA_SYNC] No new sync token - ending sync`);
|
|
207
208
|
break;
|
|
208
209
|
}
|
|
209
210
|
nextSyncToken = newSyncToken;
|
|
@@ -215,7 +216,7 @@ async function fetchMediaSync(syncToken) {
|
|
|
215
216
|
throw error;
|
|
216
217
|
}
|
|
217
218
|
}
|
|
218
|
-
|
|
219
|
+
logger.verbose(`[FETCH_MEDIA_SYNC] Completed - Total items: ${allItems.length}, deleted: ${allDeleted.length}`);
|
|
219
220
|
return {
|
|
220
221
|
items: allItems,
|
|
221
222
|
deleted: allDeleted,
|
|
@@ -315,7 +316,7 @@ async function deleteContentFilesById(index, idStr) {
|
|
|
315
316
|
for (const filePath of paths) {
|
|
316
317
|
try {
|
|
317
318
|
await fs.unlink(filePath);
|
|
318
|
-
|
|
319
|
+
logger.verbose(`Deleted: ${filePath}`);
|
|
319
320
|
}
|
|
320
321
|
catch (err) {
|
|
321
322
|
if (err.code !== 'ENOENT') {
|
|
@@ -349,7 +350,7 @@ async function findAndDeleteContentFile(dir, idStr) {
|
|
|
349
350
|
const jsonRegex = new RegExp(`\\"id\\"\\s*:\\s*['\"]?${idStr}['\"]?\\s*(,|\\}|\\n|$)`);
|
|
350
351
|
if (yamlRegex.test(content) || jsonRegex.test(content)) {
|
|
351
352
|
await fs.unlink(fullPath);
|
|
352
|
-
|
|
353
|
+
logger.verbose(`Deleted: ${fullPath}`);
|
|
353
354
|
}
|
|
354
355
|
}
|
|
355
356
|
catch { }
|
|
@@ -362,27 +363,28 @@ async function findAndDeleteContentFile(dir, idStr) {
|
|
|
362
363
|
}
|
|
363
364
|
}
|
|
364
365
|
}
|
|
365
|
-
async function main() {
|
|
366
|
+
async function main(options = {}) {
|
|
367
|
+
const { forceOverwrite = false } = options;
|
|
366
368
|
// Log environment configuration for debugging
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
369
|
+
logger.verbose(`[ENV] LeadCMS URL: ${leadCMSUrl}`);
|
|
370
|
+
logger.verbose(`[ENV] LeadCMS API Key: ${leadCMSApiKey ? `${leadCMSApiKey.substring(0, 8)}...` : "NOT_SET"}`);
|
|
371
|
+
logger.verbose(`[ENV] Default Language: ${defaultLanguage}`);
|
|
372
|
+
logger.verbose(`[ENV] Content Dir: ${CONTENT_DIR}`);
|
|
373
|
+
logger.verbose(`[ENV] Media Dir: ${MEDIA_DIR}`);
|
|
372
374
|
// Check supported entities
|
|
373
|
-
|
|
375
|
+
logger.verbose(`\n🔍 Checking CMS configuration...`);
|
|
374
376
|
const { content: contentSupported, media: mediaSupported } = await fetchCMSConfigForEntities();
|
|
375
377
|
if (!contentSupported && !mediaSupported) {
|
|
376
|
-
|
|
378
|
+
logger.verbose(`⏭️ Neither Content nor Media entities are supported by this LeadCMS instance - skipping sync`);
|
|
377
379
|
return;
|
|
378
380
|
}
|
|
379
381
|
if (!contentSupported) {
|
|
380
|
-
|
|
382
|
+
logger.verbose(`⏭️ Content entity not supported - skipping content sync`);
|
|
381
383
|
}
|
|
382
384
|
if (!mediaSupported) {
|
|
383
|
-
|
|
385
|
+
logger.verbose(`⏭️ Media entity not supported - skipping media sync`);
|
|
384
386
|
}
|
|
385
|
-
|
|
387
|
+
logger.verbose(`✅ Proceeding with sync\n`);
|
|
386
388
|
// Only create directories for supported entity types
|
|
387
389
|
if (contentSupported) {
|
|
388
390
|
await fs.mkdir(CONTENT_DIR, { recursive: true });
|
|
@@ -399,11 +401,11 @@ async function main() {
|
|
|
399
401
|
if (contentSupported) {
|
|
400
402
|
try {
|
|
401
403
|
if (lastSyncToken) {
|
|
402
|
-
|
|
404
|
+
logger.verbose(`Syncing content from LeadCMS using sync token: ${lastSyncToken}`);
|
|
403
405
|
({ items, deleted, baseItems, nextSyncToken } = await fetchContentSync(lastSyncToken));
|
|
404
406
|
}
|
|
405
407
|
else {
|
|
406
|
-
|
|
408
|
+
logger.verbose("No content sync token found. Doing full fetch from LeadCMS...");
|
|
407
409
|
({ items, deleted, baseItems, nextSyncToken } = await fetchContentSync(undefined));
|
|
408
410
|
}
|
|
409
411
|
}
|
|
@@ -419,11 +421,11 @@ async function main() {
|
|
|
419
421
|
if (mediaSupported) {
|
|
420
422
|
try {
|
|
421
423
|
if (lastMediaSyncToken) {
|
|
422
|
-
|
|
424
|
+
logger.verbose(`Syncing media from LeadCMS using sync token: ${lastMediaSyncToken}`);
|
|
423
425
|
({ items: mediaItems, deleted: mediaDeleted, nextSyncToken: nextMediaSyncToken } = await fetchMediaSync(lastMediaSyncToken));
|
|
424
426
|
}
|
|
425
427
|
else {
|
|
426
|
-
|
|
428
|
+
logger.verbose("No media sync token found. Doing full fetch from LeadCMS...");
|
|
427
429
|
({ items: mediaItems, deleted: mediaDeleted, nextSyncToken: nextMediaSyncToken } = await fetchMediaSync(undefined));
|
|
428
430
|
}
|
|
429
431
|
}
|
|
@@ -436,8 +438,8 @@ async function main() {
|
|
|
436
438
|
console.warn(`[MAIN] Continuing without media sync...`);
|
|
437
439
|
}
|
|
438
440
|
}
|
|
439
|
-
|
|
440
|
-
|
|
441
|
+
logger.verbose(`Fetched ${items.length} content items, ${deleted.length} deleted.\x1b[0m`);
|
|
442
|
+
logger.verbose(`Fetched ${mediaItems.length} media items, ${mediaDeleted.length} deleted.\x1b[0m`);
|
|
441
443
|
// Build an ID→filepath index once instead of walking the tree per item.
|
|
442
444
|
// This turns O(items × files) disk reads into O(files + items).
|
|
443
445
|
const contentIdIndex = (items.length > 0 || deleted.length > 0)
|
|
@@ -483,8 +485,9 @@ async function main() {
|
|
|
483
485
|
await deleteContentFilesById(contentIdIndex, idStr);
|
|
484
486
|
}
|
|
485
487
|
// Try three-way merge if we have a base version and local file exists
|
|
488
|
+
// In forceOverwrite mode (watch/SSE), skip merge entirely to avoid conflicts
|
|
486
489
|
const baseContent = idStr ? baseItems[idStr] : undefined;
|
|
487
|
-
if (localContent && baseContent && hasBaseItems) {
|
|
490
|
+
if (!forceOverwrite && localContent && baseContent && hasBaseItems) {
|
|
488
491
|
// Transform both base and remote to local file format for comparison
|
|
489
492
|
const baseTransformed = await transformRemoteToLocalFormat(baseContent, contentTypeMap);
|
|
490
493
|
const remoteTransformed = await transformRemoteToLocalFormat(content, contentTypeMap);
|
|
@@ -517,7 +520,7 @@ async function main() {
|
|
|
517
520
|
}
|
|
518
521
|
}
|
|
519
522
|
else {
|
|
520
|
-
// No base available
|
|
523
|
+
// No base available, file is new, or forceOverwrite — overwrite with remote
|
|
521
524
|
await saveContentFile({ content, typeMap, contentDir: CONTENT_DIR });
|
|
522
525
|
if (localContent) {
|
|
523
526
|
overwrittenCount++;
|
|
@@ -546,7 +549,7 @@ async function main() {
|
|
|
546
549
|
}
|
|
547
550
|
// Handle media sync results
|
|
548
551
|
if (mediaItems.length > 0) {
|
|
549
|
-
|
|
552
|
+
logger.verbose(`\nProcessing media changes...`);
|
|
550
553
|
// Download new/updated media files
|
|
551
554
|
let downloaded = 0;
|
|
552
555
|
for (const mediaItem of mediaItems) {
|
|
@@ -555,7 +558,7 @@ async function main() {
|
|
|
555
558
|
const destPath = path.join(MEDIA_DIR, relPath);
|
|
556
559
|
const didDownload = await downloadMediaFileDirect(mediaItem.location, destPath, leadCMSUrl || "", leadCMSApiKey || "");
|
|
557
560
|
if (didDownload) {
|
|
558
|
-
|
|
561
|
+
logger.verbose(`Downloaded: ${mediaItem.location} -> ${destPath}`);
|
|
559
562
|
downloaded++;
|
|
560
563
|
}
|
|
561
564
|
}
|
|
@@ -576,7 +579,7 @@ async function main() {
|
|
|
576
579
|
const fullPath = path.join(MEDIA_DIR, relPath);
|
|
577
580
|
try {
|
|
578
581
|
await fs.unlink(fullPath);
|
|
579
|
-
|
|
582
|
+
logger.verbose(`Deleted media: ${fullPath}`);
|
|
580
583
|
removedCount++;
|
|
581
584
|
}
|
|
582
585
|
catch (err) {
|
|
@@ -590,20 +593,20 @@ async function main() {
|
|
|
590
593
|
// Save new sync tokens
|
|
591
594
|
if (nextSyncToken) {
|
|
592
595
|
await writeSyncToken(nextSyncToken);
|
|
593
|
-
|
|
596
|
+
logger.verbose(`Content sync token updated: ${nextSyncToken}`);
|
|
594
597
|
}
|
|
595
598
|
if (nextMediaSyncToken) {
|
|
596
599
|
await writeMediaSyncToken(nextMediaSyncToken);
|
|
597
|
-
|
|
600
|
+
logger.verbose(`Media sync token updated: ${nextMediaSyncToken}`);
|
|
598
601
|
}
|
|
599
602
|
// Clean up legacy sync tokens after a successful pull
|
|
600
603
|
if (contentTokenMigrated) {
|
|
601
604
|
await cleanupLegacySyncToken();
|
|
602
|
-
|
|
605
|
+
logger.verbose(`[SYNC] Removed legacy content sync token`);
|
|
603
606
|
}
|
|
604
607
|
if (mediaTokenMigrated) {
|
|
605
608
|
await cleanupLegacyMediaSyncToken();
|
|
606
|
-
|
|
609
|
+
logger.verbose(`[SYNC] Removed legacy media sync token`);
|
|
607
610
|
}
|
|
608
611
|
}
|
|
609
612
|
// Export the main function so it can be imported by other modules
|