@strapi/cloud-cli 0.0.0-next.e21fe90bf2ab9906267ea6e6ca620bdcc729906c → 0.0.0-next.e2e3ca14971ee768e1a227a209362264fd0132d4
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 -1
- package/dist/bin.js +7 -2
- package/dist/bin.js.map +1 -1
- package/dist/bin.mjs +7 -2
- package/dist/bin.mjs.map +1 -1
- package/dist/config/local.d.ts +1 -1
- package/dist/config/local.d.ts.map +1 -1
- package/dist/config/local.js.map +1 -1
- package/dist/config/local.mjs.map +1 -1
- 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 +51 -0
- package/dist/create-growth-sso-trial/action.js.map +1 -0
- package/dist/create-growth-sso-trial/action.mjs +49 -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 +2 -2
- package/dist/create-project/action.d.ts.map +1 -1
- package/dist/create-project/action.js +38 -11
- package/dist/create-project/action.js.map +1 -1
- package/dist/create-project/action.mjs +39 -12
- package/dist/create-project/action.mjs.map +1 -1
- package/dist/deploy-project/action.d.ts.map +1 -1
- package/dist/deploy-project/action.js +54 -17
- package/dist/deploy-project/action.js.map +1 -1
- package/dist/deploy-project/action.mjs +55 -18
- package/dist/deploy-project/action.mjs.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +3 -2
- package/dist/index.mjs.map +1 -1
- package/dist/login/action.d.ts +3 -1
- package/dist/login/action.d.ts.map +1 -1
- package/dist/login/action.js +34 -12
- package/dist/login/action.js.map +1 -1
- package/dist/login/action.mjs +34 -12
- package/dist/login/action.mjs.map +1 -1
- package/dist/logout/action.js.map +1 -1
- package/dist/logout/action.mjs.map +1 -1
- package/dist/package.json.js +6 -6
- package/dist/package.json.mjs +6 -6
- package/dist/services/build-logs.d.ts.map +1 -1
- package/dist/services/build-logs.js +7 -7
- package/dist/services/build-logs.js.map +1 -1
- package/dist/services/build-logs.mjs +7 -7
- package/dist/services/build-logs.mjs.map +1 -1
- package/dist/services/cli-api.d.ts +13 -2
- package/dist/services/cli-api.d.ts.map +1 -1
- package/dist/services/cli-api.js +22 -4
- package/dist/services/cli-api.js.map +1 -1
- package/dist/services/cli-api.mjs +22 -4
- package/dist/services/cli-api.mjs.map +1 -1
- package/dist/services/context.d.ts +4 -0
- package/dist/services/context.d.ts.map +1 -0
- package/dist/services/context.js +14 -0
- package/dist/services/context.js.map +1 -0
- package/dist/services/context.mjs +11 -0
- package/dist/services/context.mjs.map +1 -0
- package/dist/services/logger.js.map +1 -1
- package/dist/services/logger.mjs.map +1 -1
- package/dist/services/notification.d.ts +4 -1
- package/dist/services/notification.d.ts.map +1 -1
- package/dist/services/notification.js +44 -2
- package/dist/services/notification.js.map +1 -1
- package/dist/services/notification.mjs +44 -2
- package/dist/services/notification.mjs.map +1 -1
- package/dist/types.d.ts +23 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/analytics.js.map +1 -1
- package/dist/utils/analytics.mjs.map +1 -1
- package/dist/utils/compress-files.d.ts.map +1 -1
- package/dist/utils/compress-files.js +2 -0
- package/dist/utils/compress-files.js.map +1 -1
- package/dist/utils/compress-files.mjs +2 -0
- package/dist/utils/compress-files.mjs.map +1 -1
- 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/helpers.js.map +1 -1
- package/dist/utils/helpers.mjs.map +1 -1
- package/package.json +6 -6
package/dist/bin.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bin.d.ts","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"bin.d.ts","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgCpC,iBAAS,qBAAqB,CAAC,IAAI,WAAe,EAAE,OAAO,UAAgB,QAG1E;AAED,OAAO,EAAE,qBAAqB,EAAE,CAAC"}
|
package/dist/bin.js
CHANGED
|
@@ -7,6 +7,7 @@ require('os');
|
|
|
7
7
|
require('./config/api.js');
|
|
8
8
|
require('path');
|
|
9
9
|
require('xdg-app-paths');
|
|
10
|
+
var context = require('./services/context.js');
|
|
10
11
|
require('lodash');
|
|
11
12
|
require('jwks-rsa');
|
|
12
13
|
require('jsonwebtoken');
|
|
@@ -27,10 +28,14 @@ function loadStrapiCloudCommand(argv = process.argv, command = new commander.Com
|
|
|
27
28
|
silent: hasSilent,
|
|
28
29
|
timestamp: false
|
|
29
30
|
});
|
|
30
|
-
|
|
31
|
+
context.setContext({
|
|
32
|
+
user: {
|
|
33
|
+
id: ''
|
|
34
|
+
},
|
|
31
35
|
cwd,
|
|
32
36
|
logger: logger$1
|
|
33
|
-
};
|
|
37
|
+
});
|
|
38
|
+
const ctx = context.getContext();
|
|
34
39
|
index.buildStrapiCloudCommands({
|
|
35
40
|
command,
|
|
36
41
|
ctx,
|
package/dist/bin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bin.js","sources":["../src/bin.ts"],"sourcesContent":["import { Command } from 'commander';\nimport { createLogger } from './services';\nimport { CLIContext } from './types';\nimport { buildStrapiCloudCommands } from './index';\n\nfunction loadStrapiCloudCommand(argv = process.argv, command = new Command()) {\n // Initial program setup\n command.storeOptionsAsProperties(false).allowUnknownOption(true);\n\n // Help command\n command.helpOption('-h, --help', 'Display help for command');\n command.addHelpCommand('help [command]', 'Display help for command');\n\n const cwd = process.cwd();\n\n const hasDebug = argv.includes('--debug');\n const hasSilent = argv.includes('--silent');\n\n const logger = createLogger({ debug: hasDebug, silent: hasSilent, timestamp: false });\n\n
|
|
1
|
+
{"version":3,"file":"bin.js","sources":["../src/bin.ts"],"sourcesContent":["import { Command } from 'commander';\nimport { createLogger } from './services';\nimport { getContext, setContext } from './services/context';\nimport { CLIContext } from './types';\nimport { buildStrapiCloudCommands } from './index';\n\nfunction loadStrapiCloudCommand(argv = process.argv, command = new Command()) {\n // Initial program setup\n command.storeOptionsAsProperties(false).allowUnknownOption(true);\n\n // Help command\n command.helpOption('-h, --help', 'Display help for command');\n command.addHelpCommand('help [command]', 'Display help for command');\n\n const cwd = process.cwd();\n\n const hasDebug = argv.includes('--debug');\n const hasSilent = argv.includes('--silent');\n\n const logger = createLogger({ debug: hasDebug, silent: hasSilent, timestamp: false });\n\n setContext({\n user: { id: '' },\n cwd,\n logger,\n });\n\n const ctx: CLIContext = getContext();\n\n buildStrapiCloudCommands({ command, ctx, argv });\n}\n\nfunction runStrapiCloudCommand(argv = process.argv, command = new Command()) {\n loadStrapiCloudCommand(argv, command);\n command.parse(argv);\n}\n\nexport { runStrapiCloudCommand };\n"],"names":["loadStrapiCloudCommand","argv","process","command","Command","storeOptionsAsProperties","allowUnknownOption","helpOption","addHelpCommand","cwd","hasDebug","includes","hasSilent","logger","createLogger","debug","silent","timestamp","setContext","user","id","ctx","getContext","buildStrapiCloudCommands","runStrapiCloudCommand","parse"],"mappings":";;;;;;;;;;;;;;;;AAMA,SAASA,uBAAuBC,IAAOC,GAAAA,OAAAA,CAAQD,IAAI,EAAEE,OAAAA,GAAU,IAAIC,iBAAS,EAAA,EAAA;;AAE1ED,IAAAA,OAAAA,CAAQE,wBAAwB,CAAC,KAAOC,CAAAA,CAAAA,kBAAkB,CAAC,IAAA,CAAA;;IAG3DH,OAAQI,CAAAA,UAAU,CAAC,YAAc,EAAA,0BAAA,CAAA;IACjCJ,OAAQK,CAAAA,cAAc,CAAC,gBAAkB,EAAA,0BAAA,CAAA;IAEzC,MAAMC,GAAAA,GAAMP,QAAQO,GAAG,EAAA;IAEvB,MAAMC,QAAAA,GAAWT,IAAKU,CAAAA,QAAQ,CAAC,SAAA,CAAA;IAC/B,MAAMC,SAAAA,GAAYX,IAAKU,CAAAA,QAAQ,CAAC,UAAA,CAAA;AAEhC,IAAA,MAAME,WAASC,mBAAa,CAAA;QAAEC,KAAOL,EAAAA,QAAAA;QAAUM,MAAQJ,EAAAA,SAAAA;QAAWK,SAAW,EAAA;AAAM,KAAA,CAAA;IAEnFC,kBAAW,CAAA;QACTC,IAAM,EAAA;YAAEC,EAAI,EAAA;AAAG,SAAA;AACfX,QAAAA,GAAAA;AACAI,gBAAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAMQ,GAAkBC,GAAAA,kBAAAA,EAAAA;IAExBC,8BAAyB,CAAA;AAAEpB,QAAAA,OAAAA;AAASkB,QAAAA,GAAAA;AAAKpB,QAAAA;AAAK,KAAA,CAAA;AAChD;AAEA,SAASuB,sBAAsBvB,IAAOC,GAAAA,OAAAA,CAAQD,IAAI,EAAEE,OAAAA,GAAU,IAAIC,iBAAS,EAAA,EAAA;AACzEJ,IAAAA,sBAAAA,CAAuBC,IAAME,EAAAA,OAAAA,CAAAA;AAC7BA,IAAAA,OAAAA,CAAQsB,KAAK,CAACxB,IAAAA,CAAAA;AAChB;;;;"}
|
package/dist/bin.mjs
CHANGED
|
@@ -5,6 +5,7 @@ import 'os';
|
|
|
5
5
|
import './config/api.mjs';
|
|
6
6
|
import 'path';
|
|
7
7
|
import 'xdg-app-paths';
|
|
8
|
+
import { setContext, getContext } from './services/context.mjs';
|
|
8
9
|
import 'lodash';
|
|
9
10
|
import 'jwks-rsa';
|
|
10
11
|
import 'jsonwebtoken';
|
|
@@ -25,10 +26,14 @@ function loadStrapiCloudCommand(argv = process.argv, command = new Command()) {
|
|
|
25
26
|
silent: hasSilent,
|
|
26
27
|
timestamp: false
|
|
27
28
|
});
|
|
28
|
-
|
|
29
|
+
setContext({
|
|
30
|
+
user: {
|
|
31
|
+
id: ''
|
|
32
|
+
},
|
|
29
33
|
cwd,
|
|
30
34
|
logger
|
|
31
|
-
};
|
|
35
|
+
});
|
|
36
|
+
const ctx = getContext();
|
|
32
37
|
buildStrapiCloudCommands({
|
|
33
38
|
command,
|
|
34
39
|
ctx,
|
package/dist/bin.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bin.mjs","sources":["../src/bin.ts"],"sourcesContent":["import { Command } from 'commander';\nimport { createLogger } from './services';\nimport { CLIContext } from './types';\nimport { buildStrapiCloudCommands } from './index';\n\nfunction loadStrapiCloudCommand(argv = process.argv, command = new Command()) {\n // Initial program setup\n command.storeOptionsAsProperties(false).allowUnknownOption(true);\n\n // Help command\n command.helpOption('-h, --help', 'Display help for command');\n command.addHelpCommand('help [command]', 'Display help for command');\n\n const cwd = process.cwd();\n\n const hasDebug = argv.includes('--debug');\n const hasSilent = argv.includes('--silent');\n\n const logger = createLogger({ debug: hasDebug, silent: hasSilent, timestamp: false });\n\n
|
|
1
|
+
{"version":3,"file":"bin.mjs","sources":["../src/bin.ts"],"sourcesContent":["import { Command } from 'commander';\nimport { createLogger } from './services';\nimport { getContext, setContext } from './services/context';\nimport { CLIContext } from './types';\nimport { buildStrapiCloudCommands } from './index';\n\nfunction loadStrapiCloudCommand(argv = process.argv, command = new Command()) {\n // Initial program setup\n command.storeOptionsAsProperties(false).allowUnknownOption(true);\n\n // Help command\n command.helpOption('-h, --help', 'Display help for command');\n command.addHelpCommand('help [command]', 'Display help for command');\n\n const cwd = process.cwd();\n\n const hasDebug = argv.includes('--debug');\n const hasSilent = argv.includes('--silent');\n\n const logger = createLogger({ debug: hasDebug, silent: hasSilent, timestamp: false });\n\n setContext({\n user: { id: '' },\n cwd,\n logger,\n });\n\n const ctx: CLIContext = getContext();\n\n buildStrapiCloudCommands({ command, ctx, argv });\n}\n\nfunction runStrapiCloudCommand(argv = process.argv, command = new Command()) {\n loadStrapiCloudCommand(argv, command);\n command.parse(argv);\n}\n\nexport { runStrapiCloudCommand };\n"],"names":["loadStrapiCloudCommand","argv","process","command","Command","storeOptionsAsProperties","allowUnknownOption","helpOption","addHelpCommand","cwd","hasDebug","includes","hasSilent","logger","createLogger","debug","silent","timestamp","setContext","user","id","ctx","getContext","buildStrapiCloudCommands","runStrapiCloudCommand","parse"],"mappings":";;;;;;;;;;;;;;AAMA,SAASA,uBAAuBC,IAAOC,GAAAA,OAAAA,CAAQD,IAAI,EAAEE,OAAAA,GAAU,IAAIC,OAAS,EAAA,EAAA;;AAE1ED,IAAAA,OAAAA,CAAQE,wBAAwB,CAAC,KAAOC,CAAAA,CAAAA,kBAAkB,CAAC,IAAA,CAAA;;IAG3DH,OAAQI,CAAAA,UAAU,CAAC,YAAc,EAAA,0BAAA,CAAA;IACjCJ,OAAQK,CAAAA,cAAc,CAAC,gBAAkB,EAAA,0BAAA,CAAA;IAEzC,MAAMC,GAAAA,GAAMP,QAAQO,GAAG,EAAA;IAEvB,MAAMC,QAAAA,GAAWT,IAAKU,CAAAA,QAAQ,CAAC,SAAA,CAAA;IAC/B,MAAMC,SAAAA,GAAYX,IAAKU,CAAAA,QAAQ,CAAC,UAAA,CAAA;AAEhC,IAAA,MAAME,SAASC,YAAa,CAAA;QAAEC,KAAOL,EAAAA,QAAAA;QAAUM,MAAQJ,EAAAA,SAAAA;QAAWK,SAAW,EAAA;AAAM,KAAA,CAAA;IAEnFC,UAAW,CAAA;QACTC,IAAM,EAAA;YAAEC,EAAI,EAAA;AAAG,SAAA;AACfX,QAAAA,GAAAA;AACAI,QAAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAMQ,GAAkBC,GAAAA,UAAAA,EAAAA;IAExBC,wBAAyB,CAAA;AAAEpB,QAAAA,OAAAA;AAASkB,QAAAA,GAAAA;AAAKpB,QAAAA;AAAK,KAAA,CAAA;AAChD;AAEA,SAASuB,sBAAsBvB,IAAOC,GAAAA,OAAAA,CAAQD,IAAI,EAAEE,OAAAA,GAAU,IAAIC,OAAS,EAAA,EAAA;AACzEJ,IAAAA,sBAAAA,CAAuBC,IAAME,EAAAA,OAAAA,CAAAA;AAC7BA,IAAAA,OAAAA,CAAQsB,KAAK,CAACxB,IAAAA,CAAAA;AAChB;;;;"}
|
package/dist/config/local.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export declare const CONFIG_FILENAME = "config.json";
|
|
2
2
|
export type LocalConfig = {
|
|
3
3
|
token?: string;
|
|
4
|
-
|
|
4
|
+
installId?: string;
|
|
5
5
|
};
|
|
6
6
|
export declare function getTmpStoragePath(): Promise<string>;
|
|
7
7
|
export declare function getLocalConfig(): Promise<LocalConfig>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../../src/config/local.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,eAAe,gBAAgB,CAAC;AAE7C,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,
|
|
1
|
+
{"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../../src/config/local.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,eAAe,gBAAgB,CAAC;AAE7C,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAYF,wBAAsB,iBAAiB,oBAItC;AAaD,wBAAsB,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC,CAS3D;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,WAAW,iBAItD"}
|
package/dist/config/local.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local.js","sources":["../../src/config/local.ts"],"sourcesContent":["import path from 'path';\nimport os from 'os';\nimport fse from 'fs-extra';\nimport XDGAppPaths from 'xdg-app-paths';\n\nconst APP_FOLDER_NAME = 'com.strapi.cli';\n\nexport const CONFIG_FILENAME = 'config.json';\n\nexport type LocalConfig = {\n token?: string;\n
|
|
1
|
+
{"version":3,"file":"local.js","sources":["../../src/config/local.ts"],"sourcesContent":["import path from 'path';\nimport os from 'os';\nimport fse from 'fs-extra';\nimport XDGAppPaths from 'xdg-app-paths';\n\nconst APP_FOLDER_NAME = 'com.strapi.cli';\n\nexport const CONFIG_FILENAME = 'config.json';\n\nexport type LocalConfig = {\n token?: string;\n installId?: string;\n};\n\nasync function checkDirectoryExists(directoryPath: string) {\n try {\n const fsStat = await fse.lstat(directoryPath);\n return fsStat.isDirectory();\n } catch (e) {\n return false;\n }\n}\n\n// Determine storage path based on the operating system\nexport async function getTmpStoragePath() {\n const storagePath = path.join(os.tmpdir(), APP_FOLDER_NAME);\n await fse.ensureDir(storagePath);\n return storagePath;\n}\n\nasync function getConfigPath() {\n const configDirs = XDGAppPaths(APP_FOLDER_NAME).configDirs();\n const configPath = configDirs.find(checkDirectoryExists);\n\n if (!configPath) {\n await fse.ensureDir(configDirs[0]);\n return configDirs[0];\n }\n return configPath;\n}\n\nexport async function getLocalConfig(): Promise<LocalConfig> {\n const configPath = await getConfigPath();\n const configFilePath = path.join(configPath, CONFIG_FILENAME);\n await fse.ensureFile(configFilePath);\n try {\n return await fse.readJSON(configFilePath, { encoding: 'utf8', throws: true });\n } catch (e) {\n return {};\n }\n}\n\nexport async function saveLocalConfig(data: LocalConfig) {\n const configPath = await getConfigPath();\n const configFilePath = path.join(configPath, CONFIG_FILENAME);\n await fse.writeJson(configFilePath, data, { encoding: 'utf8', spaces: 2, mode: 0o600 });\n}\n"],"names":["APP_FOLDER_NAME","CONFIG_FILENAME","checkDirectoryExists","directoryPath","fsStat","fse","lstat","isDirectory","e","getTmpStoragePath","storagePath","path","join","os","tmpdir","ensureDir","getConfigPath","configDirs","XDGAppPaths","configPath","find","getLocalConfig","configFilePath","ensureFile","readJSON","encoding","throws","saveLocalConfig","data","writeJson","spaces","mode"],"mappings":";;;;;;;AAKA,MAAMA,eAAkB,GAAA,gBAAA;AAEjB,MAAMC,kBAAkB;AAO/B,eAAeC,qBAAqBC,aAAqB,EAAA;IACvD,IAAI;AACF,QAAA,MAAMC,MAAS,GAAA,MAAMC,GAAIC,CAAAA,KAAK,CAACH,aAAAA,CAAAA;AAC/B,QAAA,OAAOC,OAAOG,WAAW,EAAA;AAC3B,KAAA,CAAE,OAAOC,CAAG,EAAA;QACV,OAAO,KAAA;AACT;AACF;AAEA;AACO,eAAeC,iBAAAA,GAAAA;AACpB,IAAA,MAAMC,cAAcC,IAAKC,CAAAA,IAAI,CAACC,EAAAA,CAAGC,MAAM,EAAId,EAAAA,eAAAA,CAAAA;IAC3C,MAAMK,GAAAA,CAAIU,SAAS,CAACL,WAAAA,CAAAA;IACpB,OAAOA,WAAAA;AACT;AAEA,eAAeM,aAAAA,GAAAA;IACb,MAAMC,UAAAA,GAAaC,WAAYlB,CAAAA,eAAAA,CAAAA,CAAiBiB,UAAU,EAAA;IAC1D,MAAME,UAAAA,GAAaF,UAAWG,CAAAA,IAAI,CAAClB,oBAAAA,CAAAA;AAEnC,IAAA,IAAI,CAACiB,UAAY,EAAA;AACf,QAAA,MAAMd,GAAIU,CAAAA,SAAS,CAACE,UAAU,CAAC,CAAE,CAAA,CAAA;QACjC,OAAOA,UAAU,CAAC,CAAE,CAAA;AACtB;IACA,OAAOE,UAAAA;AACT;AAEO,eAAeE,cAAAA,GAAAA;AACpB,IAAA,MAAMF,aAAa,MAAMH,aAAAA,EAAAA;AACzB,IAAA,MAAMM,cAAiBX,GAAAA,IAAAA,CAAKC,IAAI,CAACO,UAAYlB,EAAAA,eAAAA,CAAAA;IAC7C,MAAMI,GAAAA,CAAIkB,UAAU,CAACD,cAAAA,CAAAA;IACrB,IAAI;AACF,QAAA,OAAO,MAAMjB,GAAAA,CAAImB,QAAQ,CAACF,cAAgB,EAAA;YAAEG,QAAU,EAAA,MAAA;YAAQC,MAAQ,EAAA;AAAK,SAAA,CAAA;AAC7E,KAAA,CAAE,OAAOlB,CAAG,EAAA;AACV,QAAA,OAAO,EAAC;AACV;AACF;AAEO,eAAemB,gBAAgBC,IAAiB,EAAA;AACrD,IAAA,MAAMT,aAAa,MAAMH,aAAAA,EAAAA;AACzB,IAAA,MAAMM,cAAiBX,GAAAA,IAAAA,CAAKC,IAAI,CAACO,UAAYlB,EAAAA,eAAAA,CAAAA;AAC7C,IAAA,MAAMI,GAAIwB,CAAAA,SAAS,CAACP,cAAAA,EAAgBM,IAAM,EAAA;QAAEH,QAAU,EAAA,MAAA;QAAQK,MAAQ,EAAA,CAAA;QAAGC,IAAM,EAAA;AAAM,KAAA,CAAA;AACvF;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local.mjs","sources":["../../src/config/local.ts"],"sourcesContent":["import path from 'path';\nimport os from 'os';\nimport fse from 'fs-extra';\nimport XDGAppPaths from 'xdg-app-paths';\n\nconst APP_FOLDER_NAME = 'com.strapi.cli';\n\nexport const CONFIG_FILENAME = 'config.json';\n\nexport type LocalConfig = {\n token?: string;\n
|
|
1
|
+
{"version":3,"file":"local.mjs","sources":["../../src/config/local.ts"],"sourcesContent":["import path from 'path';\nimport os from 'os';\nimport fse from 'fs-extra';\nimport XDGAppPaths from 'xdg-app-paths';\n\nconst APP_FOLDER_NAME = 'com.strapi.cli';\n\nexport const CONFIG_FILENAME = 'config.json';\n\nexport type LocalConfig = {\n token?: string;\n installId?: string;\n};\n\nasync function checkDirectoryExists(directoryPath: string) {\n try {\n const fsStat = await fse.lstat(directoryPath);\n return fsStat.isDirectory();\n } catch (e) {\n return false;\n }\n}\n\n// Determine storage path based on the operating system\nexport async function getTmpStoragePath() {\n const storagePath = path.join(os.tmpdir(), APP_FOLDER_NAME);\n await fse.ensureDir(storagePath);\n return storagePath;\n}\n\nasync function getConfigPath() {\n const configDirs = XDGAppPaths(APP_FOLDER_NAME).configDirs();\n const configPath = configDirs.find(checkDirectoryExists);\n\n if (!configPath) {\n await fse.ensureDir(configDirs[0]);\n return configDirs[0];\n }\n return configPath;\n}\n\nexport async function getLocalConfig(): Promise<LocalConfig> {\n const configPath = await getConfigPath();\n const configFilePath = path.join(configPath, CONFIG_FILENAME);\n await fse.ensureFile(configFilePath);\n try {\n return await fse.readJSON(configFilePath, { encoding: 'utf8', throws: true });\n } catch (e) {\n return {};\n }\n}\n\nexport async function saveLocalConfig(data: LocalConfig) {\n const configPath = await getConfigPath();\n const configFilePath = path.join(configPath, CONFIG_FILENAME);\n await fse.writeJson(configFilePath, data, { encoding: 'utf8', spaces: 2, mode: 0o600 });\n}\n"],"names":["APP_FOLDER_NAME","CONFIG_FILENAME","checkDirectoryExists","directoryPath","fsStat","fse","lstat","isDirectory","e","getTmpStoragePath","storagePath","path","join","os","tmpdir","ensureDir","getConfigPath","configDirs","XDGAppPaths","configPath","find","getLocalConfig","configFilePath","ensureFile","readJSON","encoding","throws","saveLocalConfig","data","writeJson","spaces","mode"],"mappings":";;;;;AAKA,MAAMA,eAAkB,GAAA,gBAAA;AAEjB,MAAMC,kBAAkB;AAO/B,eAAeC,qBAAqBC,aAAqB,EAAA;IACvD,IAAI;AACF,QAAA,MAAMC,MAAS,GAAA,MAAMC,YAAIC,CAAAA,KAAK,CAACH,aAAAA,CAAAA;AAC/B,QAAA,OAAOC,OAAOG,WAAW,EAAA;AAC3B,KAAA,CAAE,OAAOC,CAAG,EAAA;QACV,OAAO,KAAA;AACT;AACF;AAEA;AACO,eAAeC,iBAAAA,GAAAA;AACpB,IAAA,MAAMC,cAAcC,aAAKC,CAAAA,IAAI,CAACC,EAAAA,CAAGC,MAAM,EAAId,EAAAA,eAAAA,CAAAA;IAC3C,MAAMK,YAAAA,CAAIU,SAAS,CAACL,WAAAA,CAAAA;IACpB,OAAOA,WAAAA;AACT;AAEA,eAAeM,aAAAA,GAAAA;IACb,MAAMC,UAAAA,GAAaC,WAAYlB,CAAAA,eAAAA,CAAAA,CAAiBiB,UAAU,EAAA;IAC1D,MAAME,UAAAA,GAAaF,UAAWG,CAAAA,IAAI,CAAClB,oBAAAA,CAAAA;AAEnC,IAAA,IAAI,CAACiB,UAAY,EAAA;AACf,QAAA,MAAMd,YAAIU,CAAAA,SAAS,CAACE,UAAU,CAAC,CAAE,CAAA,CAAA;QACjC,OAAOA,UAAU,CAAC,CAAE,CAAA;AACtB;IACA,OAAOE,UAAAA;AACT;AAEO,eAAeE,cAAAA,GAAAA;AACpB,IAAA,MAAMF,aAAa,MAAMH,aAAAA,EAAAA;AACzB,IAAA,MAAMM,cAAiBX,GAAAA,aAAAA,CAAKC,IAAI,CAACO,UAAYlB,EAAAA,eAAAA,CAAAA;IAC7C,MAAMI,YAAAA,CAAIkB,UAAU,CAACD,cAAAA,CAAAA;IACrB,IAAI;AACF,QAAA,OAAO,MAAMjB,YAAAA,CAAImB,QAAQ,CAACF,cAAgB,EAAA;YAAEG,QAAU,EAAA,MAAA;YAAQC,MAAQ,EAAA;AAAK,SAAA,CAAA;AAC7E,KAAA,CAAE,OAAOlB,CAAG,EAAA;AACV,QAAA,OAAO,EAAC;AACV;AACF;AAEO,eAAemB,gBAAgBC,IAAiB,EAAA;AACrD,IAAA,MAAMT,aAAa,MAAMH,aAAAA,EAAAA;AACzB,IAAA,MAAMM,cAAiBX,GAAAA,aAAAA,CAAKC,IAAI,CAACO,UAAYlB,EAAAA,eAAAA,CAAAA;AAC7C,IAAA,MAAMI,YAAIwB,CAAAA,SAAS,CAACP,cAAAA,EAAgBM,IAAM,EAAA;QAAEH,QAAU,EAAA,MAAA;QAAQK,MAAQ,EAAA,CAAA;QAAGC,IAAM,EAAA;AAAM,KAAA,CAAA;AACvF;;;;"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
interface CreateGrowthSsoTrialInput {
|
|
2
|
+
strapiVersion: string | undefined;
|
|
3
|
+
}
|
|
4
|
+
interface CreateGrowthSsoTrialResponse {
|
|
5
|
+
license: string;
|
|
6
|
+
}
|
|
7
|
+
declare const _default: ({ strapiVersion, }: CreateGrowthSsoTrialInput) => Promise<CreateGrowthSsoTrialResponse | undefined>;
|
|
8
|
+
export default _default;
|
|
9
|
+
//# sourceMappingURL=action.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../src/create-growth-sso-trial/action.ts"],"names":[],"mappings":"AAKA,UAAU,yBAAyB;IACjC,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;CACnC;AAED,UAAU,4BAA4B;IACpC,OAAO,EAAE,MAAM,CAAC;CACjB;6CAIE,yBAAyB,KAAG,QAAQ,4BAA4B,GAAG,SAAS,CAAC;AAFhF,wBAuCE"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var cliApi = require('../services/cli-api.js');
|
|
4
|
+
require('fs-extra');
|
|
5
|
+
require('path');
|
|
6
|
+
require('lodash');
|
|
7
|
+
var token = require('../services/token.js');
|
|
8
|
+
var logger = require('../services/logger.js');
|
|
9
|
+
var context = require('../services/context.js');
|
|
10
|
+
var analytics = require('../utils/analytics.js');
|
|
11
|
+
|
|
12
|
+
var action = (async ({ strapiVersion })=>{
|
|
13
|
+
const logger$1 = logger.createLogger();
|
|
14
|
+
const { retrieveToken } = await token.tokenServiceFactory({
|
|
15
|
+
logger: logger$1
|
|
16
|
+
});
|
|
17
|
+
const token$1 = await retrieveToken();
|
|
18
|
+
if (!token$1) {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
const cloudApiService = await cliApi.cloudApiFactory({
|
|
22
|
+
logger: logger$1
|
|
23
|
+
}, token$1);
|
|
24
|
+
try {
|
|
25
|
+
const { data: config } = await cloudApiService.config();
|
|
26
|
+
if (!config?.featureFlags?.growthSsoTrialEnabled) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
} catch (e) {
|
|
30
|
+
logger$1.debug('Failed to get cli config', e);
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
try {
|
|
34
|
+
const response = await cloudApiService.createTrial({
|
|
35
|
+
strapiVersion: strapiVersion || ''
|
|
36
|
+
});
|
|
37
|
+
const ctx = context.getContext();
|
|
38
|
+
await analytics.trackEvent(ctx, cloudApiService, 'didCreateGrowthSsoTrial', {
|
|
39
|
+
strapiVersion: strapiVersion || ''
|
|
40
|
+
});
|
|
41
|
+
return {
|
|
42
|
+
license: response.data?.licenseKey
|
|
43
|
+
};
|
|
44
|
+
} catch (e) {
|
|
45
|
+
logger$1.debug(e);
|
|
46
|
+
logger$1.error('We encountered an issue while creating your trial. Please try again in a moment. If the problem persists, contact support for assistance.');
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
module.exports = action;
|
|
51
|
+
//# sourceMappingURL=action.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action.js","sources":["../../src/create-growth-sso-trial/action.ts"],"sourcesContent":["import { cloudApiFactory, tokenServiceFactory } from '../services';\nimport { getContext } from '../services/context';\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 const ctx = getContext();\n\n await trackEvent(ctx, 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","ctx","getContext","trackEvent","license","licenseKey","error"],"mappings":";;;;;;;;;;;AAaA,aAAe,CAAA,OAAO,EACpBA,aAAa,EACa,GAAA;AAC1B,IAAA,MAAMC,QAASC,GAAAA,mBAAAA,EAAAA;AACf,IAAA,MAAM,EAAEC,aAAa,EAAE,GAAG,MAAMC,yBAAoB,CAAA;AAAEH,gBAAAA;AAAO,KAAA,CAAA;AAE7D,IAAA,MAAMI,UAAQ,MAAMF,aAAAA,EAAAA;AACpB,IAAA,IAAI,CAACE,OAAO,EAAA;AACV,QAAA;AACF;IAEA,MAAMC,eAAAA,GAAkB,MAAMC,sBAAgB,CAAA;AAAEN,gBAAAA;KAAUI,EAAAA,OAAAA,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,QAAOY,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,GAAMC,GAAAA,kBAAAA,EAAAA;QAEZ,MAAMC,oBAAAA,CAAWF,GAAKV,EAAAA,eAAAA,EAAiB,yBAA2B,EAAA;AAChEN,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,QAAAA,CAAOY,KAAK,CAACD,CAAAA,CAAAA;AACbX,QAAAA,QAAAA,CAAOoB,KAAK,CACV,2IAAA,CAAA;AAEJ;AACF,CAAA;;;;"}
|
|
@@ -0,0 +1,49 @@
|
|
|
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 { getContext } from '../services/context.mjs';
|
|
8
|
+
import { trackEvent } from '../utils/analytics.mjs';
|
|
9
|
+
|
|
10
|
+
var action = (async ({ strapiVersion })=>{
|
|
11
|
+
const logger = createLogger();
|
|
12
|
+
const { retrieveToken } = await tokenServiceFactory({
|
|
13
|
+
logger
|
|
14
|
+
});
|
|
15
|
+
const token = await retrieveToken();
|
|
16
|
+
if (!token) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
const cloudApiService = await cloudApiFactory({
|
|
20
|
+
logger
|
|
21
|
+
}, token);
|
|
22
|
+
try {
|
|
23
|
+
const { data: config } = await cloudApiService.config();
|
|
24
|
+
if (!config?.featureFlags?.growthSsoTrialEnabled) {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
} catch (e) {
|
|
28
|
+
logger.debug('Failed to get cli config', e);
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
try {
|
|
32
|
+
const response = await cloudApiService.createTrial({
|
|
33
|
+
strapiVersion: strapiVersion || ''
|
|
34
|
+
});
|
|
35
|
+
const ctx = getContext();
|
|
36
|
+
await trackEvent(ctx, cloudApiService, 'didCreateGrowthSsoTrial', {
|
|
37
|
+
strapiVersion: strapiVersion || ''
|
|
38
|
+
});
|
|
39
|
+
return {
|
|
40
|
+
license: response.data?.licenseKey
|
|
41
|
+
};
|
|
42
|
+
} catch (e) {
|
|
43
|
+
logger.debug(e);
|
|
44
|
+
logger.error('We encountered an issue while creating your trial. Please try again in a moment. If the problem persists, contact support for assistance.');
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
export { action as default };
|
|
49
|
+
//# 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 { getContext } from '../services/context';\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 const ctx = getContext();\n\n await trackEvent(ctx, 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","ctx","getContext","trackEvent","license","licenseKey","error"],"mappings":";;;;;;;;;AAaA,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,GAAMC,GAAAA,UAAAA,EAAAA;QAEZ,MAAMC,UAAAA,CAAWF,GAAKV,EAAAA,eAAAA,EAAiB,yBAA2B,EAAA;AAChEN,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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
2
|
-
declare const _default: (ctx: CLIContext) => Promise<
|
|
1
|
+
import { CLIContext, CreateProjectResponse } from '../types';
|
|
2
|
+
declare const _default: (ctx: CLIContext) => Promise<CreateProjectResponse | undefined>;
|
|
3
3
|
export default _default;
|
|
4
4
|
//# sourceMappingURL=action.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../src/create-project/action.ts"],"names":[],"mappings":"AAGA,OAAO,
|
|
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"}
|
|
@@ -13,6 +13,9 @@ require('cli-progress');
|
|
|
13
13
|
var getProjectNameFromPkg = require('./utils/get-project-name-from-pkg.js');
|
|
14
14
|
var action$1 = require('../login/action.js');
|
|
15
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');
|
|
16
19
|
|
|
17
20
|
async function handleError(ctx, error) {
|
|
18
21
|
const { logger } = ctx;
|
|
@@ -20,39 +23,63 @@ async function handleError(ctx, error) {
|
|
|
20
23
|
if (error instanceof axios.AxiosError) {
|
|
21
24
|
const errorMessage = typeof error.response?.data === 'string' ? error.response.data : null;
|
|
22
25
|
switch(error.response?.status){
|
|
23
|
-
case 403:
|
|
24
|
-
logger.error(errorMessage || 'You do not have permission to create a project. Please contact support for assistance.');
|
|
25
|
-
return;
|
|
26
26
|
case 400:
|
|
27
27
|
logger.error(errorMessage || 'Invalid input. Please check your inputs and try again.');
|
|
28
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;
|
|
29
32
|
case 503:
|
|
30
33
|
logger.error('Strapi Cloud project creation is currently unavailable. Please try again later.');
|
|
31
34
|
return;
|
|
32
35
|
default:
|
|
33
36
|
if (errorMessage) {
|
|
34
37
|
logger.error(errorMessage);
|
|
35
|
-
|
|
38
|
+
throw error;
|
|
36
39
|
}
|
|
37
40
|
break;
|
|
38
41
|
}
|
|
39
42
|
}
|
|
40
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.');
|
|
41
44
|
}
|
|
42
|
-
async function createProject(ctx, cloudApi, projectInput) {
|
|
45
|
+
async function createProject(ctx, cloudApi, projectInput, token, config) {
|
|
43
46
|
const { logger } = ctx;
|
|
44
|
-
const
|
|
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;
|
|
45
52
|
try {
|
|
46
53
|
const { data } = await cloudApi.createProject(projectInput);
|
|
54
|
+
projectData = data;
|
|
47
55
|
await strapiInfoSave.save({
|
|
48
56
|
project: data
|
|
49
57
|
});
|
|
50
|
-
|
|
51
|
-
return data;
|
|
58
|
+
projectSpinner.succeed('Project created successfully!');
|
|
52
59
|
} catch (e) {
|
|
53
|
-
|
|
60
|
+
projectSpinner.fail(`An error occurred while creating the project on Strapi Cloud.`);
|
|
61
|
+
close();
|
|
54
62
|
throw e;
|
|
55
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;
|
|
56
83
|
}
|
|
57
84
|
var action = (async (ctx)=>{
|
|
58
85
|
const { logger } = ctx;
|
|
@@ -77,13 +104,13 @@ var action = (async (ctx)=>{
|
|
|
77
104
|
const projectAnswers = await inquirer.prompt(questions);
|
|
78
105
|
const projectInput = projectAnswersDefaulted(projectAnswers);
|
|
79
106
|
try {
|
|
80
|
-
return await createProject(ctx, cloudApi, projectInput);
|
|
107
|
+
return await createProject(ctx, cloudApi, projectInput, token$1, config);
|
|
81
108
|
} catch (e) {
|
|
82
109
|
if (e instanceof axios.AxiosError && e.response?.status === 401) {
|
|
83
110
|
logger.warn('Oops! Your session has expired. Please log in again to retry.');
|
|
84
111
|
await eraseToken();
|
|
85
112
|
if (await action$1.promptLogin(ctx)) {
|
|
86
|
-
return await createProject(ctx, cloudApi, projectInput);
|
|
113
|
+
return await createProject(ctx, cloudApi, projectInput, token$1, config);
|
|
87
114
|
}
|
|
88
115
|
} else {
|
|
89
116
|
await handleError(ctx, e);
|
|
@@ -1 +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 type { CLIContext, ProjectAnswers, ProjectInput } from '../types';\nimport { cloudApiFactory, local, tokenServiceFactory } from '../services';\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';\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 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 400:\n logger.error(errorMessage || 'Invalid input. Please check your inputs and try again.');\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 return;\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(ctx: CLIContext, cloudApi: any, projectInput: ProjectInput) {\n const { logger } = ctx;\n const spinner = logger.spinner('Setting up your project...').start();\n try {\n const { data } = await cloudApi.createProject(projectInput);\n await local.save({ project: data });\n spinner.succeed('Project created successfully!');\n return data;\n } catch (e: Error | unknown) {\n spinner.fail('An error occurred while creating the project on Strapi Cloud.');\n throw e;\n }\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);\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);\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","spinner","start","local","project","succeed","e","fail","getValidToken","eraseToken","tokenServiceFactory","token","promptLogin","cloudApiFactory","config","projectName","getProjectNameFromPackageJson","defaultAnswersMapper","questionDefaultValuesMapper","name","nodeVersion","getProjectNodeVersionDefault","questions","projectCreation","defaultValues","defaults","getDefaultsFromQuestions","projectAnswersDefaulted","projectAnswers","inquirer","prompt","warn"],"mappings":"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"}
|
|
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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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import inquirer from 'inquirer';
|
|
2
2
|
import { AxiosError } from 'axios';
|
|
3
3
|
import { defaults } from 'lodash/fp';
|
|
4
|
-
import { cloudApiFactory } from '../services/cli-api.mjs';
|
|
4
|
+
import { cloudApiFactory, VERSION } from '../services/cli-api.mjs';
|
|
5
5
|
import { save } from '../services/strapi-info-save.mjs';
|
|
6
6
|
import { tokenServiceFactory } from '../services/token.mjs';
|
|
7
7
|
import 'chalk';
|
|
@@ -11,6 +11,9 @@ import 'cli-progress';
|
|
|
11
11
|
import { getProjectNameFromPackageJson } from './utils/get-project-name-from-pkg.mjs';
|
|
12
12
|
import { promptLogin } from '../login/action.mjs';
|
|
13
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';
|
|
14
17
|
|
|
15
18
|
async function handleError(ctx, error) {
|
|
16
19
|
const { logger } = ctx;
|
|
@@ -18,39 +21,63 @@ async function handleError(ctx, error) {
|
|
|
18
21
|
if (error instanceof AxiosError) {
|
|
19
22
|
const errorMessage = typeof error.response?.data === 'string' ? error.response.data : null;
|
|
20
23
|
switch(error.response?.status){
|
|
21
|
-
case 403:
|
|
22
|
-
logger.error(errorMessage || 'You do not have permission to create a project. Please contact support for assistance.');
|
|
23
|
-
return;
|
|
24
24
|
case 400:
|
|
25
25
|
logger.error(errorMessage || 'Invalid input. Please check your inputs and try again.');
|
|
26
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;
|
|
27
30
|
case 503:
|
|
28
31
|
logger.error('Strapi Cloud project creation is currently unavailable. Please try again later.');
|
|
29
32
|
return;
|
|
30
33
|
default:
|
|
31
34
|
if (errorMessage) {
|
|
32
35
|
logger.error(errorMessage);
|
|
33
|
-
|
|
36
|
+
throw error;
|
|
34
37
|
}
|
|
35
38
|
break;
|
|
36
39
|
}
|
|
37
40
|
}
|
|
38
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.');
|
|
39
42
|
}
|
|
40
|
-
async function createProject(ctx, cloudApi, projectInput) {
|
|
43
|
+
async function createProject(ctx, cloudApi, projectInput, token, config) {
|
|
41
44
|
const { logger } = ctx;
|
|
42
|
-
const
|
|
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;
|
|
43
50
|
try {
|
|
44
51
|
const { data } = await cloudApi.createProject(projectInput);
|
|
52
|
+
projectData = data;
|
|
45
53
|
await save({
|
|
46
54
|
project: data
|
|
47
55
|
});
|
|
48
|
-
|
|
49
|
-
return data;
|
|
56
|
+
projectSpinner.succeed('Project created successfully!');
|
|
50
57
|
} catch (e) {
|
|
51
|
-
|
|
58
|
+
projectSpinner.fail(`An error occurred while creating the project on Strapi Cloud.`);
|
|
59
|
+
close();
|
|
52
60
|
throw e;
|
|
53
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;
|
|
54
81
|
}
|
|
55
82
|
var action = (async (ctx)=>{
|
|
56
83
|
const { logger } = ctx;
|
|
@@ -75,13 +102,13 @@ var action = (async (ctx)=>{
|
|
|
75
102
|
const projectAnswers = await inquirer.prompt(questions);
|
|
76
103
|
const projectInput = projectAnswersDefaulted(projectAnswers);
|
|
77
104
|
try {
|
|
78
|
-
return await createProject(ctx, cloudApi, projectInput);
|
|
105
|
+
return await createProject(ctx, cloudApi, projectInput, token, config);
|
|
79
106
|
} catch (e) {
|
|
80
107
|
if (e instanceof AxiosError && e.response?.status === 401) {
|
|
81
108
|
logger.warn('Oops! Your session has expired. Please log in again to retry.');
|
|
82
109
|
await eraseToken();
|
|
83
110
|
if (await promptLogin(ctx)) {
|
|
84
|
-
return await createProject(ctx, cloudApi, projectInput);
|
|
111
|
+
return await createProject(ctx, cloudApi, projectInput, token, config);
|
|
85
112
|
}
|
|
86
113
|
} else {
|
|
87
114
|
await handleError(ctx, e);
|
|
@@ -1 +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 type { CLIContext, ProjectAnswers, ProjectInput } from '../types';\nimport { cloudApiFactory, local, tokenServiceFactory } from '../services';\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';\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 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 400:\n logger.error(errorMessage || 'Invalid input. Please check your inputs and try again.');\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 return;\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(ctx: CLIContext, cloudApi: any, projectInput: ProjectInput) {\n const { logger } = ctx;\n const spinner = logger.spinner('Setting up your project...').start();\n try {\n const { data } = await cloudApi.createProject(projectInput);\n await local.save({ project: data });\n spinner.succeed('Project created successfully!');\n return data;\n } catch (e: Error | unknown) {\n spinner.fail('An error occurred while creating the project on Strapi Cloud.');\n throw e;\n }\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);\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);\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","spinner","start","local","project","succeed","e","fail","getValidToken","eraseToken","tokenServiceFactory","token","promptLogin","cloudApiFactory","config","projectName","getProjectNameFromPackageJson","defaultAnswersMapper","questionDefaultValuesMapper","name","nodeVersion","getProjectNodeVersionDefault","questions","projectCreation","defaultValues","defaults","getDefaultsFromQuestions","projectAnswersDefaulted","projectAnswers","inquirer","prompt","warn"],"mappings":"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"}
|
|
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":";;;;;;;;;;;;;;;;;AA2BA,eAAeA,WAAAA,CAAYC,GAAe,EAAEC,KAAY,EAAA;IACtD,MAAM,EAAEC,MAAM,EAAE,GAAGF,GAAAA;AACnBE,IAAAA,MAAAA,CAAOC,KAAK,CAACF,KAAAA,CAAAA;AACb,IAAA,IAAIA,iBAAiBG,UAAY,EAAA;QAC/B,MAAMC,YAAAA,GAAe,OAAOJ,KAAAA,CAAMK,QAAQ,EAAEC,IAAS,KAAA,QAAA,GAAWN,KAAMK,CAAAA,QAAQ,CAACC,IAAI,GAAG,IAAA;QACtF,OAAQN,KAAAA,CAAMK,QAAQ,EAAEE,MAAAA;YACtB,KAAK,GAAA;gBACHN,MAAOD,CAAAA,KAAK,CAACI,YAAgB,IAAA,wDAAA,CAAA;AAC7B,gBAAA;YACF,KAAK,GAAA;gBACHH,MAAOD,CAAAA,KAAK,CACVI,YACE,IAAA,wFAAA,CAAA;AAEJ,gBAAA;YACF,KAAK,GAAA;AACHH,gBAAAA,MAAAA,CAAOD,KAAK,CACV,iFAAA,CAAA;AAEF,gBAAA;AACF,YAAA;AACE,gBAAA,IAAII,YAAc,EAAA;AAChBH,oBAAAA,MAAAA,CAAOD,KAAK,CAACI,YAAAA,CAAAA;oBACb,MAAMJ,KAAAA;AACR;AACA,gBAAA;AACJ;AACF;AACAC,IAAAA,MAAAA,CAAOD,KAAK,CACV,6IAAA,CAAA;AAEJ;AAEA,eAAeQ,aAAAA,CACbT,GAAe,EACfU,QAAyB,EACzBC,YAA0B,EAC1BC,KAAa,EACbC,MAAsB,EAAA;IAEtB,MAAM,EAAEX,MAAM,EAAE,GAAGF,GAAAA;AACnB,IAAA,MAAMc,cAAiBZ,GAAAA,MAAAA,CAAOa,OAAO,CAAC,8BAA8BC,KAAK,EAAA;AACzEF,IAAAA,cAAAA,CAAeG,MAAM,GAAG,CAAA;AACxB,IAAA,MAAMC,sBAAsBC,0BAA2BnB,CAAAA,GAAAA,CAAAA;AACvD,IAAA,MAAM,EAAEoB,0BAA0B,EAAEC,KAAK,EAAE,GAAGH,mBAC5C,CAAA,CAAA,EAAGI,SAAUC,CAAAA,UAAU,CAAC,CAAC,EAAEC,QAAQ,cAAc,CAAC,EAClDZ,KACAC,EAAAA,MAAAA,CAAAA;IAEF,IAAIY,WAAAA;IACJ,IAAI;AACF,QAAA,MAAM,EAAElB,IAAI,EAAE,GAAG,MAAMG,QAAAA,CAASD,aAAa,CAACE,YAAAA,CAAAA;QAC9Cc,WAAclB,GAAAA,IAAAA;QACd,MAAMmB,IAAU,CAAC;YAAEC,OAASpB,EAAAA;AAAK,SAAA,CAAA;AACjCO,QAAAA,cAAAA,CAAec,OAAO,CAAC,+BAAA,CAAA;AACzB,KAAA,CAAE,OAAOC,CAAoB,EAAA;AAC3Bf,QAAAA,cAAAA,CAAegB,IAAI,CAAC,CAAC,6DAA6D,CAAC,CAAA;AACnFT,QAAAA,KAAAA,EAAAA;QACA,MAAMQ,CAAAA;AACR;AACA,IAAA,IAAIhB,MAAOkB,CAAAA,YAAY,CAACC,2BAA2B,EAAE;AACnD,QAAA,MAAMC,kBAAqB/B,GAAAA,MAAAA,CACxBa,OAAO,CAAC,4DACRC,KAAK,EAAA;AACRiB,QAAAA,kBAAAA,CAAmBhB,MAAM,GAAG,CAAA;QAC5B,IAAI;YACF,MAAMG,0BAAAA,CAA2BK,YAAYS,uBAAuB,CAAA;AACpED,YAAAA,kBAAAA,CAAmBL,OAAO,CAAC,qCAAA,CAAA;AAC7B,SAAA,CAAE,OAAOC,CAAoB,EAAA;AAC3BI,YAAAA,kBAAAA,CAAmBH,IAAI,CACrB,CAAC,mEAAmE,CAAC,CAAA;AAEvE,YAAA,MAAMK,0BAA0BC,8BAA+B,CAAA;AAC7DC,gBAAAA,WAAAA,EAAaZ,YAAYa,IAAI;AAC7BC,gBAAAA,SAAAA,EAAW1B,OAAO2B,eAAe,CAACC,MAAM,CAACC,yBAAyB,CAACH,SAAS;AAC5EI,gBAAAA,UAAAA,EAAY9B,OAAO2B,eAAe,CAACC,MAAM,CAACC,yBAAyB,CAACC;AACtE,aAAA,CAAA;YACAzC,MAAO0C,CAAAA,GAAG,CAACC,+BAAgCV,CAAAA,uBAAAA,CAAAA,CAAAA;AAC3C,YAAA;AACF;AACF;AACAd,IAAAA,KAAAA,EAAAA;IACA,OAAOI,WAAAA;AACT;AAEA,aAAe,CAAA,OAAOzB,GAAAA,GAAAA;IACpB,MAAM,EAAEE,MAAM,EAAE,GAAGF,GAAAA;AACnB,IAAA,MAAM,EAAE8C,aAAa,EAAEC,UAAU,EAAE,GAAG,MAAMC,mBAAoBhD,CAAAA,GAAAA,CAAAA;IAEhE,MAAMY,KAAAA,GAAQ,MAAMkC,aAAAA,CAAc9C,GAAKiD,EAAAA,WAAAA,CAAAA;AACvC,IAAA,IAAI,CAACrC,KAAO,EAAA;AACV,QAAA;AACF;IAEA,MAAMF,QAAAA,GAAW,MAAMwC,eAAAA,CAAgBlD,GAAKY,EAAAA,KAAAA,CAAAA;AAC5C,IAAA,MAAM,EAAEL,IAAMM,EAAAA,MAAM,EAAE,GAAG,MAAMH,SAASG,MAAM,EAAA;IAC9C,MAAMwB,WAAAA,GAAc,MAAMc,6BAA8BnD,CAAAA,GAAAA,CAAAA;AAExD,IAAA,MAAMoD,uBAAuBC,2BAA4B,CAAA;QACvDf,IAAMD,EAAAA,WAAAA;QACNiB,WAAaC,EAAAA;AACf,KAAA,CAAA;AACA,IAAA,MAAMC,SAAYJ,GAAAA,oBAAAA,CAAqBvC,MAAO2B,CAAAA,eAAe,CAACgB,SAAS,CAAA;AACvE,IAAA,MAAMC,aAAgB,GAAA;QACpB,GAAG5C,MAAAA,CAAO2B,eAAe,CAACkB,QAAQ;AAClC,QAAA,GAAGC,yBAAyBH,SAAU;AACxC,KAAA;AAEA,IAAA,MAAMI,0BAA0BF,QAASD,CAAAA,aAAAA,CAAAA;AACzC,IAAA,MAAMI,cAAiB,GAAA,MAAMC,QAASC,CAAAA,MAAM,CAAiBP,SAAAA,CAAAA;AAE7D,IAAA,MAAM7C,eAA6BiD,uBAAwBC,CAAAA,cAAAA,CAAAA;IAE3D,IAAI;AACF,QAAA,OAAO,MAAMpD,aAAAA,CAAcT,GAAKU,EAAAA,QAAAA,EAAUC,cAAcC,KAAOC,EAAAA,MAAAA,CAAAA;AACjE,KAAA,CAAE,OAAOgB,CAAoB,EAAA;AAC3B,QAAA,IAAIA,aAAazB,UAAcyB,IAAAA,CAAAA,CAAEvB,QAAQ,EAAEE,WAAW,GAAK,EAAA;AACzDN,YAAAA,MAAAA,CAAO8D,IAAI,CAAC,+DAAA,CAAA;YACZ,MAAMjB,UAAAA,EAAAA;YACN,IAAI,MAAME,YAAYjD,GAAM,CAAA,EAAA;AAC1B,gBAAA,OAAO,MAAMS,aAAAA,CAAcT,GAAKU,EAAAA,QAAAA,EAAUC,cAAcC,KAAOC,EAAAA,MAAAA,CAAAA;AACjE;SACK,MAAA;AACL,YAAA,MAAMd,YAAYC,GAAK6B,EAAAA,CAAAA,CAAAA;AACzB;AACF;AACF,CAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../src/deploy-project/action.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,UAAU,EAKX,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../src/deploy-project/action.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,UAAU,EAKX,MAAM,UAAU,CAAC;AAqBlB,UAAU,UAAU;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;8BAiO0B,UAAU,QAAQ,UAAU;AAAvD,wBA8IE"}
|