@leadcms/sdk 3.4.0 → 3.5.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 (145) hide show
  1. package/dist/cli/bin/login.js +1 -1
  2. package/dist/cli/bin/login.js.map +1 -1
  3. package/dist/cli/bin/pull-all.js +4 -2
  4. package/dist/cli/bin/pull-all.js.map +1 -1
  5. package/dist/cli/bin/pull-comments.js +3 -1
  6. package/dist/cli/bin/pull-comments.js.map +1 -1
  7. package/dist/cli/bin/pull-content.js +4 -2
  8. package/dist/cli/bin/pull-content.js.map +1 -1
  9. package/dist/cli/bin/pull-email-templates.js +3 -1
  10. package/dist/cli/bin/pull-email-templates.js.map +1 -1
  11. package/dist/cli/bin/pull-media.js +3 -1
  12. package/dist/cli/bin/pull-media.js.map +1 -1
  13. package/dist/cli/bin/pull-settings.js +2 -0
  14. package/dist/cli/bin/pull-settings.js.map +1 -1
  15. package/dist/cli/bin/push-all.js +4 -1
  16. package/dist/cli/bin/push-all.js.map +1 -1
  17. package/dist/cli/bin/push-comments.js +2 -0
  18. package/dist/cli/bin/push-comments.js.map +1 -1
  19. package/dist/cli/bin/push-content.js +5 -3
  20. package/dist/cli/bin/push-content.js.map +1 -1
  21. package/dist/cli/bin/push-email-templates.js +3 -1
  22. package/dist/cli/bin/push-email-templates.js.map +1 -1
  23. package/dist/cli/bin/push-media.js +2 -0
  24. package/dist/cli/bin/push-media.js.map +1 -1
  25. package/dist/cli/bin/push-settings.js +2 -0
  26. package/dist/cli/bin/push-settings.js.map +1 -1
  27. package/dist/cli/bin/push.js +5 -3
  28. package/dist/cli/bin/push.js.map +1 -1
  29. package/dist/cli/bin/remote-flag.d.ts +17 -0
  30. package/dist/cli/bin/remote-flag.d.ts.map +1 -0
  31. package/dist/cli/bin/remote-flag.js +50 -0
  32. package/dist/cli/bin/remote-flag.js.map +1 -0
  33. package/dist/cli/bin/remote.d.ts +14 -0
  34. package/dist/cli/bin/remote.d.ts.map +1 -0
  35. package/dist/cli/bin/remote.js +291 -0
  36. package/dist/cli/bin/remote.js.map +1 -0
  37. package/dist/cli/bin/status-all.js +4 -2
  38. package/dist/cli/bin/status-all.js.map +1 -1
  39. package/dist/cli/bin/status-comments.js +2 -0
  40. package/dist/cli/bin/status-comments.js.map +1 -1
  41. package/dist/cli/bin/status-content.js +4 -2
  42. package/dist/cli/bin/status-content.js.map +1 -1
  43. package/dist/cli/bin/status-email-templates.js +3 -1
  44. package/dist/cli/bin/status-email-templates.js.map +1 -1
  45. package/dist/cli/bin/status-media.js +2 -0
  46. package/dist/cli/bin/status-media.js.map +1 -1
  47. package/dist/cli/bin/status-settings.js +2 -0
  48. package/dist/cli/bin/status-settings.js.map +1 -1
  49. package/dist/cli/bin/status.js +5 -2
  50. package/dist/cli/bin/status.js.map +1 -1
  51. package/dist/cli/bin/watch.js +6 -3
  52. package/dist/cli/bin/watch.js.map +1 -1
  53. package/dist/cli/index.js +47 -10
  54. package/dist/cli/index.js.map +1 -1
  55. package/dist/index.js +0 -1
  56. package/dist/index.js.map +1 -1
  57. package/dist/lib/auth.d.ts +1 -1
  58. package/dist/lib/auth.d.ts.map +1 -1
  59. package/dist/lib/auth.js +5 -5
  60. package/dist/lib/auth.js.map +1 -1
  61. package/dist/lib/config.d.ts +6 -1
  62. package/dist/lib/config.d.ts.map +1 -1
  63. package/dist/lib/config.js +37 -4
  64. package/dist/lib/config.js.map +1 -1
  65. package/dist/lib/content-transformation.d.ts +5 -0
  66. package/dist/lib/content-transformation.d.ts.map +1 -1
  67. package/dist/lib/content-transformation.js +49 -2
  68. package/dist/lib/content-transformation.js.map +1 -1
  69. package/dist/lib/data-service.d.ts +6 -0
  70. package/dist/lib/data-service.d.ts.map +1 -1
  71. package/dist/lib/data-service.js +11 -0
  72. package/dist/lib/data-service.js.map +1 -1
  73. package/dist/lib/remote-context.d.ts +98 -0
  74. package/dist/lib/remote-context.d.ts.map +1 -0
  75. package/dist/lib/remote-context.js +297 -0
  76. package/dist/lib/remote-context.js.map +1 -0
  77. package/dist/scripts/init-leadcms.d.ts.map +1 -1
  78. package/dist/scripts/init-leadcms.js +127 -15
  79. package/dist/scripts/init-leadcms.js.map +1 -1
  80. package/dist/scripts/leadcms-helpers.d.ts +16 -5
  81. package/dist/scripts/leadcms-helpers.d.ts.map +1 -1
  82. package/dist/scripts/leadcms-helpers.js +31 -8
  83. package/dist/scripts/leadcms-helpers.js.map +1 -1
  84. package/dist/scripts/login-leadcms.d.ts +4 -1
  85. package/dist/scripts/login-leadcms.d.ts.map +1 -1
  86. package/dist/scripts/login-leadcms.js +45 -6
  87. package/dist/scripts/login-leadcms.js.map +1 -1
  88. package/dist/scripts/pull-all.d.ts +14 -6
  89. package/dist/scripts/pull-all.d.ts.map +1 -1
  90. package/dist/scripts/pull-all.js +86 -33
  91. package/dist/scripts/pull-all.js.map +1 -1
  92. package/dist/scripts/pull-comments.d.ts +3 -0
  93. package/dist/scripts/pull-comments.d.ts.map +1 -1
  94. package/dist/scripts/pull-comments.js +4 -4
  95. package/dist/scripts/pull-comments.js.map +1 -1
  96. package/dist/scripts/pull-content.d.ts +3 -0
  97. package/dist/scripts/pull-content.d.ts.map +1 -1
  98. package/dist/scripts/pull-content.js +7 -6
  99. package/dist/scripts/pull-content.js.map +1 -1
  100. package/dist/scripts/pull-email-templates.d.ts +3 -0
  101. package/dist/scripts/pull-email-templates.d.ts.map +1 -1
  102. package/dist/scripts/pull-email-templates.js +4 -4
  103. package/dist/scripts/pull-email-templates.js.map +1 -1
  104. package/dist/scripts/{fetch-leadcms-comments.d.ts → pull-leadcms-comments.d.ts} +7 -6
  105. package/dist/scripts/pull-leadcms-comments.d.ts.map +1 -0
  106. package/dist/scripts/{fetch-leadcms-comments.js → pull-leadcms-comments.js} +56 -28
  107. package/dist/scripts/pull-leadcms-comments.js.map +1 -0
  108. package/dist/scripts/{fetch-leadcms-content.d.ts → pull-leadcms-content.d.ts} +13 -19
  109. package/dist/scripts/pull-leadcms-content.d.ts.map +1 -0
  110. package/dist/scripts/{fetch-leadcms-content.js → pull-leadcms-content.js} +121 -250
  111. package/dist/scripts/pull-leadcms-content.js.map +1 -0
  112. package/dist/scripts/{fetch-leadcms-email-templates.d.ts → pull-leadcms-email-templates.d.ts} +5 -4
  113. package/dist/scripts/pull-leadcms-email-templates.d.ts.map +1 -0
  114. package/dist/scripts/{fetch-leadcms-email-templates.js → pull-leadcms-email-templates.js} +89 -11
  115. package/dist/scripts/pull-leadcms-email-templates.js.map +1 -0
  116. package/dist/scripts/pull-leadcms-media.d.ts +32 -0
  117. package/dist/scripts/pull-leadcms-media.d.ts.map +1 -0
  118. package/dist/scripts/pull-leadcms-media.js +229 -0
  119. package/dist/scripts/pull-leadcms-media.js.map +1 -0
  120. package/dist/scripts/pull-media.d.ts +4 -1
  121. package/dist/scripts/pull-media.d.ts.map +1 -1
  122. package/dist/scripts/pull-media.js +4 -4
  123. package/dist/scripts/pull-media.js.map +1 -1
  124. package/dist/scripts/push-comments.js +3 -3
  125. package/dist/scripts/push-comments.js.map +1 -1
  126. package/dist/scripts/push-email-templates.d.ts +6 -1
  127. package/dist/scripts/push-email-templates.d.ts.map +1 -1
  128. package/dist/scripts/push-email-templates.js +96 -21
  129. package/dist/scripts/push-email-templates.js.map +1 -1
  130. package/dist/scripts/push-leadcms-content.d.ts +9 -3
  131. package/dist/scripts/push-leadcms-content.d.ts.map +1 -1
  132. package/dist/scripts/push-leadcms-content.js +110 -36
  133. package/dist/scripts/push-leadcms-content.js.map +1 -1
  134. package/dist/scripts/sse-watcher.d.ts +9 -8
  135. package/dist/scripts/sse-watcher.d.ts.map +1 -1
  136. package/dist/scripts/sse-watcher.js +59 -52
  137. package/dist/scripts/sse-watcher.js.map +1 -1
  138. package/leadcms.config.json.sample +12 -1
  139. package/package.json +2 -3
  140. package/dist/scripts/fetch-leadcms-comments.d.ts.map +0 -1
  141. package/dist/scripts/fetch-leadcms-comments.js.map +0 -1
  142. package/dist/scripts/fetch-leadcms-content.d.ts.map +0 -1
  143. package/dist/scripts/fetch-leadcms-content.js.map +0 -1
  144. package/dist/scripts/fetch-leadcms-email-templates.d.ts.map +0 -1
  145. package/dist/scripts/fetch-leadcms-email-templates.js.map +0 -1
@@ -6,6 +6,7 @@ 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
8
  import { logger } from "../lib/logger.js";
9
+ import { syncTokenPath } from "../lib/remote-context.js";
9
10
  // Load config to get commentsDir
10
11
  const config = getConfig();
11
12
  const COMMENTS_DIR = path.resolve(config.commentsDir);
@@ -17,8 +18,28 @@ const LEGACY_COMMENT_SYNC_TOKEN_PATH = path.join(path.dirname(COMMENTS_DIR), "co
17
18
  /**
18
19
  * Read the last comment sync token from disk.
19
20
  * Checks new location first, then falls back to legacy for migration.
21
+ * When remoteCtx is provided, reads from the remote-specific state directory.
20
22
  */
21
- async function readCommentSyncToken() {
23
+ async function readCommentSyncToken(remoteCtx) {
24
+ if (remoteCtx) {
25
+ const tokenPath = syncTokenPath(remoteCtx, "comments");
26
+ try {
27
+ const token = (await fs.readFile(tokenPath, "utf8")).trim();
28
+ if (token)
29
+ return { token, migrated: false };
30
+ }
31
+ catch { /* not found */ }
32
+ // Migration: check old single-remote path and move to per-remote path
33
+ try {
34
+ const legacyToken = (await fs.readFile(COMMENT_SYNC_TOKEN_PATH, "utf8")).trim();
35
+ if (legacyToken) {
36
+ logger.verbose(`[SYNC] Migrating comment sync token to remote "${remoteCtx.name}"`);
37
+ return { token: legacyToken, migrated: true };
38
+ }
39
+ }
40
+ catch { /* not found */ }
41
+ return { token: undefined, migrated: false };
42
+ }
22
43
  try {
23
44
  const token = (await fs.readFile(COMMENT_SYNC_TOKEN_PATH, "utf8")).trim();
24
45
  if (token)
@@ -36,9 +57,16 @@ async function readCommentSyncToken() {
36
57
  return { token: undefined, migrated: false };
37
58
  }
38
59
  /**
39
- * Write the comment sync token to disk (new location inside commentsDir)
60
+ * Write the comment sync token to disk.
61
+ * When remoteCtx is provided, writes to the remote-specific state directory.
40
62
  */
41
- async function writeCommentSyncToken(token) {
63
+ async function writeCommentSyncToken(token, remoteCtx) {
64
+ if (remoteCtx) {
65
+ const tokenPath = syncTokenPath(remoteCtx, "comments");
66
+ await fs.mkdir(path.dirname(tokenPath), { recursive: true });
67
+ await fs.writeFile(tokenPath, token, "utf8");
68
+ return;
69
+ }
42
70
  await fs.mkdir(path.dirname(COMMENT_SYNC_TOKEN_PATH), { recursive: true });
43
71
  await fs.writeFile(COMMENT_SYNC_TOKEN_PATH, token, "utf8");
44
72
  }
@@ -52,12 +80,12 @@ async function cleanupLegacyCommentSyncToken() {
52
80
  catch { /* not found — ok */ }
53
81
  }
54
82
  /**
55
- * Fetch comments from LeadCMS sync endpoint
83
+ * Pull comments from LeadCMS sync endpoint
56
84
  * Handles pagination automatically
57
85
  */
58
- async function fetchCommentSync(syncToken) {
59
- logger.verbose(`[FETCH_COMMENT_SYNC] Starting with syncToken: ${syncToken || "NONE"}`);
60
- logger.verbose(`[FETCH_COMMENT_SYNC] Fetching public comments (no authentication)`);
86
+ async function pullCommentSync(syncToken) {
87
+ logger.verbose(`[PULL_COMMENT_SYNC] Starting with syncToken: ${syncToken || "NONE"}`);
88
+ logger.verbose(`[PULL_COMMENT_SYNC] Pulling public comments (no authentication)`);
61
89
  let allItems = [];
62
90
  let allDeleted = [];
63
91
  let token = syncToken || "";
@@ -67,7 +95,7 @@ async function fetchCommentSync(syncToken) {
67
95
  const url = new URL("/api/comments/sync", leadCMSUrl);
68
96
  url.searchParams.set("filter[limit]", "100");
69
97
  url.searchParams.set("syncToken", token);
70
- logger.verbose(`[FETCH_COMMENT_SYNC] Page ${page}, URL: ${url.toString()}`);
98
+ logger.verbose(`[PULL_COMMENT_SYNC] Page ${page}, URL: ${url.toString()}`);
71
99
  try {
72
100
  // SECURITY: Never send API key for read operations
73
101
  // Comments sync should only return public comments
@@ -75,21 +103,21 @@ async function fetchCommentSync(syncToken) {
75
103
  headers: {},
76
104
  });
77
105
  if (res.status === 204) {
78
- logger.verbose(`[FETCH_COMMENT_SYNC] Got 204 No Content - ending sync`);
106
+ logger.verbose(`[PULL_COMMENT_SYNC] Got 204 No Content - ending sync`);
79
107
  break;
80
108
  }
81
109
  const data = res.data;
82
- logger.verbose(`[FETCH_COMMENT_SYNC] Page ${page} - Got ${data.items?.length || 0} items, ${data.deleted?.length || 0} deleted`);
110
+ logger.verbose(`[PULL_COMMENT_SYNC] Page ${page} - Got ${data.items?.length || 0} items, ${data.deleted?.length || 0} deleted`);
83
111
  if (data.items && Array.isArray(data.items))
84
112
  allItems.push(...data.items);
85
113
  if (data.deleted && Array.isArray(data.deleted)) {
86
114
  allDeleted.push(...data.deleted);
87
115
  }
88
116
  const newSyncToken = res.headers["x-next-sync-token"] || token;
89
- logger.verbose(`[FETCH_COMMENT_SYNC] Next sync token: ${newSyncToken}`);
117
+ logger.verbose(`[PULL_COMMENT_SYNC] Next sync token: ${newSyncToken}`);
90
118
  if (!newSyncToken || newSyncToken === token) {
91
119
  nextSyncToken = newSyncToken || token;
92
- logger.verbose(`[FETCH_COMMENT_SYNC] No new sync token - ending sync`);
120
+ logger.verbose(`[PULL_COMMENT_SYNC] No new sync token - ending sync`);
93
121
  break;
94
122
  }
95
123
  nextSyncToken = newSyncToken;
@@ -97,7 +125,7 @@ async function fetchCommentSync(syncToken) {
97
125
  page++;
98
126
  }
99
127
  catch (error) {
100
- console.error(`[FETCH_COMMENT_SYNC] Failed on page ${page}:`, error.message);
128
+ console.error(`[PULL_COMMENT_SYNC] Failed on page ${page}:`, error.message);
101
129
  // Provide helpful error messages based on status code
102
130
  if (error.response?.status === 403) {
103
131
  console.error(`\nā›” Access Denied (403 Forbidden)`);
@@ -120,7 +148,7 @@ async function fetchCommentSync(syncToken) {
120
148
  throw error;
121
149
  }
122
150
  }
123
- logger.verbose(`[FETCH_COMMENT_SYNC] Completed - Total items: ${allItems.length}, deleted: ${allDeleted.length}`);
151
+ logger.verbose(`[PULL_COMMENT_SYNC] Completed - Total items: ${allItems.length}, deleted: ${allDeleted.length}`);
124
152
  return {
125
153
  items: allItems,
126
154
  deleted: allDeleted,
@@ -270,7 +298,7 @@ function groupCommentsByEntityAndLanguage(comments) {
270
298
  return grouped;
271
299
  }
272
300
  /**
273
- * Fetch CMS config to check if comments are supported
301
+ * Check CMS config to check if comments are supported
274
302
  */
275
303
  async function fetchCMSConfigForEntity() {
276
304
  try {
@@ -284,15 +312,15 @@ async function fetchCMSConfigForEntity() {
284
312
  }
285
313
  }
286
314
  catch (error) {
287
- console.warn(`[FETCH_COMMENT_SYNC] Could not fetch CMS config: ${error.message}`);
288
- console.warn(`[FETCH_COMMENT_SYNC] Assuming comments are supported (backward compatibility)`);
315
+ console.warn(`[PULL_COMMENT_SYNC] Could not fetch CMS config: ${error.message}`);
316
+ console.warn(`[PULL_COMMENT_SYNC] Assuming comments are supported (backward compatibility)`);
289
317
  }
290
318
  return false;
291
319
  }
292
320
  /**
293
321
  * Main function to sync comments from LeadCMS
294
322
  */
295
- export async function main() {
323
+ export async function main(remoteCtx) {
296
324
  logger.verbose(`[ENV] LeadCMS URL: ${leadCMSUrl}`);
297
325
  logger.verbose(`[ENV] LeadCMS API Key: ${leadCMSApiKey ? 'CONFIGURED (ignored for anonymous comment pull)' : 'NOT_SET'}`);
298
326
  logger.verbose(`[ENV] Comments Dir: ${COMMENTS_DIR}`);
@@ -305,22 +333,22 @@ export async function main() {
305
333
  }
306
334
  logger.verbose(`āœ… Comments supported - proceeding with sync\n`);
307
335
  await fs.mkdir(COMMENTS_DIR, { recursive: true });
308
- const { token: lastSyncToken, migrated: commentTokenMigrated } = await readCommentSyncToken();
336
+ const { token: lastSyncToken, migrated: commentTokenMigrated } = await readCommentSyncToken(remoteCtx);
309
337
  let items = [], deleted = [], nextSyncToken = "";
310
338
  try {
311
339
  if (lastSyncToken) {
312
340
  logger.verbose(`Syncing comments from LeadCMS using sync token: ${lastSyncToken}`);
313
- ({ items, deleted, nextSyncToken } = await fetchCommentSync(lastSyncToken));
341
+ ({ items, deleted, nextSyncToken } = await pullCommentSync(lastSyncToken));
314
342
  }
315
343
  else {
316
- logger.verbose("No comment sync token found. Doing full fetch from LeadCMS...");
317
- ({ items, deleted, nextSyncToken } = await fetchCommentSync(undefined));
344
+ logger.verbose("No comment sync token found. Doing full pull from LeadCMS...");
345
+ ({ items, deleted, nextSyncToken } = await pullCommentSync(undefined));
318
346
  }
319
347
  }
320
348
  catch (error) {
321
349
  console.error(`\nāŒ Failed to sync comments from LeadCMS`);
322
350
  console.error(` Error: ${error.message}`);
323
- // Error details are already logged by fetchCommentSync
351
+ // Error details are already logged by pullCommentSync
324
352
  // Just provide a summary here
325
353
  if (error.response?.status === 403 || error.response?.status === 401) {
326
354
  console.error(`\nšŸ’” This may be a LeadCMS configuration issue.`);
@@ -328,7 +356,7 @@ export async function main() {
328
356
  }
329
357
  throw error;
330
358
  }
331
- console.log(`\x1b[32mFetched ${items.length} comment items, ${deleted.length} deleted.\x1b[0m`);
359
+ console.log(`\x1b[32mPulled ${items.length} comment items, ${deleted.length} deleted.\x1b[0m`);
332
360
  // Process updated/new comments
333
361
  if (items.length > 0) {
334
362
  const groupedComments = groupCommentsByEntityAndLanguage(items);
@@ -358,7 +386,7 @@ export async function main() {
358
386
  }
359
387
  // Save new sync token
360
388
  if (nextSyncToken) {
361
- await writeCommentSyncToken(nextSyncToken);
389
+ await writeCommentSyncToken(nextSyncToken, remoteCtx);
362
390
  logger.verbose(`Comment sync token updated: ${nextSyncToken}`);
363
391
  }
364
392
  // Clean up legacy sync token after successful migration
@@ -369,9 +397,9 @@ export async function main() {
369
397
  console.log(`\nComment sync completed successfully.`);
370
398
  }
371
399
  // Export the main function so it can be imported by other modules
372
- export { main as fetchLeadCMSComments };
400
+ export { main as pullLeadCMSComments };
373
401
  // Note: CLI execution moved to CLI entry points
374
402
  // This file now only exports the function for programmatic use
375
403
  // Export helper functions for testing
376
- export { fetchCommentSync, loadCommentsForEntity, saveCommentsForEntity, groupCommentsByEntityAndLanguage, toStoredComment, deleteComment, };
377
- //# sourceMappingURL=fetch-leadcms-comments.js.map
404
+ export { pullCommentSync, loadCommentsForEntity, saveCommentsForEntity, groupCommentsByEntityAndLanguage, toStoredComment, deleteComment, };
405
+ //# sourceMappingURL=pull-leadcms-comments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pull-leadcms-comments.js","sourceRoot":"","sources":["../../src/scripts/pull-leadcms-comments.ts"],"names":[],"mappings":"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"}
@@ -1,23 +1,22 @@
1
1
  import "dotenv/config";
2
2
  import { ContentItem } from "./leadcms-helpers.js";
3
+ import type { RemoteContext } from "../lib/remote-context.js";
3
4
  /**
4
- * Options for fetchLeadCMSContent.
5
+ * Options for pullLeadCMSContent.
5
6
  */
6
- export interface FetchContentOptions {
7
+ export interface PullContentOptions {
7
8
  /**
8
9
  * When true, skip three-way merge logic and always overwrite local files
9
10
  * with remote content. This is used in watch mode (SSE watcher) to prevent
10
11
  * merge conflicts caused by rapid sequential/concurrent syncs.
11
12
  */
12
13
  forceOverwrite?: boolean;
13
- }
14
- interface MediaItem {
15
- location?: string;
16
- [key: string]: any;
17
- }
18
- interface MediaDeletedItem {
19
- scopeUid: string;
20
- name: string;
14
+ /**
15
+ * Remote context for multi-remote support. When provided, sync tokens and
16
+ * API calls use this remote's URL and per-remote state directory.
17
+ * When omitted, falls back to single-remote behavior (backward compat).
18
+ */
19
+ remoteContext?: RemoteContext;
21
20
  }
22
21
  interface ContentSyncResult {
23
22
  items: ContentItem[];
@@ -25,11 +24,6 @@ interface ContentSyncResult {
25
24
  baseItems: Record<string, ContentItem>;
26
25
  nextSyncToken: string;
27
26
  }
28
- interface MediaSyncResult {
29
- items: MediaItem[];
30
- deleted: MediaDeletedItem[];
31
- nextSyncToken: string;
32
- }
33
27
  /**
34
28
  * A map from content ID (as string) to an array of file paths containing that ID.
35
29
  */
@@ -59,9 +53,9 @@ declare function deleteContentFilesById(index: ContentIdIndex, idStr: string): P
59
53
  * to avoid repeated filesystem walks.
60
54
  */
61
55
  declare function findAndDeleteContentFile(dir: string, idStr: string): Promise<void>;
62
- declare function main(options?: FetchContentOptions): Promise<void>;
63
- export { main as fetchLeadCMSContent };
56
+ declare function main(options?: PullContentOptions): Promise<void>;
57
+ export { main as pullLeadCMSContent };
64
58
  export { findAndDeleteContentFile };
65
59
  export { buildContentIdIndex, deleteContentFilesById, extractContentId };
66
- export type { ContentSyncResult, MediaSyncResult, MediaItem, MediaDeletedItem };
67
- //# sourceMappingURL=fetch-leadcms-content.d.ts.map
60
+ export type { ContentSyncResult };
61
+ //# sourceMappingURL=pull-leadcms-content.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pull-leadcms-content.d.ts","sourceRoot":"","sources":["../../src/scripts/pull-leadcms-content.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AAIvB,OAAO,EAML,WAAW,EACZ,MAAM,sBAAsB,CAAC;AAK9B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAG9D;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;;OAIG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AAUD,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;AA+JD;;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,kBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgPnE;AAGD,OAAO,EAAE,IAAI,IAAI,kBAAkB,EAAE,CAAC;AAGtC,OAAO,EAAE,wBAAwB,EAAE,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,CAAC;AAMzE,YAAY,EAAE,iBAAiB,EAAE,CAAC"}