@forge/cli 0.0.0-experimental-e8bfa83 → 0.0.0-experimental-c3effe3

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 (165) hide show
  1. package/CHANGELOG.md +3781 -7
  2. package/README.md +18 -19
  3. package/npm-shrinkwrap.json +2709 -3555
  4. package/out/analytics-client/analytics-client.d.ts +3 -1
  5. package/out/analytics-client/analytics-client.d.ts.map +1 -1
  6. package/out/analytics-client/analytics-client.js +5 -1
  7. package/out/autocomplete/autocomplete-config.json +24 -20
  8. package/out/autocomplete/isSupportedShell.d.ts +2 -0
  9. package/out/autocomplete/isSupportedShell.d.ts.map +1 -0
  10. package/out/autocomplete/isSupportedShell.js +11 -0
  11. package/out/bin/cli.js +0 -2
  12. package/out/bin/postinstall.js +9 -2
  13. package/out/command-line/anon-user-id.js +6 -10
  14. package/out/command-line/command.d.ts +27 -8
  15. package/out/command-line/command.d.ts.map +1 -1
  16. package/out/command-line/command.js +188 -50
  17. package/out/command-line/controller/autocomplete-controller.d.ts +1 -0
  18. package/out/command-line/controller/autocomplete-controller.d.ts.map +1 -1
  19. package/out/command-line/controller/autocomplete-controller.js +11 -1
  20. package/out/command-line/controller/deploy-controller.d.ts +13 -2
  21. package/out/command-line/controller/deploy-controller.d.ts.map +1 -1
  22. package/out/command-line/controller/deploy-controller.js +79 -5
  23. package/out/command-line/controller/getNodeVersion.d.ts +2 -0
  24. package/out/command-line/controller/getNodeVersion.d.ts.map +1 -0
  25. package/out/command-line/controller/getNodeVersion.js +7 -0
  26. package/out/command-line/controller/install-controller.d.ts +5 -4
  27. package/out/command-line/controller/install-controller.d.ts.map +1 -1
  28. package/out/command-line/controller/install-controller.js +31 -56
  29. package/out/command-line/controller/lint-controller.js +1 -1
  30. package/out/command-line/controller/pre-command-controller.d.ts +8 -1
  31. package/out/command-line/controller/pre-command-controller.d.ts.map +1 -1
  32. package/out/command-line/controller/pre-command-controller.js +22 -2
  33. package/out/command-line/controller/prerequisites-controller.d.ts +11 -0
  34. package/out/command-line/controller/prerequisites-controller.d.ts.map +1 -0
  35. package/out/command-line/controller/prerequisites-controller.js +34 -0
  36. package/out/command-line/controller/settings-controller.d.ts +19 -0
  37. package/out/command-line/controller/settings-controller.d.ts.map +1 -0
  38. package/out/command-line/controller/settings-controller.js +48 -0
  39. package/out/command-line/controller/stubController.d.ts +9 -0
  40. package/out/command-line/controller/stubController.d.ts.map +1 -0
  41. package/out/command-line/controller/stubController.js +15 -0
  42. package/out/command-line/dependency-injection.d.ts +13 -3
  43. package/out/command-line/dependency-injection.d.ts.map +1 -1
  44. package/out/command-line/dependency-injection.js +52 -22
  45. package/out/command-line/index.d.ts.map +1 -1
  46. package/out/command-line/index.js +10 -30
  47. package/out/command-line/register-app-commands.d.ts.map +1 -1
  48. package/out/command-line/register-app-commands.js +2 -12
  49. package/out/command-line/register-authentication-command.d.ts.map +1 -1
  50. package/out/command-line/register-authentication-command.js +1 -16
  51. package/out/command-line/register-deployment-commands.d.ts +8 -0
  52. package/out/command-line/register-deployment-commands.d.ts.map +1 -1
  53. package/out/command-line/register-deployment-commands.js +1 -0
  54. package/out/command-line/register-environment-variables-commands.d.ts +1 -1
  55. package/out/command-line/register-environment-variables-commands.d.ts.map +1 -1
  56. package/out/command-line/register-environment-variables-commands.js +22 -7
  57. package/out/command-line/register-installation-commands.d.ts +4 -1
  58. package/out/command-line/register-installation-commands.d.ts.map +1 -1
  59. package/out/command-line/register-installation-commands.js +39 -23
  60. package/out/command-line/register-providers-commands.d.ts +3 -0
  61. package/out/command-line/register-providers-commands.d.ts.map +1 -0
  62. package/out/command-line/register-providers-commands.js +43 -0
  63. package/out/command-line/register-settings-commands.d.ts +3 -0
  64. package/out/command-line/register-settings-commands.d.ts.map +1 -0
  65. package/out/command-line/register-settings-commands.js +37 -0
  66. package/out/command-line/register-webtrigger-commands.d.ts.map +1 -1
  67. package/out/command-line/register-webtrigger-commands.js +9 -11
  68. package/out/command-line/unique-machine-id.d.ts +1 -0
  69. package/out/command-line/unique-machine-id.d.ts.map +1 -1
  70. package/out/command-line/unique-machine-id.js +3 -12
  71. package/out/command-line/version-info.d.ts +1 -0
  72. package/out/command-line/version-info.d.ts.map +1 -1
  73. package/out/command-line/version-info.js +3 -2
  74. package/out/command-line/view/analytics-settings-view.d.ts +7 -0
  75. package/out/command-line/view/analytics-settings-view.d.ts.map +1 -0
  76. package/out/command-line/view/analytics-settings-view.js +18 -0
  77. package/out/command-line/view/deploy-view.d.ts +7 -1
  78. package/out/command-line/view/deploy-view.d.ts.map +1 -1
  79. package/out/command-line/view/deploy-view.js +25 -3
  80. package/out/command-line/view/install-view.d.ts +5 -3
  81. package/out/command-line/view/install-view.d.ts.map +1 -1
  82. package/out/command-line/view/install-view.js +19 -10
  83. package/out/command-line/view/lint-view.d.ts +3 -2
  84. package/out/command-line/view/lint-view.d.ts.map +1 -1
  85. package/out/command-line/view/lint-view.js +3 -0
  86. package/out/command-line/view/lite-lint-view.d.ts +3 -2
  87. package/out/command-line/view/lite-lint-view.d.ts.map +1 -1
  88. package/out/command-line/view/lite-lint-view.js +3 -0
  89. package/out/command-line/view/settings-view.d.ts +8 -0
  90. package/out/command-line/view/settings-view.d.ts.map +1 -0
  91. package/out/command-line/view/settings-view.js +21 -0
  92. package/out/deploy/deployer/deploy-monitor-graphql-client.js +1 -1
  93. package/out/deploy/deployer/deployer.d.ts.map +1 -1
  94. package/out/deploy/deployer/deployer.js +17 -1
  95. package/out/deploy/deployer/trigger-deploy-graphql-client.d.ts.map +1 -1
  96. package/out/deploy/deployer/trigger-deploy-graphql-client.js +9 -6
  97. package/out/deploy/packager/archiver.d.ts +3 -2
  98. package/out/deploy/packager/archiver.d.ts.map +1 -1
  99. package/out/deploy/packager/archiver.js +10 -2
  100. package/out/deploy/packager/packager.d.ts.map +1 -1
  101. package/out/deploy/packager/packager.js +20 -20
  102. package/out/deploy/uploader/artifact-graphql-client.d.ts.map +1 -1
  103. package/out/deploy/uploader/artifact-graphql-client.js +12 -9
  104. package/out/environment-variables/graphql-client.d.ts +1 -1
  105. package/out/environment-variables/graphql-client.d.ts.map +1 -1
  106. package/out/environment-variables/graphql-client.js +19 -13
  107. package/out/installations/graphql-client.d.ts +19 -13
  108. package/out/installations/graphql-client.d.ts.map +1 -1
  109. package/out/installations/graphql-client.js +161 -56
  110. package/out/installations/install-app-site.d.ts +2 -12
  111. package/out/installations/install-app-site.d.ts.map +1 -1
  112. package/out/installations/install-app-site.js +3 -14
  113. package/out/installations/uninstall-app.d.ts +5 -3
  114. package/out/installations/uninstall-app.d.ts.map +1 -1
  115. package/out/installations/uninstall-app.js +7 -7
  116. package/out/migration-keys/graphql-client.d.ts +8 -0
  117. package/out/migration-keys/graphql-client.d.ts.map +1 -0
  118. package/out/migration-keys/graphql-client.js +55 -0
  119. package/out/providers/configure-provider.d.ts +19 -0
  120. package/out/providers/configure-provider.d.ts.map +1 -0
  121. package/out/providers/configure-provider.js +14 -0
  122. package/out/providers/graphql-client.d.ts +12 -0
  123. package/out/providers/graphql-client.d.ts.map +1 -0
  124. package/out/providers/graphql-client.js +47 -0
  125. package/out/service/cached-config-service.d.ts +8 -0
  126. package/out/service/cached-config-service.d.ts.map +1 -0
  127. package/out/service/cached-config-service.js +16 -0
  128. package/out/service/installation-service.d.ts +13 -13
  129. package/out/service/installation-service.d.ts.map +1 -1
  130. package/out/service/installation-service.js +38 -23
  131. package/out/service/lint-service.d.ts +2 -2
  132. package/out/service/lint-service.d.ts.map +1 -1
  133. package/out/service/lint-service.js +3 -3
  134. package/out/service/lite-lint-service.d.ts +3 -3
  135. package/out/service/lite-lint-service.d.ts.map +1 -1
  136. package/out/service/lite-lint-service.js +2 -2
  137. package/out/service/migration-keys-service.d.ts +19 -0
  138. package/out/service/migration-keys-service.d.ts.map +1 -0
  139. package/out/service/migration-keys-service.js +14 -0
  140. package/out/service/port-finding-service.d.ts +12 -0
  141. package/out/service/port-finding-service.d.ts.map +1 -0
  142. package/out/service/port-finding-service.js +34 -0
  143. package/out/service/resource-packaging-service.d.ts +3 -2
  144. package/out/service/resource-packaging-service.d.ts.map +1 -1
  145. package/out/service/resource-packaging-service.js +6 -2
  146. package/out/service/tunnel-service.d.ts +6 -2
  147. package/out/service/tunnel-service.d.ts.map +1 -1
  148. package/out/service/tunnel-service.js +53 -12
  149. package/out/webtrigger/get-webtrigger-url.d.ts +10 -4
  150. package/out/webtrigger/get-webtrigger-url.d.ts.map +1 -1
  151. package/out/webtrigger/get-webtrigger-url.js +11 -18
  152. package/out/webtrigger/graphql-client.d.ts +14 -0
  153. package/out/webtrigger/graphql-client.d.ts.map +1 -0
  154. package/out/webtrigger/graphql-client.js +52 -0
  155. package/out/workers/analytics-message-worker.d.ts +3 -1
  156. package/out/workers/analytics-message-worker.d.ts.map +1 -1
  157. package/out/workers/analytics-message-worker.js +9 -2
  158. package/out/workers/forge-cli-workers.js +6 -1
  159. package/package.json +17 -17
  160. package/out/bin/preinstall.d.ts +0 -3
  161. package/out/bin/preinstall.d.ts.map +0 -1
  162. package/out/bin/preinstall.js +0 -9
  163. package/out/command-line/cli-prerequisites.d.ts +0 -3
  164. package/out/command-line/cli-prerequisites.d.ts.map +0 -1
  165. package/out/command-line/cli-prerequisites.js +0 -37
@@ -1,27 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.InstallController = exports.NoDeploymentError = void 0;
4
- const tslib_1 = require("tslib");
5
4
  const cli_shared_1 = require("@forge/cli-shared");
6
- const open_1 = tslib_1.__importDefault(require("open"));
7
5
  class NoDeploymentError extends Error {
8
6
  constructor(environment) {
9
7
  super(cli_shared_1.Text.install.error.noDeploymentFound(cli_shared_1.environmentToOption(environment)));
10
8
  }
11
9
  }
12
10
  exports.NoDeploymentError = NoDeploymentError;
13
- const isInstallationResult = (result) => {
14
- return !!result.installationId;
15
- };
16
- const isInstallationResultWithAuthorizationUrl = (result) => {
17
- return !!(result.installationId && result.authorizationUrl);
18
- };
19
- const isAlreadyUpgradedResult = (result) => {
20
- return result.alreadyUpdated === true;
21
- };
22
11
  class InstallController {
23
- constructor(appConfigProvider, ui, installAppSiteCommand, installationService, installView) {
12
+ constructor(appConfigProvider, configFile, ui, installAppSiteCommand, installationService, installView) {
24
13
  this.appConfigProvider = appConfigProvider;
14
+ this.configFile = configFile;
25
15
  this.ui = ui;
26
16
  this.installAppSiteCommand = installAppSiteCommand;
27
17
  this.installationService = installationService;
@@ -43,49 +33,29 @@ class InstallController {
43
33
  }
44
34
  }
45
35
  }
46
- async installOrUpgrade(upgrade, environment, site, product, name, appId, text) {
36
+ async installOrUpgrade(upgrade, environment, site, product, appId, text) {
47
37
  return this.ui.displayProgress(async () => {
48
38
  if (upgrade) {
49
- return await this.installationService.upgradeInstallation(site, product, environment, appId);
39
+ const isAlreadyUpdated = await this.installationService.upgradeInstallation(site, product, environment, appId);
40
+ return isAlreadyUpdated;
50
41
  }
51
42
  else {
52
- return await this.installAppSiteCommand.execute({
43
+ await this.installAppSiteCommand.execute({
53
44
  environmentKey: environment,
54
45
  site,
55
46
  product
56
47
  });
48
+ return false;
57
49
  }
58
- }, text.cmd.start(name, cli_shared_1.environmentToOption(environment)), (result) => {
59
- if (result.alreadyUpdated) {
50
+ }, text.cmd.start(cli_shared_1.environmentToOption(environment)), (alreadyUpdated) => {
51
+ if (alreadyUpdated) {
60
52
  return cli_shared_1.Text.upgrade.alreadyUpdated.spinner;
61
53
  }
62
- else if (isInstallationResultWithAuthorizationUrl(result)) {
63
- return text.cmd.start(name, cli_shared_1.environmentToOption(environment));
64
- }
65
- else if (isInstallationResult(result)) {
66
- return text.cmd.end(false);
67
- }
68
54
  else {
69
- return {
70
- successful: false,
71
- message: cli_shared_1.Text.upgrade.cmd.error
72
- };
55
+ return text.cmd.end(false);
73
56
  }
74
57
  });
75
58
  }
76
- async authorizationPrompt(authorizationUrl, name, environment, product, site, text) {
77
- this.ui.info(cli_shared_1.Text.install.authorization.banner);
78
- this.ui.info(cli_shared_1.Text.install.authorization.link(authorizationUrl));
79
- if (cli_shared_1.ContainerTokenAuthenticator.isAvailable()) {
80
- return;
81
- }
82
- await cli_shared_1.pressAnyKey(cli_shared_1.Text.install.authorization.openBrowser);
83
- await open_1.default(authorizationUrl);
84
- this.ui.emptyLine();
85
- this.ui.info(text.cmd.end(true));
86
- this.ui.emptyLine();
87
- this.ui.info(text.success.banner(name, environment, cli_shared_1.environmentToOption, product, site.host));
88
- }
89
59
  async promptForProduct() {
90
60
  this.ui.info(cli_shared_1.Text.installationContext.overviewProduct);
91
61
  return await this.ui.promptForList(cli_shared_1.Text.installationContext.promptProduct, cli_shared_1.SUPPORTED_PRODUCTS);
@@ -99,7 +69,7 @@ class InstallController {
99
69
  return cli_shared_1.validateSite(trySite);
100
70
  }
101
71
  async promptForUpgrade(siteOption, productOption, environmentOption) {
102
- const { installations } = await this.installationService.listNonIdentityAppInstallations({
72
+ const { installations } = await this.installationService.listNonTechnicalAppInstallations({
103
73
  site: siteOption === null || siteOption === void 0 ? void 0 : siteOption.host,
104
74
  product: productOption,
105
75
  environment: environmentOption
@@ -125,10 +95,11 @@ class InstallController {
125
95
  });
126
96
  return products.size > 0 ? Array.from(products) : undefined;
127
97
  }
128
- async run({ environment, site, product, upgrade, confirmScopes }) {
129
- const { name, id } = await this.appConfigProvider();
98
+ async run({ environment, site, product, upgrade, confirmScopes, nonInteractive }) {
99
+ var _a;
100
+ const { id } = await this.appConfigProvider();
130
101
  const text = upgrade ? cli_shared_1.Text.upgrade : cli_shared_1.Text.install;
131
- if (upgrade) {
102
+ if (upgrade && (!site || !product)) {
132
103
  const upgradeResult = await this.promptForUpgrade(site, product, environment);
133
104
  environment = upgradeResult.environment;
134
105
  site = upgradeResult.site;
@@ -140,28 +111,32 @@ class InstallController {
140
111
  if (cli_shared_1.isSecureSite(site)) {
141
112
  await this.securityPrompt(site);
142
113
  }
143
- const scopes = await this.installationService.getScopes(id, environment);
144
- if (!scopes) {
114
+ const environmentPermissions = await this.installationService.getAppEnvironmentPermissions(id, environment);
115
+ if (!(environmentPermissions === null || environmentPermissions === void 0 ? void 0 : environmentPermissions.scopes) || environmentPermissions.scopes.length === 0) {
145
116
  this.ui.error(new NoDeploymentError(environment), { pad: false });
146
117
  return;
147
118
  }
148
- const scopesConfirmationResult = await this.installView.promptForScopesConfirmation(scopes, environment, confirmScopes, text);
119
+ const { scopes: environmentScopes } = environmentPermissions;
120
+ const [{ permissions }, manifestEgressEntries] = await Promise.all([
121
+ this.configFile.readConfig(),
122
+ this.configFile.getEgressPermissions()
123
+ ]);
124
+ const manifestEgressAddresses = cli_shared_1.flatMap(manifestEgressEntries, ({ domains }) => domains !== null && domains !== void 0 ? domains : []);
125
+ const manifestScopes = (_a = permissions === null || permissions === void 0 ? void 0 : permissions.scopes) !== null && _a !== void 0 ? _a : [];
126
+ const scopesConfirmationResult = await this.installView.promptForPermissionsConfirmation(environmentPermissions, manifestScopes, manifestEgressAddresses, environment, confirmScopes, !!nonInteractive, text);
149
127
  if (!scopesConfirmationResult)
150
128
  return;
151
- const installationInfo = await this.installOrUpgrade(upgrade, environment, site, product, name, id, text);
152
- if (isAlreadyUpgradedResult(installationInfo)) {
153
- this.ui.info(cli_shared_1.Text.upgrade.alreadyUpdated.banner(name, environment, cli_shared_1.environmentToOption, product, site.host));
154
- }
155
- else if (isInstallationResultWithAuthorizationUrl(installationInfo)) {
156
- await this.authorizationPrompt(installationInfo.authorizationUrl, name, environment, product, site, text);
129
+ const isAlreadyUpdated = await this.installOrUpgrade(upgrade, environment, site, product, id, text);
130
+ if (isAlreadyUpdated) {
131
+ this.ui.info(cli_shared_1.Text.upgrade.alreadyUpdated.banner(environment, cli_shared_1.environmentToOption, product, site.host));
157
132
  }
158
133
  else {
159
134
  this.ui.emptyLine();
160
- this.ui.info(text.success.banner(name, environment, cli_shared_1.environmentToOption, product, site.host));
161
- const uniqueProductsFromScopes = this.getUniqueInstallationProductsFromScopes(scopes);
135
+ this.ui.info(text.success.banner(environment, cli_shared_1.environmentToOption, product, site.host));
136
+ const uniqueProductsFromScopes = this.getUniqueInstallationProductsFromScopes(environmentScopes);
162
137
  if (!uniqueProductsFromScopes || uniqueProductsFromScopes.length <= 1)
163
138
  return;
164
- const { installations } = await this.installationService.listNonIdentityAppInstallations({
139
+ const { installations } = await this.installationService.listNonTechnicalAppInstallations({
165
140
  site: site.host,
166
141
  environment
167
142
  });
@@ -8,7 +8,7 @@ class LintController {
8
8
  }
9
9
  async run(environment, fix) {
10
10
  !fix && this.lintView.showBlurb();
11
- const runResult = await this.lintService.run(environment, { fix });
11
+ const runResult = await this.lintService.run(environment, { fix }, this.lintView.getLogger());
12
12
  if (runResult === null || runResult === void 0 ? void 0 : runResult.fixResults) {
13
13
  this.lintView.reportFixResult(runResult.fixResults);
14
14
  }
@@ -1,6 +1,9 @@
1
1
  import { LiteLintService } from '../../service/lite-lint-service';
2
2
  import { LiteLintView } from '../view/lite-lint-view';
3
3
  import { ConfigReader } from '@forge/cli-shared';
4
+ import { CachedConfigService } from '../../service/cached-config-service';
5
+ import { AnalyticsSettingsView } from '../view/analytics-settings-view';
6
+ import { SettingsView } from '../view/settings-view';
4
7
  export declare class PreCommandValidationError extends Error {
5
8
  constructor();
6
9
  }
@@ -8,11 +11,15 @@ export declare class PreCommandController {
8
11
  private readonly service;
9
12
  private readonly view;
10
13
  private readonly configReader;
11
- constructor(service: LiteLintService, view: LiteLintView, configReader: ConfigReader);
14
+ private readonly cachedConfigService;
15
+ private readonly analyticsSettingsView;
16
+ private readonly settingsView;
17
+ constructor(service: LiteLintService, view: LiteLintView, configReader: ConfigReader, cachedConfigService: CachedConfigService, analyticsSettingsView: AnalyticsSettingsView, settingsView: SettingsView);
12
18
  private runChecks;
13
19
  verifyManifestExists(): () => Promise<void>;
14
20
  verifyManifestExistsWithAppConfig(): () => Promise<{
15
21
  appId?: string;
16
22
  }>;
23
+ verifyAnalyticsPreferences(nonInteractive?: boolean): () => Promise<boolean>;
17
24
  }
18
25
  //# sourceMappingURL=pre-command-controller.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pre-command-controller.d.ts","sourceRoot":"","sources":["../../../src/command-line/controller/pre-command-controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAQ,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEvD,qBAAa,yBAA0B,SAAQ,KAAK;;CAInD;AAED,qBAAa,oBAAoB;IAE7B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAFZ,OAAO,EAAE,eAAe,EACxB,IAAI,EAAE,YAAY,EAClB,YAAY,EAAE,YAAY;YAG/B,SAAS;IAQvB,oBAAoB,IAAI,MAAM,OAAO,CAAC,IAAI,CAAC;IAI3C,iCAAiC,IAAI,MAAM,OAAO,CAAC;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CASvE"}
1
+ {"version":3,"file":"pre-command-controller.d.ts","sourceRoot":"","sources":["../../../src/command-line/controller/pre-command-controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAQ,YAAY,EAAmB,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,qBAAa,yBAA0B,SAAQ,KAAK;;CAInD;AAED,qBAAa,oBAAoB;IAE7B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IACpC,OAAO,CAAC,QAAQ,CAAC,qBAAqB;IACtC,OAAO,CAAC,QAAQ,CAAC,YAAY;gBALZ,OAAO,EAAE,eAAe,EACxB,IAAI,EAAE,YAAY,EAClB,YAAY,EAAE,YAAY,EAC1B,mBAAmB,EAAE,mBAAmB,EACxC,qBAAqB,EAAE,qBAAqB,EAC5C,YAAY,EAAE,YAAY;YAG/B,SAAS;IAQvB,oBAAoB,IAAI,MAAM,OAAO,CAAC,IAAI,CAAC;IAI3C,iCAAiC,IAAI,MAAM,OAAO,CAAC;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAUtE,0BAA0B,CAAC,cAAc,UAAQ,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC;CAgB3E"}
@@ -9,13 +9,16 @@ class PreCommandValidationError extends Error {
9
9
  }
10
10
  exports.PreCommandValidationError = PreCommandValidationError;
11
11
  class PreCommandController {
12
- constructor(service, view, configReader) {
12
+ constructor(service, view, configReader, cachedConfigService, analyticsSettingsView, settingsView) {
13
13
  this.service = service;
14
14
  this.view = view;
15
15
  this.configReader = configReader;
16
+ this.cachedConfigService = cachedConfigService;
17
+ this.analyticsSettingsView = analyticsSettingsView;
18
+ this.settingsView = settingsView;
16
19
  }
17
20
  async runChecks(strict) {
18
- const report = await this.service.run(strict);
21
+ const report = await this.service.run(strict, this.view.getLogger());
19
22
  if (this.service.hasErrors(report)) {
20
23
  this.view.reportErrors(report);
21
24
  throw new PreCommandValidationError();
@@ -33,5 +36,22 @@ class PreCommandController {
33
36
  };
34
37
  };
35
38
  }
39
+ verifyAnalyticsPreferences(nonInteractive = false) {
40
+ return async () => {
41
+ const preference = this.cachedConfigService.getAnalyticsPreferences();
42
+ if (preference === undefined) {
43
+ if (nonInteractive) {
44
+ throw new cli_shared_1.ValidationError(cli_shared_1.Text.nonInteractive.error.missingAnalyticsPreferences);
45
+ }
46
+ const selectedPreference = await this.analyticsSettingsView.promptForPreference();
47
+ this.cachedConfigService.setAnalyticsPreferences(selectedPreference);
48
+ this.settingsView.setSuccess('usage-analytics', selectedPreference.toString());
49
+ return selectedPreference;
50
+ }
51
+ else {
52
+ return preference;
53
+ }
54
+ };
55
+ }
36
56
  }
37
57
  exports.PreCommandController = PreCommandController;
@@ -0,0 +1,11 @@
1
+ import { CLIDetails, FeatureFlagReader, Logger } from '@forge/cli-shared';
2
+ export declare class PrerequisitesController {
3
+ private readonly logger;
4
+ private readonly featureFlags;
5
+ private readonly cliDetails;
6
+ constructor(logger: Logger, featureFlags: FeatureFlagReader, cliDetails: CLIDetails | undefined);
7
+ check(): Promise<void>;
8
+ private checkNodeVersion;
9
+ private checkCustomWarning;
10
+ }
11
+ //# sourceMappingURL=prerequisites-controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prerequisites-controller.d.ts","sourceRoot":"","sources":["../../../src/command-line/controller/prerequisites-controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAe,iBAAiB,EAAE,MAAM,EAAQ,MAAM,mBAAmB,CAAC;AAI7F,qBAAa,uBAAuB;IAEhC,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAFV,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,iBAAiB,EAC/B,UAAU,EAAE,UAAU,GAAG,SAAS;IAG/C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B,OAAO,CAAC,gBAAgB;YAcV,kBAAkB;CAMjC"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PrerequisitesController = void 0;
4
+ const semver_1 = require("semver");
5
+ const cli_shared_1 = require("@forge/cli-shared");
6
+ const version_info_1 = require("../version-info");
7
+ const getNodeVersion_1 = require("./getNodeVersion");
8
+ class PrerequisitesController {
9
+ constructor(logger, featureFlags, cliDetails) {
10
+ this.logger = logger;
11
+ this.featureFlags = featureFlags;
12
+ this.cliDetails = cliDetails;
13
+ }
14
+ async check() {
15
+ this.checkNodeVersion();
16
+ await this.checkCustomWarning();
17
+ }
18
+ checkNodeVersion() {
19
+ const userNodeVersion = getNodeVersion_1.getNodeVersion();
20
+ if (this.cliDetails && !semver_1.satisfies(userNodeVersion, this.cliDetails.compatibleNodeVersion)) {
21
+ cli_shared_1.exitOnError(this.logger)(new Error(cli_shared_1.Text.error.outdatedNodeVersion(this.cliDetails.compatibleNodeVersion, userNodeVersion)));
22
+ }
23
+ if (!semver_1.satisfies(userNodeVersion, version_info_1.supportedNodeVersion)) {
24
+ this.logger.warn(cli_shared_1.Text.warning.unsupportedNodeVersion(userNodeVersion));
25
+ }
26
+ }
27
+ async checkCustomWarning() {
28
+ const featureFlagValue = await this.featureFlags.readFlag('forge-cli-startup-warning');
29
+ if (featureFlagValue) {
30
+ this.logger.warn(featureFlagValue);
31
+ }
32
+ }
33
+ }
34
+ exports.PrerequisitesController = PrerequisitesController;
@@ -0,0 +1,19 @@
1
+ import { CachedConfigService } from '../../service/cached-config-service';
2
+ import { SettingsView } from '../view/settings-view';
3
+ export declare const ALLOWED_SETTINGS: readonly ["usage-analytics"];
4
+ declare type AllowedSettingType = typeof ALLOWED_SETTINGS[number];
5
+ declare type SettingGetter = () => boolean | undefined;
6
+ declare type SettingSetter = (val: boolean) => void;
7
+ export declare class SettingsController {
8
+ private readonly settingsView;
9
+ private readonly cachedConfigService;
10
+ constructor(settingsView: SettingsView, cachedConfigService: CachedConfigService);
11
+ SETTINGS_MAP: {
12
+ [key in AllowedSettingType]: [string, SettingGetter, SettingSetter];
13
+ };
14
+ showSettings(): void;
15
+ private parseBoolean;
16
+ setSettings(preference: unknown, value: string): void;
17
+ }
18
+ export {};
19
+ //# sourceMappingURL=settings-controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings-controller.d.ts","sourceRoot":"","sources":["../../../src/command-line/controller/settings-controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,eAAO,MAAM,gBAAgB,8BAA+B,CAAC;AAE7D,aAAK,kBAAkB,GAAG,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAM1D,aAAK,aAAa,GAAG,MAAM,OAAO,GAAG,SAAS,CAAC;AAC/C,aAAK,aAAa,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;AAE5C,qBAAa,kBAAkB;IACjB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAAgB,OAAO,CAAC,QAAQ,CAAC,mBAAmB;gBAAhE,YAAY,EAAE,YAAY,EAAmB,mBAAmB,EAAE,mBAAmB;IAElH,YAAY,EAAE;SAAG,GAAG,IAAI,kBAAkB,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,aAAa,CAAC;KAAE,CAMnF;IAEK,YAAY;IAQnB,OAAO,CAAC,YAAY;IAWb,WAAW,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM;CAYtD"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SettingsController = exports.ALLOWED_SETTINGS = void 0;
4
+ const cli_shared_1 = require("@forge/cli-shared");
5
+ exports.ALLOWED_SETTINGS = ['usage-analytics'];
6
+ const isAllowedSetting = (arg) => {
7
+ return exports.ALLOWED_SETTINGS.includes(arg);
8
+ };
9
+ class SettingsController {
10
+ constructor(settingsView, cachedConfigService) {
11
+ this.settingsView = settingsView;
12
+ this.cachedConfigService = cachedConfigService;
13
+ this.SETTINGS_MAP = {
14
+ 'usage-analytics': [
15
+ cli_shared_1.Text.settings.usageAnalytics.description,
16
+ () => this.cachedConfigService.getAnalyticsPreferences(),
17
+ (value) => this.cachedConfigService.setAnalyticsPreferences(value)
18
+ ]
19
+ };
20
+ }
21
+ showSettings() {
22
+ const settings = exports.ALLOWED_SETTINGS.map((setting) => {
23
+ const [desc, getSetting] = this.SETTINGS_MAP[setting];
24
+ return [setting, desc, getSetting()];
25
+ });
26
+ this.settingsView.showSettings(settings);
27
+ }
28
+ parseBoolean(value) {
29
+ switch (value) {
30
+ case 'true':
31
+ return true;
32
+ case 'false':
33
+ return false;
34
+ default:
35
+ throw new cli_shared_1.ValidationError(cli_shared_1.Text.settings.set.invalidValue);
36
+ }
37
+ }
38
+ setSettings(preference, value) {
39
+ if (!isAllowedSetting(preference)) {
40
+ throw new cli_shared_1.ValidationError(cli_shared_1.Text.settings.set.invalidSetting(exports.ALLOWED_SETTINGS));
41
+ }
42
+ const parsedValue = this.parseBoolean(value);
43
+ const [, , setSetting] = this.SETTINGS_MAP[preference];
44
+ setSetting(parsedValue);
45
+ this.settingsView.setSuccess(preference, value);
46
+ }
47
+ }
48
+ exports.SettingsController = SettingsController;
@@ -0,0 +1,9 @@
1
+ interface StubArguments {
2
+ oldName: string;
3
+ newName: string;
4
+ }
5
+ export declare class StubController {
6
+ run({ oldName, newName }: StubArguments): Promise<void>;
7
+ }
8
+ export {};
9
+ //# sourceMappingURL=stubController.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stubController.d.ts","sourceRoot":"","sources":["../../../src/command-line/controller/stubController.ts"],"names":[],"mappings":"AAQA,UAAU,aAAa;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,cAAc;IACZ,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,aAAa;CAGrD"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StubController = void 0;
4
+ const cli_shared_1 = require("@forge/cli-shared");
5
+ class StubCommandError extends Error {
6
+ constructor(oldName, newName) {
7
+ super(cli_shared_1.Text.stub.error(newName, oldName));
8
+ }
9
+ }
10
+ class StubController {
11
+ async run({ oldName, newName }) {
12
+ throw new StubCommandError(oldName, newName);
13
+ }
14
+ }
15
+ exports.StubController = StubController;
@@ -1,12 +1,14 @@
1
- import { CLIDetails, CommandLineUI, ConfigFile, CreateAppCommand, CreateContainerTokenCommand, LoginCommand, LogoutCommand, RegisterAppCommand, ViewAppLogsCommand } from '@forge/cli-shared';
1
+ import { CLIDetails, CommandLineUI, ConfigFile, CreateAppCommand, FeatureFlagService, LoginCommand, LogoutCommand, RegisterAppCommand, ViewAppLogsCommand } from '@forge/cli-shared';
2
2
  import { AnalyticsClientReporter } from '../analytics-client/analytics-client';
3
3
  import { PackageUploadDeployCommand } from '../deploy';
4
4
  import { DeleteEnvironmentVariableCommand } from '../environment-variables/delete-environment-variable';
5
5
  import { ListEnvironmentVariablesCommand } from '../environment-variables/list-environment-variables';
6
6
  import { SetEnvironmentVariableCommand } from '../environment-variables/set-environment-variable';
7
+ import { ConfigureProviderCommand } from '../providers/configure-provider';
7
8
  import { InstallAppSiteCommand } from '../installations/install-app-site';
8
9
  import { UninstallAppCommand } from '../installations/uninstall-app';
9
10
  import { InstallationService } from '../service/installation-service';
11
+ import { MigrationKeysService } from '../service/migration-keys-service';
10
12
  import { GetWebTriggerURLCommand } from '../webtrigger/get-webtrigger-url';
11
13
  import { WorkersStarter } from '../workers/workers-starter';
12
14
  import { Command } from './command';
@@ -16,19 +18,21 @@ import { FeedbackController } from './controller/feedback-controller';
16
18
  import { InstallController } from './controller/install-controller';
17
19
  import { LintController } from './controller/lint-controller';
18
20
  import { PreCommandController } from './controller/pre-command-controller';
21
+ import { SettingsController } from './controller/settings-controller';
19
22
  import { TunnelController } from './controller/tunnel-controller';
23
+ import { StubController } from './controller/stubController';
24
+ import { PrerequisitesController } from './controller/prerequisites-controller';
20
25
  export declare const getDependencies: (cliDetails: CLIDetails | undefined) => Promise<{
21
26
  ui: CommandLineUI;
22
27
  cmd: Command;
23
28
  configFile: ConfigFile;
24
- appConfigProvider: import("@forge/cli-shared").AppConfigProvider;
29
+ appConfigProvider: import("@forge/cli-shared/src").AppConfigProvider;
25
30
  graphqlGateway: string;
26
31
  analyticsClientReporter: AnalyticsClientReporter;
27
32
  workersStarter: WorkersStarter;
28
33
  commands: {
29
34
  loginCommand: LoginCommand;
30
35
  logoutCommand: LogoutCommand;
31
- createContainerTokenCommand: CreateContainerTokenCommand;
32
36
  createAppCommand: CreateAppCommand;
33
37
  registerAppCommand: RegisterAppCommand;
34
38
  installAppSiteCommand: InstallAppSiteCommand;
@@ -37,11 +41,14 @@ export declare const getDependencies: (cliDetails: CLIDetails | undefined) => Pr
37
41
  setEnvironmentVariableCommand: SetEnvironmentVariableCommand;
38
42
  deleteEnvironmentVariableCommand: DeleteEnvironmentVariableCommand;
39
43
  listEnvironmentVariablesCommand: ListEnvironmentVariablesCommand;
44
+ configureProviderCommand: ConfigureProviderCommand;
40
45
  viewAppLogsCommand: ViewAppLogsCommand;
41
46
  getWebTriggerURLCommand: GetWebTriggerURLCommand;
42
47
  };
43
48
  services: {
49
+ featureFlagService: FeatureFlagService;
44
50
  installationsService: InstallationService;
51
+ migrationKeysService: MigrationKeysService;
45
52
  };
46
53
  controllers: {
47
54
  autocompleteController: AutocompleteController;
@@ -51,6 +58,9 @@ export declare const getDependencies: (cliDetails: CLIDetails | undefined) => Pr
51
58
  lintController: LintController;
52
59
  preCommandController: PreCommandController;
53
60
  tunnelController: TunnelController;
61
+ settingsController: SettingsController;
62
+ stubController: StubController;
63
+ prerequisitesController: PrerequisitesController;
54
64
  };
55
65
  }>;
56
66
  declare type PromiseType<T> = T extends Promise<infer R> ? R : any;
@@ -1 +1 @@
1
- {"version":3,"file":"dependency-injection.d.ts","sourceRoot":"","sources":["../../src/command-line/dependency-injection.ts"],"names":[],"mappings":"AACA,OAAO,EAUL,UAAU,EACV,aAAa,EACb,UAAU,EAKV,gBAAgB,EAEhB,2BAA2B,EAU3B,YAAY,EACZ,aAAa,EAOb,kBAAkB,EAElB,kBAAkB,EACnB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAE/E,OAAO,EAML,0BAA0B,EAG3B,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,gCAAgC,EAAE,MAAM,sDAAsD,CAAC;AAExG,OAAO,EAAE,+BAA+B,EAAE,MAAM,qDAAqD,CAAC;AACtG,OAAO,EAAE,6BAA6B,EAAE,MAAM,mDAAmD,CAAC;AAGlG,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAGrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAUtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAG3E,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAQlE,eAAO,MAAM,eAAe,eAAsB,UAAU,GAAG,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuMvE,CAAC;AAGF,aAAK,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AAC3D,oBAAY,YAAY,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"dependency-injection.d.ts","sourceRoot":"","sources":["../../src/command-line/dependency-injection.ts"],"names":[],"mappings":"AAEA,OAAO,EASL,UAAU,EACV,aAAa,EAEb,UAAU,EAGV,gBAAgB,EAGhB,kBAAkB,EAUlB,YAAY,EACZ,aAAa,EAOb,kBAAkB,EAIlB,kBAAkB,EACnB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAE/E,OAAO,EAML,0BAA0B,EAG3B,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,gCAAgC,EAAE,MAAM,sDAAsD,CAAC;AAExG,OAAO,EAAE,+BAA+B,EAAE,MAAM,qDAAqD,CAAC;AACtG,OAAO,EAAE,6BAA6B,EAAE,MAAM,mDAAmD,CAAC;AAIlG,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAI3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAIrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAQtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAIzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAG3E,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAWlE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAEhF,eAAO,MAAM,eAAe,eAAsB,UAAU,GAAG,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8OvE,CAAC;AAGF,aAAK,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AAC3D,oBAAY,YAAY,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC,CAAC"}