@pagopa/dx-cli 0.23.5 → 0.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/README.md +14 -0
  2. package/bin/index.js +13 -3
  3. package/dist/adapters/azure/cloud-account-service.js +32 -1
  4. package/dist/adapters/azure-monitor/instrumentation.d.ts +26 -0
  5. package/dist/adapters/azure-monitor/instrumentation.js +84 -0
  6. package/dist/adapters/azure-monitor/telemetry.d.ts +19 -0
  7. package/dist/adapters/azure-monitor/telemetry.js +28 -0
  8. package/dist/adapters/commander/commands/add.d.ts +32 -7
  9. package/dist/adapters/commander/commands/add.js +198 -15
  10. package/dist/adapters/commander/commands/doctor.js +4 -1
  11. package/dist/adapters/octokit/index.d.ts +12 -0
  12. package/dist/adapters/octokit/index.js +26 -2
  13. package/dist/adapters/pagopa-technology/azure-authorization.js +11 -11
  14. package/dist/adapters/plop/actions/setup-pnpm.js +5 -1
  15. package/dist/adapters/plop/actions/sync-repository-environments.d.ts +15 -0
  16. package/dist/adapters/plop/actions/sync-repository-environments.js +98 -0
  17. package/dist/adapters/plop/generators/environment/actions.js +4 -1
  18. package/dist/adapters/plop/generators/environment/index.d.ts +3 -3
  19. package/dist/adapters/plop/generators/environment/index.js +6 -3
  20. package/dist/adapters/plop/generators/environment/prompts.d.ts +38 -0
  21. package/dist/adapters/plop/generators/environment/prompts.js +236 -91
  22. package/dist/adapters/plop/index.d.ts +3 -3
  23. package/dist/adapters/plop/index.js +5 -5
  24. package/dist/domain/authorization.d.ts +1 -0
  25. package/dist/domain/authorization.js +5 -4
  26. package/dist/index.js +132 -8
  27. package/package.json +11 -3
  28. package/templates/monorepo/.pre-commit-config.yaml.hbs +0 -8
@@ -152,23 +152,23 @@ const ensureIdentity = (jsonContent, identityId) => {
152
152
  },
153
153
  };
154
154
  };
155
- const REPO_OWNER = "pagopa";
156
155
  const REPO_NAME = "eng-azure-authorization";
157
156
  const BASE_BRANCH = "main";
158
157
  export const makeAzureAuthorizationService = (gitHubService) => ({
159
158
  requestAuthorization(input) {
160
159
  const logger = getLogger(["dx-cli", "pagopa-azure-authorization"]);
161
- const { bootstrapIdentityId, envShort, prefix, repoName, subscriptionName, } = input;
160
+ const { bootstrapIdentityId, envShort, prefix, repoName, repoOwner, subscriptionName, } = input;
161
+ const authorizationRepoOwner = repoOwner;
162
162
  const filePath = `src/azure-subscriptions/subscriptions/${subscriptionName}/terraform.tfvars.json`;
163
163
  const branchName = `feats/add-${repoName}-${subscriptionName}-bootstrap-identity`;
164
164
  return (
165
165
  // Step 1: Read file from main to determine if changes are needed
166
166
  ResultAsync.fromPromise(gitHubService.getFileContent({
167
- owner: REPO_OWNER,
167
+ owner: authorizationRepoOwner,
168
168
  path: filePath,
169
169
  ref: BASE_BRANCH,
170
170
  repo: REPO_NAME,
171
- }), () => new AuthorizationError(`Unable to get ${filePath} in ${REPO_OWNER}/${REPO_NAME}`))
171
+ }), () => new AuthorizationError(`Unable to get ${filePath} in ${authorizationRepoOwner}/${REPO_NAME}`))
172
172
  .orTee((error) => {
173
173
  logger.error(error.message);
174
174
  })
@@ -202,9 +202,9 @@ export const makeAzureAuthorizationService = (gitHubService) => ({
202
202
  return (ResultAsync.fromPromise(gitHubService.createBranch({
203
203
  branchName,
204
204
  fromRef: BASE_BRANCH,
205
- owner: REPO_OWNER,
205
+ owner: authorizationRepoOwner,
206
206
  repo: REPO_NAME,
207
- }), () => new AuthorizationError(`Unable to create branch ${branchName} in ${REPO_OWNER}/${REPO_NAME}`))
207
+ }), () => new AuthorizationError(`Unable to create branch ${branchName} in ${authorizationRepoOwner}/${REPO_NAME}`))
208
208
  .orTee((error) => {
209
209
  logger.error(error.message);
210
210
  })
@@ -213,11 +213,11 @@ export const makeAzureAuthorizationService = (gitHubService) => ({
213
213
  branch: branchName,
214
214
  content: JSON.stringify(updatedJson, null, 2),
215
215
  message,
216
- owner: REPO_OWNER,
216
+ owner: authorizationRepoOwner,
217
217
  path: filePath,
218
218
  repo: REPO_NAME,
219
219
  sha,
220
- }), () => new AuthorizationError(`Unable to update ${filePath} on branch ${branchName} in ${REPO_OWNER}/${REPO_NAME}`)))
220
+ }), () => new AuthorizationError(`Unable to update ${filePath} on branch ${branchName} in ${authorizationRepoOwner}/${REPO_NAME}`)))
221
221
  .orTee((error) => {
222
222
  logger.error(error.message);
223
223
  })
@@ -226,10 +226,10 @@ export const makeAzureAuthorizationService = (gitHubService) => ({
226
226
  base: BASE_BRANCH,
227
227
  body,
228
228
  head: branchName,
229
- owner: REPO_OWNER,
229
+ owner: authorizationRepoOwner,
230
230
  repo: REPO_NAME,
231
231
  title,
232
- }), () => new AuthorizationError(`Unable to create pull request from ${branchName} to ${BASE_BRANCH} in ${REPO_OWNER}/${REPO_NAME}`)))
232
+ }), () => new AuthorizationError(`Unable to create pull request from ${branchName} to ${BASE_BRANCH} in ${authorizationRepoOwner}/${REPO_NAME}`)))
233
233
  .orTee((error) => {
234
234
  logger.error(error.message);
235
235
  })
@@ -237,4 +237,4 @@ export const makeAzureAuthorizationService = (gitHubService) => ({
237
237
  }));
238
238
  },
239
239
  });
240
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXp1cmUtYXV0aG9yaXphdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hZGFwdGVycy9wYWdvcGEtdGVjaG5vbG9neS9henVyZS1hdXRob3JpemF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O0dBT0c7QUFFSCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBVSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDN0UsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUV4QixPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUVuQixtQ0FBbUMsR0FFcEMsTUFBTSwrQkFBK0IsQ0FBQztBQUV2QyxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLG9CQUFvQixHQUNyQixNQUFNLGlDQUFpQyxDQUFDO0FBRXpDLE1BQU0sNEJBQTRCLEdBQUcsQ0FBQztLQUNuQyxNQUFNLENBQUM7SUFDTixpQkFBaUIsRUFBRSxDQUFDO1NBQ2pCLE1BQU0sQ0FBQztRQUNOLHVCQUF1QixFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0tBQzdDLENBQUM7U0FDRCxLQUFLLEVBQUU7SUFDVixNQUFNLEVBQUUsQ0FBQztTQUNOLEtBQUssQ0FDSixDQUFDO1NBQ0UsTUFBTSxDQUFDO1FBQ04sT0FBTyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzVCLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO1FBQ2hCLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztLQUMzQixDQUFDO1NBQ0QsS0FBSyxFQUFFLENBQ1g7U0FDQSxRQUFRLEVBQUU7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aUJBQ0EsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ2YsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDOUIsQ0FBQyxDQUFDO2lCQUNELEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxtQkFBbUIsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FDaEQsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDSixDQUFDO0NBQ0YsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBQYWdvUEEgVGVjaG5vbG9neSBBenVyZSBBdXRob3JpemF0aW9uIEFkYXB0ZXJcbiAqXG4gKiBJbXBsZW1lbnRzIHRoZSBBdXRob3JpemF0aW9uU2VydmljZSBpbnRlcmZhY2UgZm9yIHRoZSBQYWdvUEEgQXp1cmVcbiAqIGF1dGhvcml6YXRpb24gd29ya2Zsb3cuIEVuY2Fwc3VsYXRlcyBhbGwgcGxhdGZvcm0tc3BlY2lmaWMgZGV0YWlsczpcbiAqIHRoZSB0YXJnZXQgR2l0SHViIHJlcG9zaXRvcnksIGZpbGUgcGF0aHMsIGJyYW5jaCBuYW1pbmcsIEpTT04gZmlsZVxuICogcGFyc2luZywgYW5kIHB1bGwgcmVxdWVzdCBjcmVhdGlvbi5cbiAqL1xuXG5pbXBvcnQgeyBnZXRMb2dnZXIgfSBmcm9tIFwiQGxvZ3RhcGUvbG9ndGFwZVwiO1xuaW1wb3J0IHsgZXJyLCBlcnJBc3luYywgb2ssIG9rQXN5bmMsIFJlc3VsdCwgUmVzdWx0QXN5bmMgfSBmcm9tIFwibmV2ZXJ0aHJvd1wiO1xuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIjtcblxuaW1wb3J0IHtcbiAgQXV0aG9yaXphdGlvbkVycm9yLFxuICBBdXRob3JpemF0aW9uUmVzdWx0LFxuICBBdXRob3JpemF0aW9uU2VydmljZSxcbiAgSW52YWxpZEF1dGhvcml6YXRpb25GaWxlRm9ybWF0RXJyb3IsXG4gIFJlcXVlc3RBdXRob3JpemF0aW9uSW5wdXQsXG59IGZyb20gXCIuLi8uLi9kb21haW4vYXV0aG9yaXphdGlvbi5qc1wiO1xuaW1wb3J0IHsgR2l0SHViU2VydmljZSB9IGZyb20gXCIuLi8uLi9kb21haW4vZ2l0aHViLmpzXCI7XG5pbXBvcnQge1xuICBERUZBVUxUX0dST1VQX1NQRUNTLFxuICBtYWtlQXp1cmVBZEdyb3VwTmFtZSxcbn0gZnJvbSBcIi4vYXp1cmUtYXV0aG9yaXphdGlvbi1jb25maWcuanNcIjtcblxuY29uc3QgYXp1cmVBdXRob3JpemF0aW9uRmlsZVNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgZGlyZWN0b3J5X3JlYWRlcnM6IHpcbiAgICAgIC5vYmplY3Qoe1xuICAgICAgICBzZXJ2aWNlX3ByaW5jaXBhbHNfbmFtZTogei5hcnJheSh6LnN0cmluZygpKSxcbiAgICAgIH0pXG4gICAgICAubG9vc2UoKSxcbiAgICBncm91cHM6IHpcbiAgICAgIC5hcnJheShcbiAgICAgICAgelxuICAgICAgICAgIC5vYmplY3Qoe1xuICAgICAgICAgICAgbWVtYmVyczogei5hcnJheSh6LnN0cmluZygpKSxcbiAgICAgICAgICAgIG5hbWU6IHouc3RyaW5nKCksXG4gICAgICAgICAgICByb2xlczogei5hcnJheSh6LnN0cmluZygpKSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5sb29zZSgpLFxuICAgICAgKVxuICAgICAgLm9wdGlvbmFsKCksXG4gIH0pXG4gIC5sb29zZSgpO1xuXG4vKipcbiAqIENoZWNrcyBpZiB0d28gcm9sZSBhcnJheXMgYXJlIGVxdWl2YWxlbnQgKHNhbWUgcm9sZXMsIG9yZGVyLWluZGVwZW5kZW50KS5cbiAqL1xuY29uc3Qgcm9sZXNBcmVFcXVhbCA9IChcbiAgcm9sZXMxOiByZWFkb25seSBzdHJpbmdbXSxcbiAgcm9sZXMyOiByZWFkb25seSBzdHJpbmdbXSxcbik6IGJvb2xlYW4gPT4ge1xuICBpZiAocm9sZXMxLmxlbmd0aCAhPT0gcm9sZXMyLmxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBjb25zdCBzb3J0ZWQxID0gWy4uLnJvbGVzMV0uc29ydCgpO1xuICBjb25zdCBzb3J0ZWQyID0gWy4uLnJvbGVzMl0uc29ydCgpO1xuICByZXR1cm4gc29ydGVkMS5ldmVyeSgocm9sZSwgaWR4KSA9PiByb2xlID09PSBzb3J0ZWQyW2lkeF0pO1xufTtcblxuLyoqXG4gKiBBZGRzIG9yIHVwZGF0ZXMgdGhlIEFEIGdyb3VwcyBhcnJheSBpbiB0aGUgcGFyc2VkIGF1dGhvcml6YXRpb24gSlNPTi5cbiAqIC0gTWlzc2luZyBkZWZhdWx0IGdyb3VwcyBhcmUgYWRkZWQgd2l0aCBlbXB0eSBtZW1iZXJzLlxuICogLSBFeGlzdGluZyBncm91cHMgd2l0aCB3cm9uZyByb2xlcyBoYXZlIHRoZWlyIHJvbGVzIHVwZGF0ZWQ7IG1lbWJlcnMgYXJlIHByZXNlcnZlZC5cbiAqIC0gQ3VzdG9tIChub24tZGVmYXVsdCkgZ3JvdXBzIGFyZSBwcmVzZXJ2ZWQgdW5jaGFuZ2VkLlxuICogUmV0dXJucyB0aGUgdXBkYXRlZCBKU09OIGFsb25nIHdpdGggYSBmbGFnIGluZGljYXRpbmcgd2hldGhlciBhbnl0aGluZyBjaGFuZ2VkLlxuICovXG5jb25zdCB1cHNlcnRHcm91cHMgPSAoXG4gIGpzb25Db250ZW50OiB6LmluZmVyPHR5cGVvZiBhenVyZUF1dGhvcml6YXRpb25GaWxlU2NoZW1hPixcbiAgcHJlZml4OiBzdHJpbmcsXG4gIGVudlNob3J0OiBzdHJpbmcsXG4pOiB7XG4gIGdyb3Vwc0NoYW5nZWQ6IGJvb2xlYW47XG4gIGpzb246IHouaW5mZXI8dHlwZW9mIGF6dXJlQXV0aG9yaXphdGlvbkZpbGVTY2hlbWE+O1xufSA9PiB7XG4gIGNvbnN0IGV4cGVjdGVkQnlOYW1lID0gbmV3IE1hcChcbiAgICBERUZBVUxUX0dST1VQX1NQRUNTLm1hcCgoc3BlYykgPT4gW1xuICAgICAgbWFrZUF6dXJlQWRHcm91cE5hbWUocHJlZml4LCBlbnZTaG9ydCwgc3BlYy5ncm91cE5hbWUpLFxuICAgICAgc3BlYyxcbiAgICBdKSxcbiAgKTtcblxuICBjb25zdCBleGlzdGluZ0dyb3VwcyA9IGpzb25Db250ZW50Lmdyb3VwcyA/PyBbXTtcbiAgY29uc3Qgc2VlbkRlZmF1bHRzID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgLy8gV2FsayBleGlzdGluZyBncm91cHMgaW4gdGhlaXIgb3JpZ2luYWwgb3JkZXIsIHVwZGF0aW5nIHJvbGVzIHdoZXJlIG5lZWRlZFxuICBjb25zdCBmaW5hbEdyb3VwczogdHlwZW9mIGV4aXN0aW5nR3JvdXBzID0gW107XG4gIGxldCBncm91cHNDaGFuZ2VkID0gZmFsc2U7XG5cbiAgZm9yIChjb25zdCBleGlzdGluZyBvZiBleGlzdGluZ0dyb3Vwcykge1xuICAgIGNvbnN0IHNwZWMgPSBleHBlY3RlZEJ5TmFtZS5nZXQoZXhpc3RpbmcubmFtZSk7XG4gICAgaWYgKCFzcGVjKSB7XG4gICAgICAvLyBDdXN0b20gZ3JvdXAg4oCUIHByZXNlcnZlIGFzLWlzXG4gICAgICBmaW5hbEdyb3Vwcy5wdXNoKGV4aXN0aW5nKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2VlbkRlZmF1bHRzLmFkZChleGlzdGluZy5uYW1lKTtcbiAgICAgIGlmICghcm9sZXNBcmVFcXVhbChleGlzdGluZy5yb2xlcywgc3BlYy5yb2xlcykpIHtcbiAgICAgICAgLy8gUm9sZXMgZGlmZmVyIOKAlCB1cGRhdGUgcm9sZXMsIHByZXNlcnZlIG1lbWJlcnMgYW5kIGFueSBleHRyYSBmaWVsZHNcbiAgICAgICAgZmluYWxHcm91cHMucHVzaCh7IC4uLmV4aXN0aW5nLCByb2xlczogWy4uLnNwZWMucm9sZXNdIH0pO1xuICAgICAgICBncm91cHNDaGFuZ2VkID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZpbmFsR3JvdXBzLnB1c2goZXhpc3RpbmcpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIEFwcGVuZCBtaXNzaW5nIGRlZmF1bHQgZ3JvdXBzIGF0IHRoZSBlbmRcbiAgZm9yIChjb25zdCBzcGVjIG9mIERFRkFVTFRfR1JPVVBfU1BFQ1MpIHtcbiAgICBjb25zdCBuYW1lID0gbWFrZUF6dXJlQWRHcm91cE5hbWUocHJlZml4LCBlbnZTaG9ydCwgc3BlYy5ncm91cE5hbWUpO1xuICAgIGlmICghc2VlbkRlZmF1bHRzLmhhcyhuYW1lKSkge1xuICAgICAgZmluYWxHcm91cHMucHVzaCh7IG1lbWJlcnM6IFtdLCBuYW1lLCByb2xlczogWy4uLnNwZWMucm9sZXNdIH0pO1xuICAgICAgZ3JvdXBzQ2hhbmdlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHsgZ3JvdXBzQ2hhbmdlZCwganNvbjogeyAuLi5qc29uQ29udGVudCwgZ3JvdXBzOiBmaW5hbEdyb3VwcyB9IH07XG59O1xuXG4vKipcbiAqIFBhcnNlcyBhbmQgdmFsaWRhdGVzIHRoZSBhdXRob3JpemF0aW9uIGZpbGUgY29udGVudCAoSlNPTiBwYXJzaW5nICsgc2NoZW1hIHZhbGlkYXRpb24pLlxuICovXG5jb25zdCBwYXJzZUF1dGhvcml6YXRpb25GaWxlID0gKFxuICBjb250ZW50OiBzdHJpbmcsXG4pOiBSZXN1bHQ8ei5pbmZlcjx0eXBlb2YgYXp1cmVBdXRob3JpemF0aW9uRmlsZVNjaGVtYT4sIEF1dGhvcml6YXRpb25FcnJvcj4gPT4ge1xuICBsZXQgcGFyc2VkO1xuICB0cnkge1xuICAgIHBhcnNlZCA9IEpTT04ucGFyc2UoY29udGVudCk7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBlcnIoXG4gICAgICBuZXcgSW52YWxpZEF1dGhvcml6YXRpb25GaWxlRm9ybWF0RXJyb3IoXCJGaWxlIGNvbnRlbnQgaXMgbm90IHZhbGlkIEpTT05cIiksXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IHJlc3VsdCA9IGF6dXJlQXV0aG9yaXphdGlvbkZpbGVTY2hlbWEuc2FmZVBhcnNlKHBhcnNlZCk7XG4gIGlmICghcmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICByZXR1cm4gZXJyKFxuICAgICAgbmV3IEludmFsaWRBdXRob3JpemF0aW9uRmlsZUZvcm1hdEVycm9yKFxuICAgICAgICBcIkNvdWxkIG5vdCBmaW5kIGRpcmVjdG9yeV9yZWFkZXJzLnNlcnZpY2VfcHJpbmNpcGFsc19uYW1lIGxpc3RcIixcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBvayhyZXN1bHQuZGF0YSk7XG59O1xuXG4vKipcbiAqIFByb2R1Y2VzIGNvbW1pdCBtZXNzYWdlLCBQUiB0aXRsZSwgYW5kIFBSIGJvZHkgdGFpbG9yZWQgdG8gd2hhdCBhY3R1YWxseSBjaGFuZ2VkLlxuICovXG5jb25zdCBtYWtlQ2hhbmdlRGVzY3JpcHRpb24gPSAoXG4gIHN1YnNjcmlwdGlvbk5hbWU6IHN0cmluZyxcbiAgYm9vdHN0cmFwSWRlbnRpdHlJZDogc3RyaW5nLFxuICBpZGVudGl0eUFkZGVkOiBib29sZWFuLFxuICBncm91cHNDaGFuZ2VkOiBib29sZWFuLFxuKTogeyBib2R5OiBzdHJpbmc7IG1lc3NhZ2U6IHN0cmluZzsgdGl0bGU6IHN0cmluZyB9ID0+IHtcbiAgaWYgKGlkZW50aXR5QWRkZWQgJiYgZ3JvdXBzQ2hhbmdlZCkge1xuICAgIGNvbnN0IHRpdGxlID0gYEFkZCBib290c3RyYXAgaWRlbnRpdHkgYW5kIEFEIGdyb3VwcyBmb3IgJHtzdWJzY3JpcHRpb25OYW1lfWA7XG4gICAgcmV0dXJuIHtcbiAgICAgIGJvZHk6IGBUaGlzIFBSIGFkZHMgdGhlIGJvb3RzdHJhcCBpZGVudGl0eSBcXGAke2Jvb3RzdHJhcElkZW50aXR5SWR9XFxgIHRvIHRoZSBkaXJlY3RvcnkgcmVhZGVycyBhbmQgY29uZmlndXJlcyBBRCBncm91cHMgZm9yIHN1YnNjcmlwdGlvbiBcXGAke3N1YnNjcmlwdGlvbk5hbWV9XFxgLmAsXG4gICAgICBtZXNzYWdlOiB0aXRsZSxcbiAgICAgIHRpdGxlLFxuICAgIH07XG4gIH1cbiAgaWYgKGlkZW50aXR5QWRkZWQpIHtcbiAgICBjb25zdCB0aXRsZSA9IGBBZGQgYm9vdHN0cmFwIGlkZW50aXR5IGZvciAke3N1YnNjcmlwdGlvbk5hbWV9YDtcbiAgICByZXR1cm4ge1xuICAgICAgYm9keTogYFRoaXMgUFIgYWRkcyB0aGUgYm9vdHN0cmFwIGlkZW50aXR5IFxcYCR7Ym9vdHN0cmFwSWRlbnRpdHlJZH1cXGAgdG8gdGhlIGRpcmVjdG9yeSByZWFkZXJzIGZvciBzdWJzY3JpcHRpb24gXFxgJHtzdWJzY3JpcHRpb25OYW1lfVxcYC5gLFxuICAgICAgbWVzc2FnZTogdGl0bGUsXG4gICAgICB0aXRsZSxcbiAgICB9O1xuICB9XG4gIGNvbnN0IHRpdGxlID0gYENvbmZpZ3VyZSBBRCBncm91cHMgZm9yICR7c3Vic2NyaXB0aW9uTmFtZX1gO1xuICByZXR1cm4ge1xuICAgIGJvZHk6IGBUaGlzIFBSIGNvbmZpZ3VyZXMgQUQgZ3JvdXBzIGZvciBzdWJzY3JpcHRpb24gXFxgJHtzdWJzY3JpcHRpb25OYW1lfVxcYC5gLFxuICAgIG1lc3NhZ2U6IHRpdGxlLFxuICAgIHRpdGxlLFxuICB9O1xufTtcblxuLyoqXG4gKiBFbnN1cmVzIHRoZSBnaXZlbiBpZGVudGl0eSBpcyBwcmVzZW50IGluIHRoZSBzZXJ2aWNlX3ByaW5jaXBhbHNfbmFtZSBsaXN0LlxuICogUmV0dXJucyB0aGUgKHBvc3NpYmx5IHVwZGF0ZWQpIEpTT04gYW5kIHdoZXRoZXIgdGhlIGlkZW50aXR5IHdhcyBuZXdseSBhZGRlZC5cbiAqIE5ldmVyIGZhaWxzOiBpZiB0aGUgaWRlbnRpdHkgYWxyZWFkeSBleGlzdHMgaXQgaXMgYSBuby1vcCB3aXRoIGlkZW50aXR5QWRkZWQgPSBmYWxzZS5cbiAqL1xuY29uc3QgZW5zdXJlSWRlbnRpdHkgPSAoXG4gIGpzb25Db250ZW50OiB6LmluZmVyPHR5cGVvZiBhenVyZUF1dGhvcml6YXRpb25GaWxlU2NoZW1hPixcbiAgaWRlbnRpdHlJZDogc3RyaW5nLFxuKToge1xuICBpZGVudGl0eUFkZGVkOiBib29sZWFuO1xuICBqc29uOiB6LmluZmVyPHR5cGVvZiBhenVyZUF1dGhvcml6YXRpb25GaWxlU2NoZW1hPjtcbn0gPT4ge1xuICBpZiAoXG4gICAganNvbkNvbnRlbnQuZGlyZWN0b3J5X3JlYWRlcnMuc2VydmljZV9wcmluY2lwYWxzX25hbWUuaW5jbHVkZXMoaWRlbnRpdHlJZClcbiAgKSB7XG4gICAgcmV0dXJuIHsgaWRlbnRpdHlBZGRlZDogZmFsc2UsIGpzb246IGpzb25Db250ZW50IH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGlkZW50aXR5QWRkZWQ6IHRydWUsXG4gICAganNvbjoge1xuICAgICAgLi4uanNvbkNvbnRlbnQsXG4gICAgICBkaXJlY3RvcnlfcmVhZGVyczoge1xuICAgICAgICAuLi5qc29uQ29udGVudC5kaXJlY3RvcnlfcmVhZGVycyxcbiAgICAgICAgc2VydmljZV9wcmluY2lwYWxzX25hbWU6IFtcbiAgICAgICAgICAuLi5qc29uQ29udGVudC5kaXJlY3RvcnlfcmVhZGVycy5zZXJ2aWNlX3ByaW5jaXBhbHNfbmFtZSxcbiAgICAgICAgICBpZGVudGl0eUlkLFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICB9LFxuICB9O1xufTtcblxuY29uc3QgUkVQT19PV05FUiA9IFwicGFnb3BhXCI7XG5jb25zdCBSRVBPX05BTUUgPSBcImVuZy1henVyZS1hdXRob3JpemF0aW9uXCI7XG5jb25zdCBCQVNFX0JSQU5DSCA9IFwibWFpblwiO1xuXG5leHBvcnQgY29uc3QgbWFrZUF6dXJlQXV0aG9yaXphdGlvblNlcnZpY2UgPSAoXG4gIGdpdEh1YlNlcnZpY2U6IEdpdEh1YlNlcnZpY2UsXG4pOiBBdXRob3JpemF0aW9uU2VydmljZSA9PiAoe1xuICByZXF1ZXN0QXV0aG9yaXphdGlvbihcbiAgICBpbnB1dDogUmVxdWVzdEF1dGhvcml6YXRpb25JbnB1dCxcbiAgKTogUmVzdWx0QXN5bmM8QXV0aG9yaXphdGlvblJlc3VsdCwgQXV0aG9yaXphdGlvbkVycm9yPiB7XG4gICAgY29uc3QgbG9nZ2VyID0gZ2V0TG9nZ2VyKFtcImR4LWNsaVwiLCBcInBhZ29wYS1henVyZS1hdXRob3JpemF0aW9uXCJdKTtcbiAgICBjb25zdCB7XG4gICAgICBib290c3RyYXBJZGVudGl0eUlkLFxuICAgICAgZW52U2hvcnQsXG4gICAgICBwcmVmaXgsXG4gICAgICByZXBvTmFtZSxcbiAgICAgIHN1YnNjcmlwdGlvbk5hbWUsXG4gICAgfSA9IGlucHV0O1xuICAgIGNvbnN0IGZpbGVQYXRoID0gYHNyYy9henVyZS1zdWJzY3JpcHRpb25zL3N1YnNjcmlwdGlvbnMvJHtzdWJzY3JpcHRpb25OYW1lfS90ZXJyYWZvcm0udGZ2YXJzLmpzb25gO1xuICAgIGNvbnN0IGJyYW5jaE5hbWUgPSBgZmVhdHMvYWRkLSR7cmVwb05hbWV9LSR7c3Vic2NyaXB0aW9uTmFtZX0tYm9vdHN0cmFwLWlkZW50aXR5YDtcblxuICAgIHJldHVybiAoXG4gICAgICAvLyBTdGVwIDE6IFJlYWQgZmlsZSBmcm9tIG1haW4gdG8gZGV0ZXJtaW5lIGlmIGNoYW5nZXMgYXJlIG5lZWRlZFxuICAgICAgUmVzdWx0QXN5bmMuZnJvbVByb21pc2UoXG4gICAgICAgIGdpdEh1YlNlcnZpY2UuZ2V0RmlsZUNvbnRlbnQoe1xuICAgICAgICAgIG93bmVyOiBSRVBPX09XTkVSLFxuICAgICAgICAgIHBhdGg6IGZpbGVQYXRoLFxuICAgICAgICAgIHJlZjogQkFTRV9CUkFOQ0gsXG4gICAgICAgICAgcmVwbzogUkVQT19OQU1FLFxuICAgICAgICB9KSxcbiAgICAgICAgKCkgPT5cbiAgICAgICAgICBuZXcgQXV0aG9yaXphdGlvbkVycm9yKFxuICAgICAgICAgICAgYFVuYWJsZSB0byBnZXQgJHtmaWxlUGF0aH0gaW4gJHtSRVBPX09XTkVSfS8ke1JFUE9fTkFNRX1gLFxuICAgICAgICAgICksXG4gICAgICApXG4gICAgICAgIC5vclRlZSgoZXJyb3IpID0+IHtcbiAgICAgICAgICBsb2dnZXIuZXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH0pXG4gICAgICAgIC8vIFN0ZXAgMjogUGFyc2UgZmlsZSwgZW5zdXJlIGlkZW50aXR5LCB1cHNlcnQgZ3JvdXBzLCBkZXRlY3Qgbm8tb3BcbiAgICAgICAgLmFuZFRoZW4oKHsgY29udGVudCwgc2hhIH0pID0+IHtcbiAgICAgICAgICBjb25zdCBwYXJzZVJlc3VsdCA9IHBhcnNlQXV0aG9yaXphdGlvbkZpbGUoY29udGVudCk7XG4gICAgICAgICAgaWYgKHBhcnNlUmVzdWx0LmlzRXJyKCkpIHtcbiAgICAgICAgICAgIGxvZ2dlci5lcnJvcihcIkZhaWxlZCB0byBtb2RpZnkgdGZ2YXJzXCIsIHtcbiAgICAgICAgICAgICAgZXJyb3I6IHBhcnNlUmVzdWx0LmVycm9yLm1lc3NhZ2UsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBlcnJBc3luYyhwYXJzZVJlc3VsdC5lcnJvcik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlUmVzdWx0LnZhbHVlO1xuXG4gICAgICAgICAgY29uc3QgeyBpZGVudGl0eUFkZGVkLCBqc29uOiB3aXRoSWRlbnRpdHkgfSA9IGVuc3VyZUlkZW50aXR5KFxuICAgICAgICAgICAgcGFyc2VkLFxuICAgICAgICAgICAgYm9vdHN0cmFwSWRlbnRpdHlJZCxcbiAgICAgICAgICApO1xuICAgICAgICAgIGlmICghaWRlbnRpdHlBZGRlZCkge1xuICAgICAgICAgICAgbG9nZ2VyLndhcm4oXCJJZGVudGl0eSBhbHJlYWR5IGV4aXN0cywgY2hlY2tpbmcgZ3JvdXBzXCIsIHtcbiAgICAgICAgICAgICAgaWRlbnRpdHlJZDogYm9vdHN0cmFwSWRlbnRpdHlJZCxcbiAgICAgICAgICAgICAgc3Vic2NyaXB0aW9uOiBzdWJzY3JpcHRpb25OYW1lLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgeyBncm91cHNDaGFuZ2VkLCBqc29uOiB1cGRhdGVkSnNvbiB9ID0gdXBzZXJ0R3JvdXBzKFxuICAgICAgICAgICAgd2l0aElkZW50aXR5LFxuICAgICAgICAgICAgcHJlZml4LFxuICAgICAgICAgICAgZW52U2hvcnQsXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGlmICghaWRlbnRpdHlBZGRlZCAmJiAhZ3JvdXBzQ2hhbmdlZCkge1xuICAgICAgICAgICAgLy8gTm90aGluZyB0byBkbyDigJQgbm8gYnJhbmNoIGNyZWF0ZWQsIG5vIFBSIG5lZWRlZC5cbiAgICAgICAgICAgIGxvZ2dlci5pbmZvKFwiTm8gY2hhbmdlcyBuZWVkZWQsIHNraXBwaW5nIFBSXCIsIHtcbiAgICAgICAgICAgICAgc3Vic2NyaXB0aW9uOiBzdWJzY3JpcHRpb25OYW1lLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gb2tBc3luYyhuZXcgQXV0aG9yaXphdGlvblJlc3VsdCgpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCB7IGJvZHksIG1lc3NhZ2UsIHRpdGxlIH0gPSBtYWtlQ2hhbmdlRGVzY3JpcHRpb24oXG4gICAgICAgICAgICBzdWJzY3JpcHRpb25OYW1lLFxuICAgICAgICAgICAgYm9vdHN0cmFwSWRlbnRpdHlJZCxcbiAgICAgICAgICAgIGlkZW50aXR5QWRkZWQsXG4gICAgICAgICAgICBncm91cHNDaGFuZ2VkLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICAvLyBTdGVwIDM6IENyZWF0ZSBicmFuY2ggb25seSB3aGVuIGNoYW5nZXMgYXJlIG5lZWRlZFxuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBSZXN1bHRBc3luYy5mcm9tUHJvbWlzZShcbiAgICAgICAgICAgICAgZ2l0SHViU2VydmljZS5jcmVhdGVCcmFuY2goe1xuICAgICAgICAgICAgICAgIGJyYW5jaE5hbWUsXG4gICAgICAgICAgICAgICAgZnJvbVJlZjogQkFTRV9CUkFOQ0gsXG4gICAgICAgICAgICAgICAgb3duZXI6IFJFUE9fT1dORVIsXG4gICAgICAgICAgICAgICAgcmVwbzogUkVQT19OQU1FLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgKCkgPT5cbiAgICAgICAgICAgICAgICBuZXcgQXV0aG9yaXphdGlvbkVycm9yKFxuICAgICAgICAgICAgICAgICAgYFVuYWJsZSB0byBjcmVhdGUgYnJhbmNoICR7YnJhbmNoTmFtZX0gaW4gJHtSRVBPX09XTkVSfS8ke1JFUE9fTkFNRX1gLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAgIC5vclRlZSgoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC8vIFN0ZXAgNDogVXBkYXRlIGZpbGUgb24gdGhlIGJyYW5jaCB1c2luZyB0aGUgU0hBIHJlYWQgZnJvbSBtYWluXG4gICAgICAgICAgICAgIC5hbmRUaGVuKCgpID0+XG4gICAgICAgICAgICAgICAgUmVzdWx0QXN5bmMuZnJvbVByb21pc2UoXG4gICAgICAgICAgICAgICAgICBnaXRIdWJTZXJ2aWNlLnVwZGF0ZUZpbGUoe1xuICAgICAgICAgICAgICAgICAgICBicmFuY2g6IGJyYW5jaE5hbWUsXG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IEpTT04uc3RyaW5naWZ5KHVwZGF0ZWRKc29uLCBudWxsLCAyKSxcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgb3duZXI6IFJFUE9fT1dORVIsXG4gICAgICAgICAgICAgICAgICAgIHBhdGg6IGZpbGVQYXRoLFxuICAgICAgICAgICAgICAgICAgICByZXBvOiBSRVBPX05BTUUsXG4gICAgICAgICAgICAgICAgICAgIHNoYSxcbiAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgbmV3IEF1dGhvcml6YXRpb25FcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICBgVW5hYmxlIHRvIHVwZGF0ZSAke2ZpbGVQYXRofSBvbiBicmFuY2ggJHticmFuY2hOYW1lfSBpbiAke1JFUE9fT1dORVJ9LyR7UkVQT19OQU1FfWAsXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAub3JUZWUoKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAvLyBTdGVwIDU6IENyZWF0ZSBQUlxuICAgICAgICAgICAgICAuYW5kVGhlbigoKSA9PlxuICAgICAgICAgICAgICAgIFJlc3VsdEFzeW5jLmZyb21Qcm9taXNlKFxuICAgICAgICAgICAgICAgICAgZ2l0SHViU2VydmljZS5jcmVhdGVQdWxsUmVxdWVzdCh7XG4gICAgICAgICAgICAgICAgICAgIGJhc2U6IEJBU0VfQlJBTkNILFxuICAgICAgICAgICAgICAgICAgICBib2R5LFxuICAgICAgICAgICAgICAgICAgICBoZWFkOiBicmFuY2hOYW1lLFxuICAgICAgICAgICAgICAgICAgICBvd25lcjogUkVQT19PV05FUixcbiAgICAgICAgICAgICAgICAgICAgcmVwbzogUkVQT19OQU1FLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZSxcbiAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgbmV3IEF1dGhvcml6YXRpb25FcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICBgVW5hYmxlIHRvIGNyZWF0ZSBwdWxsIHJlcXVlc3QgZnJvbSAke2JyYW5jaE5hbWV9IHRvICR7QkFTRV9CUkFOQ0h9IGluICR7UkVQT19PV05FUn0vJHtSRVBPX05BTUV9YCxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIC5vclRlZSgoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC5tYXAoKHByKSA9PiBuZXcgQXV0aG9yaXphdGlvblJlc3VsdChwci51cmwpKVxuICAgICAgICAgICk7XG4gICAgICAgIH0pXG4gICAgKTtcbiAgfSxcbn0pO1xuIl19
240
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXp1cmUtYXV0aG9yaXphdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hZGFwdGVycy9wYWdvcGEtdGVjaG5vbG9neS9henVyZS1hdXRob3JpemF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O0dBT0c7QUFFSCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBVSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDN0UsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUV4QixPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUVuQixtQ0FBbUMsR0FFcEMsTUFBTSwrQkFBK0IsQ0FBQztBQUV2QyxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLG9CQUFvQixHQUNyQixNQUFNLGlDQUFpQyxDQUFDO0FBRXpDLE1BQU0sNEJBQTRCLEdBQUcsQ0FBQztLQUNuQyxNQUFNLENBQUM7SUFDTixpQkFBaUIsRUFBRSxDQUFDO1NBQ2pCLE1BQU0sQ0FBQztRQUNOLHVCQUF1QixFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0tBQzdDLENBQUM7U0FDRCxLQUFLLEVBQUU7SUFDVixNQUFNLEVBQUUsQ0FBQztTQUNOLEtBQUssQ0FDSixDQUFDO1NBQ0UsTUFBTSxDQUFDO1FBQ04sT0FBTyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzVCLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO1FBQ2hCLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztLQUMzQixDQUFDO1NBQ0QsS0FBSyxFQUFFLENBQ1g7U0FDQSxRQUFRLEVBQUU7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SSxTQUFTLEVBQUUsQ0FDL0csQ0FDSixDQUNGO2lCQUNBLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUNmLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzlCLENBQUMsQ0FBQztpQkFDRCxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksbUJBQW1CLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQ2hELENBQUM7UUFDSixDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ0osQ0FBQztDQUNGLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUGFnb1BBIFRlY2hub2xvZ3kgQXp1cmUgQXV0aG9yaXphdGlvbiBBZGFwdGVyXG4gKlxuICogSW1wbGVtZW50cyB0aGUgQXV0aG9yaXphdGlvblNlcnZpY2UgaW50ZXJmYWNlIGZvciB0aGUgUGFnb1BBIEF6dXJlXG4gKiBhdXRob3JpemF0aW9uIHdvcmtmbG93LiBFbmNhcHN1bGF0ZXMgYWxsIHBsYXRmb3JtLXNwZWNpZmljIGRldGFpbHM6XG4gKiB0aGUgdGFyZ2V0IEdpdEh1YiByZXBvc2l0b3J5LCBmaWxlIHBhdGhzLCBicmFuY2ggbmFtaW5nLCBKU09OIGZpbGVcbiAqIHBhcnNpbmcsIGFuZCBwdWxsIHJlcXVlc3QgY3JlYXRpb24uXG4gKi9cblxuaW1wb3J0IHsgZ2V0TG9nZ2VyIH0gZnJvbSBcIkBsb2d0YXBlL2xvZ3RhcGVcIjtcbmltcG9ydCB7IGVyciwgZXJyQXN5bmMsIG9rLCBva0FzeW5jLCBSZXN1bHQsIFJlc3VsdEFzeW5jIH0gZnJvbSBcIm5ldmVydGhyb3dcIjtcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5cbmltcG9ydCB7XG4gIEF1dGhvcml6YXRpb25FcnJvcixcbiAgQXV0aG9yaXphdGlvblJlc3VsdCxcbiAgQXV0aG9yaXphdGlvblNlcnZpY2UsXG4gIEludmFsaWRBdXRob3JpemF0aW9uRmlsZUZvcm1hdEVycm9yLFxuICBSZXF1ZXN0QXV0aG9yaXphdGlvbklucHV0LFxufSBmcm9tIFwiLi4vLi4vZG9tYWluL2F1dGhvcml6YXRpb24uanNcIjtcbmltcG9ydCB7IEdpdEh1YlNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vZG9tYWluL2dpdGh1Yi5qc1wiO1xuaW1wb3J0IHtcbiAgREVGQVVMVF9HUk9VUF9TUEVDUyxcbiAgbWFrZUF6dXJlQWRHcm91cE5hbWUsXG59IGZyb20gXCIuL2F6dXJlLWF1dGhvcml6YXRpb24tY29uZmlnLmpzXCI7XG5cbmNvbnN0IGF6dXJlQXV0aG9yaXphdGlvbkZpbGVTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIGRpcmVjdG9yeV9yZWFkZXJzOiB6XG4gICAgICAub2JqZWN0KHtcbiAgICAgICAgc2VydmljZV9wcmluY2lwYWxzX25hbWU6IHouYXJyYXkoei5zdHJpbmcoKSksXG4gICAgICB9KVxuICAgICAgLmxvb3NlKCksXG4gICAgZ3JvdXBzOiB6XG4gICAgICAuYXJyYXkoXG4gICAgICAgIHpcbiAgICAgICAgICAub2JqZWN0KHtcbiAgICAgICAgICAgIG1lbWJlcnM6IHouYXJyYXkoei5zdHJpbmcoKSksXG4gICAgICAgICAgICBuYW1lOiB6LnN0cmluZygpLFxuICAgICAgICAgICAgcm9sZXM6IHouYXJyYXkoei5zdHJpbmcoKSksXG4gICAgICAgICAgfSlcbiAgICAgICAgICAubG9vc2UoKSxcbiAgICAgIClcbiAgICAgIC5vcHRpb25hbCgpLFxuICB9KVxuICAubG9vc2UoKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdHdvIHJvbGUgYXJyYXlzIGFyZSBlcXVpdmFsZW50IChzYW1lIHJvbGVzLCBvcmRlci1pbmRlcGVuZGVudCkuXG4gKi9cbmNvbnN0IHJvbGVzQXJlRXF1YWwgPSAoXG4gIHJvbGVzMTogcmVhZG9ubHkgc3RyaW5nW10sXG4gIHJvbGVzMjogcmVhZG9ubHkgc3RyaW5nW10sXG4pOiBib29sZWFuID0+IHtcbiAgaWYgKHJvbGVzMS5sZW5ndGggIT09IHJvbGVzMi5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uc3Qgc29ydGVkMSA9IFsuLi5yb2xlczFdLnNvcnQoKTtcbiAgY29uc3Qgc29ydGVkMiA9IFsuLi5yb2xlczJdLnNvcnQoKTtcbiAgcmV0dXJuIHNvcnRlZDEuZXZlcnkoKHJvbGUsIGlkeCkgPT4gcm9sZSA9PT0gc29ydGVkMltpZHhdKTtcbn07XG5cbi8qKlxuICogQWRkcyBvciB1cGRhdGVzIHRoZSBBRCBncm91cHMgYXJyYXkgaW4gdGhlIHBhcnNlZCBhdXRob3JpemF0aW9uIEpTT04uXG4gKiAtIE1pc3NpbmcgZGVmYXVsdCBncm91cHMgYXJlIGFkZGVkIHdpdGggZW1wdHkgbWVtYmVycy5cbiAqIC0gRXhpc3RpbmcgZ3JvdXBzIHdpdGggd3Jvbmcgcm9sZXMgaGF2ZSB0aGVpciByb2xlcyB1cGRhdGVkOyBtZW1iZXJzIGFyZSBwcmVzZXJ2ZWQuXG4gKiAtIEN1c3RvbSAobm9uLWRlZmF1bHQpIGdyb3VwcyBhcmUgcHJlc2VydmVkIHVuY2hhbmdlZC5cbiAqIFJldHVybnMgdGhlIHVwZGF0ZWQgSlNPTiBhbG9uZyB3aXRoIGEgZmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgYW55dGhpbmcgY2hhbmdlZC5cbiAqL1xuY29uc3QgdXBzZXJ0R3JvdXBzID0gKFxuICBqc29uQ29udGVudDogei5pbmZlcjx0eXBlb2YgYXp1cmVBdXRob3JpemF0aW9uRmlsZVNjaGVtYT4sXG4gIHByZWZpeDogc3RyaW5nLFxuICBlbnZTaG9ydDogc3RyaW5nLFxuKToge1xuICBncm91cHNDaGFuZ2VkOiBib29sZWFuO1xuICBqc29uOiB6LmluZmVyPHR5cGVvZiBhenVyZUF1dGhvcml6YXRpb25GaWxlU2NoZW1hPjtcbn0gPT4ge1xuICBjb25zdCBleHBlY3RlZEJ5TmFtZSA9IG5ldyBNYXAoXG4gICAgREVGQVVMVF9HUk9VUF9TUEVDUy5tYXAoKHNwZWMpID0+IFtcbiAgICAgIG1ha2VBenVyZUFkR3JvdXBOYW1lKHByZWZpeCwgZW52U2hvcnQsIHNwZWMuZ3JvdXBOYW1lKSxcbiAgICAgIHNwZWMsXG4gICAgXSksXG4gICk7XG5cbiAgY29uc3QgZXhpc3RpbmdHcm91cHMgPSBqc29uQ29udGVudC5ncm91cHMgPz8gW107XG4gIGNvbnN0IHNlZW5EZWZhdWx0cyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gIC8vIFdhbGsgZXhpc3RpbmcgZ3JvdXBzIGluIHRoZWlyIG9yaWdpbmFsIG9yZGVyLCB1cGRhdGluZyByb2xlcyB3aGVyZSBuZWVkZWRcbiAgY29uc3QgZmluYWxHcm91cHM6IHR5cGVvZiBleGlzdGluZ0dyb3VwcyA9IFtdO1xuICBsZXQgZ3JvdXBzQ2hhbmdlZCA9IGZhbHNlO1xuXG4gIGZvciAoY29uc3QgZXhpc3Rpbmcgb2YgZXhpc3RpbmdHcm91cHMpIHtcbiAgICBjb25zdCBzcGVjID0gZXhwZWN0ZWRCeU5hbWUuZ2V0KGV4aXN0aW5nLm5hbWUpO1xuICAgIGlmICghc3BlYykge1xuICAgICAgLy8gQ3VzdG9tIGdyb3VwIOKAlCBwcmVzZXJ2ZSBhcy1pc1xuICAgICAgZmluYWxHcm91cHMucHVzaChleGlzdGluZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNlZW5EZWZhdWx0cy5hZGQoZXhpc3RpbmcubmFtZSk7XG4gICAgICBpZiAoIXJvbGVzQXJlRXF1YWwoZXhpc3Rpbmcucm9sZXMsIHNwZWMucm9sZXMpKSB7XG4gICAgICAgIC8vIFJvbGVzIGRpZmZlciDigJQgdXBkYXRlIHJvbGVzLCBwcmVzZXJ2ZSBtZW1iZXJzIGFuZCBhbnkgZXh0cmEgZmllbGRzXG4gICAgICAgIGZpbmFsR3JvdXBzLnB1c2goeyAuLi5leGlzdGluZywgcm9sZXM6IFsuLi5zcGVjLnJvbGVzXSB9KTtcbiAgICAgICAgZ3JvdXBzQ2hhbmdlZCA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmaW5hbEdyb3Vwcy5wdXNoKGV4aXN0aW5nKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBBcHBlbmQgbWlzc2luZyBkZWZhdWx0IGdyb3VwcyBhdCB0aGUgZW5kXG4gIGZvciAoY29uc3Qgc3BlYyBvZiBERUZBVUxUX0dST1VQX1NQRUNTKSB7XG4gICAgY29uc3QgbmFtZSA9IG1ha2VBenVyZUFkR3JvdXBOYW1lKHByZWZpeCwgZW52U2hvcnQsIHNwZWMuZ3JvdXBOYW1lKTtcbiAgICBpZiAoIXNlZW5EZWZhdWx0cy5oYXMobmFtZSkpIHtcbiAgICAgIGZpbmFsR3JvdXBzLnB1c2goeyBtZW1iZXJzOiBbXSwgbmFtZSwgcm9sZXM6IFsuLi5zcGVjLnJvbGVzXSB9KTtcbiAgICAgIGdyb3Vwc0NoYW5nZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7IGdyb3Vwc0NoYW5nZWQsIGpzb246IHsgLi4uanNvbkNvbnRlbnQsIGdyb3VwczogZmluYWxHcm91cHMgfSB9O1xufTtcblxuLyoqXG4gKiBQYXJzZXMgYW5kIHZhbGlkYXRlcyB0aGUgYXV0aG9yaXphdGlvbiBmaWxlIGNvbnRlbnQgKEpTT04gcGFyc2luZyArIHNjaGVtYSB2YWxpZGF0aW9uKS5cbiAqL1xuY29uc3QgcGFyc2VBdXRob3JpemF0aW9uRmlsZSA9IChcbiAgY29udGVudDogc3RyaW5nLFxuKTogUmVzdWx0PHouaW5mZXI8dHlwZW9mIGF6dXJlQXV0aG9yaXphdGlvbkZpbGVTY2hlbWE+LCBBdXRob3JpemF0aW9uRXJyb3I+ID0+IHtcbiAgbGV0IHBhcnNlZDtcbiAgdHJ5IHtcbiAgICBwYXJzZWQgPSBKU09OLnBhcnNlKGNvbnRlbnQpO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZXJyKFxuICAgICAgbmV3IEludmFsaWRBdXRob3JpemF0aW9uRmlsZUZvcm1hdEVycm9yKFwiRmlsZSBjb250ZW50IGlzIG5vdCB2YWxpZCBKU09OXCIpLFxuICAgICk7XG4gIH1cblxuICBjb25zdCByZXN1bHQgPSBhenVyZUF1dGhvcml6YXRpb25GaWxlU2NoZW1hLnNhZmVQYXJzZShwYXJzZWQpO1xuICBpZiAoIXJlc3VsdC5zdWNjZXNzKSB7XG4gICAgcmV0dXJuIGVycihcbiAgICAgIG5ldyBJbnZhbGlkQXV0aG9yaXphdGlvbkZpbGVGb3JtYXRFcnJvcihcbiAgICAgICAgXCJDb3VsZCBub3QgZmluZCBkaXJlY3RvcnlfcmVhZGVycy5zZXJ2aWNlX3ByaW5jaXBhbHNfbmFtZSBsaXN0XCIsXG4gICAgICApLFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gb2socmVzdWx0LmRhdGEpO1xufTtcblxuLyoqXG4gKiBQcm9kdWNlcyBjb21taXQgbWVzc2FnZSwgUFIgdGl0bGUsIGFuZCBQUiBib2R5IHRhaWxvcmVkIHRvIHdoYXQgYWN0dWFsbHkgY2hhbmdlZC5cbiAqL1xuY29uc3QgbWFrZUNoYW5nZURlc2NyaXB0aW9uID0gKFxuICBzdWJzY3JpcHRpb25OYW1lOiBzdHJpbmcsXG4gIGJvb3RzdHJhcElkZW50aXR5SWQ6IHN0cmluZyxcbiAgaWRlbnRpdHlBZGRlZDogYm9vbGVhbixcbiAgZ3JvdXBzQ2hhbmdlZDogYm9vbGVhbixcbik6IHsgYm9keTogc3RyaW5nOyBtZXNzYWdlOiBzdHJpbmc7IHRpdGxlOiBzdHJpbmcgfSA9PiB7XG4gIGlmIChpZGVudGl0eUFkZGVkICYmIGdyb3Vwc0NoYW5nZWQpIHtcbiAgICBjb25zdCB0aXRsZSA9IGBBZGQgYm9vdHN0cmFwIGlkZW50aXR5IGFuZCBBRCBncm91cHMgZm9yICR7c3Vic2NyaXB0aW9uTmFtZX1gO1xuICAgIHJldHVybiB7XG4gICAgICBib2R5OiBgVGhpcyBQUiBhZGRzIHRoZSBib290c3RyYXAgaWRlbnRpdHkgXFxgJHtib290c3RyYXBJZGVudGl0eUlkfVxcYCB0byB0aGUgZGlyZWN0b3J5IHJlYWRlcnMgYW5kIGNvbmZpZ3VyZXMgQUQgZ3JvdXBzIGZvciBzdWJzY3JpcHRpb24gXFxgJHtzdWJzY3JpcHRpb25OYW1lfVxcYC5gLFxuICAgICAgbWVzc2FnZTogdGl0bGUsXG4gICAgICB0aXRsZSxcbiAgICB9O1xuICB9XG4gIGlmIChpZGVudGl0eUFkZGVkKSB7XG4gICAgY29uc3QgdGl0bGUgPSBgQWRkIGJvb3RzdHJhcCBpZGVudGl0eSBmb3IgJHtzdWJzY3JpcHRpb25OYW1lfWA7XG4gICAgcmV0dXJuIHtcbiAgICAgIGJvZHk6IGBUaGlzIFBSIGFkZHMgdGhlIGJvb3RzdHJhcCBpZGVudGl0eSBcXGAke2Jvb3RzdHJhcElkZW50aXR5SWR9XFxgIHRvIHRoZSBkaXJlY3RvcnkgcmVhZGVycyBmb3Igc3Vic2NyaXB0aW9uIFxcYCR7c3Vic2NyaXB0aW9uTmFtZX1cXGAuYCxcbiAgICAgIG1lc3NhZ2U6IHRpdGxlLFxuICAgICAgdGl0bGUsXG4gICAgfTtcbiAgfVxuICBjb25zdCB0aXRsZSA9IGBDb25maWd1cmUgQUQgZ3JvdXBzIGZvciAke3N1YnNjcmlwdGlvbk5hbWV9YDtcbiAgcmV0dXJuIHtcbiAgICBib2R5OiBgVGhpcyBQUiBjb25maWd1cmVzIEFEIGdyb3VwcyBmb3Igc3Vic2NyaXB0aW9uIFxcYCR7c3Vic2NyaXB0aW9uTmFtZX1cXGAuYCxcbiAgICBtZXNzYWdlOiB0aXRsZSxcbiAgICB0aXRsZSxcbiAgfTtcbn07XG5cbi8qKlxuICogRW5zdXJlcyB0aGUgZ2l2ZW4gaWRlbnRpdHkgaXMgcHJlc2VudCBpbiB0aGUgc2VydmljZV9wcmluY2lwYWxzX25hbWUgbGlzdC5cbiAqIFJldHVybnMgdGhlIChwb3NzaWJseSB1cGRhdGVkKSBKU09OIGFuZCB3aGV0aGVyIHRoZSBpZGVudGl0eSB3YXMgbmV3bHkgYWRkZWQuXG4gKiBOZXZlciBmYWlsczogaWYgdGhlIGlkZW50aXR5IGFscmVhZHkgZXhpc3RzIGl0IGlzIGEgbm8tb3Agd2l0aCBpZGVudGl0eUFkZGVkID0gZmFsc2UuXG4gKi9cbmNvbnN0IGVuc3VyZUlkZW50aXR5ID0gKFxuICBqc29uQ29udGVudDogei5pbmZlcjx0eXBlb2YgYXp1cmVBdXRob3JpemF0aW9uRmlsZVNjaGVtYT4sXG4gIGlkZW50aXR5SWQ6IHN0cmluZyxcbik6IHtcbiAgaWRlbnRpdHlBZGRlZDogYm9vbGVhbjtcbiAganNvbjogei5pbmZlcjx0eXBlb2YgYXp1cmVBdXRob3JpemF0aW9uRmlsZVNjaGVtYT47XG59ID0+IHtcbiAgaWYgKFxuICAgIGpzb25Db250ZW50LmRpcmVjdG9yeV9yZWFkZXJzLnNlcnZpY2VfcHJpbmNpcGFsc19uYW1lLmluY2x1ZGVzKGlkZW50aXR5SWQpXG4gICkge1xuICAgIHJldHVybiB7IGlkZW50aXR5QWRkZWQ6IGZhbHNlLCBqc29uOiBqc29uQ29udGVudCB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBpZGVudGl0eUFkZGVkOiB0cnVlLFxuICAgIGpzb246IHtcbiAgICAgIC4uLmpzb25Db250ZW50LFxuICAgICAgZGlyZWN0b3J5X3JlYWRlcnM6IHtcbiAgICAgICAgLi4uanNvbkNvbnRlbnQuZGlyZWN0b3J5X3JlYWRlcnMsXG4gICAgICAgIHNlcnZpY2VfcHJpbmNpcGFsc19uYW1lOiBbXG4gICAgICAgICAgLi4uanNvbkNvbnRlbnQuZGlyZWN0b3J5X3JlYWRlcnMuc2VydmljZV9wcmluY2lwYWxzX25hbWUsXG4gICAgICAgICAgaWRlbnRpdHlJZCxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfTtcbn07XG5cbmNvbnN0IFJFUE9fTkFNRSA9IFwiZW5nLWF6dXJlLWF1dGhvcml6YXRpb25cIjtcbmNvbnN0IEJBU0VfQlJBTkNIID0gXCJtYWluXCI7XG5cbmV4cG9ydCBjb25zdCBtYWtlQXp1cmVBdXRob3JpemF0aW9uU2VydmljZSA9IChcbiAgZ2l0SHViU2VydmljZTogR2l0SHViU2VydmljZSxcbik6IEF1dGhvcml6YXRpb25TZXJ2aWNlID0+ICh7XG4gIHJlcXVlc3RBdXRob3JpemF0aW9uKFxuICAgIGlucHV0OiBSZXF1ZXN0QXV0aG9yaXphdGlvbklucHV0LFxuICApOiBSZXN1bHRBc3luYzxBdXRob3JpemF0aW9uUmVzdWx0LCBBdXRob3JpemF0aW9uRXJyb3I+IHtcbiAgICBjb25zdCBsb2dnZXIgPSBnZXRMb2dnZXIoW1wiZHgtY2xpXCIsIFwicGFnb3BhLWF6dXJlLWF1dGhvcml6YXRpb25cIl0pO1xuICAgIGNvbnN0IHtcbiAgICAgIGJvb3RzdHJhcElkZW50aXR5SWQsXG4gICAgICBlbnZTaG9ydCxcbiAgICAgIHByZWZpeCxcbiAgICAgIHJlcG9OYW1lLFxuICAgICAgcmVwb093bmVyLFxuICAgICAgc3Vic2NyaXB0aW9uTmFtZSxcbiAgICB9ID0gaW5wdXQ7XG4gICAgY29uc3QgYXV0aG9yaXphdGlvblJlcG9Pd25lciA9IHJlcG9Pd25lcjtcbiAgICBjb25zdCBmaWxlUGF0aCA9IGBzcmMvYXp1cmUtc3Vic2NyaXB0aW9ucy9zdWJzY3JpcHRpb25zLyR7c3Vic2NyaXB0aW9uTmFtZX0vdGVycmFmb3JtLnRmdmFycy5qc29uYDtcbiAgICBjb25zdCBicmFuY2hOYW1lID0gYGZlYXRzL2FkZC0ke3JlcG9OYW1lfS0ke3N1YnNjcmlwdGlvbk5hbWV9LWJvb3RzdHJhcC1pZGVudGl0eWA7XG5cbiAgICByZXR1cm4gKFxuICAgICAgLy8gU3RlcCAxOiBSZWFkIGZpbGUgZnJvbSBtYWluIHRvIGRldGVybWluZSBpZiBjaGFuZ2VzIGFyZSBuZWVkZWRcbiAgICAgIFJlc3VsdEFzeW5jLmZyb21Qcm9taXNlKFxuICAgICAgICBnaXRIdWJTZXJ2aWNlLmdldEZpbGVDb250ZW50KHtcbiAgICAgICAgICBvd25lcjogYXV0aG9yaXphdGlvblJlcG9Pd25lcixcbiAgICAgICAgICBwYXRoOiBmaWxlUGF0aCxcbiAgICAgICAgICByZWY6IEJBU0VfQlJBTkNILFxuICAgICAgICAgIHJlcG86IFJFUE9fTkFNRSxcbiAgICAgICAgfSksXG4gICAgICAgICgpID0+XG4gICAgICAgICAgbmV3IEF1dGhvcml6YXRpb25FcnJvcihcbiAgICAgICAgICAgIGBVbmFibGUgdG8gZ2V0ICR7ZmlsZVBhdGh9IGluICR7YXV0aG9yaXphdGlvblJlcG9Pd25lcn0vJHtSRVBPX05BTUV9YCxcbiAgICAgICAgICApLFxuICAgICAgKVxuICAgICAgICAub3JUZWUoKGVycm9yKSA9PiB7XG4gICAgICAgICAgbG9nZ2VyLmVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9KVxuICAgICAgICAvLyBTdGVwIDI6IFBhcnNlIGZpbGUsIGVuc3VyZSBpZGVudGl0eSwgdXBzZXJ0IGdyb3VwcywgZGV0ZWN0IG5vLW9wXG4gICAgICAgIC5hbmRUaGVuKCh7IGNvbnRlbnQsIHNoYSB9KSA9PiB7XG4gICAgICAgICAgY29uc3QgcGFyc2VSZXN1bHQgPSBwYXJzZUF1dGhvcml6YXRpb25GaWxlKGNvbnRlbnQpO1xuICAgICAgICAgIGlmIChwYXJzZVJlc3VsdC5pc0VycigpKSB7XG4gICAgICAgICAgICBsb2dnZXIuZXJyb3IoXCJGYWlsZWQgdG8gbW9kaWZ5IHRmdmFyc1wiLCB7XG4gICAgICAgICAgICAgIGVycm9yOiBwYXJzZVJlc3VsdC5lcnJvci5tZXNzYWdlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gZXJyQXN5bmMocGFyc2VSZXN1bHQuZXJyb3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBwYXJzZWQgPSBwYXJzZVJlc3VsdC52YWx1ZTtcblxuICAgICAgICAgIGNvbnN0IHsgaWRlbnRpdHlBZGRlZCwganNvbjogd2l0aElkZW50aXR5IH0gPSBlbnN1cmVJZGVudGl0eShcbiAgICAgICAgICAgIHBhcnNlZCxcbiAgICAgICAgICAgIGJvb3RzdHJhcElkZW50aXR5SWQsXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAoIWlkZW50aXR5QWRkZWQpIHtcbiAgICAgICAgICAgIGxvZ2dlci53YXJuKFwiSWRlbnRpdHkgYWxyZWFkeSBleGlzdHMsIGNoZWNraW5nIGdyb3Vwc1wiLCB7XG4gICAgICAgICAgICAgIGlkZW50aXR5SWQ6IGJvb3RzdHJhcElkZW50aXR5SWQsXG4gICAgICAgICAgICAgIHN1YnNjcmlwdGlvbjogc3Vic2NyaXB0aW9uTmFtZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHsgZ3JvdXBzQ2hhbmdlZCwganNvbjogdXBkYXRlZEpzb24gfSA9IHVwc2VydEdyb3VwcyhcbiAgICAgICAgICAgIHdpdGhJZGVudGl0eSxcbiAgICAgICAgICAgIHByZWZpeCxcbiAgICAgICAgICAgIGVudlNob3J0LFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBpZiAoIWlkZW50aXR5QWRkZWQgJiYgIWdyb3Vwc0NoYW5nZWQpIHtcbiAgICAgICAgICAgIC8vIE5vdGhpbmcgdG8gZG8g4oCUIG5vIGJyYW5jaCBjcmVhdGVkLCBubyBQUiBuZWVkZWQuXG4gICAgICAgICAgICBsb2dnZXIuaW5mbyhcIk5vIGNoYW5nZXMgbmVlZGVkLCBza2lwcGluZyBQUlwiLCB7XG4gICAgICAgICAgICAgIHN1YnNjcmlwdGlvbjogc3Vic2NyaXB0aW9uTmFtZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIG9rQXN5bmMobmV3IEF1dGhvcml6YXRpb25SZXN1bHQoKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgeyBib2R5LCBtZXNzYWdlLCB0aXRsZSB9ID0gbWFrZUNoYW5nZURlc2NyaXB0aW9uKFxuICAgICAgICAgICAgc3Vic2NyaXB0aW9uTmFtZSxcbiAgICAgICAgICAgIGJvb3RzdHJhcElkZW50aXR5SWQsXG4gICAgICAgICAgICBpZGVudGl0eUFkZGVkLFxuICAgICAgICAgICAgZ3JvdXBzQ2hhbmdlZCxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgLy8gU3RlcCAzOiBDcmVhdGUgYnJhbmNoIG9ubHkgd2hlbiBjaGFuZ2VzIGFyZSBuZWVkZWRcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgUmVzdWx0QXN5bmMuZnJvbVByb21pc2UoXG4gICAgICAgICAgICAgIGdpdEh1YlNlcnZpY2UuY3JlYXRlQnJhbmNoKHtcbiAgICAgICAgICAgICAgICBicmFuY2hOYW1lLFxuICAgICAgICAgICAgICAgIGZyb21SZWY6IEJBU0VfQlJBTkNILFxuICAgICAgICAgICAgICAgIG93bmVyOiBhdXRob3JpemF0aW9uUmVwb093bmVyLFxuICAgICAgICAgICAgICAgIHJlcG86IFJFUE9fTkFNRSxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICgpID0+XG4gICAgICAgICAgICAgICAgbmV3IEF1dGhvcml6YXRpb25FcnJvcihcbiAgICAgICAgICAgICAgICAgIGBVbmFibGUgdG8gY3JlYXRlIGJyYW5jaCAke2JyYW5jaE5hbWV9IGluICR7YXV0aG9yaXphdGlvblJlcG9Pd25lcn0vJHtSRVBPX05BTUV9YCxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAub3JUZWUoKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAvLyBTdGVwIDQ6IFVwZGF0ZSBmaWxlIG9uIHRoZSBicmFuY2ggdXNpbmcgdGhlIFNIQSByZWFkIGZyb20gbWFpblxuICAgICAgICAgICAgICAuYW5kVGhlbigoKSA9PlxuICAgICAgICAgICAgICAgIFJlc3VsdEFzeW5jLmZyb21Qcm9taXNlKFxuICAgICAgICAgICAgICAgICAgZ2l0SHViU2VydmljZS51cGRhdGVGaWxlKHtcbiAgICAgICAgICAgICAgICAgICAgYnJhbmNoOiBicmFuY2hOYW1lLFxuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBKU09OLnN0cmluZ2lmeSh1cGRhdGVkSnNvbiwgbnVsbCwgMiksXG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgIG93bmVyOiBhdXRob3JpemF0aW9uUmVwb093bmVyLFxuICAgICAgICAgICAgICAgICAgICBwYXRoOiBmaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgcmVwbzogUkVQT19OQU1FLFxuICAgICAgICAgICAgICAgICAgICBzaGEsXG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICgpID0+XG4gICAgICAgICAgICAgICAgICAgIG5ldyBBdXRob3JpemF0aW9uRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgYFVuYWJsZSB0byB1cGRhdGUgJHtmaWxlUGF0aH0gb24gYnJhbmNoICR7YnJhbmNoTmFtZX0gaW4gJHthdXRob3JpemF0aW9uUmVwb093bmVyfS8ke1JFUE9fTkFNRX1gLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgLm9yVGVlKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLy8gU3RlcCA1OiBDcmVhdGUgUFJcbiAgICAgICAgICAgICAgLmFuZFRoZW4oKCkgPT5cbiAgICAgICAgICAgICAgICBSZXN1bHRBc3luYy5mcm9tUHJvbWlzZShcbiAgICAgICAgICAgICAgICAgIGdpdEh1YlNlcnZpY2UuY3JlYXRlUHVsbFJlcXVlc3Qoe1xuICAgICAgICAgICAgICAgICAgICBiYXNlOiBCQVNFX0JSQU5DSCxcbiAgICAgICAgICAgICAgICAgICAgYm9keSxcbiAgICAgICAgICAgICAgICAgICAgaGVhZDogYnJhbmNoTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgb3duZXI6IGF1dGhvcml6YXRpb25SZXBvT3duZXIsXG4gICAgICAgICAgICAgICAgICAgIHJlcG86IFJFUE9fTkFNRSxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGUsXG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICgpID0+XG4gICAgICAgICAgICAgICAgICAgIG5ldyBBdXRob3JpemF0aW9uRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgYFVuYWJsZSB0byBjcmVhdGUgcHVsbCByZXF1ZXN0IGZyb20gJHticmFuY2hOYW1lfSB0byAke0JBU0VfQlJBTkNIfSBpbiAke2F1dGhvcml6YXRpb25SZXBvT3duZXJ9LyR7UkVQT19OQU1FfWAsXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAub3JUZWUoKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAubWFwKChwcikgPT4gbmV3IEF1dGhvcml6YXRpb25SZXN1bHQocHIudXJsKSlcbiAgICAgICAgICApO1xuICAgICAgICB9KVxuICAgICk7XG4gIH0sXG59KTtcbiJdfQ==
@@ -11,6 +11,10 @@ export default function (plop) {
11
11
  // We filter them out here.
12
12
  const env = Object.fromEntries(Object.entries(process.env)
13
13
  .filter(([key]) => !key.startsWith("npm_config_"))
14
+ // Strip Node.js debugger env vars so child processes don't try to
15
+ // attach to the VS Code debugger and hang/fail.
16
+ .filter(([key]) => key !== "NODE_OPTIONS")
17
+ .filter(([key]) => !key.startsWith("VSCODE_INSPECTOR"))
14
18
  // Disable corepack download prompt
15
19
  .concat([["COREPACK_ENABLE_DOWNLOAD_PROMPT", "0"]]));
16
20
  const $ = $_({
@@ -27,4 +31,4 @@ export default function (plop) {
27
31
  return "Monorepo bootstrapped";
28
32
  });
29
33
  }
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXAtcG5wbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hZGFwdGVycy9wbG9wL2FjdGlvbnMvc2V0dXAtcG5wbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUVoQyxPQUFPLElBQUksTUFBTSxXQUFXLENBQUM7QUFFN0IsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRWxFLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxDQUFDO0FBRWxDLE1BQU0sQ0FBQyxPQUFPLFdBQVcsSUFBaUI7SUFDeEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFO1FBQzdDLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9DLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbkMscUVBQXFFO1FBQ3JFLDJEQUEyRDtRQUMzRCwyQkFBMkI7UUFDM0IsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FDNUIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO2FBQ3hCLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUNsRCxtQ0FBbUM7YUFDbEMsTUFBTSxDQUFDLENBQUMsQ0FBQyxpQ0FBaUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQ3RELENBQUM7UUFDRixNQUFNLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDWCxHQUFHO1lBQ0gsR0FBRztZQUNILFNBQVMsRUFBRSxLQUFLLEVBQUUsc0NBQXNDO1NBQ3pELENBQUMsQ0FBQztRQUNILHVFQUF1RTtRQUN2RSxpRkFBaUY7UUFDakYsTUFBTSxDQUFDLENBQUEscUJBQXFCLG9CQUFvQixFQUFFLENBQUM7UUFDbkQsTUFBTSxDQUFDLENBQUEsaUVBQWlFLENBQUM7UUFDekUsTUFBTSxDQUFDLENBQUEsZ0VBQWdFLENBQUM7UUFDeEUsTUFBTSxDQUFDLENBQUEsbUZBQW1GLENBQUM7UUFDM0YsT0FBTyx1QkFBdUIsQ0FBQztJQUNqQyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyAkIGFzICRfIH0gZnJvbSBcImV4ZWNhXCI7XG5pbXBvcnQgeyB0eXBlIE5vZGVQbG9wQVBJIH0gZnJvbSBcIm5vZGUtcGxvcFwiO1xuaW1wb3J0IHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiO1xuXG5pbXBvcnQgeyBwYXlsb2FkU2NoZW1hIH0gZnJvbSBcIi4uL2dlbmVyYXRvcnMvbW9ub3JlcG8vcHJvbXB0cy5qc1wiO1xuXG5jb25zdCBwbnBtQm9vdHN0cmFwVmVyc2lvbiA9IFwiMTBcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKHBsb3A6IE5vZGVQbG9wQVBJKSB7XG4gIHBsb3Auc2V0QWN0aW9uVHlwZShcInNldHVwUG5wbVwiLCBhc3luYyAoZGF0YSkgPT4ge1xuICAgIGNvbnN0IHsgcmVwb05hbWUgfSA9IHBheWxvYWRTY2hlbWEucGFyc2UoZGF0YSk7XG4gICAgY29uc3QgY3dkID0gcGF0aC5yZXNvbHZlKHJlcG9OYW1lKTtcbiAgICAvLyBJZiB0aGlzIGdlbmVyYXRvciBpcyBzdGFydGVkIGJ5IGEgbnBtIHNjcmlwdCwgaXQgd2lsbCBpbmhlcml0IHNvbWVcbiAgICAvLyBjb25maWcgdmFyaWFibGVzIHRoYXQgd2lsbCBpbnRlcmZlcmUgd2l0aCBwbnBtIGNvbW1hbmRzLlxuICAgIC8vIFdlIGZpbHRlciB0aGVtIG91dCBoZXJlLlxuICAgIGNvbnN0IGVudiA9IE9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgIE9iamVjdC5lbnRyaWVzKHByb2Nlc3MuZW52KVxuICAgICAgICAuZmlsdGVyKChba2V5XSkgPT4gIWtleS5zdGFydHNXaXRoKFwibnBtX2NvbmZpZ19cIikpXG4gICAgICAgIC8vIERpc2FibGUgY29yZXBhY2sgZG93bmxvYWQgcHJvbXB0XG4gICAgICAgIC5jb25jYXQoW1tcIkNPUkVQQUNLX0VOQUJMRV9ET1dOTE9BRF9QUk9NUFRcIiwgXCIwXCJdXSksXG4gICAgKTtcbiAgICBjb25zdCAkID0gJF8oe1xuICAgICAgY3dkLFxuICAgICAgZW52LFxuICAgICAgZXh0ZW5kRW52OiBmYWxzZSwgLy8gRG9uJ3QgaW5jbHVkZSBwcm9jZXNzLmVudiB2YXJpYWJsZXNcbiAgICB9KTtcbiAgICAvLyBLZWVwIHRoZSBib290c3RyYXAgb24gcG5wbSAxMCBzbyBgbnggaW5pdGAgd29ya3Mgd2l0aG91dCB0aGUgcG5wbSAxMVxuICAgIC8vIGJ1aWxkLWFwcHJvdmFsIHNldHRpbmdzIHRoYXQgd291bGQgb3RoZXJ3aXNlIGxlYWsgaW50byB0aGUgZ2VuZXJhdGVkIHRlbXBsYXRlLlxuICAgIGF3YWl0ICRgY29yZXBhY2sgdXNlIHBucG1AJHtwbnBtQm9vdHN0cmFwVmVyc2lvbn1gO1xuICAgIGF3YWl0ICRgbnB4IC0teWVzIG54QGxhdGVzdCBpbml0IC0taW50ZXJhY3RpdmU9ZmFsc2UgLS1haUFnZW50cz1jb3BpbG90YDtcbiAgICBhd2FpdCAkYHBucG0gLXcgYWRkIC1EIEBkZXZjb250YWluZXJzL2NsaSBAbngvanMgQG54L2VzbGludCBAbngvdml0ZXN0YDtcbiAgICBhd2FpdCAkYHBucG0gZGV2Y29udGFpbmVyIHRlbXBsYXRlcyBhcHBseSAtdCBnaGNyLmlvL3BhZ29wYS9kZXZjb250YWluZXItdGVtcGxhdGVzL25vZGU6MWA7XG4gICAgcmV0dXJuIFwiTW9ub3JlcG8gYm9vdHN0cmFwcGVkXCI7XG4gIH0pO1xufVxuIl19
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXAtcG5wbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hZGFwdGVycy9wbG9wL2FjdGlvbnMvc2V0dXAtcG5wbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUVoQyxPQUFPLElBQUksTUFBTSxXQUFXLENBQUM7QUFFN0IsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRWxFLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxDQUFDO0FBRWxDLE1BQU0sQ0FBQyxPQUFPLFdBQVcsSUFBaUI7SUFDeEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFO1FBQzdDLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9DLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbkMscUVBQXFFO1FBQ3JFLDJEQUEyRDtRQUMzRCwyQkFBMkI7UUFDM0IsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FDNUIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO2FBQ3hCLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUNsRCxrRUFBa0U7WUFDbEUsZ0RBQWdEO2FBQy9DLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsS0FBSyxjQUFjLENBQUM7YUFDekMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDdkQsbUNBQW1DO2FBQ2xDLE1BQU0sQ0FBQyxDQUFDLENBQUMsaUNBQWlDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUN0RCxDQUFDO1FBQ0YsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ1gsR0FBRztZQUNILEdBQUc7WUFDSCxTQUFTLEVBQUUsS0FBSyxFQUFFLHNDQUFzQztTQUN6RCxDQUFDLENBQUM7UUFDSCx1RUFBdUU7UUFDdkUsaUZBQWlGO1FBQ2pGLE1BQU0sQ0FBQyxDQUFBLHFCQUFxQixvQkFBb0IsRUFBRSxDQUFDO1FBQ25ELE1BQU0sQ0FBQyxDQUFBLGlFQUFpRSxDQUFDO1FBQ3pFLE1BQU0sQ0FBQyxDQUFBLGdFQUFnRSxDQUFDO1FBQ3hFLE1BQU0sQ0FBQyxDQUFBLG1GQUFtRixDQUFDO1FBQzNGLE9BQU8sdUJBQXVCLENBQUM7SUFDakMsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgJCBhcyAkXyB9IGZyb20gXCJleGVjYVwiO1xuaW1wb3J0IHsgdHlwZSBOb2RlUGxvcEFQSSB9IGZyb20gXCJub2RlLXBsb3BcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJub2RlOnBhdGhcIjtcblxuaW1wb3J0IHsgcGF5bG9hZFNjaGVtYSB9IGZyb20gXCIuLi9nZW5lcmF0b3JzL21vbm9yZXBvL3Byb21wdHMuanNcIjtcblxuY29uc3QgcG5wbUJvb3RzdHJhcFZlcnNpb24gPSBcIjEwXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChwbG9wOiBOb2RlUGxvcEFQSSkge1xuICBwbG9wLnNldEFjdGlvblR5cGUoXCJzZXR1cFBucG1cIiwgYXN5bmMgKGRhdGEpID0+IHtcbiAgICBjb25zdCB7IHJlcG9OYW1lIH0gPSBwYXlsb2FkU2NoZW1hLnBhcnNlKGRhdGEpO1xuICAgIGNvbnN0IGN3ZCA9IHBhdGgucmVzb2x2ZShyZXBvTmFtZSk7XG4gICAgLy8gSWYgdGhpcyBnZW5lcmF0b3IgaXMgc3RhcnRlZCBieSBhIG5wbSBzY3JpcHQsIGl0IHdpbGwgaW5oZXJpdCBzb21lXG4gICAgLy8gY29uZmlnIHZhcmlhYmxlcyB0aGF0IHdpbGwgaW50ZXJmZXJlIHdpdGggcG5wbSBjb21tYW5kcy5cbiAgICAvLyBXZSBmaWx0ZXIgdGhlbSBvdXQgaGVyZS5cbiAgICBjb25zdCBlbnYgPSBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICBPYmplY3QuZW50cmllcyhwcm9jZXNzLmVudilcbiAgICAgICAgLmZpbHRlcigoW2tleV0pID0+ICFrZXkuc3RhcnRzV2l0aChcIm5wbV9jb25maWdfXCIpKVxuICAgICAgICAvLyBTdHJpcCBOb2RlLmpzIGRlYnVnZ2VyIGVudiB2YXJzIHNvIGNoaWxkIHByb2Nlc3NlcyBkb24ndCB0cnkgdG9cbiAgICAgICAgLy8gYXR0YWNoIHRvIHRoZSBWUyBDb2RlIGRlYnVnZ2VyIGFuZCBoYW5nL2ZhaWwuXG4gICAgICAgIC5maWx0ZXIoKFtrZXldKSA9PiBrZXkgIT09IFwiTk9ERV9PUFRJT05TXCIpXG4gICAgICAgIC5maWx0ZXIoKFtrZXldKSA9PiAha2V5LnN0YXJ0c1dpdGgoXCJWU0NPREVfSU5TUEVDVE9SXCIpKVxuICAgICAgICAvLyBEaXNhYmxlIGNvcmVwYWNrIGRvd25sb2FkIHByb21wdFxuICAgICAgICAuY29uY2F0KFtbXCJDT1JFUEFDS19FTkFCTEVfRE9XTkxPQURfUFJPTVBUXCIsIFwiMFwiXV0pLFxuICAgICk7XG4gICAgY29uc3QgJCA9ICRfKHtcbiAgICAgIGN3ZCxcbiAgICAgIGVudixcbiAgICAgIGV4dGVuZEVudjogZmFsc2UsIC8vIERvbid0IGluY2x1ZGUgcHJvY2Vzcy5lbnYgdmFyaWFibGVzXG4gICAgfSk7XG4gICAgLy8gS2VlcCB0aGUgYm9vdHN0cmFwIG9uIHBucG0gMTAgc28gYG54IGluaXRgIHdvcmtzIHdpdGhvdXQgdGhlIHBucG0gMTFcbiAgICAvLyBidWlsZC1hcHByb3ZhbCBzZXR0aW5ncyB0aGF0IHdvdWxkIG90aGVyd2lzZSBsZWFrIGludG8gdGhlIGdlbmVyYXRlZCB0ZW1wbGF0ZS5cbiAgICBhd2FpdCAkYGNvcmVwYWNrIHVzZSBwbnBtQCR7cG5wbUJvb3RzdHJhcFZlcnNpb259YDtcbiAgICBhd2FpdCAkYG5weCAtLXllcyBueEBsYXRlc3QgaW5pdCAtLWludGVyYWN0aXZlPWZhbHNlIC0tYWlBZ2VudHM9Y29waWxvdGA7XG4gICAgYXdhaXQgJGBwbnBtIC13IGFkZCAtRCBAZGV2Y29udGFpbmVycy9jbGkgQG54L2pzIEBueC9lc2xpbnQgQG54L3ZpdGVzdGA7XG4gICAgYXdhaXQgJGBwbnBtIGRldmNvbnRhaW5lciB0ZW1wbGF0ZXMgYXBwbHkgLXQgZ2hjci5pby9wYWdvcGEvZGV2Y29udGFpbmVyLXRlbXBsYXRlcy9ub2RlOjFgO1xuICAgIHJldHVybiBcIk1vbm9yZXBvIGJvb3RzdHJhcHBlZFwiO1xuICB9KTtcbn1cbiJdfQ==
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Updates infra/repository/main.tf and applies it so GitHub.com repository
3
+ * environments exist before deployment scaffolding continues.
4
+ *
5
+ * The repository Terraform module remains the source of truth for GitHub
6
+ * environments, including protection rules and reviewers. This action only
7
+ * changes the module's `repository.environments` input, then runs Terraform from
8
+ * infra/repository to create or update the environments on GitHub.
9
+ */
10
+ import { type NodePlopAPI } from "node-plop";
11
+ import type { Environment } from "../../../domain/environment.js";
12
+ import { type Payload } from "../generators/environment/prompts.js";
13
+ export declare const syncRepositoryTerraformEnvironments: (content: string, environmentName: Environment["name"]) => string;
14
+ export declare const syncRepositoryEnvironments: (payload: Payload) => Promise<void>;
15
+ export default function (plop: NodePlopAPI): void;
@@ -0,0 +1,98 @@
1
+ import fs from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { tf$ } from "../../execa/terraform.js";
4
+ import { payloadSchema, } from "../generators/environment/prompts.js";
5
+ const KNOWN_ENVIRONMENTS = ["dev", "uat", "prod"];
6
+ const KNOWN_ENVIRONMENT_NAMES = KNOWN_ENVIRONMENTS;
7
+ const environmentList = (environments) => `[${[
8
+ ...KNOWN_ENVIRONMENTS.filter((environment) => environments.has(environment)),
9
+ ...Array.from(environments).filter((environment) => !KNOWN_ENVIRONMENT_NAMES.includes(environment)),
10
+ ]
11
+ .map((environment) => `"${environment}"`)
12
+ .join(", ")}]`;
13
+ /**
14
+ * Returns the inner body of the `repository = { ... }` object.
15
+ *
16
+ * Example input:
17
+ * repository = {
18
+ * name = "repo"
19
+ * }
20
+ *
21
+ * Example output:
22
+ * name = "repo"
23
+ */
24
+ const findRepositoryBlock = (content) => {
25
+ const match = /(?:^|\n)(?<indent>[^\S\r\n]*)repository[^\S\r\n]*=[^\S\r\n]*\{\n/.exec(content);
26
+ if (!match) {
27
+ throw new Error("Cannot find the repository configuration in infra/repository/main.tf");
28
+ }
29
+ const blockStart = match.index + match[0].length;
30
+ const closingMatch = new RegExp(`\\n${match.groups?.indent ?? ""}\\}`).exec(content.slice(blockStart));
31
+ if (!closingMatch) {
32
+ throw new Error("Cannot find the end of the repository configuration in infra/repository/main.tf");
33
+ }
34
+ const end = blockStart + closingMatch.index;
35
+ return { block: content.slice(blockStart, end), end, start: blockStart };
36
+ };
37
+ const repositoryPropertyIndent = (block) => {
38
+ const propertyMatch = /^(?<indent>\s*)\w+\s*=/m.exec(block);
39
+ return propertyMatch?.groups?.indent ?? " ";
40
+ };
41
+ const readRepositoryConfig = async (repositoryMainPath) => {
42
+ try {
43
+ return await fs.readFile(repositoryMainPath, "utf8");
44
+ }
45
+ catch (cause) {
46
+ throw new Error(`Cannot synchronize GitHub repository environments because ${path.relative(process.cwd(), repositoryMainPath)} does not exist or is not readable.`, { cause });
47
+ }
48
+ };
49
+ export const syncRepositoryTerraformEnvironments = (content, environmentName) => {
50
+ const repositoryBlock = findRepositoryBlock(content);
51
+ const environmentsMatch = /^(?<indent>\s*)environments\s*=\s*\[(?<values>[\s\S]*?)\]\s*$/m.exec(repositoryBlock.block);
52
+ if (!environmentsMatch) {
53
+ if (environmentName === "prod") {
54
+ return content;
55
+ }
56
+ // Without an explicit list, the Terraform module manages prod by default.
57
+ // Adding a non-prod environment must also keep prod explicit.
58
+ const environments = new Set([environmentName, "prod"]);
59
+ const propertyIndent = repositoryPropertyIndent(repositoryBlock.block);
60
+ const separator = repositoryBlock.block.endsWith("\n") ? "" : "\n";
61
+ const updatedBlock = `${repositoryBlock.block}${separator}${propertyIndent}environments = ${environmentList(environments)}`;
62
+ return `${content.slice(0, repositoryBlock.start)}${updatedBlock}${content.slice(repositoryBlock.end)}`;
63
+ }
64
+ const existingEnvironments = new Set(Array.from((environmentsMatch.groups?.values ?? "").matchAll(/"([^"]+)"/g))
65
+ .map((match) => match[1])
66
+ .filter((environment) => environment.length > 0));
67
+ const hasSelectedEnvironment = existingEnvironments.has(environmentName);
68
+ const hasProdEnvironment = existingEnvironments.has("prod");
69
+ if (hasSelectedEnvironment && hasProdEnvironment) {
70
+ return content;
71
+ }
72
+ existingEnvironments.add(environmentName);
73
+ existingEnvironments.add("prod");
74
+ const indent = environmentsMatch.groups?.indent ?? " ";
75
+ const updatedLine = `${indent}environments = ${environmentList(existingEnvironments)}`;
76
+ const updatedBlock = repositoryBlock.block.replace(environmentsMatch[0], updatedLine);
77
+ return `${content.slice(0, repositoryBlock.start)}${updatedBlock}${content.slice(repositoryBlock.end)}`;
78
+ };
79
+ export const syncRepositoryEnvironments = async (payload) => {
80
+ const repositoryPath = path.join(process.cwd(), "infra", "repository");
81
+ const repositoryMainPath = path.join(repositoryPath, "main.tf");
82
+ const currentRepositoryConfig = await readRepositoryConfig(repositoryMainPath);
83
+ const updatedRepositoryConfig = syncRepositoryTerraformEnvironments(currentRepositoryConfig, payload.env.name);
84
+ if (updatedRepositoryConfig !== currentRepositoryConfig) {
85
+ await fs.writeFile(repositoryMainPath, updatedRepositoryConfig, "utf8");
86
+ }
87
+ const repositoryTerraform = tf$({ cwd: repositoryPath });
88
+ await repositoryTerraform `terraform init`;
89
+ await repositoryTerraform `terraform apply -auto-approve`;
90
+ };
91
+ export default function (plop) {
92
+ plop.setActionType("syncRepositoryEnvironments", async (data) => {
93
+ const payload = payloadSchema.parse(data);
94
+ await syncRepositoryEnvironments(payload);
95
+ return "GitHub repository environments updated from Terraform";
96
+ });
97
+ }
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy1yZXBvc2l0b3J5LWVudmlyb25tZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hZGFwdGVycy9wbG9wL2FjdGlvbnMvc3luYy1yZXBvc2l0b3J5LWVudmlyb25tZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVQSxPQUFPLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsQyxPQUFPLElBQUksTUFBTSxXQUFXLENBQUM7QUFJN0IsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9DLE9BQU8sRUFFTCxhQUFhLEdBQ2QsTUFBTSxzQ0FBc0MsQ0FBQztBQUU5QyxNQUFNLGtCQUFrQixHQUEwQixDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDekUsTUFBTSx1QkFBdUIsR0FBc0Isa0JBQWtCLENBQUM7QUFFdEUsTUFBTSxlQUFlLEdBQUcsQ0FBQyxZQUF5QixFQUFVLEVBQUUsQ0FDNUQsSUFBSTtJQUNGLEdBQUcsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FDM0MsWUFBWSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FDOUI7SUFDRCxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxDQUNoQyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQ2hFO0NBQ0Y7S0FDRSxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLElBQUksV0FBVyxHQUFHLENBQUM7S0FDeEMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7QUFFbkI7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sbUJBQW1CLEdBQUcsQ0FDMUIsT0FBZSxFQUNnQyxFQUFFO0lBQ2pELE1BQU0sS0FBSyxHQUNULGtFQUFrRSxDQUFDLElBQUks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UUFDMUMsT0FBTyx1REFBdUQsQ0FBQztJQUNqRSxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFVwZGF0ZXMgaW5mcmEvcmVwb3NpdG9yeS9tYWluLnRmIGFuZCBhcHBsaWVzIGl0IHNvIEdpdEh1Yi5jb20gcmVwb3NpdG9yeVxuICogZW52aXJvbm1lbnRzIGV4aXN0IGJlZm9yZSBkZXBsb3ltZW50IHNjYWZmb2xkaW5nIGNvbnRpbnVlcy5cbiAqXG4gKiBUaGUgcmVwb3NpdG9yeSBUZXJyYWZvcm0gbW9kdWxlIHJlbWFpbnMgdGhlIHNvdXJjZSBvZiB0cnV0aCBmb3IgR2l0SHViXG4gKiBlbnZpcm9ubWVudHMsIGluY2x1ZGluZyBwcm90ZWN0aW9uIHJ1bGVzIGFuZCByZXZpZXdlcnMuIFRoaXMgYWN0aW9uIG9ubHlcbiAqIGNoYW5nZXMgdGhlIG1vZHVsZSdzIGByZXBvc2l0b3J5LmVudmlyb25tZW50c2AgaW5wdXQsIHRoZW4gcnVucyBUZXJyYWZvcm0gZnJvbVxuICogaW5mcmEvcmVwb3NpdG9yeSB0byBjcmVhdGUgb3IgdXBkYXRlIHRoZSBlbnZpcm9ubWVudHMgb24gR2l0SHViLlxuICovXG5pbXBvcnQgeyB0eXBlIE5vZGVQbG9wQVBJIH0gZnJvbSBcIm5vZGUtcGxvcFwiO1xuaW1wb3J0IGZzIGZyb20gXCJub2RlOmZzL3Byb21pc2VzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5cbmltcG9ydCB0eXBlIHsgRW52aXJvbm1lbnQgfSBmcm9tIFwiLi4vLi4vLi4vZG9tYWluL2Vudmlyb25tZW50LmpzXCI7XG5cbmltcG9ydCB7IHRmJCB9IGZyb20gXCIuLi8uLi9leGVjYS90ZXJyYWZvcm0uanNcIjtcbmltcG9ydCB7XG4gIHR5cGUgUGF5bG9hZCxcbiAgcGF5bG9hZFNjaGVtYSxcbn0gZnJvbSBcIi4uL2dlbmVyYXRvcnMvZW52aXJvbm1lbnQvcHJvbXB0cy5qc1wiO1xuXG5jb25zdCBLTk9XTl9FTlZJUk9OTUVOVFM6IEVudmlyb25tZW50W1wibmFtZVwiXVtdID0gW1wiZGV2XCIsIFwidWF0XCIsIFwicHJvZFwiXTtcbmNvbnN0IEtOT1dOX0VOVklST05NRU5UX05BTUVTOiByZWFkb25seSBzdHJpbmdbXSA9IEtOT1dOX0VOVklST05NRU5UUztcblxuY29uc3QgZW52aXJvbm1lbnRMaXN0ID0gKGVudmlyb25tZW50czogU2V0PHN0cmluZz4pOiBzdHJpbmcgPT5cbiAgYFske1tcbiAgICAuLi5LTk9XTl9FTlZJUk9OTUVOVFMuZmlsdGVyKChlbnZpcm9ubWVudCkgPT5cbiAgICAgIGVudmlyb25tZW50cy5oYXMoZW52aXJvbm1lbnQpLFxuICAgICksXG4gICAgLi4uQXJyYXkuZnJvbShlbnZpcm9ubWVudHMpLmZpbHRlcihcbiAgICAgIChlbnZpcm9ubWVudCkgPT4gIUtOT1dOX0VOVklST05NRU5UX05BTUVTLmluY2x1ZGVzKGVudmlyb25tZW50KSxcbiAgICApLFxuICBdXG4gICAgLm1hcCgoZW52aXJvbm1lbnQpID0+IGBcIiR7ZW52aXJvbm1lbnR9XCJgKVxuICAgIC5qb2luKFwiLCBcIil9XWA7XG5cbi8qKlxuICogUmV0dXJucyB0aGUgaW5uZXIgYm9keSBvZiB0aGUgYHJlcG9zaXRvcnkgPSB7IC4uLiB9YCBvYmplY3QuXG4gKlxuICogRXhhbXBsZSBpbnB1dDpcbiAqIHJlcG9zaXRvcnkgPSB7XG4gKiAgIG5hbWUgPSBcInJlcG9cIlxuICogfVxuICpcbiAqIEV4YW1wbGUgb3V0cHV0OlxuICogICBuYW1lID0gXCJyZXBvXCJcbiAqL1xuY29uc3QgZmluZFJlcG9zaXRvcnlCbG9jayA9IChcbiAgY29udGVudDogc3RyaW5nLFxuKTogeyBibG9jazogc3RyaW5nOyBlbmQ6IG51bWJlcjsgc3RhcnQ6IG51bWJlciB9ID0+IHtcbiAgY29uc3QgbWF0Y2ggPVxuICAgIC8oPzpefFxcbikoPzxpbmRlbnQ+W15cXFNcXHJcXG5dKilyZXBvc2l0b3J5W15cXFNcXHJcXG5dKj1bXlxcU1xcclxcbl0qXFx7XFxuLy5leGVjKFxuICAgICAgY29udGVudCxcbiAgICApO1xuICBpZiAoIW1hdGNoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgXCJDYW5ub3QgZmluZCB0aGUgcmVwb3NpdG9yeSBjb25maWd1cmF0aW9uIGluIGluZnJhL3JlcG9zaXRvcnkvbWFpbi50ZlwiLFxuICAgICk7XG4gIH1cblxuICBjb25zdCBibG9ja1N0YXJ0ID0gbWF0Y2guaW5kZXggKyBtYXRjaFswXS5sZW5ndGg7XG4gIGNvbnN0IGNsb3NpbmdNYXRjaCA9IG5ldyBSZWdFeHAoYFxcXFxuJHttYXRjaC5ncm91cHM/LmluZGVudCA/PyBcIlwifVxcXFx9YCkuZXhlYyhcbiAgICBjb250ZW50LnNsaWNlKGJsb2NrU3RhcnQpLFxuICApO1xuICBpZiAoIWNsb3NpbmdNYXRjaCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIFwiQ2Fubm90IGZpbmQgdGhlIGVuZCBvZiB0aGUgcmVwb3NpdG9yeSBjb25maWd1cmF0aW9uIGluIGluZnJhL3JlcG9zaXRvcnkvbWFpbi50ZlwiLFxuICAgICk7XG4gIH1cblxuICBjb25zdCBlbmQgPSBibG9ja1N0YXJ0ICsgY2xvc2luZ01hdGNoLmluZGV4O1xuICByZXR1cm4geyBibG9jazogY29udGVudC5zbGljZShibG9ja1N0YXJ0LCBlbmQpLCBlbmQsIHN0YXJ0OiBibG9ja1N0YXJ0IH07XG59O1xuXG5jb25zdCByZXBvc2l0b3J5UHJvcGVydHlJbmRlbnQgPSAoYmxvY2s6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IHByb3BlcnR5TWF0Y2ggPSAvXig/PGluZGVudD5cXHMqKVxcdytcXHMqPS9tLmV4ZWMoYmxvY2spO1xuICByZXR1cm4gcHJvcGVydHlNYXRjaD8uZ3JvdXBzPy5pbmRlbnQgPz8gXCIgICAgXCI7XG59O1xuXG5jb25zdCByZWFkUmVwb3NpdG9yeUNvbmZpZyA9IGFzeW5jIChyZXBvc2l0b3J5TWFpblBhdGg6IHN0cmluZykgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBmcy5yZWFkRmlsZShyZXBvc2l0b3J5TWFpblBhdGgsIFwidXRmOFwiKTtcbiAgfSBjYXRjaCAoY2F1c2UpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgQ2Fubm90IHN5bmNocm9uaXplIEdpdEh1YiByZXBvc2l0b3J5IGVudmlyb25tZW50cyBiZWNhdXNlICR7cGF0aC5yZWxhdGl2ZShwcm9jZXNzLmN3ZCgpLCByZXBvc2l0b3J5TWFpblBhdGgpfSBkb2VzIG5vdCBleGlzdCBvciBpcyBub3QgcmVhZGFibGUuYCxcbiAgICAgIHsgY2F1c2UgfSxcbiAgICApO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3Qgc3luY1JlcG9zaXRvcnlUZXJyYWZvcm1FbnZpcm9ubWVudHMgPSAoXG4gIGNvbnRlbnQ6IHN0cmluZyxcbiAgZW52aXJvbm1lbnROYW1lOiBFbnZpcm9ubWVudFtcIm5hbWVcIl0sXG4pOiBzdHJpbmcgPT4ge1xuICBjb25zdCByZXBvc2l0b3J5QmxvY2sgPSBmaW5kUmVwb3NpdG9yeUJsb2NrKGNvbnRlbnQpO1xuICBjb25zdCBlbnZpcm9ubWVudHNNYXRjaCA9XG4gICAgL14oPzxpbmRlbnQ+XFxzKillbnZpcm9ubWVudHNcXHMqPVxccypcXFsoPzx2YWx1ZXM+W1xcc1xcU10qPylcXF1cXHMqJC9tLmV4ZWMoXG4gICAgICByZXBvc2l0b3J5QmxvY2suYmxvY2ssXG4gICAgKTtcblxuICBpZiAoIWVudmlyb25tZW50c01hdGNoKSB7XG4gICAgaWYgKGVudmlyb25tZW50TmFtZSA9PT0gXCJwcm9kXCIpIHtcbiAgICAgIHJldHVybiBjb250ZW50O1xuICAgIH1cblxuICAgIC8vIFdpdGhvdXQgYW4gZXhwbGljaXQgbGlzdCwgdGhlIFRlcnJhZm9ybSBtb2R1bGUgbWFuYWdlcyBwcm9kIGJ5IGRlZmF1bHQuXG4gICAgLy8gQWRkaW5nIGEgbm9uLXByb2QgZW52aXJvbm1lbnQgbXVzdCBhbHNvIGtlZXAgcHJvZCBleHBsaWNpdC5cbiAgICBjb25zdCBlbnZpcm9ubWVudHMgPSBuZXcgU2V0PHN0cmluZz4oW2Vudmlyb25tZW50TmFtZSwgXCJwcm9kXCJdKTtcbiAgICBjb25zdCBwcm9wZXJ0eUluZGVudCA9IHJlcG9zaXRvcnlQcm9wZXJ0eUluZGVudChyZXBvc2l0b3J5QmxvY2suYmxvY2spO1xuICAgIGNvbnN0IHNlcGFyYXRvciA9IHJlcG9zaXRvcnlCbG9jay5ibG9jay5lbmRzV2l0aChcIlxcblwiKSA/IFwiXCIgOiBcIlxcblwiO1xuICAgIGNvbnN0IHVwZGF0ZWRCbG9jayA9IGAke3JlcG9zaXRvcnlCbG9jay5ibG9ja30ke3NlcGFyYXRvcn0ke3Byb3BlcnR5SW5kZW50fWVudmlyb25tZW50cyAgICAgICAgICAgPSAke2Vudmlyb25tZW50TGlzdChlbnZpcm9ubWVudHMpfWA7XG4gICAgcmV0dXJuIGAke2NvbnRlbnQuc2xpY2UoMCwgcmVwb3NpdG9yeUJsb2NrLnN0YXJ0KX0ke3VwZGF0ZWRCbG9ja30ke2NvbnRlbnQuc2xpY2UocmVwb3NpdG9yeUJsb2NrLmVuZCl9YDtcbiAgfVxuXG4gIGNvbnN0IGV4aXN0aW5nRW52aXJvbm1lbnRzID0gbmV3IFNldChcbiAgICBBcnJheS5mcm9tKChlbnZpcm9ubWVudHNNYXRjaC5ncm91cHM/LnZhbHVlcyA/PyBcIlwiKS5tYXRjaEFsbCgvXCIoW15cIl0rKVwiL2cpKVxuICAgICAgLm1hcCgobWF0Y2gpID0+IG1hdGNoWzFdKVxuICAgICAgLmZpbHRlcigoZW52aXJvbm1lbnQpID0+IGVudmlyb25tZW50Lmxlbmd0aCA+IDApLFxuICApO1xuICBjb25zdCBoYXNTZWxlY3RlZEVudmlyb25tZW50ID0gZXhpc3RpbmdFbnZpcm9ubWVudHMuaGFzKGVudmlyb25tZW50TmFtZSk7XG4gIGNvbnN0IGhhc1Byb2RFbnZpcm9ubWVudCA9IGV4aXN0aW5nRW52aXJvbm1lbnRzLmhhcyhcInByb2RcIik7XG4gIGlmIChoYXNTZWxlY3RlZEVudmlyb25tZW50ICYmIGhhc1Byb2RFbnZpcm9ubWVudCkge1xuICAgIHJldHVybiBjb250ZW50O1xuICB9XG5cbiAgZXhpc3RpbmdFbnZpcm9ubWVudHMuYWRkKGVudmlyb25tZW50TmFtZSk7XG4gIGV4aXN0aW5nRW52aXJvbm1lbnRzLmFkZChcInByb2RcIik7XG4gIGNvbnN0IGluZGVudCA9IGVudmlyb25tZW50c01hdGNoLmdyb3Vwcz8uaW5kZW50ID8/IFwiICAgIFwiO1xuICBjb25zdCB1cGRhdGVkTGluZSA9IGAke2luZGVudH1lbnZpcm9ubWVudHMgICAgICAgICAgID0gJHtlbnZpcm9ubWVudExpc3QoZXhpc3RpbmdFbnZpcm9ubWVudHMpfWA7XG4gIGNvbnN0IHVwZGF0ZWRCbG9jayA9IHJlcG9zaXRvcnlCbG9jay5ibG9jay5yZXBsYWNlKFxuICAgIGVudmlyb25tZW50c01hdGNoWzBdLFxuICAgIHVwZGF0ZWRMaW5lLFxuICApO1xuXG4gIHJldHVybiBgJHtjb250ZW50LnNsaWNlKDAsIHJlcG9zaXRvcnlCbG9jay5zdGFydCl9JHt1cGRhdGVkQmxvY2t9JHtjb250ZW50LnNsaWNlKHJlcG9zaXRvcnlCbG9jay5lbmQpfWA7XG59O1xuXG5leHBvcnQgY29uc3Qgc3luY1JlcG9zaXRvcnlFbnZpcm9ubWVudHMgPSBhc3luYyAoXG4gIHBheWxvYWQ6IFBheWxvYWQsXG4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgY29uc3QgcmVwb3NpdG9yeVBhdGggPSBwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgXCJpbmZyYVwiLCBcInJlcG9zaXRvcnlcIik7XG4gIGNvbnN0IHJlcG9zaXRvcnlNYWluUGF0aCA9IHBhdGguam9pbihyZXBvc2l0b3J5UGF0aCwgXCJtYWluLnRmXCIpO1xuXG4gIGNvbnN0IGN1cnJlbnRSZXBvc2l0b3J5Q29uZmlnID1cbiAgICBhd2FpdCByZWFkUmVwb3NpdG9yeUNvbmZpZyhyZXBvc2l0b3J5TWFpblBhdGgpO1xuICBjb25zdCB1cGRhdGVkUmVwb3NpdG9yeUNvbmZpZyA9IHN5bmNSZXBvc2l0b3J5VGVycmFmb3JtRW52aXJvbm1lbnRzKFxuICAgIGN1cnJlbnRSZXBvc2l0b3J5Q29uZmlnLFxuICAgIHBheWxvYWQuZW52Lm5hbWUsXG4gICk7XG5cbiAgaWYgKHVwZGF0ZWRSZXBvc2l0b3J5Q29uZmlnICE9PSBjdXJyZW50UmVwb3NpdG9yeUNvbmZpZykge1xuICAgIGF3YWl0IGZzLndyaXRlRmlsZShyZXBvc2l0b3J5TWFpblBhdGgsIHVwZGF0ZWRSZXBvc2l0b3J5Q29uZmlnLCBcInV0ZjhcIik7XG4gIH1cblxuICBjb25zdCByZXBvc2l0b3J5VGVycmFmb3JtID0gdGYkKHsgY3dkOiByZXBvc2l0b3J5UGF0aCB9KTtcbiAgYXdhaXQgcmVwb3NpdG9yeVRlcnJhZm9ybWB0ZXJyYWZvcm0gaW5pdGA7XG4gIGF3YWl0IHJlcG9zaXRvcnlUZXJyYWZvcm1gdGVycmFmb3JtIGFwcGx5IC1hdXRvLWFwcHJvdmVgO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKHBsb3A6IE5vZGVQbG9wQVBJKTogdm9pZCB7XG4gIHBsb3Auc2V0QWN0aW9uVHlwZShcInN5bmNSZXBvc2l0b3J5RW52aXJvbm1lbnRzXCIsIGFzeW5jIChkYXRhKSA9PiB7XG4gICAgY29uc3QgcGF5bG9hZCA9IHBheWxvYWRTY2hlbWEucGFyc2UoZGF0YSk7XG4gICAgYXdhaXQgc3luY1JlcG9zaXRvcnlFbnZpcm9ubWVudHMocGF5bG9hZCk7XG4gICAgcmV0dXJuIFwiR2l0SHViIHJlcG9zaXRvcnkgZW52aXJvbm1lbnRzIHVwZGF0ZWQgZnJvbSBUZXJyYWZvcm1cIjtcbiAgfSk7XG59XG4iXX0=
@@ -56,6 +56,9 @@ export default function getActions(templatesPath) {
56
56
  {
57
57
  type: "getTerraformBackend",
58
58
  },
59
+ {
60
+ type: "syncRepositoryEnvironments",
61
+ },
59
62
  addWorkflowModule(templatesPath),
60
63
  ...addEnvironmentModule("bootstrapper"),
61
64
  ];
@@ -72,4 +75,4 @@ export default function getActions(templatesPath) {
72
75
  return actions;
73
76
  };
74
77
  }
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hZGFwdGVycy9wbG9wL2dlbmVyYXRvcnMvZW52aXJvbm1lbnQvYWN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0MsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBRTdCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRXpFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFN0MsTUFBTSxTQUFTLEdBQUcsQ0FDaEIsT0FBMkMsRUFDM0MsYUFBcUIsRUFDckIsSUFBSSxHQUFHLEtBQUssRUFDWixFQUFFO0lBQ0YsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUN4QixNQUFNLGtCQUFrQixHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQ3ZDLEdBQUcsQ0FBQyxhQUFhLEVBQ2pCLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUN6QixDQUFDO0lBQ0YsTUFBTSxjQUFjLEdBQUcsR0FBRyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQzNDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsV0FBVyxLQUFLLFNBQVMsQ0FDL0MsQ0FBQztJQUNGLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUMxQixPQUFPLENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FBQztRQUN2QjtZQUNFLElBQUksRUFBRSxhQUFhO1lBQ25CLElBQUksRUFBRSxFQUFFLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsSUFBSSxJQUFJLFNBQVMsRUFBRTtZQUNyRSxXQUFXLEVBQUUsSUFB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OlsiaW1wb3J0IHR5cGUgeyBBY3Rpb25UeXBlLCBEeW5hbWljQWN0aW9uc0Z1bmN0aW9uIH0gZnJvbSBcIm5vZGUtcGxvcFwiO1xuXG5pbXBvcnQgeyBnZXRMb2dnZXIgfSBmcm9tIFwiQGxvZ3RhcGUvbG9ndGFwZVwiO1xuaW1wb3J0IHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiO1xuXG5pbXBvcnQgeyBmb3JtYXRUZXJyYWZvcm1Db2RlIH0gZnJvbSBcIi4uLy4uLy4uL3RlcnJhZm9ybS9mbXQuanNcIjtcbmltcG9ydCB7IHRlcnJhZm9ybVN0YXRlS2V5IH0gZnJvbSBcIi4uLy4uL2hlbHBlcnMvdGVycmFmb3JtLXN0YXRlLWtleS5qc1wiO1xuaW1wb3J0IHsgUGF5bG9hZCB9IGZyb20gXCIuL3Byb21wdHMuanNcIjtcbmltcG9ydCB7IHBheWxvYWRTY2hlbWEgfSBmcm9tIFwiLi9wcm9tcHRzLmpzXCI7XG5cbmNvbnN0IGFkZE1vZHVsZSA9IChcbiAgY29udGV4dDogUGljazxQYXlsb2FkLCBcImVudlwiIHwgXCJ3b3Jrc3BhY2VcIj4sXG4gIHRlbXBsYXRlc1BhdGg6IHN0cmluZyxcbiAgaW5pdCA9IGZhbHNlLFxuKSA9PiB7XG4gIGNvbnN0IHsgZW52IH0gPSBjb250ZXh0O1xuICBjb25zdCBjbG91ZEFjY291bnRzQnlDc3AgPSBPYmplY3QuZ3JvdXBCeShcbiAgICBlbnYuY2xvdWRBY2NvdW50cyxcbiAgICAoYWNjb3VudCkgPT4gYWNjb3VudC5jc3AsXG4gICk7XG4gIGNvbnN0IGluY2x1ZGVzUHJvZElPID0gZW52LmNsb3VkQWNjb3VudHMuc29tZShcbiAgICAoYWNjb3VudCkgPT4gYWNjb3VudC5kaXNwbGF5TmFtZSA9PT0gXCJQUk9ELUlPXCIsXG4gICk7XG4gIGNvbnN0IGN3ZCA9IHByb2Nlc3MuY3dkKCk7XG4gIHJldHVybiAobmFtZTogc3RyaW5nKSA9PiBbXG4gICAge1xuICAgICAgYmFzZTogdGVtcGxhdGVzUGF0aCxcbiAgICAgIGRhdGE6IHsgY2xvdWRBY2NvdW50c0J5Q3NwLCBpbmNsdWRlc1Byb2RJTywgaW5pdDogaW5pdCB8fCB1bmRlZmluZWQgfSxcbiAgICAgIGRlc3RpbmF0aW9uOiBwYXRoLmpvaW4oY3dkLCBcImluZnJhXCIpLFxuICAgICAgZm9yY2U6IHRydWUsXG4gICAgICB0ZW1wbGF0ZUZpbGVzOiBwYXRoLmpvaW4odGVtcGxhdGVzUGF0aCwgbmFtZSksXG4gICAgICB0cmFuc2Zvcm06IGZvcm1hdFRlcnJhZm9ybUNvZGUsXG4gICAgICB0eXBlOiBcImFkZE1hbnlcIixcbiAgICAgIHZlcmJvc2U6IHRydWUsXG4gICAgfSxcbiAgICB7XG4gICAgICBiYXNlOiBwYXRoLmpvaW4odGVtcGxhdGVzUGF0aCwgXCJzaGFyZWRcIiksXG4gICAgICBkYXRhOiB7XG4gICAgICAgIGNsb3VkQWNjb3VudHNCeUNzcCxcbiAgICAgICAgaW5pdDogaW5pdCB8fCB1bmRlZmluZWQsXG4gICAgICAgIHRlcnJhZm9ybUJhY2tlbmRLZXk6IHRlcnJhZm9ybVN0YXRlS2V5KGNvbnRleHQsIG5hbWUpLFxuICAgICAgfSxcbiAgICAgIGRlc3RpbmF0aW9uOiBwYXRoLmpvaW4oY3dkLCBcImluZnJhXCIsIG5hbWUsIFwie3tlbnYubmFtZX19XCIpLFxuICAgICAgZm9yY2U6IHRydWUsXG4gICAgICB0ZW1wbGF0ZUZpbGVzOiBwYXRoLmpvaW4odGVtcGxhdGVzUGF0aCwgXCJzaGFyZWRcIiksXG4gICAgICB0cmFuc2Zvcm06IGZvcm1hdFRlcnJhZm9ybUNvZGUsXG4gICAgICB0eXBlOiBcImFkZE1hbnlcIixcbiAgICAgIHZlcmJvc2U6IHRydWUsXG4gICAgfSxcbiAgXTtcbn07XG5cbmNvbnN0IGFkZFdvcmtmbG93TW9kdWxlID0gKHRlbXBsYXRlc1BhdGg6IHN0cmluZyk6IEFjdGlvblR5cGUgPT4ge1xuICBjb25zdCBjd2QgPSBwcm9jZXNzLmN3ZCgpO1xuICByZXR1cm4ge1xuICAgIGJhc2U6IHBhdGguam9pbih0ZW1wbGF0ZXNQYXRoLCBcIndvcmtmbG93XCIpLFxuICAgIGRlc3RpbmF0aW9uOiBwYXRoLmpvaW4oY3dkLCBcIi5naXRodWJcIiwgXCJ3b3JrZmxvd3NcIiksXG4gICAgZm9yY2U6IHRydWUsXG4gICAgdGVtcGxhdGVGaWxlczogcGF0aC5qb2luKHRlbXBsYXRlc1BhdGgsIFwid29ya2Zsb3dcIiksXG4gICAgdHlwZTogXCJhZGRNYW55XCIsXG4gICAgdmVyYm9zZTogdHJ1ZSxcbiAgfTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEFjdGlvbnMoXG4gIHRlbXBsYXRlc1BhdGg6IHN0cmluZyxcbik6IER5bmFtaWNBY3Rpb25zRnVuY3Rpb24ge1xuICByZXR1cm4gKGlucHV0OiB1bmtub3duKSA9PiB7XG4gICAgY29uc3QgbG9nZ2VyID0gZ2V0TG9nZ2VyKFtcImdlblwiLCBcImVudlwiXSk7XG5cbiAgICBsb2dnZXIuZGVidWcoXCJlbnZpcm9ubWVudCBnZW5lcmF0b3IgaW5wdXQge2lucHV0fVwiLCB7IGlucHV0IH0pO1xuXG4gICAgY29uc3QgeyBlbnYsIGluaXQsIHdvcmtzcGFjZSB9ID0gcGF5bG9hZFNjaGVtYS5wYXJzZShpbnB1dCk7XG5cbiAgICBjb25zdCBhZGRFbnZpcm9ubWVudE1vZHVsZSA9IGFkZE1vZHVsZShcbiAgICAgIHsgZW52LCB3b3Jrc3BhY2UgfSxcbiAgICAgIHRlbXBsYXRlc1BhdGgsXG4gICAgICAhIWluaXQsXG4gICAgKTtcblxuICAgIGNvbnN0IGFjdGlvbnM6IEFjdGlvblR5cGVbXSA9IFtcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJnZXRUZXJyYWZvcm1CYWNrZW5kXCIsXG4gICAgICB9LFxuICAgICAgYWRkV29ya2Zsb3dNb2R1bGUodGVtcGxhdGVzUGF0aCksXG4gICAgICAuLi5hZGRFbnZpcm9ubWVudE1vZHVsZShcImJvb3RzdHJhcHBlclwiKSxcbiAgICBdO1xuXG4gICAgaWYgKGluaXQpIHtcbiAgICAgIGFjdGlvbnMudW5zaGlmdChcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwiaW5pdENsb3VkQWNjb3VudHNcIixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IGluaXQudGVycmFmb3JtQmFja2VuZFxuICAgICAgICAgICAgPyBcInByb3Zpc2lvblRlcnJhZm9ybUJhY2tlbmRcIlxuICAgICAgICAgICAgOiBcImdldFRlcnJhZm9ybUJhY2tlbmRcIixcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgICBhY3Rpb25zLnB1c2goLi4uYWRkRW52aXJvbm1lbnRNb2R1bGUoXCJjb3JlXCIpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWN0aW9ucztcbiAgfTtcbn1cbiJdfQ==
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hZGFwdGVycy9wbG9wL2dlbmVyYXRvcnMvZW52aXJvbm1lbnQvYWN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0MsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBRTdCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRXpFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFN0MsTUFBTSxTQUFTLEdBQUcsQ0FDaEIsT0FBMkMsRUFDM0MsYUFBcUIsRUFDckIsSUFBSSxHQUFHLEtBQUssRUFDWixFQUFFO0lBQ0YsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUN4QixNQUFNLGtCQUFrQixHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQ3ZDLEdBQUcsQ0FBQyxhQUFhLEVBQ2pCLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUN6QixDQUFDO0lBQ0YsTUFBTSxjQUFjLEdBQUcsR0FBRyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQzNDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsV0FBVyxLQUFLLFNBQVMsQ0FDL0MsQ0FBQztJQUNGLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUMxQixPQUFPLENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FBQztRQUN2QjtZQUNFLElBQUksRUFBRSxhQUFhO1lBQ25CLElBQUksRUFBRSxFQUFFLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsSUFBSSxJQUFJLFNBQVMsRUFBRTtZQUNyRSxXQUFXLEVBQUUsSUFB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QyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQWN0aW9uVHlwZSwgRHluYW1pY0FjdGlvbnNGdW5jdGlvbiB9IGZyb20gXCJub2RlLXBsb3BcIjtcblxuaW1wb3J0IHsgZ2V0TG9nZ2VyIH0gZnJvbSBcIkBsb2d0YXBlL2xvZ3RhcGVcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJub2RlOnBhdGhcIjtcblxuaW1wb3J0IHsgZm9ybWF0VGVycmFmb3JtQ29kZSB9IGZyb20gXCIuLi8uLi8uLi90ZXJyYWZvcm0vZm10LmpzXCI7XG5pbXBvcnQgeyB0ZXJyYWZvcm1TdGF0ZUtleSB9IGZyb20gXCIuLi8uLi9oZWxwZXJzL3RlcnJhZm9ybS1zdGF0ZS1rZXkuanNcIjtcbmltcG9ydCB7IFBheWxvYWQgfSBmcm9tIFwiLi9wcm9tcHRzLmpzXCI7XG5pbXBvcnQgeyBwYXlsb2FkU2NoZW1hIH0gZnJvbSBcIi4vcHJvbXB0cy5qc1wiO1xuXG5jb25zdCBhZGRNb2R1bGUgPSAoXG4gIGNvbnRleHQ6IFBpY2s8UGF5bG9hZCwgXCJlbnZcIiB8IFwid29ya3NwYWNlXCI+LFxuICB0ZW1wbGF0ZXNQYXRoOiBzdHJpbmcsXG4gIGluaXQgPSBmYWxzZSxcbikgPT4ge1xuICBjb25zdCB7IGVudiB9ID0gY29udGV4dDtcbiAgY29uc3QgY2xvdWRBY2NvdW50c0J5Q3NwID0gT2JqZWN0Lmdyb3VwQnkoXG4gICAgZW52LmNsb3VkQWNjb3VudHMsXG4gICAgKGFjY291bnQpID0+IGFjY291bnQuY3NwLFxuICApO1xuICBjb25zdCBpbmNsdWRlc1Byb2RJTyA9IGVudi5jbG91ZEFjY291bnRzLnNvbWUoXG4gICAgKGFjY291bnQpID0+IGFjY291bnQuZGlzcGxheU5hbWUgPT09IFwiUFJPRC1JT1wiLFxuICApO1xuICBjb25zdCBjd2QgPSBwcm9jZXNzLmN3ZCgpO1xuICByZXR1cm4gKG5hbWU6IHN0cmluZykgPT4gW1xuICAgIHtcbiAgICAgIGJhc2U6IHRlbXBsYXRlc1BhdGgsXG4gICAgICBkYXRhOiB7IGNsb3VkQWNjb3VudHNCeUNzcCwgaW5jbHVkZXNQcm9kSU8sIGluaXQ6IGluaXQgfHwgdW5kZWZpbmVkIH0sXG4gICAgICBkZXN0aW5hdGlvbjogcGF0aC5qb2luKGN3ZCwgXCJpbmZyYVwiKSxcbiAgICAgIGZvcmNlOiB0cnVlLFxuICAgICAgdGVtcGxhdGVGaWxlczogcGF0aC5qb2luKHRlbXBsYXRlc1BhdGgsIG5hbWUpLFxuICAgICAgdHJhbnNmb3JtOiBmb3JtYXRUZXJyYWZvcm1Db2RlLFxuICAgICAgdHlwZTogXCJhZGRNYW55XCIsXG4gICAgICB2ZXJib3NlOiB0cnVlLFxuICAgIH0sXG4gICAge1xuICAgICAgYmFzZTogcGF0aC5qb2luKHRlbXBsYXRlc1BhdGgsIFwic2hhcmVkXCIpLFxuICAgICAgZGF0YToge1xuICAgICAgICBjbG91ZEFjY291bnRzQnlDc3AsXG4gICAgICAgIGluaXQ6IGluaXQgfHwgdW5kZWZpbmVkLFxuICAgICAgICB0ZXJyYWZvcm1CYWNrZW5kS2V5OiB0ZXJyYWZvcm1TdGF0ZUtleShjb250ZXh0LCBuYW1lKSxcbiAgICAgIH0sXG4gICAgICBkZXN0aW5hdGlvbjogcGF0aC5qb2luKGN3ZCwgXCJpbmZyYVwiLCBuYW1lLCBcInt7ZW52Lm5hbWV9fVwiKSxcbiAgICAgIGZvcmNlOiB0cnVlLFxuICAgICAgdGVtcGxhdGVGaWxlczogcGF0aC5qb2luKHRlbXBsYXRlc1BhdGgsIFwic2hhcmVkXCIpLFxuICAgICAgdHJhbnNmb3JtOiBmb3JtYXRUZXJyYWZvcm1Db2RlLFxuICAgICAgdHlwZTogXCJhZGRNYW55XCIsXG4gICAgICB2ZXJib3NlOiB0cnVlLFxuICAgIH0sXG4gIF07XG59O1xuXG5jb25zdCBhZGRXb3JrZmxvd01vZHVsZSA9ICh0ZW1wbGF0ZXNQYXRoOiBzdHJpbmcpOiBBY3Rpb25UeXBlID0+IHtcbiAgY29uc3QgY3dkID0gcHJvY2Vzcy5jd2QoKTtcbiAgcmV0dXJuIHtcbiAgICBiYXNlOiBwYXRoLmpvaW4odGVtcGxhdGVzUGF0aCwgXCJ3b3JrZmxvd1wiKSxcbiAgICBkZXN0aW5hdGlvbjogcGF0aC5qb2luKGN3ZCwgXCIuZ2l0aHViXCIsIFwid29ya2Zsb3dzXCIpLFxuICAgIGZvcmNlOiB0cnVlLFxuICAgIHRlbXBsYXRlRmlsZXM6IHBhdGguam9pbih0ZW1wbGF0ZXNQYXRoLCBcIndvcmtmbG93XCIpLFxuICAgIHR5cGU6IFwiYWRkTWFueVwiLFxuICAgIHZlcmJvc2U6IHRydWUsXG4gIH07XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRBY3Rpb25zKFxuICB0ZW1wbGF0ZXNQYXRoOiBzdHJpbmcsXG4pOiBEeW5hbWljQWN0aW9uc0Z1bmN0aW9uIHtcbiAgcmV0dXJuIChpbnB1dDogdW5rbm93bikgPT4ge1xuICAgIGNvbnN0IGxvZ2dlciA9IGdldExvZ2dlcihbXCJnZW5cIiwgXCJlbnZcIl0pO1xuXG4gICAgbG9nZ2VyLmRlYnVnKFwiZW52aXJvbm1lbnQgZ2VuZXJhdG9yIGlucHV0IHtpbnB1dH1cIiwgeyBpbnB1dCB9KTtcblxuICAgIGNvbnN0IHsgZW52LCBpbml0LCB3b3Jrc3BhY2UgfSA9IHBheWxvYWRTY2hlbWEucGFyc2UoaW5wdXQpO1xuXG4gICAgY29uc3QgYWRkRW52aXJvbm1lbnRNb2R1bGUgPSBhZGRNb2R1bGUoXG4gICAgICB7IGVudiwgd29ya3NwYWNlIH0sXG4gICAgICB0ZW1wbGF0ZXNQYXRoLFxuICAgICAgISFpbml0LFxuICAgICk7XG5cbiAgICBjb25zdCBhY3Rpb25zOiBBY3Rpb25UeXBlW10gPSBbXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwiZ2V0VGVycmFmb3JtQmFja2VuZFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJzeW5jUmVwb3NpdG9yeUVudmlyb25tZW50c1wiLFxuICAgICAgfSxcbiAgICAgIGFkZFdvcmtmbG93TW9kdWxlKHRlbXBsYXRlc1BhdGgpLFxuICAgICAgLi4uYWRkRW52aXJvbm1lbnRNb2R1bGUoXCJib290c3RyYXBwZXJcIiksXG4gICAgXTtcblxuICAgIGlmIChpbml0KSB7XG4gICAgICBhY3Rpb25zLnVuc2hpZnQoXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcImluaXRDbG91ZEFjY291bnRzXCIsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBpbml0LnRlcnJhZm9ybUJhY2tlbmRcbiAgICAgICAgICAgID8gXCJwcm92aXNpb25UZXJyYWZvcm1CYWNrZW5kXCJcbiAgICAgICAgICAgIDogXCJnZXRUZXJyYWZvcm1CYWNrZW5kXCIsXG4gICAgICAgIH0sXG4gICAgICApO1xuICAgICAgYWN0aW9ucy5wdXNoKC4uLmFkZEVudmlyb25tZW50TW9kdWxlKFwiY29yZVwiKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFjdGlvbnM7XG4gIH07XG59XG4iXX0=
@@ -2,7 +2,7 @@ import { type NodePlopAPI } from "node-plop";
2
2
  import { CloudAccountRepository, CloudAccountService } from "../../../../domain/cloud-account.js";
3
3
  import { GitHubRepo } from "../../../../domain/github-repo.js";
4
4
  import { type GitHubService } from "../../../../domain/github.js";
5
- import { Payload, payloadSchema } from "./prompts.js";
5
+ import { InitialAnswers, Payload, payloadSchema } from "./prompts.js";
6
6
  export declare const PLOP_ENVIRONMENT_GENERATOR_NAME = "DX_DeploymentEnvironment";
7
- export { Payload, payloadSchema };
8
- export default function (plop: NodePlopAPI, templatesPath: string, cloudAccountRepository: CloudAccountRepository, cloudAccountService: CloudAccountService, gitHubService: GitHubService, github?: GitHubRepo): void;
7
+ export { type InitialAnswers, Payload, payloadSchema };
8
+ export default function (plop: NodePlopAPI, templatesPath: string, cloudAccountRepository: CloudAccountRepository, cloudAccountService: CloudAccountService, gitHubService: GitHubService, github?: GitHubRepo, initialAnswers?: InitialAnswers): void;
@@ -1,15 +1,16 @@
1
1
  import setGetTerraformBackend from "../../actions/get-terraform-backend.js";
2
2
  import setInitCloudAccountsAction from "../../actions/init-cloud-accounts.js";
3
3
  import setProvisionTerraformBackendAction from "../../actions/provision-terraform-backend.js";
4
+ import setSyncRepositoryEnvironmentsAction from "../../actions/sync-repository-environments.js";
4
5
  import setEnvShortHelper from "../../helpers/env-short.js";
5
6
  import setEqHelper from "../../helpers/eq.js";
6
7
  import setResourcePrefixHelper from "../../helpers/resource-prefix.js";
7
8
  import setTerraformStateKeyHelper from "../../helpers/terraform-state-key.js";
8
9
  import getActions from "./actions.js";
9
- import getPrompts, { payloadSchema } from "./prompts.js";
10
+ import getPrompts, { payloadSchema, } from "./prompts.js";
10
11
  export const PLOP_ENVIRONMENT_GENERATOR_NAME = "DX_DeploymentEnvironment";
11
12
  export { payloadSchema };
12
- export default function (plop, templatesPath, cloudAccountRepository, cloudAccountService, gitHubService, github) {
13
+ export default function (plop, templatesPath, cloudAccountRepository, cloudAccountService, gitHubService, github, initialAnswers = {}) {
13
14
  setEnvShortHelper(plop);
14
15
  setResourcePrefixHelper(plop);
15
16
  setEqHelper(plop);
@@ -17,6 +18,7 @@ export default function (plop, templatesPath, cloudAccountRepository, cloudAccou
17
18
  setGetTerraformBackend(plop, cloudAccountService);
18
19
  setProvisionTerraformBackendAction(plop, cloudAccountService);
19
20
  setInitCloudAccountsAction(plop, cloudAccountService, gitHubService);
21
+ setSyncRepositoryEnvironmentsAction(plop);
20
22
  plop.setGenerator(PLOP_ENVIRONMENT_GENERATOR_NAME, {
21
23
  actions: getActions(templatesPath),
22
24
  description: "Generate a new deployment environment",
@@ -24,7 +26,8 @@ export default function (plop, templatesPath, cloudAccountRepository, cloudAccou
24
26
  cloudAccountRepository,
25
27
  cloudAccountService,
26
28
  github,
29
+ initialAnswers,
27
30
  }),
28
31
  });
29
32
  }
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYWRhcHRlcnMvcGxvcC9nZW5lcmF0b3JzL2Vudmlyb25tZW50L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBLE9BQU8sc0JBQXNCLE1BQU0sd0NBQXdDLENBQUM7QUFDNUUsT0FBTywwQkFBMEIsTUFBTSxzQ0FBc0MsQ0FBQztBQUM5RSxPQUFPLGtDQUFrQyxNQUFNLDhDQUE4QyxDQUFDO0FBQzlGLE9BQU8saUJBQWlCLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxXQUFXLE1BQU0scUJBQXFCLENBQUM7QUFDOUMsT0FBTyx1QkFBdUIsTUFBTSxrQ0FBa0MsQ0FBQztBQUN2RSxPQUFPLDBCQUEwQixNQUFNLHNDQUFzQyxDQUFDO0FBQzlFLE9BQU8sVUFBVSxNQUFNLGNBQWMsQ0FBQztBQUN0QyxPQUFPLFVBQVUsRUFBRSxFQUFXLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVsRSxNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBRywwQkFBMEIsQ0FBQztBQUMxRSxPQUFPLEVBQVcsYUFBYSxFQUFFLENBQUM7QUFFbEMsTUFBTSxDQUFDLE9BQU8sV0FDWixJQUFpQixFQUNqQixhQUFxQixFQUNyQixzQkFBOEMsRUFDOUMsbUJBQXdDLEVBQ3hDLGFBQTRCLEVBQzVCLE1BQW1CO0lBRW5CLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hCLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlCLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQiwwQkFBMEIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVqQyxzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztJQUNsRCxrQ0FBa0MsQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztJQUM5RCwwQkFBMEIsQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFFckUsSUFBSSxDQUFDLFlBQVksQ0FBQywrQkFBK0IsRUFBRTtRQUNqRCxPQUFPLEVBQUUsVUFBVSxDQUFDLGFBQWEsQ0FBQztRQUNsQyxXQUFXLEVBQUUsdUNBQXVDO1FBQ3BELE9BQU8sRUFBRSxVQUFVLENBQUM7WUFDbEIsc0JBQXNCO1lBQ3RCLG1CQUFtQjtZQUNuQixNQUFNO1NBQ1AsQ0FBQztLQUNILENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIE5vZGVQbG9wQVBJIH0gZnJvbSBcIm5vZGUtcGxvcFwiO1xuXG5pbXBvcnQge1xuICBDbG91ZEFjY291bnRSZXBvc2l0b3J5LFxuICBDbG91ZEFjY291bnRTZXJ2aWNlLFxufSBmcm9tIFwiLi4vLi4vLi4vLi4vZG9tYWluL2Nsb3VkLWFjY291bnQuanNcIjtcbmltcG9ydCB7IEdpdEh1YlJlcG8gfSBmcm9tIFwiLi4vLi4vLi4vLi4vZG9tYWluL2dpdGh1Yi1yZXBvLmpzXCI7XG5pbXBvcnQgeyB0eXBlIEdpdEh1YlNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vLi4vZG9tYWluL2dpdGh1Yi5qc1wiO1xuaW1wb3J0IHNldEdldFRlcnJhZm9ybUJhY2tlbmQgZnJvbSBcIi4uLy4uL2FjdGlvbnMvZ2V0LXRlcnJhZm9ybS1iYWNrZW5kLmpzXCI7XG5pbXBvcnQgc2V0SW5pdENsb3VkQWNjb3VudHNBY3Rpb24gZnJvbSBcIi4uLy4uL2FjdGlvbnMvaW5pdC1jbG91ZC1hY2NvdW50cy5qc1wiO1xuaW1wb3J0IHNldFByb3Zpc2lvblRlcnJhZm9ybUJhY2tlbmRBY3Rpb24gZnJvbSBcIi4uLy4uL2FjdGlvbnMvcHJvdmlzaW9uLXRlcnJhZm9ybS1iYWNrZW5kLmpzXCI7XG5pbXBvcnQgc2V0RW52U2hvcnRIZWxwZXIgZnJvbSBcIi4uLy4uL2hlbHBlcnMvZW52LXNob3J0LmpzXCI7XG5pbXBvcnQgc2V0RXFIZWxwZXIgZnJvbSBcIi4uLy4uL2hlbHBlcnMvZXEuanNcIjtcbmltcG9ydCBzZXRSZXNvdXJjZVByZWZpeEhlbHBlciBmcm9tIFwiLi4vLi4vaGVscGVycy9yZXNvdXJjZS1wcmVmaXguanNcIjtcbmltcG9ydCBzZXRUZXJyYWZvcm1TdGF0ZUtleUhlbHBlciBmcm9tIFwiLi4vLi4vaGVscGVycy90ZXJyYWZvcm0tc3RhdGUta2V5LmpzXCI7XG5pbXBvcnQgZ2V0QWN0aW9ucyBmcm9tIFwiLi9hY3Rpb25zLmpzXCI7XG5pbXBvcnQgZ2V0UHJvbXB0cywgeyBQYXlsb2FkLCBwYXlsb2FkU2NoZW1hIH0gZnJvbSBcIi4vcHJvbXB0cy5qc1wiO1xuXG5leHBvcnQgY29uc3QgUExPUF9FTlZJUk9OTUVOVF9HRU5FUkFUT1JfTkFNRSA9IFwiRFhfRGVwbG95bWVudEVudmlyb25tZW50XCI7XG5leHBvcnQgeyBQYXlsb2FkLCBwYXlsb2FkU2NoZW1hIH07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChcbiAgcGxvcDogTm9kZVBsb3BBUEksXG4gIHRlbXBsYXRlc1BhdGg6IHN0cmluZyxcbiAgY2xvdWRBY2NvdW50UmVwb3NpdG9yeTogQ2xvdWRBY2NvdW50UmVwb3NpdG9yeSxcbiAgY2xvdWRBY2NvdW50U2VydmljZTogQ2xvdWRBY2NvdW50U2VydmljZSxcbiAgZ2l0SHViU2VydmljZTogR2l0SHViU2VydmljZSxcbiAgZ2l0aHViPzogR2l0SHViUmVwbyxcbikge1xuICBzZXRFbnZTaG9ydEhlbHBlcihwbG9wKTtcbiAgc2V0UmVzb3VyY2VQcmVmaXhIZWxwZXIocGxvcCk7XG4gIHNldEVxSGVscGVyKHBsb3ApO1xuICBzZXRUZXJyYWZvcm1TdGF0ZUtleUhlbHBlcihwbG9wKTtcblxuICBzZXRHZXRUZXJyYWZvcm1CYWNrZW5kKHBsb3AsIGNsb3VkQWNjb3VudFNlcnZpY2UpO1xuICBzZXRQcm92aXNpb25UZXJyYWZvcm1CYWNrZW5kQWN0aW9uKHBsb3AsIGNsb3VkQWNjb3VudFNlcnZpY2UpO1xuICBzZXRJbml0Q2xvdWRBY2NvdW50c0FjdGlvbihwbG9wLCBjbG91ZEFjY291bnRTZXJ2aWNlLCBnaXRIdWJTZXJ2aWNlKTtcblxuICBwbG9wLnNldEdlbmVyYXRvcihQTE9QX0VOVklST05NRU5UX0dFTkVSQVRPUl9OQU1FLCB7XG4gICAgYWN0aW9uczogZ2V0QWN0aW9ucyh0ZW1wbGF0ZXNQYXRoKSxcbiAgICBkZXNjcmlwdGlvbjogXCJHZW5lcmF0ZSBhIG5ldyBkZXBsb3ltZW50IGVudmlyb25tZW50XCIsXG4gICAgcHJvbXB0czogZ2V0UHJvbXB0cyh7XG4gICAgICBjbG91ZEFjY291bnRSZXBvc2l0b3J5LFxuICAgICAgY2xvdWRBY2NvdW50U2VydmljZSxcbiAgICAgIGdpdGh1YixcbiAgICB9KSxcbiAgfSk7XG59XG4iXX0=
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYWRhcHRlcnMvcGxvcC9nZW5lcmF0b3JzL2Vudmlyb25tZW50L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBLE9BQU8sc0JBQXNCLE1BQU0sd0NBQXdDLENBQUM7QUFDNUUsT0FBTywwQkFBMEIsTUFBTSxzQ0FBc0MsQ0FBQztBQUM5RSxPQUFPLGtDQUFrQyxNQUFNLDhDQUE4QyxDQUFDO0FBQzlGLE9BQU8sbUNBQW1DLE1BQU0sK0NBQStDLENBQUM7QUFDaEcsT0FBTyxpQkFBaUIsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLFdBQVcsTUFBTSxxQkFBcUIsQ0FBQztBQUM5QyxPQUFPLHVCQUF1QixNQUFNLGtDQUFrQyxDQUFDO0FBQ3ZFLE9BQU8sMEJBQTBCLE1BQU0sc0NBQXNDLENBQUM7QUFDOUUsT0FBTyxVQUFVLE1BQU0sY0FBYyxDQUFDO0FBQ3RDLE9BQU8sVUFBVSxFQUFFLEVBR2pCLGFBQWEsR0FDZCxNQUFNLGNBQWMsQ0FBQztBQUV0QixNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBRywwQkFBMEIsQ0FBQztBQUMxRSxPQUFPLEVBQWdDLGFBQWEsRUFBRSxDQUFDO0FBRXZELE1BQU0sQ0FBQyxPQUFPLFdBQ1osSUFBaUIsRUFDakIsYUFBcUIsRUFDckIsc0JBQThDLEVBQzlDLG1CQUF3QyxFQUN4QyxhQUE0QixFQUM1QixNQUFtQixFQUNuQixpQkFBaUMsRUFBRTtJQUVuQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4Qix1QkFBdUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEIsMEJBQTBCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFakMsc0JBQXNCLENBQUMsSUFBSSxFQUFFLG1CQUFtQixDQUFDLENBQUM7SUFDbEQsa0NBQWtDLENBQUMsSUFBSSxFQUFFLG1CQUFtQixDQUFDLENBQUM7SUFDOUQsMEJBQTBCLENBQUMsSUFBSSxFQUFFLG1CQUFtQixFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQ3JFLG1DQUFtQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRTFDLElBQUksQ0FBQyxZQUFZLENBQUMsK0JBQStCLEVBQUU7UUFDakQsT0FBTyxFQUFFLFVBQVUsQ0FBQyxhQUFhLENBQUM7UUFDbEMsV0FBVyxFQUFFLHVDQUF1QztRQUNwRCxPQUFPLEVBQUUsVUFBVSxDQUFDO1lBQ2xCLHNCQUFzQjtZQUN0QixtQkFBbUI7WUFDbkIsTUFBTTtZQUNOLGNBQWM7U0FDZixDQUFDO0tBQ0gsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgTm9kZVBsb3BBUEkgfSBmcm9tIFwibm9kZS1wbG9wXCI7XG5cbmltcG9ydCB7XG4gIENsb3VkQWNjb3VudFJlcG9zaXRvcnksXG4gIENsb3VkQWNjb3VudFNlcnZpY2UsXG59IGZyb20gXCIuLi8uLi8uLi8uLi9kb21haW4vY2xvdWQtYWNjb3VudC5qc1wiO1xuaW1wb3J0IHsgR2l0SHViUmVwbyB9IGZyb20gXCIuLi8uLi8uLi8uLi9kb21haW4vZ2l0aHViLXJlcG8uanNcIjtcbmltcG9ydCB7IHR5cGUgR2l0SHViU2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi8uLi9kb21haW4vZ2l0aHViLmpzXCI7XG5pbXBvcnQgc2V0R2V0VGVycmFmb3JtQmFja2VuZCBmcm9tIFwiLi4vLi4vYWN0aW9ucy9nZXQtdGVycmFmb3JtLWJhY2tlbmQuanNcIjtcbmltcG9ydCBzZXRJbml0Q2xvdWRBY2NvdW50c0FjdGlvbiBmcm9tIFwiLi4vLi4vYWN0aW9ucy9pbml0LWNsb3VkLWFjY291bnRzLmpzXCI7XG5pbXBvcnQgc2V0UHJvdmlzaW9uVGVycmFmb3JtQmFja2VuZEFjdGlvbiBmcm9tIFwiLi4vLi4vYWN0aW9ucy9wcm92aXNpb24tdGVycmFmb3JtLWJhY2tlbmQuanNcIjtcbmltcG9ydCBzZXRTeW5jUmVwb3NpdG9yeUVudmlyb25tZW50c0FjdGlvbiBmcm9tIFwiLi4vLi4vYWN0aW9ucy9zeW5jLXJlcG9zaXRvcnktZW52aXJvbm1lbnRzLmpzXCI7XG5pbXBvcnQgc2V0RW52U2hvcnRIZWxwZXIgZnJvbSBcIi4uLy4uL2hlbHBlcnMvZW52LXNob3J0LmpzXCI7XG5pbXBvcnQgc2V0RXFIZWxwZXIgZnJvbSBcIi4uLy4uL2hlbHBlcnMvZXEuanNcIjtcbmltcG9ydCBzZXRSZXNvdXJjZVByZWZpeEhlbHBlciBmcm9tIFwiLi4vLi4vaGVscGVycy9yZXNvdXJjZS1wcmVmaXguanNcIjtcbmltcG9ydCBzZXRUZXJyYWZvcm1TdGF0ZUtleUhlbHBlciBmcm9tIFwiLi4vLi4vaGVscGVycy90ZXJyYWZvcm0tc3RhdGUta2V5LmpzXCI7XG5pbXBvcnQgZ2V0QWN0aW9ucyBmcm9tIFwiLi9hY3Rpb25zLmpzXCI7XG5pbXBvcnQgZ2V0UHJvbXB0cywge1xuICBJbml0aWFsQW5zd2VycyxcbiAgUGF5bG9hZCxcbiAgcGF5bG9hZFNjaGVtYSxcbn0gZnJvbSBcIi4vcHJvbXB0cy5qc1wiO1xuXG5leHBvcnQgY29uc3QgUExPUF9FTlZJUk9OTUVOVF9HRU5FUkFUT1JfTkFNRSA9IFwiRFhfRGVwbG95bWVudEVudmlyb25tZW50XCI7XG5leHBvcnQgeyB0eXBlIEluaXRpYWxBbnN3ZXJzLCBQYXlsb2FkLCBwYXlsb2FkU2NoZW1hIH07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChcbiAgcGxvcDogTm9kZVBsb3BBUEksXG4gIHRlbXBsYXRlc1BhdGg6IHN0cmluZyxcbiAgY2xvdWRBY2NvdW50UmVwb3NpdG9yeTogQ2xvdWRBY2NvdW50UmVwb3NpdG9yeSxcbiAgY2xvdWRBY2NvdW50U2VydmljZTogQ2xvdWRBY2NvdW50U2VydmljZSxcbiAgZ2l0SHViU2VydmljZTogR2l0SHViU2VydmljZSxcbiAgZ2l0aHViPzogR2l0SHViUmVwbyxcbiAgaW5pdGlhbEFuc3dlcnM6IEluaXRpYWxBbnN3ZXJzID0ge30sXG4pIHtcbiAgc2V0RW52U2hvcnRIZWxwZXIocGxvcCk7XG4gIHNldFJlc291cmNlUHJlZml4SGVscGVyKHBsb3ApO1xuICBzZXRFcUhlbHBlcihwbG9wKTtcbiAgc2V0VGVycmFmb3JtU3RhdGVLZXlIZWxwZXIocGxvcCk7XG5cbiAgc2V0R2V0VGVycmFmb3JtQmFja2VuZChwbG9wLCBjbG91ZEFjY291bnRTZXJ2aWNlKTtcbiAgc2V0UHJvdmlzaW9uVGVycmFmb3JtQmFja2VuZEFjdGlvbihwbG9wLCBjbG91ZEFjY291bnRTZXJ2aWNlKTtcbiAgc2V0SW5pdENsb3VkQWNjb3VudHNBY3Rpb24ocGxvcCwgY2xvdWRBY2NvdW50U2VydmljZSwgZ2l0SHViU2VydmljZSk7XG4gIHNldFN5bmNSZXBvc2l0b3J5RW52aXJvbm1lbnRzQWN0aW9uKHBsb3ApO1xuXG4gIHBsb3Auc2V0R2VuZXJhdG9yKFBMT1BfRU5WSVJPTk1FTlRfR0VORVJBVE9SX05BTUUsIHtcbiAgICBhY3Rpb25zOiBnZXRBY3Rpb25zKHRlbXBsYXRlc1BhdGgpLFxuICAgIGRlc2NyaXB0aW9uOiBcIkdlbmVyYXRlIGEgbmV3IGRlcGxveW1lbnQgZW52aXJvbm1lbnRcIixcbiAgICBwcm9tcHRzOiBnZXRQcm9tcHRzKHtcbiAgICAgIGNsb3VkQWNjb3VudFJlcG9zaXRvcnksXG4gICAgICBjbG91ZEFjY291bnRTZXJ2aWNlLFxuICAgICAgZ2l0aHViLFxuICAgICAgaW5pdGlhbEFuc3dlcnMsXG4gICAgfSksXG4gIH0pO1xufVxuIl19
@@ -64,10 +64,48 @@ export declare const payloadSchema: z.ZodObject<{
64
64
  }, z.core.$strip>;
65
65
  }, z.core.$strip>;
66
66
  export type Payload = z.infer<typeof payloadSchema>;
67
+ /**
68
+ * Prefilled answers supplied up-front by the caller (e.g. CLI flags), used to
69
+ * skip the matching prompts. Identifies cloud accounts by id and locations by
70
+ * account id, since the full domain objects aren't available before resolving.
71
+ */
72
+ export declare const initialAnswersSchema: z.ZodObject<{
73
+ env: z.ZodOptional<z.ZodObject<{
74
+ cloudAccountIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
75
+ locations: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodEnum<{
76
+ italynorth: "italynorth";
77
+ westeurope: "westeurope";
78
+ }>>>;
79
+ name: z.ZodOptional<z.ZodEnum<{
80
+ dev: "dev";
81
+ prod: "prod";
82
+ uat: "uat";
83
+ }>>;
84
+ prefix: z.ZodOptional<z.ZodString>;
85
+ }, z.core.$strip>>;
86
+ init: z.ZodOptional<z.ZodObject<{
87
+ confirm: z.ZodOptional<z.ZodBoolean>;
88
+ runnerAppCredentials: z.ZodOptional<z.ZodObject<{
89
+ clientId: z.ZodOptional<z.ZodString>;
90
+ id: z.ZodOptional<z.ZodString>;
91
+ installationId: z.ZodOptional<z.ZodString>;
92
+ key: z.ZodOptional<z.ZodString>;
93
+ }, z.core.$strip>>;
94
+ }, z.core.$strip>>;
95
+ tags: z.ZodOptional<z.ZodObject<{
96
+ BusinessUnit: z.ZodOptional<z.ZodString>;
97
+ ManagementTeam: z.ZodOptional<z.ZodString>;
98
+ }, z.core.$strip>>;
99
+ workspace: z.ZodOptional<z.ZodObject<{
100
+ domain: z.ZodOptional<z.ZodString>;
101
+ }, z.core.$strip>>;
102
+ }, z.core.$strip>;
103
+ export type InitialAnswers = z.infer<typeof initialAnswersSchema>;
67
104
  export type PromptsDependencies = {
68
105
  cloudAccountRepository: CloudAccountRepository;
69
106
  cloudAccountService: CloudAccountService;
70
107
  github?: GitHubRepo;
108
+ initialAnswers?: InitialAnswers;
71
109
  };
72
110
  declare const prompts: (deps: PromptsDependencies) => DynamicPromptsFunction;
73
111
  export declare const getCloudAccountChoices: (cloudAccounts: CloudAccount[]) => InquirerChoice<CloudAccount>[];