aws-cdk 2.1006.0 → 3.0.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 (256) hide show
  1. package/README.md +1 -1
  2. package/THIRD_PARTY_LICENSES +104 -86
  3. package/build-info.json +2 -2
  4. package/db.json.gz +0 -0
  5. package/lib/api/aws-auth.d.ts +1 -0
  6. package/lib/api/{logs/index.js → aws-auth.js} +2 -3
  7. package/lib/api/bootstrap.d.ts +1 -0
  8. package/lib/api/bootstrap.js +18 -0
  9. package/lib/api/cloud-assembly.d.ts +1 -0
  10. package/lib/api/cloud-assembly.js +18 -0
  11. package/lib/api/cloudformation.d.ts +1 -0
  12. package/lib/api/cloudformation.js +18 -0
  13. package/lib/api/context.d.ts +1 -40
  14. package/lib/api/context.js +16 -80
  15. package/lib/api/deployments.d.ts +1 -0
  16. package/lib/api/deployments.js +18 -0
  17. package/lib/api/environment.d.ts +1 -0
  18. package/lib/api/environment.js +18 -0
  19. package/lib/api/garbage-collection.d.ts +1 -0
  20. package/lib/api/garbage-collection.js +18 -0
  21. package/lib/api/hotswap.d.ts +1 -0
  22. package/lib/api/hotswap.js +18 -0
  23. package/lib/api/index.d.ts +5 -1
  24. package/lib/api/index.js +6 -2
  25. package/lib/api/logs-monitor.d.ts +1 -0
  26. package/lib/api/logs-monitor.js +18 -0
  27. package/lib/api/notices.d.ts +1 -0
  28. package/lib/api/notices.js +18 -0
  29. package/lib/api/plugin.d.ts +1 -0
  30. package/lib/api/{resource-import/index.js → plugin.js} +2 -3
  31. package/lib/api/resource-import.d.ts +1 -0
  32. package/lib/api/resource-import.js +18 -0
  33. package/lib/api/rwlock.d.ts +1 -0
  34. package/lib/api/{garbage-collection/index.js → rwlock.js} +2 -2
  35. package/lib/api/settings.d.ts +1 -26
  36. package/lib/api/settings.js +16 -103
  37. package/lib/api/stack-events.d.ts +1 -0
  38. package/lib/api/stack-events.js +18 -0
  39. package/lib/api/tags.d.ts +1 -9
  40. package/lib/api/tags.js +16 -8
  41. package/lib/api/toolkit-info.d.ts +1 -52
  42. package/lib/api/toolkit-info.js +16 -152
  43. package/lib/api/tree.d.ts +1 -31
  44. package/lib/api/tree.js +16 -35
  45. package/lib/api/work-graph.d.ts +1 -0
  46. package/lib/api/work-graph.js +18 -0
  47. package/lib/api-private.d.ts +3 -0
  48. package/lib/api-private.js +22 -0
  49. package/lib/cli/cdk-toolkit.d.ts +20 -16
  50. package/lib/cli/cdk-toolkit.js +102 -37
  51. package/lib/cli/cli-config.js +2 -2
  52. package/lib/cli/cli.d.ts +1 -1
  53. package/lib/cli/cli.js +22 -19
  54. package/lib/cli/io-host/cli-io-host.js +2 -2
  55. package/lib/cli/pretty-print-error.js +3 -1
  56. package/lib/cli/util/npm.d.ts +4 -1
  57. package/lib/cli/util/npm.js +25 -13
  58. package/lib/cli/version.d.ts +1 -1
  59. package/lib/cli/version.js +21 -25
  60. package/lib/commands/context.js +3 -2
  61. package/lib/commands/diff.d.ts +1 -50
  62. package/lib/commands/diff.js +5 -213
  63. package/lib/commands/init/init.js +3 -2
  64. package/lib/commands/list-stacks.js +4 -4
  65. package/lib/context-providers/ami.d.ts +1 -13
  66. package/lib/context-providers/ami.js +16 -48
  67. package/lib/context-providers/availability-zones.d.ts +1 -13
  68. package/lib/context-providers/availability-zones.js +16 -25
  69. package/lib/context-providers/cc-api-provider.d.ts +1 -30
  70. package/lib/context-providers/cc-api-provider.js +16 -136
  71. package/lib/context-providers/endpoint-service-availability-zones.d.ts +1 -13
  72. package/lib/context-providers/endpoint-service-availability-zones.js +16 -31
  73. package/lib/context-providers/hosted-zones.d.ts +1 -12
  74. package/lib/context-providers/hosted-zones.js +16 -65
  75. package/lib/context-providers/index.d.ts +1 -44
  76. package/lib/context-providers/index.js +15 -126
  77. package/lib/context-providers/keys.d.ts +1 -13
  78. package/lib/context-providers/keys.js +16 -50
  79. package/lib/context-providers/load-balancers.d.ts +1 -20
  80. package/lib/context-providers/load-balancers.js +16 -154
  81. package/lib/context-providers/security-groups.d.ts +1 -9
  82. package/lib/context-providers/security-groups.js +16 -66
  83. package/lib/context-providers/ssm-parameters.d.ts +1 -25
  84. package/lib/context-providers/ssm-parameters.js +16 -57
  85. package/lib/context-providers/vpcs.d.ts +1 -13
  86. package/lib/context-providers/vpcs.js +16 -285
  87. package/lib/{api/cxapp → cxapp}/cloud-assembly.d.ts +3 -59
  88. package/lib/cxapp/cloud-assembly.js +108 -0
  89. package/lib/{api/cxapp → cxapp}/cloud-executable.d.ts +10 -3
  90. package/lib/cxapp/cloud-executable.js +92 -0
  91. package/lib/{api/cxapp → cxapp}/environments.d.ts +1 -2
  92. package/lib/{api/cxapp → cxapp}/environments.js +2 -2
  93. package/lib/cxapp/exec.d.ts +14 -0
  94. package/lib/cxapp/exec.js +157 -0
  95. package/lib/cxapp/index.d.ts +4 -0
  96. package/lib/{api/bootstrap → cxapp}/index.js +5 -3
  97. package/lib/index.js +134493 -125222
  98. package/lib/init-templates/.init-version.json +1 -1
  99. package/lib/init-templates/.recommended-feature-flags.json +3 -1
  100. package/lib/legacy-aws-auth.d.ts +74 -0
  101. package/lib/legacy-aws-auth.js +40 -0
  102. package/lib/legacy-exports-source.d.ts +13 -18
  103. package/lib/legacy-exports-source.js +42 -49
  104. package/lib/legacy-exports.d.ts +3 -6
  105. package/lib/legacy-exports.js +5 -5
  106. package/lib/legacy-types.d.ts +31 -0
  107. package/lib/legacy-types.js +3 -0
  108. package/package.json +19 -18
  109. package/lib/api/aws-auth/account-cache.d.ts +0 -36
  110. package/lib/api/aws-auth/account-cache.js +0 -99
  111. package/lib/api/aws-auth/awscli-compatible.d.ts +0 -42
  112. package/lib/api/aws-auth/awscli-compatible.js +0 -263
  113. package/lib/api/aws-auth/cached.d.ts +0 -11
  114. package/lib/api/aws-auth/cached.js +0 -26
  115. package/lib/api/aws-auth/credential-plugins.d.ts +0 -36
  116. package/lib/api/aws-auth/credential-plugins.js +0 -152
  117. package/lib/api/aws-auth/index.d.ts +0 -3
  118. package/lib/api/aws-auth/index.js +0 -20
  119. package/lib/api/aws-auth/provider-caching.d.ts +0 -13
  120. package/lib/api/aws-auth/provider-caching.js +0 -24
  121. package/lib/api/aws-auth/sdk-logger.d.ts +0 -69
  122. package/lib/api/aws-auth/sdk-logger.js +0 -124
  123. package/lib/api/aws-auth/sdk-provider.d.ts +0 -207
  124. package/lib/api/aws-auth/sdk-provider.js +0 -357
  125. package/lib/api/aws-auth/sdk.d.ts +0 -229
  126. package/lib/api/aws-auth/sdk.js +0 -373
  127. package/lib/api/aws-auth/tracing.d.ts +0 -11
  128. package/lib/api/aws-auth/tracing.js +0 -60
  129. package/lib/api/aws-auth/user-agent.d.ts +0 -7
  130. package/lib/api/aws-auth/user-agent.js +0 -20
  131. package/lib/api/aws-auth/util.d.ts +0 -6
  132. package/lib/api/aws-auth/util.js +0 -23
  133. package/lib/api/bootstrap/bootstrap-environment.d.ts +0 -35
  134. package/lib/api/bootstrap/bootstrap-environment.js +0 -321
  135. package/lib/api/bootstrap/bootstrap-props.d.ts +0 -130
  136. package/lib/api/bootstrap/bootstrap-props.js +0 -14
  137. package/lib/api/bootstrap/deploy-bootstrap.d.ts +0 -39
  138. package/lib/api/bootstrap/deploy-bootstrap.js +0 -141
  139. package/lib/api/bootstrap/index.d.ts +0 -2
  140. package/lib/api/bootstrap/legacy-template.d.ts +0 -2
  141. package/lib/api/bootstrap/legacy-template.js +0 -82
  142. package/lib/api/cloudformation/evaluate-cloudformation-template.d.ts +0 -85
  143. package/lib/api/cloudformation/evaluate-cloudformation-template.js +0 -440
  144. package/lib/api/cloudformation/index.d.ts +0 -4
  145. package/lib/api/cloudformation/index.js +0 -21
  146. package/lib/api/cloudformation/nested-stack-helpers.d.ts +0 -25
  147. package/lib/api/cloudformation/nested-stack-helpers.js +0 -86
  148. package/lib/api/cloudformation/stack-helpers.d.ts +0 -96
  149. package/lib/api/cloudformation/stack-helpers.js +0 -158
  150. package/lib/api/cloudformation/template-body-parameter.d.ts +0 -22
  151. package/lib/api/cloudformation/template-body-parameter.js +0 -104
  152. package/lib/api/cxapp/cloud-assembly.js +0 -304
  153. package/lib/api/cxapp/cloud-executable.js +0 -89
  154. package/lib/api/cxapp/exec.d.ts +0 -56
  155. package/lib/api/cxapp/exec.js +0 -272
  156. package/lib/api/deployments/asset-manifest-builder.d.ts +0 -8
  157. package/lib/api/deployments/asset-manifest-builder.js +0 -35
  158. package/lib/api/deployments/asset-publishing.d.ts +0 -60
  159. package/lib/api/deployments/asset-publishing.js +0 -141
  160. package/lib/api/deployments/assets.d.ts +0 -11
  161. package/lib/api/deployments/assets.js +0 -109
  162. package/lib/api/deployments/cfn-api.d.ts +0 -138
  163. package/lib/api/deployments/cfn-api.js +0 -438
  164. package/lib/api/deployments/checks.d.ts +0 -9
  165. package/lib/api/deployments/checks.js +0 -72
  166. package/lib/api/deployments/deploy-stack.d.ts +0 -155
  167. package/lib/api/deployments/deploy-stack.js +0 -478
  168. package/lib/api/deployments/deployment-method.d.ts +0 -24
  169. package/lib/api/deployments/deployment-method.js +0 -3
  170. package/lib/api/deployments/deployment-result.d.ts +0 -21
  171. package/lib/api/deployments/deployment-result.js +0 -10
  172. package/lib/api/deployments/deployments.d.ts +0 -296
  173. package/lib/api/deployments/deployments.js +0 -331
  174. package/lib/api/deployments/hotswap-deployments.d.ts +0 -17
  175. package/lib/api/deployments/hotswap-deployments.js +0 -441
  176. package/lib/api/deployments/index.d.ts +0 -4
  177. package/lib/api/deployments/index.js +0 -21
  178. package/lib/api/environment/environment-access.d.ts +0 -140
  179. package/lib/api/environment/environment-access.js +0 -202
  180. package/lib/api/environment/environment-resources.d.ts +0 -75
  181. package/lib/api/environment/environment-resources.js +0 -207
  182. package/lib/api/environment/index.d.ts +0 -3
  183. package/lib/api/environment/index.js +0 -20
  184. package/lib/api/environment/placeholders.d.ts +0 -10
  185. package/lib/api/environment/placeholders.js +0 -23
  186. package/lib/api/garbage-collection/garbage-collector.d.ts +0 -158
  187. package/lib/api/garbage-collection/garbage-collector.js +0 -599
  188. package/lib/api/garbage-collection/index.d.ts +0 -1
  189. package/lib/api/garbage-collection/progress-printer.d.ts +0 -23
  190. package/lib/api/garbage-collection/progress-printer.js +0 -70
  191. package/lib/api/garbage-collection/stack-refresh.d.ts +0 -49
  192. package/lib/api/garbage-collection/stack-refresh.js +0 -151
  193. package/lib/api/hotswap/appsync-mapping-templates.d.ts +0 -4
  194. package/lib/api/hotswap/appsync-mapping-templates.js +0 -162
  195. package/lib/api/hotswap/code-build-projects.d.ts +0 -4
  196. package/lib/api/hotswap/code-build-projects.js +0 -62
  197. package/lib/api/hotswap/common.d.ts +0 -89
  198. package/lib/api/hotswap/common.js +0 -128
  199. package/lib/api/hotswap/ecs-services.d.ts +0 -4
  200. package/lib/api/hotswap/ecs-services.js +0 -159
  201. package/lib/api/hotswap/lambda-functions.d.ts +0 -4
  202. package/lib/api/hotswap/lambda-functions.js +0 -297
  203. package/lib/api/hotswap/s3-bucket-deployments.d.ts +0 -5
  204. package/lib/api/hotswap/s3-bucket-deployments.js +0 -117
  205. package/lib/api/hotswap/stepfunctions-state-machines.d.ts +0 -4
  206. package/lib/api/hotswap/stepfunctions-state-machines.js +0 -48
  207. package/lib/api/logs/find-cloudwatch-logs.d.ts +0 -25
  208. package/lib/api/logs/find-cloudwatch-logs.js +0 -95
  209. package/lib/api/logs/index.d.ts +0 -2
  210. package/lib/api/logs/logs-monitor.d.ts +0 -76
  211. package/lib/api/logs/logs-monitor.js +0 -187
  212. package/lib/api/plugin/context-provider-plugin.d.ts +0 -6
  213. package/lib/api/plugin/context-provider-plugin.js +0 -7
  214. package/lib/api/plugin/index.d.ts +0 -3
  215. package/lib/api/plugin/index.js +0 -20
  216. package/lib/api/plugin/mode.d.ts +0 -4
  217. package/lib/api/plugin/mode.js +0 -9
  218. package/lib/api/plugin/plugin.d.ts +0 -63
  219. package/lib/api/plugin/plugin.js +0 -102
  220. package/lib/api/resource-import/importer.d.ts +0 -220
  221. package/lib/api/resource-import/importer.js +0 -331
  222. package/lib/api/resource-import/index.d.ts +0 -2
  223. package/lib/api/resource-import/migrator.d.ts +0 -26
  224. package/lib/api/resource-import/migrator.js +0 -71
  225. package/lib/api/stack-events/index.d.ts +0 -3
  226. package/lib/api/stack-events/index.js +0 -20
  227. package/lib/api/stack-events/stack-activity-monitor.d.ts +0 -100
  228. package/lib/api/stack-events/stack-activity-monitor.js +0 -142
  229. package/lib/api/stack-events/stack-event-poller.d.ts +0 -69
  230. package/lib/api/stack-events/stack-event-poller.js +0 -128
  231. package/lib/api/stack-events/stack-progress-monitor.d.ts +0 -48
  232. package/lib/api/stack-events/stack-progress-monitor.js +0 -94
  233. package/lib/api/stack-events/stack-status.d.ts +0 -42
  234. package/lib/api/stack-events/stack-status.js +0 -88
  235. package/lib/api/util/rwlock.d.ts +0 -65
  236. package/lib/api/util/rwlock.js +0 -179
  237. package/lib/api/work-graph/index.d.ts +0 -3
  238. package/lib/api/work-graph/index.js +0 -20
  239. package/lib/api/work-graph/work-graph-builder.d.ts +0 -34
  240. package/lib/api/work-graph/work-graph-builder.js +0 -168
  241. package/lib/api/work-graph/work-graph-types.d.ts +0 -50
  242. package/lib/api/work-graph/work-graph-types.js +0 -13
  243. package/lib/api/work-graph/work-graph.d.ts +0 -72
  244. package/lib/api/work-graph/work-graph.js +0 -346
  245. package/lib/cli/activity-printer/base.d.ts +0 -50
  246. package/lib/cli/activity-printer/base.js +0 -114
  247. package/lib/cli/activity-printer/current.d.ts +0 -26
  248. package/lib/cli/activity-printer/current.js +0 -118
  249. package/lib/cli/activity-printer/display.d.ts +0 -13
  250. package/lib/cli/activity-printer/display.js +0 -80
  251. package/lib/cli/activity-printer/history.d.ts +0 -32
  252. package/lib/cli/activity-printer/history.js +0 -108
  253. package/lib/cli/activity-printer/index.d.ts +0 -3
  254. package/lib/cli/activity-printer/index.js +0 -20
  255. package/lib/notices.d.ts +0 -203
  256. package/lib/notices.js +0 -411
@@ -1,42 +0,0 @@
1
- import { type Stack } from '@aws-sdk/client-cloudformation';
2
- /**
3
- * A utility class to inspect CloudFormation stack statuses.
4
- *
5
- * @see https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-describing-stacks.html
6
- */
7
- export declare class StackStatus {
8
- readonly name: string;
9
- readonly reason?: string | undefined;
10
- static fromStackDescription(description: Stack): StackStatus;
11
- constructor(name: string, reason?: string | undefined);
12
- get isCreationFailure(): boolean;
13
- get isDeleted(): boolean;
14
- get isFailure(): boolean;
15
- get isInProgress(): boolean;
16
- get isReviewInProgress(): boolean;
17
- get isNotFound(): boolean;
18
- get isDeploySuccess(): boolean;
19
- get isRollbackSuccess(): boolean;
20
- /**
21
- * Whether the stack is in a paused state due to `--no-rollback`.
22
- *
23
- * The possible actions here are retrying a new `--no-rollback` deployment, or initiating a rollback.
24
- */
25
- get rollbackChoice(): RollbackChoice;
26
- get isRollbackable(): boolean;
27
- toString(): string;
28
- }
29
- /**
30
- * Describe the current rollback options for this state
31
- */
32
- export declare enum RollbackChoice {
33
- START_ROLLBACK = 0,
34
- CONTINUE_UPDATE_ROLLBACK = 1,
35
- /**
36
- * A sign that stack creation AND its rollback have failed.
37
- *
38
- * There is no way to recover from this, other than recreating the stack.
39
- */
40
- ROLLBACK_FAILED = 2,
41
- NONE = 3
42
- }
@@ -1,88 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RollbackChoice = exports.StackStatus = void 0;
4
- const client_cloudformation_1 = require("@aws-sdk/client-cloudformation");
5
- /**
6
- * A utility class to inspect CloudFormation stack statuses.
7
- *
8
- * @see https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-describing-stacks.html
9
- */
10
- class StackStatus {
11
- static fromStackDescription(description) {
12
- return new StackStatus(description.StackStatus, description.StackStatusReason);
13
- }
14
- constructor(name, reason) {
15
- this.name = name;
16
- this.reason = reason;
17
- }
18
- get isCreationFailure() {
19
- return this.name === client_cloudformation_1.StackStatus.ROLLBACK_COMPLETE || this.name === client_cloudformation_1.StackStatus.ROLLBACK_FAILED;
20
- }
21
- get isDeleted() {
22
- return this.name.startsWith('DELETE_');
23
- }
24
- get isFailure() {
25
- return this.name.endsWith('FAILED');
26
- }
27
- get isInProgress() {
28
- return this.name.endsWith('_IN_PROGRESS') && !this.isReviewInProgress;
29
- }
30
- get isReviewInProgress() {
31
- return this.name === client_cloudformation_1.StackStatus.REVIEW_IN_PROGRESS;
32
- }
33
- get isNotFound() {
34
- return this.name === 'NOT_FOUND';
35
- }
36
- get isDeploySuccess() {
37
- return (!this.isNotFound &&
38
- (this.name === client_cloudformation_1.StackStatus.CREATE_COMPLETE ||
39
- this.name === client_cloudformation_1.StackStatus.UPDATE_COMPLETE ||
40
- this.name === client_cloudformation_1.StackStatus.IMPORT_COMPLETE));
41
- }
42
- get isRollbackSuccess() {
43
- return this.name === client_cloudformation_1.StackStatus.ROLLBACK_COMPLETE || this.name === client_cloudformation_1.StackStatus.UPDATE_ROLLBACK_COMPLETE;
44
- }
45
- /**
46
- * Whether the stack is in a paused state due to `--no-rollback`.
47
- *
48
- * The possible actions here are retrying a new `--no-rollback` deployment, or initiating a rollback.
49
- */
50
- get rollbackChoice() {
51
- switch (this.name) {
52
- case client_cloudformation_1.StackStatus.CREATE_FAILED:
53
- case client_cloudformation_1.StackStatus.UPDATE_FAILED:
54
- return RollbackChoice.START_ROLLBACK;
55
- case client_cloudformation_1.StackStatus.UPDATE_ROLLBACK_FAILED:
56
- return RollbackChoice.CONTINUE_UPDATE_ROLLBACK;
57
- case client_cloudformation_1.StackStatus.ROLLBACK_FAILED:
58
- // Unfortunately there is no option to continue a failed rollback without
59
- // a stable target state.
60
- return RollbackChoice.ROLLBACK_FAILED;
61
- default:
62
- return RollbackChoice.NONE;
63
- }
64
- }
65
- get isRollbackable() {
66
- return [RollbackChoice.START_ROLLBACK, RollbackChoice.CONTINUE_UPDATE_ROLLBACK].includes(this.rollbackChoice);
67
- }
68
- toString() {
69
- return this.name + (this.reason ? ` (${this.reason})` : '');
70
- }
71
- }
72
- exports.StackStatus = StackStatus;
73
- /**
74
- * Describe the current rollback options for this state
75
- */
76
- var RollbackChoice;
77
- (function (RollbackChoice) {
78
- RollbackChoice[RollbackChoice["START_ROLLBACK"] = 0] = "START_ROLLBACK";
79
- RollbackChoice[RollbackChoice["CONTINUE_UPDATE_ROLLBACK"] = 1] = "CONTINUE_UPDATE_ROLLBACK";
80
- /**
81
- * A sign that stack creation AND its rollback have failed.
82
- *
83
- * There is no way to recover from this, other than recreating the stack.
84
- */
85
- RollbackChoice[RollbackChoice["ROLLBACK_FAILED"] = 2] = "ROLLBACK_FAILED";
86
- RollbackChoice[RollbackChoice["NONE"] = 3] = "NONE";
87
- })(RollbackChoice || (exports.RollbackChoice = RollbackChoice = {}));
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2stc3RhdHVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3RhY2stc3RhdHVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDBFQUF5RjtBQUV6Rjs7OztHQUlHO0FBQ0gsTUFBYSxXQUFXO0lBQ2YsTUFBTSxDQUFDLG9CQUFvQixDQUFDLFdBQWtCO1FBQ25ELE9BQU8sSUFBSSxXQUFXLENBQUMsV0FBVyxDQUFDLFdBQVksRUFBRSxXQUFXLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBRUQsWUFDa0IsSUFBWSxFQUNaLE1BQWU7UUFEZixTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ1osV0FBTSxHQUFOLE1BQU0sQ0FBUztJQUVqQyxDQUFDO0lBRUQsSUFBSSxpQkFBaUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLG1DQUFZLENBQUMsaUJBQWlCLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxtQ0FBWSxDQUFDLGVBQWUsQ0FBQztJQUNwRyxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztJQUN4RSxDQUFDO0lBRUQsSUFBSSxrQkFBa0I7UUFDcEIsT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLG1DQUFZLENBQUMsa0JBQWtCLENBQUM7SUFDdkQsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxXQUFXLENBQUM7SUFDbkMsQ0FBQztJQUVELElBQUksZUFBZTtRQUNqQixPQUFPLENBQ0wsQ0FBQyxJQUFJLENBQUMsVUFBVTtZQUNoQixDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssbUNBQVksQ0FBQyxlQUFlO2dCQUN6QyxJQUFJLENBQUMsSUFBSSxLQUFLLG1DQUFZLENBQUMsZUFBZTtnQkFDMUMsSUFBSSxDQUFDLElBQUksS0FBSyxtQ0FBWSxDQUFDLGVBQWUsQ0FBQyxDQUM5QyxDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksaUJBQWlCO1FBQ25CLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxtQ0FBWSxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssbUNBQVksQ0FBQyx3QkFBd0IsQ0FBQztJQUM3RyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQUksY0FBYztRQUNoQixRQUFRLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNsQixLQUFLLG1DQUFZLENBQUMsYUFBYSxDQUFDO1lBQ2hDLEtBQUssbUNBQVksQ0FBQyxhQUFhO2dCQUM3QixPQUFPLGNBQWMsQ0FBQyxjQUFjLENBQUM7WUFDdkMsS0FBSyxtQ0FBWSxDQUFDLHNCQUFzQjtnQkFDdEMsT0FBTyxjQUFjLENBQUMsd0JBQXdCLENBQUM7WUFDakQsS0FBSyxtQ0FBWSxDQUFDLGVBQWU7Z0JBQy9CLHlFQUF5RTtnQkFDekUseUJBQXlCO2dCQUN6QixPQUFPLGNBQWMsQ0FBQyxlQUFlLENBQUM7WUFDeEM7Z0JBQ0UsT0FBTyxjQUFjLENBQUMsSUFBSSxDQUFDO1FBQy9CLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sQ0FBQyxjQUFjLENBQUMsY0FBYyxFQUFFLGNBQWMsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDaEgsQ0FBQztJQUVNLFFBQVE7UUFDYixPQUFPLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDOUQsQ0FBQztDQUNGO0FBNUVELGtDQTRFQztBQUVEOztHQUVHO0FBQ0gsSUFBWSxjQVVYO0FBVkQsV0FBWSxjQUFjO0lBQ3hCLHVFQUFjLENBQUE7SUFDZCwyRkFBd0IsQ0FBQTtJQUN4Qjs7OztPQUlHO0lBQ0gseUVBQWUsQ0FBQTtJQUNmLG1EQUFJLENBQUE7QUFDTixDQUFDLEVBVlcsY0FBYyw4QkFBZCxjQUFjLFFBVXpCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBTdGFjaywgU3RhY2tTdGF0dXMgYXMgX1N0YWNrU3RhdHVzIH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWNsb3VkZm9ybWF0aW9uJztcblxuLyoqXG4gKiBBIHV0aWxpdHkgY2xhc3MgdG8gaW5zcGVjdCBDbG91ZEZvcm1hdGlvbiBzdGFjayBzdGF0dXNlcy5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL3VzaW5nLWNmbi1kZXNjcmliaW5nLXN0YWNrcy5odG1sXG4gKi9cbmV4cG9ydCBjbGFzcyBTdGFja1N0YXR1cyB7XG4gIHB1YmxpYyBzdGF0aWMgZnJvbVN0YWNrRGVzY3JpcHRpb24oZGVzY3JpcHRpb246IFN0YWNrKSB7XG4gICAgcmV0dXJuIG5ldyBTdGFja1N0YXR1cyhkZXNjcmlwdGlvbi5TdGFja1N0YXR1cyEsIGRlc2NyaXB0aW9uLlN0YWNrU3RhdHVzUmVhc29uKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWFkb25seSBuYW1lOiBzdHJpbmcsXG4gICAgcHVibGljIHJlYWRvbmx5IHJlYXNvbj86IHN0cmluZyxcbiAgKSB7XG4gIH1cblxuICBnZXQgaXNDcmVhdGlvbkZhaWx1cmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubmFtZSA9PT0gX1N0YWNrU3RhdHVzLlJPTExCQUNLX0NPTVBMRVRFIHx8IHRoaXMubmFtZSA9PT0gX1N0YWNrU3RhdHVzLlJPTExCQUNLX0ZBSUxFRDtcbiAgfVxuXG4gIGdldCBpc0RlbGV0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubmFtZS5zdGFydHNXaXRoKCdERUxFVEVfJyk7XG4gIH1cblxuICBnZXQgaXNGYWlsdXJlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm5hbWUuZW5kc1dpdGgoJ0ZBSUxFRCcpO1xuICB9XG5cbiAgZ2V0IGlzSW5Qcm9ncmVzcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lLmVuZHNXaXRoKCdfSU5fUFJPR1JFU1MnKSAmJiAhdGhpcy5pc1Jldmlld0luUHJvZ3Jlc3M7XG4gIH1cblxuICBnZXQgaXNSZXZpZXdJblByb2dyZXNzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm5hbWUgPT09IF9TdGFja1N0YXR1cy5SRVZJRVdfSU5fUFJPR1JFU1M7XG4gIH1cblxuICBnZXQgaXNOb3RGb3VuZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lID09PSAnTk9UX0ZPVU5EJztcbiAgfVxuXG4gIGdldCBpc0RlcGxveVN1Y2Nlc3MoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgICF0aGlzLmlzTm90Rm91bmQgJiZcbiAgICAgICh0aGlzLm5hbWUgPT09IF9TdGFja1N0YXR1cy5DUkVBVEVfQ09NUExFVEUgfHxcbiAgICAgICAgdGhpcy5uYW1lID09PSBfU3RhY2tTdGF0dXMuVVBEQVRFX0NPTVBMRVRFIHx8XG4gICAgICAgIHRoaXMubmFtZSA9PT0gX1N0YWNrU3RhdHVzLklNUE9SVF9DT01QTEVURSlcbiAgICApO1xuICB9XG5cbiAgZ2V0IGlzUm9sbGJhY2tTdWNjZXNzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm5hbWUgPT09IF9TdGFja1N0YXR1cy5ST0xMQkFDS19DT01QTEVURSB8fCB0aGlzLm5hbWUgPT09IF9TdGFja1N0YXR1cy5VUERBVEVfUk9MTEJBQ0tfQ09NUExFVEU7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgc3RhY2sgaXMgaW4gYSBwYXVzZWQgc3RhdGUgZHVlIHRvIGAtLW5vLXJvbGxiYWNrYC5cbiAgICpcbiAgICogVGhlIHBvc3NpYmxlIGFjdGlvbnMgaGVyZSBhcmUgcmV0cnlpbmcgYSBuZXcgYC0tbm8tcm9sbGJhY2tgIGRlcGxveW1lbnQsIG9yIGluaXRpYXRpbmcgYSByb2xsYmFjay5cbiAgICovXG4gIGdldCByb2xsYmFja0Nob2ljZSgpOiBSb2xsYmFja0Nob2ljZSB7XG4gICAgc3dpdGNoICh0aGlzLm5hbWUpIHtcbiAgICAgIGNhc2UgX1N0YWNrU3RhdHVzLkNSRUFURV9GQUlMRUQ6XG4gICAgICBjYXNlIF9TdGFja1N0YXR1cy5VUERBVEVfRkFJTEVEOlxuICAgICAgICByZXR1cm4gUm9sbGJhY2tDaG9pY2UuU1RBUlRfUk9MTEJBQ0s7XG4gICAgICBjYXNlIF9TdGFja1N0YXR1cy5VUERBVEVfUk9MTEJBQ0tfRkFJTEVEOlxuICAgICAgICByZXR1cm4gUm9sbGJhY2tDaG9pY2UuQ09OVElOVUVfVVBEQVRFX1JPTExCQUNLO1xuICAgICAgY2FzZSBfU3RhY2tTdGF0dXMuUk9MTEJBQ0tfRkFJTEVEOlxuICAgICAgICAvLyBVbmZvcnR1bmF0ZWx5IHRoZXJlIGlzIG5vIG9wdGlvbiB0byBjb250aW51ZSBhIGZhaWxlZCByb2xsYmFjayB3aXRob3V0XG4gICAgICAgIC8vIGEgc3RhYmxlIHRhcmdldCBzdGF0ZS5cbiAgICAgICAgcmV0dXJuIFJvbGxiYWNrQ2hvaWNlLlJPTExCQUNLX0ZBSUxFRDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBSb2xsYmFja0Nob2ljZS5OT05FO1xuICAgIH1cbiAgfVxuXG4gIGdldCBpc1JvbGxiYWNrYWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gW1JvbGxiYWNrQ2hvaWNlLlNUQVJUX1JPTExCQUNLLCBSb2xsYmFja0Nob2ljZS5DT05USU5VRV9VUERBVEVfUk9MTEJBQ0tdLmluY2x1ZGVzKHRoaXMucm9sbGJhY2tDaG9pY2UpO1xuICB9XG5cbiAgcHVibGljIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMubmFtZSArICh0aGlzLnJlYXNvbiA/IGAgKCR7dGhpcy5yZWFzb259KWAgOiAnJyk7XG4gIH1cbn1cblxuLyoqXG4gKiBEZXNjcmliZSB0aGUgY3VycmVudCByb2xsYmFjayBvcHRpb25zIGZvciB0aGlzIHN0YXRlXG4gKi9cbmV4cG9ydCBlbnVtIFJvbGxiYWNrQ2hvaWNlIHtcbiAgU1RBUlRfUk9MTEJBQ0ssXG4gIENPTlRJTlVFX1VQREFURV9ST0xMQkFDSyxcbiAgLyoqXG4gICAqIEEgc2lnbiB0aGF0IHN0YWNrIGNyZWF0aW9uIEFORCBpdHMgcm9sbGJhY2sgaGF2ZSBmYWlsZWQuXG4gICAqXG4gICAqIFRoZXJlIGlzIG5vIHdheSB0byByZWNvdmVyIGZyb20gdGhpcywgb3RoZXIgdGhhbiByZWNyZWF0aW5nIHRoZSBzdGFjay5cbiAgICovXG4gIFJPTExCQUNLX0ZBSUxFRCxcbiAgTk9ORSxcbn1cbiJdfQ==
@@ -1,65 +0,0 @@
1
- /**
2
- * A single-writer/multi-reader lock on a directory
3
- *
4
- * It uses marker files with PIDs in them as a locking marker; the PIDs will be
5
- * checked for liveness, so that if the process exits without cleaning up the
6
- * files the lock is implicitly released.
7
- *
8
- * This class is not 100% race safe, but in practice it should be a lot
9
- * better than the 0 protection we have today.
10
- */
11
- export declare class RWLock {
12
- readonly directory: string;
13
- private readonly pidString;
14
- private readonly writerFile;
15
- private readCounter;
16
- constructor(directory: string);
17
- /**
18
- * Acquire a writer lock.
19
- *
20
- * No other readers or writers must exist for the given directory.
21
- */
22
- acquireWrite(): Promise<IWriterLock>;
23
- /**
24
- * Acquire a read lock
25
- *
26
- * Will fail if there are any writers.
27
- */
28
- acquireRead(): Promise<ILock>;
29
- /**
30
- * Obtains the name fo a (new) `readerFile` to use. This includes a counter so
31
- * that if multiple threads of the same PID attempt to concurrently acquire
32
- * the same lock, they're guaranteed to use a different reader file name (only
33
- * one thread will ever execute JS code at once, guaranteeing the readCounter
34
- * is incremented "atomically" from the point of view of this PID.).
35
- */
36
- private readerFile;
37
- /**
38
- * Do the actual acquiring of a read lock.
39
- */
40
- private doAcquireRead;
41
- private assertNoOtherWriters;
42
- /**
43
- * Check the current writer (if any)
44
- */
45
- private currentWriter;
46
- /**
47
- * Check the current readers (if any)
48
- */
49
- private currentReaders;
50
- }
51
- /**
52
- * An acquired lock
53
- */
54
- export interface ILock {
55
- release(): Promise<void>;
56
- }
57
- /**
58
- * An acquired writer lock
59
- */
60
- export interface IWriterLock extends ILock {
61
- /**
62
- * Convert the writer lock to a reader lock
63
- */
64
- convertToReaderLock(): Promise<ILock>;
65
- }
@@ -1,179 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RWLock = void 0;
4
- const fs_1 = require("fs");
5
- const path = require("path");
6
- const api_1 = require("../../../../@aws-cdk/tmp-toolkit-helpers/src/api");
7
- /**
8
- * A single-writer/multi-reader lock on a directory
9
- *
10
- * It uses marker files with PIDs in them as a locking marker; the PIDs will be
11
- * checked for liveness, so that if the process exits without cleaning up the
12
- * files the lock is implicitly released.
13
- *
14
- * This class is not 100% race safe, but in practice it should be a lot
15
- * better than the 0 protection we have today.
16
- */
17
- /* istanbul ignore next: code paths are unpredictable */
18
- class RWLock {
19
- constructor(directory) {
20
- this.directory = directory;
21
- this.readCounter = 0;
22
- this.pidString = `${process.pid}`;
23
- this.writerFile = path.join(this.directory, 'synth.lock');
24
- }
25
- /**
26
- * Acquire a writer lock.
27
- *
28
- * No other readers or writers must exist for the given directory.
29
- */
30
- async acquireWrite() {
31
- await this.assertNoOtherWriters();
32
- const readers = await this.currentReaders();
33
- if (readers.length > 0) {
34
- throw new api_1.ToolkitError(`Other CLIs (PID=${readers}) are currently reading from ${this.directory}. Invoke the CLI in sequence, or use '--output' to synth into different directories.`);
35
- }
36
- await writeFileAtomic(this.writerFile, this.pidString);
37
- return {
38
- release: async () => {
39
- await deleteFile(this.writerFile);
40
- },
41
- convertToReaderLock: async () => {
42
- // Acquire the read lock before releasing the write lock. Slightly less
43
- // chance of racing!
44
- const ret = await this.doAcquireRead();
45
- await deleteFile(this.writerFile);
46
- return ret;
47
- },
48
- };
49
- }
50
- /**
51
- * Acquire a read lock
52
- *
53
- * Will fail if there are any writers.
54
- */
55
- async acquireRead() {
56
- await this.assertNoOtherWriters();
57
- return this.doAcquireRead();
58
- }
59
- /**
60
- * Obtains the name fo a (new) `readerFile` to use. This includes a counter so
61
- * that if multiple threads of the same PID attempt to concurrently acquire
62
- * the same lock, they're guaranteed to use a different reader file name (only
63
- * one thread will ever execute JS code at once, guaranteeing the readCounter
64
- * is incremented "atomically" from the point of view of this PID.).
65
- */
66
- readerFile() {
67
- return path.join(this.directory, `read.${this.pidString}.${++this.readCounter}.lock`);
68
- }
69
- /**
70
- * Do the actual acquiring of a read lock.
71
- */
72
- async doAcquireRead() {
73
- const readerFile = this.readerFile();
74
- await writeFileAtomic(readerFile, this.pidString);
75
- return {
76
- release: async () => {
77
- await deleteFile(readerFile);
78
- },
79
- };
80
- }
81
- async assertNoOtherWriters() {
82
- const writer = await this.currentWriter();
83
- if (writer) {
84
- throw new api_1.ToolkitError(`Another CLI (PID=${writer}) is currently synthing to ${this.directory}. Invoke the CLI in sequence, or use '--output' to synth into different directories.`);
85
- }
86
- }
87
- /**
88
- * Check the current writer (if any)
89
- */
90
- async currentWriter() {
91
- const contents = await readFileIfExists(this.writerFile);
92
- if (!contents) {
93
- return undefined;
94
- }
95
- const pid = parseInt(contents, 10);
96
- if (!processExists(pid)) {
97
- // Do cleanup of a stray file now
98
- await deleteFile(this.writerFile);
99
- return undefined;
100
- }
101
- return pid;
102
- }
103
- /**
104
- * Check the current readers (if any)
105
- */
106
- async currentReaders() {
107
- const re = /^read\.([^.]+)\.[^.]+\.lock$/;
108
- const ret = new Array();
109
- let children;
110
- try {
111
- children = await fs_1.promises.readdir(this.directory, { encoding: 'utf-8' });
112
- }
113
- catch (e) {
114
- // Can't be locked if the directory doesn't exist
115
- if (e.code === 'ENOENT') {
116
- return [];
117
- }
118
- throw e;
119
- }
120
- for (const fname of children) {
121
- const m = fname.match(re);
122
- if (m) {
123
- const pid = parseInt(m[1], 10);
124
- if (processExists(pid)) {
125
- ret.push(pid);
126
- }
127
- else {
128
- // Do cleanup of a stray file now
129
- await deleteFile(path.join(this.directory, fname));
130
- }
131
- }
132
- }
133
- return ret;
134
- }
135
- }
136
- exports.RWLock = RWLock;
137
- /* istanbul ignore next: code paths are unpredictable */
138
- async function readFileIfExists(filename) {
139
- try {
140
- return await fs_1.promises.readFile(filename, { encoding: 'utf-8' });
141
- }
142
- catch (e) {
143
- if (e.code === 'ENOENT') {
144
- return undefined;
145
- }
146
- throw e;
147
- }
148
- }
149
- let tmpCounter = 0;
150
- /* istanbul ignore next: code paths are unpredictable */
151
- async function writeFileAtomic(filename, contents) {
152
- await fs_1.promises.mkdir(path.dirname(filename), { recursive: true });
153
- const tmpFile = `${filename}.${process.pid}_${++tmpCounter}`;
154
- await fs_1.promises.writeFile(tmpFile, contents, { encoding: 'utf-8' });
155
- await fs_1.promises.rename(tmpFile, filename);
156
- }
157
- /* istanbul ignore next: code paths are unpredictable */
158
- async function deleteFile(filename) {
159
- try {
160
- await fs_1.promises.unlink(filename);
161
- }
162
- catch (e) {
163
- if (e.code === 'ENOENT') {
164
- return;
165
- }
166
- throw e;
167
- }
168
- }
169
- /* istanbul ignore next: code paths are unpredictable */
170
- function processExists(pid) {
171
- try {
172
- process.kill(pid, 0);
173
- return true;
174
- }
175
- catch (e) {
176
- return false;
177
- }
178
- }
179
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicndsb2NrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicndsb2NrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJCQUFvQztBQUNwQyw2QkFBNkI7QUFDN0IsMEVBQWdGO0FBRWhGOzs7Ozs7Ozs7R0FTRztBQUNILHdEQUF3RDtBQUN4RCxNQUFhLE1BQU07SUFLakIsWUFBNEIsU0FBaUI7UUFBakIsY0FBUyxHQUFULFNBQVMsQ0FBUTtRQUZyQyxnQkFBVyxHQUFHLENBQUMsQ0FBQztRQUd0QixJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBRWxDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksS0FBSyxDQUFDLFlBQVk7UUFDdkIsTUFBTSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUVsQyxNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUM1QyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdkIsTUFBTSxJQUFJLGtCQUFZLENBQUMsbUJBQW1CLE9BQU8sZ0NBQWdDLElBQUksQ0FBQyxTQUFTLHNGQUFzRixDQUFDLENBQUM7UUFDekwsQ0FBQztRQUVELE1BQU0sZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXZELE9BQU87WUFDTCxPQUFPLEVBQUUsS0FBSyxJQUFJLEVBQUU7Z0JBQ2xCLE1BQU0sVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNwQyxDQUFDO1lBQ0QsbUJBQW1CLEVBQUUsS0FBSyxJQUFJLEVBQUU7Z0JBQzlCLHVFQUF1RTtnQkFDdkUsb0JBQW9CO2dCQUNwQixNQUFNLEdBQUcs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UUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDN0QsTUFBTSxhQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztBQUNyQyxDQUFDO0FBRUQsd0RBQXdEO0FBQ3hELEtBQUssVUFBVSxVQUFVLENBQUMsUUFBZ0I7SUFDeEMsSUFBSSxDQUFDO1FBQ0gsTUFBTSxhQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFBQyxPQUFPLENBQU0sRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUN4QixPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sQ0FBQyxDQUFDO0lBQ1YsQ0FBQztBQUNILENBQUM7QUFFRCx3REFBd0Q7QUFDeEQsU0FBUyxhQUFhLENBQUMsR0FBVztJQUNoQyxJQUFJLENBQUM7UUFDSCxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNyQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ1gsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHByb21pc2VzIGFzIGZzIH0gZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IFRvb2xraXRFcnJvciB9IGZyb20gJy4uLy4uLy4uLy4uL0Bhd3MtY2RrL3RtcC10b29sa2l0LWhlbHBlcnMvc3JjL2FwaSc7XG5cbi8qKlxuICogQSBzaW5nbGUtd3JpdGVyL211bHRpLXJlYWRlciBsb2NrIG9uIGEgZGlyZWN0b3J5XG4gKlxuICogSXQgdXNlcyBtYXJrZXIgZmlsZXMgd2l0aCBQSURzIGluIHRoZW0gYXMgYSBsb2NraW5nIG1hcmtlcjsgdGhlIFBJRHMgd2lsbCBiZVxuICogY2hlY2tlZCBmb3IgbGl2ZW5lc3MsIHNvIHRoYXQgaWYgdGhlIHByb2Nlc3MgZXhpdHMgd2l0aG91dCBjbGVhbmluZyB1cCB0aGVcbiAqIGZpbGVzIHRoZSBsb2NrIGlzIGltcGxpY2l0bHkgcmVsZWFzZWQuXG4gKlxuICogVGhpcyBjbGFzcyBpcyBub3QgMTAwJSByYWNlIHNhZmUsIGJ1dCBpbiBwcmFjdGljZSBpdCBzaG91bGQgYmUgYSBsb3RcbiAqIGJldHRlciB0aGFuIHRoZSAwIHByb3RlY3Rpb24gd2UgaGF2ZSB0b2RheS5cbiAqL1xuLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IGNvZGUgcGF0aHMgYXJlIHVucHJlZGljdGFibGUgKi9cbmV4cG9ydCBjbGFzcyBSV0xvY2sge1xuICBwcml2YXRlIHJlYWRvbmx5IHBpZFN0cmluZzogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IHdyaXRlckZpbGU6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkQ291bnRlciA9IDA7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IGRpcmVjdG9yeTogc3RyaW5nKSB7XG4gICAgdGhpcy5waWRTdHJpbmcgPSBgJHtwcm9jZXNzLnBpZH1gO1xuXG4gICAgdGhpcy53cml0ZXJGaWxlID0gcGF0aC5qb2luKHRoaXMuZGlyZWN0b3J5LCAnc3ludGgubG9jaycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFjcXVpcmUgYSB3cml0ZXIgbG9jay5cbiAgICpcbiAgICogTm8gb3RoZXIgcmVhZGVycyBvciB3cml0ZXJzIG11c3QgZXhpc3QgZm9yIHRoZSBnaXZlbiBkaXJlY3RvcnkuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgYWNxdWlyZVdyaXRlKCk6IFByb21pc2U8SVdyaXRlckxvY2s+IHtcbiAgICBhd2FpdCB0aGlzLmFzc2VydE5vT3RoZXJXcml0ZXJzKCk7XG5cbiAgICBjb25zdCByZWFkZXJzID0gYXdhaXQgdGhpcy5jdXJyZW50UmVhZGVycygpO1xuICAgIGlmIChyZWFkZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRocm93IG5ldyBUb29sa2l0RXJyb3IoYE90aGVyIENMSXMgKFBJRD0ke3JlYWRlcnN9KSBhcmUgY3VycmVudGx5IHJlYWRpbmcgZnJvbSAke3RoaXMuZGlyZWN0b3J5fS4gSW52b2tlIHRoZSBDTEkgaW4gc2VxdWVuY2UsIG9yIHVzZSAnLS1vdXRwdXQnIHRvIHN5bnRoIGludG8gZGlmZmVyZW50IGRpcmVjdG9yaWVzLmApO1xuICAgIH1cblxuICAgIGF3YWl0IHdyaXRlRmlsZUF0b21pYyh0aGlzLndyaXRlckZpbGUsIHRoaXMucGlkU3RyaW5nKTtcblxuICAgIHJldHVybiB7XG4gICAgICByZWxlYXNlOiBhc3luYyAoKSA9PiB7XG4gICAgICAgIGF3YWl0IGRlbGV0ZUZpbGUodGhpcy53cml0ZXJGaWxlKTtcbiAgICAgIH0sXG4gICAgICBjb252ZXJ0VG9SZWFkZXJMb2NrOiBhc3luYyAoKSA9PiB7XG4gICAgICAgIC8vIEFjcXVpcmUgdGhlIHJlYWQgbG9jayBiZWZvcmUgcmVsZWFzaW5nIHRoZSB3cml0ZSBsb2NrLiBTbGlnaHRseSBsZXNzXG4gICAgICAgIC8vIGNoYW5jZSBvZiByYWNpbmchXG4gICAgICAgIGNvbnN0IHJldCA9IGF3YWl0IHRoaXMuZG9BY3F1aXJlUmVhZCgpO1xuICAgICAgICBhd2FpdCBkZWxldGVGaWxlKHRoaXMud3JpdGVyRmlsZSk7XG4gICAgICAgIHJldHVybiByZXQ7XG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQWNxdWlyZSBhIHJlYWQgbG9ja1xuICAgKlxuICAgKiBXaWxsIGZhaWwgaWYgdGhlcmUgYXJlIGFueSB3cml0ZXJzLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGFjcXVpcmVSZWFkKCk6IFByb21pc2U8SUxvY2s+IHtcbiAgICBhd2FpdCB0aGlzLmFzc2VydE5vT3RoZXJXcml0ZXJzKCk7XG4gICAgcmV0dXJuIHRoaXMuZG9BY3F1aXJlUmVhZCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9idGFpbnMgdGhlIG5hbWUgZm8gYSAobmV3KSBgcmVhZGVyRmlsZWAgdG8gdXNlLiBUaGlzIGluY2x1ZGVzIGEgY291bnRlciBzb1xuICAgKiB0aGF0IGlmIG11bHRpcGxlIHRocmVhZHMgb2YgdGhlIHNhbWUgUElEIGF0dGVtcHQgdG8gY29uY3VycmVudGx5IGFjcXVpcmVcbiAgICogdGhlIHNhbWUgbG9jaywgdGhleSdyZSBndWFyYW50ZWVkIHRvIHVzZSBhIGRpZmZlcmVudCByZWFkZXIgZmlsZSBuYW1lIChvbmx5XG4gICAqIG9uZSB0aHJlYWQgd2lsbCBldmVyIGV4ZWN1dGUgSlMgY29kZSBhdCBvbmNlLCBndWFyYW50ZWVpbmcgdGhlIHJlYWRDb3VudGVyXG4gICAqIGlzIGluY3JlbWVudGVkIFwiYXRvbWljYWxseVwiIGZyb20gdGhlIHBvaW50IG9mIHZpZXcgb2YgdGhpcyBQSUQuKS5cbiAgICovXG4gIHByaXZhdGUgcmVhZGVyRmlsZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBwYXRoLmpvaW4odGhpcy5kaXJlY3RvcnksIGByZWFkLiR7dGhpcy5waWRTdHJpbmd9LiR7Kyt0aGlzLnJlYWRDb3VudGVyfS5sb2NrYCk7XG4gIH1cblxuICAvKipcbiAgICogRG8gdGhlIGFjdHVhbCBhY3F1aXJpbmcgb2YgYSByZWFkIGxvY2suXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGRvQWNxdWlyZVJlYWQoKTogUHJvbWlzZTxJTG9jaz4ge1xuICAgIGNvbnN0IHJlYWRlckZpbGUgPSB0aGlzLnJlYWRlckZpbGUoKTtcbiAgICBhd2FpdCB3cml0ZUZpbGVBdG9taWMocmVhZGVyRmlsZSwgdGhpcy5waWRTdHJpbmcpO1xuICAgIHJldHVybiB7XG4gICAgICByZWxlYXNlOiBhc3luYyAoKSA9PiB7XG4gICAgICAgIGF3YWl0IGRlbGV0ZUZpbGUocmVhZGVyRmlsZSk7XG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGFzc2VydE5vT3RoZXJXcml0ZXJzKCkge1xuICAgIGNvbnN0IHdyaXRlciA9IGF3YWl0IHRoaXMuY3VycmVudFdyaXRlcigpO1xuICAgIGlmICh3cml0ZXIpIHtcbiAgICAgIHRocm93IG5ldyBUb29sa2l0RXJyb3IoYEFub3RoZXIgQ0xJIChQSUQ9JHt3cml0ZXJ9KSBpcyBjdXJyZW50bHkgc3ludGhpbmcgdG8gJHt0aGlzLmRpcmVjdG9yeX0uIEludm9rZSB0aGUgQ0xJIGluIHNlcXVlbmNlLCBvciB1c2UgJy0tb3V0cHV0JyB0byBzeW50aCBpbnRvIGRpZmZlcmVudCBkaXJlY3Rvcmllcy5gKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgdGhlIGN1cnJlbnQgd3JpdGVyIChpZiBhbnkpXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGN1cnJlbnRXcml0ZXIoKTogUHJvbWlzZTxudW1iZXIgfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCBjb250ZW50cyA9IGF3YWl0IHJlYWRGaWxlSWZFeGlzdHModGhpcy53cml0ZXJGaWxlKTtcbiAgICBpZiAoIWNvbnRlbnRzKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNvbnN0IHBpZCA9IHBhcnNlSW50KGNvbnRlbnRzLCAxMCk7XG4gICAgaWYgKCFwcm9jZXNzRXhpc3RzKHBpZCkpIHtcbiAgICAgIC8vIERvIGNsZWFudXAgb2YgYSBzdHJheSBmaWxlIG5vd1xuICAgICAgYXdhaXQgZGVsZXRlRmlsZSh0aGlzLndyaXRlckZpbGUpO1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICByZXR1cm4gcGlkO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIHRoZSBjdXJyZW50IHJlYWRlcnMgKGlmIGFueSlcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgY3VycmVudFJlYWRlcnMoKTogUHJvbWlzZTxudW1iZXJbXT4ge1xuICAgIGNvbnN0IHJlID0gL15yZWFkXFwuKFteLl0rKVxcLlteLl0rXFwubG9jayQvO1xuICAgIGNvbnN0IHJldCA9IG5ldyBBcnJheTxudW1iZXI+KCk7XG5cbiAgICBsZXQgY2hpbGRyZW47XG4gICAgdHJ5IHtcbiAgICAgIGNoaWxkcmVuID0gYXdhaXQgZnMucmVhZGRpcih0aGlzLmRpcmVjdG9yeSwgeyBlbmNvZGluZzogJ3V0Zi04JyB9KTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIC8vIENhbid0IGJlIGxvY2tlZCBpZiB0aGUgZGlyZWN0b3J5IGRvZXNuJ3QgZXhpc3RcbiAgICAgIGlmIChlLmNvZGUgPT09ICdFTk9FTlQnKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIHRocm93IGU7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBmbmFtZSBvZiBjaGlsZHJlbikge1xuICAgICAgY29uc3QgbSA9IGZuYW1lLm1hdGNoKHJlKTtcbiAgICAgIGlmIChtKSB7XG4gICAgICAgIGNvbnN0IHBpZCA9IHBhcnNlSW50KG1bMV0sIDEwKTtcbiAgICAgICAgaWYgKHByb2Nlc3NFeGlzdHMocGlkKSkge1xuICAgICAgICAgIHJldC5wdXNoKHBpZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gRG8gY2xlYW51cCBvZiBhIHN0cmF5IGZpbGUgbm93XG4gICAgICAgICAgYXdhaXQgZGVsZXRlRmlsZShwYXRoLmpvaW4odGhpcy5kaXJlY3RvcnksIGZuYW1lKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuXG4vKipcbiAqIEFuIGFjcXVpcmVkIGxvY2tcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJTG9jayB7XG4gIHJlbGVhc2UoKTogUHJvbWlzZTx2b2lkPjtcbn1cblxuLyoqXG4gKiBBbiBhY3F1aXJlZCB3cml0ZXIgbG9ja1xuICovXG5leHBvcnQgaW50ZXJmYWNlIElXcml0ZXJMb2NrIGV4dGVuZHMgSUxvY2sge1xuICAvKipcbiAgICogQ29udmVydCB0aGUgd3JpdGVyIGxvY2sgdG8gYSByZWFkZXIgbG9ja1xuICAgKi9cbiAgY29udmVydFRvUmVhZGVyTG9jaygpOiBQcm9taXNlPElMb2NrPjtcbn1cblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IGNvZGUgcGF0aHMgYXJlIHVucHJlZGljdGFibGUgKi9cbmFzeW5jIGZ1bmN0aW9uIHJlYWRGaWxlSWZFeGlzdHMoZmlsZW5hbWU6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IGZzLnJlYWRGaWxlKGZpbGVuYW1lLCB7IGVuY29kaW5nOiAndXRmLTgnIH0pO1xuICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICBpZiAoZS5jb2RlID09PSAnRU5PRU5UJykge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgdGhyb3cgZTtcbiAgfVxufVxuXG5sZXQgdG1wQ291bnRlciA9IDA7XG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogY29kZSBwYXRocyBhcmUgdW5wcmVkaWN0YWJsZSAqL1xuYXN5bmMgZnVuY3Rpb24gd3JpdGVGaWxlQXRvbWljKGZpbGVuYW1lOiBzdHJpbmcsIGNvbnRlbnRzOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgZnMubWtkaXIocGF0aC5kaXJuYW1lKGZpbGVuYW1lKSwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gIGNvbnN0IHRtcEZpbGUgPSBgJHtmaWxlbmFtZX0uJHtwcm9jZXNzLnBpZH1fJHsrK3RtcENvdW50ZXJ9YDtcbiAgYXdhaXQgZnMud3JpdGVGaWxlKHRtcEZpbGUsIGNvbnRlbnRzLCB7IGVuY29kaW5nOiAndXRmLTgnIH0pO1xuICBhd2FpdCBmcy5yZW5hbWUodG1wRmlsZSwgZmlsZW5hbWUpO1xufVxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogY29kZSBwYXRocyBhcmUgdW5wcmVkaWN0YWJsZSAqL1xuYXN5bmMgZnVuY3Rpb24gZGVsZXRlRmlsZShmaWxlbmFtZTogc3RyaW5nKSB7XG4gIHRyeSB7XG4gICAgYXdhaXQgZnMudW5saW5rKGZpbGVuYW1lKTtcbiAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgaWYgKGUuY29kZSA9PT0gJ0VOT0VOVCcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhyb3cgZTtcbiAgfVxufVxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogY29kZSBwYXRocyBhcmUgdW5wcmVkaWN0YWJsZSAqL1xuZnVuY3Rpb24gcHJvY2Vzc0V4aXN0cyhwaWQ6IG51bWJlcikge1xuICB0cnkge1xuICAgIHByb2Nlc3Mua2lsbChwaWQsIDApO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iXX0=
@@ -1,3 +0,0 @@
1
- export * from './work-graph';
2
- export * from './work-graph-builder';
3
- export * from './work-graph-types';
@@ -1,20 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./work-graph"), exports);
18
- __exportStar(require("./work-graph-builder"), exports);
19
- __exportStar(require("./work-graph-types"), exports);
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0NBQTZCO0FBQzdCLHVEQUFxQztBQUNyQyxxREFBbUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3dvcmstZ3JhcGgnO1xuZXhwb3J0ICogZnJvbSAnLi93b3JrLWdyYXBoLWJ1aWxkZXInO1xuZXhwb3J0ICogZnJvbSAnLi93b3JrLWdyYXBoLXR5cGVzJztcbiJdfQ==
@@ -1,34 +0,0 @@
1
- import * as cxapi from '@aws-cdk/cx-api';
2
- import { WorkGraph } from './work-graph';
3
- import type { WorkNode } from './work-graph-types';
4
- import type { IoHelper } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api/io/private';
5
- export declare class WorkGraphBuilder {
6
- private readonly prebuildAssets;
7
- private readonly idPrefix;
8
- /**
9
- * Default priorities for nodes
10
- *
11
- * Assets builds have higher priority than the other two operations, to make good on our promise that
12
- * '--prebuild-assets' will actually do assets before stacks (if it can). Unfortunately it is the
13
- * default :(
14
- *
15
- * But between stack dependencies and publish dependencies, stack dependencies go first
16
- */
17
- static PRIORITIES: Record<WorkNode['type'], number>;
18
- private readonly graph;
19
- private readonly ioHelper;
20
- constructor(ioHelper: IoHelper, prebuildAssets: boolean, idPrefix?: string);
21
- private addStack;
22
- /**
23
- * Oof, see this parameter list
24
- */
25
- private addAsset;
26
- build(artifacts: cxapi.CloudArtifact[]): WorkGraph;
27
- private stackArtifactIds;
28
- private stackArtifactId;
29
- /**
30
- * We may have accidentally introduced cycles in an attempt to make the messages printed to the
31
- * console not interfere with each other too much. Remove them again.
32
- */
33
- private removeStackPublishCycles;
34
- }