@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 @@
|
|
|
1
|
+
{"version":3,"file":"authenticate.d.ts","sourceRoot":"","sources":["../../../src/auth/oauth/authenticate.ts"],"names":[],"mappings":"AAQA;;;GAGG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAuJpD"}
|
|
@@ -0,0 +1,162 @@
|
|
|
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.authenticate = authenticate;
|
|
7
|
+
const http_1 = __importDefault(require("http"));
|
|
8
|
+
const open_1 = __importDefault(require("open"));
|
|
9
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
10
|
+
const ora_1 = __importDefault(require("ora"));
|
|
11
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
12
|
+
const constants_1 = require("./constants");
|
|
13
|
+
const exchangeCodeForToken_1 = require("./exchangeCodeForToken");
|
|
14
|
+
/**
|
|
15
|
+
* Authenticates user with Agility CMS using OAuth 2.0
|
|
16
|
+
* @returns Access token
|
|
17
|
+
*/
|
|
18
|
+
async function authenticate() {
|
|
19
|
+
return new Promise(async (resolve, reject) => {
|
|
20
|
+
// Build OAuth URL - Agility CMS OAuth doesn't require client_id
|
|
21
|
+
const authUrl = new URL(constants_1.AGILITY_OAUTH_AUTHORIZE_URL);
|
|
22
|
+
authUrl.searchParams.set('redirect_uri', constants_1.REDIRECT_URI);
|
|
23
|
+
authUrl.searchParams.set('response_type', 'code');
|
|
24
|
+
authUrl.searchParams.set('scope', 'openid profile email offline_access');
|
|
25
|
+
// Ask user for confirmation before opening browser
|
|
26
|
+
try {
|
|
27
|
+
const answer = await inquirer_1.default.prompt([
|
|
28
|
+
{
|
|
29
|
+
type: 'confirm',
|
|
30
|
+
name: 'proceed',
|
|
31
|
+
message: 'We need to open a browser window for authentication. Proceed?',
|
|
32
|
+
default: true
|
|
33
|
+
}
|
|
34
|
+
]);
|
|
35
|
+
if (!answer.proceed) {
|
|
36
|
+
reject(new Error('Authentication cancelled by user'));
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
reject(new Error('Failed to get user confirmation'));
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
const spinner = (0, ora_1.default)('Opening browser for authentication...').start();
|
|
45
|
+
let timeoutId = null;
|
|
46
|
+
let isResolved = false;
|
|
47
|
+
const cleanup = () => {
|
|
48
|
+
if (timeoutId) {
|
|
49
|
+
clearTimeout(timeoutId);
|
|
50
|
+
timeoutId = null;
|
|
51
|
+
}
|
|
52
|
+
server.closeAllConnections();
|
|
53
|
+
server.close(() => {
|
|
54
|
+
// Server closed, allow process to exit
|
|
55
|
+
});
|
|
56
|
+
};
|
|
57
|
+
// Start local server to receive callback
|
|
58
|
+
const server = http_1.default.createServer((req, res) => {
|
|
59
|
+
if (req.url?.startsWith('/callback')) {
|
|
60
|
+
const url = new URL(req.url, `http://localhost:${constants_1.PORT}`);
|
|
61
|
+
const code = url.searchParams.get('code');
|
|
62
|
+
const error = url.searchParams.get('error');
|
|
63
|
+
if (error) {
|
|
64
|
+
res.writeHead(400, { 'Content-Type': 'text/html' });
|
|
65
|
+
res.end(`
|
|
66
|
+
<html>
|
|
67
|
+
<body>
|
|
68
|
+
<h1>Authentication Failed</h1>
|
|
69
|
+
<p>${error}</p>
|
|
70
|
+
<p>You can close this window.</p>
|
|
71
|
+
</body>
|
|
72
|
+
</html>
|
|
73
|
+
`);
|
|
74
|
+
if (!isResolved) {
|
|
75
|
+
isResolved = true;
|
|
76
|
+
cleanup();
|
|
77
|
+
spinner.fail('Authentication failed');
|
|
78
|
+
reject(new Error(`OAuth error: ${error}`));
|
|
79
|
+
}
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
if (code) {
|
|
83
|
+
res.writeHead(200, { 'Content-Type': 'text/html' });
|
|
84
|
+
res.end(`
|
|
85
|
+
<html>
|
|
86
|
+
<body>
|
|
87
|
+
<h1>Authentication Successful!</h1>
|
|
88
|
+
<p>You can close this window and return to the terminal.</p>
|
|
89
|
+
</body>
|
|
90
|
+
</html>
|
|
91
|
+
`);
|
|
92
|
+
if (!isResolved) {
|
|
93
|
+
isResolved = true;
|
|
94
|
+
cleanup();
|
|
95
|
+
// Exchange code for token
|
|
96
|
+
spinner.text = 'Exchanging authorization code for token...';
|
|
97
|
+
(0, exchangeCodeForToken_1.exchangeCodeForToken)(code)
|
|
98
|
+
.then((token) => {
|
|
99
|
+
spinner.succeed('Authentication successful');
|
|
100
|
+
resolve(token);
|
|
101
|
+
})
|
|
102
|
+
.catch((err) => {
|
|
103
|
+
spinner.fail('Failed to exchange code for token');
|
|
104
|
+
const errorMessage = err instanceof Error ? err.message : String(err);
|
|
105
|
+
console.error(chalk_1.default.red('\nā Token exchange error:'));
|
|
106
|
+
console.error(chalk_1.default.red(` ${errorMessage}`));
|
|
107
|
+
console.error(chalk_1.default.gray(' You can skip authentication and configure Agility CMS manually.\n'));
|
|
108
|
+
reject(err);
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
res.writeHead(400, { 'Content-Type': 'text/html' });
|
|
114
|
+
res.end(`
|
|
115
|
+
<html>
|
|
116
|
+
<body>
|
|
117
|
+
<h1>Authentication Failed</h1>
|
|
118
|
+
<p>No authorization code received.</p>
|
|
119
|
+
<p>You can close this window.</p>
|
|
120
|
+
</body>
|
|
121
|
+
</html>
|
|
122
|
+
`);
|
|
123
|
+
if (!isResolved) {
|
|
124
|
+
isResolved = true;
|
|
125
|
+
cleanup();
|
|
126
|
+
spinner.fail('Authentication failed');
|
|
127
|
+
reject(new Error('No authorization code received'));
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
server.listen(constants_1.PORT, async () => {
|
|
133
|
+
try {
|
|
134
|
+
// Open browser
|
|
135
|
+
await (0, open_1.default)(authUrl.toString());
|
|
136
|
+
spinner.text = 'Waiting for authentication in browser...';
|
|
137
|
+
console.log(chalk_1.default.cyan('\nA browser window should open for authentication.'));
|
|
138
|
+
console.log(chalk_1.default.gray('If it doesn\'t, please open this URL manually:'));
|
|
139
|
+
console.log(chalk_1.default.blue(authUrl.toString()) + '\n');
|
|
140
|
+
}
|
|
141
|
+
catch (err) {
|
|
142
|
+
if (!isResolved) {
|
|
143
|
+
isResolved = true;
|
|
144
|
+
cleanup();
|
|
145
|
+
spinner.fail('Failed to open browser');
|
|
146
|
+
console.log(chalk_1.default.yellow(`\nPlease open this URL in your browser: ${authUrl.toString()}\n`));
|
|
147
|
+
reject(err);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
// Timeout after 5 minutes
|
|
152
|
+
timeoutId = setTimeout(() => {
|
|
153
|
+
if (!isResolved) {
|
|
154
|
+
isResolved = true;
|
|
155
|
+
cleanup();
|
|
156
|
+
spinner.fail('Authentication timeout');
|
|
157
|
+
reject(new Error('Authentication timeout - please try again'));
|
|
158
|
+
}
|
|
159
|
+
}, 5 * 60 * 1000);
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=authenticate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authenticate.js","sourceRoot":"","sources":["../../../src/auth/oauth/authenticate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare const AGILITY_OAUTH_AUTHORIZE_URL = "https://mgmt.aglty.io/oauth/authorize";
|
|
2
|
+
export declare const AGILITY_OAUTH_TOKEN_URL = "https://mgmt.aglty.io/oauth/token";
|
|
3
|
+
export declare const REDIRECT_URI = "http://localhost:3001/callback";
|
|
4
|
+
export declare const PORT = 3001;
|
|
5
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/auth/oauth/constants.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,2BAA2B,0CAA0C,CAAC;AACnF,eAAO,MAAM,uBAAuB,sCAAsC,CAAC;AAC3E,eAAO,MAAM,YAAY,mCAAmC,CAAC;AAC7D,eAAO,MAAM,IAAI,OAAO,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PORT = exports.REDIRECT_URI = exports.AGILITY_OAUTH_TOKEN_URL = exports.AGILITY_OAUTH_AUTHORIZE_URL = void 0;
|
|
4
|
+
// OAuth configuration for Agility CMS
|
|
5
|
+
exports.AGILITY_OAUTH_AUTHORIZE_URL = 'https://mgmt.aglty.io/oauth/authorize';
|
|
6
|
+
exports.AGILITY_OAUTH_TOKEN_URL = 'https://mgmt.aglty.io/oauth/token';
|
|
7
|
+
exports.REDIRECT_URI = 'http://localhost:3001/callback';
|
|
8
|
+
exports.PORT = 3001;
|
|
9
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/auth/oauth/constants.ts"],"names":[],"mappings":";;;AAAA,sCAAsC;AACzB,QAAA,2BAA2B,GAAG,uCAAuC,CAAC;AACtE,QAAA,uBAAuB,GAAG,mCAAmC,CAAC;AAC9D,QAAA,YAAY,GAAG,gCAAgC,CAAC;AAChD,QAAA,IAAI,GAAG,IAAI,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exchangeCodeForToken.d.ts","sourceRoot":"","sources":["../../../src/auth/oauth/exchangeCodeForToken.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAkCxE"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.exchangeCodeForToken = exchangeCodeForToken;
|
|
4
|
+
const constants_1 = require("./constants");
|
|
5
|
+
/**
|
|
6
|
+
* Exchanges authorization code for access token
|
|
7
|
+
* @param code - Authorization code
|
|
8
|
+
* @returns Access token
|
|
9
|
+
*/
|
|
10
|
+
async function exchangeCodeForToken(code) {
|
|
11
|
+
// Exchange authorization code for access token using Agility CMS OAuth token endpoint
|
|
12
|
+
// Agility CMS OAuth doesn't require client_id or client_secret
|
|
13
|
+
// Use Node.js built-in fetch (Node 18+)
|
|
14
|
+
if (typeof globalThis.fetch !== 'function') {
|
|
15
|
+
throw new Error('OAuth token exchange requires Node.js 18+ (with built-in fetch).');
|
|
16
|
+
}
|
|
17
|
+
// Make token exchange request to Agility CMS OAuth token endpoint
|
|
18
|
+
const response = await fetch(constants_1.AGILITY_OAUTH_TOKEN_URL, {
|
|
19
|
+
method: 'POST',
|
|
20
|
+
headers: {
|
|
21
|
+
'Content-Type': 'application/x-www-form-urlencoded',
|
|
22
|
+
},
|
|
23
|
+
body: new URLSearchParams({
|
|
24
|
+
grant_type: 'authorization_code',
|
|
25
|
+
code: code,
|
|
26
|
+
redirect_uri: constants_1.REDIRECT_URI,
|
|
27
|
+
}).toString(),
|
|
28
|
+
});
|
|
29
|
+
if (!response.ok) {
|
|
30
|
+
const errorText = await response.text();
|
|
31
|
+
throw new Error(`Token exchange failed: ${response.status} ${response.statusText} - ${errorText}`);
|
|
32
|
+
}
|
|
33
|
+
const data = await response.json();
|
|
34
|
+
if (!data.access_token) {
|
|
35
|
+
throw new Error('No access token received from OAuth server');
|
|
36
|
+
}
|
|
37
|
+
return data.access_token;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=exchangeCodeForToken.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exchangeCodeForToken.js","sourceRoot":"","sources":["../../../src/auth/oauth/exchangeCodeForToken.ts"],"names":[],"mappings":";;AAOA,oDAkCC;AAzCD,2CAAoE;AAEpE;;;;GAIG;AACI,KAAK,UAAU,oBAAoB,CAAC,IAAY;IACrD,sFAAsF;IACtF,+DAA+D;IAE/D,wCAAwC;IACxC,IAAI,OAAO,UAAU,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;IACtF,CAAC;IAED,kEAAkE;IAClE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,mCAAuB,EAAE;QACpD,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,mCAAmC;SACpD;QACD,IAAI,EAAE,IAAI,eAAe,CAAC;YACxB,UAAU,EAAE,oBAAoB;YAChC,IAAI,EAAE,IAAI;YACV,YAAY,EAAE,wBAAY;SAC3B,CAAC,CAAC,QAAQ,EAAE;KACd,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,0BAA0B,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,MAAM,SAAS,EAAE,CAAC,CAAC;IACrG,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAA4E,CAAC;IAE7G,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;IAED,OAAO,IAAI,CAAC,YAAY,CAAC;AAC3B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
+
}
|
|
9
|
+
Object.defineProperty(o, k2, desc);
|
|
10
|
+
}) : (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
o[k2] = m[k];
|
|
13
|
+
}));
|
|
14
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
+
}) : function(o, v) {
|
|
17
|
+
o["default"] = v;
|
|
18
|
+
});
|
|
19
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
20
|
+
var ownKeys = function(o) {
|
|
21
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
22
|
+
var ar = [];
|
|
23
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
24
|
+
return ar;
|
|
25
|
+
};
|
|
26
|
+
return ownKeys(o);
|
|
27
|
+
};
|
|
28
|
+
return function (mod) {
|
|
29
|
+
if (mod && mod.__esModule) return mod;
|
|
30
|
+
var result = {};
|
|
31
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
32
|
+
__setModuleDefault(result, mod);
|
|
33
|
+
return result;
|
|
34
|
+
};
|
|
35
|
+
})();
|
|
36
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
37
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
38
|
+
};
|
|
39
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
+
const commander_1 = require("commander");
|
|
41
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
42
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
43
|
+
const open_1 = __importDefault(require("open"));
|
|
44
|
+
const boxen_1 = __importDefault(require("boxen"));
|
|
45
|
+
const update_notifier_1 = __importDefault(require("update-notifier"));
|
|
46
|
+
const path_1 = __importDefault(require("path"));
|
|
47
|
+
const create_next_app_1 = require("../create-next-app");
|
|
48
|
+
const auth = __importStar(require("../auth"));
|
|
49
|
+
const agility = __importStar(require("../agility"));
|
|
50
|
+
const config = __importStar(require("../config"));
|
|
51
|
+
const templates = __importStar(require("../templates"));
|
|
52
|
+
const promptForMissingOptions_1 = require("./promptForMissingOptions");
|
|
53
|
+
const validation_1 = require("../utils/validation");
|
|
54
|
+
const git_1 = require("../utils/git");
|
|
55
|
+
// Check for updates
|
|
56
|
+
const pkg = require('../../package.json');
|
|
57
|
+
(0, update_notifier_1.default)({ pkg }).notify({
|
|
58
|
+
isGlobal: true,
|
|
59
|
+
message: 'Update available: {currentVersion} ā {latestVersion}\nRun {updateCommand} to update',
|
|
60
|
+
});
|
|
61
|
+
/**
|
|
62
|
+
* Handle errors with helpful recovery suggestions
|
|
63
|
+
*/
|
|
64
|
+
function handleError(error) {
|
|
65
|
+
console.error('\n' + chalk_1.default.red.bold('ā Error occurred:'));
|
|
66
|
+
console.error(chalk_1.default.red(error.message) + '\n');
|
|
67
|
+
// Provide specific recovery suggestions based on error type
|
|
68
|
+
if (error.message.includes('EACCES') || error.message.includes('permission')) {
|
|
69
|
+
console.error(chalk_1.default.yellow('Possible solutions:'));
|
|
70
|
+
console.error(chalk_1.default.white(' ⢠Check directory permissions'));
|
|
71
|
+
console.error(chalk_1.default.white(' ⢠Try running without sudo (not recommended)'));
|
|
72
|
+
console.error(chalk_1.default.white(' ⢠Choose a different directory\n'));
|
|
73
|
+
}
|
|
74
|
+
else if (error.message.includes('ENOSPC')) {
|
|
75
|
+
console.error(chalk_1.default.yellow('Possible solutions:'));
|
|
76
|
+
console.error(chalk_1.default.white(' ⢠Free up disk space'));
|
|
77
|
+
console.error(chalk_1.default.white(' ⢠Choose a different disk/directory\n'));
|
|
78
|
+
}
|
|
79
|
+
else if (error.message.includes('ENOTFOUND') || error.message.includes('network')) {
|
|
80
|
+
console.error(chalk_1.default.yellow('Possible solutions:'));
|
|
81
|
+
console.error(chalk_1.default.white(' ⢠Check your internet connection'));
|
|
82
|
+
console.error(chalk_1.default.white(' ⢠Try again in a few moments'));
|
|
83
|
+
console.error(chalk_1.default.white(' ⢠Check if you are behind a proxy\n'));
|
|
84
|
+
}
|
|
85
|
+
else if (error.message.includes('authentication') || error.message.includes('OAuth')) {
|
|
86
|
+
console.error(chalk_1.default.yellow('Possible solutions:'));
|
|
87
|
+
console.error(chalk_1.default.white(' ⢠Choose "manual setup" option'));
|
|
88
|
+
console.error(chalk_1.default.white(' ⢠Configure .env.local manually after project creation'));
|
|
89
|
+
console.error(chalk_1.default.white(' ⢠Get API keys from: https://manager.agilitycms.com\n'));
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
console.error(chalk_1.default.yellow('Need help?'));
|
|
93
|
+
console.error(chalk_1.default.white(' ⢠Check the documentation: https://github.com/agility/create-next-agility-app'));
|
|
94
|
+
console.error(chalk_1.default.white(' ⢠Open an issue: https://github.com/agility/create-next-agility-app/issues\n'));
|
|
95
|
+
}
|
|
96
|
+
if (process.env.DEBUG) {
|
|
97
|
+
console.error(chalk_1.default.gray('Stack trace:'));
|
|
98
|
+
console.error(chalk_1.default.gray(error.stack || 'No stack trace available'));
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
console.error(chalk_1.default.gray('Run with DEBUG=1 for detailed error information\n'));
|
|
102
|
+
}
|
|
103
|
+
process.exit(1);
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Display success message with next steps
|
|
107
|
+
*/
|
|
108
|
+
function displaySuccessMessage(projectName, instanceGuid, apiKeys) {
|
|
109
|
+
const hasAgilityConfig = Boolean(instanceGuid && apiKeys);
|
|
110
|
+
const message = chalk_1.default.green.bold('ā Success!') +
|
|
111
|
+
chalk_1.default.white(` Your project is ready at: ${chalk_1.default.cyan(projectName)}\n\n`) +
|
|
112
|
+
chalk_1.default.cyan.bold('Next steps:\n') +
|
|
113
|
+
chalk_1.default.white(` 1. ${chalk_1.default.bold(`cd ${projectName}`)}\n`) +
|
|
114
|
+
chalk_1.default.white(` 2. ${chalk_1.default.bold('npm run dev')}\n`) +
|
|
115
|
+
chalk_1.default.white(` 3. Open ${chalk_1.default.cyan('http://localhost:3000')}\n\n`) +
|
|
116
|
+
chalk_1.default.cyan.bold('Documentation:\n') +
|
|
117
|
+
chalk_1.default.white(` ⢠${chalk_1.default.bold('.claude/agents.md')} - AI assistant guide\n`) +
|
|
118
|
+
chalk_1.default.white(` ⢠${chalk_1.default.bold('docs/')} - Full documentation\n`) +
|
|
119
|
+
chalk_1.default.white(` ⢠${chalk_1.default.bold('README.md')} - Getting started\n\n`) +
|
|
120
|
+
(hasAgilityConfig
|
|
121
|
+
? chalk_1.default.green('ā Agility CMS is configured and ready!\n\n')
|
|
122
|
+
: chalk_1.default.yellow('ā Configure Agility CMS:\n') +
|
|
123
|
+
chalk_1.default.white(` Edit ${chalk_1.default.bold('.env.local')} with your credentials\n`) +
|
|
124
|
+
chalk_1.default.gray(' Get your API keys from: https://manager.agilitycms.com\n\n')) +
|
|
125
|
+
chalk_1.default.cyan.bold('Get help:\n') +
|
|
126
|
+
chalk_1.default.white(` ⢠${chalk_1.default.underline('https://agilitycms.com/docs')}\n`) +
|
|
127
|
+
chalk_1.default.white(` ⢠${chalk_1.default.underline('https://github.com/agility/create-next-agility-app')}`);
|
|
128
|
+
console.log('\n' + (0, boxen_1.default)(message, {
|
|
129
|
+
padding: 1,
|
|
130
|
+
margin: 1,
|
|
131
|
+
borderStyle: 'round',
|
|
132
|
+
borderColor: 'green',
|
|
133
|
+
}) + '\n');
|
|
134
|
+
}
|
|
135
|
+
const program = new commander_1.Command();
|
|
136
|
+
program
|
|
137
|
+
.name('create-next-agility-app')
|
|
138
|
+
.description('Create a new Next.js project with Agility CMS integration')
|
|
139
|
+
.version('1.0.0')
|
|
140
|
+
.argument('[project-name]', 'Name of the project')
|
|
141
|
+
.option('--typescript, --ts', 'Initialize as a TypeScript project')
|
|
142
|
+
.option('--javascript, --js', 'Initialize as a JavaScript project')
|
|
143
|
+
.option('--tailwind', 'Initialize with Tailwind CSS')
|
|
144
|
+
.option('--no-tailwind', 'Initialize without Tailwind CSS')
|
|
145
|
+
.option('--eslint', 'Initialize with ESLint')
|
|
146
|
+
.option('--no-eslint', 'Initialize without ESLint')
|
|
147
|
+
.option('--app', 'Initialize with App Router')
|
|
148
|
+
.option('--src-dir', 'Initialize with src/ directory')
|
|
149
|
+
.option('--import-alias <alias>', 'Specify import alias (default: @/*)')
|
|
150
|
+
.option('--use-npm', 'Use npm as package manager')
|
|
151
|
+
.option('--use-pnpm', 'Use pnpm as package manager')
|
|
152
|
+
.option('--use-yarn', 'Use yarn as package manager')
|
|
153
|
+
.option('--use-bun', 'Use bun as package manager')
|
|
154
|
+
.option('--skip-install', 'Skip package installation')
|
|
155
|
+
.action(async (projectName, options) => {
|
|
156
|
+
try {
|
|
157
|
+
console.log(chalk_1.default.blue.bold('\nš Creating Next.js project with Agility CMS...\n'));
|
|
158
|
+
// Validate Node.js version
|
|
159
|
+
const nodeValidation = (0, validation_1.validateNodeVersion)();
|
|
160
|
+
if (!nodeValidation.valid) {
|
|
161
|
+
(0, validation_1.displayValidationError)(nodeValidation.message);
|
|
162
|
+
process.exit(1);
|
|
163
|
+
}
|
|
164
|
+
// Step 1: Agility CMS setup (ask questions first)
|
|
165
|
+
console.log(chalk_1.default.magenta.bold('\nāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā'));
|
|
166
|
+
console.log(chalk_1.default.magenta.bold('⨠STEP 1: Agility CMS integration'));
|
|
167
|
+
console.log(chalk_1.default.magenta.bold('āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā\n'));
|
|
168
|
+
let instanceGuid;
|
|
169
|
+
let apiKeys = null;
|
|
170
|
+
let instanceName;
|
|
171
|
+
// Step 1a: Ask user what they want to do
|
|
172
|
+
const agilityChoice = await inquirer_1.default.prompt([
|
|
173
|
+
{
|
|
174
|
+
type: 'list',
|
|
175
|
+
name: 'action',
|
|
176
|
+
message: 'Choose an option:',
|
|
177
|
+
choices: [
|
|
178
|
+
{ name: '1. Connect to an existing instance', value: 'existing' },
|
|
179
|
+
{ name: '2. Create a new Agility instance', value: 'new' },
|
|
180
|
+
{ name: '3. Let me connect it manually later', value: 'manual' }
|
|
181
|
+
]
|
|
182
|
+
}
|
|
183
|
+
]);
|
|
184
|
+
if (agilityChoice.action === 'existing') {
|
|
185
|
+
try {
|
|
186
|
+
console.log(chalk_1.default.magenta('š Authenticating with Agility CMS...\n'));
|
|
187
|
+
const accessToken = await auth.authenticate();
|
|
188
|
+
// Step 1b: Instance management
|
|
189
|
+
console.log(chalk_1.default.magenta('š Setting up Agility CMS instance...\n'));
|
|
190
|
+
const instanceData = await agility.manageInstance(accessToken, options);
|
|
191
|
+
instanceGuid = instanceData.guid;
|
|
192
|
+
apiKeys = instanceData.apiKeys;
|
|
193
|
+
instanceName = instanceData.name;
|
|
194
|
+
}
|
|
195
|
+
catch (authError) {
|
|
196
|
+
console.log(chalk_1.default.yellow('\nā ļø Authentication failed. You can configure Agility CMS later.'));
|
|
197
|
+
console.log(chalk_1.default.gray(' Edit .env.local with your Agility credentials when ready.\n'));
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
else if (agilityChoice.action === 'new') {
|
|
201
|
+
// Will open browser after project is created
|
|
202
|
+
console.log(chalk_1.default.gray('Skipping Agility instance connection. You can configure it manually later.\n'));
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
// Manual connection later
|
|
206
|
+
console.log(chalk_1.default.gray('Skipping Agility instance connection. You can configure it manually later.\n'));
|
|
207
|
+
}
|
|
208
|
+
// Sanitize instance name to use as default project name
|
|
209
|
+
const defaultProjectName = instanceName
|
|
210
|
+
? instanceName
|
|
211
|
+
.toLowerCase()
|
|
212
|
+
.replace(/\s+/g, '-')
|
|
213
|
+
.replace(/[^a-z0-9-_]/g, '')
|
|
214
|
+
.replace(/-+/g, '-')
|
|
215
|
+
.replace(/^-|-$/g, '') || undefined
|
|
216
|
+
: undefined;
|
|
217
|
+
// Prompt for missing information if not provided via flags
|
|
218
|
+
// Use instance name as default if available and project name not provided
|
|
219
|
+
const finalOptions = await (0, promptForMissingOptions_1.promptForMissingOptions)(projectName, // Only pass projectName if explicitly provided
|
|
220
|
+
options, defaultProjectName // Use sanitized instance name as default
|
|
221
|
+
);
|
|
222
|
+
const finalProjectName = finalOptions.projectName || 'my-app';
|
|
223
|
+
// Validate project name
|
|
224
|
+
const nameValidation = (0, validation_1.validateProjectName)(finalProjectName);
|
|
225
|
+
if (!nameValidation.valid) {
|
|
226
|
+
(0, validation_1.displayValidationError)(nameValidation.message);
|
|
227
|
+
process.exit(1);
|
|
228
|
+
}
|
|
229
|
+
// Validate project path
|
|
230
|
+
const projectPath = path_1.default.resolve(process.cwd(), finalProjectName);
|
|
231
|
+
const pathValidation = (0, validation_1.validateProjectPath)(projectPath);
|
|
232
|
+
if (!pathValidation.valid) {
|
|
233
|
+
(0, validation_1.displayValidationError)(pathValidation.message);
|
|
234
|
+
process.exit(1);
|
|
235
|
+
}
|
|
236
|
+
// Step 2: Create Next.js app
|
|
237
|
+
console.log(chalk_1.default.cyan.bold('\nāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā'));
|
|
238
|
+
console.log(chalk_1.default.cyan.bold('š¦ STEP 2: Creating base Next.js project'));
|
|
239
|
+
console.log(chalk_1.default.cyan.bold('āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā\n'));
|
|
240
|
+
const createdProjectPath = await (0, create_next_app_1.createNextApp)(finalProjectName, finalOptions);
|
|
241
|
+
// Step 3: Configure project (with Agility settings)
|
|
242
|
+
try {
|
|
243
|
+
await config.setupProject(createdProjectPath, {
|
|
244
|
+
instanceGuid,
|
|
245
|
+
apiKeys,
|
|
246
|
+
...options
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
catch (configError) {
|
|
250
|
+
console.log(chalk_1.default.yellow('\nā ļø Some configuration steps failed. You may need to configure manually.\n'));
|
|
251
|
+
}
|
|
252
|
+
// Step 4: Copy template files
|
|
253
|
+
try {
|
|
254
|
+
await templates.copyTemplates(createdProjectPath, options);
|
|
255
|
+
}
|
|
256
|
+
catch (templateError) {
|
|
257
|
+
console.log(chalk_1.default.yellow('\nā ļø Some template files could not be copied. Check the project structure.\n'));
|
|
258
|
+
}
|
|
259
|
+
// Step 5: Initialize git repository
|
|
260
|
+
if ((0, git_1.isGitAvailable)()) {
|
|
261
|
+
await (0, git_1.initializeGit)(createdProjectPath);
|
|
262
|
+
}
|
|
263
|
+
else {
|
|
264
|
+
console.log(chalk_1.default.yellow('ā ļø Git is not installed. Skipping git initialization.'));
|
|
265
|
+
console.log(chalk_1.default.gray(' Install git and run: git init\n'));
|
|
266
|
+
}
|
|
267
|
+
// Display success message
|
|
268
|
+
displaySuccessMessage(finalProjectName, instanceGuid, apiKeys);
|
|
269
|
+
// If user chose to create a new instance, open browser now
|
|
270
|
+
if (agilityChoice.action === 'new') {
|
|
271
|
+
console.log(chalk_1.default.cyan('\nš Opening Agility CMS signup page in your browser...\n'));
|
|
272
|
+
try {
|
|
273
|
+
await (0, open_1.default)('https://agilitycms.com/free');
|
|
274
|
+
console.log(chalk_1.default.green('ā
Browser opened. Please create your instance.\n'));
|
|
275
|
+
console.log(chalk_1.default.yellow('After creating your instance, you can link it by manually configuring your .env.local file.\n'));
|
|
276
|
+
}
|
|
277
|
+
catch (openError) {
|
|
278
|
+
console.log(chalk_1.default.yellow('\nā ļø Could not open browser automatically.'));
|
|
279
|
+
console.log(chalk_1.default.cyan('Please visit: https://agilitycms.com/free\n'));
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
// Ensure process exits cleanly
|
|
283
|
+
process.exit(0);
|
|
284
|
+
}
|
|
285
|
+
catch (error) {
|
|
286
|
+
handleError(error);
|
|
287
|
+
}
|
|
288
|
+
});
|
|
289
|
+
program.parse();
|
|
290
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { CliOptions } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Prompts for missing options interactively
|
|
4
|
+
*/
|
|
5
|
+
export declare function promptForMissingOptions(projectName: string | undefined, options: CliOptions, defaultProjectName?: string): Promise<CliOptions & {
|
|
6
|
+
projectName?: string;
|
|
7
|
+
}>;
|
|
8
|
+
//# sourceMappingURL=promptForMissingOptions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"promptForMissingOptions.d.ts","sourceRoot":"","sources":["../../src/cli/promptForMissingOptions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,OAAO,EAAE,UAAU,EACnB,kBAAkB,CAAC,EAAE,MAAM,GAC1B,OAAO,CAAC,UAAU,GAAG;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA4FhD"}
|