@strapi/cloud-cli 5.48.0 → 5.49.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.
Files changed (39) hide show
  1. package/dist/config/local.js +17 -10
  2. package/dist/config/local.js.map +1 -1
  3. package/dist/deploy-project/action.js +23 -16
  4. package/dist/deploy-project/action.js.map +1 -1
  5. package/dist/environment/link/action.js +7 -3
  6. package/dist/environment/link/action.js.map +1 -1
  7. package/dist/environment/list/action.js +5 -1
  8. package/dist/environment/list/action.js.map +1 -1
  9. package/dist/index.js +5 -1
  10. package/dist/index.js.map +1 -1
  11. package/dist/link/action.js +7 -3
  12. package/dist/link/action.js.map +1 -1
  13. package/dist/login/action.js +9 -4
  14. package/dist/login/action.js.map +1 -1
  15. package/dist/package.json.js +1 -1
  16. package/dist/package.json.mjs +1 -1
  17. package/dist/services/build-logs.js +5 -1
  18. package/dist/services/build-logs.js.map +1 -1
  19. package/dist/services/cli-api.js +10 -4
  20. package/dist/services/cli-api.js.map +1 -1
  21. package/dist/services/logger.js +17 -11
  22. package/dist/services/logger.js.map +1 -1
  23. package/dist/services/notification.js +7 -2
  24. package/dist/services/notification.js.map +1 -1
  25. package/dist/services/strapi-info-save.js +13 -8
  26. package/dist/services/strapi-info-save.js.map +1 -1
  27. package/dist/services/token.js +8 -3
  28. package/dist/services/token.js.map +1 -1
  29. package/dist/utils/compress-files.js +5 -4
  30. package/dist/utils/compress-files.js.map +1 -1
  31. package/dist/utils/error-message-factories.js +9 -4
  32. package/dist/utils/error-message-factories.js.map +1 -1
  33. package/dist/utils/get-local-config.js +5 -1
  34. package/dist/utils/get-local-config.js.map +1 -1
  35. package/dist/utils/helpers.js +5 -1
  36. package/dist/utils/helpers.js.map +1 -1
  37. package/dist/utils/pkg.js +10 -5
  38. package/dist/utils/pkg.js.map +1 -1
  39. package/package.json +8 -8
@@ -16,6 +16,11 @@ var api = require('../config/api.js');
16
16
  var analytics = require('../utils/analytics.js');
17
17
  var context = require('../services/context.js');
18
18
 
19
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
20
+
21
+ var axios__default = /*#__PURE__*/_interopDefault(axios);
22
+ var chalk__default = /*#__PURE__*/_interopDefault(chalk);
23
+
19
24
  const openModule = import('open');
20
25
  async function promptLogin(ctx) {
21
26
  const { default: inquirer } = await import('inquirer');
@@ -54,7 +59,7 @@ async function loginAction(ctx, { showDashboardLink = true } = {}) {
54
59
  }
55
60
  if (showDashboardLink) {
56
61
  logger.log('To access your dashboard, please copy and paste the following URL into your web browser:');
57
- logger.log(chalk.underline(`${api.apiConfig.dashboardBaseUrl}/projects`));
62
+ logger.log(chalk__default.default.underline(`${api.apiConfig.dashboardBaseUrl}/projects`));
58
63
  }
59
64
  return true;
60
65
  } catch (e) {
@@ -82,7 +87,7 @@ async function loginAction(ctx, { showDashboardLink = true } = {}) {
82
87
  scope: cliConfig.scope,
83
88
  audience: cliConfig.audience
84
89
  });
85
- const deviceAuthResponse = await axios.post(cliConfig.deviceCodeAuthUrl, {
90
+ const deviceAuthResponse = await axios__default.default.post(cliConfig.deviceCodeAuthUrl, {
86
91
  client_id: cliConfig.clientId,
87
92
  scope: cliConfig.scope,
88
93
  audience: cliConfig.audience
@@ -115,7 +120,7 @@ async function loginAction(ctx, { showDashboardLink = true } = {}) {
115
120
  const spinnerFail = ()=>spinner.fail('Authentication failed!');
116
121
  while(!isAuthenticated){
117
122
  try {
118
- const tokenResponse = await axios.post(cliConfig.tokenUrl, tokenPayload);
123
+ const tokenResponse = await axios__default.default.post(cliConfig.tokenUrl, tokenPayload);
119
124
  const authTokenData = tokenResponse.data;
120
125
  if (tokenResponse.status === 200) {
121
126
  // Token validation
@@ -181,7 +186,7 @@ async function loginAction(ctx, { showDashboardLink = true } = {}) {
181
186
  if (showDashboardLink) {
182
187
  logger.log('You are now logged into Strapi Cloud.');
183
188
  logger.log('To access your dashboard, please copy and paste the following URL into your web browser:');
184
- logger.log(chalk.underline(`${api.apiConfig.dashboardBaseUrl}/projects`));
189
+ logger.log(chalk__default.default.underline(`${api.apiConfig.dashboardBaseUrl}/projects`));
185
190
  }
186
191
  await analytics.trackEvent(ctx, cloudApiService, 'didLogin', {
187
192
  loginMethod: 'cli',
@@ -1 +1 @@
1
- {"version":3,"file":"action.js","sources":["../../src/login/action.ts"],"sourcesContent":["import axios, { AxiosResponse, AxiosError } from 'axios';\nimport chalk from 'chalk';\nimport { tokenServiceFactory, cloudApiFactory } from '../services';\nimport type { CloudCliConfig, CLIContext } from '../types';\nimport { apiConfig } from '../config/api';\nimport { trackEvent } from '../utils/analytics';\nimport { setContext } from '../services/context';\n\nconst openModule = import('open');\n\nexport async function promptLogin(ctx: CLIContext) {\n const { default: inquirer } = await import('inquirer');\n const response = await inquirer.prompt([\n {\n type: 'confirm',\n name: 'login',\n message: 'Would you like to login?',\n },\n ]);\n\n if (response.login) {\n const loginSuccessful = await loginAction(ctx);\n return loginSuccessful;\n }\n return false;\n}\n\nexport default async function loginAction(\n ctx: CLIContext,\n { showDashboardLink = true }: { showDashboardLink?: boolean } = {}\n): Promise<boolean> {\n const { logger, promptExperiment } = ctx;\n const tokenService = await tokenServiceFactory(ctx);\n const existingToken = await tokenService.retrieveToken();\n const cloudApiService = await cloudApiFactory(ctx, existingToken || undefined);\n\n if (existingToken) {\n const isTokenValid = await tokenService.isTokenValid(existingToken);\n if (isTokenValid) {\n try {\n const userInfo = await cloudApiService.getUserInfo();\n const { email } = userInfo.data.data;\n setContext({ ...ctx, user: userInfo.data.data });\n if (email) {\n logger.log(`You are already logged into your account (${email}).`);\n } else {\n logger.log('You are already logged in.');\n }\n if (showDashboardLink) {\n logger.log(\n 'To access your dashboard, please copy and paste the following URL into your web browser:'\n );\n logger.log(chalk.underline(`${apiConfig.dashboardBaseUrl}/projects`));\n }\n return true;\n } catch (e) {\n logger.debug('Failed to fetch user info', e);\n }\n }\n }\n\n let cliConfig: CloudCliConfig;\n try {\n logger.info('🔌 Connecting...');\n const config = await cloudApiService.config();\n cliConfig = config.data;\n } catch (e: unknown) {\n logger.error('🥲 Oops! Something went wrong while logging you in. Please try again.');\n logger.debug(e);\n return false;\n }\n await trackEvent(ctx, cloudApiService, 'willLoginAttempt', {\n ...(promptExperiment && { promptExperiment }),\n });\n\n logger.debug('🔐 Creating device authentication request...', {\n client_id: cliConfig.clientId,\n scope: cliConfig.scope,\n audience: cliConfig.audience,\n });\n const deviceAuthResponse = (await axios\n .post(cliConfig.deviceCodeAuthUrl, {\n client_id: cliConfig.clientId,\n scope: cliConfig.scope,\n audience: cliConfig.audience,\n })\n .catch((e: AxiosError) => {\n logger.error('There was an issue with the authentication process. Please try again.');\n if (e.message) {\n logger.debug(e.message, e);\n } else {\n logger.debug(e);\n }\n })) as AxiosResponse;\n\n openModule.then((open) => {\n open.default(deviceAuthResponse.data.verification_uri_complete).catch((e: Error) => {\n logger.error('We encountered an issue opening the browser. Please try again later.');\n logger.debug(e.message, e);\n });\n });\n\n logger.log('If a browser tab does not open automatically, please follow the next steps:');\n logger.log(\n `1. Open this url in your device: ${deviceAuthResponse.data.verification_uri_complete}`\n );\n logger.log(\n `2. Enter the following code: ${deviceAuthResponse.data.user_code} and confirm to login.\\n`\n );\n\n const tokenPayload = {\n grant_type: 'urn:ietf:params:oauth:grant-type:device_code',\n device_code: deviceAuthResponse.data.device_code,\n client_id: cliConfig.clientId,\n };\n\n let isAuthenticated = false;\n\n const authenticate = async () => {\n const spinner = logger.spinner('Waiting for authentication');\n spinner.start();\n const spinnerFail = () => spinner.fail('Authentication failed!');\n\n while (!isAuthenticated) {\n try {\n const tokenResponse = await axios.post(cliConfig.tokenUrl, tokenPayload);\n const authTokenData = tokenResponse.data;\n\n if (tokenResponse.status === 200) {\n // Token validation\n try {\n logger.debug('🔐 Validating token...');\n await tokenService.validateToken(authTokenData.id_token, cliConfig.jwksUrl);\n logger.debug('🔐 Token validation successful!');\n } catch (e: any) {\n logger.debug(e);\n spinnerFail();\n throw new Error('Unable to proceed: Token validation failed');\n }\n\n logger.debug('🔍 Fetching user information...');\n const cloudApiServiceWithToken = await cloudApiFactory(ctx, authTokenData.access_token);\n // Call to get user info to create the user in DB if not exists\n await cloudApiServiceWithToken.getUserInfo();\n logger.debug('🔍 User information fetched successfully!');\n\n try {\n logger.debug('📝 Saving login information...');\n await tokenService.saveToken(authTokenData.access_token);\n logger.debug('📝 Login information saved successfully!');\n isAuthenticated = true;\n } catch (e) {\n logger.error(\n 'There was a problem saving your login information. Please try logging in again.'\n );\n logger.debug(e);\n spinnerFail();\n return false;\n }\n }\n } catch (e: any) {\n if (e.message === 'Unable to proceed: Token validation failed') {\n logger.error(\n 'There seems to be a problem with your login information. Please try logging in again.'\n );\n spinnerFail();\n await trackEvent(ctx, cloudApiService, 'didNotLogin', {\n loginMethod: 'cli',\n ...(promptExperiment && { promptExperiment }),\n });\n return false;\n }\n if (\n e.response?.data.error &&\n !['authorization_pending', 'slow_down'].includes(e!.response.data.error)\n ) {\n logger.debug(e);\n spinnerFail();\n await trackEvent(ctx, cloudApiService, 'didNotLogin', {\n loginMethod: 'cli',\n ...(promptExperiment && { promptExperiment }),\n });\n return false;\n }\n // Await interval before retrying\n await new Promise((resolve) => {\n setTimeout(resolve, deviceAuthResponse.data.interval * 1000);\n });\n }\n }\n spinner.succeed('Authentication successful!');\n if (showDashboardLink) {\n logger.log('You are now logged into Strapi Cloud.');\n logger.log(\n 'To access your dashboard, please copy and paste the following URL into your web browser:'\n );\n logger.log(chalk.underline(`${apiConfig.dashboardBaseUrl}/projects`));\n }\n await trackEvent(ctx, cloudApiService, 'didLogin', {\n loginMethod: 'cli',\n ...(promptExperiment && { promptExperiment }),\n });\n };\n\n await authenticate();\n return isAuthenticated;\n}\n"],"names":["openModule","promptLogin","ctx","default","inquirer","response","prompt","type","name","message","login","loginSuccessful","loginAction","showDashboardLink","logger","promptExperiment","tokenService","tokenServiceFactory","existingToken","retrieveToken","cloudApiService","cloudApiFactory","undefined","isTokenValid","userInfo","getUserInfo","email","data","setContext","user","log","chalk","underline","apiConfig","dashboardBaseUrl","e","debug","cliConfig","info","config","error","trackEvent","client_id","clientId","scope","audience","deviceAuthResponse","axios","post","deviceCodeAuthUrl","catch","then","open","verification_uri_complete","user_code","tokenPayload","grant_type","device_code","isAuthenticated","authenticate","spinner","start","spinnerFail","fail","tokenResponse","tokenUrl","authTokenData","status","validateToken","id_token","jwksUrl","Error","cloudApiServiceWithToken","access_token","saveToken","loginMethod","includes","Promise","resolve","setTimeout","interval","succeed"],"mappings":"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"}
1
+ {"version":3,"file":"action.js","sources":["../../src/login/action.ts"],"sourcesContent":["import axios, { AxiosResponse, AxiosError } from 'axios';\nimport chalk from 'chalk';\nimport { tokenServiceFactory, cloudApiFactory } from '../services';\nimport type { CloudCliConfig, CLIContext } from '../types';\nimport { apiConfig } from '../config/api';\nimport { trackEvent } from '../utils/analytics';\nimport { setContext } from '../services/context';\n\nconst openModule = import('open');\n\nexport async function promptLogin(ctx: CLIContext) {\n const { default: inquirer } = await import('inquirer');\n const response = await inquirer.prompt([\n {\n type: 'confirm',\n name: 'login',\n message: 'Would you like to login?',\n },\n ]);\n\n if (response.login) {\n const loginSuccessful = await loginAction(ctx);\n return loginSuccessful;\n }\n return false;\n}\n\nexport default async function loginAction(\n ctx: CLIContext,\n { showDashboardLink = true }: { showDashboardLink?: boolean } = {}\n): Promise<boolean> {\n const { logger, promptExperiment } = ctx;\n const tokenService = await tokenServiceFactory(ctx);\n const existingToken = await tokenService.retrieveToken();\n const cloudApiService = await cloudApiFactory(ctx, existingToken || undefined);\n\n if (existingToken) {\n const isTokenValid = await tokenService.isTokenValid(existingToken);\n if (isTokenValid) {\n try {\n const userInfo = await cloudApiService.getUserInfo();\n const { email } = userInfo.data.data;\n setContext({ ...ctx, user: userInfo.data.data });\n if (email) {\n logger.log(`You are already logged into your account (${email}).`);\n } else {\n logger.log('You are already logged in.');\n }\n if (showDashboardLink) {\n logger.log(\n 'To access your dashboard, please copy and paste the following URL into your web browser:'\n );\n logger.log(chalk.underline(`${apiConfig.dashboardBaseUrl}/projects`));\n }\n return true;\n } catch (e) {\n logger.debug('Failed to fetch user info', e);\n }\n }\n }\n\n let cliConfig: CloudCliConfig;\n try {\n logger.info('🔌 Connecting...');\n const config = await cloudApiService.config();\n cliConfig = config.data;\n } catch (e: unknown) {\n logger.error('🥲 Oops! Something went wrong while logging you in. Please try again.');\n logger.debug(e);\n return false;\n }\n await trackEvent(ctx, cloudApiService, 'willLoginAttempt', {\n ...(promptExperiment && { promptExperiment }),\n });\n\n logger.debug('🔐 Creating device authentication request...', {\n client_id: cliConfig.clientId,\n scope: cliConfig.scope,\n audience: cliConfig.audience,\n });\n const deviceAuthResponse = (await axios\n .post(cliConfig.deviceCodeAuthUrl, {\n client_id: cliConfig.clientId,\n scope: cliConfig.scope,\n audience: cliConfig.audience,\n })\n .catch((e: AxiosError) => {\n logger.error('There was an issue with the authentication process. Please try again.');\n if (e.message) {\n logger.debug(e.message, e);\n } else {\n logger.debug(e);\n }\n })) as AxiosResponse;\n\n openModule.then((open) => {\n open.default(deviceAuthResponse.data.verification_uri_complete).catch((e: Error) => {\n logger.error('We encountered an issue opening the browser. Please try again later.');\n logger.debug(e.message, e);\n });\n });\n\n logger.log('If a browser tab does not open automatically, please follow the next steps:');\n logger.log(\n `1. Open this url in your device: ${deviceAuthResponse.data.verification_uri_complete}`\n );\n logger.log(\n `2. Enter the following code: ${deviceAuthResponse.data.user_code} and confirm to login.\\n`\n );\n\n const tokenPayload = {\n grant_type: 'urn:ietf:params:oauth:grant-type:device_code',\n device_code: deviceAuthResponse.data.device_code,\n client_id: cliConfig.clientId,\n };\n\n let isAuthenticated = false;\n\n const authenticate = async () => {\n const spinner = logger.spinner('Waiting for authentication');\n spinner.start();\n const spinnerFail = () => spinner.fail('Authentication failed!');\n\n while (!isAuthenticated) {\n try {\n const tokenResponse = await axios.post(cliConfig.tokenUrl, tokenPayload);\n const authTokenData = tokenResponse.data;\n\n if (tokenResponse.status === 200) {\n // Token validation\n try {\n logger.debug('🔐 Validating token...');\n await tokenService.validateToken(authTokenData.id_token, cliConfig.jwksUrl);\n logger.debug('🔐 Token validation successful!');\n } catch (e: any) {\n logger.debug(e);\n spinnerFail();\n throw new Error('Unable to proceed: Token validation failed');\n }\n\n logger.debug('🔍 Fetching user information...');\n const cloudApiServiceWithToken = await cloudApiFactory(ctx, authTokenData.access_token);\n // Call to get user info to create the user in DB if not exists\n await cloudApiServiceWithToken.getUserInfo();\n logger.debug('🔍 User information fetched successfully!');\n\n try {\n logger.debug('📝 Saving login information...');\n await tokenService.saveToken(authTokenData.access_token);\n logger.debug('📝 Login information saved successfully!');\n isAuthenticated = true;\n } catch (e) {\n logger.error(\n 'There was a problem saving your login information. Please try logging in again.'\n );\n logger.debug(e);\n spinnerFail();\n return false;\n }\n }\n } catch (e: any) {\n if (e.message === 'Unable to proceed: Token validation failed') {\n logger.error(\n 'There seems to be a problem with your login information. Please try logging in again.'\n );\n spinnerFail();\n await trackEvent(ctx, cloudApiService, 'didNotLogin', {\n loginMethod: 'cli',\n ...(promptExperiment && { promptExperiment }),\n });\n return false;\n }\n if (\n e.response?.data.error &&\n !['authorization_pending', 'slow_down'].includes(e!.response.data.error)\n ) {\n logger.debug(e);\n spinnerFail();\n await trackEvent(ctx, cloudApiService, 'didNotLogin', {\n loginMethod: 'cli',\n ...(promptExperiment && { promptExperiment }),\n });\n return false;\n }\n // Await interval before retrying\n await new Promise((resolve) => {\n setTimeout(resolve, deviceAuthResponse.data.interval * 1000);\n });\n }\n }\n spinner.succeed('Authentication successful!');\n if (showDashboardLink) {\n logger.log('You are now logged into Strapi Cloud.');\n logger.log(\n 'To access your dashboard, please copy and paste the following URL into your web browser:'\n );\n logger.log(chalk.underline(`${apiConfig.dashboardBaseUrl}/projects`));\n }\n await trackEvent(ctx, cloudApiService, 'didLogin', {\n loginMethod: 'cli',\n ...(promptExperiment && { promptExperiment }),\n });\n };\n\n await authenticate();\n return isAuthenticated;\n}\n"],"names":["openModule","promptLogin","ctx","default","inquirer","response","prompt","type","name","message","login","loginSuccessful","loginAction","showDashboardLink","logger","promptExperiment","tokenService","tokenServiceFactory","existingToken","retrieveToken","cloudApiService","cloudApiFactory","undefined","isTokenValid","userInfo","getUserInfo","email","data","setContext","user","log","chalk","underline","apiConfig","dashboardBaseUrl","e","debug","cliConfig","info","config","error","trackEvent","client_id","clientId","scope","audience","deviceAuthResponse","axios","post","deviceCodeAuthUrl","catch","then","open","verification_uri_complete","user_code","tokenPayload","grant_type","device_code","isAuthenticated","authenticate","spinner","start","spinnerFail","fail","tokenResponse","tokenUrl","authTokenData","status","validateToken","id_token","jwksUrl","Error","cloudApiServiceWithToken","access_token","saveToken","loginMethod","includes","Promise","resolve","setTimeout","interval","succeed"],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var version = "5.48.0";
5
+ var version = "5.49.0";
6
6
  var packageJson = {
7
7
  version: version};
8
8
 
@@ -1,4 +1,4 @@
1
- var version = "5.48.0";
1
+ var version = "5.49.0";
2
2
  var packageJson = {
3
3
  version: version};
4
4
 
@@ -2,6 +2,10 @@
2
2
 
3
3
  var EventSource = require('eventsource');
4
4
 
5
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
6
+
7
+ var EventSource__default = /*#__PURE__*/_interopDefault(EventSource);
8
+
5
9
  const buildLogsServiceFactory = ({ logger })=>{
6
10
  return async (url, token, cliConfig)=>{
7
11
  const CONN_TIMEOUT = Number(cliConfig.buildLogsConnectionTimeout);
@@ -12,7 +16,7 @@ const buildLogsServiceFactory = ({ logger })=>{
12
16
  const connect = (url)=>{
13
17
  const logsSpinner = logger.spinner('Connecting to the server to get build logs\n').start();
14
18
  logsSpinner.indent = 1;
15
- const es = new EventSource(`${url}`, {
19
+ const es = new EventSource__default.default(`${url}`, {
16
20
  headers: {
17
21
  Authorization: `Bearer ${token}`
18
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"build-logs.js","sources":["../../src/services/build-logs.ts"],"sourcesContent":["import EventSource from 'eventsource';\nimport { CLIContext, type CloudCliConfig } from '../types';\n\nconst buildLogsServiceFactory = ({ logger }: CLIContext) => {\n return async (url: string, token: string, cliConfig: CloudCliConfig) => {\n const CONN_TIMEOUT = Number(cliConfig.buildLogsConnectionTimeout);\n const MAX_RETRIES = Number(cliConfig.buildLogsMaxRetries);\n\n return new Promise((resolve, reject) => {\n let timeoutId: NodeJS.Timeout | null = null;\n let retries = 0;\n\n const connect = (url: string) => {\n const logsSpinner = logger.spinner('Connecting to the server to get build logs\\n').start();\n logsSpinner.indent = 1;\n const es = new EventSource(`${url}`, {\n headers: {\n Authorization: `Bearer ${token}`,\n },\n });\n\n const clearExistingTimeout = () => {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n };\n\n const resetTimeout = () => {\n clearExistingTimeout();\n timeoutId = setTimeout(() => {\n if (logsSpinner.isSpinning) {\n logsSpinner.fail(\n 'We were unable to connect to the server to get build logs at this time. This could be due to a temporary issue.'\n );\n }\n es.close();\n reject(new Error('Connection timed out'));\n }, CONN_TIMEOUT);\n };\n\n es.onopen = resetTimeout;\n\n es.addEventListener('finished', (event) => {\n const data = JSON.parse(event.data);\n logger.log(data.msg);\n es.close();\n clearExistingTimeout();\n resolve(null);\n });\n\n es.addEventListener('log', (event) => {\n if (logsSpinner.isSpinning) {\n logsSpinner.succeed();\n }\n resetTimeout();\n const data = JSON.parse(event.data);\n logger.log(data.msg);\n });\n\n es.onerror = async () => {\n retries += 1;\n if (retries > MAX_RETRIES) {\n logsSpinner.fail(\n 'We were unable to connect to the server to get build logs at this time.'\n );\n es.close();\n clearExistingTimeout(); // Important to clear the event loop from remaining timeout - avoid to wait for nothing while the timeout is running\n reject(new Error('Max retries reached'));\n }\n };\n };\n\n connect(url);\n });\n };\n};\n\nexport { buildLogsServiceFactory };\n"],"names":["buildLogsServiceFactory","logger","url","token","cliConfig","CONN_TIMEOUT","Number","buildLogsConnectionTimeout","MAX_RETRIES","buildLogsMaxRetries","Promise","resolve","reject","timeoutId","retries","connect","logsSpinner","spinner","start","indent","es","EventSource","headers","Authorization","clearExistingTimeout","clearTimeout","resetTimeout","setTimeout","isSpinning","fail","close","Error","onopen","addEventListener","event","data","JSON","parse","log","msg","succeed","onerror"],"mappings":"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"}
1
+ {"version":3,"file":"build-logs.js","sources":["../../src/services/build-logs.ts"],"sourcesContent":["import EventSource from 'eventsource';\nimport { CLIContext, type CloudCliConfig } from '../types';\n\nconst buildLogsServiceFactory = ({ logger }: CLIContext) => {\n return async (url: string, token: string, cliConfig: CloudCliConfig) => {\n const CONN_TIMEOUT = Number(cliConfig.buildLogsConnectionTimeout);\n const MAX_RETRIES = Number(cliConfig.buildLogsMaxRetries);\n\n return new Promise((resolve, reject) => {\n let timeoutId: NodeJS.Timeout | null = null;\n let retries = 0;\n\n const connect = (url: string) => {\n const logsSpinner = logger.spinner('Connecting to the server to get build logs\\n').start();\n logsSpinner.indent = 1;\n const es = new EventSource(`${url}`, {\n headers: {\n Authorization: `Bearer ${token}`,\n },\n });\n\n const clearExistingTimeout = () => {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n };\n\n const resetTimeout = () => {\n clearExistingTimeout();\n timeoutId = setTimeout(() => {\n if (logsSpinner.isSpinning) {\n logsSpinner.fail(\n 'We were unable to connect to the server to get build logs at this time. This could be due to a temporary issue.'\n );\n }\n es.close();\n reject(new Error('Connection timed out'));\n }, CONN_TIMEOUT);\n };\n\n es.onopen = resetTimeout;\n\n es.addEventListener('finished', (event) => {\n const data = JSON.parse(event.data);\n logger.log(data.msg);\n es.close();\n clearExistingTimeout();\n resolve(null);\n });\n\n es.addEventListener('log', (event) => {\n if (logsSpinner.isSpinning) {\n logsSpinner.succeed();\n }\n resetTimeout();\n const data = JSON.parse(event.data);\n logger.log(data.msg);\n });\n\n es.onerror = async () => {\n retries += 1;\n if (retries > MAX_RETRIES) {\n logsSpinner.fail(\n 'We were unable to connect to the server to get build logs at this time.'\n );\n es.close();\n clearExistingTimeout(); // Important to clear the event loop from remaining timeout - avoid to wait for nothing while the timeout is running\n reject(new Error('Max retries reached'));\n }\n };\n };\n\n connect(url);\n });\n };\n};\n\nexport { buildLogsServiceFactory };\n"],"names":["buildLogsServiceFactory","logger","url","token","cliConfig","CONN_TIMEOUT","Number","buildLogsConnectionTimeout","MAX_RETRIES","buildLogsMaxRetries","Promise","resolve","reject","timeoutId","retries","connect","logsSpinner","spinner","start","indent","es","EventSource","headers","Authorization","clearExistingTimeout","clearTimeout","resetTimeout","setTimeout","isSpinning","fail","close","Error","onopen","addEventListener","event","data","JSON","parse","log","msg","succeed","onerror"],"mappings":"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"}
@@ -8,18 +8,24 @@ var local = require('../config/local.js');
8
8
  var _package = require('../package.json.js');
9
9
  var context = require('./context.js');
10
10
 
11
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
12
+
13
+ var axios__default = /*#__PURE__*/_interopDefault(axios);
14
+ var fse__default = /*#__PURE__*/_interopDefault(fse);
15
+ var os__default = /*#__PURE__*/_interopDefault(os);
16
+
11
17
  const VERSION = 'v3';
12
18
  async function cloudApiFactory({ logger }, token) {
13
19
  const localConfig = await local.getLocalConfig();
14
20
  const customHeaders = {
15
21
  'x-device-id': localConfig.installId,
16
22
  'x-app-version': _package.default.version,
17
- 'x-os-name': os.type(),
18
- 'x-os-version': os.version(),
23
+ 'x-os-name': os__default.default.type(),
24
+ 'x-os-version': os__default.default.version(),
19
25
  'x-language': Intl.DateTimeFormat().resolvedOptions().locale,
20
26
  'x-node-version': process.versions.node
21
27
  };
22
- const axiosCloudAPI = axios.create({
28
+ const axiosCloudAPI = axios__default.default.create({
23
29
  baseURL: `${api.apiConfig.apiBaseUrl}/${VERSION}`,
24
30
  headers: {
25
31
  'Content-Type': 'application/json',
@@ -32,7 +38,7 @@ async function cloudApiFactory({ logger }, token) {
32
38
  return {
33
39
  deploy ({ filePath, project }, { onUploadProgress }) {
34
40
  return axiosCloudAPI.post(`/deploy/${project.name}`, {
35
- file: fse.createReadStream(filePath),
41
+ file: fse__default.default.createReadStream(filePath),
36
42
  targetEnvironment: project.targetEnvironment
37
43
  }, {
38
44
  headers: {
@@ -1 +1 @@
1
- {"version":3,"file":"cli-api.js","sources":["../../src/services/cli-api.ts"],"sourcesContent":["import axios, { type AxiosResponse } from 'axios';\nimport fse from 'fs-extra';\nimport os from 'os';\nimport { apiConfig } from '../config/api';\nimport type { CLIContext, CloudCliConfig, TrackPayload } from '../types';\nimport { getLocalConfig } from '../config/local';\n\nimport packageJson from '../../package.json';\nimport { getContext } from './context';\n\nexport const VERSION = 'v3';\n\nexport type ProjectInfo = {\n id: string;\n name: string;\n targetEnvironment?: string;\n displayName?: string;\n nodeVersion?: string;\n region?: string;\n plan?: string;\n url?: string;\n};\n\nexport type EnvironmentInfo = Record<string, unknown>;\n\nexport type EnvironmentDetails = {\n name: string;\n hasLiveDeployment: boolean;\n hasPendingDeployment: boolean;\n};\n\nexport type ProjectInput = Omit<ProjectInfo, 'id'>;\n\nexport type DeployResponse = {\n build_id: string;\n image: string;\n};\n\nexport type ListProjectsResponse = {\n data: {\n data: string;\n };\n};\n\nexport type ListEnvironmentsResponse = {\n data: {\n data: EnvironmentInfo[] | Record<string, never>;\n };\n};\n\nexport type ListLinkProjectsResponse = {\n data: {\n data: ProjectInfo[] | Record<string, never>;\n };\n};\n\nexport type ListLinkEnvironmentsResponse = {\n data: {\n data: EnvironmentDetails[] | Record<string, never>;\n };\n};\n\nexport type GetProjectResponse = {\n data: {\n displayName: string;\n updatedAt: string;\n suspendedAt?: string;\n isTrial: boolean;\n environments: string[];\n environmentsDetails: EnvironmentDetails[];\n };\n metadata: {\n dashboardUrls: {\n project: string;\n deployments: string;\n };\n };\n};\n\nexport type CreateTrialResponse = {\n licenseKey: string;\n};\n\nexport type CreateProjectResponse = {\n name: string;\n environmentInternalName: string;\n url?: string;\n};\n\nexport interface CloudApiService {\n deploy(\n deployInput: {\n filePath: string;\n project: { name: string; targetEnvironment?: string };\n },\n {\n onUploadProgress,\n }: {\n onUploadProgress: (progressEvent: { loaded: number; total?: number }) => void;\n }\n ): Promise<AxiosResponse<DeployResponse>>;\n\n createProject(createProjectInput: ProjectInput): Promise<{\n data: CreateProjectResponse;\n status: number;\n }>;\n\n getUserInfo(): Promise<AxiosResponse>;\n\n config(): Promise<AxiosResponse<CloudCliConfig>>;\n\n listProjects(): Promise<AxiosResponse<ListProjectsResponse>>;\n\n listLinkProjects(): Promise<AxiosResponse<ListLinkProjectsResponse>>;\n\n listEnvironments(project: { name: string }): Promise<AxiosResponse<ListEnvironmentsResponse>>;\n\n listLinkEnvironments(project: {\n name: string;\n }): Promise<AxiosResponse<ListLinkEnvironmentsResponse>>;\n\n getProject(project: { name: string }): Promise<AxiosResponse<GetProjectResponse>>;\n\n createTrial(createTrialInput: {\n strapiVersion: string;\n }): Promise<AxiosResponse<CreateTrialResponse>>;\n\n track(event: string, payload?: TrackPayload): Promise<AxiosResponse<void>>;\n}\n\nexport async function cloudApiFactory(\n { logger }: { logger: CLIContext['logger'] },\n token?: string\n): Promise<CloudApiService> {\n const localConfig = await getLocalConfig();\n const customHeaders = {\n 'x-device-id': localConfig.installId,\n 'x-app-version': packageJson.version,\n 'x-os-name': os.type(),\n 'x-os-version': os.version(),\n 'x-language': Intl.DateTimeFormat().resolvedOptions().locale,\n 'x-node-version': process.versions.node,\n };\n const axiosCloudAPI = axios.create({\n baseURL: `${apiConfig.apiBaseUrl}/${VERSION}`,\n headers: {\n 'Content-Type': 'application/json',\n ...customHeaders,\n },\n });\n\n if (token) {\n axiosCloudAPI.defaults.headers.Authorization = `Bearer ${token}`;\n }\n\n return {\n deploy({ filePath, project }, { onUploadProgress }) {\n return axiosCloudAPI.post(\n `/deploy/${project.name}`,\n { file: fse.createReadStream(filePath), targetEnvironment: project.targetEnvironment },\n {\n headers: {\n 'Content-Type': 'multipart/form-data',\n },\n onUploadProgress,\n }\n );\n },\n\n async createProject({ name, nodeVersion, region, plan }) {\n const response = await axiosCloudAPI.post('/project', {\n projectName: name,\n region,\n nodeVersion,\n plan,\n });\n\n return {\n data: {\n id: response.data.id,\n name: response.data.name,\n environmentInternalName: response.data.environmentInternalName,\n },\n status: response.status,\n };\n },\n\n getUserInfo() {\n return axiosCloudAPI.get('/user');\n },\n\n async config(): Promise<AxiosResponse<CloudCliConfig>> {\n try {\n const response = await axiosCloudAPI.get('/config');\n\n if (response.status !== 200) {\n throw new Error('Error fetching cloud CLI config from the server.');\n }\n\n return response;\n } catch (error) {\n logger.debug(\n \"🥲 Oops! Couldn't retrieve the cloud CLI config from the server. Please try again.\"\n );\n\n throw error;\n }\n },\n\n async listProjects(): Promise<AxiosResponse<ListProjectsResponse>> {\n try {\n const response = await axiosCloudAPI.get('/projects');\n\n if (response.status !== 200) {\n throw new Error('Error fetching cloud projects from the server.');\n }\n\n return response;\n } catch (error) {\n logger.debug(\n \"🥲 Oops! Couldn't retrieve your project's list from the server. Please try again.\"\n );\n throw error;\n }\n },\n\n async listLinkProjects(): Promise<AxiosResponse<ListLinkProjectsResponse, unknown>> {\n try {\n const response = await axiosCloudAPI.get('/projects-linkable');\n\n if (response.status !== 200) {\n throw new Error('Error fetching cloud projects from the server.');\n }\n\n return response;\n } catch (error) {\n logger.debug(\n \"🥲 Oops! Couldn't retrieve your project's list from the server. Please try again.\"\n );\n throw error;\n }\n },\n\n async listEnvironments({ name }): Promise<AxiosResponse<ListEnvironmentsResponse>> {\n try {\n const response = await axiosCloudAPI.get(`/projects/${name}/environments`);\n\n if (response.status !== 200) {\n throw new Error('Error fetching cloud environments from the server.');\n }\n\n return response;\n } catch (error) {\n logger.debug(\n \"🥲 Oops! Couldn't retrieve your project's environments from the server. Please try again.\"\n );\n throw error;\n }\n },\n\n async listLinkEnvironments({ name }): Promise<AxiosResponse<ListLinkEnvironmentsResponse>> {\n try {\n const response = await axiosCloudAPI.get(`/projects/${name}/environments-linkable`);\n\n if (response.status !== 200) {\n throw new Error('Error fetching cloud environments from the server.');\n }\n\n return response;\n } catch (error) {\n logger.debug(\n \"🥲 Oops! Couldn't retrieve your project's environments from the server. Please try again.\"\n );\n throw error;\n }\n },\n\n async getProject({ name }): Promise<AxiosResponse<GetProjectResponse>> {\n try {\n const response = await axiosCloudAPI.get(`/projects/${name}`);\n\n if (response.status !== 200) {\n throw new Error(\"Error fetching project's details.\");\n }\n\n return response;\n } catch (error) {\n logger.debug(\n \"🥲 Oops! There was a problem retrieving your project's details. Please try again.\"\n );\n throw error;\n }\n },\n\n async createTrial({ strapiVersion }): Promise<AxiosResponse<CreateTrialResponse>> {\n try {\n const response = await axiosCloudAPI.post(`/cms-trial-request`, { strapiVersion });\n\n if (response.status !== 200) {\n throw new Error('Error creating trial.');\n }\n\n return response;\n } catch (error) {\n logger.debug('🥲 Oops! There was a problem creating your trial. Please try again.');\n throw error;\n }\n },\n\n track(event, payload = {}) {\n const ctx = getContext();\n if (ctx?.user?.id) {\n axiosCloudAPI.defaults.headers['x-user-id'] = ctx.user.id;\n }\n return axiosCloudAPI.post<void>('/track', {\n event,\n payload,\n });\n },\n };\n}\n"],"names":["VERSION","cloudApiFactory","logger","token","localConfig","getLocalConfig","customHeaders","installId","packageJson","version","os","type","Intl","DateTimeFormat","resolvedOptions","locale","process","versions","node","axiosCloudAPI","axios","create","baseURL","apiConfig","apiBaseUrl","headers","defaults","Authorization","deploy","filePath","project","onUploadProgress","post","name","file","fse","createReadStream","targetEnvironment","createProject","nodeVersion","region","plan","response","projectName","data","id","environmentInternalName","status","getUserInfo","get","config","Error","error","debug","listProjects","listLinkProjects","listEnvironments","listLinkEnvironments","getProject","createTrial","strapiVersion","track","event","payload","ctx","getContext","user"],"mappings":"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"}
1
+ {"version":3,"file":"cli-api.js","sources":["../../src/services/cli-api.ts"],"sourcesContent":["import axios, { type AxiosResponse } from 'axios';\nimport fse from 'fs-extra';\nimport os from 'os';\nimport { apiConfig } from '../config/api';\nimport type { CLIContext, CloudCliConfig, TrackPayload } from '../types';\nimport { getLocalConfig } from '../config/local';\n\nimport packageJson from '../../package.json';\nimport { getContext } from './context';\n\nexport const VERSION = 'v3';\n\nexport type ProjectInfo = {\n id: string;\n name: string;\n targetEnvironment?: string;\n displayName?: string;\n nodeVersion?: string;\n region?: string;\n plan?: string;\n url?: string;\n};\n\nexport type EnvironmentInfo = Record<string, unknown>;\n\nexport type EnvironmentDetails = {\n name: string;\n hasLiveDeployment: boolean;\n hasPendingDeployment: boolean;\n};\n\nexport type ProjectInput = Omit<ProjectInfo, 'id'>;\n\nexport type DeployResponse = {\n build_id: string;\n image: string;\n};\n\nexport type ListProjectsResponse = {\n data: {\n data: string;\n };\n};\n\nexport type ListEnvironmentsResponse = {\n data: {\n data: EnvironmentInfo[] | Record<string, never>;\n };\n};\n\nexport type ListLinkProjectsResponse = {\n data: {\n data: ProjectInfo[] | Record<string, never>;\n };\n};\n\nexport type ListLinkEnvironmentsResponse = {\n data: {\n data: EnvironmentDetails[] | Record<string, never>;\n };\n};\n\nexport type GetProjectResponse = {\n data: {\n displayName: string;\n updatedAt: string;\n suspendedAt?: string;\n isTrial: boolean;\n environments: string[];\n environmentsDetails: EnvironmentDetails[];\n };\n metadata: {\n dashboardUrls: {\n project: string;\n deployments: string;\n };\n };\n};\n\nexport type CreateTrialResponse = {\n licenseKey: string;\n};\n\nexport type CreateProjectResponse = {\n name: string;\n environmentInternalName: string;\n url?: string;\n};\n\nexport interface CloudApiService {\n deploy(\n deployInput: {\n filePath: string;\n project: { name: string; targetEnvironment?: string };\n },\n {\n onUploadProgress,\n }: {\n onUploadProgress: (progressEvent: { loaded: number; total?: number }) => void;\n }\n ): Promise<AxiosResponse<DeployResponse>>;\n\n createProject(createProjectInput: ProjectInput): Promise<{\n data: CreateProjectResponse;\n status: number;\n }>;\n\n getUserInfo(): Promise<AxiosResponse>;\n\n config(): Promise<AxiosResponse<CloudCliConfig>>;\n\n listProjects(): Promise<AxiosResponse<ListProjectsResponse>>;\n\n listLinkProjects(): Promise<AxiosResponse<ListLinkProjectsResponse>>;\n\n listEnvironments(project: { name: string }): Promise<AxiosResponse<ListEnvironmentsResponse>>;\n\n listLinkEnvironments(project: {\n name: string;\n }): Promise<AxiosResponse<ListLinkEnvironmentsResponse>>;\n\n getProject(project: { name: string }): Promise<AxiosResponse<GetProjectResponse>>;\n\n createTrial(createTrialInput: {\n strapiVersion: string;\n }): Promise<AxiosResponse<CreateTrialResponse>>;\n\n track(event: string, payload?: TrackPayload): Promise<AxiosResponse<void>>;\n}\n\nexport async function cloudApiFactory(\n { logger }: { logger: CLIContext['logger'] },\n token?: string\n): Promise<CloudApiService> {\n const localConfig = await getLocalConfig();\n const customHeaders = {\n 'x-device-id': localConfig.installId,\n 'x-app-version': packageJson.version,\n 'x-os-name': os.type(),\n 'x-os-version': os.version(),\n 'x-language': Intl.DateTimeFormat().resolvedOptions().locale,\n 'x-node-version': process.versions.node,\n };\n const axiosCloudAPI = axios.create({\n baseURL: `${apiConfig.apiBaseUrl}/${VERSION}`,\n headers: {\n 'Content-Type': 'application/json',\n ...customHeaders,\n },\n });\n\n if (token) {\n axiosCloudAPI.defaults.headers.Authorization = `Bearer ${token}`;\n }\n\n return {\n deploy({ filePath, project }, { onUploadProgress }) {\n return axiosCloudAPI.post(\n `/deploy/${project.name}`,\n { file: fse.createReadStream(filePath), targetEnvironment: project.targetEnvironment },\n {\n headers: {\n 'Content-Type': 'multipart/form-data',\n },\n onUploadProgress,\n }\n );\n },\n\n async createProject({ name, nodeVersion, region, plan }) {\n const response = await axiosCloudAPI.post('/project', {\n projectName: name,\n region,\n nodeVersion,\n plan,\n });\n\n return {\n data: {\n id: response.data.id,\n name: response.data.name,\n environmentInternalName: response.data.environmentInternalName,\n },\n status: response.status,\n };\n },\n\n getUserInfo() {\n return axiosCloudAPI.get('/user');\n },\n\n async config(): Promise<AxiosResponse<CloudCliConfig>> {\n try {\n const response = await axiosCloudAPI.get('/config');\n\n if (response.status !== 200) {\n throw new Error('Error fetching cloud CLI config from the server.');\n }\n\n return response;\n } catch (error) {\n logger.debug(\n \"🥲 Oops! Couldn't retrieve the cloud CLI config from the server. Please try again.\"\n );\n\n throw error;\n }\n },\n\n async listProjects(): Promise<AxiosResponse<ListProjectsResponse>> {\n try {\n const response = await axiosCloudAPI.get('/projects');\n\n if (response.status !== 200) {\n throw new Error('Error fetching cloud projects from the server.');\n }\n\n return response;\n } catch (error) {\n logger.debug(\n \"🥲 Oops! Couldn't retrieve your project's list from the server. Please try again.\"\n );\n throw error;\n }\n },\n\n async listLinkProjects(): Promise<AxiosResponse<ListLinkProjectsResponse, unknown>> {\n try {\n const response = await axiosCloudAPI.get('/projects-linkable');\n\n if (response.status !== 200) {\n throw new Error('Error fetching cloud projects from the server.');\n }\n\n return response;\n } catch (error) {\n logger.debug(\n \"🥲 Oops! Couldn't retrieve your project's list from the server. Please try again.\"\n );\n throw error;\n }\n },\n\n async listEnvironments({ name }): Promise<AxiosResponse<ListEnvironmentsResponse>> {\n try {\n const response = await axiosCloudAPI.get(`/projects/${name}/environments`);\n\n if (response.status !== 200) {\n throw new Error('Error fetching cloud environments from the server.');\n }\n\n return response;\n } catch (error) {\n logger.debug(\n \"🥲 Oops! Couldn't retrieve your project's environments from the server. Please try again.\"\n );\n throw error;\n }\n },\n\n async listLinkEnvironments({ name }): Promise<AxiosResponse<ListLinkEnvironmentsResponse>> {\n try {\n const response = await axiosCloudAPI.get(`/projects/${name}/environments-linkable`);\n\n if (response.status !== 200) {\n throw new Error('Error fetching cloud environments from the server.');\n }\n\n return response;\n } catch (error) {\n logger.debug(\n \"🥲 Oops! Couldn't retrieve your project's environments from the server. Please try again.\"\n );\n throw error;\n }\n },\n\n async getProject({ name }): Promise<AxiosResponse<GetProjectResponse>> {\n try {\n const response = await axiosCloudAPI.get(`/projects/${name}`);\n\n if (response.status !== 200) {\n throw new Error(\"Error fetching project's details.\");\n }\n\n return response;\n } catch (error) {\n logger.debug(\n \"🥲 Oops! There was a problem retrieving your project's details. Please try again.\"\n );\n throw error;\n }\n },\n\n async createTrial({ strapiVersion }): Promise<AxiosResponse<CreateTrialResponse>> {\n try {\n const response = await axiosCloudAPI.post(`/cms-trial-request`, { strapiVersion });\n\n if (response.status !== 200) {\n throw new Error('Error creating trial.');\n }\n\n return response;\n } catch (error) {\n logger.debug('🥲 Oops! There was a problem creating your trial. Please try again.');\n throw error;\n }\n },\n\n track(event, payload = {}) {\n const ctx = getContext();\n if (ctx?.user?.id) {\n axiosCloudAPI.defaults.headers['x-user-id'] = ctx.user.id;\n }\n return axiosCloudAPI.post<void>('/track', {\n event,\n payload,\n });\n },\n };\n}\n"],"names":["VERSION","cloudApiFactory","logger","token","localConfig","getLocalConfig","customHeaders","installId","packageJson","version","os","type","Intl","DateTimeFormat","resolvedOptions","locale","process","versions","node","axiosCloudAPI","axios","create","baseURL","apiConfig","apiBaseUrl","headers","defaults","Authorization","deploy","filePath","project","onUploadProgress","post","name","file","fse","createReadStream","targetEnvironment","createProject","nodeVersion","region","plan","response","projectName","data","id","environmentInternalName","status","getUserInfo","get","config","Error","error","debug","listProjects","listLinkProjects","listEnvironments","listLinkEnvironments","getProject","createTrial","strapiVersion","track","event","payload","ctx","getContext","user"],"mappings":"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"}
@@ -5,7 +5,10 @@ var stringify = require('fast-safe-stringify');
5
5
  var ora = require('ora');
6
6
  var cliProgress = require('cli-progress');
7
7
 
8
- function _interopNamespaceDefault(e) {
8
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
9
+
10
+ function _interopNamespace(e) {
11
+ if (e && e.__esModule) return e;
9
12
  var n = Object.create(null);
10
13
  if (e) {
11
14
  Object.keys(e).forEach(function (k) {
@@ -22,10 +25,13 @@ function _interopNamespaceDefault(e) {
22
25
  return Object.freeze(n);
23
26
  }
24
27
 
25
- var cliProgress__namespace = /*#__PURE__*/_interopNamespaceDefault(cliProgress);
28
+ var chalk__default = /*#__PURE__*/_interopDefault(chalk);
29
+ var stringify__default = /*#__PURE__*/_interopDefault(stringify);
30
+ var ora__default = /*#__PURE__*/_interopDefault(ora);
31
+ var cliProgress__namespace = /*#__PURE__*/_interopNamespace(cliProgress);
26
32
 
27
33
  const stringifyArg = (arg)=>{
28
- return typeof arg === 'object' ? stringify(arg) : arg;
34
+ return typeof arg === 'object' ? stringify__default.default(arg) : arg;
29
35
  };
30
36
  const createLogger = (options = {})=>{
31
37
  const { silent = false, debug = false, timestamp = true } = options;
@@ -44,39 +50,39 @@ const createLogger = (options = {})=>{
44
50
  if (silent || !debug) {
45
51
  return;
46
52
  }
47
- console.log(chalk.cyan(`[DEBUG]${timestamp ? `\t[${new Date().toISOString()}]` : ''}`), ...args.map(stringifyArg));
53
+ console.log(chalk__default.default.cyan(`[DEBUG]${timestamp ? `\t[${new Date().toISOString()}]` : ''}`), ...args.map(stringifyArg));
48
54
  },
49
55
  info (...args) {
50
56
  if (silent) {
51
57
  return;
52
58
  }
53
- console.info(chalk.blue(`[INFO]${timestamp ? `\t[${new Date().toISOString()}]` : ''}`), ...args.map(stringifyArg));
59
+ console.info(chalk__default.default.blue(`[INFO]${timestamp ? `\t[${new Date().toISOString()}]` : ''}`), ...args.map(stringifyArg));
54
60
  },
55
61
  log (...args) {
56
62
  if (silent) {
57
63
  return;
58
64
  }
59
- console.info(chalk.blue(`${timestamp ? `\t[${new Date().toISOString()}]` : ''}`), ...args.map(stringifyArg));
65
+ console.info(chalk__default.default.blue(`${timestamp ? `\t[${new Date().toISOString()}]` : ''}`), ...args.map(stringifyArg));
60
66
  },
61
67
  success (...args) {
62
68
  if (silent) {
63
69
  return;
64
70
  }
65
- console.info(chalk.green(`[SUCCESS]${timestamp ? `\t[${new Date().toISOString()}]` : ''}`), ...args.map(stringifyArg));
71
+ console.info(chalk__default.default.green(`[SUCCESS]${timestamp ? `\t[${new Date().toISOString()}]` : ''}`), ...args.map(stringifyArg));
66
72
  },
67
73
  warn (...args) {
68
74
  state.warning += 1;
69
75
  if (silent) {
70
76
  return;
71
77
  }
72
- console.warn(chalk.yellow(`[WARN]${timestamp ? `\t[${new Date().toISOString()}]` : ''}`), ...args.map(stringifyArg));
78
+ console.warn(chalk__default.default.yellow(`[WARN]${timestamp ? `\t[${new Date().toISOString()}]` : ''}`), ...args.map(stringifyArg));
73
79
  },
74
80
  error (...args) {
75
81
  state.errors += 1;
76
82
  if (silent) {
77
83
  return;
78
84
  }
79
- console.error(chalk.red(`[ERROR]${timestamp ? `\t[${new Date().toISOString()}]` : ''}`), ...args.map(stringifyArg));
85
+ console.error(chalk__default.default.red(`[ERROR]${timestamp ? `\t[${new Date().toISOString()}]` : ''}`), ...args.map(stringifyArg));
80
86
  },
81
87
  // @ts-expect-error – returning a subpart of ora is fine because the types tell us what is what.
82
88
  spinner (text) {
@@ -95,7 +101,7 @@ const createLogger = (options = {})=>{
95
101
  isSpinning: false
96
102
  };
97
103
  }
98
- return ora(text);
104
+ return ora__default.default(text);
99
105
  },
100
106
  progressBar (totalSize, text) {
101
107
  if (silent) {
@@ -112,7 +118,7 @@ const createLogger = (options = {})=>{
112
118
  };
113
119
  }
114
120
  const progressBar = new cliProgress__namespace.SingleBar({
115
- format: `${text ? `${text} |` : ''}${chalk.green('{bar}')}| {percentage}%`,
121
+ format: `${text ? `${text} |` : ''}${chalk__default.default.green('{bar}')}| {percentage}%`,
116
122
  barCompleteChar: '\u2588',
117
123
  barIncompleteChar: '\u2591',
118
124
  hideCursor: true,
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sources":["../../src/services/logger.ts"],"sourcesContent":["import chalk from 'chalk';\nimport stringify from 'fast-safe-stringify';\n\nimport ora from 'ora';\nimport * as cliProgress from 'cli-progress';\n\nexport interface LoggerOptions {\n silent?: boolean;\n debug?: boolean;\n timestamp?: boolean;\n}\n\nexport interface Logger {\n warnings: number;\n errors: number;\n debug: (...args: unknown[]) => void;\n info: (...args: unknown[]) => void;\n success: (...args: unknown[]) => void;\n warn: (...args: unknown[]) => void;\n error: (...args: unknown[]) => void;\n log: (...args: unknown[]) => void;\n spinner: (text: string) => Pick<ora.Ora, 'succeed' | 'fail' | 'start' | 'text' | 'isSpinning'>;\n progressBar: (\n totalSize: number,\n text: string\n ) => Pick<cliProgress.SingleBar, 'start' | 'stop' | 'update'>;\n}\n\nconst stringifyArg = (arg: unknown) => {\n return typeof arg === 'object' ? stringify(arg) : arg;\n};\n\nconst createLogger = (options: LoggerOptions = {}): Logger => {\n const { silent = false, debug = false, timestamp = true } = options;\n\n const state = { errors: 0, warning: 0 };\n\n return {\n get warnings() {\n return state.warning;\n },\n\n get errors() {\n return state.errors;\n },\n\n async debug(...args) {\n if (silent || !debug) {\n return;\n }\n\n console.log(\n chalk.cyan(`[DEBUG]${timestamp ? `\\t[${new Date().toISOString()}]` : ''}`),\n ...args.map(stringifyArg)\n );\n },\n\n info(...args) {\n if (silent) {\n return;\n }\n\n console.info(\n chalk.blue(`[INFO]${timestamp ? `\\t[${new Date().toISOString()}]` : ''}`),\n ...args.map(stringifyArg)\n );\n },\n\n log(...args) {\n if (silent) {\n return;\n }\n\n console.info(\n chalk.blue(`${timestamp ? `\\t[${new Date().toISOString()}]` : ''}`),\n ...args.map(stringifyArg)\n );\n },\n\n success(...args) {\n if (silent) {\n return;\n }\n\n console.info(\n chalk.green(`[SUCCESS]${timestamp ? `\\t[${new Date().toISOString()}]` : ''}`),\n ...args.map(stringifyArg)\n );\n },\n\n warn(...args) {\n state.warning += 1;\n\n if (silent) {\n return;\n }\n\n console.warn(\n chalk.yellow(`[WARN]${timestamp ? `\\t[${new Date().toISOString()}]` : ''}`),\n ...args.map(stringifyArg)\n );\n },\n\n error(...args) {\n state.errors += 1;\n\n if (silent) {\n return;\n }\n\n console.error(\n chalk.red(`[ERROR]${timestamp ? `\\t[${new Date().toISOString()}]` : ''}`),\n ...args.map(stringifyArg)\n );\n },\n\n // @ts-expect-error – returning a subpart of ora is fine because the types tell us what is what.\n spinner(text: string) {\n if (silent) {\n return {\n succeed() {\n return this;\n },\n fail() {\n return this;\n },\n start() {\n return this;\n },\n text: '',\n isSpinning: false,\n };\n }\n\n return ora(text);\n },\n\n progressBar(totalSize: number, text: string) {\n if (silent) {\n return {\n start() {\n return this;\n },\n stop() {\n return this;\n },\n update() {\n return this;\n },\n };\n }\n\n const progressBar = new cliProgress.SingleBar({\n format: `${text ? `${text} |` : ''}${chalk.green('{bar}')}| {percentage}%`,\n barCompleteChar: '\\u2588',\n barIncompleteChar: '\\u2591',\n hideCursor: true,\n forceRedraw: true,\n });\n\n progressBar.start(totalSize, 0);\n\n return progressBar;\n },\n };\n};\n\nexport { createLogger };\n"],"names":["stringifyArg","arg","stringify","createLogger","options","silent","debug","timestamp","state","errors","warning","warnings","args","console","log","chalk","cyan","Date","toISOString","map","info","blue","success","green","warn","yellow","error","red","spinner","text","succeed","fail","start","isSpinning","ora","progressBar","totalSize","stop","update","cliProgress","SingleBar","format","barCompleteChar","barIncompleteChar","hideCursor","forceRedraw"],"mappings":"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"}
1
+ {"version":3,"file":"logger.js","sources":["../../src/services/logger.ts"],"sourcesContent":["import chalk from 'chalk';\nimport stringify from 'fast-safe-stringify';\n\nimport ora from 'ora';\nimport * as cliProgress from 'cli-progress';\n\nexport interface LoggerOptions {\n silent?: boolean;\n debug?: boolean;\n timestamp?: boolean;\n}\n\nexport interface Logger {\n warnings: number;\n errors: number;\n debug: (...args: unknown[]) => void;\n info: (...args: unknown[]) => void;\n success: (...args: unknown[]) => void;\n warn: (...args: unknown[]) => void;\n error: (...args: unknown[]) => void;\n log: (...args: unknown[]) => void;\n spinner: (text: string) => Pick<ora.Ora, 'succeed' | 'fail' | 'start' | 'text' | 'isSpinning'>;\n progressBar: (\n totalSize: number,\n text: string\n ) => Pick<cliProgress.SingleBar, 'start' | 'stop' | 'update'>;\n}\n\nconst stringifyArg = (arg: unknown) => {\n return typeof arg === 'object' ? stringify(arg) : arg;\n};\n\nconst createLogger = (options: LoggerOptions = {}): Logger => {\n const { silent = false, debug = false, timestamp = true } = options;\n\n const state = { errors: 0, warning: 0 };\n\n return {\n get warnings() {\n return state.warning;\n },\n\n get errors() {\n return state.errors;\n },\n\n async debug(...args) {\n if (silent || !debug) {\n return;\n }\n\n console.log(\n chalk.cyan(`[DEBUG]${timestamp ? `\\t[${new Date().toISOString()}]` : ''}`),\n ...args.map(stringifyArg)\n );\n },\n\n info(...args) {\n if (silent) {\n return;\n }\n\n console.info(\n chalk.blue(`[INFO]${timestamp ? `\\t[${new Date().toISOString()}]` : ''}`),\n ...args.map(stringifyArg)\n );\n },\n\n log(...args) {\n if (silent) {\n return;\n }\n\n console.info(\n chalk.blue(`${timestamp ? `\\t[${new Date().toISOString()}]` : ''}`),\n ...args.map(stringifyArg)\n );\n },\n\n success(...args) {\n if (silent) {\n return;\n }\n\n console.info(\n chalk.green(`[SUCCESS]${timestamp ? `\\t[${new Date().toISOString()}]` : ''}`),\n ...args.map(stringifyArg)\n );\n },\n\n warn(...args) {\n state.warning += 1;\n\n if (silent) {\n return;\n }\n\n console.warn(\n chalk.yellow(`[WARN]${timestamp ? `\\t[${new Date().toISOString()}]` : ''}`),\n ...args.map(stringifyArg)\n );\n },\n\n error(...args) {\n state.errors += 1;\n\n if (silent) {\n return;\n }\n\n console.error(\n chalk.red(`[ERROR]${timestamp ? `\\t[${new Date().toISOString()}]` : ''}`),\n ...args.map(stringifyArg)\n );\n },\n\n // @ts-expect-error – returning a subpart of ora is fine because the types tell us what is what.\n spinner(text: string) {\n if (silent) {\n return {\n succeed() {\n return this;\n },\n fail() {\n return this;\n },\n start() {\n return this;\n },\n text: '',\n isSpinning: false,\n };\n }\n\n return ora(text);\n },\n\n progressBar(totalSize: number, text: string) {\n if (silent) {\n return {\n start() {\n return this;\n },\n stop() {\n return this;\n },\n update() {\n return this;\n },\n };\n }\n\n const progressBar = new cliProgress.SingleBar({\n format: `${text ? `${text} |` : ''}${chalk.green('{bar}')}| {percentage}%`,\n barCompleteChar: '\\u2588',\n barIncompleteChar: '\\u2591',\n hideCursor: true,\n forceRedraw: true,\n });\n\n progressBar.start(totalSize, 0);\n\n return progressBar;\n },\n };\n};\n\nexport { createLogger };\n"],"names":["stringifyArg","arg","stringify","createLogger","options","silent","debug","timestamp","state","errors","warning","warnings","args","console","log","chalk","cyan","Date","toISOString","map","info","blue","success","green","warn","yellow","error","red","spinner","text","succeed","fail","start","isSpinning","ora","progressBar","totalSize","stop","update","cliProgress","SingleBar","format","barCompleteChar","barIncompleteChar","hideCursor","forceRedraw"],"mappings":"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"}
@@ -3,11 +3,16 @@
3
3
  var EventSource = require('eventsource');
4
4
  var EventEmitter = require('node:events');
5
5
 
6
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
7
+
8
+ var EventSource__default = /*#__PURE__*/_interopDefault(EventSource);
9
+ var EventEmitter__default = /*#__PURE__*/_interopDefault(EventEmitter);
10
+
6
11
  function notificationServiceFactory({ logger }) {
7
12
  return (url, token, cliConfig)=>{
8
13
  const CONN_TIMEOUT = Number(cliConfig.notificationsConnectionTimeout);
9
- const eventEmitter = new EventEmitter();
10
- const es = new EventSource(url, {
14
+ const eventEmitter = new EventEmitter__default.default();
15
+ const es = new EventSource__default.default(url, {
11
16
  headers: {
12
17
  Authorization: `Bearer ${token}`
13
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"notification.js","sources":["../../src/services/notification.ts"],"sourcesContent":["import EventSource from 'eventsource';\nimport EventEmitter from 'node:events';\nimport type { CLIContext, CloudCliConfig } from '../types';\n\ntype Event = {\n type: string;\n data: string;\n lastEventId: string;\n origin: string;\n};\n\ntype DeploymentNotificationData = {\n event:\n | 'deploymentFailed'\n | 'deploymentCompleted'\n | 'environmentCreationFailed'\n | 'environmentCreationCompleted';\n userId: string;\n projectName: string;\n environmentName: string;\n createdAt: string;\n message?: string;\n};\n\nexport function notificationServiceFactory({ logger }: CLIContext) {\n return (url: string, token: string, cliConfig: CloudCliConfig) => {\n const CONN_TIMEOUT = Number(cliConfig.notificationsConnectionTimeout);\n const eventEmitter = new EventEmitter();\n\n const es = new EventSource(url, {\n headers: {\n Authorization: `Bearer ${token}`,\n },\n });\n let timeoutId: NodeJS.Timeout;\n\n const resetTimeout = () => {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(() => {\n logger.log(\n 'We were unable to connect to the server at this time. This could be due to a temporary issue. Please try again in a moment.'\n );\n es.close();\n eventEmitter.emit('connectionTimedOut');\n }, CONN_TIMEOUT); // 5 minutes\n };\n\n es.onopen = () => {\n resetTimeout();\n };\n es.onmessage = (event: Event) => {\n resetTimeout();\n if (!event.data) {\n return;\n }\n const data: DeploymentNotificationData = JSON.parse(event.data);\n\n if (data.message) {\n logger.log(data.message);\n }\n\n // Close connection when a specific event is received\n if (\n data.event === 'deploymentCompleted' ||\n data.event === 'deploymentFailed' ||\n data.event === 'environmentCreationFailed' ||\n data.event === 'environmentCreationCompleted'\n ) {\n clearTimeout(timeoutId);\n es.close();\n }\n eventEmitter.emit(data.event, data);\n };\n\n const waitForEnvironmentCreation = (environmentName: string) => {\n return new Promise((resolve, reject) => {\n eventEmitter.on('environmentCreationCompleted', (data: DeploymentNotificationData) => {\n if (data.environmentName !== environmentName) {\n return;\n }\n resolve('Environment created successfully');\n eventEmitter.removeAllListeners('environmentCreationCompleted');\n });\n eventEmitter.on('environmentCreationFailed', (data: DeploymentNotificationData) => {\n if (data.environmentName !== environmentName) {\n return;\n }\n reject(new Error(`Environment creation failed`, { cause: 'EnvironmentCreationFailed' }));\n eventEmitter.removeAllListeners('environmentCreationFailed');\n });\n\n eventEmitter.on('connectionTimedOut', () => {\n reject(new Error('Connection timed out'));\n });\n });\n };\n const close = () => {\n clearTimeout(timeoutId);\n es.close();\n eventEmitter.removeAllListeners();\n };\n return { waitForEnvironmentCreation, close };\n };\n}\n"],"names":["notificationServiceFactory","logger","url","token","cliConfig","CONN_TIMEOUT","Number","notificationsConnectionTimeout","eventEmitter","EventEmitter","es","EventSource","headers","Authorization","timeoutId","resetTimeout","clearTimeout","setTimeout","log","close","emit","onopen","onmessage","event","data","JSON","parse","message","waitForEnvironmentCreation","environmentName","Promise","resolve","reject","on","removeAllListeners","Error","cause"],"mappings":"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"}
1
+ {"version":3,"file":"notification.js","sources":["../../src/services/notification.ts"],"sourcesContent":["import EventSource from 'eventsource';\nimport EventEmitter from 'node:events';\nimport type { CLIContext, CloudCliConfig } from '../types';\n\ntype Event = {\n type: string;\n data: string;\n lastEventId: string;\n origin: string;\n};\n\ntype DeploymentNotificationData = {\n event:\n | 'deploymentFailed'\n | 'deploymentCompleted'\n | 'environmentCreationFailed'\n | 'environmentCreationCompleted';\n userId: string;\n projectName: string;\n environmentName: string;\n createdAt: string;\n message?: string;\n};\n\nexport function notificationServiceFactory({ logger }: CLIContext) {\n return (url: string, token: string, cliConfig: CloudCliConfig) => {\n const CONN_TIMEOUT = Number(cliConfig.notificationsConnectionTimeout);\n const eventEmitter = new EventEmitter();\n\n const es = new EventSource(url, {\n headers: {\n Authorization: `Bearer ${token}`,\n },\n });\n let timeoutId: NodeJS.Timeout;\n\n const resetTimeout = () => {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(() => {\n logger.log(\n 'We were unable to connect to the server at this time. This could be due to a temporary issue. Please try again in a moment.'\n );\n es.close();\n eventEmitter.emit('connectionTimedOut');\n }, CONN_TIMEOUT); // 5 minutes\n };\n\n es.onopen = () => {\n resetTimeout();\n };\n es.onmessage = (event: Event) => {\n resetTimeout();\n if (!event.data) {\n return;\n }\n const data: DeploymentNotificationData = JSON.parse(event.data);\n\n if (data.message) {\n logger.log(data.message);\n }\n\n // Close connection when a specific event is received\n if (\n data.event === 'deploymentCompleted' ||\n data.event === 'deploymentFailed' ||\n data.event === 'environmentCreationFailed' ||\n data.event === 'environmentCreationCompleted'\n ) {\n clearTimeout(timeoutId);\n es.close();\n }\n eventEmitter.emit(data.event, data);\n };\n\n const waitForEnvironmentCreation = (environmentName: string) => {\n return new Promise((resolve, reject) => {\n eventEmitter.on('environmentCreationCompleted', (data: DeploymentNotificationData) => {\n if (data.environmentName !== environmentName) {\n return;\n }\n resolve('Environment created successfully');\n eventEmitter.removeAllListeners('environmentCreationCompleted');\n });\n eventEmitter.on('environmentCreationFailed', (data: DeploymentNotificationData) => {\n if (data.environmentName !== environmentName) {\n return;\n }\n reject(new Error(`Environment creation failed`, { cause: 'EnvironmentCreationFailed' }));\n eventEmitter.removeAllListeners('environmentCreationFailed');\n });\n\n eventEmitter.on('connectionTimedOut', () => {\n reject(new Error('Connection timed out'));\n });\n });\n };\n const close = () => {\n clearTimeout(timeoutId);\n es.close();\n eventEmitter.removeAllListeners();\n };\n return { waitForEnvironmentCreation, close };\n };\n}\n"],"names":["notificationServiceFactory","logger","url","token","cliConfig","CONN_TIMEOUT","Number","notificationsConnectionTimeout","eventEmitter","EventEmitter","es","EventSource","headers","Authorization","timeoutId","resetTimeout","clearTimeout","setTimeout","log","close","emit","onopen","onmessage","event","data","JSON","parse","message","waitForEnvironmentCreation","environmentName","Promise","resolve","reject","on","removeAllListeners","Error","cause"],"mappings":"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"}
@@ -4,23 +4,28 @@ var fse = require('fs-extra');
4
4
  var path = require('path');
5
5
  var lodash = require('lodash');
6
6
 
7
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
8
+
9
+ var fse__default = /*#__PURE__*/_interopDefault(fse);
10
+ var path__default = /*#__PURE__*/_interopDefault(path);
11
+
7
12
  const LOCAL_SAVE_FILENAME = '.strapi-cloud.json';
8
- const getFilePath = (directoryPath)=>path.join(directoryPath || process.cwd(), LOCAL_SAVE_FILENAME);
13
+ const getFilePath = (directoryPath)=>path__default.default.join(directoryPath || process.cwd(), LOCAL_SAVE_FILENAME);
9
14
  async function save(data, { directoryPath } = {}) {
10
15
  const pathToFile = getFilePath(directoryPath);
11
16
  // Ensure the directory exists and creates it if not
12
- await fse.ensureDir(path.dirname(pathToFile));
13
- await fse.writeJson(pathToFile, data, {
17
+ await fse__default.default.ensureDir(path__default.default.dirname(pathToFile));
18
+ await fse__default.default.writeJson(pathToFile, data, {
14
19
  encoding: 'utf8'
15
20
  });
16
21
  }
17
22
  async function retrieve({ directoryPath } = {}) {
18
23
  const pathToFile = getFilePath(directoryPath);
19
- const pathExists = await fse.pathExists(pathToFile);
24
+ const pathExists = await fse__default.default.pathExists(pathToFile);
20
25
  if (!pathExists) {
21
26
  return {};
22
27
  }
23
- return fse.readJSON(pathToFile, {
28
+ return fse__default.default.readJSON(pathToFile, {
24
29
  encoding: 'utf8'
25
30
  });
26
31
  }
@@ -33,15 +38,15 @@ async function patch(patchData, { directoryPath } = {}) {
33
38
  throw new Error('No configuration data found to patch.');
34
39
  }
35
40
  const newData = lodash.merge(existingData, patchData);
36
- await fse.writeJson(pathToFile, newData, {
41
+ await fse__default.default.writeJson(pathToFile, newData, {
37
42
  encoding: 'utf8'
38
43
  });
39
44
  }
40
45
  async function deleteConfig({ directoryPath } = {}) {
41
46
  const pathToFile = getFilePath(directoryPath);
42
- const pathExists = await fse.pathExists(pathToFile);
47
+ const pathExists = await fse__default.default.pathExists(pathToFile);
43
48
  if (pathExists) {
44
- await fse.remove(pathToFile);
49
+ await fse__default.default.remove(pathToFile);
45
50
  }
46
51
  }
47
52
 
@@ -1 +1 @@
1
- {"version":3,"file":"strapi-info-save.js","sources":["../../src/services/strapi-info-save.ts"],"sourcesContent":["import fse from 'fs-extra';\nimport path from 'path';\nimport { merge } from 'lodash';\nimport type { ProjectInfo } from './cli-api';\n\nexport const LOCAL_SAVE_FILENAME = '.strapi-cloud.json';\n\nexport type LocalSave = {\n project?: Omit<ProjectInfo, 'id'>;\n};\n\n// Utility type for making all properties optional recursively\ntype DeepPartial<T> = {\n [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P];\n};\n\nexport type LocalPatch = {\n project?: DeepPartial<Omit<ProjectInfo, 'id'>>;\n};\n\nconst getFilePath = (directoryPath?: string): string =>\n path.join(directoryPath || process.cwd(), LOCAL_SAVE_FILENAME);\n\nexport async function save(data: LocalSave, { directoryPath }: { directoryPath?: string } = {}) {\n const pathToFile = getFilePath(directoryPath);\n // Ensure the directory exists and creates it if not\n await fse.ensureDir(path.dirname(pathToFile));\n await fse.writeJson(pathToFile, data, { encoding: 'utf8' });\n}\n\nexport async function retrieve({\n directoryPath,\n}: { directoryPath?: string } = {}): Promise<LocalSave> {\n const pathToFile = getFilePath(directoryPath);\n const pathExists = await fse.pathExists(pathToFile);\n if (!pathExists) {\n return {};\n }\n return fse.readJSON(pathToFile, { encoding: 'utf8' });\n}\n\nexport async function patch(\n patchData: LocalPatch,\n { directoryPath }: { directoryPath?: string } = {}\n) {\n const pathToFile = getFilePath(directoryPath);\n const existingData = await retrieve({ directoryPath });\n if (!existingData) {\n throw new Error('No configuration data found to patch.');\n }\n const newData = merge(existingData, patchData);\n await fse.writeJson(pathToFile, newData, { encoding: 'utf8' });\n}\n\nexport async function deleteConfig({ directoryPath }: { directoryPath?: string } = {}) {\n const pathToFile = getFilePath(directoryPath);\n const pathExists = await fse.pathExists(pathToFile);\n if (pathExists) {\n await fse.remove(pathToFile);\n }\n}\n"],"names":["LOCAL_SAVE_FILENAME","getFilePath","directoryPath","path","join","process","cwd","save","data","pathToFile","fse","ensureDir","dirname","writeJson","encoding","retrieve","pathExists","readJSON","patch","patchData","existingData","Error","newData","merge","deleteConfig","remove"],"mappings":";;;;;;AAKO,MAAMA,sBAAsB;AAenC,MAAMC,WAAAA,GAAc,CAACC,aAAAA,GACnBC,IAAAA,CAAKC,IAAI,CAACF,aAAAA,IAAiBG,OAAAA,CAAQC,GAAG,EAAA,EAAIN,mBAAAA,CAAAA;AAErC,eAAeO,KAAKC,IAAe,EAAE,EAAEN,aAAa,EAA8B,GAAG,EAAE,EAAA;AAC5F,IAAA,MAAMO,aAAaR,WAAAA,CAAYC,aAAAA,CAAAA;;AAE/B,IAAA,MAAMQ,GAAAA,CAAIC,SAAS,CAACR,IAAAA,CAAKS,OAAO,CAACH,UAAAA,CAAAA,CAAAA;AACjC,IAAA,MAAMC,GAAAA,CAAIG,SAAS,CAACJ,UAAAA,EAAYD,IAAAA,EAAM;QAAEM,QAAAA,EAAU;AAAO,KAAA,CAAA;AAC3D;AAEO,eAAeC,QAAAA,CAAS,EAC7Bb,aAAa,EACc,GAAG,EAAE,EAAA;AAChC,IAAA,MAAMO,aAAaR,WAAAA,CAAYC,aAAAA,CAAAA;AAC/B,IAAA,MAAMc,UAAAA,GAAa,MAAMN,GAAAA,CAAIM,UAAU,CAACP,UAAAA,CAAAA;AACxC,IAAA,IAAI,CAACO,UAAAA,EAAY;AACf,QAAA,OAAO,EAAC;AACV,IAAA;IACA,OAAON,GAAAA,CAAIO,QAAQ,CAACR,UAAAA,EAAY;QAAEK,QAAAA,EAAU;AAAO,KAAA,CAAA;AACrD;AAEO,eAAeI,MACpBC,SAAqB,EACrB,EAAEjB,aAAa,EAA8B,GAAG,EAAE,EAAA;AAElD,IAAA,MAAMO,aAAaR,WAAAA,CAAYC,aAAAA,CAAAA;IAC/B,MAAMkB,YAAAA,GAAe,MAAML,QAAAA,CAAS;AAAEb,QAAAA;AAAc,KAAA,CAAA;AACpD,IAAA,IAAI,CAACkB,YAAAA,EAAc;AACjB,QAAA,MAAM,IAAIC,KAAAA,CAAM,uCAAA,CAAA;AAClB,IAAA;IACA,MAAMC,OAAAA,GAAUC,aAAMH,YAAAA,EAAcD,SAAAA,CAAAA;AACpC,IAAA,MAAMT,GAAAA,CAAIG,SAAS,CAACJ,UAAAA,EAAYa,OAAAA,EAAS;QAAER,QAAAA,EAAU;AAAO,KAAA,CAAA;AAC9D;AAEO,eAAeU,YAAAA,CAAa,EAAEtB,aAAa,EAA8B,GAAG,EAAE,EAAA;AACnF,IAAA,MAAMO,aAAaR,WAAAA,CAAYC,aAAAA,CAAAA;AAC/B,IAAA,MAAMc,UAAAA,GAAa,MAAMN,GAAAA,CAAIM,UAAU,CAACP,UAAAA,CAAAA;AACxC,IAAA,IAAIO,UAAAA,EAAY;QACd,MAAMN,GAAAA,CAAIe,MAAM,CAAChB,UAAAA,CAAAA;AACnB,IAAA;AACF;;;;;;;;"}
1
+ {"version":3,"file":"strapi-info-save.js","sources":["../../src/services/strapi-info-save.ts"],"sourcesContent":["import fse from 'fs-extra';\nimport path from 'path';\nimport { merge } from 'lodash';\nimport type { ProjectInfo } from './cli-api';\n\nexport const LOCAL_SAVE_FILENAME = '.strapi-cloud.json';\n\nexport type LocalSave = {\n project?: Omit<ProjectInfo, 'id'>;\n};\n\n// Utility type for making all properties optional recursively\ntype DeepPartial<T> = {\n [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P];\n};\n\nexport type LocalPatch = {\n project?: DeepPartial<Omit<ProjectInfo, 'id'>>;\n};\n\nconst getFilePath = (directoryPath?: string): string =>\n path.join(directoryPath || process.cwd(), LOCAL_SAVE_FILENAME);\n\nexport async function save(data: LocalSave, { directoryPath }: { directoryPath?: string } = {}) {\n const pathToFile = getFilePath(directoryPath);\n // Ensure the directory exists and creates it if not\n await fse.ensureDir(path.dirname(pathToFile));\n await fse.writeJson(pathToFile, data, { encoding: 'utf8' });\n}\n\nexport async function retrieve({\n directoryPath,\n}: { directoryPath?: string } = {}): Promise<LocalSave> {\n const pathToFile = getFilePath(directoryPath);\n const pathExists = await fse.pathExists(pathToFile);\n if (!pathExists) {\n return {};\n }\n return fse.readJSON(pathToFile, { encoding: 'utf8' });\n}\n\nexport async function patch(\n patchData: LocalPatch,\n { directoryPath }: { directoryPath?: string } = {}\n) {\n const pathToFile = getFilePath(directoryPath);\n const existingData = await retrieve({ directoryPath });\n if (!existingData) {\n throw new Error('No configuration data found to patch.');\n }\n const newData = merge(existingData, patchData);\n await fse.writeJson(pathToFile, newData, { encoding: 'utf8' });\n}\n\nexport async function deleteConfig({ directoryPath }: { directoryPath?: string } = {}) {\n const pathToFile = getFilePath(directoryPath);\n const pathExists = await fse.pathExists(pathToFile);\n if (pathExists) {\n await fse.remove(pathToFile);\n }\n}\n"],"names":["LOCAL_SAVE_FILENAME","getFilePath","directoryPath","path","join","process","cwd","save","data","pathToFile","fse","ensureDir","dirname","writeJson","encoding","retrieve","pathExists","readJSON","patch","patchData","existingData","Error","newData","merge","deleteConfig","remove"],"mappings":";;;;;;;;;;;AAKO,MAAMA,sBAAsB;AAenC,MAAMC,WAAAA,GAAc,CAACC,aAAAA,GACnBC,qBAAAA,CAAKC,IAAI,CAACF,aAAAA,IAAiBG,OAAAA,CAAQC,GAAG,EAAA,EAAIN,mBAAAA,CAAAA;AAErC,eAAeO,KAAKC,IAAe,EAAE,EAAEN,aAAa,EAA8B,GAAG,EAAE,EAAA;AAC5F,IAAA,MAAMO,aAAaR,WAAAA,CAAYC,aAAAA,CAAAA;;AAE/B,IAAA,MAAMQ,oBAAAA,CAAIC,SAAS,CAACR,qBAAAA,CAAKS,OAAO,CAACH,UAAAA,CAAAA,CAAAA;AACjC,IAAA,MAAMC,oBAAAA,CAAIG,SAAS,CAACJ,UAAAA,EAAYD,IAAAA,EAAM;QAAEM,QAAAA,EAAU;AAAO,KAAA,CAAA;AAC3D;AAEO,eAAeC,QAAAA,CAAS,EAC7Bb,aAAa,EACc,GAAG,EAAE,EAAA;AAChC,IAAA,MAAMO,aAAaR,WAAAA,CAAYC,aAAAA,CAAAA;AAC/B,IAAA,MAAMc,UAAAA,GAAa,MAAMN,oBAAAA,CAAIM,UAAU,CAACP,UAAAA,CAAAA;AACxC,IAAA,IAAI,CAACO,UAAAA,EAAY;AACf,QAAA,OAAO,EAAC;AACV,IAAA;IACA,OAAON,oBAAAA,CAAIO,QAAQ,CAACR,UAAAA,EAAY;QAAEK,QAAAA,EAAU;AAAO,KAAA,CAAA;AACrD;AAEO,eAAeI,MACpBC,SAAqB,EACrB,EAAEjB,aAAa,EAA8B,GAAG,EAAE,EAAA;AAElD,IAAA,MAAMO,aAAaR,WAAAA,CAAYC,aAAAA,CAAAA;IAC/B,MAAMkB,YAAAA,GAAe,MAAML,QAAAA,CAAS;AAAEb,QAAAA;AAAc,KAAA,CAAA;AACpD,IAAA,IAAI,CAACkB,YAAAA,EAAc;AACjB,QAAA,MAAM,IAAIC,KAAAA,CAAM,uCAAA,CAAA;AAClB,IAAA;IACA,MAAMC,OAAAA,GAAUC,aAAMH,YAAAA,EAAcD,SAAAA,CAAAA;AACpC,IAAA,MAAMT,oBAAAA,CAAIG,SAAS,CAACJ,UAAAA,EAAYa,OAAAA,EAAS;QAAER,QAAAA,EAAU;AAAO,KAAA,CAAA;AAC9D;AAEO,eAAeU,YAAAA,CAAa,EAAEtB,aAAa,EAA8B,GAAG,EAAE,EAAA;AACnF,IAAA,MAAMO,aAAaR,WAAAA,CAAYC,aAAAA,CAAAA;AAC/B,IAAA,MAAMc,UAAAA,GAAa,MAAMN,oBAAAA,CAAIM,UAAU,CAACP,UAAAA,CAAAA;AACxC,IAAA,IAAIO,UAAAA,EAAY;QACd,MAAMN,oBAAAA,CAAIe,MAAM,CAAChB,UAAAA,CAAAA;AACnB,IAAA;AACF;;;;;;;;"}
@@ -5,6 +5,11 @@ var jwt = require('jsonwebtoken');
5
5
  var local = require('../config/local.js');
6
6
  var cliApi = require('./cli-api.js');
7
7
 
8
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
9
+
10
+ var jwksClient__default = /*#__PURE__*/_interopDefault(jwksClient);
11
+ var jwt__default = /*#__PURE__*/_interopDefault(jwt);
12
+
8
13
  let cliConfig;
9
14
  async function tokenServiceFactory({ logger }) {
10
15
  const cloudApiService = await cliApi.cloudApiFactory({
@@ -35,7 +40,7 @@ async function tokenServiceFactory({ logger }) {
35
40
  return undefined;
36
41
  }
37
42
  async function validateToken(idToken, jwksUrl) {
38
- const client = jwksClient({
43
+ const client = jwksClient__default.default({
39
44
  jwksUri: jwksUrl
40
45
  });
41
46
  // Get the Key from the JWKS using the token header's Key ID (kid)
@@ -51,7 +56,7 @@ async function tokenServiceFactory({ logger }) {
51
56
  }
52
57
  });
53
58
  };
54
- const decodedToken = jwt.decode(idToken, {
59
+ const decodedToken = jwt__default.default.decode(idToken, {
55
60
  complete: true
56
61
  });
57
62
  if (!decodedToken) {
@@ -64,7 +69,7 @@ async function tokenServiceFactory({ logger }) {
64
69
  }
65
70
  // Verify the JWT token signature using the JWKS Key
66
71
  return new Promise((resolve, reject)=>{
67
- jwt.verify(idToken, getKey, (err)=>{
72
+ jwt__default.default.verify(idToken, getKey, (err)=>{
68
73
  if (err) {
69
74
  reject(err);
70
75
  }