@webiny/cli-core 0.0.0-unstable.6f45466a1d → 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.
- package/Cli.js +12 -11
- package/Cli.js.map +1 -1
- package/abstractions/createAbstraction.js +3 -2
- package/abstractions/createAbstraction.js.map +1 -1
- package/abstractions/features/CliCommand.d.ts +4 -0
- package/abstractions/features/CliCommand.js +2 -1
- package/abstractions/features/CliCommand.js.map +1 -1
- package/abstractions/features/ErrorHandler.js +2 -1
- package/abstractions/features/ErrorHandler.js.map +1 -1
- package/abstractions/features/GlobalCliOption.js +2 -1
- package/abstractions/features/GlobalCliOption.js.map +1 -1
- package/abstractions/features/IsCi.js +2 -1
- package/abstractions/features/IsCi.js.map +1 -1
- package/abstractions/features/index.js +0 -2
- package/abstractions/features/types.js +0 -3
- package/abstractions/index.js +0 -2
- package/abstractions/services/ArgvParserService.js +2 -1
- package/abstractions/services/ArgvParserService.js.map +1 -1
- package/abstractions/services/CliParamsService.js +2 -1
- package/abstractions/services/CliParamsService.js.map +1 -1
- package/abstractions/services/CommandsRegistryService.js +2 -1
- package/abstractions/services/CommandsRegistryService.js.map +1 -1
- package/abstractions/services/GetArgvService.js +2 -1
- package/abstractions/services/GetArgvService.js.map +1 -1
- package/abstractions/services/GetCliRunnerService.js +2 -1
- package/abstractions/services/GetCliRunnerService.js.map +1 -1
- package/abstractions/services/GetIsCiService.js +2 -1
- package/abstractions/services/GetIsCiService.js.map +1 -1
- package/abstractions/services/GetProjectSdkService.js +2 -1
- package/abstractions/services/GetProjectSdkService.js.map +1 -1
- package/abstractions/services/GlobalOptionsRegistryService.js +2 -1
- package/abstractions/services/GlobalOptionsRegistryService.js.map +1 -1
- package/abstractions/services/LoggerService.js +2 -1
- package/abstractions/services/LoggerService.js.map +1 -1
- package/abstractions/services/RunCliRunnerService.js +2 -1
- package/abstractions/services/RunCliRunnerService.js.map +1 -1
- package/abstractions/services/StdioService.js +2 -1
- package/abstractions/services/StdioService.js.map +1 -1
- package/abstractions/services/UiService.js +2 -1
- package/abstractions/services/UiService.js.map +1 -1
- package/abstractions/services/index.js +0 -2
- package/createCliContainer.js +89 -118
- package/createCliContainer.js.map +1 -1
- package/decorators/CommandsWithGracefulErrorHandling.js +34 -32
- package/decorators/CommandsWithGracefulErrorHandling.js.map +1 -1
- package/decorators/DeployCommandWithTelemetry.js +72 -82
- package/decorators/DeployCommandWithTelemetry.js.map +1 -1
- package/decorators/index.js +0 -2
- package/exports/cli/command.js +0 -2
- package/exports/cli.d.ts +2 -0
- package/exports/cli.js +2 -0
- package/extensions/CliCommand.d.ts +3 -7
- package/extensions/CliCommand.js +15 -18
- package/extensions/CliCommand.js.map +1 -1
- package/extensions/CliCommandDecorator.d.ts +3 -7
- package/extensions/CliCommandDecorator.js +15 -18
- package/extensions/CliCommandDecorator.js.map +1 -1
- package/extensions/index.d.ts +2 -6
- package/extensions/index.js +5 -2
- package/extensions/index.js.map +1 -1
- package/features/AboutCommand.js +80 -86
- package/features/AboutCommand.js.map +1 -1
- package/features/BuildCommand/BuildCommand.js +46 -36
- package/features/BuildCommand/BuildCommand.js.map +1 -1
- package/features/BuildCommand/buildRunners/BaseBuildRunner.js +10 -13
- package/features/BuildCommand/buildRunners/BaseBuildRunner.js.map +1 -1
- package/features/BuildCommand/buildRunners/BuildRunner.js +18 -21
- package/features/BuildCommand/buildRunners/BuildRunner.js.map +1 -1
- package/features/BuildCommand/buildRunners/MultipleBuildsRunner.js +20 -19
- package/features/BuildCommand/buildRunners/MultipleBuildsRunner.js.map +1 -1
- package/features/BuildCommand/buildRunners/SingleBuildRunner.js +15 -14
- package/features/BuildCommand/buildRunners/SingleBuildRunner.js.map +1 -1
- package/features/BuildCommand/buildRunners/ZeroBuildsRunner.js +3 -4
- package/features/BuildCommand/buildRunners/ZeroBuildsRunner.js.map +1 -1
- package/features/BuildCommand/index.js +0 -2
- package/features/ConfigCommand.js +55 -56
- package/features/ConfigCommand.js.map +1 -1
- package/features/DeployCommand/DeployCommand.d.ts +1 -1
- package/features/DeployCommand/DeployCommand.js +164 -156
- package/features/DeployCommand/DeployCommand.js.map +1 -1
- package/features/DeployCommand/deployOutputs/BaseDeployOutput.js +12 -17
- package/features/DeployCommand/deployOutputs/BaseDeployOutput.js.map +1 -1
- package/features/DeployCommand/deployOutputs/DeployOutput.js +16 -17
- package/features/DeployCommand/deployOutputs/DeployOutput.js.map +1 -1
- package/features/DeployCommand/deployOutputs/NoDeploymentLogsDeployOutput.js +89 -54
- package/features/DeployCommand/deployOutputs/NoDeploymentLogsDeployOutput.js.map +1 -1
- package/features/DeployCommand/deployOutputs/WithDeploymentLogsDeployOutput.js +24 -37
- package/features/DeployCommand/deployOutputs/WithDeploymentLogsDeployOutput.js.map +1 -1
- package/features/DeployCommand/index.js +0 -2
- package/features/DepsSync/BuildDependencyTree.js +17 -22
- package/features/DepsSync/BuildDependencyTree.js.map +1 -1
- package/features/DepsSync/DependencyTree.js +108 -119
- package/features/DepsSync/DependencyTree.js.map +1 -1
- package/features/DepsSync/ListAllPackageJsonFiles.js +19 -14
- package/features/DepsSync/ListAllPackageJsonFiles.js.map +1 -1
- package/features/DepsSync/ListAllPackages.js +7 -9
- package/features/DepsSync/ListAllPackages.js.map +1 -1
- package/features/DepsSync/commands/SyncDepsCommand.js +30 -24
- package/features/DepsSync/commands/SyncDepsCommand.js.map +1 -1
- package/features/DepsSync/commands/VerifyDepsCommand.js +70 -71
- package/features/DepsSync/commands/VerifyDepsCommand.js.map +1 -1
- package/features/DepsSync/createDependencyTree.js +25 -18
- package/features/DepsSync/createDependencyTree.js.map +1 -1
- package/features/DepsSync/createReferenceFile.js +22 -26
- package/features/DepsSync/createReferenceFile.js.map +1 -1
- package/features/DepsSync/index.js +0 -2
- package/features/DepsSync/paths.js +3 -6
- package/features/DepsSync/paths.js.map +1 -1
- package/features/DepsSync/types.js +7 -6
- package/features/DepsSync/types.js.map +1 -1
- package/features/DestroyCommand/DestroyCommand.js +71 -67
- package/features/DestroyCommand/DestroyCommand.js.map +1 -1
- package/features/DestroyCommand/index.js +0 -2
- package/features/DisableTelemetryCommand.js +28 -25
- package/features/DisableTelemetryCommand.js.map +1 -1
- package/features/EnableTelemetryCommand.js +28 -25
- package/features/EnableTelemetryCommand.js.map +1 -1
- package/features/ExtensionCommand/ExtensionCommand.js +60 -63
- package/features/ExtensionCommand/ExtensionCommand.js.map +1 -1
- package/features/ExtensionCommand/index.js +0 -2
- package/features/InfoCommand/InfoCommand.js +54 -56
- package/features/InfoCommand/InfoCommand.js.map +1 -1
- package/features/InfoCommand/PrintInfoForEnv.js +31 -42
- package/features/InfoCommand/PrintInfoForEnv.js.map +1 -1
- package/features/InfoCommand/index.js +0 -2
- package/features/IsCi/IsCi.js +14 -11
- package/features/IsCi/IsCi.js.map +1 -1
- package/features/IsCi/index.js +1 -3
- package/features/OpenCommand.js +48 -47
- package/features/OpenCommand.js.map +1 -1
- package/features/OutputCommand.js +56 -69
- package/features/OutputCommand.js.map +1 -1
- package/features/PulumiCommand/PulumiCommand.js +48 -41
- package/features/PulumiCommand/PulumiCommand.js.map +1 -1
- package/features/PulumiCommand/index.js +0 -2
- package/features/RefreshCommand/RefreshCommand.js +42 -36
- package/features/RefreshCommand/RefreshCommand.js.map +1 -1
- package/features/RefreshCommand/index.js +0 -2
- package/features/UpgradeCommand/UpgradeCommand.d.ts +29 -0
- package/features/UpgradeCommand/UpgradeCommand.js +123 -0
- package/features/UpgradeCommand/UpgradeCommand.js.map +1 -0
- package/features/UpgradeCommand/UpgradeCommandHandler.d.ts +11 -0
- package/features/UpgradeCommand/UpgradeCommandHandler.js +102 -0
- package/features/UpgradeCommand/UpgradeCommandHandler.js.map +1 -0
- package/features/UpgradeCommand/abstraction.d.ts +23 -0
- package/features/UpgradeCommand/abstraction.js +5 -0
- package/features/UpgradeCommand/abstraction.js.map +1 -0
- package/features/UpgradeCommand/feature.d.ts +4 -0
- package/features/UpgradeCommand/feature.js +13 -0
- package/features/UpgradeCommand/feature.js.map +1 -0
- package/features/UpgradeCommand/index.d.ts +2 -0
- package/features/UpgradeCommand/index.js +2 -0
- package/features/WatchCommand/WatchCommand.js +131 -131
- package/features/WatchCommand/WatchCommand.js.map +1 -1
- package/features/WatchCommand/createPrefixer.js +11 -15
- package/features/WatchCommand/createPrefixer.js.map +1 -1
- package/features/WatchCommand/getRandomColorForString.js +86 -8
- package/features/WatchCommand/getRandomColorForString.js.map +1 -1
- package/features/WatchCommand/index.js +0 -2
- package/features/Wcp/LinkProjectCommand.js +119 -138
- package/features/Wcp/LinkProjectCommand.js.map +1 -1
- package/features/Wcp/LoginCommand.js +104 -118
- package/features/Wcp/LoginCommand.js.map +1 -1
- package/features/Wcp/LogoutCommand.js +29 -23
- package/features/Wcp/LogoutCommand.js.map +1 -1
- package/features/Wcp/WhoAmICommand.js +33 -29
- package/features/Wcp/WhoAmICommand.js.map +1 -1
- package/features/common/index.js +0 -2
- package/features/common/options.js +41 -50
- package/features/common/options.js.map +1 -1
- package/features/globalOptions/LogLevelGlobalOption.js +25 -16
- package/features/globalOptions/LogLevelGlobalOption.js.map +1 -1
- package/features/globalOptions/ShowLogsGlobalOption.js +16 -15
- package/features/globalOptions/ShowLogsGlobalOption.js.map +1 -1
- package/features/globalOptions/StackTraceGlobalOption.js +16 -15
- package/features/globalOptions/StackTraceGlobalOption.js.map +1 -1
- package/features/globalOptions/index.js +0 -2
- package/features/gracefulErrorHandlers/DdbPutItemConditionalCheckFailedGracefulErrorHandler.js +17 -16
- package/features/gracefulErrorHandlers/DdbPutItemConditionalCheckFailedGracefulErrorHandler.js.map +1 -1
- package/features/gracefulErrorHandlers/MissingFilesInBuildGracefulErrorHandler.js +12 -18
- package/features/gracefulErrorHandlers/MissingFilesInBuildGracefulErrorHandler.js.map +1 -1
- package/features/gracefulErrorHandlers/PendingOperationsGracefulErrorHandler.js +19 -19
- package/features/gracefulErrorHandlers/PendingOperationsGracefulErrorHandler.js.map +1 -1
- package/features/gracefulErrorHandlers/index.js +0 -2
- package/features/index.d.ts +1 -0
- package/features/index.js +1 -2
- package/features/utils/index.js +0 -2
- package/features/utils/measureDuration.js +7 -8
- package/features/utils/measureDuration.js.map +1 -1
- package/index.js +0 -2
- package/package.json +33 -28
- package/services/ArgvParserService/ArgvParserService.js +27 -33
- package/services/ArgvParserService/ArgvParserService.js.map +1 -1
- package/services/ArgvParserService/index.js +0 -2
- package/services/CliParamsService/CliParamsService.js +18 -15
- package/services/CliParamsService/CliParamsService.js.map +1 -1
- package/services/CliParamsService/index.js +0 -2
- package/services/CommandsRegistryService/CommandsRegistryService.js +19 -13
- package/services/CommandsRegistryService/CommandsRegistryService.js.map +1 -1
- package/services/CommandsRegistryService/index.js +0 -2
- package/services/GetArgvService/GetArgvService.js +14 -11
- package/services/GetArgvService/GetArgvService.js.map +1 -1
- package/services/GetArgvService/index.js +0 -2
- package/services/GetCliRunnerService/GetCliRunnerService.js +119 -148
- package/services/GetCliRunnerService/GetCliRunnerService.js.map +1 -1
- package/services/GetCliRunnerService/index.js +0 -2
- package/services/GetIsCiService/GetIsCiService.js +9 -8
- package/services/GetIsCiService/GetIsCiService.js.map +1 -1
- package/services/GetIsCiService/index.js +1 -3
- package/services/GetProjectSdkService/GetProjectSdkService.js +25 -24
- package/services/GetProjectSdkService/GetProjectSdkService.js.map +1 -1
- package/services/GetProjectSdkService/index.js +0 -2
- package/services/GlobalOptionsRegistryService/GlobalOptionsRegistryService.js +19 -13
- package/services/GlobalOptionsRegistryService/GlobalOptionsRegistryService.js.map +1 -1
- package/services/GlobalOptionsRegistryService/index.js +0 -2
- package/services/LoggerService/LoggerService.js +76 -88
- package/services/LoggerService/LoggerService.js.map +1 -1
- package/services/LoggerService/index.js +0 -2
- package/services/RunCliRunnerService/RunCliRunnerService.js +15 -13
- package/services/RunCliRunnerService/RunCliRunnerService.js.map +1 -1
- package/services/RunCliRunnerService/index.js +0 -2
- package/services/StdioService/StdioService.js +15 -14
- package/services/StdioService/StdioService.js.map +1 -1
- package/services/StdioService/index.js +0 -2
- package/services/UiService/UiService.js +55 -58
- package/services/UiService/UiService.js.map +1 -1
- package/services/UiService/index.js +0 -2
- package/services/index.js +0 -2
- package/utils/ManuallyReportedError.js +7 -6
- package/utils/ManuallyReportedError.js.map +1 -1
- package/abstractions/features/index.js.map +0 -1
- package/abstractions/features/types.js.map +0 -1
- package/abstractions/index.js.map +0 -1
- package/abstractions/services/index.js.map +0 -1
- package/decorators/index.js.map +0 -1
- package/exports/cli/command.js.map +0 -1
- package/exports/cli/index.d.ts +0 -2
- package/exports/cli/index.js +0 -4
- package/exports/cli/index.js.map +0 -1
- package/features/BuildCommand/index.js.map +0 -1
- package/features/DeployCommand/index.js.map +0 -1
- package/features/DepsSync/index.js.map +0 -1
- package/features/DestroyCommand/index.js.map +0 -1
- package/features/ExtensionCommand/index.js.map +0 -1
- package/features/InfoCommand/index.js.map +0 -1
- package/features/IsCi/index.js.map +0 -1
- package/features/PulumiCommand/index.js.map +0 -1
- package/features/RefreshCommand/index.js.map +0 -1
- package/features/WatchCommand/index.js.map +0 -1
- package/features/common/index.js.map +0 -1
- package/features/globalOptions/index.js.map +0 -1
- package/features/gracefulErrorHandlers/index.js.map +0 -1
- package/features/index.js.map +0 -1
- package/features/utils/index.js.map +0 -1
- package/index.js.map +0 -1
- package/services/ArgvParserService/index.js.map +0 -1
- package/services/CliParamsService/index.js.map +0 -1
- package/services/CommandsRegistryService/index.js.map +0 -1
- package/services/GetArgvService/index.js.map +0 -1
- package/services/GetCliRunnerService/index.js.map +0 -1
- package/services/GetIsCiService/index.js.map +0 -1
- package/services/GetProjectSdkService/index.js.map +0 -1
- package/services/GlobalOptionsRegistryService/index.js.map +0 -1
- package/services/LoggerService/index.js.map +0 -1
- package/services/RunCliRunnerService/index.js.map +0 -1
- package/services/StdioService/index.js.map +0 -1
- package/services/UiService/index.js.map +0 -1
- 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
|
|
5
|
-
const sleep = (ms = 1500)
|
|
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 =
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
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
|
-
|
|
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
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
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":"AAAA,SAASA,oBAAoB,QAAQ,YAAY;AAEjD,SACIC,iBAAiB,EACjBC,oBAAoB,EACpBC,aAAa,EACbC,SAAS;AAEb,SAASC,UAAU,QAAQ,sBAAsB;AAEjD,OAAOC,IAAI,MAAM,MAAM;AAEvB,MAAMC,KAAK,GAAGA,CAACC,EAAU,GAAG,IAAI,KAAKH,UAAU,CAACG,EAAE,CAAC;;AAEnD;AACA,MAAMC,mBAAmB,GAAG,EAAE;AAC9B,MAAMC,sBAAsB,GAAG,KAAK;AAMpC,OAAO,MAAMC,YAAY,CAA6D;EAClFC,WAAWA,CACCC,oBAAoD,EACpDC,SAA8B,EAC9BC,aAAsC,EAChD;IAAA,KAHUF,oBAAoD,GAApDA,oBAAoD;IAAA,KACpDC,SAA8B,GAA9BA,SAA8B;IAAA,KAC9BC,aAAsC,GAAtCA,aAAsC;EAC/C;EAEH,MAAMC,OAAOA,CAAA,EAAsE;IAC/E,OAAO;MACHC,IAAI,EAAE,OAAO;MACbC,WAAW,EAAE,gCAAgC;MAC7CC,QAAQ,EAAE,CAAC,UAAU,CAAC;MACtBC,OAAO,EAAE,CACL;QACIH,IAAI,EAAE,KAAK;QACXC,WAAW,EAAE,uDAAuD;QACpEG,IAAI,EAAE;MACV,CAAC,CACJ;MACDC,OAAO,EAAE,MAAAA,CAAO;QAAEC,GAAG,EAAEC;MAAmC,CAAC,KAAK;QAC5D,MAAMC,UAAU,GAAG,MAAM,IAAI,CAACZ,oBAAoB,CAACG,OAAO,CAAC,CAAC;QAC5D,MAAMU,GAAG,GAAGD,UAAU,CAACC,GAAG;QAC1B,MAAMC,EAAE,GAAG,IAAI,CAACb,SAAS;QACzB,MAAMc,MAAM,GAAG,IAAI,CAACb,aAAa;QAEjC,IAAIQ,GAA4B,GAAG,IAAI;QAEvC,IAAIC,aAAa,EAAE;UACfD,GAAG,GAAG,MAAMG,GAAG,CAACG,UAAU,CAACL,aAAa,CAAC;;UAEzC;UACA;UACA,IAAID,GAAG,IAAIA,GAAG,CAACO,SAAS,EAAE;YACtBP,GAAG,GAAG,MAAMG,GAAG,CAACK,aAAa,CAAC;cAAEC,IAAI,EAAET,GAAG,CAACS;YAAK,CAAC,EAAET,GAAG,CAACU,KAAK,CAAC;UAChE;QACJ,CAAC,MAAM;UACH,MAAMC,YAAY,GAAG,MAAMR,GAAG,CAACS,eAAe,CAAC,CAAC;UAEhD,MAAMC,WAAW,GAAG,OAAOF,YAAY,aAAaG,kBAAkB,CAClE,YACJ,CAAC,UAAU;UAEX,MAAMC,OAAO,GAAGZ,GAAG,CAACa,YAAY,CAAC,CAAC,CAACC,IAAI,CAAC,cAAcJ,WAAW,EAAE,CAAC,CAACK,QAAQ,CAAC,CAAC;UAE/Eb,MAAM,CAACc,KAAK,CAAC,eAAe,EAAEJ,OAAO,CAAC;UACtC,MAAMhC,IAAI,CAACgC,OAAO,CAAC;UAEnB,MAAMK,OAAO,GAAG;YACZC,SAAS,EAAE;cAAEX,KAAK,EAAEC;YAAa,CAAC;YAClCW,OAAO,EAAE;cACLC,aAAa,EAAEZ;YACnB;UACJ,CAAC;UAED,IAAIa,OAAO,GAAG,CAAC;UAEf,MAAMC,MAAM,GAAG,MAAM,IAAIC,OAAO,CAAyBC,OAAO,IAAI;YAChE,MAAMC,QAAQ,GAAGC,WAAW,CAAC,YAAY;cACrCL,OAAO,EAAE;cACT,IAAIA,OAAO,GAAGtC,mBAAmB,EAAE;gBAC/B4C,aAAa,CAACF,QAAQ,CAAC;gBACvBD,OAAO,CAAC,IAAI,CAAC;cACjB;cAEA,IAAI;gBACA,MAAM3B,GAAG,GAAG,MAAMG,GAAG,CAACG,UAAU,CAACK,YAAY,CAAC;gBAC9CmB,aAAa,CAACF,QAAQ,CAAC;gBACvBD,OAAO,CAAC3B,GAAG,CAAC;cAChB,CAAC,CAAC,OAAO+B,GAAG,EAAE;gBACV;gBACA1B,MAAM,CAACc,KAAK,CACR;kBACIY,GAAG;kBACHC,cAAc,EAAEZ;gBACpB,CAAC,EACD,sCAAsCjC,sBAAsB,KAChE,CAAC;cACL;YACJ,CAAC,EAAEA,sBAAsB,CAAC;UAC9B,CAAC,CAAC;UAEF,IAAI,CAACsC,MAAM,EAAE;YACT,MAAM,IAAIQ,KAAK,CACX,sEAAsE9B,GAAG,CACpEa,YAAY,CAAC,CAAC,CACdE,QAAQ,CAAC,CAAC,GACnB,CAAC;UACL;UAEAlB,GAAG,GAAGyB,MAAM;QAChB;QAEA,IAAI,CAACzB,GAAG,EAAE;UACN,MAAM,IAAIiC,KAAK,CACX,mEACJ,CAAC;QACL;QAEA/B,UAAU,CAACC,GAAG,CAAC+B,sBAAsB,CAAClC,GAAG,CAACU,KAAK,CAAC;QAEhDN,EAAE,CAAC+B,OAAO,CAAC,2DAA2D,EAAE,GAAG,CAAC;QAE5E,IAAIC,aAAa,GAAG,MAAMlC,UAAU,CAACmC,YAAY,CAAC,CAAC,CAACC,IAAI,CAACC,EAAE,IAAI,CAAC,CAACA,EAAE,CAAC;QACpE,IAAIH,aAAa,EAAE;UACf;QACJ;;QAEA;QACA,IAAIpC,GAAG,CAACS,IAAI,IAAIT,GAAG,CAACS,IAAI,CAAC+B,KAAK,IAAIxC,GAAG,CAACS,IAAI,CAACgC,SAAS,EAAE;UAClD,MAAMzD,KAAK,CAAC,CAAC;UACboB,EAAE,CAACsC,SAAS,CAAC,CAAC;UAEd,MAAM;YAAEF,KAAK;YAAEC;UAAU,CAAC,GAAGzC,GAAG,CAACS,IAAI;UAErC,MAAM8B,EAAE,GAAG,GAAGC,KAAK,IAAIC,SAAS,EAAE;UAClCrC,EAAE,CAACuC,IAAI,CAAC,iCAAiC,EAAEJ,EAAE,CAAC;UAC9C,MAAMrC,UAAU,CAAC0C,YAAY,CAACL,EAAE,CAAC;UAEjC,MAAMvD,KAAK,CAAC,CAAC;UACboB,EAAE,CAAC+B,OAAO,CAAC,iCAAiC,EAAEI,EAAE,CAAC;UACjDH,aAAa,GAAG,IAAI;QACxB;QAEA,MAAMpD,KAAK,CAAC,CAAC;QAEboB,EAAE,CAACsC,SAAS,CAAC,CAAC;QACdtC,EAAE,CAACyC,QAAQ,CAAC,YAAY,CAAC;QAEzB,IAAI,CAACT,aAAa,EAAE;UAChBhC,EAAE,CAAC0C,IAAI,CAAC,gEAAgE,CAAC;QAC7E;QAEA1C,EAAE,CAAC0C,IAAI,CAAC,4DAA4D,CAAC;MACzE;IACJ,CAAC;EACL;AACJ;AAEA,OAAO,MAAMC,YAAY,GAAGtE,oBAAoB,CAAC;EAC7CuE,WAAW,EAAEtE,iBAAiB;EAC9BuE,cAAc,EAAE7D,YAAY;EAC5B8D,YAAY,EAAE,CAACvE,oBAAoB,EAAEE,SAAS,EAAED,aAAa;AACjE,CAAC,CAAC","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
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
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
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
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,"
|
|
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
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
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
|
-
|
|
30
|
-
|
|
31
|
-
|
|
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,"
|
|
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"}
|
package/features/common/index.js
CHANGED
|
@@ -1,52 +1,43 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
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,"
|
|
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
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
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
|