@strapi/cloud-cli 0.0.0-next.f0a0bc26f5ef0693aaea2a616bc6b816cfee54b6 → 0.0.0-next.f0f36e3df4b18f167036dcbca529dcb933bf4e1d

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 (341) hide show
  1. package/dist/bin.d.ts.map +1 -0
  2. package/dist/bin.js +45 -172
  3. package/dist/bin.js.map +1 -1
  4. package/dist/bin.mjs +49 -0
  5. package/dist/bin.mjs.map +1 -0
  6. package/dist/cloud/command.d.ts.map +1 -0
  7. package/dist/cloud/command.js +14 -0
  8. package/dist/cloud/command.js.map +1 -0
  9. package/dist/cloud/command.mjs +12 -0
  10. package/dist/cloud/command.mjs.map +1 -0
  11. package/dist/config/api.d.ts.map +1 -0
  12. package/dist/config/api.js +11 -0
  13. package/dist/config/api.js.map +1 -0
  14. package/dist/config/api.mjs +9 -0
  15. package/dist/config/api.mjs.map +1 -0
  16. package/dist/{src/config → config}/local.d.ts +1 -1
  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-growth-sso-trial/action.d.ts +9 -0
  23. package/dist/create-growth-sso-trial/action.d.ts.map +1 -0
  24. package/dist/create-growth-sso-trial/action.js +51 -0
  25. package/dist/create-growth-sso-trial/action.js.map +1 -0
  26. package/dist/create-growth-sso-trial/action.mjs +49 -0
  27. package/dist/create-growth-sso-trial/action.mjs.map +1 -0
  28. package/dist/create-growth-sso-trial/index.d.ts +4 -0
  29. package/dist/create-growth-sso-trial/index.d.ts.map +1 -0
  30. package/dist/create-project/action.d.ts +4 -0
  31. package/dist/create-project/action.d.ts.map +1 -0
  32. package/dist/create-project/action.js +122 -0
  33. package/dist/create-project/action.js.map +1 -0
  34. package/dist/create-project/action.mjs +120 -0
  35. package/dist/create-project/action.mjs.map +1 -0
  36. package/dist/create-project/command.d.ts.map +1 -0
  37. package/dist/create-project/command.js +14 -0
  38. package/dist/create-project/command.js.map +1 -0
  39. package/dist/create-project/command.mjs +12 -0
  40. package/dist/create-project/command.mjs.map +1 -0
  41. package/dist/create-project/index.d.ts.map +1 -0
  42. package/dist/create-project/index.js +18 -0
  43. package/dist/create-project/index.js.map +1 -0
  44. package/dist/create-project/index.mjs +12 -0
  45. package/dist/create-project/index.mjs.map +1 -0
  46. package/dist/create-project/utils/get-project-name-from-pkg.d.ts.map +1 -0
  47. package/dist/create-project/utils/get-project-name-from-pkg.js +15 -0
  48. package/dist/create-project/utils/get-project-name-from-pkg.js.map +1 -0
  49. package/dist/create-project/utils/get-project-name-from-pkg.mjs +13 -0
  50. package/dist/create-project/utils/get-project-name-from-pkg.mjs.map +1 -0
  51. package/dist/create-project/utils/project-questions.utils.d.ts.map +1 -0
  52. package/dist/create-project/utils/project-questions.utils.js +63 -0
  53. package/dist/create-project/utils/project-questions.utils.js.map +1 -0
  54. package/dist/create-project/utils/project-questions.utils.mjs +59 -0
  55. package/dist/create-project/utils/project-questions.utils.mjs.map +1 -0
  56. package/dist/deploy-project/action.d.ts.map +1 -0
  57. package/dist/deploy-project/action.js +324 -0
  58. package/dist/deploy-project/action.js.map +1 -0
  59. package/dist/deploy-project/action.mjs +303 -0
  60. package/dist/deploy-project/action.mjs.map +1 -0
  61. package/dist/deploy-project/command.d.ts.map +1 -0
  62. package/dist/deploy-project/command.js +14 -0
  63. package/dist/deploy-project/command.js.map +1 -0
  64. package/dist/deploy-project/command.mjs +12 -0
  65. package/dist/deploy-project/command.mjs.map +1 -0
  66. package/dist/deploy-project/index.d.ts.map +1 -0
  67. package/dist/deploy-project/index.js +18 -0
  68. package/dist/deploy-project/index.js.map +1 -0
  69. package/dist/deploy-project/index.mjs +12 -0
  70. package/dist/deploy-project/index.mjs.map +1 -0
  71. package/dist/environment/command.d.ts.map +1 -0
  72. package/dist/environment/command.js +15 -0
  73. package/dist/environment/command.js.map +1 -0
  74. package/dist/environment/command.mjs +13 -0
  75. package/dist/environment/command.mjs.map +1 -0
  76. package/dist/environment/link/action.d.ts.map +1 -0
  77. package/dist/environment/link/action.js +117 -0
  78. package/dist/environment/link/action.js.map +1 -0
  79. package/dist/environment/link/action.mjs +115 -0
  80. package/dist/environment/link/action.mjs.map +1 -0
  81. package/dist/environment/link/command.d.ts.map +1 -0
  82. package/dist/environment/link/command.js +13 -0
  83. package/dist/environment/link/command.js.map +1 -0
  84. package/dist/environment/link/command.mjs +11 -0
  85. package/dist/environment/link/command.mjs.map +1 -0
  86. package/dist/environment/link/index.d.ts.map +1 -0
  87. package/dist/environment/link/index.js +18 -0
  88. package/dist/environment/link/index.js.map +1 -0
  89. package/dist/environment/link/index.mjs +12 -0
  90. package/dist/environment/link/index.mjs.map +1 -0
  91. package/dist/environment/list/action.d.ts.map +1 -0
  92. package/dist/environment/list/action.js +57 -0
  93. package/dist/environment/list/action.js.map +1 -0
  94. package/dist/environment/list/action.mjs +55 -0
  95. package/dist/environment/list/action.mjs.map +1 -0
  96. package/dist/environment/list/command.d.ts.map +1 -0
  97. package/dist/environment/list/command.js +13 -0
  98. package/dist/environment/list/command.js.map +1 -0
  99. package/dist/environment/list/command.mjs +11 -0
  100. package/dist/environment/list/command.mjs.map +1 -0
  101. package/dist/environment/list/index.d.ts.map +1 -0
  102. package/dist/environment/list/index.js +18 -0
  103. package/dist/environment/list/index.js.map +1 -0
  104. package/dist/environment/list/index.mjs +12 -0
  105. package/dist/environment/list/index.mjs.map +1 -0
  106. package/dist/{src/index.d.ts → index.d.ts} +2 -0
  107. package/dist/index.d.ts.map +1 -0
  108. package/dist/index.js +56 -1916
  109. package/dist/index.js.map +1 -1
  110. package/dist/index.mjs +54 -1860
  111. package/dist/index.mjs.map +1 -1
  112. package/dist/link/action.d.ts.map +1 -0
  113. package/dist/link/action.js +146 -0
  114. package/dist/link/action.js.map +1 -0
  115. package/dist/link/action.mjs +144 -0
  116. package/dist/link/action.mjs.map +1 -0
  117. package/dist/link/command.d.ts.map +1 -0
  118. package/dist/link/command.js +13 -0
  119. package/dist/link/command.js.map +1 -0
  120. package/dist/link/command.mjs +11 -0
  121. package/dist/link/command.mjs.map +1 -0
  122. package/dist/link/index.d.ts.map +1 -0
  123. package/dist/link/index.js +18 -0
  124. package/dist/link/index.js.map +1 -0
  125. package/dist/link/index.mjs +12 -0
  126. package/dist/link/index.mjs.map +1 -0
  127. package/dist/list-projects/action.d.ts.map +1 -0
  128. package/dist/list-projects/action.js +34 -0
  129. package/dist/list-projects/action.js.map +1 -0
  130. package/dist/list-projects/action.mjs +32 -0
  131. package/dist/list-projects/action.mjs.map +1 -0
  132. package/dist/list-projects/command.d.ts.map +1 -0
  133. package/dist/list-projects/command.js +13 -0
  134. package/dist/list-projects/command.js.map +1 -0
  135. package/dist/list-projects/command.mjs +11 -0
  136. package/dist/list-projects/command.mjs.map +1 -0
  137. package/dist/list-projects/index.d.ts.map +1 -0
  138. package/dist/list-projects/index.js +18 -0
  139. package/dist/list-projects/index.js.map +1 -0
  140. package/dist/list-projects/index.mjs +12 -0
  141. package/dist/list-projects/index.mjs.map +1 -0
  142. package/dist/login/action.d.ts +6 -0
  143. package/dist/login/action.d.ts.map +1 -0
  144. package/dist/login/action.js +199 -0
  145. package/dist/login/action.js.map +1 -0
  146. package/dist/login/action.mjs +194 -0
  147. package/dist/login/action.mjs.map +1 -0
  148. package/dist/login/command.d.ts.map +1 -0
  149. package/dist/login/command.js +14 -0
  150. package/dist/login/command.js.map +1 -0
  151. package/dist/login/command.mjs +12 -0
  152. package/dist/login/command.mjs.map +1 -0
  153. package/dist/login/index.d.ts.map +1 -0
  154. package/dist/login/index.js +18 -0
  155. package/dist/login/index.js.map +1 -0
  156. package/dist/login/index.mjs +12 -0
  157. package/dist/login/index.mjs.map +1 -0
  158. package/dist/logout/action.d.ts.map +1 -0
  159. package/dist/logout/action.js +46 -0
  160. package/dist/logout/action.js.map +1 -0
  161. package/dist/logout/action.mjs +44 -0
  162. package/dist/logout/action.mjs.map +1 -0
  163. package/dist/logout/command.d.ts.map +1 -0
  164. package/dist/logout/command.js +14 -0
  165. package/dist/logout/command.js.map +1 -0
  166. package/dist/logout/command.mjs +12 -0
  167. package/dist/logout/command.mjs.map +1 -0
  168. package/dist/logout/index.d.ts.map +1 -0
  169. package/dist/logout/index.js +18 -0
  170. package/dist/logout/index.js.map +1 -0
  171. package/dist/logout/index.mjs +12 -0
  172. package/dist/logout/index.mjs.map +1 -0
  173. package/dist/package.json.js +129 -0
  174. package/dist/package.json.js.map +1 -0
  175. package/dist/package.json.mjs +105 -0
  176. package/dist/package.json.mjs.map +1 -0
  177. package/dist/services/build-logs.d.ts.map +1 -0
  178. package/dist/services/build-logs.js +67 -0
  179. package/dist/services/build-logs.js.map +1 -0
  180. package/dist/services/build-logs.mjs +65 -0
  181. package/dist/services/build-logs.mjs.map +1 -0
  182. package/dist/{src/services → services}/cli-api.d.ts +13 -2
  183. package/dist/services/cli-api.d.ts.map +1 -0
  184. package/dist/services/cli-api.js +164 -0
  185. package/dist/services/cli-api.js.map +1 -0
  186. package/dist/services/cli-api.mjs +161 -0
  187. package/dist/services/cli-api.mjs.map +1 -0
  188. package/dist/services/context.d.ts +4 -0
  189. package/dist/services/context.d.ts.map +1 -0
  190. package/dist/services/context.js +14 -0
  191. package/dist/services/context.js.map +1 -0
  192. package/dist/services/context.mjs +11 -0
  193. package/dist/services/context.mjs.map +1 -0
  194. package/dist/services/index.d.ts.map +1 -0
  195. package/dist/services/index.js +14 -0
  196. package/dist/services/index.js.map +1 -0
  197. package/dist/services/index.mjs +6 -0
  198. package/dist/services/index.mjs.map +1 -0
  199. package/dist/services/logger.d.ts.map +1 -0
  200. package/dist/services/logger.js +128 -0
  201. package/dist/services/logger.js.map +1 -0
  202. package/dist/services/logger.mjs +107 -0
  203. package/dist/services/logger.mjs.map +1 -0
  204. package/dist/{src/services → services}/notification.d.ts +4 -1
  205. package/dist/services/notification.d.ts.map +1 -0
  206. package/dist/services/notification.js +79 -0
  207. package/dist/services/notification.js.map +1 -0
  208. package/dist/services/notification.mjs +77 -0
  209. package/dist/services/notification.mjs.map +1 -0
  210. package/dist/services/strapi-info-save.d.ts.map +1 -0
  211. package/dist/services/strapi-info-save.js +53 -0
  212. package/dist/services/strapi-info-save.js.map +1 -0
  213. package/dist/services/strapi-info-save.mjs +47 -0
  214. package/dist/services/strapi-info-save.mjs.map +1 -0
  215. package/dist/services/token.d.ts.map +1 -0
  216. package/dist/services/token.js +126 -0
  217. package/dist/services/token.js.map +1 -0
  218. package/dist/services/token.mjs +124 -0
  219. package/dist/services/token.mjs.map +1 -0
  220. package/dist/{src/types.d.ts → types.d.ts} +23 -1
  221. package/dist/types.d.ts.map +1 -0
  222. package/dist/utils/analytics.d.ts.map +1 -0
  223. package/dist/utils/analytics.js +12 -0
  224. package/dist/utils/analytics.js.map +1 -0
  225. package/dist/utils/analytics.mjs +10 -0
  226. package/dist/utils/analytics.mjs.map +1 -0
  227. package/dist/utils/compress-files.d.ts.map +1 -0
  228. package/dist/utils/compress-files.js +104 -0
  229. package/dist/utils/compress-files.js.map +1 -0
  230. package/dist/utils/compress-files.mjs +80 -0
  231. package/dist/utils/compress-files.mjs.map +1 -0
  232. package/dist/utils/error-message-factories.d.ts +9 -0
  233. package/dist/utils/error-message-factories.d.ts.map +1 -0
  234. package/dist/utils/error-message-factories.js +25 -0
  235. package/dist/utils/error-message-factories.js.map +1 -0
  236. package/dist/utils/error-message-factories.mjs +22 -0
  237. package/dist/utils/error-message-factories.mjs.map +1 -0
  238. package/dist/utils/get-local-config.d.ts.map +1 -0
  239. package/dist/utils/get-local-config.js +37 -0
  240. package/dist/utils/get-local-config.js.map +1 -0
  241. package/dist/utils/get-local-config.mjs +34 -0
  242. package/dist/utils/get-local-config.mjs.map +1 -0
  243. package/dist/utils/helpers.d.ts.map +1 -0
  244. package/dist/utils/helpers.js +33 -0
  245. package/dist/utils/helpers.js.map +1 -0
  246. package/dist/utils/helpers.mjs +31 -0
  247. package/dist/utils/helpers.mjs.map +1 -0
  248. package/dist/utils/pkg.d.ts.map +1 -0
  249. package/dist/utils/pkg.js +65 -0
  250. package/dist/utils/pkg.js.map +1 -0
  251. package/dist/utils/pkg.mjs +43 -0
  252. package/dist/utils/pkg.mjs.map +1 -0
  253. package/dist/utils/tests/compress-files.test.d.ts.map +1 -0
  254. package/package.json +12 -12
  255. package/dist/src/bin.d.ts.map +0 -1
  256. package/dist/src/cloud/command.d.ts.map +0 -1
  257. package/dist/src/config/api.d.ts.map +0 -1
  258. package/dist/src/config/local.d.ts.map +0 -1
  259. package/dist/src/create-project/action.d.ts +0 -4
  260. package/dist/src/create-project/action.d.ts.map +0 -1
  261. package/dist/src/create-project/command.d.ts.map +0 -1
  262. package/dist/src/create-project/index.d.ts.map +0 -1
  263. package/dist/src/create-project/utils/get-project-name-from-pkg.d.ts.map +0 -1
  264. package/dist/src/create-project/utils/project-questions.utils.d.ts.map +0 -1
  265. package/dist/src/deploy-project/action.d.ts.map +0 -1
  266. package/dist/src/deploy-project/command.d.ts.map +0 -1
  267. package/dist/src/deploy-project/index.d.ts.map +0 -1
  268. package/dist/src/environment/command.d.ts.map +0 -1
  269. package/dist/src/environment/link/action.d.ts.map +0 -1
  270. package/dist/src/environment/link/command.d.ts.map +0 -1
  271. package/dist/src/environment/link/index.d.ts.map +0 -1
  272. package/dist/src/environment/list/action.d.ts.map +0 -1
  273. package/dist/src/environment/list/command.d.ts.map +0 -1
  274. package/dist/src/environment/list/index.d.ts.map +0 -1
  275. package/dist/src/index.d.ts.map +0 -1
  276. package/dist/src/link/action.d.ts.map +0 -1
  277. package/dist/src/link/command.d.ts.map +0 -1
  278. package/dist/src/link/index.d.ts.map +0 -1
  279. package/dist/src/list-projects/action.d.ts.map +0 -1
  280. package/dist/src/list-projects/command.d.ts.map +0 -1
  281. package/dist/src/list-projects/index.d.ts.map +0 -1
  282. package/dist/src/login/action.d.ts +0 -4
  283. package/dist/src/login/action.d.ts.map +0 -1
  284. package/dist/src/login/command.d.ts.map +0 -1
  285. package/dist/src/login/index.d.ts.map +0 -1
  286. package/dist/src/logout/action.d.ts.map +0 -1
  287. package/dist/src/logout/command.d.ts.map +0 -1
  288. package/dist/src/logout/index.d.ts.map +0 -1
  289. package/dist/src/services/build-logs.d.ts.map +0 -1
  290. package/dist/src/services/cli-api.d.ts.map +0 -1
  291. package/dist/src/services/index.d.ts.map +0 -1
  292. package/dist/src/services/logger.d.ts.map +0 -1
  293. package/dist/src/services/notification.d.ts.map +0 -1
  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/get-local-config.d.ts.map +0 -1
  300. package/dist/src/utils/helpers.d.ts.map +0 -1
  301. package/dist/src/utils/pkg.d.ts.map +0 -1
  302. package/dist/src/utils/tests/compress-files.test.d.ts.map +0 -1
  303. /package/dist/{src/bin.d.ts → bin.d.ts} +0 -0
  304. /package/dist/{src/cloud → cloud}/command.d.ts +0 -0
  305. /package/dist/{src/config → config}/api.d.ts +0 -0
  306. /package/dist/{src/create-project → create-project}/command.d.ts +0 -0
  307. /package/dist/{src/create-project → create-project}/index.d.ts +0 -0
  308. /package/dist/{src/create-project → create-project}/utils/get-project-name-from-pkg.d.ts +0 -0
  309. /package/dist/{src/create-project → create-project}/utils/project-questions.utils.d.ts +0 -0
  310. /package/dist/{src/deploy-project → deploy-project}/action.d.ts +0 -0
  311. /package/dist/{src/deploy-project → deploy-project}/command.d.ts +0 -0
  312. /package/dist/{src/deploy-project → deploy-project}/index.d.ts +0 -0
  313. /package/dist/{src/environment → environment}/command.d.ts +0 -0
  314. /package/dist/{src/environment → environment}/link/action.d.ts +0 -0
  315. /package/dist/{src/environment → environment}/link/command.d.ts +0 -0
  316. /package/dist/{src/environment → environment}/link/index.d.ts +0 -0
  317. /package/dist/{src/environment → environment}/list/action.d.ts +0 -0
  318. /package/dist/{src/environment → environment}/list/command.d.ts +0 -0
  319. /package/dist/{src/environment → environment}/list/index.d.ts +0 -0
  320. /package/dist/{src/link → link}/action.d.ts +0 -0
  321. /package/dist/{src/link → link}/command.d.ts +0 -0
  322. /package/dist/{src/link → link}/index.d.ts +0 -0
  323. /package/dist/{src/list-projects → list-projects}/action.d.ts +0 -0
  324. /package/dist/{src/list-projects → list-projects}/command.d.ts +0 -0
  325. /package/dist/{src/list-projects → list-projects}/index.d.ts +0 -0
  326. /package/dist/{src/login → login}/command.d.ts +0 -0
  327. /package/dist/{src/login → login}/index.d.ts +0 -0
  328. /package/dist/{src/logout → logout}/action.d.ts +0 -0
  329. /package/dist/{src/logout → logout}/command.d.ts +0 -0
  330. /package/dist/{src/logout → logout}/index.d.ts +0 -0
  331. /package/dist/{src/services → services}/build-logs.d.ts +0 -0
  332. /package/dist/{src/services → services}/index.d.ts +0 -0
  333. /package/dist/{src/services → services}/logger.d.ts +0 -0
  334. /package/dist/{src/services → services}/strapi-info-save.d.ts +0 -0
  335. /package/dist/{src/services → services}/token.d.ts +0 -0
  336. /package/dist/{src/utils → utils}/analytics.d.ts +0 -0
  337. /package/dist/{src/utils → utils}/compress-files.d.ts +0 -0
  338. /package/dist/{src/utils → utils}/get-local-config.d.ts +0 -0
  339. /package/dist/{src/utils → utils}/helpers.d.ts +0 -0
  340. /package/dist/{src/utils → utils}/pkg.d.ts +0 -0
  341. /package/dist/{src/utils → utils}/tests/compress-files.test.d.ts +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action.mjs","sources":["../../src/link/action.ts"],"sourcesContent":["import inquirer from 'inquirer';\nimport chalk from 'chalk';\n\nimport type { Answers } from 'inquirer';\nimport type { CLIContext } from '../types';\nimport type { CloudApiService } from '../services/cli-api';\n\nimport { LocalSave } from '../services/strapi-info-save';\nimport { cloudApiFactory, tokenServiceFactory, local } from '../services';\nimport { promptLogin } from '../login/action';\nimport { trackEvent } from '../utils/analytics';\nimport { getLocalConfig } from '../utils/get-local-config';\n\nconst QUIT_OPTION = 'Quit';\n\ninterface LinkProjectValue {\n name: string;\n displayName: string;\n}\n\ninterface LinkProjectAnswer extends Answers {\n linkProject: LinkProjectValue;\n}\n\ninterface LinkProjectInput extends Answers {\n linkProject: LinkProjectValue | string;\n}\n\ntype ProjectsList = {\n name: string;\n value: {\n name: string;\n displayName: string;\n };\n}[];\n\ntype Project = {\n name: string;\n displayName: string;\n isMaintainer: boolean;\n};\n\nasync function promptForRelink(\n ctx: CLIContext,\n cloudApiService: CloudApiService,\n existingConfig: LocalSave | null\n) {\n if (existingConfig && existingConfig.project) {\n const { shouldRelink } = await inquirer.prompt([\n {\n type: 'confirm',\n name: 'shouldRelink',\n message: `A project named ${chalk.cyan(\n existingConfig.project.displayName\n ? existingConfig.project.displayName\n : existingConfig.project.name\n )} is already linked to this local folder. Do you want to update the link?`,\n default: false,\n },\n ]);\n\n if (!shouldRelink) {\n await trackEvent(ctx, cloudApiService, 'didNotLinkProject', {\n currentProjectName: existingConfig.project?.name,\n });\n return false;\n }\n }\n\n return true;\n}\n\nasync function getProjectsList(\n ctx: CLIContext,\n cloudApiService: CloudApiService,\n existingConfig: LocalSave | null\n) {\n const spinner = ctx.logger.spinner('Fetching your projects...\\n').start();\n\n try {\n const {\n data: { data: projectList },\n } = await cloudApiService.listLinkProjects();\n spinner.succeed();\n\n if (!Array.isArray(projectList)) {\n ctx.logger.log(\"We couldn't find any projects available for linking in Strapi Cloud.\");\n return null;\n }\n const projects: ProjectsList = (projectList as unknown as Project[])\n .filter(\n (project: Project) =>\n !(project.isMaintainer || project.name === existingConfig?.project?.name)\n )\n .map((project: Project) => {\n return {\n name: project.displayName,\n value: { name: project.name, displayName: project.displayName },\n };\n });\n if (projects.length === 0) {\n ctx.logger.log(\"We couldn't find any projects available for linking in Strapi Cloud.\");\n return null;\n }\n return projects;\n } catch (e) {\n spinner.fail('An error occurred while fetching your projects from Strapi Cloud.');\n ctx.logger.debug('Failed to list projects', e);\n return null;\n }\n}\n\nasync function getUserSelection(\n ctx: CLIContext,\n projects: ProjectsList\n): Promise<LinkProjectAnswer | null> {\n const { logger } = ctx;\n try {\n const answer: LinkProjectInput = await inquirer.prompt([\n {\n type: 'list',\n name: 'linkProject',\n message: 'Which project do you want to link?',\n choices: [...projects, { name: chalk.grey(`(${QUIT_OPTION})`), value: null }],\n },\n ]);\n\n if (!answer.linkProject) {\n return null;\n }\n\n return answer as LinkProjectAnswer;\n } catch (e) {\n logger.debug('Failed to get user input', e);\n logger.error('An error occurred while trying to get your input.');\n return null;\n }\n}\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\n const existingConfig: LocalSave | null = await getLocalConfig(ctx);\n const shouldRelink = await promptForRelink(ctx, cloudApiService, existingConfig);\n\n if (!shouldRelink) {\n return;\n }\n await trackEvent(ctx, cloudApiService, 'willLinkProject', {});\n\n const projects: ProjectsList | null | undefined = await getProjectsList(\n ctx,\n cloudApiService,\n existingConfig\n );\n\n if (!projects) {\n return;\n }\n\n const answer: LinkProjectAnswer | null = await getUserSelection(ctx, projects);\n\n if (!answer) {\n return;\n }\n\n try {\n const { confirmAction } = await inquirer.prompt([\n {\n type: 'confirm',\n name: 'confirmAction',\n message:\n 'Warning: Once linked, deploying from CLI will replace the existing project and its data. Confirm to proceed:',\n default: false,\n },\n ]);\n\n if (!confirmAction) {\n await trackEvent(ctx, cloudApiService, 'didNotLinkProject', {\n cancelledProjectName: answer.linkProject.name,\n currentProjectName: existingConfig ? existingConfig.project?.name : null,\n });\n return;\n }\n\n await local.save({ project: answer.linkProject });\n logger.log(\n ` You have successfully linked your project to ${chalk.cyan(answer.linkProject.displayName)}. You are now able to deploy your project.`\n );\n await trackEvent(ctx, cloudApiService, 'didLinkProject', {\n projectInternalName: answer.linkProject,\n });\n } catch (e) {\n logger.debug('Failed to link project', e);\n logger.error('An error occurred while linking the project.');\n await trackEvent(ctx, cloudApiService, 'didNotLinkProject', {\n projectInternalName: answer.linkProject,\n });\n }\n};\n"],"names":["QUIT_OPTION","promptForRelink","ctx","cloudApiService","existingConfig","project","shouldRelink","inquirer","prompt","type","name","message","chalk","cyan","displayName","default","trackEvent","currentProjectName","getProjectsList","spinner","logger","start","data","projectList","listLinkProjects","succeed","Array","isArray","log","projects","filter","isMaintainer","map","value","length","e","fail","debug","getUserSelection","answer","choices","grey","linkProject","error","getValidToken","tokenServiceFactory","token","promptLogin","cloudApiFactory","getLocalConfig","confirmAction","cancelledProjectName","local","projectInternalName"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/link/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
+ * `$ link local directory to project of the cloud`
8
+ */ const command = ({ command, ctx })=>{
9
+ command.command('cloud:link').alias('link').description('Link a local directory to a Strapi Cloud project').option('-d, --debug', 'Enable debugging mode with verbose logs').option('-s, --silent', "Don't log anything").action(()=>helpers.runAction('link', action)(ctx));
10
+ };
11
+
12
+ module.exports = command;
13
+ //# sourceMappingURL=command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.js","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,iBAAU,CAAA,MAAA,EAAQD,MAAQJ,CAAAA,CAAAA,GAAAA,CAAAA,CAAAA;AAC5C;;;;"}
@@ -0,0 +1,11 @@
1
+ import { runAction } from '../utils/helpers.mjs';
2
+ import action from './action.mjs';
3
+
4
+ /**
5
+ * `$ link local directory to project of the cloud`
6
+ */ const command = ({ command, ctx })=>{
7
+ command.command('cloud:link').alias('link').description('Link a local directory to a Strapi Cloud project').option('-d, --debug', 'Enable debugging mode with verbose logs').option('-s, --silent', "Don't log anything").action(()=>runAction('link', 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/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;AAO3D,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,CAgLlB"}
@@ -0,0 +1,199 @@
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
+ var context = require('../services/context.js');
19
+
20
+ const openModule = import('open');
21
+ async function promptLogin(ctx) {
22
+ const response = await inquirer.prompt([
23
+ {
24
+ type: 'confirm',
25
+ name: 'login',
26
+ message: 'Would you like to login?'
27
+ }
28
+ ]);
29
+ if (response.login) {
30
+ const loginSuccessful = await loginAction(ctx);
31
+ return loginSuccessful;
32
+ }
33
+ return false;
34
+ }
35
+ async function loginAction(ctx, { showDashboardLink = true } = {}) {
36
+ const { logger, promptExperiment } = ctx;
37
+ const tokenService = await token.tokenServiceFactory(ctx);
38
+ const existingToken = await tokenService.retrieveToken();
39
+ const cloudApiService = await cliApi.cloudApiFactory(ctx, existingToken || undefined);
40
+ if (existingToken) {
41
+ const isTokenValid = await tokenService.isTokenValid(existingToken);
42
+ if (isTokenValid) {
43
+ try {
44
+ const userInfo = await cloudApiService.getUserInfo();
45
+ const { email } = userInfo.data.data;
46
+ context.setContext({
47
+ ...ctx,
48
+ user: userInfo.data.data
49
+ });
50
+ if (email) {
51
+ logger.log(`You are already logged into your account (${email}).`);
52
+ } else {
53
+ logger.log('You are already logged in.');
54
+ }
55
+ if (showDashboardLink) {
56
+ logger.log('To access your dashboard, please copy and paste the following URL into your web browser:');
57
+ logger.log(chalk.underline(`${api.apiConfig.dashboardBaseUrl}/projects`));
58
+ }
59
+ return true;
60
+ } catch (e) {
61
+ logger.debug('Failed to fetch user info', e);
62
+ }
63
+ }
64
+ }
65
+ let cliConfig;
66
+ try {
67
+ logger.info('🔌 Connecting...');
68
+ const config = await cloudApiService.config();
69
+ cliConfig = config.data;
70
+ } catch (e) {
71
+ logger.error('🥲 Oops! Something went wrong while logging you in. Please try again.');
72
+ logger.debug(e);
73
+ return false;
74
+ }
75
+ await analytics.trackEvent(ctx, cloudApiService, 'willLoginAttempt', {
76
+ ...promptExperiment && {
77
+ promptExperiment
78
+ }
79
+ });
80
+ logger.debug('🔐 Creating device authentication request...', {
81
+ client_id: cliConfig.clientId,
82
+ scope: cliConfig.scope,
83
+ audience: cliConfig.audience
84
+ });
85
+ const deviceAuthResponse = await axios.post(cliConfig.deviceCodeAuthUrl, {
86
+ client_id: cliConfig.clientId,
87
+ scope: cliConfig.scope,
88
+ audience: cliConfig.audience
89
+ }).catch((e)=>{
90
+ logger.error('There was an issue with the authentication process. Please try again.');
91
+ if (e.message) {
92
+ logger.debug(e.message, e);
93
+ } else {
94
+ logger.debug(e);
95
+ }
96
+ });
97
+ openModule.then((open)=>{
98
+ open.default(deviceAuthResponse.data.verification_uri_complete).catch((e)=>{
99
+ logger.error('We encountered an issue opening the browser. Please try again later.');
100
+ logger.debug(e.message, e);
101
+ });
102
+ });
103
+ logger.log('If a browser tab does not open automatically, please follow the next steps:');
104
+ logger.log(`1. Open this url in your device: ${deviceAuthResponse.data.verification_uri_complete}`);
105
+ logger.log(`2. Enter the following code: ${deviceAuthResponse.data.user_code} and confirm to login.\n`);
106
+ const tokenPayload = {
107
+ grant_type: 'urn:ietf:params:oauth:grant-type:device_code',
108
+ device_code: deviceAuthResponse.data.device_code,
109
+ client_id: cliConfig.clientId
110
+ };
111
+ let isAuthenticated = false;
112
+ const authenticate = async ()=>{
113
+ const spinner = logger.spinner('Waiting for authentication');
114
+ spinner.start();
115
+ const spinnerFail = ()=>spinner.fail('Authentication failed!');
116
+ while(!isAuthenticated){
117
+ try {
118
+ const tokenResponse = await axios.post(cliConfig.tokenUrl, tokenPayload);
119
+ const authTokenData = tokenResponse.data;
120
+ if (tokenResponse.status === 200) {
121
+ // Token validation
122
+ try {
123
+ logger.debug('🔐 Validating token...');
124
+ await tokenService.validateToken(authTokenData.id_token, cliConfig.jwksUrl);
125
+ logger.debug('🔐 Token validation successful!');
126
+ } catch (e) {
127
+ logger.debug(e);
128
+ spinnerFail();
129
+ throw new Error('Unable to proceed: Token validation failed');
130
+ }
131
+ logger.debug('🔍 Fetching user information...');
132
+ const cloudApiServiceWithToken = await cliApi.cloudApiFactory(ctx, authTokenData.access_token);
133
+ // Call to get user info to create the user in DB if not exists
134
+ await cloudApiServiceWithToken.getUserInfo();
135
+ logger.debug('🔍 User information fetched successfully!');
136
+ try {
137
+ logger.debug('📝 Saving login information...');
138
+ await tokenService.saveToken(authTokenData.access_token);
139
+ logger.debug('📝 Login information saved successfully!');
140
+ isAuthenticated = true;
141
+ } catch (e) {
142
+ logger.error('There was a problem saving your login information. Please try logging in again.');
143
+ logger.debug(e);
144
+ spinnerFail();
145
+ return false;
146
+ }
147
+ }
148
+ } catch (e) {
149
+ if (e.message === 'Unable to proceed: Token validation failed') {
150
+ logger.error('There seems to be a problem with your login information. Please try logging in again.');
151
+ spinnerFail();
152
+ await analytics.trackEvent(ctx, cloudApiService, 'didNotLogin', {
153
+ loginMethod: 'cli',
154
+ ...promptExperiment && {
155
+ promptExperiment
156
+ }
157
+ });
158
+ return false;
159
+ }
160
+ if (e.response?.data.error && ![
161
+ 'authorization_pending',
162
+ 'slow_down'
163
+ ].includes(e.response.data.error)) {
164
+ logger.debug(e);
165
+ spinnerFail();
166
+ await analytics.trackEvent(ctx, cloudApiService, 'didNotLogin', {
167
+ loginMethod: 'cli',
168
+ ...promptExperiment && {
169
+ promptExperiment
170
+ }
171
+ });
172
+ return false;
173
+ }
174
+ // Await interval before retrying
175
+ await new Promise((resolve)=>{
176
+ setTimeout(resolve, deviceAuthResponse.data.interval * 1000);
177
+ });
178
+ }
179
+ }
180
+ spinner.succeed('Authentication successful!');
181
+ if (showDashboardLink) {
182
+ logger.log('You are now logged into Strapi Cloud.');
183
+ logger.log('To access your dashboard, please copy and paste the following URL into your web browser:');
184
+ logger.log(chalk.underline(`${api.apiConfig.dashboardBaseUrl}/projects`));
185
+ }
186
+ await analytics.trackEvent(ctx, cloudApiService, 'didLogin', {
187
+ loginMethod: 'cli',
188
+ ...promptExperiment && {
189
+ promptExperiment
190
+ }
191
+ });
192
+ };
193
+ await authenticate();
194
+ return isAuthenticated;
195
+ }
196
+
197
+ exports.default = loginAction;
198
+ exports.promptLogin = promptLogin;
199
+ //# 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';\nimport { setContext } from '../services/context';\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 setContext({ ...ctx, user: userInfo.data.data });\n if (email) {\n logger.log(`You are already logged into your account (${email}).`);\n } else {\n logger.log('You are already logged in.');\n }\n if (showDashboardLink) {\n logger.log(\n 'To access your dashboard, please copy and paste the following URL into your web browser:'\n );\n logger.log(chalk.underline(`${apiConfig.dashboardBaseUrl}/projects`));\n }\n return true;\n } catch (e) {\n logger.debug('Failed to fetch user info', e);\n }\n }\n }\n\n let cliConfig: CloudCliConfig;\n try {\n logger.info('🔌 Connecting...');\n const config = await cloudApiService.config();\n cliConfig = config.data;\n } catch (e: unknown) {\n logger.error('🥲 Oops! Something went wrong while logging you in. Please try again.');\n logger.debug(e);\n return false;\n }\n await trackEvent(ctx, cloudApiService, 'willLoginAttempt', {\n ...(promptExperiment && { promptExperiment }),\n });\n\n logger.debug('🔐 Creating device authentication request...', {\n client_id: cliConfig.clientId,\n scope: cliConfig.scope,\n audience: cliConfig.audience,\n });\n const deviceAuthResponse = (await axios\n .post(cliConfig.deviceCodeAuthUrl, {\n client_id: cliConfig.clientId,\n scope: cliConfig.scope,\n audience: cliConfig.audience,\n })\n .catch((e: AxiosError) => {\n logger.error('There was an issue with the authentication process. Please try again.');\n if (e.message) {\n logger.debug(e.message, e);\n } else {\n logger.debug(e);\n }\n })) as AxiosResponse;\n\n openModule.then((open) => {\n open.default(deviceAuthResponse.data.verification_uri_complete).catch((e: Error) => {\n logger.error('We encountered an issue opening the browser. Please try again later.');\n logger.debug(e.message, e);\n });\n });\n\n logger.log('If a browser tab does not open automatically, please follow the next steps:');\n logger.log(\n `1. Open this url in your device: ${deviceAuthResponse.data.verification_uri_complete}`\n );\n logger.log(\n `2. Enter the following code: ${deviceAuthResponse.data.user_code} and confirm to login.\\n`\n );\n\n const tokenPayload = {\n grant_type: 'urn:ietf:params:oauth:grant-type:device_code',\n device_code: deviceAuthResponse.data.device_code,\n client_id: cliConfig.clientId,\n };\n\n let isAuthenticated = false;\n\n const authenticate = async () => {\n const spinner = logger.spinner('Waiting for authentication');\n spinner.start();\n const spinnerFail = () => spinner.fail('Authentication failed!');\n\n while (!isAuthenticated) {\n try {\n const tokenResponse = await axios.post(cliConfig.tokenUrl, tokenPayload);\n const authTokenData = tokenResponse.data;\n\n if (tokenResponse.status === 200) {\n // Token validation\n try {\n logger.debug('🔐 Validating token...');\n await tokenService.validateToken(authTokenData.id_token, cliConfig.jwksUrl);\n logger.debug('🔐 Token validation successful!');\n } catch (e: any) {\n logger.debug(e);\n spinnerFail();\n throw new Error('Unable to proceed: Token validation failed');\n }\n\n logger.debug('🔍 Fetching user information...');\n const cloudApiServiceWithToken = await cloudApiFactory(ctx, authTokenData.access_token);\n // Call to get user info to create the user in DB if not exists\n await cloudApiServiceWithToken.getUserInfo();\n logger.debug('🔍 User information fetched successfully!');\n\n try {\n logger.debug('📝 Saving login information...');\n await tokenService.saveToken(authTokenData.access_token);\n logger.debug('📝 Login information saved successfully!');\n isAuthenticated = true;\n } catch (e) {\n logger.error(\n 'There was a problem saving your login information. Please try logging in again.'\n );\n logger.debug(e);\n spinnerFail();\n return false;\n }\n }\n } catch (e: any) {\n if (e.message === 'Unable to proceed: Token validation failed') {\n logger.error(\n 'There seems to be a problem with your login information. Please try logging in again.'\n );\n spinnerFail();\n await trackEvent(ctx, cloudApiService, 'didNotLogin', {\n loginMethod: 'cli',\n ...(promptExperiment && { promptExperiment }),\n });\n return false;\n }\n if (\n e.response?.data.error &&\n !['authorization_pending', 'slow_down'].includes(e!.response.data.error)\n ) {\n logger.debug(e);\n spinnerFail();\n await trackEvent(ctx, cloudApiService, 'didNotLogin', {\n loginMethod: 'cli',\n ...(promptExperiment && { promptExperiment }),\n });\n return false;\n }\n // Await interval before retrying\n await new Promise((resolve) => {\n setTimeout(resolve, deviceAuthResponse.data.interval * 1000);\n });\n }\n }\n spinner.succeed('Authentication successful!');\n if (showDashboardLink) {\n logger.log('You are now logged into Strapi Cloud.');\n logger.log(\n 'To access your dashboard, please copy and paste the following URL into your web browser:'\n );\n logger.log(chalk.underline(`${apiConfig.dashboardBaseUrl}/projects`));\n }\n await trackEvent(ctx, cloudApiService, 'didLogin', {\n loginMethod: 'cli',\n ...(promptExperiment && { promptExperiment }),\n });\n };\n\n await authenticate();\n return isAuthenticated;\n}\n"],"names":["openModule","promptLogin","ctx","response","inquirer","prompt","type","name","message","login","loginSuccessful","loginAction","showDashboardLink","logger","promptExperiment","tokenService","tokenServiceFactory","existingToken","retrieveToken","cloudApiService","cloudApiFactory","undefined","isTokenValid","userInfo","getUserInfo","email","data","setContext","user","log","chalk","underline","apiConfig","dashboardBaseUrl","e","debug","cliConfig","info","config","error","trackEvent","client_id","clientId","scope","audience","deviceAuthResponse","axios","post","deviceCodeAuthUrl","catch","then","open","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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"}