@strapi/cloud-cli 0.0.0-next.fe88c7878fe2948cfdc68f4867329c1032a618b2 → 0.0.0-next.ffc36acb308febe288f1a31b62cbbb75b286585c

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 (327) 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/{src/config → config}/local.d.ts +1 -1
  18. package/dist/config/local.d.ts.map +1 -0
  19. package/dist/config/local.js +60 -0
  20. package/dist/config/local.js.map +1 -0
  21. package/dist/config/local.mjs +55 -0
  22. package/dist/config/local.mjs.map +1 -0
  23. package/dist/create-growth-sso-trial/action.d.ts +9 -0
  24. package/dist/create-growth-sso-trial/action.d.ts.map +1 -0
  25. package/dist/create-growth-sso-trial/action.js +52 -0
  26. package/dist/create-growth-sso-trial/action.js.map +1 -0
  27. package/dist/create-growth-sso-trial/action.mjs +50 -0
  28. package/dist/create-growth-sso-trial/action.mjs.map +1 -0
  29. package/dist/create-growth-sso-trial/index.d.ts +4 -0
  30. package/dist/create-growth-sso-trial/index.d.ts.map +1 -0
  31. package/dist/create-project/action.d.ts +4 -0
  32. package/dist/create-project/action.d.ts.map +1 -0
  33. package/dist/create-project/action.js +122 -0
  34. package/dist/create-project/action.js.map +1 -0
  35. package/dist/create-project/action.mjs +120 -0
  36. package/dist/create-project/action.mjs.map +1 -0
  37. package/dist/create-project/command.d.ts.map +1 -0
  38. package/dist/create-project/command.js +14 -0
  39. package/dist/create-project/command.js.map +1 -0
  40. package/dist/create-project/command.mjs +12 -0
  41. package/dist/create-project/command.mjs.map +1 -0
  42. package/dist/create-project/index.d.ts.map +1 -0
  43. package/dist/create-project/index.js +18 -0
  44. package/dist/create-project/index.js.map +1 -0
  45. package/dist/create-project/index.mjs +12 -0
  46. package/dist/create-project/index.mjs.map +1 -0
  47. package/dist/create-project/utils/get-project-name-from-pkg.d.ts.map +1 -0
  48. package/dist/create-project/utils/get-project-name-from-pkg.js +15 -0
  49. package/dist/create-project/utils/get-project-name-from-pkg.js.map +1 -0
  50. package/dist/create-project/utils/get-project-name-from-pkg.mjs +13 -0
  51. package/dist/create-project/utils/get-project-name-from-pkg.mjs.map +1 -0
  52. package/dist/create-project/utils/project-questions.utils.d.ts.map +1 -0
  53. package/dist/create-project/utils/project-questions.utils.js +63 -0
  54. package/dist/create-project/utils/project-questions.utils.js.map +1 -0
  55. package/dist/create-project/utils/project-questions.utils.mjs +59 -0
  56. package/dist/create-project/utils/project-questions.utils.mjs.map +1 -0
  57. package/dist/deploy-project/action.d.ts +8 -0
  58. package/dist/deploy-project/action.d.ts.map +1 -0
  59. package/dist/deploy-project/action.js +324 -0
  60. package/dist/deploy-project/action.js.map +1 -0
  61. package/dist/deploy-project/action.mjs +303 -0
  62. package/dist/deploy-project/action.mjs.map +1 -0
  63. package/dist/deploy-project/command.d.ts.map +1 -0
  64. package/dist/deploy-project/command.js +14 -0
  65. package/dist/deploy-project/command.js.map +1 -0
  66. package/dist/deploy-project/command.mjs +12 -0
  67. package/dist/deploy-project/command.mjs.map +1 -0
  68. package/dist/deploy-project/index.d.ts.map +1 -0
  69. package/dist/deploy-project/index.js +18 -0
  70. package/dist/deploy-project/index.js.map +1 -0
  71. package/dist/deploy-project/index.mjs +12 -0
  72. package/dist/deploy-project/index.mjs.map +1 -0
  73. package/dist/environment/command.d.ts +3 -0
  74. package/dist/environment/command.d.ts.map +1 -0
  75. package/dist/environment/command.js +15 -0
  76. package/dist/environment/command.js.map +1 -0
  77. package/dist/environment/command.mjs +13 -0
  78. package/dist/environment/command.mjs.map +1 -0
  79. package/dist/{src/logout → environment/link}/action.d.ts +1 -1
  80. package/dist/environment/link/action.d.ts.map +1 -0
  81. package/dist/environment/link/action.js +117 -0
  82. package/dist/environment/link/action.js.map +1 -0
  83. package/dist/environment/link/action.mjs +115 -0
  84. package/dist/environment/link/action.mjs.map +1 -0
  85. package/dist/environment/link/command.d.ts +4 -0
  86. package/dist/environment/link/command.d.ts.map +1 -0
  87. package/dist/environment/link/command.js +13 -0
  88. package/dist/environment/link/command.js.map +1 -0
  89. package/dist/environment/link/command.mjs +11 -0
  90. package/dist/environment/link/command.mjs.map +1 -0
  91. package/dist/environment/link/index.d.ts +7 -0
  92. package/dist/environment/link/index.d.ts.map +1 -0
  93. package/dist/environment/link/index.js +18 -0
  94. package/dist/environment/link/index.js.map +1 -0
  95. package/dist/environment/link/index.mjs +12 -0
  96. package/dist/environment/link/index.mjs.map +1 -0
  97. package/dist/environment/list/action.d.ts +4 -0
  98. package/dist/environment/list/action.d.ts.map +1 -0
  99. package/dist/environment/list/action.js +57 -0
  100. package/dist/environment/list/action.js.map +1 -0
  101. package/dist/environment/list/action.mjs +55 -0
  102. package/dist/environment/list/action.mjs.map +1 -0
  103. package/dist/environment/list/command.d.ts +4 -0
  104. package/dist/environment/list/command.d.ts.map +1 -0
  105. package/dist/environment/list/command.js +13 -0
  106. package/dist/environment/list/command.js.map +1 -0
  107. package/dist/environment/list/command.mjs +11 -0
  108. package/dist/environment/list/command.mjs.map +1 -0
  109. package/dist/environment/list/index.d.ts +7 -0
  110. package/dist/environment/list/index.d.ts.map +1 -0
  111. package/dist/environment/list/index.js +18 -0
  112. package/dist/environment/list/index.js.map +1 -0
  113. package/dist/environment/list/index.mjs +12 -0
  114. package/dist/environment/list/index.mjs.map +1 -0
  115. package/dist/{src/index.d.ts → index.d.ts} +4 -0
  116. package/dist/index.d.ts.map +1 -0
  117. package/dist/index.js +58 -1538
  118. package/dist/index.js.map +1 -1
  119. package/dist/index.mjs +56 -1483
  120. package/dist/index.mjs.map +1 -1
  121. package/dist/link/action.d.ts.map +1 -0
  122. package/dist/link/action.js +146 -0
  123. package/dist/link/action.js.map +1 -0
  124. package/dist/link/action.mjs +144 -0
  125. package/dist/link/action.mjs.map +1 -0
  126. package/dist/link/command.d.ts.map +1 -0
  127. package/dist/link/command.js +13 -0
  128. package/dist/link/command.js.map +1 -0
  129. package/dist/link/command.mjs +11 -0
  130. package/dist/link/command.mjs.map +1 -0
  131. package/dist/link/index.d.ts.map +1 -0
  132. package/dist/link/index.js +18 -0
  133. package/dist/link/index.js.map +1 -0
  134. package/dist/link/index.mjs +12 -0
  135. package/dist/link/index.mjs.map +1 -0
  136. package/dist/list-projects/action.d.ts.map +1 -0
  137. package/dist/list-projects/action.js +34 -0
  138. package/dist/list-projects/action.js.map +1 -0
  139. package/dist/list-projects/action.mjs +32 -0
  140. package/dist/list-projects/action.mjs.map +1 -0
  141. package/dist/list-projects/command.d.ts.map +1 -0
  142. package/dist/list-projects/command.js +13 -0
  143. package/dist/list-projects/command.js.map +1 -0
  144. package/dist/list-projects/command.mjs +11 -0
  145. package/dist/list-projects/command.mjs.map +1 -0
  146. package/dist/list-projects/index.d.ts.map +1 -0
  147. package/dist/list-projects/index.js +18 -0
  148. package/dist/list-projects/index.js.map +1 -0
  149. package/dist/list-projects/index.mjs +12 -0
  150. package/dist/list-projects/index.mjs.map +1 -0
  151. package/dist/login/action.d.ts +6 -0
  152. package/dist/login/action.d.ts.map +1 -0
  153. package/dist/login/action.js +194 -0
  154. package/dist/login/action.js.map +1 -0
  155. package/dist/login/action.mjs +189 -0
  156. package/dist/login/action.mjs.map +1 -0
  157. package/dist/login/command.d.ts.map +1 -0
  158. package/dist/login/command.js +14 -0
  159. package/dist/login/command.js.map +1 -0
  160. package/dist/login/command.mjs +12 -0
  161. package/dist/login/command.mjs.map +1 -0
  162. package/dist/login/index.d.ts.map +1 -0
  163. package/dist/login/index.js +18 -0
  164. package/dist/login/index.js.map +1 -0
  165. package/dist/login/index.mjs +12 -0
  166. package/dist/login/index.mjs.map +1 -0
  167. package/dist/logout/action.d.ts.map +1 -0
  168. package/dist/logout/action.js +46 -0
  169. package/dist/logout/action.js.map +1 -0
  170. package/dist/logout/action.mjs +44 -0
  171. package/dist/logout/action.mjs.map +1 -0
  172. package/dist/logout/command.d.ts.map +1 -0
  173. package/dist/logout/command.js +14 -0
  174. package/dist/logout/command.js.map +1 -0
  175. package/dist/logout/command.mjs +12 -0
  176. package/dist/logout/command.mjs.map +1 -0
  177. package/dist/logout/index.d.ts.map +1 -0
  178. package/dist/logout/index.js +18 -0
  179. package/dist/logout/index.js.map +1 -0
  180. package/dist/logout/index.mjs +12 -0
  181. package/dist/logout/index.mjs.map +1 -0
  182. package/dist/package.json.js +129 -0
  183. package/dist/package.json.js.map +1 -0
  184. package/dist/package.json.mjs +105 -0
  185. package/dist/package.json.mjs.map +1 -0
  186. package/dist/services/build-logs.d.ts.map +1 -0
  187. package/dist/services/build-logs.js +67 -0
  188. package/dist/services/build-logs.js.map +1 -0
  189. package/dist/services/build-logs.mjs +65 -0
  190. package/dist/services/build-logs.mjs.map +1 -0
  191. package/dist/services/cli-api.d.ts +107 -0
  192. package/dist/services/cli-api.d.ts.map +1 -0
  193. package/dist/services/cli-api.js +159 -0
  194. package/dist/services/cli-api.js.map +1 -0
  195. package/dist/services/cli-api.mjs +156 -0
  196. package/dist/services/cli-api.mjs.map +1 -0
  197. package/dist/services/index.d.ts.map +1 -0
  198. package/dist/services/index.js +14 -0
  199. package/dist/services/index.js.map +1 -0
  200. package/dist/services/index.mjs +6 -0
  201. package/dist/services/index.mjs.map +1 -0
  202. package/dist/services/logger.d.ts.map +1 -0
  203. package/dist/services/logger.js +128 -0
  204. package/dist/services/logger.js.map +1 -0
  205. package/dist/services/logger.mjs +107 -0
  206. package/dist/services/logger.mjs.map +1 -0
  207. package/dist/{src/services → services}/notification.d.ts +4 -1
  208. package/dist/services/notification.d.ts.map +1 -0
  209. package/dist/services/notification.js +79 -0
  210. package/dist/services/notification.js.map +1 -0
  211. package/dist/services/notification.mjs +77 -0
  212. package/dist/services/notification.mjs.map +1 -0
  213. package/dist/services/strapi-info-save.d.ts +25 -0
  214. package/dist/services/strapi-info-save.d.ts.map +1 -0
  215. package/dist/services/strapi-info-save.js +53 -0
  216. package/dist/services/strapi-info-save.js.map +1 -0
  217. package/dist/services/strapi-info-save.mjs +47 -0
  218. package/dist/services/strapi-info-save.mjs.map +1 -0
  219. package/dist/services/token.d.ts.map +1 -0
  220. package/dist/services/token.js +126 -0
  221. package/dist/services/token.js.map +1 -0
  222. package/dist/services/token.mjs +124 -0
  223. package/dist/services/token.mjs.map +1 -0
  224. package/dist/{src/types.d.ts → types.d.ts} +26 -2
  225. package/dist/types.d.ts.map +1 -0
  226. package/dist/utils/analytics.d.ts.map +1 -0
  227. package/dist/utils/analytics.js +12 -0
  228. package/dist/utils/analytics.js.map +1 -0
  229. package/dist/utils/analytics.mjs +10 -0
  230. package/dist/utils/analytics.mjs.map +1 -0
  231. package/dist/utils/compress-files.d.ts.map +1 -0
  232. package/dist/utils/compress-files.js +104 -0
  233. package/dist/utils/compress-files.js.map +1 -0
  234. package/dist/utils/compress-files.mjs +80 -0
  235. package/dist/utils/compress-files.mjs.map +1 -0
  236. package/dist/utils/error-message-factories.d.ts +9 -0
  237. package/dist/utils/error-message-factories.d.ts.map +1 -0
  238. package/dist/utils/error-message-factories.js +25 -0
  239. package/dist/utils/error-message-factories.js.map +1 -0
  240. package/dist/utils/error-message-factories.mjs +22 -0
  241. package/dist/utils/error-message-factories.mjs.map +1 -0
  242. package/dist/utils/get-local-config.d.ts +6 -0
  243. package/dist/utils/get-local-config.d.ts.map +1 -0
  244. package/dist/utils/get-local-config.js +37 -0
  245. package/dist/utils/get-local-config.js.map +1 -0
  246. package/dist/utils/get-local-config.mjs +34 -0
  247. package/dist/utils/get-local-config.mjs.map +1 -0
  248. package/dist/utils/helpers.d.ts.map +1 -0
  249. package/dist/utils/helpers.js +33 -0
  250. package/dist/utils/helpers.js.map +1 -0
  251. package/dist/utils/helpers.mjs +31 -0
  252. package/dist/utils/helpers.mjs.map +1 -0
  253. package/dist/utils/pkg.d.ts.map +1 -0
  254. package/dist/utils/pkg.js +65 -0
  255. package/dist/utils/pkg.js.map +1 -0
  256. package/dist/utils/pkg.mjs +43 -0
  257. package/dist/utils/pkg.mjs.map +1 -0
  258. package/dist/utils/tests/compress-files.test.d.ts +2 -0
  259. package/dist/utils/tests/compress-files.test.d.ts.map +1 -0
  260. package/package.json +15 -14
  261. package/dist/src/bin.d.ts.map +0 -1
  262. package/dist/src/config/api.d.ts.map +0 -1
  263. package/dist/src/config/local.d.ts.map +0 -1
  264. package/dist/src/create-project/action.d.ts +0 -4
  265. package/dist/src/create-project/action.d.ts.map +0 -1
  266. package/dist/src/create-project/command.d.ts.map +0 -1
  267. package/dist/src/create-project/index.d.ts.map +0 -1
  268. package/dist/src/create-project/utils/get-project-name-from-pkg.d.ts.map +0 -1
  269. package/dist/src/create-project/utils/project-questions.utils.d.ts.map +0 -1
  270. package/dist/src/deploy-project/action.d.ts.map +0 -1
  271. package/dist/src/deploy-project/command.d.ts.map +0 -1
  272. package/dist/src/deploy-project/index.d.ts.map +0 -1
  273. package/dist/src/index.d.ts.map +0 -1
  274. package/dist/src/link/action.d.ts.map +0 -1
  275. package/dist/src/link/command.d.ts.map +0 -1
  276. package/dist/src/link/index.d.ts.map +0 -1
  277. package/dist/src/list-projects/action.d.ts.map +0 -1
  278. package/dist/src/list-projects/command.d.ts.map +0 -1
  279. package/dist/src/list-projects/index.d.ts.map +0 -1
  280. package/dist/src/login/action.d.ts +0 -4
  281. package/dist/src/login/action.d.ts.map +0 -1
  282. package/dist/src/login/command.d.ts.map +0 -1
  283. package/dist/src/login/index.d.ts.map +0 -1
  284. package/dist/src/logout/action.d.ts.map +0 -1
  285. package/dist/src/logout/command.d.ts.map +0 -1
  286. package/dist/src/logout/index.d.ts.map +0 -1
  287. package/dist/src/services/build-logs.d.ts.map +0 -1
  288. package/dist/src/services/cli-api.d.ts +0 -53
  289. package/dist/src/services/cli-api.d.ts.map +0 -1
  290. package/dist/src/services/index.d.ts.map +0 -1
  291. package/dist/src/services/logger.d.ts.map +0 -1
  292. package/dist/src/services/notification.d.ts.map +0 -1
  293. package/dist/src/services/strapi-info-save.d.ts +0 -12
  294. package/dist/src/services/strapi-info-save.d.ts.map +0 -1
  295. package/dist/src/services/token.d.ts.map +0 -1
  296. package/dist/src/types.d.ts.map +0 -1
  297. package/dist/src/utils/analytics.d.ts.map +0 -1
  298. package/dist/src/utils/compress-files.d.ts.map +0 -1
  299. package/dist/src/utils/helpers.d.ts.map +0 -1
  300. package/dist/src/utils/pkg.d.ts.map +0 -1
  301. /package/dist/{src/bin.d.ts → bin.d.ts} +0 -0
  302. /package/dist/{src/config → config}/api.d.ts +0 -0
  303. /package/dist/{src/create-project → create-project}/command.d.ts +0 -0
  304. /package/dist/{src/create-project → create-project}/index.d.ts +0 -0
  305. /package/dist/{src/create-project → create-project}/utils/get-project-name-from-pkg.d.ts +0 -0
  306. /package/dist/{src/create-project → create-project}/utils/project-questions.utils.d.ts +0 -0
  307. /package/dist/{src/deploy-project → deploy-project}/command.d.ts +0 -0
  308. /package/dist/{src/deploy-project → deploy-project}/index.d.ts +0 -0
  309. /package/dist/{src/deploy-project → link}/action.d.ts +0 -0
  310. /package/dist/{src/link → link}/command.d.ts +0 -0
  311. /package/dist/{src/link → link}/index.d.ts +0 -0
  312. /package/dist/{src/link → list-projects}/action.d.ts +0 -0
  313. /package/dist/{src/list-projects → list-projects}/command.d.ts +0 -0
  314. /package/dist/{src/list-projects → list-projects}/index.d.ts +0 -0
  315. /package/dist/{src/login → login}/command.d.ts +0 -0
  316. /package/dist/{src/login → login}/index.d.ts +0 -0
  317. /package/dist/{src/list-projects → logout}/action.d.ts +0 -0
  318. /package/dist/{src/logout → logout}/command.d.ts +0 -0
  319. /package/dist/{src/logout → logout}/index.d.ts +0 -0
  320. /package/dist/{src/services → services}/build-logs.d.ts +0 -0
  321. /package/dist/{src/services → services}/index.d.ts +0 -0
  322. /package/dist/{src/services → services}/logger.d.ts +0 -0
  323. /package/dist/{src/services → services}/token.d.ts +0 -0
  324. /package/dist/{src/utils → utils}/analytics.d.ts +0 -0
  325. /package/dist/{src/utils → utils}/compress-files.d.ts +0 -0
  326. /package/dist/{src/utils → utils}/helpers.d.ts +0 -0
  327. /package/dist/{src/utils → utils}/pkg.d.ts +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.mjs","sources":["../../src/link/command.ts"],"sourcesContent":["import { type StrapiCloudCommand } from '../types';\nimport { runAction } from '../utils/helpers';\nimport action from './action';\n\n/**\n * `$ link local directory to project of the cloud`\n */\nconst command: StrapiCloudCommand = ({ command, ctx }) => {\n command\n .command('cloud:link')\n .alias('link')\n .description('Link a local directory to a Strapi Cloud project')\n .option('-d, --debug', 'Enable debugging mode with verbose logs')\n .option('-s, --silent', \"Don't log anything\")\n .action(() => runAction('link', action)(ctx));\n};\n\nexport default command;\n"],"names":["command","ctx","alias","description","option","action","runAction"],"mappings":";;;AAIA;;AAEC,UACKA,OAA8B,GAAA,CAAC,EAAEA,OAAO,EAAEC,GAAG,EAAE,GAAA;IACnDD,OACGA,CAAAA,OAAO,CAAC,YACRE,CAAAA,CAAAA,KAAK,CAAC,MACNC,CAAAA,CAAAA,WAAW,CAAC,kDAAA,CAAA,CACZC,MAAM,CAAC,eAAe,yCACtBA,CAAAA,CAAAA,MAAM,CAAC,cAAgB,EAAA,oBAAA,CAAA,CACvBC,MAAM,CAAC,IAAMC,SAAU,CAAA,MAAA,EAAQD,MAAQJ,CAAAA,CAAAA,GAAAA,CAAAA,CAAAA;AAC5C;;;;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/link/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAEvD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;;AAE3B,wBAK4B"}
@@ -0,0 +1,18 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var action = require('./action.js');
6
+ var command = require('./command.js');
7
+
8
+ var link = {
9
+ name: 'link-project',
10
+ description: 'Link a local directory to a Strapi Cloud project',
11
+ action,
12
+ command
13
+ };
14
+
15
+ exports.action = action;
16
+ exports.command = command;
17
+ exports.default = link;
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../src/link/index.ts"],"sourcesContent":["import action from './action';\nimport command from './command';\nimport type { StrapiCloudCommandInfo } from '../types';\n\nexport { action, command };\n\nexport default {\n name: 'link-project',\n description: 'Link a local directory to a Strapi Cloud project',\n action,\n command,\n} as StrapiCloudCommandInfo;\n"],"names":["name","description","action","command"],"mappings":";;;;;;;AAMA,WAAe;IACbA,IAAM,EAAA,cAAA;IACNC,WAAa,EAAA,kDAAA;AACbC,IAAAA,MAAAA;AACAC,IAAAA;AACF,CAA4B;;;;;;"}
@@ -0,0 +1,12 @@
1
+ import action from './action.mjs';
2
+ import command from './command.mjs';
3
+
4
+ var link = {
5
+ name: 'link-project',
6
+ description: 'Link a local directory to a Strapi Cloud project',
7
+ action,
8
+ command
9
+ };
10
+
11
+ export { action, command, link as default };
12
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":["../../src/link/index.ts"],"sourcesContent":["import action from './action';\nimport command from './command';\nimport type { StrapiCloudCommandInfo } from '../types';\n\nexport { action, command };\n\nexport default {\n name: 'link-project',\n description: 'Link a local directory to a Strapi Cloud project',\n action,\n command,\n} as StrapiCloudCommandInfo;\n"],"names":["name","description","action","command"],"mappings":";;;AAMA,WAAe;IACbA,IAAM,EAAA,cAAA;IACNC,WAAa,EAAA,kDAAA;AACbC,IAAAA,MAAAA;AACAC,IAAAA;AACF,CAA4B;;;;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../src/list-projects/action.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;8BAIhB,UAAU;AAArC,wBAsBE"}
@@ -0,0 +1,34 @@
1
+ 'use strict';
2
+
3
+ var cliApi = require('../services/cli-api.js');
4
+ require('fs-extra');
5
+ require('path');
6
+ require('lodash');
7
+ var token = require('../services/token.js');
8
+ require('chalk');
9
+ require('fast-safe-stringify');
10
+ require('ora');
11
+ require('cli-progress');
12
+ var action$1 = require('../login/action.js');
13
+
14
+ var action = (async (ctx)=>{
15
+ const { getValidToken } = await token.tokenServiceFactory(ctx);
16
+ const token$1 = await getValidToken(ctx, action$1.promptLogin);
17
+ const { logger } = ctx;
18
+ if (!token$1) {
19
+ return;
20
+ }
21
+ const cloudApiService = await cliApi.cloudApiFactory(ctx, token$1);
22
+ const spinner = logger.spinner('Fetching your projects...').start();
23
+ try {
24
+ const { data: { data: projectList } } = await cloudApiService.listProjects();
25
+ spinner.succeed();
26
+ logger.log(projectList);
27
+ } catch (e) {
28
+ ctx.logger.debug('Failed to list projects', e);
29
+ spinner.fail('An error occurred while fetching your projects from Strapi Cloud.');
30
+ }
31
+ });
32
+
33
+ module.exports = action;
34
+ //# sourceMappingURL=action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action.js","sources":["../../src/list-projects/action.ts"],"sourcesContent":["import type { CLIContext } from '../types';\nimport { cloudApiFactory, tokenServiceFactory } from '../services';\nimport { promptLogin } from '../login/action';\n\nexport default async (ctx: CLIContext) => {\n const { getValidToken } = await tokenServiceFactory(ctx);\n const token = await getValidToken(ctx, promptLogin);\n const { logger } = ctx;\n\n if (!token) {\n return;\n }\n\n const cloudApiService = await cloudApiFactory(ctx, token);\n const spinner = logger.spinner('Fetching your projects...').start();\n\n try {\n const {\n data: { data: projectList },\n } = await cloudApiService.listProjects();\n spinner.succeed();\n logger.log(projectList);\n } catch (e) {\n ctx.logger.debug('Failed to list projects', e);\n spinner.fail('An error occurred while fetching your projects from Strapi Cloud.');\n }\n};\n"],"names":["ctx","getValidToken","tokenServiceFactory","token","promptLogin","logger","cloudApiService","cloudApiFactory","spinner","start","data","projectList","listProjects","succeed","log","e","debug","fail"],"mappings":";;;;;;;;;;;;;AAIA,aAAe,CAAA,OAAOA,GAAAA,GAAAA;AACpB,IAAA,MAAM,EAAEC,aAAa,EAAE,GAAG,MAAMC,yBAAoBF,CAAAA,GAAAA,CAAAA;IACpD,MAAMG,OAAAA,GAAQ,MAAMF,aAAAA,CAAcD,GAAKI,EAAAA,oBAAAA,CAAAA;IACvC,MAAM,EAAEC,MAAM,EAAE,GAAGL,GAAAA;AAEnB,IAAA,IAAI,CAACG,OAAO,EAAA;AACV,QAAA;AACF;IAEA,MAAMG,eAAAA,GAAkB,MAAMC,sBAAAA,CAAgBP,GAAKG,EAAAA,OAAAA,CAAAA;AACnD,IAAA,MAAMK,OAAUH,GAAAA,MAAAA,CAAOG,OAAO,CAAC,6BAA6BC,KAAK,EAAA;IAEjE,IAAI;QACF,MAAM,EACJC,IAAM,EAAA,EAAEA,IAAMC,EAAAA,WAAW,EAAE,EAC5B,GAAG,MAAML,eAAAA,CAAgBM,YAAY,EAAA;AACtCJ,QAAAA,OAAAA,CAAQK,OAAO,EAAA;AACfR,QAAAA,MAAAA,CAAOS,GAAG,CAACH,WAAAA,CAAAA;AACb,KAAA,CAAE,OAAOI,CAAG,EAAA;AACVf,QAAAA,GAAAA,CAAIK,MAAM,CAACW,KAAK,CAAC,yBAA2BD,EAAAA,CAAAA,CAAAA;AAC5CP,QAAAA,OAAAA,CAAQS,IAAI,CAAC,mEAAA,CAAA;AACf;AACF,CAAA;;;;"}
@@ -0,0 +1,32 @@
1
+ import { cloudApiFactory } from '../services/cli-api.mjs';
2
+ import 'fs-extra';
3
+ import 'path';
4
+ import 'lodash';
5
+ import { tokenServiceFactory } from '../services/token.mjs';
6
+ import 'chalk';
7
+ import 'fast-safe-stringify';
8
+ import 'ora';
9
+ import 'cli-progress';
10
+ import { promptLogin } from '../login/action.mjs';
11
+
12
+ var action = (async (ctx)=>{
13
+ const { getValidToken } = await tokenServiceFactory(ctx);
14
+ const token = await getValidToken(ctx, promptLogin);
15
+ const { logger } = ctx;
16
+ if (!token) {
17
+ return;
18
+ }
19
+ const cloudApiService = await cloudApiFactory(ctx, token);
20
+ const spinner = logger.spinner('Fetching your projects...').start();
21
+ try {
22
+ const { data: { data: projectList } } = await cloudApiService.listProjects();
23
+ spinner.succeed();
24
+ logger.log(projectList);
25
+ } catch (e) {
26
+ ctx.logger.debug('Failed to list projects', e);
27
+ spinner.fail('An error occurred while fetching your projects from Strapi Cloud.');
28
+ }
29
+ });
30
+
31
+ export { action as default };
32
+ //# sourceMappingURL=action.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action.mjs","sources":["../../src/list-projects/action.ts"],"sourcesContent":["import type { CLIContext } from '../types';\nimport { cloudApiFactory, tokenServiceFactory } from '../services';\nimport { promptLogin } from '../login/action';\n\nexport default async (ctx: CLIContext) => {\n const { getValidToken } = await tokenServiceFactory(ctx);\n const token = await getValidToken(ctx, promptLogin);\n const { logger } = ctx;\n\n if (!token) {\n return;\n }\n\n const cloudApiService = await cloudApiFactory(ctx, token);\n const spinner = logger.spinner('Fetching your projects...').start();\n\n try {\n const {\n data: { data: projectList },\n } = await cloudApiService.listProjects();\n spinner.succeed();\n logger.log(projectList);\n } catch (e) {\n ctx.logger.debug('Failed to list projects', e);\n spinner.fail('An error occurred while fetching your projects from Strapi Cloud.');\n }\n};\n"],"names":["ctx","getValidToken","tokenServiceFactory","token","promptLogin","logger","cloudApiService","cloudApiFactory","spinner","start","data","projectList","listProjects","succeed","log","e","debug","fail"],"mappings":";;;;;;;;;;;AAIA,aAAe,CAAA,OAAOA,GAAAA,GAAAA;AACpB,IAAA,MAAM,EAAEC,aAAa,EAAE,GAAG,MAAMC,mBAAoBF,CAAAA,GAAAA,CAAAA;IACpD,MAAMG,KAAAA,GAAQ,MAAMF,aAAAA,CAAcD,GAAKI,EAAAA,WAAAA,CAAAA;IACvC,MAAM,EAAEC,MAAM,EAAE,GAAGL,GAAAA;AAEnB,IAAA,IAAI,CAACG,KAAO,EAAA;AACV,QAAA;AACF;IAEA,MAAMG,eAAAA,GAAkB,MAAMC,eAAAA,CAAgBP,GAAKG,EAAAA,KAAAA,CAAAA;AACnD,IAAA,MAAMK,OAAUH,GAAAA,MAAAA,CAAOG,OAAO,CAAC,6BAA6BC,KAAK,EAAA;IAEjE,IAAI;QACF,MAAM,EACJC,IAAM,EAAA,EAAEA,IAAMC,EAAAA,WAAW,EAAE,EAC5B,GAAG,MAAML,eAAAA,CAAgBM,YAAY,EAAA;AACtCJ,QAAAA,OAAAA,CAAQK,OAAO,EAAA;AACfR,QAAAA,MAAAA,CAAOS,GAAG,CAACH,WAAAA,CAAAA;AACb,KAAA,CAAE,OAAOI,CAAG,EAAA;AACVf,QAAAA,GAAAA,CAAIK,MAAM,CAACW,KAAK,CAAC,yBAA2BD,EAAAA,CAAAA,CAAAA;AAC5CP,QAAAA,OAAAA,CAAQS,IAAI,CAAC,mEAAA,CAAA;AACf;AACF,CAAA;;;;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/list-projects/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAInD;;GAEG;AACH,QAAA,MAAM,OAAO,EAAE,kBAQd,CAAC;AAEF,eAAe,OAAO,CAAC"}
@@ -0,0 +1,13 @@
1
+ 'use strict';
2
+
3
+ var helpers = require('../utils/helpers.js');
4
+ var action = require('./action.js');
5
+
6
+ /**
7
+ * `$ list project from the cloud`
8
+ */ const command = ({ command, ctx })=>{
9
+ command.command('cloud:projects').alias('projects').description('List Strapi Cloud projects').option('-d, --debug', 'Enable debugging mode with verbose logs').option('-s, --silent', "Don't log anything").action(()=>helpers.runAction('projects', action)(ctx));
10
+ };
11
+
12
+ module.exports = command;
13
+ //# sourceMappingURL=command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.js","sources":["../../src/list-projects/command.ts"],"sourcesContent":["import { type StrapiCloudCommand } from '../types';\nimport { runAction } from '../utils/helpers';\nimport action from './action';\n\n/**\n * `$ list project from the cloud`\n */\nconst command: StrapiCloudCommand = ({ command, ctx }) => {\n command\n .command('cloud:projects')\n .alias('projects')\n .description('List Strapi Cloud projects')\n .option('-d, --debug', 'Enable debugging mode with verbose logs')\n .option('-s, --silent', \"Don't log anything\")\n .action(() => runAction('projects', action)(ctx));\n};\n\nexport default command;\n"],"names":["command","ctx","alias","description","option","action","runAction"],"mappings":";;;;;AAIA;;AAEC,UACKA,OAA8B,GAAA,CAAC,EAAEA,OAAO,EAAEC,GAAG,EAAE,GAAA;IACnDD,OACGA,CAAAA,OAAO,CAAC,gBACRE,CAAAA,CAAAA,KAAK,CAAC,UACNC,CAAAA,CAAAA,WAAW,CAAC,4BAAA,CAAA,CACZC,MAAM,CAAC,eAAe,yCACtBA,CAAAA,CAAAA,MAAM,CAAC,cAAgB,EAAA,oBAAA,CAAA,CACvBC,MAAM,CAAC,IAAMC,iBAAU,CAAA,UAAA,EAAYD,MAAQJ,CAAAA,CAAAA,GAAAA,CAAAA,CAAAA;AAChD;;;;"}
@@ -0,0 +1,11 @@
1
+ import { runAction } from '../utils/helpers.mjs';
2
+ import action from './action.mjs';
3
+
4
+ /**
5
+ * `$ list project from the cloud`
6
+ */ const command = ({ command, ctx })=>{
7
+ command.command('cloud:projects').alias('projects').description('List Strapi Cloud projects').option('-d, --debug', 'Enable debugging mode with verbose logs').option('-s, --silent', "Don't log anything").action(()=>runAction('projects', action)(ctx));
8
+ };
9
+
10
+ export { command as default };
11
+ //# sourceMappingURL=command.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.mjs","sources":["../../src/list-projects/command.ts"],"sourcesContent":["import { type StrapiCloudCommand } from '../types';\nimport { runAction } from '../utils/helpers';\nimport action from './action';\n\n/**\n * `$ list project from the cloud`\n */\nconst command: StrapiCloudCommand = ({ command, ctx }) => {\n command\n .command('cloud:projects')\n .alias('projects')\n .description('List Strapi Cloud projects')\n .option('-d, --debug', 'Enable debugging mode with verbose logs')\n .option('-s, --silent', \"Don't log anything\")\n .action(() => runAction('projects', action)(ctx));\n};\n\nexport default command;\n"],"names":["command","ctx","alias","description","option","action","runAction"],"mappings":";;;AAIA;;AAEC,UACKA,OAA8B,GAAA,CAAC,EAAEA,OAAO,EAAEC,GAAG,EAAE,GAAA;IACnDD,OACGA,CAAAA,OAAO,CAAC,gBACRE,CAAAA,CAAAA,KAAK,CAAC,UACNC,CAAAA,CAAAA,WAAW,CAAC,4BAAA,CAAA,CACZC,MAAM,CAAC,eAAe,yCACtBA,CAAAA,CAAAA,MAAM,CAAC,cAAgB,EAAA,oBAAA,CAAA,CACvBC,MAAM,CAAC,IAAMC,SAAU,CAAA,UAAA,EAAYD,MAAQJ,CAAAA,CAAAA,GAAAA,CAAAA,CAAAA;AAChD;;;;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/list-projects/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAEvD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;;AAE3B,wBAK4B"}
@@ -0,0 +1,18 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var action = require('./action.js');
6
+ var command = require('./command.js');
7
+
8
+ var listProjects = {
9
+ name: 'list-projects',
10
+ description: 'List Strapi Cloud projects',
11
+ action,
12
+ command
13
+ };
14
+
15
+ exports.action = action;
16
+ exports.command = command;
17
+ exports.default = listProjects;
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../src/list-projects/index.ts"],"sourcesContent":["import action from './action';\nimport command from './command';\nimport type { StrapiCloudCommandInfo } from '../types';\n\nexport { action, command };\n\nexport default {\n name: 'list-projects',\n description: 'List Strapi Cloud projects',\n action,\n command,\n} as StrapiCloudCommandInfo;\n"],"names":["name","description","action","command"],"mappings":";;;;;;;AAMA,mBAAe;IACbA,IAAM,EAAA,eAAA;IACNC,WAAa,EAAA,4BAAA;AACbC,IAAAA,MAAAA;AACAC,IAAAA;AACF,CAA4B;;;;;;"}
@@ -0,0 +1,12 @@
1
+ import action from './action.mjs';
2
+ import command from './command.mjs';
3
+
4
+ var listProjects = {
5
+ name: 'list-projects',
6
+ description: 'List Strapi Cloud projects',
7
+ action,
8
+ command
9
+ };
10
+
11
+ export { action, command, listProjects as default };
12
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":["../../src/list-projects/index.ts"],"sourcesContent":["import action from './action';\nimport command from './command';\nimport type { StrapiCloudCommandInfo } from '../types';\n\nexport { action, command };\n\nexport default {\n name: 'list-projects',\n description: 'List Strapi Cloud projects',\n action,\n command,\n} as StrapiCloudCommandInfo;\n"],"names":["name","description","action","command"],"mappings":";;;AAMA,mBAAe;IACbA,IAAM,EAAA,eAAA;IACNC,WAAa,EAAA,4BAAA;AACbC,IAAAA,MAAAA;AACAC,IAAAA;AACF,CAA4B;;;;"}
@@ -0,0 +1,6 @@
1
+ import type { CLIContext } from '../types';
2
+ export declare function promptLogin(ctx: CLIContext): Promise<boolean>;
3
+ export default function loginAction(ctx: CLIContext, { showDashboardLink }?: {
4
+ showDashboardLink?: boolean;
5
+ }): Promise<boolean>;
6
+ //# sourceMappingURL=action.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../src/login/action.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAkB,UAAU,EAAE,MAAM,UAAU,CAAC;AAM3D,wBAAsB,WAAW,CAAC,GAAG,EAAE,UAAU,oBAchD;AAED,wBAA8B,WAAW,CACvC,GAAG,EAAE,UAAU,EACf,EAAE,iBAAwB,EAAE,GAAE;IAAE,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAAO,GACjE,OAAO,CAAC,OAAO,CAAC,CA+KlB"}
@@ -0,0 +1,194 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var axios = require('axios');
6
+ var chalk = require('chalk');
7
+ var inquirer = require('inquirer');
8
+ var cliApi = require('../services/cli-api.js');
9
+ require('fs-extra');
10
+ require('path');
11
+ require('lodash');
12
+ var token = require('../services/token.js');
13
+ require('fast-safe-stringify');
14
+ require('ora');
15
+ require('cli-progress');
16
+ var api = require('../config/api.js');
17
+ var analytics = require('../utils/analytics.js');
18
+
19
+ const openModule = import('open');
20
+ async function promptLogin(ctx) {
21
+ const response = await inquirer.prompt([
22
+ {
23
+ type: 'confirm',
24
+ name: 'login',
25
+ message: 'Would you like to login?'
26
+ }
27
+ ]);
28
+ if (response.login) {
29
+ const loginSuccessful = await loginAction(ctx);
30
+ return loginSuccessful;
31
+ }
32
+ return false;
33
+ }
34
+ async function loginAction(ctx, { showDashboardLink = true } = {}) {
35
+ const { logger, promptExperiment } = ctx;
36
+ const tokenService = await token.tokenServiceFactory(ctx);
37
+ const existingToken = await tokenService.retrieveToken();
38
+ const cloudApiService = await cliApi.cloudApiFactory(ctx, existingToken || undefined);
39
+ if (existingToken) {
40
+ const isTokenValid = await tokenService.isTokenValid(existingToken);
41
+ if (isTokenValid) {
42
+ try {
43
+ const userInfo = await cloudApiService.getUserInfo();
44
+ const { email } = userInfo.data.data;
45
+ if (email) {
46
+ logger.log(`You are already logged into your account (${email}).`);
47
+ } else {
48
+ logger.log('You are already logged in.');
49
+ }
50
+ if (showDashboardLink) {
51
+ logger.log('To access your dashboard, please copy and paste the following URL into your web browser:');
52
+ logger.log(chalk.underline(`${api.apiConfig.dashboardBaseUrl}/projects`));
53
+ }
54
+ return true;
55
+ } catch (e) {
56
+ logger.debug('Failed to fetch user info', e);
57
+ }
58
+ }
59
+ }
60
+ let cliConfig;
61
+ try {
62
+ logger.info('🔌 Connecting...');
63
+ const config = await cloudApiService.config();
64
+ cliConfig = config.data;
65
+ } catch (e) {
66
+ logger.error('🥲 Oops! Something went wrong while logging you in. Please try again.');
67
+ logger.debug(e);
68
+ return false;
69
+ }
70
+ await analytics.trackEvent(ctx, cloudApiService, 'willLoginAttempt', {
71
+ ...promptExperiment && {
72
+ promptExperiment
73
+ }
74
+ });
75
+ logger.debug('🔐 Creating device authentication request...', {
76
+ client_id: cliConfig.clientId,
77
+ scope: cliConfig.scope,
78
+ audience: cliConfig.audience
79
+ });
80
+ const deviceAuthResponse = await axios.post(cliConfig.deviceCodeAuthUrl, {
81
+ client_id: cliConfig.clientId,
82
+ scope: cliConfig.scope,
83
+ audience: cliConfig.audience
84
+ }).catch((e)=>{
85
+ logger.error('There was an issue with the authentication process. Please try again.');
86
+ if (e.message) {
87
+ logger.debug(e.message, e);
88
+ } else {
89
+ logger.debug(e);
90
+ }
91
+ });
92
+ openModule.then((open)=>{
93
+ open.default(deviceAuthResponse.data.verification_uri_complete).catch((e)=>{
94
+ logger.error('We encountered an issue opening the browser. Please try again later.');
95
+ logger.debug(e.message, e);
96
+ });
97
+ });
98
+ logger.log('If a browser tab does not open automatically, please follow the next steps:');
99
+ logger.log(`1. Open this url in your device: ${deviceAuthResponse.data.verification_uri_complete}`);
100
+ logger.log(`2. Enter the following code: ${deviceAuthResponse.data.user_code} and confirm to login.\n`);
101
+ const tokenPayload = {
102
+ grant_type: 'urn:ietf:params:oauth:grant-type:device_code',
103
+ device_code: deviceAuthResponse.data.device_code,
104
+ client_id: cliConfig.clientId
105
+ };
106
+ let isAuthenticated = false;
107
+ const authenticate = async ()=>{
108
+ const spinner = logger.spinner('Waiting for authentication');
109
+ spinner.start();
110
+ const spinnerFail = ()=>spinner.fail('Authentication failed!');
111
+ while(!isAuthenticated){
112
+ try {
113
+ const tokenResponse = await axios.post(cliConfig.tokenUrl, tokenPayload);
114
+ const authTokenData = tokenResponse.data;
115
+ if (tokenResponse.status === 200) {
116
+ // Token validation
117
+ try {
118
+ logger.debug('🔐 Validating token...');
119
+ await tokenService.validateToken(authTokenData.id_token, cliConfig.jwksUrl);
120
+ logger.debug('🔐 Token validation successful!');
121
+ } catch (e) {
122
+ logger.debug(e);
123
+ spinnerFail();
124
+ throw new Error('Unable to proceed: Token validation failed');
125
+ }
126
+ logger.debug('🔍 Fetching user information...');
127
+ const cloudApiServiceWithToken = await cliApi.cloudApiFactory(ctx, authTokenData.access_token);
128
+ // Call to get user info to create the user in DB if not exists
129
+ await cloudApiServiceWithToken.getUserInfo();
130
+ logger.debug('🔍 User information fetched successfully!');
131
+ try {
132
+ logger.debug('📝 Saving login information...');
133
+ await tokenService.saveToken(authTokenData.access_token);
134
+ logger.debug('📝 Login information saved successfully!');
135
+ isAuthenticated = true;
136
+ } catch (e) {
137
+ logger.error('There was a problem saving your login information. Please try logging in again.');
138
+ logger.debug(e);
139
+ spinnerFail();
140
+ return false;
141
+ }
142
+ }
143
+ } catch (e) {
144
+ if (e.message === 'Unable to proceed: Token validation failed') {
145
+ logger.error('There seems to be a problem with your login information. Please try logging in again.');
146
+ spinnerFail();
147
+ await analytics.trackEvent(ctx, cloudApiService, 'didNotLogin', {
148
+ loginMethod: 'cli',
149
+ ...promptExperiment && {
150
+ promptExperiment
151
+ }
152
+ });
153
+ return false;
154
+ }
155
+ if (e.response?.data.error && ![
156
+ 'authorization_pending',
157
+ 'slow_down'
158
+ ].includes(e.response.data.error)) {
159
+ logger.debug(e);
160
+ spinnerFail();
161
+ await analytics.trackEvent(ctx, cloudApiService, 'didNotLogin', {
162
+ loginMethod: 'cli',
163
+ ...promptExperiment && {
164
+ promptExperiment
165
+ }
166
+ });
167
+ return false;
168
+ }
169
+ // Await interval before retrying
170
+ await new Promise((resolve)=>{
171
+ setTimeout(resolve, deviceAuthResponse.data.interval * 1000);
172
+ });
173
+ }
174
+ }
175
+ spinner.succeed('Authentication successful!');
176
+ if (showDashboardLink) {
177
+ logger.log('You are now logged into Strapi Cloud.');
178
+ logger.log('To access your dashboard, please copy and paste the following URL into your web browser:');
179
+ logger.log(chalk.underline(`${api.apiConfig.dashboardBaseUrl}/projects`));
180
+ }
181
+ await analytics.trackEvent(ctx, cloudApiService, 'didLogin', {
182
+ loginMethod: 'cli',
183
+ ...promptExperiment && {
184
+ promptExperiment
185
+ }
186
+ });
187
+ };
188
+ await authenticate();
189
+ return isAuthenticated;
190
+ }
191
+
192
+ exports.default = loginAction;
193
+ exports.promptLogin = promptLogin;
194
+ //# sourceMappingURL=action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action.js","sources":["../../src/login/action.ts"],"sourcesContent":["import axios, { AxiosResponse, AxiosError } from 'axios';\nimport chalk from 'chalk';\nimport inquirer from 'inquirer';\nimport { tokenServiceFactory, cloudApiFactory } from '../services';\nimport type { CloudCliConfig, CLIContext } from '../types';\nimport { apiConfig } from '../config/api';\nimport { trackEvent } from '../utils/analytics';\n\nconst openModule = import('open');\n\nexport async function promptLogin(ctx: CLIContext) {\n const response = await inquirer.prompt([\n {\n type: 'confirm',\n name: 'login',\n message: 'Would you like to login?',\n },\n ]);\n\n if (response.login) {\n const loginSuccessful = await loginAction(ctx);\n return loginSuccessful;\n }\n return false;\n}\n\nexport default async function loginAction(\n ctx: CLIContext,\n { showDashboardLink = true }: { showDashboardLink?: boolean } = {}\n): Promise<boolean> {\n const { logger, promptExperiment } = ctx;\n const tokenService = await tokenServiceFactory(ctx);\n const existingToken = await tokenService.retrieveToken();\n const cloudApiService = await cloudApiFactory(ctx, existingToken || undefined);\n\n if (existingToken) {\n const isTokenValid = await tokenService.isTokenValid(existingToken);\n if (isTokenValid) {\n try {\n const userInfo = await cloudApiService.getUserInfo();\n const { email } = userInfo.data.data;\n if (email) {\n logger.log(`You are already logged into your account (${email}).`);\n } else {\n logger.log('You are already logged in.');\n }\n if (showDashboardLink) {\n logger.log(\n 'To access your dashboard, please copy and paste the following URL into your web browser:'\n );\n logger.log(chalk.underline(`${apiConfig.dashboardBaseUrl}/projects`));\n }\n return true;\n } catch (e) {\n logger.debug('Failed to fetch user info', e);\n }\n }\n }\n\n let cliConfig: CloudCliConfig;\n try {\n logger.info('🔌 Connecting...');\n const config = await cloudApiService.config();\n cliConfig = config.data;\n } catch (e: unknown) {\n logger.error('🥲 Oops! Something went wrong while logging you in. Please try again.');\n logger.debug(e);\n return false;\n }\n await trackEvent(ctx, cloudApiService, 'willLoginAttempt', {\n ...(promptExperiment && { promptExperiment }),\n });\n\n logger.debug('🔐 Creating device authentication request...', {\n client_id: cliConfig.clientId,\n scope: cliConfig.scope,\n audience: cliConfig.audience,\n });\n const deviceAuthResponse = (await axios\n .post(cliConfig.deviceCodeAuthUrl, {\n client_id: cliConfig.clientId,\n scope: cliConfig.scope,\n audience: cliConfig.audience,\n })\n .catch((e: AxiosError) => {\n logger.error('There was an issue with the authentication process. Please try again.');\n if (e.message) {\n logger.debug(e.message, e);\n } else {\n logger.debug(e);\n }\n })) as AxiosResponse;\n\n openModule.then((open) => {\n open.default(deviceAuthResponse.data.verification_uri_complete).catch((e: Error) => {\n logger.error('We encountered an issue opening the browser. Please try again later.');\n logger.debug(e.message, e);\n });\n });\n\n logger.log('If a browser tab does not open automatically, please follow the next steps:');\n logger.log(\n `1. Open this url in your device: ${deviceAuthResponse.data.verification_uri_complete}`\n );\n logger.log(\n `2. Enter the following code: ${deviceAuthResponse.data.user_code} and confirm to login.\\n`\n );\n\n const tokenPayload = {\n grant_type: 'urn:ietf:params:oauth:grant-type:device_code',\n device_code: deviceAuthResponse.data.device_code,\n client_id: cliConfig.clientId,\n };\n\n let isAuthenticated = false;\n\n const authenticate = async () => {\n const spinner = logger.spinner('Waiting for authentication');\n spinner.start();\n const spinnerFail = () => spinner.fail('Authentication failed!');\n\n while (!isAuthenticated) {\n try {\n const tokenResponse = await axios.post(cliConfig.tokenUrl, tokenPayload);\n const authTokenData = tokenResponse.data;\n\n if (tokenResponse.status === 200) {\n // Token validation\n try {\n logger.debug('🔐 Validating token...');\n await tokenService.validateToken(authTokenData.id_token, cliConfig.jwksUrl);\n logger.debug('🔐 Token validation successful!');\n } catch (e: any) {\n logger.debug(e);\n spinnerFail();\n throw new Error('Unable to proceed: Token validation failed');\n }\n\n logger.debug('🔍 Fetching user information...');\n const cloudApiServiceWithToken = await cloudApiFactory(ctx, authTokenData.access_token);\n // Call to get user info to create the user in DB if not exists\n await cloudApiServiceWithToken.getUserInfo();\n logger.debug('🔍 User information fetched successfully!');\n\n try {\n logger.debug('📝 Saving login information...');\n await tokenService.saveToken(authTokenData.access_token);\n logger.debug('📝 Login information saved successfully!');\n isAuthenticated = true;\n } catch (e) {\n logger.error(\n 'There was a problem saving your login information. Please try logging in again.'\n );\n logger.debug(e);\n spinnerFail();\n return false;\n }\n }\n } catch (e: any) {\n if (e.message === 'Unable to proceed: Token validation failed') {\n logger.error(\n 'There seems to be a problem with your login information. Please try logging in again.'\n );\n spinnerFail();\n await trackEvent(ctx, cloudApiService, 'didNotLogin', {\n loginMethod: 'cli',\n ...(promptExperiment && { promptExperiment }),\n });\n return false;\n }\n if (\n e.response?.data.error &&\n !['authorization_pending', 'slow_down'].includes(e!.response.data.error)\n ) {\n logger.debug(e);\n spinnerFail();\n await trackEvent(ctx, cloudApiService, 'didNotLogin', {\n loginMethod: 'cli',\n ...(promptExperiment && { promptExperiment }),\n });\n return false;\n }\n // Await interval before retrying\n await new Promise((resolve) => {\n setTimeout(resolve, deviceAuthResponse.data.interval * 1000);\n });\n }\n }\n spinner.succeed('Authentication successful!');\n if (showDashboardLink) {\n logger.log('You are now logged into Strapi Cloud.');\n logger.log(\n 'To access your dashboard, please copy and paste the following URL into your web browser:'\n );\n logger.log(chalk.underline(`${apiConfig.dashboardBaseUrl}/projects`));\n }\n await trackEvent(ctx, cloudApiService, 'didLogin', {\n loginMethod: 'cli',\n ...(promptExperiment && { promptExperiment }),\n });\n };\n\n await authenticate();\n return isAuthenticated;\n}\n"],"names":["openModule","promptLogin","ctx","response","inquirer","prompt","type","name","message","login","loginSuccessful","loginAction","showDashboardLink","logger","promptExperiment","tokenService","tokenServiceFactory","existingToken","retrieveToken","cloudApiService","cloudApiFactory","undefined","isTokenValid","userInfo","getUserInfo","email","data","log","chalk","underline","apiConfig","dashboardBaseUrl","e","debug","cliConfig","info","config","error","trackEvent","client_id","clientId","scope","audience","deviceAuthResponse","axios","post","deviceCodeAuthUrl","catch","then","open","default","verification_uri_complete","user_code","tokenPayload","grant_type","device_code","isAuthenticated","authenticate","spinner","start","spinnerFail","fail","tokenResponse","tokenUrl","authTokenData","status","validateToken","id_token","jwksUrl","Error","cloudApiServiceWithToken","access_token","saveToken","loginMethod","includes","Promise","resolve","setTimeout","interval","succeed"],"mappings":"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"}