aws-cdk 2.31.1 → 2.32.1

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 (342) hide show
  1. package/CONTRIBUTING.md +29 -0
  2. package/README.md +7 -6
  3. package/build-info.json +2 -2
  4. package/lib/cli.js +4 -3
  5. package/lib/commands/context.js +67 -7
  6. package/lib/index.js +321 -134
  7. package/lib/init-templates/{v1/app → app}/csharp/.template.gitignore +0 -0
  8. package/lib/init-templates/{v1/app → app}/csharp/README.md +0 -0
  9. package/lib/init-templates/app/csharp/add-project.hook.d.ts +2 -0
  10. package/lib/init-templates/{v2/app → app}/csharp/add-project.hook.js +1 -1
  11. package/lib/init-templates/{v1/app → app}/csharp/cdk.template.json +0 -0
  12. package/lib/init-templates/{v2/app → app}/csharp/src/%name.PascalCased%/%name.PascalCased%.template.csproj +0 -0
  13. package/lib/init-templates/{v2/app → app}/csharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.cs +0 -0
  14. package/lib/init-templates/{v1/app → app}/csharp/src/%name.PascalCased%/GlobalSuppressions.cs +0 -0
  15. package/lib/init-templates/{v2/app → app}/csharp/src/%name.PascalCased%/Program.template.cs +0 -0
  16. package/lib/init-templates/{v1/app → app}/csharp/src/%name.PascalCased%.template.sln +0 -0
  17. package/lib/init-templates/{v1/app → app}/fsharp/.template.gitignore +0 -0
  18. package/lib/init-templates/{v1/app → app}/fsharp/README.md +0 -0
  19. package/lib/init-templates/app/fsharp/add-project.hook.d.ts +2 -0
  20. package/lib/init-templates/{v1/app → app}/fsharp/add-project.hook.js +1 -1
  21. package/lib/init-templates/{v1/app → app}/fsharp/cdk.template.json +0 -0
  22. package/lib/init-templates/{v2/app → app}/fsharp/src/%name.PascalCased%/%name.PascalCased%.template.fsproj +0 -0
  23. package/lib/init-templates/{v1/app → app}/fsharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.fs +0 -0
  24. package/lib/init-templates/{v1/app → app}/fsharp/src/%name.PascalCased%/Program.template.fs +0 -0
  25. package/lib/init-templates/{v1/app → app}/fsharp/src/%name.PascalCased%.template.sln +0 -0
  26. package/lib/init-templates/{v2/app → app}/go/%name%.template.go +0 -0
  27. package/lib/init-templates/{v2/app → app}/go/%name%_test.template.go +0 -0
  28. package/lib/init-templates/{v1/app → app}/go/.template.gitignore +0 -0
  29. package/lib/init-templates/{v2/app → app}/go/README.md +1 -3
  30. package/lib/init-templates/{v1/app → app}/go/cdk.template.json +0 -0
  31. package/lib/init-templates/{v2/app → app}/go/go.template.mod +0 -0
  32. package/lib/init-templates/{v1/app → app}/info.json +0 -0
  33. package/lib/init-templates/{v1/app → app}/java/.template.gitignore +0 -0
  34. package/lib/init-templates/{v1/app → app}/java/README.md +0 -0
  35. package/lib/init-templates/{v1/app → app}/java/cdk.json +0 -0
  36. package/lib/init-templates/{v2/app → app}/java/pom.xml +0 -0
  37. package/lib/init-templates/{v2/app → app}/java/src/main/java/com/myorg/%name.PascalCased%App.template.java +0 -0
  38. package/lib/init-templates/{v2/app → app}/java/src/main/java/com/myorg/%name.PascalCased%Stack.template.java +0 -0
  39. package/lib/init-templates/{v2/app → app}/java/src/test/java/com/myorg/%name.PascalCased%Test.template.java +0 -0
  40. package/lib/init-templates/app/java/sub-placeholders.hook.d.ts +2 -0
  41. package/lib/init-templates/{v1/app → app}/java/sub-placeholders.hook.js +1 -1
  42. package/lib/init-templates/{v1/app → app}/javascript/.template.gitignore +0 -0
  43. package/lib/init-templates/{v1/app → app}/javascript/.template.npmignore +0 -0
  44. package/lib/init-templates/{v1/app → app}/javascript/README.md +0 -0
  45. package/lib/init-templates/{v2/app → app}/javascript/bin/%name%.template.js +0 -0
  46. package/lib/init-templates/{v1/app → app}/javascript/cdk.template.json +0 -0
  47. package/lib/init-templates/{v1/sample-app → app}/javascript/jest.config.js +0 -0
  48. package/lib/init-templates/{v2/app → app}/javascript/lib/%name%-stack.template.js +0 -0
  49. package/lib/init-templates/{v2/app → app}/javascript/package.json +0 -0
  50. package/lib/init-templates/app/javascript/sub-placeholders.hook.d.ts +2 -0
  51. package/lib/init-templates/{v1/sample-app → app}/javascript/sub-placeholders.hook.js +1 -1
  52. package/lib/init-templates/{v2/app → app}/javascript/test/%name%.test.template.js +0 -0
  53. package/lib/init-templates/{v2/app → app}/python/%name.PythonModule%/%name.PythonModule%_stack.template.py +0 -0
  54. package/lib/init-templates/{v1/app → app}/python/%name.PythonModule%/__init__.py +0 -0
  55. package/lib/init-templates/{v2/app → app}/python/.template.gitignore +0 -0
  56. package/lib/init-templates/{v1/app → app}/python/README.template.md +0 -0
  57. package/lib/init-templates/{v2/app → app}/python/app.template.py +0 -0
  58. package/lib/init-templates/{v1/app → app}/python/cdk.template.json +0 -0
  59. package/lib/init-templates/{v1/app → app}/python/requirements-dev.txt +0 -0
  60. package/lib/init-templates/{v2/app → app}/python/requirements.txt +0 -0
  61. package/lib/init-templates/{v1/app → app}/python/source.bat +0 -0
  62. package/lib/init-templates/app/python/sub-placeholders.hook.d.ts +2 -0
  63. package/lib/init-templates/{v1/sample-app → app}/python/sub-placeholders.hook.js +1 -1
  64. package/lib/init-templates/{v1/app → app}/python/tests/__init__.py +0 -0
  65. package/lib/init-templates/{v1/app → app}/python/tests/unit/__init__.py +0 -0
  66. package/lib/init-templates/{v2/app → app}/python/tests/unit/test_%name.PythonModule%_stack.template.py +0 -0
  67. package/lib/init-templates/{v1/app → app}/typescript/.template.gitignore +0 -0
  68. package/lib/init-templates/{v1/app → app}/typescript/.template.npmignore +0 -0
  69. package/lib/init-templates/{v1/app → app}/typescript/README.md +0 -0
  70. package/lib/init-templates/{v2/app → app}/typescript/bin/%name%.template.ts +0 -0
  71. package/lib/init-templates/{v1/app → app}/typescript/cdk.template.json +0 -0
  72. package/lib/init-templates/{v1/app → app}/typescript/jest.config.js +0 -0
  73. package/lib/init-templates/{v2/app → app}/typescript/lib/%name%-stack.template.ts +0 -0
  74. package/lib/init-templates/{v2/app → app}/typescript/package.json +0 -0
  75. package/lib/init-templates/app/typescript/sub-placeholders.hook.d.ts +2 -0
  76. package/lib/init-templates/{v1/app/javascript → app/typescript}/sub-placeholders.hook.js +1 -1
  77. package/lib/init-templates/{v2/app → app}/typescript/test/%name%.test.template.ts +0 -0
  78. package/lib/init-templates/{v1/app → app}/typescript/tsconfig.json +0 -0
  79. package/lib/init-templates/{v1/lib → lib}/info.json +0 -0
  80. package/lib/init-templates/{v1/lib → lib}/typescript/.template.gitignore +0 -0
  81. package/lib/init-templates/{v1/lib → lib}/typescript/.template.npmignore +0 -0
  82. package/lib/init-templates/{v2/lib → lib}/typescript/README.template.md +0 -0
  83. package/lib/init-templates/{v1/lib → lib}/typescript/jest.config.js +0 -0
  84. package/lib/init-templates/{v2/lib → lib}/typescript/lib/index.template.ts +0 -0
  85. package/lib/init-templates/{v2/lib → lib}/typescript/package.json +0 -0
  86. package/lib/init-templates/lib/typescript/sub-placeholders.hook.d.ts +2 -0
  87. package/lib/init-templates/{v1/lib → lib}/typescript/sub-placeholders.hook.js +1 -1
  88. package/lib/init-templates/{v2/lib → lib}/typescript/test/%name%.test.template.ts +0 -0
  89. package/lib/init-templates/{v1/lib → lib}/typescript/tsconfig.json +0 -0
  90. package/lib/init-templates/{v1/sample-app → sample-app}/csharp/.template.gitignore +0 -0
  91. package/lib/init-templates/{v2/sample-app → sample-app}/csharp/README.template.md +0 -0
  92. package/lib/init-templates/sample-app/csharp/add-project.hook.d.ts +2 -0
  93. package/lib/init-templates/{v1/sample-app → sample-app}/csharp/add-project.hook.js +1 -1
  94. package/lib/init-templates/{v1/sample-app → sample-app}/csharp/cdk.template.json +0 -0
  95. package/lib/init-templates/{v2/sample-app → sample-app}/csharp/src/%name.PascalCased%/%name.PascalCased%.template.csproj +0 -0
  96. package/lib/init-templates/{v2/sample-app → sample-app}/csharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.cs +0 -0
  97. package/lib/init-templates/{v1/sample-app → sample-app}/csharp/src/%name.PascalCased%/GlobalSuppressions.cs +0 -0
  98. package/lib/init-templates/{v1/sample-app → sample-app}/csharp/src/%name.PascalCased%/Program.template.cs +0 -0
  99. package/lib/init-templates/{v1/sample-app → sample-app}/csharp/src/%name.PascalCased%.template.sln +0 -0
  100. package/lib/init-templates/{v1/sample-app → sample-app}/fsharp/.template.gitignore +0 -0
  101. package/lib/init-templates/{v1/sample-app → sample-app}/fsharp/README.template.md +0 -0
  102. package/lib/init-templates/sample-app/fsharp/add-project.hook.d.ts +2 -0
  103. package/lib/init-templates/{v2/app → sample-app}/fsharp/add-project.hook.js +1 -1
  104. package/lib/init-templates/{v1/sample-app → sample-app}/fsharp/cdk.template.json +0 -0
  105. package/lib/init-templates/{v2/sample-app → sample-app}/fsharp/src/%name.PascalCased%/%name.PascalCased%.template.fsproj +0 -0
  106. package/lib/init-templates/{v2/sample-app → sample-app}/fsharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.fs +1 -1
  107. package/lib/init-templates/{v1/sample-app → sample-app}/fsharp/src/%name.PascalCased%/Program.template.fs +0 -0
  108. package/lib/init-templates/{v1/sample-app → sample-app}/fsharp/src/%name.PascalCased%.template.sln +0 -0
  109. package/lib/init-templates/{v2/sample-app → sample-app}/go/%name%.template.go +0 -0
  110. package/lib/init-templates/{v2/sample-app → sample-app}/go/%name%_test.template.go +0 -0
  111. package/lib/init-templates/{v1/sample-app → sample-app}/go/.template.gitignore +0 -0
  112. package/lib/init-templates/{v2/sample-app → sample-app}/go/README.md +1 -3
  113. package/lib/init-templates/{v1/sample-app → sample-app}/go/cdk.template.json +0 -0
  114. package/lib/init-templates/{v2/sample-app → sample-app}/go/go.template.mod +0 -0
  115. package/lib/init-templates/{v1/sample-app → sample-app}/info.json +0 -0
  116. package/lib/init-templates/{v1/sample-app → sample-app}/java/.template.gitignore +0 -0
  117. package/lib/init-templates/{v2/sample-app → sample-app}/java/README.template.md +0 -0
  118. package/lib/init-templates/{v1/sample-app → sample-app}/java/cdk.json +0 -0
  119. package/lib/init-templates/{v2/sample-app → sample-app}/java/pom.xml +0 -0
  120. package/lib/init-templates/{v2/sample-app → sample-app}/java/src/main/java/com/myorg/%name.PascalCased%App.template.java +0 -0
  121. package/lib/init-templates/{v2/sample-app → sample-app}/java/src/main/java/com/myorg/%name.PascalCased%Stack.template.java +0 -0
  122. package/lib/init-templates/{v2/sample-app → sample-app}/java/src/test/java/com/myorg/%name.PascalCased%StackTest.template.java +0 -0
  123. package/lib/init-templates/sample-app/java/sub-placeholders.hook.d.ts +2 -0
  124. package/lib/init-templates/{v1/sample-app → sample-app}/java/sub-placeholders.hook.js +1 -1
  125. package/lib/init-templates/{v1/sample-app → sample-app}/javascript/.template.gitignore +0 -0
  126. package/lib/init-templates/{v1/sample-app → sample-app}/javascript/.template.npmignore +0 -0
  127. package/lib/init-templates/{v2/sample-app → sample-app}/javascript/README.template.md +0 -0
  128. package/lib/init-templates/{v2/sample-app → sample-app}/javascript/bin/%name%.template.js +0 -0
  129. package/lib/init-templates/{v1/sample-app → sample-app}/javascript/cdk.template.json +0 -0
  130. package/lib/init-templates/{v2/app → sample-app}/javascript/jest.config.js +0 -0
  131. package/lib/init-templates/{v2/sample-app → sample-app}/javascript/lib/%name%-stack.template.js +0 -0
  132. package/lib/init-templates/{v2/sample-app → sample-app}/javascript/package.json +0 -0
  133. package/lib/init-templates/sample-app/javascript/sub-placeholders.hook.d.ts +2 -0
  134. package/lib/init-templates/{v1/app/typescript → sample-app/javascript}/sub-placeholders.hook.js +1 -1
  135. package/lib/init-templates/{v2/sample-app → sample-app}/javascript/test/%name%.test.template.js +0 -0
  136. package/lib/init-templates/{v1/sample-app → sample-app}/javascript/tsconfig.json +0 -0
  137. package/lib/init-templates/{v2/sample-app → sample-app}/python/%name.PythonModule%/%name.PythonModule%_stack.template.py +0 -0
  138. package/lib/init-templates/{v1/sample-app → sample-app}/python/%name.PythonModule%/__init__.py +0 -0
  139. package/lib/init-templates/{v1/sample-app → sample-app}/python/.template.gitignore +0 -0
  140. package/lib/init-templates/{v2/sample-app → sample-app}/python/README.template.md +0 -0
  141. package/lib/init-templates/{v2/sample-app → sample-app}/python/app.template.py +0 -0
  142. package/lib/init-templates/{v1/sample-app → sample-app}/python/cdk.template.json +0 -0
  143. package/lib/init-templates/{v1/sample-app → sample-app}/python/requirements-dev.txt +0 -0
  144. package/lib/init-templates/{v2/sample-app → sample-app}/python/requirements.txt +0 -0
  145. package/lib/init-templates/{v1/sample-app → sample-app}/python/source.bat +0 -0
  146. package/lib/init-templates/sample-app/python/sub-placeholders.hook.d.ts +2 -0
  147. package/lib/init-templates/{v2/app → sample-app}/python/sub-placeholders.hook.js +1 -1
  148. package/lib/init-templates/{v1/sample-app → sample-app}/python/tests/__init__.py +0 -0
  149. package/lib/init-templates/{v1/sample-app → sample-app}/python/tests/unit/__init__.py +0 -0
  150. package/lib/init-templates/{v2/sample-app → sample-app}/python/tests/unit/test_%name.PythonModule%_stack.template.py +0 -0
  151. package/lib/init-templates/{v1/sample-app → sample-app}/typescript/.template.gitignore +0 -0
  152. package/lib/init-templates/{v1/sample-app → sample-app}/typescript/.template.npmignore +0 -0
  153. package/lib/init-templates/{v2/sample-app → sample-app}/typescript/README.template.md +0 -0
  154. package/lib/init-templates/{v2/sample-app → sample-app}/typescript/bin/%name%.template.ts +0 -0
  155. package/lib/init-templates/{v1/sample-app → sample-app}/typescript/cdk.template.json +0 -0
  156. package/lib/init-templates/{v1/sample-app → sample-app}/typescript/jest.config.js +0 -0
  157. package/lib/init-templates/{v2/sample-app → sample-app}/typescript/lib/%name%-stack.template.ts +0 -0
  158. package/lib/init-templates/{v2/sample-app → sample-app}/typescript/package.json +0 -0
  159. package/lib/init-templates/sample-app/typescript/sub-placeholders.hook.d.ts +2 -0
  160. package/lib/init-templates/sample-app/typescript/sub-placeholders.hook.js +9 -0
  161. package/lib/init-templates/{v2/sample-app → sample-app}/typescript/test/%name%.test.template.ts +0 -0
  162. package/lib/init-templates/{v1/sample-app → sample-app}/typescript/tsconfig.json +0 -0
  163. package/lib/init.js +3 -16
  164. package/lib/util/directories.d.ts +11 -0
  165. package/lib/util/directories.js +19 -2
  166. package/package.json +9 -9
  167. package/test/api/deploy-stack.test.js +2 -2
  168. package/test/commands/context-command.test.js +186 -47
  169. package/test/init.test.js +50 -56
  170. package/test/integ/cli/cli.integtest.js +30 -1
  171. package/test/integ/cli/sam_cdk_integ_app/src/python/Function/requirements.txt +1 -1
  172. package/test/integ/cli/sam_cdk_integ_app/src/python/Layer/requirements.txt +1 -1
  173. package/lib/init-templates/v1/app/csharp/add-project.hook.d.ts +0 -2
  174. package/lib/init-templates/v1/app/csharp/add-project.hook.js +0 -31
  175. package/lib/init-templates/v1/app/csharp/src/%name.PascalCased%/%name.PascalCased%.template.csproj +0 -19
  176. package/lib/init-templates/v1/app/csharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.cs +0 -12
  177. package/lib/init-templates/v1/app/csharp/src/%name.PascalCased%/Program.template.cs +0 -45
  178. package/lib/init-templates/v1/app/fsharp/add-project.hook.d.ts +0 -2
  179. package/lib/init-templates/v1/app/fsharp/src/%name.PascalCased%/%name.PascalCased%.template.fsproj +0 -24
  180. package/lib/init-templates/v1/app/go/%name%.template.go +0 -68
  181. package/lib/init-templates/v1/app/go/%name%_test.template.go +0 -26
  182. package/lib/init-templates/v1/app/go/README.md +0 -14
  183. package/lib/init-templates/v1/app/go/go.template.mod +0 -9
  184. package/lib/init-templates/v1/app/java/pom.xml +0 -60
  185. package/lib/init-templates/v1/app/java/src/main/java/com/myorg/%name.PascalCased%App.template.java +0 -41
  186. package/lib/init-templates/v1/app/java/src/main/java/com/myorg/%name.PascalCased%Stack.template.java +0 -24
  187. package/lib/init-templates/v1/app/java/src/test/java/com/myorg/%name.PascalCased%Test.template.java +0 -26
  188. package/lib/init-templates/v1/app/java/sub-placeholders.hook.d.ts +0 -2
  189. package/lib/init-templates/v1/app/javascript/bin/%name%.template.js +0 -21
  190. package/lib/init-templates/v1/app/javascript/jest.config.js +0 -3
  191. package/lib/init-templates/v1/app/javascript/lib/%name%-stack.template.js +0 -23
  192. package/lib/init-templates/v1/app/javascript/package.json +0 -20
  193. package/lib/init-templates/v1/app/javascript/sub-placeholders.hook.d.ts +0 -2
  194. package/lib/init-templates/v1/app/javascript/test/%name%.test.template.js +0 -18
  195. package/lib/init-templates/v1/app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py +0 -24
  196. package/lib/init-templates/v1/app/python/.template.gitignore +0 -11
  197. package/lib/init-templates/v1/app/python/app.template.py +0 -34
  198. package/lib/init-templates/v1/app/python/requirements.txt +0 -2
  199. package/lib/init-templates/v1/app/python/sub-placeholders.hook.d.ts +0 -2
  200. package/lib/init-templates/v1/app/python/sub-placeholders.hook.js +0 -9
  201. package/lib/init-templates/v1/app/python/tests/unit/test_%name.PythonModule%_stack.template.py +0 -19
  202. package/lib/init-templates/v1/app/typescript/bin/%name%.template.ts +0 -21
  203. package/lib/init-templates/v1/app/typescript/lib/%name%-stack.template.ts +0 -15
  204. package/lib/init-templates/v1/app/typescript/package.json +0 -28
  205. package/lib/init-templates/v1/app/typescript/sub-placeholders.hook.d.ts +0 -2
  206. package/lib/init-templates/v1/app/typescript/test/%name%.test.template.ts +0 -17
  207. package/lib/init-templates/v1/lib/typescript/README.template.md +0 -12
  208. package/lib/init-templates/v1/lib/typescript/lib/index.template.ts +0 -20
  209. package/lib/init-templates/v1/lib/typescript/package.json +0 -26
  210. package/lib/init-templates/v1/lib/typescript/sub-placeholders.hook.d.ts +0 -2
  211. package/lib/init-templates/v1/lib/typescript/test/%name%.test.template.ts +0 -18
  212. package/lib/init-templates/v1/sample-app/csharp/README.template.md +0 -22
  213. package/lib/init-templates/v1/sample-app/csharp/add-project.hook.d.ts +0 -2
  214. package/lib/init-templates/v1/sample-app/csharp/src/%name.PascalCased%/%name.PascalCased%.template.csproj +0 -23
  215. package/lib/init-templates/v1/sample-app/csharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.cs +0 -23
  216. package/lib/init-templates/v1/sample-app/fsharp/add-project.hook.d.ts +0 -2
  217. package/lib/init-templates/v1/sample-app/fsharp/add-project.hook.js +0 -31
  218. package/lib/init-templates/v1/sample-app/fsharp/src/%name.PascalCased%/%name.PascalCased%.template.fsproj +0 -27
  219. package/lib/init-templates/v1/sample-app/fsharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.fs +0 -14
  220. package/lib/init-templates/v1/sample-app/go/%name%.template.go +0 -71
  221. package/lib/init-templates/v1/sample-app/go/%name%_test.template.go +0 -25
  222. package/lib/init-templates/v1/sample-app/go/README.md +0 -14
  223. package/lib/init-templates/v1/sample-app/go/go.template.mod +0 -9
  224. package/lib/init-templates/v1/sample-app/java/README.template.md +0 -23
  225. package/lib/init-templates/v1/sample-app/java/pom.xml +0 -72
  226. package/lib/init-templates/v1/sample-app/java/src/main/java/com/myorg/%name.PascalCased%App.template.java +0 -13
  227. package/lib/init-templates/v1/sample-app/java/src/main/java/com/myorg/%name.PascalCased%Stack.template.java +0 -29
  228. package/lib/init-templates/v1/sample-app/java/src/test/java/com/myorg/%name.PascalCased%StackTest.template.java +0 -26
  229. package/lib/init-templates/v1/sample-app/java/sub-placeholders.hook.d.ts +0 -2
  230. package/lib/init-templates/v1/sample-app/javascript/README.template.md +0 -17
  231. package/lib/init-templates/v1/sample-app/javascript/bin/%name%.template.js +0 -6
  232. package/lib/init-templates/v1/sample-app/javascript/lib/%name%-stack.template.js +0 -25
  233. package/lib/init-templates/v1/sample-app/javascript/package.json +0 -23
  234. package/lib/init-templates/v1/sample-app/javascript/sub-placeholders.hook.d.ts +0 -2
  235. package/lib/init-templates/v1/sample-app/javascript/test/%name%.test.template.js +0 -25
  236. package/lib/init-templates/v1/sample-app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py +0 -24
  237. package/lib/init-templates/v1/sample-app/python/README.template.md +0 -68
  238. package/lib/init-templates/v1/sample-app/python/app.template.py +0 -11
  239. package/lib/init-templates/v1/sample-app/python/requirements.txt +0 -7
  240. package/lib/init-templates/v1/sample-app/python/sub-placeholders.hook.d.ts +0 -2
  241. package/lib/init-templates/v1/sample-app/python/tests/unit/test_%name.PythonModule%_stack.template.py +0 -24
  242. package/lib/init-templates/v1/sample-app/typescript/README.template.md +0 -19
  243. package/lib/init-templates/v1/sample-app/typescript/bin/%name%.template.ts +0 -6
  244. package/lib/init-templates/v1/sample-app/typescript/lib/%name%-stack.template.ts +0 -18
  245. package/lib/init-templates/v1/sample-app/typescript/package.json +0 -30
  246. package/lib/init-templates/v1/sample-app/typescript/sub-placeholders.hook.d.ts +0 -2
  247. package/lib/init-templates/v1/sample-app/typescript/sub-placeholders.hook.js +0 -9
  248. package/lib/init-templates/v1/sample-app/typescript/test/%name%.test.template.ts +0 -25
  249. package/lib/init-templates/v2/app/csharp/.template.gitignore +0 -342
  250. package/lib/init-templates/v2/app/csharp/README.md +0 -14
  251. package/lib/init-templates/v2/app/csharp/add-project.hook.d.ts +0 -2
  252. package/lib/init-templates/v2/app/csharp/cdk.template.json +0 -15
  253. package/lib/init-templates/v2/app/csharp/src/%name.PascalCased%/GlobalSuppressions.cs +0 -1
  254. package/lib/init-templates/v2/app/csharp/src/%name.PascalCased%.template.sln +0 -18
  255. package/lib/init-templates/v2/app/fsharp/.template.gitignore +0 -342
  256. package/lib/init-templates/v2/app/fsharp/README.md +0 -18
  257. package/lib/init-templates/v2/app/fsharp/add-project.hook.d.ts +0 -2
  258. package/lib/init-templates/v2/app/fsharp/cdk.template.json +0 -14
  259. package/lib/init-templates/v2/app/fsharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.fs +0 -8
  260. package/lib/init-templates/v2/app/fsharp/src/%name.PascalCased%/Program.template.fs +0 -11
  261. package/lib/init-templates/v2/app/fsharp/src/%name.PascalCased%.template.sln +0 -18
  262. package/lib/init-templates/v2/app/go/.template.gitignore +0 -19
  263. package/lib/init-templates/v2/app/go/cdk.template.json +0 -13
  264. package/lib/init-templates/v2/app/info.json +0 -4
  265. package/lib/init-templates/v2/app/java/.template.gitignore +0 -13
  266. package/lib/init-templates/v2/app/java/README.md +0 -18
  267. package/lib/init-templates/v2/app/java/cdk.json +0 -13
  268. package/lib/init-templates/v2/app/java/sub-placeholders.hook.d.ts +0 -2
  269. package/lib/init-templates/v2/app/java/sub-placeholders.hook.js +0 -9
  270. package/lib/init-templates/v2/app/javascript/.template.gitignore +0 -5
  271. package/lib/init-templates/v2/app/javascript/.template.npmignore +0 -3
  272. package/lib/init-templates/v2/app/javascript/README.md +0 -12
  273. package/lib/init-templates/v2/app/javascript/cdk.template.json +0 -15
  274. package/lib/init-templates/v2/app/javascript/sub-placeholders.hook.d.ts +0 -2
  275. package/lib/init-templates/v2/app/javascript/sub-placeholders.hook.js +0 -9
  276. package/lib/init-templates/v2/app/python/%name.PythonModule%/__init__.py +0 -0
  277. package/lib/init-templates/v2/app/python/README.template.md +0 -58
  278. package/lib/init-templates/v2/app/python/cdk.template.json +0 -15
  279. package/lib/init-templates/v2/app/python/requirements-dev.txt +0 -1
  280. package/lib/init-templates/v2/app/python/source.bat +0 -13
  281. package/lib/init-templates/v2/app/python/sub-placeholders.hook.d.ts +0 -2
  282. package/lib/init-templates/v2/app/python/tests/__init__.py +0 -0
  283. package/lib/init-templates/v2/app/python/tests/unit/__init__.py +0 -0
  284. package/lib/init-templates/v2/app/typescript/.template.gitignore +0 -8
  285. package/lib/init-templates/v2/app/typescript/.template.npmignore +0 -6
  286. package/lib/init-templates/v2/app/typescript/README.md +0 -14
  287. package/lib/init-templates/v2/app/typescript/cdk.template.json +0 -17
  288. package/lib/init-templates/v2/app/typescript/jest.config.js +0 -8
  289. package/lib/init-templates/v2/app/typescript/sub-placeholders.hook.d.ts +0 -2
  290. package/lib/init-templates/v2/app/typescript/sub-placeholders.hook.js +0 -9
  291. package/lib/init-templates/v2/app/typescript/tsconfig.json +0 -30
  292. package/lib/init-templates/v2/lib/info.json +0 -4
  293. package/lib/init-templates/v2/lib/typescript/.template.gitignore +0 -8
  294. package/lib/init-templates/v2/lib/typescript/.template.npmignore +0 -6
  295. package/lib/init-templates/v2/lib/typescript/jest.config.js +0 -8
  296. package/lib/init-templates/v2/lib/typescript/sub-placeholders.hook.d.ts +0 -2
  297. package/lib/init-templates/v2/lib/typescript/sub-placeholders.hook.js +0 -9
  298. package/lib/init-templates/v2/lib/typescript/tsconfig.json +0 -30
  299. package/lib/init-templates/v2/sample-app/csharp/.template.gitignore +0 -342
  300. package/lib/init-templates/v2/sample-app/csharp/add-project.hook.d.ts +0 -2
  301. package/lib/init-templates/v2/sample-app/csharp/add-project.hook.js +0 -31
  302. package/lib/init-templates/v2/sample-app/csharp/cdk.template.json +0 -15
  303. package/lib/init-templates/v2/sample-app/csharp/src/%name.PascalCased%/GlobalSuppressions.cs +0 -1
  304. package/lib/init-templates/v2/sample-app/csharp/src/%name.PascalCased%/Program.template.cs +0 -15
  305. package/lib/init-templates/v2/sample-app/csharp/src/%name.PascalCased%.template.sln +0 -18
  306. package/lib/init-templates/v2/sample-app/fsharp/.template.gitignore +0 -342
  307. package/lib/init-templates/v2/sample-app/fsharp/README.template.md +0 -20
  308. package/lib/init-templates/v2/sample-app/fsharp/add-project.hook.d.ts +0 -2
  309. package/lib/init-templates/v2/sample-app/fsharp/add-project.hook.js +0 -31
  310. package/lib/init-templates/v2/sample-app/fsharp/cdk.template.json +0 -14
  311. package/lib/init-templates/v2/sample-app/fsharp/src/%name.PascalCased%/Program.template.fs +0 -11
  312. package/lib/init-templates/v2/sample-app/fsharp/src/%name.PascalCased%.template.sln +0 -18
  313. package/lib/init-templates/v2/sample-app/go/.template.gitignore +0 -19
  314. package/lib/init-templates/v2/sample-app/go/cdk.template.json +0 -13
  315. package/lib/init-templates/v2/sample-app/info.json +0 -4
  316. package/lib/init-templates/v2/sample-app/java/.template.gitignore +0 -13
  317. package/lib/init-templates/v2/sample-app/java/cdk.json +0 -13
  318. package/lib/init-templates/v2/sample-app/java/sub-placeholders.hook.d.ts +0 -2
  319. package/lib/init-templates/v2/sample-app/java/sub-placeholders.hook.js +0 -9
  320. package/lib/init-templates/v2/sample-app/javascript/.template.gitignore +0 -5
  321. package/lib/init-templates/v2/sample-app/javascript/.template.npmignore +0 -3
  322. package/lib/init-templates/v2/sample-app/javascript/cdk.template.json +0 -15
  323. package/lib/init-templates/v2/sample-app/javascript/jest.config.js +0 -3
  324. package/lib/init-templates/v2/sample-app/javascript/sub-placeholders.hook.d.ts +0 -2
  325. package/lib/init-templates/v2/sample-app/javascript/sub-placeholders.hook.js +0 -9
  326. package/lib/init-templates/v2/sample-app/javascript/tsconfig.json +0 -35
  327. package/lib/init-templates/v2/sample-app/python/%name.PythonModule%/__init__.py +0 -0
  328. package/lib/init-templates/v2/sample-app/python/.template.gitignore +0 -22
  329. package/lib/init-templates/v2/sample-app/python/cdk.template.json +0 -15
  330. package/lib/init-templates/v2/sample-app/python/requirements-dev.txt +0 -1
  331. package/lib/init-templates/v2/sample-app/python/source.bat +0 -13
  332. package/lib/init-templates/v2/sample-app/python/sub-placeholders.hook.d.ts +0 -2
  333. package/lib/init-templates/v2/sample-app/python/sub-placeholders.hook.js +0 -9
  334. package/lib/init-templates/v2/sample-app/python/tests/__init__.py +0 -0
  335. package/lib/init-templates/v2/sample-app/python/tests/unit/__init__.py +0 -0
  336. package/lib/init-templates/v2/sample-app/typescript/.template.gitignore +0 -8
  337. package/lib/init-templates/v2/sample-app/typescript/.template.npmignore +0 -6
  338. package/lib/init-templates/v2/sample-app/typescript/cdk.template.json +0 -17
  339. package/lib/init-templates/v2/sample-app/typescript/jest.config.js +0 -8
  340. package/lib/init-templates/v2/sample-app/typescript/sub-placeholders.hook.d.ts +0 -2
  341. package/lib/init-templates/v2/sample-app/typescript/sub-placeholders.hook.js +0 -9
  342. package/lib/init-templates/v2/sample-app/typescript/tsconfig.json +0 -30
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.realHandler = void 0;
4
4
  const chalk = require("chalk");
5
+ const minimatch = require("minimatch");
5
6
  const version = require("../../lib/version");
6
7
  const logging_1 = require("../logging");
7
8
  const settings_1 = require("../settings");
@@ -14,7 +15,7 @@ async function realHandler(options) {
14
15
  logging_1.print('All context values cleared.');
15
16
  }
16
17
  else if (args.reset) {
17
- invalidateContext(configuration.context, args.reset);
18
+ invalidateContext(configuration.context, args.reset, args.force);
18
19
  await configuration.saveContext();
19
20
  }
20
21
  else {
@@ -47,12 +48,13 @@ function listContext(context) {
47
48
  const jsonWithoutNewlines = JSON.stringify(context.all[key], undefined, 2).replace(/\s+/g, ' ');
48
49
  data.push([i, key, jsonWithoutNewlines]);
49
50
  }
50
- logging_1.print(`Context found in ${chalk.blue(settings_1.PROJECT_CONFIG)}:\n`);
51
+ logging_1.print('Context found in %s:', chalk.blue(settings_1.PROJECT_CONFIG));
52
+ logging_1.print('');
51
53
  logging_1.print(util_1.renderTable(data, process.stdout.columns));
52
54
  // eslint-disable-next-line max-len
53
55
  logging_1.print(`Run ${chalk.blue('cdk context --reset KEY_OR_NUMBER')} to remove a context key. It will be refreshed on the next CDK synthesis run.`);
54
56
  }
55
- function invalidateContext(context, key) {
57
+ function invalidateContext(context, key, force) {
56
58
  const i = parseInt(key, 10);
57
59
  if (`${i}` === key) {
58
60
  // was a number and we fully parsed it.
@@ -61,12 +63,70 @@ function invalidateContext(context, key) {
61
63
  // Unset!
62
64
  if (context.has(key)) {
63
65
  context.unset(key);
64
- logging_1.print(`Context value ${chalk.blue(key)} reset. It will be refreshed on next synthesis`);
66
+ // check if the value was actually unset.
67
+ if (!context.has(key)) {
68
+ logging_1.print('Context value %s reset. It will be refreshed on next synthesis', chalk.blue(key));
69
+ return;
70
+ }
71
+ // Value must be in readonly bag
72
+ logging_1.error('Only context values specified in %s can be reset through the CLI', chalk.blue(settings_1.PROJECT_CONTEXT));
73
+ if (!force) {
74
+ throw new Error(`Cannot reset readonly context value with key: ${key}`);
75
+ }
65
76
  }
66
- else {
67
- logging_1.print(`No context value with key ${chalk.blue(key)}`);
77
+ // check if value is expression matching keys
78
+ const matches = keysByExpression(context, key);
79
+ if (matches.length > 0) {
80
+ matches.forEach((match) => {
81
+ context.unset(match);
82
+ });
83
+ const { unset, readonly } = getUnsetAndReadonly(context, matches);
84
+ // output the reset values
85
+ printUnset(unset);
86
+ // warn about values not reset
87
+ printReadonly(readonly);
88
+ // throw when none of the matches were reset
89
+ if (!force && unset.length === 0) {
90
+ throw new Error('None of the matched context values could be reset');
91
+ }
92
+ return;
93
+ }
94
+ if (!force) {
95
+ throw new Error(`No context value matching key: ${key}`);
68
96
  }
69
97
  }
98
+ function printUnset(unset) {
99
+ if (unset.length === 0)
100
+ return;
101
+ logging_1.print('The following matched context values reset. They will be refreshed on next synthesis');
102
+ unset.forEach((match) => {
103
+ logging_1.print(' %s', match);
104
+ });
105
+ }
106
+ function printReadonly(readonly) {
107
+ if (readonly.length === 0)
108
+ return;
109
+ logging_1.warning('The following matched context values could not be reset through the CLI');
110
+ readonly.forEach((match) => {
111
+ logging_1.print(' %s', match);
112
+ });
113
+ logging_1.print('');
114
+ logging_1.print('This usually means they are configured in %s or %s', chalk.blue(settings_1.PROJECT_CONFIG), chalk.blue(settings_1.USER_DEFAULTS));
115
+ }
116
+ function keysByExpression(context, expression) {
117
+ return context.keys.filter(minimatch.filter(expression));
118
+ }
119
+ function getUnsetAndReadonly(context, matches) {
120
+ return matches.reduce((acc, match) => {
121
+ if (context.has(match)) {
122
+ acc.readonly.push(match);
123
+ }
124
+ else {
125
+ acc.unset.push(match);
126
+ }
127
+ return acc;
128
+ }, { unset: [], readonly: [] });
129
+ }
70
130
  function keyByNumber(context, n) {
71
131
  for (const [i, key] of contextKeys(context)) {
72
132
  if (n === i) {
@@ -92,4 +152,4 @@ function enumerate1(xs) {
92
152
  }
93
153
  return ret;
94
154
  }
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsK0JBQStCO0FBQy9CLDZDQUE2QztBQUU3Qyx3Q0FBbUM7QUFDbkMsMENBQXNEO0FBQ3RELGtDQUFzQztBQUUvQixLQUFLLFVBQVUsV0FBVyxDQUFDLE9BQXVCO0lBQ3ZELE1BQU0sRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBRXhDLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtRQUNkLGFBQWEsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDOUIsTUFBTSxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbEMsZUFBSyxDQUFDLDZCQUE2QixDQUFDLENBQUM7S0FDdEM7U0FBTSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7UUFDckIsaUJBQWlCLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBZSxDQUFDLENBQUM7UUFDL0QsTUFBTSxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUM7S0FDbkM7U0FBTTtRQUNMLGdDQUFnQztRQUNoQyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDYixNQUFNLGFBQWEsR0FBRyxhQUFhLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztZQUNoRCxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNuRTthQUFNO1lBQ0wsV0FBVyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNwQztLQUNGO0lBQ0QsTUFBTSxPQUFPLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUV0QyxPQUFPLENBQUMsQ0FBQztBQUNYLENBQUM7QUF0QkQsa0NBc0JDO0FBRUQsU0FBUyxXQUFXLENBQUMsT0FBZ0I7SUFDbkMsTUFB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TztJQUM1QixNQUFNLEdBQUcsR0FBRyxJQUFJLEtBQUssRUFBZSxDQUFDO0lBQ3JDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNWLEtBQUssTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFO1FBQ2xCLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqQixDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ1I7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjaGFsayBmcm9tICdjaGFsayc7XG5pbXBvcnQgKiBhcyB2ZXJzaW9uIGZyb20gJy4uLy4uL2xpYi92ZXJzaW9uJztcbmltcG9ydCB7IENvbW1hbmRPcHRpb25zIH0gZnJvbSAnLi4vY29tbWFuZC1hcGknO1xuaW1wb3J0IHsgcHJpbnQgfSBmcm9tICcuLi9sb2dnaW5nJztcbmltcG9ydCB7IENvbnRleHQsIFBST0pFQ1RfQ09ORklHIH0gZnJvbSAnLi4vc2V0dGluZ3MnO1xuaW1wb3J0IHsgcmVuZGVyVGFibGUgfSBmcm9tICcuLi91dGlsJztcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWxIYW5kbGVyKG9wdGlvbnM6IENvbW1hbmRPcHRpb25zKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgY29uc3QgeyBjb25maWd1cmF0aW9uLCBhcmdzIH0gPSBvcHRpb25zO1xuXG4gIGlmIChhcmdzLmNsZWFyKSB7XG4gICAgY29uZmlndXJhdGlvbi5jb250ZXh0LmNsZWFyKCk7XG4gICAgYXdhaXQgY29uZmlndXJhdGlvbi5zYXZlQ29udGV4dCgpO1xuICAgIHByaW50KCdBbGwgY29udGV4dCB2YWx1ZXMgY2xlYXJlZC4nKTtcbiAgfSBlbHNlIGlmIChhcmdzLnJlc2V0KSB7XG4gICAgaW52YWxpZGF0ZUNvbnRleHQoY29uZmlndXJhdGlvbi5jb250ZXh0LCBhcmdzLnJlc2V0IGFzIHN0cmluZyk7XG4gICAgYXdhaXQgY29uZmlndXJhdGlvbi5zYXZlQ29udGV4dCgpO1xuICB9IGVsc2Uge1xuICAgIC8vIExpc3QgLS0gc3VwcG9ydCAnLS1qc29uJyBmbGFnXG4gICAgaWYgKGFyZ3MuanNvbikge1xuICAgICAgY29uc3QgY29udGV4dFZhbHVlcyA9IGNvbmZpZ3VyYXRpb24uY29udGV4dC5hbGw7XG4gICAgICBwcm9jZXNzLnN0ZG91dC53cml0ZShKU09OLnN0cmluZ2lmeShjb250ZXh0VmFsdWVzLCB1bmRlZmluZWQsIDIpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGlzdENvbnRleHQoY29uZmlndXJhdGlvbi5jb250ZXh0KTtcbiAgICB9XG4gIH1cbiAgYXdhaXQgdmVyc2lvbi5kaXNwbGF5VmVyc2lvbk1lc3NhZ2UoKTtcblxuICByZXR1cm4gMDtcbn1cblxuZnVuY3Rpb24gbGlzdENvbnRleHQoY29udGV4dDogQ29udGV4dCkge1xuICBjb25zdCBrZXlzID0gY29udGV4dEtleXMoY29udGV4dCk7XG5cbiAgaWYgKGtleXMubGVuZ3RoID09PSAwKSB7XG4gICAgcHJpbnQoJ1RoaXMgQ0RLIGFwcGxpY2F0aW9uIGRvZXMgbm90IGhhdmUgYW55IHNhdmVkIGNvbnRleHQgdmFsdWVzIHlldC4nKTtcbiAgICBwcmludCgnJyk7XG4gICAgcHJpbnQoJ0NvbnRleHQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIHNhdmVkIHdoZW4geW91IHN5bnRoZXNpemUgQ0RLIGFwcHMnKTtcbiAgICBwcmludCgndGhhdCB1c2UgZW52aXJvbm1lbnQgY29udGV4dCBpbmZvcm1hdGlvbiBsaWtlIEFaIGluZm9ybWF0aW9uLCBWUENzLCcpO1xuICAgIHByaW50KCdTU00gcGFyYW1ldGVycywgYW5kIHNvIG9uLicpO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gUHJpbnQgY29uZmlnIGJ5IGRlZmF1bHRcbiAgY29uc3QgZGF0YTogYW55W10gPSBbW2NoYWxrLmdyZWVuKCcjJyksIGNoYWxrLmdyZWVuKCdLZXknKSwgY2hhbGsuZ3JlZW4oJ1ZhbHVlJyldXTtcbiAgZm9yIChjb25zdCBbaSwga2V5XSBvZiBrZXlzKSB7XG4gICAgY29uc3QganNvbldpdGhvdXROZXdsaW5lcyA9IEpTT04uc3RyaW5naWZ5KGNvbnRleHQuYWxsW2tleV0sIHVuZGVmaW5lZCwgMikucmVwbGFjZSgvXFxzKy9nLCAnICcpO1xuICAgIGRhdGEucHVzaChbaSwga2V5LCBqc29uV2l0aG91dE5ld2xpbmVzXSk7XG4gIH1cblxuICBwcmludChgQ29udGV4dCBmb3VuZCBpbiAke2NoYWxrLmJsdWUoUFJPSkVDVF9DT05GSUcpfTpcXG5gKTtcblxuICBwcmludChyZW5kZXJUYWJsZShkYXRhLCBwcm9jZXNzLnN0ZG91dC5jb2x1bW5zKSk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbiAgcHJpbnQoYFJ1biAke2NoYWxrLmJsdWUoJ2NkayBjb250ZXh0IC0tcmVzZXQgS0VZX09SX05VTUJFUicpfSB0byByZW1vdmUgYSBjb250ZXh0IGtleS4gSXQgd2lsbCBiZSByZWZyZXNoZWQgb24gdGhlIG5leHQgQ0RLIHN5bnRoZXNpcyBydW4uYCk7XG59XG5cbmZ1bmN0aW9uIGludmFsaWRhdGVDb250ZXh0KGNvbnRleHQ6IENvbnRleHQsIGtleTogc3RyaW5nKSB7XG4gIGNvbnN0IGkgPSBwYXJzZUludChrZXksIDEwKTtcbiAgaWYgKGAke2l9YCA9PT0ga2V5KSB7XG4gICAgLy8gd2FzIGEgbnVtYmVyIGFuZCB3ZSBmdWxseSBwYXJzZWQgaXQuXG4gICAga2V5ID0ga2V5QnlOdW1iZXIoY29udGV4dCwgaSk7XG4gIH1cblxuICAvLyBVbnNldCFcbiAgaWYgKGNvbnRleHQuaGFzKGtleSkpIHtcbiAgICBjb250ZXh0LnVuc2V0KGtleSk7XG4gICAgcHJpbnQoYENvbnRleHQgdmFsdWUgJHtjaGFsay5ibHVlKGtleSl9IHJlc2V0LiBJdCB3aWxsIGJlIHJlZnJlc2hlZCBvbiBuZXh0IHN5bnRoZXNpc2ApO1xuICB9IGVsc2Uge1xuICAgIHByaW50KGBObyBjb250ZXh0IHZhbHVlIHdpdGgga2V5ICR7Y2hhbGsuYmx1ZShrZXkpfWApO1xuICB9XG59XG5cbmZ1bmN0aW9uIGtleUJ5TnVtYmVyKGNvbnRleHQ6IENvbnRleHQsIG46IG51bWJlcikge1xuICBmb3IgKGNvbnN0IFtpLCBrZXldIG9mIGNvbnRleHRLZXlzKGNvbnRleHQpKSB7XG4gICAgaWYgKG4gPT09IGkpIHtcbiAgICAgIHJldHVybiBrZXk7XG4gICAgfVxuICB9XG4gIHRocm93IG5ldyBFcnJvcihgTm8gY29udGV4dCBrZXkgd2l0aCBudW1iZXI6ICR7bn1gKTtcbn1cblxuLyoqXG4gKiBSZXR1cm4gZW51bWVyYXRlZCBrZXlzIGluIGEgZGVmaW5pdGl2ZSBvcmRlclxuICovXG5mdW5jdGlvbiBjb250ZXh0S2V5cyhjb250ZXh0OiBDb250ZXh0KTogW251bWJlciwgc3RyaW5nXVtdIHtcbiAgY29uc3Qga2V5cyA9IGNvbnRleHQua2V5cztcbiAga2V5cy5zb3J0KCk7XG4gIHJldHVybiBlbnVtZXJhdGUxKGtleXMpO1xufVxuXG5mdW5jdGlvbiBlbnVtZXJhdGUxPFQ+KHhzOiBUW10pOiBBcnJheTxbbnVtYmVyLCBUXT4ge1xuICBjb25zdCByZXQgPSBuZXcgQXJyYXk8W251bWJlciwgVF0+KCk7XG4gIGxldCBpID0gMTtcbiAgZm9yIChjb25zdCB4IG9mIHhzKSB7XG4gICAgcmV0LnB1c2goW2ksIHhdKTtcbiAgICBpICs9IDE7XG4gIH1cbiAgcmV0dXJuIHJldDtcbn1cbiJdfQ==
155
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsK0JBQStCO0FBQy9CLHVDQUF1QztBQUN2Qyw2Q0FBNkM7QUFFN0Msd0NBQW1EO0FBQ25ELDBDQUFzRjtBQUN0RixrQ0FBc0M7QUFFL0IsS0FBSyxVQUFVLFdBQVcsQ0FBQyxPQUF1QjtJQUN2RCxNQUFNLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUN4QyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7UUFDZCxhQUFhLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzlCLE1BQU0sYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2xDLGVBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO0tBQ3RDO1NBQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1FBQ3JCLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQWUsRUFBRSxJQUFJLENBQUMsS0FBZ0IsQ0FBQyxDQUFDO1FBQ3RGLE1BQU0sYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFDO0tBQ25DO1NBQU07UUFDTCxnQ0FBZ0M7UUFDaEMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2IsTUFBTSxhQUFhLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7WUFDaEQsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDbkU7YUFBTTtZQUNMLFdBQVcsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDcEM7S0FDRjtJQUNELE1BQU0sT0FBTyxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFFdEMsT0FBTyxDQUFDLENBQUM7QUFDWCxDQUFDO0FBckJELGtDQXFCQztB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LENBQUMsSUFBSSxDQUFDO0lBQzFCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNaLE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzFCLENBQUM7QUFFRCxTQUFTLFVBQVUsQ0FBSSxFQUFPO0lBQzVCLE1BQU0sR0FBRyxHQUFHLElBQUksS0FBSyxFQUFlLENBQUM7SUFDckMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ1YsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUU7UUFDbEIsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pCLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDUjtJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNoYWxrIGZyb20gJ2NoYWxrJztcbmltcG9ydCAqIGFzIG1pbmltYXRjaCBmcm9tICdtaW5pbWF0Y2gnO1xuaW1wb3J0ICogYXMgdmVyc2lvbiBmcm9tICcuLi8uLi9saWIvdmVyc2lvbic7XG5pbXBvcnQgeyBDb21tYW5kT3B0aW9ucyB9IGZyb20gJy4uL2NvbW1hbmQtYXBpJztcbmltcG9ydCB7IHByaW50LCBlcnJvciwgd2FybmluZyB9IGZyb20gJy4uL2xvZ2dpbmcnO1xuaW1wb3J0IHsgQ29udGV4dCwgUFJPSkVDVF9DT05GSUcsIFBST0pFQ1RfQ09OVEVYVCwgVVNFUl9ERUZBVUxUUyB9IGZyb20gJy4uL3NldHRpbmdzJztcbmltcG9ydCB7IHJlbmRlclRhYmxlIH0gZnJvbSAnLi4vdXRpbCc7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFsSGFuZGxlcihvcHRpb25zOiBDb21tYW5kT3B0aW9ucyk6IFByb21pc2U8bnVtYmVyPiB7XG4gIGNvbnN0IHsgY29uZmlndXJhdGlvbiwgYXJncyB9ID0gb3B0aW9ucztcbiAgaWYgKGFyZ3MuY2xlYXIpIHtcbiAgICBjb25maWd1cmF0aW9uLmNvbnRleHQuY2xlYXIoKTtcbiAgICBhd2FpdCBjb25maWd1cmF0aW9uLnNhdmVDb250ZXh0KCk7XG4gICAgcHJpbnQoJ0FsbCBjb250ZXh0IHZhbHVlcyBjbGVhcmVkLicpO1xuICB9IGVsc2UgaWYgKGFyZ3MucmVzZXQpIHtcbiAgICBpbnZhbGlkYXRlQ29udGV4dChjb25maWd1cmF0aW9uLmNvbnRleHQsIGFyZ3MucmVzZXQgYXMgc3RyaW5nLCBhcmdzLmZvcmNlIGFzIGJvb2xlYW4pO1xuICAgIGF3YWl0IGNvbmZpZ3VyYXRpb24uc2F2ZUNvbnRleHQoKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBMaXN0IC0tIHN1cHBvcnQgJy0tanNvbicgZmxhZ1xuICAgIGlmIChhcmdzLmpzb24pIHtcbiAgICAgIGNvbnN0IGNvbnRleHRWYWx1ZXMgPSBjb25maWd1cmF0aW9uLmNvbnRleHQuYWxsO1xuICAgICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoSlNPTi5zdHJpbmdpZnkoY29udGV4dFZhbHVlcywgdW5kZWZpbmVkLCAyKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxpc3RDb250ZXh0KGNvbmZpZ3VyYXRpb24uY29udGV4dCk7XG4gICAgfVxuICB9XG4gIGF3YWl0IHZlcnNpb24uZGlzcGxheVZlcnNpb25NZXNzYWdlKCk7XG5cbiAgcmV0dXJuIDA7XG59XG5cbmZ1bmN0aW9uIGxpc3RDb250ZXh0KGNvbnRleHQ6IENvbnRleHQpIHtcbiAgY29uc3Qga2V5cyA9IGNvbnRleHRLZXlzKGNvbnRleHQpO1xuXG4gIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkge1xuICAgIHByaW50KCdUaGlzIENESyBhcHBsaWNhdGlvbiBkb2VzIG5vdCBoYXZlIGFueSBzYXZlZCBjb250ZXh0IHZhbHVlcyB5ZXQuJyk7XG4gICAgcHJpbnQoJycpO1xuICAgIHByaW50KCdDb250ZXh0IHdpbGwgYXV0b21hdGljYWxseSBiZSBzYXZlZCB3aGVuIHlvdSBzeW50aGVzaXplIENESyBhcHBzJyk7XG4gICAgcHJpbnQoJ3RoYXQgdXNlIGVudmlyb25tZW50IGNvbnRleHQgaW5mb3JtYXRpb24gbGlrZSBBWiBpbmZvcm1hdGlvbiwgVlBDcywnKTtcbiAgICBwcmludCgnU1NNIHBhcmFtZXRlcnMsIGFuZCBzbyBvbi4nKTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIFByaW50IGNvbmZpZyBieSBkZWZhdWx0XG4gIGNvbnN0IGRhdGE6IGFueVtdID0gW1tjaGFsay5ncmVlbignIycpLCBjaGFsay5ncmVlbignS2V5JyksIGNoYWxrLmdyZWVuKCdWYWx1ZScpXV07XG4gIGZvciAoY29uc3QgW2ksIGtleV0gb2Yga2V5cykge1xuICAgIGNvbnN0IGpzb25XaXRob3V0TmV3bGluZXMgPSBKU09OLnN0cmluZ2lmeShjb250ZXh0LmFsbFtrZXldLCB1bmRlZmluZWQsIDIpLnJlcGxhY2UoL1xccysvZywgJyAnKTtcbiAgICBkYXRhLnB1c2goW2ksIGtleSwganNvbldpdGhvdXROZXdsaW5lc10pO1xuICB9XG4gIHByaW50KCdDb250ZXh0IGZvdW5kIGluICVzOicsIGNoYWxrLmJsdWUoUFJPSkVDVF9DT05GSUcpKTtcbiAgcHJpbnQoJycpO1xuICBwcmludChyZW5kZXJUYWJsZShkYXRhLCBwcm9jZXNzLnN0ZG91dC5jb2x1bW5zKSk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbiAgcHJpbnQoYFJ1biAke2NoYWxrLmJsdWUoJ2NkayBjb250ZXh0IC0tcmVzZXQgS0VZX09SX05VTUJFUicpfSB0byByZW1vdmUgYSBjb250ZXh0IGtleS4gSXQgd2lsbCBiZSByZWZyZXNoZWQgb24gdGhlIG5leHQgQ0RLIHN5bnRoZXNpcyBydW4uYCk7XG59XG5cbmZ1bmN0aW9uIGludmFsaWRhdGVDb250ZXh0KGNvbnRleHQ6IENvbnRleHQsIGtleTogc3RyaW5nLCBmb3JjZTogYm9vbGVhbikge1xuICBjb25zdCBpID0gcGFyc2VJbnQoa2V5LCAxMCk7XG4gIGlmIChgJHtpfWAgPT09IGtleSkge1xuICAgIC8vIHdhcyBhIG51bWJlciBhbmQgd2UgZnVsbHkgcGFyc2VkIGl0LlxuICAgIGtleSA9IGtleUJ5TnVtYmVyKGNvbnRleHQsIGkpO1xuICB9XG4gIC8vIFVuc2V0IVxuICBpZiAoY29udGV4dC5oYXMoa2V5KSkge1xuICAgIGNvbnRleHQudW5zZXQoa2V5KTtcbiAgICAvLyBjaGVjayBpZiB0aGUgdmFsdWUgd2FzIGFjdHVhbGx5IHVuc2V0LlxuICAgIGlmICghY29udGV4dC5oYXMoa2V5KSkge1xuICAgICAgcHJpbnQoJ0NvbnRleHQgdmFsdWUgJXMgcmVzZXQuIEl0IHdpbGwgYmUgcmVmcmVzaGVkIG9uIG5leHQgc3ludGhlc2lzJywgY2hhbGsuYmx1ZShrZXkpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBWYWx1ZSBtdXN0IGJlIGluIHJlYWRvbmx5IGJhZ1xuICAgIGVycm9yKCdPbmx5IGNvbnRleHQgdmFsdWVzIHNwZWNpZmllZCBpbiAlcyBjYW4gYmUgcmVzZXQgdGhyb3VnaCB0aGUgQ0xJJywgY2hhbGsuYmx1ZShQUk9KRUNUX0NPTlRFWFQpKTtcbiAgICBpZiAoIWZvcmNlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCByZXNldCByZWFkb25seSBjb250ZXh0IHZhbHVlIHdpdGgga2V5OiAke2tleX1gKTtcbiAgICB9XG4gIH1cblxuICAvLyBjaGVjayBpZiB2YWx1ZSBpcyBleHByZXNzaW9uIG1hdGNoaW5nIGtleXNcbiAgY29uc3QgbWF0Y2hlcyA9IGtleXNCeUV4cHJlc3Npb24oY29udGV4dCwga2V5KTtcblxuICBpZiAobWF0Y2hlcy5sZW5ndGggPiAwKSB7XG5cbiAgICBtYXRjaGVzLmZvckVhY2goKG1hdGNoKSA9PiB7XG4gICAgICBjb250ZXh0LnVuc2V0KG1hdGNoKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IHsgdW5zZXQsIHJlYWRvbmx5IH0gPSBnZXRVbnNldEFuZFJlYWRvbmx5KGNvbnRleHQsIG1hdGNoZXMpO1xuXG4gICAgLy8gb3V0cHV0IHRoZSByZXNldCB2YWx1ZXNcbiAgICBwcmludFVuc2V0KHVuc2V0KTtcblxuICAgIC8vIHdhcm4gYWJvdXQgdmFsdWVzIG5vdCByZXNldFxuICAgIHByaW50UmVhZG9ubHkocmVhZG9ubHkpO1xuXG4gICAgLy8gdGhyb3cgd2hlbiBub25lIG9mIHRoZSBtYXRjaGVzIHdlcmUgcmVzZXRcbiAgICBpZiAoIWZvcmNlICYmIHVuc2V0Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb25lIG9mIHRoZSBtYXRjaGVkIGNvbnRleHQgdmFsdWVzIGNvdWxkIGJlIHJlc2V0Jyk7XG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxuICBpZiAoIWZvcmNlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBObyBjb250ZXh0IHZhbHVlIG1hdGNoaW5nIGtleTogJHtrZXl9YCk7XG4gIH1cbn1cbmZ1bmN0aW9uIHByaW50VW5zZXQodW5zZXQ6IHN0cmluZ1tdKSB7XG4gIGlmICh1bnNldC5sZW5ndGggPT09IDApIHJldHVybjtcbiAgcHJpbnQoJ1RoZSBmb2xsb3dpbmcgbWF0Y2hlZCBjb250ZXh0IHZhbHVlcyByZXNldC4gVGhleSB3aWxsIGJlIHJlZnJlc2hlZCBvbiBuZXh0IHN5bnRoZXNpcycpO1xuICB1bnNldC5mb3JFYWNoKChtYXRjaCkgPT4ge1xuICAgIHByaW50KCcgICVzJywgbWF0Y2gpO1xuICB9KTtcbn1cbmZ1bmN0aW9uIHByaW50UmVhZG9ubHkocmVhZG9ubHk6IHN0cmluZ1tdKSB7XG4gIGlmIChyZWFkb25seS5sZW5ndGggPT09IDApIHJldHVybjtcbiAgd2FybmluZygnVGhlIGZvbGxvd2luZyBtYXRjaGVkIGNvbnRleHQgdmFsdWVzIGNvdWxkIG5vdCBiZSByZXNldCB0aHJvdWdoIHRoZSBDTEknKTtcbiAgcmVhZG9ubHkuZm9yRWFjaCgobWF0Y2gpID0+IHtcbiAgICBwcmludCgnICAlcycsIG1hdGNoKTtcbiAgfSk7XG4gIHByaW50KCcnKTtcbiAgcHJpbnQoJ1RoaXMgdXN1YWxseSBtZWFucyB0aGV5IGFyZSBjb25maWd1cmVkIGluICVzIG9yICVzJywgY2hhbGsuYmx1ZShQUk9KRUNUX0NPTkZJRyksIGNoYWxrLmJsdWUoVVNFUl9ERUZBVUxUUykpO1xufVxuZnVuY3Rpb24ga2V5c0J5RXhwcmVzc2lvbihjb250ZXh0OiBDb250ZXh0LCBleHByZXNzaW9uOiBzdHJpbmcpIHtcbiAgcmV0dXJuIGNvbnRleHQua2V5cy5maWx0ZXIobWluaW1hdGNoLmZpbHRlcihleHByZXNzaW9uKSk7XG59XG5cbmZ1bmN0aW9uIGdldFVuc2V0QW5kUmVhZG9ubHkoY29udGV4dDogQ29udGV4dCwgbWF0Y2hlczogc3RyaW5nW10pIHtcbiAgcmV0dXJuIG1hdGNoZXMucmVkdWNlPHsgdW5zZXQ6IHN0cmluZ1tdLCByZWFkb25seTogc3RyaW5nW10gfT4oKGFjYywgbWF0Y2gpID0+IHtcbiAgICBpZiAoY29udGV4dC5oYXMobWF0Y2gpKSB7XG4gICAgICBhY2MucmVhZG9ubHkucHVzaChtYXRjaCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFjYy51bnNldC5wdXNoKG1hdGNoKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgeyB1bnNldDogW10sIHJlYWRvbmx5OiBbXSB9KTtcbn1cblxuZnVuY3Rpb24ga2V5QnlOdW1iZXIoY29udGV4dDogQ29udGV4dCwgbjogbnVtYmVyKSB7XG4gIGZvciAoY29uc3QgW2ksIGtleV0gb2YgY29udGV4dEtleXMoY29udGV4dCkpIHtcbiAgICBpZiAobiA9PT0gaSkge1xuICAgICAgcmV0dXJuIGtleTtcbiAgICB9XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKGBObyBjb250ZXh0IGtleSB3aXRoIG51bWJlcjogJHtufWApO1xufVxuXG4vKipcbiAqIFJldHVybiBlbnVtZXJhdGVkIGtleXMgaW4gYSBkZWZpbml0aXZlIG9yZGVyXG4gKi9cbmZ1bmN0aW9uIGNvbnRleHRLZXlzKGNvbnRleHQ6IENvbnRleHQpOiBbbnVtYmVyLCBzdHJpbmddW10ge1xuICBjb25zdCBrZXlzID0gY29udGV4dC5rZXlzO1xuICBrZXlzLnNvcnQoKTtcbiAgcmV0dXJuIGVudW1lcmF0ZTEoa2V5cyk7XG59XG5cbmZ1bmN0aW9uIGVudW1lcmF0ZTE8VD4oeHM6IFRbXSk6IEFycmF5PFtudW1iZXIsIFRdPiB7XG4gIGNvbnN0IHJldCA9IG5ldyBBcnJheTxbbnVtYmVyLCBUXT4oKTtcbiAgbGV0IGkgPSAxO1xuICBmb3IgKGNvbnN0IHggb2YgeHMpIHtcbiAgICByZXQucHVzaChbaSwgeF0pO1xuICAgIGkgKz0gMTtcbiAgfVxuICByZXR1cm4gcmV0O1xufVxuIl19