@leadcms/sdk 3.1.1 → 3.3.0

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 (72) hide show
  1. package/README.md +104 -50
  2. package/dist/cli/bin/generate-env.d.ts +1 -1
  3. package/dist/cli/bin/generate-env.d.ts.map +1 -1
  4. package/dist/cli/bin/generate-env.js +2 -2
  5. package/dist/cli/bin/generate-env.js.map +1 -1
  6. package/dist/cli/bin/pull-all.js +5 -1
  7. package/dist/cli/bin/pull-all.js.map +1 -1
  8. package/dist/cli/bin/pull-comments.js +3 -1
  9. package/dist/cli/bin/pull-comments.js.map +1 -1
  10. package/dist/cli/bin/pull-content.js +2 -1
  11. package/dist/cli/bin/pull-content.js.map +1 -1
  12. package/dist/cli/bin/pull-media.js +3 -1
  13. package/dist/cli/bin/pull-media.js.map +1 -1
  14. package/dist/cli/index.js +8 -4
  15. package/dist/cli/index.js.map +1 -1
  16. package/dist/index.d.ts +2 -0
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +2 -0
  19. package/dist/index.js.map +1 -1
  20. package/dist/lib/cms.d.ts.map +1 -1
  21. package/dist/lib/cms.js +0 -38
  22. package/dist/lib/cms.js.map +1 -1
  23. package/dist/lib/content-merge.d.ts +80 -0
  24. package/dist/lib/content-merge.d.ts.map +1 -0
  25. package/dist/lib/content-merge.js +350 -0
  26. package/dist/lib/content-merge.js.map +1 -0
  27. package/dist/lib/content-transformation.d.ts +0 -10
  28. package/dist/lib/content-transformation.d.ts.map +1 -1
  29. package/dist/lib/content-transformation.js +18 -32
  30. package/dist/lib/content-transformation.js.map +1 -1
  31. package/dist/scripts/fetch-leadcms-comments.d.ts +6 -1
  32. package/dist/scripts/fetch-leadcms-comments.d.ts.map +1 -1
  33. package/dist/scripts/fetch-leadcms-comments.js +36 -8
  34. package/dist/scripts/fetch-leadcms-comments.js.map +1 -1
  35. package/dist/scripts/fetch-leadcms-content.d.ts +38 -1
  36. package/dist/scripts/fetch-leadcms-content.d.ts.map +1 -1
  37. package/dist/scripts/fetch-leadcms-content.js +337 -63
  38. package/dist/scripts/fetch-leadcms-content.js.map +1 -1
  39. package/dist/scripts/generate-env-js.d.ts +13 -1
  40. package/dist/scripts/generate-env-js.d.ts.map +1 -1
  41. package/dist/scripts/generate-env-js.js +33 -15
  42. package/dist/scripts/generate-env-js.js.map +1 -1
  43. package/dist/scripts/init-leadcms.d.ts +5 -1
  44. package/dist/scripts/init-leadcms.d.ts.map +1 -1
  45. package/dist/scripts/init-leadcms.js +11 -6
  46. package/dist/scripts/init-leadcms.js.map +1 -1
  47. package/dist/scripts/leadcms-helpers.d.ts +1 -6
  48. package/dist/scripts/leadcms-helpers.d.ts.map +1 -1
  49. package/dist/scripts/leadcms-helpers.js.map +1 -1
  50. package/dist/scripts/pull-all.d.ts +23 -0
  51. package/dist/scripts/pull-all.d.ts.map +1 -1
  52. package/dist/scripts/pull-all.js +83 -2
  53. package/dist/scripts/pull-all.js.map +1 -1
  54. package/dist/scripts/pull-comments.d.ts +5 -1
  55. package/dist/scripts/pull-comments.d.ts.map +1 -1
  56. package/dist/scripts/pull-comments.js +8 -1
  57. package/dist/scripts/pull-comments.js.map +1 -1
  58. package/dist/scripts/pull-content.d.ts +2 -0
  59. package/dist/scripts/pull-content.d.ts.map +1 -1
  60. package/dist/scripts/pull-content.js +7 -1
  61. package/dist/scripts/pull-content.js.map +1 -1
  62. package/dist/scripts/pull-media.d.ts +5 -1
  63. package/dist/scripts/pull-media.d.ts.map +1 -1
  64. package/dist/scripts/pull-media.js +8 -1
  65. package/dist/scripts/pull-media.js.map +1 -1
  66. package/dist/scripts/push-leadcms-content.d.ts +38 -0
  67. package/dist/scripts/push-leadcms-content.d.ts.map +1 -1
  68. package/dist/scripts/push-leadcms-content.js +17 -4
  69. package/dist/scripts/push-leadcms-content.js.map +1 -1
  70. package/dist/scripts/sse-watcher.d.ts.map +1 -1
  71. package/dist/scripts/sse-watcher.js.map +1 -1
  72. package/package.json +3 -2
@@ -2,8 +2,10 @@ import "dotenv/config";
2
2
  import fs from "fs/promises";
3
3
  import path from "path";
4
4
  import axios from "axios";
5
- import { extractMediaUrlsFromContent, downloadMediaFileDirect, leadCMSUrl, leadCMSApiKey, defaultLanguage, CONTENT_DIR, MEDIA_DIR, fetchContentTypes, } from "./leadcms-helpers.js";
6
- import { saveContentFile } from "../lib/content-transformation.js";
5
+ import { downloadMediaFileDirect, leadCMSUrl, leadCMSApiKey, defaultLanguage, CONTENT_DIR, MEDIA_DIR, fetchContentTypes, } from "./leadcms-helpers.js";
6
+ import { saveContentFile, transformRemoteToLocalFormat } from "../lib/content-transformation.js";
7
+ import { threeWayMerge, threeWayMergeJson, isLocallyModified } from "../lib/content-merge.js";
8
+ import { getConfig } from "../lib/config.js";
7
9
  // Add axios request/response interceptors for debugging
8
10
  axios.interceptors.request.use((config) => {
9
11
  console.log(`[AXIOS REQUEST] ${config.method?.toUpperCase()} ${config.url}`);
@@ -31,37 +33,88 @@ axios.interceptors.response.use((response) => {
31
33
  console.error(`[AXIOS RESPONSE ERROR] Full error:`, error.message);
32
34
  return Promise.reject(error);
33
35
  });
34
- const SYNC_TOKEN_PATH = path.resolve(".leadcms/sync-token.txt");
35
- const MEDIA_SYNC_TOKEN_PATH = path.resolve(".leadcms/media-sync-token.txt");
36
- async function readSyncToken() {
36
+ // ── Sync token paths ───────────────────────────────────────────────────
37
+ // New location: tokens live *inside* the corresponding data directory.
38
+ const SYNC_TOKEN_PATH = path.join(CONTENT_DIR, ".sync-token");
39
+ const MEDIA_SYNC_TOKEN_PATH = path.join(MEDIA_DIR, ".sync-token");
40
+ // Legacy location (SDK ≤ 3.2): tokens lived in the parent of contentDir.
41
+ // We check these once for migration and then delete them after a successful pull.
42
+ const LEGACY_SYNC_TOKEN_PATH = path.join(path.dirname(CONTENT_DIR), "sync-token.txt");
43
+ const LEGACY_MEDIA_SYNC_TOKEN_PATH = path.join(path.dirname(CONTENT_DIR), "media-sync-token.txt");
44
+ /**
45
+ * Read a file and return its trimmed contents, or undefined if it doesn't exist.
46
+ */
47
+ async function readFileOrUndefined(filePath) {
37
48
  try {
38
- return (await fs.readFile(SYNC_TOKEN_PATH, "utf8")).trim();
49
+ return (await fs.readFile(filePath, "utf8")).trim() || undefined;
39
50
  }
40
51
  catch {
41
52
  return undefined;
42
53
  }
43
54
  }
55
+ /**
56
+ * Silently delete a file (no-op if missing).
57
+ */
58
+ async function unlinkSafe(filePath) {
59
+ try {
60
+ await fs.unlink(filePath);
61
+ }
62
+ catch { /* not found — ok */ }
63
+ }
64
+ /**
65
+ * Read content sync token. Checks new location first, then falls back to legacy.
66
+ */
67
+ async function readSyncToken() {
68
+ const token = await readFileOrUndefined(SYNC_TOKEN_PATH);
69
+ if (token)
70
+ return { token, migrated: false };
71
+ const legacy = await readFileOrUndefined(LEGACY_SYNC_TOKEN_PATH);
72
+ if (legacy) {
73
+ console.log(`[SYNC] Migrating content sync token from legacy location`);
74
+ return { token: legacy, migrated: true };
75
+ }
76
+ return { token: undefined, migrated: false };
77
+ }
44
78
  async function writeSyncToken(token) {
45
79
  await fs.mkdir(path.dirname(SYNC_TOKEN_PATH), { recursive: true });
46
80
  await fs.writeFile(SYNC_TOKEN_PATH, token, "utf8");
47
81
  }
82
+ /**
83
+ * Clean up legacy content sync token after successful migration.
84
+ */
85
+ async function cleanupLegacySyncToken() {
86
+ await unlinkSafe(LEGACY_SYNC_TOKEN_PATH);
87
+ }
88
+ /**
89
+ * Read media sync token. Checks new location first, then falls back to legacy.
90
+ */
48
91
  async function readMediaSyncToken() {
49
- try {
50
- return (await fs.readFile(MEDIA_SYNC_TOKEN_PATH, "utf8")).trim();
51
- }
52
- catch {
53
- return undefined;
92
+ const token = await readFileOrUndefined(MEDIA_SYNC_TOKEN_PATH);
93
+ if (token)
94
+ return { token, migrated: false };
95
+ const legacy = await readFileOrUndefined(LEGACY_MEDIA_SYNC_TOKEN_PATH);
96
+ if (legacy) {
97
+ console.log(`[SYNC] Migrating media sync token from legacy location`);
98
+ return { token: legacy, migrated: true };
54
99
  }
100
+ return { token: undefined, migrated: false };
55
101
  }
56
102
  async function writeMediaSyncToken(token) {
57
103
  await fs.mkdir(path.dirname(MEDIA_SYNC_TOKEN_PATH), { recursive: true });
58
104
  await fs.writeFile(MEDIA_SYNC_TOKEN_PATH, token, "utf8");
59
105
  }
106
+ /**
107
+ * Clean up legacy media sync token after successful migration.
108
+ */
109
+ async function cleanupLegacyMediaSyncToken() {
110
+ await unlinkSafe(LEGACY_MEDIA_SYNC_TOKEN_PATH);
111
+ }
60
112
  async function fetchContentSync(syncToken) {
61
113
  console.log(`[FETCH_CONTENT_SYNC] Starting with syncToken: ${syncToken || "NONE"}`);
62
114
  console.log(`[FETCH_CONTENT_SYNC] Fetching public content (no authentication)`);
63
115
  let allItems = [];
64
116
  let allDeleted = [];
117
+ let allBaseItems = {};
65
118
  let token = syncToken || "";
66
119
  let nextSyncToken = undefined;
67
120
  let page = 0;
@@ -69,6 +122,10 @@ async function fetchContentSync(syncToken) {
69
122
  const url = new URL("/api/content/sync", leadCMSUrl);
70
123
  url.searchParams.set("filter[limit]", "100");
71
124
  url.searchParams.set("syncToken", token);
125
+ // Request base versions for three-way merge when doing incremental sync
126
+ if (syncToken) {
127
+ url.searchParams.set("includeBase", "true");
128
+ }
72
129
  console.log(`[FETCH_CONTENT_SYNC] Page ${page}, URL: ${url.toString()}`);
73
130
  try {
74
131
  // SECURITY: Never send API key for read operations
@@ -85,6 +142,11 @@ async function fetchContentSync(syncToken) {
85
142
  if (data.deleted && Array.isArray(data.deleted)) {
86
143
  allDeleted.push(...data.deleted);
87
144
  }
145
+ // Collect base items for three-way merge support
146
+ if (data.baseItems && typeof data.baseItems === 'object') {
147
+ Object.assign(allBaseItems, data.baseItems);
148
+ console.log(`[FETCH_CONTENT_SYNC] Page ${page} - Got ${Object.keys(data.baseItems).length} base items for merge`);
149
+ }
88
150
  const newSyncToken = res.headers["x-next-sync-token"] || token;
89
151
  console.log(`[FETCH_CONTENT_SYNC] Next sync token: ${newSyncToken}`);
90
152
  if (!newSyncToken || newSyncToken === token) {
@@ -101,10 +163,11 @@ async function fetchContentSync(syncToken) {
101
163
  throw error;
102
164
  }
103
165
  }
104
- console.log(`[FETCH_CONTENT_SYNC] Completed - Total items: ${allItems.length}, deleted: ${allDeleted.length}`);
166
+ console.log(`[FETCH_CONTENT_SYNC] Completed - Total items: ${allItems.length}, deleted: ${allDeleted.length}, base items: ${Object.keys(allBaseItems).length}`);
105
167
  return {
106
168
  items: allItems,
107
169
  deleted: allDeleted,
170
+ baseItems: allBaseItems,
108
171
  nextSyncToken: nextSyncToken || token,
109
172
  };
110
173
  }
@@ -112,6 +175,7 @@ async function fetchMediaSync(syncToken) {
112
175
  console.log(`[FETCH_MEDIA_SYNC] Starting with syncToken: ${syncToken || "NONE"}`);
113
176
  console.log(`[FETCH_MEDIA_SYNC] Fetching public media (no authentication)`);
114
177
  let allItems = [];
178
+ let allDeleted = [];
115
179
  let token = syncToken || "";
116
180
  let nextSyncToken = undefined;
117
181
  let page = 0;
@@ -129,9 +193,12 @@ async function fetchMediaSync(syncToken) {
129
193
  break;
130
194
  }
131
195
  const data = res.data;
132
- console.log(`[FETCH_MEDIA_SYNC] Page ${page} - Got ${data.items?.length || 0} items`);
196
+ console.log(`[FETCH_MEDIA_SYNC] Page ${page} - Got ${data.items?.length || 0} items, ${data.deleted?.length || 0} deleted`);
133
197
  if (data.items && Array.isArray(data.items))
134
198
  allItems.push(...data.items);
199
+ if (data.deleted && Array.isArray(data.deleted)) {
200
+ allDeleted.push(...data.deleted);
201
+ }
135
202
  const newSyncToken = res.headers["x-next-sync-token"] || token;
136
203
  console.log(`[FETCH_MEDIA_SYNC] Next sync token: ${newSyncToken}`);
137
204
  if (!newSyncToken || newSyncToken === token) {
@@ -148,9 +215,10 @@ async function fetchMediaSync(syncToken) {
148
215
  throw error;
149
216
  }
150
217
  }
151
- console.log(`[FETCH_MEDIA_SYNC] Completed - Total items: ${allItems.length}`);
218
+ console.log(`[FETCH_MEDIA_SYNC] Completed - Total items: ${allItems.length}, deleted: ${allDeleted.length}`);
152
219
  return {
153
220
  items: allItems,
221
+ deleted: allDeleted,
154
222
  nextSyncToken: nextSyncToken || token,
155
223
  };
156
224
  }
@@ -176,6 +244,124 @@ async function fetchCMSConfigForEntities() {
176
244
  }
177
245
  return { content: false, media: false };
178
246
  }
247
+ /**
248
+ * Build an index mapping content IDs to their local file paths.
249
+ * Walks the directory tree once and parses every content file to extract its ID,
250
+ * so that subsequent lookups are O(1) instead of scanning the filesystem again.
251
+ */
252
+ async function buildContentIdIndex(dir) {
253
+ const index = new Map();
254
+ async function walk(currentDir) {
255
+ let entries;
256
+ try {
257
+ entries = await fs.readdir(currentDir, { withFileTypes: true });
258
+ }
259
+ catch (err) {
260
+ if (err.code !== 'ENOENT') {
261
+ console.warn(`Warning: Could not read directory ${currentDir}:`, err.message);
262
+ }
263
+ return;
264
+ }
265
+ for (const entry of entries) {
266
+ const fullPath = path.join(currentDir, entry.name);
267
+ if (entry.isDirectory()) {
268
+ await walk(fullPath);
269
+ }
270
+ else if (entry.isFile()) {
271
+ try {
272
+ const content = await fs.readFile(fullPath, "utf8");
273
+ const id = extractContentId(content);
274
+ if (id !== undefined) {
275
+ const existing = index.get(id);
276
+ if (existing) {
277
+ existing.push(fullPath);
278
+ }
279
+ else {
280
+ index.set(id, [fullPath]);
281
+ }
282
+ }
283
+ }
284
+ catch { /* skip unreadable files */ }
285
+ }
286
+ }
287
+ }
288
+ await walk(dir);
289
+ return index;
290
+ }
291
+ /**
292
+ * Extract the content ID from a file's text content.
293
+ * Supports both YAML frontmatter (`id: 42`) and JSON (`"id": 42`) formats.
294
+ * Returns the ID as a string, or undefined if not found.
295
+ */
296
+ function extractContentId(content) {
297
+ // YAML frontmatter: id: 42 or id: '42'
298
+ const yamlMatch = content.match(/(?:^|\n)id:\s*['"]?(\d+)['"]?(?:\n|$)/);
299
+ if (yamlMatch)
300
+ return yamlMatch[1];
301
+ // JSON: "id": 42 or "id": "42"
302
+ const jsonMatch = content.match(/"id"\s*:\s*['"]?(\d+)['"]?/);
303
+ if (jsonMatch)
304
+ return jsonMatch[1];
305
+ return undefined;
306
+ }
307
+ /**
308
+ * Delete all files associated with a given content ID using a pre-built index.
309
+ * Also removes the entry from the index so subsequent calls stay consistent.
310
+ */
311
+ async function deleteContentFilesById(index, idStr) {
312
+ const paths = index.get(idStr);
313
+ if (!paths || paths.length === 0)
314
+ return;
315
+ for (const filePath of paths) {
316
+ try {
317
+ await fs.unlink(filePath);
318
+ console.log(`Deleted: ${filePath}`);
319
+ }
320
+ catch (err) {
321
+ if (err.code !== 'ENOENT') {
322
+ console.warn(`Warning: Could not delete ${filePath}:`, err.message);
323
+ }
324
+ }
325
+ }
326
+ index.delete(idStr);
327
+ }
328
+ /**
329
+ * Recursively search for content files with a given ID and delete them.
330
+ * Used during sync to remove locally-cached content that was deleted remotely.
331
+ *
332
+ * Note: For batch operations prefer buildContentIdIndex() + deleteContentFilesById()
333
+ * to avoid repeated filesystem walks.
334
+ */
335
+ async function findAndDeleteContentFile(dir, idStr) {
336
+ try {
337
+ const entries = await fs.readdir(dir, { withFileTypes: true });
338
+ for (const entry of entries) {
339
+ const fullPath = path.join(dir, entry.name);
340
+ if (entry.isDirectory()) {
341
+ await findAndDeleteContentFile(fullPath, idStr);
342
+ }
343
+ else if (entry.isFile()) {
344
+ try {
345
+ const content = await fs.readFile(fullPath, "utf8");
346
+ // Exact-match YAML frontmatter: lines like `id: 10` or `id: '10'`
347
+ const yamlRegex = new RegExp(`(^|\\n)id:\\s*['\"]?${idStr}['\"]?(\\n|$)`);
348
+ // Exact-match JSON: "id": 10 or "id": "10"
349
+ const jsonRegex = new RegExp(`\\"id\\"\\s*:\\s*['\"]?${idStr}['\"]?\\s*(,|\\}|\\n|$)`);
350
+ if (yamlRegex.test(content) || jsonRegex.test(content)) {
351
+ await fs.unlink(fullPath);
352
+ console.log(`Deleted: ${fullPath}`);
353
+ }
354
+ }
355
+ catch { }
356
+ }
357
+ }
358
+ }
359
+ catch (err) {
360
+ if (err.code !== 'ENOENT') {
361
+ console.warn(`Warning: Could not read directory ${dir}:`, err.message);
362
+ }
363
+ }
364
+ }
179
365
  async function main() {
180
366
  // Log environment configuration for debugging
181
367
  console.log(`[ENV] LeadCMS URL: ${leadCMSUrl}`);
@@ -205,20 +391,20 @@ async function main() {
205
391
  await fs.mkdir(MEDIA_DIR, { recursive: true });
206
392
  }
207
393
  const typeMap = await fetchContentTypes();
208
- const lastSyncToken = await readSyncToken();
209
- const lastMediaSyncToken = await readMediaSyncToken();
210
- let items = [], deleted = [], nextSyncToken = "";
211
- let mediaItems = [], nextMediaSyncToken = "";
394
+ const { token: lastSyncToken, migrated: contentTokenMigrated } = await readSyncToken();
395
+ const { token: lastMediaSyncToken, migrated: mediaTokenMigrated } = await readMediaSyncToken();
396
+ let items = [], deleted = [], baseItems = {}, nextSyncToken = "";
397
+ let mediaItems = [], mediaDeleted = [], nextMediaSyncToken = "";
212
398
  // Sync content (only if supported)
213
399
  if (contentSupported) {
214
400
  try {
215
401
  if (lastSyncToken) {
216
402
  console.log(`Syncing content from LeadCMS using sync token: ${lastSyncToken}`);
217
- ({ items, deleted, nextSyncToken } = await fetchContentSync(lastSyncToken));
403
+ ({ items, deleted, baseItems, nextSyncToken } = await fetchContentSync(lastSyncToken));
218
404
  }
219
405
  else {
220
406
  console.log("No content sync token found. Doing full fetch from LeadCMS...");
221
- ({ items, deleted, nextSyncToken } = await fetchContentSync(undefined));
407
+ ({ items, deleted, baseItems, nextSyncToken } = await fetchContentSync(undefined));
222
408
  }
223
409
  }
224
410
  catch (error) {
@@ -234,11 +420,11 @@ async function main() {
234
420
  try {
235
421
  if (lastMediaSyncToken) {
236
422
  console.log(`Syncing media from LeadCMS using sync token: ${lastMediaSyncToken}`);
237
- ({ items: mediaItems, nextSyncToken: nextMediaSyncToken } = await fetchMediaSync(lastMediaSyncToken));
423
+ ({ items: mediaItems, deleted: mediaDeleted, nextSyncToken: nextMediaSyncToken } = await fetchMediaSync(lastMediaSyncToken));
238
424
  }
239
425
  else {
240
426
  console.log("No media sync token found. Doing full fetch from LeadCMS...");
241
- ({ items: mediaItems, nextSyncToken: nextMediaSyncToken } = await fetchMediaSync(undefined));
427
+ ({ items: mediaItems, deleted: mediaDeleted, nextSyncToken: nextMediaSyncToken } = await fetchMediaSync(undefined));
242
428
  }
243
429
  }
244
430
  catch (error) {
@@ -251,58 +437,112 @@ async function main() {
251
437
  }
252
438
  }
253
439
  console.log(`\x1b[32mFetched ${items.length} content items, ${deleted.length} deleted.\x1b[0m`);
254
- console.log(`\x1b[32mFetched ${mediaItems.length} media items.\x1b[0m`);
255
- // Save content files and collect all media URLs from content
256
- const allMediaUrls = new Set();
440
+ console.log(`\x1b[32mFetched ${mediaItems.length} media items, ${mediaDeleted.length} deleted.\x1b[0m`);
441
+ // Build an ID→filepath index once instead of walking the tree per item.
442
+ // This turns O(items × files) disk reads into O(files + items).
443
+ const contentIdIndex = (items.length > 0 || deleted.length > 0)
444
+ ? await buildContentIdIndex(CONTENT_DIR)
445
+ : new Map();
446
+ // Save content files (with three-way merge support)
447
+ const hasBaseItems = Object.keys(baseItems).length > 0;
448
+ let mergedCount = 0;
449
+ let conflictCount = 0;
450
+ let overwrittenCount = 0;
451
+ let newCount = 0;
452
+ // Build a ContentTypeMap for transformation
453
+ const contentTypeMap = {};
454
+ for (const [key, value] of Object.entries(typeMap)) {
455
+ contentTypeMap[key] = value === 'JSON' ? 'JSON' : 'MDX';
456
+ }
257
457
  for (const content of items) {
258
458
  if (content && typeof content === "object") {
259
- await saveContentFile({
260
- content,
261
- typeMap,
262
- contentDir: CONTENT_DIR,
263
- });
264
- for (const url of extractMediaUrlsFromContent(content)) {
265
- allMediaUrls.add(url);
459
+ const idStr = content.id != null ? String(content.id) : undefined;
460
+ // Determine the file path where this content would be saved
461
+ const contentConfig = getConfig();
462
+ const contentLanguage = content.language || contentConfig.defaultLanguage;
463
+ let targetContentDir = CONTENT_DIR;
464
+ if (contentLanguage !== contentConfig.defaultLanguage) {
465
+ targetContentDir = path.join(CONTENT_DIR, contentLanguage);
266
466
  }
267
- }
268
- }
269
- // Remove deleted content files from all language directories
270
- for (const id of deleted) {
271
- const idStr = String(id);
272
- // Function to recursively search for files in a directory
273
- async function findAndDeleteContentFile(dir) {
467
+ const contentType = contentTypeMap[content.type] || 'MDX';
468
+ const extension = contentType === 'MDX' ? '.mdx' : '.json';
469
+ const expectedPath = path.join(targetContentDir, `${content.slug}${extension}`);
470
+ // Check if local file exists before deleting old paths
471
+ let localContent = null;
274
472
  try {
275
- const entries = await fs.readdir(dir, { withFileTypes: true });
276
- for (const entry of entries) {
277
- const fullPath = path.join(dir, entry.name);
278
- if (entry.isDirectory()) {
279
- // Recursively search subdirectories
280
- await findAndDeleteContentFile(fullPath);
473
+ localContent = await fs.readFile(expectedPath, 'utf8');
474
+ }
475
+ catch {
476
+ // File does not exist — this is new content
477
+ }
478
+ // Before saving, remove any existing file with the same id.
479
+ // This handles slug renames, type changes (MDX↔JSON), and language
480
+ // changes — the old file at the previous path is cleaned up before the
481
+ // new version is written at the (potentially different) new path.
482
+ if (idStr != null) {
483
+ await deleteContentFilesById(contentIdIndex, idStr);
484
+ }
485
+ // Try three-way merge if we have a base version and local file exists
486
+ const baseContent = idStr ? baseItems[idStr] : undefined;
487
+ if (localContent && baseContent && hasBaseItems) {
488
+ // Transform both base and remote to local file format for comparison
489
+ const baseTransformed = await transformRemoteToLocalFormat(baseContent, contentTypeMap);
490
+ const remoteTransformed = await transformRemoteToLocalFormat(content, contentTypeMap);
491
+ if (!isLocallyModified(baseTransformed, localContent)) {
492
+ // Local file is unchanged from base — safe to overwrite with remote
493
+ await saveContentFile({ content, typeMap, contentDir: CONTENT_DIR });
494
+ overwrittenCount++;
495
+ }
496
+ else {
497
+ // Local file was modified — perform three-way merge
498
+ // Use structural merge for JSON (avoids false conflicts from adjacent lines)
499
+ // and line-based merge for MDX
500
+ const mergeResult = contentType === 'JSON'
501
+ ? threeWayMergeJson(baseTransformed, localContent, remoteTransformed)
502
+ : threeWayMerge(baseTransformed, localContent, remoteTransformed);
503
+ if (mergeResult.success) {
504
+ // Clean merge — write the merged result
505
+ await fs.mkdir(path.dirname(expectedPath), { recursive: true });
506
+ await fs.writeFile(expectedPath, mergeResult.merged, 'utf8');
507
+ console.log(`🔀 Auto-merged: ${content.slug} (local + remote changes combined)`);
508
+ mergedCount++;
281
509
  }
282
- else if (entry.isFile()) {
283
- try {
284
- const content = await fs.readFile(fullPath, "utf8");
285
- // Exact-match YAML frontmatter: lines like `id: 10` or `id: '10'`
286
- const yamlRegex = new RegExp(`(^|\\n)id:\\s*['\"]?${idStr}['\"]?(\\n|$)`);
287
- // Exact-match JSON: "id": 10 or "id": "10"
288
- const jsonRegex = new RegExp(`\\"id\\"\\s*:\\s*['\"]?${idStr}['\"]?\\s*(,|\\}|\\n|$)`);
289
- if (yamlRegex.test(content) || jsonRegex.test(content)) {
290
- await fs.unlink(fullPath);
291
- console.log(`Deleted: ${fullPath}`);
292
- }
293
- }
294
- catch { }
510
+ else {
511
+ // Conflicts — write merged content with conflict markers
512
+ await fs.mkdir(path.dirname(expectedPath), { recursive: true });
513
+ await fs.writeFile(expectedPath, mergeResult.merged, 'utf8');
514
+ console.warn(`⚠️ Conflict in: ${content.slug} (${mergeResult.conflictCount} conflict(s) — manual resolution needed)`);
515
+ conflictCount++;
295
516
  }
296
517
  }
297
518
  }
298
- catch (err) {
299
- // Directory might not exist, that's okay
300
- if (err.code !== 'ENOENT') {
301
- console.warn(`Warning: Could not read directory ${dir}:`, err.message);
519
+ else {
520
+ // No base available or file is new — overwrite (current behavior)
521
+ await saveContentFile({ content, typeMap, contentDir: CONTENT_DIR });
522
+ if (localContent) {
523
+ overwrittenCount++;
524
+ }
525
+ else {
526
+ newCount++;
302
527
  }
303
528
  }
304
529
  }
305
- await findAndDeleteContentFile(CONTENT_DIR);
530
+ }
531
+ // Print merge summary
532
+ if (hasBaseItems && items.length > 0) {
533
+ console.log(`\n📊 Content sync summary:`);
534
+ if (newCount > 0)
535
+ console.log(` ✨ New: ${newCount}`);
536
+ if (overwrittenCount > 0)
537
+ console.log(` 📝 Updated (no local changes): ${overwrittenCount}`);
538
+ if (mergedCount > 0)
539
+ console.log(` 🔀 Auto-merged: ${mergedCount}`);
540
+ if (conflictCount > 0)
541
+ console.log(` ⚠️ Conflicts (need manual resolution): ${conflictCount}`);
542
+ }
543
+ // Remove deleted content files from all language directories
544
+ for (const id of deleted) {
545
+ await deleteContentFilesById(contentIdIndex, String(id));
306
546
  }
307
547
  // Handle media sync results
308
548
  if (mediaItems.length > 0) {
@@ -325,6 +565,28 @@ async function main() {
325
565
  else {
326
566
  console.log(`\nNo media changes detected.\n`);
327
567
  }
568
+ // Remove deleted media files from local filesystem
569
+ if (mediaDeleted.length > 0) {
570
+ console.log(`\nRemoving ${mediaDeleted.length} deleted media files...`);
571
+ let removedCount = 0;
572
+ for (const deletedMedia of mediaDeleted) {
573
+ const relPath = deletedMedia.scopeUid
574
+ ? path.join(deletedMedia.scopeUid, deletedMedia.name)
575
+ : deletedMedia.name;
576
+ const fullPath = path.join(MEDIA_DIR, relPath);
577
+ try {
578
+ await fs.unlink(fullPath);
579
+ console.log(`Deleted media: ${fullPath}`);
580
+ removedCount++;
581
+ }
582
+ catch (err) {
583
+ if (err.code !== 'ENOENT') {
584
+ console.warn(`Warning: Could not delete media file ${fullPath}:`, err.message);
585
+ }
586
+ }
587
+ }
588
+ console.log(`Done. ${removedCount} media files removed.\n`);
589
+ }
328
590
  // Save new sync tokens
329
591
  if (nextSyncToken) {
330
592
  await writeSyncToken(nextSyncToken);
@@ -334,7 +596,19 @@ async function main() {
334
596
  await writeMediaSyncToken(nextMediaSyncToken);
335
597
  console.log(`Media sync token updated: ${nextMediaSyncToken}`);
336
598
  }
599
+ // Clean up legacy sync tokens after a successful pull
600
+ if (contentTokenMigrated) {
601
+ await cleanupLegacySyncToken();
602
+ console.log(`[SYNC] Removed legacy content sync token`);
603
+ }
604
+ if (mediaTokenMigrated) {
605
+ await cleanupLegacyMediaSyncToken();
606
+ console.log(`[SYNC] Removed legacy media sync token`);
607
+ }
337
608
  }
338
609
  // Export the main function so it can be imported by other modules
339
610
  export { main as fetchLeadCMSContent };
611
+ // Export internal functions for testing
612
+ export { findAndDeleteContentFile };
613
+ export { buildContentIdIndex, deleteContentFilesById, extractContentId };
340
614
  //# sourceMappingURL=fetch-leadcms-content.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fetch-leadcms-content.js","sourceRoot":"","sources":["../../src/scripts/fetch-leadcms-content.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fetch-leadcms-content.js","sourceRoot":"","sources":["../../src/scripts/fetch-leadcms-content.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,14 @@
1
- export {};
1
+ /**
2
+ * Filter environment variables by prefix (e.g. NEXT_PUBLIC_)
3
+ */
4
+ export declare function filterEnvVars(env: Record<string, string | undefined>, prefix?: string): Record<string, string | undefined>;
5
+ /**
6
+ * Generate the window.__env JS content string
7
+ */
8
+ export declare function generateEnvJsContent(vars: Record<string, string | undefined>): string;
9
+ /**
10
+ * Generate a __env.js file with all environment variables matching the prefix.
11
+ * Loads .env and .env.local files, filters by prefix, and writes to public/__env.js.
12
+ */
13
+ export declare function generateEnv(prefix?: string): void;
2
14
  //# sourceMappingURL=generate-env-js.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generate-env-js.d.ts","sourceRoot":"","sources":["../../src/scripts/generate-env-js.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"generate-env-js.d.ts","sourceRoot":"","sources":["../../src/scripts/generate-env-js.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EAAE,MAAM,GAAE,MAAuB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAO1I;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG,MAAM,CAErF;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,MAAM,GAAE,MAAuB,GAAG,IAAI,CAajE"}