@leadcms/sdk 2.1.4 → 2.2.1

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 (76) hide show
  1. package/README.md +331 -6
  2. package/dist/cli/index.js +97 -68
  3. package/dist/cli/index.js.map +1 -1
  4. package/dist/index.d.ts +4 -0
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +29 -2
  7. package/dist/index.js.map +1 -1
  8. package/dist/lib/auth.d.ts +55 -0
  9. package/dist/lib/auth.d.ts.map +1 -0
  10. package/dist/lib/auth.js +204 -0
  11. package/dist/lib/auth.js.map +1 -0
  12. package/dist/lib/cms-config-types.d.ts +57 -0
  13. package/dist/lib/cms-config-types.d.ts.map +1 -0
  14. package/dist/lib/cms-config-types.js +64 -0
  15. package/dist/lib/cms-config-types.js.map +1 -0
  16. package/dist/lib/cms.d.ts +52 -0
  17. package/dist/lib/cms.d.ts.map +1 -1
  18. package/dist/lib/cms.js +113 -0
  19. package/dist/lib/cms.js.map +1 -1
  20. package/dist/lib/comment-types.d.ts +73 -0
  21. package/dist/lib/comment-types.d.ts.map +1 -0
  22. package/dist/lib/comment-types.js +6 -0
  23. package/dist/lib/comment-types.js.map +1 -0
  24. package/dist/lib/comment-utils.d.ts +173 -0
  25. package/dist/lib/comment-utils.d.ts.map +1 -0
  26. package/dist/lib/comment-utils.js +338 -0
  27. package/dist/lib/comment-utils.js.map +1 -0
  28. package/dist/lib/config.d.ts +4 -2
  29. package/dist/lib/config.d.ts.map +1 -1
  30. package/dist/lib/config.js +10 -4
  31. package/dist/lib/config.js.map +1 -1
  32. package/dist/lib/content-api-formatting.d.ts.map +1 -1
  33. package/dist/lib/content-api-formatting.js +5 -0
  34. package/dist/lib/content-api-formatting.js.map +1 -1
  35. package/dist/lib/data-service.d.ts.map +1 -1
  36. package/dist/lib/data-service.js +72 -6
  37. package/dist/lib/data-service.js.map +1 -1
  38. package/dist/scripts/fetch-leadcms-comments.d.ts +26 -0
  39. package/dist/scripts/fetch-leadcms-comments.d.ts.map +1 -0
  40. package/dist/scripts/fetch-leadcms-comments.js +352 -0
  41. package/dist/scripts/fetch-leadcms-comments.js.map +1 -0
  42. package/dist/scripts/fetch-leadcms-content.d.ts.map +1 -1
  43. package/dist/scripts/fetch-leadcms-content.js +86 -39
  44. package/dist/scripts/fetch-leadcms-content.js.map +1 -1
  45. package/dist/scripts/init-leadcms.d.ts +7 -0
  46. package/dist/scripts/init-leadcms.d.ts.map +1 -0
  47. package/dist/scripts/init-leadcms.js +397 -0
  48. package/dist/scripts/init-leadcms.js.map +1 -0
  49. package/dist/scripts/leadcms-helpers.d.ts +2 -2
  50. package/dist/scripts/leadcms-helpers.d.ts.map +1 -1
  51. package/dist/scripts/leadcms-helpers.js +12 -7
  52. package/dist/scripts/leadcms-helpers.js.map +1 -1
  53. package/dist/scripts/login-leadcms.d.ts +10 -0
  54. package/dist/scripts/login-leadcms.d.ts.map +1 -0
  55. package/dist/scripts/login-leadcms.js +90 -0
  56. package/dist/scripts/login-leadcms.js.map +1 -0
  57. package/dist/scripts/pull-all.d.ts +12 -0
  58. package/dist/scripts/pull-all.d.ts.map +1 -0
  59. package/dist/scripts/pull-all.js +81 -0
  60. package/dist/scripts/pull-all.js.map +1 -0
  61. package/dist/scripts/pull-comments.d.ts +11 -0
  62. package/dist/scripts/pull-comments.d.ts.map +1 -0
  63. package/dist/scripts/pull-comments.js +45 -0
  64. package/dist/scripts/pull-comments.js.map +1 -0
  65. package/dist/scripts/pull-content.d.ts +11 -0
  66. package/dist/scripts/pull-content.d.ts.map +1 -0
  67. package/dist/scripts/pull-content.js +45 -0
  68. package/dist/scripts/pull-content.js.map +1 -0
  69. package/dist/scripts/pull-media.d.ts +12 -0
  70. package/dist/scripts/pull-media.d.ts.map +1 -0
  71. package/dist/scripts/pull-media.js +46 -0
  72. package/dist/scripts/pull-media.js.map +1 -0
  73. package/dist/scripts/push-leadcms-content.d.ts.map +1 -1
  74. package/dist/scripts/push-leadcms-content.js +35 -13
  75. package/dist/scripts/push-leadcms-content.js.map +1 -1
  76. package/package.json +1 -1
@@ -0,0 +1,90 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * LeadCMS Login - Interactive token-based authentication
4
+ */
5
+ import { config as dotenvConfig } from 'dotenv';
6
+ import { getConfig } from '../lib/config.js';
7
+ import { authenticate, saveTokenToEnv } from '../lib/auth.js';
8
+ import axios from 'axios';
9
+ import * as readline from 'readline';
10
+ // Load environment variables from .env file
11
+ dotenvConfig();
12
+ /**
13
+ * Prompt user for input
14
+ */
15
+ function prompt(question) {
16
+ const rl = readline.createInterface({
17
+ input: process.stdin,
18
+ output: process.stdout,
19
+ });
20
+ return new Promise((resolve) => {
21
+ rl.question(question, (answer) => {
22
+ rl.close();
23
+ resolve(answer.trim());
24
+ });
25
+ });
26
+ }
27
+ /**
28
+ * Interactive login flow
29
+ */
30
+ async function main() {
31
+ let leadCMSUrl;
32
+ // Try to get URL from config file first
33
+ try {
34
+ const config = getConfig();
35
+ leadCMSUrl = config.url;
36
+ }
37
+ catch (error) {
38
+ // Config file not found or invalid, try environment variable
39
+ leadCMSUrl = process.env.LEADCMS_URL;
40
+ }
41
+ if (!leadCMSUrl) {
42
+ console.log('\nāŒ LeadCMS URL is not configured.');
43
+ console.log('\nšŸ’” Options:');
44
+ console.log(' 1. Run: leadcms init (to create a config file)');
45
+ console.log(' 2. Or set LEADCMS_URL in your .env file\n');
46
+ return;
47
+ }
48
+ try {
49
+ // Use shared authentication function
50
+ const { token, user } = await authenticate(leadCMSUrl, prompt);
51
+ // Save to .env
52
+ saveTokenToEnv(token);
53
+ console.log('āœ… Token verified and saved to .env file!');
54
+ console.log(`\nšŸ‘¤ Successfully logged in as: ${user.displayName || user.userName}`);
55
+ console.log(` Email: ${user.email}`);
56
+ console.log('\nāœ… You can now use commands like:');
57
+ console.log(' • leadcms push - Push local changes to LeadCMS');
58
+ console.log(' • leadcms pull - Pull content from LeadCMS');
59
+ console.log(' • leadcms status - Check sync status\n');
60
+ }
61
+ catch (error) {
62
+ if (axios.isAxiosError(error)) {
63
+ if (error.response?.status === 401) {
64
+ console.log('\nāŒ Authentication failed: Invalid token');
65
+ console.log(' Please make sure you copied the token correctly.\n');
66
+ }
67
+ else if (error.response?.status === 404) {
68
+ console.log('\nāŒ User not found');
69
+ console.log(' The token is valid but the user account may not exist.\n');
70
+ }
71
+ else {
72
+ console.log(`\nāŒ Error: ${error.response?.statusText || error.message}`);
73
+ console.log(' Please try again or contact support.\n');
74
+ }
75
+ }
76
+ else {
77
+ console.log(`\nāŒ ${error.message}\n`);
78
+ }
79
+ process.exit(1);
80
+ }
81
+ }
82
+ // Handle direct script execution
83
+ if (typeof import.meta !== 'undefined' && process.argv[1] && import.meta.url === `file://${process.argv[1]}`) {
84
+ main().catch((error) => {
85
+ console.error('Error:', error.message);
86
+ process.exit(1);
87
+ });
88
+ }
89
+ export { main as loginLeadCMS };
90
+ //# sourceMappingURL=login-leadcms.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login-leadcms.js","sourceRoot":"","sources":["../../src/scripts/login-leadcms.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Orchestrator for pulling all content from LeadCMS
4
+ * Checks entity support before fetching content, media, and comments
5
+ */
6
+ import "dotenv/config";
7
+ /**
8
+ * Main orchestrator function
9
+ */
10
+ declare function main(): Promise<void>;
11
+ export { main as pullAll };
12
+ //# sourceMappingURL=pull-all.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pull-all.d.ts","sourceRoot":"","sources":["../../src/scripts/pull-all.ts"],"names":[],"mappings":";AACA;;;GAGG;AAEH,OAAO,eAAe,CAAC;AA0CvB;;GAEG;AACH,iBAAe,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAkCnC;AAGD,OAAO,EAAE,IAAI,IAAI,OAAO,EAAE,CAAC"}
@@ -0,0 +1,81 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Orchestrator for pulling all content from LeadCMS
4
+ * Checks entity support before fetching content, media, and comments
5
+ */
6
+ import "dotenv/config";
7
+ import axios from "axios";
8
+ import { leadCMSUrl } from "./leadcms-helpers.js";
9
+ import { setCMSConfig, isContentSupported, isMediaSupported, isCommentsSupported } from "../lib/cms-config-types.js";
10
+ /**
11
+ * Fetch CMS config to determine which entities are supported
12
+ */
13
+ async function fetchAndCacheCMSConfig() {
14
+ try {
15
+ console.log(`šŸ” Checking CMS configuration...`);
16
+ const configUrl = new URL('/api/config', leadCMSUrl).toString();
17
+ const response = await axios.get(configUrl, { timeout: 10000 });
18
+ if (response.data) {
19
+ setCMSConfig(response.data);
20
+ const support = {
21
+ content: isContentSupported(),
22
+ media: isMediaSupported(),
23
+ comments: isCommentsSupported(),
24
+ };
25
+ console.log(`āœ… CMS Configuration received`);
26
+ console.log(` - Content: ${support.content ? 'āœ“' : 'āœ—'}`);
27
+ console.log(` - Media: ${support.media ? 'āœ“' : 'āœ—'}`);
28
+ console.log(` - Comments: ${support.comments ? 'āœ“' : 'āœ—'}`);
29
+ console.log('');
30
+ return support;
31
+ }
32
+ }
33
+ catch (error) {
34
+ console.warn(`āš ļø Could not fetch CMS config: ${error.message}`);
35
+ console.warn(`āš ļø Assuming all entities are supported (backward compatibility)\n`);
36
+ }
37
+ return { content: false, media: false, comments: false };
38
+ }
39
+ /**
40
+ * Main orchestrator function
41
+ */
42
+ async function main() {
43
+ console.log(`\nšŸš€ LeadCMS Pull - Fetching all content\n`);
44
+ // Check which entities are supported
45
+ const { content, media, comments } = await fetchAndCacheCMSConfig();
46
+ if (!content && !media && !comments) {
47
+ console.log(`ā­ļø No supported entities found - nothing to sync`);
48
+ return;
49
+ }
50
+ // Import and run fetch functions for supported entities
51
+ const fetchPromises = [];
52
+ if (content || media) {
53
+ console.log(`šŸ“„ Fetching content and media...`);
54
+ const { fetchLeadCMSContent } = await import('./fetch-leadcms-content.js');
55
+ fetchPromises.push(fetchLeadCMSContent());
56
+ }
57
+ if (comments) {
58
+ console.log(`šŸ’¬ Fetching comments...`);
59
+ const { fetchLeadCMSComments } = await import('./fetch-leadcms-comments.js');
60
+ fetchPromises.push(fetchLeadCMSComments());
61
+ }
62
+ // Wait for all fetches to complete
63
+ try {
64
+ await Promise.all(fetchPromises);
65
+ console.log(`\n✨ Pull completed successfully!\n`);
66
+ }
67
+ catch (error) {
68
+ console.error(`\nāŒ Pull failed: ${error.message}\n`);
69
+ throw error;
70
+ }
71
+ }
72
+ // Export the main function
73
+ export { main as pullAll };
74
+ // If this script is run directly, execute the main function
75
+ if (typeof import.meta !== 'undefined' && process.argv[1] && import.meta.url === `file://${process.argv[1]}`) {
76
+ main().catch((error) => {
77
+ console.error("Error running LeadCMS pull:", error.message);
78
+ process.exit(1);
79
+ });
80
+ }
81
+ //# sourceMappingURL=pull-all.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pull-all.js","sourceRoot":"","sources":["../../src/scripts/pull-all.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Pull only comments from LeadCMS (no content, no media)
4
+ */
5
+ import "dotenv/config";
6
+ /**
7
+ * Main function
8
+ */
9
+ declare function main(): Promise<void>;
10
+ export { main as pullComments };
11
+ //# sourceMappingURL=pull-comments.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pull-comments.d.ts","sourceRoot":"","sources":["../../src/scripts/pull-comments.ts"],"names":[],"mappings":";AACA;;GAEG;AAEH,OAAO,eAAe,CAAC;AAMvB;;GAEG;AACH,iBAAe,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CA4BnC;AAUD,OAAO,EAAE,IAAI,IAAI,YAAY,EAAE,CAAC"}
@@ -0,0 +1,45 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Pull only comments from LeadCMS (no content, no media)
4
+ */
5
+ import "dotenv/config";
6
+ import axios from "axios";
7
+ import { leadCMSUrl } from "./leadcms-helpers.js";
8
+ import { setCMSConfig, isCommentsSupported } from "../lib/cms-config-types.js";
9
+ import { fetchLeadCMSComments } from "./fetch-leadcms-comments.js";
10
+ /**
11
+ * Main function
12
+ */
13
+ async function main() {
14
+ console.log(`\nšŸ’¬ LeadCMS Pull Comments\n`);
15
+ // Check if comments are supported
16
+ try {
17
+ console.log(`šŸ” Checking CMS configuration...`);
18
+ const configUrl = new URL('/api/config', leadCMSUrl).toString();
19
+ const response = await axios.get(configUrl, { timeout: 10000 });
20
+ if (response.data) {
21
+ setCMSConfig(response.data);
22
+ if (!isCommentsSupported()) {
23
+ console.log(`ā­ļø Comments entity not supported by this LeadCMS instance`);
24
+ return;
25
+ }
26
+ console.log(`āœ… Comments entity supported\n`);
27
+ }
28
+ }
29
+ catch (error) {
30
+ console.warn(`āš ļø Could not fetch CMS config: ${error.message}`);
31
+ console.warn(`āš ļø Assuming comments are supported (backward compatibility)\n`);
32
+ }
33
+ // Fetch comments
34
+ await fetchLeadCMSComments();
35
+ console.log(`\n✨ Comments pull completed!\n`);
36
+ }
37
+ // If this script is run directly, execute the main function
38
+ if (typeof import.meta !== 'undefined' && process.argv[1] && import.meta.url === `file://${process.argv[1]}`) {
39
+ main().catch((error) => {
40
+ console.error("Error running LeadCMS comments pull:", error.message);
41
+ process.exit(1);
42
+ });
43
+ }
44
+ export { main as pullComments };
45
+ //# sourceMappingURL=pull-comments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pull-comments.js","sourceRoot":"","sources":["../../src/scripts/pull-comments.ts"],"names":[],"mappings":";AACA;;GAEG;AAEH,OAAO,eAAe,CAAC;AACvB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAC/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnE;;GAEG;AACH,KAAK,UAAU,IAAI;IACjB,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;IAE5C,kCAAkC;IAClC,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;QAChD,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;YAE5B,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC;gBAC3B,OAAO,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAC;gBAC1E,OAAO;YACT,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,mCAAmC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACjE,OAAO,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;IACjF,CAAC;IAED,iBAAiB;IACjB,MAAM,oBAAoB,EAAE,CAAC;IAE7B,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;AAChD,CAAC;AAED,4DAA4D;AAC5D,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,UAAU,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAC7G,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACrB,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,OAAO,EAAE,IAAI,IAAI,YAAY,EAAE,CAAC"}
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Pull only content from LeadCMS (no media, no comments)
4
+ */
5
+ import "dotenv/config";
6
+ /**
7
+ * Main function
8
+ */
9
+ declare function main(): Promise<void>;
10
+ export { main as pullContent };
11
+ //# sourceMappingURL=pull-content.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pull-content.d.ts","sourceRoot":"","sources":["../../src/scripts/pull-content.ts"],"names":[],"mappings":";AACA;;GAEG;AAEH,OAAO,eAAe,CAAC;AAMvB;;GAEG;AACH,iBAAe,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CA4BnC;AAUD,OAAO,EAAE,IAAI,IAAI,WAAW,EAAE,CAAC"}
@@ -0,0 +1,45 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Pull only content from LeadCMS (no media, no comments)
4
+ */
5
+ import "dotenv/config";
6
+ import axios from "axios";
7
+ import { leadCMSUrl } from "./leadcms-helpers.js";
8
+ import { setCMSConfig, isContentSupported } from "../lib/cms-config-types.js";
9
+ import { fetchLeadCMSContent } from "./fetch-leadcms-content.js";
10
+ /**
11
+ * Main function
12
+ */
13
+ async function main() {
14
+ console.log(`\nšŸ“„ LeadCMS Pull Content\n`);
15
+ // Check if content is supported
16
+ try {
17
+ console.log(`šŸ” Checking CMS configuration...`);
18
+ const configUrl = new URL('/api/config', leadCMSUrl).toString();
19
+ const response = await axios.get(configUrl, { timeout: 10000 });
20
+ if (response.data) {
21
+ setCMSConfig(response.data);
22
+ if (!isContentSupported()) {
23
+ console.log(`ā­ļø Content entity not supported by this LeadCMS instance`);
24
+ return;
25
+ }
26
+ console.log(`āœ… Content entity supported\n`);
27
+ }
28
+ }
29
+ catch (error) {
30
+ console.warn(`āš ļø Could not fetch CMS config: ${error.message}`);
31
+ console.warn(`āš ļø Assuming content is supported (backward compatibility)\n`);
32
+ }
33
+ // Fetch content and media
34
+ await fetchLeadCMSContent();
35
+ console.log(`\n✨ Content pull completed!\n`);
36
+ }
37
+ // If this script is run directly, execute the main function
38
+ if (typeof import.meta !== 'undefined' && process.argv[1] && import.meta.url === `file://${process.argv[1]}`) {
39
+ main().catch((error) => {
40
+ console.error("Error running LeadCMS content pull:", error.message);
41
+ process.exit(1);
42
+ });
43
+ }
44
+ export { main as pullContent };
45
+ //# sourceMappingURL=pull-content.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pull-content.js","sourceRoot":"","sources":["../../src/scripts/pull-content.ts"],"names":[],"mappings":";AACA;;GAEG;AAEH,OAAO,eAAe,CAAC;AACvB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE;;GAEG;AACH,KAAK,UAAU,IAAI;IACjB,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAE3C,gCAAgC;IAChC,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;QAChD,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;YAE5B,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;gBAC1B,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC;gBACzE,OAAO;YACT,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,mCAAmC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACjE,OAAO,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;IAC/E,CAAC;IAED,0BAA0B;IAC1B,MAAM,mBAAmB,EAAE,CAAC;IAE5B,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;AAC/C,CAAC;AAED,4DAA4D;AAC5D,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,UAAU,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAC7G,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACrB,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACpE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,OAAO,EAAE,IAAI,IAAI,WAAW,EAAE,CAAC"}
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Pull only media from LeadCMS (no content, no comments)
4
+ */
5
+ import "dotenv/config";
6
+ /**
7
+ * Main function - currently media is fetched as part of content sync
8
+ * This is a placeholder for future dedicated media sync
9
+ */
10
+ declare function main(): Promise<void>;
11
+ export { main as pullMedia };
12
+ //# sourceMappingURL=pull-media.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pull-media.d.ts","sourceRoot":"","sources":["../../src/scripts/pull-media.ts"],"names":[],"mappings":";AACA;;GAEG;AAEH,OAAO,eAAe,CAAC;AAKvB;;;GAGG;AACH,iBAAe,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CA6BnC;AAUD,OAAO,EAAE,IAAI,IAAI,SAAS,EAAE,CAAC"}
@@ -0,0 +1,46 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Pull only media from LeadCMS (no content, no comments)
4
+ */
5
+ import "dotenv/config";
6
+ import axios from "axios";
7
+ import { leadCMSUrl } from "./leadcms-helpers.js";
8
+ import { setCMSConfig, isMediaSupported } from "../lib/cms-config-types.js";
9
+ /**
10
+ * Main function - currently media is fetched as part of content sync
11
+ * This is a placeholder for future dedicated media sync
12
+ */
13
+ async function main() {
14
+ console.log(`\nšŸ–¼ļø LeadCMS Pull Media\n`);
15
+ // Check if media is supported
16
+ try {
17
+ console.log(`šŸ” Checking CMS configuration...`);
18
+ const configUrl = new URL('/api/config', leadCMSUrl).toString();
19
+ const response = await axios.get(configUrl, { timeout: 10000 });
20
+ if (response.data) {
21
+ setCMSConfig(response.data);
22
+ if (!isMediaSupported()) {
23
+ console.log(`ā­ļø Media entity not supported by this LeadCMS instance`);
24
+ return;
25
+ }
26
+ console.log(`āœ… Media entity supported\n`);
27
+ }
28
+ }
29
+ catch (error) {
30
+ console.warn(`āš ļø Could not fetch CMS config: ${error.message}`);
31
+ console.warn(`āš ļø Assuming media is supported (backward compatibility)\n`);
32
+ }
33
+ // Import and run content fetch (which includes media)
34
+ const { fetchLeadCMSContent } = await import('./fetch-leadcms-content.js');
35
+ await fetchLeadCMSContent();
36
+ console.log(`\n✨ Media pull completed!\n`);
37
+ }
38
+ // If this script is run directly, execute the main function
39
+ if (typeof import.meta !== 'undefined' && process.argv[1] && import.meta.url === `file://${process.argv[1]}`) {
40
+ main().catch((error) => {
41
+ console.error("Error running LeadCMS media pull:", error.message);
42
+ process.exit(1);
43
+ });
44
+ }
45
+ export { main as pullMedia };
46
+ //# sourceMappingURL=pull-media.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pull-media.js","sourceRoot":"","sources":["../../src/scripts/pull-media.ts"],"names":[],"mappings":";AACA;;GAEG;AAEH,OAAO,eAAe,CAAC;AACvB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE5E;;;GAGG;AACH,KAAK,UAAU,IAAI;IACjB,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAE3C,8BAA8B;IAC9B,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;QAChD,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;YAE5B,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC;gBACxB,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;gBACvE,OAAO;YACT,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,mCAAmC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACjE,OAAO,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;IAC7E,CAAC;IAED,sDAAsD;IACtD,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,4BAA4B,CAAC,CAAC;IAC3E,MAAM,mBAAmB,EAAE,CAAC;IAE5B,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;AAC7C,CAAC;AAED,4DAA4D;AAC5D,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,UAAU,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAC7G,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACrB,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,OAAO,EAAE,IAAI,IAAI,SAAS,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"push-leadcms-content.d.ts","sourceRoot":"","sources":["../../src/scripts/push-leadcms-content.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AAMvB,OAAO,EAGL,WAAW,IAAI,eAAe,EAC/B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAsB,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAWzE,UAAU,gBAAiB,SAAQ,eAAe;IAChD,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,UAAU,iBAAkB,SAAQ,WAAW;IAC7C,OAAO,EAAE,KAAK,CAAC;CAChB;AAED,UAAU,cAAc;IACtB,KAAK,EAAE,gBAAgB,CAAC;IACxB,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,iBAAiB;IACzB,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,QAAQ,EAAE,cAAc,EAAE,CAAC;CAC5B;AAED,UAAU,WAAW;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAqKD;;;;GAIG;AACH,iBAAe,uBAAuB,CAAC,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAkB7I;AAkjBD;;GAEG;AACH,iBAAe,QAAQ,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6HhE;AA0LD,OAAO,EAAE,QAAQ,IAAI,kBAAkB,EAAE,CAAC;AAG1C,OAAO,EAAE,uBAAuB,EAAE,CAAC;AAEnC,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAEvE,OAAO,EAAE,4BAA4B,EAAE,MAAM,kCAAkC,CAAC;AA8BhF,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,WAAW,EAAE,CAAC"}
1
+ {"version":3,"file":"push-leadcms-content.d.ts","sourceRoot":"","sources":["../../src/scripts/push-leadcms-content.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AAMvB,OAAO,EAGL,WAAW,IAAI,eAAe,EAC/B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAsB,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAWzE,UAAU,gBAAiB,SAAQ,eAAe;IAChD,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,UAAU,iBAAkB,SAAQ,WAAW;IAC7C,OAAO,EAAE,KAAK,CAAC;CAChB;AAED,UAAU,cAAc;IACtB,KAAK,EAAE,gBAAgB,CAAC;IACxB,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,iBAAiB;IACzB,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,QAAQ,EAAE,cAAc,EAAE,CAAC;CAC5B;AAED,UAAU,WAAW;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAqKD;;;;GAIG;AACH,iBAAe,uBAAuB,CAAC,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAkB7I;AAkjBD;;GAEG;AACH,iBAAe,QAAQ,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiJhE;AA4LD,OAAO,EAAE,QAAQ,IAAI,kBAAkB,EAAE,CAAC;AAG1C,OAAO,EAAE,uBAAuB,EAAE,CAAC;AAEnC,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAEvE,OAAO,EAAE,4BAA4B,EAAE,MAAM,kCAAkC,CAAC;AA8BhF,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,WAAW,EAAE,CAAC"}
@@ -691,6 +691,18 @@ async function pushMain(options = {}) {
691
691
  const actionDescription = statusOnly ? 'status check' : 'push';
692
692
  const targetDescription = targetId ? `ID ${targetId}` : targetSlug ? `slug "${targetSlug}"` : 'all content';
693
693
  console.log(`[PUSH] Starting ${actionDescription} for ${targetDescription}...`);
694
+ // Check for API key if not in status-only mode
695
+ if (!statusOnly && !dryRun) {
696
+ const config = await import('../lib/config.js').then(m => m.getConfig());
697
+ if (!config.apiKey) {
698
+ console.log('\nāŒ Cannot push changes: No API key configured (anonymous mode)');
699
+ console.log('\nšŸ’” To push changes, you need to authenticate:');
700
+ console.log(' • Set LEADCMS_API_KEY in your .env file');
701
+ console.log(' • Or run: leadcms login');
702
+ console.log('\nā„¹ļø Tip: Use "leadcms status" to check changes without authentication');
703
+ return;
704
+ }
705
+ }
694
706
  // Read local content
695
707
  const localContent = await readLocalContent();
696
708
  if (localContent.length === 0) {
@@ -782,8 +794,17 @@ async function pushMain(options = {}) {
782
794
  return;
783
795
  }
784
796
  // Execute the sync
785
- await executePush(finalOperations, { force });
786
- colorConsole.success('\nšŸŽ‰ Content push completed successfully!');
797
+ const results = await executePush(finalOperations, { force });
798
+ // Display final message based on results
799
+ if (results.failed === 0) {
800
+ colorConsole.success('\nšŸŽ‰ Content push completed successfully!');
801
+ }
802
+ else if (results.successful > 0) {
803
+ colorConsole.warn(`\nāš ļø Content push completed with errors: ${results.successful} successful, ${results.failed} failed`);
804
+ }
805
+ else {
806
+ colorConsole.error('\nāŒ Content push failed - no changes were synced');
807
+ }
787
808
  }
788
809
  catch (error) {
789
810
  const operation = statusOnly ? 'Status check' : 'Push';
@@ -810,7 +831,7 @@ async function executePush(operations, options = {}) {
810
831
  }
811
832
  }
812
833
  // Use individual operations
813
- await executeIndividualOperations(operations, { force });
834
+ return await executeIndividualOperations(operations, { force });
814
835
  }
815
836
  /**
816
837
  * Execute operations individually (one by one)
@@ -837,7 +858,7 @@ async function executeIndividualOperations(operations, options = {}) {
837
858
  }
838
859
  catch (error) {
839
860
  failed++;
840
- colorConsole.error(`āŒ Failed to create ${colorConsole.highlight(`${op.local.type}/${op.local.slug}`)}:`, error.message);
861
+ colorConsole.error(`āŒ Failed to create ${op.local.type}/${op.local.slug}: ${error.message}`);
841
862
  }
842
863
  }
843
864
  }
@@ -865,7 +886,7 @@ async function executeIndividualOperations(operations, options = {}) {
865
886
  }
866
887
  catch (error) {
867
888
  failed++;
868
- console.log(`āŒ Failed to update ${op.local.type}/${op.local.slug}:`, error.message);
889
+ colorConsole.error(`āŒ Failed to update ${op.local.type}/${op.local.slug}: ${error.message}`);
869
890
  }
870
891
  }
871
892
  }
@@ -879,21 +900,21 @@ async function executeIndividualOperations(operations, options = {}) {
879
900
  if (result) {
880
901
  await updateLocalMetadata(op.local, result);
881
902
  successful++;
882
- console.log(`āœ… Renamed: ${op.oldSlug} -> ${op.local.slug}`);
903
+ colorConsole.success(`āœ… Renamed: ${op.oldSlug} -> ${op.local.slug}`);
883
904
  }
884
905
  else {
885
906
  failed++;
886
- console.log(`āŒ Failed to rename: ${op.oldSlug} -> ${op.local.slug}`);
907
+ colorConsole.error(`āŒ Failed to rename: ${op.oldSlug} -> ${op.local.slug}`);
887
908
  }
888
909
  }
889
910
  else {
890
911
  failed++;
891
- console.log(`āŒ Failed to rename ${op.oldSlug}: No remote ID`);
912
+ colorConsole.error(`āŒ Failed to rename ${op.oldSlug}: No remote ID`);
892
913
  }
893
914
  }
894
915
  catch (error) {
895
916
  failed++;
896
- console.log(`āŒ Failed to rename ${op.oldSlug}:`, error.message);
917
+ colorConsole.error(`āŒ Failed to rename ${op.oldSlug}: ${error.message}`);
897
918
  }
898
919
  }
899
920
  }
@@ -907,21 +928,21 @@ async function executeIndividualOperations(operations, options = {}) {
907
928
  if (result) {
908
929
  await updateLocalMetadata(op.local, result);
909
930
  successful++;
910
- console.log(`āœ… Type changed: ${op.local.slug} (${op.oldType} -> ${op.newType})`);
931
+ colorConsole.success(`āœ… Type changed: ${op.local.slug} (${op.oldType} -> ${op.newType})`);
911
932
  }
912
933
  else {
913
934
  failed++;
914
- console.log(`āŒ Failed to change type: ${op.local.slug} (${op.oldType} -> ${op.newType})`);
935
+ colorConsole.error(`āŒ Failed to change type: ${op.local.slug} (${op.oldType} -> ${op.newType})`);
915
936
  }
916
937
  }
917
938
  else {
918
939
  failed++;
919
- console.log(`āŒ Failed to change type for ${op.local.slug}: No remote ID`);
940
+ colorConsole.error(`āŒ Failed to change type for ${op.local.slug}: No remote ID`);
920
941
  }
921
942
  }
922
943
  catch (error) {
923
944
  failed++;
924
- console.log(`āŒ Failed to change type for ${op.local.slug}:`, error.message);
945
+ colorConsole.error(`āŒ Failed to change type for ${op.local.slug}: ${error.message}`);
925
946
  }
926
947
  }
927
948
  }
@@ -939,6 +960,7 @@ async function executeIndividualOperations(operations, options = {}) {
939
960
  console.log('šŸ’” You may want to manually run the pull command to sync latest changes');
940
961
  }
941
962
  }
963
+ return { successful, failed };
942
964
  }
943
965
  /**
944
966
  * Format local content for API submission