@leadcms/sdk 2.1.5 → 2.2.2

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 (73) hide show
  1. package/README.md +246 -126
  2. package/dist/cli/index.js +97 -68
  3. package/dist/cli/index.js.map +1 -1
  4. package/dist/index.d.ts +3 -0
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +22 -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/data-service.d.ts.map +1 -1
  33. package/dist/lib/data-service.js +22 -6
  34. package/dist/lib/data-service.js.map +1 -1
  35. package/dist/scripts/fetch-leadcms-comments.d.ts +26 -0
  36. package/dist/scripts/fetch-leadcms-comments.d.ts.map +1 -0
  37. package/dist/scripts/fetch-leadcms-comments.js +352 -0
  38. package/dist/scripts/fetch-leadcms-comments.js.map +1 -0
  39. package/dist/scripts/fetch-leadcms-content.d.ts.map +1 -1
  40. package/dist/scripts/fetch-leadcms-content.js +86 -39
  41. package/dist/scripts/fetch-leadcms-content.js.map +1 -1
  42. package/dist/scripts/init-leadcms.d.ts +7 -0
  43. package/dist/scripts/init-leadcms.d.ts.map +1 -0
  44. package/dist/scripts/init-leadcms.js +397 -0
  45. package/dist/scripts/init-leadcms.js.map +1 -0
  46. package/dist/scripts/leadcms-helpers.d.ts +2 -2
  47. package/dist/scripts/leadcms-helpers.d.ts.map +1 -1
  48. package/dist/scripts/leadcms-helpers.js +12 -7
  49. package/dist/scripts/leadcms-helpers.js.map +1 -1
  50. package/dist/scripts/login-leadcms.d.ts +10 -0
  51. package/dist/scripts/login-leadcms.d.ts.map +1 -0
  52. package/dist/scripts/login-leadcms.js +90 -0
  53. package/dist/scripts/login-leadcms.js.map +1 -0
  54. package/dist/scripts/pull-all.d.ts +12 -0
  55. package/dist/scripts/pull-all.d.ts.map +1 -0
  56. package/dist/scripts/pull-all.js +81 -0
  57. package/dist/scripts/pull-all.js.map +1 -0
  58. package/dist/scripts/pull-comments.d.ts +11 -0
  59. package/dist/scripts/pull-comments.d.ts.map +1 -0
  60. package/dist/scripts/pull-comments.js +45 -0
  61. package/dist/scripts/pull-comments.js.map +1 -0
  62. package/dist/scripts/pull-content.d.ts +11 -0
  63. package/dist/scripts/pull-content.d.ts.map +1 -0
  64. package/dist/scripts/pull-content.js +45 -0
  65. package/dist/scripts/pull-content.js.map +1 -0
  66. package/dist/scripts/pull-media.d.ts +12 -0
  67. package/dist/scripts/pull-media.d.ts.map +1 -0
  68. package/dist/scripts/pull-media.js +46 -0
  69. package/dist/scripts/pull-media.js.map +1 -0
  70. package/dist/scripts/push-leadcms-content.d.ts.map +1 -1
  71. package/dist/scripts/push-leadcms-content.js +12 -0
  72. package/dist/scripts/push-leadcms-content.js.map +1 -1
  73. package/package.json +1 -1
package/dist/cli/index.js CHANGED
@@ -2,6 +2,7 @@
2
2
  import { spawn } from 'child_process';
3
3
  import path from 'path';
4
4
  import { fileURLToPath } from 'url';
5
+ import { readFileSync } from 'fs';
5
6
  const __filename = fileURLToPath(import.meta.url);
6
7
  const __dirname = path.dirname(__filename);
7
8
  const command = process.argv[2];
@@ -17,10 +18,59 @@ function runScript(scriptName, args = []) {
17
18
  process.exit(code || 0);
18
19
  });
19
20
  }
21
+ function runScriptSequence(scripts, args = []) {
22
+ let currentIndex = 0;
23
+ function runNext() {
24
+ if (currentIndex >= scripts.length) {
25
+ return;
26
+ }
27
+ const scriptName = scripts[currentIndex];
28
+ const scriptPath = path.join(scriptDir, scriptName);
29
+ const child = spawn('node', [scriptPath, ...args], {
30
+ stdio: 'inherit',
31
+ env: process.env
32
+ });
33
+ child.on('exit', (code) => {
34
+ if (code !== 0) {
35
+ process.exit(code || 0);
36
+ }
37
+ else {
38
+ currentIndex++;
39
+ runNext();
40
+ }
41
+ });
42
+ }
43
+ runNext();
44
+ }
45
+ function getVersion() {
46
+ try {
47
+ const packageJsonPath = path.join(__dirname, '../../package.json');
48
+ const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf8'));
49
+ return packageJson.version;
50
+ }
51
+ catch (error) {
52
+ return 'unknown';
53
+ }
54
+ }
20
55
  switch (command) {
56
+ case 'version':
57
+ case '-v':
58
+ case '--version':
59
+ console.log(`LeadCMS SDK v${getVersion()}`);
60
+ process.exit(0);
61
+ break;
21
62
  case 'pull':
22
63
  case 'fetch': // Alias for backward compatibility
23
- runScript('fetch-leadcms-content.js');
64
+ runScript('pull-all.js');
65
+ break;
66
+ case 'pull-content':
67
+ runScript('pull-content.js');
68
+ break;
69
+ case 'pull-media':
70
+ runScript('pull-media.js');
71
+ break;
72
+ case 'pull-comments':
73
+ runScript('pull-comments.js');
24
74
  break;
25
75
  case 'push':
26
76
  runScript('push-leadcms-content.js', commandArgs);
@@ -36,7 +86,10 @@ switch (command) {
36
86
  break;
37
87
  case 'init':
38
88
  case 'config':
39
- generateConfig();
89
+ runScript('init-leadcms.js');
90
+ break;
91
+ case 'login':
92
+ runScript('login-leadcms.js');
40
93
  break;
41
94
  case 'docker':
42
95
  case 'templates':
@@ -44,93 +97,69 @@ switch (command) {
44
97
  break;
45
98
  default:
46
99
  console.log(`
47
- LeadCMS SDK CLI
100
+ LeadCMS SDK CLI v${getVersion()}
48
101
 
49
102
  Usage:
103
+ leadcms version - Show SDK version
50
104
  leadcms init - Initialize LeadCMS configuration
105
+ leadcms login - Authenticate and save API token to .env file
51
106
  leadcms docker - Generate Docker deployment templates
52
- leadcms pull - Pull content from LeadCMS
107
+
108
+ Pull commands:
109
+ leadcms pull - Pull all content, media, and comments from LeadCMS
110
+ leadcms pull-content - Pull only content from LeadCMS
111
+ leadcms pull-media - Pull only media files from LeadCMS
112
+ leadcms pull-comments - Pull only comments from LeadCMS
113
+ leadcms fetch - Alias for 'pull' (backward compatibility)
114
+
115
+ Push commands:
53
116
  leadcms push [options] - Push local content to LeadCMS
54
117
  --force - Override remote changes (skip conflict check)
55
118
  --dry-run - Show API calls without executing them (preview mode)
56
119
  --id <content-id> - Target specific content by ID
57
120
  --slug <slug> - Target specific content by slug
121
+
122
+ Status & monitoring:
58
123
  leadcms status [options] - Show sync status between local and remote content
59
124
  --preview - Show detailed change previews for all files
60
125
  --id <content-id> - Show detailed status for specific content by ID
61
126
  --slug <slug> - Show detailed status for specific content by slug
62
- leadcms fetch - Alias for 'pull' (backward compatibility)
63
- leadcms watch - Watch for real-time updates
127
+ leadcms watch - Watch for real-time updates via Server-Sent Events
128
+
129
+ Utilities:
64
130
  leadcms generate-env - Generate environment variables file
65
131
 
66
- Configuration:
67
- Set required environment variables (recommended for security):
68
- LEADCMS_URL=your-leadcms-instance-url
69
- LEADCMS_API_KEY=your-api-key
132
+ Getting Started:
133
+ 1. Initialize configuration:
134
+ leadcms init - Interactive setup wizard
135
+
136
+ 2. Authenticate (optional, required for push operations):
137
+ leadcms login - Get and save API token
70
138
 
71
- Optional: Create leadcms.config.json for project-specific settings:
72
- {
73
- "defaultLanguage": "en",
74
- "contentDir": ".leadcms/content",
75
- "mediaDir": "public/media"
76
- }
139
+ 3. Start syncing:
140
+ leadcms pull - Download content from LeadCMS
141
+ leadcms push - Upload local changes
77
142
 
78
- Environment variables (fallback):
79
- LEADCMS_URL - LeadCMS instance URL
80
- LEADCMS_API_KEY - LeadCMS API key
81
- LEADCMS_DEFAULT_LANGUAGE - Default language (optional, defaults to 'en')
143
+ Configuration Files:
144
+ .env (recommended, created by 'leadcms login'):
145
+ LEADCMS_URL=https://your-instance.leadcms.ai
146
+ LEADCMS_API_KEY=your-token-here
147
+ LEADCMS_DEFAULT_LANGUAGE=en
82
148
 
83
- Next.js users can also use:
84
- NEXT_PUBLIC_LEADCMS_URL - LeadCMS instance URL
85
- NEXT_PUBLIC_LEADCMS_DEFAULT_LANGUAGE - Default language
149
+ leadcms.config.json (created by 'leadcms init'):
150
+ {
151
+ "url": "https://your-instance.leadcms.ai",
152
+ "defaultLanguage": "en",
153
+ "contentDir": "content",
154
+ "mediaDir": "public/media",
155
+ "commentsDir": "comments"
156
+ }
157
+
158
+ Note: Environment variables take precedence over config file.
159
+ Next.js users can use NEXT_PUBLIC_LEADCMS_URL for client-side access.
86
160
  `);
87
161
  break;
88
162
  }
89
- function generateConfig() {
90
- Promise.all([import('fs'), import('path')]).then(([fs, pathModule]) => {
91
- const configPath = pathModule.join(process.cwd(), 'leadcms.config.json');
92
- if (fs.existsSync(configPath)) {
93
- const readline = require('readline');
94
- const rl = readline.createInterface({
95
- input: process.stdin,
96
- output: process.stdout
97
- });
98
- rl.question('leadcms.config.json already exists. Overwrite? (y/N): ', (answer) => {
99
- if (answer.toLowerCase() !== 'y' && answer.toLowerCase() !== 'yes') {
100
- console.log('āœ… Configuration initialization cancelled.');
101
- rl.close();
102
- return;
103
- }
104
- createConfig();
105
- rl.close();
106
- });
107
- }
108
- else {
109
- createConfig();
110
- }
111
- function createConfig() {
112
- const sampleConfigPath = pathModule.join(__dirname, '../../leadcms.config.json.sample');
113
- const sampleConfig = fs.readFileSync(sampleConfigPath, 'utf-8');
114
- fs.writeFileSync(configPath, sampleConfig, 'utf-8');
115
- console.log(`āœ… Created ${configPath}`);
116
- console.log('šŸ“ Set LEADCMS_URL and LEADCMS_API_KEY as environment variables.');
117
- console.log('šŸ”§ Customize contentDir, mediaDir, or other settings in the config file.');
118
- console.log('ā„¹ļø Content types are automatically detected from your LeadCMS API.');
119
- }
120
- });
121
- }
122
- function createConfigFile(configPath) {
123
- import('fs').then(fs => {
124
- // Use the sample config file as the source of truth
125
- const sampleConfigPath = path.join(__dirname, '../../leadcms.config.json.sample');
126
- const sampleConfig = fs.readFileSync(sampleConfigPath, 'utf-8');
127
- fs.writeFileSync(configPath, sampleConfig, 'utf-8');
128
- console.log(`āœ… Created ${configPath}`);
129
- console.log('šŸ“ Set LEADCMS_URL and LEADCMS_API_KEY as environment variables.');
130
- console.log('šŸ”§ Customize contentDir, mediaDir, or other settings in the config file.');
131
- console.log('ā„¹ļø Content types are automatically detected from your LeadCMS API.');
132
- });
133
- }
134
163
  function generateDockerTemplates() {
135
164
  Promise.all([import('fs'), import('path')]).then(([fs, pathModule]) => {
136
165
  const templateDir = pathModule.join(__dirname, '../templates');
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,7 @@
1
1
  export * from './lib/cms.js';
2
2
  export * from './lib/config.js';
3
3
  export * from './lib/locale-utils.js';
4
+ export * from './lib/comment-types.js';
5
+ export * from './lib/cms-config-types.js';
6
+ export type { CommentTreeNode, CommentTreeOptions, CommentStatistics, CommentSortOrder } from './lib/comment-utils.js';
4
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAG1C,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC"}
package/dist/index.js CHANGED
@@ -2,6 +2,8 @@
2
2
  export * from './lib/cms.js';
3
3
  export * from './lib/config.js';
4
4
  export * from './lib/locale-utils.js';
5
+ export * from './lib/comment-types.js';
6
+ export * from './lib/cms-config-types.js';
5
7
  // LeadCMS SDK - Framework-agnostic content management
6
8
  //
7
9
  // Core functions for accessing LeadCMS content:
@@ -10,6 +12,18 @@ export * from './lib/locale-utils.js';
10
12
  // - getAllContentRoutes() - Get all routes for static generation
11
13
  // - getAvailableLanguages() - Get supported languages
12
14
  //
15
+ // Comments API:
16
+ // - getComments() - Get comments for any commentable entity
17
+ // - getCommentsForContent() - Get comments for a specific content item
18
+ // - getCommentsStrict() - Get comments with strict error handling
19
+ // - getCommentsForContentStrict() - Get comments for content with strict error handling
20
+ // - getCommentsTree() - Get comments as a hierarchical tree structure with sorting and filtering
21
+ // - getCommentsTreeForContent() - Get comments tree for content (convenience wrapper)
22
+ //
23
+ // Note: Tree building utilities (buildCommentTree, flattenCommentTree, filterComments, etc.)
24
+ // are internal implementation details and not part of the public API. Use getCommentsTree()
25
+ // and getCommentsTreeForContent() for all tree operations.
26
+ //
13
27
  // Locale utilities:
14
28
  // - isValidLocaleCode() - Validate locale directory names
15
29
  //
@@ -19,8 +33,14 @@ export * from './lib/locale-utils.js';
19
33
  // 3. Programmatic configuration using configure()
20
34
  //
21
35
  // CLI utilities:
22
- // - npx leadcms init - Initialize configuration
23
- // - npx leadcms fetch - Fetch content from LeadCMS
36
+ // - npx leadcms init - Initialize configuration (includes authentication setup)
37
+ // - npx leadcms login - Authenticate with LeadCMS (device auth or manual token)
38
+ // - npx leadcms pull - Pull content and comments from LeadCMS
39
+ // - npx leadcms pull-comments - Pull only comments from LeadCMS
40
+ // - npx leadcms fetch - Alias for pull (backward compatibility)
24
41
  // - npx leadcms watch - Watch for real-time updates
25
42
  // - npx leadcms generate-env - Generate environment file
43
+ //
44
+ // Note: Authentication functions are internal and only available via CLI commands.
45
+ // Use 'npx leadcms login' for authentication instead of programmatic auth functions.
26
46
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AAEtC,sDAAsD;AACtD,EAAE;AACF,gDAAgD;AAChD,yDAAyD;AACzD,0DAA0D;AAC1D,iEAAiE;AACjE,sDAAsD;AACtD,EAAE;AACF,oBAAoB;AACpB,0DAA0D;AAC1D,EAAE;AACF,yBAAyB;AACzB,4CAA4C;AAC5C,sCAAsC;AACtC,kDAAkD;AAClD,EAAE;AACF,iBAAiB;AACjB,qDAAqD;AACrD,uDAAuD;AACvD,wDAAwD;AACxD,yDAAyD"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAK1C,sDAAsD;AACtD,EAAE;AACF,gDAAgD;AAChD,yDAAyD;AACzD,0DAA0D;AAC1D,iEAAiE;AACjE,sDAAsD;AACtD,EAAE;AACF,gBAAgB;AAChB,4DAA4D;AAC5D,uEAAuE;AACvE,kEAAkE;AAClE,wFAAwF;AACxF,iGAAiG;AACjG,sFAAsF;AACtF,EAAE;AACF,6FAA6F;AAC7F,4FAA4F;AAC5F,2DAA2D;AAC3D,EAAE;AACF,oBAAoB;AACpB,0DAA0D;AAC1D,EAAE;AACF,yBAAyB;AACzB,4CAA4C;AAC5C,sCAAsC;AACtC,kDAAkD;AAClD,EAAE;AACF,iBAAiB;AACjB,qFAAqF;AACrF,oFAAoF;AACpF,mEAAmE;AACnE,gEAAgE;AAChE,oEAAoE;AACpE,wDAAwD;AACxD,yDAAyD;AACzD,EAAE;AACF,mFAAmF;AACnF,qFAAqF"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * LeadCMS Authentication Library
3
+ * Shared authentication functions for device auth and manual token flows
4
+ */
5
+ interface UserDetailsDto {
6
+ email: string;
7
+ userName: string;
8
+ displayName: string;
9
+ data?: Record<string, any> | null;
10
+ id?: string;
11
+ createdAt?: string;
12
+ lastTimeLoggedIn?: string | null;
13
+ avatarUrl?: string;
14
+ }
15
+ export interface AuthResult {
16
+ token: string;
17
+ user: UserDetailsDto;
18
+ }
19
+ /**
20
+ * Get LeadCMS version from /api/version endpoint
21
+ */
22
+ export declare function getLeadCMSVersion(url: string): Promise<string | null>;
23
+ /**
24
+ * Compare version strings (supports semver with pre-release tags)
25
+ * Returns: 1 if v1 > v2, -1 if v1 < v2, 0 if equal
26
+ */
27
+ export declare function compareVersions(v1: string, v2: string): number;
28
+ /**
29
+ * Check if device authentication is supported (version >= 1.2.88-pre)
30
+ */
31
+ export declare function supportsDeviceAuth(version: string | null): boolean;
32
+ /**
33
+ * Verify API token by calling /api/users/me
34
+ */
35
+ export declare function verifyToken(url: string, token: string): Promise<UserDetailsDto>;
36
+ /**
37
+ * Save API token to .env file
38
+ */
39
+ export declare function saveTokenToEnv(token: string): void;
40
+ /**
41
+ * Device authentication flow
42
+ */
43
+ export declare function deviceAuthFlow(url: string): Promise<string>;
44
+ /**
45
+ * Manual token input flow (legacy)
46
+ * Requires a question function for readline compatibility
47
+ */
48
+ export declare function manualTokenFlow(url: string, question: (prompt: string) => Promise<string>): Promise<string>;
49
+ /**
50
+ * Complete authentication flow with version detection
51
+ * Automatically chooses between device auth and manual flow
52
+ */
53
+ export declare function authenticate(url: string, question: (prompt: string) => Promise<string>): Promise<AuthResult>;
54
+ export {};
55
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/lib/auth.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,UAAU,cAAc;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;IAClC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA+BD,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,cAAc,CAAC;CACtB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAU3E;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAiB9D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAGlE;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAQrF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CA0BlD;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAiEjE;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,GAC5C,OAAO,CAAC,MAAM,CAAC,CA0BjB;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAChC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,GAC5C,OAAO,CAAC,UAAU,CAAC,CA6BrB"}
@@ -0,0 +1,204 @@
1
+ /**
2
+ * LeadCMS Authentication Library
3
+ * Shared authentication functions for device auth and manual token flows
4
+ */
5
+ import axios from 'axios';
6
+ import * as fs from 'fs';
7
+ import * as path from 'path';
8
+ /**
9
+ * Get LeadCMS version from /api/version endpoint
10
+ */
11
+ export async function getLeadCMSVersion(url) {
12
+ try {
13
+ const response = await axios.get(`${url}/api/version`, {
14
+ timeout: 5000,
15
+ });
16
+ return response.data.version;
17
+ }
18
+ catch (error) {
19
+ // If version endpoint is not available, return null
20
+ return null;
21
+ }
22
+ }
23
+ /**
24
+ * Compare version strings (supports semver with pre-release tags)
25
+ * Returns: 1 if v1 > v2, -1 if v1 < v2, 0 if equal
26
+ */
27
+ export function compareVersions(v1, v2) {
28
+ // Extract version numbers (ignore pre-release tags and git hashes)
29
+ const extractVersion = (v) => {
30
+ const match = v.match(/^(\d+)\.(\d+)\.(\d+)/);
31
+ if (!match)
32
+ return [0, 0, 0];
33
+ return [parseInt(match[1]), parseInt(match[2]), parseInt(match[3])];
34
+ };
35
+ const parts1 = extractVersion(v1);
36
+ const parts2 = extractVersion(v2);
37
+ for (let i = 0; i < 3; i++) {
38
+ if (parts1[i] > parts2[i])
39
+ return 1;
40
+ if (parts1[i] < parts2[i])
41
+ return -1;
42
+ }
43
+ return 0;
44
+ }
45
+ /**
46
+ * Check if device authentication is supported (version >= 1.2.88-pre)
47
+ */
48
+ export function supportsDeviceAuth(version) {
49
+ if (!version)
50
+ return false;
51
+ return compareVersions(version, '1.2.88-pre') >= 0;
52
+ }
53
+ /**
54
+ * Verify API token by calling /api/users/me
55
+ */
56
+ export async function verifyToken(url, token) {
57
+ const response = await axios.get(`${url}/api/users/me`, {
58
+ headers: {
59
+ Authorization: `Bearer ${token}`,
60
+ },
61
+ });
62
+ return response.data;
63
+ }
64
+ /**
65
+ * Save API token to .env file
66
+ */
67
+ export function saveTokenToEnv(token) {
68
+ const envPath = path.join(process.cwd(), '.env');
69
+ let envContent = '';
70
+ // Read existing .env file if it exists
71
+ if (fs.existsSync(envPath)) {
72
+ envContent = fs.readFileSync(envPath, 'utf-8');
73
+ }
74
+ // Check if LEADCMS_API_KEY already exists
75
+ const lines = envContent.split('\n');
76
+ const apiKeyIndex = lines.findIndex((line) => line.startsWith('LEADCMS_API_KEY='));
77
+ if (apiKeyIndex !== -1) {
78
+ // Update existing key
79
+ lines[apiKeyIndex] = `LEADCMS_API_KEY=${token}`;
80
+ envContent = lines.join('\n');
81
+ }
82
+ else {
83
+ // Add new key
84
+ if (envContent && !envContent.endsWith('\n')) {
85
+ envContent += '\n';
86
+ }
87
+ envContent += `LEADCMS_API_KEY=${token}\n`;
88
+ }
89
+ fs.writeFileSync(envPath, envContent, 'utf-8');
90
+ }
91
+ /**
92
+ * Device authentication flow
93
+ */
94
+ export async function deviceAuthFlow(url) {
95
+ console.log('\nšŸ” Starting device authentication...\n');
96
+ // Step 1: Initiate device authentication
97
+ let initData;
98
+ try {
99
+ const response = await axios.post(`${url}/api/identity/device/initiate`, {}, { headers: { 'Content-Type': 'application/json' } });
100
+ initData = response.data;
101
+ }
102
+ catch (error) {
103
+ throw new Error(`Failed to initiate device authentication: ${error.message}`);
104
+ }
105
+ // Step 2: Display instructions to user
106
+ console.log('šŸ“‹ To complete authentication, open this link in your browser:\n');
107
+ console.log(` ${initData.verificationUriComplete}\n`);
108
+ console.log(`ā±ļø Code expires in ${Math.floor(initData.expiresIn / 60)} minutes`);
109
+ console.log('ā³ Waiting for authorization...\n');
110
+ // Step 3: Poll for completion
111
+ const pollRequest = { deviceCode: initData.deviceCode };
112
+ const startTime = Date.now();
113
+ const expirationTime = startTime + initData.expiresIn * 1000;
114
+ while (Date.now() < expirationTime) {
115
+ await new Promise((resolve) => setTimeout(resolve, initData.interval * 1000));
116
+ try {
117
+ const pollResponse = await axios.post(`${url}/api/identity/device/poll`, pollRequest, { headers: { 'Content-Type': 'application/json' } });
118
+ if (pollResponse.status === 200) {
119
+ // Authentication successful
120
+ return pollResponse.data.token;
121
+ }
122
+ }
123
+ catch (error) {
124
+ if (axios.isAxiosError(error)) {
125
+ if (error.response?.status === 202) {
126
+ // Still pending, continue polling
127
+ continue;
128
+ }
129
+ else if (error.response?.status === 400) {
130
+ // Device code expired, denied, or invalid
131
+ const errorData = error.response.data;
132
+ throw new Error(errorData.error_description || errorData.message || 'Device authentication failed');
133
+ }
134
+ else {
135
+ // Other error
136
+ throw new Error(`Authentication failed: ${error.response?.statusText || error.message}`);
137
+ }
138
+ }
139
+ else {
140
+ throw error;
141
+ }
142
+ }
143
+ }
144
+ throw new Error('Authentication timeout: Code expired');
145
+ }
146
+ /**
147
+ * Manual token input flow (legacy)
148
+ * Requires a question function for readline compatibility
149
+ */
150
+ export async function manualTokenFlow(url, question) {
151
+ console.log('\nšŸ” LeadCMS Authentication\n');
152
+ console.log('āš ļø Note: This instance does not support automatic device authentication.');
153
+ console.log(' (Device authentication requires LeadCMS version 1.2.88 or higher)');
154
+ console.log(' Please follow these steps to obtain your API token:\n');
155
+ console.log('šŸ“‹ Steps to get your API token:\n');
156
+ console.log(` 1. Open your browser and navigate to: ${url}`);
157
+ console.log(' 2. Open Developer Tools (press F12 or right-click → Inspect)');
158
+ console.log(' 3. Go to the "Network" tab in Developer Tools');
159
+ console.log(' 4. Log in to your LeadCMS account');
160
+ console.log(' 5. After successful login, look for an API call in the Network tab');
161
+ console.log(' → Look for "/api/users/me" request');
162
+ console.log(' 6. Click on that request');
163
+ console.log(' 7. Find the "Request Headers" section');
164
+ console.log(' 8. Locate the "Authorization" header');
165
+ console.log(' 9. Copy the token value (without the "Bearer " prefix)\n');
166
+ // Prompt for token
167
+ const token = await question('šŸ”‘ Paste your API token here: ');
168
+ if (!token) {
169
+ throw new Error('No token provided');
170
+ }
171
+ return token;
172
+ }
173
+ /**
174
+ * Complete authentication flow with version detection
175
+ * Automatically chooses between device auth and manual flow
176
+ */
177
+ export async function authenticate(url, question) {
178
+ // Check LeadCMS version to determine authentication method
179
+ console.log('šŸ” Checking LeadCMS version...');
180
+ const version = await getLeadCMSVersion(url);
181
+ let token;
182
+ if (version) {
183
+ console.log(` Version: ${version}`);
184
+ if (supportsDeviceAuth(version)) {
185
+ // Use device authentication flow
186
+ token = await deviceAuthFlow(url);
187
+ }
188
+ else {
189
+ // Use manual token flow
190
+ console.log(' Device authentication not supported in this version.\n');
191
+ token = await manualTokenFlow(url, question);
192
+ }
193
+ }
194
+ else {
195
+ // Version check failed, use manual flow
196
+ console.log(' Could not determine version, using manual authentication.\n');
197
+ token = await manualTokenFlow(url, question);
198
+ }
199
+ // Verify token
200
+ console.log('\nā³ Verifying token...');
201
+ const user = await verifyToken(url, token);
202
+ return { token, user };
203
+ }
204
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/lib/auth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Type definitions for the /api/config endpoint response
3
+ * This endpoint provides information about the LeadCMS instance configuration
4
+ */
5
+ export interface CMSConfigResponse {
6
+ /** Authentication configuration */
7
+ auth: {
8
+ methods: string[];
9
+ msal?: {
10
+ clientId: string;
11
+ authority: string;
12
+ redirectUri: string;
13
+ };
14
+ };
15
+ /** Available entity types (Content, Comment, Media, Contact, etc.) */
16
+ entities: string[];
17
+ /** Supported languages */
18
+ languages: Array<{
19
+ code: string;
20
+ name: string;
21
+ }>;
22
+ /** CMS settings */
23
+ settings: Record<string, string>;
24
+ /** Default language code */
25
+ defaultLanguage: string;
26
+ /** Enabled modules */
27
+ modules: string[];
28
+ /** CMS capabilities */
29
+ capabilities: string[];
30
+ }
31
+ /**
32
+ * Set the cached CMS config
33
+ */
34
+ export declare function setCMSConfig(config: CMSConfigResponse): void;
35
+ /**
36
+ * Get the cached CMS config if available and not expired
37
+ */
38
+ export declare function getCachedCMSConfig(): CMSConfigResponse | null;
39
+ /**
40
+ * Check if an entity type is supported by the CMS
41
+ * @param entityType - Entity type to check (case-insensitive)
42
+ * @returns true if entity is supported, false if not or if config is not available
43
+ */
44
+ export declare function isEntitySupported(entityType: string): boolean;
45
+ /**
46
+ * Check if comments are supported
47
+ */
48
+ export declare function isCommentsSupported(): boolean;
49
+ /**
50
+ * Check if content is supported
51
+ */
52
+ export declare function isContentSupported(): boolean;
53
+ /**
54
+ * Check if media is supported
55
+ */
56
+ export declare function isMediaSupported(): boolean;
57
+ //# sourceMappingURL=cms-config-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cms-config-types.d.ts","sourceRoot":"","sources":["../../src/lib/cms-config-types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,iBAAiB;IAChC,mCAAmC;IACnC,IAAI,EAAE;QACJ,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,IAAI,CAAC,EAAE;YACL,QAAQ,EAAE,MAAM,CAAC;YACjB,SAAS,EAAE,MAAM,CAAC;YAClB,WAAW,EAAE,MAAM,CAAC;SACrB,CAAC;KACH,CAAC;IACF,sEAAsE;IACtE,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,0BAA0B;IAC1B,SAAS,EAAE,KAAK,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;KACd,CAAC,CAAC;IACH,mBAAmB;IACnB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,4BAA4B;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,sBAAsB;IACtB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,uBAAuB;IACvB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAaD;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAK5D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,iBAAiB,GAAG,IAAI,CAa7D;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAU7D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAE7C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAE5C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAE1C"}