@webiny/cli-core 0.0.0-unstable.6844005670 → 0.0.0-unstable.7be00a75a9

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 (268) hide show
  1. package/Cli.js +12 -11
  2. package/Cli.js.map +1 -1
  3. package/abstractions/createAbstraction.js +3 -2
  4. package/abstractions/createAbstraction.js.map +1 -1
  5. package/abstractions/features/CliCommand.d.ts +3 -0
  6. package/abstractions/features/CliCommand.js +2 -1
  7. package/abstractions/features/CliCommand.js.map +1 -1
  8. package/abstractions/features/ErrorHandler.js +2 -1
  9. package/abstractions/features/ErrorHandler.js.map +1 -1
  10. package/abstractions/features/GlobalCliOption.js +2 -1
  11. package/abstractions/features/GlobalCliOption.js.map +1 -1
  12. package/abstractions/features/IsCi.js +2 -1
  13. package/abstractions/features/IsCi.js.map +1 -1
  14. package/abstractions/features/index.js +0 -2
  15. package/abstractions/features/types.js +0 -3
  16. package/abstractions/index.js +0 -2
  17. package/abstractions/services/ArgvParserService.js +2 -1
  18. package/abstractions/services/ArgvParserService.js.map +1 -1
  19. package/abstractions/services/CliParamsService.js +2 -1
  20. package/abstractions/services/CliParamsService.js.map +1 -1
  21. package/abstractions/services/CommandsRegistryService.js +2 -1
  22. package/abstractions/services/CommandsRegistryService.js.map +1 -1
  23. package/abstractions/services/GetArgvService.js +2 -1
  24. package/abstractions/services/GetArgvService.js.map +1 -1
  25. package/abstractions/services/GetCliRunnerService.js +2 -1
  26. package/abstractions/services/GetCliRunnerService.js.map +1 -1
  27. package/abstractions/services/GetIsCiService.js +2 -1
  28. package/abstractions/services/GetIsCiService.js.map +1 -1
  29. package/abstractions/services/GetProjectSdkService.js +2 -1
  30. package/abstractions/services/GetProjectSdkService.js.map +1 -1
  31. package/abstractions/services/GlobalOptionsRegistryService.js +2 -1
  32. package/abstractions/services/GlobalOptionsRegistryService.js.map +1 -1
  33. package/abstractions/services/LoggerService.js +2 -1
  34. package/abstractions/services/LoggerService.js.map +1 -1
  35. package/abstractions/services/RunCliRunnerService.js +2 -1
  36. package/abstractions/services/RunCliRunnerService.js.map +1 -1
  37. package/abstractions/services/StdioService.js +2 -1
  38. package/abstractions/services/StdioService.js.map +1 -1
  39. package/abstractions/services/UiService.js +2 -1
  40. package/abstractions/services/UiService.js.map +1 -1
  41. package/abstractions/services/index.js +0 -2
  42. package/createCliContainer.js +89 -118
  43. package/createCliContainer.js.map +1 -1
  44. package/decorators/CommandsWithGracefulErrorHandling.js +34 -32
  45. package/decorators/CommandsWithGracefulErrorHandling.js.map +1 -1
  46. package/decorators/DeployCommandWithTelemetry.js +72 -82
  47. package/decorators/DeployCommandWithTelemetry.js.map +1 -1
  48. package/decorators/index.js +0 -2
  49. package/exports/cli/command.js +0 -2
  50. package/exports/cli.d.ts +2 -0
  51. package/exports/cli.js +2 -0
  52. package/extensions/CliCommand.d.ts +3 -7
  53. package/extensions/CliCommand.js +15 -18
  54. package/extensions/CliCommand.js.map +1 -1
  55. package/extensions/CliCommandDecorator.d.ts +3 -7
  56. package/extensions/CliCommandDecorator.js +15 -18
  57. package/extensions/CliCommandDecorator.js.map +1 -1
  58. package/extensions/index.d.ts +2 -6
  59. package/extensions/index.js +5 -2
  60. package/extensions/index.js.map +1 -1
  61. package/features/AboutCommand.js +80 -86
  62. package/features/AboutCommand.js.map +1 -1
  63. package/features/BuildCommand/BuildCommand.js +46 -36
  64. package/features/BuildCommand/BuildCommand.js.map +1 -1
  65. package/features/BuildCommand/buildRunners/BaseBuildRunner.js +10 -13
  66. package/features/BuildCommand/buildRunners/BaseBuildRunner.js.map +1 -1
  67. package/features/BuildCommand/buildRunners/BuildRunner.js +18 -21
  68. package/features/BuildCommand/buildRunners/BuildRunner.js.map +1 -1
  69. package/features/BuildCommand/buildRunners/MultipleBuildsRunner.js +20 -19
  70. package/features/BuildCommand/buildRunners/MultipleBuildsRunner.js.map +1 -1
  71. package/features/BuildCommand/buildRunners/SingleBuildRunner.js +15 -14
  72. package/features/BuildCommand/buildRunners/SingleBuildRunner.js.map +1 -1
  73. package/features/BuildCommand/buildRunners/ZeroBuildsRunner.js +3 -4
  74. package/features/BuildCommand/buildRunners/ZeroBuildsRunner.js.map +1 -1
  75. package/features/BuildCommand/index.js +0 -2
  76. package/features/ConfigCommand.js +55 -56
  77. package/features/ConfigCommand.js.map +1 -1
  78. package/features/DeployCommand/DeployCommand.d.ts +1 -1
  79. package/features/DeployCommand/DeployCommand.js +164 -156
  80. package/features/DeployCommand/DeployCommand.js.map +1 -1
  81. package/features/DeployCommand/deployOutputs/BaseDeployOutput.js +12 -17
  82. package/features/DeployCommand/deployOutputs/BaseDeployOutput.js.map +1 -1
  83. package/features/DeployCommand/deployOutputs/DeployOutput.js +16 -17
  84. package/features/DeployCommand/deployOutputs/DeployOutput.js.map +1 -1
  85. package/features/DeployCommand/deployOutputs/NoDeploymentLogsDeployOutput.js +89 -54
  86. package/features/DeployCommand/deployOutputs/NoDeploymentLogsDeployOutput.js.map +1 -1
  87. package/features/DeployCommand/deployOutputs/WithDeploymentLogsDeployOutput.js +24 -37
  88. package/features/DeployCommand/deployOutputs/WithDeploymentLogsDeployOutput.js.map +1 -1
  89. package/features/DeployCommand/index.js +0 -2
  90. package/features/DepsSync/BuildDependencyTree.js +16 -21
  91. package/features/DepsSync/BuildDependencyTree.js.map +1 -1
  92. package/features/DepsSync/DependencyTree.js +108 -119
  93. package/features/DepsSync/DependencyTree.js.map +1 -1
  94. package/features/DepsSync/ListAllPackageJsonFiles.js +19 -14
  95. package/features/DepsSync/ListAllPackageJsonFiles.js.map +1 -1
  96. package/features/DepsSync/ListAllPackages.js +7 -9
  97. package/features/DepsSync/ListAllPackages.js.map +1 -1
  98. package/features/DepsSync/commands/SyncDepsCommand.js +30 -24
  99. package/features/DepsSync/commands/SyncDepsCommand.js.map +1 -1
  100. package/features/DepsSync/commands/VerifyDepsCommand.js +69 -70
  101. package/features/DepsSync/commands/VerifyDepsCommand.js.map +1 -1
  102. package/features/DepsSync/createDependencyTree.js +25 -18
  103. package/features/DepsSync/createDependencyTree.js.map +1 -1
  104. package/features/DepsSync/createReferenceFile.js +21 -25
  105. package/features/DepsSync/createReferenceFile.js.map +1 -1
  106. package/features/DepsSync/index.js +0 -2
  107. package/features/DepsSync/paths.js +3 -6
  108. package/features/DepsSync/paths.js.map +1 -1
  109. package/features/DepsSync/types.js +7 -6
  110. package/features/DepsSync/types.js.map +1 -1
  111. package/features/DestroyCommand/DestroyCommand.js +71 -67
  112. package/features/DestroyCommand/DestroyCommand.js.map +1 -1
  113. package/features/DestroyCommand/index.js +0 -2
  114. package/features/DisableTelemetryCommand.js +28 -25
  115. package/features/DisableTelemetryCommand.js.map +1 -1
  116. package/features/EnableTelemetryCommand.js +28 -25
  117. package/features/EnableTelemetryCommand.js.map +1 -1
  118. package/features/ExtensionCommand/ExtensionCommand.js +60 -63
  119. package/features/ExtensionCommand/ExtensionCommand.js.map +1 -1
  120. package/features/ExtensionCommand/index.js +0 -2
  121. package/features/InfoCommand/InfoCommand.js +54 -56
  122. package/features/InfoCommand/InfoCommand.js.map +1 -1
  123. package/features/InfoCommand/PrintInfoForEnv.js +31 -47
  124. package/features/InfoCommand/PrintInfoForEnv.js.map +1 -1
  125. package/features/InfoCommand/index.js +0 -2
  126. package/features/IsCi/IsCi.js +14 -11
  127. package/features/IsCi/IsCi.js.map +1 -1
  128. package/features/IsCi/index.js +1 -3
  129. package/features/OpenCommand.js +48 -47
  130. package/features/OpenCommand.js.map +1 -1
  131. package/features/OutputCommand.js +56 -69
  132. package/features/OutputCommand.js.map +1 -1
  133. package/features/PulumiCommand/PulumiCommand.js +48 -41
  134. package/features/PulumiCommand/PulumiCommand.js.map +1 -1
  135. package/features/PulumiCommand/index.js +0 -2
  136. package/features/RefreshCommand/RefreshCommand.js +42 -36
  137. package/features/RefreshCommand/RefreshCommand.js.map +1 -1
  138. package/features/RefreshCommand/index.js +0 -2
  139. package/features/UpgradeCommand/UpgradeCommand.d.ts +29 -0
  140. package/features/UpgradeCommand/UpgradeCommand.js +123 -0
  141. package/features/UpgradeCommand/UpgradeCommand.js.map +1 -0
  142. package/features/UpgradeCommand/UpgradeCommandHandler.d.ts +11 -0
  143. package/features/UpgradeCommand/UpgradeCommandHandler.js +102 -0
  144. package/features/UpgradeCommand/UpgradeCommandHandler.js.map +1 -0
  145. package/features/UpgradeCommand/abstraction.d.ts +23 -0
  146. package/features/UpgradeCommand/abstraction.js +5 -0
  147. package/features/UpgradeCommand/abstraction.js.map +1 -0
  148. package/features/UpgradeCommand/feature.d.ts +4 -0
  149. package/features/UpgradeCommand/feature.js +13 -0
  150. package/features/UpgradeCommand/feature.js.map +1 -0
  151. package/features/UpgradeCommand/index.d.ts +2 -0
  152. package/features/UpgradeCommand/index.js +2 -0
  153. package/features/WatchCommand/WatchCommand.js +131 -131
  154. package/features/WatchCommand/WatchCommand.js.map +1 -1
  155. package/features/WatchCommand/createPrefixer.js +11 -15
  156. package/features/WatchCommand/createPrefixer.js.map +1 -1
  157. package/features/WatchCommand/getRandomColorForString.js +86 -8
  158. package/features/WatchCommand/getRandomColorForString.js.map +1 -1
  159. package/features/WatchCommand/index.js +0 -2
  160. package/features/Wcp/LinkProjectCommand.js +119 -138
  161. package/features/Wcp/LinkProjectCommand.js.map +1 -1
  162. package/features/Wcp/LoginCommand.js +104 -118
  163. package/features/Wcp/LoginCommand.js.map +1 -1
  164. package/features/Wcp/LogoutCommand.js +29 -23
  165. package/features/Wcp/LogoutCommand.js.map +1 -1
  166. package/features/Wcp/WhoAmICommand.js +33 -29
  167. package/features/Wcp/WhoAmICommand.js.map +1 -1
  168. package/features/common/index.js +0 -2
  169. package/features/common/options.js +41 -50
  170. package/features/common/options.js.map +1 -1
  171. package/features/globalOptions/LogLevelGlobalOption.js +25 -16
  172. package/features/globalOptions/LogLevelGlobalOption.js.map +1 -1
  173. package/features/globalOptions/ShowLogsGlobalOption.js +16 -15
  174. package/features/globalOptions/ShowLogsGlobalOption.js.map +1 -1
  175. package/features/globalOptions/StackTraceGlobalOption.js +16 -15
  176. package/features/globalOptions/StackTraceGlobalOption.js.map +1 -1
  177. package/features/globalOptions/index.js +0 -2
  178. package/features/gracefulErrorHandlers/DdbPutItemConditionalCheckFailedGracefulErrorHandler.js +17 -16
  179. package/features/gracefulErrorHandlers/DdbPutItemConditionalCheckFailedGracefulErrorHandler.js.map +1 -1
  180. package/features/gracefulErrorHandlers/MissingFilesInBuildGracefulErrorHandler.js +12 -18
  181. package/features/gracefulErrorHandlers/MissingFilesInBuildGracefulErrorHandler.js.map +1 -1
  182. package/features/gracefulErrorHandlers/PendingOperationsGracefulErrorHandler.js +19 -19
  183. package/features/gracefulErrorHandlers/PendingOperationsGracefulErrorHandler.js.map +1 -1
  184. package/features/gracefulErrorHandlers/index.js +0 -2
  185. package/features/index.d.ts +1 -0
  186. package/features/index.js +1 -2
  187. package/features/utils/index.js +0 -2
  188. package/features/utils/measureDuration.js +7 -8
  189. package/features/utils/measureDuration.js.map +1 -1
  190. package/index.js +0 -2
  191. package/package.json +29 -24
  192. package/services/ArgvParserService/ArgvParserService.js +27 -33
  193. package/services/ArgvParserService/ArgvParserService.js.map +1 -1
  194. package/services/ArgvParserService/index.js +0 -2
  195. package/services/CliParamsService/CliParamsService.js +18 -15
  196. package/services/CliParamsService/CliParamsService.js.map +1 -1
  197. package/services/CliParamsService/index.js +0 -2
  198. package/services/CommandsRegistryService/CommandsRegistryService.js +19 -13
  199. package/services/CommandsRegistryService/CommandsRegistryService.js.map +1 -1
  200. package/services/CommandsRegistryService/index.js +0 -2
  201. package/services/GetArgvService/GetArgvService.js +14 -11
  202. package/services/GetArgvService/GetArgvService.js.map +1 -1
  203. package/services/GetArgvService/index.js +0 -2
  204. package/services/GetCliRunnerService/GetCliRunnerService.js +119 -148
  205. package/services/GetCliRunnerService/GetCliRunnerService.js.map +1 -1
  206. package/services/GetCliRunnerService/index.js +0 -2
  207. package/services/GetIsCiService/GetIsCiService.js +9 -8
  208. package/services/GetIsCiService/GetIsCiService.js.map +1 -1
  209. package/services/GetIsCiService/index.js +1 -3
  210. package/services/GetProjectSdkService/GetProjectSdkService.js +25 -24
  211. package/services/GetProjectSdkService/GetProjectSdkService.js.map +1 -1
  212. package/services/GetProjectSdkService/index.js +0 -2
  213. package/services/GlobalOptionsRegistryService/GlobalOptionsRegistryService.js +19 -13
  214. package/services/GlobalOptionsRegistryService/GlobalOptionsRegistryService.js.map +1 -1
  215. package/services/GlobalOptionsRegistryService/index.js +0 -2
  216. package/services/LoggerService/LoggerService.js +76 -88
  217. package/services/LoggerService/LoggerService.js.map +1 -1
  218. package/services/LoggerService/index.js +0 -2
  219. package/services/RunCliRunnerService/RunCliRunnerService.js +15 -13
  220. package/services/RunCliRunnerService/RunCliRunnerService.js.map +1 -1
  221. package/services/RunCliRunnerService/index.js +0 -2
  222. package/services/StdioService/StdioService.js +15 -14
  223. package/services/StdioService/StdioService.js.map +1 -1
  224. package/services/StdioService/index.js +0 -2
  225. package/services/UiService/UiService.js +55 -58
  226. package/services/UiService/UiService.js.map +1 -1
  227. package/services/UiService/index.js +0 -2
  228. package/services/index.js +0 -2
  229. package/utils/ManuallyReportedError.js +7 -6
  230. package/utils/ManuallyReportedError.js.map +1 -1
  231. package/abstractions/features/index.js.map +0 -1
  232. package/abstractions/features/types.js.map +0 -1
  233. package/abstractions/index.js.map +0 -1
  234. package/abstractions/services/index.js.map +0 -1
  235. package/decorators/index.js.map +0 -1
  236. package/exports/cli/command.js.map +0 -1
  237. package/exports/cli/index.d.ts +0 -2
  238. package/exports/cli/index.js +0 -4
  239. package/exports/cli/index.js.map +0 -1
  240. package/features/BuildCommand/index.js.map +0 -1
  241. package/features/DeployCommand/index.js.map +0 -1
  242. package/features/DepsSync/index.js.map +0 -1
  243. package/features/DestroyCommand/index.js.map +0 -1
  244. package/features/ExtensionCommand/index.js.map +0 -1
  245. package/features/InfoCommand/index.js.map +0 -1
  246. package/features/IsCi/index.js.map +0 -1
  247. package/features/PulumiCommand/index.js.map +0 -1
  248. package/features/RefreshCommand/index.js.map +0 -1
  249. package/features/WatchCommand/index.js.map +0 -1
  250. package/features/common/index.js.map +0 -1
  251. package/features/globalOptions/index.js.map +0 -1
  252. package/features/gracefulErrorHandlers/index.js.map +0 -1
  253. package/features/index.js.map +0 -1
  254. package/features/utils/index.js.map +0 -1
  255. package/index.js.map +0 -1
  256. package/services/ArgvParserService/index.js.map +0 -1
  257. package/services/CliParamsService/index.js.map +0 -1
  258. package/services/CommandsRegistryService/index.js.map +0 -1
  259. package/services/GetArgvService/index.js.map +0 -1
  260. package/services/GetCliRunnerService/index.js.map +0 -1
  261. package/services/GetIsCiService/index.js.map +0 -1
  262. package/services/GetProjectSdkService/index.js.map +0 -1
  263. package/services/GlobalOptionsRegistryService/index.js.map +0 -1
  264. package/services/LoggerService/index.js.map +0 -1
  265. package/services/RunCliRunnerService/index.js.map +0 -1
  266. package/services/StdioService/index.js.map +0 -1
  267. package/services/UiService/index.js.map +0 -1
  268. package/services/index.js.map +0 -1
@@ -1,126 +1,112 @@
1
1
  import { createImplementation } from "@webiny/di";
2
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.
3
+ import { setTimeout as promises_setTimeout } from "node:timers/promises";
4
+ import open_0 from "open";
5
+ const sleep = (ms = 1500)=>promises_setTimeout(ms);
8
6
  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
7
+ const LOGIN_RETRIES_INTERVAL = 2000;
8
+ class LoginCommand {
9
+ constructor(getProjectSdkService, uiService, loggerService){
10
+ this.getProjectSdkService = getProjectSdkService;
11
+ this.uiService = uiService;
12
+ this.loggerService = loggerService;
13
+ }
14
+ async execute() {
15
+ return {
16
+ name: "login",
17
+ description: "Log in to Webiny Control Panel",
18
+ examples: [
19
+ "$0 login"
20
+ ],
21
+ options: [
22
+ {
23
+ name: "pat",
24
+ description: "Personal Access Token (PAT) to use for authentication",
25
+ type: "string"
26
+ }
27
+ ],
28
+ handler: async ({ pat: patFromParams })=>{
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
+ if (pat && pat.expiresOn) pat = await wcp.createUserPat({
37
+ meta: pat.meta
38
+ }, pat.token);
39
+ } else {
40
+ const generatedPat = await wcp.generateUserPat();
41
+ const queryParams = `pat=${generatedPat}&pat_name=${encodeURIComponent("Webiny CLI")}&ref=cli`;
42
+ const openUrl = wcp.getWcpAppUrl().join(`/login/cli?${queryParams}`).toString();
43
+ logger.debug("Opening %s...", openUrl);
44
+ await open_0(openUrl);
45
+ const graphql = {
46
+ variables: {
47
+ token: generatedPat
48
+ },
49
+ headers: {
50
+ Authorization: generatedPat
51
+ }
52
+ };
53
+ let retries = 0;
54
+ const result = await new Promise((resolve)=>{
55
+ const interval = setInterval(async ()=>{
56
+ retries++;
57
+ if (retries > LOGIN_RETRIES_COUNT) {
58
+ clearInterval(interval);
59
+ resolve(null);
60
+ }
61
+ try {
62
+ const pat = await wcp.getUserPat(generatedPat);
63
+ clearInterval(interval);
64
+ resolve(pat);
65
+ } catch (err) {
66
+ logger.debug({
67
+ err,
68
+ graphqlRequest: graphql
69
+ }, `Could not login. Will try again in ${LOGIN_RETRIES_INTERVAL}ms.`);
70
+ }
71
+ }, LOGIN_RETRIES_INTERVAL);
72
+ });
73
+ if (!result) throw new Error(`Could not login. Did you complete the sign in / sign up process at ${wcp.getWcpAppUrl().toString()}?`);
74
+ pat = result;
75
+ }
76
+ if (!pat) throw new Error("Could not log in. Could not obtain a valid Personal Access Token.");
77
+ projectSdk.wcp.storePatToLocalStorage(pat.token);
78
+ ui.success("%s You've successfully logged in to Webiny Control Panel.", "✔");
79
+ let projectLinked = await projectSdk.getProjectId().then((id)=>!!id);
80
+ if (projectLinked) return;
81
+ if (pat.meta && pat.meta.orgId && pat.meta.projectId) {
82
+ await sleep();
83
+ ui.emptyLine();
84
+ const { orgId, projectId } = pat.meta;
85
+ const id = `${orgId}/${projectId}`;
86
+ ui.info("Project %s detected. Linking...", id);
87
+ await projectSdk.setProjectId(id);
88
+ await sleep();
89
+ ui.success("Project %s linked successfully.", id);
90
+ projectLinked = true;
91
+ }
92
+ await sleep();
93
+ ui.emptyLine();
94
+ ui.textBold("Next Steps");
95
+ if (!projectLinked) ui.text('‣ link your project via the "yarn webiny project link" command');
96
+ ui.text('‣ deploy your project via the "yarn webiny deploy" command');
56
97
  }
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
- }
98
+ };
99
+ }
119
100
  }
120
- export const loginCommand = createImplementation({
121
- abstraction: CliCommandFactory,
122
- implementation: LoginCommand,
123
- dependencies: [GetProjectSdkService, UiService, LoggerService]
101
+ const loginCommand = createImplementation({
102
+ abstraction: CliCommandFactory,
103
+ implementation: LoginCommand,
104
+ dependencies: [
105
+ GetProjectSdkService,
106
+ UiService,
107
+ LoggerService
108
+ ]
124
109
  });
110
+ export { LoginCommand, loginCommand };
125
111
 
126
112
  //# sourceMappingURL=LoginCommand.js.map
@@ -1 +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":[]}
1
+ {"version":3,"file":"features/Wcp/LoginCommand.js","sources":["../../../src/features/Wcp/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"],"names":["sleep","ms","setTimeout","LOGIN_RETRIES_COUNT","LOGIN_RETRIES_INTERVAL","LoginCommand","getProjectSdkService","uiService","loggerService","patFromParams","projectSdk","wcp","ui","logger","pat","generatedPat","queryParams","encodeURIComponent","openUrl","open","graphql","retries","result","Promise","resolve","interval","setInterval","clearInterval","err","Error","projectLinked","id","orgId","projectId","loginCommand","createImplementation","CliCommandFactory","GetProjectSdkService","UiService","LoggerService"],"mappings":"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"}
@@ -1,29 +1,35 @@
1
1
  import { createImplementation } from "@webiny/di";
2
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
- }
3
+ 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: [
16
+ "$0 logout"
17
+ ],
18
+ handler: async ()=>{
19
+ wcp.unsetPatFromLocalStorage();
20
+ ui.success("You've successfully logged out from Webiny Control Panel.");
21
+ }
22
+ };
23
+ }
22
24
  }
23
- export const logoutCommand = createImplementation({
24
- abstraction: CliCommandFactory,
25
- implementation: LogoutCommand,
26
- dependencies: [GetProjectSdkService, UiService]
25
+ const logoutCommand = createImplementation({
26
+ abstraction: CliCommandFactory,
27
+ implementation: LogoutCommand,
28
+ dependencies: [
29
+ GetProjectSdkService,
30
+ UiService
31
+ ]
27
32
  });
33
+ export { LogoutCommand, logoutCommand };
28
34
 
29
35
  //# sourceMappingURL=LogoutCommand.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createImplementation","CliCommandFactory","GetProjectSdkService","UiService","LogoutCommand","constructor","getProjectSdkService","uiService","execute","projectSdk","wcp","ui","name","description","examples","handler","unsetPatFromLocalStorage","success","logoutCommand","abstraction","implementation","dependencies"],"sources":["LogoutCommand.ts"],"sourcesContent":["import { createImplementation } from \"@webiny/di\";\nimport { CliCommandFactory, GetProjectSdkService, UiService } from \"~/abstractions/index.js\";\n\nexport class LogoutCommand 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: \"logout\",\n description: \"Log out from Webiny Control Panel\",\n examples: [\"$0 logout\"],\n handler: async () => {\n wcp.unsetPatFromLocalStorage();\n ui.success(`You've successfully logged out from Webiny Control Panel.`);\n }\n };\n }\n}\n\nexport const logoutCommand = createImplementation({\n abstraction: CliCommandFactory,\n implementation: LogoutCommand,\n dependencies: [GetProjectSdkService, UiService]\n});\n"],"mappings":"AAAA,SAASA,oBAAoB,QAAQ,YAAY;AACjD,SAASC,iBAAiB,EAAEC,oBAAoB,EAAEC,SAAS;AAE3D,OAAO,MAAMC,aAAa,CAA8C;EACpEC,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,QAAQ;MACdC,WAAW,EAAE,mCAAmC;MAChDC,QAAQ,EAAE,CAAC,WAAW,CAAC;MACvBC,OAAO,EAAE,MAAAA,CAAA,KAAY;QACjBL,GAAG,CAACM,wBAAwB,CAAC,CAAC;QAC9BL,EAAE,CAACM,OAAO,CAAC,2DAA2D,CAAC;MAC3E;IACJ,CAAC;EACL;AACJ;AAEA,OAAO,MAAMC,aAAa,GAAGlB,oBAAoB,CAAC;EAC9CmB,WAAW,EAAElB,iBAAiB;EAC9BmB,cAAc,EAAEhB,aAAa;EAC7BiB,YAAY,EAAE,CAACnB,oBAAoB,EAAEC,SAAS;AAClD,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/Wcp/LogoutCommand.js","sources":["../../../src/features/Wcp/LogoutCommand.ts"],"sourcesContent":["import { createImplementation } from \"@webiny/di\";\nimport { CliCommandFactory, GetProjectSdkService, UiService } from \"~/abstractions/index.js\";\n\nexport class LogoutCommand 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: \"logout\",\n description: \"Log out from Webiny Control Panel\",\n examples: [\"$0 logout\"],\n handler: async () => {\n wcp.unsetPatFromLocalStorage();\n ui.success(`You've successfully logged out from Webiny Control Panel.`);\n }\n };\n }\n}\n\nexport const logoutCommand = createImplementation({\n abstraction: CliCommandFactory,\n implementation: LogoutCommand,\n dependencies: [GetProjectSdkService, UiService]\n});\n"],"names":["LogoutCommand","getProjectSdkService","uiService","projectSdk","wcp","ui","logoutCommand","createImplementation","CliCommandFactory","GetProjectSdkService","UiService"],"mappings":";;AAGO,MAAMA;IACT,YACYC,oBAAoD,EACpDC,SAA8B,CACxC;aAFUD,oBAAoB,GAApBA;aACAC,SAAS,GAATA;IACT;IAEH,MAAM,UAAU;QACZ,MAAMC,aAAa,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO;QAC1D,MAAMC,MAAMD,WAAW,GAAG;QAC1B,MAAME,KAAK,IAAI,CAAC,SAAS;QAEzB,OAAO;YACH,MAAM;YACN,aAAa;YACb,UAAU;gBAAC;aAAY;YACvB,SAAS;gBACLD,IAAI,wBAAwB;gBAC5BC,GAAG,OAAO,CAAC;YACf;QACJ;IACJ;AACJ;AAEO,MAAMC,gBAAgBC,qBAAqB;IAC9C,aAAaC;IACb,gBAAgBR;IAChB,cAAc;QAACS;QAAsBC;KAAU;AACnD"}
@@ -1,34 +1,38 @@
1
1
  import { CliCommandFactory, GetProjectSdkService, UiService } from "../../abstractions/index.js";
2
- export class WhoAmICommand {
3
- constructor(getProjectSdkService, uiService) {
4
- this.getProjectSdkService = getProjectSdkService;
5
- this.uiService = uiService;
6
- }
7
- async execute() {
8
- const projectSdk = await this.getProjectSdkService.execute();
9
- const wcp = projectSdk.wcp;
10
- const ui = this.uiService;
11
- return {
12
- name: "whoami",
13
- description: "Display the current logged-in user",
14
- examples: ["$0 whoami"],
15
- handler: async () => {
16
- try {
17
- const user = await wcp.getUser();
18
- if (!user) {
19
- throw new Error();
20
- }
21
- ui.info("You are logged in to Webiny Control Panel as %s.", user.email);
22
- } catch {
23
- throw new Error(`It seems you are not logged in. Please login using the "yarn webiny login" command.`);
24
- }
25
- }
26
- };
27
- }
2
+ class WhoAmICommand {
3
+ constructor(getProjectSdkService, uiService){
4
+ this.getProjectSdkService = getProjectSdkService;
5
+ this.uiService = uiService;
6
+ }
7
+ async execute() {
8
+ const projectSdk = await this.getProjectSdkService.execute();
9
+ const wcp = projectSdk.wcp;
10
+ const ui = this.uiService;
11
+ return {
12
+ name: "whoami",
13
+ description: "Display the current logged-in user",
14
+ examples: [
15
+ "$0 whoami"
16
+ ],
17
+ handler: async ()=>{
18
+ try {
19
+ const user = await wcp.getUser();
20
+ if (!user) throw new Error();
21
+ ui.info("You are logged in to Webiny Control Panel as %s.", user.email);
22
+ } catch {
23
+ throw new Error('It seems you are not logged in. Please login using the "yarn webiny login" command.');
24
+ }
25
+ }
26
+ };
27
+ }
28
28
  }
29
- export const whoAmICommand = CliCommandFactory.createImplementation({
30
- implementation: WhoAmICommand,
31
- dependencies: [GetProjectSdkService, UiService]
29
+ const whoAmICommand = CliCommandFactory.createImplementation({
30
+ implementation: WhoAmICommand,
31
+ dependencies: [
32
+ GetProjectSdkService,
33
+ UiService
34
+ ]
32
35
  });
36
+ export { WhoAmICommand, whoAmICommand };
33
37
 
34
38
  //# sourceMappingURL=WhoAmICommand.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["CliCommandFactory","GetProjectSdkService","UiService","WhoAmICommand","constructor","getProjectSdkService","uiService","execute","projectSdk","wcp","ui","name","description","examples","handler","user","getUser","Error","info","email","whoAmICommand","createImplementation","implementation","dependencies"],"sources":["WhoAmICommand.ts"],"sourcesContent":["import { CliCommandFactory, GetProjectSdkService, UiService } from \"~/abstractions/index.js\";\n\nexport class WhoAmICommand 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: \"whoami\",\n description: \"Display the current logged-in user\",\n examples: [\"$0 whoami\"],\n handler: async () => {\n try {\n const user = await wcp.getUser();\n if (!user) {\n throw new Error();\n }\n ui.info(\"You are logged in to Webiny Control Panel as %s.\", user.email);\n } catch {\n throw new Error(\n `It seems you are not logged in. Please login using the \"yarn webiny login\" command.`\n );\n }\n }\n };\n }\n}\n\nexport const whoAmICommand = CliCommandFactory.createImplementation({\n implementation: WhoAmICommand,\n dependencies: [GetProjectSdkService, UiService]\n});\n"],"mappings":"AAAA,SAASA,iBAAiB,EAAEC,oBAAoB,EAAEC,SAAS;AAE3D,OAAO,MAAMC,aAAa,CAA8C;EACpEC,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,QAAQ;MACdC,WAAW,EAAE,oCAAoC;MACjDC,QAAQ,EAAE,CAAC,WAAW,CAAC;MACvBC,OAAO,EAAE,MAAAA,CAAA,KAAY;QACjB,IAAI;UACA,MAAMC,IAAI,GAAG,MAAMN,GAAG,CAACO,OAAO,CAAC,CAAC;UAChC,IAAI,CAACD,IAAI,EAAE;YACP,MAAM,IAAIE,KAAK,CAAC,CAAC;UACrB;UACAP,EAAE,CAACQ,IAAI,CAAC,kDAAkD,EAAEH,IAAI,CAACI,KAAK,CAAC;QAC3E,CAAC,CAAC,MAAM;UACJ,MAAM,IAAIF,KAAK,CACX,qFACJ,CAAC;QACL;MACJ;IACJ,CAAC;EACL;AACJ;AAEA,OAAO,MAAMG,aAAa,GAAGpB,iBAAiB,CAACqB,oBAAoB,CAAC;EAChEC,cAAc,EAAEnB,aAAa;EAC7BoB,YAAY,EAAE,CAACtB,oBAAoB,EAAEC,SAAS;AAClD,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/Wcp/WhoAmICommand.js","sources":["../../../src/features/Wcp/WhoAmICommand.ts"],"sourcesContent":["import { CliCommandFactory, GetProjectSdkService, UiService } from \"~/abstractions/index.js\";\n\nexport class WhoAmICommand 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: \"whoami\",\n description: \"Display the current logged-in user\",\n examples: [\"$0 whoami\"],\n handler: async () => {\n try {\n const user = await wcp.getUser();\n if (!user) {\n throw new Error();\n }\n ui.info(\"You are logged in to Webiny Control Panel as %s.\", user.email);\n } catch {\n throw new Error(\n `It seems you are not logged in. Please login using the \"yarn webiny login\" command.`\n );\n }\n }\n };\n }\n}\n\nexport const whoAmICommand = CliCommandFactory.createImplementation({\n implementation: WhoAmICommand,\n dependencies: [GetProjectSdkService, UiService]\n});\n"],"names":["WhoAmICommand","getProjectSdkService","uiService","projectSdk","wcp","ui","user","Error","whoAmICommand","CliCommandFactory","GetProjectSdkService","UiService"],"mappings":";AAEO,MAAMA;IACT,YACYC,oBAAoD,EACpDC,SAA8B,CACxC;aAFUD,oBAAoB,GAApBA;aACAC,SAAS,GAATA;IACT;IAEH,MAAM,UAAU;QACZ,MAAMC,aAAa,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO;QAC1D,MAAMC,MAAMD,WAAW,GAAG;QAC1B,MAAME,KAAK,IAAI,CAAC,SAAS;QAEzB,OAAO;YACH,MAAM;YACN,aAAa;YACb,UAAU;gBAAC;aAAY;YACvB,SAAS;gBACL,IAAI;oBACA,MAAMC,OAAO,MAAMF,IAAI,OAAO;oBAC9B,IAAI,CAACE,MACD,MAAM,IAAIC;oBAEdF,GAAG,IAAI,CAAC,oDAAoDC,KAAK,KAAK;gBAC1E,EAAE,OAAM;oBACJ,MAAM,IAAIC,MACN;gBAER;YACJ;QACJ;IACJ;AACJ;AAEO,MAAMC,gBAAgBC,kBAAkB,oBAAoB,CAAC;IAChE,gBAAgBT;IAChB,cAAc;QAACU;QAAsBC;KAAU;AACnD"}
@@ -1,3 +1 @@
1
1
  export * from "./options.js";
2
-
3
- //# sourceMappingURL=index.js.map
@@ -1,52 +1,43 @@
1
- export const createEnvOption = (overrides = {}) => {
2
- return {
3
- name: "env",
4
- description: "Environment name (dev, prod, etc.)",
5
- type: "string",
6
- default: "dev",
7
- validation: params => {
8
- const p = params;
9
- const hasApp = p.app || p.apps && p.apps.length > 0;
10
- if (hasApp && !p.env) {
11
- throw new Error("Environment name is required.");
12
- }
13
- return true;
14
- },
15
- ...overrides
16
- };
17
- };
18
- export const createVariantOption = (projectSdk, overrides = {}) => {
19
- return {
20
- name: "variant",
21
- description: "Variant name",
22
- type: "string",
23
- validation: params => {
24
- const isValid = projectSdk.isValidVariantName(params.variant);
25
- if (isValid.isErr()) {
26
- throw isValid.error;
27
- }
28
- return true;
29
- },
30
- ...overrides
31
- };
32
- };
33
- export const createRegionOption = (projectSdk, overrides = {}) => {
34
- return {
35
- name: "region",
36
- description: "Region to target",
37
- type: "string",
38
- validation: params => {
39
- const isValid = projectSdk.isValidRegionName(params.region);
40
- if (isValid.isErr()) {
41
- throw isValid.error;
42
- }
43
- return true;
44
- },
45
- ...overrides
46
- };
47
- };
48
- export const createBaseAppOptions = (projectSdk, overrides = {}) => {
49
- return [createEnvOption(overrides.env), createVariantOption(projectSdk, overrides.variant), createRegionOption(projectSdk, overrides.region)];
50
- };
1
+ const createEnvOption = (overrides = {})=>({
2
+ name: "env",
3
+ description: "Environment name (dev, prod, etc.)",
4
+ type: "string",
5
+ default: "dev",
6
+ validation: (params)=>{
7
+ const p = params;
8
+ const hasApp = p.app || p.apps && p.apps.length > 0;
9
+ if (hasApp && !p.env) throw new Error("Environment name is required.");
10
+ return true;
11
+ },
12
+ ...overrides
13
+ });
14
+ const createVariantOption = (projectSdk, overrides = {})=>({
15
+ name: "variant",
16
+ description: "Variant name",
17
+ type: "string",
18
+ validation: (params)=>{
19
+ const isValid = projectSdk.isValidVariantName(params.variant);
20
+ if (isValid.isErr()) throw isValid.error;
21
+ return true;
22
+ },
23
+ ...overrides
24
+ });
25
+ const createRegionOption = (projectSdk, overrides = {})=>({
26
+ name: "region",
27
+ description: "Region to target",
28
+ type: "string",
29
+ validation: (params)=>{
30
+ const isValid = projectSdk.isValidRegionName(params.region);
31
+ if (isValid.isErr()) throw isValid.error;
32
+ return true;
33
+ },
34
+ ...overrides
35
+ });
36
+ const createBaseAppOptions = (projectSdk, overrides = {})=>[
37
+ createEnvOption(overrides.env),
38
+ createVariantOption(projectSdk, overrides.variant),
39
+ createRegionOption(projectSdk, overrides.region)
40
+ ];
41
+ export { createBaseAppOptions, createEnvOption, createRegionOption, createVariantOption };
51
42
 
52
43
  //# sourceMappingURL=options.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createEnvOption","overrides","name","description","type","default","validation","params","p","hasApp","app","apps","length","env","Error","createVariantOption","projectSdk","isValid","isValidVariantName","variant","isErr","error","createRegionOption","isValidRegionName","region","createBaseAppOptions"],"sources":["options.ts"],"sourcesContent":["import { CliCommandFactory } from \"~/abstractions/index.js\";\nimport { ProjectSdk } from \"@webiny/project\";\n\nexport const createEnvOption = <T extends { env?: string }>(\n overrides: Partial<CliCommandFactory.OptionDefinition<T>> = {}\n): CliCommandFactory.OptionDefinition<T> => {\n return {\n name: \"env\",\n description: \"Environment name (dev, prod, etc.)\",\n type: \"string\",\n default: \"dev\",\n validation: params => {\n const p = params as any;\n const hasApp = p.app || (p.apps && p.apps.length > 0);\n if (hasApp && !p.env) {\n throw new Error(\"Environment name is required.\");\n }\n return true;\n },\n ...overrides\n };\n};\n\nexport const createVariantOption = <T extends { variant?: string }>(\n projectSdk: ProjectSdk,\n overrides: Partial<CliCommandFactory.OptionDefinition<T>> = {}\n): CliCommandFactory.OptionDefinition<T> => {\n return {\n name: \"variant\",\n description: \"Variant name\",\n type: \"string\",\n validation: params => {\n const isValid = projectSdk.isValidVariantName(params.variant);\n if (isValid.isErr()) {\n throw isValid.error;\n }\n return true;\n },\n ...overrides\n };\n};\n\nexport const createRegionOption = <T extends { region?: string }>(\n projectSdk: ProjectSdk,\n overrides: Partial<CliCommandFactory.OptionDefinition<T>> = {}\n): CliCommandFactory.OptionDefinition<T> => {\n return {\n name: \"region\",\n description: \"Region to target\",\n type: \"string\",\n validation: params => {\n const isValid = projectSdk.isValidRegionName(params.region);\n if (isValid.isErr()) {\n throw isValid.error;\n }\n return true;\n },\n ...overrides\n };\n};\n\nexport const createBaseAppOptions = <T extends { env?: string; variant?: string; region?: string }>(\n projectSdk: ProjectSdk,\n overrides: {\n env?: Partial<CliCommandFactory.OptionDefinition<T>>;\n variant?: Partial<CliCommandFactory.OptionDefinition<T>>;\n region?: Partial<CliCommandFactory.OptionDefinition<T>>;\n } = {}\n): CliCommandFactory.OptionDefinition<T>[] => {\n return [\n createEnvOption(overrides.env),\n createVariantOption(projectSdk, overrides.variant),\n createRegionOption(projectSdk, overrides.region)\n ];\n};\n"],"mappings":"AAGA,OAAO,MAAMA,eAAe,GAAGA,CAC3BC,SAAyD,GAAG,CAAC,CAAC,KACtB;EACxC,OAAO;IACHC,IAAI,EAAE,KAAK;IACXC,WAAW,EAAE,oCAAoC;IACjDC,IAAI,EAAE,QAAQ;IACdC,OAAO,EAAE,KAAK;IACdC,UAAU,EAAEC,MAAM,IAAI;MAClB,MAAMC,CAAC,GAAGD,MAAa;MACvB,MAAME,MAAM,GAAGD,CAAC,CAACE,GAAG,IAAKF,CAAC,CAACG,IAAI,IAAIH,CAAC,CAACG,IAAI,CAACC,MAAM,GAAG,CAAE;MACrD,IAAIH,MAAM,IAAI,CAACD,CAAC,CAACK,GAAG,EAAE;QAClB,MAAM,IAAIC,KAAK,CAAC,+BAA+B,CAAC;MACpD;MACA,OAAO,IAAI;IACf,CAAC;IACD,GAAGb;EACP,CAAC;AACL,CAAC;AAED,OAAO,MAAMc,mBAAmB,GAAGA,CAC/BC,UAAsB,EACtBf,SAAyD,GAAG,CAAC,CAAC,KACtB;EACxC,OAAO;IACHC,IAAI,EAAE,SAAS;IACfC,WAAW,EAAE,cAAc;IAC3BC,IAAI,EAAE,QAAQ;IACdE,UAAU,EAAEC,MAAM,IAAI;MAClB,MAAMU,OAAO,GAAGD,UAAU,CAACE,kBAAkB,CAACX,MAAM,CAACY,OAAO,CAAC;MAC7D,IAAIF,OAAO,CAACG,KAAK,CAAC,CAAC,EAAE;QACjB,MAAMH,OAAO,CAACI,KAAK;MACvB;MACA,OAAO,IAAI;IACf,CAAC;IACD,GAAGpB;EACP,CAAC;AACL,CAAC;AAED,OAAO,MAAMqB,kBAAkB,GAAGA,CAC9BN,UAAsB,EACtBf,SAAyD,GAAG,CAAC,CAAC,KACtB;EACxC,OAAO;IACHC,IAAI,EAAE,QAAQ;IACdC,WAAW,EAAE,kBAAkB;IAC/BC,IAAI,EAAE,QAAQ;IACdE,UAAU,EAAEC,MAAM,IAAI;MAClB,MAAMU,OAAO,GAAGD,UAAU,CAACO,iBAAiB,CAAChB,MAAM,CAACiB,MAAM,CAAC;MAC3D,IAAIP,OAAO,CAACG,KAAK,CAAC,CAAC,EAAE;QACjB,MAAMH,OAAO,CAACI,KAAK;MACvB;MACA,OAAO,IAAI;IACf,CAAC;IACD,GAAGpB;EACP,CAAC;AACL,CAAC;AAED,OAAO,MAAMwB,oBAAoB,GAAGA,CAChCT,UAAsB,EACtBf,SAIC,GAAG,CAAC,CAAC,KACoC;EAC1C,OAAO,CACHD,eAAe,CAACC,SAAS,CAACY,GAAG,CAAC,EAC9BE,mBAAmB,CAACC,UAAU,EAAEf,SAAS,CAACkB,OAAO,CAAC,EAClDG,kBAAkB,CAACN,UAAU,EAAEf,SAAS,CAACuB,MAAM,CAAC,CACnD;AACL,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/common/options.js","sources":["../../../src/features/common/options.ts"],"sourcesContent":["import { CliCommandFactory } from \"~/abstractions/index.js\";\nimport { ProjectSdk } from \"@webiny/project\";\n\nexport const createEnvOption = <T extends { env?: string }>(\n overrides: Partial<CliCommandFactory.OptionDefinition<T>> = {}\n): CliCommandFactory.OptionDefinition<T> => {\n return {\n name: \"env\",\n description: \"Environment name (dev, prod, etc.)\",\n type: \"string\",\n default: \"dev\",\n validation: params => {\n const p = params as any;\n const hasApp = p.app || (p.apps && p.apps.length > 0);\n if (hasApp && !p.env) {\n throw new Error(\"Environment name is required.\");\n }\n return true;\n },\n ...overrides\n };\n};\n\nexport const createVariantOption = <T extends { variant?: string }>(\n projectSdk: ProjectSdk,\n overrides: Partial<CliCommandFactory.OptionDefinition<T>> = {}\n): CliCommandFactory.OptionDefinition<T> => {\n return {\n name: \"variant\",\n description: \"Variant name\",\n type: \"string\",\n validation: params => {\n const isValid = projectSdk.isValidVariantName(params.variant);\n if (isValid.isErr()) {\n throw isValid.error;\n }\n return true;\n },\n ...overrides\n };\n};\n\nexport const createRegionOption = <T extends { region?: string }>(\n projectSdk: ProjectSdk,\n overrides: Partial<CliCommandFactory.OptionDefinition<T>> = {}\n): CliCommandFactory.OptionDefinition<T> => {\n return {\n name: \"region\",\n description: \"Region to target\",\n type: \"string\",\n validation: params => {\n const isValid = projectSdk.isValidRegionName(params.region);\n if (isValid.isErr()) {\n throw isValid.error;\n }\n return true;\n },\n ...overrides\n };\n};\n\nexport const createBaseAppOptions = <T extends { env?: string; variant?: string; region?: string }>(\n projectSdk: ProjectSdk,\n overrides: {\n env?: Partial<CliCommandFactory.OptionDefinition<T>>;\n variant?: Partial<CliCommandFactory.OptionDefinition<T>>;\n region?: Partial<CliCommandFactory.OptionDefinition<T>>;\n } = {}\n): CliCommandFactory.OptionDefinition<T>[] => {\n return [\n createEnvOption(overrides.env),\n createVariantOption(projectSdk, overrides.variant),\n createRegionOption(projectSdk, overrides.region)\n ];\n};\n"],"names":["createEnvOption","overrides","params","p","hasApp","Error","createVariantOption","projectSdk","isValid","createRegionOption","createBaseAppOptions"],"mappings":"AAGO,MAAMA,kBAAkB,CAC3BC,YAA4D,CAAC,CAAC,GAEvD;QACH,MAAM;QACN,aAAa;QACb,MAAM;QACN,SAAS;QACT,YAAYC,CAAAA;YACR,MAAMC,IAAID;YACV,MAAME,SAASD,EAAE,GAAG,IAAKA,EAAE,IAAI,IAAIA,EAAE,IAAI,CAAC,MAAM,GAAG;YACnD,IAAIC,UAAU,CAACD,EAAE,GAAG,EAChB,MAAM,IAAIE,MAAM;YAEpB,OAAO;QACX;QACA,GAAGJ,SAAS;IAChB;AAGG,MAAMK,sBAAsB,CAC/BC,YACAN,YAA4D,CAAC,CAAC,GAEvD;QACH,MAAM;QACN,aAAa;QACb,MAAM;QACN,YAAYC,CAAAA;YACR,MAAMM,UAAUD,WAAW,kBAAkB,CAACL,OAAO,OAAO;YAC5D,IAAIM,QAAQ,KAAK,IACb,MAAMA,QAAQ,KAAK;YAEvB,OAAO;QACX;QACA,GAAGP,SAAS;IAChB;AAGG,MAAMQ,qBAAqB,CAC9BF,YACAN,YAA4D,CAAC,CAAC,GAEvD;QACH,MAAM;QACN,aAAa;QACb,MAAM;QACN,YAAYC,CAAAA;YACR,MAAMM,UAAUD,WAAW,iBAAiB,CAACL,OAAO,MAAM;YAC1D,IAAIM,QAAQ,KAAK,IACb,MAAMA,QAAQ,KAAK;YAEvB,OAAO;QACX;QACA,GAAGP,SAAS;IAChB;AAGG,MAAMS,uBAAuB,CAChCH,YACAN,YAII,CAAC,CAAC,GAEC;QACHD,gBAAgBC,UAAU,GAAG;QAC7BK,oBAAoBC,YAAYN,UAAU,OAAO;QACjDQ,mBAAmBF,YAAYN,UAAU,MAAM;KAClD"}
@@ -1,22 +1,31 @@
1
1
  import { createImplementation } from "@webiny/di";
2
2
  import { GlobalCliOption } from "../../abstractions/index.js";
3
- export class LogLevelGlobalOption {
4
- execute() {
5
- return {
6
- name: "log-level",
7
- config: {
8
- type: "string",
9
- default: "info",
10
- choices: ["silent", "fatal", "error", "warn", "info", "debug", "trace"],
11
- description: "Set the verbosity of logs"
12
- }
13
- };
14
- }
3
+ class LogLevelGlobalOption {
4
+ execute() {
5
+ return {
6
+ name: "log-level",
7
+ config: {
8
+ type: "string",
9
+ default: "info",
10
+ choices: [
11
+ "silent",
12
+ "fatal",
13
+ "error",
14
+ "warn",
15
+ "info",
16
+ "debug",
17
+ "trace"
18
+ ],
19
+ description: "Set the verbosity of logs"
20
+ }
21
+ };
22
+ }
15
23
  }
16
- export const logLevelGlobalOption = createImplementation({
17
- abstraction: GlobalCliOption,
18
- implementation: LogLevelGlobalOption,
19
- dependencies: []
24
+ const logLevelGlobalOption = createImplementation({
25
+ abstraction: GlobalCliOption,
26
+ implementation: LogLevelGlobalOption,
27
+ dependencies: []
20
28
  });
29
+ export { LogLevelGlobalOption, logLevelGlobalOption };
21
30
 
22
31
  //# sourceMappingURL=LogLevelGlobalOption.js.map