@composurecdk/cloudfront 0.7.0 → 0.8.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 (92) hide show
  1. package/dist/commonjs/alarm-config.d.ts.map +1 -0
  2. package/dist/commonjs/alarm-config.js +3 -0
  3. package/dist/{alarm-config.js.map → commonjs/alarm-config.js.map} +1 -1
  4. package/dist/commonjs/alarm-defaults.d.ts.map +1 -0
  5. package/dist/commonjs/alarm-defaults.js +65 -0
  6. package/dist/commonjs/alarm-defaults.js.map +1 -0
  7. package/dist/commonjs/behavior-function-alarms.d.ts.map +1 -0
  8. package/dist/commonjs/behavior-function-alarms.js +145 -0
  9. package/dist/commonjs/behavior-function-alarms.js.map +1 -0
  10. package/dist/commonjs/cloudfront-alarm-builder.d.ts.map +1 -0
  11. package/dist/commonjs/cloudfront-alarm-builder.js +141 -0
  12. package/dist/commonjs/cloudfront-alarm-builder.js.map +1 -0
  13. package/dist/commonjs/defaults.d.ts.map +1 -0
  14. package/dist/commonjs/defaults.js +72 -0
  15. package/dist/commonjs/defaults.js.map +1 -0
  16. package/dist/commonjs/distribution-alarms.d.ts.map +1 -0
  17. package/dist/commonjs/distribution-alarms.js +64 -0
  18. package/dist/commonjs/distribution-alarms.js.map +1 -0
  19. package/dist/commonjs/distribution-builder.d.ts.map +1 -0
  20. package/dist/commonjs/distribution-builder.js +191 -0
  21. package/dist/commonjs/distribution-builder.js.map +1 -0
  22. package/dist/commonjs/index.d.ts.map +1 -0
  23. package/dist/commonjs/index.js +14 -0
  24. package/dist/commonjs/index.js.map +1 -0
  25. package/dist/commonjs/package.json +3 -0
  26. package/dist/commonjs/resolve-behaviors.d.ts.map +1 -0
  27. package/dist/commonjs/resolve-behaviors.js +101 -0
  28. package/dist/commonjs/resolve-behaviors.js.map +1 -0
  29. package/dist/esm/alarm-config.d.ts +98 -0
  30. package/dist/esm/alarm-config.d.ts.map +1 -0
  31. package/dist/esm/alarm-config.js.map +1 -0
  32. package/dist/esm/alarm-defaults.d.ts +28 -0
  33. package/dist/esm/alarm-defaults.d.ts.map +1 -0
  34. package/dist/esm/alarm-defaults.js.map +1 -0
  35. package/dist/esm/behavior-function-alarms.d.ts +44 -0
  36. package/dist/esm/behavior-function-alarms.d.ts.map +1 -0
  37. package/dist/esm/behavior-function-alarms.js.map +1 -0
  38. package/dist/esm/cloudfront-alarm-builder.d.ts +136 -0
  39. package/dist/esm/cloudfront-alarm-builder.d.ts.map +1 -0
  40. package/dist/esm/cloudfront-alarm-builder.js.map +1 -0
  41. package/dist/esm/defaults.d.ts +17 -0
  42. package/dist/esm/defaults.d.ts.map +1 -0
  43. package/dist/esm/defaults.js.map +1 -0
  44. package/dist/esm/distribution-alarms.d.ts +9 -0
  45. package/dist/esm/distribution-alarms.d.ts.map +1 -0
  46. package/dist/esm/distribution-alarms.js.map +1 -0
  47. package/dist/esm/distribution-builder.d.ts +345 -0
  48. package/dist/esm/distribution-builder.d.ts.map +1 -0
  49. package/dist/esm/distribution-builder.js.map +1 -0
  50. package/dist/esm/index.d.ts +6 -0
  51. package/dist/esm/index.d.ts.map +1 -0
  52. package/dist/esm/index.js.map +1 -0
  53. package/dist/esm/package.json +3 -0
  54. package/dist/esm/resolve-behaviors.d.ts +56 -0
  55. package/dist/esm/resolve-behaviors.d.ts.map +1 -0
  56. package/dist/esm/resolve-behaviors.js.map +1 -0
  57. package/package.json +36 -18
  58. package/dist/alarm-config.d.ts.map +0 -1
  59. package/dist/alarm-defaults.d.ts.map +0 -1
  60. package/dist/alarm-defaults.js.map +0 -1
  61. package/dist/behavior-function-alarms.d.ts.map +0 -1
  62. package/dist/behavior-function-alarms.js.map +0 -1
  63. package/dist/cloudfront-alarm-builder.d.ts.map +0 -1
  64. package/dist/cloudfront-alarm-builder.js.map +0 -1
  65. package/dist/defaults.d.ts.map +0 -1
  66. package/dist/defaults.js.map +0 -1
  67. package/dist/distribution-alarms.d.ts.map +0 -1
  68. package/dist/distribution-alarms.js.map +0 -1
  69. package/dist/distribution-builder.d.ts.map +0 -1
  70. package/dist/distribution-builder.js.map +0 -1
  71. package/dist/index.d.ts.map +0 -1
  72. package/dist/index.js.map +0 -1
  73. package/dist/resolve-behaviors.d.ts.map +0 -1
  74. package/dist/resolve-behaviors.js.map +0 -1
  75. /package/dist/{alarm-config.d.ts → commonjs/alarm-config.d.ts} +0 -0
  76. /package/dist/{alarm-defaults.d.ts → commonjs/alarm-defaults.d.ts} +0 -0
  77. /package/dist/{behavior-function-alarms.d.ts → commonjs/behavior-function-alarms.d.ts} +0 -0
  78. /package/dist/{cloudfront-alarm-builder.d.ts → commonjs/cloudfront-alarm-builder.d.ts} +0 -0
  79. /package/dist/{defaults.d.ts → commonjs/defaults.d.ts} +0 -0
  80. /package/dist/{distribution-alarms.d.ts → commonjs/distribution-alarms.d.ts} +0 -0
  81. /package/dist/{distribution-builder.d.ts → commonjs/distribution-builder.d.ts} +0 -0
  82. /package/dist/{index.d.ts → commonjs/index.d.ts} +0 -0
  83. /package/dist/{resolve-behaviors.d.ts → commonjs/resolve-behaviors.d.ts} +0 -0
  84. /package/dist/{alarm-config.js → esm/alarm-config.js} +0 -0
  85. /package/dist/{alarm-defaults.js → esm/alarm-defaults.js} +0 -0
  86. /package/dist/{behavior-function-alarms.js → esm/behavior-function-alarms.js} +0 -0
  87. /package/dist/{cloudfront-alarm-builder.js → esm/cloudfront-alarm-builder.js} +0 -0
  88. /package/dist/{defaults.js → esm/defaults.js} +0 -0
  89. /package/dist/{distribution-alarms.js → esm/distribution-alarms.js} +0 -0
  90. /package/dist/{distribution-builder.js → esm/distribution-builder.js} +0 -0
  91. /package/dist/{index.js → esm/index.js} +0 -0
  92. /package/dist/{resolve-behaviors.js → esm/resolve-behaviors.js} +0 -0
@@ -0,0 +1,136 @@
1
+ import { type Distribution } from "aws-cdk-lib/aws-cloudfront";
2
+ import { type Alarm } from "aws-cdk-lib/aws-cloudwatch";
3
+ import { type IConstruct } from "constructs";
4
+ import { COPY_STATE, type Lifecycle, type Resolvable } from "@composurecdk/core";
5
+ import { type ITaggedBuilder } from "@composurecdk/cloudformation";
6
+ import { AlarmDefinitionBuilder } from "@composurecdk/cloudwatch";
7
+ import type { DistributionAlarmConfig } from "./alarm-config.js";
8
+ import type { DistributionBuilderResult } from "./distribution-builder.js";
9
+ /**
10
+ * Configuration properties for {@link createCloudFrontAlarmBuilder}.
11
+ *
12
+ * The standalone alarm builder mirrors the alarm surface that
13
+ * {@link createDistributionBuilder} creates by default. It exists so that
14
+ * alarms can be created in a different stack from the distribution itself —
15
+ * specifically a `us-east-1` stack, since CloudFront emits all metrics there
16
+ * regardless of the distribution's stack region.
17
+ */
18
+ export interface CloudFrontAlarmBuilderProps {
19
+ /**
20
+ * Configuration for AWS-recommended CloudWatch alarms — distribution-level
21
+ * (5xx error rate, origin latency) and per-function (execution errors,
22
+ * validation errors, throttles).
23
+ *
24
+ * Mirrors {@link DistributionBuilderProps.recommendedAlarms}. Set to
25
+ * `false` to disable all recommended alarms; per-function alarms further
26
+ * respect each function's own {@link InlineFunctionDefinition.recommendedAlarms}
27
+ * value. Custom alarms added via {@link ICloudFrontAlarmBuilder.addAlarm}
28
+ * are unaffected.
29
+ *
30
+ * No alarm actions are configured by default. Use `alarmActionsPolicy` (or
31
+ * an `afterBuild` hook) to wire SNS or other actions onto the resulting
32
+ * alarms.
33
+ *
34
+ * @see https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Best_Practice_Recommended_Alarms_AWS_Services.html#CloudFront
35
+ */
36
+ recommendedAlarms?: DistributionAlarmConfig | false;
37
+ }
38
+ /**
39
+ * The build output of an {@link ICloudFrontAlarmBuilder}.
40
+ */
41
+ export interface CloudFrontAlarmBuilderResult {
42
+ /**
43
+ * The CloudWatch alarms created by this builder, keyed by alarm name. Uses
44
+ * the same key scheme as {@link DistributionBuilderResult.alarms}.
45
+ */
46
+ alarms: Record<string, Alarm>;
47
+ }
48
+ /**
49
+ * A fluent builder for CloudFront-related CloudWatch alarms, decoupled from
50
+ * the distribution itself. Use this when the distribution lives in a stack
51
+ * outside `us-east-1` — route this builder's component into a us-east-1
52
+ * stack via `compose().withStacks()` so the alarms land where CloudFront
53
+ * actually emits metrics.
54
+ *
55
+ * @see {@link createCloudFrontAlarmBuilder}
56
+ */
57
+ export type ICloudFrontAlarmBuilder = ITaggedBuilder<CloudFrontAlarmBuilderProps, CloudFrontAlarmBuilder>;
58
+ /**
59
+ * Shared alarm-assembly used by both {@link createDistributionBuilder} (in its
60
+ * own stack) and {@link createCloudFrontAlarmBuilder} (typically in a separate
61
+ * `us-east-1` stack). Materializes the recommended distribution-level alarms,
62
+ * the recommended per-function alarms, and any user-supplied custom alarms,
63
+ * emits the region warning if the resulting scope is not in `us-east-1`, and
64
+ * creates the alarm constructs.
65
+ *
66
+ * @internal
67
+ */
68
+ export declare function buildCloudFrontAlarms(scope: IConstruct, id: string, target: Pick<DistributionBuilderResult, "distribution" | "functions">, options?: {
69
+ recommendedAlarms?: DistributionAlarmConfig | false;
70
+ customAlarms?: AlarmDefinitionBuilder<Distribution>[];
71
+ }): Record<string, Alarm>;
72
+ declare class CloudFrontAlarmBuilder implements Lifecycle<CloudFrontAlarmBuilderResult> {
73
+ #private;
74
+ props: Partial<CloudFrontAlarmBuilderProps>;
75
+ /**
76
+ * Sets the distribution to alarm on. Pass the result of
77
+ * {@link createDistributionBuilder} (or a {@link Ref} to it). The builder
78
+ * reads the distribution and any inline-function metadata from the result.
79
+ *
80
+ * Pair with `compose().withStacks()` to route this component into a
81
+ * `us-east-1` stack while the distribution itself lives elsewhere — set
82
+ * `crossRegionReferences: true` on both stacks so CDK can wire the
83
+ * `DistributionId` reference automatically.
84
+ */
85
+ distribution(distribution: Resolvable<DistributionBuilderResult>): this;
86
+ /**
87
+ * Adds a custom alarm against the distribution. The configure callback
88
+ * receives a fresh {@link AlarmDefinitionBuilder} pre-set with the alarm's
89
+ * key; configure metric, threshold, comparison and any other options.
90
+ *
91
+ * The created alarm is materialized in this builder's stack — useful for
92
+ * cross-region setups where you want all CloudFront alarms to live with the
93
+ * recommended ones.
94
+ */
95
+ addAlarm(key: string, configure: (alarm: AlarmDefinitionBuilder<Distribution>) => AlarmDefinitionBuilder<Distribution>): this;
96
+ /** @internal — see ADR-0005. */
97
+ [COPY_STATE](target: CloudFrontAlarmBuilder): void;
98
+ build(scope: IConstruct, id: string, context?: Record<string, object>): CloudFrontAlarmBuilderResult;
99
+ }
100
+ /**
101
+ * Creates a new {@link ICloudFrontAlarmBuilder} for materializing CloudFront
102
+ * alarms in a stack separate from the distribution itself.
103
+ *
104
+ * The recommended use is multi-region deployments: the distribution lives in
105
+ * the site's stack (often outside `us-east-1` for latency or compliance
106
+ * reasons), and CloudFront alarms must live in a `us-east-1` stack so they
107
+ * can read the metrics CloudFront emits there.
108
+ *
109
+ * @example
110
+ * ```ts
111
+ * compose(
112
+ * {
113
+ * cdn: createDistributionBuilder()
114
+ * .origin(...)
115
+ * .defaultBehavior({ functions: [{ eventType, code }] })
116
+ * .recommendedAlarms(false), // suppress alarms in the dist's own stack
117
+ *
118
+ * cdnAlarms: createCloudFrontAlarmBuilder()
119
+ * .distribution(ref<DistributionBuilderResult>("cdn"))
120
+ * .recommendedAlarms({ errorRate: { threshold: 2 } }),
121
+ * },
122
+ * { cdn: [], cdnAlarms: ["cdn"] },
123
+ * )
124
+ * .withStacks({
125
+ * cdn: siteStack, // eu-west-2
126
+ * cdnAlarms: certStack, // us-east-1 (existing ACM stack)
127
+ * })
128
+ * .build(app, "App");
129
+ * ```
130
+ *
131
+ * Set `crossRegionReferences: true` on both stacks so CDK can export the
132
+ * `DistributionId` from the site stack and import it in the alarm stack.
133
+ */
134
+ export declare function createCloudFrontAlarmBuilder(): ICloudFrontAlarmBuilder;
135
+ export {};
136
+ //# sourceMappingURL=cloudfront-alarm-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloudfront-alarm-builder.d.ts","sourceRoot":"","sources":["../../src/cloudfront-alarm-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAExD,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,KAAK,SAAS,EAAW,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC1F,OAAO,EAAE,KAAK,cAAc,EAAiB,MAAM,8BAA8B,CAAC;AAElF,OAAO,EAAE,sBAAsB,EAAgB,MAAM,0BAA0B,CAAC;AAChF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAGjE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAE3E;;;;;;;;GAQG;AACH,MAAM,WAAW,2BAA2B;IAC1C;;;;;;;;;;;;;;;;OAgBG;IACH,iBAAiB,CAAC,EAAE,uBAAuB,GAAG,KAAK,CAAC;CACrD;AAED;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;CAC/B;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,uBAAuB,GAAG,cAAc,CAClD,2BAA2B,EAC3B,sBAAsB,CACvB,CAAC;AAsBF;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,UAAU,EACjB,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,IAAI,CAAC,yBAAyB,EAAE,cAAc,GAAG,WAAW,CAAC,EACrE,OAAO,GAAE;IACP,iBAAiB,CAAC,EAAE,uBAAuB,GAAG,KAAK,CAAC;IACpD,YAAY,CAAC,EAAE,sBAAsB,CAAC,YAAY,CAAC,EAAE,CAAC;CAClD,GACL,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAyBvB;AAED,cAAM,sBAAuB,YAAW,SAAS,CAAC,4BAA4B,CAAC;;IAC7E,KAAK,EAAE,OAAO,CAAC,2BAA2B,CAAC,CAAM;IAIjD;;;;;;;;;OASG;IACH,YAAY,CAAC,YAAY,EAAE,UAAU,CAAC,yBAAyB,CAAC,GAAG,IAAI;IAKvE;;;;;;;;OAQG;IACH,QAAQ,CACN,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,CACT,KAAK,EAAE,sBAAsB,CAAC,YAAY,CAAC,KACxC,sBAAsB,CAAC,YAAY,CAAC,GACxC,IAAI;IAKP,gCAAgC;IAChC,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,sBAAsB,GAAG,IAAI;IAKlD,KAAK,CACH,KAAK,EAAE,UAAU,EACjB,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,4BAA4B;CAehC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,4BAA4B,IAAI,uBAAuB,CAEtE"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloudfront-alarm-builder.js","sourceRoot":"","sources":["../../src/cloudfront-alarm-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { DistributionBuilderProps, InlineFunctionDefinition } from "./distribution-builder.js";
2
+ /**
3
+ * Secure, AWS-recommended defaults applied to every CloudFront distribution
4
+ * built with {@link createDistributionBuilder}. Each property can be individually
5
+ * overridden via the builder's fluent API.
6
+ *
7
+ * The `defaultBehavior` defaults (viewer protocol policy, response headers
8
+ * policy) are deep-merged with user-provided behavior options in `build()`,
9
+ * then the resolved origin is injected.
10
+ */
11
+ export declare const DISTRIBUTION_DEFAULTS: Partial<DistributionBuilderProps>;
12
+ /**
13
+ * Defaults applied to every inline CloudFront Function declared on a cache
14
+ * behavior. User-provided properties take precedence.
15
+ */
16
+ export declare const INLINE_FUNCTION_DEFAULTS: Partial<InlineFunctionDefinition>;
17
+ //# sourceMappingURL=defaults.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/defaults.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAEpG;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,EAAE,OAAO,CAAC,wBAAwB,CAmDnE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,wBAAwB,EAAE,OAAO,CAAC,wBAAwB,CAOtE,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,WAAW,EACX,UAAU,EACV,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,4BAA4B,CAAC;AAGpC;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAsC;IACtE;;;;;;OAMG;IACH,UAAU,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE;IAE/B;;;;OAIG;IACH,UAAU,EAAE,UAAU,CAAC,eAAe;IAEtC;;;;OAIG;IACH,WAAW,EAAE,WAAW,CAAC,WAAW;IAEpC;;;OAGG;IACH,iBAAiB,EAAE,YAAY;IAE/B;;;;OAIG;IACH,sBAAsB,EAAE,sBAAsB,CAAC,aAAa;IAE5D,eAAe,EAAE;QACf;;;WAGG;QACH,oBAAoB,EAAE,oBAAoB,CAAC,iBAAiB;QAE5D;;;;WAIG;QACH,qBAAqB,EAAE,qBAAqB,CAAC,gBAAgB;KAC9D;CACF,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAsC;IACzE;;;;OAIG;IACH,OAAO,EAAE,eAAe,CAAC,MAAM;CAChC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { Distribution } from "aws-cdk-lib/aws-cloudfront";
2
+ import type { AlarmDefinition } from "@composurecdk/cloudwatch";
3
+ import type { DistributionAlarmConfig } from "./alarm-config.js";
4
+ /**
5
+ * Resolves the recommended alarm configuration into fully-resolved
6
+ * {@link AlarmDefinition}s for a CloudFront distribution.
7
+ */
8
+ export declare function resolveDistributionAlarmDefinitions(distribution: Distribution, config: DistributionAlarmConfig | undefined): AlarmDefinition[];
9
+ //# sourceMappingURL=distribution-alarms.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"distribution-alarms.d.ts","sourceRoot":"","sources":["../../src/distribution-alarms.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAEhE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AA2BjE;;;GAGG;AACH,wBAAgB,mCAAmC,CACjD,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,uBAAuB,GAAG,SAAS,GAC1C,eAAe,EAAE,CAuCnB"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"distribution-alarms.js","sourceRoot":"","sources":["../../src/distribution-alarms.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAG/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAElE,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC1C,MAAM,mBAAmB,GAAG,GAAG,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC;AAE1E;;;GAGG;AACH,SAAS,kBAAkB,CACzB,YAA0B,EAC1B,UAAkB,EAClB,SAAiB;IAEjB,OAAO,IAAI,MAAM,CAAC;QAChB,SAAS,EAAE,gBAAgB;QAC3B,UAAU;QACV,aAAa,EAAE;YACb,cAAc,EAAE,YAAY,CAAC,cAAc;YAC3C,MAAM,EAAE,QAAQ;SACjB;QACD,SAAS;QACT,MAAM,EAAE,aAAa;KACtB,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mCAAmC,CACjD,YAA0B,EAC1B,MAA2C;IAE3C,IAAI,MAAM,EAAE,OAAO,KAAK,KAAK;QAAE,OAAO,EAAE,CAAC;IAEzC,MAAM,WAAW,GAAsB,EAAE,CAAC;IAE1C,IAAI,MAAM,EAAE,SAAS,KAAK,KAAK,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,2BAA2B,CAAC,SAAS,CAAC,CAAC;QACzF,WAAW,CAAC,IAAI,CAAC;YACf,GAAG,EAAE,WAAW;YAChB,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,MAAM,EAAE,kBAAkB,CAAC,YAAY,EAAE,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC;YACvE,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,kBAAkB,EAAE,kBAAkB,CAAC,sBAAsB;YAC7D,iBAAiB,EAAE,GAAG,CAAC,iBAAiB;YACxC,iBAAiB,EAAE,GAAG,CAAC,iBAAiB;YACxC,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;YACtC,WAAW,EAAE,oEAAoE,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,mBAAmB,GAAG;SACrI,CAAC,CAAC;IACL,CAAC;IAED,IAAI,MAAM,EAAE,aAAa,KAAK,KAAK,EAAE,CAAC;QACpC,MAAM,GAAG,GAAG,kBAAkB,CAC5B,MAAM,EAAE,aAAa,EACrB,2BAA2B,CAAC,aAAa,CAC1C,CAAC;QACF,WAAW,CAAC,IAAI,CAAC;YACf,GAAG,EAAE,eAAe;YACpB,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,MAAM,EAAE,kBAAkB,CAAC,YAAY,EAAE,eAAe,EAAE,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YAC/E,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,kBAAkB,EAAE,kBAAkB,CAAC,sBAAsB;YAC7D,iBAAiB,EAAE,GAAG,CAAC,iBAAiB;YACxC,iBAAiB,EAAE,GAAG,CAAC,iBAAiB;YACxC,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;YACtC,WAAW,EAAE,uDAAuD,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,aAAa,mBAAmB,GAAG;SAC7H,CAAC,CAAC;IACL,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC"}
@@ -0,0 +1,345 @@
1
+ import { Distribution, type DistributionProps, type IOrigin, type AddBehaviorOptions, type BehaviorOptions, type Function as CfFunction, type FunctionCode, type FunctionEventType, type FunctionRuntime, type IKeyValueStore } from "aws-cdk-lib/aws-cloudfront";
2
+ import { type ICertificate } from "aws-cdk-lib/aws-certificatemanager";
3
+ import { type Alarm } from "aws-cdk-lib/aws-cloudwatch";
4
+ import { type Bucket, type IBucket } from "aws-cdk-lib/aws-s3";
5
+ import { type IConstruct } from "constructs";
6
+ import { COPY_STATE, type Lifecycle, type Resolvable } from "@composurecdk/core";
7
+ import { type ITaggedBuilder } from "@composurecdk/cloudformation";
8
+ import { AlarmDefinitionBuilder } from "@composurecdk/cloudwatch";
9
+ import { type IBucketBuilder } from "@composurecdk/s3";
10
+ import type { DistributionAlarmConfig, FunctionAlarmConfig } from "./alarm-config.js";
11
+ /**
12
+ * Per-function metadata exposed on {@link DistributionBuilderResult.functions}.
13
+ * Bundles the CDK construct with the behavior context the builder used to
14
+ * create it. Consumers (notably {@link createCloudFrontAlarmBuilder}) use the
15
+ * `pathPattern`, `eventType`, and `recommendedAlarms` fields to reproduce the
16
+ * same recommended alarms in a different stack.
17
+ */
18
+ export interface FunctionEntry {
19
+ /** The CloudFront Function created by the distribution builder. */
20
+ function: CfFunction;
21
+ /**
22
+ * The behavior the function is attached to. `null` for the default behavior;
23
+ * otherwise the path pattern (e.g. `"/api/*"`).
24
+ */
25
+ pathPattern: string | null;
26
+ /** The viewer event the function handles. */
27
+ eventType: FunctionEventType;
28
+ /**
29
+ * The {@link InlineFunctionDefinition.recommendedAlarms} value the user
30
+ * supplied for this function. Omitted entirely when the user did not
31
+ * provide one — consumers should treat that as "use defaults".
32
+ */
33
+ recommendedAlarms?: FunctionAlarmConfig | false;
34
+ }
35
+ /**
36
+ * A CloudFront Function declared inline on a cache behavior. The distribution
37
+ * builder creates the underlying {@link CfFunction} construct and wires it
38
+ * into the behavior's function associations. Recommended alarms for the
39
+ * function are emitted automatically, scoped to the behavior's path pattern.
40
+ *
41
+ * Only inline declarations are supported — there is no "bring your own
42
+ * function" escape hatch, because the whole point of owning the function is
43
+ * to emit path-scoped `FunctionExecutionErrors` / `FunctionValidationErrors`
44
+ * / `FunctionThrottles` alarms that couldn't be emitted from an external
45
+ * `IFunctionRef` (which exposes only an ARN, not a function name).
46
+ *
47
+ * @see https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/cloudfront-functions.html
48
+ */
49
+ export interface InlineFunctionDefinition {
50
+ /** The viewer event that should invoke the function. */
51
+ eventType: FunctionEventType;
52
+ /** The source for the function — `FunctionCode.fromInline()` or `.fromFile()`. */
53
+ code: FunctionCode;
54
+ /**
55
+ * Explicit physical name for the function. Useful when operators search
56
+ * CloudWatch logs or metrics by function name rather than by ARN. If omitted,
57
+ * CDK generates a name derived from the construct path.
58
+ */
59
+ functionName?: string;
60
+ /**
61
+ * JavaScript runtime.
62
+ * @default FunctionRuntime.JS_2_0
63
+ */
64
+ runtime?: FunctionRuntime;
65
+ /** Optional comment stored on the function resource. */
66
+ comment?: string;
67
+ /**
68
+ * Key-value store to associate with the function. Only supported on the
69
+ * `cloudfront-js-2.0` runtime.
70
+ */
71
+ keyValueStore?: IKeyValueStore;
72
+ /**
73
+ * Per-function alarm configuration. Defaults to the three AWS-recommended
74
+ * alarms (execution errors, validation errors, throttles) each with
75
+ * threshold 0. Set to `false` to disable all alarms for this function, or
76
+ * override individual alarms via their config entry.
77
+ *
78
+ * **Region requirement:** CloudFront metrics are emitted in `us-east-1`
79
+ * only. CloudWatch alarms are regional, so these alarms will only fire if
80
+ * the containing stack is deployed in `us-east-1`. The builder emits a
81
+ * synth-time warning if this isn't the case.
82
+ *
83
+ * @see https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/monitoring-functions.html
84
+ */
85
+ recommendedAlarms?: FunctionAlarmConfig | false;
86
+ }
87
+ /**
88
+ * Configuration for the distribution's default cache behavior.
89
+ *
90
+ * The origin is set separately via {@link IDistributionBuilder.origin}. The
91
+ * `functionAssociations` field from {@link AddBehaviorOptions} is replaced by
92
+ * {@link functions}, which takes {@link InlineFunctionDefinition}s — the
93
+ * builder owns the CloudFront Function constructs so it can emit alarms for
94
+ * them.
95
+ */
96
+ export interface DefaultBehaviorConfig extends Omit<AddBehaviorOptions, "functionAssociations"> {
97
+ /**
98
+ * CloudFront Functions to associate with the default behavior. At most one
99
+ * function per {@link FunctionEventType} is allowed.
100
+ */
101
+ functions?: InlineFunctionDefinition[];
102
+ }
103
+ /**
104
+ * Configuration for a path-pattern cache behavior attached to the distribution
105
+ * via {@link IDistributionBuilder.behavior}.
106
+ *
107
+ * Unlike {@link DefaultBehaviorConfig}, `origin` is required. It may be a
108
+ * concrete {@link IOrigin} or a {@link Resolvable} (typically a {@link ref})
109
+ * for cross-component wiring.
110
+ */
111
+ export interface AdditionalBehaviorConfig extends Omit<BehaviorOptions, "origin" | "functionAssociations"> {
112
+ /** The origin for this behavior, concrete or resolved at build time. */
113
+ origin: Resolvable<IOrigin>;
114
+ /**
115
+ * CloudFront Functions to associate with this behavior. At most one
116
+ * function per {@link FunctionEventType} is allowed.
117
+ */
118
+ functions?: InlineFunctionDefinition[];
119
+ }
120
+ /**
121
+ * Configures how CloudFront standard access logs are handled. Pass `false`
122
+ * to disable logging; pass an object to wire a destination, prefix,
123
+ * include cookies, or customize the auto-created sub-builder.
124
+ *
125
+ * `configure` cannot be combined with `destination` — a user-managed
126
+ * destination is not built by this builder.
127
+ */
128
+ export type AccessLogsConfig = false | {
129
+ destination?: IBucket;
130
+ prefix?: string;
131
+ includeCookies?: boolean;
132
+ /**
133
+ * Customize the auto-created logging sub-builder. Receives a builder
134
+ * pre-seeded with `versioned: false`, `objectOwnership:
135
+ * BUCKET_OWNER_PREFERRED`, `removalPolicy: RETAIN`, and recursive
136
+ * S3 server access logging disabled.
137
+ */
138
+ configure?: (b: IBucketBuilder) => IBucketBuilder;
139
+ };
140
+ /**
141
+ * Configuration properties for the CloudFront distribution builder.
142
+ *
143
+ * Extends the CDK {@link DistributionProps} with additional builder-specific
144
+ * options. `defaultBehavior` accepts a {@link DefaultBehaviorConfig} with
145
+ * inline function definitions; additional behaviors are added via the
146
+ * {@link IDistributionBuilder.behavior} method rather than the raw
147
+ * `additionalBehaviors` record.
148
+ *
149
+ * The CDK `enableLogging`, `logBucket`, `logFilePrefix`, and
150
+ * `logIncludesCookies` props are replaced by {@link accessLogs}, which
151
+ * auto-creates a logging bucket with secure defaults by default.
152
+ */
153
+ export interface DistributionBuilderProps extends Omit<DistributionProps, "defaultBehavior" | "additionalBehaviors" | "enableLogging" | "logBucket" | "logFilePrefix" | "logIncludesCookies" | "certificate"> {
154
+ /** See {@link AccessLogsConfig}. Defaults to `{ prefix: "logs/" }`. */
155
+ accessLogs?: AccessLogsConfig;
156
+ /**
157
+ * The ACM certificate to associate with the distribution for HTTPS.
158
+ *
159
+ * Accepts a concrete {@link ICertificate} or a {@link Resolvable} —
160
+ * typically a {@link Ref} produced by a composed `@composurecdk/acm`
161
+ * certificate builder. The certificate must be issued in `us-east-1`.
162
+ */
163
+ certificate?: Resolvable<ICertificate>;
164
+ /**
165
+ * Configuration for the default cache behavior. The origin is set via
166
+ * {@link IDistributionBuilder.origin}. Inline CloudFront Functions declared
167
+ * in `functions` are created by the builder and receive path-scoped alarms
168
+ * automatically.
169
+ */
170
+ defaultBehavior?: DefaultBehaviorConfig;
171
+ /**
172
+ * Configuration for AWS-recommended CloudWatch alarms at the **distribution**
173
+ * level (5xx error rate, origin latency).
174
+ *
175
+ * Per-function alarm shapes (`FunctionExecutionErrors`,
176
+ * `FunctionValidationErrors`, `FunctionThrottles`) are configured per
177
+ * function via {@link InlineFunctionDefinition.recommendedAlarms}, because
178
+ * their correct disposition depends on the behavior the function is
179
+ * attached to. The kill switch below (`recommendedAlarms: false`) still
180
+ * applies to function alarms — see below.
181
+ *
182
+ * **Region requirement:** CloudFront metrics are emitted in `us-east-1`
183
+ * only. CloudWatch alarms are regional, so every alarm created by this
184
+ * builder will only fire if the containing stack is deployed in
185
+ * `us-east-1`. The builder emits a synth-time warning if this isn't the
186
+ * case. For multi-region deployments, set `recommendedAlarms: false` here
187
+ * and use {@link createCloudFrontAlarmBuilder} routed to a `us-east-1`
188
+ * stack via `compose().withStacks()`.
189
+ *
190
+ * Set to `false` to disable all recommended alarms (both distribution-level
191
+ * and per-function). Custom alarms added via
192
+ * {@link IDistributionBuilder.addAlarm} are unaffected. To disable a single
193
+ * function's alarms, set `recommendedAlarms: false` on the corresponding
194
+ * {@link InlineFunctionDefinition}.
195
+ *
196
+ * No alarm actions are configured by default since notification methods
197
+ * are user-specific. Access alarms from the build result or use an
198
+ * `afterBuild` hook to apply actions.
199
+ *
200
+ * @example Tighter dist-level threshold; function alarms unchanged.
201
+ * ```ts
202
+ * createDistributionBuilder()
203
+ * .origin(siteOrigin)
204
+ * .recommendedAlarms({ errorRate: { threshold: 2 } });
205
+ * ```
206
+ *
207
+ * @example Multi-region setup — suppress all alarms here, recreate them in
208
+ * a `us-east-1` stack via {@link createCloudFrontAlarmBuilder}.
209
+ * ```ts
210
+ * createDistributionBuilder()
211
+ * .origin(siteOrigin)
212
+ * .recommendedAlarms(false);
213
+ * ```
214
+ *
215
+ * @see https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Best_Practice_Recommended_Alarms_AWS_Services.html#CloudFront
216
+ */
217
+ recommendedAlarms?: DistributionAlarmConfig | false;
218
+ }
219
+ /**
220
+ * The build output of an {@link IDistributionBuilder}. Contains the CDK
221
+ * constructs created during {@link Lifecycle.build}, keyed by role.
222
+ */
223
+ export interface DistributionBuilderResult {
224
+ /** The CloudFront distribution construct created by the builder. */
225
+ distribution: Distribution;
226
+ /**
227
+ * The S3 bucket created for access logging, or `undefined` if access
228
+ * logging was disabled or the user provided their own bucket.
229
+ */
230
+ accessLogsBucket?: Bucket;
231
+ /**
232
+ * CloudFront Functions created by the builder for inline function
233
+ * definitions, keyed by `<behaviorScope><EventType>` —
234
+ * e.g. `defaultBehaviorViewerRequest`, `behaviorApiStarViewerRequest`.
235
+ * Each entry bundles the {@link CfFunction} with the behavior context
236
+ * (`pathPattern`, `eventType`) and the per-function `recommendedAlarms`
237
+ * config the user supplied. Empty if no inline functions were declared.
238
+ */
239
+ functions: Record<string, FunctionEntry>;
240
+ /**
241
+ * CloudWatch alarms created for the distribution and its inline functions,
242
+ * keyed by alarm name. Distribution-level keys: `errorRate`, `originLatency`.
243
+ * Function-level keys are prefixed by behavior scope and event type —
244
+ * e.g. `defaultBehaviorViewerRequestExecutionErrors`.
245
+ *
246
+ * Includes both recommended alarms and custom alarms added via
247
+ * {@link IDistributionBuilder.addAlarm}. Empty when `recommendedAlarms` is
248
+ * `false` and no custom alarms were added. No alarm actions are configured.
249
+ */
250
+ alarms: Record<string, Alarm>;
251
+ }
252
+ /**
253
+ * A fluent builder for configuring and creating a CloudFront distribution.
254
+ *
255
+ * Properties from CDK {@link DistributionProps} are exposed as overloaded
256
+ * getter/setter methods. The origin is set via {@link origin}, which accepts
257
+ * a concrete {@link IOrigin} or a {@link Ref} for cross-component wiring.
258
+ * Additional cache behaviors are added via {@link behavior}, which takes a
259
+ * path pattern and a config including its own origin and inline functions.
260
+ *
261
+ * The builder implements {@link Lifecycle}, so it can be used directly as a
262
+ * component in a {@link compose | composed system}. When built, it creates a
263
+ * CloudFront distribution, any inline CloudFront Functions declared on its
264
+ * behaviors, and AWS-recommended alarms scoped per-behavior.
265
+ *
266
+ * @example
267
+ * ```ts
268
+ * const cdn = createDistributionBuilder()
269
+ * .origin(siteOrigin)
270
+ * .defaultBehavior({
271
+ * functions: [{
272
+ * eventType: FunctionEventType.VIEWER_REQUEST,
273
+ * code: FunctionCode.fromFile({ filePath: "src/edge/rewrite.js" }),
274
+ * }],
275
+ * })
276
+ * .behavior("/api/*", {
277
+ * origin: apiOrigin,
278
+ * cachePolicy: CachePolicy.CACHING_DISABLED,
279
+ * functions: [{
280
+ * eventType: FunctionEventType.VIEWER_REQUEST,
281
+ * code: FunctionCode.fromFile({ filePath: "src/edge/api-auth.js" }),
282
+ * }],
283
+ * });
284
+ * ```
285
+ */
286
+ export type IDistributionBuilder = ITaggedBuilder<DistributionBuilderProps, DistributionBuilder>;
287
+ declare class DistributionBuilder implements Lifecycle<DistributionBuilderResult> {
288
+ #private;
289
+ props: Partial<DistributionBuilderProps>;
290
+ addAlarm(key: string, configure: (alarm: AlarmDefinitionBuilder<Distribution>) => AlarmDefinitionBuilder<Distribution>): this;
291
+ /**
292
+ * Sets the default origin for the distribution.
293
+ *
294
+ * Accepts a concrete {@link IOrigin} or a {@link Ref} that resolves to one
295
+ * at build time — enabling cross-component wiring with S3 buckets.
296
+ *
297
+ * @param origin - The origin or a Ref to one.
298
+ * @returns This builder for chaining.
299
+ */
300
+ origin(origin: Resolvable<IOrigin>): this;
301
+ /**
302
+ * Adds an additional cache behavior for a path pattern. The behavior's
303
+ * origin is required (concrete or Resolvable). Any inline functions are
304
+ * created by the builder and receive per-behavior alarms scoped to the
305
+ * path pattern.
306
+ *
307
+ * @throws If a behavior for the same path pattern has already been added.
308
+ */
309
+ behavior(pathPattern: string, config: AdditionalBehaviorConfig): this;
310
+ /** @internal — see ADR-0005. */
311
+ [COPY_STATE](target: DistributionBuilder): void;
312
+ build(scope: IConstruct, id: string, context?: Record<string, object>): DistributionBuilderResult;
313
+ }
314
+ /**
315
+ * Creates a new {@link IDistributionBuilder} for configuring a CloudFront distribution.
316
+ *
317
+ * This is the entry point for defining a CloudFront distribution component.
318
+ * The returned builder exposes every {@link DistributionBuilderProps} property
319
+ * as a fluent setter/getter, plus {@link IDistributionBuilder.origin | origin()}
320
+ * for setting the default origin with Ref support and
321
+ * {@link IDistributionBuilder.behavior | behavior()} for path-pattern behaviors.
322
+ * It implements {@link Lifecycle} for use with {@link compose}.
323
+ *
324
+ * @returns A fluent builder for a CloudFront distribution.
325
+ *
326
+ * @example
327
+ * ```ts
328
+ * const cdn = createDistributionBuilder()
329
+ * .origin(ref<BucketBuilderResult>("site", (r) =>
330
+ * S3BucketOrigin.withOriginAccessControl(r.bucket)))
331
+ * .defaultBehavior({
332
+ * functions: [{
333
+ * eventType: FunctionEventType.VIEWER_REQUEST,
334
+ * code: FunctionCode.fromFile({ filePath: "src/edge/rewrite.js" }),
335
+ * }],
336
+ * })
337
+ * .behavior("/api/*", {
338
+ * origin: apiOrigin,
339
+ * cachePolicy: CachePolicy.CACHING_DISABLED,
340
+ * });
341
+ * ```
342
+ */
343
+ export declare function createDistributionBuilder(): IDistributionBuilder;
344
+ export {};
345
+ //# sourceMappingURL=distribution-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"distribution-builder.d.ts","sourceRoot":"","sources":["../../src/distribution-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"distribution-builder.js","sourceRoot":"","sources":["../../src/distribution-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export { createDistributionBuilder, type AccessLogsConfig, type DistributionBuilderProps, type DistributionBuilderResult, type IDistributionBuilder, type DefaultBehaviorConfig, type AdditionalBehaviorConfig, type InlineFunctionDefinition, } from "./distribution-builder.js";
2
+ export { createCloudFrontAlarmBuilder, type CloudFrontAlarmBuilderProps, type CloudFrontAlarmBuilderResult, type ICloudFrontAlarmBuilder, } from "./cloudfront-alarm-builder.js";
3
+ export { DISTRIBUTION_DEFAULTS, INLINE_FUNCTION_DEFAULTS } from "./defaults.js";
4
+ export { type DistributionAlarmConfig, type FunctionAlarmConfig } from "./alarm-config.js";
5
+ export { DISTRIBUTION_ALARM_DEFAULTS, FUNCTION_ALARM_DEFAULTS } from "./alarm-defaults.js";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,EACzB,KAAK,gBAAgB,EACrB,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,EAC7B,KAAK,wBAAwB,GAC9B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,4BAA4B,EAC5B,KAAK,2BAA2B,EAChC,KAAK,4BAA4B,EACjC,KAAK,uBAAuB,GAC7B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAChF,OAAO,EAAE,KAAK,uBAAuB,EAAE,KAAK,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC3F,OAAO,EAAE,2BAA2B,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,GAQ1B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,4BAA4B,GAI7B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAEhF,OAAO,EAAE,2BAA2B,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "module"
3
+ }
@@ -0,0 +1,56 @@
1
+ import { type AddBehaviorOptions, type BehaviorOptions, type IOrigin } from "aws-cdk-lib/aws-cloudfront";
2
+ import type { IConstruct } from "constructs";
3
+ import type { AdditionalBehaviorConfig, DefaultBehaviorConfig, FunctionEntry } from "./distribution-builder.js";
4
+ /**
5
+ * Input required to resolve the default behavior, all additional behaviors,
6
+ * and any inline CloudFront Functions into concrete CDK objects.
7
+ */
8
+ export interface ResolveBehaviorsInput {
9
+ /** The construct scope under which functions and behaviors are created. */
10
+ scope: IConstruct;
11
+ /** The distribution's construct id — used as a prefix for Function ids. */
12
+ id: string;
13
+ /** Compose context forwarded to {@link resolve}. Empty record if unused. */
14
+ context: Record<string, object>;
15
+ /** The already-resolved default origin. */
16
+ defaultOrigin: IOrigin;
17
+ /** User-provided default-behavior config (may be undefined). */
18
+ defaultBehavior: DefaultBehaviorConfig | undefined;
19
+ /** The builder's default-behavior defaults, applied before user props. */
20
+ defaultBehaviorDefaults: Partial<AddBehaviorOptions>;
21
+ /**
22
+ * Ordered map of path-pattern → config for additional behaviors. Origins
23
+ * are resolved here via {@link resolve}.
24
+ */
25
+ additionalBehaviors: Map<string, AdditionalBehaviorConfig>;
26
+ }
27
+ /**
28
+ * Output of {@link resolveBehaviors}: concrete behavior options ready to pass
29
+ * to the CDK `Distribution` constructor, plus any owned {@link CfFunction}
30
+ * instances and their alarm definitions.
31
+ */
32
+ export interface ResolveBehaviorsResult {
33
+ /** Concrete `BehaviorOptions` for the default cache behavior. */
34
+ defaultBehavior: BehaviorOptions;
35
+ /** Concrete `BehaviorOptions` keyed by path pattern, in insertion order. */
36
+ additionalBehaviors: Record<string, BehaviorOptions>;
37
+ /**
38
+ * Owned inline CloudFront Functions plus the behavior context the builder
39
+ * used to create each one, keyed by `<behaviorScope><EventType>` —
40
+ * e.g. `defaultBehaviorViewerRequest`. Consumed by the alarm-creation code
41
+ * path (in {@link DistributionBuilder} and
42
+ * {@link createCloudFrontAlarmBuilder}) to materialize per-function
43
+ * recommended alarms.
44
+ */
45
+ functions: Record<string, FunctionEntry>;
46
+ }
47
+ /**
48
+ * Materializes the default and additional cache behaviors into CDK-ready
49
+ * `BehaviorOptions`, creating any inline CloudFront Functions along the way
50
+ * and producing their path-scoped alarm definitions.
51
+ *
52
+ * Enforces CloudFront invariants at configure time: at most one function per
53
+ * event type per behavior, and `keyValueStore` requires `FunctionRuntime.JS_2_0`.
54
+ */
55
+ export declare function resolveBehaviors(input: ResolveBehaviorsInput): ResolveBehaviorsResult;
56
+ //# sourceMappingURL=resolve-behaviors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-behaviors.d.ts","sourceRoot":"","sources":["../../src/resolve-behaviors.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,eAAe,EAKpB,KAAK,OAAO,EACb,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAQ7C,OAAO,KAAK,EACV,wBAAwB,EACxB,qBAAqB,EACrB,aAAa,EAEd,MAAM,2BAA2B,CAAC;AAEnC;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,2EAA2E;IAC3E,KAAK,EAAE,UAAU,CAAC;IAElB,2EAA2E;IAC3E,EAAE,EAAE,MAAM,CAAC;IAEX,4EAA4E;IAC5E,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEhC,2CAA2C;IAC3C,aAAa,EAAE,OAAO,CAAC;IAEvB,gEAAgE;IAChE,eAAe,EAAE,qBAAqB,GAAG,SAAS,CAAC;IAEnD,0EAA0E;IAC1E,uBAAuB,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAErD;;;OAGG;IACH,mBAAmB,EAAE,GAAG,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;CAC5D;AAED;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC,iEAAiE;IACjE,eAAe,EAAE,eAAe,CAAC;IAEjC,4EAA4E;IAC5E,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAErD;;;;;;;OAOG;IACH,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CAC1C;AAiDD;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,sBAAsB,CA0DrF"}