@depup/aws-cdk 2.1117.0-depup.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 (308) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +16 -0
  3. package/README.md +25 -0
  4. package/THIRD_PARTY_LICENSES +24866 -0
  5. package/bin/cdk +6 -0
  6. package/build-info.json +4 -0
  7. package/changes.json +5 -0
  8. package/db.json.gz +0 -0
  9. package/docs/deploy-architecture.md +194 -0
  10. package/lib/api/aws-auth.d.ts +3 -0
  11. package/lib/api/aws-auth.js +21 -0
  12. package/lib/api/bootstrap/bootstrap-template.yaml +855 -0
  13. package/lib/api/bootstrap.d.ts +1 -0
  14. package/lib/api/bootstrap.js +19 -0
  15. package/lib/api/cloud-assembly.d.ts +5 -0
  16. package/lib/api/cloud-assembly.js +23 -0
  17. package/lib/api/cloudformation.d.ts +1 -0
  18. package/lib/api/cloudformation.js +19 -0
  19. package/lib/api/context.d.ts +1 -0
  20. package/lib/api/context.js +19 -0
  21. package/lib/api/deployments.d.ts +1 -0
  22. package/lib/api/deployments.js +19 -0
  23. package/lib/api/hotswap.d.ts +1 -0
  24. package/lib/api/hotswap.js +19 -0
  25. package/lib/api/index.d.ts +16 -0
  26. package/lib/api/index.js +38 -0
  27. package/lib/api/network-detector.d.ts +1 -0
  28. package/lib/api/network-detector.js +19 -0
  29. package/lib/api/notices.d.ts +1 -0
  30. package/lib/api/notices.js +19 -0
  31. package/lib/api/plugin.d.ts +1 -0
  32. package/lib/api/plugin.js +19 -0
  33. package/lib/api/refactor.d.ts +1 -0
  34. package/lib/api/refactor.js +8 -0
  35. package/lib/api/settings.d.ts +1 -0
  36. package/lib/api/settings.js +19 -0
  37. package/lib/api/tags.d.ts +1 -0
  38. package/lib/api/tags.js +19 -0
  39. package/lib/api-private.d.ts +9 -0
  40. package/lib/api-private.js +29 -0
  41. package/lib/cli/cdk-toolkit.d.ts +699 -0
  42. package/lib/cli/cdk-toolkit.js +1260 -0
  43. package/lib/cli/ci-systems.d.ts +29 -0
  44. package/lib/cli/ci-systems.js +61 -0
  45. package/lib/cli/cli-config.d.ts +10 -0
  46. package/lib/cli/cli-config.js +556 -0
  47. package/lib/cli/cli-type-registry.json +1147 -0
  48. package/lib/cli/cli.d.ts +3 -0
  49. package/lib/cli/cli.js +746 -0
  50. package/lib/cli/convert-to-user-input.d.ts +3 -0
  51. package/lib/cli/convert-to-user-input.js +560 -0
  52. package/lib/cli/display-version.d.ts +11 -0
  53. package/lib/cli/display-version.js +101 -0
  54. package/lib/cli/io-host/cli-io-host.d.ts +191 -0
  55. package/lib/cli/io-host/cli-io-host.js +477 -0
  56. package/lib/cli/io-host/index.d.ts +1 -0
  57. package/lib/cli/io-host/index.js +18 -0
  58. package/lib/cli/parse-command-line-arguments.d.ts +1 -0
  59. package/lib/cli/parse-command-line-arguments.js +1067 -0
  60. package/lib/cli/platform-warnings.d.ts +3 -0
  61. package/lib/cli/platform-warnings.js +44 -0
  62. package/lib/cli/pretty-print-error.d.ts +1 -0
  63. package/lib/cli/pretty-print-error.js +37 -0
  64. package/lib/cli/proxy-agent.d.ts +30 -0
  65. package/lib/cli/proxy-agent.js +52 -0
  66. package/lib/cli/root-dir.d.ts +10 -0
  67. package/lib/cli/root-dir.js +23 -0
  68. package/lib/cli/singleton-plugin-host.d.ts +7 -0
  69. package/lib/cli/singleton-plugin-host.js +11 -0
  70. package/lib/cli/tables.d.ts +1 -0
  71. package/lib/cli/tables.js +10 -0
  72. package/lib/cli/telemetry/collect-telemetry.d.ts +5 -0
  73. package/lib/cli/telemetry/collect-telemetry.js +16 -0
  74. package/lib/cli/telemetry/error.d.ts +15 -0
  75. package/lib/cli/telemetry/error.js +68 -0
  76. package/lib/cli/telemetry/feature-flags.d.ts +96 -0
  77. package/lib/cli/telemetry/feature-flags.js +103 -0
  78. package/lib/cli/telemetry/installation-id.d.ts +5 -0
  79. package/lib/cli/telemetry/installation-id.js +47 -0
  80. package/lib/cli/telemetry/library-version.d.ts +2 -0
  81. package/lib/cli/telemetry/library-version.js +30 -0
  82. package/lib/cli/telemetry/messages.d.ts +43 -0
  83. package/lib/cli/telemetry/messages.js +60 -0
  84. package/lib/cli/telemetry/sanitation.d.ts +100 -0
  85. package/lib/cli/telemetry/sanitation.js +79 -0
  86. package/lib/cli/telemetry/schema.d.ts +85 -0
  87. package/lib/cli/telemetry/schema.js +3 -0
  88. package/lib/cli/telemetry/session.d.ts +67 -0
  89. package/lib/cli/telemetry/session.js +174 -0
  90. package/lib/cli/telemetry/sink/endpoint-sink.d.ts +44 -0
  91. package/lib/cli/telemetry/sink/endpoint-sink.js +105 -0
  92. package/lib/cli/telemetry/sink/file-sink.d.ts +32 -0
  93. package/lib/cli/telemetry/sink/file-sink.js +43 -0
  94. package/lib/cli/telemetry/sink/funnel.d.ts +16 -0
  95. package/lib/cli/telemetry/sink/funnel.js +29 -0
  96. package/lib/cli/telemetry/sink/io-host-sink.d.ts +27 -0
  97. package/lib/cli/telemetry/sink/io-host-sink.js +35 -0
  98. package/lib/cli/telemetry/sink/sink-interface.d.ts +18 -0
  99. package/lib/cli/telemetry/sink/sink-interface.js +3 -0
  100. package/lib/cli/user-configuration.d.ts +104 -0
  101. package/lib/cli/user-configuration.js +334 -0
  102. package/lib/cli/user-input.d.ts +1505 -0
  103. package/lib/cli/user-input.js +3 -0
  104. package/lib/cli/util/ci.d.ts +5 -0
  105. package/lib/cli/util/ci.js +11 -0
  106. package/lib/cli/util/console-formatters.d.ts +18 -0
  107. package/lib/cli/util/console-formatters.js +42 -0
  108. package/lib/cli/util/guess-agent.d.ts +7 -0
  109. package/lib/cli/util/guess-agent.js +32 -0
  110. package/lib/cli/util/npm.d.ts +4 -0
  111. package/lib/cli/util/npm.js +34 -0
  112. package/lib/cli/util/trap-errors.d.ts +6 -0
  113. package/lib/cli/util/trap-errors.js +17 -0
  114. package/lib/cli/util/yargs-helpers.d.ts +22 -0
  115. package/lib/cli/util/yargs-helpers.js +49 -0
  116. package/lib/cli/version.d.ts +3 -0
  117. package/lib/cli/version.js +22 -0
  118. package/lib/commands/context.d.ts +40 -0
  119. package/lib/commands/context.js +158 -0
  120. package/lib/commands/deploy.d.ts +13 -0
  121. package/lib/commands/deploy.js +18 -0
  122. package/lib/commands/docs.d.ts +18 -0
  123. package/lib/commands/docs.js +33 -0
  124. package/lib/commands/doctor.d.ts +4 -0
  125. package/lib/commands/doctor.js +69 -0
  126. package/lib/commands/flags/flags.d.ts +13 -0
  127. package/lib/commands/flags/flags.js +30 -0
  128. package/lib/commands/flags/interactive-handler.d.ts +16 -0
  129. package/lib/commands/flags/interactive-handler.js +71 -0
  130. package/lib/commands/flags/obsolete-flags.d.ts +1 -0
  131. package/lib/commands/flags/obsolete-flags.js +9 -0
  132. package/lib/commands/flags/operations.d.ts +80 -0
  133. package/lib/commands/flags/operations.js +467 -0
  134. package/lib/commands/flags/router.d.ts +18 -0
  135. package/lib/commands/flags/router.js +60 -0
  136. package/lib/commands/flags/types.d.ts +12 -0
  137. package/lib/commands/flags/types.js +12 -0
  138. package/lib/commands/flags/validator.d.ts +22 -0
  139. package/lib/commands/flags/validator.js +95 -0
  140. package/lib/commands/init/index.d.ts +1 -0
  141. package/lib/commands/init/index.js +18 -0
  142. package/lib/commands/init/init-hooks.d.ts +41 -0
  143. package/lib/commands/init/init-hooks.js +85 -0
  144. package/lib/commands/init/init.d.ts +139 -0
  145. package/lib/commands/init/init.js +788 -0
  146. package/lib/commands/init/os.d.ts +8 -0
  147. package/lib/commands/init/os.js +91 -0
  148. package/lib/commands/init/package-manager.d.ts +15 -0
  149. package/lib/commands/init/package-manager.js +14 -0
  150. package/lib/commands/language.d.ts +30 -0
  151. package/lib/commands/language.js +46 -0
  152. package/lib/commands/list-stacks.d.ts +21 -0
  153. package/lib/commands/list-stacks.js +28 -0
  154. package/lib/commands/migrate.d.ts +316 -0
  155. package/lib/commands/migrate.js +801 -0
  156. package/lib/context-providers.d.ts +1 -0
  157. package/lib/context-providers.js +19 -0
  158. package/lib/cxapp/cloud-assembly.d.ts +79 -0
  159. package/lib/cxapp/cloud-assembly.js +109 -0
  160. package/lib/cxapp/cloud-executable.d.ts +51 -0
  161. package/lib/cxapp/cloud-executable.js +123 -0
  162. package/lib/cxapp/environments.d.ts +8 -0
  163. package/lib/cxapp/environments.js +66 -0
  164. package/lib/cxapp/exec.d.ts +14 -0
  165. package/lib/cxapp/exec.js +133 -0
  166. package/lib/cxapp/index.d.ts +4 -0
  167. package/lib/cxapp/index.js +21 -0
  168. package/lib/index.d.ts +2 -0
  169. package/lib/index.js +364043 -0
  170. package/lib/index_bg.wasm +0 -0
  171. package/lib/init-templates/.init-version.json +1 -0
  172. package/lib/init-templates/.no-packagejson-validator +0 -0
  173. package/lib/init-templates/.recommended-feature-flags.json +86 -0
  174. package/lib/init-templates/LICENSE +16 -0
  175. package/lib/init-templates/app/csharp/.template.gitignore +342 -0
  176. package/lib/init-templates/app/csharp/README.md +14 -0
  177. package/lib/init-templates/app/csharp/cdk.template.json +15 -0
  178. package/lib/init-templates/app/csharp/src/%name.PascalCased%/%name.PascalCased%.template.csproj +20 -0
  179. package/lib/init-templates/app/csharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.cs +13 -0
  180. package/lib/init-templates/app/csharp/src/%name.PascalCased%/GlobalSuppressions.cs +1 -0
  181. package/lib/init-templates/app/csharp/src/%name.PascalCased%/Program.template.cs +44 -0
  182. package/lib/init-templates/app/csharp/src/%name.PascalCased%.template.sln +18 -0
  183. package/lib/init-templates/app/fsharp/.template.gitignore +342 -0
  184. package/lib/init-templates/app/fsharp/README.md +18 -0
  185. package/lib/init-templates/app/fsharp/cdk.template.json +14 -0
  186. package/lib/init-templates/app/fsharp/src/%name.PascalCased%/%name.PascalCased%.template.fsproj +25 -0
  187. package/lib/init-templates/app/fsharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.fs +8 -0
  188. package/lib/init-templates/app/fsharp/src/%name.PascalCased%/Program.template.fs +11 -0
  189. package/lib/init-templates/app/fsharp/src/%name.PascalCased%.template.sln +18 -0
  190. package/lib/init-templates/app/go/%name%.template.go +70 -0
  191. package/lib/init-templates/app/go/%name%_test.template.go +26 -0
  192. package/lib/init-templates/app/go/.template.gitignore +19 -0
  193. package/lib/init-templates/app/go/README.md +12 -0
  194. package/lib/init-templates/app/go/cdk.template.json +13 -0
  195. package/lib/init-templates/app/go/go.template.mod +9 -0
  196. package/lib/init-templates/app/info.json +4 -0
  197. package/lib/init-templates/app/java/.template.gitignore +13 -0
  198. package/lib/init-templates/app/java/README.md +18 -0
  199. package/lib/init-templates/app/java/cdk.json +13 -0
  200. package/lib/init-templates/app/java/pom.xml +60 -0
  201. package/lib/init-templates/app/java/src/main/java/com/myorg/%name.PascalCased%App.template.java +42 -0
  202. package/lib/init-templates/app/java/src/main/java/com/myorg/%name.PascalCased%Stack.template.java +24 -0
  203. package/lib/init-templates/app/java/src/test/java/com/myorg/%name.PascalCased%Test.template.java +26 -0
  204. package/lib/init-templates/app/javascript/.template.gitignore +5 -0
  205. package/lib/init-templates/app/javascript/.template.npmignore +3 -0
  206. package/lib/init-templates/app/javascript/README.md +12 -0
  207. package/lib/init-templates/app/javascript/bin/%name%.template.js +21 -0
  208. package/lib/init-templates/app/javascript/cdk.template.json +15 -0
  209. package/lib/init-templates/app/javascript/jest.config.js +4 -0
  210. package/lib/init-templates/app/javascript/lib/%name%-stack.template.js +23 -0
  211. package/lib/init-templates/app/javascript/package.json +20 -0
  212. package/lib/init-templates/app/javascript/test/%name%.test.template.js +17 -0
  213. package/lib/init-templates/app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py +19 -0
  214. package/lib/init-templates/app/python/%name.PythonModule%/__init__.py +0 -0
  215. package/lib/init-templates/app/python/.template.gitignore +10 -0
  216. package/lib/init-templates/app/python/README.template.md +58 -0
  217. package/lib/init-templates/app/python/app.template.py +28 -0
  218. package/lib/init-templates/app/python/cdk.template.json +15 -0
  219. package/lib/init-templates/app/python/requirements-dev.txt +1 -0
  220. package/lib/init-templates/app/python/requirements.txt +2 -0
  221. package/lib/init-templates/app/python/source.bat +13 -0
  222. package/lib/init-templates/app/python/tests/__init__.py +0 -0
  223. package/lib/init-templates/app/python/tests/unit/__init__.py +0 -0
  224. package/lib/init-templates/app/python/tests/unit/test_%name.PythonModule%_stack.template.py +15 -0
  225. package/lib/init-templates/app/typescript/.template.gitignore +8 -0
  226. package/lib/init-templates/app/typescript/.template.npmignore +6 -0
  227. package/lib/init-templates/app/typescript/README.md +14 -0
  228. package/lib/init-templates/app/typescript/bin/%name%.template.ts +20 -0
  229. package/lib/init-templates/app/typescript/cdk.template.json +17 -0
  230. package/lib/init-templates/app/typescript/jest.config.js +9 -0
  231. package/lib/init-templates/app/typescript/lib/%name%-stack.template.ts +16 -0
  232. package/lib/init-templates/app/typescript/package.json +26 -0
  233. package/lib/init-templates/app/typescript/test/%name%.test.template.ts +17 -0
  234. package/lib/init-templates/app/typescript/tsconfig.json +32 -0
  235. package/lib/init-templates/lib/info.json +4 -0
  236. package/lib/init-templates/lib/typescript/.template.gitignore +8 -0
  237. package/lib/init-templates/lib/typescript/.template.npmignore +6 -0
  238. package/lib/init-templates/lib/typescript/README.template.md +12 -0
  239. package/lib/init-templates/lib/typescript/jest.config.js +9 -0
  240. package/lib/init-templates/lib/typescript/lib/index.template.ts +21 -0
  241. package/lib/init-templates/lib/typescript/package.json +24 -0
  242. package/lib/init-templates/lib/typescript/test/%name%.test.template.ts +18 -0
  243. package/lib/init-templates/lib/typescript/tsconfig.json +32 -0
  244. package/lib/init-templates/sample-app/csharp/.template.gitignore +342 -0
  245. package/lib/init-templates/sample-app/csharp/README.template.md +19 -0
  246. package/lib/init-templates/sample-app/csharp/cdk.template.json +15 -0
  247. package/lib/init-templates/sample-app/csharp/src/%name.PascalCased%/%name.PascalCased%.template.csproj +20 -0
  248. package/lib/init-templates/sample-app/csharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.cs +24 -0
  249. package/lib/init-templates/sample-app/csharp/src/%name.PascalCased%/GlobalSuppressions.cs +1 -0
  250. package/lib/init-templates/sample-app/csharp/src/%name.PascalCased%/Program.template.cs +15 -0
  251. package/lib/init-templates/sample-app/csharp/src/%name.PascalCased%.template.sln +18 -0
  252. package/lib/init-templates/sample-app/fsharp/.template.gitignore +342 -0
  253. package/lib/init-templates/sample-app/fsharp/README.template.md +20 -0
  254. package/lib/init-templates/sample-app/fsharp/cdk.template.json +14 -0
  255. package/lib/init-templates/sample-app/fsharp/src/%name.PascalCased%/%name.PascalCased%.template.fsproj +25 -0
  256. package/lib/init-templates/sample-app/fsharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.fs +14 -0
  257. package/lib/init-templates/sample-app/fsharp/src/%name.PascalCased%/Program.template.fs +11 -0
  258. package/lib/init-templates/sample-app/fsharp/src/%name.PascalCased%.template.sln +18 -0
  259. package/lib/init-templates/sample-app/go/%name%.template.go +73 -0
  260. package/lib/init-templates/sample-app/go/%name%_test.template.go +25 -0
  261. package/lib/init-templates/sample-app/go/.template.gitignore +19 -0
  262. package/lib/init-templates/sample-app/go/README.md +12 -0
  263. package/lib/init-templates/sample-app/go/cdk.template.json +13 -0
  264. package/lib/init-templates/sample-app/go/go.template.mod +9 -0
  265. package/lib/init-templates/sample-app/info.json +4 -0
  266. package/lib/init-templates/sample-app/java/.template.gitignore +13 -0
  267. package/lib/init-templates/sample-app/java/README.template.md +19 -0
  268. package/lib/init-templates/sample-app/java/cdk.json +13 -0
  269. package/lib/init-templates/sample-app/java/pom.xml +55 -0
  270. package/lib/init-templates/sample-app/java/src/main/java/com/myorg/%name.PascalCased%App.template.java +13 -0
  271. package/lib/init-templates/sample-app/java/src/main/java/com/myorg/%name.PascalCased%Stack.template.java +29 -0
  272. package/lib/init-templates/sample-app/java/src/test/java/com/myorg/%name.PascalCased%StackTest.template.java +27 -0
  273. package/lib/init-templates/sample-app/javascript/.template.gitignore +5 -0
  274. package/lib/init-templates/sample-app/javascript/.template.npmignore +3 -0
  275. package/lib/init-templates/sample-app/javascript/README.template.md +13 -0
  276. package/lib/init-templates/sample-app/javascript/bin/%name%.template.js +6 -0
  277. package/lib/init-templates/sample-app/javascript/cdk.template.json +15 -0
  278. package/lib/init-templates/sample-app/javascript/jest.config.js +4 -0
  279. package/lib/init-templates/sample-app/javascript/lib/%name%-stack.template.js +25 -0
  280. package/lib/init-templates/sample-app/javascript/package.json +20 -0
  281. package/lib/init-templates/sample-app/javascript/test/%name%.test.template.js +16 -0
  282. package/lib/init-templates/sample-app/javascript/tsconfig.json +34 -0
  283. package/lib/init-templates/sample-app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py +26 -0
  284. package/lib/init-templates/sample-app/python/%name.PythonModule%/__init__.py +0 -0
  285. package/lib/init-templates/sample-app/python/.template.gitignore +22 -0
  286. package/lib/init-templates/sample-app/python/README.template.md +65 -0
  287. package/lib/init-templates/sample-app/python/app.template.py +11 -0
  288. package/lib/init-templates/sample-app/python/cdk.template.json +15 -0
  289. package/lib/init-templates/sample-app/python/requirements-dev.txt +1 -0
  290. package/lib/init-templates/sample-app/python/requirements.txt +2 -0
  291. package/lib/init-templates/sample-app/python/source.bat +13 -0
  292. package/lib/init-templates/sample-app/python/tests/__init__.py +0 -0
  293. package/lib/init-templates/sample-app/python/tests/unit/__init__.py +0 -0
  294. package/lib/init-templates/sample-app/python/tests/unit/test_%name.PythonModule%_stack.template.py +21 -0
  295. package/lib/init-templates/sample-app/typescript/.template.gitignore +8 -0
  296. package/lib/init-templates/sample-app/typescript/.template.npmignore +6 -0
  297. package/lib/init-templates/sample-app/typescript/README.template.md +15 -0
  298. package/lib/init-templates/sample-app/typescript/bin/%name%.template.ts +6 -0
  299. package/lib/init-templates/sample-app/typescript/cdk.template.json +17 -0
  300. package/lib/init-templates/sample-app/typescript/jest.config.js +9 -0
  301. package/lib/init-templates/sample-app/typescript/lib/%name%-stack.template.ts +19 -0
  302. package/lib/init-templates/sample-app/typescript/package.json +26 -0
  303. package/lib/init-templates/sample-app/typescript/test/%name%.test.template.ts +17 -0
  304. package/lib/init-templates/sample-app/typescript/tsconfig.json +32 -0
  305. package/lib/util.d.ts +1 -0
  306. package/lib/util.js +19 -0
  307. package/package.json +170 -0
  308. package/release.txt +2 -0
@@ -0,0 +1,158 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.contextHandler = contextHandler;
4
+ const toolkit_lib_1 = require("@aws-cdk/toolkit-lib");
5
+ const chalk = require("chalk");
6
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
7
+ const picomatch = require("picomatch");
8
+ const display_version_1 = require("../cli/display-version");
9
+ const tables_1 = require("../cli/tables");
10
+ const user_configuration_1 = require("../cli/user-configuration");
11
+ async function contextHandler(options) {
12
+ const ioHelper = options.ioHelper;
13
+ if (options.clear) {
14
+ options.context.clear();
15
+ await options.context.save(user_configuration_1.PROJECT_CONTEXT);
16
+ await ioHelper.defaults.info('All context values cleared.');
17
+ }
18
+ else if (options.reset) {
19
+ await invalidateContext(ioHelper, options.context, options.reset, options.force ?? false);
20
+ await options.context.save(user_configuration_1.PROJECT_CONTEXT);
21
+ }
22
+ else {
23
+ // List -- support '--json' flag
24
+ if (options.json) {
25
+ /* c8 ignore start */
26
+ const contextValues = options.context.all;
27
+ await ioHelper.defaults.result(JSON.stringify(contextValues, undefined, 2));
28
+ /* c8 ignore stop */
29
+ }
30
+ else {
31
+ await listContext(ioHelper, options.context);
32
+ }
33
+ }
34
+ await (0, display_version_1.displayVersionMessage)(ioHelper);
35
+ return 0;
36
+ }
37
+ async function listContext(ioHelper, context) {
38
+ const keys = contextKeys(context);
39
+ if (keys.length === 0) {
40
+ await ioHelper.defaults.info('This CDK application does not have any saved context values yet.');
41
+ await ioHelper.defaults.info('');
42
+ await ioHelper.defaults.info('Context will automatically be saved when you synthesize CDK apps');
43
+ await ioHelper.defaults.info('that use environment context information like AZ information, VPCs,');
44
+ await ioHelper.defaults.info('SSM parameters, and so on.');
45
+ return;
46
+ }
47
+ // Print config by default
48
+ const data_out = [[chalk.green('#'), chalk.green('Key'), chalk.green('Value')]];
49
+ for (const [i, key] of keys) {
50
+ const jsonWithoutNewlines = JSON.stringify(context.all[key], undefined, 2).replace(/\s+/g, ' ');
51
+ data_out.push([i, key, jsonWithoutNewlines]);
52
+ }
53
+ await ioHelper.defaults.info('Context found in %s:', chalk.blue(user_configuration_1.PROJECT_CONFIG));
54
+ await ioHelper.defaults.info('');
55
+ await ioHelper.defaults.info((0, tables_1.renderTable)(data_out, process.stdout.columns));
56
+ // eslint-disable-next-line @stylistic/max-len
57
+ await ioHelper.defaults.info(`Run ${chalk.blue('cdk context --reset KEY_OR_NUMBER')} to remove a context key. It will be refreshed on the next CDK synthesis run.`);
58
+ }
59
+ async function invalidateContext(ioHelper, context, key, force) {
60
+ const i = parseInt(key, 10);
61
+ if (`${i}` === key) {
62
+ // was a number and we fully parsed it.
63
+ key = keyByNumber(context, i);
64
+ }
65
+ // Unset!
66
+ if (context.has(key)) {
67
+ context.unset(key);
68
+ // check if the value was actually unset.
69
+ if (!context.has(key)) {
70
+ await ioHelper.defaults.info('Context value %s reset. It will be refreshed on next synthesis', chalk.blue(key));
71
+ return;
72
+ }
73
+ // Value must be in readonly bag
74
+ await ioHelper.defaults.error('Only context values specified in %s can be reset through the CLI', chalk.blue(user_configuration_1.PROJECT_CONTEXT));
75
+ if (!force) {
76
+ throw new toolkit_lib_1.ToolkitError('ReadonlyContextKey', `Cannot reset readonly context value with key: ${key}`);
77
+ }
78
+ }
79
+ // check if value is expression matching keys
80
+ const matches = keysByExpression(context, key);
81
+ if (matches.length > 0) {
82
+ matches.forEach((match) => {
83
+ context.unset(match);
84
+ });
85
+ const { unset, readonly } = getUnsetAndReadonly(context, matches);
86
+ // output the reset values
87
+ await printUnset(ioHelper, unset);
88
+ // warn about values not reset
89
+ await printReadonly(ioHelper, readonly);
90
+ // throw when none of the matches were reset
91
+ if (!force && unset.length === 0) {
92
+ throw new toolkit_lib_1.ToolkitError('NoResettableContextValues', 'None of the matched context values could be reset');
93
+ }
94
+ return;
95
+ }
96
+ if (!force) {
97
+ throw new toolkit_lib_1.ToolkitError('ContextKeyNotFound', `No context value matching key: ${key}`);
98
+ }
99
+ }
100
+ async function printUnset(ioHelper, unset) {
101
+ if (unset.length === 0)
102
+ return;
103
+ await ioHelper.defaults.info('The following matched context values reset. They will be refreshed on next synthesis');
104
+ for (const match of unset) {
105
+ await ioHelper.defaults.info(' %s', match);
106
+ }
107
+ }
108
+ async function printReadonly(ioHelper, readonly) {
109
+ if (readonly.length === 0)
110
+ return;
111
+ await ioHelper.defaults.warn('The following matched context values could not be reset through the CLI');
112
+ for (const match of readonly) {
113
+ await ioHelper.defaults.info(' %s', match);
114
+ }
115
+ await ioHelper.defaults.info('');
116
+ await ioHelper.defaults.info('This usually means they are configured in %s or %s', chalk.blue(user_configuration_1.PROJECT_CONFIG), chalk.blue(user_configuration_1.USER_DEFAULTS));
117
+ }
118
+ function keysByExpression(context, expression) {
119
+ const matchesExpression = picomatch(expression);
120
+ return context.keys.filter(key => matchesExpression(key));
121
+ }
122
+ function getUnsetAndReadonly(context, matches) {
123
+ return matches.reduce((acc, match) => {
124
+ if (context.has(match)) {
125
+ acc.readonly.push(match);
126
+ }
127
+ else {
128
+ acc.unset.push(match);
129
+ }
130
+ return acc;
131
+ }, { unset: [], readonly: [] });
132
+ }
133
+ function keyByNumber(context, n) {
134
+ for (const [i, key] of contextKeys(context)) {
135
+ if (n === i) {
136
+ return key;
137
+ }
138
+ }
139
+ throw new toolkit_lib_1.ToolkitError('ContextKeyNumberNotFound', `No context key with number: ${n}`);
140
+ }
141
+ /**
142
+ * Return enumerated keys in a definitive order
143
+ */
144
+ function contextKeys(context) {
145
+ const keys = context.keys;
146
+ keys.sort();
147
+ return enumerate1(keys);
148
+ }
149
+ function enumerate1(xs) {
150
+ const ret = new Array();
151
+ let i = 1;
152
+ for (const x of xs) {
153
+ ret.push([i, x]);
154
+ i += 1;
155
+ }
156
+ return ret;
157
+ }
158
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFxREEsd0NBd0JDO0FBN0VELHNEQUFvRDtBQUNwRCwrQkFBK0I7QUFDL0IsaUVBQWlFO0FBQ2pFLHVDQUF3QztBQUd4Qyw0REFBK0Q7QUFDL0QsMENBQTRDO0FBQzVDLGtFQUEyRjtBQTZDcEYsS0FBSyxVQUFVLGNBQWMsQ0FBQyxPQUF1QjtJQUMxRCxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDO0lBRWxDLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2xCLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDeEIsTUFBTSxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxvQ0FBZSxDQUFDLENBQUM7UUFDNUMsTUFBTSxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO0lBQzlELENBQUM7U0FBTSxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN6QixNQUFNLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsQ0FBQztRQUMxRixNQUFNLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLG9DQUFlLENBQUMsQ0FBQztJQUM5QyxDQUFDO1NBQU0sQ0FBQztRQUNOLGdDQUFnQztRQUNoQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNqQixxQkFBcUI7WUFDckIsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7WUFDMUMsTUFBTSxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRSxTQUFTLEVBQUUsQ0FBQyxD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Q0FBQyxPQUFnQjtJQUNuQyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO0lBQzFCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNaLE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzFCLENBQUM7QUFFRCxTQUFTLFVBQVUsQ0FBSSxFQUFPO0lBQzVCLE1BQU0sR0FBRyxHQUFHLElBQUksS0FBSyxFQUFlLENBQUM7SUFDckMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ1YsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUNuQixHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNULENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUb29sa2l0RXJyb3IgfSBmcm9tICdAYXdzLWNkay90b29sa2l0LWxpYic7XG5pbXBvcnQgKiBhcyBjaGFsayBmcm9tICdjaGFsayc7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuaW1wb3J0IHBpY29tYXRjaCA9IHJlcXVpcmUoJ3BpY29tYXRjaCcpO1xuaW1wb3J0IHR5cGUgeyBDb250ZXh0IH0gZnJvbSAnLi4vYXBpL2NvbnRleHQnO1xuaW1wb3J0IHR5cGUgeyBJb0hlbHBlciB9IGZyb20gJy4uL2FwaS1wcml2YXRlJztcbmltcG9ydCB7IGRpc3BsYXlWZXJzaW9uTWVzc2FnZSB9IGZyb20gJy4uL2NsaS9kaXNwbGF5LXZlcnNpb24nO1xuaW1wb3J0IHsgcmVuZGVyVGFibGUgfSBmcm9tICcuLi9jbGkvdGFibGVzJztcbmltcG9ydCB7IFBST0pFQ1RfQ09ORklHLCBQUk9KRUNUX0NPTlRFWFQsIFVTRVJfREVGQVVMVFMgfSBmcm9tICcuLi9jbGkvdXNlci1jb25maWd1cmF0aW9uJztcblxuLyoqXG4gKiBPcHRpb25zIGZvciB0aGUgY29udGV4dCBjb21tYW5kXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGV4dE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGNvbnRleHQgb2JqZWN0IHNvdXJjZWQgZnJvbSBhbGwgY29udGV4dCBsb2NhdGlvbnNcbiAgICovXG4gIHJlYWRvbmx5IGNvbnRleHQ6IENvbnRleHQ7XG5cbiAgLyoqXG4gICAqIFRoZSBjb250ZXh0IGtleSAob3IgaXRzIGluZGV4KSB0byByZXNldFxuICAgKlxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIHJlYWRvbmx5IHJlc2V0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJZ25vcmUgbWlzc2luZyBrZXkgZXJyb3JcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGZvcmNlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ2xlYXIgYWxsIGNvbnRleHRcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGNsZWFyPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVXNlIEpTT04gb3V0cHV0IGluc3RlYWQgb2YgWUFNTCB3aGVuIHRlbXBsYXRlcyBhcmUgcHJpbnRlZCB0byBTVERPVVRcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGpzb24/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJb0hlbHBlciBmb3IgbWVzc2FnaW5nLlxuICAgKi9cbiAgcmVhZG9ubHkgaW9IZWxwZXI6IElvSGVscGVyO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY29udGV4dEhhbmRsZXIob3B0aW9uczogQ29udGV4dE9wdGlvbnMpOiBQcm9taXNlPG51bWJlcj4ge1xuICBjb25zdCBpb0hlbHBlciA9IG9wdGlvbnMuaW9IZWxwZXI7XG5cbiAgaWYgKG9wdGlvbnMuY2xlYXIpIHtcbiAgICBvcHRpb25zLmNvbnRleHQuY2xlYXIoKTtcbiAgICBhd2FpdCBvcHRpb25zLmNvbnRleHQuc2F2ZShQUk9KRUNUX0NPTlRFWFQpO1xuICAgIGF3YWl0IGlvSGVscGVyLmRlZmF1bHRzLmluZm8oJ0FsbCBjb250ZXh0IHZhbHVlcyBjbGVhcmVkLicpO1xuICB9IGVsc2UgaWYgKG9wdGlvbnMucmVzZXQpIHtcbiAgICBhd2FpdCBpbnZhbGlkYXRlQ29udGV4dChpb0hlbHBlciwgb3B0aW9ucy5jb250ZXh0LCBvcHRpb25zLnJlc2V0LCBvcHRpb25zLmZvcmNlID8/IGZhbHNlKTtcbiAgICBhd2FpdCBvcHRpb25zLmNvbnRleHQuc2F2ZShQUk9KRUNUX0NPTlRFWFQpO1xuICB9IGVsc2Uge1xuICAgIC8vIExpc3QgLS0gc3VwcG9ydCAnLS1qc29uJyBmbGFnXG4gICAgaWYgKG9wdGlvbnMuanNvbikge1xuICAgICAgLyogYzggaWdub3JlIHN0YXJ0ICovXG4gICAgICBjb25zdCBjb250ZXh0VmFsdWVzID0gb3B0aW9ucy5jb250ZXh0LmFsbDtcbiAgICAgIGF3YWl0IGlvSGVscGVyLmRlZmF1bHRzLnJlc3VsdChKU09OLnN0cmluZ2lmeShjb250ZXh0VmFsdWVzLCB1bmRlZmluZWQsIDIpKTtcbiAgICAgIC8qIGM4IGlnbm9yZSBzdG9wICovXG4gICAgfSBlbHNlIHtcbiAgICAgIGF3YWl0IGxpc3RDb250ZXh0KGlvSGVscGVyLCBvcHRpb25zLmNvbnRleHQpO1xuICAgIH1cbiAgfVxuICBhd2FpdCBkaXNwbGF5VmVyc2lvbk1lc3NhZ2UoaW9IZWxwZXIpO1xuXG4gIHJldHVybiAwO1xufVxuXG5hc3luYyBmdW5jdGlvbiBsaXN0Q29udGV4dChpb0hlbHBlcjogSW9IZWxwZXIsIGNvbnRleHQ6IENvbnRleHQpIHtcbiAgY29uc3Qga2V5cyA9IGNvbnRleHRLZXlzKGNvbnRleHQpO1xuXG4gIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkge1xuICAgIGF3YWl0IGlvSGVscGVyLmRlZmF1bHRzLmluZm8oJ1RoaXMgQ0RLIGFwcGxpY2F0aW9uIGRvZXMgbm90IGhhdmUgYW55IHNhdmVkIGNvbnRleHQgdmFsdWVzIHlldC4nKTtcbiAgICBhd2FpdCBpb0hlbHBlci5kZWZhdWx0cy5pbmZvKCcnKTtcbiAgICBhd2FpdCBpb0hlbHBlci5kZWZhdWx0cy5pbmZvKCdDb250ZXh0IHdpbGwgYXV0b21hdGljYWxseSBiZSBzYXZlZCB3aGVuIHlvdSBzeW50aGVzaXplIENESyBhcHBzJyk7XG4gICAgYXdhaXQgaW9IZWxwZXIuZGVmYXVsdHMuaW5mbygndGhhdCB1c2UgZW52aXJvbm1lbnQgY29udGV4dCBpbmZvcm1hdGlvbiBsaWtlIEFaIGluZm9ybWF0aW9uLCBWUENzLCcpO1xuICAgIGF3YWl0IGlvSGVscGVyLmRlZmF1bHRzLmluZm8oJ1NTTSBwYXJhbWV0ZXJzLCBhbmQgc28gb24uJyk7XG5cbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBQcmludCBjb25maWcgYnkgZGVmYXVsdFxuICBjb25zdCBkYXRhX291dDogYW55W10gPSBbW2NoYWxrLmdyZWVuKCcjJyksIGNoYWxrLmdyZWVuKCdLZXknKSwgY2hhbGsuZ3JlZW4oJ1ZhbHVlJyldXTtcbiAgZm9yIChjb25zdCBbaSwga2V5XSBvZiBrZXlzKSB7XG4gICAgY29uc3QganNvbldpdGhvdXROZXdsaW5lcyA9IEpTT04uc3RyaW5naWZ5KGNvbnRleHQuYWxsW2tleV0sIHVuZGVmaW5lZCwgMikucmVwbGFjZSgvXFxzKy9nLCAnICcpO1xuICAgIGRhdGFfb3V0LnB1c2goW2ksIGtleSwganNvbldpdGhvdXROZXdsaW5lc10pO1xuICB9XG4gIGF3YWl0IGlvSGVscGVyLmRlZmF1bHRzLmluZm8oJ0NvbnRleHQgZm91bmQgaW4gJXM6JywgY2hhbGsuYmx1ZShQUk9KRUNUX0NPTkZJRykpO1xuICBhd2FpdCBpb0hlbHBlci5kZWZhdWx0cy5pbmZvKCcnKTtcbiAgYXdhaXQgaW9IZWxwZXIuZGVmYXVsdHMuaW5mbyhyZW5kZXJUYWJsZShkYXRhX291dCwgcHJvY2Vzcy5zdGRvdXQuY29sdW1ucykpO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAc3R5bGlzdGljL21heC1sZW5cbiAgYXdhaXQgaW9IZWxwZXIuZGVmYXVsdHMuaW5mbyhgUnVuICR7Y2hhbGsuYmx1ZSgnY2RrIGNvbnRleHQgLS1yZXNldCBLRVlfT1JfTlVNQkVSJyl9IHRvIHJlbW92ZSBhIGNvbnRleHQga2V5LiBJdCB3aWxsIGJlIHJlZnJlc2hlZCBvbiB0aGUgbmV4dCBDREsgc3ludGhlc2lzIHJ1bi5gKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaW52YWxpZGF0ZUNvbnRleHQoaW9IZWxwZXI6IElvSGVscGVyLCBjb250ZXh0OiBDb250ZXh0LCBrZXk6IHN0cmluZywgZm9yY2U6IGJvb2xlYW4pIHtcbiAgY29uc3QgaSA9IHBhcnNlSW50KGtleSwgMTApO1xuICBpZiAoYCR7aX1gID09PSBrZXkpIHtcbiAgICAvLyB3YXMgYSBudW1iZXIgYW5kIHdlIGZ1bGx5IHBhcnNlZCBpdC5cbiAgICBrZXkgPSBrZXlCeU51bWJlcihjb250ZXh0LCBpKTtcbiAgfVxuICAvLyBVbnNldCFcbiAgaWYgKGNvbnRleHQuaGFzKGtleSkpIHtcbiAgICBjb250ZXh0LnVuc2V0KGtleSk7XG4gICAgLy8gY2hlY2sgaWYgdGhlIHZhbHVlIHdhcyBhY3R1YWxseSB1bnNldC5cbiAgICBpZiAoIWNvbnRleHQuaGFzKGtleSkpIHtcbiAgICAgIGF3YWl0IGlvSGVscGVyLmRlZmF1bHRzLmluZm8oJ0NvbnRleHQgdmFsdWUgJXMgcmVzZXQuIEl0IHdpbGwgYmUgcmVmcmVzaGVkIG9uIG5leHQgc3ludGhlc2lzJywgY2hhbGsuYmx1ZShrZXkpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBWYWx1ZSBtdXN0IGJlIGluIHJlYWRvbmx5IGJhZ1xuICAgIGF3YWl0IGlvSGVscGVyLmRlZmF1bHRzLmVycm9yKCdPbmx5IGNvbnRleHQgdmFsdWVzIHNwZWNpZmllZCBpbiAlcyBjYW4gYmUgcmVzZXQgdGhyb3VnaCB0aGUgQ0xJJywgY2hhbGsuYmx1ZShQUk9KRUNUX0NPTlRFWFQpKTtcbiAgICBpZiAoIWZvcmNlKSB7XG4gICAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKCdSZWFkb25seUNvbnRleHRLZXknLCBgQ2Fubm90IHJlc2V0IHJlYWRvbmx5IGNvbnRleHQgdmFsdWUgd2l0aCBrZXk6ICR7a2V5fWApO1xuICAgIH1cbiAgfVxuXG4gIC8vIGNoZWNrIGlmIHZhbHVlIGlzIGV4cHJlc3Npb24gbWF0Y2hpbmcga2V5c1xuICBjb25zdCBtYXRjaGVzID0ga2V5c0J5RXhwcmVzc2lvbihjb250ZXh0LCBrZXkpO1xuXG4gIGlmIChtYXRjaGVzLmxlbmd0aCA+IDApIHtcbiAgICBtYXRjaGVzLmZvckVhY2goKG1hdGNoKSA9PiB7XG4gICAgICBjb250ZXh0LnVuc2V0KG1hdGNoKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IHsgdW5zZXQsIHJlYWRvbmx5IH0gPSBnZXRVbnNldEFuZFJlYWRvbmx5KGNvbnRleHQsIG1hdGNoZXMpO1xuXG4gICAgLy8gb3V0cHV0IHRoZSByZXNldCB2YWx1ZXNcbiAgICBhd2FpdCBwcmludFVuc2V0KGlvSGVscGVyLCB1bnNldCk7XG5cbiAgICAvLyB3YXJuIGFib3V0IHZhbHVlcyBub3QgcmVzZXRcbiAgICBhd2FpdCBwcmludFJlYWRvbmx5KGlvSGVscGVyLCByZWFkb25seSk7XG5cbiAgICAvLyB0aHJvdyB3aGVuIG5vbmUgb2YgdGhlIG1hdGNoZXMgd2VyZSByZXNldFxuICAgIGlmICghZm9yY2UgJiYgdW5zZXQubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKCdOb1Jlc2V0dGFibGVDb250ZXh0VmFsdWVzJywgJ05vbmUgb2YgdGhlIG1hdGNoZWQgY29udGV4dCB2YWx1ZXMgY291bGQgYmUgcmVzZXQnKTtcbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmICghZm9yY2UpIHtcbiAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKCdDb250ZXh0S2V5Tm90Rm91bmQnLCBgTm8gY29udGV4dCB2YWx1ZSBtYXRjaGluZyBrZXk6ICR7a2V5fWApO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHByaW50VW5zZXQoaW9IZWxwZXI6IElvSGVscGVyLCB1bnNldDogc3RyaW5nW10pIHtcbiAgaWYgKHVuc2V0Lmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICBhd2FpdCBpb0hlbHBlci5kZWZhdWx0cy5pbmZvKCdUaGUgZm9sbG93aW5nIG1hdGNoZWQgY29udGV4dCB2YWx1ZXMgcmVzZXQuIFRoZXkgd2lsbCBiZSByZWZyZXNoZWQgb24gbmV4dCBzeW50aGVzaXMnKTtcbiAgZm9yIChjb25zdCBtYXRjaCBvZiB1bnNldCkge1xuICAgIGF3YWl0IGlvSGVscGVyLmRlZmF1bHRzLmluZm8oJyAgJXMnLCBtYXRjaCk7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gcHJpbnRSZWFkb25seShpb0hlbHBlcjogSW9IZWxwZXIsIHJlYWRvbmx5OiBzdHJpbmdbXSkge1xuICBpZiAocmVhZG9ubHkubGVuZ3RoID09PSAwKSByZXR1cm47XG4gIGF3YWl0IGlvSGVscGVyLmRlZmF1bHRzLndhcm4oJ1RoZSBmb2xsb3dpbmcgbWF0Y2hlZCBjb250ZXh0IHZhbHVlcyBjb3VsZCBub3QgYmUgcmVzZXQgdGhyb3VnaCB0aGUgQ0xJJyk7XG4gIGZvciAoY29uc3QgbWF0Y2ggb2YgcmVhZG9ubHkpIHtcbiAgICBhd2FpdCBpb0hlbHBlci5kZWZhdWx0cy5pbmZvKCcgICVzJywgbWF0Y2gpO1xuICB9XG4gIGF3YWl0IGlvSGVscGVyLmRlZmF1bHRzLmluZm8oJycpO1xuICBhd2FpdCBpb0hlbHBlci5kZWZhdWx0cy5pbmZvKCdUaGlzIHVzdWFsbHkgbWVhbnMgdGhleSBhcmUgY29uZmlndXJlZCBpbiAlcyBvciAlcycsIGNoYWxrLmJsdWUoUFJPSkVDVF9DT05GSUcpLCBjaGFsay5ibHVlKFVTRVJfREVGQVVMVFMpKTtcbn1cblxuZnVuY3Rpb24ga2V5c0J5RXhwcmVzc2lvbihjb250ZXh0OiBDb250ZXh0LCBleHByZXNzaW9uOiBzdHJpbmcpIHtcbiAgY29uc3QgbWF0Y2hlc0V4cHJlc3Npb24gPSBwaWNvbWF0Y2goZXhwcmVzc2lvbik7XG4gIHJldHVybiBjb250ZXh0LmtleXMuZmlsdGVyKGtleSA9PiBtYXRjaGVzRXhwcmVzc2lvbihrZXkpKTtcbn1cblxuZnVuY3Rpb24gZ2V0VW5zZXRBbmRSZWFkb25seShjb250ZXh0OiBDb250ZXh0LCBtYXRjaGVzOiBzdHJpbmdbXSkge1xuICByZXR1cm4gbWF0Y2hlcy5yZWR1Y2U8eyB1bnNldDogc3RyaW5nW107IHJlYWRvbmx5OiBzdHJpbmdbXSB9PigoYWNjLCBtYXRjaCkgPT4ge1xuICAgIGlmIChjb250ZXh0LmhhcyhtYXRjaCkpIHtcbiAgICAgIGFjYy5yZWFkb25seS5wdXNoKG1hdGNoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYWNjLnVuc2V0LnB1c2gobWF0Y2gpO1xuICAgIH1cbiAgICByZXR1cm4gYWNjO1xuICB9LCB7IHVuc2V0OiBbXSwgcmVhZG9ubHk6IFtdIH0pO1xufVxuXG5mdW5jdGlvbiBrZXlCeU51bWJlcihjb250ZXh0OiBDb250ZXh0LCBuOiBudW1iZXIpIHtcbiAgZm9yIChjb25zdCBbaSwga2V5XSBvZiBjb250ZXh0S2V5cyhjb250ZXh0KSkge1xuICAgIGlmIChuID09PSBpKSB7XG4gICAgICByZXR1cm4ga2V5O1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKCdDb250ZXh0S2V5TnVtYmVyTm90Rm91bmQnLCBgTm8gY29udGV4dCBrZXkgd2l0aCBudW1iZXI6ICR7bn1gKTtcbn1cblxuLyoqXG4gKiBSZXR1cm4gZW51bWVyYXRlZCBrZXlzIGluIGEgZGVmaW5pdGl2ZSBvcmRlclxuICovXG5mdW5jdGlvbiBjb250ZXh0S2V5cyhjb250ZXh0OiBDb250ZXh0KTogW251bWJlciwgc3RyaW5nXVtdIHtcbiAgY29uc3Qga2V5cyA9IGNvbnRleHQua2V5cztcbiAga2V5cy5zb3J0KCk7XG4gIHJldHVybiBlbnVtZXJhdGUxKGtleXMpO1xufVxuXG5mdW5jdGlvbiBlbnVtZXJhdGUxPFQ+KHhzOiBUW10pOiBBcnJheTxbbnVtYmVyLCBUXT4ge1xuICBjb25zdCByZXQgPSBuZXcgQXJyYXk8W251bWJlciwgVF0+KCk7XG4gIGxldCBpID0gMTtcbiAgZm9yIChjb25zdCB4IG9mIHhzKSB7XG4gICAgcmV0LnB1c2goW2ksIHhdKTtcbiAgICBpICs9IDE7XG4gIH1cbiAgcmV0dXJuIHJldDtcbn1cbiJdfQ==
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Supported display modes for stack deployment activity
3
+ */
4
+ export declare enum StackActivityProgress {
5
+ /**
6
+ * Displays a progress bar with only the events for the resource currently being deployed
7
+ */
8
+ BAR = "bar",
9
+ /**
10
+ * Displays complete history with all CloudFormation stack events
11
+ */
12
+ EVENTS = "events"
13
+ }
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StackActivityProgress = void 0;
4
+ /**
5
+ * Supported display modes for stack deployment activity
6
+ */
7
+ var StackActivityProgress;
8
+ (function (StackActivityProgress) {
9
+ /**
10
+ * Displays a progress bar with only the events for the resource currently being deployed
11
+ */
12
+ StackActivityProgress["BAR"] = "bar";
13
+ /**
14
+ * Displays complete history with all CloudFormation stack events
15
+ */
16
+ StackActivityProgress["EVENTS"] = "events";
17
+ })(StackActivityProgress || (exports.StackActivityProgress = StackActivityProgress = {}));
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGVwbG95LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBOztHQUVHO0FBQ0gsSUFBWSxxQkFVWDtBQVZELFdBQVkscUJBQXFCO0lBQy9COztPQUVHO0lBQ0gsb0NBQVcsQ0FBQTtJQUVYOztPQUVHO0lBQ0gsMENBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQVZXLHFCQUFxQixxQ0FBckIscUJBQXFCLFFBVWhDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTdXBwb3J0ZWQgZGlzcGxheSBtb2RlcyBmb3Igc3RhY2sgZGVwbG95bWVudCBhY3Rpdml0eVxuICovXG5leHBvcnQgZW51bSBTdGFja0FjdGl2aXR5UHJvZ3Jlc3Mge1xuICAvKipcbiAgICogRGlzcGxheXMgYSBwcm9ncmVzcyBiYXIgd2l0aCBvbmx5IHRoZSBldmVudHMgZm9yIHRoZSByZXNvdXJjZSBjdXJyZW50bHkgYmVpbmcgZGVwbG95ZWRcbiAgICovXG4gIEJBUiA9ICdiYXInLFxuXG4gIC8qKlxuICAgKiBEaXNwbGF5cyBjb21wbGV0ZSBoaXN0b3J5IHdpdGggYWxsIENsb3VkRm9ybWF0aW9uIHN0YWNrIGV2ZW50c1xuICAgKi9cbiAgRVZFTlRTID0gJ2V2ZW50cycsXG59XG4iXX0=
@@ -0,0 +1,18 @@
1
+ import type { IoHelper } from '../api-private';
2
+ export declare const command = "docs";
3
+ export declare const describe = "Opens the reference documentation in a browser";
4
+ export declare const aliases: string[];
5
+ /**
6
+ * Options for the docs command
7
+ */
8
+ export interface DocsOptions {
9
+ /**
10
+ * The command to use to open the browser
11
+ */
12
+ readonly browser: string;
13
+ /**
14
+ * IoHelper for messaging
15
+ */
16
+ readonly ioHelper: IoHelper;
17
+ }
18
+ export declare function docs(options: DocsOptions): Promise<number>;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.aliases = exports.describe = exports.command = void 0;
4
+ exports.docs = docs;
5
+ const childProcess = require("child_process");
6
+ const node_util_1 = require("node:util");
7
+ const chalk = require("chalk");
8
+ exports.command = 'docs';
9
+ exports.describe = 'Opens the reference documentation in a browser';
10
+ exports.aliases = ['doc'];
11
+ async function docs(options) {
12
+ const ioHelper = options.ioHelper;
13
+ const url = 'https://docs.aws.amazon.com/cdk/api/v2/';
14
+ await ioHelper.defaults.info(chalk.green(url));
15
+ const browserCommand = (options.browser).replace(/%u/g, url);
16
+ await ioHelper.defaults.debug(`Opening documentation ${chalk.green(browserCommand)}`);
17
+ const exec = (0, node_util_1.promisify)(childProcess.exec);
18
+ try {
19
+ const { stdout, stderr } = await exec(browserCommand);
20
+ if (stdout) {
21
+ await ioHelper.defaults.debug(stdout);
22
+ }
23
+ if (stderr) {
24
+ await ioHelper.defaults.warn(stderr);
25
+ }
26
+ }
27
+ catch (err) {
28
+ const e = err;
29
+ await ioHelper.defaults.debug(`An error occurred when trying to open a browser: ${e.stack || e.message}`);
30
+ }
31
+ return 0;
32
+ }
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRvY3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBd0JBLG9CQXVCQztBQS9DRCw4Q0FBOEM7QUFDOUMseUNBQXNDO0FBQ3RDLCtCQUErQjtBQUdsQixRQUFBLE9BQU8sR0FBRyxNQUFNLENBQUM7QUFDakIsUUFBQSxRQUFRLEdBQUcsZ0RBQWdELENBQUM7QUFDNUQsUUFBQSxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQWlCeEIsS0FBSyxVQUFVLElBQUksQ0FBQyxPQUFvQjtJQUM3QyxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDO0lBQ2xDLE1BQU0sR0FBRyxHQUFHLHlDQUF5QyxDQUFDO0lBQ3RELE1BQU0sUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQy9DLE1BQU0sY0FBYyxHQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDN0QsTUFBTSxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsS0FBSyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFdEYsTUFBTSxJQUFJLEdBQUcsSUFBQSxxQkFBUyxFQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUUxQyxJQUFJLENBQUM7UUFDSCxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3RELElBQUksTUFBTSxFQUFFLENBQUM7WUFDWCxNQUFNLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hDLENBQUM7UUFDRCxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsTUFBTSxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN2QyxDQUFDO0lBQ0gsQ0FBQztJQUFDLE9BQU8sR0FBWSxFQUFFLENBQUM7UUFDdEIsTUFBTSxDQUFDLEdBQUcsR0FBaUMsQ0FBQztRQUM1QyxNQUFNLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLG9EQUFvRCxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQzVHLENBQUM7SUFFRCxPQUFPLENBQUMsQ0FBQztBQUNYLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjaGlsZFByb2Nlc3MgZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XG5pbXBvcnQgeyBwcm9taXNpZnkgfSBmcm9tICdub2RlOnV0aWwnO1xuaW1wb3J0ICogYXMgY2hhbGsgZnJvbSAnY2hhbGsnO1xuaW1wb3J0IHR5cGUgeyBJb0hlbHBlciB9IGZyb20gJy4uL2FwaS1wcml2YXRlJztcblxuZXhwb3J0IGNvbnN0IGNvbW1hbmQgPSAnZG9jcyc7XG5leHBvcnQgY29uc3QgZGVzY3JpYmUgPSAnT3BlbnMgdGhlIHJlZmVyZW5jZSBkb2N1bWVudGF0aW9uIGluIGEgYnJvd3Nlcic7XG5leHBvcnQgY29uc3QgYWxpYXNlcyA9IFsnZG9jJ107XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgdGhlIGRvY3MgY29tbWFuZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIERvY3NPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBjb21tYW5kIHRvIHVzZSB0byBvcGVuIHRoZSBicm93c2VyXG4gICAqL1xuICByZWFkb25seSBicm93c2VyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElvSGVscGVyIGZvciBtZXNzYWdpbmdcbiAgICovXG4gIHJlYWRvbmx5IGlvSGVscGVyOiBJb0hlbHBlcjtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRvY3Mob3B0aW9uczogRG9jc09wdGlvbnMpOiBQcm9taXNlPG51bWJlcj4ge1xuICBjb25zdCBpb0hlbHBlciA9IG9wdGlvbnMuaW9IZWxwZXI7XG4gIGNvbnN0IHVybCA9ICdodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vY2RrL2FwaS92Mi8nO1xuICBhd2FpdCBpb0hlbHBlci5kZWZhdWx0cy5pbmZvKGNoYWxrLmdyZWVuKHVybCkpO1xuICBjb25zdCBicm93c2VyQ29tbWFuZCA9IChvcHRpb25zLmJyb3dzZXIpLnJlcGxhY2UoLyV1L2csIHVybCk7XG4gIGF3YWl0IGlvSGVscGVyLmRlZmF1bHRzLmRlYnVnKGBPcGVuaW5nIGRvY3VtZW50YXRpb24gJHtjaGFsay5ncmVlbihicm93c2VyQ29tbWFuZCl9YCk7XG5cbiAgY29uc3QgZXhlYyA9IHByb21pc2lmeShjaGlsZFByb2Nlc3MuZXhlYyk7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCB7IHN0ZG91dCwgc3RkZXJyIH0gPSBhd2FpdCBleGVjKGJyb3dzZXJDb21tYW5kKTtcbiAgICBpZiAoc3Rkb3V0KSB7XG4gICAgICBhd2FpdCBpb0hlbHBlci5kZWZhdWx0cy5kZWJ1ZyhzdGRvdXQpO1xuICAgIH1cbiAgICBpZiAoc3RkZXJyKSB7XG4gICAgICBhd2FpdCBpb0hlbHBlci5kZWZhdWx0cy53YXJuKHN0ZGVycik7XG4gICAgfVxuICB9IGNhdGNoIChlcnI6IHVua25vd24pIHtcbiAgICBjb25zdCBlID0gZXJyIGFzIGNoaWxkUHJvY2Vzcy5FeGVjRXhjZXB0aW9uO1xuICAgIGF3YWl0IGlvSGVscGVyLmRlZmF1bHRzLmRlYnVnKGBBbiBlcnJvciBvY2N1cnJlZCB3aGVuIHRyeWluZyB0byBvcGVuIGEgYnJvd3NlcjogJHtlLnN0YWNrIHx8IGUubWVzc2FnZX1gKTtcbiAgfVxuXG4gIHJldHVybiAwO1xufVxuIl19
@@ -0,0 +1,4 @@
1
+ import type { IoHelper } from '../api-private';
2
+ export declare function doctor({ ioHelper }: {
3
+ ioHelper: IoHelper;
4
+ }): Promise<number>;
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.doctor = doctor;
4
+ const process = require("process");
5
+ const cxapi = require("@aws-cdk/cx-api");
6
+ const chalk = require("chalk");
7
+ const display_version_1 = require("../cli/display-version");
8
+ const version_1 = require("../cli/version");
9
+ async function doctor({ ioHelper }) {
10
+ let exitStatus = 0;
11
+ for (const verification of verifications) {
12
+ if (!await verification(ioHelper)) {
13
+ exitStatus = -1;
14
+ }
15
+ }
16
+ await (0, display_version_1.displayVersionMessage)(ioHelper);
17
+ return exitStatus;
18
+ }
19
+ const verifications = [
20
+ displayVersionInformation,
21
+ displayAwsEnvironmentVariables,
22
+ displayCdkEnvironmentVariables,
23
+ ];
24
+ // ### Verifications ###
25
+ async function displayVersionInformation(ioHelper) {
26
+ await ioHelper.defaults.info(`ℹ️ CDK Version: ${chalk.green((0, version_1.versionWithBuild)())}`);
27
+ return true;
28
+ }
29
+ async function displayAwsEnvironmentVariables(ioHelper) {
30
+ const keys = Object.keys(process.env).filter(s => s.startsWith('AWS_'));
31
+ if (keys.length === 0) {
32
+ await ioHelper.defaults.info('ℹ️ No AWS environment variables');
33
+ return true;
34
+ }
35
+ await ioHelper.defaults.info('ℹ️ AWS environment variables:');
36
+ for (const key of keys) {
37
+ await ioHelper.defaults.info(` - ${chalk.blue(key)} = ${chalk.green(anonymizeAwsVariable(key, process.env[key]))}`);
38
+ }
39
+ return true;
40
+ }
41
+ async function displayCdkEnvironmentVariables(ioHelper) {
42
+ const keys = Object.keys(process.env).filter(s => s.startsWith('CDK_'));
43
+ if (keys.length === 0) {
44
+ await ioHelper.defaults.info('ℹ️ No CDK environment variables');
45
+ return true;
46
+ }
47
+ await ioHelper.defaults.info('ℹ️ CDK environment variables:');
48
+ let healthy = true;
49
+ for (const key of keys.sort()) {
50
+ if (key === cxapi.CONTEXT_ENV || key === cxapi.CONTEXT_OVERFLOW_LOCATION_ENV || key === cxapi.OUTDIR_ENV) {
51
+ await ioHelper.defaults.info(` - ${chalk.red(key)} = ${chalk.green(process.env[key])} (⚠️ reserved for use by the CDK toolkit)`);
52
+ healthy = false;
53
+ }
54
+ else {
55
+ await ioHelper.defaults.info(` - ${chalk.blue(key)} = ${chalk.green(process.env[key])}`);
56
+ }
57
+ }
58
+ return healthy;
59
+ }
60
+ function anonymizeAwsVariable(name, value) {
61
+ if (name === 'AWS_ACCESS_KEY_ID') {
62
+ return value.slice(0, 4) + '<redacted>';
63
+ } // Show ASIA/AKIA key type, but hide identifier
64
+ if (name === 'AWS_SECRET_ACCESS_KEY' || name === 'AWS_SESSION_TOKEN' || name === 'AWS_SECURITY_TOKEN') {
65
+ return '<redacted>';
66
+ }
67
+ return value;
68
+ }
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZG9jdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBT0Esd0JBU0M7QUFoQkQsbUNBQW1DO0FBQ25DLHlDQUF5QztBQUN6QywrQkFBK0I7QUFFL0IsNERBQStEO0FBQy9ELDRDQUFrRDtBQUUzQyxLQUFLLFVBQVUsTUFBTSxDQUFDLEVBQUUsUUFBUSxFQUEwQjtJQUMvRCxJQUFJLFVBQVUsR0FBVyxDQUFDLENBQUM7SUFDM0IsS0FBSyxNQUFNLFlBQVksSUFBSSxhQUFhLEVBQUUsQ0FBQztRQUN6QyxJQUFJLENBQUMsTUFBTSxZQUFZLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUNsQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDbEIsQ0FBQztJQUNILENBQUM7SUFDRCxNQUFNLElBQUEsdUNBQXFCLEVBQUMsUUFBUSxDQUFDLENBQUM7SUFDdEMsT0FBTyxVQUFVLENBQUM7QUFDcEIsQ0FBQztBQUVELE1BQU0sYUFBYSxHQUE4RDtJQUMvRSx5QkFBeUI7SUFDekIsOEJBQThCO0lBQzlCLDhCQUE4QjtDQUMvQixDQUFDO0FBRUYsd0JBQXdCO0FBRXhCLEtBQUssVUFBVSx5QkFBeUIsQ0FBQyxRQUFrQjtJQUN6RCxNQUFNLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLG1CQUFtQixLQUFLLENBQUMsS0FBSyxDQUFDLElBQUEsMEJBQWdCLEdBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNuRixPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFFRCxLQUFLLFVBQVUsOEJBQThCLENBQUMsUUFBa0I7SUFDOUQsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3hFLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN0QixNQUFNLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGlDQUFpQyxDQUFDLENBQUM7UUFDaEUsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0QsTUFBTSxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO0lBQzlELEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDdkIsTUFBTSxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3hILENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFFRCxLQUFLLFVBQVUsOEJBQThCLENBQUMsUUFBa0I7SUFDOUQsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3hFLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN0QixNQUFNLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGlDQUFpQyxDQUFDLENBQUM7UUFDaEUsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0QsTUFBTSxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO0lBQzlELElBQUksT0FBTyxHQUFHLElBQUksQ0FBQztJQUNuQixLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQzlCLElBQUksR0FBRyxLQUFLLEtBQUssQ0FBQyxXQUFXLElBQUksR0FBRyxLQUFLLEtBQUssQ0FBQyw2QkFBNkIsSUFBSSxHQUFHLEtBQUssS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3pHLE1BQU0sUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUUsQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO1lBQ25JLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDbEIsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDN0YsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDO0FBRUQsU0FBUyxvQkFBb0IsQ0FBQyxJQUFZLEVBQUUsS0FBYTtJQUN2RCxJQUFJLElBQUksS0FBSyxtQkFBbUIsRUFBRSxDQUFDO1FBQ2pDLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsWUFBWSxDQUFDO0lBQzFDLENBQUMsQ0FBQywrQ0FBK0M7SUFDakQsSUFBSSxJQUFJLEtBQUssdUJBQXVCLElBQUksSUFBSSxLQUFLLG1CQUFtQixJQUFJLElBQUksS0FBSyxvQkFBb0IsRUFBRSxDQUFDO1FBQ3RHLE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwcm9jZXNzIGZyb20gJ3Byb2Nlc3MnO1xuaW1wb3J0ICogYXMgY3hhcGkgZnJvbSAnQGF3cy1jZGsvY3gtYXBpJztcbmltcG9ydCAqIGFzIGNoYWxrIGZyb20gJ2NoYWxrJztcbmltcG9ydCB0eXBlIHsgSW9IZWxwZXIgfSBmcm9tICcuLi9hcGktcHJpdmF0ZSc7XG5pbXBvcnQgeyBkaXNwbGF5VmVyc2lvbk1lc3NhZ2UgfSBmcm9tICcuLi9jbGkvZGlzcGxheS12ZXJzaW9uJztcbmltcG9ydCB7IHZlcnNpb25XaXRoQnVpbGQgfSBmcm9tICcuLi9jbGkvdmVyc2lvbic7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkb2N0b3IoeyBpb0hlbHBlciB9OiB7IGlvSGVscGVyOiBJb0hlbHBlciB9KTogUHJvbWlzZTxudW1iZXI+IHtcbiAgbGV0IGV4aXRTdGF0dXM6IG51bWJlciA9IDA7XG4gIGZvciAoY29uc3QgdmVyaWZpY2F0aW9uIG9mIHZlcmlmaWNhdGlvbnMpIHtcbiAgICBpZiAoIWF3YWl0IHZlcmlmaWNhdGlvbihpb0hlbHBlcikpIHtcbiAgICAgIGV4aXRTdGF0dXMgPSAtMTtcbiAgICB9XG4gIH1cbiAgYXdhaXQgZGlzcGxheVZlcnNpb25NZXNzYWdlKGlvSGVscGVyKTtcbiAgcmV0dXJuIGV4aXRTdGF0dXM7XG59XG5cbmNvbnN0IHZlcmlmaWNhdGlvbnM6IEFycmF5PChpb0hlbHBlcjogSW9IZWxwZXIpID0+IGJvb2xlYW4gfCBQcm9taXNlPGJvb2xlYW4+PiA9IFtcbiAgZGlzcGxheVZlcnNpb25JbmZvcm1hdGlvbixcbiAgZGlzcGxheUF3c0Vudmlyb25tZW50VmFyaWFibGVzLFxuICBkaXNwbGF5Q2RrRW52aXJvbm1lbnRWYXJpYWJsZXMsXG5dO1xuXG4vLyAjIyMgVmVyaWZpY2F0aW9ucyAjIyNcblxuYXN5bmMgZnVuY3Rpb24gZGlzcGxheVZlcnNpb25JbmZvcm1hdGlvbihpb0hlbHBlcjogSW9IZWxwZXIpIHtcbiAgYXdhaXQgaW9IZWxwZXIuZGVmYXVsdHMuaW5mbyhg4oS577iPIENESyBWZXJzaW9uOiAke2NoYWxrLmdyZWVuKHZlcnNpb25XaXRoQnVpbGQoKSl9YCk7XG4gIHJldHVybiB0cnVlO1xufVxuXG5hc3luYyBmdW5jdGlvbiBkaXNwbGF5QXdzRW52aXJvbm1lbnRWYXJpYWJsZXMoaW9IZWxwZXI6IElvSGVscGVyKSB7XG4gIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhwcm9jZXNzLmVudikuZmlsdGVyKHMgPT4gcy5zdGFydHNXaXRoKCdBV1NfJykpO1xuICBpZiAoa2V5cy5sZW5ndGggPT09IDApIHtcbiAgICBhd2FpdCBpb0hlbHBlci5kZWZhdWx0cy5pbmZvKCfihLnvuI8gTm8gQVdTIGVudmlyb25tZW50IHZhcmlhYmxlcycpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGF3YWl0IGlvSGVscGVyLmRlZmF1bHRzLmluZm8oJ+KEue+4jyBBV1MgZW52aXJvbm1lbnQgdmFyaWFibGVzOicpO1xuICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgYXdhaXQgaW9IZWxwZXIuZGVmYXVsdHMuaW5mbyhgICAtICR7Y2hhbGsuYmx1ZShrZXkpfSA9ICR7Y2hhbGsuZ3JlZW4oYW5vbnltaXplQXdzVmFyaWFibGUoa2V5LCBwcm9jZXNzLmVudltrZXldISkpfWApO1xuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG5hc3luYyBmdW5jdGlvbiBkaXNwbGF5Q2RrRW52aXJvbm1lbnRWYXJpYWJsZXMoaW9IZWxwZXI6IElvSGVscGVyKSB7XG4gIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhwcm9jZXNzLmVudikuZmlsdGVyKHMgPT4gcy5zdGFydHNXaXRoKCdDREtfJykpO1xuICBpZiAoa2V5cy5sZW5ndGggPT09IDApIHtcbiAgICBhd2FpdCBpb0hlbHBlci5kZWZhdWx0cy5pbmZvKCfihLnvuI8gTm8gQ0RLIGVudmlyb25tZW50IHZhcmlhYmxlcycpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGF3YWl0IGlvSGVscGVyLmRlZmF1bHRzLmluZm8oJ+KEue+4jyBDREsgZW52aXJvbm1lbnQgdmFyaWFibGVzOicpO1xuICBsZXQgaGVhbHRoeSA9IHRydWU7XG4gIGZvciAoY29uc3Qga2V5IG9mIGtleXMuc29ydCgpKSB7XG4gICAgaWYgKGtleSA9PT0gY3hhcGkuQ09OVEVYVF9FTlYgfHwga2V5ID09PSBjeGFwaS5DT05URVhUX09WRVJGTE9XX0xPQ0FUSU9OX0VOViB8fCBrZXkgPT09IGN4YXBpLk9VVERJUl9FTlYpIHtcbiAgICAgIGF3YWl0IGlvSGVscGVyLmRlZmF1bHRzLmluZm8oYCAgLSAke2NoYWxrLnJlZChrZXkpfSA9ICR7Y2hhbGsuZ3JlZW4ocHJvY2Vzcy5lbnZba2V5XSEpfSAo4pqg77iPIHJlc2VydmVkIGZvciB1c2UgYnkgdGhlIENESyB0b29sa2l0KWApO1xuICAgICAgaGVhbHRoeSA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCBpb0hlbHBlci5kZWZhdWx0cy5pbmZvKGAgIC0gJHtjaGFsay5ibHVlKGtleSl9ID0gJHtjaGFsay5ncmVlbihwcm9jZXNzLmVudltrZXldISl9YCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBoZWFsdGh5O1xufVxuXG5mdW5jdGlvbiBhbm9ueW1pemVBd3NWYXJpYWJsZShuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgaWYgKG5hbWUgPT09ICdBV1NfQUNDRVNTX0tFWV9JRCcpIHtcbiAgICByZXR1cm4gdmFsdWUuc2xpY2UoMCwgNCkgKyAnPHJlZGFjdGVkPic7XG4gIH0gLy8gU2hvdyBBU0lBL0FLSUEga2V5IHR5cGUsIGJ1dCBoaWRlIGlkZW50aWZpZXJcbiAgaWYgKG5hbWUgPT09ICdBV1NfU0VDUkVUX0FDQ0VTU19LRVknIHx8IG5hbWUgPT09ICdBV1NfU0VTU0lPTl9UT0tFTicgfHwgbmFtZSA9PT0gJ0FXU19TRUNVUklUWV9UT0tFTicpIHtcbiAgICByZXR1cm4gJzxyZWRhY3RlZD4nO1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn1cbiJdfQ==
@@ -0,0 +1,13 @@
1
+ import type { FeatureFlag, Toolkit } from '@aws-cdk/toolkit-lib';
2
+ import type { FlagOperationsParams } from './types';
3
+ import type { IoHelper } from '../../api-private';
4
+ export declare class FlagCommandHandler {
5
+ private readonly flags;
6
+ private readonly router;
7
+ private readonly options;
8
+ private readonly ioHelper;
9
+ /** Main component that sets up all flag operation components */
10
+ constructor(flagData: FeatureFlag[], ioHelper: IoHelper, options: FlagOperationsParams, toolkit: Toolkit, cliContextValues?: Record<string, any>);
11
+ /** Main entry point that processes the flags command */
12
+ processFlagsCommand(): Promise<void>;
13
+ }
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FlagCommandHandler = void 0;
4
+ const interactive_handler_1 = require("./interactive-handler");
5
+ const obsolete_flags_1 = require("./obsolete-flags");
6
+ const operations_1 = require("./operations");
7
+ const router_1 = require("./router");
8
+ const validator_1 = require("./validator");
9
+ class FlagCommandHandler {
10
+ /** Main component that sets up all flag operation components */
11
+ constructor(flagData, ioHelper, options, toolkit, cliContextValues = {}) {
12
+ this.flags = flagData.filter(flag => !obsolete_flags_1.OBSOLETE_FLAGS.includes(flag.name));
13
+ this.options = { ...options, concurrency: options.concurrency ?? 4 };
14
+ this.ioHelper = ioHelper;
15
+ const validator = new validator_1.FlagValidator(ioHelper);
16
+ const flagOperations = new operations_1.FlagOperations(this.flags, toolkit, ioHelper, cliContextValues);
17
+ const interactiveHandler = new interactive_handler_1.InteractiveHandler(this.flags, flagOperations);
18
+ this.router = new router_1.FlagOperationRouter(validator, interactiveHandler, flagOperations);
19
+ }
20
+ /** Main entry point that processes the flags command */
21
+ async processFlagsCommand() {
22
+ if (this.flags.length === 0) {
23
+ await this.ioHelper.defaults.error('The \'cdk flags\' command is not compatible with the AWS CDK library used by your application. Please upgrade to 2.212.0 or above.');
24
+ return;
25
+ }
26
+ await this.router.route(this.options);
27
+ }
28
+ }
29
+ exports.FlagCommandHandler = FlagCommandHandler;
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxhZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJmbGFncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSwrREFBMkQ7QUFDM0QscURBQWtEO0FBQ2xELDZDQUE4QztBQUM5QyxxQ0FBK0M7QUFFL0MsMkNBQTRDO0FBRzVDLE1BQWEsa0JBQWtCO0lBTTdCLGdFQUFnRTtJQUNoRSxZQUNFLFFBQXVCLEVBQ3ZCLFFBQWtCLEVBQ2xCLE9BQTZCLEVBQzdCLE9BQWdCLEVBQ2hCLG1CQUF3QyxFQUFFO1FBRTFDLElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsK0JBQWMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDMUUsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLEdBQUcsT0FBTyxFQUFFLFdBQVcsRUFBRSxPQUFPLENBQUMsV0FBVyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3JFLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBRXpCLE1BQU0sU0FBUyxHQUFHLElBQUkseUJBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM5QyxNQUFNLGNBQWMsR0FBRyxJQUFJLDJCQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDM0YsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLHdDQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFFOUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLDRCQUFtQixDQUFDLFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRUQsd0RBQXdEO0lBQ3hELEtBQUssQ0FBQyxtQkFBbUI7UUFDdkIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM1QixNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxvSUFBb0ksQ0FBQyxDQUFDO1lBQ3pLLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDeEMsQ0FBQztDQUNGO0FBbENELGdEQWtDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRmVhdHVyZUZsYWcsIFRvb2xraXQgfSBmcm9tICdAYXdzLWNkay90b29sa2l0LWxpYic7XG5pbXBvcnQgeyBJbnRlcmFjdGl2ZUhhbmRsZXIgfSBmcm9tICcuL2ludGVyYWN0aXZlLWhhbmRsZXInO1xuaW1wb3J0IHsgT0JTT0xFVEVfRkxBR1MgfSBmcm9tICcuL29ic29sZXRlLWZsYWdzJztcbmltcG9ydCB7IEZsYWdPcGVyYXRpb25zIH0gZnJvbSAnLi9vcGVyYXRpb25zJztcbmltcG9ydCB7IEZsYWdPcGVyYXRpb25Sb3V0ZXIgfSBmcm9tICcuL3JvdXRlcic7XG5pbXBvcnQgdHlwZSB7IEZsYWdPcGVyYXRpb25zUGFyYW1zIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBGbGFnVmFsaWRhdG9yIH0gZnJvbSAnLi92YWxpZGF0b3InO1xuaW1wb3J0IHR5cGUgeyBJb0hlbHBlciB9IGZyb20gJy4uLy4uL2FwaS1wcml2YXRlJztcblxuZXhwb3J0IGNsYXNzIEZsYWdDb21tYW5kSGFuZGxlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZmxhZ3M6IEZlYXR1cmVGbGFnW107XG4gIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBGbGFnT3BlcmF0aW9uUm91dGVyO1xuICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM6IEZsYWdPcGVyYXRpb25zUGFyYW1zO1xuICBwcml2YXRlIHJlYWRvbmx5IGlvSGVscGVyOiBJb0hlbHBlcjtcblxuICAvKiogTWFpbiBjb21wb25lbnQgdGhhdCBzZXRzIHVwIGFsbCBmbGFnIG9wZXJhdGlvbiBjb21wb25lbnRzICovXG4gIGNvbnN0cnVjdG9yKFxuICAgIGZsYWdEYXRhOiBGZWF0dXJlRmxhZ1tdLFxuICAgIGlvSGVscGVyOiBJb0hlbHBlcixcbiAgICBvcHRpb25zOiBGbGFnT3BlcmF0aW9uc1BhcmFtcyxcbiAgICB0b29sa2l0OiBUb29sa2l0LFxuICAgIGNsaUNvbnRleHRWYWx1ZXM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fSxcbiAgKSB7XG4gICAgdGhpcy5mbGFncyA9IGZsYWdEYXRhLmZpbHRlcihmbGFnID0+ICFPQlNPTEVURV9GTEFHUy5pbmNsdWRlcyhmbGFnLm5hbWUpKTtcbiAgICB0aGlzLm9wdGlvbnMgPSB7IC4uLm9wdGlvbnMsIGNvbmN1cnJlbmN5OiBvcHRpb25zLmNvbmN1cnJlbmN5ID8/IDQgfTtcbiAgICB0aGlzLmlvSGVscGVyID0gaW9IZWxwZXI7XG5cbiAgICBjb25zdCB2YWxpZGF0b3IgPSBuZXcgRmxhZ1ZhbGlkYXRvcihpb0hlbHBlcik7XG4gICAgY29uc3QgZmxhZ09wZXJhdGlvbnMgPSBuZXcgRmxhZ09wZXJhdGlvbnModGhpcy5mbGFncywgdG9vbGtpdCwgaW9IZWxwZXIsIGNsaUNvbnRleHRWYWx1ZXMpO1xuICAgIGNvbnN0IGludGVyYWN0aXZlSGFuZGxlciA9IG5ldyBJbnRlcmFjdGl2ZUhhbmRsZXIodGhpcy5mbGFncywgZmxhZ09wZXJhdGlvbnMpO1xuXG4gICAgdGhpcy5yb3V0ZXIgPSBuZXcgRmxhZ09wZXJhdGlvblJvdXRlcih2YWxpZGF0b3IsIGludGVyYWN0aXZlSGFuZGxlciwgZmxhZ09wZXJhdGlvbnMpO1xuICB9XG5cbiAgLyoqIE1haW4gZW50cnkgcG9pbnQgdGhhdCBwcm9jZXNzZXMgdGhlIGZsYWdzIGNvbW1hbmQgKi9cbiAgYXN5bmMgcHJvY2Vzc0ZsYWdzQ29tbWFuZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5mbGFncy5sZW5ndGggPT09IDApIHtcbiAgICAgIGF3YWl0IHRoaXMuaW9IZWxwZXIuZGVmYXVsdHMuZXJyb3IoJ1RoZSBcXCdjZGsgZmxhZ3NcXCcgY29tbWFuZCBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHRoZSBBV1MgQ0RLIGxpYnJhcnkgdXNlZCBieSB5b3VyIGFwcGxpY2F0aW9uLiBQbGVhc2UgdXBncmFkZSB0byAyLjIxMi4wIG9yIGFib3ZlLicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMucm91dGVyLnJvdXRlKHRoaXMub3B0aW9ucyk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,16 @@
1
+ import type { FeatureFlag } from '@aws-cdk/toolkit-lib';
2
+ import type { FlagOperations } from './operations';
3
+ import { type FlagOperationsParams } from './types';
4
+ export declare class InteractiveHandler {
5
+ private readonly flags;
6
+ private readonly flagOperations;
7
+ constructor(flags: FeatureFlag[], flagOperations: FlagOperations);
8
+ /** Displays flags that have differences between user and recommended values */
9
+ private displayFlagsWithDifferences;
10
+ /** Checks if user value matches recommended value */
11
+ private isUserValueEqualToRecommended;
12
+ /** Main interactive mode handler that shows menu and processes user selection */
13
+ handleInteractiveMode(): Promise<FlagOperationsParams | null>;
14
+ /** Handles the specific flag selection flow with flag and value prompts */
15
+ private handleSpecificFlagSelection;
16
+ }
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InteractiveHandler = void 0;
4
+ // @ts-ignore
5
+ const enquirer_1 = require("enquirer");
6
+ const types_1 = require("./types");
7
+ class InteractiveHandler {
8
+ constructor(flags, flagOperations) {
9
+ this.flags = flags;
10
+ this.flagOperations = flagOperations;
11
+ }
12
+ /** Displays flags that have differences between user and recommended values */
13
+ async displayFlagsWithDifferences() {
14
+ const flagsWithDifferences = this.flags.filter(flag => flag.userValue === undefined || !this.isUserValueEqualToRecommended(flag));
15
+ if (flagsWithDifferences.length > 0) {
16
+ await this.flagOperations.displayFlagTable(flagsWithDifferences);
17
+ }
18
+ }
19
+ /** Checks if user value matches recommended value */
20
+ isUserValueEqualToRecommended(flag) {
21
+ return String(flag.userValue) === String(flag.recommendedValue);
22
+ }
23
+ /** Main interactive mode handler that shows menu and processes user selection */
24
+ async handleInteractiveMode() {
25
+ await this.displayFlagsWithDifferences();
26
+ const prompt = new enquirer_1.Select({
27
+ name: 'option',
28
+ message: 'Menu',
29
+ choices: Object.values(types_1.FlagsMenuOptions),
30
+ });
31
+ const answer = await prompt.run();
32
+ switch (answer) {
33
+ case types_1.FlagsMenuOptions.ALL_TO_RECOMMENDED:
34
+ return { recommended: true, all: true, set: true };
35
+ case types_1.FlagsMenuOptions.UNCONFIGURED_TO_RECOMMENDED:
36
+ return { recommended: true, unconfigured: true, set: true };
37
+ case types_1.FlagsMenuOptions.UNCONFIGURED_TO_DEFAULT:
38
+ return { default: true, unconfigured: true, set: true };
39
+ case types_1.FlagsMenuOptions.MODIFY_SPECIFIC_FLAG:
40
+ return this.handleSpecificFlagSelection();
41
+ case types_1.FlagsMenuOptions.EXIT:
42
+ return null;
43
+ default:
44
+ return null;
45
+ }
46
+ }
47
+ /** Handles the specific flag selection flow with flag and value prompts */
48
+ async handleSpecificFlagSelection() {
49
+ const booleanFlags = this.flags.filter(flag => this.flagOperations.isBooleanFlag(flag));
50
+ const flagPrompt = new enquirer_1.Select({
51
+ name: 'flag',
52
+ message: 'Select which flag you would like to modify:',
53
+ limit: 100,
54
+ choices: booleanFlags.map(flag => flag.name),
55
+ });
56
+ const selectedFlagName = await flagPrompt.run();
57
+ const valuePrompt = new enquirer_1.Select({
58
+ name: 'value',
59
+ message: 'Select a value:',
60
+ choices: ['true', 'false'],
61
+ });
62
+ const value = await valuePrompt.run();
63
+ return {
64
+ FLAGNAME: [selectedFlagName],
65
+ value,
66
+ set: true,
67
+ };
68
+ }
69
+ }
70
+ exports.InteractiveHandler = InteractiveHandler;
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJhY3RpdmUtaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImludGVyYWN0aXZlLWhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsYUFBYTtBQUNiLHVDQUFrQztBQUVsQyxtQ0FBc0U7QUFFdEUsTUFBYSxrQkFBa0I7SUFDN0IsWUFDbUIsS0FBb0IsRUFDcEIsY0FBOEI7UUFEOUIsVUFBSyxHQUFMLEtBQUssQ0FBZTtRQUNwQixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7SUFFakQsQ0FBQztJQUVELCtFQUErRTtJQUN2RSxLQUFLLENBQUMsMkJBQTJCO1FBQ3ZDLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDcEQsSUFBSSxDQUFDLFNBQVMsS0FBSyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUU3RSxJQUFJLG9CQUFvQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNwQyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUNuRSxDQUFDO0lBQ0gsQ0FBQztJQUVELHFEQUFxRDtJQUM3Qyw2QkFBNkIsQ0FBQyxJQUFpQjtRQUNyRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRCxpRkFBaUY7SUFDakYsS0FBSyxDQUFDLHFCQUFxQjtRQUN6QixNQUFNLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO1FBRXpDLE1BQU0sTUFBTSxHQUFHLElBQUksaUJBQU0sQ0FBQztZQUN4QixJQUFJLEVBQUUsUUFBUTtZQUNkLE9BQU8sRUFBRSxNQUFNO1lBQ2YsT0FBTyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsd0JBQWdCLENBQUM7U0FDekMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxNQUFNLEdBQUcsTUFBTSxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUM7UUFFbEMsUUFBUSxNQUFNLEVBQUUsQ0FBQztZQUNmLEtBQUssd0JBQWdCLENBQUMsa0JBQWtCO2dCQUN0QyxPQUFPLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUNyRCxLQUFLLHdCQUFnQixDQUFDLDJCQUEyQjtnQkFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDOUQsS0FBSyx3QkFBZ0IsQ0FBQyx1QkFBdUI7Z0JBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDO1lBQzFELEtBQUssd0JBQWdCLENBQUMsb0JBQW9CO2dCQUN4QyxPQUFPLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO1lBQzVDLEtBQUssd0JBQWdCLENBQUMsSUFBSTtnQkFDeEIsT0FBTyxJQUFJLENBQUM7WUFDZDtnQkFDRSxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO0lBQ0gsQ0FBQztJQUVELDJFQUEyRTtJQUNuRSxLQUFLLENBQUMsMkJBQTJCO1FBQ3ZDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUV4RixNQUFNLFVBQVUsR0FBRyxJQUFJLGlCQUFNLENBQUM7WUFDNUIsSUFBSSxFQUFFLE1BQU07WUFDWixPQUFPLEVBQUUsNkNBQTZDO1lBQ3RELEtBQUssRUFBRSxHQUFHO1lBQ1YsT0FBTyxFQUFFLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1NBQzdDLENBQUMsQ0FBQztRQUVILE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUM7UUFFaEQsTUFBTSxXQUFXLEdBQUcsSUFBSSxpQkFBTSxDQUFDO1lBQzdCLElBQUksRUFBRSxPQUFPO1lBQ2IsT0FBTyxFQUFFLGlCQUFpQjtZQUMxQixPQUFPLEVBQUUsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDO1NBQzNCLENBQUMsQ0FBQztRQUVILE1BQU0sS0FBSyxHQUFHLE1BQU0sV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBRXRDLE9BQU87WUFDTCxRQUFRLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztZQUM1QixLQUFLO1lBQ0wsR0FBRyxFQUFFLElBQUk7U0FDVixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBN0VELGdEQTZFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRmVhdHVyZUZsYWcgfSBmcm9tICdAYXdzLWNkay90b29sa2l0LWxpYic7XG4vLyBAdHMtaWdub3JlXG5pbXBvcnQgeyBTZWxlY3QgfSBmcm9tICdlbnF1aXJlcic7XG5pbXBvcnQgdHlwZSB7IEZsYWdPcGVyYXRpb25zIH0gZnJvbSAnLi9vcGVyYXRpb25zJztcbmltcG9ydCB7IEZsYWdzTWVudU9wdGlvbnMsIHR5cGUgRmxhZ09wZXJhdGlvbnNQYXJhbXMgfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGNsYXNzIEludGVyYWN0aXZlSGFuZGxlciB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZmxhZ3M6IEZlYXR1cmVGbGFnW10sXG4gICAgcHJpdmF0ZSByZWFkb25seSBmbGFnT3BlcmF0aW9uczogRmxhZ09wZXJhdGlvbnMsXG4gICkge1xuICB9XG5cbiAgLyoqIERpc3BsYXlzIGZsYWdzIHRoYXQgaGF2ZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIHVzZXIgYW5kIHJlY29tbWVuZGVkIHZhbHVlcyAqL1xuICBwcml2YXRlIGFzeW5jIGRpc3BsYXlGbGFnc1dpdGhEaWZmZXJlbmNlcygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBmbGFnc1dpdGhEaWZmZXJlbmNlcyA9IHRoaXMuZmxhZ3MuZmlsdGVyKGZsYWcgPT5cbiAgICAgIGZsYWcudXNlclZhbHVlID09PSB1bmRlZmluZWQgfHwgIXRoaXMuaXNVc2VyVmFsdWVFcXVhbFRvUmVjb21tZW5kZWQoZmxhZykpO1xuXG4gICAgaWYgKGZsYWdzV2l0aERpZmZlcmVuY2VzLmxlbmd0aCA+IDApIHtcbiAgICAgIGF3YWl0IHRoaXMuZmxhZ09wZXJhdGlvbnMuZGlzcGxheUZsYWdUYWJsZShmbGFnc1dpdGhEaWZmZXJlbmNlcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqIENoZWNrcyBpZiB1c2VyIHZhbHVlIG1hdGNoZXMgcmVjb21tZW5kZWQgdmFsdWUgKi9cbiAgcHJpdmF0ZSBpc1VzZXJWYWx1ZUVxdWFsVG9SZWNvbW1lbmRlZChmbGFnOiBGZWF0dXJlRmxhZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBTdHJpbmcoZmxhZy51c2VyVmFsdWUpID09PSBTdHJpbmcoZmxhZy5yZWNvbW1lbmRlZFZhbHVlKTtcbiAgfVxuXG4gIC8qKiBNYWluIGludGVyYWN0aXZlIG1vZGUgaGFuZGxlciB0aGF0IHNob3dzIG1lbnUgYW5kIHByb2Nlc3NlcyB1c2VyIHNlbGVjdGlvbiAqL1xuICBhc3luYyBoYW5kbGVJbnRlcmFjdGl2ZU1vZGUoKTogUHJvbWlzZTxGbGFnT3BlcmF0aW9uc1BhcmFtcyB8IG51bGw+IHtcbiAgICBhd2FpdCB0aGlzLmRpc3BsYXlGbGFnc1dpdGhEaWZmZXJlbmNlcygpO1xuXG4gICAgY29uc3QgcHJvbXB0ID0gbmV3IFNlbGVjdCh7XG4gICAgICBuYW1lOiAnb3B0aW9uJyxcbiAgICAgIG1lc3NhZ2U6ICdNZW51JyxcbiAgICAgIGNob2ljZXM6IE9iamVjdC52YWx1ZXMoRmxhZ3NNZW51T3B0aW9ucyksXG4gICAgfSk7XG5cbiAgICBjb25zdCBhbnN3ZXIgPSBhd2FpdCBwcm9tcHQucnVuKCk7XG5cbiAgICBzd2l0Y2ggKGFuc3dlcikge1xuICAgICAgY2FzZSBGbGFnc01lbnVPcHRpb25zLkFMTF9UT19SRUNPTU1FTkRFRDpcbiAgICAgICAgcmV0dXJuIHsgcmVjb21tZW5kZWQ6IHRydWUsIGFsbDogdHJ1ZSwgc2V0OiB0cnVlIH07XG4gICAgICBjYXNlIEZsYWdzTWVudU9wdGlvbnMuVU5DT05GSUdVUkVEX1RPX1JFQ09NTUVOREVEOlxuICAgICAgICByZXR1cm4geyByZWNvbW1lbmRlZDogdHJ1ZSwgdW5jb25maWd1cmVkOiB0cnVlLCBzZXQ6IHRydWUgfTtcbiAgICAgIGNhc2UgRmxhZ3NNZW51T3B0aW9ucy5VTkNPTkZJR1VSRURfVE9fREVGQVVMVDpcbiAgICAgICAgcmV0dXJuIHsgZGVmYXVsdDogdHJ1ZSwgdW5jb25maWd1cmVkOiB0cnVlLCBzZXQ6IHRydWUgfTtcbiAgICAgIGNhc2UgRmxhZ3NNZW51T3B0aW9ucy5NT0RJRllfU1BFQ0lGSUNfRkxBRzpcbiAgICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlU3BlY2lmaWNGbGFnU2VsZWN0aW9uKCk7XG4gICAgICBjYXNlIEZsYWdzTWVudU9wdGlvbnMuRVhJVDpcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKiogSGFuZGxlcyB0aGUgc3BlY2lmaWMgZmxhZyBzZWxlY3Rpb24gZmxvdyB3aXRoIGZsYWcgYW5kIHZhbHVlIHByb21wdHMgKi9cbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVTcGVjaWZpY0ZsYWdTZWxlY3Rpb24oKTogUHJvbWlzZTxGbGFnT3BlcmF0aW9uc1BhcmFtcz4ge1xuICAgIGNvbnN0IGJvb2xlYW5GbGFncyA9IHRoaXMuZmxhZ3MuZmlsdGVyKGZsYWcgPT4gdGhpcy5mbGFnT3BlcmF0aW9ucy5pc0Jvb2xlYW5GbGFnKGZsYWcpKTtcblxuICAgIGNvbnN0IGZsYWdQcm9tcHQgPSBuZXcgU2VsZWN0KHtcbiAgICAgIG5hbWU6ICdmbGFnJyxcbiAgICAgIG1lc3NhZ2U6ICdTZWxlY3Qgd2hpY2ggZmxhZyB5b3Ugd291bGQgbGlrZSB0byBtb2RpZnk6JyxcbiAgICAgIGxpbWl0OiAxMDAsXG4gICAgICBjaG9pY2VzOiBib29sZWFuRmxhZ3MubWFwKGZsYWcgPT4gZmxhZy5uYW1lKSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHNlbGVjdGVkRmxhZ05hbWUgPSBhd2FpdCBmbGFnUHJvbXB0LnJ1bigpO1xuXG4gICAgY29uc3QgdmFsdWVQcm9tcHQgPSBuZXcgU2VsZWN0KHtcbiAgICAgIG5hbWU6ICd2YWx1ZScsXG4gICAgICBtZXNzYWdlOiAnU2VsZWN0IGEgdmFsdWU6JyxcbiAgICAgIGNob2ljZXM6IFsndHJ1ZScsICdmYWxzZSddLFxuICAgIH0pO1xuXG4gICAgY29uc3QgdmFsdWUgPSBhd2FpdCB2YWx1ZVByb21wdC5ydW4oKTtcblxuICAgIHJldHVybiB7XG4gICAgICBGTEFHTkFNRTogW3NlbGVjdGVkRmxhZ05hbWVdLFxuICAgICAgdmFsdWUsXG4gICAgICBzZXQ6IHRydWUsXG4gICAgfTtcbiAgfVxufVxuIl19
@@ -0,0 +1 @@
1
+ export declare const OBSOLETE_FLAGS: string[];
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OBSOLETE_FLAGS = void 0;
4
+ exports.OBSOLETE_FLAGS = [
5
+ '@aws-cdk/core:enableStackNameDuplicates',
6
+ '@aws-cdk/aws-s3:grantWriteWithoutAcl',
7
+ '@aws-cdk/aws-kms:defaultKeyPolicies',
8
+ ];
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2Jzb2xldGUtZmxhZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJvYnNvbGV0ZS1mbGFncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBYSxRQUFBLGNBQWMsR0FBRztJQUM1Qix5Q0FBeUM7SUFDekMsc0NBQXNDO0lBQ3RDLHFDQUFxQztDQUN0QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IE9CU09MRVRFX0ZMQUdTID0gW1xuICAnQGF3cy1jZGsvY29yZTplbmFibGVTdGFja05hbWVEdXBsaWNhdGVzJyxcbiAgJ0Bhd3MtY2RrL2F3cy1zMzpncmFudFdyaXRlV2l0aG91dEFjbCcsXG4gICdAYXdzLWNkay9hd3Mta21zOmRlZmF1bHRLZXlQb2xpY2llcycsXG5dO1xuIl19
@@ -0,0 +1,80 @@
1
+ import type { FeatureFlag, Toolkit } from '@aws-cdk/toolkit-lib';
2
+ import type { FlagOperationsParams } from './types';
3
+ import type { IoHelper } from '../../api-private';
4
+ export declare class FlagOperations {
5
+ private readonly flags;
6
+ private readonly toolkit;
7
+ private readonly ioHelper;
8
+ private readonly cliContextValues;
9
+ /**
10
+ * Returns only those feature flags that need configuration
11
+ *
12
+ * That is those flags:
13
+ * - That are unconfigured
14
+ * - That are not obsolete
15
+ * - Whose default value is different from the recommended value
16
+ *
17
+ * The default value being equal to the recommended value sounds odd, but
18
+ * crops up in a number of situtations:
19
+ *
20
+ * - Security-related fixes that we want to force on people, but want to
21
+ * give them a flag to back out of the changes if they really need to.
22
+ * - Flags that changed their default value in the most recent major
23
+ * version.
24
+ * - Flags that we've introduced at some point in the past, but have gone
25
+ * back on.
26
+ */
27
+ static filterNeedsAttention(flags: FeatureFlag[]): FeatureFlag[];
28
+ private app;
29
+ private baseContextValues;
30
+ private allStacks;
31
+ private queue;
32
+ private baselineTempDir?;
33
+ constructor(flags: FeatureFlag[], toolkit: Toolkit, ioHelper: IoHelper, cliContextValues?: Record<string, any>);
34
+ /** Main entry point that routes to either flag setting or display operations */
35
+ execute(params: FlagOperationsParams): Promise<void>;
36
+ /** Sets a single specific flag with validation and user confirmation */
37
+ setFlag(params: FlagOperationsParams): Promise<void>;
38
+ /** Sets multiple flags (all or unconfigured) with validation and user confirmation */
39
+ setMultipleFlags(params: FlagOperationsParams): Promise<void>;
40
+ /** Determines which flags should be set based on the provided parameters */
41
+ private getFlagsToSet;
42
+ /** Sets flags that don't cause template changes */
43
+ setSafeFlags(params: FlagOperationsParams): Promise<void>;
44
+ /** Initializes the safety check by reading context and synthesizing baseline templates */
45
+ private initializeSafetyCheck;
46
+ /** Cleans up temporary directories created during safety checks */
47
+ private cleanupSafetyCheck;
48
+ /** Tests multiple flags together and isolates unsafe ones using binary search */
49
+ private batchTestFlags;
50
+ /** Tests if a set of context values causes template changes by synthesizing and diffing */
51
+ private testBatch;
52
+ /** Uses binary search to isolate which flags are safe to set without template changes */
53
+ private isolateUnsafeFlags;
54
+ /** Prototypes flag changes by synthesizing templates and showing diffs to the user */
55
+ private prototypeChanges;
56
+ /** Displays a summary of flag changes showing old and new values */
57
+ private displayFlagChanges;
58
+ /** Builds the update object with new flag values based on parameters and current context */
59
+ private buildUpdateObject;
60
+ /** Prompts user for confirmation and applies changes if accepted */
61
+ private handleUserResponse;
62
+ /** Removes temporary directories created during flag operations */
63
+ private cleanupTempDirectories;
64
+ /** Actually modifies the cdk.json file with the new flag values */
65
+ private modifyValues;
66
+ /** Displays flags in a table format, either specific flags or filtered by criteria */
67
+ displayFlags(params: FlagOperationsParams): Promise<void>;
68
+ /** Displays detailed information for specific flags matching the given names */
69
+ private displaySpecificFlags;
70
+ /** Returns sort order for flags */
71
+ private getFlagSortOrder;
72
+ /** Displays flags in a formatted table grouped by module and sorted */
73
+ displayFlagTable(flags: FeatureFlag[]): Promise<void>;
74
+ /** Checks if a flag has a boolean recommended value */
75
+ isBooleanFlag(flag: FeatureFlag): boolean;
76
+ /** Shows helpful usage examples and available command options */
77
+ displayHelpMessage(): Promise<void>;
78
+ }
79
+ /** Checks if the flags current effective value matches the recommended value */
80
+ export declare function isEffectiveValueEqualToRecommended(flag: FeatureFlag): boolean;