@strapi/cloud-cli 0.0.0-next.f6dca5adf05ef6bed9605a1535999ab0bbbf063e → 0.0.0-next.f93d6eabe52aa7681655cfa08eedbc3708dbb90d

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (319) hide show
  1. package/dist/bin.d.ts.map +1 -0
  2. package/dist/bin.js +40 -171
  3. package/dist/bin.js.map +1 -1
  4. package/dist/bin.mjs +44 -0
  5. package/dist/bin.mjs.map +1 -0
  6. package/dist/cloud/command.d.ts +3 -0
  7. package/dist/cloud/command.d.ts.map +1 -0
  8. package/dist/cloud/command.js +14 -0
  9. package/dist/cloud/command.js.map +1 -0
  10. package/dist/cloud/command.mjs +12 -0
  11. package/dist/cloud/command.mjs.map +1 -0
  12. package/dist/config/api.d.ts.map +1 -0
  13. package/dist/config/api.js +11 -0
  14. package/dist/config/api.js.map +1 -0
  15. package/dist/config/api.mjs +9 -0
  16. package/dist/config/api.mjs.map +1 -0
  17. package/dist/config/local.d.ts.map +1 -0
  18. package/dist/config/local.js +60 -0
  19. package/dist/config/local.js.map +1 -0
  20. package/dist/config/local.mjs +55 -0
  21. package/dist/config/local.mjs.map +1 -0
  22. package/dist/create-project/action.d.ts.map +1 -0
  23. package/dist/create-project/action.js +95 -0
  24. package/dist/create-project/action.js.map +1 -0
  25. package/dist/create-project/action.mjs +93 -0
  26. package/dist/create-project/action.mjs.map +1 -0
  27. package/dist/create-project/command.d.ts.map +1 -0
  28. package/dist/create-project/command.js +14 -0
  29. package/dist/create-project/command.js.map +1 -0
  30. package/dist/create-project/command.mjs +12 -0
  31. package/dist/create-project/command.mjs.map +1 -0
  32. package/dist/create-project/index.d.ts.map +1 -0
  33. package/dist/create-project/index.js +18 -0
  34. package/dist/create-project/index.js.map +1 -0
  35. package/dist/create-project/index.mjs +12 -0
  36. package/dist/create-project/index.mjs.map +1 -0
  37. package/dist/create-project/utils/get-project-name-from-pkg.d.ts.map +1 -0
  38. package/dist/create-project/utils/get-project-name-from-pkg.js +15 -0
  39. package/dist/create-project/utils/get-project-name-from-pkg.js.map +1 -0
  40. package/dist/create-project/utils/get-project-name-from-pkg.mjs +13 -0
  41. package/dist/create-project/utils/get-project-name-from-pkg.mjs.map +1 -0
  42. package/dist/create-project/utils/project-questions.utils.d.ts.map +1 -0
  43. package/dist/create-project/utils/project-questions.utils.js +63 -0
  44. package/dist/create-project/utils/project-questions.utils.js.map +1 -0
  45. package/dist/create-project/utils/project-questions.utils.mjs +59 -0
  46. package/dist/create-project/utils/project-questions.utils.mjs.map +1 -0
  47. package/dist/deploy-project/action.d.ts +8 -0
  48. package/dist/deploy-project/action.d.ts.map +1 -0
  49. package/dist/deploy-project/action.js +287 -0
  50. package/dist/deploy-project/action.js.map +1 -0
  51. package/dist/deploy-project/action.mjs +266 -0
  52. package/dist/deploy-project/action.mjs.map +1 -0
  53. package/dist/deploy-project/command.d.ts.map +1 -0
  54. package/dist/deploy-project/command.js +14 -0
  55. package/dist/deploy-project/command.js.map +1 -0
  56. package/dist/deploy-project/command.mjs +12 -0
  57. package/dist/deploy-project/command.mjs.map +1 -0
  58. package/dist/deploy-project/index.d.ts.map +1 -0
  59. package/dist/deploy-project/index.js +18 -0
  60. package/dist/deploy-project/index.js.map +1 -0
  61. package/dist/deploy-project/index.mjs +12 -0
  62. package/dist/deploy-project/index.mjs.map +1 -0
  63. package/dist/environment/command.d.ts +3 -0
  64. package/dist/environment/command.d.ts.map +1 -0
  65. package/dist/environment/command.js +15 -0
  66. package/dist/environment/command.js.map +1 -0
  67. package/dist/environment/command.mjs +13 -0
  68. package/dist/environment/command.mjs.map +1 -0
  69. package/dist/environment/link/action.d.ts.map +1 -0
  70. package/dist/environment/link/action.js +117 -0
  71. package/dist/environment/link/action.js.map +1 -0
  72. package/dist/environment/link/action.mjs +115 -0
  73. package/dist/environment/link/action.mjs.map +1 -0
  74. package/dist/environment/link/command.d.ts.map +1 -0
  75. package/dist/environment/link/command.js +13 -0
  76. package/dist/environment/link/command.js.map +1 -0
  77. package/dist/environment/link/command.mjs +11 -0
  78. package/dist/environment/link/command.mjs.map +1 -0
  79. package/dist/environment/link/index.d.ts.map +1 -0
  80. package/dist/environment/link/index.js +18 -0
  81. package/dist/environment/link/index.js.map +1 -0
  82. package/dist/environment/link/index.mjs +12 -0
  83. package/dist/environment/link/index.mjs.map +1 -0
  84. package/dist/environment/list/action.d.ts +4 -0
  85. package/dist/environment/list/action.d.ts.map +1 -0
  86. package/dist/environment/list/action.js +57 -0
  87. package/dist/environment/list/action.js.map +1 -0
  88. package/dist/environment/list/action.mjs +55 -0
  89. package/dist/environment/list/action.mjs.map +1 -0
  90. package/dist/environment/list/command.d.ts +4 -0
  91. package/dist/environment/list/command.d.ts.map +1 -0
  92. package/dist/environment/list/command.js +13 -0
  93. package/dist/environment/list/command.js.map +1 -0
  94. package/dist/environment/list/command.mjs +11 -0
  95. package/dist/environment/list/command.mjs.map +1 -0
  96. package/dist/environment/list/index.d.ts +7 -0
  97. package/dist/environment/list/index.d.ts.map +1 -0
  98. package/dist/environment/list/index.js +18 -0
  99. package/dist/environment/list/index.js.map +1 -0
  100. package/dist/environment/list/index.mjs +12 -0
  101. package/dist/environment/list/index.mjs.map +1 -0
  102. package/dist/{src/index.d.ts → index.d.ts} +1 -0
  103. package/dist/index.d.ts.map +1 -0
  104. package/dist/index.js +56 -1670
  105. package/dist/index.js.map +1 -1
  106. package/dist/index.mjs +55 -1615
  107. package/dist/index.mjs.map +1 -1
  108. package/dist/link/action.d.ts.map +1 -0
  109. package/dist/link/action.js +146 -0
  110. package/dist/link/action.js.map +1 -0
  111. package/dist/link/action.mjs +144 -0
  112. package/dist/link/action.mjs.map +1 -0
  113. package/dist/link/command.d.ts.map +1 -0
  114. package/dist/link/command.js +13 -0
  115. package/dist/link/command.js.map +1 -0
  116. package/dist/link/command.mjs +11 -0
  117. package/dist/link/command.mjs.map +1 -0
  118. package/dist/link/index.d.ts.map +1 -0
  119. package/dist/link/index.js +18 -0
  120. package/dist/link/index.js.map +1 -0
  121. package/dist/link/index.mjs +12 -0
  122. package/dist/link/index.mjs.map +1 -0
  123. package/dist/list-projects/action.d.ts.map +1 -0
  124. package/dist/list-projects/action.js +34 -0
  125. package/dist/list-projects/action.js.map +1 -0
  126. package/dist/list-projects/action.mjs +32 -0
  127. package/dist/list-projects/action.mjs.map +1 -0
  128. package/dist/list-projects/command.d.ts.map +1 -0
  129. package/dist/list-projects/command.js +13 -0
  130. package/dist/list-projects/command.js.map +1 -0
  131. package/dist/list-projects/command.mjs +11 -0
  132. package/dist/list-projects/command.mjs.map +1 -0
  133. package/dist/list-projects/index.d.ts.map +1 -0
  134. package/dist/list-projects/index.js +18 -0
  135. package/dist/list-projects/index.js.map +1 -0
  136. package/dist/list-projects/index.mjs +12 -0
  137. package/dist/list-projects/index.mjs.map +1 -0
  138. package/dist/login/action.d.ts.map +1 -0
  139. package/dist/login/action.js +177 -0
  140. package/dist/login/action.js.map +1 -0
  141. package/dist/login/action.mjs +172 -0
  142. package/dist/login/action.mjs.map +1 -0
  143. package/dist/login/command.d.ts.map +1 -0
  144. package/dist/login/command.js +14 -0
  145. package/dist/login/command.js.map +1 -0
  146. package/dist/login/command.mjs +12 -0
  147. package/dist/login/command.mjs.map +1 -0
  148. package/dist/login/index.d.ts.map +1 -0
  149. package/dist/login/index.js +18 -0
  150. package/dist/login/index.js.map +1 -0
  151. package/dist/login/index.mjs +12 -0
  152. package/dist/login/index.mjs.map +1 -0
  153. package/dist/logout/action.d.ts.map +1 -0
  154. package/dist/logout/action.js +46 -0
  155. package/dist/logout/action.js.map +1 -0
  156. package/dist/logout/action.mjs +44 -0
  157. package/dist/logout/action.mjs.map +1 -0
  158. package/dist/logout/command.d.ts.map +1 -0
  159. package/dist/logout/command.js +14 -0
  160. package/dist/logout/command.js.map +1 -0
  161. package/dist/logout/command.mjs +12 -0
  162. package/dist/logout/command.mjs.map +1 -0
  163. package/dist/logout/index.d.ts.map +1 -0
  164. package/dist/logout/index.js +18 -0
  165. package/dist/logout/index.js.map +1 -0
  166. package/dist/logout/index.mjs +12 -0
  167. package/dist/logout/index.mjs.map +1 -0
  168. package/dist/package.json.js +129 -0
  169. package/dist/package.json.js.map +1 -0
  170. package/dist/package.json.mjs +105 -0
  171. package/dist/package.json.mjs.map +1 -0
  172. package/dist/services/build-logs.d.ts.map +1 -0
  173. package/dist/services/build-logs.js +67 -0
  174. package/dist/services/build-logs.js.map +1 -0
  175. package/dist/services/build-logs.mjs +65 -0
  176. package/dist/services/build-logs.mjs.map +1 -0
  177. package/dist/{src/services → services}/cli-api.d.ts +21 -3
  178. package/dist/services/cli-api.d.ts.map +1 -0
  179. package/dist/services/cli-api.js +146 -0
  180. package/dist/services/cli-api.js.map +1 -0
  181. package/dist/services/cli-api.mjs +143 -0
  182. package/dist/services/cli-api.mjs.map +1 -0
  183. package/dist/services/index.d.ts.map +1 -0
  184. package/dist/services/index.js +14 -0
  185. package/dist/services/index.js.map +1 -0
  186. package/dist/services/index.mjs +6 -0
  187. package/dist/services/index.mjs.map +1 -0
  188. package/dist/services/logger.d.ts.map +1 -0
  189. package/dist/services/logger.js +128 -0
  190. package/dist/services/logger.js.map +1 -0
  191. package/dist/services/logger.mjs +107 -0
  192. package/dist/services/logger.mjs.map +1 -0
  193. package/dist/services/notification.d.ts.map +1 -0
  194. package/dist/services/notification.js +37 -0
  195. package/dist/services/notification.js.map +1 -0
  196. package/dist/services/notification.mjs +35 -0
  197. package/dist/services/notification.mjs.map +1 -0
  198. package/dist/services/strapi-info-save.d.ts +25 -0
  199. package/dist/services/strapi-info-save.d.ts.map +1 -0
  200. package/dist/services/strapi-info-save.js +53 -0
  201. package/dist/services/strapi-info-save.js.map +1 -0
  202. package/dist/services/strapi-info-save.mjs +47 -0
  203. package/dist/services/strapi-info-save.mjs.map +1 -0
  204. package/dist/services/token.d.ts.map +1 -0
  205. package/dist/services/token.js +126 -0
  206. package/dist/services/token.js.map +1 -0
  207. package/dist/services/token.mjs +124 -0
  208. package/dist/services/token.mjs.map +1 -0
  209. package/dist/{src/types.d.ts → types.d.ts} +3 -0
  210. package/dist/types.d.ts.map +1 -0
  211. package/dist/utils/analytics.d.ts.map +1 -0
  212. package/dist/utils/analytics.js +12 -0
  213. package/dist/utils/analytics.js.map +1 -0
  214. package/dist/utils/analytics.mjs +10 -0
  215. package/dist/utils/analytics.mjs.map +1 -0
  216. package/dist/utils/compress-files.d.ts.map +1 -0
  217. package/dist/utils/compress-files.js +102 -0
  218. package/dist/utils/compress-files.js.map +1 -0
  219. package/dist/utils/compress-files.mjs +78 -0
  220. package/dist/utils/compress-files.mjs.map +1 -0
  221. package/dist/utils/get-local-config.d.ts +6 -0
  222. package/dist/utils/get-local-config.d.ts.map +1 -0
  223. package/dist/utils/get-local-config.js +37 -0
  224. package/dist/utils/get-local-config.js.map +1 -0
  225. package/dist/utils/get-local-config.mjs +34 -0
  226. package/dist/utils/get-local-config.mjs.map +1 -0
  227. package/dist/utils/helpers.d.ts.map +1 -0
  228. package/dist/utils/helpers.js +33 -0
  229. package/dist/utils/helpers.js.map +1 -0
  230. package/dist/utils/helpers.mjs +31 -0
  231. package/dist/utils/helpers.mjs.map +1 -0
  232. package/dist/utils/pkg.d.ts.map +1 -0
  233. package/dist/utils/pkg.js +65 -0
  234. package/dist/utils/pkg.js.map +1 -0
  235. package/dist/utils/pkg.mjs +43 -0
  236. package/dist/utils/pkg.mjs.map +1 -0
  237. package/dist/utils/tests/compress-files.test.d.ts.map +1 -0
  238. package/package.json +12 -11
  239. package/dist/src/bin.d.ts.map +0 -1
  240. package/dist/src/cloud/command.d.ts +0 -3
  241. package/dist/src/cloud/command.d.ts.map +0 -1
  242. package/dist/src/config/api.d.ts.map +0 -1
  243. package/dist/src/config/local.d.ts.map +0 -1
  244. package/dist/src/create-project/action.d.ts.map +0 -1
  245. package/dist/src/create-project/command.d.ts.map +0 -1
  246. package/dist/src/create-project/index.d.ts.map +0 -1
  247. package/dist/src/create-project/utils/get-project-name-from-pkg.d.ts.map +0 -1
  248. package/dist/src/create-project/utils/project-questions.utils.d.ts.map +0 -1
  249. package/dist/src/deploy-project/action.d.ts.map +0 -1
  250. package/dist/src/deploy-project/command.d.ts.map +0 -1
  251. package/dist/src/deploy-project/index.d.ts.map +0 -1
  252. package/dist/src/environment/command.d.ts +0 -3
  253. package/dist/src/environment/command.d.ts.map +0 -1
  254. package/dist/src/environment/list/action.d.ts.map +0 -1
  255. package/dist/src/environment/list/command.d.ts.map +0 -1
  256. package/dist/src/environment/list/index.d.ts.map +0 -1
  257. package/dist/src/index.d.ts.map +0 -1
  258. package/dist/src/link/action.d.ts.map +0 -1
  259. package/dist/src/link/command.d.ts.map +0 -1
  260. package/dist/src/link/index.d.ts.map +0 -1
  261. package/dist/src/list-projects/action.d.ts.map +0 -1
  262. package/dist/src/list-projects/command.d.ts.map +0 -1
  263. package/dist/src/list-projects/index.d.ts.map +0 -1
  264. package/dist/src/login/action.d.ts.map +0 -1
  265. package/dist/src/login/command.d.ts.map +0 -1
  266. package/dist/src/login/index.d.ts.map +0 -1
  267. package/dist/src/logout/action.d.ts +0 -4
  268. package/dist/src/logout/action.d.ts.map +0 -1
  269. package/dist/src/logout/command.d.ts.map +0 -1
  270. package/dist/src/logout/index.d.ts.map +0 -1
  271. package/dist/src/services/build-logs.d.ts.map +0 -1
  272. package/dist/src/services/cli-api.d.ts.map +0 -1
  273. package/dist/src/services/index.d.ts.map +0 -1
  274. package/dist/src/services/logger.d.ts.map +0 -1
  275. package/dist/src/services/notification.d.ts.map +0 -1
  276. package/dist/src/services/strapi-info-save.d.ts +0 -12
  277. package/dist/src/services/strapi-info-save.d.ts.map +0 -1
  278. package/dist/src/services/token.d.ts.map +0 -1
  279. package/dist/src/types.d.ts.map +0 -1
  280. package/dist/src/utils/analytics.d.ts.map +0 -1
  281. package/dist/src/utils/compress-files.d.ts.map +0 -1
  282. package/dist/src/utils/helpers.d.ts.map +0 -1
  283. package/dist/src/utils/pkg.d.ts.map +0 -1
  284. package/dist/src/utils/tests/compress-files.test.d.ts.map +0 -1
  285. /package/dist/{src/bin.d.ts → bin.d.ts} +0 -0
  286. /package/dist/{src/config → config}/api.d.ts +0 -0
  287. /package/dist/{src/config → config}/local.d.ts +0 -0
  288. /package/dist/{src/create-project → create-project}/action.d.ts +0 -0
  289. /package/dist/{src/create-project → create-project}/command.d.ts +0 -0
  290. /package/dist/{src/create-project → create-project}/index.d.ts +0 -0
  291. /package/dist/{src/create-project → create-project}/utils/get-project-name-from-pkg.d.ts +0 -0
  292. /package/dist/{src/create-project → create-project}/utils/project-questions.utils.d.ts +0 -0
  293. /package/dist/{src/deploy-project → deploy-project}/command.d.ts +0 -0
  294. /package/dist/{src/deploy-project → deploy-project}/index.d.ts +0 -0
  295. /package/dist/{src/environment/list → environment/link}/action.d.ts +0 -0
  296. /package/dist/{src/environment/list → environment/link}/command.d.ts +0 -0
  297. /package/dist/{src/environment/list → environment/link}/index.d.ts +0 -0
  298. /package/dist/{src/deploy-project → link}/action.d.ts +0 -0
  299. /package/dist/{src/link → link}/command.d.ts +0 -0
  300. /package/dist/{src/link → link}/index.d.ts +0 -0
  301. /package/dist/{src/link → list-projects}/action.d.ts +0 -0
  302. /package/dist/{src/list-projects → list-projects}/command.d.ts +0 -0
  303. /package/dist/{src/list-projects → list-projects}/index.d.ts +0 -0
  304. /package/dist/{src/login → login}/action.d.ts +0 -0
  305. /package/dist/{src/login → login}/command.d.ts +0 -0
  306. /package/dist/{src/login → login}/index.d.ts +0 -0
  307. /package/dist/{src/list-projects → logout}/action.d.ts +0 -0
  308. /package/dist/{src/logout → logout}/command.d.ts +0 -0
  309. /package/dist/{src/logout → logout}/index.d.ts +0 -0
  310. /package/dist/{src/services → services}/build-logs.d.ts +0 -0
  311. /package/dist/{src/services → services}/index.d.ts +0 -0
  312. /package/dist/{src/services → services}/logger.d.ts +0 -0
  313. /package/dist/{src/services → services}/notification.d.ts +0 -0
  314. /package/dist/{src/services → services}/token.d.ts +0 -0
  315. /package/dist/{src/utils → utils}/analytics.d.ts +0 -0
  316. /package/dist/{src/utils → utils}/compress-files.d.ts +0 -0
  317. /package/dist/{src/utils → utils}/helpers.d.ts +0 -0
  318. /package/dist/{src/utils → utils}/pkg.d.ts +0 -0
  319. /package/dist/{src/utils → utils}/tests/compress-files.test.d.ts +0 -0
@@ -0,0 +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 spinner = logger.spinner('Connecting to server to get build logs');\n spinner.start();\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 (spinner.isSpinning) {\n spinner.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 (spinner.isSpinning) {\n spinner.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 spinner.fail('We were unable to connect to the server to get build logs at this time.');\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","spinner","start","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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"}
@@ -0,0 +1,65 @@
1
+ import EventSource from 'eventsource';
2
+
3
+ const buildLogsServiceFactory = ({ logger })=>{
4
+ return async (url, token, cliConfig)=>{
5
+ const CONN_TIMEOUT = Number(cliConfig.buildLogsConnectionTimeout);
6
+ const MAX_RETRIES = Number(cliConfig.buildLogsMaxRetries);
7
+ return new Promise((resolve, reject)=>{
8
+ let timeoutId = null;
9
+ let retries = 0;
10
+ const connect = (url)=>{
11
+ const spinner = logger.spinner('Connecting to server to get build logs');
12
+ spinner.start();
13
+ const es = new EventSource(`${url}`, {
14
+ headers: {
15
+ Authorization: `Bearer ${token}`
16
+ }
17
+ });
18
+ const clearExistingTimeout = ()=>{
19
+ if (timeoutId) {
20
+ clearTimeout(timeoutId);
21
+ }
22
+ };
23
+ const resetTimeout = ()=>{
24
+ clearExistingTimeout();
25
+ timeoutId = setTimeout(()=>{
26
+ if (spinner.isSpinning) {
27
+ spinner.fail('We were unable to connect to the server to get build logs at this time. This could be due to a temporary issue.');
28
+ }
29
+ es.close();
30
+ reject(new Error('Connection timed out'));
31
+ }, CONN_TIMEOUT);
32
+ };
33
+ es.onopen = resetTimeout;
34
+ es.addEventListener('finished', (event)=>{
35
+ const data = JSON.parse(event.data);
36
+ logger.log(data.msg);
37
+ es.close();
38
+ clearExistingTimeout();
39
+ resolve(null);
40
+ });
41
+ es.addEventListener('log', (event)=>{
42
+ if (spinner.isSpinning) {
43
+ spinner.succeed();
44
+ }
45
+ resetTimeout();
46
+ const data = JSON.parse(event.data);
47
+ logger.log(data.msg);
48
+ });
49
+ es.onerror = async ()=>{
50
+ retries += 1;
51
+ if (retries > MAX_RETRIES) {
52
+ spinner.fail('We were unable to connect to the server to get build logs at this time.');
53
+ es.close();
54
+ clearExistingTimeout(); // Important to clear the event loop from remaining timeout - avoid to wait for nothing while the timeout is running
55
+ reject(new Error('Max retries reached'));
56
+ }
57
+ };
58
+ };
59
+ connect(url);
60
+ });
61
+ };
62
+ };
63
+
64
+ export { buildLogsServiceFactory };
65
+ //# sourceMappingURL=build-logs.mjs.map
@@ -0,0 +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 spinner = logger.spinner('Connecting to server to get build logs');\n spinner.start();\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 (spinner.isSpinning) {\n spinner.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 (spinner.isSpinning) {\n spinner.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 spinner.fail('We were unable to connect to the server to get build logs at this time.');\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","spinner","start","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,9 +1,10 @@
1
1
  import { type AxiosResponse } from 'axios';
2
2
  import type { CLIContext, CloudCliConfig, TrackPayload } from '../types';
3
3
  export declare const VERSION = "v1";
4
- export type ProjectInfos = {
4
+ export type ProjectInfo = {
5
5
  id: string;
6
6
  name: string;
7
+ targetEnvironment?: string;
7
8
  displayName?: string;
8
9
  nodeVersion?: string;
9
10
  region?: string;
@@ -11,7 +12,12 @@ export type ProjectInfos = {
11
12
  url?: string;
12
13
  };
13
14
  export type EnvironmentInfo = Record<string, unknown>;
14
- export type ProjectInput = Omit<ProjectInfos, 'id'>;
15
+ export type EnvironmentDetails = {
16
+ name: string;
17
+ hasLiveDeployment: boolean;
18
+ hasPendingDeployment: boolean;
19
+ };
20
+ export type ProjectInput = Omit<ProjectInfo, 'id'>;
15
21
  export type DeployResponse = {
16
22
  build_id: string;
17
23
  image: string;
@@ -28,14 +34,22 @@ export type ListEnvironmentsResponse = {
28
34
  };
29
35
  export type ListLinkProjectsResponse = {
30
36
  data: {
31
- data: ProjectInfos[] | Record<string, never>;
37
+ data: ProjectInfo[] | Record<string, never>;
38
+ };
39
+ };
40
+ export type ListLinkEnvironmentsResponse = {
41
+ data: {
42
+ data: EnvironmentDetails[] | Record<string, never>;
32
43
  };
33
44
  };
34
45
  export type GetProjectResponse = {
35
46
  data: {
47
+ displayName: string;
36
48
  updatedAt: string;
37
49
  suspendedAt?: string;
38
50
  isTrial: boolean;
51
+ environments: string[];
52
+ environmentsDetails: EnvironmentDetails[];
39
53
  };
40
54
  metadata: {
41
55
  dashboardUrls: {
@@ -49,6 +63,7 @@ export interface CloudApiService {
49
63
  filePath: string;
50
64
  project: {
51
65
  name: string;
66
+ targetEnvironment?: string;
52
67
  };
53
68
  }, { onUploadProgress, }: {
54
69
  onUploadProgress: (progressEvent: {
@@ -67,6 +82,9 @@ export interface CloudApiService {
67
82
  listEnvironments(project: {
68
83
  name: string;
69
84
  }): Promise<AxiosResponse<ListEnvironmentsResponse>>;
85
+ listLinkEnvironments(project: {
86
+ name: string;
87
+ }): Promise<AxiosResponse<ListLinkEnvironmentsResponse>>;
70
88
  getProject(project: {
71
89
  name: string;
72
90
  }): Promise<AxiosResponse<GetProjectResponse>>;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-api.d.ts","sourceRoot":"","sources":["../../src/services/cli-api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,146 @@
1
+ 'use strict';
2
+
3
+ var axios = require('axios');
4
+ var fse = require('fs-extra');
5
+ var os = require('os');
6
+ var api = require('../config/api.js');
7
+ var local = require('../config/local.js');
8
+ var _package = require('../package.json.js');
9
+
10
+ const VERSION = 'v1';
11
+ async function cloudApiFactory({ logger }, token) {
12
+ const localConfig = await local.getLocalConfig();
13
+ const customHeaders = {
14
+ 'x-device-id': localConfig.deviceId,
15
+ 'x-app-version': _package.default.version,
16
+ 'x-os-name': os.type(),
17
+ 'x-os-version': os.version(),
18
+ 'x-language': Intl.DateTimeFormat().resolvedOptions().locale,
19
+ 'x-node-version': process.versions.node
20
+ };
21
+ const axiosCloudAPI = axios.create({
22
+ baseURL: `${api.apiConfig.apiBaseUrl}/${VERSION}`,
23
+ headers: {
24
+ 'Content-Type': 'application/json',
25
+ ...customHeaders
26
+ }
27
+ });
28
+ if (token) {
29
+ axiosCloudAPI.defaults.headers.Authorization = `Bearer ${token}`;
30
+ }
31
+ return {
32
+ deploy ({ filePath, project }, { onUploadProgress }) {
33
+ return axiosCloudAPI.post(`/deploy/${project.name}`, {
34
+ file: fse.createReadStream(filePath),
35
+ targetEnvironment: project.targetEnvironment
36
+ }, {
37
+ headers: {
38
+ 'Content-Type': 'multipart/form-data'
39
+ },
40
+ onUploadProgress
41
+ });
42
+ },
43
+ async createProject ({ name, nodeVersion, region, plan }) {
44
+ const response = await axiosCloudAPI.post('/project', {
45
+ projectName: name,
46
+ region,
47
+ nodeVersion,
48
+ plan
49
+ });
50
+ return {
51
+ data: {
52
+ id: response.data.id,
53
+ name: response.data.name,
54
+ nodeVersion: response.data.nodeVersion,
55
+ region: response.data.region
56
+ },
57
+ status: response.status
58
+ };
59
+ },
60
+ getUserInfo () {
61
+ return axiosCloudAPI.get('/user');
62
+ },
63
+ async config () {
64
+ try {
65
+ const response = await axiosCloudAPI.get('/config');
66
+ if (response.status !== 200) {
67
+ throw new Error('Error fetching cloud CLI config from the server.');
68
+ }
69
+ return response;
70
+ } catch (error) {
71
+ logger.debug("🥲 Oops! Couldn't retrieve the cloud CLI config from the server. Please try again.");
72
+ throw error;
73
+ }
74
+ },
75
+ async listProjects () {
76
+ try {
77
+ const response = await axiosCloudAPI.get('/projects');
78
+ if (response.status !== 200) {
79
+ throw new Error('Error fetching cloud projects from the server.');
80
+ }
81
+ return response;
82
+ } catch (error) {
83
+ logger.debug("🥲 Oops! Couldn't retrieve your project's list from the server. Please try again.");
84
+ throw error;
85
+ }
86
+ },
87
+ async listLinkProjects () {
88
+ try {
89
+ const response = await axiosCloudAPI.get('/projects-linkable');
90
+ if (response.status !== 200) {
91
+ throw new Error('Error fetching cloud projects from the server.');
92
+ }
93
+ return response;
94
+ } catch (error) {
95
+ logger.debug("🥲 Oops! Couldn't retrieve your project's list from the server. Please try again.");
96
+ throw error;
97
+ }
98
+ },
99
+ async listEnvironments ({ name }) {
100
+ try {
101
+ const response = await axiosCloudAPI.get(`/projects/${name}/environments`);
102
+ if (response.status !== 200) {
103
+ throw new Error('Error fetching cloud environments from the server.');
104
+ }
105
+ return response;
106
+ } catch (error) {
107
+ logger.debug("🥲 Oops! Couldn't retrieve your project's environments from the server. Please try again.");
108
+ throw error;
109
+ }
110
+ },
111
+ async listLinkEnvironments ({ name }) {
112
+ try {
113
+ const response = await axiosCloudAPI.get(`/projects/${name}/environments-linkable`);
114
+ if (response.status !== 200) {
115
+ throw new Error('Error fetching cloud environments from the server.');
116
+ }
117
+ return response;
118
+ } catch (error) {
119
+ logger.debug("🥲 Oops! Couldn't retrieve your project's environments from the server. Please try again.");
120
+ throw error;
121
+ }
122
+ },
123
+ async getProject ({ name }) {
124
+ try {
125
+ const response = await axiosCloudAPI.get(`/projects/${name}`);
126
+ if (response.status !== 200) {
127
+ throw new Error("Error fetching project's details.");
128
+ }
129
+ return response;
130
+ } catch (error) {
131
+ logger.debug("🥲 Oops! There was a problem retrieving your project's details. Please try again.");
132
+ throw error;
133
+ }
134
+ },
135
+ track (event, payload = {}) {
136
+ return axiosCloudAPI.post('/track', {
137
+ event,
138
+ payload
139
+ });
140
+ }
141
+ };
142
+ }
143
+
144
+ exports.VERSION = VERSION;
145
+ exports.cloudApiFactory = cloudApiFactory;
146
+ //# sourceMappingURL=cli-api.js.map
@@ -0,0 +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';\n\nexport const VERSION = 'v1';\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 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: ProjectInput;\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 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.deviceId,\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 nodeVersion: response.data.nodeVersion,\n region: response.data.region,\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 track(event, payload = {}) {\n return axiosCloudAPI.post<void>('/track', {\n event,\n payload,\n });\n },\n };\n}\n"],"names":["VERSION","cloudApiFactory","logger","token","localConfig","getLocalConfig","customHeaders","deviceId","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","status","getUserInfo","get","config","Error","error","debug","listProjects","listLinkProjects","listEnvironments","listLinkEnvironments","getProject","track","event","payload"],"mappings":"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"}
@@ -0,0 +1,143 @@
1
+ import axios from 'axios';
2
+ import fse__default from 'fs-extra';
3
+ import os from 'os';
4
+ import { apiConfig } from '../config/api.mjs';
5
+ import { getLocalConfig } from '../config/local.mjs';
6
+ import packageJson from '../package.json.mjs';
7
+
8
+ const VERSION = 'v1';
9
+ async function cloudApiFactory({ logger }, token) {
10
+ const localConfig = await getLocalConfig();
11
+ const customHeaders = {
12
+ 'x-device-id': localConfig.deviceId,
13
+ 'x-app-version': packageJson.version,
14
+ 'x-os-name': os.type(),
15
+ 'x-os-version': os.version(),
16
+ 'x-language': Intl.DateTimeFormat().resolvedOptions().locale,
17
+ 'x-node-version': process.versions.node
18
+ };
19
+ const axiosCloudAPI = axios.create({
20
+ baseURL: `${apiConfig.apiBaseUrl}/${VERSION}`,
21
+ headers: {
22
+ 'Content-Type': 'application/json',
23
+ ...customHeaders
24
+ }
25
+ });
26
+ if (token) {
27
+ axiosCloudAPI.defaults.headers.Authorization = `Bearer ${token}`;
28
+ }
29
+ return {
30
+ deploy ({ filePath, project }, { onUploadProgress }) {
31
+ return axiosCloudAPI.post(`/deploy/${project.name}`, {
32
+ file: fse__default.createReadStream(filePath),
33
+ targetEnvironment: project.targetEnvironment
34
+ }, {
35
+ headers: {
36
+ 'Content-Type': 'multipart/form-data'
37
+ },
38
+ onUploadProgress
39
+ });
40
+ },
41
+ async createProject ({ name, nodeVersion, region, plan }) {
42
+ const response = await axiosCloudAPI.post('/project', {
43
+ projectName: name,
44
+ region,
45
+ nodeVersion,
46
+ plan
47
+ });
48
+ return {
49
+ data: {
50
+ id: response.data.id,
51
+ name: response.data.name,
52
+ nodeVersion: response.data.nodeVersion,
53
+ region: response.data.region
54
+ },
55
+ status: response.status
56
+ };
57
+ },
58
+ getUserInfo () {
59
+ return axiosCloudAPI.get('/user');
60
+ },
61
+ async config () {
62
+ try {
63
+ const response = await axiosCloudAPI.get('/config');
64
+ if (response.status !== 200) {
65
+ throw new Error('Error fetching cloud CLI config from the server.');
66
+ }
67
+ return response;
68
+ } catch (error) {
69
+ logger.debug("🥲 Oops! Couldn't retrieve the cloud CLI config from the server. Please try again.");
70
+ throw error;
71
+ }
72
+ },
73
+ async listProjects () {
74
+ try {
75
+ const response = await axiosCloudAPI.get('/projects');
76
+ if (response.status !== 200) {
77
+ throw new Error('Error fetching cloud projects from the server.');
78
+ }
79
+ return response;
80
+ } catch (error) {
81
+ logger.debug("🥲 Oops! Couldn't retrieve your project's list from the server. Please try again.");
82
+ throw error;
83
+ }
84
+ },
85
+ async listLinkProjects () {
86
+ try {
87
+ const response = await axiosCloudAPI.get('/projects-linkable');
88
+ if (response.status !== 200) {
89
+ throw new Error('Error fetching cloud projects from the server.');
90
+ }
91
+ return response;
92
+ } catch (error) {
93
+ logger.debug("🥲 Oops! Couldn't retrieve your project's list from the server. Please try again.");
94
+ throw error;
95
+ }
96
+ },
97
+ async listEnvironments ({ name }) {
98
+ try {
99
+ const response = await axiosCloudAPI.get(`/projects/${name}/environments`);
100
+ if (response.status !== 200) {
101
+ throw new Error('Error fetching cloud environments from the server.');
102
+ }
103
+ return response;
104
+ } catch (error) {
105
+ logger.debug("🥲 Oops! Couldn't retrieve your project's environments from the server. Please try again.");
106
+ throw error;
107
+ }
108
+ },
109
+ async listLinkEnvironments ({ name }) {
110
+ try {
111
+ const response = await axiosCloudAPI.get(`/projects/${name}/environments-linkable`);
112
+ if (response.status !== 200) {
113
+ throw new Error('Error fetching cloud environments from the server.');
114
+ }
115
+ return response;
116
+ } catch (error) {
117
+ logger.debug("🥲 Oops! Couldn't retrieve your project's environments from the server. Please try again.");
118
+ throw error;
119
+ }
120
+ },
121
+ async getProject ({ name }) {
122
+ try {
123
+ const response = await axiosCloudAPI.get(`/projects/${name}`);
124
+ if (response.status !== 200) {
125
+ throw new Error("Error fetching project's details.");
126
+ }
127
+ return response;
128
+ } catch (error) {
129
+ logger.debug("🥲 Oops! There was a problem retrieving your project's details. Please try again.");
130
+ throw error;
131
+ }
132
+ },
133
+ track (event, payload = {}) {
134
+ return axiosCloudAPI.post('/track', {
135
+ event,
136
+ payload
137
+ });
138
+ }
139
+ };
140
+ }
141
+
142
+ export { VERSION, cloudApiFactory };
143
+ //# sourceMappingURL=cli-api.mjs.map
@@ -0,0 +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';\n\nexport const VERSION = 'v1';\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 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: ProjectInput;\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 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.deviceId,\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 nodeVersion: response.data.nodeVersion,\n region: response.data.region,\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 track(event, payload = {}) {\n return axiosCloudAPI.post<void>('/track', {\n event,\n payload,\n });\n },\n };\n}\n"],"names":["VERSION","cloudApiFactory","logger","token","localConfig","getLocalConfig","customHeaders","deviceId","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","status","getUserInfo","get","config","Error","error","debug","listProjects","listLinkProjects","listEnvironments","listLinkEnvironments","getProject","track","event","payload"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,KAAK,KAAK,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,14 @@
1
+ 'use strict';
2
+
3
+ var cliApi = require('./cli-api.js');
4
+ var strapiInfoSave = require('./strapi-info-save.js');
5
+ var token = require('./token.js');
6
+ var logger = require('./logger.js');
7
+
8
+
9
+
10
+ exports.cloudApiFactory = cliApi.cloudApiFactory;
11
+ exports.local = strapiInfoSave;
12
+ exports.tokenServiceFactory = token.tokenServiceFactory;
13
+ exports.createLogger = logger.createLogger;
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;"}
@@ -0,0 +1,6 @@
1
+ export { cloudApiFactory } from './cli-api.mjs';
2
+ import * as strapiInfoSave from './strapi-info-save.mjs';
3
+ export { strapiInfoSave as local };
4
+ export { tokenServiceFactory } from './token.mjs';
5
+ export { createLogger } from './logger.mjs';
6
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/services/logger.ts"],"names":[],"mappings":"AAGA,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,KAAK,WAAW,MAAM,cAAc,CAAC;AAE5C,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,MAAM;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACpC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACnC,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACtC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACnC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACpC,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IAClC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,YAAY,CAAC,CAAC;IAC/F,WAAW,EAAE,CACX,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,KACT,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC,CAAC;CAC/D;AAMD,QAAA,MAAM,YAAY,aAAa,aAAa,KAAQ,MAqInD,CAAC;AAEF,OAAO,EAAE,YAAY,EAAE,CAAC"}