@aws-cdk-testing/cli-integ 3.5.0 → 3.6.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 (307) hide show
  1. package/lib/aws.js +6 -9
  2. package/lib/cli/query-github.js +2 -3
  3. package/lib/cli/run-suite.js +2 -3
  4. package/lib/cli/stage-distribution.js +4 -4
  5. package/lib/eventually.js +3 -3
  6. package/lib/files.js +2 -3
  7. package/lib/github.js +5 -6
  8. package/lib/integ-test.js +58 -3
  9. package/lib/package-sources/release-source.d.ts +1 -1
  10. package/lib/package-sources/release-source.js +2 -3
  11. package/lib/package-sources/repo-source.d.ts +1 -1
  12. package/lib/package-sources/repo-source.js +1 -1
  13. package/lib/package-sources/repo-tools/npm.js +4 -5
  14. package/lib/package-sources/subprocess.d.ts +1 -1
  15. package/lib/package-sources/subprocess.js +1 -1
  16. package/lib/process.js +5 -6
  17. package/lib/proxy.d.ts +1 -1
  18. package/lib/proxy.js +2 -2
  19. package/lib/resource-pool.js +5 -3
  20. package/lib/shell.d.ts +3 -3
  21. package/lib/shell.js +8 -12
  22. package/lib/staging/codeartifact.js +8 -11
  23. package/lib/staging/maven.d.ts +2 -2
  24. package/lib/staging/maven.js +3 -5
  25. package/lib/staging/npm.d.ts +2 -2
  26. package/lib/staging/npm.js +1 -1
  27. package/lib/staging/nuget.d.ts +2 -2
  28. package/lib/staging/nuget.js +1 -1
  29. package/lib/staging/parallel-shell.js +2 -2
  30. package/lib/staging/pypi.d.ts +2 -2
  31. package/lib/staging/pypi.js +1 -1
  32. package/lib/with-aws.d.ts +2 -2
  33. package/lib/with-aws.js +5 -4
  34. package/lib/with-cdk-app.d.ts +7 -5
  35. package/lib/with-cdk-app.js +28 -33
  36. package/lib/with-cli-lib.d.ts +4 -3
  37. package/lib/with-cli-lib.js +1 -1
  38. package/lib/with-packages.d.ts +1 -1
  39. package/lib/with-packages.js +1 -1
  40. package/lib/with-sam.d.ts +3 -3
  41. package/lib/with-sam.js +4 -7
  42. package/lib/with-temporary-directory.d.ts +1 -1
  43. package/lib/with-temporary-directory.js +1 -1
  44. package/lib/xpmutex.js +5 -3
  45. package/npm-shrinkwrap.json +8722 -0
  46. package/package.json +11 -7
  47. package/resources/cdk-apps/refactoring/cdk.json +7 -0
  48. package/resources/cdk-apps/refactoring/refactoring.js +18 -0
  49. package/test-reports/junit.xml +15 -0
  50. package/tests/cli-integ-tests/cdk-assets/cdk-assets-uses-profile.integtest.js +11 -11
  51. package/tests/cli-integ-tests/cdk-assets/smoketest.integtest.js +9 -9
  52. package/tests/cli-integ-tests/cdk-bootstrap-add-tags.integtest.js +2 -3
  53. package/tests/cli-integ-tests/cdk-bootstrap-can-add-tags-then-update-tags-during-re-bootstrap.integtest.js +2 -3
  54. package/tests/cli-integ-tests/cdk-bootstrap-can-bootstrap-without-execution.integtest.js +2 -3
  55. package/tests/cli-integ-tests/cdk-bootstrap-can-create-a-legacy-bootstrap-stack-with---public-access-block-configuration-false.integtest.js +2 -3
  56. package/tests/cli-integ-tests/cdk-bootstrap-can-create-multiple-legacy-bootstrap-stacks.integtest.js +2 -3
  57. package/tests/cli-integ-tests/cdk-bootstrap-can-remove-custompermissionsboundary.integtest.js +4 -6
  58. package/tests/cli-integ-tests/cdk-bootstrap-can-remove-trusted-account.integtest.js +2 -3
  59. package/tests/cli-integ-tests/cdk-bootstrap-create-ecr-with-tag-immutability-to-set-on.integtest.js +4 -5
  60. package/tests/cli-integ-tests/cdk-bootstrap-switch-on-termination-protection.integtest.js +2 -3
  61. package/tests/cli-integ-tests/cdk-ci-true-output-to-stdout.integtest.js +1 -1
  62. package/tests/cli-integ-tests/cdk-deploy---method-direct.integtest.js +2 -3
  63. package/tests/cli-integ-tests/cdk-deploy-and-test-stack-with-lambda-asset.integtest.js +3 -4
  64. package/tests/cli-integ-tests/cdk-deploy-deletes-all-notification-arns-when-empty-array-is-passed.integtest.js +3 -4
  65. package/tests/cli-integ-tests/cdk-deploy-preserves-existing-notification-arns-when-not-specified.integtest.js +2 -3
  66. package/tests/cli-integ-tests/cdk-deploy-with-import-existing-resources-true.integtest.js +2 -3
  67. package/tests/cli-integ-tests/cdk-deploy-with-notification-arn-as-flag.integtest.js +2 -3
  68. package/tests/cli-integ-tests/cdk-deploy-with-notification-arn-as-prop-and-flag.integtest.js +2 -3
  69. package/tests/cli-integ-tests/cdk-deploy-with-notification-arn-as-prop.integtest.js +2 -3
  70. package/tests/cli-integ-tests/cdk-deploy-with-parameters-multi.integtest.js +3 -4
  71. package/tests/cli-integ-tests/cdk-deploy-with-parameters.integtest.js +2 -3
  72. package/tests/cli-integ-tests/cdk-deploy-without-execute-a-named-change-set.integtest.js +2 -3
  73. package/tests/cli-integ-tests/cdk-deploy-without-import-existing-resources.integtest.js +2 -3
  74. package/tests/cli-integ-tests/cdk-deploy.integtest.js +2 -3
  75. package/tests/cli-integ-tests/cdk-destroy-interactive.integtest.js +6 -7
  76. package/tests/cli-integ-tests/cdk-fast-deploy.integtest.js +4 -5
  77. package/tests/cli-integ-tests/cdk-gc-garbage-collection-untags-in-use-s3-objects.integtest.js +2 -2
  78. package/tests/cli-integ-tests/cdk-hotswap-deployment-for-ecs-service-waits-for-deployment-to-complete.integtest.js +6 -5
  79. package/tests/cli-integ-tests/cdk-hotswap-deployment-supports-appsync-apis-with-many-functions.integtest.js +2 -3
  80. package/tests/cli-integ-tests/cdk-hotswap-deployment-supports-ecs-service.integtest.js +3 -4
  81. package/tests/cli-integ-tests/cdk-hotswap-deployment-supports-fn::importvalue-intrinsic.integtest.js +3 -4
  82. package/tests/cli-integ-tests/cdk-hotswap-deployment-supports-lambda-functions-description-and-environment-variables.integtest.js +3 -4
  83. package/tests/cli-integ-tests/cdk-hotswap-ecs-deployment-respects-properties-override.integtest.js +5 -6
  84. package/tests/cli-integ-tests/cdk-import-interactive.integtest.js +5 -6
  85. package/tests/cli-integ-tests/cdk-lib-cli-lib-deploy.integtest.js +2 -3
  86. package/tests/cli-integ-tests/cdk-lib-security-related-changes-without-a-cli-are-expected-to-fail-when-approval-is-required.integtest.js +1 -2
  87. package/tests/cli-integ-tests/cdk-migrate/cdk-migrate--from-stack-creates-deployable-app-csharp.integtest.js +1 -1
  88. package/tests/cli-integ-tests/cdk-migrate/cdk-migrate--from-stack-creates-deployable-app-java.integtest.js +1 -1
  89. package/tests/cli-integ-tests/cdk-migrate/cdk-migrate--from-stack-creates-deployable-app-python.integtest.js +1 -1
  90. package/tests/cli-integ-tests/cdk-migrate/cdk-migrate--from-stack-creates-deployable-app-typescript.integtest.js +1 -1
  91. package/tests/cli-integ-tests/cdk-migrate/cdk-migrate-deploys-successfully-csharp.integtest.js +1 -1
  92. package/tests/cli-integ-tests/cdk-migrate/cdk-migrate-deploys-successfully-java.integtest.js +1 -1
  93. package/tests/cli-integ-tests/cdk-migrate/cdk-migrate-deploys-successfully-python.integtest.js +1 -1
  94. package/tests/cli-integ-tests/cdk-migrate/cdk-migrate-deploys-successfully-typescript.integtest.js +1 -1
  95. package/tests/cli-integ-tests/cdk-migrate/cdk-migrate-generates-migrate.json.integtest.js +1 -1
  96. package/tests/cli-integ-tests/cdk-migrate/testcase.d.ts +1 -1
  97. package/tests/cli-integ-tests/cdk-migrate/testcase.js +4 -6
  98. package/tests/cli-integ-tests/cdk-nested-stack-with-parameters.integtest.js +2 -3
  99. package/tests/cli-integ-tests/cdk-refactor-dry-run.integtest.d.ts +1 -0
  100. package/tests/cli-integ-tests/cdk-refactor-dry-run.integtest.js +41 -0
  101. package/tests/cli-integ-tests/cdk-requests-go-through-a-proxy-when-configured.integtest.js +2 -3
  102. package/tests/cli-integ-tests/cdk-stack-in-update_rollback_complete-state-can-be-updated.integtest.js +5 -6
  103. package/tests/cli-integ-tests/cdk-test-migrate-deployment-for-app-with-localfile-source-in-migrate.json.integtest.js +4 -4
  104. package/tests/cli-integ-tests/cdk-update-to-stack-in-rollback_complete-state-will-delete-stack-and-create-a-new-one.integtest.js +5 -6
  105. package/tests/cli-integ-tests/proxy.integtest.js +2 -3
  106. package/tests/init-go/init-go.integtest.js +2 -3
  107. package/tests/init-typescript-app/init-typescript-app.integtest.js +1 -1
  108. package/tests/tool-integrations/amplify.integtest.js +4 -4
  109. package/tests/tool-integrations/with-tool-context.d.ts +5 -5
  110. package/tests/tool-integrations/with-tool-context.js +1 -1
  111. package/.eslintrc.js +0 -9
  112. package/lib/aws.ts +0 -303
  113. package/lib/cli/query-github.ts +0 -56
  114. package/lib/cli/run-suite.ts +0 -153
  115. package/lib/cli/stage-distribution.ts +0 -262
  116. package/lib/cli/test-root.ts +0 -3
  117. package/lib/corking.ts +0 -33
  118. package/lib/eventually.ts +0 -42
  119. package/lib/files.ts +0 -80
  120. package/lib/github.ts +0 -43
  121. package/lib/index.ts +0 -13
  122. package/lib/integ-test.ts +0 -110
  123. package/lib/lists.ts +0 -9
  124. package/lib/memoize.ts +0 -14
  125. package/lib/npm.ts +0 -41
  126. package/lib/package-sources/release-source.ts +0 -82
  127. package/lib/package-sources/repo-source.ts +0 -112
  128. package/lib/package-sources/repo-tools/npm.ts +0 -48
  129. package/lib/package-sources/source.ts +0 -35
  130. package/lib/package-sources/subprocess.ts +0 -15
  131. package/lib/process.ts +0 -154
  132. package/lib/proxy.ts +0 -64
  133. package/lib/resource-pool.ts +0 -140
  134. package/lib/resources.ts +0 -4
  135. package/lib/shell.ts +0 -331
  136. package/lib/staging/codeartifact.ts +0 -387
  137. package/lib/staging/maven.ts +0 -95
  138. package/lib/staging/npm.ts +0 -62
  139. package/lib/staging/nuget.ts +0 -75
  140. package/lib/staging/parallel-shell.ts +0 -51
  141. package/lib/staging/pypi.ts +0 -50
  142. package/lib/staging/usage-dir.ts +0 -99
  143. package/lib/with-aws.ts +0 -111
  144. package/lib/with-cdk-app.ts +0 -847
  145. package/lib/with-cli-lib.ts +0 -150
  146. package/lib/with-packages.ts +0 -15
  147. package/lib/with-sam.ts +0 -295
  148. package/lib/with-temporary-directory.ts +0 -35
  149. package/lib/with-timeout.ts +0 -33
  150. package/lib/xpmutex.ts +0 -218
  151. package/resources/cli-regression-patches/v2.130.0/node_modules/@aws-cdk-testing/cli-integ/resources/cdk-apps/sam_cdk_integ_app/lib/nested-stack.js +0 -19
  152. package/resources/cli-regression-patches/v2.130.0/node_modules/@aws-cdk-testing/cli-integ/resources/cdk-apps/sam_cdk_integ_app/lib/test-stack.js +0 -134
  153. package/tests/cli-integ-tests/cdk---exclusively-selects-only-selected-stack.integtest.ts +0 -29
  154. package/tests/cli-integ-tests/cdk-assets/cdk-assets-uses-profile.integtest.ts +0 -92
  155. package/tests/cli-integ-tests/cdk-assets/smoketest.integtest.ts +0 -82
  156. package/tests/cli-integ-tests/cdk-automatic-ordering-with-concurrency.integtest.ts +0 -15
  157. package/tests/cli-integ-tests/cdk-automatic-ordering.integtest.ts +0 -15
  158. package/tests/cli-integ-tests/cdk-automatic-rollback-if-paused-and---no-rollback-is-removed-from-flags.integtest.ts +0 -40
  159. package/tests/cli-integ-tests/cdk-automatic-rollback-if-paused-and-change-contains-a-replacement.integtest.ts +0 -40
  160. package/tests/cli-integ-tests/cdk-automatic-rollback-if-replacement-and---no-rollback-is-removed-from-flags.integtest.ts +0 -29
  161. package/tests/cli-integ-tests/cdk-bootstrap-a-customized-template-vendor-will-not-overwrite-the-default-template.integtest.ts +0 -42
  162. package/tests/cli-integ-tests/cdk-bootstrap-add-tags.integtest.ts +0 -26
  163. package/tests/cli-integ-tests/cdk-bootstrap-can-add-tags-then-update-tags-during-re-bootstrap.integtest.ts +0 -28
  164. package/tests/cli-integ-tests/cdk-bootstrap-can-and-deploy-if-omitting-execution-policies.integtest.ts +0 -21
  165. package/tests/cli-integ-tests/cdk-bootstrap-can-bootstrap-without-execution.integtest.ts +0 -22
  166. package/tests/cli-integ-tests/cdk-bootstrap-can-create-a-legacy-bootstrap-stack-with---public-access-block-configuration-false.integtest.ts +0 -21
  167. package/tests/cli-integ-tests/cdk-bootstrap-can-create-multiple-legacy-bootstrap-stacks.integtest.ts +0 -27
  168. package/tests/cli-integ-tests/cdk-bootstrap-can-deploy-modern-synthesized-stack-even-if-bootstrap-stack-name-is-unknown.integtest.ts +0 -24
  169. package/tests/cli-integ-tests/cdk-bootstrap-can-deploy-with-session-tags-on-the-deploy.integtest.ts +0 -25
  170. package/tests/cli-integ-tests/cdk-bootstrap-can-deploy-without-execution-role-and-with-session-tags-on-deploy-role.integtest.ts +0 -22
  171. package/tests/cli-integ-tests/cdk-bootstrap-can-dump-the-template.integtest.ts +0 -32
  172. package/tests/cli-integ-tests/cdk-bootstrap-can-remove-custompermissionsboundary.integtest.ts +0 -77
  173. package/tests/cli-integ-tests/cdk-bootstrap-can-remove-trusted-account.integtest.ts +0 -30
  174. package/tests/cli-integ-tests/cdk-bootstrap-can-use-the-custom-permissions-boundary-(with-slashes)-to-bootstrap.integtest.ts +0 -15
  175. package/tests/cli-integ-tests/cdk-bootstrap-can-use-the-custom-permissions-boundary-to-bootstrap.integtest.ts +0 -15
  176. package/tests/cli-integ-tests/cdk-bootstrap-can-use-the-default-permissions-boundary-to-bootstrap.integtest.ts +0 -15
  177. package/tests/cli-integ-tests/cdk-bootstrap-create-ecr-with-tag-immutability-to-set-on.integtest.ts +0 -34
  178. package/tests/cli-integ-tests/cdk-bootstrap-deploy-new-style-synthesis-to-new-style-bootstrap-(with-docker-image).integtest.ts +0 -22
  179. package/tests/cli-integ-tests/cdk-bootstrap-deploy-new-style-synthesis-to-new-style-bootstrap.integtest.ts +0 -22
  180. package/tests/cli-integ-tests/cdk-bootstrap-deploy-old-style-synthesis-to-new-style-bootstrap.integtest.ts +0 -21
  181. package/tests/cli-integ-tests/cdk-bootstrap-switch-on-termination-protection.integtest.ts +0 -24
  182. package/tests/cli-integ-tests/cdk-bootstrap-upgrade-legacy-bootstrap-stack-to-new-bootstrap-stack-while-in-use.integtest.ts +0 -47
  183. package/tests/cli-integ-tests/cdk-can-still-load-old-assemblies.integtest.ts +0 -57
  184. package/tests/cli-integ-tests/cdk-cdk-diff---fail-on-multiple-stacks-exits-with-error-if-any-of-the-stacks-contains-a-diff.integtest.ts +0 -22
  185. package/tests/cli-integ-tests/cdk-cdk-diff---fail-with-multiple-stack-exits-with-if-any-of-the-stacks-contains-a-diff.integtest.ts +0 -22
  186. package/tests/cli-integ-tests/cdk-cdk-diff---quiet-does-not-print-there-were-no-differences-message-for-stacks-which-have-no-differences.integtest.ts +0 -19
  187. package/tests/cli-integ-tests/cdk-cdk-diff---security-only---fail-exits-when-security-changes-are-present.integtest.ts +0 -14
  188. package/tests/cli-integ-tests/cdk-cdk-diff---security-only---fail-exits-when-security-diff-for-sso-access-control-config.integtest.ts +0 -13
  189. package/tests/cli-integ-tests/cdk-cdk-diff---security-only---fail-exits-when-security-diff-for-sso-assignment.integtest.ts +0 -13
  190. package/tests/cli-integ-tests/cdk-cdk-diff---security-only---fail-exits-when-security-diff-for-sso-perm-set-with-managed-policy.integtest.ts +0 -13
  191. package/tests/cli-integ-tests/cdk-cdk-diff---security-only---fail-exits-when-security-diff-for-sso-perm-set-without-managed-policy.integtest.ts +0 -13
  192. package/tests/cli-integ-tests/cdk-cdk-diff---security-only-successfully-outputs-sso-access-control-information.integtest.ts +0 -35
  193. package/tests/cli-integ-tests/cdk-cdk-diff---security-only-successfully-outputs-sso-assignment-information.integtest.ts +0 -37
  194. package/tests/cli-integ-tests/cdk-cdk-diff---security-only-successfully-outputs-sso-permission-set-with-managed-policy-information.integtest.ts +0 -35
  195. package/tests/cli-integ-tests/cdk-cdk-diff---security-only-successfully-outputs-sso-permission-set-without-managed-policy-information.integtest.ts +0 -37
  196. package/tests/cli-integ-tests/cdk-cdk-diff-doesnt-show-resource-metadata-changes.integtest.ts +0 -23
  197. package/tests/cli-integ-tests/cdk-cdk-diff-shows-resource-metadata-changes-with---no-change-set.integtest.ts +0 -23
  198. package/tests/cli-integ-tests/cdk-cdk-diff-with-large-changeset-and-custom-toolkit-stack-name-and-qualifier-does-not-fail.integtest.ts +0 -39
  199. package/tests/cli-integ-tests/cdk-cdk-diff-with-large-changeset-does-not-fail.integtest.ts +0 -28
  200. package/tests/cli-integ-tests/cdk-cdk-diff.integtest.ts +0 -18
  201. package/tests/cli-integ-tests/cdk-cdk-ls---show-dependencies---json---long.integtest.ts +0 -50
  202. package/tests/cli-integ-tests/cdk-cdk-ls---show-dependencies---json.integtest.ts +0 -95
  203. package/tests/cli-integ-tests/cdk-cdk-ls.integtest.ts +0 -36
  204. package/tests/cli-integ-tests/cdk-cdk-notices-are-displayed-correctly.integtest.ts +0 -42
  205. package/tests/cli-integ-tests/cdk-cdk-notices-with---unacknowledged.integtest.ts +0 -14
  206. package/tests/cli-integ-tests/cdk-cdk-synth-add-the-metadata-properties-expected-by-sam.integtest.ts +0 -126
  207. package/tests/cli-integ-tests/cdk-cdk-synth-bundled-functions-as-expected.integtest.ts +0 -80
  208. package/tests/cli-integ-tests/cdk-cdk-synth.integtest.ts +0 -53
  209. package/tests/cli-integ-tests/cdk-ci-output-to-stderr.integtest.ts +0 -19
  210. package/tests/cli-integ-tests/cdk-ci-true-output-to-stdout.integtest.ts +0 -28
  211. package/tests/cli-integ-tests/cdk-construct-with-builtin-lambda-function.integtest.ts +0 -14
  212. package/tests/cli-integ-tests/cdk-context-in-stage-propagates-to-top.integtest.ts +0 -20
  213. package/tests/cli-integ-tests/cdk-context-setting.integtest.ts +0 -33
  214. package/tests/cli-integ-tests/cdk-deploy---method-direct.integtest.ts +0 -23
  215. package/tests/cli-integ-tests/cdk-deploy-all-concurrently.integtest.ts +0 -17
  216. package/tests/cli-integ-tests/cdk-deploy-all.integtest.ts +0 -14
  217. package/tests/cli-integ-tests/cdk-deploy-and-test-stack-with-lambda-asset.integtest.ts +0 -31
  218. package/tests/cli-integ-tests/cdk-deploy-deletes-all-notification-arns-when-empty-array-is-passed.integtest.ts +0 -50
  219. package/tests/cli-integ-tests/cdk-deploy-no-stacks-error.integtest.ts +0 -18
  220. package/tests/cli-integ-tests/cdk-deploy-no-stacks-with---ignore-no-stacks.integtest.ts +0 -17
  221. package/tests/cli-integ-tests/cdk-deploy-preserves-existing-notification-arns-when-not-specified.integtest.ts +0 -51
  222. package/tests/cli-integ-tests/cdk-deploy-stack-with-docker-asset.integtest.ts +0 -11
  223. package/tests/cli-integ-tests/cdk-deploy-stack-with-lambda-asset-to-object-lock-enabled-asset-bucket.integtest.ts +0 -42
  224. package/tests/cli-integ-tests/cdk-deploy-stack-without-resource.integtest.ts +0 -32
  225. package/tests/cli-integ-tests/cdk-deploy-wildcard-with-outputs.integtest.ts +0 -28
  226. package/tests/cli-integ-tests/cdk-deploy-with-import-existing-resources-true.integtest.ts +0 -29
  227. package/tests/cli-integ-tests/cdk-deploy-with-method-direct-and-import-existing-resources-fails.integtest.ts +0 -17
  228. package/tests/cli-integ-tests/cdk-deploy-with-notification-arn-as-flag.integtest.ts +0 -36
  229. package/tests/cli-integ-tests/cdk-deploy-with-notification-arn-as-prop-and-flag.integtest.ts +0 -45
  230. package/tests/cli-integ-tests/cdk-deploy-with-notification-arn-as-prop.integtest.ts +0 -37
  231. package/tests/cli-integ-tests/cdk-deploy-with-parameters-multi.integtest.ts +0 -33
  232. package/tests/cli-integ-tests/cdk-deploy-with-parameters.integtest.ts +0 -26
  233. package/tests/cli-integ-tests/cdk-deploy-with-role.integtest.ts +0 -119
  234. package/tests/cli-integ-tests/cdk-deploy-with-wildcard-and-parameters.integtest.ts +0 -22
  235. package/tests/cli-integ-tests/cdk-deploy-without-execute-a-named-change-set.integtest.ts +0 -36
  236. package/tests/cli-integ-tests/cdk-deploy-without-import-existing-resources.integtest.ts +0 -28
  237. package/tests/cli-integ-tests/cdk-deploy.integtest.ts +0 -20
  238. package/tests/cli-integ-tests/cdk-destroy-interactive.integtest.ts +0 -36
  239. package/tests/cli-integ-tests/cdk-doubly-nested-stack.integtest.ts +0 -12
  240. package/tests/cli-integ-tests/cdk-enablediffnofail.integtest.ts +0 -44
  241. package/tests/cli-integ-tests/cdk-failed-deploy-does-not-hang.integtest.ts +0 -12
  242. package/tests/cli-integ-tests/cdk-fast-deploy.integtest.ts +0 -41
  243. package/tests/cli-integ-tests/cdk-gc-garbage-collection-deletes-unused-ecr-images.integtest.ts +0 -48
  244. package/tests/cli-integ-tests/cdk-gc-garbage-collection-deletes-unused-s3-objects.integtest.ts +0 -51
  245. package/tests/cli-integ-tests/cdk-gc-garbage-collection-keeps-in-use-ecr-images.integtest.ts +0 -48
  246. package/tests/cli-integ-tests/cdk-gc-garbage-collection-keeps-in-use-s3-objects.integtest.ts +0 -52
  247. package/tests/cli-integ-tests/cdk-gc-garbage-collection-tags-unused-ecr-images.integtest.ts +0 -47
  248. package/tests/cli-integ-tests/cdk-gc-garbage-collection-tags-unused-s3-objects.integtest.ts +0 -63
  249. package/tests/cli-integ-tests/cdk-gc-garbage-collection-untags-in-use-ecr-images.integtest.ts +0 -55
  250. package/tests/cli-integ-tests/cdk-gc-garbage-collection-untags-in-use-s3-objects.integtest.ts +0 -63
  251. package/tests/cli-integ-tests/cdk-generating-and-loading-assembly.integtest.ts +0 -52
  252. package/tests/cli-integ-tests/cdk-hotswap-deployment-for-ecs-service-detects-failed-deployment-and-errors.integtest.ts +0 -29
  253. package/tests/cli-integ-tests/cdk-hotswap-deployment-for-ecs-service-waits-for-deployment-to-complete.integtest.ts +0 -45
  254. package/tests/cli-integ-tests/cdk-hotswap-deployment-supports-appsync-apis-with-many-functions.integtest.ts +0 -36
  255. package/tests/cli-integ-tests/cdk-hotswap-deployment-supports-ecs-service.integtest.ts +0 -41
  256. package/tests/cli-integ-tests/cdk-hotswap-deployment-supports-fn::importvalue-intrinsic.integtest.ts +0 -53
  257. package/tests/cli-integ-tests/cdk-hotswap-deployment-supports-lambda-functions-description-and-environment-variables.integtest.ts +0 -43
  258. package/tests/cli-integ-tests/cdk-hotswap-ecs-deployment-respects-properties-override.integtest.ts +0 -59
  259. package/tests/cli-integ-tests/cdk-iam-diff.integtest.ts +0 -23
  260. package/tests/cli-integ-tests/cdk-import-interactive.integtest.ts +0 -57
  261. package/tests/cli-integ-tests/cdk-lib-cli-lib-deploy.integtest.ts +0 -32
  262. package/tests/cli-integ-tests/cdk-lib-cli-lib-list.integtest.ts +0 -12
  263. package/tests/cli-integ-tests/cdk-lib-cli-lib-synth.integtest.ts +0 -27
  264. package/tests/cli-integ-tests/cdk-lib-security-related-changes-without-a-cli-are-expected-to-fail-when-approval-is-required.integtest.ts +0 -32
  265. package/tests/cli-integ-tests/cdk-migrate/cdk-migrate--from-stack-creates-deployable-app-csharp.integtest.ts +0 -13
  266. package/tests/cli-integ-tests/cdk-migrate/cdk-migrate--from-stack-creates-deployable-app-java.integtest.ts +0 -14
  267. package/tests/cli-integ-tests/cdk-migrate/cdk-migrate--from-stack-creates-deployable-app-python.integtest.ts +0 -13
  268. package/tests/cli-integ-tests/cdk-migrate/cdk-migrate--from-stack-creates-deployable-app-typescript.integtest.ts +0 -13
  269. package/tests/cli-integ-tests/cdk-migrate/cdk-migrate-deploys-successfully-csharp.integtest.ts +0 -15
  270. package/tests/cli-integ-tests/cdk-migrate/cdk-migrate-deploys-successfully-java.integtest.ts +0 -15
  271. package/tests/cli-integ-tests/cdk-migrate/cdk-migrate-deploys-successfully-python.integtest.ts +0 -15
  272. package/tests/cli-integ-tests/cdk-migrate/cdk-migrate-deploys-successfully-typescript.integtest.ts +0 -15
  273. package/tests/cli-integ-tests/cdk-migrate/cdk-migrate-generates-migrate.json.integtest.ts +0 -20
  274. package/tests/cli-integ-tests/cdk-migrate/testcase.ts +0 -69
  275. package/tests/cli-integ-tests/cdk-nested-stack-with-parameters.integtest.ts +0 -28
  276. package/tests/cli-integ-tests/cdk-requests-go-through-a-proxy-when-configured.integtest.ts +0 -39
  277. package/tests/cli-integ-tests/cdk-sam-can-locally-test-the-synthesized-cdk-application.integtest.ts +0 -25
  278. package/tests/cli-integ-tests/cdk-security-related-changes-without-a-cli-are-expected-to-fail.integtest.ts +0 -30
  279. package/tests/cli-integ-tests/cdk-skips-notice-refresh.integtest.ts +0 -26
  280. package/tests/cli-integ-tests/cdk-ssm-parameter-provider-error.integtest.ts +0 -18
  281. package/tests/cli-integ-tests/cdk-stack-in-update_rollback_complete-state-can-be-updated.integtest.ts +0 -59
  282. package/tests/cli-integ-tests/cdk-stage-with-bundled-lambda-function.integtest.ts +0 -13
  283. package/tests/cli-integ-tests/cdk-synth---quiet-can-be-specified-in-cdk.json.integtest.ts +0 -20
  284. package/tests/cli-integ-tests/cdk-synthing-a-stage-with-errors-can-be-suppressed.integtest.ts +0 -15
  285. package/tests/cli-integ-tests/cdk-synthing-a-stage-with-errors-leads-to-failure.integtest.ts +0 -18
  286. package/tests/cli-integ-tests/cdk-templates-on-disk-contain-metadata-resource.integtest.ts +0 -25
  287. package/tests/cli-integ-tests/cdk-termination-protection.integtest.ts +0 -19
  288. package/tests/cli-integ-tests/cdk-test-cdk-rollback---force.integtest.ts +0 -48
  289. package/tests/cli-integ-tests/cdk-test-cdk-rollback.integtest.ts +0 -38
  290. package/tests/cli-integ-tests/cdk-test-migrate-deployment-for-app-with-localfile-source-in-migrate.json.integtest.ts +0 -56
  291. package/tests/cli-integ-tests/cdk-test-resource-import-with-construct-that-requires-bundling.integtest.ts +0 -74
  292. package/tests/cli-integ-tests/cdk-test-resource-import.integtest.ts +0 -64
  293. package/tests/cli-integ-tests/cdk-two-ways-of-showing-the-version.integtest.ts +0 -14
  294. package/tests/cli-integ-tests/cdk-update-to-stack-in-rollback_complete-state-will-delete-stack-and-create-a-new-one.integtest.ts +0 -47
  295. package/tests/cli-integ-tests/cdk-vpc-lookup.integtest.ts +0 -26
  296. package/tests/cli-integ-tests/proxy.integtest.ts +0 -168
  297. package/tests/init-csharp/init-csharp.integtest.ts +0 -15
  298. package/tests/init-fsharp/init-fsharp.integtest.ts +0 -15
  299. package/tests/init-go/init-go.integtest.ts +0 -28
  300. package/tests/init-java/init-java.integtest.ts +0 -14
  301. package/tests/init-javascript/init-javascript.integtest.ts +0 -58
  302. package/tests/init-python/init-python.integtest.ts +0 -20
  303. package/tests/init-typescript-app/init-typescript-app.integtest.ts +0 -67
  304. package/tests/init-typescript-lib/init-typescript-lib.integtest.ts +0 -13
  305. package/tests/tool-integrations/amplify.integtest.ts +0 -117
  306. package/tests/tool-integrations/with-tool-context.ts +0 -14
  307. package/tests/uberpackage/uberpackage.integtest.ts +0 -11
@@ -27,7 +27,7 @@ const TIMEOUT = 1800000;
27
27
  await shell.shell(['npx', 'ampx', 'sandbox', '--once'], {
28
28
  modEnv: {
29
29
  AWS_REGION: context.aws.region,
30
- ...awsCreds
30
+ ...awsCreds,
31
31
  },
32
32
  });
33
33
  try {
@@ -38,7 +38,7 @@ const TIMEOUT = 1800000;
38
38
  await shell.shell(['npx', 'ampx', 'sandbox', 'delete', '--yes'], {
39
39
  modEnv: {
40
40
  AWS_REGION: context.aws.region,
41
- ...awsCreds
41
+ ...awsCreds,
42
42
  },
43
43
  });
44
44
  }
@@ -61,7 +61,7 @@ async function mutateAmplifyDepOnCdk(context, cliVersion, libVersion) {
61
61
  const packageJson = JSON.parse(await fs_1.promises.readFile(packageJsonFile, { encoding: 'utf-8' }));
62
62
  assertIsObject(packageJson);
63
63
  packageJson.overrides = {
64
- "aws-cdk-lib": libVersion,
64
+ 'aws-cdk-lib': libVersion,
65
65
  };
66
66
  await fs_1.promises.writeFile(packageJsonFile, JSON.stringify(packageJson, undefined, 2), { encoding: 'utf-8' });
67
67
  }
@@ -98,4 +98,4 @@ function assertIsStringArray(xs) {
98
98
  throw new Error(`Expected list of strings, got ${JSON.stringify(xs)}`);
99
99
  }
100
100
  }
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1wbGlmeS5pbnRlZ3Rlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbXBsaWZ5LmludGVndGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDJCQUFvQztBQUNwQyw2QkFBNkI7QUFDN0IsMkRBQXNEO0FBQ3RELG1DQUE4RTtBQUU5RSxNQUFNLE9BQU8sR0FBRyxPQUFRLENBQUM7QUFFekIsSUFBQSxlQUFTLEVBQUMscUJBQXFCLEVBQUUsSUFBQSxtQ0FBZSxFQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtJQUNqRSxNQUFNLEtBQUssR0FBRyxpQkFBVyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUUvQyx3RUFBd0U7SUFDeEUsc0ZBQXNGO0lBQ3RGLEVBQUU7SUFFRixnRkFBZ0Y7SUFDaEYsNENBQTRDO0lBQzVDLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN6QyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSx1QkFBdUIsQ0FBQyxDQUFDLENBQUM7SUFDN0UsMkVBQTJFO0lBQzNFLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLE1BQU0scUJBQXFCLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsbUJBQW1CLEVBQUUsRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLHlCQUF5QixFQUFFLENBQUMsQ0FBQztJQUUzSCx3RUFBd0U7SUFDeEUsaUNBQWlDO0lBQ2pDLEVBQUU7SUFFRixnRkFBZ0Y7SUFDaEYsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsU0FBUyxD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Q0FBQyxDQUFDO0lBQ3pFLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcHJvbWlzZXMgYXMgZnMgfSBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgd2l0aFRvb2xDb250ZXh0IH0gZnJvbSAnLi93aXRoLXRvb2wtY29udGV4dCc7XG5pbXBvcnQgeyBpbnRlZ1Rlc3QsIFNoZWxsSGVscGVyLCBUZW1wb3JhcnlEaXJlY3RvcnlDb250ZXh0IH0gZnJvbSAnLi4vLi4vbGliJztcblxuY29uc3QgVElNRU9VVCA9IDE4MDBfMDAwO1xuXG5pbnRlZ1Rlc3QoJ2FtcGxpZnkgaW50ZWdyYXRpb24nLCB3aXRoVG9vbENvbnRleHQoYXN5bmMgKGNvbnRleHQpID0+IHtcbiAgY29uc3Qgc2hlbGwgPSBTaGVsbEhlbHBlci5mcm9tQ29udGV4dChjb250ZXh0KTtcblxuICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgLy8gIE1ha2Ugc3VyZSB0aGF0IGNyZWF0ZS1hbXBsaWZ5IGluc3RhbGxzIHRoZSByaWdodCB2ZXJzaW9ucyBvZiB0aGUgQ0xJIGFuZCBmcmFtZXdvcmtcbiAgLy9cblxuICAvLyBJbnN0YWxsIGBjcmVhdGUtYW1wbGlmeWAgd2l0aG91dCBydW5uaW5nIGl0LCB0aGVuIGhhY2sgdGhlIGpzb24gZmlsZSB3aXRoIHRoZVxuICAvLyBwYWNrYWdlIHZlcnNpb25zIGluIGl0IGJlZm9yZSB3ZSBleGVjdXRlLlxuICBhd2FpdCBzaGVsbC5zaGVsbChbJ25wbScsICdpbml0JywgJy15J10pO1xuICBhd2FpdCBzaGVsbC5zaGVsbChbJ25wbScsICdpbnN0YWxsJywgJy0tc2F2ZS1kZXYnLCAnY3JlYXRlLWFtcGxpZnlAbGF0ZXN0J10pO1xuICAvLyBUaGlzIHdpbGwgY3JlYXRlICdwYWNrYWdlLmpzb24nIGltcGxpY2F0aW5nIGEgY2VydGFpbiB2ZXJzaW9uIG9mIHRoZSBDREtcbiAgYXdhaXQgc2hlbGwuc2hlbGwoWyducG0nLCAnY29uZmlnJywgJ3NldCcsICdzYXZlLWV4YWN0JywgJ3RydWUnXSk7XG4gIGF3YWl0IG11dGF0ZUFtcGxpZnlEZXBPbkNkayhjb250ZXh0LCBjb250ZXh0LnBhY2thZ2VzLnJlcXVlc3RlZENsaVZlcnNpb24oKSwgY29udGV4dC5wYWNrYWdlcy5yZXF1ZXN0ZWRGcmFtZXdvcmtWZXJzaW9uKCkpO1xuXG4gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAvLyAgUnVuIHRoZSBgbnBtIGNyZWF0ZWAgd29ya2Zsb3dcbiAgLy9cblxuICAvLyBJIHRlc3RlZCB0byBjb25maXJtIHRoYXQgdGhpcyB3aWxsIHVzZSB0aGUgbG9jYWxseSBpbnN0YWxsZWQgYGNyZWF0ZS1hbXBsaWZ5YFxuICBhd2FpdCBzaGVsbC5zaGVsbChbJ25wbScsICdjcmVhdGUnLCAnLXknLCAnYW1wbGlmeSddKTtcbiAgYXdhaXQgc2hlbGwuc2hlbGwoWyducHgnLCAnYW1weCcsICdjb25maWd1cmUnLCAndGVsZW1ldHJ5JywgJ2Rpc2FibGUnXSk7XG5cbiAgY29uc3QgYXdzQ3JlZHMgPSBjb250ZXh0LmF3cy5pZGVudGl0eUVudigpO1xuXG4gIGF3YWl0IHNoZWxsLnNoZWxsKFsnbnB4JywgJ2FtcHgnLCAnc2FuZGJveCcsICctLW9uY2UnXSwge1xuICAgIG1vZEVudjoge1xuICAgICAgQVdTX1JFR0lPTjogY29udGV4dC5hd3MucmVnaW9uLFxuICAgICAgLi4uYXdzQ3JlZHNcbiAgICB9LFxuICB9KTtcbiAgdHJ5IHtcblxuICAgIC8vIEZ1dHVyZSBjb2RlIGdvZXMgaGVyZSwgcHV0dGluZyB0aGUgdHJ5L2ZpbmFsbHkgaGVyZSBhbHJlYWR5IHNvIGl0IGRvZXNuJ3RcbiAgICAvLyBnZXQgZm9yZ290dGVuLlxuXG4gIH0gZmluYWxseSB7XG4gICAgYXdhaXQgc2hlbGwuc2hlbGwoWyducHgnLCAnYW1weCcsICdzYW5kYm94JywgJ2RlbGV0ZScsICctLXllcyddLCB7XG4gICAgICBtb2RFbnY6IHtcbiAgICAgICAgQVdTX1JFR0lPTjogY29udGV4dC5hd3MucmVnaW9uLFxuICAgICAgICAuLi5hd3NDcmVkc1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufSksIFRJTUVPVVQpO1xuXG5hc3luYyBmdW5jdGlvbiBtdXRhdGVBbXBsaWZ5RGVwT25DZGsoY29udGV4dDogVGVtcG9yYXJ5RGlyZWN0b3J5Q29udGV4dCwgY2xpVmVyc2lvbjogc3RyaW5nLCBsaWJWZXJzaW9uOiBzdHJpbmcpIHtcbiAgLy8gZGVmYXVsdF9wYWNrYWdlcy5qc29uIGlzIHdoZXJlIGNyZWF0ZS1hbXBsaWZ5IHJlYWRzIHdoZW4gaW5zdGFsbGluZyBucG0gZGVwZW5kZW5jaWVzXG4gIGNvbnN0IGFtcGxpZnlEZXBGaWxlID0gcGF0aC5qb2luKGNvbnRleHQuaW50ZWdUZXN0RGlyLCAnbm9kZV9tb2R1bGVzJywgJ2NyZWF0ZS1hbXBsaWZ5JywgJ2xpYicsICdkZWZhdWx0X3BhY2thZ2VzLmpzb24nKTtcbiAgY29uc3QgYW1wbGlmeURlcEpzb246IHVua25vd24gPSBKU09OLnBhcnNlKGF3YWl0IGZzLnJlYWRGaWxlKGFtcGxpZnlEZXBGaWxlLCB7IGVuY29kaW5nOiAndXRmLTgnIH0pKTtcblxuICAvLyBCZSBleHRyYSBwYXJhbm9pZCBhYm91dCB0aGUgdHlwZXMgaGVyZSwgc2luY2Ugd2UgZG9uJ3QgZnVsbHkgY29udHJvbCB0aGVtXG4gIGFzc2VydElzT2JqZWN0KGFtcGxpZnlEZXBKc29uKTtcbiAgYXNzZXJ0SXNTdHJpbmdBcnJheShhbXBsaWZ5RGVwSnNvbi5kZWZhdWx0RGV2UGFja2FnZXMpO1xuXG4gIC8vIEFtcGxpZnkgaXMgcmVtb3ZpbmcgdGhlIGRlcGVuZGVuY3kgb24gYXdzLWNkaywgc2luY2UgQW1wbGlmeSBpcyBub3cgdXNpbmcgdGhlIHRvb2xraXQtbGliXG4gIC8vIFRvIHByZXBhcmUgZm9yIHRoaXMgY2hhbmdlLCB3ZSBuZWVkIGFsbG93IGJvdGggc2l0dWF0aW9uczogYXdzLWNkayBiZWluZyBsaXN0ZWQgYW5kIG5vdCBiZWluZyBsaXN0ZWRcbiAgLy8gRml4IGlzIHRvIHNpbXBseSBhbGxvdyB0aGUgcmVwbGFjZSBvcGVyYXRpb24gdG8gYWxzbyBOT1QgcmVwbGFjZSB0aGUgdmVyc2lvblxuICAvLyBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MtYW1wbGlmeS9hbXBsaWZ5LWJhY2tlbmQvcHVsbC8yNjE0XG4gIHJlcGxhY2VQYWNrYWdlVmVyc2lvbkluKCdhd3MtY2RrJywgY2xpVmVyc2lvbiwgYW1wbGlmeURlcEpzb24uZGVmYXVsdERldlBhY2thZ2VzLCBmYWxzZSk7XG4gIHJlcGxhY2VQYWNrYWdlVmVyc2lvbkluKCdhd3MtY2RrLWxpYicsIGxpYlZlcnNpb24sIGFtcGxpZnlEZXBKc29uLmRlZmF1bHREZXZQYWNrYWdlcyk7XG5cbiAgYXdhaXQgZnMud3JpdGVGaWxlKGFtcGxpZnlEZXBGaWxlLCBKU09OLnN0cmluZ2lmeShhbXBsaWZ5RGVwSnNvbiwgdW5kZWZpbmVkLCAyKSwgeyBlbmNvZGluZzogJ3V0Zi04JyB9KTtcblxuICBjb25zdCBwYWNrYWdlSnNvbkZpbGUgPSBwYXRoLmpvaW4oY29udGV4dC5pbnRlZ1Rlc3REaXIsICdwYWNrYWdlLmpzb24nKTtcbiAgY29uc3QgcGFja2FnZUpzb246IHVua25vd24gPSBKU09OLnBhcnNlKGF3YWl0IGZzLnJlYWRGaWxlKHBhY2thZ2VKc29uRmlsZSwgeyBlbmNvZGluZzogJ3V0Zi04JyB9KSk7XG5cbiAgYXNzZXJ0SXNPYmplY3QocGFja2FnZUpzb24pO1xuICBwYWNrYWdlSnNvbi5vdmVycmlkZXMgPSB7XG4gICAgXCJhd3MtY2RrLWxpYlwiOiBsaWJWZXJzaW9uLFxuICB9O1xuICBhd2FpdCBmcy53cml0ZUZpbGUocGFja2FnZUpzb25GaWxlLCBKU09OLnN0cmluZ2lmeShwYWNrYWdlSnNvbiwgdW5kZWZpbmVkLCAyKSwgeyBlbmNvZGluZzogJ3V0Zi04JyB9KVxufVxuXG4vKipcbiAqIE11dGFibHkgdXBkYXRlIHRoZSBnaXZlbiBzdHJpbmcgYXJyYXksIHJlcGxhY2luZyB0aGUgdmVyc2lvbiBvZiBwYWNrYWdlcyB3aXRoIHRoZSBnaXZlbiBuYW1lXG4gKlxuICogV2UgYXNzdW1lIHRoZSBsaXN0IG9mIHBhY2thZ2VzIGlzIGEgc3RyaW5nIGFycmF5IG9mIHRoZSBmb3JtXG4gKlxuICogYGBgXG4gKiBbXCJwYWNrYWdlQHZlcnNpb25cIiwgXCJwYWNrYWdlQHZlcnNpb25cIiwgLi4uXVxuICogYGBgXG4gKlxuICogSXQncyBhIGZhaWx1cmUgaWYgd2UgZG9uJ3QgZmluZCBhbiBlbnRyeSB0byB1cGRhdGUsIHVubGVzcyB3ZSBleHBsaWNpdGx5IHBhc3MgYW4gb3B0aW9uIHRvIHNheSB0aGF0J3Mgb2theS5cbiAqL1xuZnVuY3Rpb24gcmVwbGFjZVBhY2thZ2VWZXJzaW9uSW4ocGFja05hbWU6IHN0cmluZywgdmVyc2lvbjogc3RyaW5nLCB4czogc3RyaW5nW10sIGZhaWxJZk1pc3NpbmcgPSB0cnVlKSB7XG4gIGxldCBkaWRVcGRhdGUgPSBmYWxzZTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB4cy5sZW5ndGg7IGkrKykge1xuICAgIGlmICh4c1tpXS5zdGFydHNXaXRoKGAke3BhY2tOYW1lfUBgKSkge1xuICAgICAgeHNbaV0gPSBgJHtwYWNrTmFtZX1AJHt2ZXJzaW9ufWA7XG4gICAgICBkaWRVcGRhdGUgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGlmIChmYWlsSWZNaXNzaW5nICYmICFkaWRVcGRhdGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYERpZCBub3QgZmluZCBhIHBhY2thZ2UgdmVyc2lvbiB0byB1cGRhdGUgZm9yICR7cGFja05hbWV9IGluICR7SlNPTi5zdHJpbmdpZnkoeHMpfWApO1xuICB9XG59XG5cbmZ1bmN0aW9uIGFzc2VydElzT2JqZWN0KHhzOiB1bmtub3duKTogYXNzZXJ0cyB4cyBpcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gIGlmICh0eXBlb2YgeHMgIT09ICdvYmplY3QnIHx8IHhzID09PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBvYmplY3QsIGdvdCAke0pTT04uc3RyaW5naWZ5KHhzKX1gKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBhc3NlcnRJc1N0cmluZ0FycmF5KHhzOiB1bmtub3duKTogYXNzZXJ0cyB4cyBpcyBzdHJpbmdbXSB7XG4gIGlmICghQXJyYXkuaXNBcnJheSh4cykgfHwgeHMubGVuZ3RoID09PSAwIHx8IHR5cGVvZiB4c1swXSAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIGxpc3Qgb2Ygc3RyaW5ncywgZ290ICR7SlNPTi5zdHJpbmdpZnkoeHMpfWApO1xuICB9XG59XG4iXX0=
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1wbGlmeS5pbnRlZ3Rlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhbXBsaWZ5LmludGVndGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDJCQUFvQztBQUNwQyw2QkFBNkI7QUFDN0IsMkRBQXNEO0FBRXRELG1DQUFtRDtBQUVuRCxNQUFNLE9BQU8sR0FBRyxPQUFRLENBQUM7QUFFekIsSUFBQSxlQUFTLEVBQUMscUJBQXFCLEVBQUUsSUFBQSxtQ0FBZSxFQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtJQUNqRSxNQUFNLEtBQUssR0FBRyxpQkFBVyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUUvQyx3RUFBd0U7SUFDeEUsc0ZBQXNGO0lBQ3RGLEVBQUU7SUFFRixnRkFBZ0Y7SUFDaEYsNENBQTRDO0lBQzVDLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN6QyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSx1QkFBdUIsQ0FBQyxDQUFDLENBQUM7SUFDN0UsMkVBQTJFO0lBQzNFLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLE1BQU0scUJBQXFCLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsbUJBQW1CLEVBQUUsRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLHlCQUF5QixFQUFFLENBQUMsQ0FBQztJQUUzSCx3RUFBd0U7SUFDeEUsaUNBQWlDO0lBQ2pDLEVBQUU7SUFFRixnRkFBZ0Y7SUFDaEYsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsU0FBUyxD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Q0FBQyxDQUFDO0lBQ3pFLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcHJvbWlzZXMgYXMgZnMgfSBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgd2l0aFRvb2xDb250ZXh0IH0gZnJvbSAnLi93aXRoLXRvb2wtY29udGV4dCc7XG5pbXBvcnQgdHlwZSB7IFRlbXBvcmFyeURpcmVjdG9yeUNvbnRleHQgfSBmcm9tICcuLi8uLi9saWInO1xuaW1wb3J0IHsgaW50ZWdUZXN0LCBTaGVsbEhlbHBlciB9IGZyb20gJy4uLy4uL2xpYic7XG5cbmNvbnN0IFRJTUVPVVQgPSAxODAwXzAwMDtcblxuaW50ZWdUZXN0KCdhbXBsaWZ5IGludGVncmF0aW9uJywgd2l0aFRvb2xDb250ZXh0KGFzeW5jIChjb250ZXh0KSA9PiB7XG4gIGNvbnN0IHNoZWxsID0gU2hlbGxIZWxwZXIuZnJvbUNvbnRleHQoY29udGV4dCk7XG5cbiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIC8vICBNYWtlIHN1cmUgdGhhdCBjcmVhdGUtYW1wbGlmeSBpbnN0YWxscyB0aGUgcmlnaHQgdmVyc2lvbnMgb2YgdGhlIENMSSBhbmQgZnJhbWV3b3JrXG4gIC8vXG5cbiAgLy8gSW5zdGFsbCBgY3JlYXRlLWFtcGxpZnlgIHdpdGhvdXQgcnVubmluZyBpdCwgdGhlbiBoYWNrIHRoZSBqc29uIGZpbGUgd2l0aCB0aGVcbiAgLy8gcGFja2FnZSB2ZXJzaW9ucyBpbiBpdCBiZWZvcmUgd2UgZXhlY3V0ZS5cbiAgYXdhaXQgc2hlbGwuc2hlbGwoWyducG0nLCAnaW5pdCcsICcteSddKTtcbiAgYXdhaXQgc2hlbGwuc2hlbGwoWyducG0nLCAnaW5zdGFsbCcsICctLXNhdmUtZGV2JywgJ2NyZWF0ZS1hbXBsaWZ5QGxhdGVzdCddKTtcbiAgLy8gVGhpcyB3aWxsIGNyZWF0ZSAncGFja2FnZS5qc29uJyBpbXBsaWNhdGluZyBhIGNlcnRhaW4gdmVyc2lvbiBvZiB0aGUgQ0RLXG4gIGF3YWl0IHNoZWxsLnNoZWxsKFsnbnBtJywgJ2NvbmZpZycsICdzZXQnLCAnc2F2ZS1leGFjdCcsICd0cnVlJ10pO1xuICBhd2FpdCBtdXRhdGVBbXBsaWZ5RGVwT25DZGsoY29udGV4dCwgY29udGV4dC5wYWNrYWdlcy5yZXF1ZXN0ZWRDbGlWZXJzaW9uKCksIGNvbnRleHQucGFja2FnZXMucmVxdWVzdGVkRnJhbWV3b3JrVmVyc2lvbigpKTtcblxuICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgLy8gIFJ1biB0aGUgYG5wbSBjcmVhdGVgIHdvcmtmbG93XG4gIC8vXG5cbiAgLy8gSSB0ZXN0ZWQgdG8gY29uZmlybSB0aGF0IHRoaXMgd2lsbCB1c2UgdGhlIGxvY2FsbHkgaW5zdGFsbGVkIGBjcmVhdGUtYW1wbGlmeWBcbiAgYXdhaXQgc2hlbGwuc2hlbGwoWyducG0nLCAnY3JlYXRlJywgJy15JywgJ2FtcGxpZnknXSk7XG4gIGF3YWl0IHNoZWxsLnNoZWxsKFsnbnB4JywgJ2FtcHgnLCAnY29uZmlndXJlJywgJ3RlbGVtZXRyeScsICdkaXNhYmxlJ10pO1xuXG4gIGNvbnN0IGF3c0NyZWRzID0gY29udGV4dC5hd3MuaWRlbnRpdHlFbnYoKTtcblxuICBhd2FpdCBzaGVsbC5zaGVsbChbJ25weCcsICdhbXB4JywgJ3NhbmRib3gnLCAnLS1vbmNlJ10sIHtcbiAgICBtb2RFbnY6IHtcbiAgICAgIEFXU19SRUdJT046IGNvbnRleHQuYXdzLnJlZ2lvbixcbiAgICAgIC4uLmF3c0NyZWRzLFxuICAgIH0sXG4gIH0pO1xuICB0cnkge1xuXG4gICAgLy8gRnV0dXJlIGNvZGUgZ29lcyBoZXJlLCBwdXR0aW5nIHRoZSB0cnkvZmluYWxseSBoZXJlIGFscmVhZHkgc28gaXQgZG9lc24ndFxuICAgIC8vIGdldCBmb3Jnb3R0ZW4uXG5cbiAgfSBmaW5hbGx5IHtcbiAgICBhd2FpdCBzaGVsbC5zaGVsbChbJ25weCcsICdhbXB4JywgJ3NhbmRib3gnLCAnZGVsZXRlJywgJy0teWVzJ10sIHtcbiAgICAgIG1vZEVudjoge1xuICAgICAgICBBV1NfUkVHSU9OOiBjb250ZXh0LmF3cy5yZWdpb24sXG4gICAgICAgIC4uLmF3c0NyZWRzLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufSksIFRJTUVPVVQpO1xuXG5hc3luYyBmdW5jdGlvbiBtdXRhdGVBbXBsaWZ5RGVwT25DZGsoY29udGV4dDogVGVtcG9yYXJ5RGlyZWN0b3J5Q29udGV4dCwgY2xpVmVyc2lvbjogc3RyaW5nLCBsaWJWZXJzaW9uOiBzdHJpbmcpIHtcbiAgLy8gZGVmYXVsdF9wYWNrYWdlcy5qc29uIGlzIHdoZXJlIGNyZWF0ZS1hbXBsaWZ5IHJlYWRzIHdoZW4gaW5zdGFsbGluZyBucG0gZGVwZW5kZW5jaWVzXG4gIGNvbnN0IGFtcGxpZnlEZXBGaWxlID0gcGF0aC5qb2luKGNvbnRleHQuaW50ZWdUZXN0RGlyLCAnbm9kZV9tb2R1bGVzJywgJ2NyZWF0ZS1hbXBsaWZ5JywgJ2xpYicsICdkZWZhdWx0X3BhY2thZ2VzLmpzb24nKTtcbiAgY29uc3QgYW1wbGlmeURlcEpzb246IHVua25vd24gPSBKU09OLnBhcnNlKGF3YWl0IGZzLnJlYWRGaWxlKGFtcGxpZnlEZXBGaWxlLCB7IGVuY29kaW5nOiAndXRmLTgnIH0pKTtcblxuICAvLyBCZSBleHRyYSBwYXJhbm9pZCBhYm91dCB0aGUgdHlwZXMgaGVyZSwgc2luY2Ugd2UgZG9uJ3QgZnVsbHkgY29udHJvbCB0aGVtXG4gIGFzc2VydElzT2JqZWN0KGFtcGxpZnlEZXBKc29uKTtcbiAgYXNzZXJ0SXNTdHJpbmdBcnJheShhbXBsaWZ5RGVwSnNvbi5kZWZhdWx0RGV2UGFja2FnZXMpO1xuXG4gIC8vIEFtcGxpZnkgaXMgcmVtb3ZpbmcgdGhlIGRlcGVuZGVuY3kgb24gYXdzLWNkaywgc2luY2UgQW1wbGlmeSBpcyBub3cgdXNpbmcgdGhlIHRvb2xraXQtbGliXG4gIC8vIFRvIHByZXBhcmUgZm9yIHRoaXMgY2hhbmdlLCB3ZSBuZWVkIGFsbG93IGJvdGggc2l0dWF0aW9uczogYXdzLWNkayBiZWluZyBsaXN0ZWQgYW5kIG5vdCBiZWluZyBsaXN0ZWRcbiAgLy8gRml4IGlzIHRvIHNpbXBseSBhbGxvdyB0aGUgcmVwbGFjZSBvcGVyYXRpb24gdG8gYWxzbyBOT1QgcmVwbGFjZSB0aGUgdmVyc2lvblxuICAvLyBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MtYW1wbGlmeS9hbXBsaWZ5LWJhY2tlbmQvcHVsbC8yNjE0XG4gIHJlcGxhY2VQYWNrYWdlVmVyc2lvbkluKCdhd3MtY2RrJywgY2xpVmVyc2lvbiwgYW1wbGlmeURlcEpzb24uZGVmYXVsdERldlBhY2thZ2VzLCBmYWxzZSk7XG4gIHJlcGxhY2VQYWNrYWdlVmVyc2lvbkluKCdhd3MtY2RrLWxpYicsIGxpYlZlcnNpb24sIGFtcGxpZnlEZXBKc29uLmRlZmF1bHREZXZQYWNrYWdlcyk7XG5cbiAgYXdhaXQgZnMud3JpdGVGaWxlKGFtcGxpZnlEZXBGaWxlLCBKU09OLnN0cmluZ2lmeShhbXBsaWZ5RGVwSnNvbiwgdW5kZWZpbmVkLCAyKSwgeyBlbmNvZGluZzogJ3V0Zi04JyB9KTtcblxuICBjb25zdCBwYWNrYWdlSnNvbkZpbGUgPSBwYXRoLmpvaW4oY29udGV4dC5pbnRlZ1Rlc3REaXIsICdwYWNrYWdlLmpzb24nKTtcbiAgY29uc3QgcGFja2FnZUpzb246IHVua25vd24gPSBKU09OLnBhcnNlKGF3YWl0IGZzLnJlYWRGaWxlKHBhY2thZ2VKc29uRmlsZSwgeyBlbmNvZGluZzogJ3V0Zi04JyB9KSk7XG5cbiAgYXNzZXJ0SXNPYmplY3QocGFja2FnZUpzb24pO1xuICBwYWNrYWdlSnNvbi5vdmVycmlkZXMgPSB7XG4gICAgJ2F3cy1jZGstbGliJzogbGliVmVyc2lvbixcbiAgfTtcbiAgYXdhaXQgZnMud3JpdGVGaWxlKHBhY2thZ2VKc29uRmlsZSwgSlNPTi5zdHJpbmdpZnkocGFja2FnZUpzb24sIHVuZGVmaW5lZCwgMiksIHsgZW5jb2Rpbmc6ICd1dGYtOCcgfSk7XG59XG5cbi8qKlxuICogTXV0YWJseSB1cGRhdGUgdGhlIGdpdmVuIHN0cmluZyBhcnJheSwgcmVwbGFjaW5nIHRoZSB2ZXJzaW9uIG9mIHBhY2thZ2VzIHdpdGggdGhlIGdpdmVuIG5hbWVcbiAqXG4gKiBXZSBhc3N1bWUgdGhlIGxpc3Qgb2YgcGFja2FnZXMgaXMgYSBzdHJpbmcgYXJyYXkgb2YgdGhlIGZvcm1cbiAqXG4gKiBgYGBcbiAqIFtcInBhY2thZ2VAdmVyc2lvblwiLCBcInBhY2thZ2VAdmVyc2lvblwiLCAuLi5dXG4gKiBgYGBcbiAqXG4gKiBJdCdzIGEgZmFpbHVyZSBpZiB3ZSBkb24ndCBmaW5kIGFuIGVudHJ5IHRvIHVwZGF0ZSwgdW5sZXNzIHdlIGV4cGxpY2l0bHkgcGFzcyBhbiBvcHRpb24gdG8gc2F5IHRoYXQncyBva2F5LlxuICovXG5mdW5jdGlvbiByZXBsYWNlUGFja2FnZVZlcnNpb25JbihwYWNrTmFtZTogc3RyaW5nLCB2ZXJzaW9uOiBzdHJpbmcsIHhzOiBzdHJpbmdbXSwgZmFpbElmTWlzc2luZyA9IHRydWUpIHtcbiAgbGV0IGRpZFVwZGF0ZSA9IGZhbHNlO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHhzLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHhzW2ldLnN0YXJ0c1dpdGgoYCR7cGFja05hbWV9QGApKSB7XG4gICAgICB4c1tpXSA9IGAke3BhY2tOYW1lfUAke3ZlcnNpb259YDtcbiAgICAgIGRpZFVwZGF0ZSA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgaWYgKGZhaWxJZk1pc3NpbmcgJiYgIWRpZFVwZGF0ZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgRGlkIG5vdCBmaW5kIGEgcGFja2FnZSB2ZXJzaW9uIHRvIHVwZGF0ZSBmb3IgJHtwYWNrTmFtZX0gaW4gJHtKU09OLnN0cmluZ2lmeSh4cyl9YCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gYXNzZXJ0SXNPYmplY3QoeHM6IHVua25vd24pOiBhc3NlcnRzIHhzIGlzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgaWYgKHR5cGVvZiB4cyAhPT0gJ29iamVjdCcgfHwgeHMgPT09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIG9iamVjdCwgZ290ICR7SlNPTi5zdHJpbmdpZnkoeHMpfWApO1xuICB9XG59XG5cbmZ1bmN0aW9uIGFzc2VydElzU3RyaW5nQXJyYXkoeHM6IHVua25vd24pOiBhc3NlcnRzIHhzIGlzIHN0cmluZ1tdIHtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHhzKSB8fCB4cy5sZW5ndGggPT09IDAgfHwgdHlwZW9mIHhzWzBdICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgbGlzdCBvZiBzdHJpbmdzLCBnb3QgJHtKU09OLnN0cmluZ2lmeSh4cyl9YCk7XG4gIH1cbn1cbiJdfQ==
@@ -1,8 +1,8 @@
1
- import { TestContext } from '../../lib/integ-test';
2
- import { AwsContext } from '../../lib/with-aws';
3
- import { DisableBootstrapContext } from '../../lib/with-cdk-app';
4
- import { PackageContext } from '../../lib/with-packages';
5
- import { TemporaryDirectoryContext } from '../../lib/with-temporary-directory';
1
+ import type { TestContext } from '../../lib/integ-test';
2
+ import type { AwsContext } from '../../lib/with-aws';
3
+ import type { DisableBootstrapContext } from '../../lib/with-cdk-app';
4
+ import type { PackageContext } from '../../lib/with-packages';
5
+ import type { TemporaryDirectoryContext } from '../../lib/with-temporary-directory';
6
6
  /**
7
7
  * The default prerequisites for tests running tool integrations
8
8
  */
@@ -10,4 +10,4 @@ const with_temporary_directory_1 = require("../../lib/with-temporary-directory")
10
10
  function withToolContext(block) {
11
11
  return (0, with_aws_1.withAws)((0, with_temporary_directory_1.withTemporaryDirectory)((0, with_packages_1.withPackages)(block)));
12
12
  }
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC10b29sLWNvbnRleHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ3aXRoLXRvb2wtY29udGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQVNBLDBDQUlDO0FBWkQsaURBQXlEO0FBRXpELDJEQUF1RTtBQUN2RSxpRkFBdUc7QUFFdkc7O0dBRUc7QUFDSCxTQUFnQixlQUFlLENBQzdCLEtBQ2tCO0lBQ2xCLE9BQU8sSUFBQSxrQkFBTyxFQUFDLElBQUEsaURBQXNCLEVBQUMsSUFBQSw0QkFBWSxFQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGVzdENvbnRleHQgfSBmcm9tICcuLi8uLi9saWIvaW50ZWctdGVzdCc7XG5pbXBvcnQgeyBBd3NDb250ZXh0LCB3aXRoQXdzIH0gZnJvbSAnLi4vLi4vbGliL3dpdGgtYXdzJztcbmltcG9ydCB7IERpc2FibGVCb290c3RyYXBDb250ZXh0IH0gZnJvbSAnLi4vLi4vbGliL3dpdGgtY2RrLWFwcCc7XG5pbXBvcnQgeyBQYWNrYWdlQ29udGV4dCwgd2l0aFBhY2thZ2VzIH0gZnJvbSAnLi4vLi4vbGliL3dpdGgtcGFja2FnZXMnO1xuaW1wb3J0IHsgVGVtcG9yYXJ5RGlyZWN0b3J5Q29udGV4dCwgd2l0aFRlbXBvcmFyeURpcmVjdG9yeSB9IGZyb20gJy4uLy4uL2xpYi93aXRoLXRlbXBvcmFyeS1kaXJlY3RvcnknO1xuXG4vKipcbiAqIFRoZSBkZWZhdWx0IHByZXJlcXVpc2l0ZXMgZm9yIHRlc3RzIHJ1bm5pbmcgdG9vbCBpbnRlZ3JhdGlvbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhUb29sQ29udGV4dDxBIGV4dGVuZHMgVGVzdENvbnRleHQ+KFxuICBibG9jazogKGNvbnRleHQ6IEEgJiBUZW1wb3JhcnlEaXJlY3RvcnlDb250ZXh0ICYgUGFja2FnZUNvbnRleHQgJiBBd3NDb250ZXh0ICYgRGlzYWJsZUJvb3RzdHJhcENvbnRleHRcbiAgKSA9PiBQcm9taXNlPHZvaWQ+KSB7XG4gIHJldHVybiB3aXRoQXdzKHdpdGhUZW1wb3JhcnlEaXJlY3Rvcnkod2l0aFBhY2thZ2VzKGJsb2NrKSkpO1xufVxuIl19
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC10b29sLWNvbnRleHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ3aXRoLXRvb2wtY29udGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQVlBLDBDQUlDO0FBZEQsaURBQTZDO0FBRzdDLDJEQUF1RDtBQUV2RCxpRkFBNEU7QUFFNUU7O0dBRUc7QUFDSCxTQUFnQixlQUFlLENBQzdCLEtBQ2tCO0lBQ2xCLE9BQU8sSUFBQSxrQkFBTyxFQUFDLElBQUEsaURBQXNCLEVBQUMsSUFBQSw0QkFBWSxFQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBUZXN0Q29udGV4dCB9IGZyb20gJy4uLy4uL2xpYi9pbnRlZy10ZXN0JztcbmltcG9ydCB0eXBlIHsgQXdzQ29udGV4dCB9IGZyb20gJy4uLy4uL2xpYi93aXRoLWF3cyc7XG5pbXBvcnQgeyB3aXRoQXdzIH0gZnJvbSAnLi4vLi4vbGliL3dpdGgtYXdzJztcbmltcG9ydCB0eXBlIHsgRGlzYWJsZUJvb3RzdHJhcENvbnRleHQgfSBmcm9tICcuLi8uLi9saWIvd2l0aC1jZGstYXBwJztcbmltcG9ydCB0eXBlIHsgUGFja2FnZUNvbnRleHQgfSBmcm9tICcuLi8uLi9saWIvd2l0aC1wYWNrYWdlcyc7XG5pbXBvcnQgeyB3aXRoUGFja2FnZXMgfSBmcm9tICcuLi8uLi9saWIvd2l0aC1wYWNrYWdlcyc7XG5pbXBvcnQgdHlwZSB7IFRlbXBvcmFyeURpcmVjdG9yeUNvbnRleHQgfSBmcm9tICcuLi8uLi9saWIvd2l0aC10ZW1wb3JhcnktZGlyZWN0b3J5JztcbmltcG9ydCB7IHdpdGhUZW1wb3JhcnlEaXJlY3RvcnkgfSBmcm9tICcuLi8uLi9saWIvd2l0aC10ZW1wb3JhcnktZGlyZWN0b3J5JztcblxuLyoqXG4gKiBUaGUgZGVmYXVsdCBwcmVyZXF1aXNpdGVzIGZvciB0ZXN0cyBydW5uaW5nIHRvb2wgaW50ZWdyYXRpb25zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3aXRoVG9vbENvbnRleHQ8QSBleHRlbmRzIFRlc3RDb250ZXh0PihcbiAgYmxvY2s6IChjb250ZXh0OiBBICYgVGVtcG9yYXJ5RGlyZWN0b3J5Q29udGV4dCAmIFBhY2thZ2VDb250ZXh0ICYgQXdzQ29udGV4dCAmIERpc2FibGVCb290c3RyYXBDb250ZXh0XG4gICkgPT4gUHJvbWlzZTx2b2lkPikge1xuICByZXR1cm4gd2l0aEF3cyh3aXRoVGVtcG9yYXJ5RGlyZWN0b3J5KHdpdGhQYWNrYWdlcyhibG9jaykpKTtcbn1cbiJdfQ==
package/.eslintrc.js DELETED
@@ -1,9 +0,0 @@
1
- var path = require('path');
2
- var fs = require('fs');
3
- var contents = fs.readFileSync(`${__dirname}/.eslintrc.json`, { encoding: 'utf-8' });
4
- // Strip comments, JSON.parse() doesn't like those
5
- contents = contents.replace(/^\/\/.*$/m, '');
6
- var json = JSON.parse(contents);
7
- // Patch the .json config with something that can only be represented in JS
8
- json.parserOptions.tsconfigRootDir = __dirname;
9
- module.exports = json;
package/lib/aws.ts DELETED
@@ -1,303 +0,0 @@
1
- import {
2
- CloudFormationClient,
3
- DeleteStackCommand,
4
- DescribeStacksCommand,
5
- UpdateTerminationProtectionCommand,
6
- type Stack,
7
- } from '@aws-sdk/client-cloudformation';
8
- import { DeleteRepositoryCommand, ECRClient } from '@aws-sdk/client-ecr';
9
- import { ECRPUBLICClient } from '@aws-sdk/client-ecr-public';
10
- import { ECSClient } from '@aws-sdk/client-ecs';
11
- import { IAMClient } from '@aws-sdk/client-iam';
12
- import { LambdaClient } from '@aws-sdk/client-lambda';
13
- import {
14
- S3Client,
15
- DeleteObjectsCommand,
16
- ListObjectVersionsCommand,
17
- type ObjectIdentifier,
18
- DeleteBucketCommand,
19
- } from '@aws-sdk/client-s3';
20
- import { SNSClient } from '@aws-sdk/client-sns';
21
- import { SSOClient } from '@aws-sdk/client-sso';
22
- import { STSClient, GetCallerIdentityCommand } from '@aws-sdk/client-sts';
23
- import { fromIni, fromNodeProviderChain } from '@aws-sdk/credential-providers';
24
- import type { AwsCredentialIdentity, AwsCredentialIdentityProvider } from '@smithy/types';
25
- import { ConfiguredRetryStrategy } from '@smithy/util-retry';
26
- interface ClientConfig {
27
- readonly credentials: AwsCredentialIdentityProvider | AwsCredentialIdentity;
28
- readonly region: string;
29
- readonly retryStrategy: ConfiguredRetryStrategy;
30
- }
31
-
32
- export class AwsClients {
33
- public static async forIdentity(region: string, identity: AwsCredentialIdentity, output: NodeJS.WritableStream) {
34
- return new AwsClients(region, output, identity);
35
- }
36
-
37
- public static async forRegion(region: string, output: NodeJS.WritableStream) {
38
- return new AwsClients(region, output);
39
- }
40
-
41
- private readonly config: ClientConfig;
42
-
43
- public readonly cloudFormation: CloudFormationClient;
44
- public readonly s3: S3Client;
45
- public readonly ecr: ECRClient;
46
- public readonly ecrPublic: ECRPUBLICClient;
47
- public readonly ecs: ECSClient;
48
- public readonly sso: SSOClient;
49
- public readonly sns: SNSClient;
50
- public readonly iam: IAMClient;
51
- public readonly lambda: LambdaClient;
52
- public readonly sts: STSClient;
53
-
54
- constructor(
55
- public readonly region: string,
56
- private readonly output: NodeJS.WritableStream,
57
- public readonly identity?: AwsCredentialIdentity) {
58
- this.config = {
59
- credentials: this.identity ?? chainableCredentials(this.region),
60
- region: this.region,
61
- retryStrategy: new ConfiguredRetryStrategy(9, (attempt: number) => attempt ** 500),
62
- };
63
- this.cloudFormation = new CloudFormationClient(this.config);
64
- this.s3 = new S3Client(this.config);
65
- this.ecr = new ECRClient(this.config);
66
- this.ecrPublic = new ECRPUBLICClient({ ...this.config, region: 'us-east-1' /* public gallery is only available in us-east-1 */ });
67
- this.ecs = new ECSClient(this.config);
68
- this.sso = new SSOClient(this.config);
69
- this.sns = new SNSClient(this.config);
70
- this.iam = new IAMClient(this.config);
71
- this.lambda = new LambdaClient(this.config);
72
- this.sts = new STSClient(this.config);
73
- }
74
-
75
- public async account(): Promise<string> {
76
- // Reduce # of retries, we use this as a circuit breaker for detecting no-config
77
- const stsClient = new STSClient({
78
- credentials: this.config.credentials,
79
- region: this.config.region,
80
- maxAttempts: 2,
81
- });
82
-
83
- return (await stsClient.send(new GetCallerIdentityCommand({}))).Account!;
84
- }
85
-
86
- /**
87
- * If the clients already has an established identity (via atmosphere for example),
88
- * return an environment variable map activating it.
89
- *
90
- * Otherwise, returns undefined.
91
- */
92
- public identityEnv(): Record<string, string> | undefined {
93
- return this.identity ? {
94
- AWS_ACCESS_KEY_ID: this.identity.accessKeyId,
95
- AWS_SECRET_ACCESS_KEY: this.identity.secretAccessKey,
96
- AWS_SESSION_TOKEN: this.identity.sessionToken!,
97
-
98
- // unset any previously used profile because the SDK will prefer
99
- // this over static env credentials. this is relevant for tests running on CodeBuild
100
- // because we use a profile as our main credentials source.
101
- AWS_PROFILE: '',
102
- } : undefined;
103
- }
104
-
105
- /**
106
- * Resolve the current identity or identity provider to credentials
107
- */
108
- public async credentials() {
109
- const x = this.config.credentials;
110
- if (isAwsCredentialIdentity(x)) {
111
- return x;
112
- }
113
- return x();
114
- }
115
-
116
- public async deleteStacks(...stackNames: string[]) {
117
- if (stackNames.length === 0) {
118
- return;
119
- }
120
-
121
- // We purposely do all stacks serially, because they've been ordered
122
- // to do the bootstrap stack last.
123
- for (const stackName of stackNames) {
124
- await this.cloudFormation.send(
125
- new UpdateTerminationProtectionCommand({
126
- EnableTerminationProtection: false,
127
- StackName: stackName,
128
- }),
129
- );
130
- await this.cloudFormation.send(
131
- new DeleteStackCommand({
132
- StackName: stackName,
133
- }),
134
- );
135
-
136
- await retry(this.output, `Deleting ${stackName}`, retry.forSeconds(600), async () => {
137
- const status = await this.stackStatus(stackName);
138
- if (status !== undefined && status.endsWith('_FAILED')) {
139
- throw retry.abort(new Error(`'${stackName}' is in state '${status}'`));
140
- }
141
- if (status !== undefined) {
142
- throw new Error(`Delete of '${stackName}' not complete yet, status: '${status}'`);
143
- }
144
- });
145
- }
146
- }
147
-
148
- public async stackStatus(stackName: string): Promise<string | undefined> {
149
- try {
150
- return (
151
- await this.cloudFormation.send(
152
- new DescribeStacksCommand({
153
- StackName: stackName,
154
- }),
155
- )
156
- ).Stacks?.[0].StackStatus;
157
- } catch (e: any) {
158
- if (isStackMissingError(e)) {
159
- return undefined;
160
- }
161
- throw e;
162
- }
163
- }
164
-
165
- public async emptyBucket(bucketName: string, options?: { bypassGovernance?: boolean }) {
166
- const objects = await this.s3.send(
167
- new ListObjectVersionsCommand({
168
- Bucket: bucketName,
169
- }),
170
- );
171
-
172
- const deletes = [...(objects.Versions || []), ...(objects.DeleteMarkers || [])].reduce((acc, obj) => {
173
- if (typeof obj.VersionId !== 'undefined' && typeof obj.Key !== 'undefined') {
174
- acc.push({ Key: obj.Key, VersionId: obj.VersionId });
175
- } else if (typeof obj.Key !== 'undefined') {
176
- acc.push({ Key: obj.Key });
177
- }
178
- return acc;
179
- }, [] as ObjectIdentifier[]);
180
-
181
- if (deletes.length === 0) {
182
- return Promise.resolve();
183
- }
184
-
185
- return this.s3.send(
186
- new DeleteObjectsCommand({
187
- Bucket: bucketName,
188
- Delete: {
189
- Objects: deletes,
190
- Quiet: false,
191
- },
192
- BypassGovernanceRetention: options?.bypassGovernance ? true : undefined,
193
- }),
194
- );
195
- }
196
-
197
- public async deleteImageRepository(repositoryName: string) {
198
- await this.ecr.send(
199
- new DeleteRepositoryCommand({
200
- repositoryName: repositoryName,
201
- force: true,
202
- }),
203
- );
204
- }
205
-
206
- public async deleteBucket(bucketName: string) {
207
- try {
208
- await this.emptyBucket(bucketName);
209
-
210
- await this.s3.send(
211
- new DeleteBucketCommand({
212
- Bucket: bucketName,
213
- }),
214
- );
215
- } catch (e: any) {
216
- if (isBucketMissingError(e)) {
217
- return;
218
- }
219
- throw e;
220
- }
221
- }
222
- }
223
-
224
- export function isStackMissingError(e: Error) {
225
- return e.message.indexOf('does not exist') > -1;
226
- }
227
-
228
- export function isBucketMissingError(e: Error) {
229
- return e.message.indexOf('does not exist') > -1;
230
- }
231
-
232
- /**
233
- * Retry an async operation until a deadline is hit.
234
- *
235
- * Use `retry.forSeconds()` to construct a deadline relative to right now.
236
- *
237
- * Exceptions will cause the operation to retry. Use `retry.abort` to annotate an exception
238
- * to stop the retry and end in a failure.
239
- */
240
- export async function retry<A>(
241
- output: NodeJS.WritableStream,
242
- operation: string,
243
- deadline: Date,
244
- block: () => Promise<A>,
245
- ): Promise<A> {
246
- let i = 0;
247
- output.write(`💈 ${operation}\n`);
248
- while (true) {
249
- try {
250
- i++;
251
- const ret = await block();
252
- output.write(`💈 ${operation}: succeeded after ${i} attempts\n`);
253
- return ret;
254
- } catch (e: any) {
255
- if (e.abort || Date.now() > deadline.getTime()) {
256
- throw new Error(`${operation}: did not succeed after ${i} attempts: ${e}`);
257
- }
258
- output.write(`⏳ ${operation} (${e.message})\n`);
259
- await sleep(5000);
260
- }
261
- }
262
- }
263
-
264
- /**
265
- * Make a deadline for the `retry` function relative to the current time.
266
- */
267
- retry.forSeconds = (seconds: number): Date => {
268
- return new Date(Date.now() + seconds * 1000);
269
- };
270
-
271
- /**
272
- * Annotate an error to stop the retrying
273
- */
274
- retry.abort = (e: Error): Error => {
275
- (e as any).abort = true;
276
- return e;
277
- };
278
-
279
- export function outputFromStack(key: string, stack: Stack): string | undefined {
280
- return (stack.Outputs ?? []).find((o) => o.OutputKey === key)?.OutputValue;
281
- }
282
-
283
- export async function sleep(ms: number) {
284
- return new Promise((ok) => setTimeout(ok, ms));
285
- }
286
-
287
- function chainableCredentials(region: string): AwsCredentialIdentityProvider {
288
- if ((process.env.CODEBUILD_BUILD_ARN || process.env.GITHUB_RUN_ID) && process.env.AWS_PROFILE) {
289
- // in codebuild we must assume the role that the cdk uses
290
- // otherwise credentials will just be picked up by the normal sdk
291
- // heuristics and expire after an hour.
292
- return fromIni({
293
- clientConfig: { region },
294
- });
295
- }
296
-
297
- // Otherwise just get what's default
298
- return fromNodeProviderChain({ clientConfig: { region } });
299
- }
300
-
301
- function isAwsCredentialIdentity(x: any): x is AwsCredentialIdentity {
302
- return Boolean(x && typeof x === 'object' && x.accessKeyId);
303
- }
@@ -1,56 +0,0 @@
1
- import * as yargs from 'yargs';
2
- import { fetchPreviousVersion } from '../github';
3
-
4
- async function main() {
5
- const args = await yargs
6
- .option('token', {
7
- descripton: 'GitHub token (default: from environment GITHUB_TOKEN)',
8
- alias: 't',
9
- type: 'string',
10
- requiresArg: true,
11
- })
12
- .command('last-release', 'Query the last release', cmd => cmd
13
- .option('prior-to', {
14
- description: 'Return the most recent release before the given version',
15
- alias: 'p',
16
- type: 'string',
17
- requiresArg: true,
18
- })
19
- .option('major', {
20
- description: 'Return the most recent release that matches',
21
- alias: 'm',
22
- type: 'string',
23
- requiresArg: true,
24
- }))
25
- .demandCommand()
26
- .help()
27
- .showHelpOnFail(false)
28
- .argv;
29
-
30
- const command = args._[0];
31
-
32
- const token = args.token ?? process.env.GITHUB_TOKEN;
33
- if (!token) {
34
- throw new Error('Either pass --token or set GITHUB_TOKEN.');
35
- }
36
-
37
- switch (command) {
38
- case 'last-release':
39
- if (args['prior-to'] && args.major) {
40
- throw new Error('Cannot pass both `--prior-to and --major at the same time');
41
- }
42
-
43
- // eslint-disable-next-line no-console
44
- console.log(await fetchPreviousVersion(token, {
45
- priorTo: args['prior-to'],
46
- majorVersion: args.major,
47
- }));
48
- break;
49
- }
50
- }
51
-
52
- main().catch(e => {
53
- // eslint-disable-next-line no-console
54
- console.error(e);
55
- process.exitCode = 1;
56
- });
@@ -1,153 +0,0 @@
1
- /* eslint-disable no-console */
2
- import * as path from 'path';
3
- import * as jest from 'jest';
4
- import * as yargs from 'yargs';
5
- import { ReleasePackageSourceSetup } from '../package-sources/release-source';
6
- import { RepoPackageSourceSetup, autoFindRoot } from '../package-sources/repo-source';
7
- import { IPackageSourceSetup } from '../package-sources/source';
8
- import { serializeForSubprocess } from '../package-sources/subprocess';
9
-
10
- async function main() {
11
- const args = await yargs
12
- .usage('$0 <SUITENAME>')
13
- .positional('SUITENAME', {
14
- descripton: 'Name of the test suite to run',
15
- type: 'string',
16
- demandOption: true,
17
- })
18
- .option('test', {
19
- descripton: 'Test pattern to selectively run tests',
20
- alias: 't',
21
- type: 'string',
22
- requiresArg: true,
23
- })
24
- .option('test-file', {
25
- description: 'The specific test file to run',
26
- type: 'string',
27
- requiresArg: true,
28
- })
29
- .option('use-source', {
30
- descripton: 'Use TypeScript packages from the given source repository (or "auto")',
31
- alias: 's',
32
- type: 'string',
33
- requiresArg: true,
34
- })
35
- .option('use-cli-release', {
36
- descripton: 'Run the current tests against the CLI at the given version',
37
- alias: 'u',
38
- type: 'string',
39
- requiresArg: true,
40
- })
41
- .option('auto-source', {
42
- alias: 'a',
43
- description: 'Automatically find the source tree from the current working directory',
44
- type: 'boolean',
45
- requiresArg: false,
46
- })
47
- .option('runInBand', {
48
- descripton: 'Run all tests in one Node process',
49
- alias: 'i',
50
- type: 'boolean',
51
- })
52
- .options('framework-version', {
53
- description: 'Framework version to use, if different than the CLI version (not all suites respect this)',
54
- alias: 'f',
55
- type: 'string',
56
- })
57
- .options('verbose', {
58
- alias: 'v',
59
- description: 'Run in verbose mode',
60
- type: 'boolean',
61
- requiresArg: false,
62
- })
63
- .options('passWithNoTests', {
64
- description: 'Allow passing if the test suite is not found (default true when IS_CANARY mode, false otherwise)',
65
- type: 'boolean',
66
- requiresArg: false,
67
- })
68
- .options('maxWorkers', {
69
- alias: 'w',
70
- description: 'Specifies the maximum number of workers the worker-pool will spawn for running tests. We use a sensible default for running cli integ tests.',
71
- type: 'string',
72
- requiresArg: true,
73
- })
74
- .help()
75
- .showHelpOnFail(false)
76
- .argv;
77
-
78
- const suiteName = args._[0] as string;
79
- if (!suiteName) {
80
- throw new Error('Usage: run-suite <SUITENAME>');
81
- }
82
-
83
- let packageSource: undefined | IPackageSourceSetup;
84
- function usePackageSource(s: IPackageSourceSetup) {
85
- if (packageSource) {
86
- throw new Error('Cannot specify two package sources');
87
- }
88
- packageSource = s;
89
- }
90
-
91
- if (args['use-source'] || args['auto-source']) {
92
- if (args['framework-version']) {
93
- throw new Error('Cannot use --framework-version with --use-source');
94
- }
95
-
96
- const root = args['use-source'] && args['use-source'] !== 'auto'
97
- ? args['use-source']
98
- : await autoFindRoot();
99
-
100
- usePackageSource(new RepoPackageSourceSetup(root));
101
- } else if (args['use-cli-release']) {
102
- usePackageSource(new ReleasePackageSourceSetup(args['use-cli-release'], args['framework-version']));
103
- }
104
- if (!packageSource) {
105
- throw new Error('Specify either --use-source or --use-cli-release');
106
- }
107
-
108
- console.log(`Package source: ${packageSource.description}`);
109
- console.log(`Test suite: ${suiteName}`);
110
- console.log(`Test version: ${thisPackageVersion()}`);
111
-
112
- await packageSource.prepare();
113
- serializeForSubprocess(packageSource);
114
-
115
- if (args.verbose) {
116
- process.env.VERBOSE = '1';
117
- }
118
-
119
- // Motivation behind this behavior: when adding a new test suite to the pipeline, because of the way our
120
- // Pipeline package works, the suite would be added to the pipeline AND as a canary immediately. The canary
121
- // would fail until the package was actually released, so for canaries we make an exception so that the initial
122
- // canary would succeed even if the suite wasn't yet available. The fact that the suite is not optional in
123
- // the pipeline protects us from typos.
124
- const passWithNoTests = args.passWithNoTests ?? !!process.env.IS_CANARY;
125
-
126
- // Communicate with the config file (integ.jest.config.js)
127
- process.env.TEST_SUITE_NAME = suiteName;
128
-
129
- try {
130
- await jest.run([
131
- '--randomize',
132
- ...args.runInBand ? ['-i'] : [],
133
- ...args.test ? ['-t', args.test] : [],
134
- ...args.verbose ? ['--verbose'] : [],
135
- ...args.maxWorkers ? [`--maxWorkers=${args.maxWorkers}`] : [],
136
- ...passWithNoTests ? ['--passWithNoTests'] : [],
137
- ...args['test-file'] ? [args['test-file']] : [],
138
- ], path.resolve(__dirname, '..', '..', 'resources', 'integ.jest.config.js'));
139
- } finally {
140
- await packageSource.cleanup();
141
- }
142
- }
143
-
144
- function thisPackageVersion(): string {
145
- // eslint-disable-next-line @typescript-eslint/no-require-imports
146
- return require('../../package.json').version;
147
- }
148
-
149
- main().catch(e => {
150
- // eslint-disable-next-line no-console
151
- console.error(e);
152
- process.exitCode = 1;
153
- });