@pagopa/dx-cli 0.23.2 → 0.23.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +38 -12
- package/dist/adapters/azure/cloud-account-repository.js +1 -0
- package/dist/adapters/azure/cloud-account-service.js +1 -0
- package/dist/adapters/azure/locations.js +1 -0
- package/dist/adapters/codemods/git.js +1 -0
- package/dist/adapters/codemods/index.js +1 -0
- package/dist/adapters/codemods/registry.js +1 -0
- package/dist/adapters/codemods/update-code-review.js +1 -0
- package/dist/adapters/codemods/use-azure-appsvc.js +1 -0
- package/dist/adapters/codemods/use-pnpm.js +1 -0
- package/dist/adapters/codemods/yaml.js +1 -0
- package/dist/adapters/commander/command-errors.d.ts +31 -0
- package/dist/adapters/commander/command-errors.js +42 -0
- package/dist/adapters/commander/commands/add.d.ts +2 -1
- package/dist/adapters/commander/commands/add.js +31 -11
- package/dist/adapters/commander/commands/codemod.d.ts +4 -3
- package/dist/adapters/commander/commands/codemod.js +20 -11
- package/dist/adapters/commander/commands/doctor.d.ts +3 -2
- package/dist/adapters/commander/commands/doctor.js +28 -7
- package/dist/adapters/commander/commands/info.d.ts +3 -2
- package/dist/adapters/commander/commands/info.js +8 -4
- package/dist/adapters/commander/commands/init.d.ts +37 -4
- package/dist/adapters/commander/commands/init.js +141 -59
- package/dist/adapters/commander/commands/savemoney.js +2 -1
- package/dist/adapters/commander/commands/spec.js +1 -0
- package/dist/adapters/commander/env.js +1 -0
- package/dist/adapters/commander/error-reporting.js +1 -0
- package/dist/adapters/commander/global-options.d.ts +12 -0
- package/dist/adapters/commander/global-options.js +2 -0
- package/dist/adapters/commander/index.d.ts +2 -19
- package/dist/adapters/commander/index.js +7 -26
- package/dist/adapters/commander/presenters/index.d.ts +17 -8
- package/dist/adapters/commander/presenters/index.js +15 -0
- package/dist/adapters/commander/presenters/json-command-presenter.js +1 -0
- package/dist/adapters/commander/presenters/text-command-presenter.js +7 -1
- package/dist/adapters/commander/spec.js +1 -0
- package/dist/adapters/execa/terraform.js +1 -0
- package/dist/adapters/github/github-repo.js +1 -0
- package/dist/adapters/node/fs/file-reader.js +1 -0
- package/dist/adapters/node/json/index.js +1 -0
- package/dist/adapters/node/package-json.js +1 -0
- package/dist/adapters/node/release.js +1 -0
- package/dist/adapters/node/repository.js +1 -0
- package/dist/adapters/octokit/index.js +1 -0
- package/dist/adapters/pagopa-technology/azure-authorization-config.js +1 -0
- package/dist/adapters/pagopa-technology/azure-authorization.js +1 -0
- package/dist/adapters/plop/actions/fetch-github-release.js +1 -0
- package/dist/adapters/plop/actions/get-node-version.js +1 -0
- package/dist/adapters/plop/actions/get-terraform-backend.js +1 -0
- package/dist/adapters/plop/actions/init-cloud-accounts.js +1 -0
- package/dist/adapters/plop/actions/provision-terraform-backend.js +1 -0
- package/dist/adapters/plop/actions/semver.js +1 -0
- package/dist/adapters/plop/actions/setup-pnpm.js +7 -4
- package/dist/adapters/plop/generators/environment/actions.js +1 -0
- package/dist/adapters/plop/generators/environment/index.js +1 -0
- package/dist/adapters/plop/generators/environment/prompts.js +1 -0
- package/dist/adapters/plop/generators/monorepo/actions.js +1 -0
- package/dist/adapters/plop/generators/monorepo/index.d.ts +1 -1
- package/dist/adapters/plop/generators/monorepo/index.js +3 -2
- package/dist/adapters/plop/generators/monorepo/prompts.d.ts +7 -1
- package/dist/adapters/plop/generators/monorepo/prompts.js +7 -4
- package/dist/adapters/plop/helpers/env-short.js +1 -0
- package/dist/adapters/plop/helpers/eq.js +1 -0
- package/dist/adapters/plop/helpers/resource-prefix.js +1 -0
- package/dist/adapters/plop/helpers/terraform-state-key.js +1 -0
- package/dist/adapters/plop/helpers/validate-prompt.js +1 -0
- package/dist/adapters/plop/index.d.ts +21 -4
- package/dist/adapters/plop/index.js +34 -13
- package/dist/adapters/plop/templates-path.js +1 -0
- package/dist/adapters/terraform/fmt.js +1 -0
- package/dist/adapters/yaml/index.js +1 -0
- package/dist/adapters/zod/index.js +1 -0
- package/dist/config.js +1 -0
- package/dist/domain/authorization.js +1 -0
- package/dist/domain/cloud-account.js +1 -0
- package/dist/domain/codemod.js +1 -0
- package/dist/domain/command-presenter.js +1 -0
- package/dist/domain/dependencies.d.ts +0 -2
- package/dist/domain/dependencies.js +1 -0
- package/dist/domain/doctor.d.ts +1 -3
- package/dist/domain/doctor.js +9 -3
- package/dist/domain/environment.js +1 -0
- package/dist/domain/github-repo.js +1 -0
- package/dist/domain/github.js +1 -0
- package/dist/domain/info.d.ts +0 -1
- package/dist/domain/info.js +1 -5
- package/dist/domain/package-json.js +1 -0
- package/dist/domain/remote-backend.js +1 -0
- package/dist/domain/repository.js +1 -0
- package/dist/domain/spec.js +1 -0
- package/dist/domain/validation.d.ts +0 -3
- package/dist/domain/validation.js +1 -0
- package/dist/domain/workspace.js +1 -0
- package/dist/index.js +4 -4
- package/dist/use-cases/apply-codemod.js +1 -0
- package/dist/use-cases/list-codemods.js +1 -0
- package/dist/use-cases/request-authorization.js +1 -0
- package/package.json +1 -1
- package/dist/adapters/logtape/validation-reporter.d.ts +0 -2
- package/dist/adapters/logtape/validation-reporter.js +0 -14
package/README.md
CHANGED
|
@@ -21,6 +21,7 @@ The DX CLI is a command-line tool designed to help developers manage and validat
|
|
|
21
21
|
- **Repository Validation**: Verify repository setup against DevEx guidelines with the `doctor` command
|
|
22
22
|
- **Code Migrations**: Apply automated migration scripts (codemods) to update code and configurations
|
|
23
23
|
- **Project Initialization**: Bootstrap new monorepo projects with standardized structure
|
|
24
|
+
- **Command Specification**: Export a machine-readable schema of the CLI command surface
|
|
24
25
|
- **Cost Optimization**: Analyze Azure subscriptions to identify unused or underutilized resources
|
|
25
26
|
- **Project Information**: Display comprehensive information about your project setup and tools
|
|
26
27
|
- **Developer Experience Optimization**: Ensure consistent development practices across projects
|
|
@@ -112,30 +113,31 @@ This command helps you:
|
|
|
112
113
|
|
|
113
114
|
#### `init`
|
|
114
115
|
|
|
115
|
-
Bootstrap a new monorepo project with standardized structure and remote repository provisioning.
|
|
116
|
+
Bootstrap a new monorepo project with standardized structure and optional remote repository provisioning.
|
|
116
117
|
|
|
117
118
|
```bash
|
|
118
|
-
dx init
|
|
119
|
+
dx init
|
|
119
120
|
```
|
|
120
121
|
|
|
121
122
|
This command will:
|
|
122
123
|
|
|
123
|
-
- Check that required tools (
|
|
124
|
-
- Interactively prompt for
|
|
124
|
+
- Check that required tools (Terraform CLI and Corepack) are installed
|
|
125
|
+
- Interactively prompt for repository name, GitHub organization, and description
|
|
125
126
|
- **Check that the target GitHub repository does not already exist before proceeding**
|
|
126
127
|
- Generate a monorepo structure following PagoPA DevEx guidelines
|
|
127
|
-
-
|
|
128
|
-
-
|
|
128
|
+
- Ask whether the scaffolded workspace should be published to GitHub immediately
|
|
129
|
+
- If confirmed, create the remote GitHub repository using Terraform and push the initial codebase
|
|
129
130
|
|
|
130
131
|
If the specified GitHub repository already exists, the command will fail early with a clear error message, preventing accidental overwrites.
|
|
131
132
|
|
|
132
133
|
**Example usage:**
|
|
133
134
|
|
|
134
135
|
```bash
|
|
135
|
-
$ dx init
|
|
136
|
-
?
|
|
137
|
-
?
|
|
138
|
-
?
|
|
136
|
+
$ dx init
|
|
137
|
+
? Name my-monorepo
|
|
138
|
+
? GitHub Organization pagopa
|
|
139
|
+
? Description My new PagoPA monorepo
|
|
140
|
+
? The project is created on my-monorepo. Would you like to publish it to GitHub at pagopa/my-monorepo now? Yes
|
|
139
141
|
...
|
|
140
142
|
|
|
141
143
|
✔ Terraform CLI is installed!
|
|
@@ -145,13 +147,37 @@ $ dx init project
|
|
|
145
147
|
|
|
146
148
|
Workspace created successfully!
|
|
147
149
|
- Name: my-monorepo
|
|
148
|
-
- Cloud Service Provider: azure
|
|
149
|
-
- CSP location: italynorth
|
|
150
150
|
- GitHub Repository: https://github.com/pagopa/my-monorepo
|
|
151
151
|
```
|
|
152
152
|
|
|
153
153
|
> [!NOTE]
|
|
154
154
|
> The command will fail early if required tools are missing.
|
|
155
|
+
> If you choose not to publish immediately, the CLI prints the manual Terraform and git steps required to finish the setup later.
|
|
156
|
+
|
|
157
|
+
#### `spec`
|
|
158
|
+
|
|
159
|
+
Print the full CLI specification as JSON.
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
dx spec
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
This command is useful when you want to:
|
|
166
|
+
|
|
167
|
+
- Discover commands, arguments, and options programmatically
|
|
168
|
+
- Build automation or agentic workflows without scraping `--help` output
|
|
169
|
+
- Inspect the current CLI surface in a stable JSON format
|
|
170
|
+
|
|
171
|
+
**Example output:**
|
|
172
|
+
|
|
173
|
+
```json
|
|
174
|
+
{
|
|
175
|
+
"name": "dx",
|
|
176
|
+
"specVersion": "1",
|
|
177
|
+
"version": "0.23.2",
|
|
178
|
+
"commands": []
|
|
179
|
+
}
|
|
180
|
+
```
|
|
155
181
|
|
|
156
182
|
#### `info`
|
|
157
183
|
|
|
@@ -21,3 +21,4 @@ export class AzureSubscriptionRepository {
|
|
|
21
21
|
return z.array(cloudAccountSchema).parse(subscriptions);
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvdWQtYWNjb3VudC1yZXBvc2l0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FkYXB0ZXJzL2F6dXJlL2Nsb3VkLWFjY291bnQtcmVwb3NpdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRTNCLE9BQU8sRUFFTCxrQkFBa0IsR0FDbkIsTUFBTSwrQkFBK0IsQ0FBQztBQUN2QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFakQsTUFBTSxPQUFPLDJCQUEyQjtJQUN0QyxtQkFBbUIsQ0FBcUI7SUFFeEMsWUFBWSxVQUEyQjtRQUNyQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUk7UUFDUixNQUFNLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDekIsSUFBSSxLQUFLLEVBQUUsTUFBTSxZQUFZLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQy9FLElBQUksWUFBWSxDQUFDLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDckMsYUFBYSxDQUFDLElBQUksQ0FBQztvQkFDakIsZUFBZTtvQkFDZixXQUFXLEVBQUUsWUFBWSxDQUFDLFdBQVc7b0JBQ3JDLEVBQUUsRUFBRSxZQUFZLENBQUMsY0FBYztpQkFDaEMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDMUQsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBUb2tlbkNyZWRlbnRpYWwgfSBmcm9tIFwiQGF6dXJlL2lkZW50aXR5XCI7XG5cbmltcG9ydCB7IFN1YnNjcmlwdGlvbkNsaWVudCB9IGZyb20gXCJAYXp1cmUvYXJtLXJlc291cmNlcy1zdWJzY3JpcHRpb25zXCI7XG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZC92NFwiO1xuXG5pbXBvcnQge1xuICB0eXBlIENsb3VkQWNjb3VudFJlcG9zaXRvcnksXG4gIGNsb3VkQWNjb3VudFNjaGVtYSxcbn0gZnJvbSBcIi4uLy4uL2RvbWFpbi9jbG91ZC1hY2NvdW50LmpzXCI7XG5pbXBvcnQgeyBkZWZhdWx0TG9jYXRpb24gfSBmcm9tIFwiLi9sb2NhdGlvbnMuanNcIjtcblxuZXhwb3J0IGNsYXNzIEF6dXJlU3Vic2NyaXB0aW9uUmVwb3NpdG9yeSBpbXBsZW1lbnRzIENsb3VkQWNjb3VudFJlcG9zaXRvcnkge1xuICAjc3Vic2NyaXB0aW9uQ2xpZW50OiBTdWJzY3JpcHRpb25DbGllbnQ7XG5cbiAgY29uc3RydWN0b3IoY3JlZGVudGlhbDogVG9rZW5DcmVkZW50aWFsKSB7XG4gICAgdGhpcy4jc3Vic2NyaXB0aW9uQ2xpZW50ID0gbmV3IFN1YnNjcmlwdGlvbkNsaWVudChjcmVkZW50aWFsKTtcbiAgfVxuXG4gIGFzeW5jIGxpc3QoKSB7XG4gICAgY29uc3Qgc3Vic2NyaXB0aW9ucyA9IFtdO1xuICAgIGZvciBhd2FpdCAoY29uc3Qgc3Vic2NyaXB0aW9uIG9mIHRoaXMuI3N1YnNjcmlwdGlvbkNsaWVudC5zdWJzY3JpcHRpb25zLmxpc3QoKSkge1xuICAgICAgaWYgKHN1YnNjcmlwdGlvbi5zdGF0ZSA9PT0gXCJFbmFibGVkXCIpIHtcbiAgICAgICAgc3Vic2NyaXB0aW9ucy5wdXNoKHtcbiAgICAgICAgICBkZWZhdWx0TG9jYXRpb24sXG4gICAgICAgICAgZGlzcGxheU5hbWU6IHN1YnNjcmlwdGlvbi5kaXNwbGF5TmFtZSxcbiAgICAgICAgICBpZDogc3Vic2NyaXB0aW9uLnN1YnNjcmlwdGlvbklkLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHouYXJyYXkoY2xvdWRBY2NvdW50U2NoZW1hKS5wYXJzZShzdWJzY3JpcHRpb25zKTtcbiAgfVxufVxuIl19
|
|
@@ -507,3 +507,4 @@ export class AzureCloudAccountService {
|
|
|
507
507
|
logger.debug("Created secrets in key vault {keyVaultName} in subscription {subscriptionId}", { keyVaultName, subscriptionId: cloudAccountId });
|
|
508
508
|
}
|
|
509
509
|
}
|
|
510
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvdWQtYWNjb3VudC1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FkYXB0ZXJzL2F6dXJlL2Nsb3VkLWFjY291bnQtc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMzRCxPQUFPLEtBQUssTUFBTSxNQUFNLG9CQUFvQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDekMsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQU0zQixPQUFPLEVBRUwsZ0JBQWdCLEdBQ2pCLE1BQU0sNkJBQTZCLENBQUM7QUFNckMsT0FBTyxFQUVMLHNCQUFzQixHQUN2QixNQUFNLGdDQUFnQyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxN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LENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRTthQUNoRCxDQUFDO1NBQ0gsQ0FBQyxDQUFDO1FBRUgsTUFBTSxDQUFDLEtBQUssQ0FBQyxzREFBc0QsRUFBRTtZQUNuRSxlQUFlLEVBQUUscUJBQXFCO1lBQ3RDLGNBQWMsRUFBRSxjQUFjO1NBQy9CLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMsc0JBQXNCLENBQUMsRUFDM0IsY0FBYyxFQUNkLFlBQVksRUFDWixvQkFBb0IsR0FLckI7UUFDQyxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUV6QyxNQUFNLFlBQVksR0FBRyxJQUFJLFlBQVksQ0FDbkMsV0FBVyxZQUFZLG1CQUFtQixFQUMxQyxJQUFJLENBQUMsV0FBVyxDQUNqQixDQUFDO1FBRUYsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDO1lBQ2hCLFlBQVksQ0FBQyxTQUFTLENBQUMsc0JBQXNCLEVBQUUsb0JBQW9CLENBQUMsRUFBRSxDQUFDO1lBQ3ZFLFlBQVksQ0FBQyxTQUFTLENBQ3BCLG1DQUFtQyxFQUNuQyxvQkFBb0IsQ0FBQyxjQUFjLENBQ3BDO1lBQ0QsWUFBWSxDQUFDLFNBQVMsQ0FDcEIsdUJBQXVCLEVBQ3ZCLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FDbkM7U0FDRixDQUFDLENBQUM7UUFFSCxNQUFNLENBQUMsS0FBSyxDQUNWLDhFQUE4RSxFQUM5RSxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLENBQ2pELENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFRva2VuQ3JlZGVudGlhbCB9IGZyb20gXCJAYXp1cmUvaWRlbnRpdHlcIjtcblxuaW1wb3J0IHsgQXV0aG9yaXphdGlvbk1hbmFnZW1lbnRDbGllbnQgfSBmcm9tIFwiQGF6dXJlL2FybS1hdXRob3JpemF0aW9uXCI7XG5pbXBvcnQgeyBLZXlWYXVsdE1hbmFnZW1lbnRDbGllbnQgfSBmcm9tIFwiQGF6dXJlL2FybS1rZXl2YXVsdFwiO1xuaW1wb3J0IHsgTWFuYWdlZFNlcnZpY2VJZGVudGl0eUNsaWVudCB9IGZyb20gXCJAYXp1cmUvYXJtLW1zaVwiO1xuaW1wb3J0IHsgUmVzb3VyY2VHcmFwaENsaWVudCB9IGZyb20gXCJAYXp1cmUvYXJtLXJlc291cmNlZ3JhcGhcIjtcbmltcG9ydCB7IFJlc291cmNlTWFuYWdlbWVudENsaWVudCB9IGZyb20gXCJAYXp1cmUvYXJtLXJlc291cmNlc1wiO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uQ2xpZW50IH0gZnJvbSBcIkBhenVyZS9hcm0tcmVzb3VyY2VzLXN1YnNjcmlwdGlvbnNcIjtcbmltcG9ydCB7IFN0b3JhZ2VNYW5hZ2VtZW50Q2xpZW50IH0gZnJvbSBcIkBhenVyZS9hcm0tc3RvcmFnZVwiO1xuaW1wb3J0IHsgU2VjcmV0Q2xpZW50IH0gZnJvbSBcIkBhenVyZS9rZXl2YXVsdC1zZWNyZXRzXCI7XG5pbXBvcnQgeyBCbG9iU2VydmljZUNsaWVudCB9IGZyb20gXCJAYXp1cmUvc3RvcmFnZS1ibG9iXCI7XG5pbXBvcnQgeyBnZXRMb2dnZXIgfSBmcm9tIFwiQGxvZ3RhcGUvbG9ndGFwZVwiO1xuaW1wb3J0IHsgQ2xpZW50IH0gZnJvbSBcIkBtaWNyb3NvZnQvbWljcm9zb2Z0LWdyYXBoLWNsaWVudFwiO1xuaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gXCJub2RlOmFzc2VydC9zdHJpY3RcIjtcbmltcG9ydCB7IGNyZWF0ZUhhc2ggfSBmcm9tIFwibm9kZTpjcnlwdG9cIjtcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kL3Y0XCI7XG5cbmltcG9ydCB7XG4gIENsb3VkQWNjb3VudCxcbiAgdHlwZSBDbG91ZEFjY291bnRTZXJ2aWNlLFxufSBmcm9tIFwiLi4vLi4vZG9tYWluL2Nsb3VkLWFjY291bnQuanNcIjtcbmltcG9ydCB7XG4gIHR5cGUgRW52aXJvbm1lbnRJZCxcbiAgZW52aXJvbm1lbnRTaG9ydCxcbn0gZnJvbSBcIi4uLy4uL2RvbWFpbi9lbnZpcm9ubWVudC5qc1wiO1xuaW1wb3J0IHsgdHlwZSBHaXRIdWJSZXBvIH0gZnJvbSBcIi4uLy4uL2RvbWFpbi9naXRodWItcmVwby5qc1wiO1xuaW1wb3J0IHtcbiAgR2l0SHViQXBwQ3JlZGVudGlhbHMsXG4gIHR5cGUgR2l0SHViU2VydmljZSxcbn0gZnJvbSBcIi4uLy4uL2RvbWFpbi9naXRodWIuanNcIjtcbmltcG9ydCB7XG4gIHR5cGUgVGVycmFmb3JtQmFja2VuZCxcbiAgdGVycmFmb3JtQmFja2VuZFNjaGVtYSxcbn0gZnJvbSBcIi4uLy4uL2RvbWFpbi9yZW1vdGUtYmFja2VuZC5qc1wiO1xuaW1wb3J0IHsgaXNBenVyZUxvY2F0aW9uLCBsb2NhdGlvbnMsIGxvY2F0aW9uU2hvcnQgfSBmcm9tIFwiLi9sb2NhdGlvbnMuanNcIjtcblxuLy8gV2UgYXJlIG9ubHkgaW50ZXJlc3RlZCBpbiB0aGVzZSBwcm9wZXJ0aWVzIGZvciBub3c7XG4vLyB0aGUgYWN0dWFsIHJlc3VsdCBzdHJ1Y3R1cmUgY29udGFpbnMgdGhlIGZ1bGwgY2xvdWQgcmVzb3VyY2Ugb2JqZWN0XG5leHBvcnQgY29uc3QgcmVzb3VyY2VHcmFwaERhdGFTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGxvY2F0aW9uOiB6LmVudW0obG9jYXRpb25zKSxcbiAgbmFtZTogei5zdHJpbmcoKSxcbiAgcmVzb3VyY2VHcm91cDogei5zdHJpbmcoKSxcbn0pO1xuXG5jb25zdCBncmFwaFVzZXJSZXNwb25zZVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgaWQ6IHouc3RyaW5nKCksXG59KTtcblxuY29uc3QgZ3JhcGhHcm91cE1lbWJlcnNoaXBJdGVtU2NoZW1hID0gei5vYmplY3Qoe1xuICBpZDogei5zdHJpbmcoKSxcbn0pO1xuXG5jb25zdCBncmFwaEdyb3VwTWVtYmVyc2hpcFJlc3BvbnNlU2NoZW1hID0gei5vYmplY3Qoe1xuICBcIkBvZGF0YS5uZXh0TGlua1wiOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHZhbHVlOiB6LmFycmF5KGdyYXBoR3JvdXBNZW1iZXJzaGlwSXRlbVNjaGVtYSksXG59KTtcblxuY29uc3QgYnVpbHRJblJvbGVEZWZpbml0aW9uSWRzID0ge1xuICBjb250cmlidXRvcjogXCJiMjQ5ODhhYy02MTgwLTQyYTAtYWI4OC0yMGY3MzgyZGQyNGNcIixcbiAga2V5VmF1bHRTZWNyZXRzT2ZmaWNlcjogXCJiODZhOGZlNC00NGNlLTQ5NDgtYWVlNS1lY2NiMmMxNTVjZDdcIixcbiAgb3duZXI6IFwiOGUzYWY2NTctYThmZi00NDNjLWE3NWMtMmZlOGM0YmNiNjM1XCIsXG4gIHJvbGVCYXNlZEFjY2Vzc0NvbnRyb2xBZG1pbmlzdHJhdG9yOiBcImY1ODMxMGQ5LWE5ZjYtNDM5YS05ZThkLWY2MmU3YjQxYTE2OFwiLFxuICBzdG9yYWdlQmxvYkRhdGFDb250cmlidXRvcjogXCJiYTkyZjViNC0yZDExLTQ1M2QtYTQwMy1lOTZiMDAyOWM5ZmVcIixcbn0gYXMgY29uc3Q7XG5cbmNvbnN0IGJvb3RzdHJhcElkZW50aXR5Um9sZURlZmluaXRpb25JZHMgPSBbXG4gIC8vIFRoZXNlIHJvbGVzIGxldCB0aGUgYm9vdHN0cmFwIGlkZW50aXR5IHJ1biB0aGUgYm9vdHN0cmFwcGVyIG1vZHVsZSBmcm9tIEdpdEh1YiBBY3Rpb25zIHdpdGhvdXQgZXh0cmEgbWFudWFsIGdyYW50cy5cbiAgYnVpbHRJblJvbGVEZWZpbml0aW9uSWRzLnJvbGVCYXNlZEFjY2Vzc0NvbnRyb2xBZG1pbmlzdHJhdG9yLFxuICBidWlsdEluUm9sZURlZmluaXRpb25JZHMuY29udHJpYnV0b3IsXG4gIGJ1aWx0SW5Sb2xlRGVmaW5pdGlvbklkcy5zdG9yYWdlQmxvYkRhdGFDb250cmlidXRvcixcbl0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjbGFzcyBBenVyZUNsb3VkQWNjb3VudFNlcnZpY2UgaW1wbGVtZW50cyBDbG91ZEFjY291bnRTZXJ2aWNlIHtcbiAgI2NyZWRlbnRpYWw6IFRva2VuQ3JlZGVudGlhbDtcbiAgI3JlcXVpcmVkUmVzb3VyY2VQcm92aWRlcnMgPSBbXG4gICAgXCJNaWNyb3NvZnQuQWR2aXNvclwiLFxuICAgIFwiTWljcm9zb2Z0LkFsZXJ0c01hbmFnZW1lbnRcIixcbiAgICBcIk1pY3Jvc29mdC5BcGlNYW5hZ2VtZW50XCIsXG4gICAgXCJNaWNyb3NvZnQuQXBwXCIsXG4gICAgXCJNaWNyb3NvZnQuQXV0aG9yaXphdGlvblwiLFxuICAgIFwiTWljcm9zb2Z0LkF6dXJlVGVycmFmb3JtXCIsXG4gICAgXCJNaWNyb3NvZnQuQ2FjaGVcIixcbiAgICBcIk1pY3Jvc29mdC5DZG5cIixcbiAgICBcIk1pY3Jvc29mdC5Db250YWluZXJJbnN0YW5jZVwiLFxuICAgIFwiTWljcm9zb2Z0LkNvc3RNYW5hZ2VtZW50XCIsXG4gICAgXCJNaWNyb3NvZnQuREJmb3JQb3N0Z3JlU1FMXCIsXG4gICAgXCJNaWNyb3NvZnQuS2V5VmF1bHRcIixcbiAgICBcIk1pY3Jvc29mdC5TZXJ2aWNlQnVzXCIsXG4gICAgXCJNaWNyb3NvZnQuU3FsXCIsXG4gICAgXCJNaWNyb3NvZnQuU3RvcmFnZVwiLFxuICAgIFwiTWljcm9zb2Z0LldlYlwiLFxuICBdIGFzIGNvbnN0O1xuICAjcmVzb3VyY2VHcmFwaENsaWVudDogUmVzb3VyY2VHcmFwaENsaWVudDtcblxuICBjb25zdHJ1Y3RvcihjcmVkZW50aWFsOiBUb2tlbkNyZWRlbnRpYWwpIHtcbiAgICB0aGlzLiNyZXNvdXJjZUdyYXBoQ2xpZW50ID0gbmV3IFJlc291cmNlR3JhcGhDbGllbnQoY3JlZGVudGlhbCk7XG4gICAgdGhpcy4jY3JlZGVudGlhbCA9IGNyZWRlbnRpYWw7XG4gIH1cblxuICBhc3luYyBnZXRUZXJyYWZvcm1CYWNrZW5kKFxuICAgIGNsb3VkQWNjb3VudElkOiBDbG91ZEFjY291bnRbXCJpZFwiXSxcbiAgICB7IG5hbWUsIHByZWZpeCB9OiBFbnZpcm9ubWVudElkLFxuICApOiBQcm9taXNlPFRlcnJhZm9ybUJhY2tlbmQgfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCBhbGxMb2NhdGlvbnMgPSBPYmplY3QudmFsdWVzKGxvY2F0aW9uU2hvcnQpLmpvaW4oXCJ8XCIpO1xuICAgIGNvbnN0IHNob3J0RW52ID0gZW52aXJvbm1lbnRTaG9ydFtuYW1lXTtcbiAgICAvLyBDaGVjayBpZiBhIHN0b3JhZ2UgYWNjb3VudCB3aXRoIHRoZSBleHBlY3RlZCBuYW1lIGV4aXN0c1xuICAgIC8vICRwcmVmaXggKyBlbnZpcm9ubWVudCBzaG9ydCArIGxvY2F0aW9uICsgXCJ0ZnN0YXRlc3RcIiArIHN1ZmZpeCAoZS5nLiwgXCJkeHBpdG50ZnN0YXRlc3QwMVwiKVxuICAgIC8vIGl0IGNhbiByZXR1cm4gbXVsdGlwbGUgcmVzdWx0cyAoZS5nLiBmb3IgZGlmZmVyZW50IGxvY2F0aW9uIG9yIGluc3RhbmNlIG51bWJlcilcbiAgICBjb25zdCByZXNvdXJjZU5hbWUgPSBgJHtwcmVmaXh9JHtzaG9ydEVudn0oJHthbGxMb2NhdGlvbnN9KXRmc3RhdGVzdCgwWzEtOV18WzEtOV1cXFxcZClgO1xuICAgIGNvbnN0IHF1ZXJ5ID0gYHJlc291cmNlc1xuICAgICAgICAgICAgIHwgd2hlcmUgdHlwZSA9PSAnbWljcm9zb2Z0LnN0b3JhZ2Uvc3RvcmFnZWFjY291bnRzJ1xuICAgICAgICAgICAgIHwgd2hlcmUgbmFtZSBtYXRjaGVzIHJlZ2V4IEAnJHtyZXNvdXJjZU5hbWV9J1xuICAgICAgICAgICAgYDtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLiNyZXNvdXJjZUdyYXBoQ2xpZW50LnJlc291cmNlcyh7XG4gICAgICBxdWVyeSxcbiAgICAgIHN1YnNjcmlwdGlvbnM6IFtjbG91ZEFjY291bnRJZF0sXG4gICAgfSk7XG4gICAgaWYgKHJlc3VsdC50b3RhbFJlY29yZHMgPT09IDApIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGNvbnN0IHN0b3JhZ2VBY2NvdW50cyA9IHouYXJyYXkocmVzb3VyY2VHcmFwaERhdGFTY2hlbWEpLnBhcnNlKHJlc3VsdC5kYXRhKTtcbiAgICAvLyBvbiBtdWx0aXBsZSByZXN1bHRzLCByYW5rIHN0b3JhZ2UgYWNjb3VudHMgYnkgbG9jYXRpb24gcHJpb3JpdHkgYW5kIGluc3RhbmNlIG51bWJlclxuICAgIGlmIChzdG9yYWdlQWNjb3VudHMubGVuZ3RoID4gMCkge1xuICAgICAgc3RvcmFnZUFjY291bnRzLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgLy8gY29tcGFyZSBsb2NhdGlvbnMgcHJpb3JpdHlcbiAgICAgICAgY29uc3QgbG9jYXRpb25Db21wYXJpc29uID1cbiAgICAgICAgICBsb2NhdGlvbnMuaW5kZXhPZihhLmxvY2F0aW9uKSAtIGxvY2F0aW9ucy5pbmRleE9mKGIubG9jYXRpb24pO1xuICAgICAgICBpZiAobG9jYXRpb25Db21wYXJpc29uID09PSAwKSB7XG4gICAgICAgICAgLy8gc2FtZSBsb2NhdGlvbiwgY29tcGFyZSBieSBuYW1lICh0byBnZXQgdGhlIGhpZ2hlc3QgaW5zdGFuY2UgbnVtYmVyKVxuICAgICAgICAgIHJldHVybiBiLm5hbWUubG9jYWxlQ29tcGFyZShhLm5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBsb2NhdGlvbkNvbXBhcmlzb247XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHRlcnJhZm9ybUJhY2tlbmRTY2hlbWEucGFyc2Uoe1xuICAgICAgcmVzb3VyY2VHcm91cE5hbWU6IHN0b3JhZ2VBY2NvdW50c1swXS5yZXNvdXJjZUdyb3VwLFxuICAgICAgc3RvcmFnZUFjY291bnROYW1lOiBzdG9yYWdlQWNjb3VudHNbMF0ubmFtZSxcbiAgICAgIHN1YnNjcmlwdGlvbklkOiBjbG91ZEFjY291bnRJZCxcbiAgICAgIHR5cGU6IFwiYXp1cmVybVwiLFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgaGFzVXNlclBlcm1pc3Npb25Ub0luaXRpYWxpemUoXG4gICAgY2xvdWRBY2NvdW50SWQ6IENsb3VkQWNjb3VudFtcImlkXCJdLFxuICApOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICB0cnkge1xuICAgICAgLy8gQWxsIHByaW5jaXBhbCBJRHMgdG8gY2hlY2sgKHVzZXIgKyBhbGwgZ3JvdXBzKVxuICAgICAgY29uc3QgYWxsUHJpbmNpcGFsSWRzID0gYXdhaXQgdGhpcy4jZ2V0Q3VycmVudFByaW5jaXBhbElkcygpO1xuXG4gICAgICAvLyBHZXQgcm9sZSBhc3NpZ25tZW50cyBmb3IgdGhlIHN1YnNjcmlwdGlvblxuICAgICAgY29uc3QgYXV0aENsaWVudCA9IG5ldyBBdXRob3JpemF0aW9uTWFuYWdlbWVudENsaWVudChcbiAgICAgICAgdGhpcy4jY3JlZGVudGlhbCxcbiAgICAgICAgY2xvdWRBY2NvdW50SWQsXG4gICAgICApO1xuXG4gICAgICBjb25zdCByZXF1aXJlZFJvbGVzID0gW1xuICAgICAgICBidWlsdEluUm9sZURlZmluaXRpb25JZHMub3duZXIsIC8vIE93bmVyXG4gICAgICAgIGJ1aWx0SW5Sb2xlRGVmaW5pdGlvbklkcy5zdG9yYWdlQmxvYkRhdGFDb250cmlidXRvciwgLy8gU3RvcmFnZSBCbG9iIERhdGEgQ29udHJpYnV0b3JcbiAgICAgICAgYnVpbHRJblJvbGVEZWZpbml0aW9uSWRzLmtleVZhdWx0U2VjcmV0c09mZmljZXIsIC8vIEtleSBWYXVsdCBTZWNyZXRzIE9mZmljZXJcbiAgICAgIF07XG5cbiAgICAgIGNvbnN0IHNjb3BlID0gYC9zdWJzY3JpcHRpb25zLyR7Y2xvdWRBY2NvdW50SWR9YDtcblxuICAgICAgLy8gQ29sbGVjdCBhbGwgcm9sZSBkZWZpbml0aW9uIElEcyBhc3NpZ25lZCB0byB0aGUgdXNlciBvciB0aGVpciBncm91cHNcbiAgICAgIGNvbnN0IGFzc2lnbmVkUm9sZURlZmluaXRpb25JZHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAgICAgZm9yIGF3YWl0IChjb25zdCBhc3NpZ25tZW50IG9mIGF1dGhDbGllbnQucm9sZUFzc2lnbm1lbnRzLmxpc3RGb3JTY29wZShcbiAgICAgICAgc2NvcGUsXG4gICAgICApKSB7XG4gICAgICAgIC8vIENoZWNrIGlmIHRoaXMgYXNzaWdubWVudCBpcyBmb3IgdGhlIHVzZXIgb3IgYW55IG9mIHRoZWlyIGdyb3Vwc1xuICAgICAgICBpZiAoXG4gICAgICAgICAgYXNzaWdubWVudC5wcmluY2lwYWxJZCAmJlxuICAgICAgICAgIGFsbFByaW5jaXBhbElkcy5oYXMoYXNzaWdubWVudC5wcmluY2lwYWxJZClcbiAgICAgICAgKSB7XG4gICAgICAgICAgLy8gRXh0cmFjdCByb2xlIGRlZmluaXRpb24gSUQgZnJvbSB0aGUgZnVsbCByZXNvdXJjZSBJRFxuICAgICAgICAgIC8vIEZvcm1hdDogL3N1YnNjcmlwdGlvbnMve3N1Yn0vcHJvdmlkZXJzL01pY3Jvc29mdC5BdXRob3JpemF0aW9uL3JvbGVEZWZpbml0aW9ucy97cm9sZUlkfVxuICAgICAgICAgIGNvbnN0IHJvbGVEZWZJZCA9IGFzc2lnbm1lbnQucm9sZURlZmluaXRpb25JZD8uc3BsaXQoXCIvXCIpLnBvcCgpO1xuICAgICAgICAgIGlmIChyb2xlRGVmSWQpIHtcbiAgICAgICAgICAgIGFzc2lnbmVkUm9sZURlZmluaXRpb25JZHMuYWRkKHJvbGVEZWZJZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2hvcnQtY2lyY3VpdDogc3RvcCBpZiBhbGwgcmVxdWlyZWQgcm9sZXMgaGF2ZSBiZWVuIGZvdW5kXG4gICAgICAgIGlmIChcbiAgICAgICAgICByZXF1aXJlZFJvbGVzLmV2ZXJ5KChyZXF1aXJlZFJvbGUpID0+XG4gICAgICAgICAgICBhc3NpZ25lZFJvbGVEZWZpbml0aW9uSWRzLmhhcyhyZXF1aXJlZFJvbGUpLFxuICAgICAgICAgIClcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgaWYgYWxsIHJlcXVpcmVkIHJvbGVzIGFyZSBwcmVzZW50XG4gICAgICBjb25zdCBoYXNBbGxSb2xlcyA9IHJlcXVpcmVkUm9sZXMuZXZlcnkoKHJlcXVpcmVkUm9sZSkgPT5cbiAgICAgICAgYXNzaWduZWRSb2xlRGVmaW5pdGlvbklkcy5oYXMocmVxdWlyZWRSb2xlKSxcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiBoYXNBbGxSb2xlcztcbiAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgLy8gSGFuZGxlIGF1dGhvcml6YXRpb24gZXJyb3JzICg0MDMgRm9yYmlkZGVuKSAtIHVzZXIgbGFja3MgcGVybWlzc2lvbnNcbiAgICAgIGlmIChcbiAgICAgICAgZXJyb3IgJiZcbiAgICAgICAgdHlwZW9mIGVycm9yID09PSBcIm9iamVjdFwiICYmXG4gICAgICAgIFwic3RhdHVzQ29kZVwiIGluIGVycm9yICYmXG4gICAgICAgIGVycm9yLnN0YXR1c0NvZGUgPT09IDQwM1xuICAgICAgKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIC8vIFJlLXRocm93IG90aGVyIGVycm9yc1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgaW5pdGlhbGl6ZShcbiAgICBjbG91ZEFjY291bnQ6IENsb3VkQWNjb3VudCxcbiAgICB7IG5hbWUsIHByZWZpeCB9OiBFbnZpcm9ubWVudElkLFxuICAgIHJ1bm5lckFwcENyZWRlbnRpYWxzOiBHaXRIdWJBcHBDcmVkZW50aWFscyxcbiAgICBnaXRodWI6IEdpdEh1YlJlcG8sXG4gICAgZ2l0SHViU2VydmljZTogR2l0SHViU2VydmljZSxcbiAgICB0YWdzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge30sXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGFzc2VydC5lcXVhbChjbG91ZEFjY291bnQuY3NwLCBcImF6dXJlXCIsIFwiQ2xvdWQgYWNjb3VudCBtdXN0IGJlIEF6dXJlXCIpO1xuICAgIGFzc2VydC5vayhcbiAgICAgIGlzQXp1cmVMb2NhdGlvbihjbG91ZEFjY291bnQuZGVmYXVsdExvY2F0aW9uKSxcbiAgICAgIFwiVGhlIGRlZmF1bHQgbG9jYXRpb24gb2YgdGhlIGNsb3VkIGFjY291bnQgaXMgbm90IGEgdmFsaWQgQXp1cmUgbG9jYXRpb25cIixcbiAgICApO1xuXG4gICAgY29uc3QgbG9nZ2VyID0gZ2V0TG9nZ2VyKFtcImdlblwiLCBcImVudlwiXSk7XG5cbiAgICAvLyBSZWdpc3RlciByZXF1aXJlZCByZXNvdXJjZSBwcm92aWRlcnMgYmVmb3JlIGNyZWF0aW5nIGFueSByZXNvdXJjZXNcbiAgICBhd2FpdCB0aGlzLiNyZWdpc3RlclByb3ZpZGVycyhjbG91ZEFjY291bnQuaWQpO1xuXG4gICAgY29uc3QgcmVzb3VyY2VNYW5hZ2VtZW50Q2xpZW50ID0gbmV3IFJlc291cmNlTWFuYWdlbWVudENsaWVudChcbiAgICAgIHRoaXMuI2NyZWRlbnRpYWwsXG4gICAgICBjbG91ZEFjY291bnQuaWQsXG4gICAgKTtcblxuICAgIGNvbnN0IHNob3J0ID0ge1xuICAgICAgZW52OiBlbnZpcm9ubWVudFNob3J0W25hbWVdLFxuICAgICAgbG9jYXRpb246IGxvY2F0aW9uU2hvcnRbY2xvdWRBY2NvdW50LmRlZmF1bHRMb2NhdGlvbl0sXG4gICAgfTtcblxuICAgIGNvbnN0IHJlc291cmNlR3JvdXBOYW1lID0gYCR7cHJlZml4fS0ke3Nob3J0LmVudn0tJHtzaG9ydC5sb2NhdGlvbn0tY29tbW9uLXJnLTAxYDtcblxuICAgIGNvbnN0IHBhcmFtZXRlcnMgPSB7XG4gICAgICBsb2NhdGlvbjogY2xvdWRBY2NvdW50LmRlZmF1bHRMb2NhdGlvbixcbiAgICAgIHRhZ3M6IHtcbiAgICAgICAgQ3JlYXRlZEJ5OiBcIkRYIENMSVwiLFxuICAgICAgICBFbnZpcm9ubWVudDogbmFtZSxcbiAgICAgICAgLi4udGFncyxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGF3YWl0IHJlc291cmNlTWFuYWdlbWVudENsaWVudC5yZXNvdXJjZUdyb3Vwcy5jcmVhdGVPclVwZGF0ZShcbiAgICAgIHJlc291cmNlR3JvdXBOYW1lLFxuICAgICAgcGFyYW1ldGVycyxcbiAgICApO1xuXG4gICAgbG9nZ2VyLmRlYnVnKFxuICAgICAgXCJDcmVhdGVkIHJlc291cmNlIGdyb3VwIHtyZXNvdXJjZUdyb3VwTmFtZX0gaW4gc3Vic2NyaXB0aW9uIHtzdWJzY3JpcHRpb25JZH1cIixcbiAgICAgIHsgcmVzb3VyY2VHcm91cE5hbWUsIHN1YnNjcmlwdGlvbklkOiBjbG91ZEFjY291bnQuaWQgfSxcbiAgICApO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGlkZW50aXR5TmFtZSA9IGAke3ByZWZpeH0tJHtzaG9ydC5lbnZ9LSR7c2hvcnQubG9jYXRpb259LWJvb3RzdHJhcC1pZC0wMWA7XG5cbiAgICAgIGNvbnN0IG1zaUNsaWVudCA9IG5ldyBNYW5hZ2VkU2VydmljZUlkZW50aXR5Q2xpZW50KFxuICAgICAgICB0aGlzLiNjcmVkZW50aWFsLFxuICAgICAgICBjbG91ZEFjY291bnQuaWQsXG4gICAgICApO1xuXG4gICAgICBjb25zdCBpZGVudGl0eSA9IGF3YWl0IG1zaUNsaWVudC51c2VyQXNzaWduZWRJZGVudGl0aWVzLmNyZWF0ZU9yVXBkYXRlKFxuICAgICAgICByZXNvdXJjZUdyb3VwTmFtZSxcbiAgICAgICAgaWRlbnRpdHlOYW1lLFxuICAgICAgICBwYXJhbWV0ZXJzLFxuICAgICAgKTtcblxuICAgICAgYXNzZXJ0Lm9rKFxuICAgICAgICBpZGVudGl0eS5wcmluY2lwYWxJZCxcbiAgICAgICAgXCJNYW5hZ2VkIGlkZW50aXR5IHByaW5jaXBhbCBJRCBpcyB1bmRlZmluZWRcIixcbiAgICAgICk7XG4gICAgICBjb25zdCBpZGVudGl0eVByaW5jaXBhbElkID0gaWRlbnRpdHkucHJpbmNpcGFsSWQ7XG4gICAgICBhc3NlcnQub2soaWRlbnRpdHkuY2xpZW50SWQsIFwiTWFuYWdlZCBpZGVudGl0eSBjbGllbnQgSUQgaXMgdW5kZWZpbmVkXCIpO1xuICAgICAgY29uc3QgaWRlbnRpdHlDbGllbnRJZCA9IGlkZW50aXR5LmNsaWVudElkO1xuXG4gICAgICBsb2dnZXIuZGVidWcoXG4gICAgICAgIFwiQ3JlYXRlZCBpZGVudGl0eSB7aWRlbnRpdHlOYW1lfSBpbiBzdWJzY3JpcHRpb24ge3N1YnNjcmlwdGlvbklkfVwiLFxuICAgICAgICB7IGlkZW50aXR5TmFtZSwgc3Vic2NyaXB0aW9uSWQ6IGNsb3VkQWNjb3VudC5pZCB9LFxuICAgICAgKTtcblxuICAgICAgY29uc3QgYXV0aG9yaXphdGlvbk1hbmFnZW1lbnRDbGllbnQgPSBuZXcgQXV0aG9yaXphdGlvbk1hbmFnZW1lbnRDbGllbnQoXG4gICAgICAgIHRoaXMuI2NyZWRlbnRpYWwsXG4gICAgICAgIGNsb3VkQWNjb3VudC5pZCxcbiAgICAgICk7XG4gICAgICBjb25zdCBzdWJzY3JpcHRpb25DbGllbnQgPSBuZXcgU3Vic2NyaXB0aW9uQ2xpZW50KHRoaXMuI2NyZWRlbnRpYWwpO1xuICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gYXdhaXQgc3Vic2NyaXB0aW9uQ2xpZW50LnN1YnNjcmlwdGlvbnMuZ2V0KFxuICAgICAgICBjbG91ZEFjY291bnQuaWQsXG4gICAgICApO1xuICAgICAgYXNzZXJ0Lm9rKHN1YnNjcmlwdGlvbi50ZW5hbnRJZCwgXCJTdWJzY3JpcHRpb24gdGVuYW50IElEIGlzIHVuZGVmaW5lZFwiKTtcbiAgICAgIGNvbnN0IHRlbmFudElkID0gc3Vic2NyaXB0aW9uLnRlbmFudElkO1xuICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uU2NvcGUgPSBgL3N1YnNjcmlwdGlvbnMvJHtjbG91ZEFjY291bnQuaWR9YDtcblxuICAgICAgLy8gR3JhbnQgdGhlIGJvb3RzdHJhcCBpZGVudGl0eSB0aGUgQXp1cmUgcGVybWlzc2lvbnMgaXQgbmVlZHMgdG8gb3BlcmF0ZSBhdXRvbm9tb3VzbHkgaW4gdGhlIGJvb3RzdHJhcCB3b3JrZmxvdy5cbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBib290c3RyYXBJZGVudGl0eVJvbGVEZWZpbml0aW9uSWRzLm1hcCgocm9sZURlZmluaXRpb25JZCkgPT5cbiAgICAgICAgICBhdXRob3JpemF0aW9uTWFuYWdlbWVudENsaWVudC5yb2xlQXNzaWdubWVudHMuY3JlYXRlKFxuICAgICAgICAgICAgc3Vic2NyaXB0aW9uU2NvcGUsXG4gICAgICAgICAgICB0aGlzLiNjcmVhdGVSb2xlQXNzaWdubWVudE5hbWUoXG4gICAgICAgICAgICAgIHN1YnNjcmlwdGlvblNjb3BlLFxuICAgICAgICAgICAgICBpZGVudGl0eVByaW5jaXBhbElkLFxuICAgICAgICAgICAgICByb2xlRGVmaW5pdGlvbklkLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcHJpbmNpcGFsSWQ6IGlkZW50aXR5UHJpbmNpcGFsSWQsXG4gICAgICAgICAgICAgIHByaW5jaXBhbFR5cGU6IFwiU2VydmljZVByaW5jaXBhbFwiLFxuICAgICAgICAgICAgICByb2xlRGVmaW5pdGlvbklkOiB0aGlzLiNjcmVhdGVSb2xlRGVmaW5pdGlvblJlc291cmNlSWQoXG4gICAgICAgICAgICAgICAgY2xvdWRBY2NvdW50LmlkLFxuICAgICAgICAgICAgICAgIHJvbGVEZWZpbml0aW9uSWQsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICksXG4gICAgICAgICksXG4gICAgICApO1xuXG4gICAgICBsb2dnZXIuZGVidWcoXG4gICAgICAgIFwiQXNzaWduZWQgYm9vdHN0cmFwIHJvbGVzIHRvIGlkZW50aXR5IHtpZGVudGl0eU5hbWV9IGluIHN1YnNjcmlwdGlvbiB7c3Vic2NyaXB0aW9uSWR9XCIsXG4gICAgICAgIHsgaWRlbnRpdHlOYW1lLCBzdWJzY3JpcHRpb25JZDogY2xvdWRBY2NvdW50LmlkIH0sXG4gICAgICApO1xuXG4gICAgICBjb25zdCBnaXRodWJFbnZpcm9ubWVudE5hbWUgPSBgYm9vdHN0cmFwcGVyLSR7bmFtZX0tY2RgO1xuICAgICAgY29uc3QgZmVkZXJhdGVkQ3JlZGVudGlhbE5hbWUgPSB0aGlzLiNjcmVhdGVGZWRlcmF0ZWRDcmVkZW50aWFsTmFtZSh7XG4gICAgICAgIGdpdGh1YixcbiAgICAgICAgZ2l0aHViRW52aXJvbm1lbnROYW1lLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIEluY2x1ZGUgYSByZXBvc2l0b3J5LWRlcml2ZWQgc3VmZml4IHNvIGRpZmZlcmVudCByZXBvc2l0b3JpZXMgY2FuIHNoYXJlXG4gICAgICAvLyB0aGUgc2FtZSBib290c3RyYXAgaWRlbnRpdHkgd2l0aG91dCBvdmVyd3JpdGluZyBlYWNoIG90aGVyJ3MgT0lEQyB0cnVzdC5cbiAgICAgIGF3YWl0IG1zaUNsaWVudC5mZWRlcmF0ZWRJZGVudGl0eUNyZWRlbnRpYWxzLmNyZWF0ZU9yVXBkYXRlKFxuICAgICAgICByZXNvdXJjZUdyb3VwTmFtZSxcbiAgICAgICAgaWRlbnRpdHlOYW1lLFxuICAgICAgICBmZWRlcmF0ZWRDcmVkZW50aWFsTmFtZSxcbiAgICAgICAge1xuICAgICAgICAgIGF1ZGllbmNlczogW1wiYXBpOi8vQXp1cmVBRFRva2VuRXhjaGFuZ2VcIl0sXG4gICAgICAgICAgaXNzdWVyOiBcImh0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb21cIixcbiAgICAgICAgICBzdWJqZWN0OiBgcmVwbzoke2dpdGh1Yi5vd25lcn0vJHtnaXRodWIucmVwb306ZW52aXJvbm1lbnQ6JHtnaXRodWJFbnZpcm9ubWVudE5hbWV9YCxcbiAgICAgICAgfSxcbiAgICAgICk7XG5cbiAgICAgIGxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgXCJDb25maWd1cmVkIGZlZGVyYXRlZCBpZGVudGl0eSBjcmVkZW50aWFsIHtjcmVkZW50aWFsTmFtZX0gZm9yIGlkZW50aXR5IHtpZGVudGl0eU5hbWV9IGluIHN1YnNjcmlwdGlvbiB7c3Vic2NyaXB0aW9uSWR9XCIsXG4gICAgICAgIHtcbiAgICAgICAgICBjcmVkZW50aWFsTmFtZTogZmVkZXJhdGVkQ3JlZGVudGlhbE5hbWUsXG4gICAgICAgICAgaWRlbnRpdHlOYW1lLFxuICAgICAgICAgIHN1YnNjcmlwdGlvbklkOiBjbG91ZEFjY291bnQuaWQsXG4gICAgICAgIH0sXG4gICAgICApO1xuXG4gICAgICBhd2FpdCB0aGlzLiNzdG9yZUJvb3RzdHJhcHBlckVudmlyb25tZW50U2VjcmV0cyh7XG4gICAgICAgIGNsb3VkQWNjb3VudElkOiBjbG91ZEFjY291bnQuaWQsXG4gICAgICAgIGdpdGh1YixcbiAgICAgICAgZ2l0aHViRW52aXJvbm1lbnROYW1lLFxuICAgICAgICBnaXRIdWJTZXJ2aWNlLFxuICAgICAgICBpZGVudGl0eUNsaWVudElkLFxuICAgICAgICBydW5uZXJBcHBDcmVkZW50aWFscyxcbiAgICAgICAgdGVuYW50SWQsXG4gICAgICB9KTtcblxuICAgICAgY29uc3Qga2V5VmF1bHROYW1lID0gYXdhaXQgdGhpcy4jY3JlYXRlQ29tbW9uS2V5VmF1bHQoe1xuICAgICAgICBjbG91ZEFjY291bnQsXG4gICAgICAgIG5hbWUsXG4gICAgICAgIHByZWZpeCxcbiAgICAgICAgcmVzb3VyY2VHcm91cE5hbWUsXG4gICAgICAgIHNob3J0RW52OiBzaG9ydC5lbnYsXG4gICAgICAgIHNob3J0TG9jYXRpb246IHNob3J0LmxvY2F0aW9uLFxuICAgICAgICB0YWdzLFxuICAgICAgICB0ZW5hbnRJZCxcbiAgICAgIH0pO1xuXG4gICAgICBhd2FpdCB0aGlzLiNzdG9yZVJ1bm5lckFwcFNlY3JldHMoe1xuICAgICAgICBjbG91ZEFjY291bnRJZDogY2xvdWRBY2NvdW50LmlkLFxuICAgICAgICBrZXlWYXVsdE5hbWUsXG4gICAgICAgIHJ1bm5lckFwcENyZWRlbnRpYWxzLFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoY2F1c2UpIHtcbiAgICAgIC8vIENsZWFudXAgcmVzb3VyY2UgZ3JvdXAgaWYgaW5pdGlhbGl6YXRpb24gZmFpbHNcbiAgICAgIGF3YWl0IHJlc291cmNlTWFuYWdlbWVudENsaWVudC5yZXNvdXJjZUdyb3Vwcy5iZWdpbkRlbGV0ZUFuZFdhaXQoXG4gICAgICAgIHJlc291cmNlR3JvdXBOYW1lLFxuICAgICAgKTtcbiAgICAgIGxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgXCJEZWxldGVkIHJlc291cmNlIGdyb3VwIHtyZXNvdXJjZUdyb3VwTmFtZX0gaW4gc3Vic2NyaXB0aW9uIHtzdWJzY3JpcHRpb25JZH0gZHVlIHRvIGluaXRpYWxpemF0aW9uIGZhaWx1cmVcIixcbiAgICAgICAgeyByZXNvdXJjZUdyb3VwTmFtZSwgc3Vic2NyaXB0aW9uSWQ6IGNsb3VkQWNjb3VudC5pZCB9LFxuICAgICAgKTtcbiAgICAgIGlmIChjYXVzZSBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgIGxvZ2dlci5lcnJvcihjYXVzZS5tZXNzYWdlKTtcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBFcnJvcihgRXJyb3IgZHVyaW5nIHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgY2xvdWQgYWNjb3VudGAsIHtcbiAgICAgICAgY2F1c2UsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBpc0luaXRpYWxpemVkKFxuICAgIGNsb3VkQWNjb3VudElkOiBDbG91ZEFjY291bnRbXCJpZFwiXSxcbiAgICB7IG5hbWUsIHByZWZpeCB9OiBFbnZpcm9ubWVudElkLFxuICApOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBhbGxMb2NhdGlvbnMgPSBPYmplY3QudmFsdWVzKGxvY2F0aW9uU2hvcnQpLmpvaW4oXCJ8XCIpO1xuICAgIGNvbnN0IHNob3J0RW52ID0gZW52aXJvbm1lbnRTaG9ydFtuYW1lXTtcblxuICAgIGNvbnN0IGlkZW50aXR5UmVzb3VyY2VOYW1lID0gYCR7cHJlZml4fS0ke3Nob3J0RW52fS0oJHthbGxMb2NhdGlvbnN9KS1ib290c3RyYXAtaWQtKDBbMS05XXxbMS05XVxcXFxkKWA7XG4gICAgY29uc3QgaWRlbnRpdHlRdWVyeSA9IGByZXNvdXJjZXNcbiAgICAgICAgICAgICB8IHdoZXJlIHR5cGUgPT0gJ21pY3Jvc29mdC5tYW5hZ2VkaWRlbnRpdHkvdXNlcmFzc2lnbmVkaWRlbnRpdGllcydcbiAgICAgICAgICAgICB8IHdoZXJlIG5hbWUgbWF0Y2hlcyByZWdleCBAJyR7aWRlbnRpdHlSZXNvdXJjZU5hbWV9J1xuICAgICAgICAgICAgYDtcblxuICAgIGNvbnN0IGtleVZhdWx0UmVzb3VyY2VOYW1lID0gYCR7cHJlZml4fS0ke3Nob3J0RW52fS0oJHthbGxMb2NhdGlvbnN9KS1jb21tb24ta3YtKDBbMS05XXxbMS05XVxcXFxkKWA7XG4gICAgY29uc3Qga2V5VmF1bHRRdWVyeSA9IGByZXNvdXJjZXNcbiAgICAgICAgICAgICB8IHdoZXJlIHR5cGUgPT0gJ21pY3Jvc29mdC5rZXl2YXVsdC92YXVsdHMnXG4gICAgICAgICAgICAgfCB3aGVyZSBuYW1lIG1hdGNoZXMgcmVnZXggQCcke2tleVZhdWx0UmVzb3VyY2VOYW1lfSdcbiAgICAgICAgICAgIGA7XG5cbiAgICBjb25zdCBbaWRlbnRpdHlSZXN1bHQsIGtleVZhdWx0UmVzdWx0LCBhcmVQcm92aWRlcnNSZWdpc3RlcmVkXSA9XG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICAgIHRoaXMuI3Jlc291cmNlR3JhcGhDbGllbnQucmVzb3VyY2VzKHtcbiAgICAgICAgICBxdWVyeTogaWRlbnRpdHlRdWVyeSxcbiAgICAgICAgICBzdWJzY3JpcHRpb25zOiBbY2xvdWRBY2NvdW50SWRdLFxuICAgICAgICB9KSxcbiAgICAgICAgdGhpcy4jcmVzb3VyY2VHcmFwaENsaWVudC5yZXNvdXJjZXMoe1xuICAgICAgICAgIHF1ZXJ5OiBrZXlWYXVsdFF1ZXJ5LFxuICAgICAgICAgIHN1YnNjcmlwdGlvbnM6IFtjbG91ZEFjY291bnRJZF0sXG4gICAgICAgIH0pLFxuICAgICAgICB0aGlzLiNhcmVQcm92aWRlcnNSZWdpc3RlcmVkKGNsb3VkQWNjb3VudElkKSxcbiAgICAgIF0pO1xuXG4gICAgY29uc3QgaW5pdGlhbGl6ZWQgPVxuICAgICAgaWRlbnRpdHlSZXN1bHQudG90YWxSZWNvcmRzID4gMCAmJlxuICAgICAga2V5VmF1bHRSZXN1bHQudG90YWxSZWNvcmRzID4gMCAmJlxuICAgICAgYXJlUHJvdmlkZXJzUmVnaXN0ZXJlZDtcblxuICAgIGNvbnN0IGxvZ2dlciA9IGdldExvZ2dlcihbXCJnZW5cIiwgXCJlbnZcIl0pO1xuXG4gICAgbG9nZ2VyLmRlYnVnKFwic3Vic2NyaXB0aW9uIHtzdWJzY3JpcHRpb25JZH0gaW5pdGlhbGl6ZWQ6IHtpbml0aWFsaXplZH1cIiwge1xuICAgICAgaW5pdGlhbGl6ZWQsXG4gICAgICBzdWJzY3JpcHRpb25JZDogY2xvdWRBY2NvdW50SWQsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gaW5pdGlhbGl6ZWQ7XG4gIH1cblxuICBhc3luYyBwcm92aXNpb25UZXJyYWZvcm1CYWNrZW5kKFxuICAgIGNsb3VkQWNjb3VudDogQ2xvdWRBY2NvdW50LFxuICAgIHsgbmFtZSwgcHJlZml4IH06IEVudmlyb25tZW50SWQsXG4gICAgdGFnczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9LFxuICApOiBQcm9taXNlPFRlcnJhZm9ybUJhY2tlbmQ+IHtcbiAgICBhc3NlcnQuZXF1YWwoY2xvdWRBY2NvdW50LmNzcCwgXCJhenVyZVwiLCBcIkNsb3VkIGFjY291bnQgbXVzdCBiZSBBenVyZVwiKTtcbiAgICBhc3NlcnQub2soXG4gICAgICBpc0F6dXJlTG9jYXRpb24oY2xvdWRBY2NvdW50LmRlZmF1bHRMb2NhdGlvbiksXG4gICAgICBcIlRoZSBkZWZhdWx0IGxvY2F0aW9uIG9mIHRoZSBjbG91ZCBhY2NvdW50IGlzIG5vdCBhIHZhbGlkIEF6dXJlIGxvY2F0aW9uXCIsXG4gICAgKTtcblxuICAgIGNvbnN0IGxvZ2dlciA9IGdldExvZ2dlcihbXCJnZW5cIiwgXCJlbnZcIl0pO1xuXG4gICAgY29uc3QgcmVzb3VyY2VNYW5hZ2VtZW50Q2xpZW50ID0gbmV3IFJlc291cmNlTWFuYWdlbWVudENsaWVudChcbiAgICAgIHRoaXMuI2NyZWRlbnRpYWwsXG4gICAgICBjbG91ZEFjY291bnQuaWQsXG4gICAgKTtcblxuICAgIGNvbnN0IHNob3J0ID0ge1xuICAgICAgZW52OiBlbnZpcm9ubWVudFNob3J0W25hbWVdLFxuICAgICAgbG9jYXRpb246IGxvY2F0aW9uU2hvcnRbY2xvdWRBY2NvdW50LmRlZmF1bHRMb2NhdGlvbl0sXG4gICAgfTtcblxuICAgIGNvbnN0IHBhcmFtZXRlcnMgPSB7XG4gICAgICBsb2NhdGlvbjogY2xvdWRBY2NvdW50LmRlZmF1bHRMb2NhdGlvbixcbiAgICAgIHRhZ3M6IHtcbiAgICAgICAgRW52aXJvbm1lbnQ6IG5hbWUsXG4gICAgICAgIC4uLnRhZ3MsXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBjb25zdCByZXNvdXJjZUdyb3VwTmFtZSA9IGAke3ByZWZpeH0tJHtzaG9ydC5lbnZ9LSR7c2hvcnQubG9jYXRpb259LXRmc3RhdGUtcmctMDFgO1xuXG4gICAgYXdhaXQgcmVzb3VyY2VNYW5hZ2VtZW50Q2xpZW50LnJlc291cmNlR3JvdXBzLmNyZWF0ZU9yVXBkYXRlKFxuICAgICAgcmVzb3VyY2VHcm91cE5hbWUsXG4gICAgICBwYXJhbWV0ZXJzLFxuICAgICk7XG5cbiAgICBsb2dnZXIuZGVidWcoXG4gICAgICBcIkNyZWF0ZWQgcmVzb3VyY2UgZ3JvdXAge3Jlc291cmNlR3JvdXBOYW1lfSBpbiBzdWJzY3JpcHRpb24ge3N1YnNjcmlwdGlvbklkfVwiLFxuICAgICAgeyByZXNvdXJjZUdyb3VwTmFtZSwgc3Vic2NyaXB0aW9uSWQ6IGNsb3VkQWNjb3VudC5pZCB9LFxuICAgICk7XG5cbiAgICBjb25zdCBzdG9yYWdlTWFuYWdlbWVudENsaWVudCA9IG5ldyBTdG9yYWdlTWFuYWdlbWVudENsaWVudChcbiAgICAgIHRoaXMuI2NyZWRlbnRpYWwsXG4gICAgICBjbG91ZEFjY291bnQuaWQsXG4gICAgKTtcblxuICAgIGNvbnN0IHN0b3JhZ2VBY2NvdW50ID1cbiAgICAgIGF3YWl0IHN0b3JhZ2VNYW5hZ2VtZW50Q2xpZW50LnN0b3JhZ2VBY2NvdW50cy5iZWdpbkNyZWF0ZUFuZFdhaXQoXG4gICAgICAgIHJlc291cmNlR3JvdXBOYW1lLFxuICAgICAgICBgJHtwcmVmaXh9JHtzaG9ydC5lbnZ9JHtzaG9ydC5sb2NhdGlvbn10ZnN0YXRlc3QwMWAsXG4gICAgICAgIHtcbiAgICAgICAgICBraW5kOiBcIlN0b3JhZ2VWMlwiLFxuICAgICAgICAgIHNrdToge1xuICAgICAgICAgICAgbmFtZTogXCJTdGFuZGFyZF9MUlNcIixcbiAgICAgICAgICAgIHRpZXI6IFwiU3RhbmRhcmRcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIC4uLnBhcmFtZXRlcnMsXG4gICAgICAgIH0sXG4gICAgICApO1xuXG4gICAgYXNzZXJ0Lm9rKFxuICAgICAgc3RvcmFnZUFjY291bnQucHJpbWFyeUVuZHBvaW50cz8uYmxvYixcbiAgICAgIFwiU3RvcmFnZSBhY2NvdW50IGJsb2IgZW5kcG9pbnQgaXMgdW5kZWZpbmVkXCIsXG4gICAgKTtcblxuICAgIGFzc2VydC5vayhzdG9yYWdlQWNjb3VudC5uYW1lLCBcIlN0b3JhZ2UgYWNjb3VudCBuYW1lIGlzIHVuZGVmaW5lZFwiKTtcblxuICAgIGxvZ2dlci5kZWJ1ZyhcbiAgICAgIFwiQ3JlYXRlZCBzdG9yYWdlIGFjY291bnQge3N0b3JhZ2VBY2NvdW50TmFtZX0gaW4gc3Vic2NyaXB0aW9uIHtzdWJzY3JpcHRpb25JZH1cIixcbiAgICAgIHtcbiAgICAgICAgc3RvcmFnZUFjY291bnROYW1lOiBzdG9yYWdlQWNjb3VudC5uYW1lLFxuICAgICAgICBzdWJzY3JpcHRpb25JZDogY2xvdWRBY2NvdW50LmlkLFxuICAgICAgfSxcbiAgICApO1xuICAgIGNvbnN0IGJsb2JTZXJ2aWNlQ2xpZW50ID0gbmV3IEJsb2JTZXJ2aWNlQ2xpZW50KFxuICAgICAgc3RvcmFnZUFjY291bnQucHJpbWFyeUVuZHBvaW50cz8uYmxvYixcbiAgICAgIHRoaXMuI2NyZWRlbnRpYWwsXG4gICAgKTtcblxuICAgIGNvbnN0IGNvbnRhaW5lckNsaWVudCA9XG4gICAgICBibG9iU2VydmljZUNsaWVudC5nZXRDb250YWluZXJDbGllbnQoXCJ0ZXJyYWZvcm0tc3RhdGVcIik7XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgY29udGFpbmVyQ2xpZW50LmNyZWF0ZSgpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIENsZWFudXAgcmVzb3VyY2UgZ3JvdXAgaWYgYmxvYiBjb250YWluZXIgY3JlYXRpb24gZmFpbHNcbiAgICAgIC8vIHJlc291cmNlIGdyb3VwIGRlbGV0aW9uIGFsc28gZGVsZXRlcyBhbGwgY29udGFpbmVkIHJlc291cmNlc1xuICAgICAgYXdhaXQgcmVzb3VyY2VNYW5hZ2VtZW50Q2xpZW50LnJlc291cmNlR3JvdXBzLmJlZ2luRGVsZXRlQW5kV2FpdChcbiAgICAgICAgcmVzb3VyY2VHcm91cE5hbWUsXG4gICAgICApO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBFcnJvciBkdXJpbmcgdGhlIGNyZWF0aW9uIG9mIHRoZSBibG9iIGNvbnRhaW5lcmAsIHtcbiAgICAgICAgY2F1c2U6IGUsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGVycmFmb3JtQmFja2VuZFNjaGVtYS5wYXJzZSh7XG4gICAgICByZXNvdXJjZUdyb3VwTmFtZSxcbiAgICAgIHN0b3JhZ2VBY2NvdW50TmFtZTogc3RvcmFnZUFjY291bnQubmFtZSxcbiAgICAgIHN1YnNjcmlwdGlvbklkOiBjbG91ZEFjY291bnQuaWQsXG4gICAgICB0eXBlOiBcImF6dXJlcm1cIixcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jICNhcmVQcm92aWRlcnNSZWdpc3RlcmVkKHN1YnNjcmlwdGlvbklkOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBjbGllbnQgPSBuZXcgUmVzb3VyY2VNYW5hZ2VtZW50Q2xpZW50KFxuICAgICAgdGhpcy4jY3JlZGVudGlhbCxcbiAgICAgIHN1YnNjcmlwdGlvbklkLFxuICAgICk7XG4gICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgdGhpcy4jcmVxdWlyZWRSZXNvdXJjZVByb3ZpZGVycy5tYXAoYXN5bmMgKG5hbWVzcGFjZSkgPT4ge1xuICAgICAgICBjb25zdCBwcm92aWRlciA9IGF3YWl0IGNsaWVudC5wcm92aWRlcnMuZ2V0KG5hbWVzcGFjZSk7XG4gICAgICAgIHJldHVybiBwcm92aWRlci5yZWdpc3RyYXRpb25TdGF0ZSA9PT0gXCJSZWdpc3RlcmVkXCI7XG4gICAgICB9KSxcbiAgICApO1xuICAgIHJldHVybiByZXN1bHRzLmV2ZXJ5KEJvb2xlYW4pO1xuICB9XG5cbiAgYXN5bmMgI2NyZWF0ZUNvbW1vbktleVZhdWx0KHtcbiAgICBjbG91ZEFjY291bnQsXG4gICAgbmFtZSxcbiAgICBwcmVmaXgsXG4gICAgcmVzb3VyY2VHcm91cE5hbWUsXG4gICAgc2hvcnRFbnYsXG4gICAgc2hvcnRMb2NhdGlvbixcbiAgICB0YWdzLFxuICAgIHRlbmFudElkLFxuICB9OiB7XG4gICAgY2xvdWRBY2NvdW50OiBDbG91ZEFjY291bnQ7XG4gICAgbmFtZTogRW52aXJvbm1lbnRJZFtcIm5hbWVcIl07XG4gICAgcHJlZml4OiBzdHJpbmc7XG4gICAgcmVzb3VyY2VHcm91cE5hbWU6IHN0cmluZztcbiAgICBzaG9ydEVudjogc3RyaW5nO1xuICAgIHNob3J0TG9jYXRpb246IHN0cmluZztcbiAgICB0YWdzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICAgIHRlbmFudElkOiBzdHJpbmc7XG4gIH0pOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IGxvZ2dlciA9IGdldExvZ2dlcihbXCJnZW5cIiwgXCJlbnZcIl0pO1xuXG4gICAgY29uc3Qga3ZDbGllbnQgPSBuZXcgS2V5VmF1bHRNYW5hZ2VtZW50Q2xpZW50KFxuICAgICAgdGhpcy4jY3JlZGVudGlhbCxcbiAgICAgIGNsb3VkQWNjb3VudC5pZCxcbiAgICApO1xuXG4gICAgY29uc3Qga2V5VmF1bHROYW1lID0gYCR7cHJlZml4fS0ke3Nob3J0RW52fS0ke3Nob3J0TG9jYXRpb259LWNvbW1vbi1rdi0wMWA7XG4gICAgY29uc3Qgc2VjcmV0c1Byb3RlY3Rpb25FbmFibGVkID0gc2hvcnRFbnYgPT09IFwicFwiO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQga3ZDbGllbnQudmF1bHRzLmNoZWNrTmFtZUF2YWlsYWJpbGl0eSh7XG4gICAgICBuYW1lOiBrZXlWYXVsdE5hbWUsXG4gICAgICB0eXBlOiBcIk1pY3Jvc29mdC5LZXlWYXVsdC92YXVsdHNcIixcbiAgICB9KTtcblxuICAgIGF3YWl0IGt2Q2xpZW50LnZhdWx0cy5iZWdpbkNyZWF0ZU9yVXBkYXRlQW5kV2FpdChcbiAgICAgIHJlc291cmNlR3JvdXBOYW1lLFxuICAgICAga2V5VmF1bHROYW1lLFxuICAgICAge1xuICAgICAgICBsb2NhdGlvbjogY2xvdWRBY2NvdW50LmRlZmF1bHRMb2NhdGlvbixcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIGNyZWF0ZU1vZGU6IHJlc3VsdC5uYW1lQXZhaWxhYmxlID8gXCJkZWZhdWx0XCIgOiBcInJlY292ZXJcIixcbiAgICAgICAgICBlbmFibGVkRm9yRGlza0VuY3J5cHRpb246IHRydWUsXG4gICAgICAgICAgZW5hYmxlUHVyZ2VQcm90ZWN0aW9uOiBzZWNyZXRzUHJvdGVjdGlvbkVuYWJsZWQgPyB0cnVlIDogdW5kZWZpbmVkLFxuICAgICAgICAgIGVuYWJsZVJiYWNBdXRob3JpemF0aW9uOiB0cnVlLFxuICAgICAgICAgIHNrdToge1xuICAgICAgICAgICAgZmFtaWx5OiBcIkFcIixcbiAgICAgICAgICAgIG5hbWU6IFwic3RhbmRhcmRcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNvZnREZWxldGVSZXRlbnRpb25JbkRheXM6IHNlY3JldHNQcm90ZWN0aW9uRW5hYmxlZCA/IDE0IDogNyxcbiAgICAgICAgICB0ZW5hbnRJZCxcbiAgICAgICAgfSxcbiAgICAgICAgdGFnczoge1xuICAgICAgICAgIEVudmlyb25tZW50OiBuYW1lLFxuICAgICAgICAgIC4uLnRhZ3MsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICk7XG5cbiAgICBsb2dnZXIuZGVidWcoXG4gICAgICBcIkNyZWF0ZWQga2V5IHZhdWx0IHtrZXlWYXVsdE5hbWV9IGluIHN1YnNjcmlwdGlvbiB7c3Vic2NyaXB0aW9uSWR9XCIsXG4gICAgICB7IGtleVZhdWx0TmFtZSwgc3Vic2NyaXB0aW9uSWQ6IGNsb3VkQWNjb3VudC5pZCB9LFxuICAgICk7XG5cbiAgICByZXR1cm4ga2V5VmF1bHROYW1lO1xuICB9XG5cbiAgI2NyZWF0ZUZlZGVyYXRlZENyZWRlbnRpYWxOYW1lKHtcbiAgICBnaXRodWIsXG4gICAgZ2l0aHViRW52aXJvbm1lbnROYW1lLFxuICB9OiB7XG4gICAgZ2l0aHViOiBHaXRIdWJSZXBvO1xuICAgIGdpdGh1YkVudmlyb25tZW50TmFtZTogc3RyaW5nO1xuICB9KTogc3RyaW5nIHtcbiAgICBjb25zdCByZXBvTmFtZSA9IGdpdGh1Yi5yZXBvLnJlcGxhY2VBbGwoL1teYS16QS1aMC05LV0vZywgXCItXCIpO1xuXG4gICAgcmV0dXJuIGAke3JlcG9OYW1lfS0ke2dpdGh1YkVudmlyb25tZW50TmFtZX1gO1xuICB9XG5cbiAgI2NyZWF0ZVJvbGVBc3NpZ25tZW50TmFtZShcbiAgICBzY29wZTogc3RyaW5nLFxuICAgIHByaW5jaXBhbElkOiBzdHJpbmcsXG4gICAgcm9sZURlZmluaXRpb25JZDogc3RyaW5nLFxuICApOiBzdHJpbmcge1xuICAgIGNvbnN0IGhhc2ggPSBjcmVhdGVIYXNoKFwic2hhMjU2XCIpXG4gICAgICAudXBkYXRlKGAke3Njb3BlfToke3ByaW5jaXBhbElkfToke3JvbGVEZWZpbml0aW9uSWR9YClcbiAgICAgIC5kaWdlc3QoXCJoZXhcIik7XG5cbiAgICByZXR1cm4gYCR7aGFzaC5zbGljZSgwLCA4KX0tJHtoYXNoLnNsaWNlKDgsIDEyKX0tJHtoYXNoLnNsaWNlKFxuICAgICAgMTIsXG4gICAgICAxNixcbiAgICApfS0ke2hhc2guc2xpY2UoMTYsIDIwKX0tJHtoYXNoLnNsaWNlKDIwLCAzMil9YDtcbiAgfVxuXG4gICNjcmVhdGVSb2xlRGVmaW5pdGlvblJlc291cmNlSWQoXG4gICAgc3Vic2NyaXB0aW9uSWQ6IHN0cmluZyxcbiAgICByb2xlRGVmaW5pdGlvbklkOiBzdHJpbmcsXG4gICk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAvc3Vic2NyaXB0aW9ucy8ke3N1YnNjcmlwdGlvbklkfS9wcm92aWRlcnMvTWljcm9zb2Z0LkF1dGhvcml6YXRpb24vcm9sZURlZmluaXRpb25zLyR7cm9sZURlZmluaXRpb25JZH1gO1xuICB9XG5cbiAgYXN5bmMgI2dldEN1cnJlbnRQcmluY2lwYWxJZHMoKTogUHJvbWlzZTxTZXQ8c3RyaW5nPj4ge1xuICAgIC8vIENyZWF0ZSBHcmFwaCBjbGllbnQgd2l0aCBjdXN0b20gYXV0aCBwcm92aWRlciB0aGF0IGZldGNoZXMgZnJlc2ggdG9rZW5zXG4gICAgY29uc3QgZ3JhcGhDbGllbnQgPSBDbGllbnQuaW5pdCh7XG4gICAgICBhdXRoUHJvdmlkZXI6IGFzeW5jIChkb25lKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgdG9rZW5SZXNwb25zZSA9IGF3YWl0IHRoaXMuI2NyZWRlbnRpYWwuZ2V0VG9rZW4oXG4gICAgICAgICAgICBcImh0dHBzOi8vZ3JhcGgubWljcm9zb2Z0LmNvbS8uZGVmYXVsdFwiLFxuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKCF0b2tlblJlc3BvbnNlKSB7XG4gICAgICAgICAgICBkb25lKFxuICAgICAgICAgICAgICBuZXcgRXJyb3IoXCJGYWlsZWQgdG8gYWNxdWlyZSB0b2tlbiBmb3IgTWljcm9zb2Z0IEdyYXBoXCIpLFxuICAgICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgZG9uZShudWxsLCB0b2tlblJlc3BvbnNlLnRva2VuKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBkb25lKGVycm9yIGFzIEVycm9yLCBudWxsKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8vIEdldCBjdXJyZW50IHVzZXIncyBpbmZvXG4gICAgY29uc3QgbWVSZXNwb25zZSA9IGF3YWl0IGdyYXBoQ2xpZW50LmFwaShcIi9tZVwiKS5nZXQoKTtcbiAgICBjb25zdCBtZSA9IGdyYXBoVXNlclJlc3BvbnNlU2NoZW1hLnBhcnNlKG1lUmVzcG9uc2UpO1xuICAgIGNvbnN0IHVzZXJPYmplY3RJZCA9IG1lLmlkO1xuXG4gICAgLy8gR2V0IGFsbCBncm91cCBtZW1iZXJzaGlwcyAodHJhbnNpdGl2ZSAtIGluY2x1ZGVzIG5lc3RlZCBncm91cHMpXG4gICAgY29uc3QgZ3JvdXBJZHM6IHN0cmluZ1tdID0gW107XG4gICAgbGV0IG5leHRMaW5rOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBcIi9tZS90cmFuc2l0aXZlTWVtYmVyT2Y/JHNlbGVjdD1pZFwiO1xuXG4gICAgd2hpbGUgKG5leHRMaW5rKSB7XG4gICAgICBjb25zdCByYXdSZXNwb25zZSA9IGF3YWl0IGdyYXBoQ2xpZW50LmFwaShuZXh0TGluaykuZ2V0KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGdyYXBoR3JvdXBNZW1iZXJzaGlwUmVzcG9uc2VTY2hlbWEucGFyc2UocmF3UmVzcG9uc2UpO1xuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHJlc3BvbnNlLnZhbHVlKSB7XG4gICAgICAgIGdyb3VwSWRzLnB1c2goaXRlbS5pZCk7XG4gICAgICB9XG4gICAgICBuZXh0TGluayA9IHJlc3BvbnNlW1wiQG9kYXRhLm5leHRMaW5rXCJdO1xuICAgIH1cblxuICAgIC8vIEFsbCBwcmluY2lwYWwgSURzIHRvIGNoZWNrICh1c2VyICsgYWxsIGdyb3VwcylcbiAgICBjb25zdCBhbGxQcmluY2lwYWxJZHMgPSBuZXcgU2V0KFt1c2VyT2JqZWN0SWQsIC4uLmdyb3VwSWRzXSk7XG4gICAgcmV0dXJuIGFsbFByaW5jaXBhbElkcztcbiAgfVxuXG4gIGFzeW5jICNyZWdpc3RlclByb3ZpZGVycyhzdWJzY3JpcHRpb25JZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgbG9nZ2VyID0gZ2V0TG9nZ2VyKFtcImR4LWNsaVwiLCBcInJlZ2lzdGVyLXByb3ZpZGVyc1wiXSk7XG4gICAgY29uc3QgY2xpZW50ID0gbmV3IFJlc291cmNlTWFuYWdlbWVudENsaWVudChcbiAgICAgIHRoaXMuI2NyZWRlbnRpYWwsXG4gICAgICBzdWJzY3JpcHRpb25JZCxcbiAgICApO1xuXG4gICAgbG9nZ2VyLmluZm8oXG4gICAgICBcIlJlZ2lzdGVyaW5nIHtjb3VudH0gcmVzb3VyY2UgcHJvdmlkZXJzIG9uIHN1YnNjcmlwdGlvbiB7c3Vic2NyaXB0aW9uSWR9XCIsXG4gICAgICB7IGNvdW50OiB0aGlzLiNyZXF1aXJlZFJlc291cmNlUHJvdmlkZXJzLmxlbmd0aCwgc3Vic2NyaXB0aW9uSWQgfSxcbiAgICApO1xuXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICB0aGlzLiNyZXF1aXJlZFJlc291cmNlUHJvdmlkZXJzLm1hcChhc3luYyAobmFtZXNwYWNlKSA9PiB7XG4gICAgICAgIGF3YWl0IGNsaWVudC5wcm92aWRlcnMucmVnaXN0ZXIobmFtZXNwYWNlKTtcbiAgICAgICAgbG9nZ2VyLmRlYnVnKFwiUmVnaXN0ZXJlZCBwcm92aWRlciB7bmFtZXNwYWNlfVwiLCB7IG5hbWVzcGFjZSB9KTtcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICBsb2dnZXIuaW5mbyhcbiAgICAgIFwiQWxsIHJlc291cmNlIHByb3ZpZGVycyByZWdpc3RlcmVkIG9uIHN1YnNjcmlwdGlvbiB7c3Vic2NyaXB0aW9uSWR9XCIsXG4gICAgICB7IHN1YnNjcmlwdGlvbklkIH0sXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jICNzdG9yZUJvb3RzdHJhcHBlckVudmlyb25tZW50U2VjcmV0cyh7XG4gICAgY2xvdWRBY2NvdW50SWQsXG4gICAgZ2l0aHViLFxuICAgIGdpdGh1YkVudmlyb25tZW50TmFtZSxcbiAgICBnaXRIdWJTZXJ2aWNlLFxuICAgIGlkZW50aXR5Q2xpZW50SWQsXG4gICAgcnVubmVyQXBwQ3JlZGVudGlhbHMsXG4gICAgdGVuYW50SWQsXG4gIH06IHtcbiAgICBjbG91ZEFjY291bnRJZDogc3RyaW5nO1xuICAgIGdpdGh1YjogR2l0SHViUmVwbztcbiAgICBnaXRodWJFbnZpcm9ubWVudE5hbWU6IHN0cmluZztcbiAgICBnaXRIdWJTZXJ2aWNlOiBHaXRIdWJTZXJ2aWNlO1xuICAgIGlkZW50aXR5Q2xpZW50SWQ6IHN0cmluZztcbiAgICBydW5uZXJBcHBDcmVkZW50aWFsczogR2l0SHViQXBwQ3JlZGVudGlhbHM7XG4gICAgdGVuYW50SWQ6IHN0cmluZztcbiAgfSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGxvZ2dlciA9IGdldExvZ2dlcihbXCJnZW5cIiwgXCJlbnZcIl0pO1xuXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgZ2l0SHViU2VydmljZS5jcmVhdGVPclVwZGF0ZUVudmlyb25tZW50U2VjcmV0KHtcbiAgICAgICAgZW52aXJvbm1lbnROYW1lOiBnaXRodWJFbnZpcm9ubWVudE5hbWUsXG4gICAgICAgIG93bmVyOiBnaXRodWIub3duZXIsXG4gICAgICAgIHJlcG86IGdpdGh1Yi5yZXBvLFxuICAgICAgICBzZWNyZXROYW1lOiBcIkFSTV9DTElFTlRfSURcIixcbiAgICAgICAgc2VjcmV0VmFsdWU6IGlkZW50aXR5Q2xpZW50SWQsXG4gICAgICB9KSxcbiAgICAgIGdpdEh1YlNlcnZpY2UuY3JlYXRlT3JVcGRhdGVFbnZpcm9ubWVudFNlY3JldCh7XG4gICAgICAgIGVudmlyb25tZW50TmFtZTogZ2l0aHViRW52aXJvbm1lbnROYW1lLFxuICAgICAgICBvd25lcjogZ2l0aHViLm93bmVyLFxuICAgICAgICByZXBvOiBnaXRodWIucmVwbyxcbiAgICAgICAgc2VjcmV0TmFtZTogXCJBUk1fVEVOQU5UX0lEXCIsXG4gICAgICAgIHNlY3JldFZhbHVlOiB0ZW5hbnRJZCxcbiAgICAgIH0pLFxuICAgICAgZ2l0SHViU2VydmljZS5jcmVhdGVPclVwZGF0ZUVudmlyb25tZW50U2VjcmV0KHtcbiAgICAgICAgZW52aXJvbm1lbnROYW1lOiBnaXRodWJFbnZpcm9ubWVudE5hbWUsXG4gICAgICAgIG93bmVyOiBnaXRodWIub3duZXIsXG4gICAgICAgIHJlcG86IGdpdGh1Yi5yZXBvLFxuICAgICAgICBzZWNyZXROYW1lOiBcIkFSTV9TVUJTQ1JJUFRJT05fSURcIixcbiAgICAgICAgc2VjcmV0VmFsdWU6IGNsb3VkQWNjb3VudElkLFxuICAgICAgfSksXG4gICAgICBnaXRIdWJTZXJ2aWNlLmNyZWF0ZU9yVXBkYXRlRW52aXJvbm1lbnRTZWNyZXQoe1xuICAgICAgICBlbnZpcm9ubWVudE5hbWU6IGdpdGh1YkVudmlyb25tZW50TmFtZSxcbiAgICAgICAgb3duZXI6IGdpdGh1Yi5vd25lcixcbiAgICAgICAgcmVwbzogZ2l0aHViLnJlcG8sXG4gICAgICAgIHNlY3JldE5hbWU6IFwiR0hfQVBQX0lEXCIsXG4gICAgICAgIHNlY3JldFZhbHVlOiBydW5uZXJBcHBDcmVkZW50aWFscy5pZCxcbiAgICAgIH0pLFxuICAgICAgZ2l0SHViU2VydmljZS5jcmVhdGVPclVwZGF0ZUVudmlyb25tZW50U2VjcmV0KHtcbiAgICAgICAgZW52aXJvbm1lbnROYW1lOiBnaXRodWJFbnZpcm9ubWVudE5hbWUsXG4gICAgICAgIG93bmVyOiBnaXRodWIub3duZXIsXG4gICAgICAgIHJlcG86IGdpdGh1Yi5yZXBvLFxuICAgICAgICBzZWNyZXROYW1lOiBcIkdIX0FQUF9DTElFTlRfSURcIixcbiAgICAgICAgc2VjcmV0VmFsdWU6IHJ1bm5lckFwcENyZWRlbnRpYWxzLmNsaWVudElkLFxuICAgICAgfSksXG4gICAgICBnaXRIdWJTZXJ2aWNlLmNyZWF0ZU9yVXBkYXRlRW52aXJvbm1lbnRTZWNyZXQoe1xuICAgICAgICBlbnZpcm9ubWVudE5hbWU6IGdpdGh1YkVudmlyb25tZW50TmFtZSxcbiAgICAgICAgb3duZXI6IGdpdGh1Yi5vd25lcixcbiAgICAgICAgcmVwbzogZ2l0aHViLnJlcG8sXG4gICAgICAgIHNlY3JldE5hbWU6IFwiR0hfQVBQX0lOU1RBTExBVElPTl9JRFwiLFxuICAgICAgICBzZWNyZXRWYWx1ZTogcnVubmVyQXBwQ3JlZGVudGlhbHMuaW5zdGFsbGF0aW9uSWQsXG4gICAgICB9KSxcbiAgICAgIGdpdEh1YlNlcnZpY2UuY3JlYXRlT3JVcGRhdGVFbnZpcm9ubWVudFNlY3JldCh7XG4gICAgICAgIGVudmlyb25tZW50TmFtZTogZ2l0aHViRW52aXJvbm1lbnROYW1lLFxuICAgICAgICBvd25lcjogZ2l0aHViLm93bmVyLFxuICAgICAgICByZXBvOiBnaXRodWIucmVwbyxcbiAgICAgICAgc2VjcmV0TmFtZTogXCJHSF9BUFBfS0VZXCIsXG4gICAgICAgIHNlY3JldFZhbHVlOiBydW5uZXJBcHBDcmVkZW50aWFscy5rZXkudHJpbUVuZCgpLFxuICAgICAgfSksXG4gICAgXSk7XG5cbiAgICBsb2dnZXIuZGVidWcoXCJTZXQgR2l0SHViIGVudmlyb25tZW50IHNlY3JldHMgZm9yIHtlbnZpcm9ubWVudE5hbWV9XCIsIHtcbiAgICAgIGVudmlyb25tZW50TmFtZTogZ2l0aHViRW52aXJvbm1lbnROYW1lLFxuICAgICAgc3Vic2NyaXB0aW9uSWQ6IGNsb3VkQWNjb3VudElkLFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgI3N0b3JlUnVubmVyQXBwU2VjcmV0cyh7XG4gICAgY2xvdWRBY2NvdW50SWQsXG4gICAga2V5VmF1bHROYW1lLFxuICAgIHJ1bm5lckFwcENyZWRlbnRpYWxzLFxuICB9OiB7XG4gICAgY2xvdWRBY2NvdW50SWQ6IHN0cmluZztcbiAgICBrZXlWYXVsdE5hbWU6IHN0cmluZztcbiAgICBydW5uZXJBcHBDcmVkZW50aWFsczogR2l0SHViQXBwQ3JlZGVudGlhbHM7XG4gIH0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBsb2dnZXIgPSBnZXRMb2dnZXIoW1wiZ2VuXCIsIFwiZW52XCJdKTtcblxuICAgIGNvbnN0IHNlY3JldENsaWVudCA9IG5ldyBTZWNyZXRDbGllbnQoXG4gICAgICBgaHR0cHM6Ly8ke2tleVZhdWx0TmFtZX0udmF1bHQuYXp1cmUubmV0L2AsXG4gICAgICB0aGlzLiNjcmVkZW50aWFsLFxuICAgICk7XG5cbiAgICBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICBzZWNyZXRDbGllbnQuc2V0U2VjcmV0KFwiZ2l0aHViLXJ1bm5lci1hcHAtaWRcIiwgcnVubmVyQXBwQ3JlZGVudGlhbHMuaWQpLFxuICAgICAgc2VjcmV0Q2xpZW50LnNldFNlY3JldChcbiAgICAgICAgXCJnaXRodWItcnVubmVyLWFwcC1pbnN0YWxsYXRpb24taWRcIixcbiAgICAgICAgcnVubmVyQXBwQ3JlZGVudGlhbHMuaW5zdGFsbGF0aW9uSWQsXG4gICAgICApLFxuICAgICAgc2VjcmV0Q2xpZW50LnNldFNlY3JldChcbiAgICAgICAgXCJnaXRodWItcnVubmVyLWFwcC1rZXlcIixcbiAgICAgICAgcnVubmVyQXBwQ3JlZGVudGlhbHMua2V5LnRyaW1FbmQoKSwgLy8gc3RyaXAgdHJhaWxpbmcgbmV3bGluZXMgZnJvbSBQRU0ga2V5c1xuICAgICAgKSxcbiAgICBdKTtcblxuICAgIGxvZ2dlci5kZWJ1ZyhcbiAgICAgIFwiQ3JlYXRlZCBzZWNyZXRzIGluIGtleSB2YXVsdCB7a2V5VmF1bHROYW1lfSBpbiBzdWJzY3JpcHRpb24ge3N1YnNjcmlwdGlvbklkfVwiLFxuICAgICAgeyBrZXlWYXVsdE5hbWUsIHN1YnNjcmlwdGlvbklkOiBjbG91ZEFjY291bnRJZCB9LFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -19,3 +19,4 @@ export const cloudRegions = locations.map((l) => ({
|
|
|
19
19
|
name: l,
|
|
20
20
|
short: locationShort[l],
|
|
21
21
|
}));
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYXRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FkYXB0ZXJzL2F6dXJlL2xvY2F0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx5REFBeUQ7QUFJekQsdUVBQXVFO0FBQ3ZFLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxDQUFDLFlBQVksRUFBRSxZQUFZLENBQVUsQ0FBQztBQUkvRCxNQUFNLFVBQVUsZUFBZSxDQUFDLFFBQWdCO0lBQzlDLE9BQU8sU0FBUyxDQUFDLFFBQVEsQ0FBQyxRQUF5QixDQUFDLENBQUM7QUFDdkQsQ0FBQztBQUVELHdDQUF3QztBQUN4QyxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBRTVDLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBa0M7SUFDMUQsVUFBVSxFQUFFLEtBQUs7SUFDakIsVUFBVSxFQUFFLEtBQUs7Q0FDbEIsQ0FBQztBQUVGLE1BQU0sV0FBVyxHQUFrQztJQUNqRCxVQUFVLEVBQUUsYUFBYTtJQUN6QixVQUFVLEVBQUUsYUFBYTtDQUMxQixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFrQixTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQy9ELFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQzNCLElBQUksRUFBRSxDQUFDO0lBQ1AsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUM7Q0FDeEIsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGVzZSBhcmUgdGhlIG9ubHkgcmVnaW9ucyB3ZSBjdXJyZW50bHkgc3VwcG9ydCBmb3IgRFhcblxuaW1wb3J0IHR5cGUgeyBDbG91ZFJlZ2lvbiB9IGZyb20gXCIuLi8uLi9kb21haW4vY2xvdWQtYWNjb3VudC5qc1wiO1xuXG4vLyBPcmRlciBtYXR0ZXJzISB0aGV5IGdvIGZyb20gdGhlIHByZWZlcnJlZCB0byB0aGUgbGVzcyBwcmVmZXJyZWQgb25lc1xuZXhwb3J0IGNvbnN0IGxvY2F0aW9ucyA9IFtcIml0YWx5bm9ydGhcIiwgXCJ3ZXN0ZXVyb3BlXCJdIGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBBenVyZUxvY2F0aW9uID0gKHR5cGVvZiBsb2NhdGlvbnMpW251bWJlcl07XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0F6dXJlTG9jYXRpb24obG9jYXRpb246IHN0cmluZyk6IGxvY2F0aW9uIGlzIEF6dXJlTG9jYXRpb24ge1xuICByZXR1cm4gbG9jYXRpb25zLmluY2x1ZGVzKGxvY2F0aW9uIGFzIEF6dXJlTG9jYXRpb24pO1xufVxuXG4vLyBUaGUgZGVmYXVsdCBsb2NhdGlvbiBpcyB0aGUgZmlyc3Qgb25lXG5leHBvcnQgY29uc3QgZGVmYXVsdExvY2F0aW9uID0gbG9jYXRpb25zWzBdO1xuXG5leHBvcnQgY29uc3QgbG9jYXRpb25TaG9ydDogUmVjb3JkPEF6dXJlTG9jYXRpb24sIHN0cmluZz4gPSB7XG4gIGl0YWx5bm9ydGg6IFwiaXRuXCIsXG4gIHdlc3RldXJvcGU6IFwid2V1XCIsXG59O1xuXG5jb25zdCBkaXNwbGF5TmFtZTogUmVjb3JkPEF6dXJlTG9jYXRpb24sIHN0cmluZz4gPSB7XG4gIGl0YWx5bm9ydGg6IFwiSXRhbHkgTm9ydGhcIixcbiAgd2VzdGV1cm9wZTogXCJXZXN0IEV1cm9wZVwiLFxufTtcblxuZXhwb3J0IGNvbnN0IGNsb3VkUmVnaW9uczogQ2xvdWRSZWdpb25bXSA9IGxvY2F0aW9ucy5tYXAoKGwpID0+ICh7XG4gIGRpc3BsYXlOYW1lOiBkaXNwbGF5TmFtZVtsXSxcbiAgbmFtZTogbCxcbiAgc2hvcnQ6IGxvY2F0aW9uU2hvcnRbbF0sXG59KSk7XG4iXX0=
|
|
@@ -16,3 +16,4 @@ export const getLatestCommitShaOrRef = async (owner, repo, ref = "main") => {
|
|
|
16
16
|
return ref;
|
|
17
17
|
});
|
|
18
18
|
};
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FkYXB0ZXJzL2NvZGVtb2RzL2dpdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUVsQyxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxLQUFLLEVBQ3JDLEtBQWEsRUFDYixJQUFZLEVBQ1osR0FBRyxHQUFHLE1BQU0sRUFDWixFQUFFO0lBQ0YsTUFBTSxPQUFPLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUM5QixNQUFNLFFBQVEsR0FBRyxNQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQztRQUNsRCxLQUFLO1FBQ0wsR0FBRztRQUNILElBQUk7S0FDTCxDQUFDLENBQUM7SUFDSCxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO0FBQzNCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLEtBQUssRUFDMUMsS0FBYSxFQUNiLElBQVksRUFDWixHQUFHLEdBQUcsTUFBTSxFQUNaLEVBQUU7SUFDRixNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUNoRCxPQUFPLGtCQUFrQixDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRTtRQUNyRCxNQUFNLENBQUMsSUFBSSxDQUNULCtFQUErRSxFQUMvRSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUMvQixDQUFDO1FBQ0YsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldExvZ2dlciB9IGZyb20gXCJAbG9ndGFwZS9sb2d0YXBlXCI7XG5pbXBvcnQgeyBPY3Rva2l0IH0gZnJvbSBcIm9jdG9raXRcIjtcblxuZXhwb3J0IGNvbnN0IGdldExhdGVzdENvbW1pdFNoYSA9IGFzeW5jIChcbiAgb3duZXI6IHN0cmluZyxcbiAgcmVwbzogc3RyaW5nLFxuICByZWYgPSBcIm1haW5cIixcbikgPT4ge1xuICBjb25zdCBvY3Rva2l0ID0gbmV3IE9jdG9raXQoKTtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBvY3Rva2l0LnJlc3QucmVwb3MuZ2V0Q29tbWl0KHtcbiAgICBvd25lcixcbiAgICByZWYsXG4gICAgcmVwbyxcbiAgfSk7XG4gIHJldHVybiByZXNwb25zZS5kYXRhLnNoYTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRMYXRlc3RDb21taXRTaGFPclJlZiA9IGFzeW5jIChcbiAgb3duZXI6IHN0cmluZyxcbiAgcmVwbzogc3RyaW5nLFxuICByZWYgPSBcIm1haW5cIixcbikgPT4ge1xuICBjb25zdCBsb2dnZXIgPSBnZXRMb2dnZXIoW1wiZHgtY2xpXCIsIFwiY29kZW1vZFwiXSk7XG4gIHJldHVybiBnZXRMYXRlc3RDb21taXRTaGEob3duZXIsIHJlcG8sIHJlZikuY2F0Y2goKCkgPT4ge1xuICAgIGxvZ2dlci53YXJuKFxuICAgICAgXCJGYWlsZWQgdG8gZmV0Y2ggdGhlIGxhdGVzdCBjb21taXQgZnJvbSB7b3duZXJ9L3tyZXBvfSwgZmFsbGJhY2sgdG8ge2ZhbGxiYWNrfVwiLFxuICAgICAgeyBmYWxsYmFjazogcmVmLCBvd25lciwgcmVwbyB9LFxuICAgICk7XG4gICAgcmV0dXJuIHJlZjtcbiAgfSk7XG59O1xuIl19
|
|
@@ -7,3 +7,4 @@ registry.add(usePnpm);
|
|
|
7
7
|
registry.add(useAzureAppsvc);
|
|
8
8
|
registry.add(updateCodeReview);
|
|
9
9
|
export default registry;
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWRhcHRlcnMvY29kZW1vZHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzNELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RCxPQUFPLE9BQU8sTUFBTSxlQUFlLENBQUM7QUFFcEMsTUFBTSxRQUFRLEdBQUcsSUFBSSxvQkFBb0IsRUFBRSxDQUFDO0FBRTVDLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDdEIsUUFBUSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUM3QixRQUFRLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFFL0IsZUFBZSxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2NhbENvZGVtb2RSZWdpc3RyeSB9IGZyb20gXCIuL3JlZ2lzdHJ5LmpzXCI7XG5pbXBvcnQgeyB1cGRhdGVDb2RlUmV2aWV3IH0gZnJvbSBcIi4vdXBkYXRlLWNvZGUtcmV2aWV3LmpzXCI7XG5pbXBvcnQgeyB1c2VBenVyZUFwcHN2YyB9IGZyb20gXCIuL3VzZS1henVyZS1hcHBzdmMuanNcIjtcbmltcG9ydCB1c2VQbnBtIGZyb20gXCIuL3VzZS1wbnBtLmpzXCI7XG5cbmNvbnN0IHJlZ2lzdHJ5ID0gbmV3IExvY2FsQ29kZW1vZFJlZ2lzdHJ5KCk7XG5cbnJlZ2lzdHJ5LmFkZCh1c2VQbnBtKTtcbnJlZ2lzdHJ5LmFkZCh1c2VBenVyZUFwcHN2Yyk7XG5yZWdpc3RyeS5hZGQodXBkYXRlQ29kZVJldmlldyk7XG5cbmV4cG9ydCBkZWZhdWx0IHJlZ2lzdHJ5O1xuIl19
|
|
@@ -14,3 +14,4 @@ export class LocalCodemodRegistry {
|
|
|
14
14
|
return okAsync(this.#m.get(id));
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWRhcHRlcnMvY29kZW1vZHMvcmVnaXN0cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFlBQVksQ0FBQztBQUlyQyxNQUFNLE9BQU8sb0JBQW9CO0lBQy9CLEVBQUUsQ0FBOEI7SUFDaEM7UUFDRSxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksR0FBRyxFQUEwQixDQUFDO0lBQzlDLENBQUM7SUFDRCxHQUFHLENBQUMsT0FBZ0I7UUFDbEIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBQ0QsTUFBTTtRQUNKLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUNELE9BQU8sQ0FBQyxFQUFVO1FBQ2hCLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbEMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgb2tBc3luYyB9IGZyb20gXCJuZXZlcnRocm93XCI7XG5cbmltcG9ydCB7IENvZGVtb2QsIENvZGVtb2RSZWdpc3RyeSB9IGZyb20gXCIuLi8uLi9kb21haW4vY29kZW1vZC5qc1wiO1xuXG5leHBvcnQgY2xhc3MgTG9jYWxDb2RlbW9kUmVnaXN0cnkgaW1wbGVtZW50cyBDb2RlbW9kUmVnaXN0cnkge1xuICAjbTogTWFwPENvZGVtb2RbXCJpZFwiXSwgQ29kZW1vZD47XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuI20gPSBuZXcgTWFwPENvZGVtb2RbXCJpZFwiXSwgQ29kZW1vZD4oKTtcbiAgfVxuICBhZGQoY29kZW1vZDogQ29kZW1vZCkge1xuICAgIHRoaXMuI20uc2V0KGNvZGVtb2QuaWQsIGNvZGVtb2QpO1xuICB9XG4gIGdldEFsbCgpIHtcbiAgICByZXR1cm4gb2tBc3luYyhBcnJheS5mcm9tKHRoaXMuI20udmFsdWVzKCkpKTtcbiAgfVxuICBnZXRCeUlkKGlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gb2tBc3luYyh0aGlzLiNtLmdldChpZCkpO1xuICB9XG59XG4iXX0=
|
|
@@ -58,3 +58,4 @@ export const updateCodeReview = {
|
|
|
58
58
|
description: "Update js_code_review workflow to its latest version",
|
|
59
59
|
id: "update-code-review",
|
|
60
60
|
};
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLWNvZGUtcmV2aWV3LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FkYXB0ZXJzL2NvZGVtb2RzL3VwZGF0ZS1jb2RlLXJldmlldy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBRzdCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUM5QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXRDLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUNoQyxDQUFDLEdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQyxRQUFnQixFQUFFLFFBQWdCLEVBQUUsRUFBRTtJQUN0RCxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUNoRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRTlDLElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQztJQUVwQixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRTtRQUNuQixHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJO1lBQ2QsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLFNBQVMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztnQkFDL0MsT0FBTyxTQUFTLENBQUM7WUFDbkIsQ0FBQztZQUNELElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO2dCQUNwQixNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUM3QixJQUNFLE9BQU8sSUFBSSxLQUFLLFFBQVE7b0JBQ3hCLElBQUksQ0FBQyxVQUFVLENBQUMsa0RBQWtELENBQUMsRUFDbkUsQ0FBQztvQkFDRCxHQUFHLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztvQkFDOUIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUU7d0JBQ3JCLFFBQVEsRUFBRSxNQUFNO3dCQUNoQixlQUFlLEVBQUUsT0FBTztxQkFDekIsQ0FBQyxDQUFDO29CQUNILEdBQUcsQ0FBQyxHQUFHLENBQ0wsTUFBTSxFQUNOLG1EQUFtRCxHQUFHLEVBQUUsQ0FDekQsQ0FBQztvQkFDRixPQUFPLEdBQUcsSUFBSSxDQUFDO2dCQUNqQixDQUFDO1lBQ0gsQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7UUFDekIsQ0FBQztLQUNGLENBQUMsQ0FBQztJQUVILElBQUksT0FBTyxFQUFFLENBQUM7UUFDWixNQUFNLENBQUMsSUFBSSxDQUFDLDZCQUE2QixFQUFFO1lBQ3pDLFFBQVE7U0FDVCxDQUFDLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUMsQ0FBQztBQUVKLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFZO0lBQ3ZDLEtBQUssRUFBRSxLQUFLLElBQUksRUFBRTtRQUNoQixNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUNoRCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUM7UUFDdkIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLE9BQU8sa0JBQWtCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQzthQUNuQyxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQ2xCLE1BQU0sYUFBYSxDQUFDO2dCQUNsQixlQUFlLEVBQUUsSUFBSTtnQkFDckIsS0FBSyxFQUFFLENBQUMsMEJBQTBCLENBQUM7Z0JBQ25DLFNBQVMsRUFBRSxxQkFBcUIsQ0FBQyxHQUFHLENBQUM7YUFDdEMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDO2FBQ0QsS0FBSyxDQUFDLEdBQUcsRUFBRTtZQUNWLE1BQU0sQ0FBQyxLQUFLLENBQ1YseURBQXlELEVBQ3pEO2dCQUNFLFVBQVUsRUFBRSxHQUFHLEtBQUssSUFBSSxJQUFJLEVBQUU7YUFDL0IsQ0FDRixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ0QsV0FBVyxFQUFFLHNEQUFzRDtJQUNuRSxFQUFFLEVBQUUsb0JBQW9CO0NBQ3pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRMb2dnZXIgfSBmcm9tIFwiQGxvZ3RhcGUvbG9ndGFwZVwiO1xuaW1wb3J0IHsgcmVwbGFjZUluRmlsZSB9IGZyb20gXCJyZXBsYWNlLWluLWZpbGVcIjtcbmltcG9ydCAqIGFzIFlBTUwgZnJvbSBcInlhbWxcIjtcblxuaW1wb3J0IHsgQ29kZW1vZCB9IGZyb20gXCIuLi8uLi9kb21haW4vY29kZW1vZC5qc1wiO1xuaW1wb3J0IHsgZ2V0TGF0ZXN0Q29tbWl0U2hhIH0gZnJvbSBcIi4vZ2l0LmpzXCI7XG5pbXBvcnQgeyBpc0NoaWxkT2YgfSBmcm9tIFwiLi95YW1sLmpzXCI7XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVKU0NvZGVSZXZpZXdKb2IgPVxuICAoc2hhOiBzdHJpbmcpID0+ICh3b3JrZmxvdzogc3RyaW5nLCBmaWxlbmFtZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgbG9nZ2VyID0gZ2V0TG9nZ2VyKFtcImR4LWNsaVwiLCBcImNvZGVtb2RcIl0pO1xuICAgIGNvbnN0IGRvY3VtZW50ID0gWUFNTC5wYXJzZURvY3VtZW50KHdvcmtmbG93KTtcblxuICAgIGxldCB1cGRhdGVkID0gZmFsc2U7XG5cbiAgICBZQU1MLnZpc2l0KGRvY3VtZW50LCB7XG4gICAgICBNYXAoXywgbWFwLCBwYXRoKSB7XG4gICAgICAgIGlmIChtYXAuaGFzKFwiam9ic1wiKSB8fCBpc0NoaWxkT2YocGF0aCwgXCJqb2JzXCIpKSB7XG4gICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWFwLmhhcyhcInVzZXNcIikpIHtcbiAgICAgICAgICBjb25zdCB1c2VzID0gbWFwLmdldChcInVzZXNcIik7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgdHlwZW9mIHVzZXMgPT09IFwic3RyaW5nXCIgJiZcbiAgICAgICAgICAgIHVzZXMuc3RhcnRzV2l0aChcInBhZ29wYS9keC8uZ2l0aHViL3dvcmtmbG93cy9qc19jb2RlX3Jldmlldy55YW1sQFwiKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgbWFwLnNldChcInNlY3JldHNcIiwgXCJpbmhlcml0XCIpO1xuICAgICAgICAgICAgbWFwLnNldChcInBlcm1pc3Npb25zXCIsIHtcbiAgICAgICAgICAgICAgY29udGVudHM6IFwicmVhZFwiLFxuICAgICAgICAgICAgICBcInB1bGwtcmVxdWVzdHNcIjogXCJ3cml0ZVwiLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBtYXAuc2V0KFxuICAgICAgICAgICAgICBcInVzZXNcIixcbiAgICAgICAgICAgICAgYHBhZ29wYS9keC8uZ2l0aHViL3dvcmtmbG93cy9qc19jb2RlX3Jldmlldy55YW1sQCR7c2hhfWAsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdXBkYXRlZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBZQU1MLnZpc2l0LlNLSVA7XG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgaWYgKHVwZGF0ZWQpIHtcbiAgICAgIGxvZ2dlci5pbmZvKFwiV29ya2Zsb3cge2ZpbGVuYW1lfSB1cGRhdGVkXCIsIHtcbiAgICAgICAgZmlsZW5hbWUsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBZQU1MLnN0cmluZ2lmeShkb2N1bWVudCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHdvcmtmbG93O1xuICB9O1xuXG5leHBvcnQgY29uc3QgdXBkYXRlQ29kZVJldmlldzogQ29kZW1vZCA9IHtcbiAgYXBwbHk6IGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBsb2dnZXIgPSBnZXRMb2dnZXIoW1wiZHgtY2xpXCIsIFwiY29kZW1vZFwiXSk7XG4gICAgY29uc3Qgb3duZXIgPSBcInBhZ29wYVwiO1xuICAgIGNvbnN0IHJlcG8gPSBcImR4XCI7XG4gICAgcmV0dXJuIGdldExhdGVzdENvbW1pdFNoYShvd25lciwgcmVwbylcbiAgICAgIC50aGVuKGFzeW5jIChzaGEpID0+IHtcbiAgICAgICAgYXdhaXQgcmVwbGFjZUluRmlsZSh7XG4gICAgICAgICAgYWxsb3dFbXB0eVBhdGhzOiB0cnVlLFxuICAgICAgICAgIGZpbGVzOiBbXCIuZ2l0aHViL3dvcmtmbG93cy8qLnlhbWxcIl0sXG4gICAgICAgICAgcHJvY2Vzc29yOiB1cGRhdGVKU0NvZGVSZXZpZXdKb2Ioc2hhKSxcbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgbG9nZ2VyLmVycm9yKFxuICAgICAgICAgIFwiRmFpbGVkIHRvIGZldGNoIHRoZSBsYXRlc3QgY29tbWl0IHNoYSBmcm9tIHtyZXBvc2l0b3J5fVwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHJlcG9zaXRvcnk6IGAke293bmVyfS8ke3JlcG99YCxcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgICAgfSk7XG4gIH0sXG4gIGRlc2NyaXB0aW9uOiBcIlVwZGF0ZSBqc19jb2RlX3JldmlldyB3b3JrZmxvdyB0byBpdHMgbGF0ZXN0IHZlcnNpb25cIixcbiAgaWQ6IFwidXBkYXRlLWNvZGUtcmV2aWV3XCIsXG59O1xuIl19
|
|
@@ -82,3 +82,4 @@ export const useAzureAppsvc = {
|
|
|
82
82
|
description: "Refactor legacy deploy workflows to use release-azure-appsvc",
|
|
83
83
|
id: "use-azure-appsvc",
|
|
84
84
|
};
|
|
85
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLWF6dXJlLWFwcHN2Yy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hZGFwdGVycy9jb2RlbW9kcy91c2UtYXp1cmUtYXBwc3ZjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxrQkFBa0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBR3hCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXRDLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FDMUIsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsUUFBZ0IsRUFBRSxRQUFnQixFQUFFLEVBQUU7SUFDdEQsTUFBTSxNQUFNLEdBQVcsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDeEQsTUFBTSxDQUFDLEtBQUssQ0FBQyw0QkFBNEIsRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDekQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM5QyxJQUFJLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDcEI7Ozs7Ozs7T0FPRztJQUNILElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFO1FBQ25CLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUk7WUFDZCxJQUFJLFNBQVMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksU0FBUyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDO2dCQUN2RCxPQUFPLFNBQVMsQ0FBQztZQUNuQixDQUFDO1lBQ0QsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FB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QztTQUNoQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsV0FBVyxFQUFFLDhEQUE4RDtJQUMzRSxFQUFFLEVBQUUsa0JBQWtCO0NBQ3ZCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRMb2dnZXIsIExvZ2dlciB9IGZyb20gXCJAbG9ndGFwZS9sb2d0YXBlXCI7XG5pbXBvcnQgeyByZXBsYWNlSW5GaWxlIH0gZnJvbSBcInJlcGxhY2UtaW4tZmlsZVwiO1xuaW1wb3J0IFlBTUwgZnJvbSBcInlhbWxcIjtcblxuaW1wb3J0IHsgQ29kZW1vZCB9IGZyb20gXCIuLi8uLi9kb21haW4vY29kZW1vZC5qc1wiO1xuaW1wb3J0IHsgZ2V0TGF0ZXN0Q29tbWl0U2hhT3JSZWYgfSBmcm9tIFwiLi9naXQuanNcIjtcbmltcG9ydCB7IGlzQ2hpbGRPZiB9IGZyb20gXCIuL3lhbWwuanNcIjtcblxuZXhwb3J0IGNvbnN0IG1pZ3JhdGVXb3JrZmxvdyA9XG4gIChzaGE6IHN0cmluZykgPT4gKHdvcmtmbG93OiBzdHJpbmcsIGZpbGVuYW1lOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBsb2dnZXI6IExvZ2dlciA9IGdldExvZ2dlcihbXCJkeC1jbGlcIiwgXCJjb2RlbW9kXCJdKTtcbiAgICBsb2dnZXIuZGVidWcoXCJQcm9jZXNzaW5nIHtmaWxlbmFtZX0gZmlsZVwiLCB7IGZpbGVuYW1lIH0pO1xuICAgIGNvbnN0IGRvY3VtZW50ID0gWUFNTC5wYXJzZURvY3VtZW50KHdvcmtmbG93KTtcbiAgICBsZXQgdXBkYXRlZCA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIFZpc2l0IHRoZSBZQU1MIEFTVCB0byBmaW5kIGFuZCB1cGRhdGUgc3BlY2lmaWMga2V5c1xuICAgICAqIC0gVmlzaXQgdGhlIHRyZWUgdW50aWwgd2UgZmluZCBqb2Igd2l0aCBcInVzZXNcIiBjb250YWluaW5nIFwid2ViX2FwcF9kZXBsb3lcIiBvciBcImZ1bmN0aW9uX2FwcF9kZXBsb3lcIlxuICAgICAqIC0gQWRkIFwiZGlzYWJsZV9hdXRvX3N0YWdpbmdfZGVwbG95OiB0cnVlXCIgdW5kZXIgXCJ3aXRoXCJcbiAgICAgKiAtIFJlbmFtZSBcImZ1bmN0aW9uX2FwcF9uYW1lXCIgdG8gXCJ3ZWJfYXBwX25hbWVcIlxuICAgICAqIC0gUmVtb3ZlIFwidXNlX3N0YWdpbmdfc2xvdFwiXG4gICAgICogLSBVcGRhdGUgXCJ1c2VzXCIgdG8gcG9pbnQgdG8gXCJwYWdvcGEvZHgvLmdpdGh1Yi93b3JrZmxvd3MvcmVsZWFzZS1henVyZS1hcHBzdmMueWFtbEBMQVRFU1RfU0hBXCJcbiAgICAgKi9cbiAgICBZQU1MLnZpc2l0KGRvY3VtZW50LCB7XG4gICAgICBNYXAoXywgbWFwLCBwYXRoKSB7XG4gICAgICAgIGlmIChpc0NoaWxkT2YocGF0aCwgXCJqb2JzXCIpIHx8IGlzQ2hpbGRPZihwYXRoLCBcIndpdGhcIikpIHtcbiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtYXAuaGFzKFwiam9ic1wiKSkge1xuICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1hcC5oYXMoXCJ1c2VzXCIpKSB7XG4gICAgICAgICAgY29uc3QgdXNlcyA9IG1hcC5nZXQoXCJ1c2VzXCIpO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHR5cGVvZiB1c2VzID09PSBcInN0cmluZ1wiICYmXG4gICAgICAgICAgICB1c2VzLm1hdGNoKFxuICAgICAgICAgICAgICAvXnBhZ29wYVxcL2R4XFwvLmdpdGh1YlxcL3dvcmtmbG93c1xcLyh3ZWJ8ZnVuY3Rpb24pX2FwcF9kZXBsb3kvLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKFwiQWRkaW5nIGRpc2FibGVfYXV0b19zdGFnaW5nX2RlcGxveVwiKTtcbiAgICAgICAgICAgIG1hcC5hZGRJbihbXCJ3aXRoXCIsIFwiZGlzYWJsZV9hdXRvX3N0YWdpbmdfZGVwbG95XCJdLCB0cnVlKTtcbiAgICAgICAgICAgIG1hcC5zZXQoXCJwZXJtaXNzaW9uc1wiLCB7XG4gICAgICAgICAgICAgIGF0dGVzdGF0aW9uczogXCJ3cml0ZVwiLFxuICAgICAgICAgICAgICBjb250ZW50czogXCJyZWFkXCIsXG4gICAgICAgICAgICAgIFwiaWQtdG9rZW5cIjogXCJ3cml0ZVwiLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB1cGRhdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBZQU1MLnZpc2l0LlNLSVA7XG4gICAgICB9LFxuICAgICAgUGFpcihfLCBwYWlyKSB7XG4gICAgICAgIGlmIChZQU1MLmlzU2NhbGFyKHBhaXIua2V5KSkge1xuICAgICAgICAgIGlmIChwYWlyLmtleS52YWx1ZSA9PT0gXCJmdW5jdGlvbl9hcHBfbmFtZVwiKSB7XG4gICAgICAgICAgICB1cGRhdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZyhcIlVwZGF0aW5nIGZ1bmN0aW9uX2FwcF9uYW1lIHRvIHdlYl9hcHBfbmFtZVwiKTtcbiAgICAgICAgICAgIHJldHVybiBuZXcgWUFNTC5QYWlyKFwid2ViX2FwcF9uYW1lXCIsIHBhaXIudmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAocGFpci5rZXkudmFsdWUgPT09IFwidXNlX3N0YWdpbmdfc2xvdFwiKSB7XG4gICAgICAgICAgICB1cGRhdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZyhcIlJlbW92aW5nIHVzZV9zdGFnaW5nX3Nsb3RcIik7XG4gICAgICAgICAgICByZXR1cm4gWUFNTC52aXNpdC5SRU1PVkU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChwYWlyLmtleS52YWx1ZSA9PT0gXCJ1c2VzXCIpIHtcbiAgICAgICAgICAgIHVwZGF0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKFwiVXBkYXRpbmcgdXNlcyB2YWx1ZVwiKTtcbiAgICAgICAgICAgIHJldHVybiBuZXcgWUFNTC5QYWlyKFxuICAgICAgICAgICAgICBcInVzZXNcIixcbiAgICAgICAgICAgICAgYHBhZ29wYS9keC8uZ2l0aHViL3dvcmtmbG93cy9yZWxlYXNlLWF6dXJlLWFwcHN2Yy12MS55YW1sQCR7c2hhfWAsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9KTtcbiAgICBpZiAodXBkYXRlZCkge1xuICAgICAgbG9nZ2VyLmluZm8oXCJXb3JrZmxvdyB7ZmlsZW5hbWV9IHVwZGF0ZWRcIiwge1xuICAgICAgICBmaWxlbmFtZSxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIFlBTUwuc3RyaW5naWZ5KGRvY3VtZW50KTtcbiAgICB9XG4gICAgbG9nZ2VyLmRlYnVnKFwiTm8gY2hhbmdlcyBhcHBsaWVkIHRvIHtmaWxlbmFtZX1cIiwgeyBmaWxlbmFtZSB9KTtcbiAgICByZXR1cm4gd29ya2Zsb3c7XG4gIH07XG5cbmV4cG9ydCBjb25zdCB1c2VBenVyZUFwcHN2YzogQ29kZW1vZCA9IHtcbiAgYXBwbHk6IGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBzaGEgPSBhd2FpdCBnZXRMYXRlc3RDb21taXRTaGFPclJlZihcInBhZ29wYVwiLCBcImR4XCIpO1xuICAgIGF3YWl0IHJlcGxhY2VJbkZpbGUoe1xuICAgICAgYWxsb3dFbXB0eVBhdGhzOiB0cnVlLFxuICAgICAgZmlsZXM6IFtcIi5naXRodWIvd29ya2Zsb3dzLyoueWFtbFwiXSxcbiAgICAgIHByb2Nlc3NvcjogbWlncmF0ZVdvcmtmbG93KHNoYSksXG4gICAgfSk7XG4gIH0sXG4gIGRlc2NyaXB0aW9uOiBcIlJlZmFjdG9yIGxlZ2FjeSBkZXBsb3kgd29ya2Zsb3dzIHRvIHVzZSByZWxlYXNlLWF6dXJlLWFwcHN2Y1wiLFxuICBpZDogXCJ1c2UtYXp1cmUtYXBwc3ZjXCIsXG59O1xuIl19
|
|
@@ -212,3 +212,4 @@ export default {
|
|
|
212
212
|
description: "Migrate the project to use pnpm as the package manager",
|
|
213
213
|
id: "use-pnpm",
|
|
214
214
|
};
|
|
215
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLXBucG0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWRhcHRlcnMvY29kZW1vZHMvdXNlLXBucG0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxNQUFNLE1BQU0sb0JBQW9CLENBQUM7QUFDeEMsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFHeEIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQU94RCxNQUFNLE9BQU8sR0FBRztJQUNkLFlBQVksR0FBRyxtQkFBbUIsQ0FBQztJQUVuQyxLQUFLLENBQUMsY0FBYztRQUNsQixNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUEsc0JBQXNCLENBQUM7UUFDakQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0QyxNQUFNLGNBQWMsR0FBRyxFQUFFLENBQUM7UUFDMUIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDOUIsS0FBSyxNQUFNLEVBQUUsSUFBSSxVQUFVLEVBQUUsQ0FBQztnQkFDNUIsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDO29CQUM5QixjQUFjLENBQUMs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QUFFRixlQUFlO0lBQ2IsS0FBSztJQUNMLFdBQVcsRUFBRSx3REFBd0Q7SUFDckUsRUFBRSxFQUFFLFVBQVU7Q0FDRyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0TG9nZ2VyIH0gZnJvbSBcIkBsb2d0YXBlL2xvZ3RhcGVcIjtcbmltcG9ydCB7ICQgfSBmcm9tIFwiZXhlY2FcIjtcbmltcG9ydCBhc3NlcnQgZnJvbSBcIm5vZGU6YXNzZXJ0L3N0cmljdFwiO1xuaW1wb3J0IGZzIGZyb20gXCJub2RlOmZzL3Byb21pc2VzXCI7XG5pbXBvcnQgeyByZXBsYWNlSW5GaWxlIH0gZnJvbSBcInJlcGxhY2UtaW4tZmlsZVwiO1xuaW1wb3J0IHNlbXZlciBmcm9tIFwic2VtdmVyXCI7XG5pbXBvcnQgWUFNTCBmcm9tIFwieWFtbFwiO1xuXG5pbXBvcnQgeyBDb2RlbW9kIH0gZnJvbSBcIi4uLy4uL2RvbWFpbi9jb2RlbW9kLmpzXCI7XG5pbXBvcnQgeyBnZXRMYXRlc3RDb21taXRTaGFPclJlZiB9IGZyb20gXCIuL2dpdC5qc1wiO1xuaW1wb3J0IHsgdXBkYXRlSlNDb2RlUmV2aWV3Sm9iIH0gZnJvbSBcIi4vdXBkYXRlLWNvZGUtcmV2aWV3LmpzXCI7XG5pbXBvcnQgeyBtaWdyYXRlV29ya2Zsb3cgfSBmcm9tIFwiLi91c2UtYXp1cmUtYXBwc3ZjLmpzXCI7XG5cbnR5cGUgTm9kZVBhY2thZ2VNYW5hZ2VyID0ge1xuICBsaXN0V29ya3NwYWNlcygpOiBQcm9taXNlPHN0cmluZ1tdPjtcbiAgbG9ja0ZpbGVOYW1lOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgY2xhc3MgTlBNIGltcGxlbWVudHMgTm9kZVBhY2thZ2VNYW5hZ2VyIHtcbiAgbG9ja0ZpbGVOYW1lID0gXCJwYWNrYWdlLWxvY2suanNvblwiO1xuXG4gIGFzeW5jIGxpc3RXb3Jrc3BhY2VzKCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICBjb25zdCB7IHN0ZG91dCB9ID0gYXdhaXQgJGBucG0gcXVlcnkgLndvcmtzcGFjZWA7XG4gICAgY29uc3Qgd29ya3NwYWNlcyA9IEpTT04ucGFyc2Uoc3Rkb3V0KTtcbiAgICBjb25zdCB3b3Jrc3BhY2VOYW1lcyA9IFtdO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHdvcmtzcGFjZXMpKSB7XG4gICAgICBmb3IgKGNvbnN0IHdzIG9mIHdvcmtzcGFjZXMpIHtcbiAgICAgICAgaWYgKE9iamVjdC5oYXNPd24od3MsIFwibmFtZVwiKSkge1xuICAgICAgICAgIHdvcmtzcGFjZU5hbWVzLnB1c2god3MubmFtZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHdvcmtzcGFjZU5hbWVzO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBZYXJuIGltcGxlbWVudHMgTm9kZVBhY2thZ2VNYW5hZ2VyIHtcbiAgbG9ja0ZpbGVOYW1lID0gXCJ5YXJuLmxvY2tcIjtcblxuICBhc3luYyBsaXN0V29ya3NwYWNlcygpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgY29uc3QgeyBzdGRvdXQgfSA9IGF3YWl0ICQoeyBsaW5lczogdHJ1ZSB9KWB5YXJuIHdvcmtzcGFjZXMgbGlzdCAtLWpzb25gO1xuICAgIGNvbnN0IHdvcmtzcGFjZU5hbWVzID0gW107XG4gICAgZm9yIChjb25zdCBsaW5lIG9mIHN0ZG91dCkge1xuICAgICAgY29uc3Qgd3MgPSBKU09OLnBhcnNlKGxpbmUpO1xuICAgICAgaWYgKE9iamVjdC5oYXNPd24od3MsIFwibmFtZVwiKSkge1xuICAgICAgICB3b3Jrc3BhY2VOYW1lcy5wdXNoKHdzLm5hbWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gd29ya3NwYWNlTmFtZXM7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV4dHJhY3RQYWNrYWdlRXh0ZW5zaW9ucygpOiBQcm9taXNlPG9iamVjdCB8IHVuZGVmaW5lZD4ge1xuICAvLyBSZWFkIHRoZSAueWFybnJjLnlhbWwgZmlsZSBpZiBpdCBleGlzdHMgYW5kIGV4dHJhY3QgdGhlIHBhY2thZ2VFeHRlbnNpb25zIGZpZWxkXG4gIHRyeSB7XG4gICAgY29uc3QgeWFybnJjID0gYXdhaXQgZnMucmVhZEZpbGUoXCIueWFybnJjLnltbFwiLCBcInV0Zi04XCIpO1xuICAgIGNvbnN0IHBhcnNlZCA9IFlBTUwucGFyc2UoeWFybnJjKTtcbiAgICBpZiAocGFyc2VkLnBhY2thZ2VFeHRlbnNpb25zKSB7XG4gICAgICByZXR1cm4gcGFyc2VkLnBhY2thZ2VFeHRlbnNpb25zO1xuICAgIH1cbiAgfSBjYXRjaCB7XG4gICAgLy8gRmlsZSBkb2VzIG5vdCBleGlzdCBvciBpcyBub3QgcmVhZGFibGUsIGlnbm9yZVxuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwcmVwYXJlUGFja2FnZUpzb25Gb3JQbnBtKCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgY29uc3QgcGFja2FnZUpzb24gPSBhd2FpdCBmcy5yZWFkRmlsZShcInBhY2thZ2UuanNvblwiLCBcInV0Zi04XCIpO1xuICBjb25zdCBtYW5pZmVzdCA9IEpTT04ucGFyc2UocGFja2FnZUpzb24pO1xuICBsZXQgd29ya3NwYWNlczogc3RyaW5nW10gPSBbXTtcbiAgaWYgKE9iamVjdC5oYXNPd24obWFuaWZlc3QsIFwicGFja2FnZU1hbmFnZXJcIikpIHtcbiAgICBkZWxldGUgbWFuaWZlc3QucGFja2FnZU1hbmFnZXI7XG4gIH1cbiAgaWYgKE9iamVjdC5oYXNPd24obWFuaWZlc3QsIFwid29ya3NwYWNlc1wiKSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KG1hbmlmZXN0LndvcmtzcGFjZXMpKSB7XG4gICAgICB3b3Jrc3BhY2VzID0gbWFuaWZlc3Qud29ya3NwYWNlcztcbiAgICB9XG4gICAgZGVsZXRlIG1hbmlmZXN0LndvcmtzcGFjZXM7XG4gIH1cbiAgYXdhaXQgZnMud3JpdGVGaWxlKFwicGFja2FnZS5qc29uXCIsIEpTT04uc3RyaW5naWZ5KG1hbmlmZXN0LCBudWxsLCAyKSk7XG4gIHJldHVybiB3b3Jrc3BhY2VzO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd3JpdGVQbnBtV29ya3NwYWNlRmlsZShcbiAgd29ya3NwYWNlczogc3RyaW5nW10sXG4gIHBhY2thZ2VFeHRlbnNpb25zOiBvYmplY3QgfCB1bmRlZmluZWQsXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgLy8gV2UgaW5saW5lIGFsbCB0aGUgZGVmYXVsdCBzZXR0aW5ncyBoZXJlIGJlY2F1c2UgUmVub3ZhdGVcbiAgLy8gZG9lcyBub3Qgc3VwcG9ydCBQTlBNJ3MgY29uZmlnIGRlcGVuZGVuY2llcyB5ZXQuXG4gIGNvbnN0IHBucG1Xb3Jrc3BhY2UgPSB7XG4gICAgY2xlYW51cFVudXNlZENhdGFsb2dzOiB0cnVlLFxuICAgIGxpbmtXb3Jrc3BhY2VQYWNrYWdlczogdHJ1ZSxcbiAgICBwYWNrYWdlRXh0ZW5zaW9ucyxcbiAgICBwYWNrYWdlSW1wb3J0TWV0aG9kOiBcImNsb25lLW9yLWNvcHlcIixcbiAgICBwYWNrYWdlczogd29ya3NwYWNlcy5sZW5ndGggPiAwID8gd29ya3NwYWNlcyA6IFtcImFwcHMvKlwiLCBcInBhY2thZ2VzLypcIl0sXG4gIH07XG4gIGNvbnN0IHlhbWxDb250ZW50ID0gWUFNTC5zdHJpbmdpZnkocG5wbVdvcmtzcGFjZSk7XG4gIGF3YWl0IGZzLndyaXRlRmlsZShcInBucG0td29ya3NwYWNlLnlhbWxcIiwgeWFtbENvbnRlbnQsIFwidXRmLThcIik7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlbW92ZUZpbGVzKC4uLmZpbGVzOiBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICBmaWxlcy5tYXAoKGZpbGUpID0+XG4gICAgICAvLyBSZW1vdmUgdGhlIGZpbGUgaWYgaXQgZXhpc3RzLCBmYWlsIHNpbGVudGx5IGlmIGl0IGRvZXNuJ3QuXG4gICAgICBmcy5ybShmaWxlLCB7IGZvcmNlOiB0cnVlLCByZWN1cnNpdmU6IHRydWUgfSkuY2F0Y2goKCkgPT4gdW5kZWZpbmVkKSxcbiAgICApLFxuICApO1xufVxuXG5hc3luYyBmdW5jdGlvbiByZXBsYWNlUE1PY2N1cnJlbmNlcygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgbG9nZ2VyID0gZ2V0TG9nZ2VyKFtcImR4LWNsaVwiLCBcImNvZGVtb2RcIl0pO1xuICBsb2dnZXIuaW5mbyhcIlJlcGxhY2luZyB5YXJuIGFuZCBucG0gb2NjdXJyZW5jZXMgaW4gZmlsZXMuLi5cIik7XG4gIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCByZXBsYWNlSW5GaWxlKHtcbiAgICBhbGxvd0VtcHR5UGF0aHM6IHRydWUsXG4gICAgZmlsZXM6IFtcIioqLyouanNvblwiLCBcIioqLyoubWRcIiwgXCIqKi9Eb2NrZXJmaWxlXCIsIFwiKiovZG9ja2VyLWNvbXBvc2UueW1sXCJdLFxuICAgIGZyb206IFtcbiAgICAgIFwiaHR0cHM6Ly95YXJucGtnLmNvbS9cIixcbiAgICAgIFwiaHR0cHM6Ly9jbGFzc2ljLnlhcm5wa2cuY29tL1wiLFxuICAgICAgL1xcYih5YXJuIHdvcmtzcGFjZXxucG0gLShcXGItd29ya3NwYWNlXFxifFxcYndcXGIpKSAoXFxTKylcXGIvZyxcbiAgICAgIC9cXGIoeWFybiB3b3Jrc3BhY2V8bnBtIC0oXFxiLXdvcmtzcGFjZVxcYnxcXGJ3XFxiKSlcXGIvZyxcbiAgICAgIC9cXGIoeWFybiBpbnN0YWxsIC0taW1tdXRhYmxlfG5wbSBjaSlcXGIvZyxcbiAgICAgIC9cXGIoeWFybiAtcSBkbHh8bnB4KVxcYi9nLFxuICAgICAgL1xcYigoeWFybnxucG0pIHJ1bilcXGIvZyxcbiAgICAgIC8oXnxcXHN8XCIpKHlhcm58bnBtKSg/IVxcUykvZ2ksXG4gICAgXSxcbiAgICBpZ25vcmU6IFtcIioqL25vZGVfbW9kdWxlcy8qKlwiLCBcIioqL2Rpc3QvKipcIiwgXCIqKi9idWlsZC8qKlwiXSxcbiAgICB0bzogW1xuICAgICAgXCJodHRwczovL3BucG0uaW8vXCIsXG4gICAgICBcImh0dHBzOi8vcG5wbS5pby9cIixcbiAgICAgIFwicG5wbSAtLWZpbHRlciAkM1wiLFxuICAgICAgXCJwbnBtIC0tZmlsdGVyIDxwYWNrYWdlLXNlbGVjdG9yPlwiLFxuICAgICAgXCJwbnBtIGluc3RhbGwgLS1mcm96ZW4tbG9ja2ZpbGVcIixcbiAgICAgIFwicG5wbSBkbHhcIixcbiAgICAgIFwicG5wbSBydW5cIixcbiAgICAgIFwiJDFwbnBtXCIsXG4gICAgXSxcbiAgfSk7XG4gIGNvbnN0IGNvdW50ID0gcmVzdWx0cy5yZWR1Y2UoXG4gICAgKGFjYywgZmlsZSkgPT4gKGZpbGUuaGFzQ2hhbmdlZCA/IGFjYyArIDEgOiBhY2MpLFxuICAgIDAsXG4gICk7XG4gIGxvZ2dlci5pbmZvKFwiUmVwbGFjZWQgeWFybiBvY2N1cnJlbmNlcyBpbiB7Y291bnR9IGZpbGVzXCIsIHsgY291bnQgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVwZGF0ZURYV29ya2Zsb3dzKCk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBsb2dnZXIgPSBnZXRMb2dnZXIoW1wiZHgtY2xpXCIsIFwiY29kZW1vZFwiXSk7XG4gIGxvZ2dlci5pbmZvKFwiVXBkYXRpbmcgR2l0aHViIFdvcmtmbG93cyB3b3JrZmxvd3MuLi5cIik7XG4gIC8vIEdldCB0aGUgbGF0ZXN0IGNvbW1pdCBzaGEgZnJvbSB0aGUgbWFpbiBicmFuY2ggb2YgdGhlIGR4IHJlcG9zaXRvcnlcbiAgY29uc3Qgc2hhID0gYXdhaXQgZ2V0TGF0ZXN0Q29tbWl0U2hhT3JSZWYoXCJwYWdvcGFcIiwgXCJkeFwiKTtcbiAgLy8gVXBkYXRlIHRoZSBqc19jb2RlX3JldmlldyB3b3JrZmxvdyB0byB1c2UgdGhlIGxhdGVzdCBjb21taXQgc2hhXG4gIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCByZXBsYWNlSW5GaWxlKHtcbiAgICBhbGxvd0VtcHR5UGF0aHM6IHRydWUsXG4gICAgZmlsZXM6IFtcIi5naXRodWIvd29ya2Zsb3dzLyoueWFtbFwiLCBcIi5naXRodWIvd29ya2Zsb3dzLyoueW1sXCJdLFxuICAgIHByb2Nlc3NvcjogdXBkYXRlSlNDb2RlUmV2aWV3Sm9iKHNoYSksXG4gIH0pO1xuICBjb25zdCBpZ25vcmUgPSByZXN1bHRzLmZpbHRlcigocikgPT4gci5oYXNDaGFuZ2VkKS5tYXAoKHIpID0+IHIuZmlsZSk7XG4gIC8vIFVwZGF0ZSB0aGUgbGVnYWN5IGRlcGxveW1lbnQgd29ya2Zsb3cgdG8gcmVsZWFzZS1henVyZS1hcHBzdmMtdjEueWFtbFxuICBhd2FpdCByZXBsYWNlSW5GaWxlKHtcbiAgICBhbGxvd0VtcHR5UGF0aHM6IHRydWUsXG4gICAgZmlsZXM6IFtcIi5naXRodWIvd29ya2Zsb3dzLyoueWFtbFwiLCBcIi5naXRodWIvd29ya2Zsb3dzLyoueW1sXCJdLFxuICAgIGlnbm9yZSxcbiAgICBwcm9jZXNzb3I6IG1pZ3JhdGVXb3JrZmxvdyhzaGEpLFxuICB9KTtcbn1cblxuZXhwb3J0IGNvbnN0IHVzZVBucG0gPSBhc3luYyAoXG4gIHBhY2thZ2VNYW5hZ2VyOiBzdHJpbmcsXG4gIGN1cnJlbnROb2RlVmVyc2lvbjogc3RyaW5nLFxuKSA9PiB7XG4gIGNvbnN0IG1pbk5vZGVWZXJzaW9uID0gXCIyMC4xOS41XCI7XG5cbiAgYXNzZXJ0Lm5vdEVxdWFsKHBhY2thZ2VNYW5hZ2VyLCBcInBucG1cIiwgXCJQcm9qZWN0IGlzIGFscmVhZHkgdXNpbmcgcG5wbVwiKTtcblxuICBhc3NlcnQub2soXG4gICAgc2VtdmVyLmd0ZShjdXJyZW50Tm9kZVZlcnNpb24sIG1pbk5vZGVWZXJzaW9uKSxcbiAgICBgaGlzIGNvZGVtb2QgcmVxdWlyZXMgTm9kZS5qcyA+PSAke21pbk5vZGVWZXJzaW9ufS4gQ3VycmVudCB2ZXJzaW9uOiAke2N1cnJlbnROb2RlVmVyc2lvbn1gLFxuICApO1xuXG4gIGNvbnN0IGxvZ2dlciA9IGdldExvZ2dlcihbXCJkeC1jbGlcIiwgXCJjb2RlbW9kXCJdKTtcblxuICBjb25zdCBwbSA9IHBhY2thZ2VNYW5hZ2VyID09PSBcInlhcm5cIiA/IG5ldyBZYXJuKCkgOiBuZXcgTlBNKCk7XG4gIGNvbnN0IGxvY2FsV29ya3NwYWNlcyA9IGF3YWl0IHBtLmxpc3RXb3Jrc3BhY2VzKCk7XG5cbiAgLy8gVXBkYXRlIGxvY2FsIGRlcGVuZGVuY2llcyB0byB1c2UgXCJ3b3Jrc3BhY2U6XCIgcHJvdG9jb2xcbiAgaWYgKGxvY2FsV29ya3NwYWNlcy5sZW5ndGggPiAwKSB7XG4gICAgbG9nZ2VyLmluZm8oXCJVc2luZyB0aGUge3Byb3RvY29sfSBwcm90b2NvbCBmb3IgbG9jYWwgZGVwZW5kZW5jaWVzXCIsIHtcbiAgICAgIHByb3RvY29sOiBcIndvcmtzcGFjZTpcIixcbiAgICB9KTtcbiAgICBhd2FpdCByZXBsYWNlSW5GaWxlKHtcbiAgICAgIGFsbG93RW1wdHlQYXRoczogdHJ1ZSxcbiAgICAgIGZpbGVzOiBbXCIqKi9wYWNrYWdlLmpzb25cIl0sXG4gICAgICBmcm9tOiBsb2NhbFdvcmtzcGFjZXMubWFwKCh3cykgPT4gbmV3IFJlZ0V4cChgXCIke3dzfVwiOiBcIi4qP1wiYCwgXCJnXCIpKSxcbiAgICAgIHRvOiBsb2NhbFdvcmtzcGFjZXMubWFwKCh3cykgPT4gYFwiJHt3c31cIjogXCJ3b3Jrc3BhY2U6XlwiYCksXG4gICAgfSk7XG4gIH1cblxuICAvLyBSZW1vdmUgdW51c2VkIGZpZWxkIGZyb20gcGFja2FnZS5qc29uXG4gIGxvZ2dlci5pbmZvKFwiUmVtb3ZlIHVudXNlZCBmaWVsZHMgZnJvbSB7ZmlsZX1cIiwge1xuICAgIGZpbGU6IFwicGFja2FnZS5qc29uXCIsXG4gIH0pO1xuICBjb25zdCB3b3Jrc3BhY2VzID0gYXdhaXQgcHJlcGFyZVBhY2thZ2VKc29uRm9yUG5wbSgpO1xuXG4gIC8vIEV4dHJhY3QgY3VzdG9tIHBhY2thZ2VFeHRlbnNpb25zIGZyb20gLnlhcm5yYy55bWwgaWYgYW55XG4gIGNvbnN0IHBhY2thZ2VFeHRlbnNpb25zID1cbiAgICBwYWNrYWdlTWFuYWdlciA9PT0gXCJ5YXJuXCIgPyBhd2FpdCBleHRyYWN0UGFja2FnZUV4dGVuc2lvbnMoKSA6IHVuZGVmaW5lZDtcblxuICAvLyBDcmVhdGUgcG5wbS13b3Jrc3BhY2UueWFtbFxuICBsb2dnZXIuaW5mbyhcIkNyZWF0ZSB7ZmlsZX1cIiwge1xuICAgIGZpbGU6IFwicG5wbS13b3Jrc3BhY2UueWFtbFwiLFxuICB9KTtcbiAgYXdhaXQgd3JpdGVQbnBtV29ya3NwYWNlRmlsZSh3b3Jrc3BhY2VzLCBwYWNrYWdlRXh0ZW5zaW9ucyk7XG5cbiAgLy8gUmVtb3ZlIHlhcm4gYW5kIG5vZGVfbW9kdWxlcyBmaWxlcyBhbmQgZm9sZGVyc1xuICBsb2dnZXIuaW5mbyhcIlJlbW92ZSBub2RlX21vZHVsZXMgYW5kIHlhcm4gZmlsZXNcIik7XG4gIGF3YWl0IHJlbW92ZUZpbGVzKFxuICAgIFwiLnlhcm5yY1wiLFxuICAgIFwiLnlhcm5yYy55bWxcIixcbiAgICBcInlhcm4uY29uZmlnLmNqc1wiLFxuICAgIFwiLnlhcm5cIixcbiAgICBcIi5wbnAuY2pzXCIsXG4gICAgXCIucG5wLmxvYWRlci5janNcIixcbiAgICBcIm5vZGVfbW9kdWxlc1wiLFxuICApO1xuXG4gIC8vIEltcG9ydCBsb2NrZmlsZVxuICBjb25zdCBzdGF0ID0gYXdhaXQgZnMuc3RhdChwbS5sb2NrRmlsZU5hbWUpO1xuICBpZiAoc3RhdC5pc0ZpbGUoKSkge1xuICAgIGxvZ2dlci5pbmZvKFwiSW1wb3J0aW5nIHtzb3VyY2V9IHRvIHt0YXJnZXR9XCIsIHtcbiAgICAgIHNvdXJjZTogcG0ubG9ja0ZpbGVOYW1lLFxuICAgICAgdGFyZ2V0OiBcInBucG0tbG9jay55YW1sXCIsXG4gICAgfSk7XG4gICAgYXdhaXQgJGBjb3JlcGFjayBwbnBtQGxhdGVzdCBpbXBvcnQgJHtwbS5sb2NrRmlsZU5hbWV9YDtcbiAgICBhd2FpdCByZW1vdmVGaWxlcyhwbS5sb2NrRmlsZU5hbWUpO1xuICB9IGVsc2Uge1xuICAgIGxvZ2dlci5pbmZvKFwiTm8ge3NvdXJjZX0gZmlsZSBmb3VuZCwgc2tpcHBpbmcgaW1wb3J0LlwiLCB7XG4gICAgICBzb3VyY2U6IHBtLmxvY2tGaWxlTmFtZSxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIFJlcGxhY2UgeWFybiBhbmQgbnBtIG9jY3VycmVuY2VzIGluIGZpbGVzIGFuZCB1cGRhdGUgd29ya2Zsb3dzXG4gIGF3YWl0IHJlcGxhY2VQTU9jY3VycmVuY2VzKCk7XG4gIGF3YWl0IHVwZGF0ZURYV29ya2Zsb3dzKCk7XG5cbiAgLy8gQWRkIHBucG0gc3RvcmUgdG8gLmdpdGlnbm9yZVxuICBsb2dnZXIuaW5mbyhcIkFkZGluZyBwbnBtIHN0b3JlIHRvIC5naXRpZ25vcmUuLi5cIik7XG4gIGF3YWl0IGZzLmFwcGVuZEZpbGUoXCIuZ2l0aWdub3JlXCIsIFwiXFxuXFxuIyBQTlBNXFxuLnBucG0tc3RvcmVcIik7XG5cbiAgLy8gU2V0IHBucG0gYXMgdGhlIHBhY2thZ2UgbWFuYWdlclxuICBsb2dnZXIuaW5mbyhcIlNldHRpbmcgcG5wbSBhcyB0aGUgcGFja2FnZSBtYW5hZ2VyLi4uXCIpO1xuICBhd2FpdCAkYGNvcmVwYWNrIHVzZSBwbnBtQGxhdGVzdGA7XG59O1xuXG5jb25zdCBhcHBseTogQ29kZW1vZFtcImFwcGx5XCJdID0gYXN5bmMgKGluZm8pID0+IHtcbiAgY29uc3QgbG9nZ2VyID0gZ2V0TG9nZ2VyKFtcImR4LWNsaVwiLCBcImNvZGVtb2RcIl0pO1xuICB0cnkge1xuICAgIGF3YWl0IHVzZVBucG0oaW5mby5wYWNrYWdlTWFuYWdlciwgcHJvY2Vzcy52ZXJzaW9ucy5ub2RlKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgbG9nZ2VyLmVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgIH1cbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQge1xuICBhcHBseSxcbiAgZGVzY3JpcHRpb246IFwiTWlncmF0ZSB0aGUgcHJvamVjdCB0byB1c2UgcG5wbSBhcyB0aGUgcGFja2FnZSBtYW5hZ2VyXCIsXG4gIGlkOiBcInVzZS1wbnBtXCIsXG59IHNhdGlzZmllcyBDb2RlbW9kO1xuIl19
|
|
@@ -6,3 +6,4 @@ export const isChildOf = (path, key) => {
|
|
|
6
6
|
typeof ancestor.key.value === "string" &&
|
|
7
7
|
ancestor.key.value === key);
|
|
8
8
|
};
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieWFtbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hZGFwdGVycy9jb2RlbW9kcy95YW1sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBRTdCLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxDQUN2QixJQUE0QyxFQUM1QyxHQUFXLEVBQ1gsRUFBRTtJQUNGLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QixPQUFPLENBQ0wsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO1FBQzNCLE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEtBQUssUUFBUTtRQUN0QyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssS0FBSyxHQUFHLENBQzNCLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBZQU1MIGZyb20gXCJ5YW1sXCI7XG5cbmV4cG9ydCBjb25zdCBpc0NoaWxkT2YgPSAoXG4gIHBhdGg6IFBhcmFtZXRlcnM8WUFNTC52aXNpdG9yRm48dW5rbm93bj4+WzJdLFxuICBrZXk6IHN0cmluZyxcbikgPT4ge1xuICBjb25zdCBhbmNlc3RvciA9IHBhdGguYXQoLTEpO1xuICByZXR1cm4gKFxuICAgIFlBTUwuaXNQYWlyKGFuY2VzdG9yKSAmJlxuICAgIFlBTUwuaXNTY2FsYXIoYW5jZXN0b3Iua2V5KSAmJlxuICAgIHR5cGVvZiBhbmNlc3Rvci5rZXkudmFsdWUgPT09IFwic3RyaW5nXCIgJiZcbiAgICBhbmNlc3Rvci5rZXkudmFsdWUgPT09IGtleVxuICApO1xufTtcbiJdfQ==
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared Commander failure handling used by command actions.
|
|
3
|
+
*/
|
|
4
|
+
import type { Command } from "commander";
|
|
5
|
+
import type { CommandPresenter } from "../../domain/command-presenter.js";
|
|
6
|
+
/**
|
|
7
|
+
* Builds a failure handler that ends the command via Commander's
|
|
8
|
+
* `Command#error`, with an output tailored to the active verbosity.
|
|
9
|
+
*
|
|
10
|
+
* - In normal mode, a single meaningful line is printed.
|
|
11
|
+
* - When `--verbose` is active, the full cause chain and stack trace are
|
|
12
|
+
* included so users can diagnose the underlying failure.
|
|
13
|
+
*/
|
|
14
|
+
export declare const exitWithError: (command: Command) => (error: unknown) => never;
|
|
15
|
+
/**
|
|
16
|
+
* Casts an unknown thrown value to an Error instance with a descriptive
|
|
17
|
+
* message, preserving the original value as the cause.
|
|
18
|
+
*
|
|
19
|
+
* Use as the error-mapper argument for `ResultAsync.fromPromise`.
|
|
20
|
+
*/
|
|
21
|
+
export declare const asError: (message: string) => (cause: unknown) => Error;
|
|
22
|
+
/**
|
|
23
|
+
* Builds an error handler for command actions that selects the appropriate
|
|
24
|
+
* reporting strategy based on the requested output mode.
|
|
25
|
+
*
|
|
26
|
+
* - In JSON mode the error is written to the presenter and the process exit
|
|
27
|
+
* code is set to 1 (so the caller can return cleanly without throwing).
|
|
28
|
+
* - In text mode Commander's `command.error()` is used, which prints a
|
|
29
|
+
* human-readable message and exits immediately.
|
|
30
|
+
*/
|
|
31
|
+
export declare const reportCommandError: (command: Command, presenter: CommandPresenter, outputMode: "json" | "text") => (error: Error) => void;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { formatErrorDetailed, toErrorMessage } from "./error-reporting.js";
|
|
2
|
+
import { isVerbose } from "./global-options.js";
|
|
3
|
+
/**
|
|
4
|
+
* Builds a failure handler that ends the command via Commander's
|
|
5
|
+
* `Command#error`, with an output tailored to the active verbosity.
|
|
6
|
+
*
|
|
7
|
+
* - In normal mode, a single meaningful line is printed.
|
|
8
|
+
* - When `--verbose` is active, the full cause chain and stack trace are
|
|
9
|
+
* included so users can diagnose the underlying failure.
|
|
10
|
+
*/
|
|
11
|
+
export const exitWithError = (command) => (error) => {
|
|
12
|
+
const message = isVerbose(command)
|
|
13
|
+
? formatErrorDetailed(error)
|
|
14
|
+
: toErrorMessage(error);
|
|
15
|
+
command.error(message);
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Casts an unknown thrown value to an Error instance with a descriptive
|
|
19
|
+
* message, preserving the original value as the cause.
|
|
20
|
+
*
|
|
21
|
+
* Use as the error-mapper argument for `ResultAsync.fromPromise`.
|
|
22
|
+
*/
|
|
23
|
+
export const asError = (message) => (cause) => new Error(message, { cause });
|
|
24
|
+
/**
|
|
25
|
+
* Builds an error handler for command actions that selects the appropriate
|
|
26
|
+
* reporting strategy based on the requested output mode.
|
|
27
|
+
*
|
|
28
|
+
* - In JSON mode the error is written to the presenter and the process exit
|
|
29
|
+
* code is set to 1 (so the caller can return cleanly without throwing).
|
|
30
|
+
* - In text mode Commander's `command.error()` is used, which prints a
|
|
31
|
+
* human-readable message and exits immediately.
|
|
32
|
+
*/
|
|
33
|
+
export const reportCommandError = (command, presenter, outputMode) => (error) => {
|
|
34
|
+
if (outputMode === "json") {
|
|
35
|
+
presenter.reportError(error);
|
|
36
|
+
process.exitCode = 1;
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
exitWithError(command)(error);
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZC1lcnJvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWRhcHRlcnMvY29tbWFuZGVyL2NvbW1hbmQtZXJyb3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFaEQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FDeEIsQ0FBQyxPQUFnQixFQUFFLEVBQUUsQ0FDckIsQ0FBQyxLQUFjLEVBQVMsRUFBRTtJQUN4QixNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUM7UUFDNUIsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQixPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3pCLENBQUMsQ0FBQztBQUVKOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUNsQixDQUFDLE9BQWUsRUFBRSxFQUFFLENBQ3BCLENBQUMsS0FBYyxFQUFTLEVBQUUsQ0FDeEIsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztBQUVsQzs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUM3QixDQUNFLE9BQWdCLEVBQ2hCLFNBQTJCLEVBQzNCLFVBQTJCLEVBQzNCLEVBQUUsQ0FDSixDQUFDLEtBQVksRUFBUSxFQUFFO0lBQ3JCLElBQUksVUFBVSxLQUFLLE1BQU0sRUFBRSxDQUFDO1FBQzFCLFNBQVMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0IsT0FBTyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7SUFDdkIsQ0FBQztTQUFNLENBQUM7UUFDTixhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEMsQ0FBQztBQUNILENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU2hhcmVkIENvbW1hbmRlciBmYWlsdXJlIGhhbmRsaW5nIHVzZWQgYnkgY29tbWFuZCBhY3Rpb25zLlxuICovXG5pbXBvcnQgdHlwZSB7IENvbW1hbmQgfSBmcm9tIFwiY29tbWFuZGVyXCI7XG5cbmltcG9ydCB0eXBlIHsgQ29tbWFuZFByZXNlbnRlciB9IGZyb20gXCIuLi8uLi9kb21haW4vY29tbWFuZC1wcmVzZW50ZXIuanNcIjtcblxuaW1wb3J0IHsgZm9ybWF0RXJyb3JEZXRhaWxlZCwgdG9FcnJvck1lc3NhZ2UgfSBmcm9tIFwiLi9lcnJvci1yZXBvcnRpbmcuanNcIjtcbmltcG9ydCB7IGlzVmVyYm9zZSB9IGZyb20gXCIuL2dsb2JhbC1vcHRpb25zLmpzXCI7XG5cbi8qKlxuICogQnVpbGRzIGEgZmFpbHVyZSBoYW5kbGVyIHRoYXQgZW5kcyB0aGUgY29tbWFuZCB2aWEgQ29tbWFuZGVyJ3NcbiAqIGBDb21tYW5kI2Vycm9yYCwgd2l0aCBhbiBvdXRwdXQgdGFpbG9yZWQgdG8gdGhlIGFjdGl2ZSB2ZXJib3NpdHkuXG4gKlxuICogLSBJbiBub3JtYWwgbW9kZSwgYSBzaW5nbGUgbWVhbmluZ2Z1bCBsaW5lIGlzIHByaW50ZWQuXG4gKiAtIFdoZW4gYC0tdmVyYm9zZWAgaXMgYWN0aXZlLCB0aGUgZnVsbCBjYXVzZSBjaGFpbiBhbmQgc3RhY2sgdHJhY2UgYXJlXG4gKiAgIGluY2x1ZGVkIHNvIHVzZXJzIGNhbiBkaWFnbm9zZSB0aGUgdW5kZXJseWluZyBmYWlsdXJlLlxuICovXG5leHBvcnQgY29uc3QgZXhpdFdpdGhFcnJvciA9XG4gIChjb21tYW5kOiBDb21tYW5kKSA9PlxuICAoZXJyb3I6IHVua25vd24pOiBuZXZlciA9PiB7XG4gICAgY29uc3QgbWVzc2FnZSA9IGlzVmVyYm9zZShjb21tYW5kKVxuICAgICAgPyBmb3JtYXRFcnJvckRldGFpbGVkKGVycm9yKVxuICAgICAgOiB0b0Vycm9yTWVzc2FnZShlcnJvcik7XG4gICAgY29tbWFuZC5lcnJvcihtZXNzYWdlKTtcbiAgfTtcblxuLyoqXG4gKiBDYXN0cyBhbiB1bmtub3duIHRocm93biB2YWx1ZSB0byBhbiBFcnJvciBpbnN0YW5jZSB3aXRoIGEgZGVzY3JpcHRpdmVcbiAqIG1lc3NhZ2UsIHByZXNlcnZpbmcgdGhlIG9yaWdpbmFsIHZhbHVlIGFzIHRoZSBjYXVzZS5cbiAqXG4gKiBVc2UgYXMgdGhlIGVycm9yLW1hcHBlciBhcmd1bWVudCBmb3IgYFJlc3VsdEFzeW5jLmZyb21Qcm9taXNlYC5cbiAqL1xuZXhwb3J0IGNvbnN0IGFzRXJyb3IgPVxuICAobWVzc2FnZTogc3RyaW5nKSA9PlxuICAoY2F1c2U6IHVua25vd24pOiBFcnJvciA9PlxuICAgIG5ldyBFcnJvcihtZXNzYWdlLCB7IGNhdXNlIH0pO1xuXG4vKipcbiAqIEJ1aWxkcyBhbiBlcnJvciBoYW5kbGVyIGZvciBjb21tYW5kIGFjdGlvbnMgdGhhdCBzZWxlY3RzIHRoZSBhcHByb3ByaWF0ZVxuICogcmVwb3J0aW5nIHN0cmF0ZWd5IGJhc2VkIG9uIHRoZSByZXF1ZXN0ZWQgb3V0cHV0IG1vZGUuXG4gKlxuICogLSBJbiBKU09OIG1vZGUgdGhlIGVycm9yIGlzIHdyaXR0ZW4gdG8gdGhlIHByZXNlbnRlciBhbmQgdGhlIHByb2Nlc3MgZXhpdFxuICogICBjb2RlIGlzIHNldCB0byAxIChzbyB0aGUgY2FsbGVyIGNhbiByZXR1cm4gY2xlYW5seSB3aXRob3V0IHRocm93aW5nKS5cbiAqIC0gSW4gdGV4dCBtb2RlIENvbW1hbmRlcidzIGBjb21tYW5kLmVycm9yKClgIGlzIHVzZWQsIHdoaWNoIHByaW50cyBhXG4gKiAgIGh1bWFuLXJlYWRhYmxlIG1lc3NhZ2UgYW5kIGV4aXRzIGltbWVkaWF0ZWx5LlxuICovXG5leHBvcnQgY29uc3QgcmVwb3J0Q29tbWFuZEVycm9yID1cbiAgKFxuICAgIGNvbW1hbmQ6IENvbW1hbmQsXG4gICAgcHJlc2VudGVyOiBDb21tYW5kUHJlc2VudGVyLFxuICAgIG91dHB1dE1vZGU6IFwianNvblwiIHwgXCJ0ZXh0XCIsXG4gICkgPT5cbiAgKGVycm9yOiBFcnJvcik6IHZvaWQgPT4ge1xuICAgIGlmIChvdXRwdXRNb2RlID09PSBcImpzb25cIikge1xuICAgICAgcHJlc2VudGVyLnJlcG9ydEVycm9yKGVycm9yKTtcbiAgICAgIHByb2Nlc3MuZXhpdENvZGUgPSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICBleGl0V2l0aEVycm9yKGNvbW1hbmQpKGVycm9yKTtcbiAgICB9XG4gIH07XG4iXX0=
|
|
@@ -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;
|
|
@@ -14,9 +14,10 @@ import { okAsync, ResultAsync } from "neverthrow";
|
|
|
14
14
|
import { requestAuthorizationInputSchema, } from "../../../domain/authorization.js";
|
|
15
15
|
import { environmentShort } from "../../../domain/environment.js";
|
|
16
16
|
import { isAzureLocation, locationShort } from "../../azure/locations.js";
|
|
17
|
-
import { getPlopInstance,
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
17
|
+
import { collectDeploymentEnvironmentPayload, getPlopInstance, runDeploymentEnvironmentActions, } from "../../plop/index.js";
|
|
18
|
+
import { asError, reportCommandError } from "../command-errors.js";
|
|
19
|
+
import { createCommandPresenter, resolveOutputMode, } from "../presenters/index.js";
|
|
20
|
+
import { runAddEnvironmentPreconditions } from "./init.js";
|
|
20
21
|
/**
|
|
21
22
|
* Authorize a Cloud Account (Azure Subscription, AWS Account, ...), creating a Pull Request for each account that requires authorization.
|
|
22
23
|
*/
|
|
@@ -73,21 +74,40 @@ const displaySummary = (result) => {
|
|
|
73
74
|
}
|
|
74
75
|
console.log(`${step}. Visit ${chalk.underline("https://dx.pagopa.it/getting-started")} to deploy your first project\n`);
|
|
75
76
|
};
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
77
|
+
/**
|
|
78
|
+
* Routes the successful outcome through the presenter: JSON mode emits the
|
|
79
|
+
* structured envelope while text mode renders the human-readable summary.
|
|
80
|
+
*/
|
|
81
|
+
const reportSummary = (presenter, outputMode) => (result) => {
|
|
82
|
+
if (outputMode === "json") {
|
|
83
|
+
presenter.reportResult(result);
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
displaySummary(result);
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
const trackStep = (presenter, name, task, mapError) => ResultAsync.fromPromise(presenter.trackStep(name, task), mapError);
|
|
90
|
+
const addEnvironmentAction = (authorizationService, gitHubService, presenter) => runAddEnvironmentPreconditions(presenter)
|
|
91
|
+
.andThen(() => trackStep(presenter, "Initializing environment generator...", getPlopInstance, asError("Failed to initialize plop")))
|
|
92
|
+
.andThen((plop) =>
|
|
93
|
+
// The prompt phase must run outside trackStep: in text mode trackStep
|
|
94
|
+
// renders a spinner that occupies the TTY and hides the prompts.
|
|
95
|
+
ResultAsync.fromPromise(collectDeploymentEnvironmentPayload(plop, gitHubService), asError("Failed to run the deployment environment generator")))
|
|
96
|
+
.andThen(({ generator, payload }) => trackStep(presenter, "Creating environment...", () => runDeploymentEnvironmentActions(generator, payload), asError("Failed to create the deployment environment")))
|
|
81
97
|
.andThen((payload) => authorizeCloudAccounts(authorizationService)(payload).map((authorizationPrs) => ({
|
|
82
98
|
authorizationPrs,
|
|
83
99
|
})));
|
|
84
|
-
export const makeAddCommand = (requireGitHubAuth) => new Command()
|
|
100
|
+
export const makeAddCommand = (requireGitHubAuth, env) => new Command()
|
|
85
101
|
.name("add")
|
|
86
102
|
.description("Add a new component to your workspace")
|
|
87
103
|
.addCommand(new Command("environment")
|
|
88
104
|
.description("Add a new deployment environment")
|
|
89
105
|
.action(async function () {
|
|
106
|
+
const { output } = this.optsWithGlobals();
|
|
107
|
+
const outputMode = resolveOutputMode(env, output);
|
|
108
|
+
const presenter = createCommandPresenter(outputMode);
|
|
90
109
|
await requireGitHubAuth()
|
|
91
|
-
.andThen(({ authorizationService, gitHubService }) => addEnvironmentAction(authorizationService, gitHubService))
|
|
92
|
-
.match(
|
|
110
|
+
.andThen(({ authorizationService, gitHubService }) => addEnvironmentAction(authorizationService, gitHubService, presenter))
|
|
111
|
+
.match(reportSummary(presenter, outputMode), reportCommandError(this, presenter, outputMode));
|
|
93
112
|
}));
|
|
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
|
-
import { ApplyCodemodById } from "../../../use-cases/apply-codemod.js";
|
|
3
|
-
import { ListCodemods } from "../../../use-cases/list-codemods.js";
|
|
2
|
+
import type { ApplyCodemodById } from "../../../use-cases/apply-codemod.js";
|
|
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
|
|
9
|
+
export declare const makeCodemodCommand: ({ applyCodemodById, listCodemods }: CodemodCommandDependencies, env: CliEnv) => Command;
|