@agility/create-next-app 1.0.0-beta.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.
- package/.claude/settings.json +7 -0
- package/.claude/settings.local.json +24 -0
- package/FEATURE_ROADMAP.md +343 -0
- package/README.md +205 -0
- package/TESTING.md +131 -0
- package/bin/create-agility-app.js +48 -0
- package/dist/agility/api-keys/generateApiKeys.d.ts +9 -0
- package/dist/agility/api-keys/generateApiKeys.d.ts.map +1 -0
- package/dist/agility/api-keys/generateApiKeys.js +99 -0
- package/dist/agility/api-keys/generateApiKeys.js.map +1 -0
- package/dist/agility/api-keys/getApiKeys.d.ts +9 -0
- package/dist/agility/api-keys/getApiKeys.d.ts.map +1 -0
- package/dist/agility/api-keys/getApiKeys.js +14 -0
- package/dist/agility/api-keys/getApiKeys.js.map +1 -0
- package/dist/agility/index.d.ts +3 -0
- package/dist/agility/index.d.ts.map +1 -0
- package/dist/agility/index.js +8 -0
- package/dist/agility/index.js.map +1 -0
- package/dist/agility/instance/createNewInstance.d.ts +8 -0
- package/dist/agility/instance/createNewInstance.d.ts.map +1 -0
- package/dist/agility/instance/createNewInstance.js +65 -0
- package/dist/agility/instance/createNewInstance.js.map +1 -0
- package/dist/agility/instance/getAvailableInstances.d.ts +8 -0
- package/dist/agility/instance/getAvailableInstances.d.ts.map +1 -0
- package/dist/agility/instance/getAvailableInstances.js +43 -0
- package/dist/agility/instance/getAvailableInstances.js.map +1 -0
- package/dist/agility/instance/manageInstance.d.ts +9 -0
- package/dist/agility/instance/manageInstance.d.ts.map +1 -0
- package/dist/agility/instance/manageInstance.js +82 -0
- package/dist/agility/instance/manageInstance.js.map +1 -0
- package/dist/agility/utils/getMgmtAPIUrl.d.ts +20 -0
- package/dist/agility/utils/getMgmtAPIUrl.d.ts.map +1 -0
- package/dist/agility/utils/getMgmtAPIUrl.js +61 -0
- package/dist/agility/utils/getMgmtAPIUrl.js.map +1 -0
- package/dist/auth/api-key/authenticateWithApiKey.d.ts +6 -0
- package/dist/auth/api-key/authenticateWithApiKey.d.ts.map +1 -0
- package/dist/auth/api-key/authenticateWithApiKey.js +28 -0
- package/dist/auth/api-key/authenticateWithApiKey.js.map +1 -0
- package/dist/auth/index.d.ts +3 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +8 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/oauth/authenticate.d.ts +6 -0
- package/dist/auth/oauth/authenticate.d.ts.map +1 -0
- package/dist/auth/oauth/authenticate.js +162 -0
- package/dist/auth/oauth/authenticate.js.map +1 -0
- package/dist/auth/oauth/constants.d.ts +5 -0
- package/dist/auth/oauth/constants.d.ts.map +1 -0
- package/dist/auth/oauth/constants.js +9 -0
- package/dist/auth/oauth/constants.js.map +1 -0
- package/dist/auth/oauth/exchangeCodeForToken.d.ts +7 -0
- package/dist/auth/oauth/exchangeCodeForToken.d.ts.map +1 -0
- package/dist/auth/oauth/exchangeCodeForToken.js +39 -0
- package/dist/auth/oauth/exchangeCodeForToken.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +290 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/promptForMissingOptions.d.ts +8 -0
- package/dist/cli/promptForMissingOptions.d.ts.map +1 -0
- package/dist/cli/promptForMissingOptions.js +92 -0
- package/dist/cli/promptForMissingOptions.js.map +1 -0
- package/dist/config/env/createEnvFile.d.ts +6 -0
- package/dist/config/env/createEnvFile.d.ts.map +1 -0
- package/dist/config/env/createEnvFile.js +31 -0
- package/dist/config/env/createEnvFile.js.map +1 -0
- package/dist/config/index.d.ts +2 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +6 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/mcp/createMcpConfig.d.ts +5 -0
- package/dist/config/mcp/createMcpConfig.d.ts.map +1 -0
- package/dist/config/mcp/createMcpConfig.js +32 -0
- package/dist/config/mcp/createMcpConfig.js.map +1 -0
- package/dist/config/packages/installAgilityPackages.d.ts +6 -0
- package/dist/config/packages/installAgilityPackages.d.ts.map +1 -0
- package/dist/config/packages/installAgilityPackages.js +61 -0
- package/dist/config/packages/installAgilityPackages.js.map +1 -0
- package/dist/config/setupProject.d.ts +8 -0
- package/dist/config/setupProject.d.ts.map +1 -0
- package/dist/config/setupProject.js +32 -0
- package/dist/config/setupProject.js.map +1 -0
- package/dist/create-next-app/createNextApp.d.ts +9 -0
- package/dist/create-next-app/createNextApp.d.ts.map +1 -0
- package/dist/create-next-app/createNextApp.js +83 -0
- package/dist/create-next-app/createNextApp.js.map +1 -0
- package/dist/create-next-app/index.d.ts +3 -0
- package/dist/create-next-app/index.d.ts.map +1 -0
- package/dist/create-next-app/index.js +8 -0
- package/dist/create-next-app/index.js.map +1 -0
- package/dist/scaffold/components/createPageComponents.d.ts +6 -0
- package/dist/scaffold/components/createPageComponents.d.ts.map +1 -0
- package/dist/scaffold/components/createPageComponents.js +62 -0
- package/dist/scaffold/components/createPageComponents.js.map +1 -0
- package/dist/scaffold/containers/createContainers.d.ts +6 -0
- package/dist/scaffold/containers/createContainers.d.ts.map +1 -0
- package/dist/scaffold/containers/createContainers.js +48 -0
- package/dist/scaffold/containers/createContainers.js.map +1 -0
- package/dist/scaffold/index.d.ts +2 -0
- package/dist/scaffold/index.d.ts.map +1 -0
- package/dist/scaffold/index.js +6 -0
- package/dist/scaffold/index.js.map +1 -0
- package/dist/scaffold/instance/createBlankInstance.d.ts +8 -0
- package/dist/scaffold/instance/createBlankInstance.d.ts.map +1 -0
- package/dist/scaffold/instance/createBlankInstance.js +51 -0
- package/dist/scaffold/instance/createBlankInstance.js.map +1 -0
- package/dist/scaffold/models/createContentModels.d.ts +6 -0
- package/dist/scaffold/models/createContentModels.d.ts.map +1 -0
- package/dist/scaffold/models/createContentModels.js +70 -0
- package/dist/scaffold/models/createContentModels.js.map +1 -0
- package/dist/templates/copyDirectory.d.ts +5 -0
- package/dist/templates/copyDirectory.d.ts.map +1 -0
- package/dist/templates/copyDirectory.js +28 -0
- package/dist/templates/copyDirectory.js.map +1 -0
- package/dist/templates/copyTemplates.d.ts +8 -0
- package/dist/templates/copyTemplates.d.ts.map +1 -0
- package/dist/templates/copyTemplates.js +58 -0
- package/dist/templates/copyTemplates.js.map +1 -0
- package/dist/templates/index.d.ts +2 -0
- package/dist/templates/index.d.ts.map +1 -0
- package/dist/templates/index.js +6 -0
- package/dist/templates/index.js.map +1 -0
- package/dist/types/index.d.ts +50 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/git.d.ts +9 -0
- package/dist/utils/git.d.ts.map +1 -0
- package/dist/utils/git.js +71 -0
- package/dist/utils/git.js.map +1 -0
- package/dist/utils/validation.d.ts +45 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +180 -0
- package/dist/utils/validation.js.map +1 -0
- package/package.json +45 -0
- package/src/agility/api-keys/generateApiKeys.ts +100 -0
- package/src/agility/api-keys/getApiKeys.ts +13 -0
- package/src/agility/index.ts +3 -0
- package/src/agility/instance/createNewInstance.ts +67 -0
- package/src/agility/instance/getAvailableInstances.ts +49 -0
- package/src/agility/instance/manageInstance.ts +90 -0
- package/src/agility/utils/getMgmtAPIUrl.ts +68 -0
- package/src/auth/api-key/authenticateWithApiKey.ts +24 -0
- package/src/auth/index.ts +3 -0
- package/src/auth/oauth/authenticate.ts +165 -0
- package/src/auth/oauth/constants.ts +6 -0
- package/src/auth/oauth/exchangeCodeForToken.ts +43 -0
- package/src/cli/index.ts +281 -0
- package/src/cli/promptForMissingOptions.ts +104 -0
- package/src/config/env/createEnvFile.ts +30 -0
- package/src/config/index.ts +2 -0
- package/src/config/mcp/createMcpConfig.ts +30 -0
- package/src/config/packages/installAgilityPackages.ts +63 -0
- package/src/config/setupProject.ts +31 -0
- package/src/create-next-app/createNextApp.ts +75 -0
- package/src/create-next-app/index.ts +3 -0
- package/src/scaffold/components/createPageComponents.ts +74 -0
- package/src/scaffold/containers/createContainers.ts +55 -0
- package/src/scaffold/index.ts +2 -0
- package/src/scaffold/instance/createBlankInstance.ts +55 -0
- package/src/scaffold/models/createContentModels.ts +83 -0
- package/src/templates/copyDirectory.ts +24 -0
- package/src/templates/copyTemplates.ts +57 -0
- package/src/templates/index.ts +2 -0
- package/src/types/index.ts +55 -0
- package/src/utils/git.ts +74 -0
- package/src/utils/validation.ts +184 -0
- package/templates/.claude/QUICK-START.md +230 -0
- package/templates/.claude/README.md +32 -0
- package/templates/.claude/settings.json +8 -0
- package/templates/BLANK-INSTANCE-SETUP.md +375 -0
- package/templates/DEVELOPMENT.md +160 -0
- package/templates/EXAMPLE-PROMPTS.md +643 -0
- package/templates/PROMPTS.md +410 -0
- package/templates/README.md +281 -0
- package/templates/agents.md +429 -0
- package/templates/app/[locale]/[...slug]/error.tsx +17 -0
- package/templates/app/[locale]/[...slug]/not-found.tsx +9 -0
- package/templates/app/[locale]/[...slug]/page.tsx +102 -0
- package/templates/app/[locale]/layout.tsx +22 -0
- package/templates/app/[locale]/page.tsx +12 -0
- package/templates/app/api/dynamic-redirect/route.ts +24 -0
- package/templates/app/api/preview/exit/route.ts +34 -0
- package/templates/app/api/preview/route.ts +63 -0
- package/templates/app/api/revalidate/route.ts +118 -0
- package/templates/components/agility-components/RichTextArea.tsx +66 -0
- package/templates/components/agility-components/index.ts +30 -0
- package/templates/components/agility-pages/MainTemplate.tsx +36 -0
- package/templates/components/agility-pages/index.ts +11 -0
- package/templates/docs/01-agility-cms-overview.md +139 -0
- package/templates/docs/02-page-routing.md +251 -0
- package/templates/docs/03-creating-components.md +462 -0
- package/templates/docs/04-data-fetching.md +484 -0
- package/templates/docs/05-containers-and-lists.md +596 -0
- package/templates/docs/06-localization.md +561 -0
- package/templates/docs/07-caching-strategies.md +410 -0
- package/templates/docs/08-common-components.md +756 -0
- package/templates/docs/09-whats-included.md +279 -0
- package/templates/docs/10-mcp-server-setup.md +153 -0
- package/templates/docs/11-linked-nested-content.md +611 -0
- package/templates/docs/README.md +164 -0
- package/templates/lib/cms/getAgilityContext.ts +28 -0
- package/templates/lib/cms/getAgilityPage.ts +51 -0
- package/templates/lib/cms/getAgilitySDK.ts +22 -0
- package/templates/lib/cms/getContentItem.ts +20 -0
- package/templates/lib/cms/getContentList.ts +19 -0
- package/templates/lib/cms/getRedirections.ts +85 -0
- package/templates/lib/cms/getSitemapFlat.ts +19 -0
- package/templates/lib/cms/getSitemapNested.ts +19 -0
- package/templates/lib/env.ts +99 -0
- package/templates/lib/i18n/config.ts +28 -0
- package/templates/proxy.ts +101 -0
- package/tsconfig.json +21 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
const { spawn } = require('child_process');
|
|
4
|
+
const path = require('path');
|
|
5
|
+
const fs = require('fs');
|
|
6
|
+
|
|
7
|
+
// Check if dist directory exists (built version)
|
|
8
|
+
const distPath = path.join(__dirname, '..', 'dist', 'cli', 'index.js');
|
|
9
|
+
const srcPath = path.join(__dirname, '..', 'src', 'cli', 'index.ts');
|
|
10
|
+
|
|
11
|
+
let cliPath;
|
|
12
|
+
let command;
|
|
13
|
+
|
|
14
|
+
if (fs.existsSync(distPath)) {
|
|
15
|
+
// Use compiled version if available
|
|
16
|
+
cliPath = distPath;
|
|
17
|
+
command = 'node';
|
|
18
|
+
} else {
|
|
19
|
+
// Use tsx to run TypeScript directly
|
|
20
|
+
cliPath = srcPath;
|
|
21
|
+
command = 'npx';
|
|
22
|
+
// Use tsx if available, otherwise try ts-node
|
|
23
|
+
try {
|
|
24
|
+
require.resolve('tsx');
|
|
25
|
+
} catch {
|
|
26
|
+
try {
|
|
27
|
+
require.resolve('ts-node');
|
|
28
|
+
command = 'npx';
|
|
29
|
+
} catch {
|
|
30
|
+
console.error('Error: TypeScript files found but no TypeScript runner available.');
|
|
31
|
+
console.error('Please run "npm install" and "npm run build" first, or install tsx/ts-node.');
|
|
32
|
+
process.exit(1);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// Spawn the CLI process
|
|
38
|
+
const args = command === 'npx' ? ['tsx', cliPath, ...process.argv.slice(2)] : [cliPath, ...process.argv.slice(2)];
|
|
39
|
+
const child = spawn(command, args, {
|
|
40
|
+
stdio: 'inherit',
|
|
41
|
+
cwd: process.cwd(),
|
|
42
|
+
shell: true
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
child.on('exit', (code) => {
|
|
46
|
+
process.exit(code || 0);
|
|
47
|
+
});
|
|
48
|
+
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ApiKeys } from '../../types';
|
|
2
|
+
/**
|
|
3
|
+
* Gets API keys for an Agility instance
|
|
4
|
+
* @param accessToken - OAuth access token
|
|
5
|
+
* @param instanceGuid - Instance GUID
|
|
6
|
+
* @returns Object with fetch and preview API keys
|
|
7
|
+
*/
|
|
8
|
+
export declare function generateApiKeys(accessToken: string, instanceGuid: string): Promise<ApiKeys>;
|
|
9
|
+
//# sourceMappingURL=generateApiKeys.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateApiKeys.d.ts","sourceRoot":"","sources":["../../../src/agility/api-keys/generateApiKeys.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAG3C;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAuFjG"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.generateApiKeys = generateApiKeys;
|
|
7
|
+
const ora_1 = __importDefault(require("ora"));
|
|
8
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
9
|
+
const getMgmtAPIUrl_1 = require("../utils/getMgmtAPIUrl");
|
|
10
|
+
/**
|
|
11
|
+
* Gets API keys for an Agility instance
|
|
12
|
+
* @param accessToken - OAuth access token
|
|
13
|
+
* @param instanceGuid - Instance GUID
|
|
14
|
+
* @returns Object with fetch and preview API keys
|
|
15
|
+
*/
|
|
16
|
+
async function generateApiKeys(accessToken, instanceGuid) {
|
|
17
|
+
const spinner = (0, ora_1.default)('Fetching API keys...').start();
|
|
18
|
+
try {
|
|
19
|
+
const oauthBaseUrl = (0, getMgmtAPIUrl_1.getMgmtOAuthUrl)({ guid: instanceGuid });
|
|
20
|
+
// Get Fetch API Key
|
|
21
|
+
const fetchKeyUrl = `${oauthBaseUrl}GetFetchKey?guid=${instanceGuid}`;
|
|
22
|
+
const fetchKeyResponse = await fetch(fetchKeyUrl, {
|
|
23
|
+
method: 'GET',
|
|
24
|
+
headers: {
|
|
25
|
+
'Authorization': `Bearer ${accessToken}`,
|
|
26
|
+
'Content-Type': 'application/json',
|
|
27
|
+
},
|
|
28
|
+
});
|
|
29
|
+
if (!fetchKeyResponse.ok) {
|
|
30
|
+
const errorText = await fetchKeyResponse.text();
|
|
31
|
+
let errorMessage = `Failed to get Fetch Key: ${fetchKeyResponse.status} ${fetchKeyResponse.statusText}`;
|
|
32
|
+
try {
|
|
33
|
+
const errorJson = JSON.parse(errorText);
|
|
34
|
+
if (errorJson.message) {
|
|
35
|
+
errorMessage += ` - ${errorJson.message}`;
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
errorMessage += ` - ${errorText}`;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
errorMessage += ` - ${errorText}`;
|
|
43
|
+
}
|
|
44
|
+
throw new Error(errorMessage);
|
|
45
|
+
}
|
|
46
|
+
const fetchKey = await fetchKeyResponse.text();
|
|
47
|
+
if (!fetchKey) {
|
|
48
|
+
throw new Error('No Fetch Key received from API');
|
|
49
|
+
}
|
|
50
|
+
// Get Preview API Key
|
|
51
|
+
const previewKeyUrl = `${oauthBaseUrl}GetPreviewKey?guid=${instanceGuid}`;
|
|
52
|
+
const previewKeyResponse = await fetch(previewKeyUrl, {
|
|
53
|
+
method: 'GET',
|
|
54
|
+
headers: {
|
|
55
|
+
'Authorization': `Bearer ${accessToken}`,
|
|
56
|
+
'Content-Type': 'application/json',
|
|
57
|
+
},
|
|
58
|
+
});
|
|
59
|
+
if (!previewKeyResponse.ok) {
|
|
60
|
+
const errorText = await previewKeyResponse.text();
|
|
61
|
+
let errorMessage = `Failed to get Preview Key: ${previewKeyResponse.status} ${previewKeyResponse.statusText}`;
|
|
62
|
+
try {
|
|
63
|
+
const errorJson = JSON.parse(errorText);
|
|
64
|
+
if (errorJson.message) {
|
|
65
|
+
errorMessage += ` - ${errorJson.message}`;
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
errorMessage += ` - ${errorText}`;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
errorMessage += ` - ${errorText}`;
|
|
73
|
+
}
|
|
74
|
+
throw new Error(errorMessage);
|
|
75
|
+
}
|
|
76
|
+
const previewKey = await previewKeyResponse.text();
|
|
77
|
+
if (!previewKey) {
|
|
78
|
+
throw new Error('No Preview Key received from API');
|
|
79
|
+
}
|
|
80
|
+
spinner.succeed('API keys retrieved');
|
|
81
|
+
return {
|
|
82
|
+
fetchKey,
|
|
83
|
+
previewKey,
|
|
84
|
+
securityKey: '' // Security key is typically not needed for basic setup
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
catch (error) {
|
|
88
|
+
spinner.fail('Failed to get API keys');
|
|
89
|
+
if (error instanceof Error) {
|
|
90
|
+
console.error(chalk_1.default.red(`Error: ${error.message}`));
|
|
91
|
+
// Log additional details if available
|
|
92
|
+
if (error instanceof Error && 'cause' in error) {
|
|
93
|
+
console.error(chalk_1.default.gray(`Details: ${JSON.stringify(error.cause)}`));
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
throw error;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=generateApiKeys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateApiKeys.js","sourceRoot":"","sources":["../../../src/agility/api-keys/generateApiKeys.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ApiKeys } from '../../types';
|
|
2
|
+
/**
|
|
3
|
+
* Gets API keys for an existing instance
|
|
4
|
+
* @param accessToken - OAuth access token
|
|
5
|
+
* @param instanceGuid - Instance GUID
|
|
6
|
+
* @returns Object with fetch and preview API keys
|
|
7
|
+
*/
|
|
8
|
+
export declare function getApiKeys(accessToken: string, instanceGuid: string): Promise<ApiKeys>;
|
|
9
|
+
//# sourceMappingURL=getApiKeys.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getApiKeys.d.ts","sourceRoot":"","sources":["../../../src/agility/api-keys/getApiKeys.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAG3C;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE5F"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getApiKeys = getApiKeys;
|
|
4
|
+
const generateApiKeys_1 = require("./generateApiKeys");
|
|
5
|
+
/**
|
|
6
|
+
* Gets API keys for an existing instance
|
|
7
|
+
* @param accessToken - OAuth access token
|
|
8
|
+
* @param instanceGuid - Instance GUID
|
|
9
|
+
* @returns Object with fetch and preview API keys
|
|
10
|
+
*/
|
|
11
|
+
async function getApiKeys(accessToken, instanceGuid) {
|
|
12
|
+
return (0, generateApiKeys_1.generateApiKeys)(accessToken, instanceGuid);
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=getApiKeys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getApiKeys.js","sourceRoot":"","sources":["../../../src/agility/api-keys/getApiKeys.ts"],"names":[],"mappings":";;AASA,gCAEC;AAVD,uDAAoD;AAEpD;;;;;GAKG;AACI,KAAK,UAAU,UAAU,CAAC,WAAmB,EAAE,YAAoB;IACxE,OAAO,IAAA,iCAAe,EAAC,WAAW,EAAE,YAAY,CAAC,CAAC;AACpD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agility/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getApiKeys = exports.manageInstance = void 0;
|
|
4
|
+
var manageInstance_1 = require("./instance/manageInstance");
|
|
5
|
+
Object.defineProperty(exports, "manageInstance", { enumerable: true, get: function () { return manageInstance_1.manageInstance; } });
|
|
6
|
+
var getApiKeys_1 = require("./api-keys/getApiKeys");
|
|
7
|
+
Object.defineProperty(exports, "getApiKeys", { enumerable: true, get: function () { return getApiKeys_1.getApiKeys; } });
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agility/index.ts"],"names":[],"mappings":";;;AAAA,4DAA2D;AAAlD,gHAAA,cAAc,OAAA;AACvB,oDAAmD;AAA1C,wGAAA,UAAU,OAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { InstanceData } from '../../types';
|
|
2
|
+
/**
|
|
3
|
+
* Creates a new blank Agility instance
|
|
4
|
+
* @param accessToken - OAuth access token
|
|
5
|
+
* @returns Instance data with GUID and API keys
|
|
6
|
+
*/
|
|
7
|
+
export declare function createNewInstance(accessToken: string): Promise<InstanceData>;
|
|
8
|
+
//# sourceMappingURL=createNewInstance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createNewInstance.d.ts","sourceRoot":"","sources":["../../../src/agility/instance/createNewInstance.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGhD;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAuDlF"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.createNewInstance = createNewInstance;
|
|
7
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
8
|
+
const ora_1 = __importDefault(require("ora"));
|
|
9
|
+
const generateApiKeys_1 = require("../api-keys/generateApiKeys");
|
|
10
|
+
/**
|
|
11
|
+
* Creates a new blank Agility instance
|
|
12
|
+
* @param accessToken - OAuth access token
|
|
13
|
+
* @returns Instance data with GUID and API keys
|
|
14
|
+
*/
|
|
15
|
+
async function createNewInstance(accessToken) {
|
|
16
|
+
const spinner = (0, ora_1.default)('Creating new Agility instance...').start();
|
|
17
|
+
try {
|
|
18
|
+
// Prompt for instance name
|
|
19
|
+
const answers = await inquirer_1.default.prompt([
|
|
20
|
+
{
|
|
21
|
+
type: 'input',
|
|
22
|
+
name: 'instanceName',
|
|
23
|
+
message: 'Enter a name for your new instance:',
|
|
24
|
+
default: 'My Agility Instance',
|
|
25
|
+
validate: (input) => {
|
|
26
|
+
if (!input || input.trim().length === 0) {
|
|
27
|
+
return 'Instance name is required';
|
|
28
|
+
}
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
]);
|
|
33
|
+
spinner.text = 'Creating instance...';
|
|
34
|
+
// In a real implementation, this would call Agility's API to create an instance
|
|
35
|
+
// For now, we'll use a placeholder that would need to be implemented
|
|
36
|
+
// const instance = await createAgilityInstance(accessToken, answers.instanceName);
|
|
37
|
+
// For now, we'll prompt for the instance GUID manually
|
|
38
|
+
const guidAnswer = await inquirer_1.default.prompt([
|
|
39
|
+
{
|
|
40
|
+
type: 'input',
|
|
41
|
+
name: 'instanceGuid',
|
|
42
|
+
message: 'Enter the instance GUID (you can find this in Agility CMS):',
|
|
43
|
+
validate: (input) => {
|
|
44
|
+
if (!input || input.trim().length === 0) {
|
|
45
|
+
return 'Instance GUID is required';
|
|
46
|
+
}
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
]);
|
|
51
|
+
spinner.succeed('Instance ready');
|
|
52
|
+
// Generate API keys
|
|
53
|
+
const apiKeys = await (0, generateApiKeys_1.generateApiKeys)(accessToken, guidAnswer.instanceGuid);
|
|
54
|
+
return {
|
|
55
|
+
guid: guidAnswer.instanceGuid,
|
|
56
|
+
name: answers.instanceName,
|
|
57
|
+
apiKeys
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
spinner.fail('Failed to create instance');
|
|
62
|
+
throw error;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=createNewInstance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createNewInstance.js","sourceRoot":"","sources":["../../../src/agility/instance/createNewInstance.ts"],"names":[],"mappings":";;;;;AAUA,8CAuDC;AAjED,wDAAgC;AAChC,8CAAsB;AAEtB,iEAA8D;AAE9D;;;;GAIG;AACI,KAAK,UAAU,iBAAiB,CAAC,WAAmB;IACzD,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,kCAAkC,CAAC,CAAC,KAAK,EAAE,CAAC;IAEhE,IAAI,CAAC;QACH,2BAA2B;QAC3B,MAAM,OAAO,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAA2B;YAC9D;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,cAAc;gBACpB,OAAO,EAAE,qCAAqC;gBAC9C,OAAO,EAAE,qBAAqB;gBAC9B,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE;oBAC1B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBACxC,OAAO,2BAA2B,CAAC;oBACrC,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC;aACF;SACF,CAAC,CAAC;QAEH,OAAO,CAAC,IAAI,GAAG,sBAAsB,CAAC;QAEtC,gFAAgF;QAChF,qEAAqE;QACrE,mFAAmF;QAEnF,uDAAuD;QACvD,MAAM,UAAU,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAA2B;YACjE;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,cAAc;gBACpB,OAAO,EAAE,6DAA6D;gBACtE,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE;oBAC1B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBACxC,OAAO,2BAA2B,CAAC;oBACrC,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC;aACF;SACF,CAAC,CAAC;QAEH,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAElC,oBAAoB;QACpB,MAAM,OAAO,GAAG,MAAM,IAAA,iCAAe,EAAC,WAAW,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC;QAE5E,OAAO;YACL,IAAI,EAAE,UAAU,CAAC,YAAY;YAC7B,IAAI,EAAE,OAAO,CAAC,YAAY;YAC1B,OAAO;SACR,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAC1C,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Instance } from '../../types';
|
|
2
|
+
/**
|
|
3
|
+
* Gets available Agility instances for the authenticated user
|
|
4
|
+
* @param accessToken - OAuth access token
|
|
5
|
+
* @returns Array of instances
|
|
6
|
+
*/
|
|
7
|
+
export declare function getAvailableInstances(accessToken: string): Promise<Instance[]>;
|
|
8
|
+
//# sourceMappingURL=getAvailableInstances.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getAvailableInstances.d.ts","sourceRoot":"","sources":["../../../src/agility/instance/getAvailableInstances.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAG5C;;;;GAIG;AACH,wBAAsB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAsCpF"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.getAvailableInstances = getAvailableInstances;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const getMgmtAPIUrl_1 = require("../utils/getMgmtAPIUrl");
|
|
9
|
+
/**
|
|
10
|
+
* Gets available Agility instances for the authenticated user
|
|
11
|
+
* @param accessToken - OAuth access token
|
|
12
|
+
* @returns Array of instances
|
|
13
|
+
*/
|
|
14
|
+
async function getAvailableInstances(accessToken) {
|
|
15
|
+
try {
|
|
16
|
+
// Use the Agility Management API to get current user and their instances
|
|
17
|
+
// Note: We don't have a GUID yet, so we use the default URL
|
|
18
|
+
const apiBaseUrl = (0, getMgmtAPIUrl_1.getMgmtAPIUrl)();
|
|
19
|
+
const response = await fetch(`${apiBaseUrl}users/me`, {
|
|
20
|
+
method: 'GET',
|
|
21
|
+
headers: {
|
|
22
|
+
'Authorization': `Bearer ${accessToken}`,
|
|
23
|
+
'Content-Type': 'application/json',
|
|
24
|
+
},
|
|
25
|
+
});
|
|
26
|
+
if (!response.ok) {
|
|
27
|
+
throw new Error(`Failed to get user info: ${response.status} ${response.statusText}`);
|
|
28
|
+
}
|
|
29
|
+
const userData = await response.json();
|
|
30
|
+
// Convert websiteAccess to instances
|
|
31
|
+
const instances = (userData.websiteAccess || []).map(access => ({
|
|
32
|
+
name: access.displayName || access.websiteName,
|
|
33
|
+
guid: access.guid,
|
|
34
|
+
org: access.orgName,
|
|
35
|
+
}));
|
|
36
|
+
return instances;
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
console.warn(chalk_1.default.yellow('Could not fetch instances from API'));
|
|
40
|
+
throw error;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=getAvailableInstances.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getAvailableInstances.js","sourceRoot":"","sources":["../../../src/agility/instance/getAvailableInstances.ts"],"names":[],"mappings":";;;;;AASA,sDAsCC;AA/CD,kDAA0B;AAE1B,0DAAuD;AAEvD;;;;GAIG;AACI,KAAK,UAAU,qBAAqB,CAAC,WAAmB;IAC7D,IAAI,CAAC;QACH,yEAAyE;QACzE,4DAA4D;QAC5D,MAAM,UAAU,GAAG,IAAA,6BAAa,GAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,UAAU,UAAU,EAAE;YACpD,MAAM,EAAE,KAAK;YACb,OAAO,EAAE;gBACP,eAAe,EAAE,UAAU,WAAW,EAAE;gBACxC,cAAc,EAAE,kBAAkB;aACnC;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,4BAA4B,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QACxF,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,EAOnC,CAAC;QAEF,qCAAqC;QACrC,MAAM,SAAS,GAAe,CAAC,QAAQ,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC1E,IAAI,EAAE,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW;YAC9C,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,GAAG,EAAE,MAAM,CAAC,OAAO;SACpB,CAAC,CAAC,CAAC;QAEJ,OAAO,SAAS,CAAC;IACnB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,eAAK,CAAC,MAAM,CAAC,oCAAoC,CAAC,CAAC,CAAC;QACjE,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { InstanceData, CliOptions } from '../../types';
|
|
2
|
+
/**
|
|
3
|
+
* Manages Agility CMS instance selection from existing instances
|
|
4
|
+
* @param accessToken - OAuth access token
|
|
5
|
+
* @param options - CLI options
|
|
6
|
+
* @returns Instance data with GUID and API keys
|
|
7
|
+
*/
|
|
8
|
+
export declare function manageInstance(accessToken: string, options: CliOptions): Promise<InstanceData>;
|
|
9
|
+
//# sourceMappingURL=manageInstance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manageInstance.d.ts","sourceRoot":"","sources":["../../../src/agility/instance/manageInstance.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAI5D;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CA2EpG"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.manageInstance = manageInstance;
|
|
7
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
8
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
9
|
+
const ora_1 = __importDefault(require("ora"));
|
|
10
|
+
const getAvailableInstances_1 = require("./getAvailableInstances");
|
|
11
|
+
const generateApiKeys_1 = require("../api-keys/generateApiKeys");
|
|
12
|
+
/**
|
|
13
|
+
* Manages Agility CMS instance selection from existing instances
|
|
14
|
+
* @param accessToken - OAuth access token
|
|
15
|
+
* @param options - CLI options
|
|
16
|
+
* @returns Instance data with GUID and API keys
|
|
17
|
+
*/
|
|
18
|
+
async function manageInstance(accessToken, options) {
|
|
19
|
+
const spinner = (0, ora_1.default)('Fetching Agility instances...').start();
|
|
20
|
+
try {
|
|
21
|
+
// Fetch available instances using the Management API
|
|
22
|
+
const instances = await (0, getAvailableInstances_1.getAvailableInstances)(accessToken);
|
|
23
|
+
spinner.succeed(`Found ${instances.length} instance(s)`);
|
|
24
|
+
if (instances.length === 0) {
|
|
25
|
+
throw new Error('No Agility CMS instances found. Please create an instance in Agility CMS first, or skip the connection for now.');
|
|
26
|
+
}
|
|
27
|
+
// Group instances by organization
|
|
28
|
+
const instancesByOrg = new Map();
|
|
29
|
+
for (const inst of instances) {
|
|
30
|
+
const orgName = inst.org || 'No Organization';
|
|
31
|
+
if (!instancesByOrg.has(orgName)) {
|
|
32
|
+
instancesByOrg.set(orgName, []);
|
|
33
|
+
}
|
|
34
|
+
instancesByOrg.get(orgName).push(inst);
|
|
35
|
+
}
|
|
36
|
+
// Sort organizations alphabetically
|
|
37
|
+
const sortedOrgs = Array.from(instancesByOrg.keys()).sort();
|
|
38
|
+
// Build choices with organization grouping
|
|
39
|
+
const instanceChoices = [];
|
|
40
|
+
for (const orgName of sortedOrgs) {
|
|
41
|
+
// Add separator for organization (except for first one)
|
|
42
|
+
if (instanceChoices.length > 0) {
|
|
43
|
+
instanceChoices.push(new inquirer_1.default.Separator());
|
|
44
|
+
}
|
|
45
|
+
// Add organization header
|
|
46
|
+
instanceChoices.push(new inquirer_1.default.Separator(chalk_1.default.cyan(` ${orgName}`)));
|
|
47
|
+
// Add instances for this organization
|
|
48
|
+
const orgInstances = instancesByOrg.get(orgName);
|
|
49
|
+
for (const inst of orgInstances) {
|
|
50
|
+
instanceChoices.push({
|
|
51
|
+
name: ` - ${inst.name} (${inst.guid})`,
|
|
52
|
+
value: inst.guid
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
const selected = await inquirer_1.default.prompt([
|
|
57
|
+
{
|
|
58
|
+
type: 'list',
|
|
59
|
+
name: 'instanceGuid',
|
|
60
|
+
message: 'Select an instance:',
|
|
61
|
+
choices: instanceChoices
|
|
62
|
+
}
|
|
63
|
+
]);
|
|
64
|
+
// Find the selected instance to get its name
|
|
65
|
+
const selectedInstance = instances.find(inst => inst.guid === selected.instanceGuid);
|
|
66
|
+
if (!selectedInstance) {
|
|
67
|
+
throw new Error('Selected instance not found');
|
|
68
|
+
}
|
|
69
|
+
// Generate API keys for selected instance
|
|
70
|
+
const apiKeys = await (0, generateApiKeys_1.generateApiKeys)(accessToken, selected.instanceGuid);
|
|
71
|
+
return {
|
|
72
|
+
guid: selected.instanceGuid,
|
|
73
|
+
name: selectedInstance.name,
|
|
74
|
+
apiKeys
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
spinner.fail('Failed to manage instance');
|
|
79
|
+
throw error;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=manageInstance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manageInstance.js","sourceRoot":"","sources":["../../../src/agility/instance/manageInstance.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
interface Props {
|
|
2
|
+
/**
|
|
3
|
+
* The instance guid (optional - if not provided, uses default URL)
|
|
4
|
+
*/
|
|
5
|
+
guid?: string;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Gets the management API base URL based on the instance GUID
|
|
9
|
+
* @param guid - The instance GUID (optional - if not provided, uses default URL)
|
|
10
|
+
* @returns The base URL for the management API
|
|
11
|
+
*/
|
|
12
|
+
export declare const getMgmtAPIUrl: ({ guid }?: Props) => string;
|
|
13
|
+
/**
|
|
14
|
+
* Gets the management OAuth base URL based on the instance GUID
|
|
15
|
+
* @param guid - The instance GUID (optional - if not provided, uses default URL)
|
|
16
|
+
* @returns The base URL for the management OAuth endpoints
|
|
17
|
+
*/
|
|
18
|
+
export declare const getMgmtOAuthUrl: ({ guid }?: Props) => string;
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=getMgmtAPIUrl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getMgmtAPIUrl.d.ts","sourceRoot":"","sources":["../../../src/agility/utils/getMgmtAPIUrl.ts"],"names":[],"mappings":"AAAA,UAAU,KAAK;IACd;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAI,WAAU,KAAU,KAAG,MAuBpD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAAI,WAAU,KAAU,KAAG,MAwBtD,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getMgmtOAuthUrl = exports.getMgmtAPIUrl = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Gets the management API base URL based on the instance GUID
|
|
6
|
+
* @param guid - The instance GUID (optional - if not provided, uses default URL)
|
|
7
|
+
* @returns The base URL for the management API
|
|
8
|
+
*/
|
|
9
|
+
const getMgmtAPIUrl = ({ guid } = {}) => {
|
|
10
|
+
const baseUrlSuffixes = {
|
|
11
|
+
u: '',
|
|
12
|
+
c: '-ca',
|
|
13
|
+
e: '-eu',
|
|
14
|
+
a: '-aus',
|
|
15
|
+
d: '-dev'
|
|
16
|
+
};
|
|
17
|
+
// If no GUID provided, use default URL
|
|
18
|
+
if (!guid || guid.length === 0) {
|
|
19
|
+
return `https://mgmt.aglty.io/api/v1/`;
|
|
20
|
+
}
|
|
21
|
+
const env = guid.substring(guid.length - 1);
|
|
22
|
+
// New format of guid
|
|
23
|
+
if (baseUrlSuffixes.hasOwnProperty(env)) {
|
|
24
|
+
return `https://mgmt${baseUrlSuffixes[env]}.aglty.io/api/v1/`;
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
// use default url
|
|
28
|
+
return `https://mgmt.aglty.io/api/v1/`;
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
exports.getMgmtAPIUrl = getMgmtAPIUrl;
|
|
32
|
+
/**
|
|
33
|
+
* Gets the management OAuth base URL based on the instance GUID
|
|
34
|
+
* @param guid - The instance GUID (optional - if not provided, uses default URL)
|
|
35
|
+
* @returns The base URL for the management OAuth endpoints
|
|
36
|
+
*/
|
|
37
|
+
const getMgmtOAuthUrl = ({ guid } = {}) => {
|
|
38
|
+
const baseUrlSuffixes = {
|
|
39
|
+
u: '',
|
|
40
|
+
c: '-ca',
|
|
41
|
+
e: '-eu',
|
|
42
|
+
a: '-aus',
|
|
43
|
+
d: '-dev',
|
|
44
|
+
us2: 'usa2'
|
|
45
|
+
};
|
|
46
|
+
// If no GUID provided, use default URL
|
|
47
|
+
if (!guid || guid.length === 0) {
|
|
48
|
+
return `https://mgmt.aglty.io/oauth/`;
|
|
49
|
+
}
|
|
50
|
+
const env = guid.substring(guid.length - 1);
|
|
51
|
+
// New format of guid
|
|
52
|
+
if (baseUrlSuffixes.hasOwnProperty(env)) {
|
|
53
|
+
return `https://mgmt${baseUrlSuffixes[env]}.aglty.io/oauth/`;
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
// use default url
|
|
57
|
+
return `https://mgmt.aglty.io/oauth/`;
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
exports.getMgmtOAuthUrl = getMgmtOAuthUrl;
|
|
61
|
+
//# sourceMappingURL=getMgmtAPIUrl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getMgmtAPIUrl.js","sourceRoot":"","sources":["../../../src/agility/utils/getMgmtAPIUrl.ts"],"names":[],"mappings":";;;AAOA;;;;GAIG;AACI,MAAM,aAAa,GAAG,CAAC,EAAE,IAAI,KAAY,EAAE,EAAU,EAAE;IAC7D,MAAM,eAAe,GAA8B;QAClD,CAAC,EAAE,EAAE;QACL,CAAC,EAAE,KAAK;QACR,CAAC,EAAE,KAAK;QACR,CAAC,EAAE,MAAM;QACT,CAAC,EAAE,MAAM;KACT,CAAC;IAEF,uCAAuC;IACvC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO,+BAA+B,CAAC;IACxC,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAE5C,qBAAqB;IACrB,IAAI,eAAe,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;QACzC,OAAO,eAAe,eAAe,CAAC,GAAG,CAAC,mBAAmB,CAAC;IAC/D,CAAC;SAAM,CAAC;QACP,kBAAkB;QAClB,OAAO,+BAA+B,CAAC;IACxC,CAAC;AACF,CAAC,CAAC;AAvBW,QAAA,aAAa,iBAuBxB;AAEF;;;;GAIG;AACI,MAAM,eAAe,GAAG,CAAC,EAAE,IAAI,KAAY,EAAE,EAAU,EAAE;IAC/D,MAAM,eAAe,GAA8B;QAClD,CAAC,EAAE,EAAE;QACL,CAAC,EAAE,KAAK;QACR,CAAC,EAAE,KAAK;QACR,CAAC,EAAE,MAAM;QACT,CAAC,EAAE,MAAM;QACT,GAAG,EAAE,MAAM;KACX,CAAC;IAEF,uCAAuC;IACvC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO,8BAA8B,CAAC;IACvC,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAE5C,qBAAqB;IACrB,IAAI,eAAe,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;QACzC,OAAO,eAAe,eAAe,CAAC,GAAG,CAAC,kBAAkB,CAAC;IAC9D,CAAC;SAAM,CAAC;QACP,kBAAkB;QAClB,OAAO,8BAA8B,CAAC;IACvC,CAAC;AACF,CAAC,CAAC;AAxBW,QAAA,eAAe,mBAwB1B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authenticateWithApiKey.d.ts","sourceRoot":"","sources":["../../../src/auth/api-key/authenticateWithApiKey.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,MAAM,CAAC,CAgB9D"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.authenticateWithApiKey = authenticateWithApiKey;
|
|
7
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
8
|
+
/**
|
|
9
|
+
* Alternative: Manual API key input if OAuth is not available
|
|
10
|
+
* @returns API key or access token
|
|
11
|
+
*/
|
|
12
|
+
async function authenticateWithApiKey() {
|
|
13
|
+
const answers = await inquirer_1.default.prompt([
|
|
14
|
+
{
|
|
15
|
+
type: 'input',
|
|
16
|
+
name: 'apiKey',
|
|
17
|
+
message: 'Enter your Agility CMS API key:',
|
|
18
|
+
validate: (input) => {
|
|
19
|
+
if (!input || input.trim().length === 0) {
|
|
20
|
+
return 'API key is required';
|
|
21
|
+
}
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
]);
|
|
26
|
+
return answers.apiKey;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=authenticateWithApiKey.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authenticateWithApiKey.js","sourceRoot":"","sources":["../../../src/auth/api-key/authenticateWithApiKey.ts"],"names":[],"mappings":";;;;;AAMA,wDAgBC;AAtBD,wDAAgC;AAEhC;;;GAGG;AACI,KAAK,UAAU,sBAAsB;IAC1C,MAAM,OAAO,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAqB;QACxD;YACE,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,iCAAiC;YAC1C,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE;gBAC1B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACxC,OAAO,qBAAqB,CAAC;gBAC/B,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;SACF;KACF,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC,MAAM,CAAC;AACxB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.authenticateWithApiKey = exports.authenticate = void 0;
|
|
4
|
+
var authenticate_1 = require("./oauth/authenticate");
|
|
5
|
+
Object.defineProperty(exports, "authenticate", { enumerable: true, get: function () { return authenticate_1.authenticate; } });
|
|
6
|
+
var authenticateWithApiKey_1 = require("./api-key/authenticateWithApiKey");
|
|
7
|
+
Object.defineProperty(exports, "authenticateWithApiKey", { enumerable: true, get: function () { return authenticateWithApiKey_1.authenticateWithApiKey; } });
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":";;;AAAA,qDAAoD;AAA3C,4GAAA,YAAY,OAAA;AACrB,2EAA0E;AAAjE,gIAAA,sBAAsB,OAAA"}
|