aws-cdk 2.1125.0 → 2.1127.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 (43) hide show
  1. package/THIRD_PARTY_LICENSES +61 -61
  2. package/build-info.json +2 -2
  3. package/db.json.gz +0 -0
  4. package/lib/api-private.d.ts +1 -1
  5. package/lib/api-private.js +1 -1
  6. package/lib/cli/cdk-toolkit.d.ts +5 -1
  7. package/lib/cli/cdk-toolkit.js +417 -278
  8. package/lib/cli/cli-config.js +14 -2
  9. package/lib/cli/cli-type-registry.json +30 -2
  10. package/lib/cli/cli.js +21 -9
  11. package/lib/cli/convert-to-user-input.js +15 -1
  12. package/lib/cli/display-version.d.ts +1 -0
  13. package/lib/cli/display-version.js +5 -4
  14. package/lib/cli/io-host/cli-io-host.d.ts +84 -5
  15. package/lib/cli/io-host/cli-io-host.js +130 -17
  16. package/lib/cli/parse-command-line-arguments.js +18 -2
  17. package/lib/cli/telemetry/installation-id.d.ts +7 -0
  18. package/lib/cli/telemetry/installation-id.js +18 -10
  19. package/lib/cli/telemetry/messages.d.ts +7 -0
  20. package/lib/cli/telemetry/messages.js +16 -1
  21. package/lib/cli/telemetry/schema.d.ts +1 -1
  22. package/lib/cli/telemetry/schema.js +1 -1
  23. package/lib/cli/telemetry/session.d.ts +36 -1
  24. package/lib/cli/telemetry/session.js +79 -4
  25. package/lib/cli/telemetry/telemetry-state.d.ts +18 -0
  26. package/lib/cli/telemetry/telemetry-state.js +42 -0
  27. package/lib/cli/user-configuration.d.ts +2 -1
  28. package/lib/cli/user-configuration.js +16 -5
  29. package/lib/cli/user-input.d.ts +34 -1
  30. package/lib/cli/user-input.js +1 -1
  31. package/lib/cli/util/yargs-helpers.d.ts +9 -0
  32. package/lib/cli/util/yargs-helpers.js +20 -1
  33. package/lib/commands/context.js +1 -3
  34. package/lib/commands/doctor.d.ts +12 -3
  35. package/lib/commands/doctor.js +19 -4
  36. package/lib/commands/list-stacks.d.ts +13 -17
  37. package/lib/commands/list-stacks.js +41 -22
  38. package/lib/commands/migrate.js +3 -3
  39. package/lib/index.js +18852 -12410
  40. package/lib/index_bg.wasm +0 -0
  41. package/lib/init-templates/.init-version.json +1 -1
  42. package/lib/init-templates/.recommended-feature-flags.json +3 -1
  43. package/package.json +14 -13
@@ -36,6 +36,16 @@ exports.CLI_PRIVATE_IO = {
36
36
  description: 'Deploy has finished',
37
37
  interface: 'EventResult',
38
38
  }),
39
+ CDK_CLI_I3002: make.trace({
40
+ code: 'CDK_CLI_I3002',
41
+ description: 'Start asset building and publishing',
42
+ interface: 'EventStart',
43
+ }),
44
+ CDK_CLI_I3003: make.trace({
45
+ code: 'CDK_CLI_I3003',
46
+ description: 'Finished asset building and publishing',
47
+ interface: 'EventResult',
48
+ }),
39
49
  };
40
50
  /**
41
51
  * Payload type of the end message must extend Duration
@@ -56,5 +66,10 @@ exports.CLI_PRIVATE_SPAN = {
56
66
  start: exports.CLI_PRIVATE_IO.CDK_CLI_I3000,
57
67
  end: exports.CLI_PRIVATE_IO.CDK_CLI_I3001,
58
68
  },
69
+ ASSET: {
70
+ name: 'Asset',
71
+ start: exports.CLI_PRIVATE_IO.CDK_CLI_I3002,
72
+ end: exports.CLI_PRIVATE_IO.CDK_CLI_I3003,
73
+ },
59
74
  };
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJtZXNzYWdlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSwwQ0FBMEM7QUFlMUM7O0dBRUc7QUFDVSxRQUFBLGNBQWMsR0FBRztJQUM1QixhQUFhLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBYTtRQUNwQyxJQUFJLEVBQUUsZUFBZTtRQUNyQixXQUFXLEVBQUUsNkJBQTZCO1FBQzFDLFNBQVMsRUFBRSxZQUFZO0tBQ3hCLENBQUM7SUFDRixhQUFhLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBYztRQUNyQyxJQUFJLEVBQUUsZUFBZTtRQUNyQixXQUFXLEVBQUUseUJBQXlCO1FBQ3RDLFNBQVMsRUFBRSxhQUFhO0tBQ3pCLENBQUM7SUFDRixhQUFhLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBYTtRQUNwQyxJQUFJLEVBQUUsZUFBZTtRQUNyQixXQUFXLEVBQUUscUJBQXFCO1FBQ2xDLFNBQVMsRUFBRSxZQUFZO0tBQ3hCLENBQUM7SUFDRixhQUFhLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBYztRQUNyQyxJQUFJLEVBQUUsZUFBZTtRQUNyQixXQUFXLEVBQUUsZ0NBQWdDO1FBQzdDLFNBQVMsRUFBRSxhQUFhO0tBQ3pCLENBQUM7SUFDRixhQUFhLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBYTtRQUNwQyxJQUFJLEVBQUUsZUFBZTtRQUNyQixXQUFXLEVBQUUsb0JBQW9CO1FBQ2pDLFNBQVMsRUFBRSxZQUFZO0tBQ3hCLENBQUM7SUFDRixhQUFhLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBYztRQUNyQyxJQUFJLEVBQUUsZUFBZTtRQUNyQixXQUFXLEVBQUUscUJBQXFCO1FBQ2xDLFNBQVMsRUFBRSxhQUFhO0tBQ3pCLENBQUM7Q0FDSCxDQUFDO0FBRUY7O0dBRUc7QUFDVSxRQUFBLGdCQUFnQixHQUFHO0lBQzlCLGNBQWMsRUFBRTtRQUNkLElBQUksRUFBRSxXQUFXO1FBQ2pCLEtBQUssRUFBRSxzQkFBYyxDQUFDLGFBQWE7UUFDbkMsR0FBRyxFQUFFLHNCQUFjLENBQUMsYUFBYTtLQUNsQztJQUNELE9BQU8sRUFBRTtRQUNQLElBQUksRUFBRSxTQUFTO1FBQ2YsS0FBSyxFQUFFLHNCQUFjLENBQUMsYUFBYTtRQUNuQyxHQUFHLEVBQUUsc0JBQWMsQ0FBQyxhQUFhO0tBQ2xDO0lBQ0QsTUFBTSxFQUFFO1FBQ04sSUFBSSxFQUFFLFFBQVE7UUFDZCxLQUFLLEVBQUUsc0JBQWMsQ0FBQyxhQUFhO1FBQ25DLEdBQUcsRUFBRSxzQkFBYyxDQUFDLGFBQWE7S0FDbEM7Q0FDaUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRHVyYXRpb24gfSBmcm9tICdAYXdzLWNkay90b29sa2l0LWxpYic7XG5pbXBvcnQgdHlwZSB7IEVycm9yRGV0YWlscyB9IGZyb20gJy4vc2NoZW1hJztcbmltcG9ydCAqIGFzIG1ha2UgZnJvbSAnLi4vLi4vYXBpLXByaXZhdGUnO1xuaW1wb3J0IHR5cGUgeyBTcGFuRGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uL2FwaS1wcml2YXRlJztcblxuZXhwb3J0IGludGVyZmFjZSBFdmVudFJlc3VsdCBleHRlbmRzIER1cmF0aW9uIHtcbiAgZXJyb3I/OiBFcnJvckRldGFpbHM7XG5cbiAgLyoqXG4gICAqIENvdW50cyBvZiBub3Rld29ydGh5IHRoaW5ncyBpbiB0aGlzIGV2ZW50XG4gICAqL1xuICBjb3VudGVycz86IFJlY29yZDxzdHJpbmcsIG51bWJlcj47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRTdGFydCB7XG59XG5cbi8qKlxuICogUHJpdmF0ZSBtZXNzYWdlIHR5cGVzIHNwZWNpZmljIHRvIHRoZSBDTElcbiAqL1xuZXhwb3J0IGNvbnN0IENMSV9QUklWQVRFX0lPID0ge1xuICBDREtfQ0xJX0kxMDAwOiBtYWtlLnRyYWNlPEV2ZW50U3RhcnQ+KHtcbiAgICBjb2RlOiAnQ0RLX0NMSV9JMTAwMCcsXG4gICAgZGVzY3JpcHRpb246ICdDbG91ZCBFeGVjdXRpb24gaXMgc3RhcnRpbmcnLFxuICAgIGludGVyZmFjZTogJ0V2ZW50U3RhcnQnLFxuICB9KSxcbiAgQ0RLX0NMSV9JMTAwMTogbWFrZS50cmFjZTxFdmVudFJlc3VsdD4oe1xuICAgIGNvZGU6ICdDREtfQ0xJX0kxMDAxJyxcbiAgICBkZXNjcmlwdGlvbjogJ0Nsb3VkIEV4ZWN1dGFibGUgUmVzdWx0JyxcbiAgICBpbnRlcmZhY2U6ICdFdmVudFJlc3VsdCcsXG4gIH0pLFxuICBDREtfQ0xJX0kyMDAwOiBtYWtlLnRyYWNlPEV2ZW50U3RhcnQ+KHtcbiAgICBjb2RlOiAnQ0RLX0NMSV9JMjAwMCcsXG4gICAgZGVzY3JpcHRpb246ICdDb21tYW5kIGhhcyBzdGFydGVkJyxcbiAgICBpbnRlcmZhY2U6ICdFdmVudFN0YXJ0JyxcbiAgfSksXG4gIENES19DTElfSTIwMDE6IG1ha2UudHJhY2U8RXZlbnRSZXN1bHQ+KHtcbiAgICBjb2RlOiAnQ0RLX0NMSV9JMjAwMScsXG4gICAgZGVzY3JpcHRpb246ICdDb21tYW5kIGhhcyBmaW5pc2hlZCBleGVjdXRpbmcnLFxuICAgIGludGVyZmFjZTogJ0V2ZW50UmVzdWx0JyxcbiAgfSksXG4gIENES19DTElfSTMwMDA6IG1ha2UudHJhY2U8RXZlbnRTdGFydD4oe1xuICAgIGNvZGU6ICdDREtfQ0xJX0kzMDAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0RlcGxveSBoYXMgc3RhcnRlZCcsXG4gICAgaW50ZXJmYWNlOiAnRXZlbnRTdGFydCcsXG4gIH0pLFxuICBDREtfQ0xJX0kzMDAxOiBtYWtlLnRyYWNlPEV2ZW50UmVzdWx0Pih7XG4gICAgY29kZTogJ0NES19DTElfSTMwMDEnLFxuICAgIGRlc2NyaXB0aW9uOiAnRGVwbG95IGhhcyBmaW5pc2hlZCcsXG4gICAgaW50ZXJmYWNlOiAnRXZlbnRSZXN1bHQnLFxuICB9KSxcbn07XG5cbi8qKlxuICogUGF5bG9hZCB0eXBlIG9mIHRoZSBlbmQgbWVzc2FnZSBtdXN0IGV4dGVuZCBEdXJhdGlvblxuICovXG5leHBvcnQgY29uc3QgQ0xJX1BSSVZBVEVfU1BBTiA9IHtcbiAgU1lOVEhfQVNTRU1CTFk6IHtcbiAgICBuYW1lOiAnU3ludGhlc2lzJyxcbiAgICBzdGFydDogQ0xJX1BSSVZBVEVfSU8uQ0RLX0NMSV9JMTAwMCxcbiAgICBlbmQ6IENMSV9QUklWQVRFX0lPLkNES19DTElfSTEwMDEsXG4gIH0sXG4gIENPTU1BTkQ6IHtcbiAgICBuYW1lOiAnQ29tbWFuZCcsXG4gICAgc3RhcnQ6IENMSV9QUklWQVRFX0lPLkNES19DTElfSTIwMDAsXG4gICAgZW5kOiBDTElfUFJJVkFURV9JTy5DREtfQ0xJX0kyMDAxLFxuICB9LFxuICBERVBMT1k6IHtcbiAgICBuYW1lOiAnRGVwbG95JyxcbiAgICBzdGFydDogQ0xJX1BSSVZBVEVfSU8uQ0RLX0NMSV9JMzAwMCxcbiAgICBlbmQ6IENMSV9QUklWQVRFX0lPLkNES19DTElfSTMwMDEsXG4gIH0sXG59IHNhdGlzZmllcyBSZWNvcmQ8c3RyaW5nLCBTcGFuRGVmaW5pdGlvbjxhbnksIGFueT4+O1xuIl19
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJtZXNzYWdlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSwwQ0FBMEM7QUFlMUM7O0dBRUc7QUFDVSxRQUFBLGNBQWMsR0FBRztJQUM1QixhQUFhLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBYTtRQUNwQyxJQUFJLEVBQUUsZUFBZTtRQUNyQixXQUFXLEVBQUUsNkJBQTZCO1FBQzFDLFNBQVMsRUFBRSxZQUFZO0tBQ3hCLENBQUM7SUFDRixhQUFhLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBYztRQUNyQyxJQUFJLEVBQUUsZUFBZTtRQUNyQixXQUFXLEVBQUUseUJBQXlCO1FBQ3RDLFNBQVMsRUFBRSxhQUFhO0tBQ3pCLENBQUM7SUFDRixhQUFhLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBYTtRQUNwQyxJQUFJLEVBQUUsZUFBZTtRQUNyQixXQUFXLEVBQUUscUJBQXFCO1FBQ2xDLFNBQVMsRUFBRSxZQUFZO0tBQ3hCLENBQUM7SUFDRixhQUFhLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBYztRQUNyQyxJQUFJLEVBQUUsZUFBZTtRQUNyQixXQUFXLEVBQUUsZ0NBQWdDO1FBQzdDLFNBQVMsRUFBRSxhQUFhO0tBQ3pCLENBQUM7SUFDRixhQUFhLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBYTtRQUNwQyxJQUFJLEVBQUUsZUFBZTtRQUNyQixXQUFXLEVBQUUsb0JBQW9CO1FBQ2pDLFNBQVMsRUFBRSxZQUFZO0tBQ3hCLENBQUM7SUFDRixhQUFhLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBYztRQUNyQyxJQUFJLEVBQUUsZUFBZTtRQUNyQixXQUFXLEVBQUUscUJBQXFCO1FBQ2xDLFNBQVMsRUFBRSxhQUFhO0tBQ3pCLENBQUM7SUFDRixhQUFhLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBYTtRQUNwQyxJQUFJLEVBQUUsZUFBZTtRQUNyQixXQUFXLEVBQUUscUNBQXFDO1FBQ2xELFNBQVMsRUFBRSxZQUFZO0tBQ3hCLENBQUM7SUFDRixhQUFhLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBYztRQUNyQyxJQUFJLEVBQUUsZUFBZTtRQUNyQixXQUFXLEVBQUUsd0NBQXdDO1FBQ3JELFNBQVMsRUFBRSxhQUFhO0tBQ3pCLENBQUM7Q0FDSCxDQUFDO0FBRUY7O0dBRUc7QUFDVSxRQUFBLGdCQUFnQixHQUFHO0lBQzlCLGNBQWMsRUFBRTtRQUNkLElBQUksRUFBRSxXQUFXO1FBQ2pCLEtBQUssRUFBRSxzQkFBYyxDQUFDLGFBQWE7UUFDbkMsR0FBRyxFQUFFLHNCQUFjLENBQUMsYUFBYTtLQUNsQztJQUNELE9BQU8sRUFBRTtRQUNQLElBQUksRUFBRSxTQUFTO1FBQ2YsS0FBSyxFQUFFLHNCQUFjLENBQUMsYUFBYTtRQUNuQyxHQUFHLEVBQUUsc0JBQWMsQ0FBQyxhQUFhO0tBQ2xDO0lBQ0QsTUFBTSxFQUFFO1FBQ04sSUFBSSxFQUFFLFFBQVE7UUFDZCxLQUFLLEVBQUUsc0JBQWMsQ0FBQyxhQUFhO1FBQ25DLEdBQUcsRUFBRSxzQkFBYyxDQUFDLGFBQWE7S0FDbEM7SUFDRCxLQUFLLEVBQUU7UUFDTCxJQUFJLEVBQUUsT0FBTztRQUNiLEtBQUssRUFBRSxzQkFBYyxDQUFDLGFBQWE7UUFDbkMsR0FBRyxFQUFFLHNCQUFjLENBQUMsYUFBYTtLQUNsQztDQUNpRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBEdXJhdGlvbiB9IGZyb20gJ0Bhd3MtY2RrL3Rvb2xraXQtbGliJztcbmltcG9ydCB0eXBlIHsgRXJyb3JEZXRhaWxzIH0gZnJvbSAnLi9zY2hlbWEnO1xuaW1wb3J0ICogYXMgbWFrZSBmcm9tICcuLi8uLi9hcGktcHJpdmF0ZSc7XG5pbXBvcnQgdHlwZSB7IFNwYW5EZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vYXBpLXByaXZhdGUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50UmVzdWx0IGV4dGVuZHMgRHVyYXRpb24ge1xuICBlcnJvcj86IEVycm9yRGV0YWlscztcblxuICAvKipcbiAgICogQ291bnRzIG9mIG5vdGV3b3J0aHkgdGhpbmdzIGluIHRoaXMgZXZlbnRcbiAgICovXG4gIGNvdW50ZXJzPzogUmVjb3JkPHN0cmluZywgbnVtYmVyPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFdmVudFN0YXJ0IHtcbn1cblxuLyoqXG4gKiBQcml2YXRlIG1lc3NhZ2UgdHlwZXMgc3BlY2lmaWMgdG8gdGhlIENMSVxuICovXG5leHBvcnQgY29uc3QgQ0xJX1BSSVZBVEVfSU8gPSB7XG4gIENES19DTElfSTEwMDA6IG1ha2UudHJhY2U8RXZlbnRTdGFydD4oe1xuICAgIGNvZGU6ICdDREtfQ0xJX0kxMDAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0Nsb3VkIEV4ZWN1dGlvbiBpcyBzdGFydGluZycsXG4gICAgaW50ZXJmYWNlOiAnRXZlbnRTdGFydCcsXG4gIH0pLFxuICBDREtfQ0xJX0kxMDAxOiBtYWtlLnRyYWNlPEV2ZW50UmVzdWx0Pih7XG4gICAgY29kZTogJ0NES19DTElfSTEwMDEnLFxuICAgIGRlc2NyaXB0aW9uOiAnQ2xvdWQgRXhlY3V0YWJsZSBSZXN1bHQnLFxuICAgIGludGVyZmFjZTogJ0V2ZW50UmVzdWx0JyxcbiAgfSksXG4gIENES19DTElfSTIwMDA6IG1ha2UudHJhY2U8RXZlbnRTdGFydD4oe1xuICAgIGNvZGU6ICdDREtfQ0xJX0kyMDAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0NvbW1hbmQgaGFzIHN0YXJ0ZWQnLFxuICAgIGludGVyZmFjZTogJ0V2ZW50U3RhcnQnLFxuICB9KSxcbiAgQ0RLX0NMSV9JMjAwMTogbWFrZS50cmFjZTxFdmVudFJlc3VsdD4oe1xuICAgIGNvZGU6ICdDREtfQ0xJX0kyMDAxJyxcbiAgICBkZXNjcmlwdGlvbjogJ0NvbW1hbmQgaGFzIGZpbmlzaGVkIGV4ZWN1dGluZycsXG4gICAgaW50ZXJmYWNlOiAnRXZlbnRSZXN1bHQnLFxuICB9KSxcbiAgQ0RLX0NMSV9JMzAwMDogbWFrZS50cmFjZTxFdmVudFN0YXJ0Pih7XG4gICAgY29kZTogJ0NES19DTElfSTMwMDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnRGVwbG95IGhhcyBzdGFydGVkJyxcbiAgICBpbnRlcmZhY2U6ICdFdmVudFN0YXJ0JyxcbiAgfSksXG4gIENES19DTElfSTMwMDE6IG1ha2UudHJhY2U8RXZlbnRSZXN1bHQ+KHtcbiAgICBjb2RlOiAnQ0RLX0NMSV9JMzAwMScsXG4gICAgZGVzY3JpcHRpb246ICdEZXBsb3kgaGFzIGZpbmlzaGVkJyxcbiAgICBpbnRlcmZhY2U6ICdFdmVudFJlc3VsdCcsXG4gIH0pLFxuICBDREtfQ0xJX0kzMDAyOiBtYWtlLnRyYWNlPEV2ZW50U3RhcnQ+KHtcbiAgICBjb2RlOiAnQ0RLX0NMSV9JMzAwMicsXG4gICAgZGVzY3JpcHRpb246ICdTdGFydCBhc3NldCBidWlsZGluZyBhbmQgcHVibGlzaGluZycsXG4gICAgaW50ZXJmYWNlOiAnRXZlbnRTdGFydCcsXG4gIH0pLFxuICBDREtfQ0xJX0kzMDAzOiBtYWtlLnRyYWNlPEV2ZW50UmVzdWx0Pih7XG4gICAgY29kZTogJ0NES19DTElfSTMwMDMnLFxuICAgIGRlc2NyaXB0aW9uOiAnRmluaXNoZWQgYXNzZXQgYnVpbGRpbmcgYW5kIHB1Ymxpc2hpbmcnLFxuICAgIGludGVyZmFjZTogJ0V2ZW50UmVzdWx0JyxcbiAgfSksXG59O1xuXG4vKipcbiAqIFBheWxvYWQgdHlwZSBvZiB0aGUgZW5kIG1lc3NhZ2UgbXVzdCBleHRlbmQgRHVyYXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IENMSV9QUklWQVRFX1NQQU4gPSB7XG4gIFNZTlRIX0FTU0VNQkxZOiB7XG4gICAgbmFtZTogJ1N5bnRoZXNpcycsXG4gICAgc3RhcnQ6IENMSV9QUklWQVRFX0lPLkNES19DTElfSTEwMDAsXG4gICAgZW5kOiBDTElfUFJJVkFURV9JTy5DREtfQ0xJX0kxMDAxLFxuICB9LFxuICBDT01NQU5EOiB7XG4gICAgbmFtZTogJ0NvbW1hbmQnLFxuICAgIHN0YXJ0OiBDTElfUFJJVkFURV9JTy5DREtfQ0xJX0kyMDAwLFxuICAgIGVuZDogQ0xJX1BSSVZBVEVfSU8uQ0RLX0NMSV9JMjAwMSxcbiAgfSxcbiAgREVQTE9ZOiB7XG4gICAgbmFtZTogJ0RlcGxveScsXG4gICAgc3RhcnQ6IENMSV9QUklWQVRFX0lPLkNES19DTElfSTMwMDAsXG4gICAgZW5kOiBDTElfUFJJVkFURV9JTy5DREtfQ0xJX0kzMDAxLFxuICB9LFxuICBBU1NFVDoge1xuICAgIG5hbWU6ICdBc3NldCcsXG4gICAgc3RhcnQ6IENMSV9QUklWQVRFX0lPLkNES19DTElfSTMwMDIsXG4gICAgZW5kOiBDTElfUFJJVkFURV9JTy5DREtfQ0xJX0kzMDAzLFxuICB9LFxufSBzYXRpc2ZpZXMgUmVjb3JkPHN0cmluZywgU3BhbkRlZmluaXRpb248YW55LCBhbnk+PjtcbiJdfQ==
@@ -25,7 +25,7 @@ export interface Command {
25
25
  interface SessionEvent {
26
26
  readonly command: Command;
27
27
  }
28
- export type EventType = 'SYNTH' | 'INVOKE' | 'DEPLOY' | 'HOTSWAP';
28
+ export type EventType = 'SYNTH' | 'INVOKE' | 'DEPLOY' | 'HOTSWAP' | 'ASSET';
29
29
  export type State = 'ABORTED' | 'FAILED' | 'SUCCEEDED';
30
30
  interface Event extends SessionEvent {
31
31
  readonly state: State;
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbnRlcmZhY2UgU2Vzc2lvbklkZW50aWZpZXJzIHtcbiAgcmVhZG9ubHkgY2RrQ2xpVmVyc2lvbjogc3RyaW5nO1xuICByZWFkb25seSBjZGtMaWJyYXJ5VmVyc2lvbj86IHN0cmluZztcbiAgcmVhZG9ubHkgdGVsZW1ldHJ5VmVyc2lvbjogc3RyaW5nO1xuICByZWFkb25seSBzZXNzaW9uSWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgaW5zdGFsbGF0aW9uSWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElkZW50aWZpZXJzIGV4dGVuZHMgU2Vzc2lvbklkZW50aWZpZXJzIHtcbiAgcmVhZG9ubHkgZXZlbnRJZDogc3RyaW5nO1xuICByZWFkb25seSB0aW1lc3RhbXA6IHN0cmluZztcbn1cblxudHlwZSBDb25maWdFbnRyeSA9IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9O1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbW1hbmQge1xuICByZWFkb25seSBwYXRoOiBzdHJpbmdbXTtcbiAgcmVhZG9ubHkgcGFyYW1ldGVyczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgcmVhZG9ubHkgY29uZmlnOiB7IFtrZXk6IHN0cmluZ106IENvbmZpZ0VudHJ5IH07XG59XG5cbmludGVyZmFjZSBTZXNzaW9uRXZlbnQge1xuICByZWFkb25seSBjb21tYW5kOiBDb21tYW5kO1xufVxuXG5leHBvcnQgdHlwZSBFdmVudFR5cGUgPSAnU1lOVEgnIHwgJ0lOVk9LRScgfCAnREVQTE9ZJyB8ICdIT1RTV0FQJztcbmV4cG9ydCB0eXBlIFN0YXRlID0gJ0FCT1JURUQnIHwgJ0ZBSUxFRCcgfCAnU1VDQ0VFREVEJztcbmludGVyZmFjZSBFdmVudCBleHRlbmRzIFNlc3Npb25FdmVudCB7XG4gIHJlYWRvbmx5IHN0YXRlOiBTdGF0ZTtcbiAgcmVhZG9ubHkgZXZlbnRUeXBlOiBFdmVudFR5cGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2Vzc2lvbkVudmlyb25tZW50IHtcbiAgcmVhZG9ubHkgb3M6IHtcbiAgICByZWFkb25seSBwbGF0Zm9ybTogc3RyaW5nO1xuICAgIHJlYWRvbmx5IHJlbGVhc2U6IHN0cmluZztcbiAgfTtcbiAgcmVhZG9ubHkgY2k6IGJvb2xlYW47XG4gIHJlYWRvbmx5IG5vZGVWZXJzaW9uOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGFnZW50PzogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIEVudmlyb25tZW50IGV4dGVuZHMgU2Vzc2lvbkVudmlyb25tZW50IHtcbn1cblxuaW50ZXJmYWNlIER1cmF0aW9uIHtcbiAgcmVhZG9ubHkgdG90YWw6IG51bWJlcjtcbiAgcmVhZG9ubHkgY29tcG9uZW50cz86IHsgW2tleTogc3RyaW5nXTogbnVtYmVyIH07XG59XG5cbnR5cGUgQ291bnRlcnMgPSB7IFtrZXk6IHN0cmluZ106IG51bWJlciB9O1xuXG5leHBvcnQgaW50ZXJmYWNlIEVycm9yRGV0YWlscyB7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgbWVzc2FnZT86IHN0cmluZzsgLy8gc2FuaXRpemVkIHN0YWNrIG1lc3NhZ2VcbiAgcmVhZG9ubHkgc3RhY2tUcmFjZT86IHN0cmluZzsgLy8gc2FuaXRpemVkIHN0YWNrIHRyYWNlXG4gIHJlYWRvbmx5IGxvZ3M/OiBzdHJpbmc7IC8vIHNhbml0aXplZCBzdGFjayBsb2dzXG59XG5cbmludGVyZmFjZSBEZXBlbmRlbmN5IHtcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBTZXNzaW9uUHJvamVjdCB7XG4gIHJlYWRvbmx5IGRlcGVuZGVuY2llcz86IERlcGVuZGVuY3lbXTtcbiAgcmVhZG9ubHkgbGFuZ3VhZ2U/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBQcm9qZWN0IGV4dGVuZHMgU2Vzc2lvblByb2plY3Qge1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRlbGVtZXRyeVNjaGVtYSB7XG4gIHJlYWRvbmx5IGlkZW50aWZpZXJzOiBJZGVudGlmaWVycztcbiAgcmVhZG9ubHkgZXZlbnQ6IEV2ZW50O1xuICByZWFkb25seSBlbnZpcm9ubWVudDogRW52aXJvbm1lbnQ7XG4gIHJlYWRvbmx5IHByb2plY3Q6IFByb2plY3Q7XG4gIHJlYWRvbmx5IGR1cmF0aW9uOiBEdXJhdGlvbjtcbiAgcmVhZG9ubHkgY291bnRlcnM/OiBDb3VudGVycztcbiAgcmVhZG9ubHkgZXJyb3I/OiBFcnJvckRldGFpbHM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2Vzc2lvblNjaGVtYSB7XG4gIGlkZW50aWZpZXJzOiBTZXNzaW9uSWRlbnRpZmllcnM7XG4gIGV2ZW50OiBTZXNzaW9uRXZlbnQ7XG4gIGVudmlyb25tZW50OiBTZXNzaW9uRW52aXJvbm1lbnQ7XG4gIHByb2plY3Q6IFNlc3Npb25Qcm9qZWN0O1xufVxuIl19
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbnRlcmZhY2UgU2Vzc2lvbklkZW50aWZpZXJzIHtcbiAgcmVhZG9ubHkgY2RrQ2xpVmVyc2lvbjogc3RyaW5nO1xuICByZWFkb25seSBjZGtMaWJyYXJ5VmVyc2lvbj86IHN0cmluZztcbiAgcmVhZG9ubHkgdGVsZW1ldHJ5VmVyc2lvbjogc3RyaW5nO1xuICByZWFkb25seSBzZXNzaW9uSWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgaW5zdGFsbGF0aW9uSWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElkZW50aWZpZXJzIGV4dGVuZHMgU2Vzc2lvbklkZW50aWZpZXJzIHtcbiAgcmVhZG9ubHkgZXZlbnRJZDogc3RyaW5nO1xuICByZWFkb25seSB0aW1lc3RhbXA6IHN0cmluZztcbn1cblxudHlwZSBDb25maWdFbnRyeSA9IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9O1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbW1hbmQge1xuICByZWFkb25seSBwYXRoOiBzdHJpbmdbXTtcbiAgcmVhZG9ubHkgcGFyYW1ldGVyczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgcmVhZG9ubHkgY29uZmlnOiB7IFtrZXk6IHN0cmluZ106IENvbmZpZ0VudHJ5IH07XG59XG5cbmludGVyZmFjZSBTZXNzaW9uRXZlbnQge1xuICByZWFkb25seSBjb21tYW5kOiBDb21tYW5kO1xufVxuXG5leHBvcnQgdHlwZSBFdmVudFR5cGUgPSAnU1lOVEgnIHwgJ0lOVk9LRScgfCAnREVQTE9ZJyB8ICdIT1RTV0FQJyB8ICdBU1NFVCc7XG5leHBvcnQgdHlwZSBTdGF0ZSA9ICdBQk9SVEVEJyB8ICdGQUlMRUQnIHwgJ1NVQ0NFRURFRCc7XG5pbnRlcmZhY2UgRXZlbnQgZXh0ZW5kcyBTZXNzaW9uRXZlbnQge1xuICByZWFkb25seSBzdGF0ZTogU3RhdGU7XG4gIHJlYWRvbmx5IGV2ZW50VHlwZTogRXZlbnRUeXBlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlc3Npb25FbnZpcm9ubWVudCB7XG4gIHJlYWRvbmx5IG9zOiB7XG4gICAgcmVhZG9ubHkgcGxhdGZvcm06IHN0cmluZztcbiAgICByZWFkb25seSByZWxlYXNlOiBzdHJpbmc7XG4gIH07XG4gIHJlYWRvbmx5IGNpOiBib29sZWFuO1xuICByZWFkb25seSBub2RlVmVyc2lvbjogc3RyaW5nO1xuICByZWFkb25seSBhZ2VudD86IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBFbnZpcm9ubWVudCBleHRlbmRzIFNlc3Npb25FbnZpcm9ubWVudCB7XG59XG5cbmludGVyZmFjZSBEdXJhdGlvbiB7XG4gIHJlYWRvbmx5IHRvdGFsOiBudW1iZXI7XG4gIHJlYWRvbmx5IGNvbXBvbmVudHM/OiB7IFtrZXk6IHN0cmluZ106IG51bWJlciB9O1xufVxuXG50eXBlIENvdW50ZXJzID0geyBba2V5OiBzdHJpbmddOiBudW1iZXIgfTtcblxuZXhwb3J0IGludGVyZmFjZSBFcnJvckRldGFpbHMge1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG1lc3NhZ2U/OiBzdHJpbmc7IC8vIHNhbml0aXplZCBzdGFjayBtZXNzYWdlXG4gIHJlYWRvbmx5IHN0YWNrVHJhY2U/OiBzdHJpbmc7IC8vIHNhbml0aXplZCBzdGFjayB0cmFjZVxuICByZWFkb25seSBsb2dzPzogc3RyaW5nOyAvLyBzYW5pdGl6ZWQgc3RhY2sgbG9nc1xufVxuXG5pbnRlcmZhY2UgRGVwZW5kZW5jeSB7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgU2Vzc2lvblByb2plY3Qge1xuICByZWFkb25seSBkZXBlbmRlbmNpZXM/OiBEZXBlbmRlbmN5W107XG4gIHJlYWRvbmx5IGxhbmd1YWdlPzogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgUHJvamVjdCBleHRlbmRzIFNlc3Npb25Qcm9qZWN0IHtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZWxlbWV0cnlTY2hlbWEge1xuICByZWFkb25seSBpZGVudGlmaWVyczogSWRlbnRpZmllcnM7XG4gIHJlYWRvbmx5IGV2ZW50OiBFdmVudDtcbiAgcmVhZG9ubHkgZW52aXJvbm1lbnQ6IEVudmlyb25tZW50O1xuICByZWFkb25seSBwcm9qZWN0OiBQcm9qZWN0O1xuICByZWFkb25seSBkdXJhdGlvbjogRHVyYXRpb247XG4gIHJlYWRvbmx5IGNvdW50ZXJzPzogQ291bnRlcnM7XG4gIHJlYWRvbmx5IGVycm9yPzogRXJyb3JEZXRhaWxzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlc3Npb25TY2hlbWEge1xuICBpZGVudGlmaWVyczogU2Vzc2lvbklkZW50aWZpZXJzO1xuICBldmVudDogU2Vzc2lvbkV2ZW50O1xuICBlbnZpcm9ubWVudDogU2Vzc2lvbkVudmlyb25tZW50O1xuICBwcm9qZWN0OiBTZXNzaW9uUHJvamVjdDtcbn1cbiJdfQ==
@@ -1,7 +1,9 @@
1
1
  import { type EventType, type ErrorDetails } from './schema';
2
2
  import type { ITelemetrySink } from './sink/sink-interface';
3
3
  import type { Context } from '../../api/context';
4
+ import type { IMessageSpan } from '../../api-private';
4
5
  import type { CliIoHost } from '../io-host/cli-io-host';
6
+ import type { EventResult } from '../telemetry/messages';
5
7
  export interface TelemetrySessionProps {
6
8
  readonly ioHost: CliIoHost;
7
9
  readonly client: ITelemetrySink;
@@ -32,10 +34,20 @@ export declare class TelemetrySession {
32
34
  private ioHost;
33
35
  private client;
34
36
  private _sessionInfo?;
35
- private span?;
37
+ private _commandSpan?;
36
38
  private _nextEventCounters?;
37
39
  private count;
40
+ private loadTime?;
38
41
  constructor(props: TelemetrySessionProps);
42
+ /**
43
+ * The span that represents the CLI invocation.
44
+ *
45
+ * In the code, this span is named COMMAND but the matching event type
46
+ * in telemetry will be INVOKE.
47
+ *
48
+ * Will be emitted exactly once, at the end of the CLI operation.
49
+ */
50
+ get commandSpan(): IMessageSpan<EventResult> | undefined;
39
51
  begin(): Promise<void>;
40
52
  attachRegion(region: string): Promise<void>;
41
53
  /**
@@ -52,6 +64,16 @@ export declare class TelemetrySession {
52
64
  * They may be committed to the sent telemetry later.
53
65
  */
54
66
  attachCountersToNextEvent(counters: Record<string, number>): void;
67
+ /**
68
+ * Set the load time (will be emitted with the COMMAND span)
69
+ */
70
+ attachLoadTime(loadTime: number): void;
71
+ /**
72
+ * Mark when the actual CLI operation starts
73
+ *
74
+ * Emitted as part of the COMMAND span.
75
+ */
76
+ markOperationStart(): void;
55
77
  /**
56
78
  * Attach the CDK library version
57
79
  *
@@ -70,5 +92,18 @@ export declare class TelemetrySession {
70
92
  */
71
93
  end(error?: ErrorDetails): Promise<void>;
72
94
  emit(event: TelemetryEvent): Promise<void>;
95
+ /**
96
+ * This is a DEPLOY event, track some additional statistics about it
97
+ *
98
+ * We use this to measure things about deployment failures, such as the number of
99
+ * failed DEPLOY events in a sequence.
100
+ */
101
+ private trackDeployStatistics;
73
102
  private get sessionInfo();
74
103
  }
104
+ /**
105
+ * Validates that the CDK_CLI_USERAGENT env var value matches
106
+ * the expected format: `<name>/<version>/<mode>` where name is one of
107
+ * VALID_USER_AGENTS and mode is either `sandbox` or `production`.
108
+ */
109
+ export declare function isValidWrapperUserAgent(value: string | undefined): value is string;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TelemetrySession = void 0;
4
+ exports.isValidWrapperUserAgent = isValidWrapperUserAgent;
4
5
  const node_crypto_1 = require("node:crypto");
5
6
  const toolkit_lib_1 = require("@aws-cdk/toolkit-lib");
6
7
  const installation_id_1 = require("./installation-id");
@@ -11,7 +12,13 @@ const messages_1 = require("../telemetry/messages");
11
12
  const ci_1 = require("../util/ci");
12
13
  const version_1 = require("../version");
13
14
  const error_1 = require("./error");
15
+ const telemetry_state_1 = require("./telemetry-state");
14
16
  const ABORTED_ERROR_MESSAGE = '__CDK-Toolkit__Aborted';
17
+ /**
18
+ * Valid user agent prefixes that are allowed to report through CDK_CLI_USERAGENT.
19
+ * This creates a mechanism to report user agents we control.
20
+ */
21
+ const VALID_USER_AGENTS = ['aws-blocks'];
15
22
  class TelemetrySession {
16
23
  constructor(props) {
17
24
  this.props = props;
@@ -19,6 +26,17 @@ class TelemetrySession {
19
26
  this.ioHost = props.ioHost;
20
27
  this.client = props.client;
21
28
  }
29
+ /**
30
+ * The span that represents the CLI invocation.
31
+ *
32
+ * In the code, this span is named COMMAND but the matching event type
33
+ * in telemetry will be INVOKE.
34
+ *
35
+ * Will be emitted exactly once, at the end of the CLI operation.
36
+ */
37
+ get commandSpan() {
38
+ return this._commandSpan;
39
+ }
22
40
  async begin() {
23
41
  // sanitize the raw cli input
24
42
  const { path, parameters } = (0, sanitation_1.sanitizeCommandLineArguments)(this.props.arguments);
@@ -36,6 +54,9 @@ class TelemetrySession {
36
54
  parameters,
37
55
  config: {
38
56
  context: (0, sanitation_1.sanitizeContext)(this.props.context),
57
+ ...(isValidWrapperUserAgent(process.env.CDK_CLI_USERAGENT)
58
+ ? { cdkCliUserAgent: { [process.env.CDK_CLI_USERAGENT]: true } }
59
+ : {}),
39
60
  },
40
61
  },
41
62
  },
@@ -64,7 +85,7 @@ class TelemetrySession {
64
85
  process.exit(1);
65
86
  });
66
87
  // Begin the session span
67
- this.span = await this.ioHost.asIoHelper().span(messages_1.CLI_PRIVATE_SPAN.COMMAND).begin({});
88
+ this._commandSpan = await this.ioHost.asIoHelper().span(messages_1.CLI_PRIVATE_SPAN.COMMAND).begin({});
68
89
  }
69
90
  async attachRegion(region) {
70
91
  this.sessionInfo.identifiers = {
@@ -102,6 +123,23 @@ class TelemetrySession {
102
123
  attachCountersToNextEvent(counters) {
103
124
  this._nextEventCounters = counters;
104
125
  }
126
+ /**
127
+ * Set the load time (will be emitted with the COMMAND span)
128
+ */
129
+ attachLoadTime(loadTime) {
130
+ this.loadTime = loadTime;
131
+ this._commandSpan?.addTimer('load', loadTime);
132
+ }
133
+ /**
134
+ * Mark when the actual CLI operation starts
135
+ *
136
+ * Emitted as part of the COMMAND span.
137
+ */
138
+ markOperationStart() {
139
+ if (this.loadTime) {
140
+ this._commandSpan?.addTimer('init', performance.now() - this.loadTime);
141
+ }
142
+ }
105
143
  /**
106
144
  * Attach the CDK library version
107
145
  *
@@ -125,9 +163,9 @@ class TelemetrySession {
125
163
  * and notifies with an optional error message in the data.
126
164
  */
127
165
  async end(error) {
128
- await this.span?.end({ error });
166
+ await this._commandSpan?.end({ error });
129
167
  // Ideally span.end() should no-op if called twice, but that is not the case right now
130
- this.span = undefined;
168
+ this._commandSpan = undefined;
131
169
  await this.client.flush();
132
170
  }
133
171
  async emit(event) {
@@ -137,6 +175,9 @@ class TelemetrySession {
137
175
  ...event.counters,
138
176
  };
139
177
  this._nextEventCounters = undefined;
178
+ if (event.eventType == 'DEPLOY') {
179
+ await this.trackDeployStatistics(event.error === undefined, counters);
180
+ }
140
181
  return this.client.emit({
141
182
  event: {
142
183
  command: this.sessionInfo.event.command,
@@ -161,6 +202,24 @@ class TelemetrySession {
161
202
  ...(Object.keys(counters).length > 0 ? { counters } : {}),
162
203
  });
163
204
  }
205
+ /**
206
+ * This is a DEPLOY event, track some additional statistics about it
207
+ *
208
+ * We use this to measure things about deployment failures, such as the number of
209
+ * failed DEPLOY events in a sequence.
210
+ */
211
+ async trackDeployStatistics(isSuccessful, counters) {
212
+ await (0, telemetry_state_1.withTelemetryState)((state) => {
213
+ const recentFailures = state.sequentialDeploymentFailures ?? 0;
214
+ if (isSuccessful) {
215
+ state.sequentialDeploymentFailures = 0;
216
+ }
217
+ else {
218
+ state.sequentialDeploymentFailures = recentFailures + 1;
219
+ }
220
+ counters.sequentialDeploymentFailures = state.sequentialDeploymentFailures;
221
+ });
222
+ }
164
223
  get sessionInfo() {
165
224
  if (!this._sessionInfo) {
166
225
  throw new toolkit_lib_1.ToolkitError('SessionNotInitialized', 'Session Info not initialized. Call begin() first.');
@@ -184,4 +243,20 @@ function isAbortedError(error) {
184
243
  function mutable(x) {
185
244
  return x;
186
245
  }
187
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNlc3Npb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQXlDO0FBQ3pDLHNEQUFvRDtBQUNwRCx1REFBOEQ7QUFDOUQsdURBQXNEO0FBQ3RELDZDQUE2RTtBQUs3RSw4Q0FBK0M7QUFHL0Msb0RBQXlEO0FBQ3pELG1DQUFrQztBQUNsQyx3Q0FBMkM7QUFDM0MsbUNBQWdEO0FBRWhELE1BQU0scUJBQXFCLEdBQUcsd0JBQXdCLENBQUM7QUErQnZELE1BQWEsZ0JBQWdCO0lBUTNCLFlBQTZCLEtBQTRCO1FBQTVCLFVBQUssR0FBTCxLQUFLLENBQXVCO1FBRmpELFVBQUssR0FBRyxDQUFDLENBQUM7UUFHaEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQzNCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztJQUM3QixDQUFDO0lBRU0sS0FBSyxDQUFDLEtBQUs7UUFDaEIsNkJBQTZCO1FBQzdCLE1BQU0sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEdBQUcsSUFBQSx5Q0FBNEIsRUFBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2hGLElBQUksQ0FBQyxZQUFZLEdBQUc7WUFDbEIsV0FBVyxFQUFFO2dCQUNYLGNBQWMsRUFBRSxNQUFNLElBQUEsMkNBQXlCLEVBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDekUsU0FBUyxFQUFFLElBQUEsd0JBQVUsR0FBRTtnQkFDdkIsZ0JBQWdCLEVBQUUsS0FBSztnQkFDdkIsYUFBYSxFQUFFLElBQUEsdUJBQWEsR0FBRTtnQkFDOUIsaUJBQWlCLEVBQUUsTUFBTSxJQUFBLG1DQUFpQixFQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7YUFDckU7WUFDRCxLQUFLLEVBQUU7Z0JBQ0wsT0FBTyxFQUFF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SyxFQUFFO29CQUNMLElBQUksRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUk7aUJBQ3ZCO2FBQ0YsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ1AsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1NBQzFELENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFZLFdBQVc7UUFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN2QixNQUFNLElBQUksMEJBQVksQ0FBQyx1QkFBdUIsRUFBRSxtREFBbUQsQ0FBQyxDQUFDO1FBQ3ZHLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztDQUNGO0FBL0tELDRDQStLQztBQUVELFNBQVMsUUFBUSxDQUFDLEtBQW9CO0lBQ3BDLElBQUksS0FBSyxFQUFFLENBQUM7UUFDVixPQUFPLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7SUFDdEQsQ0FBQztJQUNELE9BQU8sV0FBVyxDQUFDO0FBQ3JCLENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FBQyxLQUFvQjtJQUMxQyxJQUFJLEtBQUssRUFBRSxJQUFJLEtBQUssY0FBYyxJQUFJLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLHFCQUFxQixDQUFDLEVBQUUsQ0FBQztRQUN0RixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRCxTQUFTLE9BQU8sQ0FBbUIsQ0FBSTtJQUNyQyxPQUFPLENBQUMsQ0FBQztBQUNYLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByYW5kb21VVUlEIH0gZnJvbSAnbm9kZTpjcnlwdG8nO1xuaW1wb3J0IHsgVG9vbGtpdEVycm9yIH0gZnJvbSAnQGF3cy1jZGsvdG9vbGtpdC1saWInO1xuaW1wb3J0IHsgZ2V0T3JDcmVhdGVJbnN0YWxsYXRpb25JZCB9IGZyb20gJy4vaW5zdGFsbGF0aW9uLWlkJztcbmltcG9ydCB7IGdldExpYnJhcnlWZXJzaW9uIH0gZnJvbSAnLi9saWJyYXJ5LXZlcnNpb24nO1xuaW1wb3J0IHsgc2FuaXRpemVDb21tYW5kTGluZUFyZ3VtZW50cywgc2FuaXRpemVDb250ZXh0IH0gZnJvbSAnLi9zYW5pdGF0aW9uJztcbmltcG9ydCB7IHR5cGUgRXZlbnRUeXBlLCB0eXBlIFNlc3Npb25TY2hlbWEsIHR5cGUgU3RhdGUsIHR5cGUgRXJyb3JEZXRhaWxzIH0gZnJvbSAnLi9zY2hlbWEnO1xuaW1wb3J0IHR5cGUgeyBJVGVsZW1ldHJ5U2luayB9IGZyb20gJy4vc2luay9zaW5rLWludGVyZmFjZSc7XG5pbXBvcnQgdHlwZSB7IENvbnRleHQgfSBmcm9tICcuLi8uLi9hcGkvY29udGV4dCc7XG5pbXBvcnQgdHlwZSB7IElNZXNzYWdlU3BhbiB9IGZyb20gJy4uLy4uL2FwaS1wcml2YXRlJztcbmltcG9ydCB7IGRldGVjdENpU3lzdGVtIH0gZnJvbSAnLi4vY2ktc3lzdGVtcyc7XG5pbXBvcnQgdHlwZSB7IENsaUlvSG9zdCB9IGZyb20gJy4uL2lvLWhvc3QvY2xpLWlvLWhvc3QnO1xuaW1wb3J0IHR5cGUgeyBFdmVudFJlc3VsdCB9IGZyb20gJy4uL3RlbGVtZXRyeS9tZXNzYWdlcyc7XG5pbXBvcnQgeyBDTElfUFJJVkFURV9TUEFOIH0gZnJvbSAnLi4vdGVsZW1ldHJ5L21lc3NhZ2VzJztcbmltcG9ydCB7IGlzQ0kgfSBmcm9tICcuLi91dGlsL2NpJztcbmltcG9ydCB7IHZlcnNpb25OdW1iZXIgfSBmcm9tICcuLi92ZXJzaW9uJztcbmltcG9ydCB7IFVTRVJfSU5URVJSVVBURURfQ09ERSB9IGZyb20gJy4vZXJyb3InO1xuXG5jb25zdCBBQk9SVEVEX0VSUk9SX01FU1NBR0UgPSAnX19DREstVG9vbGtpdF9fQWJvcnRlZCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGVsZW1ldHJ5U2Vzc2lvblByb3BzIHtcbiAgcmVhZG9ubHkgaW9Ib3N0OiBDbGlJb0hvc3Q7XG4gIHJlYWRvbmx5IGNsaWVudDogSVRlbGVtZXRyeVNpbms7XG4gIHJlYWRvbmx5IGFyZ3VtZW50czogYW55O1xuICByZWFkb25seSBjb250ZXh0OiBDb250ZXh0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRlbGVtZXRyeUV2ZW50IHtcbiAgcmVhZG9ubHkgZXZlbnRUeXBlOiBFdmVudFR5cGU7XG4gIHJlYWRvbmx5IGR1cmF0aW9uOiBudW1iZXI7XG4gIHJlYWRvbmx5IGVycm9yPzogRXJyb3JEZXRhaWxzO1xuICByZWFkb25seSBjb3VudGVycz86IFJlY29yZDxzdHJpbmcsIG51bWJlcj47XG59XG5cbi8qKlxuICogVGltZXIgb2YgYSBzaW5nbGUgZXZlbnRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUaW1pbmcge1xuICAvKipcbiAgICogVG90YWwgdGltZSBzcGVudCBpbiB0aGlzIG9wZXJhdGlvblxuICAgKi9cbiAgdG90YWxNczogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDb3VudCBvZiBvcGVyYXRpb25zIHRoYXQgdG9nZXRoZXIgdG9vayBgdG90YWxNc2AuXG4gICAqL1xuICBjb3VudDogbnVtYmVyO1xufVxuXG5leHBvcnQgY2xhc3MgVGVsZW1ldHJ5U2Vzc2lvbiB7XG4gIHByaXZhdGUgaW9Ib3N0OiBDbGlJb0hvc3Q7XG4gIHByaXZhdGUgY2xpZW50OiBJVGVsZW1ldHJ5U2luaztcbiAgcHJpdmF0ZSBfc2Vzc2lvbkluZm8/OiBTZXNzaW9uU2NoZW1hO1xuICBwcml2YXRlIHNwYW4/OiBJTWVzc2FnZVNwYW48RXZlbnRSZXN1bHQ+O1xuICBwcml2YXRlIF9uZXh0RXZlbnRDb3VudGVycz86IFJlY29yZDxzdHJpbmcsIG51bWJlcj47XG4gIHByaXZhdGUgY291bnQgPSAwO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcHJvcHM6IFRlbGVtZXRyeVNlc3Npb25Qcm9wcykge1xuICAgIHRoaXMuaW9Ib3N0ID0gcHJvcHMuaW9Ib3N0O1xuICAgIHRoaXMuY2xpZW50ID0gcHJvcHMuY2xpZW50O1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGJlZ2luKCkge1xuICAgIC8vIHNhbml0aXplIHRoZSByYXcgY2xpIGlucHV0XG4gICAgY29uc3QgeyBwYXRoLCBwYXJhbWV0ZXJzIH0gPSBzYW5pdGl6ZUNvbW1hbmRMaW5lQXJndW1lbnRzKHRoaXMucHJvcHMuYXJndW1lbnRzKTtcbiAgICB0aGlzLl9zZXNzaW9uSW5mbyA9IHtcbiAgICAgIGlkZW50aWZpZXJzOiB7XG4gICAgICAgIGluc3RhbGxhdGlvbklkOiBhd2FpdCBnZXRPckNyZWF0ZUluc3RhbGxhdGlvbklkKHRoaXMuaW9Ib3N0LmFzSW9IZWxwZXIoKSksXG4gICAgICAgIHNlc3Npb25JZDogcmFuZG9tVVVJRCgpLFxuICAgICAgICB0ZWxlbWV0cnlWZXJzaW9uOiAnMi4wJyxcbiAgICAgICAgY2RrQ2xpVmVyc2lvbjogdmVyc2lvbk51bWJlcigpLFxuICAgICAgICBjZGtMaWJyYXJ5VmVyc2lvbjogYXdhaXQgZ2V0TGlicmFyeVZlcnNpb24odGhpcy5pb0hvc3QuYXNJb0hlbHBlcigpKSxcbiAgICAgIH0sXG4gICAgICBldmVudDoge1xuICAgICAgICBjb21tYW5kOiB7XG4gICAgICAgICAgcGF0aCxcbiAgICAgICAgICBwYXJhbWV0ZXJzLFxuICAgICAgICAgIGNvbmZpZzoge1xuICAgICAgICAgICAgY29udGV4dDogc2FuaXRpemVDb250ZXh0KHRoaXMucHJvcHMuY29udGV4dCksXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBjaTogaXNDSSgpIHx8IEJvb2xlYW4oZGV0ZWN0Q2lTeXN0ZW0oKSksXG4gICAgICAgIG9zOiB7XG4gICAgICAgICAgcGxhdGZvcm06IHByb2Nlc3MucGxhdGZvcm0sXG4gICAgICAgICAgcmVsZWFzZTogcHJvY2Vzcy5yZWxlYXNlLm5hbWUsXG4gICAgICAgIH0sXG4gICAgICAgIG5vZGVWZXJzaW9uOiBwcm9jZXNzLnZlcnNpb24sXG4gICAgICB9LFxuICAgICAgcHJvamVjdDoge30sXG4gICAgfTtcblxuICAgIC8vIElmIFNJR0lOVCBoYXMgYSBsaXN0ZW5lciBpbnN0YWxsZWQsIGl0cyBkZWZhdWx0IGJlaGF2aW9yIHdpbGwgYmUgcmVtb3ZlZCAoTm9kZS5qcyB3aWxsIG5vIGxvbmdlciBleGl0KS5cbiAgICAvLyBUaGlzIGVuc3VyZXMgdGhhdCBvbiBTSUdJTlQgd2UgcHJvY2VzcyBzYWZlbHkgY2xvc2UgdGhlIHRlbGVtZXRyeSBzZXNzaW9uIGJlZm9yZSBleGl0aW5nLlxuICAgIHByb2Nlc3Mub24oJ1NJR0lOVCcsIGFzeW5jICgpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMuZW5kKHtcbiAgICAgICAgICBuYW1lOiBVU0VSX0lOVEVSUlVQVEVEX0NPREUsXG4gICAgICAgICAgbWVzc2FnZTogQUJPUlRFRF9FUlJPUl9NRVNTQUdFLFxuICAgICAgICB9KTtcbiAgICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgICBhd2FpdCB0aGlzLmlvSG9zdC5kZWZhdWx0cy50cmFjZShgRW5kaW5nIFRlbGVtZXRyeSBmYWlsZWQ6ICR7ZS5tZXNzYWdlfWApO1xuICAgICAgfVxuICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgIH0pO1xuXG4gICAgLy8gQmVnaW4gdGhlIHNlc3Npb24gc3BhblxuICAgIHRoaXMuc3BhbiA9IGF3YWl0IHRoaXMuaW9Ib3N0LmFzSW9IZWxwZXIoKS5zcGFuKENMSV9QUklWQVRFX1NQQU4uQ09NTUFORCkuYmVnaW4oe30pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGF0dGFjaFJlZ2lvbihyZWdpb246IHN0cmluZykge1xuICAgIHRoaXMuc2Vzc2lvbkluZm8uaWRlbnRpZmllcnMgPSB7XG4gICAgICAuLi50aGlzLnNlc3Npb25JbmZvLmlkZW50aWZpZXJzLFxuICAgICAgcmVnaW9uLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQXR0YWNoIGEgbGFuZ3VhZ2UgZ3Vlc3NcbiAgICovXG4gIHB1YmxpYyBhdHRhY2hMYW5ndWFnZShsYW5ndWFnZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgLy8gRG9uJ3Qgd2FudCB0byBjcmFzaCBhY2NpZGVudGFsbHlcbiAgICBpZiAoIXRoaXMuX3Nlc3Npb25JbmZvKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGxhbmd1YWdlKSB7XG4gICAgICBtdXRhYmxlKHRoaXMuc2Vzc2lvbkluZm8ucHJvamVjdCkubGFuZ3VhZ2UgPSBsYW5ndWFnZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQXR0YWNoIG91ciBiZXN0IGd1ZXNzIGF0IHJ1bm5pbmcgdW5kZXIgYW4gYWdlbnQgb3Igbm90XG4gICAqL1xuICBwdWJsaWMgYXR0YWNoQWdlbnQoaXNBZ2VudDogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuICAgIC8vIERvbid0IHdhbnQgdG8gY3Jhc2ggYWNjaWRlbnRhbGx5XG4gICAgaWYgKCF0aGlzLl9zZXNzaW9uSW5mbykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIG11dGFibGUodGhpcy5zZXNzaW9uSW5mby5lbnZpcm9ubWVudCkuYWdlbnQgPSBpc0FnZW50O1xuICB9XG5cbiAgLyoqXG4gICAqIFRlbXBvcmFyaWx5IGF0dGFjaCBjb3VudGVycyBmb3IgdGhlIG5leHQgZXZlbnQgb3BlcmF0aW9uLlxuICAgKlxuICAgKiBUaGV5IG1heSBiZSBjb21taXR0ZWQgdG8gdGhlIHNlbnQgdGVsZW1ldHJ5IGxhdGVyLlxuICAgKi9cbiAgcHVibGljIGF0dGFjaENvdW50ZXJzVG9OZXh0RXZlbnQoY291bnRlcnM6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4pIHtcbiAgICB0aGlzLl9uZXh0RXZlbnRDb3VudGVycyA9IGNvdW50ZXJzO1xuICB9XG5cbiAgLyoqXG4gICAqIEF0dGFjaCB0aGUgQ0RLIGxpYnJhcnkgdmVyc2lvblxuICAgKlxuICAgKiBCeSBkZWZhdWx0IHRoZSB0ZWxlbWV0cnkgd2lsbCBndWVzcyBhdCB0aGUgQ0RLIGxpYnJhcnkgdmVyc2lvbiBpZiBpdCBzb1xuICAgKiBoYXBwZW5zIHRoYXQgdGhlIENESyBwcm9qZWN0IGlzIGFuIE5QTSBwcm9qZWN0IGFuZCB0aGUgQ0RLIENMSSBpcyBleGVjdXRlZFxuICAgKiBpbiB0aGUgcm9vdCBvZiBOUE0gcHJvamVjdCB3aXRoIGBhd3MtY2RrLWxpYmAgYXZhaWxhYmxlIGluIGBub2RlX21vZHVsZXNgLlxuICAgKiBUaGlzIG1heSBzdWNjZWVkIG9yIG1heSBmYWlsLlxuICAgKlxuICAgKiBPbmNlIHdlIGhhdmUgcHJvZHVjZWQgYW5kIGxvYWRlZCB0aGUgY2xvdWQgYXNzZW1ibHkgbW9yZSBhY2N1cmF0ZVxuICAgKiBpbmZvcm1hdGlvbiBiZWNvbWVzIGF2YWlsYWJsZSB0aGF0IHdlIGNhbiBhZGQgaW4uXG4gICAqL1xuICBwdWJsaWMgYXR0YWNoQ2RrTGliVmVyc2lvbihsaWJWZXJzaW9uOiBzdHJpbmcpIHtcbiAgICAvLyBEb24ndCB3YW50IHRvIGNyYXNoIGFjY2lkZW50YWxseVxuICAgIGlmICghdGhpcy5fc2Vzc2lvbkluZm8pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBtdXRhYmxlKHRoaXMuc2Vzc2lvbkluZm8uaWRlbnRpZmllcnMpLmNka0xpYnJhcnlWZXJzaW9uID0gbGliVmVyc2lvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGVuIHRoZSBjb21tYW5kIGlzIGNvbXBsZXRlLCBzbyBpcyB0aGUgQ2xpSW9Ib3N0LiBFbmRzIHRoZSBzcGFuIG9mIHRoZSBlbnRpcmUgQ2xpSW9Ib3N0XG4gICAqIGFuZCBub3RpZmllcyB3aXRoIGFuIG9wdGlvbmFsIGVycm9yIG1lc3NhZ2UgaW4gdGhlIGRhdGEuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZW5kKGVycm9yPzogRXJyb3JEZXRhaWxzKSB7XG4gICAgYXdhaXQgdGhpcy5zcGFuPy5lbmQoeyBlcnJvciB9KTtcbiAgICAvLyBJZGVhbGx5IHNwYW4uZW5kKCkgc2hvdWxkIG5vLW9wIGlmIGNhbGxlZCB0d2ljZSwgYnV0IHRoYXQgaXMgbm90IHRoZSBjYXNlIHJpZ2h0IG5vd1xuICAgIHRoaXMuc3BhbiA9IHVuZGVmaW5lZDtcbiAgICBhd2FpdCB0aGlzLmNsaWVudC5mbHVzaCgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGVtaXQoZXZlbnQ6IFRlbGVtZXRyeUV2ZW50KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5jb3VudCArPSAxO1xuXG4gICAgY29uc3QgY291bnRlcnMgPSB7XG4gICAgICAuLi50aGlzLl9uZXh0RXZlbnRDb3VudGVycyxcbiAgICAgIC4uLmV2ZW50LmNvdW50ZXJzLFxuICAgIH07XG4gICAgdGhpcy5fbmV4dEV2ZW50Q291bnRlcnMgPSB1bmRlZmluZWQ7XG5cbiAgICByZXR1cm4gdGhpcy5jbGllbnQuZW1pdCh7XG4gICAgICBldmVudDoge1xuICAgICAgICBjb21tYW5kOiB0aGlzLnNlc3Npb25JbmZvLmV2ZW50LmNvbW1hbmQsXG4gICAgICAgIHN0YXRlOiBnZXRTdGF0ZShldmVudC5lcnJvciksXG4gICAgICAgIGV2ZW50VHlwZTogZXZlbnQuZXZlbnRUeXBlLFxuICAgICAgfSxcbiAgICAgIGlkZW50aWZpZXJzOiB7XG4gICAgICAgIC4uLnRoaXMuc2Vzc2lvbkluZm8uaWRlbnRpZmllcnMsXG4gICAgICAgIGV2ZW50SWQ6IGAke3RoaXMuc2Vzc2lvbkluZm8uaWRlbnRpZmllcnMuc2Vzc2lvbklkfToke3RoaXMuY291bnR9YCxcbiAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICB9LFxuICAgICAgZW52aXJvbm1lbnQ6IHRoaXMuc2Vzc2lvbkluZm8uZW52aXJvbm1lbnQsXG4gICAgICBwcm9qZWN0OiB0aGlzLnNlc3Npb25JbmZvLnByb2plY3QsXG4gICAgICBkdXJhdGlvbjoge1xuICAgICAgICB0b3RhbDogZXZlbnQuZHVyYXRpb24sXG4gICAgICB9LFxuICAgICAgLi4uKGV2ZW50LmVycm9yID8ge1xuICAgICAgICBlcnJvcjoge1xuICAgICAgICAgIG5hbWU6IGV2ZW50LmVycm9yLm5hbWUsXG4gICAgICAgIH0sXG4gICAgICB9IDoge30pLFxuICAgICAgLi4uKE9iamVjdC5rZXlzKGNvdW50ZXJzKS5sZW5ndGggPiAwID8geyBjb3VudGVycyB9IDoge30pLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgc2Vzc2lvbkluZm8oKTogU2Vzc2lvblNjaGVtYSB7XG4gICAgaWYgKCF0aGlzLl9zZXNzaW9uSW5mbykge1xuICAgICAgdGhyb3cgbmV3IFRvb2xraXRFcnJvcignU2Vzc2lvbk5vdEluaXRpYWxpemVkJywgJ1Nlc3Npb24gSW5mbyBub3QgaW5pdGlhbGl6ZWQuIENhbGwgYmVnaW4oKSBmaXJzdC4nKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3Nlc3Npb25JbmZvO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldFN0YXRlKGVycm9yPzogRXJyb3JEZXRhaWxzKTogU3RhdGUge1xuICBpZiAoZXJyb3IpIHtcbiAgICByZXR1cm4gaXNBYm9ydGVkRXJyb3IoZXJyb3IpID8gJ0FCT1JURUQnIDogJ0ZBSUxFRCc7XG4gIH1cbiAgcmV0dXJuICdTVUNDRUVERUQnO1xufVxuXG5mdW5jdGlvbiBpc0Fib3J0ZWRFcnJvcihlcnJvcj86IEVycm9yRGV0YWlscykge1xuICBpZiAoZXJyb3I/Lm5hbWUgPT09ICdUb29sa2l0RXJyb3InICYmIGVycm9yPy5tZXNzYWdlPy5pbmNsdWRlcyhBQk9SVEVEX0VSUk9SX01FU1NBR0UpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBtdXRhYmxlPEEgZXh0ZW5kcyBvYmplY3Q+KHg6IEEpOiB7IC1yZWFkb25seSBbayBpbiBrZXlvZiBBXTogQVtrXSB9IHtcbiAgcmV0dXJuIHg7XG59XG4iXX0=
246
+ /**
247
+ * Validates that the CDK_CLI_USERAGENT env var value matches
248
+ * the expected format: `<name>/<version>/<mode>` where name is one of
249
+ * VALID_USER_AGENTS and mode is either `sandbox` or `production`.
250
+ */
251
+ function isValidWrapperUserAgent(value) {
252
+ if (!value)
253
+ return false;
254
+ const parts = value.split('/');
255
+ if (parts.length !== 3)
256
+ return false;
257
+ const [name, _version, mode] = parts;
258
+ if (!VALID_USER_AGENTS.includes(name))
259
+ return false;
260
+ return mode === 'sandbox' || mode === 'production';
261
+ }
262
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNlc3Npb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBMFRBLDBEQU9DO0FBalVELDZDQUF5QztBQUN6QyxzREFBb0Q7QUFDcEQsdURBQThEO0FBQzlELHVEQUFzRDtBQUN0RCw2Q0FBNkU7QUFLN0UsOENBQStDO0FBRy9DLG9EQUF5RDtBQUN6RCxtQ0FBa0M7QUFDbEMsd0NBQTJDO0FBQzNDLG1DQUFnRDtBQUNoRCx1REFBdUQ7QUFFdkQsTUFBTSxxQkFBcUIsR0FBRyx3QkFBd0IsQ0FBQztBQUV2RDs7O0dBR0c7QUFDSCxNQUFNLGlCQUFpQixHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7QUErQnpDLE1BQWEsZ0JBQWdCO0lBUzNCLFlBQTZCLEtBQTRCO1FBQTVCLFVBQUssR0FBTCxLQUFLLENBQXVCO1FBSGpELFVBQUssR0FBRyxDQUFDLENBQUM7UUFJaEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQzNCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztJQUM3QixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILElBQVcsV0FBVztRQUNwQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVNLEtBQUssQ0FBQyxLQUFLO1FBQ2hCLDZCQUE2QjtRQUM3QixNQUFNLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxHQUFHLElBQUEseUNBQTRCLEVBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNoRixJQUFJLENBQUMsWUFBWSxHQUFHO1lBQ2xCLFdBQVcsRUFBRTtnQkFDWCxjQUFjLEVBQUUsTUFBTSxJQUFBLDJDQUF5QixFQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ3pFLFNBQVMsRUFBRSxJQUFBLHdCQUFVLEdBQUU7Z0JBQ3ZCLGdCQUFnQixFQUFFLEtBQUs7Z0JBQ3ZCLGFBQWEsRUFBRSxJQUFBLHVCQUFhLEdBQUU7Z0JBQzlCLGlCQUFpQixFQUFFLE1BQU0sSUFBQSxtQ0FBaUIsRUFBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO2FBQ3JFO1lBQ0QsS0FBSyxFQUFFO2dCQUNMLE9BQU8sRUFBRTtvQkFDUCxJQUFJO29CQUNKLFVBQVU7b0JBQ1YsTUFBTSxFQUFFO3dCQUNOLE9BQU8sRUFBRSxJQUFBLDRCQUFlLEVBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7d0JBQzVDLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDOzRCQUN4RCxDQUFDLENBQUMsRUFBRSxlQUFlLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRTs0QkFDaEUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztxQkFDUjtpQkFDRjthQUNGO1lBQ0QsV0FBVyxFQUFFO2dCQUNYLEVBQUUsRUFBRSxJQUFBLFNBQUksR0FBRSxJQUFJLE9BQU8sQ0FBQyxJQUFBLDJCQUFjLEdBQUUsQ0FBQztnQkFDdkMsRUFBRSxFQUFFO29CQUNGLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUTtvQkFDMUIsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSTtpQkFDOUI7Z0JBQ0QsV0FBVyxFQUFFLE9BQU8sQ0FBQyxPQUFPO2FBQzdCO1lBQ0QsT0FBTyxFQUFFLEVBQUU7U0FDWixDQUFDO1FBRUYsMEdBQTBHO1FBQzFHLDRGQUE0RjtRQUM1RixPQUFPLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxLQUFLLElBQUksRUFBRTtZQUM5QixJQUFJLENBQUM7Z0JBQ0gsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDO29CQUNiLElBQUksRUFBRSw2QkFBcUI7b0JBQzNCLE9BQU8sRUFBRSxxQkFBcUI7aUJBQy9CLENBQUMsQ0FBQztZQUNMLENBQUM7WUFBQyxPQUFPLENBQU0sRUFBRSxDQUFDO2dCQUNoQixNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDNUUsQ0FBQztZQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEIsQ0FBQyxDQUFDLENBQUM7UUFFSCx5QkFBeUI7UUFDekIsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLDJCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM5RixDQUFDO0lBRU0sS0FBSyxDQUFDLFlBQVksQ0FBQyxNQUFjO1FBQ3RDLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxHQUFHO1lBQzdCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXO1lBQy9CLE1BQU07U0FDUCxDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0ksY0FBYyxDQUFDLFFBQTRCO1FBQ2hELG1DQUFtQztRQUNuQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3ZCLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDeEQsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNJLFdBQVcsQ0FBQyxPQUE0QjtRQUM3QyxtQ0FBbUM7UUFDbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN2QixPQUFPO1FBQ1QsQ0FBQztRQUVELE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUM7SUFDeEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSx5QkFBeUIsQ0FBQyxRQUFnQztRQUMvRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsUUFBUSxDQUFDO0lBQ3JDLENBQUM7SUFFRDs7T0FFRztJQUNJLGNBQWMsQ0FBQyxRQUFnQjtRQUNwQyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxrQkFBa0I7UUFDdkIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDekUsQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0ksbUJBQW1CLENBQUMsVUFBa0I7UUFDM0MsbUNBQW1DO1FBQ25DLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdkIsT0FBTztRQUNULENBQUM7UUFFRCxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxpQkFBaUIsR0FBRyxVQUFVLENBQUM7SUFDdkUsQ0FBQztJQUVEOzs7T0FHRztJQUNJLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBb0I7UUFDbkMsTUFBTSxJQUFJLENBQUMsWUFBWSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDeEMsc0ZBQXNGO1FBQ3RGLElBQUksQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDO1FBQzlCLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRU0sS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFxQjtRQUNyQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQztRQUVoQixNQUFNLFFBQVEsR0FBRztZQUNmLEdBQUcsSUFBSSxDQUFDLGtCQUFrQjtZQUMxQixHQUFHLEtBQUssQ0FBQyxRQUFRO1NBQ2xCLENBQUM7UUFDRixJQUFJLENBQUMsa0JBQWtCLEdBQUcsU0FBUyxDQUFDO1FBRXBDLElBQUksS0FBSyxDQUFDLFNBQVMsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNoQyxNQUFNLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsS0FBSyxLQUFLLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN4RSxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztZQUN0QixLQUFLLEVBQUU7Z0JBQ0wsT0FBTyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLE9BQU87Z0JBQ3ZDLEtBQUssRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztnQkFDNUIsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO2FBQzNCO1lBQ0QsV0FBVyxFQUFFO2dCQUNYLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXO2dCQUMvQixPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtnQkFDbEUsU0FBUyxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFO2FBQ3BDO1lBQ0QsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVztZQUN6QyxPQUFPLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPO1lBQ2pDLFFBQVEsRUFBRTtnQkFDUixLQUFLLEVBQUUsS0FBSyxDQUFDLFFBQVE7YUFDdEI7WUFDRCxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQ2hCLEtBQUssRUFBRTtvQkFDTCxJQUFJLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJO2lCQUN2QjthQUNGLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNQLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztTQUMxRCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxLQUFLLENBQUMscUJBQXFCLENBQUMsWUFBcUIsRUFBRSxRQUFnQztRQUN6RixNQUFNLElBQUEsb0NBQWtCLEVBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNqQyxNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUMsNEJBQTRCLElBQUksQ0FBQyxDQUFDO1lBRS9ELElBQUksWUFBWSxFQUFFLENBQUM7Z0JBQ2pCLEtBQUssQ0FBQyw0QkFBNEIsR0FBRyxDQUFDLENBQUM7WUFDekMsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLEtBQUssQ0FBQyw0QkFBNEIsR0FBRyxjQUFjLEdBQUcsQ0FBQyxDQUFDO1lBQzFELENBQUM7WUFFRCxRQUFRLENBQUMsNEJBQTRCLEdBQUcsS0FBSyxDQUFDLDRCQUE0QixDQUFDO1FBQzdFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELElBQVksV0FBVztRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sSUFBSSwwQkFBWSxDQUFDLHVCQUF1QixFQUFFLG1EQUFtRCxDQUFDLENBQUM7UUFDdkcsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0NBQ0Y7QUExT0QsNENBME9DO0FBRUQsU0FBUyxRQUFRLENBQUMsS0FBb0I7SUFDcEMsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUNWLE9BQU8sY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztJQUN0RCxDQUFDO0lBQ0QsT0FBTyxXQUFXLENBQUM7QUFDckIsQ0FBQztBQUVELFNBQVMsY0FBYyxDQUFDLEtBQW9CO0lBQzFDLElBQUksS0FBSyxFQUFFLElBQUksS0FBSyxjQUFjLElBQUksS0FBSyxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMscUJBQXFCLENBQUMsRUFBRSxDQUFDO1FBQ3RGLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVELFNBQVMsT0FBTyxDQUFtQixDQUFJO0lBQ3JDLE9BQU8sQ0FBQyxDQUFDO0FBQ1gsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQix1QkFBdUIsQ0FBQyxLQUF5QjtJQUMvRCxJQUFJLENBQUMsS0FBSztRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQ3pCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDL0IsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUNyQyxNQUFNLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDckMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUNwRCxPQUFPLElBQUksS0FBSyxTQUFTLElBQUksSUFBSSxLQUFLLFlBQVksQ0FBQztBQUNyRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmFuZG9tVVVJRCB9IGZyb20gJ25vZGU6Y3J5cHRvJztcbmltcG9ydCB7IFRvb2xraXRFcnJvciB9IGZyb20gJ0Bhd3MtY2RrL3Rvb2xraXQtbGliJztcbmltcG9ydCB7IGdldE9yQ3JlYXRlSW5zdGFsbGF0aW9uSWQgfSBmcm9tICcuL2luc3RhbGxhdGlvbi1pZCc7XG5pbXBvcnQgeyBnZXRMaWJyYXJ5VmVyc2lvbiB9IGZyb20gJy4vbGlicmFyeS12ZXJzaW9uJztcbmltcG9ydCB7IHNhbml0aXplQ29tbWFuZExpbmVBcmd1bWVudHMsIHNhbml0aXplQ29udGV4dCB9IGZyb20gJy4vc2FuaXRhdGlvbic7XG5pbXBvcnQgeyB0eXBlIEV2ZW50VHlwZSwgdHlwZSBTZXNzaW9uU2NoZW1hLCB0eXBlIFN0YXRlLCB0eXBlIEVycm9yRGV0YWlscyB9IGZyb20gJy4vc2NoZW1hJztcbmltcG9ydCB0eXBlIHsgSVRlbGVtZXRyeVNpbmsgfSBmcm9tICcuL3Npbmsvc2luay1pbnRlcmZhY2UnO1xuaW1wb3J0IHR5cGUgeyBDb250ZXh0IH0gZnJvbSAnLi4vLi4vYXBpL2NvbnRleHQnO1xuaW1wb3J0IHR5cGUgeyBJTWVzc2FnZVNwYW4gfSBmcm9tICcuLi8uLi9hcGktcHJpdmF0ZSc7XG5pbXBvcnQgeyBkZXRlY3RDaVN5c3RlbSB9IGZyb20gJy4uL2NpLXN5c3RlbXMnO1xuaW1wb3J0IHR5cGUgeyBDbGlJb0hvc3QgfSBmcm9tICcuLi9pby1ob3N0L2NsaS1pby1ob3N0JztcbmltcG9ydCB0eXBlIHsgRXZlbnRSZXN1bHQgfSBmcm9tICcuLi90ZWxlbWV0cnkvbWVzc2FnZXMnO1xuaW1wb3J0IHsgQ0xJX1BSSVZBVEVfU1BBTiB9IGZyb20gJy4uL3RlbGVtZXRyeS9tZXNzYWdlcyc7XG5pbXBvcnQgeyBpc0NJIH0gZnJvbSAnLi4vdXRpbC9jaSc7XG5pbXBvcnQgeyB2ZXJzaW9uTnVtYmVyIH0gZnJvbSAnLi4vdmVyc2lvbic7XG5pbXBvcnQgeyBVU0VSX0lOVEVSUlVQVEVEX0NPREUgfSBmcm9tICcuL2Vycm9yJztcbmltcG9ydCB7IHdpdGhUZWxlbWV0cnlTdGF0ZSB9IGZyb20gJy4vdGVsZW1ldHJ5LXN0YXRlJztcblxuY29uc3QgQUJPUlRFRF9FUlJPUl9NRVNTQUdFID0gJ19fQ0RLLVRvb2xraXRfX0Fib3J0ZWQnO1xuXG4vKipcbiAqIFZhbGlkIHVzZXIgYWdlbnQgcHJlZml4ZXMgdGhhdCBhcmUgYWxsb3dlZCB0byByZXBvcnQgdGhyb3VnaCBDREtfQ0xJX1VTRVJBR0VOVC5cbiAqIFRoaXMgY3JlYXRlcyBhIG1lY2hhbmlzbSB0byByZXBvcnQgdXNlciBhZ2VudHMgd2UgY29udHJvbC5cbiAqL1xuY29uc3QgVkFMSURfVVNFUl9BR0VOVFMgPSBbJ2F3cy1ibG9ja3MnXTtcblxuZXhwb3J0IGludGVyZmFjZSBUZWxlbWV0cnlTZXNzaW9uUHJvcHMge1xuICByZWFkb25seSBpb0hvc3Q6IENsaUlvSG9zdDtcbiAgcmVhZG9ubHkgY2xpZW50OiBJVGVsZW1ldHJ5U2luaztcbiAgcmVhZG9ubHkgYXJndW1lbnRzOiBhbnk7XG4gIHJlYWRvbmx5IGNvbnRleHQ6IENvbnRleHQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGVsZW1ldHJ5RXZlbnQge1xuICByZWFkb25seSBldmVudFR5cGU6IEV2ZW50VHlwZTtcbiAgcmVhZG9ubHkgZHVyYXRpb246IG51bWJlcjtcbiAgcmVhZG9ubHkgZXJyb3I/OiBFcnJvckRldGFpbHM7XG4gIHJlYWRvbmx5IGNvdW50ZXJzPzogUmVjb3JkPHN0cmluZywgbnVtYmVyPjtcbn1cblxuLyoqXG4gKiBUaW1lciBvZiBhIHNpbmdsZSBldmVudFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRpbWluZyB7XG4gIC8qKlxuICAgKiBUb3RhbCB0aW1lIHNwZW50IGluIHRoaXMgb3BlcmF0aW9uXG4gICAqL1xuICB0b3RhbE1zOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIENvdW50IG9mIG9wZXJhdGlvbnMgdGhhdCB0b2dldGhlciB0b29rIGB0b3RhbE1zYC5cbiAgICovXG4gIGNvdW50OiBudW1iZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBUZWxlbWV0cnlTZXNzaW9uIHtcbiAgcHJpdmF0ZSBpb0hvc3Q6IENsaUlvSG9zdDtcbiAgcHJpdmF0ZSBjbGllbnQ6IElUZWxlbWV0cnlTaW5rO1xuICBwcml2YXRlIF9zZXNzaW9uSW5mbz86IFNlc3Npb25TY2hlbWE7XG4gIHByaXZhdGUgX2NvbW1hbmRTcGFuPzogSU1lc3NhZ2VTcGFuPEV2ZW50UmVzdWx0PjtcbiAgcHJpdmF0ZSBfbmV4dEV2ZW50Q291bnRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+O1xuICBwcml2YXRlIGNvdW50ID0gMDtcbiAgcHJpdmF0ZSBsb2FkVGltZT86IG51bWJlcjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHByb3BzOiBUZWxlbWV0cnlTZXNzaW9uUHJvcHMpIHtcbiAgICB0aGlzLmlvSG9zdCA9IHByb3BzLmlvSG9zdDtcbiAgICB0aGlzLmNsaWVudCA9IHByb3BzLmNsaWVudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgc3BhbiB0aGF0IHJlcHJlc2VudHMgdGhlIENMSSBpbnZvY2F0aW9uLlxuICAgKlxuICAgKiBJbiB0aGUgY29kZSwgdGhpcyBzcGFuIGlzIG5hbWVkIENPTU1BTkQgYnV0IHRoZSBtYXRjaGluZyBldmVudCB0eXBlXG4gICAqIGluIHRlbGVtZXRyeSB3aWxsIGJlIElOVk9LRS5cbiAgICpcbiAgICogV2lsbCBiZSBlbWl0dGVkIGV4YWN0bHkgb25jZSwgYXQgdGhlIGVuZCBvZiB0aGUgQ0xJIG9wZXJhdGlvbi5cbiAgICovXG4gIHB1YmxpYyBnZXQgY29tbWFuZFNwYW4oKTogSU1lc3NhZ2VTcGFuPEV2ZW50UmVzdWx0PiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbW1hbmRTcGFuO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGJlZ2luKCkge1xuICAgIC8vIHNhbml0aXplIHRoZSByYXcgY2xpIGlucHV0XG4gICAgY29uc3QgeyBwYXRoLCBwYXJhbWV0ZXJzIH0gPSBzYW5pdGl6ZUNvbW1hbmRMaW5lQXJndW1lbnRzKHRoaXMucHJvcHMuYXJndW1lbnRzKTtcbiAgICB0aGlzLl9zZXNzaW9uSW5mbyA9IHtcbiAgICAgIGlkZW50aWZpZXJzOiB7XG4gICAgICAgIGluc3RhbGxhdGlvbklkOiBhd2FpdCBnZXRPckNyZWF0ZUluc3RhbGxhdGlvbklkKHRoaXMuaW9Ib3N0LmFzSW9IZWxwZXIoKSksXG4gICAgICAgIHNlc3Npb25JZDogcmFuZG9tVVVJRCgpLFxuICAgICAgICB0ZWxlbWV0cnlWZXJzaW9uOiAnMi4wJyxcbiAgICAgICAgY2RrQ2xpVmVyc2lvbjogdmVyc2lvbk51bWJlcigpLFxuICAgICAgICBjZGtMaWJyYXJ5VmVyc2lvbjogYXdhaXQgZ2V0TGlicmFyeVZlcnNpb24odGhpcy5pb0hvc3QuYXNJb0hlbHBlcigpKSxcbiAgICAgIH0sXG4gICAgICBldmVudDoge1xuICAgICAgICBjb21tYW5kOiB7XG4gICAgICAgICAgcGF0aCxcbiAgICAgICAgICBwYXJhbWV0ZXJzLFxuICAgICAgICAgIGNvbmZpZzoge1xuICAgICAgICAgICAgY29udGV4dDogc2FuaXRpemVDb250ZXh0KHRoaXMucHJvcHMuY29udGV4dCksXG4gICAgICAgICAgICAuLi4oaXNWYWxpZFdyYXBwZXJVc2VyQWdlbnQocHJvY2Vzcy5lbnYuQ0RLX0NMSV9VU0VSQUdFTlQpXG4gICAgICAgICAgICAgID8geyBjZGtDbGlVc2VyQWdlbnQ6IHsgW3Byb2Nlc3MuZW52LkNES19DTElfVVNFUkFHRU5UXTogdHJ1ZSB9IH1cbiAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBjaTogaXNDSSgpIHx8IEJvb2xlYW4oZGV0ZWN0Q2lTeXN0ZW0oKSksXG4gICAgICAgIG9zOiB7XG4gICAgICAgICAgcGxhdGZvcm06IHByb2Nlc3MucGxhdGZvcm0sXG4gICAgICAgICAgcmVsZWFzZTogcHJvY2Vzcy5yZWxlYXNlLm5hbWUsXG4gICAgICAgIH0sXG4gICAgICAgIG5vZGVWZXJzaW9uOiBwcm9jZXNzLnZlcnNpb24sXG4gICAgICB9LFxuICAgICAgcHJvamVjdDoge30sXG4gICAgfTtcblxuICAgIC8vIElmIFNJR0lOVCBoYXMgYSBsaXN0ZW5lciBpbnN0YWxsZWQsIGl0cyBkZWZhdWx0IGJlaGF2aW9yIHdpbGwgYmUgcmVtb3ZlZCAoTm9kZS5qcyB3aWxsIG5vIGxvbmdlciBleGl0KS5cbiAgICAvLyBUaGlzIGVuc3VyZXMgdGhhdCBvbiBTSUdJTlQgd2UgcHJvY2VzcyBzYWZlbHkgY2xvc2UgdGhlIHRlbGVtZXRyeSBzZXNzaW9uIGJlZm9yZSBleGl0aW5nLlxuICAgIHByb2Nlc3Mub24oJ1NJR0lOVCcsIGFzeW5jICgpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMuZW5kKHtcbiAgICAgICAgICBuYW1lOiBVU0VSX0lOVEVSUlVQVEVEX0NPREUsXG4gICAgICAgICAgbWVzc2FnZTogQUJPUlRFRF9FUlJPUl9NRVNTQUdFLFxuICAgICAgICB9KTtcbiAgICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgICBhd2FpdCB0aGlzLmlvSG9zdC5kZWZhdWx0cy50cmFjZShgRW5kaW5nIFRlbGVtZXRyeSBmYWlsZWQ6ICR7ZS5tZXNzYWdlfWApO1xuICAgICAgfVxuICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgIH0pO1xuXG4gICAgLy8gQmVnaW4gdGhlIHNlc3Npb24gc3BhblxuICAgIHRoaXMuX2NvbW1hbmRTcGFuID0gYXdhaXQgdGhpcy5pb0hvc3QuYXNJb0hlbHBlcigpLnNwYW4oQ0xJX1BSSVZBVEVfU1BBTi5DT01NQU5EKS5iZWdpbih7fSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYXR0YWNoUmVnaW9uKHJlZ2lvbjogc3RyaW5nKSB7XG4gICAgdGhpcy5zZXNzaW9uSW5mby5pZGVudGlmaWVycyA9IHtcbiAgICAgIC4uLnRoaXMuc2Vzc2lvbkluZm8uaWRlbnRpZmllcnMsXG4gICAgICByZWdpb24sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBdHRhY2ggYSBsYW5ndWFnZSBndWVzc1xuICAgKi9cbiAgcHVibGljIGF0dGFjaExhbmd1YWdlKGxhbmd1YWdlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICAvLyBEb24ndCB3YW50IHRvIGNyYXNoIGFjY2lkZW50YWxseVxuICAgIGlmICghdGhpcy5fc2Vzc2lvbkluZm8pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAobGFuZ3VhZ2UpIHtcbiAgICAgIG11dGFibGUodGhpcy5zZXNzaW9uSW5mby5wcm9qZWN0KS5sYW5ndWFnZSA9IGxhbmd1YWdlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBdHRhY2ggb3VyIGJlc3QgZ3Vlc3MgYXQgcnVubmluZyB1bmRlciBhbiBhZ2VudCBvciBub3RcbiAgICovXG4gIHB1YmxpYyBhdHRhY2hBZ2VudChpc0FnZW50OiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgLy8gRG9uJ3Qgd2FudCB0byBjcmFzaCBhY2NpZGVudGFsbHlcbiAgICBpZiAoIXRoaXMuX3Nlc3Npb25JbmZvKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbXV0YWJsZSh0aGlzLnNlc3Npb25JbmZvLmVudmlyb25tZW50KS5hZ2VudCA9IGlzQWdlbnQ7XG4gIH1cblxuICAvKipcbiAgICogVGVtcG9yYXJpbHkgYXR0YWNoIGNvdW50ZXJzIGZvciB0aGUgbmV4dCBldmVudCBvcGVyYXRpb24uXG4gICAqXG4gICAqIFRoZXkgbWF5IGJlIGNvbW1pdHRlZCB0byB0aGUgc2VudCB0ZWxlbWV0cnkgbGF0ZXIuXG4gICAqL1xuICBwdWJsaWMgYXR0YWNoQ291bnRlcnNUb05leHRFdmVudChjb3VudGVyczogUmVjb3JkPHN0cmluZywgbnVtYmVyPikge1xuICAgIHRoaXMuX25leHRFdmVudENvdW50ZXJzID0gY291bnRlcnM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBsb2FkIHRpbWUgKHdpbGwgYmUgZW1pdHRlZCB3aXRoIHRoZSBDT01NQU5EIHNwYW4pXG4gICAqL1xuICBwdWJsaWMgYXR0YWNoTG9hZFRpbWUobG9hZFRpbWU6IG51bWJlcikge1xuICAgIHRoaXMubG9hZFRpbWUgPSBsb2FkVGltZTtcbiAgICB0aGlzLl9jb21tYW5kU3Bhbj8uYWRkVGltZXIoJ2xvYWQnLCBsb2FkVGltZSk7XG4gIH1cblxuICAvKipcbiAgICogTWFyayB3aGVuIHRoZSBhY3R1YWwgQ0xJIG9wZXJhdGlvbiBzdGFydHNcbiAgICpcbiAgICogRW1pdHRlZCBhcyBwYXJ0IG9mIHRoZSBDT01NQU5EIHNwYW4uXG4gICAqL1xuICBwdWJsaWMgbWFya09wZXJhdGlvblN0YXJ0KCkge1xuICAgIGlmICh0aGlzLmxvYWRUaW1lKSB7XG4gICAgICB0aGlzLl9jb21tYW5kU3Bhbj8uYWRkVGltZXIoJ2luaXQnLCBwZXJmb3JtYW5jZS5ub3coKSAtIHRoaXMubG9hZFRpbWUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBdHRhY2ggdGhlIENESyBsaWJyYXJ5IHZlcnNpb25cbiAgICpcbiAgICogQnkgZGVmYXVsdCB0aGUgdGVsZW1ldHJ5IHdpbGwgZ3Vlc3MgYXQgdGhlIENESyBsaWJyYXJ5IHZlcnNpb24gaWYgaXQgc29cbiAgICogaGFwcGVucyB0aGF0IHRoZSBDREsgcHJvamVjdCBpcyBhbiBOUE0gcHJvamVjdCBhbmQgdGhlIENESyBDTEkgaXMgZXhlY3V0ZWRcbiAgICogaW4gdGhlIHJvb3Qgb2YgTlBNIHByb2plY3Qgd2l0aCBgYXdzLWNkay1saWJgIGF2YWlsYWJsZSBpbiBgbm9kZV9tb2R1bGVzYC5cbiAgICogVGhpcyBtYXkgc3VjY2VlZCBvciBtYXkgZmFpbC5cbiAgICpcbiAgICogT25jZSB3ZSBoYXZlIHByb2R1Y2VkIGFuZCBsb2FkZWQgdGhlIGNsb3VkIGFzc2VtYmx5IG1vcmUgYWNjdXJhdGVcbiAgICogaW5mb3JtYXRpb24gYmVjb21lcyBhdmFpbGFibGUgdGhhdCB3ZSBjYW4gYWRkIGluLlxuICAgKi9cbiAgcHVibGljIGF0dGFjaENka0xpYlZlcnNpb24obGliVmVyc2lvbjogc3RyaW5nKSB7XG4gICAgLy8gRG9uJ3Qgd2FudCB0byBjcmFzaCBhY2NpZGVudGFsbHlcbiAgICBpZiAoIXRoaXMuX3Nlc3Npb25JbmZvKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbXV0YWJsZSh0aGlzLnNlc3Npb25JbmZvLmlkZW50aWZpZXJzKS5jZGtMaWJyYXJ5VmVyc2lvbiA9IGxpYlZlcnNpb247XG4gIH1cblxuICAvKipcbiAgICogV2hlbiB0aGUgY29tbWFuZCBpcyBjb21wbGV0ZSwgc28gaXMgdGhlIENsaUlvSG9zdC4gRW5kcyB0aGUgc3BhbiBvZiB0aGUgZW50aXJlIENsaUlvSG9zdFxuICAgKiBhbmQgbm90aWZpZXMgd2l0aCBhbiBvcHRpb25hbCBlcnJvciBtZXNzYWdlIGluIHRoZSBkYXRhLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGVuZChlcnJvcj86IEVycm9yRGV0YWlscykge1xuICAgIGF3YWl0IHRoaXMuX2NvbW1hbmRTcGFuPy5lbmQoeyBlcnJvciB9KTtcbiAgICAvLyBJZGVhbGx5IHNwYW4uZW5kKCkgc2hvdWxkIG5vLW9wIGlmIGNhbGxlZCB0d2ljZSwgYnV0IHRoYXQgaXMgbm90IHRoZSBjYXNlIHJpZ2h0IG5vd1xuICAgIHRoaXMuX2NvbW1hbmRTcGFuID0gdW5kZWZpbmVkO1xuICAgIGF3YWl0IHRoaXMuY2xpZW50LmZsdXNoKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZW1pdChldmVudDogVGVsZW1ldHJ5RXZlbnQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmNvdW50ICs9IDE7XG5cbiAgICBjb25zdCBjb3VudGVycyA9IHtcbiAgICAgIC4uLnRoaXMuX25leHRFdmVudENvdW50ZXJzLFxuICAgICAgLi4uZXZlbnQuY291bnRlcnMsXG4gICAgfTtcbiAgICB0aGlzLl9uZXh0RXZlbnRDb3VudGVycyA9IHVuZGVmaW5lZDtcblxuICAgIGlmIChldmVudC5ldmVudFR5cGUgPT0gJ0RFUExPWScpIHtcbiAgICAgIGF3YWl0IHRoaXMudHJhY2tEZXBsb3lTdGF0aXN0aWNzKGV2ZW50LmVycm9yID09PSB1bmRlZmluZWQsIGNvdW50ZXJzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jbGllbnQuZW1pdCh7XG4gICAgICBldmVudDoge1xuICAgICAgICBjb21tYW5kOiB0aGlzLnNlc3Npb25JbmZvLmV2ZW50LmNvbW1hbmQsXG4gICAgICAgIHN0YXRlOiBnZXRTdGF0ZShldmVudC5lcnJvciksXG4gICAgICAgIGV2ZW50VHlwZTogZXZlbnQuZXZlbnRUeXBlLFxuICAgICAgfSxcbiAgICAgIGlkZW50aWZpZXJzOiB7XG4gICAgICAgIC4uLnRoaXMuc2Vzc2lvbkluZm8uaWRlbnRpZmllcnMsXG4gICAgICAgIGV2ZW50SWQ6IGAke3RoaXMuc2Vzc2lvbkluZm8uaWRlbnRpZmllcnMuc2Vzc2lvbklkfToke3RoaXMuY291bnR9YCxcbiAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICB9LFxuICAgICAgZW52aXJvbm1lbnQ6IHRoaXMuc2Vzc2lvbkluZm8uZW52aXJvbm1lbnQsXG4gICAgICBwcm9qZWN0OiB0aGlzLnNlc3Npb25JbmZvLnByb2plY3QsXG4gICAgICBkdXJhdGlvbjoge1xuICAgICAgICB0b3RhbDogZXZlbnQuZHVyYXRpb24sXG4gICAgICB9LFxuICAgICAgLi4uKGV2ZW50LmVycm9yID8ge1xuICAgICAgICBlcnJvcjoge1xuICAgICAgICAgIG5hbWU6IGV2ZW50LmVycm9yLm5hbWUsXG4gICAgICAgIH0sXG4gICAgICB9IDoge30pLFxuICAgICAgLi4uKE9iamVjdC5rZXlzKGNvdW50ZXJzKS5sZW5ndGggPiAwID8geyBjb3VudGVycyB9IDoge30pLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgYSBERVBMT1kgZXZlbnQsIHRyYWNrIHNvbWUgYWRkaXRpb25hbCBzdGF0aXN0aWNzIGFib3V0IGl0XG4gICAqXG4gICAqIFdlIHVzZSB0aGlzIHRvIG1lYXN1cmUgdGhpbmdzIGFib3V0IGRlcGxveW1lbnQgZmFpbHVyZXMsIHN1Y2ggYXMgdGhlIG51bWJlciBvZlxuICAgKiBmYWlsZWQgREVQTE9ZIGV2ZW50cyBpbiBhIHNlcXVlbmNlLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyB0cmFja0RlcGxveVN0YXRpc3RpY3MoaXNTdWNjZXNzZnVsOiBib29sZWFuLCBjb3VudGVyczogUmVjb3JkPHN0cmluZywgbnVtYmVyPikge1xuICAgIGF3YWl0IHdpdGhUZWxlbWV0cnlTdGF0ZSgoc3RhdGUpID0+IHtcbiAgICAgIGNvbnN0IHJlY2VudEZhaWx1cmVzID0gc3RhdGUuc2VxdWVudGlhbERlcGxveW1lbnRGYWlsdXJlcyA/PyAwO1xuXG4gICAgICBpZiAoaXNTdWNjZXNzZnVsKSB7XG4gICAgICAgIHN0YXRlLnNlcXVlbnRpYWxEZXBsb3ltZW50RmFpbHVyZXMgPSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RhdGUuc2VxdWVudGlhbERlcGxveW1lbnRGYWlsdXJlcyA9IHJlY2VudEZhaWx1cmVzICsgMTtcbiAgICAgIH1cblxuICAgICAgY291bnRlcnMuc2VxdWVudGlhbERlcGxveW1lbnRGYWlsdXJlcyA9IHN0YXRlLnNlcXVlbnRpYWxEZXBsb3ltZW50RmFpbHVyZXM7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldCBzZXNzaW9uSW5mbygpOiBTZXNzaW9uU2NoZW1hIHtcbiAgICBpZiAoIXRoaXMuX3Nlc3Npb25JbmZvKSB7XG4gICAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKCdTZXNzaW9uTm90SW5pdGlhbGl6ZWQnLCAnU2Vzc2lvbiBJbmZvIG5vdCBpbml0aWFsaXplZC4gQ2FsbCBiZWdpbigpIGZpcnN0LicpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fc2Vzc2lvbkluZm87XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0U3RhdGUoZXJyb3I/OiBFcnJvckRldGFpbHMpOiBTdGF0ZSB7XG4gIGlmIChlcnJvcikge1xuICAgIHJldHVybiBpc0Fib3J0ZWRFcnJvcihlcnJvcikgPyAnQUJPUlRFRCcgOiAnRkFJTEVEJztcbiAgfVxuICByZXR1cm4gJ1NVQ0NFRURFRCc7XG59XG5cbmZ1bmN0aW9uIGlzQWJvcnRlZEVycm9yKGVycm9yPzogRXJyb3JEZXRhaWxzKSB7XG4gIGlmIChlcnJvcj8ubmFtZSA9PT0gJ1Rvb2xraXRFcnJvcicgJiYgZXJyb3I/Lm1lc3NhZ2U/LmluY2x1ZGVzKEFCT1JURURfRVJST1JfTUVTU0FHRSkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIG11dGFibGU8QSBleHRlbmRzIG9iamVjdD4oeDogQSk6IHsgLXJlYWRvbmx5IFtrIGluIGtleW9mIEFdOiBBW2tdIH0ge1xuICByZXR1cm4geDtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgdGhhdCB0aGUgQ0RLX0NMSV9VU0VSQUdFTlQgZW52IHZhciB2YWx1ZSBtYXRjaGVzXG4gKiB0aGUgZXhwZWN0ZWQgZm9ybWF0OiBgPG5hbWU+Lzx2ZXJzaW9uPi88bW9kZT5gIHdoZXJlIG5hbWUgaXMgb25lIG9mXG4gKiBWQUxJRF9VU0VSX0FHRU5UUyBhbmQgbW9kZSBpcyBlaXRoZXIgYHNhbmRib3hgIG9yIGBwcm9kdWN0aW9uYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRXcmFwcGVyVXNlckFnZW50KHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpOiB2YWx1ZSBpcyBzdHJpbmcge1xuICBpZiAoIXZhbHVlKSByZXR1cm4gZmFsc2U7XG4gIGNvbnN0IHBhcnRzID0gdmFsdWUuc3BsaXQoJy8nKTtcbiAgaWYgKHBhcnRzLmxlbmd0aCAhPT0gMykgcmV0dXJuIGZhbHNlO1xuICBjb25zdCBbbmFtZSwgX3ZlcnNpb24sIG1vZGVdID0gcGFydHM7XG4gIGlmICghVkFMSURfVVNFUl9BR0VOVFMuaW5jbHVkZXMobmFtZSkpIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuIG1vZGUgPT09ICdzYW5kYm94JyB8fCBtb2RlID09PSAncHJvZHVjdGlvbic7XG59XG4iXX0=
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Telemetry state across CLI invocations
3
+ */
4
+ export interface TelemetryState {
5
+ /**
6
+ * How many deployment failures we've seen since the last success.
7
+ */
8
+ sequentialDeploymentFailures?: number;
9
+ }
10
+ /**
11
+ * Run a function that can modify the given telemetry state.
12
+ */
13
+ export declare function withTelemetryState<A>(block: (x: TelemetryState) => A): Promise<A>;
14
+ /**
15
+ * Load telemetry state
16
+ */
17
+ export declare function loadTelemetryState(): Promise<TelemetryState>;
18
+ export declare function writeTelemetryState(state: TelemetryState): Promise<void>;
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.withTelemetryState = withTelemetryState;
4
+ exports.loadTelemetryState = loadTelemetryState;
5
+ exports.writeTelemetryState = writeTelemetryState;
6
+ const fs = require("fs/promises");
7
+ const path = require("path");
8
+ const installation_id_1 = require("./installation-id");
9
+ const util_1 = require("../../util");
10
+ /**
11
+ * Run a function that can modify the given telemetry state.
12
+ */
13
+ async function withTelemetryState(block) {
14
+ const state = await loadTelemetryState();
15
+ const oldState = JSON.stringify(state);
16
+ const ret = block(state);
17
+ // Only write a file if the contents changed.
18
+ if (JSON.stringify(ret) !== oldState) {
19
+ await writeTelemetryState(state);
20
+ }
21
+ return ret;
22
+ }
23
+ /**
24
+ * Load telemetry state
25
+ */
26
+ async function loadTelemetryState() {
27
+ try {
28
+ return JSON.parse(await fs.readFile(TELEMETRY_STATE_PATH, 'utf-8'));
29
+ }
30
+ catch (e) {
31
+ if (e.code === 'ENOENT') {
32
+ return {};
33
+ }
34
+ throw e;
35
+ }
36
+ }
37
+ async function writeTelemetryState(state) {
38
+ await (0, installation_id_1.ensureCacheDir)();
39
+ await fs.writeFile(TELEMETRY_STATE_PATH, JSON.stringify(state, undefined, 2), 'utf-8');
40
+ }
41
+ const TELEMETRY_STATE_PATH = path.join((0, util_1.cdkCacheDir)(), 'telemetry-state.json');
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVsZW1ldHJ5LXN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidGVsZW1ldHJ5LXN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBa0JBLGdEQVlDO0FBS0QsZ0RBU0M7QUFFRCxrREFJQztBQWxERCxrQ0FBa0M7QUFDbEMsNkJBQTZCO0FBQzdCLHVEQUFtRDtBQUNuRCxxQ0FBeUM7QUFZekM7O0dBRUc7QUFDSSxLQUFLLFVBQVUsa0JBQWtCLENBQUksS0FBK0I7SUFDekUsTUFBTSxLQUFLLEdBQUcsTUFBTSxrQkFBa0IsRUFBRSxDQUFDO0lBQ3pDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFdkMsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRXpCLDZDQUE2QztJQUM3QyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDckMsTUFBTSxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBRUQ7O0dBRUc7QUFDSSxLQUFLLFVBQVUsa0JBQWtCO0lBQ3RDLElBQUksQ0FBQztRQUNILE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsb0JBQW9CLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBQUMsT0FBTyxDQUFNLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDeEIsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBQ0QsTUFBTSxDQUFDLENBQUM7SUFDVixDQUFDO0FBQ0gsQ0FBQztBQUVNLEtBQUssVUFBVSxtQkFBbUIsQ0FBQyxLQUFxQjtJQUM3RCxNQUFNLElBQUEsZ0NBQWMsR0FBRSxDQUFDO0lBRXZCLE1BQU0sRUFBRSxDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDekYsQ0FBQztBQUVELE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFBLGtCQUFXLEdBQUUsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMvcHJvbWlzZXMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IGVuc3VyZUNhY2hlRGlyIH0gZnJvbSAnLi9pbnN0YWxsYXRpb24taWQnO1xuaW1wb3J0IHsgY2RrQ2FjaGVEaXIgfSBmcm9tICcuLi8uLi91dGlsJztcblxuLyoqXG4gKiBUZWxlbWV0cnkgc3RhdGUgYWNyb3NzIENMSSBpbnZvY2F0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFRlbGVtZXRyeVN0YXRlIHtcbiAgLyoqXG4gICAqIEhvdyBtYW55IGRlcGxveW1lbnQgZmFpbHVyZXMgd2UndmUgc2VlbiBzaW5jZSB0aGUgbGFzdCBzdWNjZXNzLlxuICAgKi9cbiAgc2VxdWVudGlhbERlcGxveW1lbnRGYWlsdXJlcz86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBSdW4gYSBmdW5jdGlvbiB0aGF0IGNhbiBtb2RpZnkgdGhlIGdpdmVuIHRlbGVtZXRyeSBzdGF0ZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdpdGhUZWxlbWV0cnlTdGF0ZTxBPihibG9jazogKHg6IFRlbGVtZXRyeVN0YXRlKSA9PiBBKTogUHJvbWlzZTxBPiB7XG4gIGNvbnN0IHN0YXRlID0gYXdhaXQgbG9hZFRlbGVtZXRyeVN0YXRlKCk7XG4gIGNvbnN0IG9sZFN0YXRlID0gSlNPTi5zdHJpbmdpZnkoc3RhdGUpO1xuXG4gIGNvbnN0IHJldCA9IGJsb2NrKHN0YXRlKTtcblxuICAvLyBPbmx5IHdyaXRlIGEgZmlsZSBpZiB0aGUgY29udGVudHMgY2hhbmdlZC5cbiAgaWYgKEpTT04uc3RyaW5naWZ5KHJldCkgIT09IG9sZFN0YXRlKSB7XG4gICAgYXdhaXQgd3JpdGVUZWxlbWV0cnlTdGF0ZShzdGF0ZSk7XG4gIH1cblxuICByZXR1cm4gcmV0O1xufVxuXG4vKipcbiAqIExvYWQgdGVsZW1ldHJ5IHN0YXRlXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkVGVsZW1ldHJ5U3RhdGUoKTogUHJvbWlzZTxUZWxlbWV0cnlTdGF0ZT4ge1xuICB0cnkge1xuICAgIHJldHVybiBKU09OLnBhcnNlKGF3YWl0IGZzLnJlYWRGaWxlKFRFTEVNRVRSWV9TVEFURV9QQVRILCAndXRmLTgnKSk7XG4gIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgIGlmIChlLmNvZGUgPT09ICdFTk9FTlQnKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIHRocm93IGU7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdyaXRlVGVsZW1ldHJ5U3RhdGUoc3RhdGU6IFRlbGVtZXRyeVN0YXRlKSB7XG4gIGF3YWl0IGVuc3VyZUNhY2hlRGlyKCk7XG5cbiAgYXdhaXQgZnMud3JpdGVGaWxlKFRFTEVNRVRSWV9TVEFURV9QQVRILCBKU09OLnN0cmluZ2lmeShzdGF0ZSwgdW5kZWZpbmVkLCAyKSwgJ3V0Zi04Jyk7XG59XG5cbmNvbnN0IFRFTEVNRVRSWV9TVEFURV9QQVRIID0gcGF0aC5qb2luKGNka0NhY2hlRGlyKCksICd0ZWxlbWV0cnktc3RhdGUuanNvbicpO1xuIl19
@@ -34,7 +34,8 @@ export declare enum Command {
34
34
  REFACTOR = "refactor",
35
35
  DRIFT = "drift",
36
36
  CLI_TELEMETRY = "cli-telemetry",
37
- DIAGNOSE = "diagnose"
37
+ DIAGNOSE = "diagnose",
38
+ VALIDATE = "validate"
38
39
  }
39
40
  export type Arguments = {
40
41
  readonly _: [Command, ...string[]];