@strapi/cloud-cli 5.37.0 → 5.38.0
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.js.map +1 -1
- package/dist/bin.mjs.map +1 -1
- package/dist/cloud/command.js.map +1 -1
- package/dist/cloud/command.mjs.map +1 -1
- package/dist/config/api.js.map +1 -1
- package/dist/config/api.mjs.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.js.map +1 -1
- package/dist/create-growth-sso-trial/action.mjs.map +1 -1
- package/dist/create-project/action.js.map +1 -1
- package/dist/create-project/action.mjs.map +1 -1
- package/dist/create-project/command.js.map +1 -1
- package/dist/create-project/command.mjs.map +1 -1
- package/dist/create-project/index.js.map +1 -1
- package/dist/create-project/index.mjs.map +1 -1
- package/dist/create-project/utils/get-project-name-from-pkg.js.map +1 -1
- package/dist/create-project/utils/get-project-name-from-pkg.mjs.map +1 -1
- package/dist/create-project/utils/project-questions.utils.js.map +1 -1
- package/dist/create-project/utils/project-questions.utils.mjs.map +1 -1
- package/dist/deploy-project/action.js.map +1 -1
- package/dist/deploy-project/action.mjs.map +1 -1
- package/dist/deploy-project/command.js.map +1 -1
- package/dist/deploy-project/command.mjs.map +1 -1
- package/dist/deploy-project/index.js.map +1 -1
- package/dist/deploy-project/index.mjs.map +1 -1
- package/dist/environment/command.js.map +1 -1
- package/dist/environment/command.mjs.map +1 -1
- package/dist/environment/link/action.js.map +1 -1
- package/dist/environment/link/action.mjs.map +1 -1
- package/dist/environment/link/command.js.map +1 -1
- package/dist/environment/link/command.mjs.map +1 -1
- package/dist/environment/link/index.js.map +1 -1
- package/dist/environment/link/index.mjs.map +1 -1
- package/dist/environment/list/action.js.map +1 -1
- package/dist/environment/list/action.mjs.map +1 -1
- package/dist/environment/list/command.js.map +1 -1
- package/dist/environment/list/command.mjs.map +1 -1
- package/dist/environment/list/index.js.map +1 -1
- package/dist/environment/list/index.mjs.map +1 -1
- package/dist/index.js +22 -22
- package/dist/index.js.map +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/link/action.js.map +1 -1
- package/dist/link/action.mjs.map +1 -1
- package/dist/link/command.js.map +1 -1
- package/dist/link/command.mjs.map +1 -1
- package/dist/link/index.js.map +1 -1
- package/dist/link/index.mjs.map +1 -1
- package/dist/list-projects/action.js.map +1 -1
- package/dist/list-projects/action.mjs.map +1 -1
- package/dist/list-projects/command.js.map +1 -1
- package/dist/list-projects/command.mjs.map +1 -1
- package/dist/list-projects/index.js.map +1 -1
- package/dist/list-projects/index.mjs.map +1 -1
- package/dist/login/action.js.map +1 -1
- package/dist/login/action.mjs.map +1 -1
- package/dist/login/command.js.map +1 -1
- package/dist/login/command.mjs.map +1 -1
- package/dist/login/index.js.map +1 -1
- package/dist/login/index.mjs.map +1 -1
- package/dist/logout/action.js.map +1 -1
- package/dist/logout/action.mjs.map +1 -1
- package/dist/logout/command.js.map +1 -1
- package/dist/logout/command.mjs.map +1 -1
- package/dist/logout/index.js.map +1 -1
- package/dist/logout/index.mjs.map +1 -1
- package/dist/package.json.js +2 -120
- package/dist/package.json.js.map +1 -1
- package/dist/package.json.mjs +3 -102
- package/dist/package.json.mjs.map +1 -1
- package/dist/services/build-logs.js.map +1 -1
- package/dist/services/build-logs.mjs.map +1 -1
- package/dist/services/cli-api.js.map +1 -1
- package/dist/services/cli-api.mjs.map +1 -1
- package/dist/services/context.js.map +1 -1
- package/dist/services/context.mjs.map +1 -1
- package/dist/services/logger.js.map +1 -1
- package/dist/services/logger.mjs.map +1 -1
- package/dist/services/notification.js.map +1 -1
- package/dist/services/notification.mjs.map +1 -1
- package/dist/services/strapi-info-save.js.map +1 -1
- package/dist/services/strapi-info-save.mjs.map +1 -1
- package/dist/services/token.js.map +1 -1
- package/dist/services/token.mjs.map +1 -1
- package/dist/utils/analytics.js.map +1 -1
- package/dist/utils/analytics.mjs.map +1 -1
- package/dist/utils/compress-files.js.map +1 -1
- package/dist/utils/compress-files.mjs.map +1 -1
- package/dist/utils/error-message-factories.js.map +1 -1
- package/dist/utils/error-message-factories.mjs.map +1 -1
- package/dist/utils/get-local-config.js.map +1 -1
- package/dist/utils/get-local-config.mjs.map +1 -1
- package/dist/utils/helpers.js.map +1 -1
- package/dist/utils/helpers.mjs.map +1 -1
- package/dist/utils/pkg.js.map +1 -1
- package/dist/utils/pkg.mjs.map +1 -1
- package/package.json +4 -4
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 { 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,
|
|
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,IAAAA,GAAOC,OAAAA,CAAQD,IAAI,EAAEE,OAAAA,GAAU,IAAIC,iBAAAA,EAAS,EAAA;;AAE1ED,IAAAA,OAAAA,CAAQE,wBAAwB,CAAC,KAAA,CAAA,CAAOC,kBAAkB,CAAC,IAAA,CAAA;;IAG3DH,OAAAA,CAAQI,UAAU,CAAC,YAAA,EAAc,0BAAA,CAAA;IACjCJ,OAAAA,CAAQK,cAAc,CAAC,gBAAA,EAAkB,0BAAA,CAAA;IAEzC,MAAMC,GAAAA,GAAMP,QAAQO,GAAG,EAAA;IAEvB,MAAMC,QAAAA,GAAWT,IAAAA,CAAKU,QAAQ,CAAC,SAAA,CAAA;IAC/B,MAAMC,SAAAA,GAAYX,IAAAA,CAAKU,QAAQ,CAAC,UAAA,CAAA;AAEhC,IAAA,MAAME,WAASC,mBAAAA,CAAa;QAAEC,KAAAA,EAAOL,QAAAA;QAAUM,MAAAA,EAAQJ,SAAAA;QAAWK,SAAAA,EAAW;AAAM,KAAA,CAAA;IAEnFC,kBAAAA,CAAW;QACTC,IAAAA,EAAM;YAAEC,EAAAA,EAAI;AAAG,SAAA;AACfX,QAAAA,GAAAA;AACAI,gBAAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAMQ,GAAAA,GAAkBC,kBAAAA,EAAAA;IAExBC,8BAAAA,CAAyB;AAAEpB,QAAAA,OAAAA;AAASkB,QAAAA,GAAAA;AAAKpB,QAAAA;AAAK,KAAA,CAAA;AAChD;AAEA,SAASuB,sBAAsBvB,IAAAA,GAAOC,OAAAA,CAAQD,IAAI,EAAEE,OAAAA,GAAU,IAAIC,iBAAAA,EAAS,EAAA;AACzEJ,IAAAA,sBAAAA,CAAuBC,IAAAA,EAAME,OAAAA,CAAAA;AAC7BA,IAAAA,OAAAA,CAAQsB,KAAK,CAACxB,IAAAA,CAAAA;AAChB;;;;"}
|
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 { 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,
|
|
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,IAAAA,GAAOC,OAAAA,CAAQD,IAAI,EAAEE,OAAAA,GAAU,IAAIC,OAAAA,EAAS,EAAA;;AAE1ED,IAAAA,OAAAA,CAAQE,wBAAwB,CAAC,KAAA,CAAA,CAAOC,kBAAkB,CAAC,IAAA,CAAA;;IAG3DH,OAAAA,CAAQI,UAAU,CAAC,YAAA,EAAc,0BAAA,CAAA;IACjCJ,OAAAA,CAAQK,cAAc,CAAC,gBAAA,EAAkB,0BAAA,CAAA;IAEzC,MAAMC,GAAAA,GAAMP,QAAQO,GAAG,EAAA;IAEvB,MAAMC,QAAAA,GAAWT,IAAAA,CAAKU,QAAQ,CAAC,SAAA,CAAA;IAC/B,MAAMC,SAAAA,GAAYX,IAAAA,CAAKU,QAAQ,CAAC,UAAA,CAAA;AAEhC,IAAA,MAAME,SAASC,YAAAA,CAAa;QAAEC,KAAAA,EAAOL,QAAAA;QAAUM,MAAAA,EAAQJ,SAAAA;QAAWK,SAAAA,EAAW;AAAM,KAAA,CAAA;IAEnFC,UAAAA,CAAW;QACTC,IAAAA,EAAM;YAAEC,EAAAA,EAAI;AAAG,SAAA;AACfX,QAAAA,GAAAA;AACAI,QAAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAMQ,GAAAA,GAAkBC,UAAAA,EAAAA;IAExBC,wBAAAA,CAAyB;AAAEpB,QAAAA,OAAAA;AAASkB,QAAAA,GAAAA;AAAKpB,QAAAA;AAAK,KAAA,CAAA;AAChD;AAEA,SAASuB,sBAAsBvB,IAAAA,GAAOC,OAAAA,CAAQD,IAAI,EAAEE,OAAAA,GAAU,IAAIC,OAAAA,EAAS,EAAA;AACzEJ,IAAAA,sBAAAA,CAAuBC,IAAAA,EAAME,OAAAA,CAAAA;AAC7BA,IAAAA,OAAAA,CAAQsB,KAAK,CAACxB,IAAAA,CAAAA;AAChB;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.js","sources":["../../src/cloud/command.ts"],"sourcesContent":["import { Command } from 'commander';\nimport { runAction } from '../utils/helpers';\nimport listAction from '../environment/list/action';\n\nexport function defineCloudNamespace(command: Command, ctx: unknown): Command {\n const cloud = command.command('cloud').description('Manage Strapi Cloud projects');\n\n // Define cloud namespace aliases:\n cloud\n .command('environments')\n .description('Alias for cloud environment list')\n .action(() => runAction('list', listAction)(ctx));\n return cloud;\n}\n"],"names":["defineCloudNamespace","command","ctx","cloud","description","action","runAction","listAction"],"mappings":";;;;;AAIO,SAASA,oBAAAA,CAAqBC,OAAgB,EAAEC,GAAY,EAAA;AACjE,IAAA,MAAMC,QAAQF,
|
|
1
|
+
{"version":3,"file":"command.js","sources":["../../src/cloud/command.ts"],"sourcesContent":["import { Command } from 'commander';\nimport { runAction } from '../utils/helpers';\nimport listAction from '../environment/list/action';\n\nexport function defineCloudNamespace(command: Command, ctx: unknown): Command {\n const cloud = command.command('cloud').description('Manage Strapi Cloud projects');\n\n // Define cloud namespace aliases:\n cloud\n .command('environments')\n .description('Alias for cloud environment list')\n .action(() => runAction('list', listAction)(ctx));\n return cloud;\n}\n"],"names":["defineCloudNamespace","command","ctx","cloud","description","action","runAction","listAction"],"mappings":";;;;;AAIO,SAASA,oBAAAA,CAAqBC,OAAgB,EAAEC,GAAY,EAAA;AACjE,IAAA,MAAMC,QAAQF,OAAAA,CAAQA,OAAO,CAAC,OAAA,CAAA,CAASG,WAAW,CAAC,8BAAA,CAAA;;IAGnDD,KAAAA,CACGF,OAAO,CAAC,cAAA,CAAA,CACRG,WAAW,CAAC,kCAAA,CAAA,CACZC,MAAM,CAAC,IAAMC,iBAAAA,CAAU,MAAA,EAAQC,MAAAA,CAAAA,CAAYL,GAAAA,CAAAA,CAAAA;IAC9C,OAAOC,KAAAA;AACT;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.mjs","sources":["../../src/cloud/command.ts"],"sourcesContent":["import { Command } from 'commander';\nimport { runAction } from '../utils/helpers';\nimport listAction from '../environment/list/action';\n\nexport function defineCloudNamespace(command: Command, ctx: unknown): Command {\n const cloud = command.command('cloud').description('Manage Strapi Cloud projects');\n\n // Define cloud namespace aliases:\n cloud\n .command('environments')\n .description('Alias for cloud environment list')\n .action(() => runAction('list', listAction)(ctx));\n return cloud;\n}\n"],"names":["defineCloudNamespace","command","ctx","cloud","description","action","runAction","listAction"],"mappings":";;;AAIO,SAASA,oBAAAA,CAAqBC,OAAgB,EAAEC,GAAY,EAAA;AACjE,IAAA,MAAMC,QAAQF,
|
|
1
|
+
{"version":3,"file":"command.mjs","sources":["../../src/cloud/command.ts"],"sourcesContent":["import { Command } from 'commander';\nimport { runAction } from '../utils/helpers';\nimport listAction from '../environment/list/action';\n\nexport function defineCloudNamespace(command: Command, ctx: unknown): Command {\n const cloud = command.command('cloud').description('Manage Strapi Cloud projects');\n\n // Define cloud namespace aliases:\n cloud\n .command('environments')\n .description('Alias for cloud environment list')\n .action(() => runAction('list', listAction)(ctx));\n return cloud;\n}\n"],"names":["defineCloudNamespace","command","ctx","cloud","description","action","runAction","listAction"],"mappings":";;;AAIO,SAASA,oBAAAA,CAAqBC,OAAgB,EAAEC,GAAY,EAAA;AACjE,IAAA,MAAMC,QAAQF,OAAAA,CAAQA,OAAO,CAAC,OAAA,CAAA,CAASG,WAAW,CAAC,8BAAA,CAAA;;IAGnDD,KAAAA,CACGF,OAAO,CAAC,cAAA,CAAA,CACRG,WAAW,CAAC,kCAAA,CAAA,CACZC,MAAM,CAAC,IAAMC,SAAAA,CAAU,MAAA,EAAQC,MAAAA,CAAAA,CAAYL,GAAAA,CAAAA,CAAAA;IAC9C,OAAOC,KAAAA;AACT;;;;"}
|
package/dist/config/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sources":["../../src/config/api.ts"],"sourcesContent":["import { env } from '@strapi/utils';\n\nexport const apiConfig = {\n apiBaseUrl: env('STRAPI_CLI_CLOUD_API', 'https://cloud-cli-api.strapi.io'),\n dashboardBaseUrl: env('STRAPI_CLI_CLOUD_DASHBOARD', 'https://cloud.strapi.io'),\n};\n"],"names":["apiConfig","apiBaseUrl","env","dashboardBaseUrl"],"mappings":";;;;MAEaA,
|
|
1
|
+
{"version":3,"file":"api.js","sources":["../../src/config/api.ts"],"sourcesContent":["import { env } from '@strapi/utils';\n\nexport const apiConfig = {\n apiBaseUrl: env('STRAPI_CLI_CLOUD_API', 'https://cloud-cli-api.strapi.io'),\n dashboardBaseUrl: env('STRAPI_CLI_CLOUD_DASHBOARD', 'https://cloud.strapi.io'),\n};\n"],"names":["apiConfig","apiBaseUrl","env","dashboardBaseUrl"],"mappings":";;;;MAEaA,SAAAA,GAAY;AACvBC,IAAAA,UAAAA,EAAYC,UAAI,sBAAA,EAAwB,iCAAA,CAAA;AACxCC,IAAAA,gBAAAA,EAAkBD,UAAI,4BAAA,EAA8B,yBAAA;AACtD;;;;"}
|
package/dist/config/api.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.mjs","sources":["../../src/config/api.ts"],"sourcesContent":["import { env } from '@strapi/utils';\n\nexport const apiConfig = {\n apiBaseUrl: env('STRAPI_CLI_CLOUD_API', 'https://cloud-cli-api.strapi.io'),\n dashboardBaseUrl: env('STRAPI_CLI_CLOUD_DASHBOARD', 'https://cloud.strapi.io'),\n};\n"],"names":["apiConfig","apiBaseUrl","env","dashboardBaseUrl"],"mappings":";;MAEaA,
|
|
1
|
+
{"version":3,"file":"api.mjs","sources":["../../src/config/api.ts"],"sourcesContent":["import { env } from '@strapi/utils';\n\nexport const apiConfig = {\n apiBaseUrl: env('STRAPI_CLI_CLOUD_API', 'https://cloud-cli-api.strapi.io'),\n dashboardBaseUrl: env('STRAPI_CLI_CLOUD_DASHBOARD', 'https://cloud.strapi.io'),\n};\n"],"names":["apiConfig","apiBaseUrl","env","dashboardBaseUrl"],"mappings":";;MAEaA,SAAAA,GAAY;AACvBC,IAAAA,UAAAA,EAAYC,IAAI,sBAAA,EAAwB,iCAAA,CAAA;AACxCC,IAAAA,gBAAAA,EAAkBD,IAAI,4BAAA,EAA8B,yBAAA;AACtD;;;;"}
|
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 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,
|
|
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,eAAAA,GAAkB,gBAAA;AAEjB,MAAMC,kBAAkB;AAO/B,eAAeC,qBAAqBC,aAAqB,EAAA;IACvD,IAAI;AACF,QAAA,MAAMC,MAAAA,GAAS,MAAMC,GAAAA,CAAIC,KAAK,CAACH,aAAAA,CAAAA;AAC/B,QAAA,OAAOC,OAAOG,WAAW,EAAA;AAC3B,IAAA,CAAA,CAAE,OAAOC,CAAAA,EAAG;QACV,OAAO,KAAA;AACT,IAAA;AACF;AAEA;AACO,eAAeC,iBAAAA,GAAAA;AACpB,IAAA,MAAMC,cAAcC,IAAAA,CAAKC,IAAI,CAACC,EAAAA,CAAGC,MAAM,EAAA,EAAId,eAAAA,CAAAA;IAC3C,MAAMK,GAAAA,CAAIU,SAAS,CAACL,WAAAA,CAAAA;IACpB,OAAOA,WAAAA;AACT;AAEA,eAAeM,aAAAA,GAAAA;IACb,MAAMC,UAAAA,GAAaC,WAAAA,CAAYlB,eAAAA,CAAAA,CAAiBiB,UAAU,EAAA;IAC1D,MAAME,UAAAA,GAAaF,UAAAA,CAAWG,IAAI,CAAClB,oBAAAA,CAAAA;AAEnC,IAAA,IAAI,CAACiB,UAAAA,EAAY;AACf,QAAA,MAAMd,GAAAA,CAAIU,SAAS,CAACE,UAAU,CAAC,CAAA,CAAE,CAAA;QACjC,OAAOA,UAAU,CAAC,CAAA,CAAE;AACtB,IAAA;IACA,OAAOE,UAAAA;AACT;AAEO,eAAeE,cAAAA,GAAAA;AACpB,IAAA,MAAMF,aAAa,MAAMH,aAAAA,EAAAA;AACzB,IAAA,MAAMM,cAAAA,GAAiBX,IAAAA,CAAKC,IAAI,CAACO,UAAAA,EAAYlB,eAAAA,CAAAA;IAC7C,MAAMI,GAAAA,CAAIkB,UAAU,CAACD,cAAAA,CAAAA;IACrB,IAAI;AACF,QAAA,OAAO,MAAMjB,GAAAA,CAAImB,QAAQ,CAACF,cAAAA,EAAgB;YAAEG,QAAAA,EAAU,MAAA;YAAQC,MAAAA,EAAQ;AAAK,SAAA,CAAA;AAC7E,IAAA,CAAA,CAAE,OAAOlB,CAAAA,EAAG;AACV,QAAA,OAAO,EAAC;AACV,IAAA;AACF;AAEO,eAAemB,gBAAgBC,IAAiB,EAAA;AACrD,IAAA,MAAMT,aAAa,MAAMH,aAAAA,EAAAA;AACzB,IAAA,MAAMM,cAAAA,GAAiBX,IAAAA,CAAKC,IAAI,CAACO,UAAAA,EAAYlB,eAAAA,CAAAA;AAC7C,IAAA,MAAMI,GAAAA,CAAIwB,SAAS,CAACP,cAAAA,EAAgBM,IAAAA,EAAM;QAAEH,QAAAA,EAAU,MAAA;QAAQK,MAAAA,EAAQ,CAAA;QAAGC,IAAAA,EAAM;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 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,
|
|
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,eAAAA,GAAkB,gBAAA;AAEjB,MAAMC,kBAAkB;AAO/B,eAAeC,qBAAqBC,aAAqB,EAAA;IACvD,IAAI;AACF,QAAA,MAAMC,MAAAA,GAAS,MAAMC,YAAAA,CAAIC,KAAK,CAACH,aAAAA,CAAAA;AAC/B,QAAA,OAAOC,OAAOG,WAAW,EAAA;AAC3B,IAAA,CAAA,CAAE,OAAOC,CAAAA,EAAG;QACV,OAAO,KAAA;AACT,IAAA;AACF;AAEA;AACO,eAAeC,iBAAAA,GAAAA;AACpB,IAAA,MAAMC,cAAcC,aAAAA,CAAKC,IAAI,CAACC,EAAAA,CAAGC,MAAM,EAAA,EAAId,eAAAA,CAAAA;IAC3C,MAAMK,YAAAA,CAAIU,SAAS,CAACL,WAAAA,CAAAA;IACpB,OAAOA,WAAAA;AACT;AAEA,eAAeM,aAAAA,GAAAA;IACb,MAAMC,UAAAA,GAAaC,WAAAA,CAAYlB,eAAAA,CAAAA,CAAiBiB,UAAU,EAAA;IAC1D,MAAME,UAAAA,GAAaF,UAAAA,CAAWG,IAAI,CAAClB,oBAAAA,CAAAA;AAEnC,IAAA,IAAI,CAACiB,UAAAA,EAAY;AACf,QAAA,MAAMd,YAAAA,CAAIU,SAAS,CAACE,UAAU,CAAC,CAAA,CAAE,CAAA;QACjC,OAAOA,UAAU,CAAC,CAAA,CAAE;AACtB,IAAA;IACA,OAAOE,UAAAA;AACT;AAEO,eAAeE,cAAAA,GAAAA;AACpB,IAAA,MAAMF,aAAa,MAAMH,aAAAA,EAAAA;AACzB,IAAA,MAAMM,cAAAA,GAAiBX,aAAAA,CAAKC,IAAI,CAACO,UAAAA,EAAYlB,eAAAA,CAAAA;IAC7C,MAAMI,YAAAA,CAAIkB,UAAU,CAACD,cAAAA,CAAAA;IACrB,IAAI;AACF,QAAA,OAAO,MAAMjB,YAAAA,CAAImB,QAAQ,CAACF,cAAAA,EAAgB;YAAEG,QAAAA,EAAU,MAAA;YAAQC,MAAAA,EAAQ;AAAK,SAAA,CAAA;AAC7E,IAAA,CAAA,CAAE,OAAOlB,CAAAA,EAAG;AACV,QAAA,OAAO,EAAC;AACV,IAAA;AACF;AAEO,eAAemB,gBAAgBC,IAAiB,EAAA;AACrD,IAAA,MAAMT,aAAa,MAAMH,aAAAA,EAAAA;AACzB,IAAA,MAAMM,cAAAA,GAAiBX,aAAAA,CAAKC,IAAI,CAACO,UAAAA,EAAYlB,eAAAA,CAAAA;AAC7C,IAAA,MAAMI,YAAAA,CAAIwB,SAAS,CAACP,cAAAA,EAAgBM,IAAAA,EAAM;QAAEH,QAAAA,EAAU,MAAA;QAAQK,MAAAA,EAAQ,CAAA;QAAGC,IAAAA,EAAM;AAAM,KAAA,CAAA;AACvF;;;;"}
|
|
@@ -1 +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,
|
|
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,QAAAA,GAASC,mBAAAA,EAAAA;AACf,IAAA,MAAM,EAAEC,aAAa,EAAE,GAAG,MAAMC,yBAAAA,CAAoB;AAAEH,gBAAAA;AAAO,KAAA,CAAA;AAE7D,IAAA,MAAMI,UAAQ,MAAMF,aAAAA,EAAAA;AACpB,IAAA,IAAI,CAACE,OAAAA,EAAO;AACV,QAAA;AACF,IAAA;IAEA,MAAMC,eAAAA,GAAkB,MAAMC,sBAAAA,CAAgB;AAAEN,gBAAAA;KAAO,EAAGI,OAAAA,CAAAA;IAE1D,IAAI;AACF,QAAA,MAAM,EAAEG,IAAAA,EAAMC,MAAM,EAAE,GAAG,MAAMH,gBAAgBG,MAAM,EAAA;QACrD,IAAI,CAACA,MAAAA,EAAQC,YAAAA,EAAcC,qBAAAA,EAAuB;AAChD,YAAA;AACF,QAAA;AACF,IAAA,CAAA,CAAE,OAAOC,CAAAA,EAAY;QACnBX,QAAAA,CAAOY,KAAK,CAAC,0BAAA,EAA4BD,CAAAA,CAAAA;AACzC,QAAA;AACF,IAAA;IAEA,IAAI;AACF,QAAA,MAAME,QAAAA,GAAW,MAAMR,eAAAA,CAAgBS,WAAW,CAAC;AAAEf,YAAAA,aAAAA,EAAeA,aAAAA,IAAiB;AAAG,SAAA,CAAA;AAExF,QAAA,MAAMgB,GAAAA,GAAMC,kBAAAA,EAAAA;QAEZ,MAAMC,oBAAAA,CAAWF,GAAAA,EAAKV,eAAAA,EAAiB,yBAAA,EAA2B;AAChEN,YAAAA,aAAAA,EAAeA,aAAAA,IAAiB;AAClC,SAAA,CAAA;QAEA,OAAO;YAAEmB,OAAAA,EAASL,QAAAA,CAASN,IAAI,EAAEY;AAAW,SAAA;AAC9C,IAAA,CAAA,CAAE,OAAOR,CAAAA,EAAoB;AAC3BX,QAAAA,QAAAA,CAAOY,KAAK,CAACD,CAAAA,CAAAA;AACbX,QAAAA,QAAAA,CAAOoB,KAAK,CACV,2IAAA,CAAA;AAEJ,IAAA;AACF,CAAA;;;;"}
|
|
@@ -1 +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,
|
|
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,MAAAA,GAASC,YAAAA,EAAAA;AACf,IAAA,MAAM,EAAEC,aAAa,EAAE,GAAG,MAAMC,mBAAAA,CAAoB;AAAEH,QAAAA;AAAO,KAAA,CAAA;AAE7D,IAAA,MAAMI,QAAQ,MAAMF,aAAAA,EAAAA;AACpB,IAAA,IAAI,CAACE,KAAAA,EAAO;AACV,QAAA;AACF,IAAA;IAEA,MAAMC,eAAAA,GAAkB,MAAMC,eAAAA,CAAgB;AAAEN,QAAAA;KAAO,EAAGI,KAAAA,CAAAA;IAE1D,IAAI;AACF,QAAA,MAAM,EAAEG,IAAAA,EAAMC,MAAM,EAAE,GAAG,MAAMH,gBAAgBG,MAAM,EAAA;QACrD,IAAI,CAACA,MAAAA,EAAQC,YAAAA,EAAcC,qBAAAA,EAAuB;AAChD,YAAA;AACF,QAAA;AACF,IAAA,CAAA,CAAE,OAAOC,CAAAA,EAAY;QACnBX,MAAAA,CAAOY,KAAK,CAAC,0BAAA,EAA4BD,CAAAA,CAAAA;AACzC,QAAA;AACF,IAAA;IAEA,IAAI;AACF,QAAA,MAAME,QAAAA,GAAW,MAAMR,eAAAA,CAAgBS,WAAW,CAAC;AAAEf,YAAAA,aAAAA,EAAeA,aAAAA,IAAiB;AAAG,SAAA,CAAA;AAExF,QAAA,MAAMgB,GAAAA,GAAMC,UAAAA,EAAAA;QAEZ,MAAMC,UAAAA,CAAWF,GAAAA,EAAKV,eAAAA,EAAiB,yBAAA,EAA2B;AAChEN,YAAAA,aAAAA,EAAeA,aAAAA,IAAiB;AAClC,SAAA,CAAA;QAEA,OAAO;YAAEmB,OAAAA,EAASL,QAAAA,CAASN,IAAI,EAAEY;AAAW,SAAA;AAC9C,IAAA,CAAA,CAAE,OAAOR,CAAAA,EAAoB;AAC3BX,QAAAA,MAAAA,CAAOY,KAAK,CAACD,CAAAA,CAAAA;AACbX,QAAAA,MAAAA,CAAOoB,KAAK,CACV,2IAAA,CAAA;AAEJ,IAAA;AACF,CAAA;;;;"}
|
|
@@ -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 {\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
|
+
{"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 +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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"}
|
|
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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"}
|
|
@@ -1 +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,
|
|
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,IACD,MAAMA,OAAAA,GAA8B,CAAC,EAAEC,GAAG,EAAE,GAAA;AAC1C,IAAA,OAAOC,wBAAc,sBAAA,CAAA,CAClBC,WAAW,CAAC,+BAAA,CAAA,CACZC,MAAM,CAAC,aAAA,EAAe,yCAAA,CAAA,CACtBA,MAAM,CAAC,gBAAgB,oBAAA,CAAA,CACvBC,MAAM,CAAC,IAAMC,iBAAAA,CAAU,wBAAwBD,MAAAA,CAAAA,CAAQJ,GAAAA,CAAAA,CAAAA;AAC5D;;;;"}
|
|
@@ -1 +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,
|
|
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,IACD,MAAMA,OAAAA,GAA8B,CAAC,EAAEC,GAAG,EAAE,GAAA;AAC1C,IAAA,OAAOC,cAAc,sBAAA,CAAA,CAClBC,WAAW,CAAC,+BAAA,CAAA,CACZC,MAAM,CAAC,aAAA,EAAe,yCAAA,CAAA,CACtBA,MAAM,CAAC,gBAAgB,oBAAA,CAAA,CACvBC,MAAM,CAAC,IAAMC,SAAAA,CAAU,wBAAwBD,MAAAA,CAAAA,CAAQJ,GAAAA,CAAAA,CAAAA;AAC5D;;;;"}
|
|
@@ -1 +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,
|
|
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,IAAAA,EAAM,gBAAA;IACNC,WAAAA,EAAa,sBAAA;AACbC,IAAAA,MAAAA;AACAC,IAAAA;AACF,CAAA;;;;;;"}
|
|
@@ -1 +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,
|
|
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,IAAAA,EAAM,gBAAA;IACNC,WAAAA,EAAa,sBAAA;AACbC,IAAAA,MAAAA;AACAC,IAAAA;AACF,CAAA;;;;"}
|
|
@@ -1 +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,
|
|
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,WAAAA,CAAQF,GAAAA,CAAAA;QACnC,OAAOC,WAAAA,CAAYE,IAAI,IAAI,mBAAA;AAC7B,IAAA,CAAA,CAAE,OAAOC,CAAAA,EAAG;QACV,OAAO,mBAAA;AACT,IAAA;AACF;;;;"}
|
|
@@ -1 +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,
|
|
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,OAAAA,CAAQF,GAAAA,CAAAA;QACnC,OAAOC,WAAAA,CAAYE,IAAI,IAAI,mBAAA;AAC7B,IAAA,CAAA,CAAE,OAAOC,CAAAA,EAAG;QACV,OAAO,mBAAA;AACT,IAAA;AACF;;;;"}
|
|
@@ -1 +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,
|
|
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,YAAAA,EAAc;gBAChC,MAAMM,eAAAA,GAAkBN,YAAY,CAACI,YAAAA,CAAa;;gBAGlD,IAAI,OAAOE,oBAAoB,UAAA,EAAY;oBACzC,OAAO;AACL,wBAAA,GAAGH,QAAQ;AACXI,wBAAAA,OAAAA,EAASD,eAAAA,CAAgBH,QAAAA;AAC3B,qBAAA;AACF,gBAAA;;gBAEA,OAAO;AACL,oBAAA,GAAGA,QAAQ;oBACXI,OAAAA,EAASD;AACX,iBAAA;AACF,YAAA;;YAEA,OAAOH,QAAAA;AACT,QAAA,CAAA,CAAA;AACF,IAAA,CAAA;AACF;AAEA;;;IAIO,SAASK,wBAAAA,CACdP,SAA0D,EAAA;AAE1D,IAAA,OAAOA,SAAAA,CAAUQ,MAAM,CAAC,CAACC,GAAAA,EAAKP,QAAAA,GAAAA;AAC5B,QAAA,IAAIA,QAAAA,CAASI,OAAO,IAAIJ,QAAAA,CAASE,IAAI,EAAE;YACrC,OAAO;AAAE,gBAAA,GAAGK,GAAG;AAAE,gBAAA,CAACP,QAAAA,CAASE,IAAI,GAAGF,SAASI;AAAQ,aAAA;AACrD,QAAA;QACA,OAAOG,GAAAA;AACT,IAAA,CAAA,EAAG,EAAC,CAAA;AACN;AAEA;;;IAIO,SAASC,4BAAAA,CAA6BR,QAA0C,EAAA;IACrF,MAAMS,kBAAAA,GAAqBC,OAAAA,CAAQC,QAAQ,CAACC,IAAI,CAACC,KAAK,CAAC,GAAA,CAAI,CAAC,CAAA,CAAE;;IAG9D,IAAIb,QAAAA,CAASc,IAAI,KAAK,MAAA,IAAUC,MAAMC,OAAO,CAAChB,QAAAA,CAASiB,OAAO,CAAA,EAAG;QAC/D,MAAMC,MAAAA,GAASlB,QAAAA,CAASiB,OAAO,CAACE,IAAI,CAAC,CAACD,MAAAA,GAAWA,MAAAA,CAAOE,KAAK,KAAKX,kBAAAA,CAAAA;AAClE,QAAA,IAAIS,MAAAA,EAAQ;AACV,YAAA,OAAOA,OAAOE,KAAK;AACrB,QAAA;AACF,IAAA;AACA,IAAA,OAAOpB,SAASI,OAAO;AACzB;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-questions.utils.mjs","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,
|
|
1
|
+
{"version":3,"file":"project-questions.utils.mjs","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,YAAAA,EAAc;gBAChC,MAAMM,eAAAA,GAAkBN,YAAY,CAACI,YAAAA,CAAa;;gBAGlD,IAAI,OAAOE,oBAAoB,UAAA,EAAY;oBACzC,OAAO;AACL,wBAAA,GAAGH,QAAQ;AACXI,wBAAAA,OAAAA,EAASD,eAAAA,CAAgBH,QAAAA;AAC3B,qBAAA;AACF,gBAAA;;gBAEA,OAAO;AACL,oBAAA,GAAGA,QAAQ;oBACXI,OAAAA,EAASD;AACX,iBAAA;AACF,YAAA;;YAEA,OAAOH,QAAAA;AACT,QAAA,CAAA,CAAA;AACF,IAAA,CAAA;AACF;AAEA;;;IAIO,SAASK,wBAAAA,CACdP,SAA0D,EAAA;AAE1D,IAAA,OAAOA,SAAAA,CAAUQ,MAAM,CAAC,CAACC,GAAAA,EAAKP,QAAAA,GAAAA;AAC5B,QAAA,IAAIA,QAAAA,CAASI,OAAO,IAAIJ,QAAAA,CAASE,IAAI,EAAE;YACrC,OAAO;AAAE,gBAAA,GAAGK,GAAG;AAAE,gBAAA,CAACP,QAAAA,CAASE,IAAI,GAAGF,SAASI;AAAQ,aAAA;AACrD,QAAA;QACA,OAAOG,GAAAA;AACT,IAAA,CAAA,EAAG,EAAC,CAAA;AACN;AAEA;;;IAIO,SAASC,4BAAAA,CAA6BR,QAA0C,EAAA;IACrF,MAAMS,kBAAAA,GAAqBC,OAAAA,CAAQC,QAAQ,CAACC,IAAI,CAACC,KAAK,CAAC,GAAA,CAAI,CAAC,CAAA,CAAE;;IAG9D,IAAIb,QAAAA,CAASc,IAAI,KAAK,MAAA,IAAUC,MAAMC,OAAO,CAAChB,QAAAA,CAASiB,OAAO,CAAA,EAAG;QAC/D,MAAMC,MAAAA,GAASlB,QAAAA,CAASiB,OAAO,CAACE,IAAI,CAAC,CAACD,MAAAA,GAAWA,MAAAA,CAAOE,KAAK,KAAKX,kBAAAA,CAAAA;AAClE,QAAA,IAAIS,MAAAA,EAAQ;AACV,YAAA,OAAOA,OAAOE,KAAK;AACrB,QAAA;AACF,IAAA;AACA,IAAA,OAAOpB,SAASI,OAAO;AACzB;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action.js","sources":["../../src/deploy-project/action.ts"],"sourcesContent":["import fse from 'fs-extra';\nimport inquirer from 'inquirer';\nimport boxen from 'boxen';\nimport path from 'path';\nimport chalk from 'chalk';\nimport { AxiosError } from 'axios';\nimport * as crypto from 'node:crypto';\nimport { apiConfig } from '../config/api';\nimport { compressFilesToTar } from '../utils/compress-files';\nimport createProjectAction from '../create-project/action';\nimport type {\n CLIContext,\n CloudApiService,\n CloudCliConfig,\n EnvironmentDetails,\n ProjectInfo,\n} from '../types';\nimport { getTmpStoragePath } from '../config/local';\nimport { cloudApiFactory, tokenServiceFactory, local } from '../services';\nimport { VERSION } from '../services/cli-api';\nimport { notificationServiceFactory } from '../services/notification';\nimport { loadPkg } from '../utils/pkg';\nimport { buildLogsServiceFactory } from '../services/build-logs';\nimport { promptLogin } from '../login/action';\nimport { trackEvent } from '../utils/analytics';\nimport {\n environmentCreationErrorFactory,\n environmentErrorMessageFactory,\n} from '../utils/error-message-factories';\n\ntype PackageJson = {\n name: string;\n strapi?: {\n uuid: string;\n };\n};\n\ninterface CmdOptions {\n env?: string;\n force?: boolean;\n}\n\nconst boxenOptions: boxen.Options = {\n padding: 1,\n margin: 1,\n align: 'center',\n borderColor: 'yellow',\n borderStyle: 'round',\n};\n\nconst QUIT_OPTION = 'Quit';\n\nasync function promptForEnvironment(environments: string[]): Promise<string> {\n const choices = environments.map((env) => ({ name: env, value: env }));\n const { selectedEnvironment } = await inquirer.prompt([\n {\n type: 'list',\n name: 'selectedEnvironment',\n message: 'Select the environment to deploy:',\n choices: [...choices, { name: chalk.grey(`(${QUIT_OPTION})`), value: null }],\n },\n ]);\n if (selectedEnvironment === null) {\n process.exit(1);\n }\n\n return selectedEnvironment;\n}\n\nasync function upload(\n ctx: CLIContext,\n project: Omit<ProjectInfo, 'id'>,\n cliConfig: CloudCliConfig,\n token: string,\n maxProjectFileSize: number\n) {\n const cloudApi = await cloudApiFactory(ctx, token);\n try {\n const storagePath = await getTmpStoragePath();\n const projectFolder = path.resolve(process.cwd());\n const packageJson = (await loadPkg(ctx)) as PackageJson;\n\n if (!packageJson) {\n ctx.logger.error(\n 'Unable to deploy the project. Please make sure the package.json file is correctly formatted.'\n );\n return;\n }\n\n const compressSpinner = ctx.logger.spinner('Compressing project...').start();\n compressSpinner.indent = 1;\n // hash packageJson.name to avoid conflicts\n const hashname = crypto.createHash('sha512').update(packageJson.name).digest('hex');\n const compressedFilename = `${hashname}.tar.gz`;\n try {\n ctx.logger.debug(\n 'Compression parameters\\n',\n `Storage path: ${storagePath}\\n`,\n `Project folder: ${projectFolder}\\n`,\n `Compressed filename: ${compressedFilename}`\n );\n await compressFilesToTar(storagePath, projectFolder, compressedFilename);\n compressSpinner.succeed(`Project compressed successfully!`);\n } catch (e: unknown) {\n compressSpinner.fail(\n 'Project compression failed. Try again later or check for large/incompatible files.'\n );\n ctx.logger.debug(e);\n process.exit(1);\n }\n\n const tarFilePath = path.resolve(storagePath, compressedFilename);\n const fileStats = await fse.stat(tarFilePath);\n\n if (fileStats.size > maxProjectFileSize) {\n ctx.logger.log(\n 'Unable to proceed: Your project is too big to be transferred, please use a git repo instead.'\n );\n try {\n await fse.remove(tarFilePath);\n } catch (e: any) {\n ctx.logger.log('Unable to remove file: ', tarFilePath);\n ctx.logger.debug(e);\n }\n return;\n }\n\n const progressBar = ctx.logger.progressBar(100, ' ∷ Uploading project');\n\n try {\n const { data } = await cloudApi.deploy(\n { filePath: tarFilePath, project },\n {\n onUploadProgress(progressEvent) {\n const total = progressEvent.total || fileStats.size;\n const percentage = Math.round((progressEvent.loaded * 100) / total);\n progressBar.update(percentage);\n },\n }\n );\n\n progressBar.update(100);\n progressBar.stop();\n ctx.logger.log(`${chalk.green.bold('✔')} Upload finished!\\n`);\n return data.build_id;\n } catch (e: any) {\n progressBar.stop();\n await handleUploadError(ctx, e, project, cliConfig);\n } finally {\n await fse.remove(tarFilePath);\n }\n process.exit(0);\n } catch (e: any) {\n ctx.logger.error('An error occurred while deploying the project. Please try again later.');\n ctx.logger.debug(e);\n process.exit(1);\n }\n}\n\nasync function handleUploadError(\n ctx: CLIContext,\n error: any,\n project: any,\n cliConfig: CloudCliConfig\n) {\n const { logger } = ctx;\n logger.debug(error);\n\n if (error.response?.status) {\n switch (error.response.status) {\n case 405: {\n const environmentErrorMessage = environmentErrorMessageFactory({\n projectName: project.name,\n firstLine: cliConfig.projectDeployment.errors.environmentNotReady.firstLine,\n secondLine: cliConfig.projectDeployment.errors.environmentNotReady.secondLine,\n });\n logger.log(environmentCreationErrorFactory(environmentErrorMessage));\n return;\n }\n case 413:\n logger.error(\n 'The project you are trying to upload is too big. Please remove unnecessary files and try again.'\n );\n return;\n default:\n break;\n }\n }\n logger.error('An error occurred while deploying the project. Please try again later.');\n}\n\nasync function getProject(ctx: CLIContext) {\n const { project } = await local.retrieve();\n if (!project) {\n try {\n const projectResponse = await createProjectAction(ctx);\n if (projectResponse) {\n const { project: projectSaved } = await local.retrieve();\n return projectSaved;\n }\n } catch (e: any) {\n ctx.logger.error('An error occurred while deploying the project. Please try again later.');\n ctx.logger.debug(e);\n process.exit(1);\n }\n }\n return project;\n}\n\nasync function getConfig({\n ctx,\n cloudApiService,\n}: {\n ctx: CLIContext;\n cloudApiService: CloudApiService;\n}): Promise<CloudCliConfig | null> {\n try {\n const { data: cliConfig } = await cloudApiService.config();\n return cliConfig;\n } catch (e) {\n ctx.logger.debug('Failed to get cli config', e);\n return null;\n }\n}\n\nfunction validateEnvironment(ctx: CLIContext, environment: string, environments: string[]): void {\n if (!environments.includes(environment)) {\n ctx.logger.error(`Environment ${environment} does not exist.`);\n process.exit(1);\n }\n}\n\nasync function getTargetEnvironment(\n ctx: CLIContext,\n opts: CmdOptions,\n project: Omit<ProjectInfo, 'id'>,\n environments: string[]\n): Promise<string> {\n if (opts.env) {\n validateEnvironment(ctx, opts.env, environments);\n return opts.env;\n }\n\n if (project.targetEnvironment) {\n return project.targetEnvironment;\n }\n\n if (environments.length > 1) {\n return promptForEnvironment(environments);\n }\n\n return environments[0];\n}\n\nfunction hasPendingOrLiveDeployment(\n environments: EnvironmentDetails[],\n targetEnvironment: string\n): boolean {\n const environment = environments.find((env) => env.name === targetEnvironment);\n if (!environment) {\n throw new Error(`Environment details ${targetEnvironment} not found.`);\n }\n return environment.hasPendingDeployment || environment.hasLiveDeployment || false;\n}\n\nexport default async (ctx: CLIContext, opts: CmdOptions) => {\n const { getValidToken } = await tokenServiceFactory(ctx);\n const token = await getValidToken(ctx, promptLogin);\n if (!token) {\n return;\n }\n\n const project = await getProject(ctx);\n if (!project) {\n process.exit(1);\n }\n\n const cloudApiService = await cloudApiFactory(ctx, token);\n let projectData;\n let environments: string[];\n let environmentsDetails: EnvironmentDetails[];\n\n try {\n const {\n data: { data, metadata },\n } = await cloudApiService.getProject({ name: project.name });\n projectData = data;\n environments = projectData.environments;\n environmentsDetails = projectData.environmentsDetails;\n const isProjectSuspended = projectData.suspendedAt;\n\n if (isProjectSuspended) {\n ctx.logger.log(\n '\\n Oops! This project has been suspended. \\n\\n Please reactivate it from the dashboard to continue deploying: '\n );\n ctx.logger.log(chalk.underline(`${metadata.dashboardUrls.project}`));\n return;\n }\n } catch (e: Error | unknown) {\n if (e instanceof AxiosError && e.response?.data) {\n if (e.response.status === 404) {\n ctx.logger.warn(\n `The project associated with this folder does not exist in Strapi Cloud. \\nPlease link your local project to an existing Strapi Cloud project using the ${chalk.cyan(\n 'link'\n )} command before deploying.`\n );\n } else {\n ctx.logger.error(e.response.data);\n }\n } else {\n ctx.logger.error(\n \"An error occurred while retrieving the project's information. Please try again later.\"\n );\n }\n ctx.logger.debug(e);\n return;\n }\n\n await trackEvent(ctx, cloudApiService, 'willDeployWithCLI', {\n projectInternalName: project.name,\n });\n\n const notificationService = notificationServiceFactory(ctx);\n const buildLogsService = buildLogsServiceFactory(ctx);\n\n const cliConfig = await getConfig({ ctx, cloudApiService });\n if (!cliConfig) {\n ctx.logger.error(\n 'An error occurred while retrieving data from Strapi Cloud. Please check your network or try again later.'\n );\n return;\n }\n\n let maxSize: number = parseInt(cliConfig.maxProjectFileSize, 10);\n if (Number.isNaN(maxSize)) {\n ctx.logger.debug(\n 'An error occurred while parsing the maxProjectFileSize. Using default value.'\n );\n maxSize = 100000000;\n }\n\n project.targetEnvironment = await getTargetEnvironment(ctx, opts, project, environments);\n\n if (!opts.force) {\n const shouldDisplayWarning = hasPendingOrLiveDeployment(\n environmentsDetails,\n project.targetEnvironment\n );\n if (shouldDisplayWarning) {\n ctx.logger.log(boxen(cliConfig.projectDeployment.confirmationText, boxenOptions));\n const { confirm } = await inquirer.prompt([\n {\n type: 'confirm',\n name: 'confirm',\n message: `Do you want to proceed with deployment to ${chalk.cyan(projectData.displayName)} on ${chalk.cyan(project.targetEnvironment)} environment?`,\n },\n ]);\n if (!confirm) {\n process.exit(1);\n }\n }\n }\n\n const buildId = await upload(ctx, project, cliConfig, token, maxSize);\n\n if (!buildId) {\n return;\n }\n\n let notifications: ReturnType<typeof notificationService> | null = null;\n\n try {\n ctx.logger.log(\n `∷ Deploying project to ${chalk.cyan(project.targetEnvironment ?? `production`)} environment...`\n );\n\n notifications = notificationService(\n `${apiConfig.apiBaseUrl}/${VERSION}/notifications`,\n token,\n cliConfig\n );\n\n await buildLogsService(`${apiConfig.apiBaseUrl}/${VERSION}/logs/${buildId}`, token, cliConfig);\n const dashboardUrlLine =\n chalk.cyan(' → ') +\n chalk.cyan.underline(`${apiConfig.dashboardBaseUrl}/projects/${project.name}/deployments`);\n ctx.logger.log(\n boxen(`Project and deployment logs ready at:\\n${dashboardUrlLine}`, {\n padding: 1,\n margin: 1,\n borderStyle: 'round',\n borderColor: 'white',\n titleAlignment: 'left',\n })\n );\n } catch (e: Error | unknown) {\n ctx.logger.debug(e);\n if (e instanceof Error) {\n ctx.logger.error(e.message);\n } else {\n ctx.logger.error('An error occurred while deploying the project. Please try again later.');\n }\n } finally {\n if (notifications) {\n notifications.close();\n }\n }\n};\n"],"names":["boxenOptions","padding","margin","align","borderColor","borderStyle","QUIT_OPTION","promptForEnvironment","environments","choices","map","env","name","value","selectedEnvironment","inquirer","prompt","type","message","chalk","grey","process","exit","upload","ctx","project","cliConfig","token","maxProjectFileSize","cloudApi","cloudApiFactory","storagePath","getTmpStoragePath","projectFolder","path","resolve","cwd","packageJson","loadPkg","logger","error","compressSpinner","spinner","start","indent","hashname","crypto","createHash","update","digest","compressedFilename","debug","compressFilesToTar","succeed","e","fail","tarFilePath","fileStats","fse","stat","size","log","remove","progressBar","data","deploy","filePath","onUploadProgress","progressEvent","total","percentage","Math","round","loaded","stop","green","bold","build_id","handleUploadError","response","status","environmentErrorMessage","environmentErrorMessageFactory","projectName","firstLine","projectDeployment","errors","environmentNotReady","secondLine","environmentCreationErrorFactory","getProject","local","projectResponse","createProjectAction","projectSaved","getConfig","cloudApiService","config","validateEnvironment","environment","includes","getTargetEnvironment","opts","targetEnvironment","length","hasPendingOrLiveDeployment","find","Error","hasPendingDeployment","hasLiveDeployment","getValidToken","tokenServiceFactory","promptLogin","projectData","environmentsDetails","metadata","isProjectSuspended","suspendedAt","underline","dashboardUrls","AxiosError","warn","cyan","trackEvent","projectInternalName","notificationService","notificationServiceFactory","buildLogsService","buildLogsServiceFactory","maxSize","parseInt","Number","isNaN","force","shouldDisplayWarning","boxen","confirmationText","confirm","displayName","buildId","notifications","apiConfig","apiBaseUrl","VERSION","dashboardUrlLine","dashboardBaseUrl","titleAlignment","close"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"action.js","sources":["../../src/deploy-project/action.ts"],"sourcesContent":["import fse from 'fs-extra';\nimport inquirer from 'inquirer';\nimport boxen from 'boxen';\nimport path from 'path';\nimport chalk from 'chalk';\nimport { AxiosError } from 'axios';\nimport * as crypto from 'node:crypto';\nimport { apiConfig } from '../config/api';\nimport { compressFilesToTar } from '../utils/compress-files';\nimport createProjectAction from '../create-project/action';\nimport type {\n CLIContext,\n CloudApiService,\n CloudCliConfig,\n EnvironmentDetails,\n ProjectInfo,\n} from '../types';\nimport { getTmpStoragePath } from '../config/local';\nimport { cloudApiFactory, tokenServiceFactory, local } from '../services';\nimport { VERSION } from '../services/cli-api';\nimport { notificationServiceFactory } from '../services/notification';\nimport { loadPkg } from '../utils/pkg';\nimport { buildLogsServiceFactory } from '../services/build-logs';\nimport { promptLogin } from '../login/action';\nimport { trackEvent } from '../utils/analytics';\nimport {\n environmentCreationErrorFactory,\n environmentErrorMessageFactory,\n} from '../utils/error-message-factories';\n\ntype PackageJson = {\n name: string;\n strapi?: {\n uuid: string;\n };\n};\n\ninterface CmdOptions {\n env?: string;\n force?: boolean;\n}\n\nconst boxenOptions: boxen.Options = {\n padding: 1,\n margin: 1,\n align: 'center',\n borderColor: 'yellow',\n borderStyle: 'round',\n};\n\nconst QUIT_OPTION = 'Quit';\n\nasync function promptForEnvironment(environments: string[]): Promise<string> {\n const choices = environments.map((env) => ({ name: env, value: env }));\n const { selectedEnvironment } = await inquirer.prompt([\n {\n type: 'list',\n name: 'selectedEnvironment',\n message: 'Select the environment to deploy:',\n choices: [...choices, { name: chalk.grey(`(${QUIT_OPTION})`), value: null }],\n },\n ]);\n if (selectedEnvironment === null) {\n process.exit(1);\n }\n\n return selectedEnvironment;\n}\n\nasync function upload(\n ctx: CLIContext,\n project: Omit<ProjectInfo, 'id'>,\n cliConfig: CloudCliConfig,\n token: string,\n maxProjectFileSize: number\n) {\n const cloudApi = await cloudApiFactory(ctx, token);\n try {\n const storagePath = await getTmpStoragePath();\n const projectFolder = path.resolve(process.cwd());\n const packageJson = (await loadPkg(ctx)) as PackageJson;\n\n if (!packageJson) {\n ctx.logger.error(\n 'Unable to deploy the project. Please make sure the package.json file is correctly formatted.'\n );\n return;\n }\n\n const compressSpinner = ctx.logger.spinner('Compressing project...').start();\n compressSpinner.indent = 1;\n // hash packageJson.name to avoid conflicts\n const hashname = crypto.createHash('sha512').update(packageJson.name).digest('hex');\n const compressedFilename = `${hashname}.tar.gz`;\n try {\n ctx.logger.debug(\n 'Compression parameters\\n',\n `Storage path: ${storagePath}\\n`,\n `Project folder: ${projectFolder}\\n`,\n `Compressed filename: ${compressedFilename}`\n );\n await compressFilesToTar(storagePath, projectFolder, compressedFilename);\n compressSpinner.succeed(`Project compressed successfully!`);\n } catch (e: unknown) {\n compressSpinner.fail(\n 'Project compression failed. Try again later or check for large/incompatible files.'\n );\n ctx.logger.debug(e);\n process.exit(1);\n }\n\n const tarFilePath = path.resolve(storagePath, compressedFilename);\n const fileStats = await fse.stat(tarFilePath);\n\n if (fileStats.size > maxProjectFileSize) {\n ctx.logger.log(\n 'Unable to proceed: Your project is too big to be transferred, please use a git repo instead.'\n );\n try {\n await fse.remove(tarFilePath);\n } catch (e: any) {\n ctx.logger.log('Unable to remove file: ', tarFilePath);\n ctx.logger.debug(e);\n }\n return;\n }\n\n const progressBar = ctx.logger.progressBar(100, ' ∷ Uploading project');\n\n try {\n const { data } = await cloudApi.deploy(\n { filePath: tarFilePath, project },\n {\n onUploadProgress(progressEvent) {\n const total = progressEvent.total || fileStats.size;\n const percentage = Math.round((progressEvent.loaded * 100) / total);\n progressBar.update(percentage);\n },\n }\n );\n\n progressBar.update(100);\n progressBar.stop();\n ctx.logger.log(`${chalk.green.bold('✔')} Upload finished!\\n`);\n return data.build_id;\n } catch (e: any) {\n progressBar.stop();\n await handleUploadError(ctx, e, project, cliConfig);\n } finally {\n await fse.remove(tarFilePath);\n }\n process.exit(0);\n } catch (e: any) {\n ctx.logger.error('An error occurred while deploying the project. Please try again later.');\n ctx.logger.debug(e);\n process.exit(1);\n }\n}\n\nasync function handleUploadError(\n ctx: CLIContext,\n error: any,\n project: any,\n cliConfig: CloudCliConfig\n) {\n const { logger } = ctx;\n logger.debug(error);\n\n if (error.response?.status) {\n switch (error.response.status) {\n case 405: {\n const environmentErrorMessage = environmentErrorMessageFactory({\n projectName: project.name,\n firstLine: cliConfig.projectDeployment.errors.environmentNotReady.firstLine,\n secondLine: cliConfig.projectDeployment.errors.environmentNotReady.secondLine,\n });\n logger.log(environmentCreationErrorFactory(environmentErrorMessage));\n return;\n }\n case 413:\n logger.error(\n 'The project you are trying to upload is too big. Please remove unnecessary files and try again.'\n );\n return;\n default:\n break;\n }\n }\n logger.error('An error occurred while deploying the project. Please try again later.');\n}\n\nasync function getProject(ctx: CLIContext) {\n const { project } = await local.retrieve();\n if (!project) {\n try {\n const projectResponse = await createProjectAction(ctx);\n if (projectResponse) {\n const { project: projectSaved } = await local.retrieve();\n return projectSaved;\n }\n } catch (e: any) {\n ctx.logger.error('An error occurred while deploying the project. Please try again later.');\n ctx.logger.debug(e);\n process.exit(1);\n }\n }\n return project;\n}\n\nasync function getConfig({\n ctx,\n cloudApiService,\n}: {\n ctx: CLIContext;\n cloudApiService: CloudApiService;\n}): Promise<CloudCliConfig | null> {\n try {\n const { data: cliConfig } = await cloudApiService.config();\n return cliConfig;\n } catch (e) {\n ctx.logger.debug('Failed to get cli config', e);\n return null;\n }\n}\n\nfunction validateEnvironment(ctx: CLIContext, environment: string, environments: string[]): void {\n if (!environments.includes(environment)) {\n ctx.logger.error(`Environment ${environment} does not exist.`);\n process.exit(1);\n }\n}\n\nasync function getTargetEnvironment(\n ctx: CLIContext,\n opts: CmdOptions,\n project: Omit<ProjectInfo, 'id'>,\n environments: string[]\n): Promise<string> {\n if (opts.env) {\n validateEnvironment(ctx, opts.env, environments);\n return opts.env;\n }\n\n if (project.targetEnvironment) {\n return project.targetEnvironment;\n }\n\n if (environments.length > 1) {\n return promptForEnvironment(environments);\n }\n\n return environments[0];\n}\n\nfunction hasPendingOrLiveDeployment(\n environments: EnvironmentDetails[],\n targetEnvironment: string\n): boolean {\n const environment = environments.find((env) => env.name === targetEnvironment);\n if (!environment) {\n throw new Error(`Environment details ${targetEnvironment} not found.`);\n }\n return environment.hasPendingDeployment || environment.hasLiveDeployment || false;\n}\n\nexport default async (ctx: CLIContext, opts: CmdOptions) => {\n const { getValidToken } = await tokenServiceFactory(ctx);\n const token = await getValidToken(ctx, promptLogin);\n if (!token) {\n return;\n }\n\n const project = await getProject(ctx);\n if (!project) {\n process.exit(1);\n }\n\n const cloudApiService = await cloudApiFactory(ctx, token);\n let projectData;\n let environments: string[];\n let environmentsDetails: EnvironmentDetails[];\n\n try {\n const {\n data: { data, metadata },\n } = await cloudApiService.getProject({ name: project.name });\n projectData = data;\n environments = projectData.environments;\n environmentsDetails = projectData.environmentsDetails;\n const isProjectSuspended = projectData.suspendedAt;\n\n if (isProjectSuspended) {\n ctx.logger.log(\n '\\n Oops! This project has been suspended. \\n\\n Please reactivate it from the dashboard to continue deploying: '\n );\n ctx.logger.log(chalk.underline(`${metadata.dashboardUrls.project}`));\n return;\n }\n } catch (e: Error | unknown) {\n if (e instanceof AxiosError && e.response?.data) {\n if (e.response.status === 404) {\n ctx.logger.warn(\n `The project associated with this folder does not exist in Strapi Cloud. \\nPlease link your local project to an existing Strapi Cloud project using the ${chalk.cyan(\n 'link'\n )} command before deploying.`\n );\n } else {\n ctx.logger.error(e.response.data);\n }\n } else {\n ctx.logger.error(\n \"An error occurred while retrieving the project's information. Please try again later.\"\n );\n }\n ctx.logger.debug(e);\n return;\n }\n\n await trackEvent(ctx, cloudApiService, 'willDeployWithCLI', {\n projectInternalName: project.name,\n });\n\n const notificationService = notificationServiceFactory(ctx);\n const buildLogsService = buildLogsServiceFactory(ctx);\n\n const cliConfig = await getConfig({ ctx, cloudApiService });\n if (!cliConfig) {\n ctx.logger.error(\n 'An error occurred while retrieving data from Strapi Cloud. Please check your network or try again later.'\n );\n return;\n }\n\n let maxSize: number = parseInt(cliConfig.maxProjectFileSize, 10);\n if (Number.isNaN(maxSize)) {\n ctx.logger.debug(\n 'An error occurred while parsing the maxProjectFileSize. Using default value.'\n );\n maxSize = 100000000;\n }\n\n project.targetEnvironment = await getTargetEnvironment(ctx, opts, project, environments);\n\n if (!opts.force) {\n const shouldDisplayWarning = hasPendingOrLiveDeployment(\n environmentsDetails,\n project.targetEnvironment\n );\n if (shouldDisplayWarning) {\n ctx.logger.log(boxen(cliConfig.projectDeployment.confirmationText, boxenOptions));\n const { confirm } = await inquirer.prompt([\n {\n type: 'confirm',\n name: 'confirm',\n message: `Do you want to proceed with deployment to ${chalk.cyan(projectData.displayName)} on ${chalk.cyan(project.targetEnvironment)} environment?`,\n },\n ]);\n if (!confirm) {\n process.exit(1);\n }\n }\n }\n\n const buildId = await upload(ctx, project, cliConfig, token, maxSize);\n\n if (!buildId) {\n return;\n }\n\n let notifications: ReturnType<typeof notificationService> | null = null;\n\n try {\n ctx.logger.log(\n `∷ Deploying project to ${chalk.cyan(project.targetEnvironment ?? `production`)} environment...`\n );\n\n notifications = notificationService(\n `${apiConfig.apiBaseUrl}/${VERSION}/notifications`,\n token,\n cliConfig\n );\n\n await buildLogsService(`${apiConfig.apiBaseUrl}/${VERSION}/logs/${buildId}`, token, cliConfig);\n const dashboardUrlLine =\n chalk.cyan(' → ') +\n chalk.cyan.underline(`${apiConfig.dashboardBaseUrl}/projects/${project.name}/deployments`);\n ctx.logger.log(\n boxen(`Project and deployment logs ready at:\\n${dashboardUrlLine}`, {\n padding: 1,\n margin: 1,\n borderStyle: 'round',\n borderColor: 'white',\n titleAlignment: 'left',\n })\n );\n } catch (e: Error | unknown) {\n ctx.logger.debug(e);\n if (e instanceof Error) {\n ctx.logger.error(e.message);\n } else {\n ctx.logger.error('An error occurred while deploying the project. Please try again later.');\n }\n } finally {\n if (notifications) {\n notifications.close();\n }\n }\n};\n"],"names":["boxenOptions","padding","margin","align","borderColor","borderStyle","QUIT_OPTION","promptForEnvironment","environments","choices","map","env","name","value","selectedEnvironment","inquirer","prompt","type","message","chalk","grey","process","exit","upload","ctx","project","cliConfig","token","maxProjectFileSize","cloudApi","cloudApiFactory","storagePath","getTmpStoragePath","projectFolder","path","resolve","cwd","packageJson","loadPkg","logger","error","compressSpinner","spinner","start","indent","hashname","crypto","createHash","update","digest","compressedFilename","debug","compressFilesToTar","succeed","e","fail","tarFilePath","fileStats","fse","stat","size","log","remove","progressBar","data","deploy","filePath","onUploadProgress","progressEvent","total","percentage","Math","round","loaded","stop","green","bold","build_id","handleUploadError","response","status","environmentErrorMessage","environmentErrorMessageFactory","projectName","firstLine","projectDeployment","errors","environmentNotReady","secondLine","environmentCreationErrorFactory","getProject","local","projectResponse","createProjectAction","projectSaved","getConfig","cloudApiService","config","validateEnvironment","environment","includes","getTargetEnvironment","opts","targetEnvironment","length","hasPendingOrLiveDeployment","find","Error","hasPendingDeployment","hasLiveDeployment","getValidToken","tokenServiceFactory","promptLogin","projectData","environmentsDetails","metadata","isProjectSuspended","suspendedAt","underline","dashboardUrls","AxiosError","warn","cyan","trackEvent","projectInternalName","notificationService","notificationServiceFactory","buildLogsService","buildLogsServiceFactory","maxSize","parseInt","Number","isNaN","force","shouldDisplayWarning","boxen","confirmationText","confirm","displayName","buildId","notifications","apiConfig","apiBaseUrl","VERSION","dashboardUrlLine","dashboardBaseUrl","titleAlignment","close"],"mappings":"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"}
|