@webiny/cli-core 0.0.0-unstable.61c048f412

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 (369) hide show
  1. package/Cli.d.ts +7 -0
  2. package/Cli.js +16 -0
  3. package/Cli.js.map +1 -0
  4. package/LICENSE +21 -0
  5. package/README.md +11 -0
  6. package/abstractions/createAbstraction.d.ts +2 -0
  7. package/abstractions/createAbstraction.js +6 -0
  8. package/abstractions/createAbstraction.js.map +1 -0
  9. package/abstractions/features/CliCommand.d.ts +37 -0
  10. package/abstractions/features/CliCommand.js +4 -0
  11. package/abstractions/features/CliCommand.js.map +1 -0
  12. package/abstractions/features/ErrorHandler.d.ts +15 -0
  13. package/abstractions/features/ErrorHandler.js +4 -0
  14. package/abstractions/features/ErrorHandler.js.map +1 -0
  15. package/abstractions/features/GlobalCliOption.d.ts +20 -0
  16. package/abstractions/features/GlobalCliOption.js +4 -0
  17. package/abstractions/features/GlobalCliOption.js.map +1 -0
  18. package/abstractions/features/IsCi.d.ts +8 -0
  19. package/abstractions/features/IsCi.js +4 -0
  20. package/abstractions/features/IsCi.js.map +1 -0
  21. package/abstractions/features/index.d.ts +4 -0
  22. package/abstractions/features/index.js +6 -0
  23. package/abstractions/features/index.js.map +1 -0
  24. package/abstractions/features/types.d.ts +8 -0
  25. package/abstractions/features/types.js +3 -0
  26. package/abstractions/features/types.js.map +1 -0
  27. package/abstractions/index.d.ts +2 -0
  28. package/abstractions/index.js +4 -0
  29. package/abstractions/index.js.map +1 -0
  30. package/abstractions/services/ArgvParserService.d.ts +7 -0
  31. package/abstractions/services/ArgvParserService.js +4 -0
  32. package/abstractions/services/ArgvParserService.js.map +1 -0
  33. package/abstractions/services/CliParamsService.d.ts +15 -0
  34. package/abstractions/services/CliParamsService.js +4 -0
  35. package/abstractions/services/CliParamsService.js.map +1 -0
  36. package/abstractions/services/CommandsRegistryService.d.ts +8 -0
  37. package/abstractions/services/CommandsRegistryService.js +4 -0
  38. package/abstractions/services/CommandsRegistryService.js.map +1 -0
  39. package/abstractions/services/GetArgvService.d.ts +7 -0
  40. package/abstractions/services/GetArgvService.js +4 -0
  41. package/abstractions/services/GetArgvService.js.map +1 -0
  42. package/abstractions/services/GetCliRunnerService.d.ts +7 -0
  43. package/abstractions/services/GetCliRunnerService.js +4 -0
  44. package/abstractions/services/GetCliRunnerService.js.map +1 -0
  45. package/abstractions/services/GetIsCiService.d.ts +8 -0
  46. package/abstractions/services/GetIsCiService.js +4 -0
  47. package/abstractions/services/GetIsCiService.js.map +1 -0
  48. package/abstractions/services/GetProjectSdkService.d.ts +8 -0
  49. package/abstractions/services/GetProjectSdkService.js +4 -0
  50. package/abstractions/services/GetProjectSdkService.js.map +1 -0
  51. package/abstractions/services/GlobalOptionsRegistryService.d.ts +8 -0
  52. package/abstractions/services/GlobalOptionsRegistryService.js +4 -0
  53. package/abstractions/services/GlobalOptionsRegistryService.js.map +1 -0
  54. package/abstractions/services/LoggerService.d.ts +13 -0
  55. package/abstractions/services/LoggerService.js +4 -0
  56. package/abstractions/services/LoggerService.js.map +1 -0
  57. package/abstractions/services/RunCliRunnerService.d.ts +7 -0
  58. package/abstractions/services/RunCliRunnerService.js +4 -0
  59. package/abstractions/services/RunCliRunnerService.js.map +1 -0
  60. package/abstractions/services/StdioService.d.ts +9 -0
  61. package/abstractions/services/StdioService.js +4 -0
  62. package/abstractions/services/StdioService.js.map +1 -0
  63. package/abstractions/services/UiService.d.ts +15 -0
  64. package/abstractions/services/UiService.js +4 -0
  65. package/abstractions/services/UiService.js.map +1 -0
  66. package/abstractions/services/index.d.ts +12 -0
  67. package/abstractions/services/index.js +14 -0
  68. package/abstractions/services/index.js.map +1 -0
  69. package/createCliContainer.d.ts +3 -0
  70. package/createCliContainer.js +128 -0
  71. package/createCliContainer.js.map +1 -0
  72. package/decorators/CommandsWithGracefulErrorHandling.d.ts +10 -0
  73. package/decorators/CommandsWithGracefulErrorHandling.js +38 -0
  74. package/decorators/CommandsWithGracefulErrorHandling.js.map +1 -0
  75. package/decorators/DeployCommandWithTelemetry.d.ts +11 -0
  76. package/decorators/DeployCommandWithTelemetry.js +91 -0
  77. package/decorators/DeployCommandWithTelemetry.js.map +1 -0
  78. package/decorators/index.d.ts +2 -0
  79. package/decorators/index.js +4 -0
  80. package/decorators/index.js.map +1 -0
  81. package/exports/cli/command.d.ts +1 -0
  82. package/exports/cli/command.js +3 -0
  83. package/exports/cli/command.js.map +1 -0
  84. package/exports/cli/index.d.ts +2 -0
  85. package/exports/cli/index.js +4 -0
  86. package/exports/cli/index.js.map +1 -0
  87. package/extensions/CliCommand.d.ts +8 -0
  88. package/extensions/CliCommand.js +23 -0
  89. package/extensions/CliCommand.js.map +1 -0
  90. package/extensions/CliCommandDecorator.d.ts +8 -0
  91. package/extensions/CliCommandDecorator.js +23 -0
  92. package/extensions/CliCommandDecorator.js.map +1 -0
  93. package/extensions/index.d.ts +9 -0
  94. package/extensions/index.js +6 -0
  95. package/extensions/index.js.map +1 -0
  96. package/features/AboutCommand.d.ts +12 -0
  97. package/features/AboutCommand.js +94 -0
  98. package/features/AboutCommand.js.map +1 -0
  99. package/features/BuildCommand/BuildCommand.d.ts +11 -0
  100. package/features/BuildCommand/BuildCommand.js +44 -0
  101. package/features/BuildCommand/BuildCommand.js.map +1 -0
  102. package/features/BuildCommand/buildRunners/BaseBuildRunner.d.ts +14 -0
  103. package/features/BuildCommand/buildRunners/BaseBuildRunner.js +16 -0
  104. package/features/BuildCommand/buildRunners/BaseBuildRunner.js.map +1 -0
  105. package/features/BuildCommand/buildRunners/BuildRunner.d.ts +6 -0
  106. package/features/BuildCommand/buildRunners/BuildRunner.js +30 -0
  107. package/features/BuildCommand/buildRunners/BuildRunner.js.map +1 -0
  108. package/features/BuildCommand/buildRunners/MultipleBuildsRunner.d.ts +4 -0
  109. package/features/BuildCommand/buildRunners/MultipleBuildsRunner.js +25 -0
  110. package/features/BuildCommand/buildRunners/MultipleBuildsRunner.js.map +1 -0
  111. package/features/BuildCommand/buildRunners/SingleBuildRunner.d.ts +4 -0
  112. package/features/BuildCommand/buildRunners/SingleBuildRunner.js +19 -0
  113. package/features/BuildCommand/buildRunners/SingleBuildRunner.js.map +1 -0
  114. package/features/BuildCommand/buildRunners/ZeroBuildsRunner.d.ts +4 -0
  115. package/features/BuildCommand/buildRunners/ZeroBuildsRunner.js +8 -0
  116. package/features/BuildCommand/buildRunners/ZeroBuildsRunner.js.map +1 -0
  117. package/features/BuildCommand/index.d.ts +1 -0
  118. package/features/BuildCommand/index.js +3 -0
  119. package/features/BuildCommand/index.js.map +1 -0
  120. package/features/ConfigCommand.d.ts +16 -0
  121. package/features/ConfigCommand.js +64 -0
  122. package/features/ConfigCommand.js.map +1 -0
  123. package/features/DeployCommand/DeployCommand.d.ts +30 -0
  124. package/features/DeployCommand/DeployCommand.js +168 -0
  125. package/features/DeployCommand/DeployCommand.js.map +1 -0
  126. package/features/DeployCommand/deployOutputs/BaseDeployOutput.d.ts +20 -0
  127. package/features/DeployCommand/deployOutputs/BaseDeployOutput.js +20 -0
  128. package/features/DeployCommand/deployOutputs/BaseDeployOutput.js.map +1 -0
  129. package/features/DeployCommand/deployOutputs/DeployOutput.d.ts +5 -0
  130. package/features/DeployCommand/deployOutputs/DeployOutput.js +24 -0
  131. package/features/DeployCommand/deployOutputs/DeployOutput.js.map +1 -0
  132. package/features/DeployCommand/deployOutputs/NoDeploymentLogsDeployOutput.d.ts +4 -0
  133. package/features/DeployCommand/deployOutputs/NoDeploymentLogsDeployOutput.js +61 -0
  134. package/features/DeployCommand/deployOutputs/NoDeploymentLogsDeployOutput.js.map +1 -0
  135. package/features/DeployCommand/deployOutputs/WithDeploymentLogsDeployOutput.d.ts +4 -0
  136. package/features/DeployCommand/deployOutputs/WithDeploymentLogsDeployOutput.js +44 -0
  137. package/features/DeployCommand/deployOutputs/WithDeploymentLogsDeployOutput.js.map +1 -0
  138. package/features/DeployCommand/index.d.ts +1 -0
  139. package/features/DeployCommand/index.js +3 -0
  140. package/features/DeployCommand/index.js.map +1 -0
  141. package/features/DepsSync/BuildDependencyTree.d.ts +9 -0
  142. package/features/DepsSync/BuildDependencyTree.js +27 -0
  143. package/features/DepsSync/BuildDependencyTree.js.map +1 -0
  144. package/features/DepsSync/DependencyTree.d.ts +12 -0
  145. package/features/DepsSync/DependencyTree.js +131 -0
  146. package/features/DepsSync/DependencyTree.js.map +1 -0
  147. package/features/DepsSync/ListAllPackageJsonFiles.d.ts +7 -0
  148. package/features/DepsSync/ListAllPackageJsonFiles.js +18 -0
  149. package/features/DepsSync/ListAllPackageJsonFiles.js.map +1 -0
  150. package/features/DepsSync/ListAllPackages.d.ts +3 -0
  151. package/features/DepsSync/ListAllPackages.js +13 -0
  152. package/features/DepsSync/ListAllPackages.js.map +1 -0
  153. package/features/DepsSync/commands/SyncDepsCommand.d.ts +13 -0
  154. package/features/DepsSync/commands/SyncDepsCommand.js +32 -0
  155. package/features/DepsSync/commands/SyncDepsCommand.js.map +1 -0
  156. package/features/DepsSync/commands/VerifyDepsCommand.d.ts +13 -0
  157. package/features/DepsSync/commands/VerifyDepsCommand.js +81 -0
  158. package/features/DepsSync/commands/VerifyDepsCommand.js.map +1 -0
  159. package/features/DepsSync/createDependencyTree.d.ts +3 -0
  160. package/features/DepsSync/createDependencyTree.js +24 -0
  161. package/features/DepsSync/createDependencyTree.js.map +1 -0
  162. package/features/DepsSync/createReferenceFile.d.ts +7 -0
  163. package/features/DepsSync/createReferenceFile.js +30 -0
  164. package/features/DepsSync/createReferenceFile.js.map +1 -0
  165. package/features/DepsSync/index.d.ts +2 -0
  166. package/features/DepsSync/index.js +4 -0
  167. package/features/DepsSync/index.js.map +1 -0
  168. package/features/DepsSync/paths.d.ts +3 -0
  169. package/features/DepsSync/paths.js +8 -0
  170. package/features/DepsSync/paths.js.map +1 -0
  171. package/features/DepsSync/types.d.ts +45 -0
  172. package/features/DepsSync/types.js +9 -0
  173. package/features/DepsSync/types.js.map +1 -0
  174. package/features/DestroyCommand/DestroyCommand.d.ts +22 -0
  175. package/features/DestroyCommand/DestroyCommand.js +78 -0
  176. package/features/DestroyCommand/DestroyCommand.js.map +1 -0
  177. package/features/DestroyCommand/index.d.ts +1 -0
  178. package/features/DestroyCommand/index.js +3 -0
  179. package/features/DestroyCommand/index.js.map +1 -0
  180. package/features/DisableTelemetryCommand.d.ts +11 -0
  181. package/features/DisableTelemetryCommand.js +31 -0
  182. package/features/DisableTelemetryCommand.js.map +1 -0
  183. package/features/EnableTelemetryCommand.d.ts +11 -0
  184. package/features/EnableTelemetryCommand.js +31 -0
  185. package/features/EnableTelemetryCommand.js.map +1 -0
  186. package/features/ExtensionCommand/ExtensionCommand.d.ts +12 -0
  187. package/features/ExtensionCommand/ExtensionCommand.js +71 -0
  188. package/features/ExtensionCommand/ExtensionCommand.js.map +1 -0
  189. package/features/ExtensionCommand/index.d.ts +1 -0
  190. package/features/ExtensionCommand/index.js +3 -0
  191. package/features/ExtensionCommand/index.js.map +1 -0
  192. package/features/InfoCommand/InfoCommand.d.ts +10 -0
  193. package/features/InfoCommand/InfoCommand.js +64 -0
  194. package/features/InfoCommand/InfoCommand.js.map +1 -0
  195. package/features/InfoCommand/PrintInfoForEnv.d.ts +14 -0
  196. package/features/InfoCommand/PrintInfoForEnv.js +48 -0
  197. package/features/InfoCommand/PrintInfoForEnv.js.map +1 -0
  198. package/features/InfoCommand/index.d.ts +1 -0
  199. package/features/InfoCommand/index.js +3 -0
  200. package/features/InfoCommand/index.js.map +1 -0
  201. package/features/IsCi/IsCi.d.ts +7 -0
  202. package/features/IsCi/IsCi.js +17 -0
  203. package/features/IsCi/IsCi.js.map +1 -0
  204. package/features/IsCi/index.d.ts +1 -0
  205. package/features/IsCi/index.js +3 -0
  206. package/features/IsCi/index.js.map +1 -0
  207. package/features/OpenCommand.d.ts +10 -0
  208. package/features/OpenCommand.js +54 -0
  209. package/features/OpenCommand.js.map +1 -0
  210. package/features/OutputCommand.d.ts +12 -0
  211. package/features/OutputCommand.js +79 -0
  212. package/features/OutputCommand.js.map +1 -0
  213. package/features/PulumiCommand/PulumiCommand.d.ts +13 -0
  214. package/features/PulumiCommand/PulumiCommand.js +50 -0
  215. package/features/PulumiCommand/PulumiCommand.js.map +1 -0
  216. package/features/PulumiCommand/index.d.ts +1 -0
  217. package/features/PulumiCommand/index.js +3 -0
  218. package/features/PulumiCommand/index.js.map +1 -0
  219. package/features/RefreshCommand/RefreshCommand.d.ts +12 -0
  220. package/features/RefreshCommand/RefreshCommand.js +45 -0
  221. package/features/RefreshCommand/RefreshCommand.js.map +1 -0
  222. package/features/RefreshCommand/index.d.ts +1 -0
  223. package/features/RefreshCommand/index.js +3 -0
  224. package/features/RefreshCommand/index.js.map +1 -0
  225. package/features/WatchCommand/WatchCommand.d.ts +11 -0
  226. package/features/WatchCommand/WatchCommand.js +143 -0
  227. package/features/WatchCommand/WatchCommand.js.map +1 -0
  228. package/features/WatchCommand/createPrefixer.d.ts +2 -0
  229. package/features/WatchCommand/createPrefixer.js +20 -0
  230. package/features/WatchCommand/createPrefixer.js.map +1 -0
  231. package/features/WatchCommand/getRandomColorForString.d.ts +1 -0
  232. package/features/WatchCommand/getRandomColorForString.js +11 -0
  233. package/features/WatchCommand/getRandomColorForString.js.map +1 -0
  234. package/features/WatchCommand/index.d.ts +1 -0
  235. package/features/WatchCommand/index.js +3 -0
  236. package/features/WatchCommand/index.js.map +1 -0
  237. package/features/Wcp/LinkProjectCommand.d.ts +13 -0
  238. package/features/Wcp/LinkProjectCommand.js +146 -0
  239. package/features/Wcp/LinkProjectCommand.js.map +1 -0
  240. package/features/Wcp/LoginCommand.d.ts +13 -0
  241. package/features/Wcp/LoginCommand.js +126 -0
  242. package/features/Wcp/LoginCommand.js.map +1 -0
  243. package/features/Wcp/LogoutCommand.d.ts +13 -0
  244. package/features/Wcp/LogoutCommand.js +29 -0
  245. package/features/Wcp/LogoutCommand.js.map +1 -0
  246. package/features/Wcp/WhoAmICommand.d.ts +15 -0
  247. package/features/Wcp/WhoAmICommand.js +34 -0
  248. package/features/Wcp/WhoAmICommand.js.map +1 -0
  249. package/features/common/index.d.ts +1 -0
  250. package/features/common/index.js +3 -0
  251. package/features/common/index.js.map +1 -0
  252. package/features/common/options.d.ts +20 -0
  253. package/features/common/options.js +52 -0
  254. package/features/common/options.js.map +1 -0
  255. package/features/globalOptions/LogLevelGlobalOption.d.ts +5 -0
  256. package/features/globalOptions/LogLevelGlobalOption.js +22 -0
  257. package/features/globalOptions/LogLevelGlobalOption.js.map +1 -0
  258. package/features/globalOptions/ShowLogsGlobalOption.d.ts +5 -0
  259. package/features/globalOptions/ShowLogsGlobalOption.js +21 -0
  260. package/features/globalOptions/ShowLogsGlobalOption.js.map +1 -0
  261. package/features/globalOptions/StackTraceGlobalOption.d.ts +5 -0
  262. package/features/globalOptions/StackTraceGlobalOption.js +21 -0
  263. package/features/globalOptions/StackTraceGlobalOption.js.map +1 -0
  264. package/features/globalOptions/index.d.ts +3 -0
  265. package/features/globalOptions/index.js +5 -0
  266. package/features/globalOptions/index.js.map +1 -0
  267. package/features/gracefulErrorHandlers/DdbPutItemConditionalCheckFailedGracefulErrorHandler.d.ts +6 -0
  268. package/features/gracefulErrorHandlers/DdbPutItemConditionalCheckFailedGracefulErrorHandler.js +26 -0
  269. package/features/gracefulErrorHandlers/DdbPutItemConditionalCheckFailedGracefulErrorHandler.js.map +1 -0
  270. package/features/gracefulErrorHandlers/MissingFilesInBuildGracefulErrorHandler.d.ts +6 -0
  271. package/features/gracefulErrorHandlers/MissingFilesInBuildGracefulErrorHandler.js +27 -0
  272. package/features/gracefulErrorHandlers/MissingFilesInBuildGracefulErrorHandler.js.map +1 -0
  273. package/features/gracefulErrorHandlers/PendingOperationsGracefulErrorHandler.d.ts +6 -0
  274. package/features/gracefulErrorHandlers/PendingOperationsGracefulErrorHandler.js +29 -0
  275. package/features/gracefulErrorHandlers/PendingOperationsGracefulErrorHandler.js.map +1 -0
  276. package/features/gracefulErrorHandlers/index.d.ts +3 -0
  277. package/features/gracefulErrorHandlers/index.js +5 -0
  278. package/features/gracefulErrorHandlers/index.js.map +1 -0
  279. package/features/index.d.ts +22 -0
  280. package/features/index.js +24 -0
  281. package/features/index.js.map +1 -0
  282. package/features/utils/index.d.ts +1 -0
  283. package/features/utils/index.js +3 -0
  284. package/features/utils/index.js.map +1 -0
  285. package/features/utils/measureDuration.d.ts +1 -0
  286. package/features/utils/measureDuration.js +11 -0
  287. package/features/utils/measureDuration.js.map +1 -0
  288. package/index.d.ts +1 -0
  289. package/index.js +3 -0
  290. package/index.js.map +1 -0
  291. package/package.json +48 -0
  292. package/services/ArgvParserService/ArgvParserService.d.ts +7 -0
  293. package/services/ArgvParserService/ArgvParserService.js +41 -0
  294. package/services/ArgvParserService/ArgvParserService.js.map +1 -0
  295. package/services/ArgvParserService/index.d.ts +1 -0
  296. package/services/ArgvParserService/index.js +3 -0
  297. package/services/ArgvParserService/index.js.map +1 -0
  298. package/services/CliParamsService/CliParamsService.d.ts +7 -0
  299. package/services/CliParamsService/CliParamsService.js +21 -0
  300. package/services/CliParamsService/CliParamsService.js.map +1 -0
  301. package/services/CliParamsService/index.d.ts +1 -0
  302. package/services/CliParamsService/index.js +3 -0
  303. package/services/CliParamsService/index.js.map +1 -0
  304. package/services/CommandsRegistryService/CommandsRegistryService.d.ts +7 -0
  305. package/services/CommandsRegistryService/CommandsRegistryService.js +19 -0
  306. package/services/CommandsRegistryService/CommandsRegistryService.js.map +1 -0
  307. package/services/CommandsRegistryService/index.d.ts +1 -0
  308. package/services/CommandsRegistryService/index.js +3 -0
  309. package/services/CommandsRegistryService/index.js.map +1 -0
  310. package/services/GetArgvService/GetArgvService.d.ts +7 -0
  311. package/services/GetArgvService/GetArgvService.js +17 -0
  312. package/services/GetArgvService/GetArgvService.js.map +1 -0
  313. package/services/GetArgvService/index.d.ts +1 -0
  314. package/services/GetArgvService/index.js +3 -0
  315. package/services/GetArgvService/index.js.map +1 -0
  316. package/services/GetCliRunnerService/GetCliRunnerService.d.ts +13 -0
  317. package/services/GetCliRunnerService/GetCliRunnerService.js +160 -0
  318. package/services/GetCliRunnerService/GetCliRunnerService.js.map +1 -0
  319. package/services/GetCliRunnerService/index.d.ts +1 -0
  320. package/services/GetCliRunnerService/index.js +3 -0
  321. package/services/GetCliRunnerService/index.js.map +1 -0
  322. package/services/GetIsCiService/GetIsCiService.d.ts +5 -0
  323. package/services/GetIsCiService/GetIsCiService.js +15 -0
  324. package/services/GetIsCiService/GetIsCiService.js.map +1 -0
  325. package/services/GetIsCiService/index.d.ts +1 -0
  326. package/services/GetIsCiService/index.js +3 -0
  327. package/services/GetIsCiService/index.js.map +1 -0
  328. package/services/GetProjectSdkService/GetProjectSdkService.d.ts +9 -0
  329. package/services/GetProjectSdkService/GetProjectSdkService.js +31 -0
  330. package/services/GetProjectSdkService/GetProjectSdkService.js.map +1 -0
  331. package/services/GetProjectSdkService/index.d.ts +1 -0
  332. package/services/GetProjectSdkService/index.js +3 -0
  333. package/services/GetProjectSdkService/index.js.map +1 -0
  334. package/services/GlobalOptionsRegistryService/GlobalOptionsRegistryService.d.ts +7 -0
  335. package/services/GlobalOptionsRegistryService/GlobalOptionsRegistryService.js +19 -0
  336. package/services/GlobalOptionsRegistryService/GlobalOptionsRegistryService.js.map +1 -0
  337. package/services/GlobalOptionsRegistryService/index.d.ts +1 -0
  338. package/services/GlobalOptionsRegistryService/index.js +3 -0
  339. package/services/GlobalOptionsRegistryService/index.js.map +1 -0
  340. package/services/LoggerService/LoggerService.d.ts +18 -0
  341. package/services/LoggerService/LoggerService.js +100 -0
  342. package/services/LoggerService/LoggerService.js.map +1 -0
  343. package/services/LoggerService/index.d.ts +1 -0
  344. package/services/LoggerService/index.js +3 -0
  345. package/services/LoggerService/index.js.map +1 -0
  346. package/services/RunCliRunnerService/RunCliRunnerService.d.ts +11 -0
  347. package/services/RunCliRunnerService/RunCliRunnerService.js +20 -0
  348. package/services/RunCliRunnerService/RunCliRunnerService.js.map +1 -0
  349. package/services/RunCliRunnerService/index.d.ts +1 -0
  350. package/services/RunCliRunnerService/index.js +3 -0
  351. package/services/RunCliRunnerService/index.js.map +1 -0
  352. package/services/StdioService/StdioService.d.ts +13 -0
  353. package/services/StdioService/StdioService.js +20 -0
  354. package/services/StdioService/StdioService.js.map +1 -0
  355. package/services/StdioService/index.d.ts +1 -0
  356. package/services/StdioService/index.js +3 -0
  357. package/services/StdioService/index.js.map +1 -0
  358. package/services/UiService/UiService.d.ts +17 -0
  359. package/services/UiService/UiService.js +70 -0
  360. package/services/UiService/UiService.js.map +1 -0
  361. package/services/UiService/index.d.ts +1 -0
  362. package/services/UiService/index.js +3 -0
  363. package/services/UiService/index.js.map +1 -0
  364. package/services/index.d.ts +12 -0
  365. package/services/index.js +14 -0
  366. package/services/index.js.map +1 -0
  367. package/utils/ManuallyReportedError.d.ts +3 -0
  368. package/utils/ManuallyReportedError.js +9 -0
  369. package/utils/ManuallyReportedError.js.map +1 -0
@@ -0,0 +1,143 @@
1
+ import { createImplementation } from "@webiny/di";
2
+ import { CliCommandFactory, GetProjectSdkService, StdioService, UiService } from "../../abstractions/index.js";
3
+ import { createBaseAppOptions } from "../common/index.js";
4
+ import chalk from "chalk";
5
+ import { getRandomColorForString } from "./getRandomColorForString.js";
6
+ import { createPrefixer } from "./createPrefixer.js";
7
+ const BASE_OPTIONS_GROUP = "Base Options:";
8
+ const LOCAL_AWS_LAMBDA_DEVELOPMENT_GROUP = "Local AWS Lambda Development Options:";
9
+ export class WatchCommand {
10
+ constructor(getProjectSdkService, stdioService, uiService) {
11
+ this.getProjectSdkService = getProjectSdkService;
12
+ this.stdioService = stdioService;
13
+ this.uiService = uiService;
14
+ }
15
+ async execute() {
16
+ const projectSdk = await this.getProjectSdkService.execute();
17
+ const stdio = this.stdioService;
18
+ const ui = this.uiService;
19
+ return {
20
+ name: "watch",
21
+ description: "Watches code changes for a specific app or package.",
22
+ examples: ["watch api --env dev", "watch admin --env prod", "watch -p my-package1,my-package2", "watch api --env dev -p my-package1,my-package2"],
23
+ params: [{
24
+ name: "app",
25
+ description: "Name of the app (core, admin, or api)",
26
+ type: "string"
27
+ }],
28
+ options: [...createBaseAppOptions(projectSdk, {
29
+ env: {
30
+ group: BASE_OPTIONS_GROUP
31
+ },
32
+ variant: {
33
+ group: BASE_OPTIONS_GROUP
34
+ },
35
+ region: {
36
+ group: BASE_OPTIONS_GROUP
37
+ }
38
+ }), {
39
+ name: "package",
40
+ alias: "p",
41
+ description: `One or more packages that will be watched for code changes`,
42
+ type: "string",
43
+ group: BASE_OPTIONS_GROUP
44
+ }, {
45
+ name: "function",
46
+ alias: "f",
47
+ description: "Specify one or more AWS Lambda functions to watch (comma-separated)",
48
+ type: "string",
49
+ group: LOCAL_AWS_LAMBDA_DEVELOPMENT_GROUP
50
+ }, {
51
+ name: "increase-timeout",
52
+ default: 120,
53
+ description: "Increase AWS Lambda function timeout (passed as number of seconds)",
54
+ type: "number",
55
+ group: LOCAL_AWS_LAMBDA_DEVELOPMENT_GROUP
56
+ }, {
57
+ name: "increase-handshake-timeout",
58
+ default: 5,
59
+ description: "Increase timeout for the initial handshake between a single AWS Lambda invocation and local code execution (passed as number of seconds)",
60
+ type: "number",
61
+ group: LOCAL_AWS_LAMBDA_DEVELOPMENT_GROUP
62
+ }, {
63
+ name: "inspect",
64
+ alias: "i",
65
+ description: "[EXPERIMENTAL] Enable Node debugger",
66
+ type: "string",
67
+ group: LOCAL_AWS_LAMBDA_DEVELOPMENT_GROUP
68
+ }, {
69
+ name: "allow-production",
70
+ default: false,
71
+ description: "Enables running the watch command against environments marked as production environments (not recommended).",
72
+ type: "number"
73
+ }, {
74
+ name: "deployment-checks",
75
+ default: true,
76
+ description: `Enable or disable deployment checks. For example, if you are trying to watch the API app, but the 'api' app is not deployed yet, you will get a warning and the process will stop.`,
77
+ type: "boolean"
78
+ }],
79
+ handler: async params => {
80
+ const {
81
+ packagesWatcher
82
+ } = await projectSdk.watch(params);
83
+
84
+ // TODO: Revisit this.
85
+ // if (webinyConfigWatcher) {
86
+ // webinyConfigWatcher
87
+ // .onError(err => {
88
+ // ui.error(
89
+ // `There is an error in your %s file: ${err.message}`,
90
+ // "webiny.config.tsx"
91
+ // );
92
+ // })
93
+ // .onSuccess(() => {
94
+ // ui.success(`%s compiled successfully!`, "webiny.config.tsx");
95
+ // })
96
+ // .run();
97
+ // }
98
+
99
+ // TODO: Extract this logic into WatchRunners, same thing we have with BuildRunners.
100
+ const watchProcesses = packagesWatcher.prepare();
101
+ if (watchProcesses.length === 1) {
102
+ watchProcesses.setForkOptions({
103
+ stdio: "inherit",
104
+ env: process.env
105
+ });
106
+ const [firstProcess] = watchProcesses.getProcesses();
107
+ ui.info(`Watching %s package...`, firstProcess.pkg.name);
108
+ await firstProcess.run();
109
+ return;
110
+ }
111
+ if (watchProcesses.length > 1) {
112
+ ui.info(`Watching %s packages...`, watchProcesses.length);
113
+ stdio.getStdout().setMaxListeners(20);
114
+ stdio.getStderr().setMaxListeners(20);
115
+ watchProcesses.forEach(watchProcess => {
116
+ const {
117
+ pkg
118
+ } = watchProcess;
119
+ const pkgPrefix = chalk.hex(getRandomColorForString(pkg.name))(pkg.name);
120
+ watchProcess.pipeStdout(stdout => {
121
+ const prefixedStdout = createPrefixer(pkgPrefix);
122
+ stdout.pipe(prefixedStdout).pipe(stdio.getStdout());
123
+ });
124
+ watchProcess.pipeStderr(stderr => {
125
+ const prefixedStderr = createPrefixer(pkgPrefix);
126
+ stderr.pipe(prefixedStderr).pipe(stdio.getStderr());
127
+ });
128
+ });
129
+ await Promise.all(watchProcesses.run());
130
+ return;
131
+ }
132
+ ui.warning(`No watch processes were started. Please ensure that you have specified valid "app" or "package" parameters.`);
133
+ }
134
+ };
135
+ }
136
+ }
137
+ export const watchCommand = createImplementation({
138
+ abstraction: CliCommandFactory,
139
+ implementation: WatchCommand,
140
+ dependencies: [GetProjectSdkService, StdioService, UiService]
141
+ });
142
+
143
+ //# sourceMappingURL=WatchCommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createImplementation","CliCommandFactory","GetProjectSdkService","StdioService","UiService","createBaseAppOptions","chalk","getRandomColorForString","createPrefixer","BASE_OPTIONS_GROUP","LOCAL_AWS_LAMBDA_DEVELOPMENT_GROUP","WatchCommand","constructor","getProjectSdkService","stdioService","uiService","execute","projectSdk","stdio","ui","name","description","examples","params","type","options","env","group","variant","region","alias","default","handler","packagesWatcher","watch","watchProcesses","prepare","length","setForkOptions","process","firstProcess","getProcesses","info","pkg","run","getStdout","setMaxListeners","getStderr","forEach","watchProcess","pkgPrefix","hex","pipeStdout","stdout","prefixedStdout","pipe","pipeStderr","stderr","prefixedStderr","Promise","all","warning","watchCommand","abstraction","implementation","dependencies"],"sources":["WatchCommand.ts"],"sourcesContent":["import { createImplementation } from \"@webiny/di\";\nimport {\n CliCommandFactory,\n GetProjectSdkService,\n StdioService,\n UiService\n} from \"~/abstractions/index.js\";\nimport { IBaseAppParams } from \"~/abstractions/features/types.js\";\nimport { createBaseAppOptions } from \"~/features/common/index.js\";\nimport chalk from \"chalk\";\nimport { getRandomColorForString } from \"./getRandomColorForString.js\";\nimport { createPrefixer } from \"./createPrefixer.js\";\n\nexport type IWatchCommandParams = IBaseAppParams;\n\nconst BASE_OPTIONS_GROUP = \"Base Options:\";\nconst LOCAL_AWS_LAMBDA_DEVELOPMENT_GROUP = \"Local AWS Lambda Development Options:\";\n\nexport class WatchCommand implements CliCommandFactory.Interface<IWatchCommandParams> {\n constructor(\n private getProjectSdkService: GetProjectSdkService.Interface,\n private stdioService: StdioService.Interface,\n private uiService: UiService.Interface\n ) {}\n\n async execute(): Promise<CliCommandFactory.CommandDefinition<IWatchCommandParams>> {\n const projectSdk = await this.getProjectSdkService.execute();\n const stdio = this.stdioService;\n const ui = this.uiService;\n\n return {\n name: \"watch\",\n description: \"Watches code changes for a specific app or package.\",\n examples: [\n \"watch api --env dev\",\n \"watch admin --env prod\",\n \"watch -p my-package1,my-package2\",\n \"watch api --env dev -p my-package1,my-package2\"\n ],\n params: [\n {\n name: \"app\",\n description: \"Name of the app (core, admin, or api)\",\n type: \"string\"\n }\n ],\n options: [\n ...createBaseAppOptions(projectSdk, {\n env: { group: BASE_OPTIONS_GROUP },\n variant: { group: BASE_OPTIONS_GROUP },\n region: { group: BASE_OPTIONS_GROUP }\n }),\n {\n name: \"package\",\n alias: \"p\",\n description: `One or more packages that will be watched for code changes`,\n type: \"string\",\n group: BASE_OPTIONS_GROUP\n },\n {\n name: \"function\",\n alias: \"f\",\n description:\n \"Specify one or more AWS Lambda functions to watch (comma-separated)\",\n type: \"string\",\n group: LOCAL_AWS_LAMBDA_DEVELOPMENT_GROUP\n },\n {\n name: \"increase-timeout\",\n default: 120,\n description:\n \"Increase AWS Lambda function timeout (passed as number of seconds)\",\n type: \"number\",\n group: LOCAL_AWS_LAMBDA_DEVELOPMENT_GROUP\n },\n {\n name: \"increase-handshake-timeout\",\n default: 5,\n description:\n \"Increase timeout for the initial handshake between a single AWS Lambda invocation and local code execution (passed as number of seconds)\",\n type: \"number\",\n group: LOCAL_AWS_LAMBDA_DEVELOPMENT_GROUP\n },\n {\n name: \"inspect\",\n alias: \"i\",\n description: \"[EXPERIMENTAL] Enable Node debugger\",\n type: \"string\",\n group: LOCAL_AWS_LAMBDA_DEVELOPMENT_GROUP\n },\n {\n name: \"allow-production\",\n default: false,\n description:\n \"Enables running the watch command against environments marked as production environments (not recommended).\",\n type: \"number\"\n },\n {\n name: \"deployment-checks\",\n default: true,\n description: `Enable or disable deployment checks. For example, if you are trying to watch the API app, but the 'api' app is not deployed yet, you will get a warning and the process will stop.`,\n type: \"boolean\"\n }\n ],\n handler: async (params: IWatchCommandParams) => {\n const { packagesWatcher } = await projectSdk.watch(params);\n\n // TODO: Revisit this.\n // if (webinyConfigWatcher) {\n // webinyConfigWatcher\n // .onError(err => {\n // ui.error(\n // `There is an error in your %s file: ${err.message}`,\n // \"webiny.config.tsx\"\n // );\n // })\n // .onSuccess(() => {\n // ui.success(`%s compiled successfully!`, \"webiny.config.tsx\");\n // })\n // .run();\n // }\n\n // TODO: Extract this logic into WatchRunners, same thing we have with BuildRunners.\n const watchProcesses = packagesWatcher.prepare();\n if (watchProcesses.length === 1) {\n watchProcesses.setForkOptions({\n stdio: \"inherit\",\n env: process.env\n });\n\n const [firstProcess] = watchProcesses.getProcesses();\n ui.info(`Watching %s package...`, firstProcess.pkg.name);\n\n await firstProcess.run();\n return;\n }\n\n if (watchProcesses.length > 1) {\n ui.info(`Watching %s packages...`, watchProcesses.length);\n\n stdio.getStdout().setMaxListeners(20);\n stdio.getStderr().setMaxListeners(20);\n\n watchProcesses.forEach(watchProcess => {\n const { pkg } = watchProcess;\n const pkgPrefix = chalk.hex(getRandomColorForString(pkg.name))(pkg.name);\n\n watchProcess.pipeStdout(stdout => {\n const prefixedStdout = createPrefixer(pkgPrefix);\n stdout.pipe(prefixedStdout).pipe(stdio.getStdout());\n });\n\n watchProcess.pipeStderr(stderr => {\n const prefixedStderr = createPrefixer(pkgPrefix);\n stderr.pipe(prefixedStderr).pipe(stdio.getStderr());\n });\n });\n\n await Promise.all(watchProcesses.run());\n return;\n }\n\n ui.warning(\n `No watch processes were started. Please ensure that you have specified valid \"app\" or \"package\" parameters.`\n );\n }\n };\n }\n}\n\nexport const watchCommand = createImplementation({\n abstraction: CliCommandFactory,\n implementation: WatchCommand,\n dependencies: [GetProjectSdkService, StdioService, UiService]\n});\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import { Transform } from "node:stream";
2
+ export declare function createPrefixer(prefix: string): Transform;
@@ -0,0 +1,20 @@
1
+ import { Transform } from "node:stream";
2
+ export function createPrefixer(prefix) {
3
+ // This returns a Transform stream that prefixes each line
4
+ return new Transform({
5
+ readableObjectMode: true,
6
+ writableObjectMode: true,
7
+ transform(chunk, encoding, callback) {
8
+ const str = chunk.toString();
9
+ const lines = str.split(/\r?\n/);
10
+ for (let i = 0; i < lines.length; i++) {
11
+ if (lines[i].trim() !== "") {
12
+ this.push(`${prefix}: ${lines[i]}\n`);
13
+ }
14
+ }
15
+ callback();
16
+ }
17
+ });
18
+ }
19
+
20
+ //# sourceMappingURL=createPrefixer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Transform","createPrefixer","prefix","readableObjectMode","writableObjectMode","transform","chunk","encoding","callback","str","toString","lines","split","i","length","trim","push"],"sources":["createPrefixer.ts"],"sourcesContent":["import { Transform } from \"node:stream\";\n\nexport function createPrefixer(prefix: string) {\n // This returns a Transform stream that prefixes each line\n return new Transform({\n readableObjectMode: true,\n writableObjectMode: true,\n transform(chunk, encoding, callback) {\n const str = chunk.toString();\n const lines = str.split(/\\r?\\n/);\n for (let i = 0; i < lines.length; i++) {\n if (lines[i].trim() !== \"\") {\n this.push(`${prefix}: ${lines[i]}\\n`);\n }\n }\n callback();\n }\n });\n}\n"],"mappings":"AAAA,SAASA,SAAS,QAAQ,aAAa;AAEvC,OAAO,SAASC,cAAcA,CAACC,MAAc,EAAE;EAC3C;EACA,OAAO,IAAIF,SAAS,CAAC;IACjBG,kBAAkB,EAAE,IAAI;IACxBC,kBAAkB,EAAE,IAAI;IACxBC,SAASA,CAACC,KAAK,EAAEC,QAAQ,EAAEC,QAAQ,EAAE;MACjC,MAAMC,GAAG,GAAGH,KAAK,CAACI,QAAQ,CAAC,CAAC;MAC5B,MAAMC,KAAK,GAAGF,GAAG,CAACG,KAAK,CAAC,OAAO,CAAC;MAChC,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,KAAK,CAACG,MAAM,EAAED,CAAC,EAAE,EAAE;QACnC,IAAIF,KAAK,CAACE,CAAC,CAAC,CAACE,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;UACxB,IAAI,CAACC,IAAI,CAAC,GAAGd,MAAM,KAAKS,KAAK,CAACE,CAAC,CAAC,IAAI,CAAC;QACzC;MACJ;MACAL,QAAQ,CAAC,CAAC;IACd;EACJ,CAAC,CAAC;AACN","ignoreList":[]}
@@ -0,0 +1 @@
1
+ export declare const getRandomColorForString: (value: string) => string;
@@ -0,0 +1,11 @@
1
+ const colors = ["#0000CC", "#0000FF", "#0033CC", "#0033FF", "#0066CC", "#0066FF", "#0099CC", "#0099FF", "#00CC00", "#00CC33", "#00CC66", "#00CC99", "#00CCCC", "#00CCFF", "#3300CC", "#3300FF", "#3333CC", "#3333FF", "#3366CC", "#3366FF", "#3399CC", "#3399FF", "#33CC00", "#33CC33", "#33CC66", "#33CC99", "#33CCCC", "#33CCFF", "#6600CC", "#6600FF", "#6633CC", "#6633FF", "#66CC00", "#66CC33", "#9900CC", "#9900FF", "#9933CC", "#9933FF", "#99CC00", "#99CC33", "#CC0000", "#CC0033", "#CC0066", "#CC0099", "#CC00CC", "#CC00FF", "#CC3300", "#CC3333", "#CC3366", "#CC3399", "#CC33CC", "#CC33FF", "#CC6600", "#CC6633", "#CC9900", "#CC9933", "#CCCC00", "#CCCC33", "#FF0000", "#FF0033", "#FF0066", "#FF0099", "#FF00CC", "#FF00FF", "#FF3300", "#FF3333", "#FF3366", "#FF3399", "#FF33CC", "#FF33FF", "#FF6600", "#FF6633", "#FF9900", "#FF9933", "#FFCC00", "#FFCC33"];
2
+ export const getRandomColorForString = value => {
3
+ let hash = 0;
4
+ for (let i = 0; i < value.length; i++) {
5
+ hash = (hash << 5) - hash + value.charCodeAt(i);
6
+ hash |= 0; // Convert to 32bit integer
7
+ }
8
+ return colors[Math.abs(hash) % colors.length];
9
+ };
10
+
11
+ //# sourceMappingURL=getRandomColorForString.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["colors","getRandomColorForString","value","hash","i","length","charCodeAt","Math","abs"],"sources":["getRandomColorForString.ts"],"sourcesContent":["const colors = [\n \"#0000CC\",\n \"#0000FF\",\n \"#0033CC\",\n \"#0033FF\",\n \"#0066CC\",\n \"#0066FF\",\n \"#0099CC\",\n \"#0099FF\",\n \"#00CC00\",\n \"#00CC33\",\n \"#00CC66\",\n \"#00CC99\",\n \"#00CCCC\",\n \"#00CCFF\",\n \"#3300CC\",\n \"#3300FF\",\n \"#3333CC\",\n \"#3333FF\",\n \"#3366CC\",\n \"#3366FF\",\n \"#3399CC\",\n \"#3399FF\",\n \"#33CC00\",\n \"#33CC33\",\n \"#33CC66\",\n \"#33CC99\",\n \"#33CCCC\",\n \"#33CCFF\",\n \"#6600CC\",\n \"#6600FF\",\n \"#6633CC\",\n \"#6633FF\",\n \"#66CC00\",\n \"#66CC33\",\n \"#9900CC\",\n \"#9900FF\",\n \"#9933CC\",\n \"#9933FF\",\n \"#99CC00\",\n \"#99CC33\",\n \"#CC0000\",\n \"#CC0033\",\n \"#CC0066\",\n \"#CC0099\",\n \"#CC00CC\",\n \"#CC00FF\",\n \"#CC3300\",\n \"#CC3333\",\n \"#CC3366\",\n \"#CC3399\",\n \"#CC33CC\",\n \"#CC33FF\",\n \"#CC6600\",\n \"#CC6633\",\n \"#CC9900\",\n \"#CC9933\",\n \"#CCCC00\",\n \"#CCCC33\",\n \"#FF0000\",\n \"#FF0033\",\n \"#FF0066\",\n \"#FF0099\",\n \"#FF00CC\",\n \"#FF00FF\",\n \"#FF3300\",\n \"#FF3333\",\n \"#FF3366\",\n \"#FF3399\",\n \"#FF33CC\",\n \"#FF33FF\",\n \"#FF6600\",\n \"#FF6633\",\n \"#FF9900\",\n \"#FF9933\",\n \"#FFCC00\",\n \"#FFCC33\"\n];\n\nexport const getRandomColorForString = (value: string) => {\n let hash = 0;\n\n for (let i = 0; i < value.length; i++) {\n hash = (hash << 5) - hash + value.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n\n return colors[Math.abs(hash) % colors.length];\n};\n"],"mappings":"AAAA,MAAMA,MAAM,GAAG,CACX,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,CACZ;AAED,OAAO,MAAMC,uBAAuB,GAAIC,KAAa,IAAK;EACtD,IAAIC,IAAI,GAAG,CAAC;EAEZ,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,KAAK,CAACG,MAAM,EAAED,CAAC,EAAE,EAAE;IACnCD,IAAI,GAAG,CAACA,IAAI,IAAI,CAAC,IAAIA,IAAI,GAAGD,KAAK,CAACI,UAAU,CAACF,CAAC,CAAC;IAC/CD,IAAI,IAAI,CAAC,CAAC,CAAC;EACf;EAEA,OAAOH,MAAM,CAACO,IAAI,CAACC,GAAG,CAACL,IAAI,CAAC,GAAGH,MAAM,CAACK,MAAM,CAAC;AACjD,CAAC","ignoreList":[]}
@@ -0,0 +1 @@
1
+ export * from "./WatchCommand.js";
@@ -0,0 +1,3 @@
1
+ export * from "./WatchCommand.js";
2
+
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"./WatchCommand.js\";\n"],"mappings":"AAAA","ignoreList":[]}
@@ -0,0 +1,13 @@
1
+ import { CliCommandFactory, GetProjectSdkService, UiService } from "../../abstractions/index.js";
2
+ export declare class LinkProjectCommand implements CliCommandFactory.Interface<void> {
3
+ private getProjectSdkService;
4
+ private uiService;
5
+ constructor(getProjectSdkService: GetProjectSdkService.Interface, uiService: UiService.Interface);
6
+ execute(): Promise<{
7
+ name: string;
8
+ description: string;
9
+ examples: string[];
10
+ handler: () => Promise<void>;
11
+ }>;
12
+ }
13
+ export declare const linkProjectCommand: import("@webiny/di").Implementation<typeof LinkProjectCommand>;
@@ -0,0 +1,146 @@
1
+ import { createImplementation } from "@webiny/di";
2
+ import inquirer from "inquirer";
3
+ import { CliCommandFactory, GetProjectSdkService, UiService } from "../../abstractions/index.js";
4
+ import { setTimeout } from "node:timers/promises";
5
+ const sleep = (ms = 1500) => setTimeout(ms);
6
+ export class LinkProjectCommand {
7
+ constructor(getProjectSdkService, uiService) {
8
+ this.getProjectSdkService = getProjectSdkService;
9
+ this.uiService = uiService;
10
+ }
11
+ async execute() {
12
+ const projectSdk = await this.getProjectSdkService.execute();
13
+ const wcp = projectSdk.wcp;
14
+ const ui = this.uiService;
15
+ return {
16
+ name: "link-project",
17
+ description: "Link a Webiny project with Webiny Control Panel",
18
+ examples: ["$0 link-project"],
19
+ handler: async () => {
20
+ const user = await wcp.getUser();
21
+ if (!user) {
22
+ ui.error("You must be logged in to link a project.");
23
+ return;
24
+ }
25
+
26
+ // User already linked a project?
27
+ const orgProjectId = await projectSdk.getProjectId();
28
+ if (orgProjectId) {
29
+ const [, projectId] = orgProjectId.split("/");
30
+ const project = user.projects.find(item => item.id === projectId);
31
+ if (project) {
32
+ ui.info("Your %s project is already linked.", orgProjectId);
33
+ const prompt = inquirer.createPromptModule();
34
+ const {
35
+ proceed
36
+ } = await prompt({
37
+ name: "proceed",
38
+ message: "Would you like to re-link it?",
39
+ type: "confirm",
40
+ default: false
41
+ });
42
+ if (!proceed) {
43
+ return;
44
+ }
45
+ ui.emptyLine();
46
+ }
47
+ }
48
+ const wcpAppUrl = projectSdk.wcp.getWcpAppUrl().toString();
49
+
50
+ // Get user's organizations.
51
+ if (!user.orgs.length) {
52
+ ui.info("It seems you're not part of any organization. Please log in to Webiny Control Panel and create one.");
53
+ const prompt = inquirer.createPromptModule();
54
+ const {
55
+ proceed
56
+ } = await prompt({
57
+ name: "proceed",
58
+ message: "Would you like to do that now?",
59
+ type: "confirm",
60
+ default: false
61
+ });
62
+ if (proceed) {
63
+ open(wcpAppUrl);
64
+ }
65
+ return;
66
+ }
67
+ let selectedOrg;
68
+ if (user.orgs.length === 1) {
69
+ selectedOrg = user.orgs[0];
70
+ } else {
71
+ ui.info("It seems you're part of multiple organizations. ");
72
+ const choices = user.orgs.map(item => ({
73
+ name: item.name,
74
+ value: item
75
+ }));
76
+ const prompt = inquirer.createPromptModule();
77
+ selectedOrg = await prompt({
78
+ name: "org",
79
+ message: "Select organization:",
80
+ type: "list",
81
+ choices,
82
+ default: choices[0].value
83
+ }).then(result => result.org);
84
+ }
85
+ const orgProjects = user.projects.filter(item => item.org.id === selectedOrg.id);
86
+
87
+ // Get user's projects.
88
+ if (!orgProjects.length) {
89
+ ui.info("It seems there are no projects created within the %s organization.", selectedOrg.name);
90
+ const prompt = inquirer.createPromptModule();
91
+ const {
92
+ proceed
93
+ } = await prompt({
94
+ name: "proceed",
95
+ message: "Would you like to create one now?",
96
+ type: "confirm",
97
+ default: false
98
+ });
99
+ if (proceed) {
100
+ open(wcpAppUrl);
101
+ }
102
+ return;
103
+ }
104
+ let selectedProject;
105
+ if (orgProjects.length === 1) {
106
+ selectedProject = user.projects[0];
107
+ } else {
108
+ ui.info(`It seems there are multiple projects created within the organization.`, selectedOrg.name);
109
+ const choices = orgProjects.map(item => ({
110
+ name: item.name,
111
+ value: item
112
+ }));
113
+ const prompt = inquirer.createPromptModule();
114
+ selectedProject = await prompt({
115
+ name: "project",
116
+ message: "Select project:",
117
+ type: "list",
118
+ choices,
119
+ default: choices[0].value
120
+ }).then(result => result.project);
121
+ }
122
+ await sleep();
123
+ ui.emptyLine();
124
+ ui.info("Linking %s project...", selectedProject.name);
125
+ await sleep();
126
+
127
+ // Assign the necessary IDs into root `webiny.project.ts` project file.
128
+ await projectSdk.setProjectId(selectedProject.id, {
129
+ force: true
130
+ });
131
+ ui.success(`%s Project %s linked successfully.`, "✔", selectedProject.name);
132
+ await sleep();
133
+ ui.emptyLine();
134
+ ui.textBold("Next Steps");
135
+ ui.text(`‣ deploy your project via the yarn webiny deploy command`);
136
+ }
137
+ };
138
+ }
139
+ }
140
+ export const linkProjectCommand = createImplementation({
141
+ abstraction: CliCommandFactory,
142
+ implementation: LinkProjectCommand,
143
+ dependencies: [GetProjectSdkService, UiService]
144
+ });
145
+
146
+ //# sourceMappingURL=LinkProjectCommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createImplementation","inquirer","CliCommandFactory","GetProjectSdkService","UiService","setTimeout","sleep","ms","LinkProjectCommand","constructor","getProjectSdkService","uiService","execute","projectSdk","wcp","ui","name","description","examples","handler","user","getUser","error","orgProjectId","getProjectId","projectId","split","project","projects","find","item","id","info","prompt","createPromptModule","proceed","message","type","default","emptyLine","wcpAppUrl","getWcpAppUrl","toString","orgs","length","open","selectedOrg","choices","map","value","then","result","org","orgProjects","filter","selectedProject","setProjectId","force","success","textBold","text","linkProjectCommand","abstraction","implementation","dependencies"],"sources":["LinkProjectCommand.ts"],"sourcesContent":["import { createImplementation } from \"@webiny/di\";\nimport inquirer from \"inquirer\";\nimport { CliCommandFactory, GetProjectSdkService, UiService } from \"~/abstractions/index.js\";\nimport { setTimeout } from \"node:timers/promises\";\n\nconst sleep = (ms: number = 1500) => setTimeout(ms);\n\nexport class LinkProjectCommand implements CliCommandFactory.Interface<void> {\n constructor(\n private getProjectSdkService: GetProjectSdkService.Interface,\n private uiService: UiService.Interface\n ) {}\n\n async execute() {\n const projectSdk = await this.getProjectSdkService.execute();\n const wcp = projectSdk.wcp;\n const ui = this.uiService;\n\n return {\n name: \"link-project\",\n description: \"Link a Webiny project with Webiny Control Panel\",\n examples: [\"$0 link-project\"],\n handler: async () => {\n const user = await wcp.getUser();\n\n if (!user) {\n ui.error(\"You must be logged in to link a project.\");\n return;\n }\n\n // User already linked a project?\n const orgProjectId = await projectSdk.getProjectId();\n if (orgProjectId) {\n const [, projectId] = orgProjectId.split(\"/\");\n const project = user.projects.find(item => item.id === projectId);\n if (project) {\n ui.info(\"Your %s project is already linked.\", orgProjectId);\n\n const prompt = inquirer.createPromptModule();\n const { proceed } = await prompt({\n name: \"proceed\",\n message: \"Would you like to re-link it?\",\n type: \"confirm\",\n default: false\n });\n\n if (!proceed) {\n return;\n }\n\n ui.emptyLine();\n }\n }\n\n const wcpAppUrl = projectSdk.wcp.getWcpAppUrl().toString();\n\n // Get user's organizations.\n if (!user.orgs.length) {\n ui.info(\n \"It seems you're not part of any organization. Please log in to Webiny Control Panel and create one.\"\n );\n\n const prompt = inquirer.createPromptModule();\n const { proceed } = await prompt({\n name: \"proceed\",\n message: \"Would you like to do that now?\",\n type: \"confirm\",\n default: false\n });\n\n if (proceed) {\n open(wcpAppUrl);\n }\n return;\n }\n\n let selectedOrg;\n if (user.orgs.length === 1) {\n selectedOrg = user.orgs[0];\n } else {\n ui.info(\"It seems you're part of multiple organizations. \");\n const choices = user.orgs.map(item => ({\n name: item.name,\n value: item\n }));\n\n const prompt = inquirer.createPromptModule();\n selectedOrg = await prompt({\n name: \"org\",\n message: \"Select organization:\",\n type: \"list\",\n choices,\n default: choices[0].value\n }).then(result => result.org);\n }\n\n const orgProjects = user.projects.filter(item => item.org.id === selectedOrg.id);\n\n // Get user's projects.\n if (!orgProjects.length) {\n ui.info(\n \"It seems there are no projects created within the %s organization.\",\n selectedOrg.name\n );\n\n const prompt = inquirer.createPromptModule();\n const { proceed } = await prompt({\n name: \"proceed\",\n message: \"Would you like to create one now?\",\n type: \"confirm\",\n default: false\n });\n\n if (proceed) {\n open(wcpAppUrl);\n }\n return;\n }\n\n let selectedProject;\n if (orgProjects.length === 1) {\n selectedProject = user.projects[0];\n } else {\n ui.info(\n `It seems there are multiple projects created within the organization.`,\n selectedOrg.name\n );\n const choices = orgProjects.map(item => ({\n name: item.name,\n value: item\n }));\n const prompt = inquirer.createPromptModule();\n selectedProject = await prompt({\n name: \"project\",\n message: \"Select project:\",\n type: \"list\",\n choices,\n default: choices[0].value\n }).then(result => result.project);\n }\n\n await sleep();\n ui.emptyLine();\n\n ui.info(\"Linking %s project...\", selectedProject.name);\n\n await sleep();\n\n // Assign the necessary IDs into root `webiny.project.ts` project file.\n await projectSdk.setProjectId(selectedProject.id, { force: true });\n\n ui.success(`%s Project %s linked successfully.`, \"✔\", selectedProject.name);\n\n await sleep();\n\n ui.emptyLine();\n ui.textBold(\"Next Steps\");\n\n ui.text(`‣ deploy your project via the yarn webiny deploy command`);\n }\n };\n }\n}\n\nexport const linkProjectCommand = createImplementation({\n abstraction: CliCommandFactory,\n implementation: LinkProjectCommand,\n dependencies: [GetProjectSdkService, UiService]\n});\n"],"mappings":"AAAA,SAASA,oBAAoB,QAAQ,YAAY;AACjD,OAAOC,QAAQ,MAAM,UAAU;AAC/B,SAASC,iBAAiB,EAAEC,oBAAoB,EAAEC,SAAS;AAC3D,SAASC,UAAU,QAAQ,sBAAsB;AAEjD,MAAMC,KAAK,GAAGA,CAACC,EAAU,GAAG,IAAI,KAAKF,UAAU,CAACE,EAAE,CAAC;AAEnD,OAAO,MAAMC,kBAAkB,CAA8C;EACzEC,WAAWA,CACCC,oBAAoD,EACpDC,SAA8B,EACxC;IAAA,KAFUD,oBAAoD,GAApDA,oBAAoD;IAAA,KACpDC,SAA8B,GAA9BA,SAA8B;EACvC;EAEH,MAAMC,OAAOA,CAAA,EAAG;IACZ,MAAMC,UAAU,GAAG,MAAM,IAAI,CAACH,oBAAoB,CAACE,OAAO,CAAC,CAAC;IAC5D,MAAME,GAAG,GAAGD,UAAU,CAACC,GAAG;IAC1B,MAAMC,EAAE,GAAG,IAAI,CAACJ,SAAS;IAEzB,OAAO;MACHK,IAAI,EAAE,cAAc;MACpBC,WAAW,EAAE,iDAAiD;MAC9DC,QAAQ,EAAE,CAAC,iBAAiB,CAAC;MAC7BC,OAAO,EAAE,MAAAA,CAAA,KAAY;QACjB,MAAMC,IAAI,GAAG,MAAMN,GAAG,CAACO,OAAO,CAAC,CAAC;QAEhC,IAAI,CAACD,IAAI,EAAE;UACPL,EAAE,CAACO,KAAK,CAAC,0CAA0C,CAAC;UACpD;QACJ;;QAEA;QACA,MAAMC,YAAY,GAAG,MAAMV,UAAU,CAACW,YAAY,CAAC,CAAC;QACpD,IAAID,YAAY,EAAE;UACd,MAAM,GAAGE,SAAS,CAAC,GAAGF,YAAY,CAACG,KAAK,CAAC,GAAG,CAAC;UAC7C,MAAMC,OAAO,GAAGP,IAAI,CAACQ,QAAQ,CAACC,IAAI,CAACC,IAAI,IAAIA,IAAI,CAACC,EAAE,KAAKN,SAAS,CAAC;UACjE,IAAIE,OAAO,EAAE;YACTZ,EAAE,CAACiB,IAAI,CAAC,oCAAoC,EAAET,YAAY,CAAC;YAE3D,MAAMU,MAAM,GAAGhC,QAAQ,CAACiC,kBAAkB,CAAC,CAAC;YAC5C,MAAM;cAAEC;YAAQ,CAAC,GAAG,MAAMF,MAAM,CAAC;cAC7BjB,IAAI,EAAE,SAAS;cACfoB,OAAO,EAAE,+BAA+B;cACxCC,IAAI,EAAE,SAAS;cACfC,OAAO,EAAE;YACb,CAAC,CAAC;YAEF,IAAI,CAACH,OAAO,EAAE;cACV;YACJ;YAEApB,EAAE,CAACwB,SAAS,CAAC,CAAC;UAClB;QACJ;QAEA,MAAMC,SAAS,GAAG3B,UAAU,CAACC,GAAG,CAAC2B,YAAY,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC;;QAE1D;QACA,IAAI,CAACtB,IAAI,CAACuB,IAAI,CAACC,MAAM,EAAE;UACnB7B,EAAE,CAACiB,IAAI,CACH,qGACJ,CAAC;UAED,MAAMC,MAAM,GAAGhC,QAAQ,CAACiC,kBAAkB,CAAC,CAAC;UAC5C,MAAM;YAAEC;UAAQ,CAAC,GAAG,MAAMF,MAAM,CAAC;YAC7BjB,IAAI,EAAE,SAAS;YACfoB,OAAO,EAAE,gCAAgC;YACzCC,IAAI,EAAE,SAAS;YACfC,OAAO,EAAE;UACb,CAAC,CAAC;UAEF,IAAIH,OAAO,EAAE;YACTU,IAAI,CAACL,SAAS,CAAC;UACnB;UACA;QACJ;QAEA,IAAIM,WAAW;QACf,IAAI1B,IAAI,CAACuB,IAAI,CAACC,MAAM,KAAK,CAAC,EAAE;UACxBE,WAAW,GAAG1B,IAAI,CAACuB,IAAI,CAAC,CAAC,CAAC;QAC9B,CAAC,MAAM;UACH5B,EAAE,CAACiB,IAAI,CAAC,kDAAkD,CAAC;UAC3D,MAAMe,OAAO,GAAG3B,IAAI,CAACuB,IAAI,CAACK,GAAG,CAAClB,IAAI,KAAK;YACnCd,IAAI,EAAEc,IAAI,CAACd,IAAI;YACfiC,KAAK,EAAEnB;UACX,CAAC,CAAC,CAAC;UAEH,MAAMG,MAAM,GAAGhC,QAAQ,CAACiC,kBAAkB,CAAC,CAAC;UAC5CY,WAAW,GAAG,MAAMb,MAAM,CAAC;YACvBjB,IAAI,EAAE,KAAK;YACXoB,OAAO,EAAE,sBAAsB;YAC/BC,IAAI,EAAE,MAAM;YACZU,OAAO;YACPT,OAAO,EAAES,OAAO,CAAC,CAAC,CAAC,CAACE;UACxB,CAAC,CAAC,CAACC,IAAI,CAACC,MAAM,IAAIA,MAAM,CAACC,GAAG,CAAC;QACjC;QAEA,MAAMC,WAAW,GAAGjC,IAAI,CAACQ,QAAQ,CAAC0B,MAAM,CAACxB,IAAI,IAAIA,IAAI,CAACsB,GAAG,CAACrB,EAAE,KAAKe,WAAW,CAACf,EAAE,CAAC;;QAEhF;QACA,IAAI,CAACsB,WAAW,CAACT,MAAM,EAAE;UACrB7B,EAAE,CAACiB,IAAI,CACH,oEAAoE,EACpEc,WAAW,CAAC9B,IAChB,CAAC;UAED,MAAMiB,MAAM,GAAGhC,QAAQ,CAACiC,kBAAkB,CAAC,CAAC;UAC5C,MAAM;YAAEC;UAAQ,CAAC,GAAG,MAAMF,MAAM,CAAC;YAC7BjB,IAAI,EAAE,SAAS;YACfoB,OAAO,EAAE,mCAAmC;YAC5CC,IAAI,EAAE,SAAS;YACfC,OAAO,EAAE;UACb,CAAC,CAAC;UAEF,IAAIH,OAAO,EAAE;YACTU,IAAI,CAACL,SAAS,CAAC;UACnB;UACA;QACJ;QAEA,IAAIe,eAAe;QACnB,IAAIF,WAAW,CAACT,MAAM,KAAK,CAAC,EAAE;UAC1BW,eAAe,GAAGnC,IAAI,CAACQ,QAAQ,CAAC,CAAC,CAAC;QACtC,CAAC,MAAM;UACHb,EAAE,CAACiB,IAAI,CACH,uEAAuE,EACvEc,WAAW,CAAC9B,IAChB,CAAC;UACD,MAAM+B,OAAO,GAAGM,WAAW,CAACL,GAAG,CAAClB,IAAI,KAAK;YACrCd,IAAI,EAAEc,IAAI,CAACd,IAAI;YACfiC,KAAK,EAAEnB;UACX,CAAC,CAAC,CAAC;UACH,MAAMG,MAAM,GAAGhC,QAAQ,CAACiC,kBAAkB,CAAC,CAAC;UAC5CqB,eAAe,GAAG,MAAMtB,MAAM,CAAC;YAC3BjB,IAAI,EAAE,SAAS;YACfoB,OAAO,EAAE,iBAAiB;YAC1BC,IAAI,EAAE,MAAM;YACZU,OAAO;YACPT,OAAO,EAAES,OAAO,CAAC,CAAC,CAAC,CAACE;UACxB,CAAC,CAAC,CAACC,IAAI,CAACC,MAAM,IAAIA,MAAM,CAACxB,OAAO,CAAC;QACrC;QAEA,MAAMrB,KAAK,CAAC,CAAC;QACbS,EAAE,CAACwB,SAAS,CAAC,CAAC;QAEdxB,EAAE,CAACiB,IAAI,CAAC,uBAAuB,EAAEuB,eAAe,CAACvC,IAAI,CAAC;QAEtD,MAAMV,KAAK,CAAC,CAAC;;QAEb;QACA,MAAMO,UAAU,CAAC2C,YAAY,CAACD,eAAe,CAACxB,EAAE,EAAE;UAAE0B,KAAK,EAAE;QAAK,CAAC,CAAC;QAElE1C,EAAE,CAAC2C,OAAO,CAAC,oCAAoC,EAAE,GAAG,EAAEH,eAAe,CAACvC,IAAI,CAAC;QAE3E,MAAMV,KAAK,CAAC,CAAC;QAEbS,EAAE,CAACwB,SAAS,CAAC,CAAC;QACdxB,EAAE,CAAC4C,QAAQ,CAAC,YAAY,CAAC;QAEzB5C,EAAE,CAAC6C,IAAI,CAAC,0DAA0D,CAAC;MACvE;IACJ,CAAC;EACL;AACJ;AAEA,OAAO,MAAMC,kBAAkB,GAAG7D,oBAAoB,CAAC;EACnD8D,WAAW,EAAE5D,iBAAiB;EAC9B6D,cAAc,EAAEvD,kBAAkB;EAClCwD,YAAY,EAAE,CAAC7D,oBAAoB,EAAEC,SAAS;AAClD,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,13 @@
1
+ import { CliCommandFactory, GetProjectSdkService, LoggerService, UiService } from "../../abstractions/index.js";
2
+ interface ILoginCommandParams {
3
+ pat?: string;
4
+ }
5
+ export declare class LoginCommand implements CliCommandFactory.Interface<ILoginCommandParams> {
6
+ private getProjectSdkService;
7
+ private uiService;
8
+ private loggerService;
9
+ constructor(getProjectSdkService: GetProjectSdkService.Interface, uiService: UiService.Interface, loggerService: LoggerService.Interface);
10
+ execute(): Promise<CliCommandFactory.CommandDefinition<ILoginCommandParams>>;
11
+ }
12
+ export declare const loginCommand: import("@webiny/di").Implementation<typeof LoginCommand>;
13
+ export {};
@@ -0,0 +1,126 @@
1
+ import { createImplementation } from "@webiny/di";
2
+ import { CliCommandFactory, GetProjectSdkService, LoggerService, UiService } from "../../abstractions/index.js";
3
+ import { setTimeout } from "node:timers/promises";
4
+ import open from "open";
5
+ const sleep = (ms = 1500) => setTimeout(ms);
6
+
7
+ // 120 retries * 2000ms interval = 4 minutes until the command returns an error.
8
+ const LOGIN_RETRIES_COUNT = 30;
9
+ const LOGIN_RETRIES_INTERVAL = 2_000;
10
+ export class LoginCommand {
11
+ constructor(getProjectSdkService, uiService, loggerService) {
12
+ this.getProjectSdkService = getProjectSdkService;
13
+ this.uiService = uiService;
14
+ this.loggerService = loggerService;
15
+ }
16
+ async execute() {
17
+ return {
18
+ name: "login",
19
+ description: "Log in to Webiny Control Panel",
20
+ examples: ["$0 login"],
21
+ options: [{
22
+ name: "pat",
23
+ description: "Personal Access Token (PAT) to use for authentication",
24
+ type: "string"
25
+ }],
26
+ handler: async ({
27
+ pat: patFromParams
28
+ }) => {
29
+ const projectSdk = await this.getProjectSdkService.execute();
30
+ const wcp = projectSdk.wcp;
31
+ const ui = this.uiService;
32
+ const logger = this.loggerService;
33
+ let pat = null;
34
+ if (patFromParams) {
35
+ pat = await wcp.getUserPat(patFromParams);
36
+
37
+ // If we've received a PAT that has expiration, let's create a long-lived PAT.
38
+ // We don't want to have our users interrupted because of an expired PAT.
39
+ if (pat && pat.expiresOn) {
40
+ pat = await wcp.createUserPat({
41
+ meta: pat.meta
42
+ }, pat.token);
43
+ }
44
+ } else {
45
+ const generatedPat = await wcp.generateUserPat();
46
+ const queryParams = `pat=${generatedPat}&pat_name=${encodeURIComponent("Webiny CLI")}&ref=cli`;
47
+ const openUrl = wcp.getWcpAppUrl().join(`/login/cli?${queryParams}`).toString();
48
+ logger.debug(`Opening %s...`, openUrl);
49
+ await open(openUrl);
50
+ const graphql = {
51
+ variables: {
52
+ token: generatedPat
53
+ },
54
+ headers: {
55
+ Authorization: generatedPat
56
+ }
57
+ };
58
+ let retries = 0;
59
+ const result = await new Promise(resolve => {
60
+ const interval = setInterval(async () => {
61
+ retries++;
62
+ if (retries > LOGIN_RETRIES_COUNT) {
63
+ clearInterval(interval);
64
+ resolve(null);
65
+ }
66
+ try {
67
+ const pat = await wcp.getUserPat(generatedPat);
68
+ clearInterval(interval);
69
+ resolve(pat);
70
+ } catch (err) {
71
+ // Do nothing.
72
+ logger.debug({
73
+ err,
74
+ graphqlRequest: graphql
75
+ }, `Could not login. Will try again in ${LOGIN_RETRIES_INTERVAL}ms.`);
76
+ }
77
+ }, LOGIN_RETRIES_INTERVAL);
78
+ });
79
+ if (!result) {
80
+ throw new Error(`Could not login. Did you complete the sign in / sign up process at ${wcp.getWcpAppUrl().toString()}?`);
81
+ }
82
+ pat = result;
83
+ }
84
+ if (!pat) {
85
+ throw new Error(`Could not log in. Could not obtain a valid Personal Access Token.`);
86
+ }
87
+ projectSdk.wcp.storePatToLocalStorage(pat.token);
88
+ ui.success(`%s You've successfully logged in to Webiny Control Panel.`, "✔");
89
+ let projectLinked = await projectSdk.getProjectId().then(id => !!id);
90
+ if (projectLinked) {
91
+ return;
92
+ }
93
+
94
+ // If we have `orgId` and `projectId` in PAT's metadata, let's immediately link the project.
95
+ if (pat.meta && pat.meta.orgId && pat.meta.projectId) {
96
+ await sleep();
97
+ ui.emptyLine();
98
+ const {
99
+ orgId,
100
+ projectId
101
+ } = pat.meta;
102
+ const id = `${orgId}/${projectId}`;
103
+ ui.info(`Project %s detected. Linking...`, id);
104
+ await projectSdk.setProjectId(id);
105
+ await sleep();
106
+ ui.success(`Project %s linked successfully.`, id);
107
+ projectLinked = true;
108
+ }
109
+ await sleep();
110
+ ui.emptyLine();
111
+ ui.textBold("Next Steps");
112
+ if (!projectLinked) {
113
+ ui.text(`‣ link your project via the "yarn webiny project link" command`);
114
+ }
115
+ ui.text(`‣ deploy your project via the "yarn webiny deploy" command`);
116
+ }
117
+ };
118
+ }
119
+ }
120
+ export const loginCommand = createImplementation({
121
+ abstraction: CliCommandFactory,
122
+ implementation: LoginCommand,
123
+ dependencies: [GetProjectSdkService, UiService, LoggerService]
124
+ });
125
+
126
+ //# sourceMappingURL=LoginCommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createImplementation","CliCommandFactory","GetProjectSdkService","LoggerService","UiService","setTimeout","open","sleep","ms","LOGIN_RETRIES_COUNT","LOGIN_RETRIES_INTERVAL","LoginCommand","constructor","getProjectSdkService","uiService","loggerService","execute","name","description","examples","options","type","handler","pat","patFromParams","projectSdk","wcp","ui","logger","getUserPat","expiresOn","createUserPat","meta","token","generatedPat","generateUserPat","queryParams","encodeURIComponent","openUrl","getWcpAppUrl","join","toString","debug","graphql","variables","headers","Authorization","retries","result","Promise","resolve","interval","setInterval","clearInterval","err","graphqlRequest","Error","storePatToLocalStorage","success","projectLinked","getProjectId","then","id","orgId","projectId","emptyLine","info","setProjectId","textBold","text","loginCommand","abstraction","implementation","dependencies"],"sources":["LoginCommand.ts"],"sourcesContent":["import { createImplementation } from \"@webiny/di\";\nimport { IWcpUserPatModel } from \"@webiny/project/abstractions/models/index.js\";\nimport {\n CliCommandFactory,\n GetProjectSdkService,\n LoggerService,\n UiService\n} from \"~/abstractions/index.js\";\nimport { setTimeout } from \"node:timers/promises\";\nimport { WcpUserPatModel } from \"@webiny/project/models/index.js\";\nimport open from \"open\";\n\nconst sleep = (ms: number = 1500) => setTimeout(ms);\n\n// 120 retries * 2000ms interval = 4 minutes until the command returns an error.\nconst LOGIN_RETRIES_COUNT = 30;\nconst LOGIN_RETRIES_INTERVAL = 2_000;\n\ninterface ILoginCommandParams {\n pat?: string;\n}\n\nexport class LoginCommand implements CliCommandFactory.Interface<ILoginCommandParams> {\n constructor(\n private getProjectSdkService: GetProjectSdkService.Interface,\n private uiService: UiService.Interface,\n private loggerService: LoggerService.Interface\n ) {}\n\n async execute(): Promise<CliCommandFactory.CommandDefinition<ILoginCommandParams>> {\n return {\n name: \"login\",\n description: \"Log in to Webiny Control Panel\",\n examples: [\"$0 login\"],\n options: [\n {\n name: \"pat\",\n description: \"Personal Access Token (PAT) to use for authentication\",\n type: \"string\"\n }\n ],\n handler: async ({ pat: patFromParams }: ILoginCommandParams) => {\n const projectSdk = await this.getProjectSdkService.execute();\n const wcp = projectSdk.wcp;\n const ui = this.uiService;\n const logger = this.loggerService;\n\n let pat: IWcpUserPatModel | null = null;\n\n if (patFromParams) {\n pat = await wcp.getUserPat(patFromParams);\n\n // If we've received a PAT that has expiration, let's create a long-lived PAT.\n // We don't want to have our users interrupted because of an expired PAT.\n if (pat && pat.expiresOn) {\n pat = await wcp.createUserPat({ meta: pat.meta }, pat.token);\n }\n } else {\n const generatedPat = await wcp.generateUserPat();\n\n const queryParams = `pat=${generatedPat}&pat_name=${encodeURIComponent(\n \"Webiny CLI\"\n )}&ref=cli`;\n\n const openUrl = wcp.getWcpAppUrl().join(`/login/cli?${queryParams}`).toString();\n\n logger.debug(`Opening %s...`, openUrl);\n await open(openUrl);\n\n const graphql = {\n variables: { token: generatedPat },\n headers: {\n Authorization: generatedPat\n }\n };\n\n let retries = 0;\n\n const result = await new Promise<WcpUserPatModel | null>(resolve => {\n const interval = setInterval(async () => {\n retries++;\n if (retries > LOGIN_RETRIES_COUNT) {\n clearInterval(interval);\n resolve(null);\n }\n\n try {\n const pat = await wcp.getUserPat(generatedPat);\n clearInterval(interval);\n resolve(pat);\n } catch (err) {\n // Do nothing.\n logger.debug(\n {\n err,\n graphqlRequest: graphql\n },\n `Could not login. Will try again in ${LOGIN_RETRIES_INTERVAL}ms.`\n );\n }\n }, LOGIN_RETRIES_INTERVAL);\n });\n\n if (!result) {\n throw new Error(\n `Could not login. Did you complete the sign in / sign up process at ${wcp\n .getWcpAppUrl()\n .toString()}?`\n );\n }\n\n pat = result;\n }\n\n if (!pat) {\n throw new Error(\n `Could not log in. Could not obtain a valid Personal Access Token.`\n );\n }\n\n projectSdk.wcp.storePatToLocalStorage(pat.token);\n\n ui.success(`%s You've successfully logged in to Webiny Control Panel.`, \"✔\");\n\n let projectLinked = await projectSdk.getProjectId().then(id => !!id);\n if (projectLinked) {\n return;\n }\n\n // If we have `orgId` and `projectId` in PAT's metadata, let's immediately link the project.\n if (pat.meta && pat.meta.orgId && pat.meta.projectId) {\n await sleep();\n ui.emptyLine();\n\n const { orgId, projectId } = pat.meta;\n\n const id = `${orgId}/${projectId}`;\n ui.info(`Project %s detected. Linking...`, id);\n await projectSdk.setProjectId(id);\n\n await sleep();\n ui.success(`Project %s linked successfully.`, id);\n projectLinked = true;\n }\n\n await sleep();\n\n ui.emptyLine();\n ui.textBold(\"Next Steps\");\n\n if (!projectLinked) {\n ui.text(`‣ link your project via the \"yarn webiny project link\" command`);\n }\n\n ui.text(`‣ deploy your project via the \"yarn webiny deploy\" command`);\n }\n };\n }\n}\n\nexport const loginCommand = createImplementation({\n abstraction: CliCommandFactory,\n implementation: LoginCommand,\n dependencies: [GetProjectSdkService, UiService, LoggerService]\n});\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,13 @@
1
+ import { CliCommandFactory, GetProjectSdkService, UiService } from "../../abstractions/index.js";
2
+ export declare class LogoutCommand implements CliCommandFactory.Interface<void> {
3
+ private getProjectSdkService;
4
+ private uiService;
5
+ constructor(getProjectSdkService: GetProjectSdkService.Interface, uiService: UiService.Interface);
6
+ execute(): Promise<{
7
+ name: string;
8
+ description: string;
9
+ examples: string[];
10
+ handler: () => Promise<void>;
11
+ }>;
12
+ }
13
+ export declare const logoutCommand: import("@webiny/di").Implementation<typeof LogoutCommand>;
@@ -0,0 +1,29 @@
1
+ import { createImplementation } from "@webiny/di";
2
+ import { CliCommandFactory, GetProjectSdkService, UiService } from "../../abstractions/index.js";
3
+ export class LogoutCommand {
4
+ constructor(getProjectSdkService, uiService) {
5
+ this.getProjectSdkService = getProjectSdkService;
6
+ this.uiService = uiService;
7
+ }
8
+ async execute() {
9
+ const projectSdk = await this.getProjectSdkService.execute();
10
+ const wcp = projectSdk.wcp;
11
+ const ui = this.uiService;
12
+ return {
13
+ name: "logout",
14
+ description: "Log out from Webiny Control Panel",
15
+ examples: ["$0 logout"],
16
+ handler: async () => {
17
+ wcp.unsetPatFromLocalStorage();
18
+ ui.success(`You've successfully logged out from Webiny Control Panel.`);
19
+ }
20
+ };
21
+ }
22
+ }
23
+ export const logoutCommand = createImplementation({
24
+ abstraction: CliCommandFactory,
25
+ implementation: LogoutCommand,
26
+ dependencies: [GetProjectSdkService, UiService]
27
+ });
28
+
29
+ //# sourceMappingURL=LogoutCommand.js.map