@composurecdk/cloudformation 0.3.6 → 0.4.2

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.
package/README.md CHANGED
@@ -103,5 +103,4 @@ compose(
103
103
  ## Examples
104
104
 
105
105
  - [MultiStackApp](../examples/src/multi-stack-app.ts) — REST API + Lambda split across stacks via `.withStacks()`
106
- - [StrategyStackApp](../examples/src/strategy-stack-app.ts) — REST API + Lambda split across stacks via `.withStackStrategy()`
107
106
  - [StaticWebsiteStack](../examples/src/static-website/app.ts) — CloudFormation outputs with `afterBuild` and `outputs`
package/dist/outputs.d.ts CHANGED
@@ -1,10 +1,15 @@
1
+ import { type IConstruct } from "constructs";
1
2
  import { type AfterBuildHook, type Resolvable } from "@composurecdk/core";
2
3
  /**
3
4
  * Defines a CloudFormation stack output with a value that can be a
4
5
  * {@link Resolvable} — either a concrete string or a {@link Ref} that
5
6
  * resolves against the system's build results at build time.
7
+ *
8
+ * @typeParam T - The composed system's build result type. When `outputs()`
9
+ * is passed to {@link ComposedSystem.afterBuild | .afterBuild()} the type
10
+ * is inferred, making `scope` component keys statically checked.
6
11
  */
7
- export interface OutputDefinition {
12
+ export interface OutputDefinition<T extends object = object> {
8
13
  /** The output value, or a Ref that resolves to one. */
9
14
  value: Resolvable<string>;
10
15
  /** A description of the output. */
@@ -14,19 +19,32 @@ export interface OutputDefinition {
14
19
  * When set, this creates a CloudFormation Export.
15
20
  */
16
21
  exportName?: string;
22
+ /**
23
+ * The scope to attach this output to. Either an `IConstruct` (typically a
24
+ * Stack reference held by the caller — useful with
25
+ * {@link ComposedSystem.withStacks | .withStacks()}) or the string key of
26
+ * a component in the composed system, in which case the output lands in
27
+ * whichever scope that component was built into (useful with
28
+ * {@link ComposedSystem.withStackStrategy | .withStackStrategy()}).
29
+ *
30
+ * When omitted, the output falls back to the top-level scope passed to
31
+ * `build()` — the same scope the `AfterBuildHook` receives.
32
+ */
33
+ scope?: IConstruct | (keyof T & string);
17
34
  }
18
35
  /**
19
36
  * A record of output definitions keyed by logical output name.
20
37
  */
21
- export type OutputDefinitions = Record<string, OutputDefinition>;
38
+ export type OutputDefinitions<T extends object = object> = Record<string, OutputDefinition<T>>;
22
39
  /**
23
40
  * Returns an {@link AfterBuildHook} that creates CloudFormation stack outputs
24
41
  * from the composed system's build results.
25
42
  *
26
43
  * Each output definition's `value` can be a concrete string or a {@link Ref}
27
- * that is resolved against the build results. This enables outputs that
28
- * reference values produced by composed components without breaking the
29
- * composition abstraction.
44
+ * that is resolved against the build results. An optional `scope` routes
45
+ * individual outputs to specific stacks either as a direct `IConstruct`
46
+ * or as a component key string (statically typed against the composed
47
+ * system's component keys).
30
48
  *
31
49
  * Intended for use with {@link ComposedSystem.afterBuild}.
32
50
  *
@@ -39,22 +57,28 @@ export type OutputDefinitions = Record<string, OutputDefinition>;
39
57
  * import { outputs } from "@composurecdk/cloudformation";
40
58
  *
41
59
  * compose(
42
- * { site: createBucketBuilder(), cdn: createDistributionBuilder() },
43
- * { site: [], cdn: ["site"] },
60
+ * { site: createBucketBuilder(), cdn: createDistributionBuilder(), dns: createZoneBuilder() },
61
+ * { site: [], cdn: ["site"], dns: [] },
44
62
  * )
63
+ * .withStacks({ site: siteStack, cdn: siteStack, dns: dnsStack })
45
64
  * .afterBuild(outputs({
46
65
  * DistributionUrl: {
47
66
  * value: ref("cdn", (r: DistributionBuilderResult) =>
48
67
  * `https://${r.distribution.distributionDomainName}`),
49
- * description: "CloudFront distribution URL",
68
+ * scope: "cdn",
50
69
  * },
51
70
  * BucketName: {
52
71
  * value: ref("site", (r: BucketBuilderResult) => r.bucket.bucketName),
53
- * description: "S3 bucket name for site content",
72
+ * scope: siteStack,
73
+ * },
74
+ * NameServers: {
75
+ * value: ref("dns", (r: ZoneBuilderResult) =>
76
+ * Fn.join(",", r.zone.hostedZoneNameServers!)),
77
+ * scope: "dns",
54
78
  * },
55
79
  * }))
56
- * .build(stack, "StaticWebsite");
80
+ * .build(app, "StaticWebsite");
57
81
  * ```
58
82
  */
59
- export declare function outputs(defs: OutputDefinitions): AfterBuildHook<object>;
83
+ export declare function outputs<T extends object = object>(defs: OutputDefinitions<T>): AfterBuildHook<T>;
60
84
  //# sourceMappingURL=outputs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"outputs.d.ts","sourceRoot":"","sources":["../src/outputs.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,UAAU,EAAW,MAAM,oBAAoB,CAAC;AAEnF;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,uDAAuD;IACvD,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IAE1B,mCAAmC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;AAEjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,iBAAiB,GAAG,cAAc,CAAC,MAAM,CAAC,CAYvE"}
1
+ {"version":3,"file":"outputs.d.ts","sourceRoot":"","sources":["../src/outputs.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,UAAU,EAAW,MAAM,oBAAoB,CAAC;AAEnF;;;;;;;;GAQG;AACH,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM;IACzD,uDAAuD;IACvD,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IAE1B,mCAAmC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;;;;;;;OAUG;IACH,KAAK,CAAC,EAAE,UAAU,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;AAE/F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CA0BhG"}
package/dist/outputs.js CHANGED
@@ -5,9 +5,10 @@ import { resolve } from "@composurecdk/core";
5
5
  * from the composed system's build results.
6
6
  *
7
7
  * Each output definition's `value` can be a concrete string or a {@link Ref}
8
- * that is resolved against the build results. This enables outputs that
9
- * reference values produced by composed components without breaking the
10
- * composition abstraction.
8
+ * that is resolved against the build results. An optional `scope` routes
9
+ * individual outputs to specific stacks either as a direct `IConstruct`
10
+ * or as a component key string (statically typed against the composed
11
+ * system's component keys).
11
12
  *
12
13
  * Intended for use with {@link ComposedSystem.afterBuild}.
13
14
  *
@@ -20,28 +21,49 @@ import { resolve } from "@composurecdk/core";
20
21
  * import { outputs } from "@composurecdk/cloudformation";
21
22
  *
22
23
  * compose(
23
- * { site: createBucketBuilder(), cdn: createDistributionBuilder() },
24
- * { site: [], cdn: ["site"] },
24
+ * { site: createBucketBuilder(), cdn: createDistributionBuilder(), dns: createZoneBuilder() },
25
+ * { site: [], cdn: ["site"], dns: [] },
25
26
  * )
27
+ * .withStacks({ site: siteStack, cdn: siteStack, dns: dnsStack })
26
28
  * .afterBuild(outputs({
27
29
  * DistributionUrl: {
28
30
  * value: ref("cdn", (r: DistributionBuilderResult) =>
29
31
  * `https://${r.distribution.distributionDomainName}`),
30
- * description: "CloudFront distribution URL",
32
+ * scope: "cdn",
31
33
  * },
32
34
  * BucketName: {
33
35
  * value: ref("site", (r: BucketBuilderResult) => r.bucket.bucketName),
34
- * description: "S3 bucket name for site content",
36
+ * scope: siteStack,
37
+ * },
38
+ * NameServers: {
39
+ * value: ref("dns", (r: ZoneBuilderResult) =>
40
+ * Fn.join(",", r.zone.hostedZoneNameServers!)),
41
+ * scope: "dns",
35
42
  * },
36
43
  * }))
37
- * .build(stack, "StaticWebsite");
44
+ * .build(app, "StaticWebsite");
38
45
  * ```
39
46
  */
40
47
  export function outputs(defs) {
41
- return (scope, _id, results) => {
48
+ return (scope, _id, results, componentScopes) => {
42
49
  const resultAsContext = results;
50
+ const scopesByKey = componentScopes;
43
51
  for (const [name, def] of Object.entries(defs)) {
44
- new CfnOutput(scope, name, {
52
+ let target;
53
+ if (typeof def.scope === "string") {
54
+ const resolved = scopesByKey[def.scope];
55
+ if (resolved === undefined) {
56
+ throw new Error(`outputs(): "${name}" refers to unknown component "${def.scope}".`);
57
+ }
58
+ target = resolved;
59
+ }
60
+ else if (def.scope !== undefined) {
61
+ target = def.scope;
62
+ }
63
+ else {
64
+ target = scope;
65
+ }
66
+ new CfnOutput(target, name, {
45
67
  value: resolve(def.value, resultAsContext),
46
68
  ...(def.description !== undefined ? { description: def.description } : {}),
47
69
  ...(def.exportName !== undefined ? { exportName: def.exportName } : {}),
@@ -1 +1 @@
1
- {"version":3,"file":"outputs.js","sourceRoot":"","sources":["../src/outputs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAwC,OAAO,EAAE,MAAM,oBAAoB,CAAC;AA0BnF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,MAAM,UAAU,OAAO,CAAC,IAAuB;IAC7C,OAAO,CAAC,KAAiB,EAAE,GAAW,EAAE,OAAe,EAAE,EAAE;QACzD,MAAM,eAAe,GAAG,OAAiC,CAAC;QAE1D,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/C,IAAI,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE;gBACzB,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,eAAe,CAAC;gBAC1C,GAAG,CAAC,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1E,GAAG,CAAC,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACxE,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"outputs.js","sourceRoot":"","sources":["../src/outputs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAwC,OAAO,EAAE,MAAM,oBAAoB,CAAC;AA2CnF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,MAAM,UAAU,OAAO,CAA4B,IAA0B;IAC3E,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,eAAe,EAAE,EAAE;QAC9C,MAAM,eAAe,GAAG,OAAiC,CAAC;QAC1D,MAAM,WAAW,GAAG,eAAyD,CAAC;QAE9E,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/C,IAAI,MAAkB,CAAC;YACvB,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAClC,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACxC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;oBAC3B,MAAM,IAAI,KAAK,CAAC,eAAe,IAAI,kCAAkC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC;gBACtF,CAAC;gBACD,MAAM,GAAG,QAAQ,CAAC;YACpB,CAAC;iBAAM,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBACnC,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,KAAK,CAAC;YACjB,CAAC;YAED,IAAI,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE;gBAC1B,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,eAAe,CAAC;gBAC1C,GAAG,CAAC,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1E,GAAG,CAAC,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACxE,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
@@ -60,8 +60,8 @@ export type IStackBuilder = IBuilder<StackProps, StackBuilder> & {
60
60
  toScopeFactory(): ScopeFactory;
61
61
  };
62
62
  declare class StackBuilder implements Lifecycle<StackBuilderResult> {
63
+ #private;
63
64
  props: Partial<StackProps>;
64
- private readonly tags;
65
65
  tag(key: string, value: string): this;
66
66
  toScopeFactory(): ScopeFactory;
67
67
  build(scope: IConstruct, id: string): StackBuilderResult;
@@ -1 +1 @@
1
- {"version":3,"file":"stack-builder.d.ts","sourceRoot":"","sources":["../src/stack-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,UAAU,EAAQ,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAW,KAAK,QAAQ,EAAE,KAAK,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAE/F;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,4CAA4C;IAC5C,KAAK,EAAE,KAAK,CAAC;CACd;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAC,GAAG;IAC/D;;;;;;;OAOG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,aAAa,CAAC;IAE/C;;;;;;;;;;;;;;;;;OAiBG;IACH,cAAc,IAAI,YAAY,CAAC;CAChC,CAAC;AAEF,cAAM,YAAa,YAAW,SAAS,CAAC,kBAAkB,CAAC;IACzD,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,CAAM;IAChC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA0B;IAE/C,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAKrC,cAAc,IAAI,YAAY;IAY9B,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,GAAG,kBAAkB;CAOzD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,kBAAkB,IAAI,aAAa,CAElD"}
1
+ {"version":3,"file":"stack-builder.d.ts","sourceRoot":"","sources":["../src/stack-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,UAAU,EAAQ,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAW,KAAK,QAAQ,EAAE,KAAK,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAE/F;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,4CAA4C;IAC5C,KAAK,EAAE,KAAK,CAAC;CACd;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAC,GAAG;IAC/D;;;;;;;OAOG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,aAAa,CAAC;IAE/C;;;;;;;;;;;;;;;;;OAiBG;IACH,cAAc,IAAI,YAAY,CAAC;CAChC,CAAC;AAEF,cAAM,YAAa,YAAW,SAAS,CAAC,kBAAkB,CAAC;;IACzD,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,CAAM;IAGhC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAKrC,cAAc,IAAI,YAAY;IAY9B,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,GAAG,kBAAkB;CAOzD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,kBAAkB,IAAI,aAAa,CAElD"}
@@ -2,14 +2,14 @@ import { Stack, Tags } from "aws-cdk-lib";
2
2
  import { Builder } from "@composurecdk/core";
3
3
  class StackBuilder {
4
4
  props = {};
5
- tags = [];
5
+ #tags = [];
6
6
  tag(key, value) {
7
- this.tags.push([key, value]);
7
+ this.#tags.push([key, value]);
8
8
  return this;
9
9
  }
10
10
  toScopeFactory() {
11
11
  const props = { ...this.props };
12
- const tags = [...this.tags];
12
+ const tags = [...this.#tags];
13
13
  return (scope, id) => {
14
14
  const stack = new Stack(scope, id, props);
15
15
  tags.forEach(([key, value]) => {
@@ -20,7 +20,7 @@ class StackBuilder {
20
20
  }
21
21
  build(scope, id) {
22
22
  const stack = new Stack(scope, id, this.props);
23
- this.tags.forEach(([key, value]) => {
23
+ this.#tags.forEach(([key, value]) => {
24
24
  Tags.of(stack).add(key, value);
25
25
  });
26
26
  return { stack };
@@ -1 +1 @@
1
- {"version":3,"file":"stack-builder.js","sourceRoot":"","sources":["../src/stack-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAmB,IAAI,EAAE,MAAM,aAAa,CAAC;AAE3D,OAAO,EAAE,OAAO,EAAoD,MAAM,oBAAoB,CAAC;AA+D/F,MAAM,YAAY;IAChB,KAAK,GAAwB,EAAE,CAAC;IACf,IAAI,GAAuB,EAAE,CAAC;IAE/C,GAAG,CAAC,GAAW,EAAE,KAAa;QAC5B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,cAAc;QACZ,MAAM,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,OAAO,CAAC,KAAiB,EAAE,EAAU,EAAE,EAAE;YACvC,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;YAC1C,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;gBAC5B,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACjC,CAAC,CAAC,CAAC;YACH,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,KAAiB,EAAE,EAAU;QACjC,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,KAAmB,CAAC,CAAC;QAC7D,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YACjC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QACH,OAAO,EAAE,KAAK,EAAE,CAAC;IACnB,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,OAAO,CAA2B,YAAY,CAAkB,CAAC;AAC1E,CAAC"}
1
+ {"version":3,"file":"stack-builder.js","sourceRoot":"","sources":["../src/stack-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAmB,IAAI,EAAE,MAAM,aAAa,CAAC;AAE3D,OAAO,EAAE,OAAO,EAAoD,MAAM,oBAAoB,CAAC;AA+D/F,MAAM,YAAY;IAChB,KAAK,GAAwB,EAAE,CAAC;IACvB,KAAK,GAAuB,EAAE,CAAC;IAExC,GAAG,CAAC,GAAW,EAAE,KAAa;QAC5B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,cAAc;QACZ,MAAM,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,OAAO,CAAC,KAAiB,EAAE,EAAU,EAAE,EAAE;YACvC,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;YAC1C,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;gBAC5B,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACjC,CAAC,CAAC,CAAC;YACH,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,KAAiB,EAAE,EAAU;QACjC,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,KAAmB,CAAC,CAAC;QAC7D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YAClC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QACH,OAAO,EAAE,KAAK,EAAE,CAAC;IACnB,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,OAAO,CAA2B,YAAY,CAAkB,CAAC;AAC1E,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@composurecdk/cloudformation",
3
- "version": "0.3.6",
3
+ "version": "0.4.2",
4
4
  "description": "Composable CloudFormation stack builder and stack assignment strategies",
5
5
  "repository": {
6
6
  "type": "git",
@@ -35,7 +35,7 @@
35
35
  },
36
36
  "type": "module",
37
37
  "peerDependencies": {
38
- "@composurecdk/core": "^0.3.0",
38
+ "@composurecdk/core": "^0.4.0",
39
39
  "aws-cdk-lib": "^2.0.0",
40
40
  "constructs": "^10.0.0"
41
41
  },