@pagopa/dx-cli 0.23.3 → 0.23.5

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.
@@ -10,10 +10,11 @@
10
10
  import { Command } from "commander";
11
11
  import { ResultAsync } from "neverthrow";
12
12
  import type { Payload as EnvironmentPayload } from "../../plop/generators/environment/index.js";
13
+ import type { CliEnv } from "../env.js";
13
14
  import { AuthorizationResult, AuthorizationService } from "../../../domain/authorization.js";
14
15
  import { GitHubAuthFactory } from "../../../domain/dependencies.js";
15
16
  /**
16
17
  * Authorize a Cloud Account (Azure Subscription, AWS Account, ...), creating a Pull Request for each account that requires authorization.
17
18
  */
18
19
  export declare const authorizeCloudAccounts: (authorizationService: AuthorizationService) => (envPayload: EnvironmentPayload) => ResultAsync<AuthorizationResult[], never>;
19
- export declare const makeAddCommand: (requireGitHubAuth: GitHubAuthFactory) => Command;
20
+ export declare const makeAddCommand: (requireGitHubAuth: GitHubAuthFactory, env: CliEnv) => Command;
@@ -16,7 +16,7 @@ import { environmentShort } from "../../../domain/environment.js";
16
16
  import { isAzureLocation, locationShort } from "../../azure/locations.js";
17
17
  import { collectDeploymentEnvironmentPayload, getPlopInstance, runDeploymentEnvironmentActions, } from "../../plop/index.js";
18
18
  import { asError, reportCommandError } from "../command-errors.js";
19
- import { createCommandPresenter } from "../presenters/index.js";
19
+ import { createCommandPresenter, resolveOutputMode, } from "../presenters/index.js";
20
20
  import { runAddEnvironmentPreconditions } from "./init.js";
21
21
  /**
22
22
  * Authorize a Cloud Account (Azure Subscription, AWS Account, ...), creating a Pull Request for each account that requires authorization.
@@ -97,16 +97,17 @@ ResultAsync.fromPromise(collectDeploymentEnvironmentPayload(plop, gitHubService)
97
97
  .andThen((payload) => authorizeCloudAccounts(authorizationService)(payload).map((authorizationPrs) => ({
98
98
  authorizationPrs,
99
99
  })));
100
- export const makeAddCommand = (requireGitHubAuth) => new Command()
100
+ export const makeAddCommand = (requireGitHubAuth, env) => new Command()
101
101
  .name("add")
102
102
  .description("Add a new component to your workspace")
103
103
  .addCommand(new Command("environment")
104
104
  .description("Add a new deployment environment")
105
105
  .action(async function () {
106
106
  const { output } = this.optsWithGlobals();
107
- const presenter = createCommandPresenter(output);
107
+ const outputMode = resolveOutputMode(env, output);
108
+ const presenter = createCommandPresenter(outputMode);
108
109
  await requireGitHubAuth()
109
110
  .andThen(({ authorizationService, gitHubService }) => addEnvironmentAction(authorizationService, gitHubService, presenter))
110
- .match(reportSummary(presenter, output), reportCommandError(this, presenter, output));
111
+ .match(reportSummary(presenter, outputMode), reportCommandError(this, presenter, outputMode));
111
112
  }));
112
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FkYXB0ZXJzL2NvbW1hbmRlci9jb21tYW5kcy9hZGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzdDLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQjs7Ozs7Ozs7R0FRRztBQUNILE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFNbEQsT0FBTyxFQUdMLCtCQUErQixHQUNoQyxNQUFNLGtDQUFrQyxDQUFDO0FBRTFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRWxFLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUUsT0FBTyxFQUNMLG1DQUFtQyxFQUNuQyxlQUFlLEVBQ2YsK0JBQStCLEdBQ2hDLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUUzRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUNqQyxDQUFDLG9CQUEwQyxFQUFFLEVBQUUsQ0FDL0MsQ0FDRSxVQUE4QixFQUNhLEVBQUU7SUFDN0MsTUFBTSxvQkFBb0IsR0FDeEIsVUFBVSxDQUFDLElBQUksRUFBRSx5QkFBeUIsSUFBSSxFQUFFLENBQUM7SUFFbkQsSUFBSSxvQkFBb0IsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDdEMsT0FBTyxPQUFPLENBQUMs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LEVBQUUsb0JBQW9CLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxDQUNuRCxvQkFBb0IsQ0FDbEIsb0JBQW9CLEVBQ3BCLGFBQWEsRUFDYixTQUFTLENBQ1YsQ0FDRjtTQUNBLEtBQUssQ0FDSixhQUFhLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxFQUNoQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUM1QyxDQUFDO0FBQ04sQ0FBQyxDQUFDLENBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldExvZ2dlciB9IGZyb20gXCJAbG9ndGFwZS9sb2d0YXBlXCI7XG5pbXBvcnQgY2hhbGsgZnJvbSBcImNoYWxrXCI7XG4vKipcbiAqIEFkZCBjb21tYW5kIC0gU2NhZmZvbGQgbmV3IGNvbXBvbmVudHMgaW50byBleGlzdGluZyB3b3Jrc3BhY2VzXG4gKlxuICogVGhpcyBtb2R1bGUgaW1wbGVtZW50cyB0aGUgYGR4IGFkZGAgY29tbWFuZCB3aGljaCBhbGxvd3MgZGV2ZWxvcGVycyB0byBzY2FmZm9sZFxuICogbmV3IGNvbXBvbmVudHMgaW50byB0aGVpciBleGlzdGluZyB3b3Jrc3BhY2UgZm9sbG93aW5nIERldkV4IGd1aWRlbGluZXMuXG4gKlxuICogQ3VycmVudGx5IHN1cHBvcnRlZCBjb21wb25lbnRzOlxuICogLSBlbnZpcm9ubWVudDogQWRkIGEgbmV3IGRlcGxveW1lbnQgZW52aXJvbm1lbnQgdG8gdGhlIHByb2plY3RcbiAqL1xuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gXCJjb21tYW5kZXJcIjtcbmltcG9ydCB7IG9rQXN5bmMsIFJlc3VsdEFzeW5jIH0gZnJvbSBcIm5ldmVydGhyb3dcIjtcblxuaW1wb3J0IHR5cGUgeyBDb21tYW5kUHJlc2VudGVyIH0gZnJvbSBcIi4uLy4uLy4uL2RvbWFpbi9jb21tYW5kLXByZXNlbnRlci5qc1wiO1xuaW1wb3J0IHR5cGUgeyBQYXlsb2FkIGFzIEVudmlyb25tZW50UGF5bG9hZCB9IGZyb20gXCIuLi8uLi9wbG9wL2dlbmVyYXRvcnMvZW52aXJvbm1lbnQvaW5kZXguanNcIjtcbmltcG9ydCB0eXBlIHsgR2xvYmFsT3B0aW9ucyB9IGZyb20gXCIuLi9nbG9iYWwtb3B0aW9ucy5qc1wiO1xuXG5pbXBvcnQge1xuICBBdXRob3JpemF0aW9uUmVzdWx0LFxuICBBdXRob3JpemF0aW9uU2VydmljZSxcbiAgcmVxdWVzdEF1dGhvcml6YXRpb25JbnB1dFNjaGVtYSxcbn0gZnJvbSBcIi4uLy4uLy4uL2RvbWFpbi9hdXRob3JpemF0aW9uLmpzXCI7XG5pbXBvcnQgeyBHaXRIdWJBdXRoRmFjdG9yeSB9IGZyb20gXCIuLi8uLi8uLi9kb21haW4vZGVwZW5kZW5jaWVzLmpzXCI7XG5pbXBvcnQgeyBlbnZpcm9ubWVudFNob3J0IH0gZnJvbSBcIi4uLy4uLy4uL2RvbWFpbi9lbnZpcm9ubWVudC5qc1wiO1xuaW1wb3J0IHsgdHlwZSBHaXRIdWJTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL2RvbWFpbi9naXRodWIuanNcIjtcbmltcG9ydCB7IGlzQXp1cmVMb2NhdGlvbiwgbG9jYXRpb25TaG9ydCB9IGZyb20gXCIuLi8uLi9henVyZS9sb2NhdGlvbnMuanNcIjtcbmltcG9ydCB7XG4gIGNvbGxlY3REZXBsb3ltZW50RW52aXJvbm1lbnRQYXlsb2FkLFxuICBnZXRQbG9wSW5zdGFuY2UsXG4gIHJ1bkRlcGxveW1lbnRFbnZpcm9ubWVudEFjdGlvbnMsXG59IGZyb20gXCIuLi8uLi9wbG9wL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBhc0Vycm9yLCByZXBvcnRDb21tYW5kRXJyb3IgfSBmcm9tIFwiLi4vY29tbWFuZC1lcnJvcnMuanNcIjtcbmltcG9ydCB7IGNyZWF0ZUNvbW1hbmRQcmVzZW50ZXIgfSBmcm9tIFwiLi4vcHJlc2VudGVycy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgcnVuQWRkRW52aXJvbm1lbnRQcmVjb25kaXRpb25zIH0gZnJvbSBcIi4vaW5pdC5qc1wiO1xuXG4vKipcbiAqIEF1dGhvcml6ZSBhIENsb3VkIEFjY291bnQgKEF6dXJlIFN1YnNjcmlwdGlvbiwgQVdTIEFjY291bnQsIC4uLiksIGNyZWF0aW5nIGEgUHVsbCBSZXF1ZXN0IGZvciBlYWNoIGFjY291bnQgdGhhdCByZXF1aXJlcyBhdXRob3JpemF0aW9uLlxuICovXG5leHBvcnQgY29uc3QgYXV0aG9yaXplQ2xvdWRBY2NvdW50cyA9XG4gIChhdXRob3JpemF0aW9uU2VydmljZTogQXV0aG9yaXphdGlvblNlcnZpY2UpID0+XG4gIChcbiAgICBlbnZQYXlsb2FkOiBFbnZpcm9ubWVudFBheWxvYWQsXG4gICk6IFJlc3VsdEFzeW5jPEF1dGhvcml6YXRpb25SZXN1bHRbXSwgbmV2ZXI+ID0+IHtcbiAgICBjb25zdCBhY2NvdW50c1RvSW5pdGlhbGl6ZSA9XG4gICAgICBlbnZQYXlsb2FkLmluaXQ/LmNsb3VkQWNjb3VudHNUb0luaXRpYWxpemUgPz8gW107XG5cbiAgICBpZiAoYWNjb3VudHNUb0luaXRpYWxpemUubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gb2tBc3luYyhbXSk7XG4gICAgfVxuXG4gICAgY29uc3QgbG9nZ2VyID0gZ2V0TG9nZ2VyKFtcImR4LWNsaVwiLCBcImFkZC1lbnZpcm9ubWVudFwiXSk7XG4gICAgY29uc3QgeyBuYW1lLCBwcmVmaXggfSA9IGVudlBheWxvYWQuZW52O1xuICAgIGNvbnN0IGVudlNob3J0ID0gZW52aXJvbm1lbnRTaG9ydFtuYW1lXTtcblxuICAgIGNvbnN0IHJlcXVlc3RBbGwgPSBhc3luYyAoKTogUHJvbWlzZTxBdXRob3JpemF0aW9uUmVzdWx0W10+ID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdHM6IEF1dGhvcml6YXRpb25SZXN1bHRbXSA9IFtdO1xuXG4gICAgICBmb3IgKGNvbnN0IGFjY291bnQgb2YgYWNjb3VudHNUb0luaXRpYWxpemUpIHtcbiAgICAgICAgaWYgKCFpc0F6dXJlTG9jYXRpb24oYWNjb3VudC5kZWZhdWx0TG9jYXRpb24pKSB7XG4gICAgICAgICAgbG9nZ2VyLndhcm4oXG4gICAgICAgICAgICBcIlNraXBwaW5nIGF1dGhvcml6YXRpb24gZm9yIHthY2NvdW50fTogdW5zdXBwb3J0ZWQgbG9jYXRpb25cIixcbiAgICAgICAgICAgIHsgYWNjb3VudDogYWNjb3VudC5kaXNwbGF5TmFtZSB9LFxuICAgICAgICAgICk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsb2NTaG9ydCA9IGxvY2F0aW9uU2hvcnRbYWNjb3VudC5kZWZhdWx0TG9jYXRpb25dO1xuICAgICAgICBjb25zdCBpbnB1dCA9IHJlcXVlc3RBdXRob3JpemF0aW9uSW5wdXRTY2hlbWEuc2FmZVBhcnNlKHtcbiAgICAgICAgICBib290c3RyYXBJZGVudGl0eUlkOiBgJHtwcmVmaXh9LSR7ZW52U2hvcnR9LSR7bG9jU2hvcnR9LWJvb3RzdHJhcC1pZC0wMWAsXG4gICAgICAgICAgZW52U2hvcnQsXG4gICAgICAgICAgcHJlZml4LFxuICAgICAgICAgIHJlcG9OYW1lOiBlbnZQYXlsb2FkLmdpdGh1Yi5yZXBvLFxuICAgICAgICAgIHN1YnNjcmlwdGlvbk5hbWU6IGFjY291bnQuZGlzcGxheU5hbWUsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICghaW5wdXQuc3VjY2Vzcykge1xuICAgICAgICAgIGxvZ2dlci53YXJuKFwiU2tpcHBpbmcgYXV0aG9yaXphdGlvbiBmb3Ige2FjY291bnR9OiBpbnZhbGlkIGlucHV0XCIsIHtcbiAgICAgICAgICAgIGFjY291bnQ6IGFjY291bnQuZGlzcGxheU5hbWUsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBhdXRob3JpemF0aW9uU2VydmljZS5yZXF1ZXN0QXV0aG9yaXphdGlvbihcbiAgICAgICAgICBpbnB1dC5kYXRhLFxuICAgICAgICApO1xuXG4gICAgICAgIHJlc3VsdC5tYXRjaChcbiAgICAgICAgICAoYXV0aFJlc3VsdCkgPT4gcmVzdWx0cy5wdXNoKGF1dGhSZXN1bHQpLFxuICAgICAgICAgIChlcnJvcikgPT5cbiAgICAgICAgICAgIGxvZ2dlci53YXJuKFwiQXV0aG9yaXphdGlvbiByZXF1ZXN0IGZhaWxlZCBmb3Ige2FjY291bnR9OiB7ZXJyb3J9XCIsIHtcbiAgICAgICAgICAgICAgYWNjb3VudDogYWNjb3VudC5kaXNwbGF5TmFtZSxcbiAgICAgICAgICAgICAgZXJyb3I6IGVycm9yLm1lc3NhZ2UsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3VsdHM7XG4gICAgfTtcblxuICAgIHJldHVybiBSZXN1bHRBc3luYy5mcm9tUHJvbWlzZShyZXF1ZXN0QWxsKCksICgpID0+IFtdKS5vckVsc2UoKCkgPT5cbiAgICAgIG9rQXN5bmMoW10pLFxuICAgICk7XG4gIH07XG5cbnR5cGUgQWRkUmVzdWx0ID0ge1xuICBhdXRob3JpemF0aW9uUHJzOiBBdXRob3JpemF0aW9uUmVzdWx0W107XG59O1xuXG5jb25zdCBkaXNwbGF5U3VtbWFyeSA9IChyZXN1bHQ6IEFkZFJlc3VsdCkgPT4ge1xuICBjb25zdCB7IGF1dGhvcml6YXRpb25QcnMgfSA9IHJlc3VsdDtcbiAgY29uc29sZS5sb2coY2hhbGsuZ3JlZW4uYm9sZChcIlxcbkNsb3VkIGVudmlyb25tZW50IGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5IVwiKSk7XG5cbiAgbGV0IHN0ZXAgPSAxO1xuICBjb25zb2xlLmxvZyhjaGFsay5ncmVlbi5ib2xkKFwiXFxuTmV4dCBTdGVwczpcIikpO1xuICBjb25zdCBwcnNXaXRoVXJsID0gYXV0aG9yaXphdGlvblBycy5maWx0ZXIoXG4gICAgKHByKTogcHIgaXMgQXV0aG9yaXphdGlvblJlc3VsdCAmIHsgdXJsOiBzdHJpbmcgfSA9PiBwci51cmwgIT0gbnVsbCxcbiAgKTtcbiAgaWYgKHByc1dpdGhVcmwubGVuZ3RoID4gMCkge1xuICAgIGNvbnNvbGUubG9nKGAke3N0ZXArK30uIFJldmlldyB0aGUgQXp1cmUgYXV0aG9yaXphdGlvbiBQdWxsIFJlcXVlc3Qocyk6YCk7XG4gICAgZm9yIChjb25zdCBhdXRoUHIgb2YgcHJzV2l0aFVybCkge1xuICAgICAgY29uc29sZS5sb2coYCAgIC0gJHtjaGFsay51bmRlcmxpbmUoYXV0aFByLnVybCl9YCk7XG4gICAgfVxuICB9XG4gIGNvbnNvbGUubG9nKFxuICAgIGAke3N0ZXB9LiBWaXNpdCAke2NoYWxrLnVuZGVybGluZShcImh0dHBzOi8vZHgucGFnb3BhLml0L2dldHRpbmctc3RhcnRlZFwiKX0gdG8gZGVwbG95IHlvdXIgZmlyc3QgcHJvamVjdFxcbmAsXG4gICk7XG59O1xuXG4vKipcbiAqIFJvdXRlcyB0aGUgc3VjY2Vzc2Z1bCBvdXRjb21lIHRocm91Z2ggdGhlIHByZXNlbnRlcjogSlNPTiBtb2RlIGVtaXRzIHRoZVxuICogc3RydWN0dXJlZCBlbnZlbG9wZSB3aGlsZSB0ZXh0IG1vZGUgcmVuZGVycyB0aGUgaHVtYW4tcmVhZGFibGUgc3VtbWFyeS5cbiAqL1xuY29uc3QgcmVwb3J0U3VtbWFyeSA9XG4gIChwcmVzZW50ZXI6IENvbW1hbmRQcmVzZW50ZXIsIG91dHB1dE1vZGU6IFwianNvblwiIHwgXCJ0ZXh0XCIpID0+XG4gIChyZXN1bHQ6IEFkZFJlc3VsdCk6IHZvaWQgPT4ge1xuICAgIGlmIChvdXRwdXRNb2RlID09PSBcImpzb25cIikge1xuICAgICAgcHJlc2VudGVyLnJlcG9ydFJlc3VsdChyZXN1bHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBkaXNwbGF5U3VtbWFyeShyZXN1bHQpO1xuICAgIH1cbiAgfTtcblxuY29uc3QgdHJhY2tTdGVwID0gPFQsIEU+KFxuICBwcmVzZW50ZXI6IENvbW1hbmRQcmVzZW50ZXIsXG4gIG5hbWU6IHN0cmluZyxcbiAgdGFzazogKCkgPT4gUHJvbWlzZTxUPixcbiAgbWFwRXJyb3I6IChjYXVzZTogdW5rbm93bikgPT4gRSxcbik6IFJlc3VsdEFzeW5jPFQsIEU+ID0+XG4gIFJlc3VsdEFzeW5jLmZyb21Qcm9taXNlKHByZXNlbnRlci50cmFja1N0ZXAobmFtZSwgdGFzayksIG1hcEVycm9yKTtcblxuY29uc3QgYWRkRW52aXJvbm1lbnRBY3Rpb24gPSAoXG4gIGF1dGhvcml6YXRpb25TZXJ2aWNlOiBBdXRob3JpemF0aW9uU2VydmljZSxcbiAgZ2l0SHViU2VydmljZTogR2l0SHViU2VydmljZSxcbiAgcHJlc2VudGVyOiBDb21tYW5kUHJlc2VudGVyLFxuKTogUmVzdWx0QXN5bmM8QWRkUmVzdWx0LCBFcnJvcj4gPT5cbiAgcnVuQWRkRW52aXJvbm1lbnRQcmVjb25kaXRpb25zKHByZXNlbnRlcilcbiAgICAuYW5kVGhlbigoKSA9PlxuICAgICAgdHJhY2tTdGVwKFxuICAgICAgICBwcmVzZW50ZXIsXG4gICAgICAgIFwiSW5pdGlhbGl6aW5nIGVudmlyb25tZW50IGdlbmVyYXRvci4uLlwiLFxuICAgICAgICBnZXRQbG9wSW5zdGFuY2UsXG4gICAgICAgIGFzRXJyb3IoXCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBwbG9wXCIpLFxuICAgICAgKSxcbiAgICApXG4gICAgLmFuZFRoZW4oKHBsb3ApID0+XG4gICAgICAvLyBUaGUgcHJvbXB0IHBoYXNlIG11c3QgcnVuIG91dHNpZGUgdHJhY2tTdGVwOiBpbiB0ZXh0IG1vZGUgdHJhY2tTdGVwXG4gICAgICAvLyByZW5kZXJzIGEgc3Bpbm5lciB0aGF0IG9jY3VwaWVzIHRoZSBUVFkgYW5kIGhpZGVzIHRoZSBwcm9tcHRzLlxuICAgICAgUmVzdWx0QXN5bmMuZnJvbVByb21pc2UoXG4gICAgICAgIGNvbGxlY3REZXBsb3ltZW50RW52aXJvbm1lbnRQYXlsb2FkKHBsb3AsIGdpdEh1YlNlcnZpY2UpLFxuICAgICAgICBhc0Vycm9yKFwiRmFpbGVkIHRvIHJ1biB0aGUgZGVwbG95bWVudCBlbnZpcm9ubWVudCBnZW5lcmF0b3JcIiksXG4gICAgICApLFxuICAgIClcbiAgICAuYW5kVGhlbigoeyBnZW5lcmF0b3IsIHBheWxvYWQgfSkgPT5cbiAgICAgIHRyYWNrU3RlcChcbiAgICAgICAgcHJlc2VudGVyLFxuICAgICAgICBcIkNyZWF0aW5nIGVudmlyb25tZW50Li4uXCIsXG4gICAgICAgICgpID0+IHJ1bkRlcGxveW1lbnRFbnZpcm9ubWVudEFjdGlvbnMoZ2VuZXJhdG9yLCBwYXlsb2FkKSxcbiAgICAgICAgYXNFcnJvcihcIkZhaWxlZCB0byBjcmVhdGUgdGhlIGRlcGxveW1lbnQgZW52aXJvbm1lbnRcIiksXG4gICAgICApLFxuICAgIClcbiAgICAuYW5kVGhlbigocGF5bG9hZCkgPT5cbiAgICAgIGF1dGhvcml6ZUNsb3VkQWNjb3VudHMoYXV0aG9yaXphdGlvblNlcnZpY2UpKHBheWxvYWQpLm1hcChcbiAgICAgICAgKGF1dGhvcml6YXRpb25QcnMpID0+ICh7XG4gICAgICAgICAgYXV0aG9yaXphdGlvblBycyxcbiAgICAgICAgfSksXG4gICAgICApLFxuICAgICk7XG5cbmV4cG9ydCBjb25zdCBtYWtlQWRkQ29tbWFuZCA9IChyZXF1aXJlR2l0SHViQXV0aDogR2l0SHViQXV0aEZhY3RvcnkpOiBDb21tYW5kID0+XG4gIG5ldyBDb21tYW5kKClcbiAgICAubmFtZShcImFkZFwiKVxuICAgIC5kZXNjcmlwdGlvbihcIkFkZCBhIG5ldyBjb21wb25lbnQgdG8geW91ciB3b3Jrc3BhY2VcIilcbiAgICAuYWRkQ29tbWFuZChcbiAgICAgIG5ldyBDb21tYW5kKFwiZW52aXJvbm1lbnRcIilcbiAgICAgICAgLmRlc2NyaXB0aW9uKFwiQWRkIGEgbmV3IGRlcGxveW1lbnQgZW52aXJvbm1lbnRcIilcbiAgICAgICAgLmFjdGlvbihhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgY29uc3QgeyBvdXRwdXQgfSA9IHRoaXMub3B0c1dpdGhHbG9iYWxzPEdsb2JhbE9wdGlvbnM+KCk7XG4gICAgICAgICAgY29uc3QgcHJlc2VudGVyID0gY3JlYXRlQ29tbWFuZFByZXNlbnRlcihvdXRwdXQpO1xuXG4gICAgICAgICAgYXdhaXQgcmVxdWlyZUdpdEh1YkF1dGgoKVxuICAgICAgICAgICAgLmFuZFRoZW4oKHsgYXV0aG9yaXphdGlvblNlcnZpY2UsIGdpdEh1YlNlcnZpY2UgfSkgPT5cbiAgICAgICAgICAgICAgYWRkRW52aXJvbm1lbnRBY3Rpb24oXG4gICAgICAgICAgICAgICAgYXV0aG9yaXphdGlvblNlcnZpY2UsXG4gICAgICAgICAgICAgICAgZ2l0SHViU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcmVzZW50ZXIsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAubWF0Y2goXG4gICAgICAgICAgICAgIHJlcG9ydFN1bW1hcnkocHJlc2VudGVyLCBvdXRwdXQpLFxuICAgICAgICAgICAgICByZXBvcnRDb21tYW5kRXJyb3IodGhpcywgcHJlc2VudGVyLCBvdXRwdXQpLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSksXG4gICAgKTtcbiJdfQ==
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FkYXB0ZXJzL2NvbW1hbmRlci9jb21tYW5kcy9hZGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzdDLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQjs7Ozs7Ozs7R0FRRztBQUNILE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFPbEQsT0FBTyxFQUdMLCtCQUErQixHQUNoQyxNQUFNLGtDQUFrQyxDQUFDO0FBRTFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRWxFLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUUsT0FBTyxFQUNMLG1DQUFtQyxFQUNuQyxlQUFlLEVBQ2YsK0JBQStCLEdBQ2hDLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25FLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsaUJBQWlCLEdBQ2xCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRTNEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQ2pDLENBQUMsb0JBQTBDLEVBQUUsRUFBRSxDQUMvQyxDQUNFLFVBQThCLEVBQ2EsRUFBRTtJQUM3QyxNQUFNLG9CQUFvQixHQUN4QixVQUFVLENBQUMsSUFBSSxFQUFFLHlCQUF5QixJQUFJLEVBQUUsQ0FBQztJQUVuRCxJQUFJLG9CQUFvQixDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN0QyxP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QU0sU0FBUyxHQUFHLHNCQUFzQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRXJELE1BQU0saUJBQWlCLEVBQUU7U0FDdEIsT0FBTyxDQUFDLENBQUMsRUFBRSxvQkFBb0IsRUFBRSxhQUFhLEVBQUUsRUFBRSxFQUFFLENBQ25ELG9CQUFvQixDQUNsQixvQkFBb0IsRUFDcEIsYUFBYSxFQUNiLFNBQVMsQ0FDVixDQUNGO1NBQ0EsS0FBSyxDQUNKLGFBQWEsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLEVBQ3BDLGtCQUFrQixDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQ2hELENBQUM7QUFDTixDQUFDLENBQUMsQ0FDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0TG9nZ2VyIH0gZnJvbSBcIkBsb2d0YXBlL2xvZ3RhcGVcIjtcbmltcG9ydCBjaGFsayBmcm9tIFwiY2hhbGtcIjtcbi8qKlxuICogQWRkIGNvbW1hbmQgLSBTY2FmZm9sZCBuZXcgY29tcG9uZW50cyBpbnRvIGV4aXN0aW5nIHdvcmtzcGFjZXNcbiAqXG4gKiBUaGlzIG1vZHVsZSBpbXBsZW1lbnRzIHRoZSBgZHggYWRkYCBjb21tYW5kIHdoaWNoIGFsbG93cyBkZXZlbG9wZXJzIHRvIHNjYWZmb2xkXG4gKiBuZXcgY29tcG9uZW50cyBpbnRvIHRoZWlyIGV4aXN0aW5nIHdvcmtzcGFjZSBmb2xsb3dpbmcgRGV2RXggZ3VpZGVsaW5lcy5cbiAqXG4gKiBDdXJyZW50bHkgc3VwcG9ydGVkIGNvbXBvbmVudHM6XG4gKiAtIGVudmlyb25tZW50OiBBZGQgYSBuZXcgZGVwbG95bWVudCBlbnZpcm9ubWVudCB0byB0aGUgcHJvamVjdFxuICovXG5pbXBvcnQgeyBDb21tYW5kIH0gZnJvbSBcImNvbW1hbmRlclwiO1xuaW1wb3J0IHsgb2tBc3luYywgUmVzdWx0QXN5bmMgfSBmcm9tIFwibmV2ZXJ0aHJvd1wiO1xuXG5pbXBvcnQgdHlwZSB7IENvbW1hbmRQcmVzZW50ZXIgfSBmcm9tIFwiLi4vLi4vLi4vZG9tYWluL2NvbW1hbmQtcHJlc2VudGVyLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFBheWxvYWQgYXMgRW52aXJvbm1lbnRQYXlsb2FkIH0gZnJvbSBcIi4uLy4uL3Bsb3AvZ2VuZXJhdG9ycy9lbnZpcm9ubWVudC9pbmRleC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBDbGlFbnYgfSBmcm9tIFwiLi4vZW52LmpzXCI7XG5pbXBvcnQgdHlwZSB7IEdsb2JhbE9wdGlvbnMgfSBmcm9tIFwiLi4vZ2xvYmFsLW9wdGlvbnMuanNcIjtcblxuaW1wb3J0IHtcbiAgQXV0aG9yaXphdGlvblJlc3VsdCxcbiAgQXV0aG9yaXphdGlvblNlcnZpY2UsXG4gIHJlcXVlc3RBdXRob3JpemF0aW9uSW5wdXRTY2hlbWEsXG59IGZyb20gXCIuLi8uLi8uLi9kb21haW4vYXV0aG9yaXphdGlvbi5qc1wiO1xuaW1wb3J0IHsgR2l0SHViQXV0aEZhY3RvcnkgfSBmcm9tIFwiLi4vLi4vLi4vZG9tYWluL2RlcGVuZGVuY2llcy5qc1wiO1xuaW1wb3J0IHsgZW52aXJvbm1lbnRTaG9ydCB9IGZyb20gXCIuLi8uLi8uLi9kb21haW4vZW52aXJvbm1lbnQuanNcIjtcbmltcG9ydCB7IHR5cGUgR2l0SHViU2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi9kb21haW4vZ2l0aHViLmpzXCI7XG5pbXBvcnQgeyBpc0F6dXJlTG9jYXRpb24sIGxvY2F0aW9uU2hvcnQgfSBmcm9tIFwiLi4vLi4vYXp1cmUvbG9jYXRpb25zLmpzXCI7XG5pbXBvcnQge1xuICBjb2xsZWN0RGVwbG95bWVudEVudmlyb25tZW50UGF5bG9hZCxcbiAgZ2V0UGxvcEluc3RhbmNlLFxuICBydW5EZXBsb3ltZW50RW52aXJvbm1lbnRBY3Rpb25zLFxufSBmcm9tIFwiLi4vLi4vcGxvcC9pbmRleC5qc1wiO1xuaW1wb3J0IHsgYXNFcnJvciwgcmVwb3J0Q29tbWFuZEVycm9yIH0gZnJvbSBcIi4uL2NvbW1hbmQtZXJyb3JzLmpzXCI7XG5pbXBvcnQge1xuICBjcmVhdGVDb21tYW5kUHJlc2VudGVyLFxuICByZXNvbHZlT3V0cHV0TW9kZSxcbn0gZnJvbSBcIi4uL3ByZXNlbnRlcnMvaW5kZXguanNcIjtcbmltcG9ydCB7IHJ1bkFkZEVudmlyb25tZW50UHJlY29uZGl0aW9ucyB9IGZyb20gXCIuL2luaXQuanNcIjtcblxuLyoqXG4gKiBBdXRob3JpemUgYSBDbG91ZCBBY2NvdW50IChBenVyZSBTdWJzY3JpcHRpb24sIEFXUyBBY2NvdW50LCAuLi4pLCBjcmVhdGluZyBhIFB1bGwgUmVxdWVzdCBmb3IgZWFjaCBhY2NvdW50IHRoYXQgcmVxdWlyZXMgYXV0aG9yaXphdGlvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IGF1dGhvcml6ZUNsb3VkQWNjb3VudHMgPVxuICAoYXV0aG9yaXphdGlvblNlcnZpY2U6IEF1dGhvcml6YXRpb25TZXJ2aWNlKSA9PlxuICAoXG4gICAgZW52UGF5bG9hZDogRW52aXJvbm1lbnRQYXlsb2FkLFxuICApOiBSZXN1bHRBc3luYzxBdXRob3JpemF0aW9uUmVzdWx0W10sIG5ldmVyPiA9PiB7XG4gICAgY29uc3QgYWNjb3VudHNUb0luaXRpYWxpemUgPVxuICAgICAgZW52UGF5bG9hZC5pbml0Py5jbG91ZEFjY291bnRzVG9Jbml0aWFsaXplID8/IFtdO1xuXG4gICAgaWYgKGFjY291bnRzVG9Jbml0aWFsaXplLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG9rQXN5bmMoW10pO1xuICAgIH1cblxuICAgIGNvbnN0IGxvZ2dlciA9IGdldExvZ2dlcihbXCJkeC1jbGlcIiwgXCJhZGQtZW52aXJvbm1lbnRcIl0pO1xuICAgIGNvbnN0IHsgbmFtZSwgcHJlZml4IH0gPSBlbnZQYXlsb2FkLmVudjtcbiAgICBjb25zdCBlbnZTaG9ydCA9IGVudmlyb25tZW50U2hvcnRbbmFtZV07XG5cbiAgICBjb25zdCByZXF1ZXN0QWxsID0gYXN5bmMgKCk6IFByb21pc2U8QXV0aG9yaXphdGlvblJlc3VsdFtdPiA9PiB7XG4gICAgICBjb25zdCByZXN1bHRzOiBBdXRob3JpemF0aW9uUmVzdWx0W10gPSBbXTtcblxuICAgICAgZm9yIChjb25zdCBhY2NvdW50IG9mIGFjY291bnRzVG9Jbml0aWFsaXplKSB7XG4gICAgICAgIGlmICghaXNBenVyZUxvY2F0aW9uKGFjY291bnQuZGVmYXVsdExvY2F0aW9uKSkge1xuICAgICAgICAgIGxvZ2dlci53YXJuKFxuICAgICAgICAgICAgXCJTa2lwcGluZyBhdXRob3JpemF0aW9uIGZvciB7YWNjb3VudH06IHVuc3VwcG9ydGVkIGxvY2F0aW9uXCIsXG4gICAgICAgICAgICB7IGFjY291bnQ6IGFjY291bnQuZGlzcGxheU5hbWUgfSxcbiAgICAgICAgICApO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbG9jU2hvcnQgPSBsb2NhdGlvblNob3J0W2FjY291bnQuZGVmYXVsdExvY2F0aW9uXTtcbiAgICAgICAgY29uc3QgaW5wdXQgPSByZXF1ZXN0QXV0aG9yaXphdGlvbklucHV0U2NoZW1hLnNhZmVQYXJzZSh7XG4gICAgICAgICAgYm9vdHN0cmFwSWRlbnRpdHlJZDogYCR7cHJlZml4fS0ke2VudlNob3J0fS0ke2xvY1Nob3J0fS1ib290c3RyYXAtaWQtMDFgLFxuICAgICAgICAgIGVudlNob3J0LFxuICAgICAgICAgIHByZWZpeCxcbiAgICAgICAgICByZXBvTmFtZTogZW52UGF5bG9hZC5naXRodWIucmVwbyxcbiAgICAgICAgICBzdWJzY3JpcHRpb25OYW1lOiBhY2NvdW50LmRpc3BsYXlOYW1lLFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoIWlucHV0LnN1Y2Nlc3MpIHtcbiAgICAgICAgICBsb2dnZXIud2FybihcIlNraXBwaW5nIGF1dGhvcml6YXRpb24gZm9yIHthY2NvdW50fTogaW52YWxpZCBpbnB1dFwiLCB7XG4gICAgICAgICAgICBhY2NvdW50OiBhY2NvdW50LmRpc3BsYXlOYW1lLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYXV0aG9yaXphdGlvblNlcnZpY2UucmVxdWVzdEF1dGhvcml6YXRpb24oXG4gICAgICAgICAgaW5wdXQuZGF0YSxcbiAgICAgICAgKTtcblxuICAgICAgICByZXN1bHQubWF0Y2goXG4gICAgICAgICAgKGF1dGhSZXN1bHQpID0+IHJlc3VsdHMucHVzaChhdXRoUmVzdWx0KSxcbiAgICAgICAgICAoZXJyb3IpID0+XG4gICAgICAgICAgICBsb2dnZXIud2FybihcIkF1dGhvcml6YXRpb24gcmVxdWVzdCBmYWlsZWQgZm9yIHthY2NvdW50fToge2Vycm9yfVwiLCB7XG4gICAgICAgICAgICAgIGFjY291bnQ6IGFjY291bnQuZGlzcGxheU5hbWUsXG4gICAgICAgICAgICAgIGVycm9yOiBlcnJvci5tZXNzYWdlLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHRzO1xuICAgIH07XG5cbiAgICByZXR1cm4gUmVzdWx0QXN5bmMuZnJvbVByb21pc2UocmVxdWVzdEFsbCgpLCAoKSA9PiBbXSkub3JFbHNlKCgpID0+XG4gICAgICBva0FzeW5jKFtdKSxcbiAgICApO1xuICB9O1xuXG50eXBlIEFkZFJlc3VsdCA9IHtcbiAgYXV0aG9yaXphdGlvblByczogQXV0aG9yaXphdGlvblJlc3VsdFtdO1xufTtcblxuY29uc3QgZGlzcGxheVN1bW1hcnkgPSAocmVzdWx0OiBBZGRSZXN1bHQpID0+IHtcbiAgY29uc3QgeyBhdXRob3JpemF0aW9uUHJzIH0gPSByZXN1bHQ7XG4gIGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuLmJvbGQoXCJcXG5DbG91ZCBlbnZpcm9ubWVudCBjcmVhdGVkIHN1Y2Nlc3NmdWxseSFcIikpO1xuXG4gIGxldCBzdGVwID0gMTtcbiAgY29uc29sZS5sb2coY2hhbGsuZ3JlZW4uYm9sZChcIlxcbk5leHQgU3RlcHM6XCIpKTtcbiAgY29uc3QgcHJzV2l0aFVybCA9IGF1dGhvcml6YXRpb25QcnMuZmlsdGVyKFxuICAgIChwcik6IHByIGlzIEF1dGhvcml6YXRpb25SZXN1bHQgJiB7IHVybDogc3RyaW5nIH0gPT4gcHIudXJsICE9IG51bGwsXG4gICk7XG4gIGlmIChwcnNXaXRoVXJsLmxlbmd0aCA+IDApIHtcbiAgICBjb25zb2xlLmxvZyhgJHtzdGVwKyt9LiBSZXZpZXcgdGhlIEF6dXJlIGF1dGhvcml6YXRpb24gUHVsbCBSZXF1ZXN0KHMpOmApO1xuICAgIGZvciAoY29uc3QgYXV0aFByIG9mIHByc1dpdGhVcmwpIHtcbiAgICAgIGNvbnNvbGUubG9nKGAgICAtICR7Y2hhbGsudW5kZXJsaW5lKGF1dGhQci51cmwpfWApO1xuICAgIH1cbiAgfVxuICBjb25zb2xlLmxvZyhcbiAgICBgJHtzdGVwfS4gVmlzaXQgJHtjaGFsay51bmRlcmxpbmUoXCJodHRwczovL2R4LnBhZ29wYS5pdC9nZXR0aW5nLXN0YXJ0ZWRcIil9IHRvIGRlcGxveSB5b3VyIGZpcnN0IHByb2plY3RcXG5gLFxuICApO1xufTtcblxuLyoqXG4gKiBSb3V0ZXMgdGhlIHN1Y2Nlc3NmdWwgb3V0Y29tZSB0aHJvdWdoIHRoZSBwcmVzZW50ZXI6IEpTT04gbW9kZSBlbWl0cyB0aGVcbiAqIHN0cnVjdHVyZWQgZW52ZWxvcGUgd2hpbGUgdGV4dCBtb2RlIHJlbmRlcnMgdGhlIGh1bWFuLXJlYWRhYmxlIHN1bW1hcnkuXG4gKi9cbmNvbnN0IHJlcG9ydFN1bW1hcnkgPVxuICAocHJlc2VudGVyOiBDb21tYW5kUHJlc2VudGVyLCBvdXRwdXRNb2RlOiBcImpzb25cIiB8IFwidGV4dFwiKSA9PlxuICAocmVzdWx0OiBBZGRSZXN1bHQpOiB2b2lkID0+IHtcbiAgICBpZiAob3V0cHV0TW9kZSA9PT0gXCJqc29uXCIpIHtcbiAgICAgIHByZXNlbnRlci5yZXBvcnRSZXN1bHQocmVzdWx0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGlzcGxheVN1bW1hcnkocmVzdWx0KTtcbiAgICB9XG4gIH07XG5cbmNvbnN0IHRyYWNrU3RlcCA9IDxULCBFPihcbiAgcHJlc2VudGVyOiBDb21tYW5kUHJlc2VudGVyLFxuICBuYW1lOiBzdHJpbmcsXG4gIHRhc2s6ICgpID0+IFByb21pc2U8VD4sXG4gIG1hcEVycm9yOiAoY2F1c2U6IHVua25vd24pID0+IEUsXG4pOiBSZXN1bHRBc3luYzxULCBFPiA9PlxuICBSZXN1bHRBc3luYy5mcm9tUHJvbWlzZShwcmVzZW50ZXIudHJhY2tTdGVwKG5hbWUsIHRhc2spLCBtYXBFcnJvcik7XG5cbmNvbnN0IGFkZEVudmlyb25tZW50QWN0aW9uID0gKFxuICBhdXRob3JpemF0aW9uU2VydmljZTogQXV0aG9yaXphdGlvblNlcnZpY2UsXG4gIGdpdEh1YlNlcnZpY2U6IEdpdEh1YlNlcnZpY2UsXG4gIHByZXNlbnRlcjogQ29tbWFuZFByZXNlbnRlcixcbik6IFJlc3VsdEFzeW5jPEFkZFJlc3VsdCwgRXJyb3I+ID0+XG4gIHJ1bkFkZEVudmlyb25tZW50UHJlY29uZGl0aW9ucyhwcmVzZW50ZXIpXG4gICAgLmFuZFRoZW4oKCkgPT5cbiAgICAgIHRyYWNrU3RlcChcbiAgICAgICAgcHJlc2VudGVyLFxuICAgICAgICBcIkluaXRpYWxpemluZyBlbnZpcm9ubWVudCBnZW5lcmF0b3IuLi5cIixcbiAgICAgICAgZ2V0UGxvcEluc3RhbmNlLFxuICAgICAgICBhc0Vycm9yKFwiRmFpbGVkIHRvIGluaXRpYWxpemUgcGxvcFwiKSxcbiAgICAgICksXG4gICAgKVxuICAgIC5hbmRUaGVuKChwbG9wKSA9PlxuICAgICAgLy8gVGhlIHByb21wdCBwaGFzZSBtdXN0IHJ1biBvdXRzaWRlIHRyYWNrU3RlcDogaW4gdGV4dCBtb2RlIHRyYWNrU3RlcFxuICAgICAgLy8gcmVuZGVycyBhIHNwaW5uZXIgdGhhdCBvY2N1cGllcyB0aGUgVFRZIGFuZCBoaWRlcyB0aGUgcHJvbXB0cy5cbiAgICAgIFJlc3VsdEFzeW5jLmZyb21Qcm9taXNlKFxuICAgICAgICBjb2xsZWN0RGVwbG95bWVudEVudmlyb25tZW50UGF5bG9hZChwbG9wLCBnaXRIdWJTZXJ2aWNlKSxcbiAgICAgICAgYXNFcnJvcihcIkZhaWxlZCB0byBydW4gdGhlIGRlcGxveW1lbnQgZW52aXJvbm1lbnQgZ2VuZXJhdG9yXCIpLFxuICAgICAgKSxcbiAgICApXG4gICAgLmFuZFRoZW4oKHsgZ2VuZXJhdG9yLCBwYXlsb2FkIH0pID0+XG4gICAgICB0cmFja1N0ZXAoXG4gICAgICAgIHByZXNlbnRlcixcbiAgICAgICAgXCJDcmVhdGluZyBlbnZpcm9ubWVudC4uLlwiLFxuICAgICAgICAoKSA9PiBydW5EZXBsb3ltZW50RW52aXJvbm1lbnRBY3Rpb25zKGdlbmVyYXRvciwgcGF5bG9hZCksXG4gICAgICAgIGFzRXJyb3IoXCJGYWlsZWQgdG8gY3JlYXRlIHRoZSBkZXBsb3ltZW50IGVudmlyb25tZW50XCIpLFxuICAgICAgKSxcbiAgICApXG4gICAgLmFuZFRoZW4oKHBheWxvYWQpID0+XG4gICAgICBhdXRob3JpemVDbG91ZEFjY291bnRzKGF1dGhvcml6YXRpb25TZXJ2aWNlKShwYXlsb2FkKS5tYXAoXG4gICAgICAgIChhdXRob3JpemF0aW9uUHJzKSA9PiAoe1xuICAgICAgICAgIGF1dGhvcml6YXRpb25QcnMsXG4gICAgICAgIH0pLFxuICAgICAgKSxcbiAgICApO1xuXG5leHBvcnQgY29uc3QgbWFrZUFkZENvbW1hbmQgPSAoXG4gIHJlcXVpcmVHaXRIdWJBdXRoOiBHaXRIdWJBdXRoRmFjdG9yeSxcbiAgZW52OiBDbGlFbnYsXG4pOiBDb21tYW5kID0+XG4gIG5ldyBDb21tYW5kKClcbiAgICAubmFtZShcImFkZFwiKVxuICAgIC5kZXNjcmlwdGlvbihcIkFkZCBhIG5ldyBjb21wb25lbnQgdG8geW91ciB3b3Jrc3BhY2VcIilcbiAgICAuYWRkQ29tbWFuZChcbiAgICAgIG5ldyBDb21tYW5kKFwiZW52aXJvbm1lbnRcIilcbiAgICAgICAgLmRlc2NyaXB0aW9uKFwiQWRkIGEgbmV3IGRlcGxveW1lbnQgZW52aXJvbm1lbnRcIilcbiAgICAgICAgLmFjdGlvbihhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgY29uc3QgeyBvdXRwdXQgfSA9IHRoaXMub3B0c1dpdGhHbG9iYWxzPEdsb2JhbE9wdGlvbnM+KCk7XG4gICAgICAgICAgY29uc3Qgb3V0cHV0TW9kZSA9IHJlc29sdmVPdXRwdXRNb2RlKGVudiwgb3V0cHV0KTtcbiAgICAgICAgICBjb25zdCBwcmVzZW50ZXIgPSBjcmVhdGVDb21tYW5kUHJlc2VudGVyKG91dHB1dE1vZGUpO1xuXG4gICAgICAgICAgYXdhaXQgcmVxdWlyZUdpdEh1YkF1dGgoKVxuICAgICAgICAgICAgLmFuZFRoZW4oKHsgYXV0aG9yaXphdGlvblNlcnZpY2UsIGdpdEh1YlNlcnZpY2UgfSkgPT5cbiAgICAgICAgICAgICAgYWRkRW52aXJvbm1lbnRBY3Rpb24oXG4gICAgICAgICAgICAgICAgYXV0aG9yaXphdGlvblNlcnZpY2UsXG4gICAgICAgICAgICAgICAgZ2l0SHViU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcmVzZW50ZXIsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAubWF0Y2goXG4gICAgICAgICAgICAgIHJlcG9ydFN1bW1hcnkocHJlc2VudGVyLCBvdXRwdXRNb2RlKSxcbiAgICAgICAgICAgICAgcmVwb3J0Q29tbWFuZEVycm9yKHRoaXMsIHByZXNlbnRlciwgb3V0cHV0TW9kZSksXG4gICAgICAgICAgICApO1xuICAgICAgICB9KSxcbiAgICApO1xuIl19
@@ -1,8 +1,9 @@
1
1
  import { Command } from "commander";
2
2
  import type { ApplyCodemodById } from "../../../use-cases/apply-codemod.js";
3
3
  import type { ListCodemods } from "../../../use-cases/list-codemods.js";
4
+ import type { CliEnv } from "../env.js";
4
5
  export type CodemodCommandDependencies = {
5
6
  applyCodemodById: ApplyCodemodById;
6
7
  listCodemods: ListCodemods;
7
8
  };
8
- export declare const makeCodemodCommand: ({ applyCodemodById, listCodemods, }: CodemodCommandDependencies) => Command;
9
+ export declare const makeCodemodCommand: ({ applyCodemodById, listCodemods }: CodemodCommandDependencies, env: CliEnv) => Command;
@@ -1,30 +1,32 @@
1
1
  import { Command } from "commander";
2
2
  import { ResultAsync } from "neverthrow";
3
3
  import { asError, reportCommandError } from "../command-errors.js";
4
- import { createCommandPresenter } from "../presenters/index.js";
5
- export const makeCodemodCommand = ({ applyCodemodById, listCodemods, }) => new Command("codemod")
4
+ import { createCommandPresenter, resolveOutputMode, } from "../presenters/index.js";
5
+ export const makeCodemodCommand = ({ applyCodemodById, listCodemods }, env) => new Command("codemod")
6
6
  .description("Manage and apply migration scripts to the repository")
7
7
  .addCommand(new Command("list")
8
8
  .description("List available migration scripts")
9
9
  .action(async function () {
10
10
  const { output } = this.optsWithGlobals();
11
- const presenter = createCommandPresenter(output);
11
+ const outputMode = resolveOutputMode(env, output);
12
+ const presenter = createCommandPresenter(outputMode);
12
13
  await listCodemods()
13
14
  .map((codemods) => codemods.map(({ description, id }) => ({ description, id })))
14
15
  .andTee((codemods) => presenter.reportResult(codemods))
15
- .orTee(reportCommandError(this, presenter, output));
16
+ .orTee(reportCommandError(this, presenter, outputMode));
16
17
  }))
17
18
  .addCommand(new Command("apply")
18
19
  .argument("<id>", "The id of the codemod to apply")
19
20
  .description("Apply migration scripts to the repository")
20
21
  .action(async function (id) {
21
22
  const { output } = this.optsWithGlobals();
22
- const presenter = createCommandPresenter(output);
23
+ const outputMode = resolveOutputMode(env, output);
24
+ const presenter = createCommandPresenter(outputMode);
23
25
  await ResultAsync.fromPromise(presenter.trackStep(`Applying codemod ${id}...`, () => applyCodemodById(id).match(() => undefined, (error) => {
24
26
  throw error;
25
27
  })), asError(`Failed to apply codemod ${id}`))
26
28
  .map(() => ({ id }))
27
29
  .andTee((result) => presenter.reportResult(result))
28
- .orTee(reportCommandError(this, presenter, output));
30
+ .orTee(reportCommandError(this, presenter, outputMode));
29
31
  }));
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZW1vZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hZGFwdGVycy9jb21tYW5kZXIvY29tbWFuZHMvY29kZW1vZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFLekMsT0FBTyxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRW5FLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBT2hFLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsRUFDakMsZ0JBQWdCLEVBQ2hCLFlBQVksR0FDZSxFQUFFLEVBQUUsQ0FDL0IsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDO0tBQ25CLFdBQVcsQ0FBQyxzREFBc0QsQ0FBQztLQUNuRSxVQUFVLENBQ1QsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDO0tBQ2hCLFdBQVcsQ0FBQyxrQ0FBa0MsQ0FBQztLQUMvQyxNQUFNLENBQUMsS0FBSztJQUNYLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFpQixDQUFDO0lBQ3pELE1BQU0sU0FBUyxHQUFHLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRWpELE1BQU0sWUFBWSxFQUFFO1NBQ2pCLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQ2hCLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQzdEO1NBQ0EsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ3RELEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDeEQsQ0FBQyxDQUFDLENBQ0w7S0FDQSxVQUFVLENBQ1QsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDO0tBQ2pCLFFBQVEsQ0FBQyxNQUFNLEVBQUUsZ0NBQWdDLENBQUM7S0FDbEQsV0FBVyxDQUFDLDJDQUEyQyxDQUFDO0tBQ3hELE1BQU0sQ0FBQyxLQUFLLFdBQVcsRUFBRTtJQUN4QixNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBaUIsQ0FBQztJQUN6RCxNQUFNLFNBQVMsR0FBRyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUVqRCxNQUFNLFdBQVcsQ0FBQyxXQUFXLENBQzNCLFNBQVMsQ0FBQyxTQUFTLENBQUMsb0JBQW9CLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUNwRCxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQ3hCLEdBQUcsRUFBRSxDQUFDLFNBQVMsRUFDZixDQUFDLEtBQUssRUFBRSxFQUFFO1FBQ1IsTUFBTSxLQUFLLENBQUM7SUFDZCxDQUFDLENBQ0YsQ0FDRixFQUNELE9BQU8sQ0FBQywyQkFBMkIsRUFBRSxFQUFFLENBQUMsQ0FDekM7U0FDRSxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDbkIsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ2xELEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDeEQsQ0FBQyxDQUFDLENBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1hbmQgfSBmcm9tIFwiY29tbWFuZGVyXCI7XG5pbXBvcnQgeyBSZXN1bHRBc3luYyB9IGZyb20gXCJuZXZlcnRocm93XCI7XG5cbmltcG9ydCB0eXBlIHsgQXBwbHlDb2RlbW9kQnlJZCB9IGZyb20gXCIuLi8uLi8uLi91c2UtY2FzZXMvYXBwbHktY29kZW1vZC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBMaXN0Q29kZW1vZHMgfSBmcm9tIFwiLi4vLi4vLi4vdXNlLWNhc2VzL2xpc3QtY29kZW1vZHMuanNcIjtcblxuaW1wb3J0IHsgYXNFcnJvciwgcmVwb3J0Q29tbWFuZEVycm9yIH0gZnJvbSBcIi4uL2NvbW1hbmQtZXJyb3JzLmpzXCI7XG5pbXBvcnQgeyBHbG9iYWxPcHRpb25zIH0gZnJvbSBcIi4uL2dsb2JhbC1vcHRpb25zLmpzXCI7XG5pbXBvcnQgeyBjcmVhdGVDb21tYW5kUHJlc2VudGVyIH0gZnJvbSBcIi4uL3ByZXNlbnRlcnMvaW5kZXguanNcIjtcblxuZXhwb3J0IHR5cGUgQ29kZW1vZENvbW1hbmREZXBlbmRlbmNpZXMgPSB7XG4gIGFwcGx5Q29kZW1vZEJ5SWQ6IEFwcGx5Q29kZW1vZEJ5SWQ7XG4gIGxpc3RDb2RlbW9kczogTGlzdENvZGVtb2RzO1xufTtcblxuZXhwb3J0IGNvbnN0IG1ha2VDb2RlbW9kQ29tbWFuZCA9ICh7XG4gIGFwcGx5Q29kZW1vZEJ5SWQsXG4gIGxpc3RDb2RlbW9kcyxcbn06IENvZGVtb2RDb21tYW5kRGVwZW5kZW5jaWVzKSA9PlxuICBuZXcgQ29tbWFuZChcImNvZGVtb2RcIilcbiAgICAuZGVzY3JpcHRpb24oXCJNYW5hZ2UgYW5kIGFwcGx5IG1pZ3JhdGlvbiBzY3JpcHRzIHRvIHRoZSByZXBvc2l0b3J5XCIpXG4gICAgLmFkZENvbW1hbmQoXG4gICAgICBuZXcgQ29tbWFuZChcImxpc3RcIilcbiAgICAgICAgLmRlc2NyaXB0aW9uKFwiTGlzdCBhdmFpbGFibGUgbWlncmF0aW9uIHNjcmlwdHNcIilcbiAgICAgICAgLmFjdGlvbihhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgY29uc3QgeyBvdXRwdXQgfSA9IHRoaXMub3B0c1dpdGhHbG9iYWxzPEdsb2JhbE9wdGlvbnM+KCk7XG4gICAgICAgICAgY29uc3QgcHJlc2VudGVyID0gY3JlYXRlQ29tbWFuZFByZXNlbnRlcihvdXRwdXQpO1xuXG4gICAgICAgICAgYXdhaXQgbGlzdENvZGVtb2RzKClcbiAgICAgICAgICAgIC5tYXAoKGNvZGVtb2RzKSA9PlxuICAgICAgICAgICAgICBjb2RlbW9kcy5tYXAoKHsgZGVzY3JpcHRpb24sIGlkIH0pID0+ICh7IGRlc2NyaXB0aW9uLCBpZCB9KSksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuYW5kVGVlKChjb2RlbW9kcykgPT4gcHJlc2VudGVyLnJlcG9ydFJlc3VsdChjb2RlbW9kcykpXG4gICAgICAgICAgICAub3JUZWUocmVwb3J0Q29tbWFuZEVycm9yKHRoaXMsIHByZXNlbnRlciwgb3V0cHV0KSk7XG4gICAgICAgIH0pLFxuICAgIClcbiAgICAuYWRkQ29tbWFuZChcbiAgICAgIG5ldyBDb21tYW5kKFwiYXBwbHlcIilcbiAgICAgICAgLmFyZ3VtZW50KFwiPGlkPlwiLCBcIlRoZSBpZCBvZiB0aGUgY29kZW1vZCB0byBhcHBseVwiKVxuICAgICAgICAuZGVzY3JpcHRpb24oXCJBcHBseSBtaWdyYXRpb24gc2NyaXB0cyB0byB0aGUgcmVwb3NpdG9yeVwiKVxuICAgICAgICAuYWN0aW9uKGFzeW5jIGZ1bmN0aW9uIChpZCkge1xuICAgICAgICAgIGNvbnN0IHsgb3V0cHV0IH0gPSB0aGlzLm9wdHNXaXRoR2xvYmFsczxHbG9iYWxPcHRpb25zPigpO1xuICAgICAgICAgIGNvbnN0IHByZXNlbnRlciA9IGNyZWF0ZUNvbW1hbmRQcmVzZW50ZXIob3V0cHV0KTtcblxuICAgICAgICAgIGF3YWl0IFJlc3VsdEFzeW5jLmZyb21Qcm9taXNlKFxuICAgICAgICAgICAgcHJlc2VudGVyLnRyYWNrU3RlcChgQXBwbHlpbmcgY29kZW1vZCAke2lkfS4uLmAsICgpID0+XG4gICAgICAgICAgICAgIGFwcGx5Q29kZW1vZEJ5SWQoaWQpLm1hdGNoKFxuICAgICAgICAgICAgICAgICgpID0+IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYXNFcnJvcihgRmFpbGVkIHRvIGFwcGx5IGNvZGVtb2QgJHtpZH1gKSxcbiAgICAgICAgICApXG4gICAgICAgICAgICAubWFwKCgpID0+ICh7IGlkIH0pKVxuICAgICAgICAgICAgLmFuZFRlZSgocmVzdWx0KSA9PiBwcmVzZW50ZXIucmVwb3J0UmVzdWx0KHJlc3VsdCkpXG4gICAgICAgICAgICAub3JUZWUocmVwb3J0Q29tbWFuZEVycm9yKHRoaXMsIHByZXNlbnRlciwgb3V0cHV0KSk7XG4gICAgICAgIH0pLFxuICAgICk7XG4iXX0=
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZW1vZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hZGFwdGVycy9jb21tYW5kZXIvY29tbWFuZHMvY29kZW1vZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFPekMsT0FBTyxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25FLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsaUJBQWlCLEdBQ2xCLE1BQU0sd0JBQXdCLENBQUM7QUFPaEMsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FDaEMsRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQThCLEVBQzlELEdBQVcsRUFDWCxFQUFFLENBQ0YsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDO0tBQ25CLFdBQVcsQ0FBQyxzREFBc0QsQ0FBQztLQUNuRSxVQUFVLENBQ1QsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDO0tBQ2hCLFdBQVcsQ0FBQyxrQ0FBa0MsQ0FBQztLQUMvQyxNQUFNLENBQUMsS0FBSztJQUNYLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFpQixDQUFDO0lBQ3pELE1BQU0sVUFBVSxHQUFHLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNsRCxNQUFNLFNBQVMsR0FBRyxzQkFBc0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUVyRCxNQUFNLFlBQVksRUFBRTtTQUNqQixHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUNoQixRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUM3RDtTQUNBLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUN0RCxLQUFLLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDO0FBQzVELENBQUMsQ0FBQyxDQUNMO0tBQ0EsVUFBVSxDQUNULElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQztLQUNqQixRQUFRLENBQUMsTUFBTSxFQUFFLGdDQUFnQyxDQUFDO0tBQ2xELFdBQVcsQ0FBQywyQ0FBMkMsQ0FBQztLQUN4RCxNQUFNLENBQUMsS0FBSyxXQUFXLEVBQUU7SUFDeEIsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQWlCLENBQUM7SUFDekQsTUFBTSxVQUFVLEdBQUcsaUJBQWlCLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2xELE1BQU0sU0FBUyxHQUFHLHNCQUFzQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRXJELE1BQU0sV0FBVyxDQUFDLFdBQVcsQ0FDM0IsU0FBUyxDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQ3BELGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FDeEIsR0FBRyxFQUFFLENBQUMsU0FBUyxFQUNmLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDUixNQUFNLEtBQUssQ0FBQztJQUNkLENBQUMsQ0FDRixDQUNGLEVBQ0QsT0FBTyxDQUFDLDJCQUEyQixFQUFFLEVBQUUsQ0FBQyxDQUN6QztTQUNFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztTQUNuQixNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDbEQsS0FBSyxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztBQUM1RCxDQUFDLENBQUMsQ0FDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gXCJjb21tYW5kZXJcIjtcbmltcG9ydCB7IFJlc3VsdEFzeW5jIH0gZnJvbSBcIm5ldmVydGhyb3dcIjtcblxuaW1wb3J0IHR5cGUgeyBBcHBseUNvZGVtb2RCeUlkIH0gZnJvbSBcIi4uLy4uLy4uL3VzZS1jYXNlcy9hcHBseS1jb2RlbW9kLmpzXCI7XG5pbXBvcnQgdHlwZSB7IExpc3RDb2RlbW9kcyB9IGZyb20gXCIuLi8uLi8uLi91c2UtY2FzZXMvbGlzdC1jb2RlbW9kcy5qc1wiO1xuaW1wb3J0IHR5cGUgeyBDbGlFbnYgfSBmcm9tIFwiLi4vZW52LmpzXCI7XG5pbXBvcnQgdHlwZSB7IEdsb2JhbE9wdGlvbnMgfSBmcm9tIFwiLi4vZ2xvYmFsLW9wdGlvbnMuanNcIjtcblxuaW1wb3J0IHsgYXNFcnJvciwgcmVwb3J0Q29tbWFuZEVycm9yIH0gZnJvbSBcIi4uL2NvbW1hbmQtZXJyb3JzLmpzXCI7XG5pbXBvcnQge1xuICBjcmVhdGVDb21tYW5kUHJlc2VudGVyLFxuICByZXNvbHZlT3V0cHV0TW9kZSxcbn0gZnJvbSBcIi4uL3ByZXNlbnRlcnMvaW5kZXguanNcIjtcblxuZXhwb3J0IHR5cGUgQ29kZW1vZENvbW1hbmREZXBlbmRlbmNpZXMgPSB7XG4gIGFwcGx5Q29kZW1vZEJ5SWQ6IEFwcGx5Q29kZW1vZEJ5SWQ7XG4gIGxpc3RDb2RlbW9kczogTGlzdENvZGVtb2RzO1xufTtcblxuZXhwb3J0IGNvbnN0IG1ha2VDb2RlbW9kQ29tbWFuZCA9IChcbiAgeyBhcHBseUNvZGVtb2RCeUlkLCBsaXN0Q29kZW1vZHMgfTogQ29kZW1vZENvbW1hbmREZXBlbmRlbmNpZXMsXG4gIGVudjogQ2xpRW52LFxuKSA9PlxuICBuZXcgQ29tbWFuZChcImNvZGVtb2RcIilcbiAgICAuZGVzY3JpcHRpb24oXCJNYW5hZ2UgYW5kIGFwcGx5IG1pZ3JhdGlvbiBzY3JpcHRzIHRvIHRoZSByZXBvc2l0b3J5XCIpXG4gICAgLmFkZENvbW1hbmQoXG4gICAgICBuZXcgQ29tbWFuZChcImxpc3RcIilcbiAgICAgICAgLmRlc2NyaXB0aW9uKFwiTGlzdCBhdmFpbGFibGUgbWlncmF0aW9uIHNjcmlwdHNcIilcbiAgICAgICAgLmFjdGlvbihhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgY29uc3QgeyBvdXRwdXQgfSA9IHRoaXMub3B0c1dpdGhHbG9iYWxzPEdsb2JhbE9wdGlvbnM+KCk7XG4gICAgICAgICAgY29uc3Qgb3V0cHV0TW9kZSA9IHJlc29sdmVPdXRwdXRNb2RlKGVudiwgb3V0cHV0KTtcbiAgICAgICAgICBjb25zdCBwcmVzZW50ZXIgPSBjcmVhdGVDb21tYW5kUHJlc2VudGVyKG91dHB1dE1vZGUpO1xuXG4gICAgICAgICAgYXdhaXQgbGlzdENvZGVtb2RzKClcbiAgICAgICAgICAgIC5tYXAoKGNvZGVtb2RzKSA9PlxuICAgICAgICAgICAgICBjb2RlbW9kcy5tYXAoKHsgZGVzY3JpcHRpb24sIGlkIH0pID0+ICh7IGRlc2NyaXB0aW9uLCBpZCB9KSksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuYW5kVGVlKChjb2RlbW9kcykgPT4gcHJlc2VudGVyLnJlcG9ydFJlc3VsdChjb2RlbW9kcykpXG4gICAgICAgICAgICAub3JUZWUocmVwb3J0Q29tbWFuZEVycm9yKHRoaXMsIHByZXNlbnRlciwgb3V0cHV0TW9kZSkpO1xuICAgICAgICB9KSxcbiAgICApXG4gICAgLmFkZENvbW1hbmQoXG4gICAgICBuZXcgQ29tbWFuZChcImFwcGx5XCIpXG4gICAgICAgIC5hcmd1bWVudChcIjxpZD5cIiwgXCJUaGUgaWQgb2YgdGhlIGNvZGVtb2QgdG8gYXBwbHlcIilcbiAgICAgICAgLmRlc2NyaXB0aW9uKFwiQXBwbHkgbWlncmF0aW9uIHNjcmlwdHMgdG8gdGhlIHJlcG9zaXRvcnlcIilcbiAgICAgICAgLmFjdGlvbihhc3luYyBmdW5jdGlvbiAoaWQpIHtcbiAgICAgICAgICBjb25zdCB7IG91dHB1dCB9ID0gdGhpcy5vcHRzV2l0aEdsb2JhbHM8R2xvYmFsT3B0aW9ucz4oKTtcbiAgICAgICAgICBjb25zdCBvdXRwdXRNb2RlID0gcmVzb2x2ZU91dHB1dE1vZGUoZW52LCBvdXRwdXQpO1xuICAgICAgICAgIGNvbnN0IHByZXNlbnRlciA9IGNyZWF0ZUNvbW1hbmRQcmVzZW50ZXIob3V0cHV0TW9kZSk7XG5cbiAgICAgICAgICBhd2FpdCBSZXN1bHRBc3luYy5mcm9tUHJvbWlzZShcbiAgICAgICAgICAgIHByZXNlbnRlci50cmFja1N0ZXAoYEFwcGx5aW5nIGNvZGVtb2QgJHtpZH0uLi5gLCAoKSA9PlxuICAgICAgICAgICAgICBhcHBseUNvZGVtb2RCeUlkKGlkKS5tYXRjaChcbiAgICAgICAgICAgICAgICAoKSA9PiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGFzRXJyb3IoYEZhaWxlZCB0byBhcHBseSBjb2RlbW9kICR7aWR9YCksXG4gICAgICAgICAgKVxuICAgICAgICAgICAgLm1hcCgoKSA9PiAoeyBpZCB9KSlcbiAgICAgICAgICAgIC5hbmRUZWUoKHJlc3VsdCkgPT4gcHJlc2VudGVyLnJlcG9ydFJlc3VsdChyZXN1bHQpKVxuICAgICAgICAgICAgLm9yVGVlKHJlcG9ydENvbW1hbmRFcnJvcih0aGlzLCBwcmVzZW50ZXIsIG91dHB1dE1vZGUpKTtcbiAgICAgICAgfSksXG4gICAgKTtcbiJdfQ==
@@ -1,4 +1,5 @@
1
1
  import { Command } from "commander";
2
2
  import type { Dependencies } from "../../../domain/dependencies.js";
3
+ import type { CliEnv } from "../env.js";
3
4
  import { Config } from "../../../config.js";
4
- export declare const makeDoctorCommand: (dependencies: Dependencies, config: Config) => Command;
5
+ export declare const makeDoctorCommand: (dependencies: Dependencies, config: Config, env: CliEnv) => Command;
@@ -10,7 +10,7 @@
10
10
  import chalk from "chalk";
11
11
  import { Command } from "commander";
12
12
  import { runDoctor } from "../../../domain/doctor.js";
13
- import { createCommandPresenter } from "../presenters/index.js";
13
+ import { createCommandPresenter, resolveOutputMode, } from "../presenters/index.js";
14
14
  const formatCheck = (check) => check.isValid
15
15
  ? chalk.green(`✅ ${check.successMessage}`)
16
16
  : chalk.red(`❌ ${check.errorMessage}`);
@@ -19,14 +19,15 @@ const reportDoctorResult = (presenter, outputMode) => (result) => {
19
19
  ? result
20
20
  : result.checks.map(formatCheck).join("\n"));
21
21
  };
22
- export const makeDoctorCommand = (dependencies, config) => new Command()
22
+ export const makeDoctorCommand = (dependencies, config, env) => new Command()
23
23
  .name("doctor")
24
24
  .description("Verify the repository setup according to the DevEx guidelines")
25
25
  .action(async function () {
26
26
  const { output } = this.optsWithGlobals();
27
- const presenter = createCommandPresenter(output);
27
+ const outputMode = resolveOutputMode(env, output);
28
+ const presenter = createCommandPresenter(outputMode);
28
29
  const result = await runDoctor(dependencies, config);
29
- reportDoctorResult(presenter, output)(result);
30
+ reportDoctorResult(presenter, outputMode)(result);
30
31
  process.exitCode = result.hasErrors ? 1 : 0;
31
32
  });
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FkYXB0ZXJzL2NvbW1hbmRlci9jb21tYW5kcy9kb2N0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFDSCxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQVFwQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFdEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFaEUsTUFBTSxXQUFXLEdBQUcsQ0FBQyxLQUFzQixFQUFVLEVBQUUsQ0FDckQsS0FBSyxDQUFDLE9BQU87SUFDWCxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUMxQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO0FBRTNDLE1BQU0sa0JBQWtCLEdBQ3RCLENBQUMsU0FBMkIsRUFBRSxVQUEyQixFQUFFLEVBQUUsQ0FDN0QsQ0FBQyxNQUFvQixFQUFRLEVBQUU7SUFDN0IsU0FBUyxDQUFDLFlBQVksQ0FDcEIsVUFBVSxLQUFLLE1BQU07UUFDbkIsQ0FBQyxDQUFDLE1BQU07UUFDUixDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUM5QyxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUosTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FDL0IsWUFBMEIsRUFDMUIsTUFBYyxFQUNMLEVBQUUsQ0FDWCxJQUFJLE9BQU8sRUFBRTtLQUNWLElBQUksQ0FBQyxRQUFRLENBQUM7S0FDZCxXQUFXLENBQ1YsK0RBQStELENBQ2hFO0tBQ0EsTUFBTSxDQUFDLEtBQUs7SUFDWCxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBaUIsQ0FBQztJQUN6RCxNQUFNLFNBQVMsR0FBRyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUVqRCxNQUFNLE1BQU0sR0FBRyxNQUFNLFNBQVMsQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFFckQsa0JBQWtCLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRTlDLE9BQU8sQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUMsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGBkb2N0b3JgIENvbW1hbmRlciBjb21tYW5kLlxuICpcbiAqIFZlcmlmaWVzIHRoZSByZXBvc2l0b3J5IHNldHVwIGFuZCByb3V0ZXMgdGhlIG91dGNvbWUgdGhyb3VnaCB0aGUgc2hhcmVkXG4gKiBDb21tYW5kUHJlc2VudGVyIHBvcnQuIEpTT04gbW9kZSBlbWl0cyB0aGUgc3RydWN0dXJlZCByZXN1bHQ7IHRleHQgbW9kZSBlbWl0c1xuICogYSBodW1hbi1yZWFkYWJsZSBwZXItY2hlY2sgc3VtbWFyeS4gVGhlIGV4aXQgY29kZSByZWZsZWN0cyB3aGV0aGVyIGFueSBjaGVja1xuICogZmFpbGVkLCBtaXJyb3JpbmcgdGhlIGxpbnRlciBjb252ZW50aW9uIChhIHN1Y2Nlc3NmdWwgcnVuIGNhbiBzdGlsbCByZXBvcnRcbiAqIHByb2JsZW1zKS5cbiAqL1xuaW1wb3J0IGNoYWxrIGZyb20gXCJjaGFsa1wiO1xuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gXCJjb21tYW5kZXJcIjtcblxuaW1wb3J0IHR5cGUgeyBDb21tYW5kUHJlc2VudGVyIH0gZnJvbSBcIi4uLy4uLy4uL2RvbWFpbi9jb21tYW5kLXByZXNlbnRlci5qc1wiO1xuaW1wb3J0IHR5cGUgeyBEZXBlbmRlbmNpZXMgfSBmcm9tIFwiLi4vLi4vLi4vZG9tYWluL2RlcGVuZGVuY2llcy5qc1wiO1xuaW1wb3J0IHR5cGUgeyBEb2N0b3JSZXN1bHQgfSBmcm9tIFwiLi4vLi4vLi4vZG9tYWluL2RvY3Rvci5qc1wiO1xuaW1wb3J0IHR5cGUgeyBWYWxpZGF0aW9uQ2hlY2sgfSBmcm9tIFwiLi4vLi4vLi4vZG9tYWluL3ZhbGlkYXRpb24uanNcIjtcblxuaW1wb3J0IHsgQ29uZmlnIH0gZnJvbSBcIi4uLy4uLy4uL2NvbmZpZy5qc1wiO1xuaW1wb3J0IHsgcnVuRG9jdG9yIH0gZnJvbSBcIi4uLy4uLy4uL2RvbWFpbi9kb2N0b3IuanNcIjtcbmltcG9ydCB7IEdsb2JhbE9wdGlvbnMgfSBmcm9tIFwiLi4vZ2xvYmFsLW9wdGlvbnMuanNcIjtcbmltcG9ydCB7IGNyZWF0ZUNvbW1hbmRQcmVzZW50ZXIgfSBmcm9tIFwiLi4vcHJlc2VudGVycy9pbmRleC5qc1wiO1xuXG5jb25zdCBmb3JtYXRDaGVjayA9IChjaGVjazogVmFsaWRhdGlvbkNoZWNrKTogc3RyaW5nID0+XG4gIGNoZWNrLmlzVmFsaWRcbiAgICA/IGNoYWxrLmdyZWVuKGDinIUgJHtjaGVjay5zdWNjZXNzTWVzc2FnZX1gKVxuICAgIDogY2hhbGsucmVkKGDinYwgJHtjaGVjay5lcnJvck1lc3NhZ2V9YCk7XG5cbmNvbnN0IHJlcG9ydERvY3RvclJlc3VsdCA9XG4gIChwcmVzZW50ZXI6IENvbW1hbmRQcmVzZW50ZXIsIG91dHB1dE1vZGU6IFwianNvblwiIHwgXCJ0ZXh0XCIpID0+XG4gIChyZXN1bHQ6IERvY3RvclJlc3VsdCk6IHZvaWQgPT4ge1xuICAgIHByZXNlbnRlci5yZXBvcnRSZXN1bHQoXG4gICAgICBvdXRwdXRNb2RlID09PSBcImpzb25cIlxuICAgICAgICA/IHJlc3VsdFxuICAgICAgICA6IHJlc3VsdC5jaGVja3MubWFwKGZvcm1hdENoZWNrKS5qb2luKFwiXFxuXCIpLFxuICAgICk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBtYWtlRG9jdG9yQ29tbWFuZCA9IChcbiAgZGVwZW5kZW5jaWVzOiBEZXBlbmRlbmNpZXMsXG4gIGNvbmZpZzogQ29uZmlnLFxuKTogQ29tbWFuZCA9PlxuICBuZXcgQ29tbWFuZCgpXG4gICAgLm5hbWUoXCJkb2N0b3JcIilcbiAgICAuZGVzY3JpcHRpb24oXG4gICAgICBcIlZlcmlmeSB0aGUgcmVwb3NpdG9yeSBzZXR1cCBhY2NvcmRpbmcgdG8gdGhlIERldkV4IGd1aWRlbGluZXNcIixcbiAgICApXG4gICAgLmFjdGlvbihhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB7IG91dHB1dCB9ID0gdGhpcy5vcHRzV2l0aEdsb2JhbHM8R2xvYmFsT3B0aW9ucz4oKTtcbiAgICAgIGNvbnN0IHByZXNlbnRlciA9IGNyZWF0ZUNvbW1hbmRQcmVzZW50ZXIob3V0cHV0KTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcnVuRG9jdG9yKGRlcGVuZGVuY2llcywgY29uZmlnKTtcblxuICAgICAgcmVwb3J0RG9jdG9yUmVzdWx0KHByZXNlbnRlciwgb3V0cHV0KShyZXN1bHQpO1xuXG4gICAgICBwcm9jZXNzLmV4aXRDb2RlID0gcmVzdWx0Lmhhc0Vycm9ycyA/IDEgOiAwO1xuICAgIH0pO1xuIl19
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FkYXB0ZXJzL2NvbW1hbmRlci9jb21tYW5kcy9kb2N0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFDSCxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQVVwQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdEQsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixpQkFBaUIsR0FDbEIsTUFBTSx3QkFBd0IsQ0FBQztBQUVoQyxNQUFNLFdBQVcsR0FBRyxDQUFDLEtBQXNCLEVBQVUsRUFBRSxDQUNyRCxLQUFLLENBQUMsT0FBTztJQUNYLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQzFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7QUFFM0MsTUFBTSxrQkFBa0IsR0FDdEIsQ0FBQyxTQUEyQixFQUFFLFVBQTJCLEVBQUUsRUFBRSxDQUM3RCxDQUFDLE1BQW9CLEVBQVEsRUFBRTtJQUM3QixTQUFTLENBQUMsWUFBWSxDQUNwQixVQUFVLEtBQUssTUFBTTtRQUNuQixDQUFDLENBQUMsTUFBTTtRQUNSLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQzlDLENBQUM7QUFDSixDQUFDLENBQUM7QUFFSixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUMvQixZQUEwQixFQUMxQixNQUFjLEVBQ2QsR0FBVyxFQUNGLEVBQUUsQ0FDWCxJQUFJLE9BQU8sRUFBRTtLQUNWLElBQUksQ0FBQyxRQUFRLENBQUM7S0FDZCxXQUFXLENBQ1YsK0RBQStELENBQ2hFO0tBQ0EsTUFBTSxDQUFDLEtBQUs7SUFDWCxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBaUIsQ0FBQztJQUN6RCxNQUFNLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDbEQsTUFBTSxTQUFTLEdBQUcsc0JBQXNCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFckQsTUFBTSxNQUFNLEdBQUcsTUFBTSxTQUFTLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBRXJELGtCQUFrQixDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUVsRCxPQUFPLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlDLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBgZG9jdG9yYCBDb21tYW5kZXIgY29tbWFuZC5cbiAqXG4gKiBWZXJpZmllcyB0aGUgcmVwb3NpdG9yeSBzZXR1cCBhbmQgcm91dGVzIHRoZSBvdXRjb21lIHRocm91Z2ggdGhlIHNoYXJlZFxuICogQ29tbWFuZFByZXNlbnRlciBwb3J0LiBKU09OIG1vZGUgZW1pdHMgdGhlIHN0cnVjdHVyZWQgcmVzdWx0OyB0ZXh0IG1vZGUgZW1pdHNcbiAqIGEgaHVtYW4tcmVhZGFibGUgcGVyLWNoZWNrIHN1bW1hcnkuIFRoZSBleGl0IGNvZGUgcmVmbGVjdHMgd2hldGhlciBhbnkgY2hlY2tcbiAqIGZhaWxlZCwgbWlycm9yaW5nIHRoZSBsaW50ZXIgY29udmVudGlvbiAoYSBzdWNjZXNzZnVsIHJ1biBjYW4gc3RpbGwgcmVwb3J0XG4gKiBwcm9ibGVtcykuXG4gKi9cbmltcG9ydCBjaGFsayBmcm9tIFwiY2hhbGtcIjtcbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tIFwiY29tbWFuZGVyXCI7XG5cbmltcG9ydCB0eXBlIHsgQ29tbWFuZFByZXNlbnRlciB9IGZyb20gXCIuLi8uLi8uLi9kb21haW4vY29tbWFuZC1wcmVzZW50ZXIuanNcIjtcbmltcG9ydCB0eXBlIHsgRGVwZW5kZW5jaWVzIH0gZnJvbSBcIi4uLy4uLy4uL2RvbWFpbi9kZXBlbmRlbmNpZXMuanNcIjtcbmltcG9ydCB0eXBlIHsgRG9jdG9yUmVzdWx0IH0gZnJvbSBcIi4uLy4uLy4uL2RvbWFpbi9kb2N0b3IuanNcIjtcbmltcG9ydCB0eXBlIHsgVmFsaWRhdGlvbkNoZWNrIH0gZnJvbSBcIi4uLy4uLy4uL2RvbWFpbi92YWxpZGF0aW9uLmpzXCI7XG5pbXBvcnQgdHlwZSB7IENsaUVudiB9IGZyb20gXCIuLi9lbnYuanNcIjtcbmltcG9ydCB0eXBlIHsgR2xvYmFsT3B0aW9ucyB9IGZyb20gXCIuLi9nbG9iYWwtb3B0aW9ucy5qc1wiO1xuXG5pbXBvcnQgeyBDb25maWcgfSBmcm9tIFwiLi4vLi4vLi4vY29uZmlnLmpzXCI7XG5pbXBvcnQgeyBydW5Eb2N0b3IgfSBmcm9tIFwiLi4vLi4vLi4vZG9tYWluL2RvY3Rvci5qc1wiO1xuaW1wb3J0IHtcbiAgY3JlYXRlQ29tbWFuZFByZXNlbnRlcixcbiAgcmVzb2x2ZU91dHB1dE1vZGUsXG59IGZyb20gXCIuLi9wcmVzZW50ZXJzL2luZGV4LmpzXCI7XG5cbmNvbnN0IGZvcm1hdENoZWNrID0gKGNoZWNrOiBWYWxpZGF0aW9uQ2hlY2spOiBzdHJpbmcgPT5cbiAgY2hlY2suaXNWYWxpZFxuICAgID8gY2hhbGsuZ3JlZW4oYOKchSAke2NoZWNrLnN1Y2Nlc3NNZXNzYWdlfWApXG4gICAgOiBjaGFsay5yZWQoYOKdjCAke2NoZWNrLmVycm9yTWVzc2FnZX1gKTtcblxuY29uc3QgcmVwb3J0RG9jdG9yUmVzdWx0ID1cbiAgKHByZXNlbnRlcjogQ29tbWFuZFByZXNlbnRlciwgb3V0cHV0TW9kZTogXCJqc29uXCIgfCBcInRleHRcIikgPT5cbiAgKHJlc3VsdDogRG9jdG9yUmVzdWx0KTogdm9pZCA9PiB7XG4gICAgcHJlc2VudGVyLnJlcG9ydFJlc3VsdChcbiAgICAgIG91dHB1dE1vZGUgPT09IFwianNvblwiXG4gICAgICAgID8gcmVzdWx0XG4gICAgICAgIDogcmVzdWx0LmNoZWNrcy5tYXAoZm9ybWF0Q2hlY2spLmpvaW4oXCJcXG5cIiksXG4gICAgKTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IG1ha2VEb2N0b3JDb21tYW5kID0gKFxuICBkZXBlbmRlbmNpZXM6IERlcGVuZGVuY2llcyxcbiAgY29uZmlnOiBDb25maWcsXG4gIGVudjogQ2xpRW52LFxuKTogQ29tbWFuZCA9PlxuICBuZXcgQ29tbWFuZCgpXG4gICAgLm5hbWUoXCJkb2N0b3JcIilcbiAgICAuZGVzY3JpcHRpb24oXG4gICAgICBcIlZlcmlmeSB0aGUgcmVwb3NpdG9yeSBzZXR1cCBhY2NvcmRpbmcgdG8gdGhlIERldkV4IGd1aWRlbGluZXNcIixcbiAgICApXG4gICAgLmFjdGlvbihhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB7IG91dHB1dCB9ID0gdGhpcy5vcHRzV2l0aEdsb2JhbHM8R2xvYmFsT3B0aW9ucz4oKTtcbiAgICAgIGNvbnN0IG91dHB1dE1vZGUgPSByZXNvbHZlT3V0cHV0TW9kZShlbnYsIG91dHB1dCk7XG4gICAgICBjb25zdCBwcmVzZW50ZXIgPSBjcmVhdGVDb21tYW5kUHJlc2VudGVyKG91dHB1dE1vZGUpO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBydW5Eb2N0b3IoZGVwZW5kZW5jaWVzLCBjb25maWcpO1xuXG4gICAgICByZXBvcnREb2N0b3JSZXN1bHQocHJlc2VudGVyLCBvdXRwdXRNb2RlKShyZXN1bHQpO1xuXG4gICAgICBwcm9jZXNzLmV4aXRDb2RlID0gcmVzdWx0Lmhhc0Vycm9ycyA/IDEgOiAwO1xuICAgIH0pO1xuIl19
@@ -1,3 +1,4 @@
1
1
  import { Command } from "commander";
2
2
  import type { Dependencies } from "../../../domain/dependencies.js";
3
- export declare const makeInfoCommand: (dependencies: Dependencies) => Command;
3
+ import type { CliEnv } from "../env.js";
4
+ export declare const makeInfoCommand: (dependencies: Dependencies, env: CliEnv) => Command;
@@ -1,13 +1,13 @@
1
1
  import { Command } from "commander";
2
2
  import { getInfo } from "../../../domain/info.js";
3
- import { createCommandPresenter } from "../presenters/index.js";
4
- export const makeInfoCommand = (dependencies) => new Command()
3
+ import { createCommandPresenter, resolveOutputMode, } from "../presenters/index.js";
4
+ export const makeInfoCommand = (dependencies, env) => new Command()
5
5
  .name("info")
6
6
  .description("Display information about the project")
7
7
  .action(async function () {
8
8
  const { output } = this.optsWithGlobals();
9
- const presenter = createCommandPresenter(output);
9
+ const presenter = createCommandPresenter(resolveOutputMode(env, output));
10
10
  const result = await getInfo(dependencies)();
11
11
  presenter.reportResult(result);
12
12
  });
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5mby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hZGFwdGVycy9jb21tYW5kZXIvY29tbWFuZHMvaW5mby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBSXBDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVsRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVoRSxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxZQUEwQixFQUFXLEVBQUUsQ0FDckUsSUFBSSxPQUFPLEVBQUU7S0FDVixJQUFJLENBQUMsTUFBTSxDQUFDO0tBQ1osV0FBVyxDQUFDLHVDQUF1QyxDQUFDO0tBQ3BELE1BQU0sQ0FBQyxLQUFLO0lBQ1gsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQWlCLENBQUM7SUFDekQsTUFBTSxTQUFTLEdBQUcsc0JBQXNCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDakQsTUFBTSxNQUFNLEdBQUcsTUFBTSxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztJQUM3QyxTQUFTLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2pDLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gXCJjb21tYW5kZXJcIjtcblxuaW1wb3J0IHR5cGUgeyBEZXBlbmRlbmNpZXMgfSBmcm9tIFwiLi4vLi4vLi4vZG9tYWluL2RlcGVuZGVuY2llcy5qc1wiO1xuXG5pbXBvcnQgeyBnZXRJbmZvIH0gZnJvbSBcIi4uLy4uLy4uL2RvbWFpbi9pbmZvLmpzXCI7XG5pbXBvcnQgeyBHbG9iYWxPcHRpb25zIH0gZnJvbSBcIi4uL2dsb2JhbC1vcHRpb25zLmpzXCI7XG5pbXBvcnQgeyBjcmVhdGVDb21tYW5kUHJlc2VudGVyIH0gZnJvbSBcIi4uL3ByZXNlbnRlcnMvaW5kZXguanNcIjtcblxuZXhwb3J0IGNvbnN0IG1ha2VJbmZvQ29tbWFuZCA9IChkZXBlbmRlbmNpZXM6IERlcGVuZGVuY2llcyk6IENvbW1hbmQgPT5cbiAgbmV3IENvbW1hbmQoKVxuICAgIC5uYW1lKFwiaW5mb1wiKVxuICAgIC5kZXNjcmlwdGlvbihcIkRpc3BsYXkgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHByb2plY3RcIilcbiAgICAuYWN0aW9uKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHsgb3V0cHV0IH0gPSB0aGlzLm9wdHNXaXRoR2xvYmFsczxHbG9iYWxPcHRpb25zPigpO1xuICAgICAgY29uc3QgcHJlc2VudGVyID0gY3JlYXRlQ29tbWFuZFByZXNlbnRlcihvdXRwdXQpO1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZ2V0SW5mbyhkZXBlbmRlbmNpZXMpKCk7XG4gICAgICBwcmVzZW50ZXIucmVwb3J0UmVzdWx0KHJlc3VsdCk7XG4gICAgfSk7XG4iXX0=
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5mby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hZGFwdGVycy9jb21tYW5kZXIvY29tbWFuZHMvaW5mby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBTXBDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNsRCxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLGlCQUFpQixHQUNsQixNQUFNLHdCQUF3QixDQUFDO0FBRWhDLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxDQUM3QixZQUEwQixFQUMxQixHQUFXLEVBQ0YsRUFBRSxDQUNYLElBQUksT0FBTyxFQUFFO0tBQ1YsSUFBSSxDQUFDLE1BQU0sQ0FBQztLQUNaLFdBQVcsQ0FBQyx1Q0FBdUMsQ0FBQztLQUNwRCxNQUFNLENBQUMsS0FBSztJQUNYLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFpQixDQUFDO0lBQ3pELE1BQU0sU0FBUyxHQUFHLHNCQUFzQixDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3pFLE1BQU0sTUFBTSxHQUFHLE1BQU0sT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7SUFDN0MsU0FBUyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNqQyxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1hbmQgfSBmcm9tIFwiY29tbWFuZGVyXCI7XG5cbmltcG9ydCB0eXBlIHsgRGVwZW5kZW5jaWVzIH0gZnJvbSBcIi4uLy4uLy4uL2RvbWFpbi9kZXBlbmRlbmNpZXMuanNcIjtcbmltcG9ydCB0eXBlIHsgQ2xpRW52IH0gZnJvbSBcIi4uL2Vudi5qc1wiO1xuaW1wb3J0IHR5cGUgeyBHbG9iYWxPcHRpb25zIH0gZnJvbSBcIi4uL2dsb2JhbC1vcHRpb25zLmpzXCI7XG5cbmltcG9ydCB7IGdldEluZm8gfSBmcm9tIFwiLi4vLi4vLi4vZG9tYWluL2luZm8uanNcIjtcbmltcG9ydCB7XG4gIGNyZWF0ZUNvbW1hbmRQcmVzZW50ZXIsXG4gIHJlc29sdmVPdXRwdXRNb2RlLFxufSBmcm9tIFwiLi4vcHJlc2VudGVycy9pbmRleC5qc1wiO1xuXG5leHBvcnQgY29uc3QgbWFrZUluZm9Db21tYW5kID0gKFxuICBkZXBlbmRlbmNpZXM6IERlcGVuZGVuY2llcyxcbiAgZW52OiBDbGlFbnYsXG4pOiBDb21tYW5kID0+XG4gIG5ldyBDb21tYW5kKClcbiAgICAubmFtZShcImluZm9cIilcbiAgICAuZGVzY3JpcHRpb24oXCJEaXNwbGF5IGluZm9ybWF0aW9uIGFib3V0IHRoZSBwcm9qZWN0XCIpXG4gICAgLmFjdGlvbihhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB7IG91dHB1dCB9ID0gdGhpcy5vcHRzV2l0aEdsb2JhbHM8R2xvYmFsT3B0aW9ucz4oKTtcbiAgICAgIGNvbnN0IHByZXNlbnRlciA9IGNyZWF0ZUNvbW1hbmRQcmVzZW50ZXIocmVzb2x2ZU91dHB1dE1vZGUoZW52LCBvdXRwdXQpKTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGdldEluZm8oZGVwZW5kZW5jaWVzKSgpO1xuICAgICAgcHJlc2VudGVyLnJlcG9ydFJlc3VsdChyZXN1bHQpO1xuICAgIH0pO1xuIl19
@@ -2,6 +2,7 @@ import { Command } from "commander";
2
2
  import { ResultAsync } from "neverthrow";
3
3
  import { z } from "zod";
4
4
  import type { CommandPresenter } from "../../../domain/command-presenter.js";
5
+ import type { CliEnv } from "../env.js";
5
6
  import { GitHubAuthFactory } from "../../../domain/dependencies.js";
6
7
  import { Payload as MonorepoPayload } from "../../plop/generators/monorepo/index.js";
7
8
  type InitInitialAnswers = Partial<MonorepoPayload> & {
@@ -50,5 +51,5 @@ export declare const mapGitRemoteAddError: (cause: unknown) => Error;
50
51
  * interactively.
51
52
  */
52
53
  export declare const confirmGitHubRepoCreation: (payload: MonorepoPayload, publishPreference?: boolean) => ResultAsync<boolean, Error>;
53
- export declare const makeInitCommand: (requireGitHubAuth: GitHubAuthFactory) => Command;
54
+ export declare const makeInitCommand: (requireGitHubAuth: GitHubAuthFactory, env: CliEnv) => Command;
54
55
  export {};
@@ -10,7 +10,7 @@ import { Repository, } from "../../../domain/github.js";
10
10
  import { tf$ } from "../../execa/terraform.js";
11
11
  import { collectMonorepoPayload, getPlopInstance, runMonorepoActions, } from "../../plop/index.js";
12
12
  import { asError, reportCommandError } from "../command-errors.js";
13
- import { createCommandPresenter } from "../presenters/index.js";
13
+ import { createCommandPresenter, resolveOutputMode, } from "../presenters/index.js";
14
14
  const isGitHubRepoCreationSkipped = (input) => "gitHubRepoCreationSkipped" in input;
15
15
  const trackStep = (presenter, name, task, mapError) => ResultAsync.fromPromise(presenter.trackStep(name, task), mapError);
16
16
  const displaySummary = (input) => {
@@ -251,7 +251,7 @@ const reportSummary = (presenter, outputMode) => (result) => {
251
251
  displaySummary(result);
252
252
  }
253
253
  };
254
- export const makeInitCommand = (requireGitHubAuth) => new Command()
254
+ export const makeInitCommand = (requireGitHubAuth, env) => new Command()
255
255
  .name("init")
256
256
  .description("Initialize a new DX workspace")
257
257
  .addOption(new Option("--name <name>", "Repository name"))
@@ -260,7 +260,8 @@ export const makeInitCommand = (requireGitHubAuth) => new Command()
260
260
  .addOption(new Option("--publish", "Publish the scaffolded repository to GitHub without prompting").default(undefined))
261
261
  .action(async function (options) {
262
262
  const { output } = this.optsWithGlobals();
263
- const presenter = createCommandPresenter(output);
263
+ const outputMode = resolveOutputMode(env, output);
264
+ const presenter = createCommandPresenter(outputMode);
264
265
  await ResultAsync.fromPromise(Promise.resolve().then(() => parseInitCommandOptions(options)), (cause) => cause instanceof Error
265
266
  ? cause
266
267
  : new Error("Failed to parse init command options", { cause }))
@@ -271,6 +272,6 @@ export const makeInitCommand = (requireGitHubAuth) => new Command()
271
272
  initialAnswers: getMonorepoInitialAnswers(initOptions),
272
273
  presenter,
273
274
  })))
274
- .match(reportSummary(presenter, output), reportCommandError(this, presenter, output));
275
+ .match(reportSummary(presenter, outputMode), reportCommandError(this, presenter, outputMode));
275
276
  });
276
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hZGFwdGVycy9jb21tYW5kZXIvY29tbWFuZHMvaW5pdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0MsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ3RDLE9BQU8sUUFBUSxNQUFNLFVBQVUsQ0FBQztBQUNoQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDNUQsT0FBTyxLQUFLLElBQUksTUFBTSxXQUFXLENBQUM7QUFDbEMsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQztBQU14QixPQUFPLEVBR0wsVUFBVSxHQUNYLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRS9DLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsZUFBZSxFQUNmLGtCQUFrQixHQUNuQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQWNoRSxNQUFNLDJCQUEyQixHQUFHLENBQ2xDLEtBQW1CLEVBQ3VCLEVBQUUsQ0FDNUMsMkJBQTJCLElBQUksS0FBSyxDQUFDO0FBc0J2QyxNQUFNLFNBQVMsR0FBRyxDQUNoQixTQUEyQixFQUMzQixJQUFZLEVBQ1osSUFBc0IsRUFDdEIsUUFBK0IsRUFDWixFQUFFLENBQ3JCLFdBQVcsQ0FB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ciB9IGZyb20gXCJAbG9ndGFwZS9sb2d0YXBlXCI7XG5pbXBvcnQgY2hhbGsgZnJvbSBcImNoYWxrXCI7XG5pbXBvcnQgeyBDb21tYW5kLCBPcHRpb24gfSBmcm9tIFwiY29tbWFuZGVyXCI7XG5pbXBvcnQgeyAkLCBFeGVjYUVycm9yIH0gZnJvbSBcImV4ZWNhXCI7XG5pbXBvcnQgaW5xdWlyZXIgZnJvbSBcImlucXVpcmVyXCI7XG5pbXBvcnQgeyBlcnJBc3luYywgb2tBc3luYywgUmVzdWx0QXN5bmMgfSBmcm9tIFwibmV2ZXJ0aHJvd1wiO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiO1xuXG5pbXBvcnQgdHlwZSB7IENvbW1hbmRQcmVzZW50ZXIgfSBmcm9tIFwiLi4vLi4vLi4vZG9tYWluL2NvbW1hbmQtcHJlc2VudGVyLmpzXCI7XG5pbXBvcnQgdHlwZSB7IEdsb2JhbE9wdGlvbnMgfSBmcm9tIFwiLi4vZ2xvYmFsLW9wdGlvbnMuanNcIjtcblxuaW1wb3J0IHsgR2l0SHViQXV0aEZhY3RvcnkgfSBmcm9tIFwiLi4vLi4vLi4vZG9tYWluL2RlcGVuZGVuY2llcy5qc1wiO1xuaW1wb3J0IHtcbiAgR2l0SHViU2VydmljZSxcbiAgUHVsbFJlcXVlc3QsXG4gIFJlcG9zaXRvcnksXG59IGZyb20gXCIuLi8uLi8uLi9kb21haW4vZ2l0aHViLmpzXCI7XG5pbXBvcnQgeyB0ZiQgfSBmcm9tIFwiLi4vLi4vZXhlY2EvdGVycmFmb3JtLmpzXCI7XG5pbXBvcnQgeyBQYXlsb2FkIGFzIE1vbm9yZXBvUGF5bG9hZCB9IGZyb20gXCIuLi8uLi9wbG9wL2dlbmVyYXRvcnMvbW9ub3JlcG8vaW5kZXguanNcIjtcbmltcG9ydCB7XG4gIGNvbGxlY3RNb25vcmVwb1BheWxvYWQsXG4gIGdldFBsb3BJbnN0YW5jZSxcbiAgcnVuTW9ub3JlcG9BY3Rpb25zLFxufSBmcm9tIFwiLi4vLi4vcGxvcC9pbmRleC5qc1wiO1xuaW1wb3J0IHsgYXNFcnJvciwgcmVwb3J0Q29tbWFuZEVycm9yIH0gZnJvbSBcIi4uL2NvbW1hbmQtZXJyb3JzLmpzXCI7XG5pbXBvcnQgeyBjcmVhdGVDb21tYW5kUHJlc2VudGVyIH0gZnJvbSBcIi4uL3ByZXNlbnRlcnMvaW5kZXguanNcIjtcblxudHlwZSBHaXRIdWJSZXBvQ3JlYXRpb25Ta2lwcGVkUmVzdWx0ID0ge1xuICBnaXRIdWJSZXBvQ3JlYXRpb25Ta2lwcGVkOiB0cnVlO1xuICBwYXlsb2FkOiBNb25vcmVwb1BheWxvYWQ7XG59O1xuXG50eXBlIEluaXRSZXN1bHQgPSB7XG4gIHByPzogUHVsbFJlcXVlc3Q7XG4gIHJlcG9zaXRvcnk/OiBSZXBvc2l0b3J5O1xufTtcblxudHlwZSBTdW1tYXJ5SW5wdXQgPSBHaXRIdWJSZXBvQ3JlYXRpb25Ta2lwcGVkUmVzdWx0IHwgSW5pdFJlc3VsdDtcblxuY29uc3QgaXNHaXRIdWJSZXBvQ3JlYXRpb25Ta2lwcGVkID0gKFxuICBpbnB1dDogU3VtbWFyeUlucHV0LFxuKTogaW5wdXQgaXMgR2l0SHViUmVwb0NyZWF0aW9uU2tpcHBlZFJlc3VsdCA9PlxuICBcImdpdEh1YlJlcG9DcmVhdGlvblNraXBwZWRcIiBpbiBpbnB1dDtcblxudHlwZSBJbml0QWN0aW9uQ29udGV4dCA9IHtcbiAgZ2l0SHViU2VydmljZTogR2l0SHViU2VydmljZTtcbiAgaW5pdGlhbEFuc3dlcnM/OiBJbml0SW5pdGlhbEFuc3dlcnM7XG4gIHByZXNlbnRlcjogQ29tbWFuZFByZXNlbnRlcjtcbn07XG5cbnR5cGUgSW5pdEluaXRpYWxBbnN3ZXJzID0gUGFydGlhbDxNb25vcmVwb1BheWxvYWQ+ICYge1xuICBwdWJsaXNoVG9HaXRIdWI/OiBib29sZWFuO1xufTtcblxudHlwZSBMb2NhbFdvcmtzcGFjZSA9IHtcbiAgYnJhbmNoTmFtZTogc3RyaW5nO1xuICByZXBvc2l0b3J5OiBSZXBvc2l0b3J5O1xufTtcblxudHlwZSBSZXBvc2l0b3J5UHVsbFJlcXVlc3QgPSB7XG4gIHByPzogUHVsbFJlcXVlc3Q7XG4gIHJlcG9zaXRvcnk6IFJlcG9zaXRvcnk7XG59O1xuXG5jb25zdCB0cmFja1N0ZXAgPSA8VCwgRT4oXG4gIHByZXNlbnRlcjogQ29tbWFuZFByZXNlbnRlcixcbiAgbmFtZTogc3RyaW5nLFxuICB0YXNrOiAoKSA9PiBQcm9taXNlPFQ+LFxuICBtYXBFcnJvcjogKGNhdXNlOiB1bmtub3duKSA9PiBFLFxuKTogUmVzdWx0QXN5bmM8VCwgRT4gPT5cbiAgUmVzdWx0QXN5bmMuZnJvbVByb21pc2UocHJlc2VudGVyLnRyYWNrU3RlcChuYW1lLCB0YXNrKSwgbWFwRXJyb3IpO1xuXG5jb25zdCBkaXNwbGF5U3VtbWFyeSA9IChpbnB1dDogU3VtbWFyeUlucHV0KSA9PiB7XG4gIGNvbnN0IGRvY3NVcmwgPSBcImh0dHBzOi8vZHgucGFnb3BhLml0L2dldHRpbmctc3RhcnRlZFwiO1xuXG4gIGlmIChpc0dpdEh1YlJlcG9DcmVhdGlvblNraXBwZWQoaW5wdXQpKSB7XG4gICAgY29uc3QgeyBwYXlsb2FkIH0gPSBpbnB1dDtcbiAgICBjb25zb2xlLmxvZyhjaGFsay55ZWxsb3cuYm9sZChcIlxcbkdpdEh1YiByZXBvc2l0b3J5IGNyZWF0aW9uIHNraXBwZWQuXCIpKTtcbiAgICBjb25zb2xlLmxvZyhcbiAgICAgIGBUaGUgd29ya3NwYWNlIGZpbGVzIGhhdmUgYmVlbiBzY2FmZm9sZGVkIGluICR7Y2hhbGsuY3lhbihwYXlsb2FkLnJlcG9OYW1lICsgXCIvXCIpfS5gLFxuICAgICk7XG4gICAgY29uc29sZS5sb2coY2hhbGsuYm9sZChcIlxcblRvIGZpbmlzaCB0aGUgc2V0dXAgbWFudWFsbHk6XCIpKTtcbiAgICBsZXQgc3RlcCA9IDE7XG4gICAgY29uc29sZS5sb2coXG4gICAgICBgJHtzdGVwKyt9LiBDcmVhdGUgdGhlIEdpdEh1YiByZXBvc2l0b3J5IGJ5IGFwcGx5aW5nIHRoZSBUZXJyYWZvcm0gY29uZmlnIHNjYWZmb2xkZWQgYXQgJHtjaGFsay5jeWFuKGAke3BheWxvYWQucmVwb05hbWV9L2luZnJhL3JlcG9zaXRvcnlgKX06YCxcbiAgICApO1xuICAgIGNvbnNvbGUubG9nKFxuICAgICAgYCAgICAgICAke2NoYWxrLmN5YW4oYGNkICR7cGF5bG9hZC5yZXBvTmFtZX0vaW5mcmEvcmVwb3NpdG9yeSAmJiB0ZXJyYWZvcm0gaW5pdCAmJiB0ZXJyYWZvcm0gYXBwbHlgKX1gLFxuICAgICk7XG4gICAgY29uc29sZS5sb2coXG4gICAgICBgJHtzdGVwKyt9LiBQdXNoIHRoZSBzY2FmZm9sZGVkIGNvZGUgdG8gdGhlIG5ld2x5IGNyZWF0ZWQgcmVwb3NpdG9yeTpgLFxuICAgICk7XG4gICAgY29uc29sZS5sb2coXG4gICAgICBgICAgICAgICR7Y2hhbGsuY3lhbihgY2QgJHtwYXlsb2FkLnJlcG9OYW1lfSAmJiBnaXQgaW5pdCAmJiBnaXQgcmVtb3RlIGFkZCBvcmlnaW4gPHVybD4gJiYgZ2l0IHB1c2hgKX1gLFxuICAgICk7XG4gICAgY29uc29sZS5sb2coXG4gICAgICBgJHtzdGVwfS4gVmlzaXQgJHtjaGFsay51bmRlcmxpbmUoZG9jc1VybCl9IHRvIGRlcGxveSB5b3VyIGZpcnN0IHByb2plY3RcXG5gLFxuICAgICk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgeyBwciwgcmVwb3NpdG9yeSB9ID0gaW5wdXQ7XG4gIGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuLmJvbGQoXCJcXG5Xb3Jrc3BhY2UgY3JlYXRlZCBzdWNjZXNzZnVsbHkhXCIpKTtcblxuICBpZiAocmVwb3NpdG9yeSkge1xuICAgIGNvbnNvbGUubG9nKGAtIE5hbWU6ICR7Y2hhbGsuY3lhbihyZXBvc2l0b3J5Lm5hbWUpfWApO1xuICAgIGNvbnNvbGUubG9nKGAtIEdpdEh1YiBSZXBvc2l0b3J5OiAke2NoYWxrLmN5YW4ocmVwb3NpdG9yeS51cmwpfVxcbmApO1xuICB9IGVsc2Uge1xuICAgIGNvbnNvbGUubG9nKFxuICAgICAgY2hhbGsueWVsbG93KFxuICAgICAgICBgXFxu4pqg77iPIEdpdEh1YiByZXBvc2l0b3J5IG1heSBub3QgaGF2ZSBiZWVuIGNyZWF0ZWQgYXV0b21hdGljYWxseS5gLFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgaWYgKHByKSB7XG4gICAgbGV0IHN0ZXAgPSAxO1xuICAgIGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuLmJvbGQoXCJcXG5OZXh0IFN0ZXBzOlwiKSk7XG4gICAgY29uc29sZS5sb2coXG4gICAgICBgJHtzdGVwKyt9LiBSZXZpZXcgdGhlIFB1bGwgUmVxdWVzdCBpbiB0aGUgR2l0SHViIHJlcG9zaXRvcnk6ICR7Y2hhbGsudW5kZXJsaW5lKHByLnVybCl9YCxcbiAgICApO1xuICAgIGNvbnNvbGUubG9nKFxuICAgICAgYCR7c3RlcH0uIFZpc2l0ICR7Y2hhbGsudW5kZXJsaW5lKGRvY3NVcmwpfSB0byBkZXBsb3kgeW91ciBmaXJzdCBwcm9qZWN0XFxuYCxcbiAgICApO1xuICB9IGVsc2Uge1xuICAgIGNvbnNvbGUubG9nKFxuICAgICAgY2hhbGsueWVsbG93KGBcXG7imqDvuI8gVGhlcmUgd2FzIGFuIGVycm9yIGR1cmluZyBQdWxsIFJlcXVlc3QgY3JlYXRpb24uYCksXG4gICAgKTtcbiAgICBjb25zb2xlLmxvZyhcbiAgICAgIGBQbGVhc2UsIG1hbnVhbGx5IGNyZWF0ZSBhIFB1bGwgUmVxdWVzdCBpbiB0aGUgR2l0SHViIHJlcG9zaXRvcnkgdG8gcmV2aWV3IHRoZSBzY2FmZm9sZGVkIGNvZGUuXFxuYCxcbiAgICApO1xuICB9XG59O1xuXG5jb25zdCBjaGVja1RlcnJhZm9ybUNsaSA9ICgpID0+IHRmJGB0ZXJyYWZvcm0gLXZlcnNpb25gO1xuXG5jb25zdCB0cmFja1RlcnJhZm9ybUNsaUlzSW5zdGFsbGVkID0gKHByZXNlbnRlcjogQ29tbWFuZFByZXNlbnRlcikgPT5cbiAgdHJhY2tTdGVwKFxuICAgIHByZXNlbnRlcixcbiAgICBcIkNoZWNraW5nIFRlcnJhZm9ybSBpbnN0YWxsYXRpb24uLi5cIixcbiAgICBjaGVja1RlcnJhZm9ybUNsaSxcbiAgICBhc0Vycm9yKFxuICAgICAgXCJQbGVhc2UgaW5zdGFsbCB0ZXJyYWZvcm0gQ0xJIGJlZm9yZSBydW5uaW5nIHRoaXMgY29tbWFuZC4gSWYgeW91IHVzZSB0ZmVudiwgcnVuOiB0ZmVudiBpbnN0YWxsIGxhdGVzdCAmJiB0ZmVudiB1c2UgbGF0ZXN0XCIsXG4gICAgKSxcbiAgKTtcblxuY29uc3QgY2hlY2tDb3JlcGFjayA9ICgpID0+IHRmJGBjb3JlcGFjayAtdmA7XG5cbmNvbnN0IHRyYWNrQ29yZXBhY2tJc0luc3RhbGxlZCA9IChwcmVzZW50ZXI6IENvbW1hbmRQcmVzZW50ZXIpID0+XG4gIHRyYWNrU3RlcChcbiAgICBwcmVzZW50ZXIsXG4gICAgXCJDaGVja2luZyBDb3JlcGFjayBpbnN0YWxsYXRpb24uLi5cIixcbiAgICBjaGVja0NvcmVwYWNrLFxuICAgIGFzRXJyb3IoXCJQbGVhc2UgaW5zdGFsbCBDb3JlcGFjayBiZWZvcmUgcnVubmluZyB0aGlzIGNvbW1hbmQuXCIpLFxuICApO1xuXG5jb25zdCBhenVyZUFjY291bnRTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHVzZXI6IHoub2JqZWN0KHtcbiAgICBuYW1lOiB6LnN0cmluZygpLm1pbigxKSxcbiAgfSksXG59KTtcblxuY29uc3QgZW5zdXJlQXpMb2dpbiA9IGFzeW5jICgpOiBQcm9taXNlPHN0cmluZz4gPT4ge1xuICBjb25zdCB7IHN0ZG91dCB9ID0gYXdhaXQgdGYkYGF6IGFjY291bnQgc2hvd2A7XG4gIC8vIGBheiBhY2NvdW50IHNob3dgIHJlYWRzIHRoZSBjYWNoZWQgQ0xJIGNvbnRleHQsIGJ1dCBgYXogZ3JvdXAgbGlzdGBcbiAgLy8gZmFpbHMgd2hlbiB0aGUgY3VycmVudCBzZXNzaW9uIHRva2VuIGhhcyBleHBpcmVkLlxuICBhd2FpdCB0ZiRgYXogZ3JvdXAgbGlzdGA7XG4gIGNvbnN0IHBhcnNlZCA9IEpTT04ucGFyc2Uoc3Rkb3V0KTtcbiAgY29uc3QgeyB1c2VyIH0gPSBhenVyZUFjY291bnRTY2hlbWEucGFyc2UocGFyc2VkKTtcbiAgcmV0dXJuIHVzZXIubmFtZTtcbn07XG5cbmNvbnN0IHRyYWNrQXpMb2dpbiA9IChwcmVzZW50ZXI6IENvbW1hbmRQcmVzZW50ZXIpID0+XG4gIHRyYWNrU3RlcChcbiAgICBwcmVzZW50ZXIsXG4gICAgXCJDaGVja2luZyBBenVyZSBsb2dpbiBzdGF0dXMuLi5cIixcbiAgICBlbnN1cmVBekxvZ2luLFxuICAgIGFzRXJyb3IoXG4gICAgICBcIlBsZWFzZSBsb2cgaW4gdG8gQXp1cmUgQ0xJIHVzaW5nIGBheiBsb2dpbmAgYmVmb3JlIHJ1bm5pbmcgdGhpcyBjb21tYW5kLlwiLFxuICAgICksXG4gICk7XG5cbi8vIFRPRE8oQ0VTLTE4MTApOiBNYWtlIHRoZXNlIGNoZWNrcyBjb25jdXJyZW50IHRvIHNwZWVkIHVwIHRoZSBwcmVjb25kaXRpb25zIGNoZWNrIHBoYXNlXG5leHBvcnQgY29uc3QgcnVuSW5pdFByZWNvbmRpdGlvbnMgPSAocHJlc2VudGVyOiBDb21tYW5kUHJlc2VudGVyKSA9PlxuICB0cmFja1RlcnJhZm9ybUNsaUlzSW5zdGFsbGVkKHByZXNlbnRlcikuYW5kVGhlbigoKSA9PlxuICAgIHRyYWNrQ29yZXBhY2tJc0luc3RhbGxlZChwcmVzZW50ZXIpLFxuICApO1xuXG4vLyBUT0RPKENFUy0xODEwKTogTWFrZSB0aGVzZSBjaGVja3MgY29uY3VycmVudCB0byBzcGVlZCB1cCB0aGUgcHJlY29uZGl0aW9ucyBjaGVjayBwaGFzZVxuZXhwb3J0IGNvbnN0IHJ1bkFkZEVudmlyb25tZW50UHJlY29uZGl0aW9ucyA9IChwcmVzZW50ZXI6IENvbW1hbmRQcmVzZW50ZXIpID0+XG4gIHRyYWNrVGVycmFmb3JtQ2xpSXNJbnN0YWxsZWQocHJlc2VudGVyKVxuICAgIC5hbmRUaGVuKCgpID0+IHRyYWNrQXpMb2dpbihwcmVzZW50ZXIpKVxuICAgIC5hbmRUaGVuKCgpID0+IHRyYWNrQ29yZXBhY2tJc0luc3RhbGxlZChwcmVzZW50ZXIpKTtcblxuY29uc3QgREVGQVVMVF9HSVRIVUJfUFVCTElTSF9DT05GSVJNQVRJT04gPSB0cnVlO1xuXG5leHBvcnQgY29uc3QgaW5pdENvbW1hbmRPcHRpb25zU2NoZW1hID0gei5vYmplY3Qoe1xuICBkZXNjcmlwdGlvbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBuYW1lOiB6LnN0cmluZygpLnRyaW0oKS5taW4oMSwgXCJSZXBvc2l0b3J5IG5hbWUgY2Fubm90IGJlIGVtcHR5XCIpLm9wdGlvbmFsKCksXG4gIG93bmVyOiB6LnN0cmluZygpLnRyaW0oKS5taW4oMSwgXCJHaXRIdWIgb3duZXIgY2Fubm90IGJlIGVtcHR5XCIpLm9wdGlvbmFsKCksXG4gIHB1Ymxpc2g6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG59KTtcblxuZXhwb3J0IHR5cGUgSW5pdENvbW1hbmRPcHRpb25zID0gei5pbmZlcjx0eXBlb2YgaW5pdENvbW1hbmRPcHRpb25zU2NoZW1hPjtcblxuZXhwb3J0IGNvbnN0IHBhcnNlSW5pdENvbW1hbmRPcHRpb25zID0gKGlucHV0OiB1bmtub3duKTogSW5pdENvbW1hbmRPcHRpb25zID0+IHtcbiAgY29uc3QgcmVzdWx0ID0gaW5pdENvbW1hbmRPcHRpb25zU2NoZW1hLnNhZmVQYXJzZShpbnB1dCk7XG4gIGlmICghcmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgSW52YWxpZCBpbml0IGNvbW1hbmQgb3B0aW9uczpcXG4ke3oucHJldHRpZnlFcnJvcihyZXN1bHQuZXJyb3IpfWAsXG4gICAgICB7XG4gICAgICAgIGNhdXNlOiByZXN1bHQuZXJyb3IsXG4gICAgICB9LFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0LmRhdGE7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TW9ub3JlcG9Jbml0aWFsQW5zd2VycyA9ICh7XG4gIGRlc2NyaXB0aW9uLFxuICBuYW1lLFxuICBvd25lcixcbiAgcHVibGlzaCxcbn06IEluaXRDb21tYW5kT3B0aW9ucyk6IEluaXRJbml0aWFsQW5zd2VycyA9PiB7XG4gIGNvbnN0IGluaXRpYWxBbnN3ZXJzOiBJbml0SW5pdGlhbEFuc3dlcnMgPSB7fTtcblxuICBpZiAoZGVzY3JpcHRpb24pIHtcbiAgICBpbml0aWFsQW5zd2Vycy5yZXBvRGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbjtcbiAgfVxuXG4gIGlmIChvd25lcikge1xuICAgIGluaXRpYWxBbnN3ZXJzLnJlcG9Pd25lciA9IG93bmVyO1xuICB9XG5cbiAgaWYgKG5hbWUpIHtcbiAgICBpbml0aWFsQW5zd2Vycy5yZXBvTmFtZSA9IG5hbWU7XG4gIH1cblxuICBpZiAodHlwZW9mIHB1Ymxpc2ggPT09IFwiYm9vbGVhblwiKSB7XG4gICAgaW5pdGlhbEFuc3dlcnMucHVibGlzaFRvR2l0SHViID0gcHVibGlzaDtcbiAgfVxuXG4gIHJldHVybiBpbml0aWFsQW5zd2Vycztcbn07XG5cbmNvbnN0IGNyZWF0ZVJlbW90ZVJlcG9zaXRvcnlXaXRoUHJlc2VudGVyID1cbiAgKHByZXNlbnRlcjogQ29tbWFuZFByZXNlbnRlcikgPT5cbiAgKHtcbiAgICByZXBvTmFtZSxcbiAgICByZXBvT3duZXIsXG4gIH06IE1vbm9yZXBvUGF5bG9hZCk6IFJlc3VsdEFzeW5jPFJlcG9zaXRvcnksIEVycm9yPiA9PiB7XG4gICAgY29uc3QgbG9nZ2VyID0gZ2V0TG9nZ2VyKFtcImR4LWNsaVwiLCBcImluaXRcIl0pO1xuICAgIGNvbnN0IHJlcG8kID0gdGYkKHsgY3dkOiBwYXRoLnJlc29sdmUoXCJpbmZyYVwiLCBcInJlcG9zaXRvcnlcIikgfSk7XG4gICAgY29uc3QgYXBwbHlUZXJyYWZvcm0gPSBhc3luYyAoKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCByZXBvJGB0ZXJyYWZvcm0gaW5pdGA7XG4gICAgICAgIGF3YWl0IHJlcG8kYHRlcnJhZm9ybSBhcHBseSAtYXV0by1hcHByb3ZlYDtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEV4ZWNhRXJyb3IpIHtcbiAgICAgICAgICBsb2dnZXIuZXJyb3IoZXJyb3Iuc2hvcnRNZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiB0cmFja1N0ZXAoXG4gICAgICBwcmVzZW50ZXIsXG4gICAgICBcIkNyZWF0aW5nIEdpdEh1YiByZXBvc2l0b3J5Li4uXCIsXG4gICAgICBhcHBseVRlcnJhZm9ybSxcbiAgICAgIGFzRXJyb3IoXCJGYWlsZWQgdG8gY3JlYXRlIEdpdEh1YiByZXBvc2l0b3J5LlwiKSxcbiAgICApLm1hcCgoKSA9PiBuZXcgUmVwb3NpdG9yeShyZXBvTmFtZSwgcmVwb093bmVyKSk7XG4gIH07XG4vKipcbiAqIEV4aXQgY29kZSByZXR1cm5lZCBieSBgZ2l0IHJlbW90ZSBhZGRgIHdoZW4gYSByZW1vdGUgd2l0aCB0aGUgcmVxdWVzdGVkIG5hbWVcbiAqIGFscmVhZHkgZXhpc3RzLiBgZ2l0IHJlbW90ZWAgZG9jdW1lbnRzIHRoaXMgZGVkaWNhdGVkIHN0YXR1cyBjb2RlLCBzbyB3ZSBjYW5cbiAqIHR1cm4gaXQgaW50byBhY3Rpb25hYmxlIGd1aWRhbmNlIGluc3RlYWQgb2YgYSBnZW5lcmljIGZhaWx1cmUgbWVzc2FnZS5cbiAqXG4gKiBTZWUgaHR0cHM6Ly9naXQtc2NtLmNvbS9kb2NzL2dpdC1yZW1vdGUjX2V4aXRfc3RhdHVzXG4gKi9cbmNvbnN0IEdJVF9SRU1PVEVfQUxSRUFEWV9FWElTVFNfRVhJVF9DT0RFID0gMztcblxuLyoqXG4gKiBUcmFuc2xhdGVzIGEgZmFpbHVyZSBvZiB0aGUgZ2l0IHJlbW90ZSBzZXR1cCBzdGVwIGludG8gYW4gYWN0aW9uYWJsZSBlcnJvci5cbiAqXG4gKiBXaGVuIGBnaXQgcmVtb3RlIGFkZCBvcmlnaW5gIGV4aXRzIHdpdGggY29kZSAzIHRoZSByZW1vdGUgYWxyZWFkeSBleGlzdHMsXG4gKiB3aGljaCBpcyBhIHJlY292ZXJhYmxlIHNpdHVhdGlvbjogdGhlIG1lc3NhZ2UgdGVsbHMgdGhlIHVzZXIgaG93IHRvIGZpeCBpdC5cbiAqIFRoZSBvcmlnaW5hbCBFeGVjYUVycm9yIGlzIHByZXNlcnZlZCBhcyBgY2F1c2VgIHNvIGAtLXZlcmJvc2VgIHN0aWxsIHN1cmZhY2VzXG4gKiB0aGUgZXhpdCBjb2RlIGFuZCBnaXQncyBvd24gc3RkZXJyLlxuICovXG5leHBvcnQgY29uc3QgbWFwR2l0UmVtb3RlQWRkRXJyb3IgPSAoY2F1c2U6IHVua25vd24pOiBFcnJvciA9PiB7XG4gIGlmIChcbiAgICBjYXVzZSBpbnN0YW5jZW9mIEV4ZWNhRXJyb3IgJiZcbiAgICBjYXVzZS5leGl0Q29kZSA9PT0gR0lUX1JFTU9URV9BTFJFQURZX0VYSVNUU19FWElUX0NPREVcbiAgKSB7XG4gICAgcmV0dXJuIG5ldyBFcnJvcihcbiAgICAgIFwiQSBnaXQgcmVtb3RlIG5hbWVkICdvcmlnaW4nIGFscmVhZHkgZXhpc3RzLiBSZW1vdmUgaXQgd2l0aCBgZ2l0IHJlbW90ZSByZW1vdmUgb3JpZ2luYCBhbmQgcnVuIHRoZSBjb21tYW5kIGFnYWluLCBvciBzdGFydCBmcm9tIGEgY2xlYW4gZGlyZWN0b3J5LlwiLFxuICAgICAgeyBjYXVzZSB9LFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIG5ldyBFcnJvcihcbiAgICBcIkZhaWxlZCB0byBzZXQgdXAgdGhlIGxvY2FsIGdpdCByZXBvc2l0b3J5IGFuZCBpdHMgJ29yaWdpbicgcmVtb3RlLlwiLFxuICAgIHsgY2F1c2UgfSxcbiAgKTtcbn07XG5cbmNvbnN0IGluaXRpYWxpemVHaXRSZXBvc2l0b3J5V2l0aFByZXNlbnRlciA9XG4gIChwcmVzZW50ZXI6IENvbW1hbmRQcmVzZW50ZXIpID0+IChyZXBvc2l0b3J5OiBSZXBvc2l0b3J5KSA9PiB7XG4gICAgY29uc3QgYnJhbmNoTmFtZSA9IFwiZmVhdHVyZXMvc2NhZmZvbGQtd29ya3NwYWNlXCI7XG4gICAgY29uc3QgZ2l0JCA9ICQoe1xuICAgICAgc2hlbGw6IHRydWUsXG4gICAgfSk7XG4gICAgLy8gYGdpdCByZW1vdGUgYWRkYCBpcyB0cmFja2VkIHNlcGFyYXRlbHkgZnJvbSB0aGUgcHVzaCBzbyBpdHMgZG9jdW1lbnRlZFxuICAgIC8vIGV4aXQgY29kZXMgKGUuZy4gMyA9IHJlbW90ZSBhbHJlYWR5IGV4aXN0cykgc3VyZmFjZSBhIHNwZWNpZmljLCBhY3Rpb25hYmxlXG4gICAgLy8gbWVzc2FnZSBpbnN0ZWFkIG9mIGJlaW5nIG1pc3JlcG9ydGVkIGFzIGEgcHVzaCBmYWlsdXJlLlxuICAgIGNvbnN0IGNvbmZpZ3VyZVJlbW90ZSA9IGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IGdpdCRgZ2l0IGluaXRgO1xuICAgICAgYXdhaXQgZ2l0JGBnaXQgcmVtb3RlIGFkZCBvcmlnaW4gJHtyZXBvc2l0b3J5Lm9yaWdpbn1gO1xuICAgIH07XG4gICAgY29uc3QgcHVzaFRvT3JpZ2luID0gYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgZ2l0JGBnaXQgZmV0Y2ggb3JpZ2luIG1haW5gO1xuICAgICAgYXdhaXQgZ2l0JGBnaXQgY2hlY2tvdXQgLWIgJHticmFuY2hOYW1lfWA7XG4gICAgICAvLyBUZXJyYWZvcm0gY3JlYXRlcyBgbWFpbmAgd2l0aCBhbiBpbml0aWFsIFJFQURNRSBjb21taXQuXG4gICAgICAvLyBSZXNldCB0byBgb3JpZ2luL21haW5gIHNvIHRoaXMgYnJhbmNoIGlzIGJhc2VkIG9uIHRoZSByZW1vdGUgZGVmYXVsdCBicmFuY2gsXG4gICAgICAvLyB3aGlsZSBrZWVwaW5nIHRoZSBzY2FmZm9sZGVkIGxvY2FsIGZpbGVzIGluIHRoZSB3b3JraW5nIHRyZWUgZm9yIGEgY2xlYW4gUFIgZGlmZi5cbiAgICAgIGF3YWl0IGdpdCRgZ2l0IHJlc2V0IG9yaWdpbi9tYWluYDtcbiAgICAgIGF3YWl0IGdpdCRgZ2l0IGFkZCAuYDtcbiAgICAgIGF3YWl0IGdpdCRgZ2l0IGNvbW1pdCAtLW5vLWdwZy1zaWduIC1tIFwiU2NhZmZvbGQgd29ya3NwYWNlXCJgO1xuICAgICAgYXdhaXQgZ2l0JGBnaXQgcHVzaCAtdSBvcmlnaW4gJHticmFuY2hOYW1lfWA7XG4gICAgfTtcbiAgICByZXR1cm4gdHJhY2tTdGVwKFxuICAgICAgcHJlc2VudGVyLFxuICAgICAgXCJDb25maWd1cmluZyB0aGUgZ2l0IHJlbW90ZS4uLlwiLFxuICAgICAgY29uZmlndXJlUmVtb3RlLFxuICAgICAgbWFwR2l0UmVtb3RlQWRkRXJyb3IsXG4gICAgKVxuICAgICAgLmFuZFRoZW4oKCkgPT5cbiAgICAgICAgdHJhY2tTdGVwKFxuICAgICAgICAgIHByZXNlbnRlcixcbiAgICAgICAgICBcIlB1c2hpbmcgY29kZSB0byBHaXRIdWIuLi5cIixcbiAgICAgICAgICBwdXNoVG9PcmlnaW4sXG4gICAgICAgICAgYXNFcnJvcihcIkZhaWxlZCB0byBwdXNoIGNvZGUgdG8gR2l0SHViLlwiKSxcbiAgICAgICAgKSxcbiAgICAgIClcbiAgICAgIC5tYXAoKCkgPT4gKHsgYnJhbmNoTmFtZSwgcmVwb3NpdG9yeSB9KSk7XG4gIH07XG5cbmNvbnN0IGNyZWF0ZVB1bGxSZXF1ZXN0V2l0aFByZXNlbnRlciA9XG4gICh7IGdpdEh1YlNlcnZpY2UsIHByZXNlbnRlciB9OiBJbml0QWN0aW9uQ29udGV4dCkgPT5cbiAgKHtcbiAgICBicmFuY2hOYW1lLFxuICAgIHJlcG9zaXRvcnksXG4gIH06IExvY2FsV29ya3NwYWNlKTogUmVzdWx0QXN5bmM8UHVsbFJlcXVlc3QgfCB1bmRlZmluZWQsIEVycm9yPiA9PlxuICAgIHRyYWNrU3RlcChcbiAgICAgIHByZXNlbnRlcixcbiAgICAgIFwiQ3JlYXRpbmcgUHVsbCBSZXF1ZXN0Li4uXCIsXG4gICAgICAoKSA9PlxuICAgICAgICBnaXRIdWJTZXJ2aWNlLmNyZWF0ZVB1bGxSZXF1ZXN0KHtcbiAgICAgICAgICBiYXNlOiBcIm1haW5cIixcbiAgICAgICAgICBib2R5OiBcIlRoaXMgUFIgY29udGFpbnMgdGhlIHNjYWZmb2xkZWQgbW9ub3JlcG8gc3RydWN0dXJlLlwiLFxuICAgICAgICAgIGhlYWQ6IGJyYW5jaE5hbWUsXG4gICAgICAgICAgb3duZXI6IHJlcG9zaXRvcnkub3duZXIsXG4gICAgICAgICAgcmVwbzogcmVwb3NpdG9yeS5uYW1lLFxuICAgICAgICAgIHRpdGxlOiBcIlNjYWZmb2xkIHJlcG9zaXRvcnlcIixcbiAgICAgICAgfSksXG4gICAgICBhc0Vycm9yKFwiRmFpbGVkIHRvIGNyZWF0ZSBQdWxsIFJlcXVlc3QuXCIpLFxuICAgIClcbiAgICAgIC8vIElmIFBSIGNyZWF0aW9uIGZhaWxzLCBkb24ndCBibG9jayB0aGUgd29ya2Zsb3dcbiAgICAgIC5vckVsc2UoKCkgPT4gb2tBc3luYyh1bmRlZmluZWQpKTtcblxuY29uc3QgaGFuZGxlTmV3R2l0SHViUmVwb3NpdG9yeVdpdGhQcmVzZW50ZXIgPVxuICAoY29udGV4dDogSW5pdEFjdGlvbkNvbnRleHQpID0+XG4gIChwYXlsb2FkOiBNb25vcmVwb1BheWxvYWQpOiBSZXN1bHRBc3luYzxSZXBvc2l0b3J5UHVsbFJlcXVlc3QsIEVycm9yPiA9PlxuICAgIGNyZWF0ZVJlbW90ZVJlcG9zaXRvcnlXaXRoUHJlc2VudGVyKGNvbnRleHQucHJlc2VudGVyKShwYXlsb2FkKVxuICAgICAgLmFuZFRoZW4oaW5pdGlhbGl6ZUdpdFJlcG9zaXRvcnlXaXRoUHJlc2VudGVyKGNvbnRleHQucHJlc2VudGVyKSlcbiAgICAgIC5hbmRUaGVuKChsb2NhbFdvcmtzcGFjZSkgPT5cbiAgICAgICAgY3JlYXRlUHVsbFJlcXVlc3RXaXRoUHJlc2VudGVyKGNvbnRleHQpKGxvY2FsV29ya3NwYWNlKS5tYXAoKHByKSA9PiAoe1xuICAgICAgICAgIHByLFxuICAgICAgICAgIHJlcG9zaXRvcnk6IGxvY2FsV29ya3NwYWNlLnJlcG9zaXRvcnksXG4gICAgICAgIH0pKSxcbiAgICAgICk7XG5cbmNvbnN0IGhhbmRsZUdlbmVyYXRvckVycm9yID0gKGVycjogdW5rbm93bikgPT4ge1xuICBjb25zdCBsb2dnZXIgPSBnZXRMb2dnZXIoW1wiZHgtY2xpXCIsIFwiaW5pdFwiXSk7XG4gIGlmIChlcnIgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgIGxvZ2dlci5lcnJvcihlcnIubWVzc2FnZSk7XG4gIH1cbiAgcmV0dXJuIG5ldyBFcnJvcihcIkZhaWxlZCB0byBydW4gdGhlIGdlbmVyYXRvclwiLCB7IGNhdXNlOiBlcnIgfSk7XG59O1xuXG4vKipcbiAqIFJlc29sdmVzIHdoZXRoZXIgdGhlIHNjYWZmb2xkZWQgcmVwb3NpdG9yeSBzaG91bGQgYmUgcHVibGlzaGVkIHRvIEdpdEh1Yi5cbiAqXG4gKiBXaGVuIHRoZSBjYWxsZXIgYWxyZWFkeSBrbm93cyB0aGUgYW5zd2VyIChlLmcuIHRoZSB1c2VyIHBhc3NlZCBgLS1wdWJsaXNoYFxuICogb24gdGhlIGNvbW1hbmQgbGluZSksIHRoYXQgdmFsdWUgaXMgdXNlZCBhcy1pcyBhbmQgbm8gcHJvbXB0IGlzIHNob3duLiBXaGVuXG4gKiB0aGUgcHJlZmVyZW5jZSBpcyBsZWZ0IHVuZGVmaW5lZCAoZmxhZyBvbWl0dGVkKSwgdGhlIHVzZXIgaXMgYXNrZWRcbiAqIGludGVyYWN0aXZlbHkuXG4gKi9cbmV4cG9ydCBjb25zdCBjb25maXJtR2l0SHViUmVwb0NyZWF0aW9uID0gKFxuICBwYXlsb2FkOiBNb25vcmVwb1BheWxvYWQsXG4gIHB1Ymxpc2hQcmVmZXJlbmNlPzogYm9vbGVhbixcbik6IFJlc3VsdEFzeW5jPGJvb2xlYW4sIEVycm9yPiA9PlxuICAvLyBBIHByZWZlcmVuY2UgcHJvdmlkZWQgdXAtZnJvbnQgKHZpYSBgLS1wdWJsaXNoYCkgc2tpcHMgdGhlIGludGVyYWN0aXZlIHByb21wdC5cbiAgcHVibGlzaFByZWZlcmVuY2UgIT09IHVuZGVmaW5lZFxuICAgID8gb2tBc3luYyhwdWJsaXNoUHJlZmVyZW5jZSlcbiAgICA6IFJlc3VsdEFzeW5jLmZyb21Qcm9taXNlKFxuICAgICAgICBpbnF1aXJlci5wcm9tcHQoe1xuICAgICAgICAgIGRlZmF1bHQ6IERFRkFVTFRfR0lUSFVCX1BVQkxJU0hfQ09ORklSTUFUSU9OLFxuICAgICAgICAgIG1lc3NhZ2U6IGBUaGUgcHJvamVjdCBpcyBjcmVhdGVkIG9uICR7Y2hhbGsuZ3JlZW4ocGF5bG9hZC5yZXBvTmFtZSl9LiBXb3VsZCB5b3UgbGlrZSB0byBwdWJsaXNoIGl0IHRvIEdpdEh1YiBhdCAke2NoYWxrLmdyZWVuKGAke3BheWxvYWQucmVwb093bmVyfS8ke3BheWxvYWQucmVwb05hbWV9YCl9IG5vdz9gLFxuICAgICAgICAgIG5hbWU6IFwiY29uZmlybVwiLFxuICAgICAgICAgIHR5cGU6IFwiY29uZmlybVwiLFxuICAgICAgICB9KSxcbiAgICAgICAgKGNhdXNlKSA9PlxuICAgICAgICAgIG5ldyBFcnJvcihcIkZhaWxlZCB0byByZWFkIEdpdEh1YiBwdWJsaXNoIGNvbmZpcm1hdGlvblwiLCB7IGNhdXNlIH0pLFxuICAgICAgKS5hbmRUaGVuKChhbnN3ZXIpID0+IHtcbiAgICAgICAgY29uc3QgcGFyc2VkQW5zd2VyID0gelxuICAgICAgICAgIC5vYmplY3Qoe1xuICAgICAgICAgICAgY29uZmlybTogei5ib29sZWFuKCksXG4gICAgICAgICAgfSlcbiAgICAgICAgICAuc2FmZVBhcnNlKGFuc3dlcik7XG4gICAgICAgIGlmICghcGFyc2VkQW5zd2VyLnN1Y2Nlc3MpIHtcbiAgICAgICAgICByZXR1cm4gZXJyQXN5bmMoXG4gICAgICAgICAgICBuZXcgRXJyb3IoXCJJbnZhbGlkIEdpdEh1YiBwdWJsaXNoIGNvbmZpcm1hdGlvblwiLCB7XG4gICAgICAgICAgICAgIGNhdXNlOiBwYXJzZWRBbnN3ZXIuZXJyb3IsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG9rQXN5bmMocGFyc2VkQW5zd2VyLmRhdGEuY29uZmlybSk7XG4gICAgICB9KTtcblxuY29uc3QgcnVuSW5pdEFjdGlvbiA9ICh7XG4gIGdpdEh1YlNlcnZpY2UsXG4gIGluaXRpYWxBbnN3ZXJzID0ge30sXG4gIHByZXNlbnRlcixcbn06IEluaXRBY3Rpb25Db250ZXh0KTogUmVzdWx0QXN5bmM8U3VtbWFyeUlucHV0LCBFcnJvcj4gPT4ge1xuICBjb25zdCB7IHB1Ymxpc2hUb0dpdEh1YiwgLi4ubW9ub3JlcG9Jbml0aWFsQW5zd2VycyB9ID0gaW5pdGlhbEFuc3dlcnM7XG5cbiAgcmV0dXJuIHRyYWNrU3RlcChcbiAgICBwcmVzZW50ZXIsXG4gICAgXCJJbml0aWFsaXppbmcgd29ya3NwYWNlIGdlbmVyYXRvci4uLlwiLFxuICAgIGdldFBsb3BJbnN0YW5jZSxcbiAgICBhc0Vycm9yKFwiRmFpbGVkIHRvIGluaXRpYWxpemUgcGxvcFwiKSxcbiAgKVxuICAgIC5hbmRUaGVuKChwbG9wKSA9PlxuICAgICAgLy8gVGhlIHByb21wdCBwaGFzZSBtdXN0IHJ1biBvdXRzaWRlIHRyYWNrU3RlcDogaW4gdGV4dCBtb2RlIHRyYWNrU3RlcFxuICAgICAgLy8gcmVuZGVycyBhIHNwaW5uZXIgdGhhdCBvY2N1cGllcyB0aGUgVFRZIGFuZCBoaWRlcyB0aGUgcHJvbXB0cy5cbiAgICAgIFJlc3VsdEFzeW5jLmZyb21Qcm9taXNlKFxuICAgICAgICBjb2xsZWN0TW9ub3JlcG9QYXlsb2FkKHBsb3AsIGdpdEh1YlNlcnZpY2UsIG1vbm9yZXBvSW5pdGlhbEFuc3dlcnMpLFxuICAgICAgICBoYW5kbGVHZW5lcmF0b3JFcnJvcixcbiAgICAgICksXG4gICAgKVxuICAgIC5hbmRUaGVuKCh7IGdlbmVyYXRvciwgcGF5bG9hZCB9KSA9PlxuICAgICAgdHJhY2tTdGVwKFxuICAgICAgICBwcmVzZW50ZXIsXG4gICAgICAgIFwiU2NhZmZvbGRpbmcgd29ya3NwYWNlLi4uXCIsXG4gICAgICAgICgpID0+IHJ1bk1vbm9yZXBvQWN0aW9ucyhnZW5lcmF0b3IsIHBheWxvYWQpLFxuICAgICAgICBoYW5kbGVHZW5lcmF0b3JFcnJvcixcbiAgICAgICksXG4gICAgKVxuICAgIC5hbmRUZWUoKHBheWxvYWQpID0+IHtcbiAgICAgIHByb2Nlc3MuY2hkaXIocGF5bG9hZC5yZXBvTmFtZSk7XG4gICAgfSlcbiAgICAuYW5kVGhlbigocGF5bG9hZCkgPT5cbiAgICAgIGNvbmZpcm1HaXRIdWJSZXBvQ3JlYXRpb24ocGF5bG9hZCwgcHVibGlzaFRvR2l0SHViKS5hbmRUaGVuPFxuICAgICAgICBTdW1tYXJ5SW5wdXQsXG4gICAgICAgIEVycm9yXG4gICAgICA+KChjb25maXJtZWQpID0+XG4gICAgICAgIGNvbmZpcm1lZFxuICAgICAgICAgID8gaGFuZGxlTmV3R2l0SHViUmVwb3NpdG9yeVdpdGhQcmVzZW50ZXIoe1xuICAgICAgICAgICAgICBnaXRIdWJTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcmVzZW50ZXIsXG4gICAgICAgICAgICB9KShwYXlsb2FkKVxuICAgICAgICAgIDogb2tBc3luYyh7IGdpdEh1YlJlcG9DcmVhdGlvblNraXBwZWQ6IHRydWUsIHBheWxvYWQgfSksXG4gICAgICApLFxuICAgICk7XG59O1xuXG5jb25zdCByZXBvcnRTdW1tYXJ5ID1cbiAgKHByZXNlbnRlcjogQ29tbWFuZFByZXNlbnRlciwgb3V0cHV0TW9kZTogXCJqc29uXCIgfCBcInRleHRcIikgPT5cbiAgKHJlc3VsdDogU3VtbWFyeUlucHV0KSA9PiB7XG4gICAgaWYgKG91dHB1dE1vZGUgPT09IFwianNvblwiKSB7XG4gICAgICBwcmVzZW50ZXIucmVwb3J0UmVzdWx0KHJlc3VsdCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRpc3BsYXlTdW1tYXJ5KHJlc3VsdCk7XG4gICAgfVxuICB9O1xuXG5leHBvcnQgY29uc3QgbWFrZUluaXRDb21tYW5kID0gKFxuICByZXF1aXJlR2l0SHViQXV0aDogR2l0SHViQXV0aEZhY3RvcnksXG4pOiBDb21tYW5kID0+XG4gIG5ldyBDb21tYW5kKClcbiAgICAubmFtZShcImluaXRcIilcbiAgICAuZGVzY3JpcHRpb24oXCJJbml0aWFsaXplIGEgbmV3IERYIHdvcmtzcGFjZVwiKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbihcIi0tbmFtZSA8bmFtZT5cIiwgXCJSZXBvc2l0b3J5IG5hbWVcIikpXG4gICAgLmFkZE9wdGlvbihcbiAgICAgIG5ldyBPcHRpb24oXG4gICAgICAgIFwiLS1vd25lciA8b3duZXI+XCIsXG4gICAgICAgIFwiR2l0SHViIG9yZ2FuaXphdGlvbiBvciB1c2VyIHRoYXQgd2lsbCBvd24gdGhlIHJlcG9zaXRvcnlcIixcbiAgICAgICksXG4gICAgKVxuICAgIC5hZGRPcHRpb24oXG4gICAgICBuZXcgT3B0aW9uKFwiLS1kZXNjcmlwdGlvbiA8ZGVzY3JpcHRpb24+XCIsIFwiUmVwb3NpdG9yeSBkZXNjcmlwdGlvblwiKSxcbiAgICApXG4gICAgLmFkZE9wdGlvbihcbiAgICAgIG5ldyBPcHRpb24oXG4gICAgICAgIFwiLS1wdWJsaXNoXCIsXG4gICAgICAgIFwiUHVibGlzaCB0aGUgc2NhZmZvbGRlZCByZXBvc2l0b3J5IHRvIEdpdEh1YiB3aXRob3V0IHByb21wdGluZ1wiLFxuICAgICAgKS5kZWZhdWx0KHVuZGVmaW5lZCksXG4gICAgKVxuICAgIC5hY3Rpb24oYXN5bmMgZnVuY3Rpb24gKG9wdGlvbnM6IHVua25vd24pIHtcbiAgICAgIGNvbnN0IHsgb3V0cHV0IH0gPSB0aGlzLm9wdHNXaXRoR2xvYmFsczxHbG9iYWxPcHRpb25zPigpO1xuICAgICAgY29uc3QgcHJlc2VudGVyID0gY3JlYXRlQ29tbWFuZFByZXNlbnRlcihvdXRwdXQpO1xuXG4gICAgICBhd2FpdCBSZXN1bHRBc3luYy5mcm9tUHJvbWlzZShcbiAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiBwYXJzZUluaXRDb21tYW5kT3B0aW9ucyhvcHRpb25zKSksXG4gICAgICAgIChjYXVzZSkgPT5cbiAgICAgICAgICBjYXVzZSBpbnN0YW5jZW9mIEVycm9yXG4gICAgICAgICAgICA/IGNhdXNlXG4gICAgICAgICAgICA6IG5ldyBFcnJvcihcIkZhaWxlZCB0byBwYXJzZSBpbml0IGNvbW1hbmQgb3B0aW9uc1wiLCB7IGNhdXNlIH0pLFxuICAgICAgKVxuICAgICAgICAuYW5kVGhlbigoaW5pdE9wdGlvbnMpID0+XG4gICAgICAgICAgcnVuSW5pdFByZWNvbmRpdGlvbnMocHJlc2VudGVyKVxuICAgICAgICAgICAgLmFuZFRoZW4oKCkgPT4gcmVxdWlyZUdpdEh1YkF1dGgoKSlcbiAgICAgICAgICAgIC5hbmRUaGVuKChhdXRoKSA9PlxuICAgICAgICAgICAgICBydW5Jbml0QWN0aW9uKHtcbiAgICAgICAgICAgICAgICBnaXRIdWJTZXJ2aWNlOiBhdXRoLmdpdEh1YlNlcnZpY2UsXG4gICAgICAgICAgICAgICAgaW5pdGlhbEFuc3dlcnM6IGdldE1vbm9yZXBvSW5pdGlhbEFuc3dlcnMoaW5pdE9wdGlvbnMpLFxuICAgICAgICAgICAgICAgIHByZXNlbnRlcixcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApLFxuICAgICAgICApXG4gICAgICAgIC5tYXRjaChcbiAgICAgICAgICByZXBvcnRTdW1tYXJ5KHByZXNlbnRlciwgb3V0cHV0KSxcbiAgICAgICAgICByZXBvcnRDb21tYW5kRXJyb3IodGhpcywgcHJlc2VudGVyLCBvdXRwdXQpLFxuICAgICAgICApO1xuICAgIH0pO1xuIl19
277
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hZGFwdGVycy9jb21tYW5kZXIvY29tbWFuZHMvaW5pdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0MsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ3RDLE9BQU8sUUFBUSxNQUFNLFVBQVUsQ0FBQztBQUNoQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDNUQsT0FBTyxLQUFLLElBQUksTUFBTSxXQUFXLENBQUM7QUFDbEMsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQztBQU94QixPQUFPLEVBR0wsVUFBVSxHQUNYLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRS9DLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsZUFBZSxFQUNmLGtCQUFrQixHQUNuQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRSxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLGlCQUFpQixHQUNsQixNQUFNLHdCQUF3QixDQUFDO0FBY2hDLE1BQU0sMkJBQTJCLEdBQUcsQ0FDbEMsS0FBbUIsRUFDdUIsRUFBRSxDQUM1QywyQkFBMkIsSUFBSSxLQUFLLENBQUM7QUFzQnZDLE1BQU0sU0FBUyxHQUFHLENBQ2hCLFNBQTJCLEVBQzNCLElBQVksRUFDWixJQUFzQixFQUN0QixRQUErQixFQUNaLEVBQUUs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QUFFLFVBQVUsQ0FBQyxDQUNoRCxDQUFDO0FBQ04sQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRMb2dnZXIgfSBmcm9tIFwiQGxvZ3RhcGUvbG9ndGFwZVwiO1xuaW1wb3J0IGNoYWxrIGZyb20gXCJjaGFsa1wiO1xuaW1wb3J0IHsgQ29tbWFuZCwgT3B0aW9uIH0gZnJvbSBcImNvbW1hbmRlclwiO1xuaW1wb3J0IHsgJCwgRXhlY2FFcnJvciB9IGZyb20gXCJleGVjYVwiO1xuaW1wb3J0IGlucXVpcmVyIGZyb20gXCJpbnF1aXJlclwiO1xuaW1wb3J0IHsgZXJyQXN5bmMsIG9rQXN5bmMsIFJlc3VsdEFzeW5jIH0gZnJvbSBcIm5ldmVydGhyb3dcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIjtcblxuaW1wb3J0IHR5cGUgeyBDb21tYW5kUHJlc2VudGVyIH0gZnJvbSBcIi4uLy4uLy4uL2RvbWFpbi9jb21tYW5kLXByZXNlbnRlci5qc1wiO1xuaW1wb3J0IHR5cGUgeyBDbGlFbnYgfSBmcm9tIFwiLi4vZW52LmpzXCI7XG5pbXBvcnQgdHlwZSB7IEdsb2JhbE9wdGlvbnMgfSBmcm9tIFwiLi4vZ2xvYmFsLW9wdGlvbnMuanNcIjtcblxuaW1wb3J0IHsgR2l0SHViQXV0aEZhY3RvcnkgfSBmcm9tIFwiLi4vLi4vLi4vZG9tYWluL2RlcGVuZGVuY2llcy5qc1wiO1xuaW1wb3J0IHtcbiAgR2l0SHViU2VydmljZSxcbiAgUHVsbFJlcXVlc3QsXG4gIFJlcG9zaXRvcnksXG59IGZyb20gXCIuLi8uLi8uLi9kb21haW4vZ2l0aHViLmpzXCI7XG5pbXBvcnQgeyB0ZiQgfSBmcm9tIFwiLi4vLi4vZXhlY2EvdGVycmFmb3JtLmpzXCI7XG5pbXBvcnQgeyBQYXlsb2FkIGFzIE1vbm9yZXBvUGF5bG9hZCB9IGZyb20gXCIuLi8uLi9wbG9wL2dlbmVyYXRvcnMvbW9ub3JlcG8vaW5kZXguanNcIjtcbmltcG9ydCB7XG4gIGNvbGxlY3RNb25vcmVwb1BheWxvYWQsXG4gIGdldFBsb3BJbnN0YW5jZSxcbiAgcnVuTW9ub3JlcG9BY3Rpb25zLFxufSBmcm9tIFwiLi4vLi4vcGxvcC9pbmRleC5qc1wiO1xuaW1wb3J0IHsgYXNFcnJvciwgcmVwb3J0Q29tbWFuZEVycm9yIH0gZnJvbSBcIi4uL2NvbW1hbmQtZXJyb3JzLmpzXCI7XG5pbXBvcnQge1xuICBjcmVhdGVDb21tYW5kUHJlc2VudGVyLFxuICByZXNvbHZlT3V0cHV0TW9kZSxcbn0gZnJvbSBcIi4uL3ByZXNlbnRlcnMvaW5kZXguanNcIjtcblxudHlwZSBHaXRIdWJSZXBvQ3JlYXRpb25Ta2lwcGVkUmVzdWx0ID0ge1xuICBnaXRIdWJSZXBvQ3JlYXRpb25Ta2lwcGVkOiB0cnVlO1xuICBwYXlsb2FkOiBNb25vcmVwb1BheWxvYWQ7XG59O1xuXG50eXBlIEluaXRSZXN1bHQgPSB7XG4gIHByPzogUHVsbFJlcXVlc3Q7XG4gIHJlcG9zaXRvcnk/OiBSZXBvc2l0b3J5O1xufTtcblxudHlwZSBTdW1tYXJ5SW5wdXQgPSBHaXRIdWJSZXBvQ3JlYXRpb25Ta2lwcGVkUmVzdWx0IHwgSW5pdFJlc3VsdDtcblxuY29uc3QgaXNHaXRIdWJSZXBvQ3JlYXRpb25Ta2lwcGVkID0gKFxuICBpbnB1dDogU3VtbWFyeUlucHV0LFxuKTogaW5wdXQgaXMgR2l0SHViUmVwb0NyZWF0aW9uU2tpcHBlZFJlc3VsdCA9PlxuICBcImdpdEh1YlJlcG9DcmVhdGlvblNraXBwZWRcIiBpbiBpbnB1dDtcblxudHlwZSBJbml0QWN0aW9uQ29udGV4dCA9IHtcbiAgZ2l0SHViU2VydmljZTogR2l0SHViU2VydmljZTtcbiAgaW5pdGlhbEFuc3dlcnM/OiBJbml0SW5pdGlhbEFuc3dlcnM7XG4gIHByZXNlbnRlcjogQ29tbWFuZFByZXNlbnRlcjtcbn07XG5cbnR5cGUgSW5pdEluaXRpYWxBbnN3ZXJzID0gUGFydGlhbDxNb25vcmVwb1BheWxvYWQ+ICYge1xuICBwdWJsaXNoVG9HaXRIdWI/OiBib29sZWFuO1xufTtcblxudHlwZSBMb2NhbFdvcmtzcGFjZSA9IHtcbiAgYnJhbmNoTmFtZTogc3RyaW5nO1xuICByZXBvc2l0b3J5OiBSZXBvc2l0b3J5O1xufTtcblxudHlwZSBSZXBvc2l0b3J5UHVsbFJlcXVlc3QgPSB7XG4gIHByPzogUHVsbFJlcXVlc3Q7XG4gIHJlcG9zaXRvcnk6IFJlcG9zaXRvcnk7XG59O1xuXG5jb25zdCB0cmFja1N0ZXAgPSA8VCwgRT4oXG4gIHByZXNlbnRlcjogQ29tbWFuZFByZXNlbnRlcixcbiAgbmFtZTogc3RyaW5nLFxuICB0YXNrOiAoKSA9PiBQcm9taXNlPFQ+LFxuICBtYXBFcnJvcjogKGNhdXNlOiB1bmtub3duKSA9PiBFLFxuKTogUmVzdWx0QXN5bmM8VCwgRT4gPT5cbiAgUmVzdWx0QXN5bmMuZnJvbVByb21pc2UocHJlc2VudGVyLnRyYWNrU3RlcChuYW1lLCB0YXNrKSwgbWFwRXJyb3IpO1xuXG5jb25zdCBkaXNwbGF5U3VtbWFyeSA9IChpbnB1dDogU3VtbWFyeUlucHV0KSA9PiB7XG4gIGNvbnN0IGRvY3NVcmwgPSBcImh0dHBzOi8vZHgucGFnb3BhLml0L2dldHRpbmctc3RhcnRlZFwiO1xuXG4gIGlmIChpc0dpdEh1YlJlcG9DcmVhdGlvblNraXBwZWQoaW5wdXQpKSB7XG4gICAgY29uc3QgeyBwYXlsb2FkIH0gPSBpbnB1dDtcbiAgICBjb25zb2xlLmxvZyhjaGFsay55ZWxsb3cuYm9sZChcIlxcbkdpdEh1YiByZXBvc2l0b3J5IGNyZWF0aW9uIHNraXBwZWQuXCIpKTtcbiAgICBjb25zb2xlLmxvZyhcbiAgICAgIGBUaGUgd29ya3NwYWNlIGZpbGVzIGhhdmUgYmVlbiBzY2FmZm9sZGVkIGluICR7Y2hhbGsuY3lhbihwYXlsb2FkLnJlcG9OYW1lICsgXCIvXCIpfS5gLFxuICAgICk7XG4gICAgY29uc29sZS5sb2coY2hhbGsuYm9sZChcIlxcblRvIGZpbmlzaCB0aGUgc2V0dXAgbWFudWFsbHk6XCIpKTtcbiAgICBsZXQgc3RlcCA9IDE7XG4gICAgY29uc29sZS5sb2coXG4gICAgICBgJHtzdGVwKyt9LiBDcmVhdGUgdGhlIEdpdEh1YiByZXBvc2l0b3J5IGJ5IGFwcGx5aW5nIHRoZSBUZXJyYWZvcm0gY29uZmlnIHNjYWZmb2xkZWQgYXQgJHtjaGFsay5jeWFuKGAke3BheWxvYWQucmVwb05hbWV9L2luZnJhL3JlcG9zaXRvcnlgKX06YCxcbiAgICApO1xuICAgIGNvbnNvbGUubG9nKFxuICAgICAgYCAgICAgICAke2NoYWxrLmN5YW4oYGNkICR7cGF5bG9hZC5yZXBvTmFtZX0vaW5mcmEvcmVwb3NpdG9yeSAmJiB0ZXJyYWZvcm0gaW5pdCAmJiB0ZXJyYWZvcm0gYXBwbHlgKX1gLFxuICAgICk7XG4gICAgY29uc29sZS5sb2coXG4gICAgICBgJHtzdGVwKyt9LiBQdXNoIHRoZSBzY2FmZm9sZGVkIGNvZGUgdG8gdGhlIG5ld2x5IGNyZWF0ZWQgcmVwb3NpdG9yeTpgLFxuICAgICk7XG4gICAgY29uc29sZS5sb2coXG4gICAgICBgICAgICAgICR7Y2hhbGsuY3lhbihgY2QgJHtwYXlsb2FkLnJlcG9OYW1lfSAmJiBnaXQgaW5pdCAmJiBnaXQgcmVtb3RlIGFkZCBvcmlnaW4gPHVybD4gJiYgZ2l0IHB1c2hgKX1gLFxuICAgICk7XG4gICAgY29uc29sZS5sb2coXG4gICAgICBgJHtzdGVwfS4gVmlzaXQgJHtjaGFsay51bmRlcmxpbmUoZG9jc1VybCl9IHRvIGRlcGxveSB5b3VyIGZpcnN0IHByb2plY3RcXG5gLFxuICAgICk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgeyBwciwgcmVwb3NpdG9yeSB9ID0gaW5wdXQ7XG4gIGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuLmJvbGQoXCJcXG5Xb3Jrc3BhY2UgY3JlYXRlZCBzdWNjZXNzZnVsbHkhXCIpKTtcblxuICBpZiAocmVwb3NpdG9yeSkge1xuICAgIGNvbnNvbGUubG9nKGAtIE5hbWU6ICR7Y2hhbGsuY3lhbihyZXBvc2l0b3J5Lm5hbWUpfWApO1xuICAgIGNvbnNvbGUubG9nKGAtIEdpdEh1YiBSZXBvc2l0b3J5OiAke2NoYWxrLmN5YW4ocmVwb3NpdG9yeS51cmwpfVxcbmApO1xuICB9IGVsc2Uge1xuICAgIGNvbnNvbGUubG9nKFxuICAgICAgY2hhbGsueWVsbG93KFxuICAgICAgICBgXFxu4pqg77iPIEdpdEh1YiByZXBvc2l0b3J5IG1heSBub3QgaGF2ZSBiZWVuIGNyZWF0ZWQgYXV0b21hdGljYWxseS5gLFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgaWYgKHByKSB7XG4gICAgbGV0IHN0ZXAgPSAxO1xuICAgIGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuLmJvbGQoXCJcXG5OZXh0IFN0ZXBzOlwiKSk7XG4gICAgY29uc29sZS5sb2coXG4gICAgICBgJHtzdGVwKyt9LiBSZXZpZXcgdGhlIFB1bGwgUmVxdWVzdCBpbiB0aGUgR2l0SHViIHJlcG9zaXRvcnk6ICR7Y2hhbGsudW5kZXJsaW5lKHByLnVybCl9YCxcbiAgICApO1xuICAgIGNvbnNvbGUubG9nKFxuICAgICAgYCR7c3RlcH0uIFZpc2l0ICR7Y2hhbGsudW5kZXJsaW5lKGRvY3NVcmwpfSB0byBkZXBsb3kgeW91ciBmaXJzdCBwcm9qZWN0XFxuYCxcbiAgICApO1xuICB9IGVsc2Uge1xuICAgIGNvbnNvbGUubG9nKFxuICAgICAgY2hhbGsueWVsbG93KGBcXG7imqDvuI8gVGhlcmUgd2FzIGFuIGVycm9yIGR1cmluZyBQdWxsIFJlcXVlc3QgY3JlYXRpb24uYCksXG4gICAgKTtcbiAgICBjb25zb2xlLmxvZyhcbiAgICAgIGBQbGVhc2UsIG1hbnVhbGx5IGNyZWF0ZSBhIFB1bGwgUmVxdWVzdCBpbiB0aGUgR2l0SHViIHJlcG9zaXRvcnkgdG8gcmV2aWV3IHRoZSBzY2FmZm9sZGVkIGNvZGUuXFxuYCxcbiAgICApO1xuICB9XG59O1xuXG5jb25zdCBjaGVja1RlcnJhZm9ybUNsaSA9ICgpID0+IHRmJGB0ZXJyYWZvcm0gLXZlcnNpb25gO1xuXG5jb25zdCB0cmFja1RlcnJhZm9ybUNsaUlzSW5zdGFsbGVkID0gKHByZXNlbnRlcjogQ29tbWFuZFByZXNlbnRlcikgPT5cbiAgdHJhY2tTdGVwKFxuICAgIHByZXNlbnRlcixcbiAgICBcIkNoZWNraW5nIFRlcnJhZm9ybSBpbnN0YWxsYXRpb24uLi5cIixcbiAgICBjaGVja1RlcnJhZm9ybUNsaSxcbiAgICBhc0Vycm9yKFxuICAgICAgXCJQbGVhc2UgaW5zdGFsbCB0ZXJyYWZvcm0gQ0xJIGJlZm9yZSBydW5uaW5nIHRoaXMgY29tbWFuZC4gSWYgeW91IHVzZSB0ZmVudiwgcnVuOiB0ZmVudiBpbnN0YWxsIGxhdGVzdCAmJiB0ZmVudiB1c2UgbGF0ZXN0XCIsXG4gICAgKSxcbiAgKTtcblxuY29uc3QgY2hlY2tDb3JlcGFjayA9ICgpID0+IHRmJGBjb3JlcGFjayAtdmA7XG5cbmNvbnN0IHRyYWNrQ29yZXBhY2tJc0luc3RhbGxlZCA9IChwcmVzZW50ZXI6IENvbW1hbmRQcmVzZW50ZXIpID0+XG4gIHRyYWNrU3RlcChcbiAgICBwcmVzZW50ZXIsXG4gICAgXCJDaGVja2luZyBDb3JlcGFjayBpbnN0YWxsYXRpb24uLi5cIixcbiAgICBjaGVja0NvcmVwYWNrLFxuICAgIGFzRXJyb3IoXCJQbGVhc2UgaW5zdGFsbCBDb3JlcGFjayBiZWZvcmUgcnVubmluZyB0aGlzIGNvbW1hbmQuXCIpLFxuICApO1xuXG5jb25zdCBhenVyZUFjY291bnRTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHVzZXI6IHoub2JqZWN0KHtcbiAgICBuYW1lOiB6LnN0cmluZygpLm1pbigxKSxcbiAgfSksXG59KTtcblxuY29uc3QgZW5zdXJlQXpMb2dpbiA9IGFzeW5jICgpOiBQcm9taXNlPHN0cmluZz4gPT4ge1xuICBjb25zdCB7IHN0ZG91dCB9ID0gYXdhaXQgdGYkYGF6IGFjY291bnQgc2hvd2A7XG4gIC8vIGBheiBhY2NvdW50IHNob3dgIHJlYWRzIHRoZSBjYWNoZWQgQ0xJIGNvbnRleHQsIGJ1dCBgYXogZ3JvdXAgbGlzdGBcbiAgLy8gZmFpbHMgd2hlbiB0aGUgY3VycmVudCBzZXNzaW9uIHRva2VuIGhhcyBleHBpcmVkLlxuICBhd2FpdCB0ZiRgYXogZ3JvdXAgbGlzdGA7XG4gIGNvbnN0IHBhcnNlZCA9IEpTT04ucGFyc2Uoc3Rkb3V0KTtcbiAgY29uc3QgeyB1c2VyIH0gPSBhenVyZUFjY291bnRTY2hlbWEucGFyc2UocGFyc2VkKTtcbiAgcmV0dXJuIHVzZXIubmFtZTtcbn07XG5cbmNvbnN0IHRyYWNrQXpMb2dpbiA9IChwcmVzZW50ZXI6IENvbW1hbmRQcmVzZW50ZXIpID0+XG4gIHRyYWNrU3RlcChcbiAgICBwcmVzZW50ZXIsXG4gICAgXCJDaGVja2luZyBBenVyZSBsb2dpbiBzdGF0dXMuLi5cIixcbiAgICBlbnN1cmVBekxvZ2luLFxuICAgIGFzRXJyb3IoXG4gICAgICBcIlBsZWFzZSBsb2cgaW4gdG8gQXp1cmUgQ0xJIHVzaW5nIGBheiBsb2dpbmAgYmVmb3JlIHJ1bm5pbmcgdGhpcyBjb21tYW5kLlwiLFxuICAgICksXG4gICk7XG5cbi8vIFRPRE8oQ0VTLTE4MTApOiBNYWtlIHRoZXNlIGNoZWNrcyBjb25jdXJyZW50IHRvIHNwZWVkIHVwIHRoZSBwcmVjb25kaXRpb25zIGNoZWNrIHBoYXNlXG5leHBvcnQgY29uc3QgcnVuSW5pdFByZWNvbmRpdGlvbnMgPSAocHJlc2VudGVyOiBDb21tYW5kUHJlc2VudGVyKSA9PlxuICB0cmFja1RlcnJhZm9ybUNsaUlzSW5zdGFsbGVkKHByZXNlbnRlcikuYW5kVGhlbigoKSA9PlxuICAgIHRyYWNrQ29yZXBhY2tJc0luc3RhbGxlZChwcmVzZW50ZXIpLFxuICApO1xuXG4vLyBUT0RPKENFUy0xODEwKTogTWFrZSB0aGVzZSBjaGVja3MgY29uY3VycmVudCB0byBzcGVlZCB1cCB0aGUgcHJlY29uZGl0aW9ucyBjaGVjayBwaGFzZVxuZXhwb3J0IGNvbnN0IHJ1bkFkZEVudmlyb25tZW50UHJlY29uZGl0aW9ucyA9IChwcmVzZW50ZXI6IENvbW1hbmRQcmVzZW50ZXIpID0+XG4gIHRyYWNrVGVycmFmb3JtQ2xpSXNJbnN0YWxsZWQocHJlc2VudGVyKVxuICAgIC5hbmRUaGVuKCgpID0+IHRyYWNrQXpMb2dpbihwcmVzZW50ZXIpKVxuICAgIC5hbmRUaGVuKCgpID0+IHRyYWNrQ29yZXBhY2tJc0luc3RhbGxlZChwcmVzZW50ZXIpKTtcblxuY29uc3QgREVGQVVMVF9HSVRIVUJfUFVCTElTSF9DT05GSVJNQVRJT04gPSB0cnVlO1xuXG5leHBvcnQgY29uc3QgaW5pdENvbW1hbmRPcHRpb25zU2NoZW1hID0gei5vYmplY3Qoe1xuICBkZXNjcmlwdGlvbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBuYW1lOiB6LnN0cmluZygpLnRyaW0oKS5taW4oMSwgXCJSZXBvc2l0b3J5IG5hbWUgY2Fubm90IGJlIGVtcHR5XCIpLm9wdGlvbmFsKCksXG4gIG93bmVyOiB6LnN0cmluZygpLnRyaW0oKS5taW4oMSwgXCJHaXRIdWIgb3duZXIgY2Fubm90IGJlIGVtcHR5XCIpLm9wdGlvbmFsKCksXG4gIHB1Ymxpc2g6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG59KTtcblxuZXhwb3J0IHR5cGUgSW5pdENvbW1hbmRPcHRpb25zID0gei5pbmZlcjx0eXBlb2YgaW5pdENvbW1hbmRPcHRpb25zU2NoZW1hPjtcblxuZXhwb3J0IGNvbnN0IHBhcnNlSW5pdENvbW1hbmRPcHRpb25zID0gKGlucHV0OiB1bmtub3duKTogSW5pdENvbW1hbmRPcHRpb25zID0+IHtcbiAgY29uc3QgcmVzdWx0ID0gaW5pdENvbW1hbmRPcHRpb25zU2NoZW1hLnNhZmVQYXJzZShpbnB1dCk7XG4gIGlmICghcmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgSW52YWxpZCBpbml0IGNvbW1hbmQgb3B0aW9uczpcXG4ke3oucHJldHRpZnlFcnJvcihyZXN1bHQuZXJyb3IpfWAsXG4gICAgICB7XG4gICAgICAgIGNhdXNlOiByZXN1bHQuZXJyb3IsXG4gICAgICB9LFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0LmRhdGE7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TW9ub3JlcG9Jbml0aWFsQW5zd2VycyA9ICh7XG4gIGRlc2NyaXB0aW9uLFxuICBuYW1lLFxuICBvd25lcixcbiAgcHVibGlzaCxcbn06IEluaXRDb21tYW5kT3B0aW9ucyk6IEluaXRJbml0aWFsQW5zd2VycyA9PiB7XG4gIGNvbnN0IGluaXRpYWxBbnN3ZXJzOiBJbml0SW5pdGlhbEFuc3dlcnMgPSB7fTtcblxuICBpZiAoZGVzY3JpcHRpb24pIHtcbiAgICBpbml0aWFsQW5zd2Vycy5yZXBvRGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbjtcbiAgfVxuXG4gIGlmIChvd25lcikge1xuICAgIGluaXRpYWxBbnN3ZXJzLnJlcG9Pd25lciA9IG93bmVyO1xuICB9XG5cbiAgaWYgKG5hbWUpIHtcbiAgICBpbml0aWFsQW5zd2Vycy5yZXBvTmFtZSA9IG5hbWU7XG4gIH1cblxuICBpZiAodHlwZW9mIHB1Ymxpc2ggPT09IFwiYm9vbGVhblwiKSB7XG4gICAgaW5pdGlhbEFuc3dlcnMucHVibGlzaFRvR2l0SHViID0gcHVibGlzaDtcbiAgfVxuXG4gIHJldHVybiBpbml0aWFsQW5zd2Vycztcbn07XG5cbmNvbnN0IGNyZWF0ZVJlbW90ZVJlcG9zaXRvcnlXaXRoUHJlc2VudGVyID1cbiAgKHByZXNlbnRlcjogQ29tbWFuZFByZXNlbnRlcikgPT5cbiAgKHtcbiAgICByZXBvTmFtZSxcbiAgICByZXBvT3duZXIsXG4gIH06IE1vbm9yZXBvUGF5bG9hZCk6IFJlc3VsdEFzeW5jPFJlcG9zaXRvcnksIEVycm9yPiA9PiB7XG4gICAgY29uc3QgbG9nZ2VyID0gZ2V0TG9nZ2VyKFtcImR4LWNsaVwiLCBcImluaXRcIl0pO1xuICAgIGNvbnN0IHJlcG8kID0gdGYkKHsgY3dkOiBwYXRoLnJlc29sdmUoXCJpbmZyYVwiLCBcInJlcG9zaXRvcnlcIikgfSk7XG4gICAgY29uc3QgYXBwbHlUZXJyYWZvcm0gPSBhc3luYyAoKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCByZXBvJGB0ZXJyYWZvcm0gaW5pdGA7XG4gICAgICAgIGF3YWl0IHJlcG8kYHRlcnJhZm9ybSBhcHBseSAtYXV0by1hcHByb3ZlYDtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEV4ZWNhRXJyb3IpIHtcbiAgICAgICAgICBsb2dnZXIuZXJyb3IoZXJyb3Iuc2hvcnRNZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiB0cmFja1N0ZXAoXG4gICAgICBwcmVzZW50ZXIsXG4gICAgICBcIkNyZWF0aW5nIEdpdEh1YiByZXBvc2l0b3J5Li4uXCIsXG4gICAgICBhcHBseVRlcnJhZm9ybSxcbiAgICAgIGFzRXJyb3IoXCJGYWlsZWQgdG8gY3JlYXRlIEdpdEh1YiByZXBvc2l0b3J5LlwiKSxcbiAgICApLm1hcCgoKSA9PiBuZXcgUmVwb3NpdG9yeShyZXBvTmFtZSwgcmVwb093bmVyKSk7XG4gIH07XG4vKipcbiAqIEV4aXQgY29kZSByZXR1cm5lZCBieSBgZ2l0IHJlbW90ZSBhZGRgIHdoZW4gYSByZW1vdGUgd2l0aCB0aGUgcmVxdWVzdGVkIG5hbWVcbiAqIGFscmVhZHkgZXhpc3RzLiBgZ2l0IHJlbW90ZWAgZG9jdW1lbnRzIHRoaXMgZGVkaWNhdGVkIHN0YXR1cyBjb2RlLCBzbyB3ZSBjYW5cbiAqIHR1cm4gaXQgaW50byBhY3Rpb25hYmxlIGd1aWRhbmNlIGluc3RlYWQgb2YgYSBnZW5lcmljIGZhaWx1cmUgbWVzc2FnZS5cbiAqXG4gKiBTZWUgaHR0cHM6Ly9naXQtc2NtLmNvbS9kb2NzL2dpdC1yZW1vdGUjX2V4aXRfc3RhdHVzXG4gKi9cbmNvbnN0IEdJVF9SRU1PVEVfQUxSRUFEWV9FWElTVFNfRVhJVF9DT0RFID0gMztcblxuLyoqXG4gKiBUcmFuc2xhdGVzIGEgZmFpbHVyZSBvZiB0aGUgZ2l0IHJlbW90ZSBzZXR1cCBzdGVwIGludG8gYW4gYWN0aW9uYWJsZSBlcnJvci5cbiAqXG4gKiBXaGVuIGBnaXQgcmVtb3RlIGFkZCBvcmlnaW5gIGV4aXRzIHdpdGggY29kZSAzIHRoZSByZW1vdGUgYWxyZWFkeSBleGlzdHMsXG4gKiB3aGljaCBpcyBhIHJlY292ZXJhYmxlIHNpdHVhdGlvbjogdGhlIG1lc3NhZ2UgdGVsbHMgdGhlIHVzZXIgaG93IHRvIGZpeCBpdC5cbiAqIFRoZSBvcmlnaW5hbCBFeGVjYUVycm9yIGlzIHByZXNlcnZlZCBhcyBgY2F1c2VgIHNvIGAtLXZlcmJvc2VgIHN0aWxsIHN1cmZhY2VzXG4gKiB0aGUgZXhpdCBjb2RlIGFuZCBnaXQncyBvd24gc3RkZXJyLlxuICovXG5leHBvcnQgY29uc3QgbWFwR2l0UmVtb3RlQWRkRXJyb3IgPSAoY2F1c2U6IHVua25vd24pOiBFcnJvciA9PiB7XG4gIGlmIChcbiAgICBjYXVzZSBpbnN0YW5jZW9mIEV4ZWNhRXJyb3IgJiZcbiAgICBjYXVzZS5leGl0Q29kZSA9PT0gR0lUX1JFTU9URV9BTFJFQURZX0VYSVNUU19FWElUX0NPREVcbiAgKSB7XG4gICAgcmV0dXJuIG5ldyBFcnJvcihcbiAgICAgIFwiQSBnaXQgcmVtb3RlIG5hbWVkICdvcmlnaW4nIGFscmVhZHkgZXhpc3RzLiBSZW1vdmUgaXQgd2l0aCBgZ2l0IHJlbW90ZSByZW1vdmUgb3JpZ2luYCBhbmQgcnVuIHRoZSBjb21tYW5kIGFnYWluLCBvciBzdGFydCBmcm9tIGEgY2xlYW4gZGlyZWN0b3J5LlwiLFxuICAgICAgeyBjYXVzZSB9LFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIG5ldyBFcnJvcihcbiAgICBcIkZhaWxlZCB0byBzZXQgdXAgdGhlIGxvY2FsIGdpdCByZXBvc2l0b3J5IGFuZCBpdHMgJ29yaWdpbicgcmVtb3RlLlwiLFxuICAgIHsgY2F1c2UgfSxcbiAgKTtcbn07XG5cbmNvbnN0IGluaXRpYWxpemVHaXRSZXBvc2l0b3J5V2l0aFByZXNlbnRlciA9XG4gIChwcmVzZW50ZXI6IENvbW1hbmRQcmVzZW50ZXIpID0+IChyZXBvc2l0b3J5OiBSZXBvc2l0b3J5KSA9PiB7XG4gICAgY29uc3QgYnJhbmNoTmFtZSA9IFwiZmVhdHVyZXMvc2NhZmZvbGQtd29ya3NwYWNlXCI7XG4gICAgY29uc3QgZ2l0JCA9ICQoe1xuICAgICAgc2hlbGw6IHRydWUsXG4gICAgfSk7XG4gICAgLy8gYGdpdCByZW1vdGUgYWRkYCBpcyB0cmFja2VkIHNlcGFyYXRlbHkgZnJvbSB0aGUgcHVzaCBzbyBpdHMgZG9jdW1lbnRlZFxuICAgIC8vIGV4aXQgY29kZXMgKGUuZy4gMyA9IHJlbW90ZSBhbHJlYWR5IGV4aXN0cykgc3VyZmFjZSBhIHNwZWNpZmljLCBhY3Rpb25hYmxlXG4gICAgLy8gbWVzc2FnZSBpbnN0ZWFkIG9mIGJlaW5nIG1pc3JlcG9ydGVkIGFzIGEgcHVzaCBmYWlsdXJlLlxuICAgIGNvbnN0IGNvbmZpZ3VyZVJlbW90ZSA9IGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IGdpdCRgZ2l0IGluaXRgO1xuICAgICAgYXdhaXQgZ2l0JGBnaXQgcmVtb3RlIGFkZCBvcmlnaW4gJHtyZXBvc2l0b3J5Lm9yaWdpbn1gO1xuICAgIH07XG4gICAgY29uc3QgcHVzaFRvT3JpZ2luID0gYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgZ2l0JGBnaXQgZmV0Y2ggb3JpZ2luIG1haW5gO1xuICAgICAgYXdhaXQgZ2l0JGBnaXQgY2hlY2tvdXQgLWIgJHticmFuY2hOYW1lfWA7XG4gICAgICAvLyBUZXJyYWZvcm0gY3JlYXRlcyBgbWFpbmAgd2l0aCBhbiBpbml0aWFsIFJFQURNRSBjb21taXQuXG4gICAgICAvLyBSZXNldCB0byBgb3JpZ2luL21haW5gIHNvIHRoaXMgYnJhbmNoIGlzIGJhc2VkIG9uIHRoZSByZW1vdGUgZGVmYXVsdCBicmFuY2gsXG4gICAgICAvLyB3aGlsZSBrZWVwaW5nIHRoZSBzY2FmZm9sZGVkIGxvY2FsIGZpbGVzIGluIHRoZSB3b3JraW5nIHRyZWUgZm9yIGEgY2xlYW4gUFIgZGlmZi5cbiAgICAgIGF3YWl0IGdpdCRgZ2l0IHJlc2V0IG9yaWdpbi9tYWluYDtcbiAgICAgIGF3YWl0IGdpdCRgZ2l0IGFkZCAuYDtcbiAgICAgIGF3YWl0IGdpdCRgZ2l0IGNvbW1pdCAtLW5vLWdwZy1zaWduIC1tIFwiU2NhZmZvbGQgd29ya3NwYWNlXCJgO1xuICAgICAgYXdhaXQgZ2l0JGBnaXQgcHVzaCAtdSBvcmlnaW4gJHticmFuY2hOYW1lfWA7XG4gICAgfTtcbiAgICByZXR1cm4gdHJhY2tTdGVwKFxuICAgICAgcHJlc2VudGVyLFxuICAgICAgXCJDb25maWd1cmluZyB0aGUgZ2l0IHJlbW90ZS4uLlwiLFxuICAgICAgY29uZmlndXJlUmVtb3RlLFxuICAgICAgbWFwR2l0UmVtb3RlQWRkRXJyb3IsXG4gICAgKVxuICAgICAgLmFuZFRoZW4oKCkgPT5cbiAgICAgICAgdHJhY2tTdGVwKFxuICAgICAgICAgIHByZXNlbnRlcixcbiAgICAgICAgICBcIlB1c2hpbmcgY29kZSB0byBHaXRIdWIuLi5cIixcbiAgICAgICAgICBwdXNoVG9PcmlnaW4sXG4gICAgICAgICAgYXNFcnJvcihcIkZhaWxlZCB0byBwdXNoIGNvZGUgdG8gR2l0SHViLlwiKSxcbiAgICAgICAgKSxcbiAgICAgIClcbiAgICAgIC5tYXAoKCkgPT4gKHsgYnJhbmNoTmFtZSwgcmVwb3NpdG9yeSB9KSk7XG4gIH07XG5cbmNvbnN0IGNyZWF0ZVB1bGxSZXF1ZXN0V2l0aFByZXNlbnRlciA9XG4gICh7IGdpdEh1YlNlcnZpY2UsIHByZXNlbnRlciB9OiBJbml0QWN0aW9uQ29udGV4dCkgPT5cbiAgKHtcbiAgICBicmFuY2hOYW1lLFxuICAgIHJlcG9zaXRvcnksXG4gIH06IExvY2FsV29ya3NwYWNlKTogUmVzdWx0QXN5bmM8UHVsbFJlcXVlc3QgfCB1bmRlZmluZWQsIEVycm9yPiA9PlxuICAgIHRyYWNrU3RlcChcbiAgICAgIHByZXNlbnRlcixcbiAgICAgIFwiQ3JlYXRpbmcgUHVsbCBSZXF1ZXN0Li4uXCIsXG4gICAgICAoKSA9PlxuICAgICAgICBnaXRIdWJTZXJ2aWNlLmNyZWF0ZVB1bGxSZXF1ZXN0KHtcbiAgICAgICAgICBiYXNlOiBcIm1haW5cIixcbiAgICAgICAgICBib2R5OiBcIlRoaXMgUFIgY29udGFpbnMgdGhlIHNjYWZmb2xkZWQgbW9ub3JlcG8gc3RydWN0dXJlLlwiLFxuICAgICAgICAgIGhlYWQ6IGJyYW5jaE5hbWUsXG4gICAgICAgICAgb3duZXI6IHJlcG9zaXRvcnkub3duZXIsXG4gICAgICAgICAgcmVwbzogcmVwb3NpdG9yeS5uYW1lLFxuICAgICAgICAgIHRpdGxlOiBcIlNjYWZmb2xkIHJlcG9zaXRvcnlcIixcbiAgICAgICAgfSksXG4gICAgICBhc0Vycm9yKFwiRmFpbGVkIHRvIGNyZWF0ZSBQdWxsIFJlcXVlc3QuXCIpLFxuICAgIClcbiAgICAgIC8vIElmIFBSIGNyZWF0aW9uIGZhaWxzLCBkb24ndCBibG9jayB0aGUgd29ya2Zsb3dcbiAgICAgIC5vckVsc2UoKCkgPT4gb2tBc3luYyh1bmRlZmluZWQpKTtcblxuY29uc3QgaGFuZGxlTmV3R2l0SHViUmVwb3NpdG9yeVdpdGhQcmVzZW50ZXIgPVxuICAoY29udGV4dDogSW5pdEFjdGlvbkNvbnRleHQpID0+XG4gIChwYXlsb2FkOiBNb25vcmVwb1BheWxvYWQpOiBSZXN1bHRBc3luYzxSZXBvc2l0b3J5UHVsbFJlcXVlc3QsIEVycm9yPiA9PlxuICAgIGNyZWF0ZVJlbW90ZVJlcG9zaXRvcnlXaXRoUHJlc2VudGVyKGNvbnRleHQucHJlc2VudGVyKShwYXlsb2FkKVxuICAgICAgLmFuZFRoZW4oaW5pdGlhbGl6ZUdpdFJlcG9zaXRvcnlXaXRoUHJlc2VudGVyKGNvbnRleHQucHJlc2VudGVyKSlcbiAgICAgIC5hbmRUaGVuKChsb2NhbFdvcmtzcGFjZSkgPT5cbiAgICAgICAgY3JlYXRlUHVsbFJlcXVlc3RXaXRoUHJlc2VudGVyKGNvbnRleHQpKGxvY2FsV29ya3NwYWNlKS5tYXAoKHByKSA9PiAoe1xuICAgICAgICAgIHByLFxuICAgICAgICAgIHJlcG9zaXRvcnk6IGxvY2FsV29ya3NwYWNlLnJlcG9zaXRvcnksXG4gICAgICAgIH0pKSxcbiAgICAgICk7XG5cbmNvbnN0IGhhbmRsZUdlbmVyYXRvckVycm9yID0gKGVycjogdW5rbm93bikgPT4ge1xuICBjb25zdCBsb2dnZXIgPSBnZXRMb2dnZXIoW1wiZHgtY2xpXCIsIFwiaW5pdFwiXSk7XG4gIGlmIChlcnIgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgIGxvZ2dlci5lcnJvcihlcnIubWVzc2FnZSk7XG4gIH1cbiAgcmV0dXJuIG5ldyBFcnJvcihcIkZhaWxlZCB0byBydW4gdGhlIGdlbmVyYXRvclwiLCB7IGNhdXNlOiBlcnIgfSk7XG59O1xuXG4vKipcbiAqIFJlc29sdmVzIHdoZXRoZXIgdGhlIHNjYWZmb2xkZWQgcmVwb3NpdG9yeSBzaG91bGQgYmUgcHVibGlzaGVkIHRvIEdpdEh1Yi5cbiAqXG4gKiBXaGVuIHRoZSBjYWxsZXIgYWxyZWFkeSBrbm93cyB0aGUgYW5zd2VyIChlLmcuIHRoZSB1c2VyIHBhc3NlZCBgLS1wdWJsaXNoYFxuICogb24gdGhlIGNvbW1hbmQgbGluZSksIHRoYXQgdmFsdWUgaXMgdXNlZCBhcy1pcyBhbmQgbm8gcHJvbXB0IGlzIHNob3duLiBXaGVuXG4gKiB0aGUgcHJlZmVyZW5jZSBpcyBsZWZ0IHVuZGVmaW5lZCAoZmxhZyBvbWl0dGVkKSwgdGhlIHVzZXIgaXMgYXNrZWRcbiAqIGludGVyYWN0aXZlbHkuXG4gKi9cbmV4cG9ydCBjb25zdCBjb25maXJtR2l0SHViUmVwb0NyZWF0aW9uID0gKFxuICBwYXlsb2FkOiBNb25vcmVwb1BheWxvYWQsXG4gIHB1Ymxpc2hQcmVmZXJlbmNlPzogYm9vbGVhbixcbik6IFJlc3VsdEFzeW5jPGJvb2xlYW4sIEVycm9yPiA9PlxuICAvLyBBIHByZWZlcmVuY2UgcHJvdmlkZWQgdXAtZnJvbnQgKHZpYSBgLS1wdWJsaXNoYCkgc2tpcHMgdGhlIGludGVyYWN0aXZlIHByb21wdC5cbiAgcHVibGlzaFByZWZlcmVuY2UgIT09IHVuZGVmaW5lZFxuICAgID8gb2tBc3luYyhwdWJsaXNoUHJlZmVyZW5jZSlcbiAgICA6IFJlc3VsdEFzeW5jLmZyb21Qcm9taXNlKFxuICAgICAgICBpbnF1aXJlci5wcm9tcHQoe1xuICAgICAgICAgIGRlZmF1bHQ6IERFRkFVTFRfR0lUSFVCX1BVQkxJU0hfQ09ORklSTUFUSU9OLFxuICAgICAgICAgIG1lc3NhZ2U6IGBUaGUgcHJvamVjdCBpcyBjcmVhdGVkIG9uICR7Y2hhbGsuZ3JlZW4ocGF5bG9hZC5yZXBvTmFtZSl9LiBXb3VsZCB5b3UgbGlrZSB0byBwdWJsaXNoIGl0IHRvIEdpdEh1YiBhdCAke2NoYWxrLmdyZWVuKGAke3BheWxvYWQucmVwb093bmVyfS8ke3BheWxvYWQucmVwb05hbWV9YCl9IG5vdz9gLFxuICAgICAgICAgIG5hbWU6IFwiY29uZmlybVwiLFxuICAgICAgICAgIHR5cGU6IFwiY29uZmlybVwiLFxuICAgICAgICB9KSxcbiAgICAgICAgKGNhdXNlKSA9PlxuICAgICAgICAgIG5ldyBFcnJvcihcIkZhaWxlZCB0byByZWFkIEdpdEh1YiBwdWJsaXNoIGNvbmZpcm1hdGlvblwiLCB7IGNhdXNlIH0pLFxuICAgICAgKS5hbmRUaGVuKChhbnN3ZXIpID0+IHtcbiAgICAgICAgY29uc3QgcGFyc2VkQW5zd2VyID0gelxuICAgICAgICAgIC5vYmplY3Qoe1xuICAgICAgICAgICAgY29uZmlybTogei5ib29sZWFuKCksXG4gICAgICAgICAgfSlcbiAgICAgICAgICAuc2FmZVBhcnNlKGFuc3dlcik7XG4gICAgICAgIGlmICghcGFyc2VkQW5zd2VyLnN1Y2Nlc3MpIHtcbiAgICAgICAgICByZXR1cm4gZXJyQXN5bmMoXG4gICAgICAgICAgICBuZXcgRXJyb3IoXCJJbnZhbGlkIEdpdEh1YiBwdWJsaXNoIGNvbmZpcm1hdGlvblwiLCB7XG4gICAgICAgICAgICAgIGNhdXNlOiBwYXJzZWRBbnN3ZXIuZXJyb3IsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG9rQXN5bmMocGFyc2VkQW5zd2VyLmRhdGEuY29uZmlybSk7XG4gICAgICB9KTtcblxuY29uc3QgcnVuSW5pdEFjdGlvbiA9ICh7XG4gIGdpdEh1YlNlcnZpY2UsXG4gIGluaXRpYWxBbnN3ZXJzID0ge30sXG4gIHByZXNlbnRlcixcbn06IEluaXRBY3Rpb25Db250ZXh0KTogUmVzdWx0QXN5bmM8U3VtbWFyeUlucHV0LCBFcnJvcj4gPT4ge1xuICBjb25zdCB7IHB1Ymxpc2hUb0dpdEh1YiwgLi4ubW9ub3JlcG9Jbml0aWFsQW5zd2VycyB9ID0gaW5pdGlhbEFuc3dlcnM7XG5cbiAgcmV0dXJuIHRyYWNrU3RlcChcbiAgICBwcmVzZW50ZXIsXG4gICAgXCJJbml0aWFsaXppbmcgd29ya3NwYWNlIGdlbmVyYXRvci4uLlwiLFxuICAgIGdldFBsb3BJbnN0YW5jZSxcbiAgICBhc0Vycm9yKFwiRmFpbGVkIHRvIGluaXRpYWxpemUgcGxvcFwiKSxcbiAgKVxuICAgIC5hbmRUaGVuKChwbG9wKSA9PlxuICAgICAgLy8gVGhlIHByb21wdCBwaGFzZSBtdXN0IHJ1biBvdXRzaWRlIHRyYWNrU3RlcDogaW4gdGV4dCBtb2RlIHRyYWNrU3RlcFxuICAgICAgLy8gcmVuZGVycyBhIHNwaW5uZXIgdGhhdCBvY2N1cGllcyB0aGUgVFRZIGFuZCBoaWRlcyB0aGUgcHJvbXB0cy5cbiAgICAgIFJlc3VsdEFzeW5jLmZyb21Qcm9taXNlKFxuICAgICAgICBjb2xsZWN0TW9ub3JlcG9QYXlsb2FkKHBsb3AsIGdpdEh1YlNlcnZpY2UsIG1vbm9yZXBvSW5pdGlhbEFuc3dlcnMpLFxuICAgICAgICBoYW5kbGVHZW5lcmF0b3JFcnJvcixcbiAgICAgICksXG4gICAgKVxuICAgIC5hbmRUaGVuKCh7IGdlbmVyYXRvciwgcGF5bG9hZCB9KSA9PlxuICAgICAgdHJhY2tTdGVwKFxuICAgICAgICBwcmVzZW50ZXIsXG4gICAgICAgIFwiU2NhZmZvbGRpbmcgd29ya3NwYWNlLi4uXCIsXG4gICAgICAgICgpID0+IHJ1bk1vbm9yZXBvQWN0aW9ucyhnZW5lcmF0b3IsIHBheWxvYWQpLFxuICAgICAgICBoYW5kbGVHZW5lcmF0b3JFcnJvcixcbiAgICAgICksXG4gICAgKVxuICAgIC5hbmRUZWUoKHBheWxvYWQpID0+IHtcbiAgICAgIHByb2Nlc3MuY2hkaXIocGF5bG9hZC5yZXBvTmFtZSk7XG4gICAgfSlcbiAgICAuYW5kVGhlbigocGF5bG9hZCkgPT5cbiAgICAgIGNvbmZpcm1HaXRIdWJSZXBvQ3JlYXRpb24ocGF5bG9hZCwgcHVibGlzaFRvR2l0SHViKS5hbmRUaGVuPFxuICAgICAgICBTdW1tYXJ5SW5wdXQsXG4gICAgICAgIEVycm9yXG4gICAgICA+KChjb25maXJtZWQpID0+XG4gICAgICAgIGNvbmZpcm1lZFxuICAgICAgICAgID8gaGFuZGxlTmV3R2l0SHViUmVwb3NpdG9yeVdpdGhQcmVzZW50ZXIoe1xuICAgICAgICAgICAgICBnaXRIdWJTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcmVzZW50ZXIsXG4gICAgICAgICAgICB9KShwYXlsb2FkKVxuICAgICAgICAgIDogb2tBc3luYyh7IGdpdEh1YlJlcG9DcmVhdGlvblNraXBwZWQ6IHRydWUsIHBheWxvYWQgfSksXG4gICAgICApLFxuICAgICk7XG59O1xuXG5jb25zdCByZXBvcnRTdW1tYXJ5ID1cbiAgKHByZXNlbnRlcjogQ29tbWFuZFByZXNlbnRlciwgb3V0cHV0TW9kZTogXCJqc29uXCIgfCBcInRleHRcIikgPT5cbiAgKHJlc3VsdDogU3VtbWFyeUlucHV0KSA9PiB7XG4gICAgaWYgKG91dHB1dE1vZGUgPT09IFwianNvblwiKSB7XG4gICAgICBwcmVzZW50ZXIucmVwb3J0UmVzdWx0KHJlc3VsdCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRpc3BsYXlTdW1tYXJ5KHJlc3VsdCk7XG4gICAgfVxuICB9O1xuXG5leHBvcnQgY29uc3QgbWFrZUluaXRDb21tYW5kID0gKFxuICByZXF1aXJlR2l0SHViQXV0aDogR2l0SHViQXV0aEZhY3RvcnksXG4gIGVudjogQ2xpRW52LFxuKTogQ29tbWFuZCA9PlxuICBuZXcgQ29tbWFuZCgpXG4gICAgLm5hbWUoXCJpbml0XCIpXG4gICAgLmRlc2NyaXB0aW9uKFwiSW5pdGlhbGl6ZSBhIG5ldyBEWCB3b3Jrc3BhY2VcIilcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oXCItLW5hbWUgPG5hbWU+XCIsIFwiUmVwb3NpdG9yeSBuYW1lXCIpKVxuICAgIC5hZGRPcHRpb24oXG4gICAgICBuZXcgT3B0aW9uKFxuICAgICAgICBcIi0tb3duZXIgPG93bmVyPlwiLFxuICAgICAgICBcIkdpdEh1YiBvcmdhbml6YXRpb24gb3IgdXNlciB0aGF0IHdpbGwgb3duIHRoZSByZXBvc2l0b3J5XCIsXG4gICAgICApLFxuICAgIClcbiAgICAuYWRkT3B0aW9uKFxuICAgICAgbmV3IE9wdGlvbihcIi0tZGVzY3JpcHRpb24gPGRlc2NyaXB0aW9uPlwiLCBcIlJlcG9zaXRvcnkgZGVzY3JpcHRpb25cIiksXG4gICAgKVxuICAgIC5hZGRPcHRpb24oXG4gICAgICBuZXcgT3B0aW9uKFxuICAgICAgICBcIi0tcHVibGlzaFwiLFxuICAgICAgICBcIlB1Ymxpc2ggdGhlIHNjYWZmb2xkZWQgcmVwb3NpdG9yeSB0byBHaXRIdWIgd2l0aG91dCBwcm9tcHRpbmdcIixcbiAgICAgICkuZGVmYXVsdCh1bmRlZmluZWQpLFxuICAgIClcbiAgICAuYWN0aW9uKGFzeW5jIGZ1bmN0aW9uIChvcHRpb25zOiB1bmtub3duKSB7XG4gICAgICBjb25zdCB7IG91dHB1dCB9ID0gdGhpcy5vcHRzV2l0aEdsb2JhbHM8R2xvYmFsT3B0aW9ucz4oKTtcbiAgICAgIGNvbnN0IG91dHB1dE1vZGUgPSByZXNvbHZlT3V0cHV0TW9kZShlbnYsIG91dHB1dCk7XG4gICAgICBjb25zdCBwcmVzZW50ZXIgPSBjcmVhdGVDb21tYW5kUHJlc2VudGVyKG91dHB1dE1vZGUpO1xuXG4gICAgICBhd2FpdCBSZXN1bHRBc3luYy5mcm9tUHJvbWlzZShcbiAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiBwYXJzZUluaXRDb21tYW5kT3B0aW9ucyhvcHRpb25zKSksXG4gICAgICAgIChjYXVzZSkgPT5cbiAgICAgICAgICBjYXVzZSBpbnN0YW5jZW9mIEVycm9yXG4gICAgICAgICAgICA/IGNhdXNlXG4gICAgICAgICAgICA6IG5ldyBFcnJvcihcIkZhaWxlZCB0byBwYXJzZSBpbml0IGNvbW1hbmQgb3B0aW9uc1wiLCB7IGNhdXNlIH0pLFxuICAgICAgKVxuICAgICAgICAuYW5kVGhlbigoaW5pdE9wdGlvbnMpID0+XG4gICAgICAgICAgcnVuSW5pdFByZWNvbmRpdGlvbnMocHJlc2VudGVyKVxuICAgICAgICAgICAgLmFuZFRoZW4oKCkgPT4gcmVxdWlyZUdpdEh1YkF1dGgoKSlcbiAgICAgICAgICAgIC5hbmRUaGVuKChhdXRoKSA9PlxuICAgICAgICAgICAgICBydW5Jbml0QWN0aW9uKHtcbiAgICAgICAgICAgICAgICBnaXRIdWJTZXJ2aWNlOiBhdXRoLmdpdEh1YlNlcnZpY2UsXG4gICAgICAgICAgICAgICAgaW5pdGlhbEFuc3dlcnM6IGdldE1vbm9yZXBvSW5pdGlhbEFuc3dlcnMoaW5pdE9wdGlvbnMpLFxuICAgICAgICAgICAgICAgIHByZXNlbnRlcixcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApLFxuICAgICAgICApXG4gICAgICAgIC5tYXRjaChcbiAgICAgICAgICByZXBvcnRTdW1tYXJ5KHByZXNlbnRlciwgb3V0cHV0TW9kZSksXG4gICAgICAgICAgcmVwb3J0Q29tbWFuZEVycm9yKHRoaXMsIHByZXNlbnRlciwgb3V0cHV0TW9kZSksXG4gICAgICAgICk7XG4gICAgfSk7XG4iXX0=
@@ -1,6 +1,7 @@
1
1
  import { Command } from "commander";
2
+ import type { CliEnv } from "./env.js";
2
3
  import { Config } from "../../config.js";
3
4
  import { Dependencies } from "../../domain/dependencies.js";
4
5
  import { CodemodCommandDependencies } from "./commands/codemod.js";
5
6
  export type CliDependencies = CodemodCommandDependencies;
6
- export declare const makeCli: (deps: Dependencies, config: Config, cliDeps: CliDependencies, version: string) => Command;
7
+ export declare const makeCli: (deps: Dependencies, config: Config, cliDeps: CliDependencies, env: CliEnv, version: string) => Command;
@@ -7,7 +7,7 @@ import { makeInitCommand } from "./commands/init.js";
7
7
  import { makeSavemoneyCommand } from "./commands/savemoney.js";
8
8
  import { makeSpecCommand } from "./commands/spec.js";
9
9
  import { extractCliSpec } from "./spec.js";
10
- export const makeCli = (deps, config, cliDeps, version) => {
10
+ export const makeCli = (deps, config, cliDeps, env, version) => {
11
11
  const program = new Command();
12
12
  program
13
13
  .name("dx")
@@ -17,14 +17,14 @@ export const makeCli = (deps, config, cliDeps, version) => {
17
17
  .addOption(new Option("--output <mode>", "Output mode: text (default, human-readable) or json (structured events to stdout for agents)")
18
18
  .choices(["text", "json"])
19
19
  .default("text"));
20
- program.addCommand(makeDoctorCommand(deps, config));
21
- program.addCommand(makeCodemodCommand(cliDeps));
22
- program.addCommand(makeInitCommand(deps.requireGitHubAuth));
20
+ program.addCommand(makeDoctorCommand(deps, config, env));
21
+ program.addCommand(makeCodemodCommand(cliDeps, env));
22
+ program.addCommand(makeInitCommand(deps.requireGitHubAuth, env));
23
23
  program.addCommand(makeSavemoneyCommand());
24
- program.addCommand(makeInfoCommand(deps));
25
- program.addCommand(makeAddCommand(deps.requireGitHubAuth));
24
+ program.addCommand(makeInfoCommand(deps, env));
25
+ program.addCommand(makeAddCommand(deps.requireGitHubAuth, env));
26
26
  // spec is registered last so the closure captures the complete command tree.
27
27
  program.addCommand(makeSpecCommand(() => extractCliSpec(program, version)));
28
28
  return program;
29
29
  };
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWRhcHRlcnMvY29tbWFuZGVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBSTVDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBRUwsa0JBQWtCLEdBQ25CLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUkzQyxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsQ0FDckIsSUFBa0IsRUFDbEIsTUFBYyxFQUNkLE9BQXdCLEVBQ3hCLE9BQWUsRUFDZixFQUFFO0lBQ0YsTUFBTSxPQUFPLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUU5QixPQUFPO1NBQ0osSUFBSSxDQUFDLElBQUksQ0FBQztTQUNWLFdBQVcsQ0FBQyx5QkFBeUIsQ0FBQztTQUN0QyxPQUFPLENBQUMsT0FBTyxDQUFDO1NBQ2hCLE1BQU0sQ0FDTCxlQUFlLEVBQ2YsdUdBQXVHLEVBQ3ZHLEtBQUssQ0FDTjtTQUNBLFNBQVMsQ0FDUixJQUFJLE1BQU0sQ0FDUixpQkFBaUIsRUFDakIsOEZBQThGLENBQy9GO1NBQ0UsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQ3pCLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FDbkIsQ0FBQztJQUVKLE9BQU8sQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsT0FBTyxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ2hELE9BQU8sQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7SUFDNUQsT0FBTyxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLENBQUM7SUFDM0MsT0FBTyxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMxQyxPQUFPLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO0lBRTNELDZFQUE2RTtJQUM3RSxPQUFPLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUU1RSxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tYW5kLCBPcHRpb24gfSBmcm9tIFwiY29tbWFuZGVyXCI7XG5cbmltcG9ydCB7IENvbmZpZyB9IGZyb20gXCIuLi8uLi9jb25maWcuanNcIjtcbmltcG9ydCB7IERlcGVuZGVuY2llcyB9IGZyb20gXCIuLi8uLi9kb21haW4vZGVwZW5kZW5jaWVzLmpzXCI7XG5pbXBvcnQgeyBtYWtlQWRkQ29tbWFuZCB9IGZyb20gXCIuL2NvbW1hbmRzL2FkZC5qc1wiO1xuaW1wb3J0IHtcbiAgQ29kZW1vZENvbW1hbmREZXBlbmRlbmNpZXMsXG4gIG1ha2VDb2RlbW9kQ29tbWFuZCxcbn0gZnJvbSBcIi4vY29tbWFuZHMvY29kZW1vZC5qc1wiO1xuaW1wb3J0IHsgbWFrZURvY3RvckNvbW1hbmQgfSBmcm9tIFwiLi9jb21tYW5kcy9kb2N0b3IuanNcIjtcbmltcG9ydCB7IG1ha2VJbmZvQ29tbWFuZCB9IGZyb20gXCIuL2NvbW1hbmRzL2luZm8uanNcIjtcbmltcG9ydCB7IG1ha2VJbml0Q29tbWFuZCB9IGZyb20gXCIuL2NvbW1hbmRzL2luaXQuanNcIjtcbmltcG9ydCB7IG1ha2VTYXZlbW9uZXlDb21tYW5kIH0gZnJvbSBcIi4vY29tbWFuZHMvc2F2ZW1vbmV5LmpzXCI7XG5pbXBvcnQgeyBtYWtlU3BlY0NvbW1hbmQgfSBmcm9tIFwiLi9jb21tYW5kcy9zcGVjLmpzXCI7XG5pbXBvcnQgeyBleHRyYWN0Q2xpU3BlYyB9IGZyb20gXCIuL3NwZWMuanNcIjtcblxuZXhwb3J0IHR5cGUgQ2xpRGVwZW5kZW5jaWVzID0gQ29kZW1vZENvbW1hbmREZXBlbmRlbmNpZXM7XG5cbmV4cG9ydCBjb25zdCBtYWtlQ2xpID0gKFxuICBkZXBzOiBEZXBlbmRlbmNpZXMsXG4gIGNvbmZpZzogQ29uZmlnLFxuICBjbGlEZXBzOiBDbGlEZXBlbmRlbmNpZXMsXG4gIHZlcnNpb246IHN0cmluZyxcbikgPT4ge1xuICBjb25zdCBwcm9ncmFtID0gbmV3IENvbW1hbmQoKTtcblxuICBwcm9ncmFtXG4gICAgLm5hbWUoXCJkeFwiKVxuICAgIC5kZXNjcmlwdGlvbihcIlRoZSBDTEkgZm9yIERYLVBsYXRmb3JtXCIpXG4gICAgLnZlcnNpb24odmVyc2lvbilcbiAgICAub3B0aW9uKFxuICAgICAgXCItdiwgLS12ZXJib3NlXCIsXG4gICAgICBcIkVuYWJsZSB2ZXJib3NlIG91dHB1dDogZGVidWctbGV2ZWwgbG9ncyBhbmQgZnVsbCBlcnJvciBjaGFpbiAod2l0aCBzdGFjayB0cmFjZXMpIHdoZW4gYSBjb21tYW5kIGZhaWxzXCIsXG4gICAgICBmYWxzZSxcbiAgICApXG4gICAgLmFkZE9wdGlvbihcbiAgICAgIG5ldyBPcHRpb24oXG4gICAgICAgIFwiLS1vdXRwdXQgPG1vZGU+XCIsXG4gICAgICAgIFwiT3V0cHV0IG1vZGU6IHRleHQgKGRlZmF1bHQsIGh1bWFuLXJlYWRhYmxlKSBvciBqc29uIChzdHJ1Y3R1cmVkIGV2ZW50cyB0byBzdGRvdXQgZm9yIGFnZW50cylcIixcbiAgICAgIClcbiAgICAgICAgLmNob2ljZXMoW1widGV4dFwiLCBcImpzb25cIl0pXG4gICAgICAgIC5kZWZhdWx0KFwidGV4dFwiKSxcbiAgICApO1xuXG4gIHByb2dyYW0uYWRkQ29tbWFuZChtYWtlRG9jdG9yQ29tbWFuZChkZXBzLCBjb25maWcpKTtcbiAgcHJvZ3JhbS5hZGRDb21tYW5kKG1ha2VDb2RlbW9kQ29tbWFuZChjbGlEZXBzKSk7XG4gIHByb2dyYW0uYWRkQ29tbWFuZChtYWtlSW5pdENvbW1hbmQoZGVwcy5yZXF1aXJlR2l0SHViQXV0aCkpO1xuICBwcm9ncmFtLmFkZENvbW1hbmQobWFrZVNhdmVtb25leUNvbW1hbmQoKSk7XG4gIHByb2dyYW0uYWRkQ29tbWFuZChtYWtlSW5mb0NvbW1hbmQoZGVwcykpO1xuICBwcm9ncmFtLmFkZENvbW1hbmQobWFrZUFkZENvbW1hbmQoZGVwcy5yZXF1aXJlR2l0SHViQXV0aCkpO1xuXG4gIC8vIHNwZWMgaXMgcmVnaXN0ZXJlZCBsYXN0IHNvIHRoZSBjbG9zdXJlIGNhcHR1cmVzIHRoZSBjb21wbGV0ZSBjb21tYW5kIHRyZWUuXG4gIHByb2dyYW0uYWRkQ29tbWFuZChtYWtlU3BlY0NvbW1hbmQoKCkgPT4gZXh0cmFjdENsaVNwZWMocHJvZ3JhbSwgdmVyc2lvbikpKTtcblxuICByZXR1cm4gcHJvZ3JhbTtcbn07XG4iXX0=
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWRhcHRlcnMvY29tbWFuZGVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBTTVDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBRUwsa0JBQWtCLEdBQ25CLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUczQyxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsQ0FDckIsSUFBa0IsRUFDbEIsTUFBYyxFQUNkLE9BQXdCLEVBQ3hCLEdBQVcsRUFDWCxPQUFlLEVBQ2YsRUFBRTtJQUNGLE1BQU0sT0FBTyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7SUFFOUIsT0FBTztTQUNKLElBQUksQ0FBQyxJQUFJLENBQUM7U0FDVixXQUFXLENBQUMseUJBQXlCLENBQUM7U0FDdEMsT0FBTyxDQUFDLE9BQU8sQ0FBQztTQUNoQixNQUFNLENBQ0wsZUFBZSxFQUNmLHVHQUF1RyxFQUN2RyxLQUFLLENBQ047U0FDQSxTQUFTLENBQ1IsSUFBSSxNQUFNLENBQ1IsaUJBQWlCLEVBQ2pCLDhGQUE4RixDQUMvRjtTQUNFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztTQUN6QixPQUFPLENBQUMsTUFBTSxDQUFDLENBQ25CLENBQUM7SUFFSixPQUFPLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN6RCxPQUFPLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3JELE9BQU8sQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLE9BQU8sQ0FBQyxVQUFVLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO0lBQzNDLE9BQU8sQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQy9DLE9BQU8sQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBRWhFLDZFQUE2RTtJQUM3RSxPQUFPLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUU1RSxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tYW5kLCBPcHRpb24gfSBmcm9tIFwiY29tbWFuZGVyXCI7XG5cbmltcG9ydCB0eXBlIHsgQ2xpRW52IH0gZnJvbSBcIi4vZW52LmpzXCI7XG5cbmltcG9ydCB7IENvbmZpZyB9IGZyb20gXCIuLi8uLi9jb25maWcuanNcIjtcbmltcG9ydCB7IERlcGVuZGVuY2llcyB9IGZyb20gXCIuLi8uLi9kb21haW4vZGVwZW5kZW5jaWVzLmpzXCI7XG5pbXBvcnQgeyBtYWtlQWRkQ29tbWFuZCB9IGZyb20gXCIuL2NvbW1hbmRzL2FkZC5qc1wiO1xuaW1wb3J0IHtcbiAgQ29kZW1vZENvbW1hbmREZXBlbmRlbmNpZXMsXG4gIG1ha2VDb2RlbW9kQ29tbWFuZCxcbn0gZnJvbSBcIi4vY29tbWFuZHMvY29kZW1vZC5qc1wiO1xuaW1wb3J0IHsgbWFrZURvY3RvckNvbW1hbmQgfSBmcm9tIFwiLi9jb21tYW5kcy9kb2N0b3IuanNcIjtcbmltcG9ydCB7IG1ha2VJbmZvQ29tbWFuZCB9IGZyb20gXCIuL2NvbW1hbmRzL2luZm8uanNcIjtcbmltcG9ydCB7IG1ha2VJbml0Q29tbWFuZCB9IGZyb20gXCIuL2NvbW1hbmRzL2luaXQuanNcIjtcbmltcG9ydCB7IG1ha2VTYXZlbW9uZXlDb21tYW5kIH0gZnJvbSBcIi4vY29tbWFuZHMvc2F2ZW1vbmV5LmpzXCI7XG5pbXBvcnQgeyBtYWtlU3BlY0NvbW1hbmQgfSBmcm9tIFwiLi9jb21tYW5kcy9zcGVjLmpzXCI7XG5pbXBvcnQgeyBleHRyYWN0Q2xpU3BlYyB9IGZyb20gXCIuL3NwZWMuanNcIjtcbmV4cG9ydCB0eXBlIENsaURlcGVuZGVuY2llcyA9IENvZGVtb2RDb21tYW5kRGVwZW5kZW5jaWVzO1xuXG5leHBvcnQgY29uc3QgbWFrZUNsaSA9IChcbiAgZGVwczogRGVwZW5kZW5jaWVzLFxuICBjb25maWc6IENvbmZpZyxcbiAgY2xpRGVwczogQ2xpRGVwZW5kZW5jaWVzLFxuICBlbnY6IENsaUVudixcbiAgdmVyc2lvbjogc3RyaW5nLFxuKSA9PiB7XG4gIGNvbnN0IHByb2dyYW0gPSBuZXcgQ29tbWFuZCgpO1xuXG4gIHByb2dyYW1cbiAgICAubmFtZShcImR4XCIpXG4gICAgLmRlc2NyaXB0aW9uKFwiVGhlIENMSSBmb3IgRFgtUGxhdGZvcm1cIilcbiAgICAudmVyc2lvbih2ZXJzaW9uKVxuICAgIC5vcHRpb24oXG4gICAgICBcIi12LCAtLXZlcmJvc2VcIixcbiAgICAgIFwiRW5hYmxlIHZlcmJvc2Ugb3V0cHV0OiBkZWJ1Zy1sZXZlbCBsb2dzIGFuZCBmdWxsIGVycm9yIGNoYWluICh3aXRoIHN0YWNrIHRyYWNlcykgd2hlbiBhIGNvbW1hbmQgZmFpbHNcIixcbiAgICAgIGZhbHNlLFxuICAgIClcbiAgICAuYWRkT3B0aW9uKFxuICAgICAgbmV3IE9wdGlvbihcbiAgICAgICAgXCItLW91dHB1dCA8bW9kZT5cIixcbiAgICAgICAgXCJPdXRwdXQgbW9kZTogdGV4dCAoZGVmYXVsdCwgaHVtYW4tcmVhZGFibGUpIG9yIGpzb24gKHN0cnVjdHVyZWQgZXZlbnRzIHRvIHN0ZG91dCBmb3IgYWdlbnRzKVwiLFxuICAgICAgKVxuICAgICAgICAuY2hvaWNlcyhbXCJ0ZXh0XCIsIFwianNvblwiXSlcbiAgICAgICAgLmRlZmF1bHQoXCJ0ZXh0XCIpLFxuICAgICk7XG5cbiAgcHJvZ3JhbS5hZGRDb21tYW5kKG1ha2VEb2N0b3JDb21tYW5kKGRlcHMsIGNvbmZpZywgZW52KSk7XG4gIHByb2dyYW0uYWRkQ29tbWFuZChtYWtlQ29kZW1vZENvbW1hbmQoY2xpRGVwcywgZW52KSk7XG4gIHByb2dyYW0uYWRkQ29tbWFuZChtYWtlSW5pdENvbW1hbmQoZGVwcy5yZXF1aXJlR2l0SHViQXV0aCwgZW52KSk7XG4gIHByb2dyYW0uYWRkQ29tbWFuZChtYWtlU2F2ZW1vbmV5Q29tbWFuZCgpKTtcbiAgcHJvZ3JhbS5hZGRDb21tYW5kKG1ha2VJbmZvQ29tbWFuZChkZXBzLCBlbnYpKTtcbiAgcHJvZ3JhbS5hZGRDb21tYW5kKG1ha2VBZGRDb21tYW5kKGRlcHMucmVxdWlyZUdpdEh1YkF1dGgsIGVudikpO1xuXG4gIC8vIHNwZWMgaXMgcmVnaXN0ZXJlZCBsYXN0IHNvIHRoZSBjbG9zdXJlIGNhcHR1cmVzIHRoZSBjb21wbGV0ZSBjb21tYW5kIHRyZWUuXG4gIHByb2dyYW0uYWRkQ29tbWFuZChtYWtlU3BlY0NvbW1hbmQoKCkgPT4gZXh0cmFjdENsaVNwZWMocHJvZ3JhbSwgdmVyc2lvbikpKTtcblxuICByZXR1cm4gcHJvZ3JhbTtcbn07XG4iXX0=
@@ -1,16 +1,16 @@
1
1
  import type { CommandPresenter } from "../../../domain/command-presenter.js";
2
2
  /**
3
- * Output logger factory.
3
+ * Output presenter selection.
4
4
  *
5
- * isNonInteractive determines whether the CLI should suppress interactive
6
- * prompts (e.g. when running in a CI pipeline). This is independent of the
7
- * output format: a user can request JSON output while still answering prompts,
8
- * and a CI system can set CI=true with text output.
9
- *
10
- * createCommandPresenter selects the appropriate CommandPresenter adapter based solely
11
- * on the requested output format.
5
+ * isNonInteractive reports whether the CLI is running in a non-interactive
6
+ * (CI) environment. resolveOutputMode applies the precedence rules: a CI
7
+ * environment forces JSON so agents and pipelines get structured output,
8
+ * otherwise the `--output` flag decides, defaulting to text.
9
+ * createCommandPresenter then maps the resolved mode to the matching
10
+ * CommandPresenter adapter.
12
11
  */
13
12
  import type { CliEnv } from "../env.js";
13
+ import type { GlobalOptions } from "../global-options.js";
14
14
  /**
15
15
  * Returns true when the CLI should suppress interactive prompts.
16
16
  *
@@ -18,6 +18,15 @@ import type { CliEnv } from "../env.js";
18
18
  * following the same convention used by `is-interactive` and `ora`.
19
19
  */
20
20
  export declare const isNonInteractive: (env: CliEnv) => boolean;
21
+ /**
22
+ * Resolves the effective output mode for a command invocation.
23
+ *
24
+ * - In a non-interactive environment (CI), output is always "json" so agents
25
+ * and pipelines get structured output regardless of the `--output` flag.
26
+ * - Otherwise the `--output` flag decides.
27
+ * - When nothing is provided, the mode defaults to "text".
28
+ */
29
+ export declare const resolveOutputMode: (env: CliEnv, output: GlobalOptions["output"] | undefined) => "json" | "text";
21
30
  /**
22
31
  * Returns the appropriate CommandPresenter adapter for the requested output mode.
23
32
  *
@@ -7,6 +7,20 @@ import { TextCommandPresenter } from "./text-command-presenter.js";
7
7
  * following the same convention used by `is-interactive` and `ora`.
8
8
  */
9
9
  export const isNonInteractive = (env) => env.CI;
10
+ /**
11
+ * Resolves the effective output mode for a command invocation.
12
+ *
13
+ * - In a non-interactive environment (CI), output is always "json" so agents
14
+ * and pipelines get structured output regardless of the `--output` flag.
15
+ * - Otherwise the `--output` flag decides.
16
+ * - When nothing is provided, the mode defaults to "text".
17
+ */
18
+ export const resolveOutputMode = (env, output) => {
19
+ if (isNonInteractive(env)) {
20
+ return "json";
21
+ }
22
+ return output === "json" ? "json" : "text";
23
+ };
10
24
  /**
11
25
  * Returns the appropriate CommandPresenter adapter for the requested output mode.
12
26
  *
@@ -14,4 +28,4 @@ export const isNonInteractive = (env) => env.CI;
14
28
  * - "json" → JsonCommandPresenter (NDJSON on stderr, JSON envelope on stdout)
15
29
  */
16
30
  export const createCommandPresenter = (output) => output === "json" ? new JsonCommandPresenter() : new TextCommandPresenter();
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYWRhcHRlcnMvY29tbWFuZGVyL3ByZXNlbnRlcnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBY0EsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbkUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFbkU7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLEdBQVcsRUFBVyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztBQUVqRTs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLENBQ3BDLE1BQXVCLEVBQ0wsRUFBRSxDQUNwQixNQUFNLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLG9CQUFvQixFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksb0JBQW9CLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ29tbWFuZFByZXNlbnRlciB9IGZyb20gXCIuLi8uLi8uLi9kb21haW4vY29tbWFuZC1wcmVzZW50ZXIuanNcIjtcbi8qKlxuICogT3V0cHV0IGxvZ2dlciBmYWN0b3J5LlxuICpcbiAqIGlzTm9uSW50ZXJhY3RpdmUgZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBDTEkgc2hvdWxkIHN1cHByZXNzIGludGVyYWN0aXZlXG4gKiBwcm9tcHRzIChlLmcuIHdoZW4gcnVubmluZyBpbiBhIENJIHBpcGVsaW5lKS4gVGhpcyBpcyBpbmRlcGVuZGVudCBvZiB0aGVcbiAqIG91dHB1dCBmb3JtYXQ6IGEgdXNlciBjYW4gcmVxdWVzdCBKU09OIG91dHB1dCB3aGlsZSBzdGlsbCBhbnN3ZXJpbmcgcHJvbXB0cyxcbiAqIGFuZCBhIENJIHN5c3RlbSBjYW4gc2V0IENJPXRydWUgd2l0aCB0ZXh0IG91dHB1dC5cbiAqXG4gKiBjcmVhdGVDb21tYW5kUHJlc2VudGVyIHNlbGVjdHMgdGhlIGFwcHJvcHJpYXRlIENvbW1hbmRQcmVzZW50ZXIgYWRhcHRlciBiYXNlZCBzb2xlbHlcbiAqIG9uIHRoZSByZXF1ZXN0ZWQgb3V0cHV0IGZvcm1hdC5cbiAqL1xuaW1wb3J0IHR5cGUgeyBDbGlFbnYgfSBmcm9tIFwiLi4vZW52LmpzXCI7XG5cbmltcG9ydCB7IEpzb25Db21tYW5kUHJlc2VudGVyIH0gZnJvbSBcIi4vanNvbi1jb21tYW5kLXByZXNlbnRlci5qc1wiO1xuaW1wb3J0IHsgVGV4dENvbW1hbmRQcmVzZW50ZXIgfSBmcm9tIFwiLi90ZXh0LWNvbW1hbmQtcHJlc2VudGVyLmpzXCI7XG5cbi8qKlxuICogUmV0dXJucyB0cnVlIHdoZW4gdGhlIENMSSBzaG91bGQgc3VwcHJlc3MgaW50ZXJhY3RpdmUgcHJvbXB0cy5cbiAqXG4gKiBDaGVja3MgdGhlIHBhcnNlZCBDSSBib29sZWFuIGZyb20gQ2xpRW52IChjb2VyY2VkIGJ5IHpvZCdzIHN0cmluZ2Jvb2wpLFxuICogZm9sbG93aW5nIHRoZSBzYW1lIGNvbnZlbnRpb24gdXNlZCBieSBgaXMtaW50ZXJhY3RpdmVgIGFuZCBgb3JhYC5cbiAqL1xuZXhwb3J0IGNvbnN0IGlzTm9uSW50ZXJhY3RpdmUgPSAoZW52OiBDbGlFbnYpOiBib29sZWFuID0+IGVudi5DSTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBhcHByb3ByaWF0ZSBDb21tYW5kUHJlc2VudGVyIGFkYXB0ZXIgZm9yIHRoZSByZXF1ZXN0ZWQgb3V0cHV0IG1vZGUuXG4gKlxuICogLSBcInRleHRcIiDihpIgVGV4dENvbW1hbmRQcmVzZW50ZXIgKGNoYWxrICsgb3JhLCBmb3IgaHVtYW4gdGVybWluYWwgc2Vzc2lvbnMpXG4gKiAtIFwianNvblwiIOKGkiBKc29uQ29tbWFuZFByZXNlbnRlciAoTkRKU09OIG9uIHN0ZGVyciwgSlNPTiBlbnZlbG9wZSBvbiBzdGRvdXQpXG4gKi9cbmV4cG9ydCBjb25zdCBjcmVhdGVDb21tYW5kUHJlc2VudGVyID0gKFxuICBvdXRwdXQ6IFwianNvblwiIHwgXCJ0ZXh0XCIsXG4pOiBDb21tYW5kUHJlc2VudGVyID0+XG4gIG91dHB1dCA9PT0gXCJqc29uXCIgPyBuZXcgSnNvbkNvbW1hbmRQcmVzZW50ZXIoKSA6IG5ldyBUZXh0Q29tbWFuZFByZXNlbnRlcigpO1xuIl19
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYWRhcHRlcnMvY29tbWFuZGVyL3ByZXNlbnRlcnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBY0EsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbkUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFbkU7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLEdBQVcsRUFBVyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztBQUVqRTs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FDL0IsR0FBVyxFQUNYLE1BQTJDLEVBQzFCLEVBQUU7SUFDbkIsSUFBSSxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQzFCLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFDRCxPQUFPLE1BQU0sS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0FBQzdDLENBQUMsQ0FBQztBQUVGOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsQ0FDcEMsTUFBdUIsRUFDTCxFQUFFLENBQ3BCLE1BQU0sS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksb0JBQW9CLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxvQkFBb0IsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDb21tYW5kUHJlc2VudGVyIH0gZnJvbSBcIi4uLy4uLy4uL2RvbWFpbi9jb21tYW5kLXByZXNlbnRlci5qc1wiO1xuLyoqXG4gKiBPdXRwdXQgcHJlc2VudGVyIHNlbGVjdGlvbi5cbiAqXG4gKiBpc05vbkludGVyYWN0aXZlIHJlcG9ydHMgd2hldGhlciB0aGUgQ0xJIGlzIHJ1bm5pbmcgaW4gYSBub24taW50ZXJhY3RpdmVcbiAqIChDSSkgZW52aXJvbm1lbnQuIHJlc29sdmVPdXRwdXRNb2RlIGFwcGxpZXMgdGhlIHByZWNlZGVuY2UgcnVsZXM6IGEgQ0lcbiAqIGVudmlyb25tZW50IGZvcmNlcyBKU09OIHNvIGFnZW50cyBhbmQgcGlwZWxpbmVzIGdldCBzdHJ1Y3R1cmVkIG91dHB1dCxcbiAqIG90aGVyd2lzZSB0aGUgYC0tb3V0cHV0YCBmbGFnIGRlY2lkZXMsIGRlZmF1bHRpbmcgdG8gdGV4dC5cbiAqIGNyZWF0ZUNvbW1hbmRQcmVzZW50ZXIgdGhlbiBtYXBzIHRoZSByZXNvbHZlZCBtb2RlIHRvIHRoZSBtYXRjaGluZ1xuICogQ29tbWFuZFByZXNlbnRlciBhZGFwdGVyLlxuICovXG5pbXBvcnQgdHlwZSB7IENsaUVudiB9IGZyb20gXCIuLi9lbnYuanNcIjtcbmltcG9ydCB0eXBlIHsgR2xvYmFsT3B0aW9ucyB9IGZyb20gXCIuLi9nbG9iYWwtb3B0aW9ucy5qc1wiO1xuXG5pbXBvcnQgeyBKc29uQ29tbWFuZFByZXNlbnRlciB9IGZyb20gXCIuL2pzb24tY29tbWFuZC1wcmVzZW50ZXIuanNcIjtcbmltcG9ydCB7IFRleHRDb21tYW5kUHJlc2VudGVyIH0gZnJvbSBcIi4vdGV4dC1jb21tYW5kLXByZXNlbnRlci5qc1wiO1xuXG4vKipcbiAqIFJldHVybnMgdHJ1ZSB3aGVuIHRoZSBDTEkgc2hvdWxkIHN1cHByZXNzIGludGVyYWN0aXZlIHByb21wdHMuXG4gKlxuICogQ2hlY2tzIHRoZSBwYXJzZWQgQ0kgYm9vbGVhbiBmcm9tIENsaUVudiAoY29lcmNlZCBieSB6b2QncyBzdHJpbmdib29sKSxcbiAqIGZvbGxvd2luZyB0aGUgc2FtZSBjb252ZW50aW9uIHVzZWQgYnkgYGlzLWludGVyYWN0aXZlYCBhbmQgYG9yYWAuXG4gKi9cbmV4cG9ydCBjb25zdCBpc05vbkludGVyYWN0aXZlID0gKGVudjogQ2xpRW52KTogYm9vbGVhbiA9PiBlbnYuQ0k7XG5cbi8qKlxuICogUmVzb2x2ZXMgdGhlIGVmZmVjdGl2ZSBvdXRwdXQgbW9kZSBmb3IgYSBjb21tYW5kIGludm9jYXRpb24uXG4gKlxuICogLSBJbiBhIG5vbi1pbnRlcmFjdGl2ZSBlbnZpcm9ubWVudCAoQ0kpLCBvdXRwdXQgaXMgYWx3YXlzIFwianNvblwiIHNvIGFnZW50c1xuICogICBhbmQgcGlwZWxpbmVzIGdldCBzdHJ1Y3R1cmVkIG91dHB1dCByZWdhcmRsZXNzIG9mIHRoZSBgLS1vdXRwdXRgIGZsYWcuXG4gKiAtIE90aGVyd2lzZSB0aGUgYC0tb3V0cHV0YCBmbGFnIGRlY2lkZXMuXG4gKiAtIFdoZW4gbm90aGluZyBpcyBwcm92aWRlZCwgdGhlIG1vZGUgZGVmYXVsdHMgdG8gXCJ0ZXh0XCIuXG4gKi9cbmV4cG9ydCBjb25zdCByZXNvbHZlT3V0cHV0TW9kZSA9IChcbiAgZW52OiBDbGlFbnYsXG4gIG91dHB1dDogR2xvYmFsT3B0aW9uc1tcIm91dHB1dFwiXSB8IHVuZGVmaW5lZCxcbik6IFwianNvblwiIHwgXCJ0ZXh0XCIgPT4ge1xuICBpZiAoaXNOb25JbnRlcmFjdGl2ZShlbnYpKSB7XG4gICAgcmV0dXJuIFwianNvblwiO1xuICB9XG4gIHJldHVybiBvdXRwdXQgPT09IFwianNvblwiID8gXCJqc29uXCIgOiBcInRleHRcIjtcbn07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgYXBwcm9wcmlhdGUgQ29tbWFuZFByZXNlbnRlciBhZGFwdGVyIGZvciB0aGUgcmVxdWVzdGVkIG91dHB1dCBtb2RlLlxuICpcbiAqIC0gXCJ0ZXh0XCIg4oaSIFRleHRDb21tYW5kUHJlc2VudGVyIChjaGFsayArIG9yYSwgZm9yIGh1bWFuIHRlcm1pbmFsIHNlc3Npb25zKVxuICogLSBcImpzb25cIiDihpIgSnNvbkNvbW1hbmRQcmVzZW50ZXIgKE5ESlNPTiBvbiBzdGRlcnIsIEpTT04gZW52ZWxvcGUgb24gc3Rkb3V0KVxuICovXG5leHBvcnQgY29uc3QgY3JlYXRlQ29tbWFuZFByZXNlbnRlciA9IChcbiAgb3V0cHV0OiBcImpzb25cIiB8IFwidGV4dFwiLFxuKTogQ29tbWFuZFByZXNlbnRlciA9PlxuICBvdXRwdXQgPT09IFwianNvblwiID8gbmV3IEpzb25Db21tYW5kUHJlc2VudGVyKCkgOiBuZXcgVGV4dENvbW1hbmRQcmVzZW50ZXIoKTtcbiJdfQ==
package/dist/index.js CHANGED
@@ -3,6 +3,7 @@ import { configure, getConsoleSink } from "@logtape/logtape";
3
3
  import { errAsync, okAsync, ResultAsync } from "neverthrow";
4
4
  import { Octokit } from "octokit";
5
5
  import codemodRegistry from "./adapters/codemods/index.js";
6
+ import { cliEnvSchema } from "./adapters/commander/env.js";
6
7
  import { makeCli } from "./adapters/commander/index.js";
7
8
  import { makePackageJsonReader } from "./adapters/node/package-json.js";
8
9
  import { makeRepositoryReader } from "./adapters/node/repository.js";
@@ -70,11 +71,12 @@ export const runCli = async (version) => {
70
71
  requireGitHubAuth,
71
72
  };
72
73
  const config = getConfig();
74
+ const env = cliEnvSchema.parse(process.env);
73
75
  const useCases = {
74
76
  applyCodemodById: applyCodemodById(codemodRegistry, getInfo(deps)),
75
77
  listCodemods: listCodemods(codemodRegistry),
76
78
  };
77
- const program = makeCli(deps, config, useCases, version);
79
+ const program = makeCli(deps, config, useCases, env, version);
78
80
  program.parse();
79
81
  };
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzdELE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUM1RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRWxDLE9BQU8sZUFBZSxNQUFNLDhCQUE4QixDQUFDO0FBQzNELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNyRSxPQUFPLEVBQ0wsWUFBWSxFQUNaLG9CQUFvQixHQUNyQixNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQ3BHLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUU1RDs7Ozs7O0dBTUc7QUFDSCxNQUFNLHFCQUFxQixHQUFHLENBQUMsSUFBdUIsRUFBVyxFQUFFLENBQ2pFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUVwRCxNQUFNLGdCQUFnQixHQUFHLEtBQUssRUFBRSxPQUFnQixFQUFpQixFQUFF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LElBQUksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRXpELE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUNsQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXCJjb3JlLWpzL2FjdHVhbC9zZXQvaW5kZXguanNcIjtcbmltcG9ydCB7IGNvbmZpZ3VyZSwgZ2V0Q29uc29sZVNpbmsgfSBmcm9tIFwiQGxvZ3RhcGUvbG9ndGFwZVwiO1xuaW1wb3J0IHsgZXJyQXN5bmMsIG9rQXN5bmMsIFJlc3VsdEFzeW5jIH0gZnJvbSBcIm5ldmVydGhyb3dcIjtcbmltcG9ydCB7IE9jdG9raXQgfSBmcm9tIFwib2N0b2tpdFwiO1xuXG5pbXBvcnQgY29kZW1vZFJlZ2lzdHJ5IGZyb20gXCIuL2FkYXB0ZXJzL2NvZGVtb2RzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBtYWtlQ2xpIH0gZnJvbSBcIi4vYWRhcHRlcnMvY29tbWFuZGVyL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBtYWtlUGFja2FnZUpzb25SZWFkZXIgfSBmcm9tIFwiLi9hZGFwdGVycy9ub2RlL3BhY2thZ2UtanNvbi5qc1wiO1xuaW1wb3J0IHsgbWFrZVJlcG9zaXRvcnlSZWFkZXIgfSBmcm9tIFwiLi9hZGFwdGVycy9ub2RlL3JlcG9zaXRvcnkuanNcIjtcbmltcG9ydCB7XG4gIGdldEdpdEh1YlBBVCxcbiAgT2N0b2tpdEdpdEh1YlNlcnZpY2UsXG59IGZyb20gXCIuL2FkYXB0ZXJzL29jdG9raXQvaW5kZXguanNcIjtcbmltcG9ydCB7IG1ha2VBenVyZUF1dGhvcml6YXRpb25TZXJ2aWNlIH0gZnJvbSBcIi4vYWRhcHRlcnMvcGFnb3BhLXRlY2hub2xvZ3kvYXp1cmUtYXV0aG9yaXphdGlvbi5qc1wiO1xuaW1wb3J0IHsgZ2V0Q29uZmlnIH0gZnJvbSBcIi4vY29uZmlnLmpzXCI7XG5pbXBvcnQgeyBnZXRJbmZvIH0gZnJvbSBcIi4vZG9tYWluL2luZm8uanNcIjtcbmltcG9ydCB7IGFwcGx5Q29kZW1vZEJ5SWQgfSBmcm9tIFwiLi91c2UtY2FzZXMvYXBwbHktY29kZW1vZC5qc1wiO1xuaW1wb3J0IHsgbGlzdENvZGVtb2RzIH0gZnJvbSBcIi4vdXNlLWNhc2VzL2xpc3QtY29kZW1vZHMuanNcIjtcblxuLyoqXG4gKiBSZXR1cm5zIGB0cnVlYCB3aGVuIGAtdmAgb3IgYC0tdmVyYm9zZWAgaXMgcHJlc2VudCBpbiBhcmd2LlxuICpcbiAqIFdlIGluc3BlY3QgYXJndiBkaXJlY3RseSDigJQgaW5zdGVhZCBvZiByZWx5aW5nIG9uIENvbW1hbmRlciDigJQgYmVjYXVzZSB0aGVcbiAqIGxvZ3RhcGUgY29uZmlndXJhdGlvbiBtdXN0IGJlIGluIHBsYWNlIGJlZm9yZSBhbnkgY29tbWFuZCBoYW5kbGVyIHJ1bnNcbiAqIChpbmNsdWRpbmcgdGhlIG9uZXMgdGhhdCBlbWl0IGRlYnVnIGxvZ3Mgd2hpbGUgcGFyc2luZyBwcm9tcHRzKS5cbiAqL1xuY29uc3QgZGV0ZWN0VmVyYm9zZUZyb21Bcmd2ID0gKGFyZ3Y6IHJlYWRvbmx5IHN0cmluZ1tdKTogYm9vbGVhbiA9PlxuICBhcmd2LmluY2x1ZGVzKFwiLXZcIikgfHwgYXJndi5pbmNsdWRlcyhcIi0tdmVyYm9zZVwiKTtcblxuY29uc3QgY29uZmlndXJlTG9nZ2luZyA9IGFzeW5jICh2ZXJib3NlOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGNvbnN0IGxldmVsID0gdmVyYm9zZSA/IFwiZGVidWdcIiA6IFwiaW5mb1wiO1xuICBhd2FpdCBjb25maWd1cmUoe1xuICAgIGxvZ2dlcnM6IFtcbiAgICAgIHsgY2F0ZWdvcnk6IFtcImR4LWNsaVwiXSwgbG93ZXN0TGV2ZWw6IGxldmVsLCBzaW5rczogW1wiY29uc29sZVwiXSB9LFxuICAgICAgLy8gVGhlIGVudmlyb25tZW50IGdlbmVyYXRvciAoYGdlbi5lbnZgKSBlbWl0cyBkZWJ1ZyBtZXNzYWdlcyBhYm91dFxuICAgICAgLy8gcHJvdmlzaW9uZWQgQXp1cmUgcmVzb3VyY2VzOyBzdXJmYWNpbmcgdGhlbSBpcyB0aGUgbWFpbiB2YWx1ZSBvZlxuICAgICAgLy8gYC0tdmVyYm9zZWAgd2hlbiBydW5uaW5nIGBkeCBpbml0YCAvIGBkeCBhZGQgZW52aXJvbm1lbnRgLlxuICAgICAgeyBjYXRlZ29yeTogW1wiZ2VuXCJdLCBsb3dlc3RMZXZlbDogbGV2ZWwsIHNpbmtzOiBbXCJjb25zb2xlXCJdIH0sXG4gICAgICAvLyBgc2F2ZW1vbmV5YCBhbHJlYWR5IGVtaXRzIHN0cnVjdHVyZWQgZGVidWcgb3V0cHV0IGJ5IGRlZmF1bHQuXG4gICAgICB7IGNhdGVnb3J5OiBbXCJzYXZlbW9uZXlcIl0sIGxvd2VzdExldmVsOiBcImRlYnVnXCIsIHNpbmtzOiBbXCJjb25zb2xlXCJdIH0sXG4gICAgICB7IGNhdGVnb3J5OiBbXCJqc29uXCJdLCBsb3dlc3RMZXZlbDogXCJpbmZvXCIsIHNpbmtzOiBbXCJyYXdKc29uXCJdIH0sXG4gICAgICB7XG4gICAgICAgIGNhdGVnb3J5OiBbXCJsb2d0YXBlXCIsIFwibWV0YVwiXSxcbiAgICAgICAgbG93ZXN0TGV2ZWw6IFwid2FybmluZ1wiLFxuICAgICAgICBzaW5rczogW1wiY29uc29sZVwiXSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBzaW5rczoge1xuICAgICAgY29uc29sZTogZ2V0Q29uc29sZVNpbmsoKSxcbiAgICAgIHJhd0pzb24ocmVjb3JkKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKHJlY29yZC5yYXdNZXNzYWdlKTtcbiAgICAgIH0sXG4gICAgfSxcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgcnVuQ2xpID0gYXN5bmMgKHZlcnNpb246IHN0cmluZykgPT4ge1xuICBhd2FpdCBjb25maWd1cmVMb2dnaW5nKGRldGVjdFZlcmJvc2VGcm9tQXJndihwcm9jZXNzLmFyZ3YpKTtcblxuICBjb25zdCByZXBvc2l0b3J5UmVhZGVyID0gbWFrZVJlcG9zaXRvcnlSZWFkZXIoKTtcbiAgY29uc3QgcGFja2FnZUpzb25SZWFkZXIgPSBtYWtlUGFja2FnZUpzb25SZWFkZXIoKTtcblxuICAvKipcbiAgICogTGF6aWx5IGNyZWF0ZXMgR2l0SHViLWF1dGhlbnRpY2F0ZWQgc2VydmljZXMgb24gZmlyc3QgY2FsbC5cbiAgICogT25seSBjb21tYW5kcyB0aGF0IGFjdHVhbGx5IG5lZWQgR2l0SHViIChpbml0LCBhZGQpIHdpbGwgdHJpZ2dlciB0aGlzLFxuICAgKiBzbyBjcmVkZW50aWFsLWZyZWUgY29tbWFuZHMgKHNwZWMsIGRvY3RvciwgaW5mbywg4oCmKSBuZXZlciByZXF1aXJlIGEgUEFULlxuICAgKi9cbiAgY29uc3QgcmVxdWlyZUdpdEh1YkF1dGggPSAoKSA9PlxuICAgIFJlc3VsdEFzeW5jLmZyb21Qcm9taXNlKFxuICAgICAgZ2V0R2l0SHViUEFUKCksXG4gICAgICAoY2F1c2UpID0+IG5ldyBFcnJvcihcIkZhaWxlZCB0byByZWFkIEdpdEh1YiBQQVRcIiwgeyBjYXVzZSB9KSxcbiAgICApLmFuZFRoZW4oKGF1dGgpID0+IHtcbiAgICAgIGlmICghYXV0aCkge1xuICAgICAgICByZXR1cm4gZXJyQXN5bmMoXG4gICAgICAgICAgbmV3IEVycm9yKFxuICAgICAgICAgICAgXCJHaXRIdWIgUEFUIGlzIHJlcXVpcmVkLiBQbGVhc2Ugc2V0IHRoZSBHSF9UT0tFTiBlbnZpcm9ubWVudCB2YXJpYWJsZSBvciBsb2dpbiB1c2luZyBHaXRIdWIgQ0xJLlwiLFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBjb25zdCBvY3Rva2l0ID0gbmV3IE9jdG9raXQoeyBhdXRoIH0pO1xuICAgICAgY29uc3QgZ2l0SHViU2VydmljZSA9IG5ldyBPY3Rva2l0R2l0SHViU2VydmljZShvY3Rva2l0KTtcbiAgICAgIGNvbnN0IGF1dGhvcml6YXRpb25TZXJ2aWNlID0gbWFrZUF6dXJlQXV0aG9yaXphdGlvblNlcnZpY2UoZ2l0SHViU2VydmljZSk7XG4gICAgICByZXR1cm4gb2tBc3luYyh7IGF1dGhvcml6YXRpb25TZXJ2aWNlLCBnaXRIdWJTZXJ2aWNlIH0pO1xuICAgIH0pO1xuXG4gIGNvbnN0IGRlcHMgPSB7XG4gICAgcGFja2FnZUpzb25SZWFkZXIsXG4gICAgcmVwb3NpdG9yeVJlYWRlcixcbiAgICByZXF1aXJlR2l0SHViQXV0aCxcbiAgfTtcblxuICBjb25zdCBjb25maWcgPSBnZXRDb25maWcoKTtcblxuICBjb25zdCB1c2VDYXNlcyA9IHtcbiAgICBhcHBseUNvZGVtb2RCeUlkOiBhcHBseUNvZGVtb2RCeUlkKGNvZGVtb2RSZWdpc3RyeSwgZ2V0SW5mbyhkZXBzKSksXG4gICAgbGlzdENvZGVtb2RzOiBsaXN0Q29kZW1vZHMoY29kZW1vZFJlZ2lzdHJ5KSxcbiAgfTtcblxuICBjb25zdCBwcm9ncmFtID0gbWFrZUNsaShkZXBzLCBjb25maWcsIHVzZUNhc2VzLCB2ZXJzaW9uKTtcblxuICBwcm9ncmFtLnBhcnNlKCk7XG59O1xuIl19
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzdELE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUM1RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRWxDLE9BQU8sZUFBZSxNQUFNLDhCQUE4QixDQUFDO0FBQzNELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDeEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDeEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDckUsT0FBTyxFQUNMLFlBQVksRUFDWixvQkFBb0IsR0FDckIsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUNwRyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFNUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLElBQXVCLEVBQVcsRUFBRSxDQUNqRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7QUFFcEQs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QWUsRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEUsWUFBWSxFQUFFLFlBQVksQ0FBQyxlQUFlLENBQUM7S0FDNUMsQ0FBQztJQUVGLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFOUQsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ2xCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBcImNvcmUtanMvYWN0dWFsL3NldC9pbmRleC5qc1wiO1xuaW1wb3J0IHsgY29uZmlndXJlLCBnZXRDb25zb2xlU2luayB9IGZyb20gXCJAbG9ndGFwZS9sb2d0YXBlXCI7XG5pbXBvcnQgeyBlcnJBc3luYywgb2tBc3luYywgUmVzdWx0QXN5bmMgfSBmcm9tIFwibmV2ZXJ0aHJvd1wiO1xuaW1wb3J0IHsgT2N0b2tpdCB9IGZyb20gXCJvY3Rva2l0XCI7XG5cbmltcG9ydCBjb2RlbW9kUmVnaXN0cnkgZnJvbSBcIi4vYWRhcHRlcnMvY29kZW1vZHMvaW5kZXguanNcIjtcbmltcG9ydCB7IGNsaUVudlNjaGVtYSB9IGZyb20gXCIuL2FkYXB0ZXJzL2NvbW1hbmRlci9lbnYuanNcIjtcbmltcG9ydCB7IG1ha2VDbGkgfSBmcm9tIFwiLi9hZGFwdGVycy9jb21tYW5kZXIvaW5kZXguanNcIjtcbmltcG9ydCB7IG1ha2VQYWNrYWdlSnNvblJlYWRlciB9IGZyb20gXCIuL2FkYXB0ZXJzL25vZGUvcGFja2FnZS1qc29uLmpzXCI7XG5pbXBvcnQgeyBtYWtlUmVwb3NpdG9yeVJlYWRlciB9IGZyb20gXCIuL2FkYXB0ZXJzL25vZGUvcmVwb3NpdG9yeS5qc1wiO1xuaW1wb3J0IHtcbiAgZ2V0R2l0SHViUEFULFxuICBPY3Rva2l0R2l0SHViU2VydmljZSxcbn0gZnJvbSBcIi4vYWRhcHRlcnMvb2N0b2tpdC9pbmRleC5qc1wiO1xuaW1wb3J0IHsgbWFrZUF6dXJlQXV0aG9yaXphdGlvblNlcnZpY2UgfSBmcm9tIFwiLi9hZGFwdGVycy9wYWdvcGEtdGVjaG5vbG9neS9henVyZS1hdXRob3JpemF0aW9uLmpzXCI7XG5pbXBvcnQgeyBnZXRDb25maWcgfSBmcm9tIFwiLi9jb25maWcuanNcIjtcbmltcG9ydCB7IGdldEluZm8gfSBmcm9tIFwiLi9kb21haW4vaW5mby5qc1wiO1xuaW1wb3J0IHsgYXBwbHlDb2RlbW9kQnlJZCB9IGZyb20gXCIuL3VzZS1jYXNlcy9hcHBseS1jb2RlbW9kLmpzXCI7XG5pbXBvcnQgeyBsaXN0Q29kZW1vZHMgfSBmcm9tIFwiLi91c2UtY2FzZXMvbGlzdC1jb2RlbW9kcy5qc1wiO1xuXG4vKipcbiAqIFJldHVybnMgYHRydWVgIHdoZW4gYC12YCBvciBgLS12ZXJib3NlYCBpcyBwcmVzZW50IGluIGFyZ3YuXG4gKlxuICogV2UgaW5zcGVjdCBhcmd2IGRpcmVjdGx5IOKAlCBpbnN0ZWFkIG9mIHJlbHlpbmcgb24gQ29tbWFuZGVyIOKAlCBiZWNhdXNlIHRoZVxuICogbG9ndGFwZSBjb25maWd1cmF0aW9uIG11c3QgYmUgaW4gcGxhY2UgYmVmb3JlIGFueSBjb21tYW5kIGhhbmRsZXIgcnVuc1xuICogKGluY2x1ZGluZyB0aGUgb25lcyB0aGF0IGVtaXQgZGVidWcgbG9ncyB3aGlsZSBwYXJzaW5nIHByb21wdHMpLlxuICovXG5jb25zdCBkZXRlY3RWZXJib3NlRnJvbUFyZ3YgPSAoYXJndjogcmVhZG9ubHkgc3RyaW5nW10pOiBib29sZWFuID0+XG4gIGFyZ3YuaW5jbHVkZXMoXCItdlwiKSB8fCBhcmd2LmluY2x1ZGVzKFwiLS12ZXJib3NlXCIpO1xuXG5jb25zdCBjb25maWd1cmVMb2dnaW5nID0gYXN5bmMgKHZlcmJvc2U6IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgY29uc3QgbGV2ZWwgPSB2ZXJib3NlID8gXCJkZWJ1Z1wiIDogXCJpbmZvXCI7XG4gIGF3YWl0IGNvbmZpZ3VyZSh7XG4gICAgbG9nZ2VyczogW1xuICAgICAgeyBjYXRlZ29yeTogW1wiZHgtY2xpXCJdLCBsb3dlc3RMZXZlbDogbGV2ZWwsIHNpbmtzOiBbXCJjb25zb2xlXCJdIH0sXG4gICAgICAvLyBUaGUgZW52aXJvbm1lbnQgZ2VuZXJhdG9yIChgZ2VuLmVudmApIGVtaXRzIGRlYnVnIG1lc3NhZ2VzIGFib3V0XG4gICAgICAvLyBwcm92aXNpb25lZCBBenVyZSByZXNvdXJjZXM7IHN1cmZhY2luZyB0aGVtIGlzIHRoZSBtYWluIHZhbHVlIG9mXG4gICAgICAvLyBgLS12ZXJib3NlYCB3aGVuIHJ1bm5pbmcgYGR4IGluaXRgIC8gYGR4IGFkZCBlbnZpcm9ubWVudGAuXG4gICAgICB7IGNhdGVnb3J5OiBbXCJnZW5cIl0sIGxvd2VzdExldmVsOiBsZXZlbCwgc2lua3M6IFtcImNvbnNvbGVcIl0gfSxcbiAgICAgIC8vIGBzYXZlbW9uZXlgIGFscmVhZHkgZW1pdHMgc3RydWN0dXJlZCBkZWJ1ZyBvdXRwdXQgYnkgZGVmYXVsdC5cbiAgICAgIHsgY2F0ZWdvcnk6IFtcInNhdmVtb25leVwiXSwgbG93ZXN0TGV2ZWw6IFwiZGVidWdcIiwgc2lua3M6IFtcImNvbnNvbGVcIl0gfSxcbiAgICAgIHsgY2F0ZWdvcnk6IFtcImpzb25cIl0sIGxvd2VzdExldmVsOiBcImluZm9cIiwgc2lua3M6IFtcInJhd0pzb25cIl0gfSxcbiAgICAgIHtcbiAgICAgICAgY2F0ZWdvcnk6IFtcImxvZ3RhcGVcIiwgXCJtZXRhXCJdLFxuICAgICAgICBsb3dlc3RMZXZlbDogXCJ3YXJuaW5nXCIsXG4gICAgICAgIHNpbmtzOiBbXCJjb25zb2xlXCJdLFxuICAgICAgfSxcbiAgICBdLFxuICAgIHNpbmtzOiB7XG4gICAgICBjb25zb2xlOiBnZXRDb25zb2xlU2luaygpLFxuICAgICAgcmF3SnNvbihyZWNvcmQpIHtcbiAgICAgICAgY29uc29sZS5sb2cocmVjb3JkLnJhd01lc3NhZ2UpO1xuICAgICAgfSxcbiAgICB9LFxuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBydW5DbGkgPSBhc3luYyAodmVyc2lvbjogc3RyaW5nKSA9PiB7XG4gIGF3YWl0IGNvbmZpZ3VyZUxvZ2dpbmcoZGV0ZWN0VmVyYm9zZUZyb21Bcmd2KHByb2Nlc3MuYXJndikpO1xuXG4gIGNvbnN0IHJlcG9zaXRvcnlSZWFkZXIgPSBtYWtlUmVwb3NpdG9yeVJlYWRlcigpO1xuICBjb25zdCBwYWNrYWdlSnNvblJlYWRlciA9IG1ha2VQYWNrYWdlSnNvblJlYWRlcigpO1xuXG4gIC8qKlxuICAgKiBMYXppbHkgY3JlYXRlcyBHaXRIdWItYXV0aGVudGljYXRlZCBzZXJ2aWNlcyBvbiBmaXJzdCBjYWxsLlxuICAgKiBPbmx5IGNvbW1hbmRzIHRoYXQgYWN0dWFsbHkgbmVlZCBHaXRIdWIgKGluaXQsIGFkZCkgd2lsbCB0cmlnZ2VyIHRoaXMsXG4gICAqIHNvIGNyZWRlbnRpYWwtZnJlZSBjb21tYW5kcyAoc3BlYywgZG9jdG9yLCBpbmZvLCDigKYpIG5ldmVyIHJlcXVpcmUgYSBQQVQuXG4gICAqL1xuICBjb25zdCByZXF1aXJlR2l0SHViQXV0aCA9ICgpID0+XG4gICAgUmVzdWx0QXN5bmMuZnJvbVByb21pc2UoXG4gICAgICBnZXRHaXRIdWJQQVQoKSxcbiAgICAgIChjYXVzZSkgPT4gbmV3IEVycm9yKFwiRmFpbGVkIHRvIHJlYWQgR2l0SHViIFBBVFwiLCB7IGNhdXNlIH0pLFxuICAgICkuYW5kVGhlbigoYXV0aCkgPT4ge1xuICAgICAgaWYgKCFhdXRoKSB7XG4gICAgICAgIHJldHVybiBlcnJBc3luYyhcbiAgICAgICAgICBuZXcgRXJyb3IoXG4gICAgICAgICAgICBcIkdpdEh1YiBQQVQgaXMgcmVxdWlyZWQuIFBsZWFzZSBzZXQgdGhlIEdIX1RPS0VOIGVudmlyb25tZW50IHZhcmlhYmxlIG9yIGxvZ2luIHVzaW5nIEdpdEh1YiBDTEkuXCIsXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG9jdG9raXQgPSBuZXcgT2N0b2tpdCh7IGF1dGggfSk7XG4gICAgICBjb25zdCBnaXRIdWJTZXJ2aWNlID0gbmV3IE9jdG9raXRHaXRIdWJTZXJ2aWNlKG9jdG9raXQpO1xuICAgICAgY29uc3QgYXV0aG9yaXphdGlvblNlcnZpY2UgPSBtYWtlQXp1cmVBdXRob3JpemF0aW9uU2VydmljZShnaXRIdWJTZXJ2aWNlKTtcbiAgICAgIHJldHVybiBva0FzeW5jKHsgYXV0aG9yaXphdGlvblNlcnZpY2UsIGdpdEh1YlNlcnZpY2UgfSk7XG4gICAgfSk7XG5cbiAgY29uc3QgZGVwcyA9IHtcbiAgICBwYWNrYWdlSnNvblJlYWRlcixcbiAgICByZXBvc2l0b3J5UmVhZGVyLFxuICAgIHJlcXVpcmVHaXRIdWJBdXRoLFxuICB9O1xuXG4gIGNvbnN0IGNvbmZpZyA9IGdldENvbmZpZygpO1xuICBjb25zdCBlbnYgPSBjbGlFbnZTY2hlbWEucGFyc2UocHJvY2Vzcy5lbnYpO1xuXG4gIGNvbnN0IHVzZUNhc2VzID0ge1xuICAgIGFwcGx5Q29kZW1vZEJ5SWQ6IGFwcGx5Q29kZW1vZEJ5SWQoY29kZW1vZFJlZ2lzdHJ5LCBnZXRJbmZvKGRlcHMpKSxcbiAgICBsaXN0Q29kZW1vZHM6IGxpc3RDb2RlbW9kcyhjb2RlbW9kUmVnaXN0cnkpLFxuICB9O1xuXG4gIGNvbnN0IHByb2dyYW0gPSBtYWtlQ2xpKGRlcHMsIGNvbmZpZywgdXNlQ2FzZXMsIGVudiwgdmVyc2lvbik7XG5cbiAgcHJvZ3JhbS5wYXJzZSgpO1xufTtcbiJdfQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pagopa/dx-cli",
3
- "version": "0.23.3",
3
+ "version": "0.23.5",
4
4
  "type": "module",
5
5
  "description": "A CLI useful to manage DX tools.",
6
6
  "repository": {