@strapi/cloud-cli 5.30.0 → 5.31.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.
@@ -1 +1 @@
1
- {"version":3,"file":"action.mjs","sources":["../../src/logout/action.ts"],"sourcesContent":["import type { CLIContext } from '../types';\nimport { tokenServiceFactory, cloudApiFactory } from '../services';\nimport { trackEvent } from '../utils/analytics';\n\nconst openModule = import('open');\n\nexport default async (ctx: CLIContext) => {\n const { logger } = ctx;\n const { retrieveToken, eraseToken } = await tokenServiceFactory(ctx);\n\n const token = await retrieveToken();\n if (!token) {\n logger.log(\"You're already logged out.\");\n return;\n }\n const cloudApiService = await cloudApiFactory(ctx, token);\n const config = await cloudApiService.config();\n const cliConfig = config.data;\n\n try {\n await eraseToken();\n\n openModule.then((open) => {\n open\n .default(\n `${cliConfig.baseUrl}/oidc/logout?client_id=${encodeURIComponent(\n cliConfig.clientId\n )}&logout_hint=${encodeURIComponent(token)}\n `\n )\n .catch((e: Error) => {\n // Failing to open the logout URL is not a critical error, so we just log it\n logger.debug(e.message, e);\n });\n });\n\n logger.log(\n '🔌 You have been logged out from the CLI. If you are on a shared computer, please make sure to log out from the Strapi Cloud Dashboard as well.'\n );\n } catch (e) {\n logger.error('🥲 Oops! Something went wrong while logging you out. Please try again.');\n logger.debug(e);\n }\n await trackEvent(ctx, cloudApiService, 'didLogout', { loginMethod: 'cli' });\n};\n"],"names":["openModule","ctx","logger","retrieveToken","eraseToken","tokenServiceFactory","token","log","cloudApiService","cloudApiFactory","config","cliConfig","data","then","open","default","baseUrl","encodeURIComponent","clientId","catch","e","debug","message","error","trackEvent","loginMethod"],"mappings":";;;;;;;;;;;AAIA,MAAMA,UAAAA,GAAa,OAAO,MAAA,CAAA;AAE1B,aAAe,CAAA,OAAOC,GAAAA,GAAAA;IACpB,MAAM,EAAEC,MAAM,EAAE,GAAGD,GAAAA;AACnB,IAAA,MAAM,EAAEE,aAAa,EAAEC,UAAU,EAAE,GAAG,MAAMC,mBAAoBJ,CAAAA,GAAAA,CAAAA;AAEhE,IAAA,MAAMK,QAAQ,MAAMH,aAAAA,EAAAA;AACpB,IAAA,IAAI,CAACG,KAAO,EAAA;AACVJ,QAAAA,MAAAA,CAAOK,GAAG,CAAC,4BAAA,CAAA;AACX,QAAA;AACF;IACA,MAAMC,eAAAA,GAAkB,MAAMC,eAAAA,CAAgBR,GAAKK,EAAAA,KAAAA,CAAAA;IACnD,MAAMI,MAAAA,GAAS,MAAMF,eAAAA,CAAgBE,MAAM,EAAA;IAC3C,MAAMC,SAAAA,GAAYD,OAAOE,IAAI;IAE7B,IAAI;QACF,MAAMR,UAAAA,EAAAA;QAENJ,UAAWa,CAAAA,IAAI,CAAC,CAACC,IAAAA,GAAAA;AACfA,YAAAA,IAAAA,CACGC,OAAO,CACN,CAAC,EAAEJ,SAAAA,CAAUK,OAAO,CAAC,uBAAuB,EAAEC,kBAAAA,CAC5CN,UAAUO,QAAQ,CAAA,CAClB,aAAa,EAAED,mBAAmBX,KAAO,CAAA;UAC3C,CAAC,CAAA,CAEFa,KAAK,CAAC,CAACC,CAAAA,GAAAA;;AAENlB,gBAAAA,MAAAA,CAAOmB,KAAK,CAACD,CAAEE,CAAAA,OAAO,EAAEF,CAAAA,CAAAA;AAC1B,aAAA,CAAA;AACJ,SAAA,CAAA;AAEAlB,QAAAA,MAAAA,CAAOK,GAAG,CACR,iJAAA,CAAA;AAEJ,KAAA,CAAE,OAAOa,CAAG,EAAA;AACVlB,QAAAA,MAAAA,CAAOqB,KAAK,CAAC,wEAAA,CAAA;AACbrB,QAAAA,MAAAA,CAAOmB,KAAK,CAACD,CAAAA,CAAAA;AACf;IACA,MAAMI,UAAAA,CAAWvB,GAAKO,EAAAA,eAAAA,EAAiB,WAAa,EAAA;QAAEiB,WAAa,EAAA;AAAM,KAAA,CAAA;AAC3E,CAAA;;;;"}
1
+ {"version":3,"file":"action.mjs","sources":["../../src/logout/action.ts"],"sourcesContent":["import type { CLIContext } from '../types';\nimport { tokenServiceFactory, cloudApiFactory } from '../services';\nimport { trackEvent } from '../utils/analytics';\n\nconst openModule = import('open');\n\nexport default async (ctx: CLIContext) => {\n const { logger } = ctx;\n const { retrieveToken, eraseToken } = await tokenServiceFactory(ctx);\n\n const token = await retrieveToken();\n if (!token) {\n logger.log(\"You're already logged out.\");\n return;\n }\n const cloudApiService = await cloudApiFactory(ctx, token);\n const config = await cloudApiService.config();\n const cliConfig = config.data;\n\n try {\n await eraseToken();\n\n openModule.then((open) => {\n open\n .default(\n `${cliConfig.baseUrl}/oidc/logout?client_id=${encodeURIComponent(\n cliConfig.clientId\n )}&logout_hint=${encodeURIComponent(token)}\n `\n )\n .catch((e: Error) => {\n // Failing to open the logout URL is not a critical error, so we just log it\n logger.debug(e.message, e);\n });\n });\n\n logger.log(\n '🔌 You have been logged out from the CLI. If you are on a shared computer, please make sure to log out from the Strapi Cloud Dashboard as well.'\n );\n } catch (e) {\n logger.error('🥲 Oops! Something went wrong while logging you out. Please try again.');\n logger.debug(e);\n }\n await trackEvent(ctx, cloudApiService, 'didLogout', { loginMethod: 'cli' });\n};\n"],"names":["openModule","ctx","logger","retrieveToken","eraseToken","tokenServiceFactory","token","log","cloudApiService","cloudApiFactory","config","cliConfig","data","then","open","default","baseUrl","encodeURIComponent","clientId","catch","e","debug","message","error","trackEvent","loginMethod"],"mappings":";;;;;;;;;;;AAIA,MAAMA,UAAAA,GAAa,OAAO,MAAA,CAAA;AAE1B,aAAe,CAAA,OAAOC,GAAAA,GAAAA;IACpB,MAAM,EAAEC,MAAM,EAAE,GAAGD,GAAAA;AACnB,IAAA,MAAM,EAAEE,aAAa,EAAEC,UAAU,EAAE,GAAG,MAAMC,mBAAoBJ,CAAAA,GAAAA,CAAAA;AAEhE,IAAA,MAAMK,QAAQ,MAAMH,aAAAA,EAAAA;AACpB,IAAA,IAAI,CAACG,KAAO,EAAA;AACVJ,QAAAA,MAAAA,CAAOK,GAAG,CAAC,4BAAA,CAAA;AACX,QAAA;AACF;IACA,MAAMC,eAAAA,GAAkB,MAAMC,eAAAA,CAAgBR,GAAKK,EAAAA,KAAAA,CAAAA;IACnD,MAAMI,MAAAA,GAAS,MAAMF,eAAAA,CAAgBE,MAAM,EAAA;IAC3C,MAAMC,SAAAA,GAAYD,OAAOE,IAAI;IAE7B,IAAI;QACF,MAAMR,UAAAA,EAAAA;QAENJ,UAAWa,CAAAA,IAAI,CAAC,CAACC,IAAAA,GAAAA;AACfA,YAAAA,IAAAA,CACGC,OAAO,CACN,CAAGJ,EAAAA,SAAAA,CAAUK,OAAO,CAAC,uBAAuB,EAAEC,kBAAAA,CAC5CN,UAAUO,QAAQ,CAAA,CAClB,aAAa,EAAED,mBAAmBX,KAAO,CAAA;UAC3C,CAAC,CAAA,CAEFa,KAAK,CAAC,CAACC,CAAAA,GAAAA;;AAENlB,gBAAAA,MAAAA,CAAOmB,KAAK,CAACD,CAAEE,CAAAA,OAAO,EAAEF,CAAAA,CAAAA;AAC1B,aAAA,CAAA;AACJ,SAAA,CAAA;AAEAlB,QAAAA,MAAAA,CAAOK,GAAG,CACR,iJAAA,CAAA;AAEJ,KAAA,CAAE,OAAOa,CAAG,EAAA;AACVlB,QAAAA,MAAAA,CAAOqB,KAAK,CAAC,wEAAA,CAAA;AACbrB,QAAAA,MAAAA,CAAOmB,KAAK,CAACD,CAAAA,CAAAA;AACf;IACA,MAAMI,UAAAA,CAAWvB,GAAKO,EAAAA,eAAAA,EAAiB,WAAa,EAAA;QAAEiB,WAAa,EAAA;AAAM,KAAA,CAAA;AAC3E,CAAA;;;;"}
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var name = "@strapi/cloud-cli";
6
- var version = "5.30.0";
6
+ var version = "5.31.0";
7
7
  var description = "Commands to interact with the Strapi Cloud";
8
8
  var keywords = [
9
9
  "strapi",
@@ -50,7 +50,7 @@ var scripts = {
50
50
  watch: "run -T rollup -c -w"
51
51
  };
52
52
  var dependencies = {
53
- "@strapi/utils": "5.30.0",
53
+ "@strapi/utils": "5.31.0",
54
54
  axios: "1.12.2",
55
55
  boxen: "5.1.2",
56
56
  chalk: "4.1.2",
@@ -75,11 +75,11 @@ var devDependencies = {
75
75
  "@types/cli-progress": "3.11.5",
76
76
  "@types/eventsource": "1.1.15",
77
77
  "@types/lodash": "^4.14.191",
78
- "eslint-config-custom": "5.30.0",
79
- tsconfig: "5.30.0"
78
+ "eslint-config-custom": "5.31.0",
79
+ tsconfig: "5.31.0"
80
80
  };
81
81
  var engines = {
82
- node: ">=18.0.0 <=22.x.x",
82
+ node: ">=20.0.0 <=24.x.x",
83
83
  npm: ">=6.0.0"
84
84
  };
85
85
  var packageJson = {
@@ -1,5 +1,5 @@
1
1
  var name = "@strapi/cloud-cli";
2
- var version = "5.30.0";
2
+ var version = "5.31.0";
3
3
  var description = "Commands to interact with the Strapi Cloud";
4
4
  var keywords = [
5
5
  "strapi",
@@ -46,7 +46,7 @@ var scripts = {
46
46
  watch: "run -T rollup -c -w"
47
47
  };
48
48
  var dependencies = {
49
- "@strapi/utils": "5.30.0",
49
+ "@strapi/utils": "5.31.0",
50
50
  axios: "1.12.2",
51
51
  boxen: "5.1.2",
52
52
  chalk: "4.1.2",
@@ -71,11 +71,11 @@ var devDependencies = {
71
71
  "@types/cli-progress": "3.11.5",
72
72
  "@types/eventsource": "1.1.15",
73
73
  "@types/lodash": "^4.14.191",
74
- "eslint-config-custom": "5.30.0",
75
- tsconfig: "5.30.0"
74
+ "eslint-config-custom": "5.31.0",
75
+ tsconfig: "5.31.0"
76
76
  };
77
77
  var engines = {
78
- node: ">=18.0.0 <=22.x.x",
78
+ node: ">=20.0.0 <=24.x.x",
79
79
  npm: ">=6.0.0"
80
80
  };
81
81
  var packageJson = {
@@ -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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"}
@@ -1 +1 @@
1
- {"version":3,"file":"build-logs.mjs","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.mjs","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 +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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"}
@@ -1 +1 @@
1
- {"version":3,"file":"cli-api.mjs","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":";;;;;;;;AAUO,MAAMA,UAAU;AAwHhB,eAAeC,eACpB,CAAA,EAAEC,MAAM,EAAoC,EAC5CC,KAAc,EAAA;AAEd,IAAA,MAAMC,cAAc,MAAMC,cAAAA,EAAAA;AAC1B,IAAA,MAAMC,aAAgB,GAAA;AACpB,QAAA,aAAA,EAAeF,YAAYG,SAAS;AACpC,QAAA,eAAA,EAAiBC,YAAYC,OAAO;AACpC,QAAA,WAAA,EAAaC,GAAGC,IAAI,EAAA;AACpB,QAAA,cAAA,EAAgBD,GAAGD,OAAO,EAAA;AAC1B,QAAA,YAAA,EAAcG,IAAKC,CAAAA,cAAc,EAAGC,CAAAA,eAAe,GAAGC,MAAM;QAC5D,gBAAkBC,EAAAA,OAAAA,CAAQC,QAAQ,CAACC;AACrC,KAAA;IACA,MAAMC,aAAAA,GAAgBC,KAAMC,CAAAA,MAAM,CAAC;QACjCC,OAAS,EAAA,CAAC,EAAEC,SAAUC,CAAAA,UAAU,CAAC,CAAC,EAAExB,QAAQ,CAAC;QAC7CyB,OAAS,EAAA;YACP,cAAgB,EAAA,kBAAA;AAChB,YAAA,GAAGnB;AACL;AACF,KAAA,CAAA;AAEA,IAAA,IAAIH,KAAO,EAAA;QACTgB,aAAcO,CAAAA,QAAQ,CAACD,OAAO,CAACE,aAAa,GAAG,CAAC,OAAO,EAAExB,KAAAA,CAAM,CAAC;AAClE;IAEA,OAAO;QACLyB,MAAO,CAAA,CAAA,EAAEC,QAAQ,EAAEC,OAAO,EAAE,EAAE,EAAEC,gBAAgB,EAAE,EAAA;YAChD,OAAOZ,aAAAA,CAAca,IAAI,CACvB,CAAC,QAAQ,EAAEF,OAAQG,CAAAA,IAAI,CAAC,CAAC,EACzB;gBAAEC,IAAMC,EAAAA,YAAAA,CAAIC,gBAAgB,CAACP,QAAAA,CAAAA;AAAWQ,gBAAAA,iBAAAA,EAAmBP,QAAQO;aACnE,EAAA;gBACEZ,OAAS,EAAA;oBACP,cAAgB,EAAA;AAClB,iBAAA;AACAM,gBAAAA;AACF,aAAA,CAAA;AAEJ,SAAA;QAEA,MAAMO,aAAAA,CAAAA,CAAc,EAAEL,IAAI,EAAEM,WAAW,EAAEC,MAAM,EAAEC,IAAI,EAAE,EAAA;AACrD,YAAA,MAAMC,QAAW,GAAA,MAAMvB,aAAca,CAAAA,IAAI,CAAC,UAAY,EAAA;gBACpDW,WAAaV,EAAAA,IAAAA;AACbO,gBAAAA,MAAAA;AACAD,gBAAAA,WAAAA;AACAE,gBAAAA;AACF,aAAA,CAAA;YAEA,OAAO;gBACLG,IAAM,EAAA;oBACJC,EAAIH,EAAAA,QAAAA,CAASE,IAAI,CAACC,EAAE;oBACpBZ,IAAMS,EAAAA,QAAAA,CAASE,IAAI,CAACX,IAAI;oBACxBa,uBAAyBJ,EAAAA,QAAAA,CAASE,IAAI,CAACE;AACzC,iBAAA;AACAC,gBAAAA,MAAAA,EAAQL,SAASK;AACnB,aAAA;AACF,SAAA;AAEAC,QAAAA,WAAAA,CAAAA,GAAAA;YACE,OAAO7B,aAAAA,CAAc8B,GAAG,CAAC,OAAA,CAAA;AAC3B,SAAA;QAEA,MAAMC,MAAAA,CAAAA,GAAAA;YACJ,IAAI;AACF,gBAAA,MAAMR,QAAW,GAAA,MAAMvB,aAAc8B,CAAAA,GAAG,CAAC,SAAA,CAAA;gBAEzC,IAAIP,QAAAA,CAASK,MAAM,KAAK,GAAK,EAAA;AAC3B,oBAAA,MAAM,IAAII,KAAM,CAAA,kDAAA,CAAA;AAClB;gBAEA,OAAOT,QAAAA;AACT,aAAA,CAAE,OAAOU,KAAO,EAAA;AACdlD,gBAAAA,MAAAA,CAAOmD,KAAK,CACV,oFAAA,CAAA;gBAGF,MAAMD,KAAAA;AACR;AACF,SAAA;QAEA,MAAME,YAAAA,CAAAA,GAAAA;YACJ,IAAI;AACF,gBAAA,MAAMZ,QAAW,GAAA,MAAMvB,aAAc8B,CAAAA,GAAG,CAAC,WAAA,CAAA;gBAEzC,IAAIP,QAAAA,CAASK,MAAM,KAAK,GAAK,EAAA;AAC3B,oBAAA,MAAM,IAAII,KAAM,CAAA,gDAAA,CAAA;AAClB;gBAEA,OAAOT,QAAAA;AACT,aAAA,CAAE,OAAOU,KAAO,EAAA;AACdlD,gBAAAA,MAAAA,CAAOmD,KAAK,CACV,mFAAA,CAAA;gBAEF,MAAMD,KAAAA;AACR;AACF,SAAA;QAEA,MAAMG,gBAAAA,CAAAA,GAAAA;YACJ,IAAI;AACF,gBAAA,MAAMb,QAAW,GAAA,MAAMvB,aAAc8B,CAAAA,GAAG,CAAC,oBAAA,CAAA;gBAEzC,IAAIP,QAAAA,CAASK,MAAM,KAAK,GAAK,EAAA;AAC3B,oBAAA,MAAM,IAAII,KAAM,CAAA,gDAAA,CAAA;AAClB;gBAEA,OAAOT,QAAAA;AACT,aAAA,CAAE,OAAOU,KAAO,EAAA;AACdlD,gBAAAA,MAAAA,CAAOmD,KAAK,CACV,mFAAA,CAAA;gBAEF,MAAMD,KAAAA;AACR;AACF,SAAA;QAEA,MAAMI,gBAAAA,CAAAA,CAAiB,EAAEvB,IAAI,EAAE,EAAA;YAC7B,IAAI;gBACF,MAAMS,QAAAA,GAAW,MAAMvB,aAAAA,CAAc8B,GAAG,CAAC,CAAC,UAAU,EAAEhB,IAAK,CAAA,aAAa,CAAC,CAAA;gBAEzE,IAAIS,QAAAA,CAASK,MAAM,KAAK,GAAK,EAAA;AAC3B,oBAAA,MAAM,IAAII,KAAM,CAAA,oDAAA,CAAA;AAClB;gBAEA,OAAOT,QAAAA;AACT,aAAA,CAAE,OAAOU,KAAO,EAAA;AACdlD,gBAAAA,MAAAA,CAAOmD,KAAK,CACV,2FAAA,CAAA;gBAEF,MAAMD,KAAAA;AACR;AACF,SAAA;QAEA,MAAMK,oBAAAA,CAAAA,CAAqB,EAAExB,IAAI,EAAE,EAAA;YACjC,IAAI;gBACF,MAAMS,QAAAA,GAAW,MAAMvB,aAAAA,CAAc8B,GAAG,CAAC,CAAC,UAAU,EAAEhB,IAAK,CAAA,sBAAsB,CAAC,CAAA;gBAElF,IAAIS,QAAAA,CAASK,MAAM,KAAK,GAAK,EAAA;AAC3B,oBAAA,MAAM,IAAII,KAAM,CAAA,oDAAA,CAAA;AAClB;gBAEA,OAAOT,QAAAA;AACT,aAAA,CAAE,OAAOU,KAAO,EAAA;AACdlD,gBAAAA,MAAAA,CAAOmD,KAAK,CACV,2FAAA,CAAA;gBAEF,MAAMD,KAAAA;AACR;AACF,SAAA;QAEA,MAAMM,UAAAA,CAAAA,CAAW,EAAEzB,IAAI,EAAE,EAAA;YACvB,IAAI;gBACF,MAAMS,QAAAA,GAAW,MAAMvB,aAAc8B,CAAAA,GAAG,CAAC,CAAC,UAAU,EAAEhB,IAAAA,CAAK,CAAC,CAAA;gBAE5D,IAAIS,QAAAA,CAASK,MAAM,KAAK,GAAK,EAAA;AAC3B,oBAAA,MAAM,IAAII,KAAM,CAAA,mCAAA,CAAA;AAClB;gBAEA,OAAOT,QAAAA;AACT,aAAA,CAAE,OAAOU,KAAO,EAAA;AACdlD,gBAAAA,MAAAA,CAAOmD,KAAK,CACV,mFAAA,CAAA;gBAEF,MAAMD,KAAAA;AACR;AACF,SAAA;QAEA,MAAMO,WAAAA,CAAAA,CAAY,EAAEC,aAAa,EAAE,EAAA;YACjC,IAAI;gBACF,MAAMlB,QAAAA,GAAW,MAAMvB,aAAca,CAAAA,IAAI,CAAC,CAAC,kBAAkB,CAAC,EAAE;AAAE4B,oBAAAA;AAAc,iBAAA,CAAA;gBAEhF,IAAIlB,QAAAA,CAASK,MAAM,KAAK,GAAK,EAAA;AAC3B,oBAAA,MAAM,IAAII,KAAM,CAAA,uBAAA,CAAA;AAClB;gBAEA,OAAOT,QAAAA;AACT,aAAA,CAAE,OAAOU,KAAO,EAAA;AACdlD,gBAAAA,MAAAA,CAAOmD,KAAK,CAAC,qEAAA,CAAA;gBACb,MAAMD,KAAAA;AACR;AACF,SAAA;AAEAS,QAAAA,KAAAA,CAAAA,CAAMC,KAAK,EAAEC,OAAU,GAAA,EAAE,EAAA;AACvB,YAAA,MAAMC,GAAMC,GAAAA,UAAAA,EAAAA;YACZ,IAAID,GAAAA,EAAKE,MAAMrB,EAAI,EAAA;gBACjB1B,aAAcO,CAAAA,QAAQ,CAACD,OAAO,CAAC,YAAY,GAAGuC,GAAAA,CAAIE,IAAI,CAACrB,EAAE;AAC3D;YACA,OAAO1B,aAAAA,CAAca,IAAI,CAAO,QAAU,EAAA;AACxC8B,gBAAAA,KAAAA;AACAC,gBAAAA;AACF,aAAA,CAAA;AACF;AACF,KAAA;AACF;;;;"}
1
+ {"version":3,"file":"cli-api.mjs","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 +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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"}
@@ -1 +1 @@
1
- {"version":3,"file":"logger.mjs","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.mjs","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 +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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"}
@@ -1 +1 @@
1
- {"version":3,"file":"notification.mjs","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":";;;AAwBO,SAASA,0BAAAA,CAA2B,EAAEC,MAAM,EAAc,EAAA;IAC/D,OAAO,CAACC,KAAaC,KAAeC,EAAAA,SAAAA,GAAAA;QAClC,MAAMC,YAAAA,GAAeC,MAAOF,CAAAA,SAAAA,CAAUG,8BAA8B,CAAA;AACpE,QAAA,MAAMC,eAAe,IAAIC,YAAAA,EAAAA;QAEzB,MAAMC,EAAAA,GAAK,IAAIC,WAAAA,CAAYT,GAAK,EAAA;YAC9BU,OAAS,EAAA;AACPC,gBAAAA,aAAAA,EAAe,CAAC,OAAO,EAAEV,KAAAA,CAAM;AACjC;AACF,SAAA,CAAA;QACA,IAAIW,SAAAA;AAEJ,QAAA,MAAMC,YAAe,GAAA,IAAA;YACnBC,YAAaF,CAAAA,SAAAA,CAAAA;AACbA,YAAAA,SAAAA,GAAYG,UAAW,CAAA,IAAA;AACrBhB,gBAAAA,MAAAA,CAAOiB,GAAG,CACR,6HAAA,CAAA;AAEFR,gBAAAA,EAAAA,CAAGS,KAAK,EAAA;AACRX,gBAAAA,YAAAA,CAAaY,IAAI,CAAC,oBAAA,CAAA;AACpB,aAAA,EAAGf;AACL,SAAA;AAEAK,QAAAA,EAAAA,CAAGW,MAAM,GAAG,IAAA;AACVN,YAAAA,YAAAA,EAAAA;AACF,SAAA;QACAL,EAAGY,CAAAA,SAAS,GAAG,CAACC,KAAAA,GAAAA;AACdR,YAAAA,YAAAA,EAAAA;YACA,IAAI,CAACQ,KAAMC,CAAAA,IAAI,EAAE;AACf,gBAAA;AACF;AACA,YAAA,MAAMA,IAAmCC,GAAAA,IAAAA,CAAKC,KAAK,CAACH,MAAMC,IAAI,CAAA;YAE9D,IAAIA,IAAAA,CAAKG,OAAO,EAAE;gBAChB1B,MAAOiB,CAAAA,GAAG,CAACM,IAAAA,CAAKG,OAAO,CAAA;AACzB;;AAGA,YAAA,IACEH,IAAKD,CAAAA,KAAK,KAAK,qBAAA,IACfC,KAAKD,KAAK,KAAK,kBACfC,IAAAA,IAAAA,CAAKD,KAAK,KAAK,2BAAA,IACfC,IAAKD,CAAAA,KAAK,KAAK,8BACf,EAAA;gBACAP,YAAaF,CAAAA,SAAAA,CAAAA;AACbJ,gBAAAA,EAAAA,CAAGS,KAAK,EAAA;AACV;AACAX,YAAAA,YAAAA,CAAaY,IAAI,CAACI,IAAKD,CAAAA,KAAK,EAAEC,IAAAA,CAAAA;AAChC,SAAA;AAEA,QAAA,MAAMI,6BAA6B,CAACC,eAAAA,GAAAA;YAClC,OAAO,IAAIC,OAAQ,CAAA,CAACC,OAASC,EAAAA,MAAAA,GAAAA;gBAC3BxB,YAAayB,CAAAA,EAAE,CAAC,8BAAA,EAAgC,CAACT,IAAAA,GAAAA;oBAC/C,IAAIA,IAAAA,CAAKK,eAAe,KAAKA,eAAiB,EAAA;AAC5C,wBAAA;AACF;oBACAE,OAAQ,CAAA,kCAAA,CAAA;AACRvB,oBAAAA,YAAAA,CAAa0B,kBAAkB,CAAC,8BAAA,CAAA;AAClC,iBAAA,CAAA;gBACA1B,YAAayB,CAAAA,EAAE,CAAC,2BAAA,EAA6B,CAACT,IAAAA,GAAAA;oBAC5C,IAAIA,IAAAA,CAAKK,eAAe,KAAKA,eAAiB,EAAA;AAC5C,wBAAA;AACF;AACAG,oBAAAA,MAAAA,CAAO,IAAIG,KAAAA,CAAM,CAAC,2BAA2B,CAAC,EAAE;wBAAEC,KAAO,EAAA;AAA4B,qBAAA,CAAA,CAAA;AACrF5B,oBAAAA,YAAAA,CAAa0B,kBAAkB,CAAC,2BAAA,CAAA;AAClC,iBAAA,CAAA;gBAEA1B,YAAayB,CAAAA,EAAE,CAAC,oBAAsB,EAAA,IAAA;AACpCD,oBAAAA,MAAAA,CAAO,IAAIG,KAAM,CAAA,sBAAA,CAAA,CAAA;AACnB,iBAAA,CAAA;AACF,aAAA,CAAA;AACF,SAAA;AACA,QAAA,MAAMhB,KAAQ,GAAA,IAAA;YACZH,YAAaF,CAAAA,SAAAA,CAAAA;AACbJ,YAAAA,EAAAA,CAAGS,KAAK,EAAA;AACRX,YAAAA,YAAAA,CAAa0B,kBAAkB,EAAA;AACjC,SAAA;QACA,OAAO;AAAEN,YAAAA,0BAAAA;AAA4BT,YAAAA;AAAM,SAAA;AAC7C,KAAA;AACF;;;;"}
1
+ {"version":3,"file":"notification.mjs","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 +1 @@
1
- {"version":3,"file":"analytics.js","sources":["../../src/utils/analytics.ts"],"sourcesContent":["import type { CLIContext, CloudApiService, TrackPayload } from '../types';\n\nconst trackEvent = async (\n ctx: CLIContext,\n cloudApiService: CloudApiService,\n eventName: string,\n eventData: TrackPayload\n) => {\n try {\n await cloudApiService.track(eventName, eventData);\n } catch (e) {\n ctx.logger.debug(`Failed to track ${eventName}`, e);\n }\n};\n\nexport { trackEvent };\n"],"names":["trackEvent","ctx","cloudApiService","eventName","eventData","track","e","logger","debug"],"mappings":";;AAEA,MAAMA,UAAa,GAAA,OACjBC,GACAC,EAAAA,eAAAA,EACAC,SACAC,EAAAA,SAAAA,GAAAA;IAEA,IAAI;QACF,MAAMF,eAAAA,CAAgBG,KAAK,CAACF,SAAWC,EAAAA,SAAAA,CAAAA;AACzC,KAAA,CAAE,OAAOE,CAAG,EAAA;QACVL,GAAIM,CAAAA,MAAM,CAACC,KAAK,CAAC,CAAC,gBAAgB,EAAEL,SAAU,CAAA,CAAC,EAAEG,CAAAA,CAAAA;AACnD;AACF;;;;"}
1
+ {"version":3,"file":"analytics.js","sources":["../../src/utils/analytics.ts"],"sourcesContent":["import type { CLIContext, CloudApiService, TrackPayload } from '../types';\n\nconst trackEvent = async (\n ctx: CLIContext,\n cloudApiService: CloudApiService,\n eventName: string,\n eventData: TrackPayload\n) => {\n try {\n await cloudApiService.track(eventName, eventData);\n } catch (e) {\n ctx.logger.debug(`Failed to track ${eventName}`, e);\n }\n};\n\nexport { trackEvent };\n"],"names":["trackEvent","ctx","cloudApiService","eventName","eventData","track","e","logger","debug"],"mappings":";;AAEA,MAAMA,UAAa,GAAA,OACjBC,GACAC,EAAAA,eAAAA,EACAC,SACAC,EAAAA,SAAAA,GAAAA;IAEA,IAAI;QACF,MAAMF,eAAAA,CAAgBG,KAAK,CAACF,SAAWC,EAAAA,SAAAA,CAAAA;AACzC,KAAA,CAAE,OAAOE,CAAG,EAAA;QACVL,GAAIM,CAAAA,MAAM,CAACC,KAAK,CAAC,CAAC,gBAAgB,EAAEL,WAAW,EAAEG,CAAAA,CAAAA;AACnD;AACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"analytics.mjs","sources":["../../src/utils/analytics.ts"],"sourcesContent":["import type { CLIContext, CloudApiService, TrackPayload } from '../types';\n\nconst trackEvent = async (\n ctx: CLIContext,\n cloudApiService: CloudApiService,\n eventName: string,\n eventData: TrackPayload\n) => {\n try {\n await cloudApiService.track(eventName, eventData);\n } catch (e) {\n ctx.logger.debug(`Failed to track ${eventName}`, e);\n }\n};\n\nexport { trackEvent };\n"],"names":["trackEvent","ctx","cloudApiService","eventName","eventData","track","e","logger","debug"],"mappings":"AAEA,MAAMA,UAAa,GAAA,OACjBC,GACAC,EAAAA,eAAAA,EACAC,SACAC,EAAAA,SAAAA,GAAAA;IAEA,IAAI;QACF,MAAMF,eAAAA,CAAgBG,KAAK,CAACF,SAAWC,EAAAA,SAAAA,CAAAA;AACzC,KAAA,CAAE,OAAOE,CAAG,EAAA;QACVL,GAAIM,CAAAA,MAAM,CAACC,KAAK,CAAC,CAAC,gBAAgB,EAAEL,SAAU,CAAA,CAAC,EAAEG,CAAAA,CAAAA;AACnD;AACF;;;;"}
1
+ {"version":3,"file":"analytics.mjs","sources":["../../src/utils/analytics.ts"],"sourcesContent":["import type { CLIContext, CloudApiService, TrackPayload } from '../types';\n\nconst trackEvent = async (\n ctx: CLIContext,\n cloudApiService: CloudApiService,\n eventName: string,\n eventData: TrackPayload\n) => {\n try {\n await cloudApiService.track(eventName, eventData);\n } catch (e) {\n ctx.logger.debug(`Failed to track ${eventName}`, e);\n }\n};\n\nexport { trackEvent };\n"],"names":["trackEvent","ctx","cloudApiService","eventName","eventData","track","e","logger","debug"],"mappings":"AAEA,MAAMA,UAAa,GAAA,OACjBC,GACAC,EAAAA,eAAAA,EACAC,SACAC,EAAAA,SAAAA,GAAAA;IAEA,IAAI;QACF,MAAMF,eAAAA,CAAgBG,KAAK,CAACF,SAAWC,EAAAA,SAAAA,CAAAA;AACzC,KAAA,CAAE,OAAOE,CAAG,EAAA;QACVL,GAAIM,CAAAA,MAAM,CAACC,KAAK,CAAC,CAAC,gBAAgB,EAAEL,WAAW,EAAEG,CAAAA,CAAAA;AACnD;AACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"error-message-factories.js","sources":["../../src/utils/error-message-factories.ts"],"sourcesContent":["import chalk from 'chalk';\nimport boxen from 'boxen';\nimport { apiConfig } from '../config/api';\n\ntype EnvironmentErrorMessage = {\n projectName: string;\n firstLine: string;\n secondLine: string;\n};\n\nexport const environmentErrorMessageFactory = ({\n projectName,\n firstLine,\n secondLine,\n}: EnvironmentErrorMessage) => {\n return [\n chalk.yellow(firstLine),\n '',\n chalk.cyan(secondLine),\n chalk.blue(' → ') +\n chalk.blue.underline(`${apiConfig.dashboardBaseUrl}/projects/${projectName}`),\n ].join('\\n');\n};\n\nexport const environmentCreationErrorFactory = (environmentErrorMessage: string) =>\n boxen(environmentErrorMessage, {\n padding: 1,\n margin: 1,\n borderStyle: 'round',\n borderColor: 'white',\n titleAlignment: 'left',\n });\n"],"names":["environmentErrorMessageFactory","projectName","firstLine","secondLine","chalk","yellow","cyan","blue","underline","apiConfig","dashboardBaseUrl","join","environmentCreationErrorFactory","environmentErrorMessage","boxen","padding","margin","borderStyle","borderColor","titleAlignment"],"mappings":";;;;;;AAUO,MAAMA,iCAAiC,CAAC,EAC7CC,WAAW,EACXC,SAAS,EACTC,UAAU,EACc,GAAA;IACxB,OAAO;AACLC,QAAAA,KAAAA,CAAMC,MAAM,CAACH,SAAAA,CAAAA;AACb,QAAA,EAAA;AACAE,QAAAA,KAAAA,CAAME,IAAI,CAACH,UAAAA,CAAAA;AACXC,QAAAA,KAAAA,CAAMG,IAAI,CAAC,MAAA,CAAA,GACTH,KAAMG,CAAAA,IAAI,CAACC,SAAS,CAAC,CAAC,EAAEC,cAAUC,gBAAgB,CAAC,UAAU,EAAET,YAAY,CAAC;AAC/E,KAAA,CAACU,IAAI,CAAC,IAAA,CAAA;AACT;AAEaC,MAAAA,+BAAAA,GAAkC,CAACC,uBAAAA,GAC9CC,MAAMD,uBAAyB,EAAA;QAC7BE,OAAS,EAAA,CAAA;QACTC,MAAQ,EAAA,CAAA;QACRC,WAAa,EAAA,OAAA;QACbC,WAAa,EAAA,OAAA;QACbC,cAAgB,EAAA;KACf;;;;;"}
1
+ {"version":3,"file":"error-message-factories.js","sources":["../../src/utils/error-message-factories.ts"],"sourcesContent":["import chalk from 'chalk';\nimport boxen from 'boxen';\nimport { apiConfig } from '../config/api';\n\ntype EnvironmentErrorMessage = {\n projectName: string;\n firstLine: string;\n secondLine: string;\n};\n\nexport const environmentErrorMessageFactory = ({\n projectName,\n firstLine,\n secondLine,\n}: EnvironmentErrorMessage) => {\n return [\n chalk.yellow(firstLine),\n '',\n chalk.cyan(secondLine),\n chalk.blue(' → ') +\n chalk.blue.underline(`${apiConfig.dashboardBaseUrl}/projects/${projectName}`),\n ].join('\\n');\n};\n\nexport const environmentCreationErrorFactory = (environmentErrorMessage: string) =>\n boxen(environmentErrorMessage, {\n padding: 1,\n margin: 1,\n borderStyle: 'round',\n borderColor: 'white',\n titleAlignment: 'left',\n });\n"],"names":["environmentErrorMessageFactory","projectName","firstLine","secondLine","chalk","yellow","cyan","blue","underline","apiConfig","dashboardBaseUrl","join","environmentCreationErrorFactory","environmentErrorMessage","boxen","padding","margin","borderStyle","borderColor","titleAlignment"],"mappings":";;;;;;AAUO,MAAMA,iCAAiC,CAAC,EAC7CC,WAAW,EACXC,SAAS,EACTC,UAAU,EACc,GAAA;IACxB,OAAO;AACLC,QAAAA,KAAAA,CAAMC,MAAM,CAACH,SAAAA,CAAAA;AACb,QAAA,EAAA;AACAE,QAAAA,KAAAA,CAAME,IAAI,CAACH,UAAAA,CAAAA;AACXC,QAAAA,KAAAA,CAAMG,IAAI,CAAC,MACTH,CAAAA,GAAAA,KAAAA,CAAMG,IAAI,CAACC,SAAS,CAAC,CAAA,EAAGC,aAAUC,CAAAA,gBAAgB,CAAC,UAAU,EAAET,WAAa,CAAA,CAAA;AAC/E,KAAA,CAACU,IAAI,CAAC,IAAA,CAAA;AACT;AAEaC,MAAAA,+BAAAA,GAAkC,CAACC,uBAAAA,GAC9CC,MAAMD,uBAAyB,EAAA;QAC7BE,OAAS,EAAA,CAAA;QACTC,MAAQ,EAAA,CAAA;QACRC,WAAa,EAAA,OAAA;QACbC,WAAa,EAAA,OAAA;QACbC,cAAgB,EAAA;KACf;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"error-message-factories.mjs","sources":["../../src/utils/error-message-factories.ts"],"sourcesContent":["import chalk from 'chalk';\nimport boxen from 'boxen';\nimport { apiConfig } from '../config/api';\n\ntype EnvironmentErrorMessage = {\n projectName: string;\n firstLine: string;\n secondLine: string;\n};\n\nexport const environmentErrorMessageFactory = ({\n projectName,\n firstLine,\n secondLine,\n}: EnvironmentErrorMessage) => {\n return [\n chalk.yellow(firstLine),\n '',\n chalk.cyan(secondLine),\n chalk.blue(' → ') +\n chalk.blue.underline(`${apiConfig.dashboardBaseUrl}/projects/${projectName}`),\n ].join('\\n');\n};\n\nexport const environmentCreationErrorFactory = (environmentErrorMessage: string) =>\n boxen(environmentErrorMessage, {\n padding: 1,\n margin: 1,\n borderStyle: 'round',\n borderColor: 'white',\n titleAlignment: 'left',\n });\n"],"names":["environmentErrorMessageFactory","projectName","firstLine","secondLine","chalk","yellow","cyan","blue","underline","apiConfig","dashboardBaseUrl","join","environmentCreationErrorFactory","environmentErrorMessage","boxen","padding","margin","borderStyle","borderColor","titleAlignment"],"mappings":";;;;AAUO,MAAMA,iCAAiC,CAAC,EAC7CC,WAAW,EACXC,SAAS,EACTC,UAAU,EACc,GAAA;IACxB,OAAO;AACLC,QAAAA,KAAAA,CAAMC,MAAM,CAACH,SAAAA,CAAAA;AACb,QAAA,EAAA;AACAE,QAAAA,KAAAA,CAAME,IAAI,CAACH,UAAAA,CAAAA;AACXC,QAAAA,KAAAA,CAAMG,IAAI,CAAC,MAAA,CAAA,GACTH,KAAMG,CAAAA,IAAI,CAACC,SAAS,CAAC,CAAC,EAAEC,UAAUC,gBAAgB,CAAC,UAAU,EAAET,YAAY,CAAC;AAC/E,KAAA,CAACU,IAAI,CAAC,IAAA,CAAA;AACT;AAEaC,MAAAA,+BAAAA,GAAkC,CAACC,uBAAAA,GAC9CC,MAAMD,uBAAyB,EAAA;QAC7BE,OAAS,EAAA,CAAA;QACTC,MAAQ,EAAA,CAAA;QACRC,WAAa,EAAA,OAAA;QACbC,WAAa,EAAA,OAAA;QACbC,cAAgB,EAAA;KACf;;;;"}
1
+ {"version":3,"file":"error-message-factories.mjs","sources":["../../src/utils/error-message-factories.ts"],"sourcesContent":["import chalk from 'chalk';\nimport boxen from 'boxen';\nimport { apiConfig } from '../config/api';\n\ntype EnvironmentErrorMessage = {\n projectName: string;\n firstLine: string;\n secondLine: string;\n};\n\nexport const environmentErrorMessageFactory = ({\n projectName,\n firstLine,\n secondLine,\n}: EnvironmentErrorMessage) => {\n return [\n chalk.yellow(firstLine),\n '',\n chalk.cyan(secondLine),\n chalk.blue(' → ') +\n chalk.blue.underline(`${apiConfig.dashboardBaseUrl}/projects/${projectName}`),\n ].join('\\n');\n};\n\nexport const environmentCreationErrorFactory = (environmentErrorMessage: string) =>\n boxen(environmentErrorMessage, {\n padding: 1,\n margin: 1,\n borderStyle: 'round',\n borderColor: 'white',\n titleAlignment: 'left',\n });\n"],"names":["environmentErrorMessageFactory","projectName","firstLine","secondLine","chalk","yellow","cyan","blue","underline","apiConfig","dashboardBaseUrl","join","environmentCreationErrorFactory","environmentErrorMessage","boxen","padding","margin","borderStyle","borderColor","titleAlignment"],"mappings":";;;;AAUO,MAAMA,iCAAiC,CAAC,EAC7CC,WAAW,EACXC,SAAS,EACTC,UAAU,EACc,GAAA;IACxB,OAAO;AACLC,QAAAA,KAAAA,CAAMC,MAAM,CAACH,SAAAA,CAAAA;AACb,QAAA,EAAA;AACAE,QAAAA,KAAAA,CAAME,IAAI,CAACH,UAAAA,CAAAA;AACXC,QAAAA,KAAAA,CAAMG,IAAI,CAAC,MACTH,CAAAA,GAAAA,KAAAA,CAAMG,IAAI,CAACC,SAAS,CAAC,CAAA,EAAGC,SAAUC,CAAAA,gBAAgB,CAAC,UAAU,EAAET,WAAa,CAAA,CAAA;AAC/E,KAAA,CAACU,IAAI,CAAC,IAAA,CAAA;AACT;AAEaC,MAAAA,+BAAAA,GAAkC,CAACC,uBAAAA,GAC9CC,MAAMD,uBAAyB,EAAA;QAC7BE,OAAS,EAAA,CAAA;QACTC,MAAQ,EAAA,CAAA;QACRC,WAAa,EAAA,OAAA;QACbC,WAAa,EAAA,OAAA;QACbC,cAAgB,EAAA;KACf;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sources":["../../src/utils/helpers.ts"],"sourcesContent":["import chalk from 'chalk';\nimport { has } from 'lodash/fp';\n\n// TODO: Remove duplicated code by extracting to a shared package\n\nconst assertCwdContainsStrapiProject = (name: string) => {\n const logErrorAndExit = () => {\n console.log(\n `You need to run ${chalk.yellow(\n `strapi ${name}`\n )} in a Strapi project. Make sure you are in the right directory.`\n );\n process.exit(1);\n };\n\n try {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const pkgJSON = require(`${process.cwd()}/package.json`);\n if (\n !has('dependencies.@strapi/strapi', pkgJSON) &&\n !has('devDependencies.@strapi/strapi', pkgJSON)\n ) {\n logErrorAndExit();\n }\n } catch (err) {\n logErrorAndExit();\n }\n};\n\nconst runAction =\n (name: string, action: (...args: any[]) => Promise<unknown>) =>\n (...args: unknown[]) => {\n assertCwdContainsStrapiProject(name);\n\n Promise.resolve()\n .then(() => {\n return action(...args);\n })\n .catch((error) => {\n console.error(error);\n process.exit(1);\n });\n };\n\nexport { runAction };\n"],"names":["assertCwdContainsStrapiProject","name","logErrorAndExit","console","log","chalk","yellow","process","exit","pkgJSON","require","cwd","has","err","runAction","action","args","Promise","resolve","then","catch","error"],"mappings":";;;;;AAGA;AAEA,MAAMA,iCAAiC,CAACC,IAAAA,GAAAA;AACtC,IAAA,MAAMC,eAAkB,GAAA,IAAA;AACtBC,QAAAA,OAAAA,CAAQC,GAAG,CACT,CAAC,gBAAgB,EAAEC,KAAMC,CAAAA,MAAM,CAC7B,CAAC,OAAO,EAAEL,IAAAA,CAAK,CAAC,CAAA,CAChB,+DAA+D,CAAC,CAAA;AAEpEM,QAAAA,OAAAA,CAAQC,IAAI,CAAC,CAAA,CAAA;AACf,KAAA;IAEA,IAAI;;QAEF,MAAMC,OAAAA,GAAUC,QAAQ,CAAC,EAAEH,QAAQI,GAAG,EAAA,CAAG,aAAa,CAAC,CAAA;AACvD,QAAA,IACE,CAACC,MAAI,CAAA,6BAAA,EAA+BH,YACpC,CAACG,MAAAA,CAAI,kCAAkCH,OACvC,CAAA,EAAA;AACAP,YAAAA,eAAAA,EAAAA;AACF;AACF,KAAA,CAAE,OAAOW,GAAK,EAAA;AACZX,QAAAA,eAAAA,EAAAA;AACF;AACF,CAAA;AAEA,MAAMY,SACJ,GAAA,CAACb,IAAcc,EAAAA,MAAAA,GACf,CAAC,GAAGC,IAAAA,GAAAA;QACFhB,8BAA+BC,CAAAA,IAAAA,CAAAA;QAE/BgB,OAAQC,CAAAA,OAAO,EACZC,CAAAA,IAAI,CAAC,IAAA;AACJ,YAAA,OAAOJ,MAAUC,CAAAA,GAAAA,IAAAA,CAAAA;SAElBI,CAAAA,CAAAA,KAAK,CAAC,CAACC,KAAAA,GAAAA;AACNlB,YAAAA,OAAAA,CAAQkB,KAAK,CAACA,KAAAA,CAAAA;AACdd,YAAAA,OAAAA,CAAQC,IAAI,CAAC,CAAA,CAAA;AACf,SAAA,CAAA;AACJ;;;;"}
1
+ {"version":3,"file":"helpers.js","sources":["../../src/utils/helpers.ts"],"sourcesContent":["import chalk from 'chalk';\nimport { has } from 'lodash/fp';\n\n// TODO: Remove duplicated code by extracting to a shared package\n\nconst assertCwdContainsStrapiProject = (name: string) => {\n const logErrorAndExit = () => {\n console.log(\n `You need to run ${chalk.yellow(\n `strapi ${name}`\n )} in a Strapi project. Make sure you are in the right directory.`\n );\n process.exit(1);\n };\n\n try {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const pkgJSON = require(`${process.cwd()}/package.json`);\n if (\n !has('dependencies.@strapi/strapi', pkgJSON) &&\n !has('devDependencies.@strapi/strapi', pkgJSON)\n ) {\n logErrorAndExit();\n }\n } catch (err) {\n logErrorAndExit();\n }\n};\n\nconst runAction =\n (name: string, action: (...args: any[]) => Promise<unknown>) =>\n (...args: unknown[]) => {\n assertCwdContainsStrapiProject(name);\n\n Promise.resolve()\n .then(() => {\n return action(...args);\n })\n .catch((error) => {\n console.error(error);\n process.exit(1);\n });\n };\n\nexport { runAction };\n"],"names":["assertCwdContainsStrapiProject","name","logErrorAndExit","console","log","chalk","yellow","process","exit","pkgJSON","require","cwd","has","err","runAction","action","args","Promise","resolve","then","catch","error"],"mappings":";;;;;AAGA;AAEA,MAAMA,iCAAiC,CAACC,IAAAA,GAAAA;AACtC,IAAA,MAAMC,eAAkB,GAAA,IAAA;AACtBC,QAAAA,OAAAA,CAAQC,GAAG,CACT,CAAC,gBAAgB,EAAEC,KAAMC,CAAAA,MAAM,CAC7B,CAAC,OAAO,EAAEL,IAAM,CAAA,CAAA,CAAA,CAChB,+DAA+D,CAAC,CAAA;AAEpEM,QAAAA,OAAAA,CAAQC,IAAI,CAAC,CAAA,CAAA;AACf,KAAA;IAEA,IAAI;;AAEF,QAAA,MAAMC,UAAUC,OAAQ,CAAA,CAAA,EAAGH,QAAQI,GAAG,EAAA,CAAG,aAAa,CAAC,CAAA;AACvD,QAAA,IACE,CAACC,MAAI,CAAA,6BAAA,EAA+BH,YACpC,CAACG,MAAAA,CAAI,kCAAkCH,OACvC,CAAA,EAAA;AACAP,YAAAA,eAAAA,EAAAA;AACF;AACF,KAAA,CAAE,OAAOW,GAAK,EAAA;AACZX,QAAAA,eAAAA,EAAAA;AACF;AACF,CAAA;AAEA,MAAMY,SACJ,GAAA,CAACb,IAAcc,EAAAA,MAAAA,GACf,CAAC,GAAGC,IAAAA,GAAAA;QACFhB,8BAA+BC,CAAAA,IAAAA,CAAAA;QAE/BgB,OAAQC,CAAAA,OAAO,EACZC,CAAAA,IAAI,CAAC,IAAA;AACJ,YAAA,OAAOJ,MAAUC,CAAAA,GAAAA,IAAAA,CAAAA;SAElBI,CAAAA,CAAAA,KAAK,CAAC,CAACC,KAAAA,GAAAA;AACNlB,YAAAA,OAAAA,CAAQkB,KAAK,CAACA,KAAAA,CAAAA;AACdd,YAAAA,OAAAA,CAAQC,IAAI,CAAC,CAAA,CAAA;AACf,SAAA,CAAA;AACJ;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.mjs","sources":["../../src/utils/helpers.ts"],"sourcesContent":["import chalk from 'chalk';\nimport { has } from 'lodash/fp';\n\n// TODO: Remove duplicated code by extracting to a shared package\n\nconst assertCwdContainsStrapiProject = (name: string) => {\n const logErrorAndExit = () => {\n console.log(\n `You need to run ${chalk.yellow(\n `strapi ${name}`\n )} in a Strapi project. Make sure you are in the right directory.`\n );\n process.exit(1);\n };\n\n try {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const pkgJSON = require(`${process.cwd()}/package.json`);\n if (\n !has('dependencies.@strapi/strapi', pkgJSON) &&\n !has('devDependencies.@strapi/strapi', pkgJSON)\n ) {\n logErrorAndExit();\n }\n } catch (err) {\n logErrorAndExit();\n }\n};\n\nconst runAction =\n (name: string, action: (...args: any[]) => Promise<unknown>) =>\n (...args: unknown[]) => {\n assertCwdContainsStrapiProject(name);\n\n Promise.resolve()\n .then(() => {\n return action(...args);\n })\n .catch((error) => {\n console.error(error);\n process.exit(1);\n });\n };\n\nexport { runAction };\n"],"names":["assertCwdContainsStrapiProject","name","logErrorAndExit","console","log","chalk","yellow","process","exit","pkgJSON","require","cwd","has","err","runAction","action","args","Promise","resolve","then","catch","error"],"mappings":";;;AAGA;AAEA,MAAMA,iCAAiC,CAACC,IAAAA,GAAAA;AACtC,IAAA,MAAMC,eAAkB,GAAA,IAAA;AACtBC,QAAAA,OAAAA,CAAQC,GAAG,CACT,CAAC,gBAAgB,EAAEC,KAAMC,CAAAA,MAAM,CAC7B,CAAC,OAAO,EAAEL,IAAAA,CAAK,CAAC,CAAA,CAChB,+DAA+D,CAAC,CAAA;AAEpEM,QAAAA,OAAAA,CAAQC,IAAI,CAAC,CAAA,CAAA;AACf,KAAA;IAEA,IAAI;;QAEF,MAAMC,OAAAA,GAAUC,QAAQ,CAAC,EAAEH,QAAQI,GAAG,EAAA,CAAG,aAAa,CAAC,CAAA;AACvD,QAAA,IACE,CAACC,GAAI,CAAA,6BAAA,EAA+BH,YACpC,CAACG,GAAAA,CAAI,kCAAkCH,OACvC,CAAA,EAAA;AACAP,YAAAA,eAAAA,EAAAA;AACF;AACF,KAAA,CAAE,OAAOW,GAAK,EAAA;AACZX,QAAAA,eAAAA,EAAAA;AACF;AACF,CAAA;AAEA,MAAMY,SACJ,GAAA,CAACb,IAAcc,EAAAA,MAAAA,GACf,CAAC,GAAGC,IAAAA,GAAAA;QACFhB,8BAA+BC,CAAAA,IAAAA,CAAAA;QAE/BgB,OAAQC,CAAAA,OAAO,EACZC,CAAAA,IAAI,CAAC,IAAA;AACJ,YAAA,OAAOJ,MAAUC,CAAAA,GAAAA,IAAAA,CAAAA;SAElBI,CAAAA,CAAAA,KAAK,CAAC,CAACC,KAAAA,GAAAA;AACNlB,YAAAA,OAAAA,CAAQkB,KAAK,CAACA,KAAAA,CAAAA;AACdd,YAAAA,OAAAA,CAAQC,IAAI,CAAC,CAAA,CAAA;AACf,SAAA,CAAA;AACJ;;;;"}
1
+ {"version":3,"file":"helpers.mjs","sources":["../../src/utils/helpers.ts"],"sourcesContent":["import chalk from 'chalk';\nimport { has } from 'lodash/fp';\n\n// TODO: Remove duplicated code by extracting to a shared package\n\nconst assertCwdContainsStrapiProject = (name: string) => {\n const logErrorAndExit = () => {\n console.log(\n `You need to run ${chalk.yellow(\n `strapi ${name}`\n )} in a Strapi project. Make sure you are in the right directory.`\n );\n process.exit(1);\n };\n\n try {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const pkgJSON = require(`${process.cwd()}/package.json`);\n if (\n !has('dependencies.@strapi/strapi', pkgJSON) &&\n !has('devDependencies.@strapi/strapi', pkgJSON)\n ) {\n logErrorAndExit();\n }\n } catch (err) {\n logErrorAndExit();\n }\n};\n\nconst runAction =\n (name: string, action: (...args: any[]) => Promise<unknown>) =>\n (...args: unknown[]) => {\n assertCwdContainsStrapiProject(name);\n\n Promise.resolve()\n .then(() => {\n return action(...args);\n })\n .catch((error) => {\n console.error(error);\n process.exit(1);\n });\n };\n\nexport { runAction };\n"],"names":["assertCwdContainsStrapiProject","name","logErrorAndExit","console","log","chalk","yellow","process","exit","pkgJSON","require","cwd","has","err","runAction","action","args","Promise","resolve","then","catch","error"],"mappings":";;;AAGA;AAEA,MAAMA,iCAAiC,CAACC,IAAAA,GAAAA;AACtC,IAAA,MAAMC,eAAkB,GAAA,IAAA;AACtBC,QAAAA,OAAAA,CAAQC,GAAG,CACT,CAAC,gBAAgB,EAAEC,KAAMC,CAAAA,MAAM,CAC7B,CAAC,OAAO,EAAEL,IAAM,CAAA,CAAA,CAAA,CAChB,+DAA+D,CAAC,CAAA;AAEpEM,QAAAA,OAAAA,CAAQC,IAAI,CAAC,CAAA,CAAA;AACf,KAAA;IAEA,IAAI;;AAEF,QAAA,MAAMC,UAAUC,OAAQ,CAAA,CAAA,EAAGH,QAAQI,GAAG,EAAA,CAAG,aAAa,CAAC,CAAA;AACvD,QAAA,IACE,CAACC,GAAI,CAAA,6BAAA,EAA+BH,YACpC,CAACG,GAAAA,CAAI,kCAAkCH,OACvC,CAAA,EAAA;AACAP,YAAAA,eAAAA,EAAAA;AACF;AACF,KAAA,CAAE,OAAOW,GAAK,EAAA;AACZX,QAAAA,eAAAA,EAAAA;AACF;AACF,CAAA;AAEA,MAAMY,SACJ,GAAA,CAACb,IAAcc,EAAAA,MAAAA,GACf,CAAC,GAAGC,IAAAA,GAAAA;QACFhB,8BAA+BC,CAAAA,IAAAA,CAAAA;QAE/BgB,OAAQC,CAAAA,OAAO,EACZC,CAAAA,IAAI,CAAC,IAAA;AACJ,YAAA,OAAOJ,MAAUC,CAAAA,GAAAA,IAAAA,CAAAA;SAElBI,CAAAA,CAAAA,KAAK,CAAC,CAACC,KAAAA,GAAAA;AACNlB,YAAAA,OAAAA,CAAQkB,KAAK,CAACA,KAAAA,CAAAA;AACdd,YAAAA,OAAAA,CAAQC,IAAI,CAAC,CAAA,CAAA;AACf,SAAA,CAAA;AACJ;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@strapi/cloud-cli",
3
- "version": "5.30.0",
3
+ "version": "5.31.0",
4
4
  "description": "Commands to interact with the Strapi Cloud",
5
5
  "keywords": [
6
6
  "strapi",
@@ -47,7 +47,7 @@
47
47
  "watch": "run -T rollup -c -w"
48
48
  },
49
49
  "dependencies": {
50
- "@strapi/utils": "5.30.0",
50
+ "@strapi/utils": "5.31.0",
51
51
  "axios": "1.12.2",
52
52
  "boxen": "5.1.2",
53
53
  "chalk": "4.1.2",
@@ -72,11 +72,11 @@
72
72
  "@types/cli-progress": "3.11.5",
73
73
  "@types/eventsource": "1.1.15",
74
74
  "@types/lodash": "^4.14.191",
75
- "eslint-config-custom": "5.30.0",
76
- "tsconfig": "5.30.0"
75
+ "eslint-config-custom": "5.31.0",
76
+ "tsconfig": "5.31.0"
77
77
  },
78
78
  "engines": {
79
- "node": ">=18.0.0 <=22.x.x",
79
+ "node": ">=20.0.0 <=24.x.x",
80
80
  "npm": ">=6.0.0"
81
81
  }
82
82
  }