@strapi/cloud-cli 0.0.0-next.f4ec69568d980c6fee91ce2ee0f41c138347aa81 → 0.0.0-next.f5d21551ed005f524bfc4760b274f1be154e26a8
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/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +40 -171
- package/dist/bin.js.map +1 -1
- package/dist/bin.mjs +44 -0
- package/dist/bin.mjs.map +1 -0
- package/dist/cloud/command.d.ts.map +1 -0
- package/dist/cloud/command.js +14 -0
- package/dist/cloud/command.js.map +1 -0
- package/dist/cloud/command.mjs +12 -0
- package/dist/cloud/command.mjs.map +1 -0
- package/dist/config/api.d.ts.map +1 -0
- package/dist/config/api.js +11 -0
- package/dist/config/api.js.map +1 -0
- package/dist/config/api.mjs +9 -0
- package/dist/config/api.mjs.map +1 -0
- package/dist/{src/config → config}/local.d.ts +1 -1
- package/dist/config/local.d.ts.map +1 -0
- package/dist/config/local.js +60 -0
- package/dist/config/local.js.map +1 -0
- package/dist/config/local.mjs +55 -0
- package/dist/config/local.mjs.map +1 -0
- package/dist/create-growth-sso-trial/action.d.ts +9 -0
- package/dist/create-growth-sso-trial/action.d.ts.map +1 -0
- package/dist/create-growth-sso-trial/action.js +52 -0
- package/dist/create-growth-sso-trial/action.js.map +1 -0
- package/dist/create-growth-sso-trial/action.mjs +50 -0
- package/dist/create-growth-sso-trial/action.mjs.map +1 -0
- package/dist/create-growth-sso-trial/index.d.ts +4 -0
- package/dist/create-growth-sso-trial/index.d.ts.map +1 -0
- package/dist/create-project/action.d.ts +4 -0
- package/dist/create-project/action.d.ts.map +1 -0
- package/dist/create-project/action.js +122 -0
- package/dist/create-project/action.js.map +1 -0
- package/dist/create-project/action.mjs +120 -0
- package/dist/create-project/action.mjs.map +1 -0
- package/dist/create-project/command.d.ts.map +1 -0
- package/dist/create-project/command.js +14 -0
- package/dist/create-project/command.js.map +1 -0
- package/dist/create-project/command.mjs +12 -0
- package/dist/create-project/command.mjs.map +1 -0
- package/dist/create-project/index.d.ts.map +1 -0
- package/dist/create-project/index.js +18 -0
- package/dist/create-project/index.js.map +1 -0
- package/dist/create-project/index.mjs +12 -0
- package/dist/create-project/index.mjs.map +1 -0
- package/dist/create-project/utils/get-project-name-from-pkg.d.ts.map +1 -0
- package/dist/create-project/utils/get-project-name-from-pkg.js +15 -0
- package/dist/create-project/utils/get-project-name-from-pkg.js.map +1 -0
- package/dist/create-project/utils/get-project-name-from-pkg.mjs +13 -0
- package/dist/create-project/utils/get-project-name-from-pkg.mjs.map +1 -0
- package/dist/create-project/utils/project-questions.utils.d.ts.map +1 -0
- package/dist/create-project/utils/project-questions.utils.js +63 -0
- package/dist/create-project/utils/project-questions.utils.js.map +1 -0
- package/dist/create-project/utils/project-questions.utils.mjs +59 -0
- package/dist/create-project/utils/project-questions.utils.mjs.map +1 -0
- package/dist/{src/deploy-project → deploy-project}/action.d.ts +2 -1
- package/dist/deploy-project/action.d.ts.map +1 -0
- package/dist/deploy-project/action.js +324 -0
- package/dist/deploy-project/action.js.map +1 -0
- package/dist/deploy-project/action.mjs +303 -0
- package/dist/deploy-project/action.mjs.map +1 -0
- package/dist/deploy-project/command.d.ts.map +1 -0
- package/dist/deploy-project/command.js +14 -0
- package/dist/deploy-project/command.js.map +1 -0
- package/dist/deploy-project/command.mjs +12 -0
- package/dist/deploy-project/command.mjs.map +1 -0
- package/dist/deploy-project/index.d.ts.map +1 -0
- package/dist/deploy-project/index.js +18 -0
- package/dist/deploy-project/index.js.map +1 -0
- package/dist/deploy-project/index.mjs +12 -0
- package/dist/deploy-project/index.mjs.map +1 -0
- package/dist/environment/command.d.ts.map +1 -0
- package/dist/environment/command.js +15 -0
- package/dist/environment/command.js.map +1 -0
- package/dist/environment/command.mjs +13 -0
- package/dist/environment/command.mjs.map +1 -0
- package/dist/environment/link/action.d.ts.map +1 -0
- package/dist/environment/link/action.js +117 -0
- package/dist/environment/link/action.js.map +1 -0
- package/dist/environment/link/action.mjs +115 -0
- package/dist/environment/link/action.mjs.map +1 -0
- package/dist/environment/link/command.d.ts.map +1 -0
- package/dist/environment/link/command.js +13 -0
- package/dist/environment/link/command.js.map +1 -0
- package/dist/environment/link/command.mjs +11 -0
- package/dist/environment/link/command.mjs.map +1 -0
- package/dist/environment/link/index.d.ts.map +1 -0
- package/dist/environment/link/index.js +18 -0
- package/dist/environment/link/index.js.map +1 -0
- package/dist/environment/link/index.mjs +12 -0
- package/dist/environment/link/index.mjs.map +1 -0
- package/dist/environment/list/action.d.ts +4 -0
- package/dist/environment/list/action.d.ts.map +1 -0
- package/dist/environment/list/action.js +57 -0
- package/dist/environment/list/action.js.map +1 -0
- package/dist/environment/list/action.mjs +55 -0
- package/dist/environment/list/action.mjs.map +1 -0
- package/dist/environment/list/command.d.ts +4 -0
- package/dist/environment/list/command.d.ts.map +1 -0
- package/dist/environment/list/command.js +13 -0
- package/dist/environment/list/command.js.map +1 -0
- package/dist/environment/list/command.mjs +11 -0
- package/dist/environment/list/command.mjs.map +1 -0
- package/dist/environment/list/index.d.ts +7 -0
- package/dist/environment/list/index.d.ts.map +1 -0
- package/dist/environment/list/index.js +18 -0
- package/dist/environment/list/index.js.map +1 -0
- package/dist/environment/list/index.mjs +12 -0
- package/dist/environment/list/index.mjs.map +1 -0
- package/dist/{src/index.d.ts → index.d.ts} +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +58 -1717
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +56 -1662
- package/dist/index.mjs.map +1 -1
- package/dist/link/action.d.ts.map +1 -0
- package/dist/link/action.js +146 -0
- package/dist/link/action.js.map +1 -0
- package/dist/link/action.mjs +144 -0
- package/dist/link/action.mjs.map +1 -0
- package/dist/link/command.d.ts.map +1 -0
- package/dist/link/command.js +13 -0
- package/dist/link/command.js.map +1 -0
- package/dist/link/command.mjs +11 -0
- package/dist/link/command.mjs.map +1 -0
- package/dist/link/index.d.ts.map +1 -0
- package/dist/link/index.js +18 -0
- package/dist/link/index.js.map +1 -0
- package/dist/link/index.mjs +12 -0
- package/dist/link/index.mjs.map +1 -0
- package/dist/list-projects/action.d.ts.map +1 -0
- package/dist/list-projects/action.js +34 -0
- package/dist/list-projects/action.js.map +1 -0
- package/dist/list-projects/action.mjs +32 -0
- package/dist/list-projects/action.mjs.map +1 -0
- package/dist/list-projects/command.d.ts.map +1 -0
- package/dist/list-projects/command.js +13 -0
- package/dist/list-projects/command.js.map +1 -0
- package/dist/list-projects/command.mjs +11 -0
- package/dist/list-projects/command.mjs.map +1 -0
- package/dist/list-projects/index.d.ts.map +1 -0
- package/dist/list-projects/index.js +18 -0
- package/dist/list-projects/index.js.map +1 -0
- package/dist/list-projects/index.mjs +12 -0
- package/dist/list-projects/index.mjs.map +1 -0
- package/dist/login/action.d.ts +6 -0
- package/dist/login/action.d.ts.map +1 -0
- package/dist/login/action.js +194 -0
- package/dist/login/action.js.map +1 -0
- package/dist/login/action.mjs +189 -0
- package/dist/login/action.mjs.map +1 -0
- package/dist/login/command.d.ts.map +1 -0
- package/dist/login/command.js +14 -0
- package/dist/login/command.js.map +1 -0
- package/dist/login/command.mjs +12 -0
- package/dist/login/command.mjs.map +1 -0
- package/dist/login/index.d.ts.map +1 -0
- package/dist/login/index.js +18 -0
- package/dist/login/index.js.map +1 -0
- package/dist/login/index.mjs +12 -0
- package/dist/login/index.mjs.map +1 -0
- package/dist/logout/action.d.ts.map +1 -0
- package/dist/logout/action.js +46 -0
- package/dist/logout/action.js.map +1 -0
- package/dist/logout/action.mjs +44 -0
- package/dist/logout/action.mjs.map +1 -0
- package/dist/logout/command.d.ts.map +1 -0
- package/dist/logout/command.js +14 -0
- package/dist/logout/command.js.map +1 -0
- package/dist/logout/command.mjs +12 -0
- package/dist/logout/command.mjs.map +1 -0
- package/dist/logout/index.d.ts.map +1 -0
- package/dist/logout/index.js +18 -0
- package/dist/logout/index.js.map +1 -0
- package/dist/logout/index.mjs +12 -0
- package/dist/logout/index.mjs.map +1 -0
- package/dist/package.json.js +129 -0
- package/dist/package.json.js.map +1 -0
- package/dist/package.json.mjs +105 -0
- package/dist/package.json.mjs.map +1 -0
- package/dist/services/build-logs.d.ts.map +1 -0
- package/dist/services/build-logs.js +67 -0
- package/dist/services/build-logs.js.map +1 -0
- package/dist/services/build-logs.mjs +65 -0
- package/dist/services/build-logs.mjs.map +1 -0
- package/dist/{src/services → services}/cli-api.d.ts +32 -6
- package/dist/services/cli-api.d.ts.map +1 -0
- package/dist/services/cli-api.js +159 -0
- package/dist/services/cli-api.js.map +1 -0
- package/dist/services/cli-api.mjs +156 -0
- package/dist/services/cli-api.mjs.map +1 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +14 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/index.mjs +6 -0
- package/dist/services/index.mjs.map +1 -0
- package/dist/services/logger.d.ts.map +1 -0
- package/dist/services/logger.js +128 -0
- package/dist/services/logger.js.map +1 -0
- package/dist/services/logger.mjs +107 -0
- package/dist/services/logger.mjs.map +1 -0
- package/dist/{src/services → services}/notification.d.ts +4 -1
- package/dist/services/notification.d.ts.map +1 -0
- package/dist/services/notification.js +79 -0
- package/dist/services/notification.js.map +1 -0
- package/dist/services/notification.mjs +77 -0
- package/dist/services/notification.mjs.map +1 -0
- package/dist/services/strapi-info-save.d.ts +25 -0
- package/dist/services/strapi-info-save.d.ts.map +1 -0
- package/dist/services/strapi-info-save.js +53 -0
- package/dist/services/strapi-info-save.js.map +1 -0
- package/dist/services/strapi-info-save.mjs +47 -0
- package/dist/services/strapi-info-save.mjs.map +1 -0
- package/dist/services/token.d.ts.map +1 -0
- package/dist/services/token.js +126 -0
- package/dist/services/token.js.map +1 -0
- package/dist/services/token.mjs +124 -0
- package/dist/services/token.mjs.map +1 -0
- package/dist/{src/types.d.ts → types.d.ts} +22 -1
- package/dist/types.d.ts.map +1 -0
- package/dist/utils/analytics.d.ts.map +1 -0
- package/dist/utils/analytics.js +12 -0
- package/dist/utils/analytics.js.map +1 -0
- package/dist/utils/analytics.mjs +10 -0
- package/dist/utils/analytics.mjs.map +1 -0
- package/dist/utils/compress-files.d.ts.map +1 -0
- package/dist/utils/compress-files.js +104 -0
- package/dist/utils/compress-files.js.map +1 -0
- package/dist/utils/compress-files.mjs +80 -0
- package/dist/utils/compress-files.mjs.map +1 -0
- package/dist/utils/error-message-factories.d.ts +9 -0
- package/dist/utils/error-message-factories.d.ts.map +1 -0
- package/dist/utils/error-message-factories.js +25 -0
- package/dist/utils/error-message-factories.js.map +1 -0
- package/dist/utils/error-message-factories.mjs +22 -0
- package/dist/utils/error-message-factories.mjs.map +1 -0
- package/dist/utils/get-local-config.d.ts +6 -0
- package/dist/utils/get-local-config.d.ts.map +1 -0
- package/dist/utils/get-local-config.js +37 -0
- package/dist/utils/get-local-config.js.map +1 -0
- package/dist/utils/get-local-config.mjs +34 -0
- package/dist/utils/get-local-config.mjs.map +1 -0
- package/dist/utils/helpers.d.ts.map +1 -0
- package/dist/utils/helpers.js +33 -0
- package/dist/utils/helpers.js.map +1 -0
- package/dist/utils/helpers.mjs +31 -0
- package/dist/utils/helpers.mjs.map +1 -0
- package/dist/utils/pkg.d.ts.map +1 -0
- package/dist/utils/pkg.js +65 -0
- package/dist/utils/pkg.js.map +1 -0
- package/dist/utils/pkg.mjs +43 -0
- package/dist/utils/pkg.mjs.map +1 -0
- package/dist/utils/tests/compress-files.test.d.ts.map +1 -0
- package/package.json +12 -11
- package/dist/src/bin.d.ts.map +0 -1
- package/dist/src/cloud/command.d.ts.map +0 -1
- package/dist/src/config/api.d.ts.map +0 -1
- package/dist/src/config/local.d.ts.map +0 -1
- package/dist/src/create-project/action.d.ts +0 -4
- package/dist/src/create-project/action.d.ts.map +0 -1
- package/dist/src/create-project/command.d.ts.map +0 -1
- package/dist/src/create-project/index.d.ts.map +0 -1
- package/dist/src/create-project/utils/get-project-name-from-pkg.d.ts.map +0 -1
- package/dist/src/create-project/utils/project-questions.utils.d.ts.map +0 -1
- package/dist/src/deploy-project/action.d.ts.map +0 -1
- package/dist/src/deploy-project/command.d.ts.map +0 -1
- package/dist/src/deploy-project/index.d.ts.map +0 -1
- package/dist/src/environment/command.d.ts.map +0 -1
- package/dist/src/environment/list/action.d.ts.map +0 -1
- package/dist/src/environment/list/command.d.ts.map +0 -1
- package/dist/src/environment/list/index.d.ts.map +0 -1
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/link/action.d.ts.map +0 -1
- package/dist/src/link/command.d.ts.map +0 -1
- package/dist/src/link/index.d.ts.map +0 -1
- package/dist/src/list-projects/action.d.ts.map +0 -1
- package/dist/src/list-projects/command.d.ts.map +0 -1
- package/dist/src/list-projects/index.d.ts.map +0 -1
- package/dist/src/login/action.d.ts +0 -4
- package/dist/src/login/action.d.ts.map +0 -1
- package/dist/src/login/command.d.ts.map +0 -1
- package/dist/src/login/index.d.ts.map +0 -1
- package/dist/src/logout/action.d.ts.map +0 -1
- package/dist/src/logout/command.d.ts.map +0 -1
- package/dist/src/logout/index.d.ts.map +0 -1
- package/dist/src/services/build-logs.d.ts.map +0 -1
- package/dist/src/services/cli-api.d.ts.map +0 -1
- package/dist/src/services/index.d.ts.map +0 -1
- package/dist/src/services/logger.d.ts.map +0 -1
- package/dist/src/services/notification.d.ts.map +0 -1
- package/dist/src/services/strapi-info-save.d.ts +0 -12
- package/dist/src/services/strapi-info-save.d.ts.map +0 -1
- package/dist/src/services/token.d.ts.map +0 -1
- package/dist/src/types.d.ts.map +0 -1
- package/dist/src/utils/analytics.d.ts.map +0 -1
- package/dist/src/utils/compress-files.d.ts.map +0 -1
- package/dist/src/utils/helpers.d.ts.map +0 -1
- package/dist/src/utils/pkg.d.ts.map +0 -1
- package/dist/src/utils/tests/compress-files.test.d.ts.map +0 -1
- /package/dist/{src/bin.d.ts → bin.d.ts} +0 -0
- /package/dist/{src/cloud → cloud}/command.d.ts +0 -0
- /package/dist/{src/config → config}/api.d.ts +0 -0
- /package/dist/{src/create-project → create-project}/command.d.ts +0 -0
- /package/dist/{src/create-project → create-project}/index.d.ts +0 -0
- /package/dist/{src/create-project → create-project}/utils/get-project-name-from-pkg.d.ts +0 -0
- /package/dist/{src/create-project → create-project}/utils/project-questions.utils.d.ts +0 -0
- /package/dist/{src/deploy-project → deploy-project}/command.d.ts +0 -0
- /package/dist/{src/deploy-project → deploy-project}/index.d.ts +0 -0
- /package/dist/{src/environment → environment}/command.d.ts +0 -0
- /package/dist/{src/environment/list → environment/link}/action.d.ts +0 -0
- /package/dist/{src/environment/list → environment/link}/command.d.ts +0 -0
- /package/dist/{src/environment/list → environment/link}/index.d.ts +0 -0
- /package/dist/{src/link → link}/action.d.ts +0 -0
- /package/dist/{src/link → link}/command.d.ts +0 -0
- /package/dist/{src/link → link}/index.d.ts +0 -0
- /package/dist/{src/list-projects → list-projects}/action.d.ts +0 -0
- /package/dist/{src/list-projects → list-projects}/command.d.ts +0 -0
- /package/dist/{src/list-projects → list-projects}/index.d.ts +0 -0
- /package/dist/{src/login → login}/command.d.ts +0 -0
- /package/dist/{src/login → login}/index.d.ts +0 -0
- /package/dist/{src/logout → logout}/action.d.ts +0 -0
- /package/dist/{src/logout → logout}/command.d.ts +0 -0
- /package/dist/{src/logout → logout}/index.d.ts +0 -0
- /package/dist/{src/services → services}/build-logs.d.ts +0 -0
- /package/dist/{src/services → services}/index.d.ts +0 -0
- /package/dist/{src/services → services}/logger.d.ts +0 -0
- /package/dist/{src/services → services}/token.d.ts +0 -0
- /package/dist/{src/utils → utils}/analytics.d.ts +0 -0
- /package/dist/{src/utils → utils}/compress-files.d.ts +0 -0
- /package/dist/{src/utils → utils}/helpers.d.ts +0 -0
- /package/dist/{src/utils → utils}/pkg.d.ts +0 -0
- /package/dist/{src/utils → utils}/tests/compress-files.test.d.ts +0 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { cloudApiFactory } from '../services/cli-api.mjs';
|
|
2
|
+
import 'fs-extra';
|
|
3
|
+
import 'path';
|
|
4
|
+
import 'lodash';
|
|
5
|
+
import { tokenServiceFactory } from '../services/token.mjs';
|
|
6
|
+
import { createLogger } from '../services/logger.mjs';
|
|
7
|
+
import { trackEvent } from '../utils/analytics.mjs';
|
|
8
|
+
|
|
9
|
+
var action = (async ({ strapiVersion })=>{
|
|
10
|
+
const logger = createLogger();
|
|
11
|
+
const { retrieveToken } = await tokenServiceFactory({
|
|
12
|
+
logger
|
|
13
|
+
});
|
|
14
|
+
const token = await retrieveToken();
|
|
15
|
+
if (!token) {
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
const cloudApiService = await cloudApiFactory({
|
|
19
|
+
logger
|
|
20
|
+
}, token);
|
|
21
|
+
try {
|
|
22
|
+
const { data: config } = await cloudApiService.config();
|
|
23
|
+
if (!config?.featureFlags?.growthSsoTrialEnabled) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
} catch (e) {
|
|
27
|
+
logger.debug('Failed to get cli config', e);
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
try {
|
|
31
|
+
const response = await cloudApiService.createTrial({
|
|
32
|
+
strapiVersion: strapiVersion || ''
|
|
33
|
+
});
|
|
34
|
+
await trackEvent({
|
|
35
|
+
logger,
|
|
36
|
+
cwd: process.cwd()
|
|
37
|
+
}, cloudApiService, 'didCreateGrowthSsoTrial', {
|
|
38
|
+
strapiVersion: strapiVersion || ''
|
|
39
|
+
});
|
|
40
|
+
return {
|
|
41
|
+
license: response.data?.licenseKey
|
|
42
|
+
};
|
|
43
|
+
} catch (e) {
|
|
44
|
+
logger.debug(e);
|
|
45
|
+
logger.error('We encountered an issue while creating your trial. Please try again in a moment. If the problem persists, contact support for assistance.');
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
export { action as default };
|
|
50
|
+
//# sourceMappingURL=action.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action.mjs","sources":["../../src/create-growth-sso-trial/action.ts"],"sourcesContent":["import { cloudApiFactory, tokenServiceFactory } from '../services';\nimport { createLogger } from '../services/logger';\nimport { trackEvent } from '../utils/analytics';\n\ninterface CreateGrowthSsoTrialInput {\n strapiVersion: string | undefined;\n}\n\ninterface CreateGrowthSsoTrialResponse {\n license: string;\n}\n\nexport default async ({\n strapiVersion,\n}: CreateGrowthSsoTrialInput): Promise<CreateGrowthSsoTrialResponse | undefined> => {\n const logger = createLogger();\n const { retrieveToken } = await tokenServiceFactory({ logger });\n\n const token = await retrieveToken();\n if (!token) {\n return;\n }\n\n const cloudApiService = await cloudApiFactory({ logger }, token);\n\n try {\n const { data: config } = await cloudApiService.config();\n if (!config?.featureFlags?.growthSsoTrialEnabled) {\n return;\n }\n } catch (e: unknown) {\n logger.debug('Failed to get cli config', e);\n return;\n }\n\n try {\n const response = await cloudApiService.createTrial({ strapiVersion: strapiVersion || '' });\n\n await trackEvent({ logger, cwd: process.cwd() }, cloudApiService, 'didCreateGrowthSsoTrial', {\n strapiVersion: strapiVersion || '',\n });\n\n return { license: response.data?.licenseKey };\n } catch (e: Error | unknown) {\n logger.debug(e);\n logger.error(\n 'We encountered an issue while creating your trial. Please try again in a moment. If the problem persists, contact support for assistance.'\n );\n }\n};\n"],"names":["strapiVersion","logger","createLogger","retrieveToken","tokenServiceFactory","token","cloudApiService","cloudApiFactory","data","config","featureFlags","growthSsoTrialEnabled","e","debug","response","createTrial","trackEvent","cwd","process","license","licenseKey","error"],"mappings":";;;;;;;;AAYA,aAAe,CAAA,OAAO,EACpBA,aAAa,EACa,GAAA;AAC1B,IAAA,MAAMC,MAASC,GAAAA,YAAAA,EAAAA;AACf,IAAA,MAAM,EAAEC,aAAa,EAAE,GAAG,MAAMC,mBAAoB,CAAA;AAAEH,QAAAA;AAAO,KAAA,CAAA;AAE7D,IAAA,MAAMI,QAAQ,MAAMF,aAAAA,EAAAA;AACpB,IAAA,IAAI,CAACE,KAAO,EAAA;AACV,QAAA;AACF;IAEA,MAAMC,eAAAA,GAAkB,MAAMC,eAAgB,CAAA;AAAEN,QAAAA;KAAUI,EAAAA,KAAAA,CAAAA;IAE1D,IAAI;AACF,QAAA,MAAM,EAAEG,IAAMC,EAAAA,MAAM,EAAE,GAAG,MAAMH,gBAAgBG,MAAM,EAAA;QACrD,IAAI,CAACA,MAAQC,EAAAA,YAAAA,EAAcC,qBAAuB,EAAA;AAChD,YAAA;AACF;AACF,KAAA,CAAE,OAAOC,CAAY,EAAA;QACnBX,MAAOY,CAAAA,KAAK,CAAC,0BAA4BD,EAAAA,CAAAA,CAAAA;AACzC,QAAA;AACF;IAEA,IAAI;AACF,QAAA,MAAME,QAAW,GAAA,MAAMR,eAAgBS,CAAAA,WAAW,CAAC;AAAEf,YAAAA,aAAAA,EAAeA,aAAiB,IAAA;AAAG,SAAA,CAAA;AAExF,QAAA,MAAMgB,UAAW,CAAA;AAAEf,YAAAA,MAAAA;AAAQgB,YAAAA,GAAAA,EAAKC,QAAQD,GAAG;AAAG,SAAA,EAAGX,iBAAiB,yBAA2B,EAAA;AAC3FN,YAAAA,aAAAA,EAAeA,aAAiB,IAAA;AAClC,SAAA,CAAA;QAEA,OAAO;YAAEmB,OAASL,EAAAA,QAAAA,CAASN,IAAI,EAAEY;AAAW,SAAA;AAC9C,KAAA,CAAE,OAAOR,CAAoB,EAAA;AAC3BX,QAAAA,MAAAA,CAAOY,KAAK,CAACD,CAAAA,CAAAA;AACbX,QAAAA,MAAAA,CAAOoB,KAAK,CACV,2IAAA,CAAA;AAEJ;AACF,CAAA;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/create-growth-sso-trial/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,UAAU,CAAC;AAE9B,OAAO,EAAE,MAAM,EAAE,CAAC;AAElB,OAAO,EAAE,MAAM,IAAI,oBAAoB,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../src/create-project/action.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,UAAU,EAGV,qBAAqB,EAGtB,MAAM,UAAU,CAAC;8BAsGS,UAAU;AAArC,wBAyCE"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var inquirer = require('inquirer');
|
|
4
|
+
var axios = require('axios');
|
|
5
|
+
var fp = require('lodash/fp');
|
|
6
|
+
var cliApi = require('../services/cli-api.js');
|
|
7
|
+
var strapiInfoSave = require('../services/strapi-info-save.js');
|
|
8
|
+
var token = require('../services/token.js');
|
|
9
|
+
require('chalk');
|
|
10
|
+
require('fast-safe-stringify');
|
|
11
|
+
require('ora');
|
|
12
|
+
require('cli-progress');
|
|
13
|
+
var getProjectNameFromPkg = require('./utils/get-project-name-from-pkg.js');
|
|
14
|
+
var action$1 = require('../login/action.js');
|
|
15
|
+
var projectQuestions_utils = require('./utils/project-questions.utils.js');
|
|
16
|
+
var api = require('../config/api.js');
|
|
17
|
+
var notification = require('../services/notification.js');
|
|
18
|
+
var errorMessageFactories = require('../utils/error-message-factories.js');
|
|
19
|
+
|
|
20
|
+
async function handleError(ctx, error) {
|
|
21
|
+
const { logger } = ctx;
|
|
22
|
+
logger.debug(error);
|
|
23
|
+
if (error instanceof axios.AxiosError) {
|
|
24
|
+
const errorMessage = typeof error.response?.data === 'string' ? error.response.data : null;
|
|
25
|
+
switch(error.response?.status){
|
|
26
|
+
case 400:
|
|
27
|
+
logger.error(errorMessage || 'Invalid input. Please check your inputs and try again.');
|
|
28
|
+
return;
|
|
29
|
+
case 403:
|
|
30
|
+
logger.error(errorMessage || 'You do not have permission to create a project. Please contact support for assistance.');
|
|
31
|
+
return;
|
|
32
|
+
case 503:
|
|
33
|
+
logger.error('Strapi Cloud project creation is currently unavailable. Please try again later.');
|
|
34
|
+
return;
|
|
35
|
+
default:
|
|
36
|
+
if (errorMessage) {
|
|
37
|
+
logger.error(errorMessage);
|
|
38
|
+
throw error;
|
|
39
|
+
}
|
|
40
|
+
break;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
logger.error('We encountered an issue while creating your project. Please try again in a moment. If the problem persists, contact support for assistance.');
|
|
44
|
+
}
|
|
45
|
+
async function createProject(ctx, cloudApi, projectInput, token, config) {
|
|
46
|
+
const { logger } = ctx;
|
|
47
|
+
const projectSpinner = logger.spinner('Setting up your project...').start();
|
|
48
|
+
projectSpinner.indent = 1;
|
|
49
|
+
const notificationService = notification.notificationServiceFactory(ctx);
|
|
50
|
+
const { waitForEnvironmentCreation, close } = notificationService(`${api.apiConfig.apiBaseUrl}/${cliApi.VERSION}/notifications`, token, config);
|
|
51
|
+
let projectData;
|
|
52
|
+
try {
|
|
53
|
+
const { data } = await cloudApi.createProject(projectInput);
|
|
54
|
+
projectData = data;
|
|
55
|
+
await strapiInfoSave.save({
|
|
56
|
+
project: data
|
|
57
|
+
});
|
|
58
|
+
projectSpinner.succeed('Project created successfully!');
|
|
59
|
+
} catch (e) {
|
|
60
|
+
projectSpinner.fail(`An error occurred while creating the project on Strapi Cloud.`);
|
|
61
|
+
close();
|
|
62
|
+
throw e;
|
|
63
|
+
}
|
|
64
|
+
if (config.featureFlags.asyncProjectCreationEnabled) {
|
|
65
|
+
const environmentSpinner = logger.spinner('Setting up your environment... This may take a minute...').start();
|
|
66
|
+
environmentSpinner.indent = 1;
|
|
67
|
+
try {
|
|
68
|
+
await waitForEnvironmentCreation(projectData.environmentInternalName);
|
|
69
|
+
environmentSpinner.succeed('Environment created successfully!\n');
|
|
70
|
+
} catch (e) {
|
|
71
|
+
environmentSpinner.fail(`An error occurred while creating the environment on Strapi Cloud.\n`);
|
|
72
|
+
const environmentErrorMessage = errorMessageFactories.environmentErrorMessageFactory({
|
|
73
|
+
projectName: projectData.name,
|
|
74
|
+
firstLine: config.projectCreation.errors.environmentCreationFailed.firstLine,
|
|
75
|
+
secondLine: config.projectCreation.errors.environmentCreationFailed.secondLine
|
|
76
|
+
});
|
|
77
|
+
logger.log(errorMessageFactories.environmentCreationErrorFactory(environmentErrorMessage));
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
close();
|
|
82
|
+
return projectData;
|
|
83
|
+
}
|
|
84
|
+
var action = (async (ctx)=>{
|
|
85
|
+
const { logger } = ctx;
|
|
86
|
+
const { getValidToken, eraseToken } = await token.tokenServiceFactory(ctx);
|
|
87
|
+
const token$1 = await getValidToken(ctx, action$1.promptLogin);
|
|
88
|
+
if (!token$1) {
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
const cloudApi = await cliApi.cloudApiFactory(ctx, token$1);
|
|
92
|
+
const { data: config } = await cloudApi.config();
|
|
93
|
+
const projectName = await getProjectNameFromPkg.getProjectNameFromPackageJson(ctx);
|
|
94
|
+
const defaultAnswersMapper = projectQuestions_utils.questionDefaultValuesMapper({
|
|
95
|
+
name: projectName,
|
|
96
|
+
nodeVersion: projectQuestions_utils.getProjectNodeVersionDefault
|
|
97
|
+
});
|
|
98
|
+
const questions = defaultAnswersMapper(config.projectCreation.questions);
|
|
99
|
+
const defaultValues = {
|
|
100
|
+
...config.projectCreation.defaults,
|
|
101
|
+
...projectQuestions_utils.getDefaultsFromQuestions(questions)
|
|
102
|
+
};
|
|
103
|
+
const projectAnswersDefaulted = fp.defaults(defaultValues);
|
|
104
|
+
const projectAnswers = await inquirer.prompt(questions);
|
|
105
|
+
const projectInput = projectAnswersDefaulted(projectAnswers);
|
|
106
|
+
try {
|
|
107
|
+
return await createProject(ctx, cloudApi, projectInput, token$1, config);
|
|
108
|
+
} catch (e) {
|
|
109
|
+
if (e instanceof axios.AxiosError && e.response?.status === 401) {
|
|
110
|
+
logger.warn('Oops! Your session has expired. Please log in again to retry.');
|
|
111
|
+
await eraseToken();
|
|
112
|
+
if (await action$1.promptLogin(ctx)) {
|
|
113
|
+
return await createProject(ctx, cloudApi, projectInput, token$1, config);
|
|
114
|
+
}
|
|
115
|
+
} else {
|
|
116
|
+
await handleError(ctx, e);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
module.exports = action;
|
|
122
|
+
//# sourceMappingURL=action.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action.js","sources":["../../src/create-project/action.ts"],"sourcesContent":["import inquirer from 'inquirer';\nimport { AxiosError } from 'axios';\nimport { defaults } from 'lodash/fp';\nimport {\n CLIContext,\n CloudApiService,\n CloudCliConfig,\n CreateProjectResponse,\n ProjectAnswers,\n ProjectInput,\n} from '../types';\nimport { cloudApiFactory, local, tokenServiceFactory } from '../services';\nimport { VERSION } from '../services/cli-api';\nimport { getProjectNameFromPackageJson } from './utils/get-project-name-from-pkg';\nimport { promptLogin } from '../login/action';\nimport {\n getDefaultsFromQuestions,\n getProjectNodeVersionDefault,\n questionDefaultValuesMapper,\n} from './utils/project-questions.utils';\nimport { apiConfig } from '../config/api';\nimport { notificationServiceFactory } from '../services/notification';\nimport {\n environmentCreationErrorFactory,\n environmentErrorMessageFactory,\n} from '../utils/error-message-factories';\n\nasync function handleError(ctx: CLIContext, error: Error) {\n const { logger } = ctx;\n logger.debug(error);\n if (error instanceof AxiosError) {\n const errorMessage = typeof error.response?.data === 'string' ? error.response.data : null;\n switch (error.response?.status) {\n case 400:\n logger.error(errorMessage || 'Invalid input. Please check your inputs and try again.');\n return;\n case 403:\n logger.error(\n errorMessage ||\n 'You do not have permission to create a project. Please contact support for assistance.'\n );\n return;\n case 503:\n logger.error(\n 'Strapi Cloud project creation is currently unavailable. Please try again later.'\n );\n return;\n default:\n if (errorMessage) {\n logger.error(errorMessage);\n throw error;\n }\n break;\n }\n }\n logger.error(\n 'We encountered an issue while creating your project. Please try again in a moment. If the problem persists, contact support for assistance.'\n );\n}\n\nasync function createProject(\n ctx: CLIContext,\n cloudApi: CloudApiService,\n projectInput: ProjectInput,\n token: string,\n config: CloudCliConfig\n) {\n const { logger } = ctx;\n const projectSpinner = logger.spinner('Setting up your project...').start();\n projectSpinner.indent = 1;\n const notificationService = notificationServiceFactory(ctx);\n const { waitForEnvironmentCreation, close } = notificationService(\n `${apiConfig.apiBaseUrl}/${VERSION}/notifications`,\n token,\n config\n );\n let projectData: CreateProjectResponse;\n try {\n const { data } = await cloudApi.createProject(projectInput);\n projectData = data;\n await local.save({ project: data });\n projectSpinner.succeed('Project created successfully!');\n } catch (e: Error | unknown) {\n projectSpinner.fail(`An error occurred while creating the project on Strapi Cloud.`);\n close();\n throw e;\n }\n if (config.featureFlags.asyncProjectCreationEnabled) {\n const environmentSpinner = logger\n .spinner('Setting up your environment... This may take a minute...')\n .start();\n environmentSpinner.indent = 1;\n try {\n await waitForEnvironmentCreation(projectData.environmentInternalName);\n environmentSpinner.succeed('Environment created successfully!\\n');\n } catch (e: Error | unknown) {\n environmentSpinner.fail(\n `An error occurred while creating the environment on Strapi Cloud.\\n`\n );\n const environmentErrorMessage = environmentErrorMessageFactory({\n projectName: projectData.name,\n firstLine: config.projectCreation.errors.environmentCreationFailed.firstLine,\n secondLine: config.projectCreation.errors.environmentCreationFailed.secondLine,\n });\n logger.log(environmentCreationErrorFactory(environmentErrorMessage));\n return;\n }\n }\n close();\n return projectData;\n}\n\nexport default async (ctx: CLIContext) => {\n const { logger } = ctx;\n const { getValidToken, eraseToken } = await tokenServiceFactory(ctx);\n\n const token = await getValidToken(ctx, promptLogin);\n if (!token) {\n return;\n }\n\n const cloudApi = await cloudApiFactory(ctx, token);\n const { data: config } = await cloudApi.config();\n const projectName = await getProjectNameFromPackageJson(ctx);\n\n const defaultAnswersMapper = questionDefaultValuesMapper({\n name: projectName,\n nodeVersion: getProjectNodeVersionDefault,\n });\n const questions = defaultAnswersMapper(config.projectCreation.questions);\n const defaultValues = {\n ...config.projectCreation.defaults,\n ...getDefaultsFromQuestions(questions),\n };\n\n const projectAnswersDefaulted = defaults(defaultValues);\n const projectAnswers = await inquirer.prompt<ProjectAnswers>(questions);\n\n const projectInput: ProjectInput = projectAnswersDefaulted(projectAnswers);\n\n try {\n return await createProject(ctx, cloudApi, projectInput, token, config);\n } catch (e: Error | unknown) {\n if (e instanceof AxiosError && e.response?.status === 401) {\n logger.warn('Oops! Your session has expired. Please log in again to retry.');\n await eraseToken();\n if (await promptLogin(ctx)) {\n return await createProject(ctx, cloudApi, projectInput, token, config);\n }\n } else {\n await handleError(ctx, e as Error);\n }\n }\n};\n"],"names":["handleError","ctx","error","logger","debug","AxiosError","errorMessage","response","data","status","createProject","cloudApi","projectInput","token","config","projectSpinner","spinner","start","indent","notificationService","notificationServiceFactory","waitForEnvironmentCreation","close","apiConfig","apiBaseUrl","VERSION","projectData","local","project","succeed","e","fail","featureFlags","asyncProjectCreationEnabled","environmentSpinner","environmentInternalName","environmentErrorMessage","environmentErrorMessageFactory","projectName","name","firstLine","projectCreation","errors","environmentCreationFailed","secondLine","log","environmentCreationErrorFactory","getValidToken","eraseToken","tokenServiceFactory","promptLogin","cloudApiFactory","getProjectNameFromPackageJson","defaultAnswersMapper","questionDefaultValuesMapper","nodeVersion","getProjectNodeVersionDefault","questions","defaultValues","defaults","getDefaultsFromQuestions","projectAnswersDefaulted","projectAnswers","inquirer","prompt","warn"],"mappings":"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"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import inquirer from 'inquirer';
|
|
2
|
+
import { AxiosError } from 'axios';
|
|
3
|
+
import { defaults } from 'lodash/fp';
|
|
4
|
+
import { cloudApiFactory, VERSION } from '../services/cli-api.mjs';
|
|
5
|
+
import { save } from '../services/strapi-info-save.mjs';
|
|
6
|
+
import { tokenServiceFactory } from '../services/token.mjs';
|
|
7
|
+
import 'chalk';
|
|
8
|
+
import 'fast-safe-stringify';
|
|
9
|
+
import 'ora';
|
|
10
|
+
import 'cli-progress';
|
|
11
|
+
import { getProjectNameFromPackageJson } from './utils/get-project-name-from-pkg.mjs';
|
|
12
|
+
import { promptLogin } from '../login/action.mjs';
|
|
13
|
+
import { getDefaultsFromQuestions, questionDefaultValuesMapper, getProjectNodeVersionDefault } from './utils/project-questions.utils.mjs';
|
|
14
|
+
import { apiConfig } from '../config/api.mjs';
|
|
15
|
+
import { notificationServiceFactory } from '../services/notification.mjs';
|
|
16
|
+
import { environmentErrorMessageFactory, environmentCreationErrorFactory } from '../utils/error-message-factories.mjs';
|
|
17
|
+
|
|
18
|
+
async function handleError(ctx, error) {
|
|
19
|
+
const { logger } = ctx;
|
|
20
|
+
logger.debug(error);
|
|
21
|
+
if (error instanceof AxiosError) {
|
|
22
|
+
const errorMessage = typeof error.response?.data === 'string' ? error.response.data : null;
|
|
23
|
+
switch(error.response?.status){
|
|
24
|
+
case 400:
|
|
25
|
+
logger.error(errorMessage || 'Invalid input. Please check your inputs and try again.');
|
|
26
|
+
return;
|
|
27
|
+
case 403:
|
|
28
|
+
logger.error(errorMessage || 'You do not have permission to create a project. Please contact support for assistance.');
|
|
29
|
+
return;
|
|
30
|
+
case 503:
|
|
31
|
+
logger.error('Strapi Cloud project creation is currently unavailable. Please try again later.');
|
|
32
|
+
return;
|
|
33
|
+
default:
|
|
34
|
+
if (errorMessage) {
|
|
35
|
+
logger.error(errorMessage);
|
|
36
|
+
throw error;
|
|
37
|
+
}
|
|
38
|
+
break;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
logger.error('We encountered an issue while creating your project. Please try again in a moment. If the problem persists, contact support for assistance.');
|
|
42
|
+
}
|
|
43
|
+
async function createProject(ctx, cloudApi, projectInput, token, config) {
|
|
44
|
+
const { logger } = ctx;
|
|
45
|
+
const projectSpinner = logger.spinner('Setting up your project...').start();
|
|
46
|
+
projectSpinner.indent = 1;
|
|
47
|
+
const notificationService = notificationServiceFactory(ctx);
|
|
48
|
+
const { waitForEnvironmentCreation, close } = notificationService(`${apiConfig.apiBaseUrl}/${VERSION}/notifications`, token, config);
|
|
49
|
+
let projectData;
|
|
50
|
+
try {
|
|
51
|
+
const { data } = await cloudApi.createProject(projectInput);
|
|
52
|
+
projectData = data;
|
|
53
|
+
await save({
|
|
54
|
+
project: data
|
|
55
|
+
});
|
|
56
|
+
projectSpinner.succeed('Project created successfully!');
|
|
57
|
+
} catch (e) {
|
|
58
|
+
projectSpinner.fail(`An error occurred while creating the project on Strapi Cloud.`);
|
|
59
|
+
close();
|
|
60
|
+
throw e;
|
|
61
|
+
}
|
|
62
|
+
if (config.featureFlags.asyncProjectCreationEnabled) {
|
|
63
|
+
const environmentSpinner = logger.spinner('Setting up your environment... This may take a minute...').start();
|
|
64
|
+
environmentSpinner.indent = 1;
|
|
65
|
+
try {
|
|
66
|
+
await waitForEnvironmentCreation(projectData.environmentInternalName);
|
|
67
|
+
environmentSpinner.succeed('Environment created successfully!\n');
|
|
68
|
+
} catch (e) {
|
|
69
|
+
environmentSpinner.fail(`An error occurred while creating the environment on Strapi Cloud.\n`);
|
|
70
|
+
const environmentErrorMessage = environmentErrorMessageFactory({
|
|
71
|
+
projectName: projectData.name,
|
|
72
|
+
firstLine: config.projectCreation.errors.environmentCreationFailed.firstLine,
|
|
73
|
+
secondLine: config.projectCreation.errors.environmentCreationFailed.secondLine
|
|
74
|
+
});
|
|
75
|
+
logger.log(environmentCreationErrorFactory(environmentErrorMessage));
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
close();
|
|
80
|
+
return projectData;
|
|
81
|
+
}
|
|
82
|
+
var action = (async (ctx)=>{
|
|
83
|
+
const { logger } = ctx;
|
|
84
|
+
const { getValidToken, eraseToken } = await tokenServiceFactory(ctx);
|
|
85
|
+
const token = await getValidToken(ctx, promptLogin);
|
|
86
|
+
if (!token) {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
const cloudApi = await cloudApiFactory(ctx, token);
|
|
90
|
+
const { data: config } = await cloudApi.config();
|
|
91
|
+
const projectName = await getProjectNameFromPackageJson(ctx);
|
|
92
|
+
const defaultAnswersMapper = questionDefaultValuesMapper({
|
|
93
|
+
name: projectName,
|
|
94
|
+
nodeVersion: getProjectNodeVersionDefault
|
|
95
|
+
});
|
|
96
|
+
const questions = defaultAnswersMapper(config.projectCreation.questions);
|
|
97
|
+
const defaultValues = {
|
|
98
|
+
...config.projectCreation.defaults,
|
|
99
|
+
...getDefaultsFromQuestions(questions)
|
|
100
|
+
};
|
|
101
|
+
const projectAnswersDefaulted = defaults(defaultValues);
|
|
102
|
+
const projectAnswers = await inquirer.prompt(questions);
|
|
103
|
+
const projectInput = projectAnswersDefaulted(projectAnswers);
|
|
104
|
+
try {
|
|
105
|
+
return await createProject(ctx, cloudApi, projectInput, token, config);
|
|
106
|
+
} catch (e) {
|
|
107
|
+
if (e instanceof AxiosError && e.response?.status === 401) {
|
|
108
|
+
logger.warn('Oops! Your session has expired. Please log in again to retry.');
|
|
109
|
+
await eraseToken();
|
|
110
|
+
if (await promptLogin(ctx)) {
|
|
111
|
+
return await createProject(ctx, cloudApi, projectInput, token, config);
|
|
112
|
+
}
|
|
113
|
+
} else {
|
|
114
|
+
await handleError(ctx, e);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
export { action as default };
|
|
120
|
+
//# sourceMappingURL=action.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action.mjs","sources":["../../src/create-project/action.ts"],"sourcesContent":["import inquirer from 'inquirer';\nimport { AxiosError } from 'axios';\nimport { defaults } from 'lodash/fp';\nimport {\n CLIContext,\n CloudApiService,\n CloudCliConfig,\n CreateProjectResponse,\n ProjectAnswers,\n ProjectInput,\n} from '../types';\nimport { cloudApiFactory, local, tokenServiceFactory } from '../services';\nimport { VERSION } from '../services/cli-api';\nimport { getProjectNameFromPackageJson } from './utils/get-project-name-from-pkg';\nimport { promptLogin } from '../login/action';\nimport {\n getDefaultsFromQuestions,\n getProjectNodeVersionDefault,\n questionDefaultValuesMapper,\n} from './utils/project-questions.utils';\nimport { apiConfig } from '../config/api';\nimport { notificationServiceFactory } from '../services/notification';\nimport {\n environmentCreationErrorFactory,\n environmentErrorMessageFactory,\n} from '../utils/error-message-factories';\n\nasync function handleError(ctx: CLIContext, error: Error) {\n const { logger } = ctx;\n logger.debug(error);\n if (error instanceof AxiosError) {\n const errorMessage = typeof error.response?.data === 'string' ? error.response.data : null;\n switch (error.response?.status) {\n case 400:\n logger.error(errorMessage || 'Invalid input. Please check your inputs and try again.');\n return;\n case 403:\n logger.error(\n errorMessage ||\n 'You do not have permission to create a project. Please contact support for assistance.'\n );\n return;\n case 503:\n logger.error(\n 'Strapi Cloud project creation is currently unavailable. Please try again later.'\n );\n return;\n default:\n if (errorMessage) {\n logger.error(errorMessage);\n throw error;\n }\n break;\n }\n }\n logger.error(\n 'We encountered an issue while creating your project. Please try again in a moment. If the problem persists, contact support for assistance.'\n );\n}\n\nasync function createProject(\n ctx: CLIContext,\n cloudApi: CloudApiService,\n projectInput: ProjectInput,\n token: string,\n config: CloudCliConfig\n) {\n const { logger } = ctx;\n const projectSpinner = logger.spinner('Setting up your project...').start();\n projectSpinner.indent = 1;\n const notificationService = notificationServiceFactory(ctx);\n const { waitForEnvironmentCreation, close } = notificationService(\n `${apiConfig.apiBaseUrl}/${VERSION}/notifications`,\n token,\n config\n );\n let projectData: CreateProjectResponse;\n try {\n const { data } = await cloudApi.createProject(projectInput);\n projectData = data;\n await local.save({ project: data });\n projectSpinner.succeed('Project created successfully!');\n } catch (e: Error | unknown) {\n projectSpinner.fail(`An error occurred while creating the project on Strapi Cloud.`);\n close();\n throw e;\n }\n if (config.featureFlags.asyncProjectCreationEnabled) {\n const environmentSpinner = logger\n .spinner('Setting up your environment... This may take a minute...')\n .start();\n environmentSpinner.indent = 1;\n try {\n await waitForEnvironmentCreation(projectData.environmentInternalName);\n environmentSpinner.succeed('Environment created successfully!\\n');\n } catch (e: Error | unknown) {\n environmentSpinner.fail(\n `An error occurred while creating the environment on Strapi Cloud.\\n`\n );\n const environmentErrorMessage = environmentErrorMessageFactory({\n projectName: projectData.name,\n firstLine: config.projectCreation.errors.environmentCreationFailed.firstLine,\n secondLine: config.projectCreation.errors.environmentCreationFailed.secondLine,\n });\n logger.log(environmentCreationErrorFactory(environmentErrorMessage));\n return;\n }\n }\n close();\n return projectData;\n}\n\nexport default async (ctx: CLIContext) => {\n const { logger } = ctx;\n const { getValidToken, eraseToken } = await tokenServiceFactory(ctx);\n\n const token = await getValidToken(ctx, promptLogin);\n if (!token) {\n return;\n }\n\n const cloudApi = await cloudApiFactory(ctx, token);\n const { data: config } = await cloudApi.config();\n const projectName = await getProjectNameFromPackageJson(ctx);\n\n const defaultAnswersMapper = questionDefaultValuesMapper({\n name: projectName,\n nodeVersion: getProjectNodeVersionDefault,\n });\n const questions = defaultAnswersMapper(config.projectCreation.questions);\n const defaultValues = {\n ...config.projectCreation.defaults,\n ...getDefaultsFromQuestions(questions),\n };\n\n const projectAnswersDefaulted = defaults(defaultValues);\n const projectAnswers = await inquirer.prompt<ProjectAnswers>(questions);\n\n const projectInput: ProjectInput = projectAnswersDefaulted(projectAnswers);\n\n try {\n return await createProject(ctx, cloudApi, projectInput, token, config);\n } catch (e: Error | unknown) {\n if (e instanceof AxiosError && e.response?.status === 401) {\n logger.warn('Oops! Your session has expired. Please log in again to retry.');\n await eraseToken();\n if (await promptLogin(ctx)) {\n return await createProject(ctx, cloudApi, projectInput, token, config);\n }\n } else {\n await handleError(ctx, e as Error);\n }\n }\n};\n"],"names":["handleError","ctx","error","logger","debug","AxiosError","errorMessage","response","data","status","createProject","cloudApi","projectInput","token","config","projectSpinner","spinner","start","indent","notificationService","notificationServiceFactory","waitForEnvironmentCreation","close","apiConfig","apiBaseUrl","VERSION","projectData","local","project","succeed","e","fail","featureFlags","asyncProjectCreationEnabled","environmentSpinner","environmentInternalName","environmentErrorMessage","environmentErrorMessageFactory","projectName","name","firstLine","projectCreation","errors","environmentCreationFailed","secondLine","log","environmentCreationErrorFactory","getValidToken","eraseToken","tokenServiceFactory","promptLogin","cloudApiFactory","getProjectNameFromPackageJson","defaultAnswersMapper","questionDefaultValuesMapper","nodeVersion","getProjectNodeVersionDefault","questions","defaultValues","defaults","getDefaultsFromQuestions","projectAnswersDefaulted","projectAnswers","inquirer","prompt","warn"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/create-project/command.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAInD;;GAEG;AACH,QAAA,MAAM,OAAO,EAAE,kBAMd,CAAC;AAEF,eAAe,OAAO,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var commander = require('commander');
|
|
4
|
+
var helpers = require('../utils/helpers.js');
|
|
5
|
+
var action = require('./action.js');
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* `$ create project in Strapi cloud`
|
|
9
|
+
*/ const command = ({ ctx })=>{
|
|
10
|
+
return commander.createCommand('cloud:create-project').description('Create a Strapi Cloud project').option('-d, --debug', 'Enable debugging mode with verbose logs').option('-s, --silent', "Don't log anything").action(()=>helpers.runAction('cloud:create-project', action)(ctx));
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
module.exports = command;
|
|
14
|
+
//# sourceMappingURL=command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command.js","sources":["../../src/create-project/command.ts"],"sourcesContent":["import { createCommand } from 'commander';\nimport { type StrapiCloudCommand } from '../types';\nimport { runAction } from '../utils/helpers';\nimport action from './action';\n\n/**\n * `$ create project in Strapi cloud`\n */\nconst command: StrapiCloudCommand = ({ ctx }) => {\n return createCommand('cloud:create-project')\n .description('Create a Strapi Cloud project')\n .option('-d, --debug', 'Enable debugging mode with verbose logs')\n .option('-s, --silent', \"Don't log anything\")\n .action(() => runAction('cloud:create-project', action)(ctx));\n};\n\nexport default command;\n"],"names":["command","ctx","createCommand","description","option","action","runAction"],"mappings":";;;;;;AAKA;;AAEC,IACKA,MAAAA,OAAAA,GAA8B,CAAC,EAAEC,GAAG,EAAE,GAAA;AAC1C,IAAA,OAAOC,wBAAc,sBAClBC,CAAAA,CAAAA,WAAW,CAAC,+BACZC,CAAAA,CAAAA,MAAM,CAAC,aAAe,EAAA,yCAAA,CAAA,CACtBA,MAAM,CAAC,gBAAgB,oBACvBC,CAAAA,CAAAA,MAAM,CAAC,IAAMC,iBAAAA,CAAU,wBAAwBD,MAAQJ,CAAAA,CAAAA,GAAAA,CAAAA,CAAAA;AAC5D;;;;"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { createCommand } from 'commander';
|
|
2
|
+
import { runAction } from '../utils/helpers.mjs';
|
|
3
|
+
import action from './action.mjs';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* `$ create project in Strapi cloud`
|
|
7
|
+
*/ const command = ({ ctx })=>{
|
|
8
|
+
return createCommand('cloud:create-project').description('Create a Strapi Cloud project').option('-d, --debug', 'Enable debugging mode with verbose logs').option('-s, --silent', "Don't log anything").action(()=>runAction('cloud:create-project', action)(ctx));
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
export { command as default };
|
|
12
|
+
//# sourceMappingURL=command.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command.mjs","sources":["../../src/create-project/command.ts"],"sourcesContent":["import { createCommand } from 'commander';\nimport { type StrapiCloudCommand } from '../types';\nimport { runAction } from '../utils/helpers';\nimport action from './action';\n\n/**\n * `$ create project in Strapi cloud`\n */\nconst command: StrapiCloudCommand = ({ ctx }) => {\n return createCommand('cloud:create-project')\n .description('Create a Strapi Cloud project')\n .option('-d, --debug', 'Enable debugging mode with verbose logs')\n .option('-s, --silent', \"Don't log anything\")\n .action(() => runAction('cloud:create-project', action)(ctx));\n};\n\nexport default command;\n"],"names":["command","ctx","createCommand","description","option","action","runAction"],"mappings":";;;;AAKA;;AAEC,IACKA,MAAAA,OAAAA,GAA8B,CAAC,EAAEC,GAAG,EAAE,GAAA;AAC1C,IAAA,OAAOC,cAAc,sBAClBC,CAAAA,CAAAA,WAAW,CAAC,+BACZC,CAAAA,CAAAA,MAAM,CAAC,aAAe,EAAA,yCAAA,CAAA,CACtBA,MAAM,CAAC,gBAAgB,oBACvBC,CAAAA,CAAAA,MAAM,CAAC,IAAMC,SAAAA,CAAU,wBAAwBD,MAAQJ,CAAAA,CAAAA,GAAAA,CAAAA,CAAAA;AAC5D;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/create-project/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAEvD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;;AAE3B,wBAK4B"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var action = require('./action.js');
|
|
6
|
+
var command = require('./command.js');
|
|
7
|
+
|
|
8
|
+
var createProject = {
|
|
9
|
+
name: 'create-project',
|
|
10
|
+
description: 'Create a new project',
|
|
11
|
+
action,
|
|
12
|
+
command
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
exports.action = action;
|
|
16
|
+
exports.command = command;
|
|
17
|
+
exports.default = createProject;
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/create-project/index.ts"],"sourcesContent":["import action from './action';\nimport command from './command';\nimport type { StrapiCloudCommandInfo } from '../types';\n\nexport { action, command };\n\nexport default {\n name: 'create-project',\n description: 'Create a new project',\n action,\n command,\n} as StrapiCloudCommandInfo;\n"],"names":["name","description","action","command"],"mappings":";;;;;;;AAMA,oBAAe;IACbA,IAAM,EAAA,gBAAA;IACNC,WAAa,EAAA,sBAAA;AACbC,IAAAA,MAAAA;AACAC,IAAAA;AACF,CAA4B;;;;;;"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import action from './action.mjs';
|
|
2
|
+
import command from './command.mjs';
|
|
3
|
+
|
|
4
|
+
var createProject = {
|
|
5
|
+
name: 'create-project',
|
|
6
|
+
description: 'Create a new project',
|
|
7
|
+
action,
|
|
8
|
+
command
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
export { action, command, createProject as default };
|
|
12
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../src/create-project/index.ts"],"sourcesContent":["import action from './action';\nimport command from './command';\nimport type { StrapiCloudCommandInfo } from '../types';\n\nexport { action, command };\n\nexport default {\n name: 'create-project',\n description: 'Create a new project',\n action,\n command,\n} as StrapiCloudCommandInfo;\n"],"names":["name","description","action","command"],"mappings":";;;AAMA,oBAAe;IACbA,IAAM,EAAA,gBAAA;IACNC,WAAa,EAAA,sBAAA;AACbC,IAAAA,MAAAA;AACAC,IAAAA;AACF,CAA4B;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-project-name-from-pkg.d.ts","sourceRoot":"","sources":["../../../src/create-project/utils/get-project-name-from-pkg.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,wBAAsB,6BAA6B,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAOpF"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var pkg = require('../../utils/pkg.js');
|
|
4
|
+
|
|
5
|
+
async function getProjectNameFromPackageJson(ctx) {
|
|
6
|
+
try {
|
|
7
|
+
const packageJson = await pkg.loadPkg(ctx);
|
|
8
|
+
return packageJson.name || 'my-strapi-project';
|
|
9
|
+
} catch (e) {
|
|
10
|
+
return 'my-strapi-project';
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
exports.getProjectNameFromPackageJson = getProjectNameFromPackageJson;
|
|
15
|
+
//# sourceMappingURL=get-project-name-from-pkg.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-project-name-from-pkg.js","sources":["../../../src/create-project/utils/get-project-name-from-pkg.ts"],"sourcesContent":["import { CLIContext } from '../../types';\nimport { PackageJson, loadPkg } from '../../utils/pkg';\n\nexport async function getProjectNameFromPackageJson(ctx: CLIContext): Promise<string> {\n try {\n const packageJson = (await loadPkg(ctx)) as PackageJson;\n return packageJson.name || 'my-strapi-project';\n } catch (e) {\n return 'my-strapi-project';\n }\n}\n"],"names":["getProjectNameFromPackageJson","ctx","packageJson","loadPkg","name","e"],"mappings":";;;;AAGO,eAAeA,8BAA8BC,GAAe,EAAA;IACjE,IAAI;QACF,MAAMC,WAAAA,GAAe,MAAMC,WAAQF,CAAAA,GAAAA,CAAAA;QACnC,OAAOC,WAAAA,CAAYE,IAAI,IAAI,mBAAA;AAC7B,KAAA,CAAE,OAAOC,CAAG,EAAA;QACV,OAAO,mBAAA;AACT;AACF;;;;"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { loadPkg } from '../../utils/pkg.mjs';
|
|
2
|
+
|
|
3
|
+
async function getProjectNameFromPackageJson(ctx) {
|
|
4
|
+
try {
|
|
5
|
+
const packageJson = await loadPkg(ctx);
|
|
6
|
+
return packageJson.name || 'my-strapi-project';
|
|
7
|
+
} catch (e) {
|
|
8
|
+
return 'my-strapi-project';
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export { getProjectNameFromPackageJson };
|
|
13
|
+
//# sourceMappingURL=get-project-name-from-pkg.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-project-name-from-pkg.mjs","sources":["../../../src/create-project/utils/get-project-name-from-pkg.ts"],"sourcesContent":["import { CLIContext } from '../../types';\nimport { PackageJson, loadPkg } from '../../utils/pkg';\n\nexport async function getProjectNameFromPackageJson(ctx: CLIContext): Promise<string> {\n try {\n const packageJson = (await loadPkg(ctx)) as PackageJson;\n return packageJson.name || 'my-strapi-project';\n } catch (e) {\n return 'my-strapi-project';\n }\n}\n"],"names":["getProjectNameFromPackageJson","ctx","packageJson","loadPkg","name","e"],"mappings":";;AAGO,eAAeA,8BAA8BC,GAAe,EAAA;IACjE,IAAI;QACF,MAAMC,WAAAA,GAAe,MAAMC,OAAQF,CAAAA,GAAAA,CAAAA;QACnC,OAAOC,WAAAA,CAAYE,IAAI,IAAI,mBAAA;AAC7B,KAAA,CAAE,OAAOC,CAAG,EAAA;QACV,OAAO,mBAAA;AACT;AACF;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-questions.utils.d.ts","sourceRoot":"","sources":["../../../src/create-project/utils/project-questions.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,YAAY,EAAE,OAAO,CAAC;KACnB,CAAC,IAAI,MAAM,cAAc,GACtB,CAAC,CAAC,QAAQ,EAAE,gBAAgB,CAAC,cAAc,CAAC,KAAK,cAAc,CAAC,CAAC,CAAC,CAAC,GACnE,cAAc,CAAC,CAAC,CAAC;CACtB,CAAC,eAGW,cAAc,iBAAiB,cAAc,CAAC,CAAC,KACzD,cAAc,iBAAiB,cAAc,CAAC,CAAC,CAyBnD;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,aAAa,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC,GACzD,OAAO,CAAC,cAAc,CAAC,CAOzB;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,gBAAgB,CAAC,cAAc,CAAC,GAAG,MAAM,CAW/F"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Apply default values to questions based on the provided mapper
|
|
5
|
+
* @param questionsMap - A partial object with keys matching the ProjectAnswers keys and values being the default value or a function to get the default value
|
|
6
|
+
*/ function questionDefaultValuesMapper(questionsMap) {
|
|
7
|
+
return (questions)=>{
|
|
8
|
+
return questions.map((question)=>{
|
|
9
|
+
const questionName = question.name;
|
|
10
|
+
// If the question is part of the mapper, apply the default value
|
|
11
|
+
if (questionName in questionsMap) {
|
|
12
|
+
const questionDefault = questionsMap[questionName];
|
|
13
|
+
// If the default value is a function, call it with the question and get the default value
|
|
14
|
+
if (typeof questionDefault === 'function') {
|
|
15
|
+
return {
|
|
16
|
+
...question,
|
|
17
|
+
default: questionDefault(question)
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
// else we consider it as a static value
|
|
21
|
+
return {
|
|
22
|
+
...question,
|
|
23
|
+
default: questionDefault
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
// If the question is not part of the mapper, return the question as is
|
|
27
|
+
return question;
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Get default values from questions
|
|
33
|
+
* @param questions - An array of questions for project creation
|
|
34
|
+
*/ function getDefaultsFromQuestions(questions) {
|
|
35
|
+
return questions.reduce((acc, question)=>{
|
|
36
|
+
if (question.default && question.name) {
|
|
37
|
+
return {
|
|
38
|
+
...acc,
|
|
39
|
+
[question.name]: question.default
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
return acc;
|
|
43
|
+
}, {});
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Get the default node version based on the current node version if it is in the list of choices
|
|
47
|
+
* @param question - The question for the node version in project creation
|
|
48
|
+
*/ function getProjectNodeVersionDefault(question) {
|
|
49
|
+
const currentNodeVersion = process.versions.node.split('.')[0];
|
|
50
|
+
// Node Version question is set up as a list, but the type of inquirer is dynamic and the question can change in the future (it comes from API)
|
|
51
|
+
if (question.type === 'list' && Array.isArray(question.choices)) {
|
|
52
|
+
const choice = question.choices.find((choice)=>choice.value === currentNodeVersion);
|
|
53
|
+
if (choice) {
|
|
54
|
+
return choice.value;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return question.default;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
exports.getDefaultsFromQuestions = getDefaultsFromQuestions;
|
|
61
|
+
exports.getProjectNodeVersionDefault = getProjectNodeVersionDefault;
|
|
62
|
+
exports.questionDefaultValuesMapper = questionDefaultValuesMapper;
|
|
63
|
+
//# sourceMappingURL=project-questions.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-questions.utils.js","sources":["../../../src/create-project/utils/project-questions.utils.ts"],"sourcesContent":["import { DistinctQuestion } from 'inquirer';\nimport type { ProjectAnswers } from '../../types';\n\n/**\n * Apply default values to questions based on the provided mapper\n * @param questionsMap - A partial object with keys matching the ProjectAnswers keys and values being the default value or a function to get the default value\n */\nexport function questionDefaultValuesMapper(\n questionsMap: Partial<{\n [K in keyof ProjectAnswers]:\n | ((question: DistinctQuestion<ProjectAnswers>) => ProjectAnswers[K])\n | ProjectAnswers[K];\n }>\n) {\n return (\n questions: ReadonlyArray<DistinctQuestion<ProjectAnswers>>\n ): ReadonlyArray<DistinctQuestion<ProjectAnswers>> => {\n return questions.map((question) => {\n const questionName = question.name as keyof ProjectAnswers;\n\n // If the question is part of the mapper, apply the default value\n if (questionName in questionsMap) {\n const questionDefault = questionsMap[questionName];\n\n // If the default value is a function, call it with the question and get the default value\n if (typeof questionDefault === 'function') {\n return {\n ...question,\n default: questionDefault(question),\n };\n }\n // else we consider it as a static value\n return {\n ...question,\n default: questionDefault,\n };\n }\n // If the question is not part of the mapper, return the question as is\n return question;\n });\n };\n}\n\n/**\n * Get default values from questions\n * @param questions - An array of questions for project creation\n */\nexport function getDefaultsFromQuestions(\n questions: ReadonlyArray<DistinctQuestion<ProjectAnswers>>\n): Partial<ProjectAnswers> {\n return questions.reduce((acc, question) => {\n if (question.default && question.name) {\n return { ...acc, [question.name]: question.default };\n }\n return acc;\n }, {});\n}\n\n/**\n * Get the default node version based on the current node version if it is in the list of choices\n * @param question - The question for the node version in project creation\n */\nexport function getProjectNodeVersionDefault(question: DistinctQuestion<ProjectAnswers>): string {\n const currentNodeVersion = process.versions.node.split('.')[0];\n\n // Node Version question is set up as a list, but the type of inquirer is dynamic and the question can change in the future (it comes from API)\n if (question.type === 'list' && Array.isArray(question.choices)) {\n const choice = question.choices.find((choice) => choice.value === currentNodeVersion);\n if (choice) {\n return choice.value;\n }\n }\n return question.default;\n}\n"],"names":["questionDefaultValuesMapper","questionsMap","questions","map","question","questionName","name","questionDefault","default","getDefaultsFromQuestions","reduce","acc","getProjectNodeVersionDefault","currentNodeVersion","process","versions","node","split","type","Array","isArray","choices","choice","find","value"],"mappings":";;AAGA;;;IAIO,SAASA,2BAAAA,CACdC,YAIE,EAAA;AAEF,IAAA,OAAO,CACLC,SAAAA,GAAAA;QAEA,OAAOA,SAAAA,CAAUC,GAAG,CAAC,CAACC,QAAAA,GAAAA;YACpB,MAAMC,YAAAA,GAAeD,SAASE,IAAI;;AAGlC,YAAA,IAAID,gBAAgBJ,YAAc,EAAA;gBAChC,MAAMM,eAAAA,GAAkBN,YAAY,CAACI,YAAa,CAAA;;gBAGlD,IAAI,OAAOE,oBAAoB,UAAY,EAAA;oBACzC,OAAO;AACL,wBAAA,GAAGH,QAAQ;AACXI,wBAAAA,OAAAA,EAASD,eAAgBH,CAAAA,QAAAA;AAC3B,qBAAA;AACF;;gBAEA,OAAO;AACL,oBAAA,GAAGA,QAAQ;oBACXI,OAASD,EAAAA;AACX,iBAAA;AACF;;YAEA,OAAOH,QAAAA;AACT,SAAA,CAAA;AACF,KAAA;AACF;AAEA;;;IAIO,SAASK,wBAAAA,CACdP,SAA0D,EAAA;AAE1D,IAAA,OAAOA,SAAUQ,CAAAA,MAAM,CAAC,CAACC,GAAKP,EAAAA,QAAAA,GAAAA;AAC5B,QAAA,IAAIA,QAASI,CAAAA,OAAO,IAAIJ,QAAAA,CAASE,IAAI,EAAE;YACrC,OAAO;AAAE,gBAAA,GAAGK,GAAG;AAAE,gBAAA,CAACP,QAASE,CAAAA,IAAI,GAAGF,SAASI;AAAQ,aAAA;AACrD;QACA,OAAOG,GAAAA;AACT,KAAA,EAAG,EAAC,CAAA;AACN;AAEA;;;IAIO,SAASC,4BAAAA,CAA6BR,QAA0C,EAAA;IACrF,MAAMS,kBAAAA,GAAqBC,OAAQC,CAAAA,QAAQ,CAACC,IAAI,CAACC,KAAK,CAAC,GAAI,CAAA,CAAC,CAAE,CAAA;;IAG9D,IAAIb,QAAAA,CAASc,IAAI,KAAK,MAAA,IAAUC,MAAMC,OAAO,CAAChB,QAASiB,CAAAA,OAAO,CAAG,EAAA;QAC/D,MAAMC,MAAAA,GAASlB,QAASiB,CAAAA,OAAO,CAACE,IAAI,CAAC,CAACD,MAAAA,GAAWA,MAAOE,CAAAA,KAAK,KAAKX,kBAAAA,CAAAA;AAClE,QAAA,IAAIS,MAAQ,EAAA;AACV,YAAA,OAAOA,OAAOE,KAAK;AACrB;AACF;AACA,IAAA,OAAOpB,SAASI,OAAO;AACzB;;;;;;"}
|