@kensio/yulin 1.20.17 → 1.21.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 (171) hide show
  1. package/dist/service/athena/engine/sim-athena-comparison-shims.d.ts +13 -0
  2. package/dist/service/athena/engine/sim-athena-comparison-shims.js +68 -0
  3. package/dist/service/athena/engine/sim-athena-shims.js +2 -0
  4. package/dist/service/cloudformation/resource/cfn/cloudfront/sim-cloudfront-cfn-value-adapter.js +8 -0
  5. package/dist/service/cloudformation/resource/cfn/cloudfront/sim-cloudfront-orp-cfn.d.ts +24 -0
  6. package/dist/service/cloudformation/resource/cfn/cloudfront/sim-cloudfront-orp-cfn.js +31 -0
  7. package/dist/service/cloudfront/behaviour/sim-cloud-front-behavior.d.ts +12 -1
  8. package/dist/service/cloudfront/cache/sim-cf-accept-encoding.d.ts +11 -0
  9. package/dist/service/cloudfront/cache/sim-cf-accept-encoding.js +27 -0
  10. package/dist/service/cloudfront/cache/sim-cf-cache-control.d.ts +28 -0
  11. package/dist/service/cloudfront/cache/sim-cf-cache-control.js +49 -0
  12. package/dist/service/cloudfront/cache/sim-cf-cache-entry-key-path.d.ts +11 -0
  13. package/dist/service/cloudfront/cache/sim-cf-cache-entry-key-path.js +22 -0
  14. package/dist/service/cloudfront/cache/sim-cf-cache-entry-key.d.ts +32 -0
  15. package/dist/service/cloudfront/cache/sim-cf-cache-entry-key.js +112 -0
  16. package/dist/service/cloudfront/cache/sim-cf-cache-status.d.ts +27 -0
  17. package/dist/service/cloudfront/cache/sim-cf-cache-status.js +53 -0
  18. package/dist/service/cloudfront/cache/sim-cf-cache-ttl.d.ts +28 -0
  19. package/dist/service/cloudfront/cache/sim-cf-cache-ttl.js +50 -0
  20. package/dist/service/cloudfront/cache/sim-cf-cacheable-request.d.ts +35 -0
  21. package/dist/service/cloudfront/cache/sim-cf-cacheable-request.js +32 -0
  22. package/dist/service/cloudfront/cache/sim-cf-distribution-cache.d.ts +57 -0
  23. package/dist/service/cloudfront/cache/sim-cf-distribution-cache.js +115 -0
  24. package/dist/service/cloudfront/cache/sim-cf-edge.d.ts +37 -0
  25. package/dist/service/cloudfront/cache/sim-cf-edge.js +34 -0
  26. package/dist/service/cloudfront/cache/sim-cf-error-cache-ttl.d.ts +36 -0
  27. package/dist/service/cloudfront/cache/sim-cf-error-cache-ttl.js +28 -0
  28. package/dist/service/cloudfront/cache/sim-cf-http-date.d.ts +15 -0
  29. package/dist/service/cloudfront/cache/sim-cf-http-date.js +40 -0
  30. package/dist/service/cloudfront/cache-policy/sim-cf-cache-key.d.ts +63 -0
  31. package/dist/service/cloudfront/cache-policy/sim-cf-cache-key.js +70 -0
  32. package/dist/service/cloudfront/cache-policy/sim-cf-cache-policy.d.ts +13 -3
  33. package/dist/service/cloudfront/cache-policy/sim-cf-cache-policy.js +31 -3
  34. package/dist/service/cloudfront/cache-policy/sim-cf-managed-cache-policies.d.ts +8 -3
  35. package/dist/service/cloudfront/cache-policy/sim-cf-managed-cache-policies.js +96 -12
  36. package/dist/service/cloudfront/cff/sim-cff-search-distribution.fixture.js +4 -0
  37. package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-config.d.ts +9 -8
  38. package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-config.js +40 -11
  39. package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-key.d.ts +10 -0
  40. package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-key.js +50 -0
  41. package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-section.d.ts +28 -0
  42. package/dist/service/cloudfront/cfn/cache-policy/sim-cfn-cf-cache-policy-section.js +29 -0
  43. package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-behavior-policy-kinds.d.ts +16 -0
  44. package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-behavior-policy-kinds.js +23 -0
  45. package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-behavior-policies.d.ts +3 -2
  46. package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-behavior-policies.js +3 -2
  47. package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-creator.d.ts +6 -6
  48. package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-creator.js +6 -6
  49. package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-policy-drops.js +8 -23
  50. package/dist/service/cloudfront/cfn/origin-request-policy/sim-cfn-cf-orp-config.d.ts +28 -0
  51. package/dist/service/cloudfront/cfn/origin-request-policy/sim-cfn-cf-orp-config.js +46 -0
  52. package/dist/service/cloudfront/cfn/origin-request-policy/sim-cfn-cf-orp-creator.d.ts +24 -0
  53. package/dist/service/cloudfront/cfn/origin-request-policy/sim-cfn-cf-orp-creator.js +32 -0
  54. package/dist/service/cloudfront/cfn/origin-request-policy/sim-cfn-cf-orp-forwarding.d.ts +10 -0
  55. package/dist/service/cloudfront/cfn/origin-request-policy/sim-cfn-cf-orp-forwarding.js +51 -0
  56. package/dist/service/cloudfront/cfn/policy/sim-cfn-cf-policy-section.d.ts +22 -0
  57. package/dist/service/cloudfront/cfn/policy/sim-cfn-cf-policy-section.js +54 -0
  58. package/dist/service/cloudfront/cfn/sim-cfn-cloudfront-resource-factory.d.ts +1 -0
  59. package/dist/service/cloudfront/cfn/sim-cfn-cloudfront-resource-factory.js +12 -0
  60. package/dist/service/cloudfront/command/create-distribution/create-distribution.command.d.ts +1 -0
  61. package/dist/service/cloudfront/command/create-distribution/create-distribution.handler.d.ts +2 -0
  62. package/dist/service/cloudfront/command/invalidation/sim-cf-create-invalidation.d.ts +28 -0
  63. package/dist/service/cloudfront/command/invalidation/sim-cf-create-invalidation.js +59 -0
  64. package/dist/service/cloudfront/command/invalidation/sim-cf-get-invalidation.d.ts +19 -0
  65. package/dist/service/cloudfront/command/invalidation/sim-cf-get-invalidation.js +32 -0
  66. package/dist/service/cloudfront/command/invalidation/sim-cf-invalidation-access.d.ts +36 -0
  67. package/dist/service/cloudfront/command/invalidation/sim-cf-invalidation-access.js +45 -0
  68. package/dist/service/cloudfront/command/invalidation/sim-cf-invalidation-command.types.d.ts +80 -0
  69. package/dist/service/cloudfront/command/invalidation/sim-cf-invalidation-command.types.js +1 -0
  70. package/dist/service/cloudfront/command/invalidation/sim-cf-invalidation-commands.d.ts +39 -0
  71. package/dist/service/cloudfront/command/invalidation/sim-cf-invalidation-commands.js +35 -0
  72. package/dist/service/cloudfront/command/invalidation/sim-cf-list-invalidations.d.ts +23 -0
  73. package/dist/service/cloudfront/command/invalidation/sim-cf-list-invalidations.js +39 -0
  74. package/dist/service/cloudfront/command/update-distribution/update-distribution.handler.d.ts +2 -0
  75. package/dist/service/cloudfront/controller/content/sim-cf-content-stage.d.ts +51 -0
  76. package/dist/service/cloudfront/controller/content/sim-cf-content-stage.js +65 -0
  77. package/dist/service/cloudfront/controller/dependency/sim-cf-controller-dependency.d.ts +2 -3
  78. package/dist/service/cloudfront/controller/dependency/sim-cf-controller-dependency.js +4 -4
  79. package/dist/service/cloudfront/controller/error/sim-cf-custom-error-responder.d.ts +4 -0
  80. package/dist/service/cloudfront/controller/error/sim-cf-custom-error-responder.js +12 -8
  81. package/dist/service/cloudfront/controller/origin/sim-cf-origin-stage.d.ts +2 -2
  82. package/dist/service/cloudfront/controller/origin/sim-cf-origin-stage.js +2 -2
  83. package/dist/service/cloudfront/controller/sim-cloudfront-request-pipeline.d.ts +6 -6
  84. package/dist/service/cloudfront/controller/sim-cloudfront-request-pipeline.js +35 -20
  85. package/dist/service/cloudfront/custom-error/sim-cloudfront-custom-error-response.d.ts +23 -5
  86. package/dist/service/cloudfront/custom-error/sim-cloudfront-custom-error-response.js +8 -0
  87. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-origin-request-policy.d.ts +18 -0
  88. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-origin-request-policy.js +30 -0
  89. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-policies.d.ts +7 -5
  90. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-policies.js +8 -5
  91. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-properties.js +4 -1
  92. package/dist/service/cloudfront/distribution/configurator/sim-cf-distribution-configurator.factory.d.ts +2 -0
  93. package/dist/service/cloudfront/distribution/configurator/sim-cf-distribution-configurator.factory.js +6 -2
  94. package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-custom-error-configurator.d.ts +13 -3
  95. package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-custom-error-configurator.js +27 -6
  96. package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-origin-configurator.d.ts +3 -1
  97. package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-origin-configurator.js +4 -1
  98. package/dist/service/cloudfront/distribution/sim-cf-distribution-configuration-state.d.ts +5 -3
  99. package/dist/service/cloudfront/distribution/sim-cf-distribution-reconfigurer.d.ts +2 -0
  100. package/dist/service/cloudfront/distribution/sim-cf-distribution-view.js +1 -1
  101. package/dist/service/cloudfront/distribution/sim-cloudfront-distribution.d.ts +25 -2
  102. package/dist/service/cloudfront/distribution/sim-cloudfront-distribution.js +24 -0
  103. package/dist/service/cloudfront/error/sim-cf-invalidation.error.d.ts +22 -0
  104. package/dist/service/cloudfront/error/sim-cf-invalidation.error.js +26 -0
  105. package/dist/service/cloudfront/error/sim-cf-origin-request-policy.error.d.ts +22 -0
  106. package/dist/service/cloudfront/error/sim-cf-origin-request-policy.error.js +26 -0
  107. package/dist/service/cloudfront/index.d.ts +2 -0
  108. package/dist/service/cloudfront/index.js +1 -0
  109. package/dist/service/cloudfront/invalidation/sim-cf-invalidation-path.d.ts +22 -0
  110. package/dist/service/cloudfront/invalidation/sim-cf-invalidation-path.js +32 -0
  111. package/dist/service/cloudfront/invalidation/sim-cf-invalidation-view.d.ts +43 -0
  112. package/dist/service/cloudfront/invalidation/sim-cf-invalidation-view.js +33 -0
  113. package/dist/service/cloudfront/invalidation/sim-cf-invalidation.d.ts +55 -0
  114. package/dist/service/cloudfront/invalidation/sim-cf-invalidation.js +56 -0
  115. package/dist/service/cloudfront/invalidation/sim-cf-invalidations.d.ts +41 -0
  116. package/dist/service/cloudfront/invalidation/sim-cf-invalidations.js +58 -0
  117. package/dist/service/cloudfront/invalidation/sim-cf-repeated-invalidation.d.ts +15 -0
  118. package/dist/service/cloudfront/invalidation/sim-cf-repeated-invalidation.js +23 -0
  119. package/dist/service/cloudfront/origin/custom/sim-cf-custom-origin-forwarding.d.ts +19 -0
  120. package/dist/service/cloudfront/origin/custom/sim-cf-custom-origin-forwarding.js +116 -0
  121. package/dist/service/cloudfront/origin/custom/sim-cf-custom-origin-request.d.ts +15 -5
  122. package/dist/service/cloudfront/origin/custom/sim-cf-custom-origin-request.js +13 -8
  123. package/dist/service/cloudfront/origin/custom/sim-cf-custom-origin-signer.js +8 -5
  124. package/dist/service/cloudfront/origin/custom/sim-cloudfront-custom-origin.d.ts +13 -0
  125. package/dist/service/cloudfront/origin/custom/sim-cloudfront-custom-origin.js +8 -0
  126. package/dist/service/cloudfront/origin-request-policy/sim-cf-behavior-forwarded.d.ts +24 -0
  127. package/dist/service/cloudfront/origin-request-policy/sim-cf-behavior-forwarded.js +21 -0
  128. package/dist/service/cloudfront/origin-request-policy/sim-cf-forwarded-to-origin.d.ts +57 -0
  129. package/dist/service/cloudfront/origin-request-policy/sim-cf-forwarded-to-origin.js +129 -0
  130. package/dist/service/cloudfront/origin-request-policy/sim-cf-managed-origin-request-policies.d.ts +30 -0
  131. package/dist/service/cloudfront/origin-request-policy/sim-cf-managed-origin-request-policies.js +121 -0
  132. package/dist/service/cloudfront/origin-request-policy/sim-cf-origin-request-forwarding.d.ts +56 -0
  133. package/dist/service/cloudfront/origin-request-policy/sim-cf-origin-request-forwarding.js +67 -0
  134. package/dist/service/cloudfront/origin-request-policy/sim-cf-origin-request-policy-registry.d.ts +38 -0
  135. package/dist/service/cloudfront/origin-request-policy/sim-cf-origin-request-policy-registry.js +51 -0
  136. package/dist/service/cloudfront/origin-request-policy/sim-cf-origin-request-policy.d.ts +32 -0
  137. package/dist/service/cloudfront/origin-request-policy/sim-cf-origin-request-policy.js +30 -0
  138. package/dist/service/cloudfront/registry/sim-cloud-front-registry.d.ts +25 -0
  139. package/dist/service/cloudfront/registry/sim-cloud-front-registry.js +23 -0
  140. package/dist/service/cloudfront/sdk/sim-cloudfront-sdk-command-router.js +12 -0
  141. package/dist/service/cloudfront/sim-cloudfront-caching.d.ts +31 -0
  142. package/dist/service/cloudfront/sim-cloudfront-caching.js +38 -0
  143. package/dist/service/cloudfront/sim-cloudfront-commands.d.ts +12 -0
  144. package/dist/service/cloudfront/sim-cloudfront-commands.js +12 -0
  145. package/dist/service/cloudfront/sim-cloudfront-distributions.d.ts +21 -0
  146. package/dist/service/cloudfront/sim-cloudfront-distributions.js +23 -0
  147. package/dist/service/cloudfront/sim-cloudfront-origin-access-controls.d.ts +30 -0
  148. package/dist/service/cloudfront/sim-cloudfront-origin-access-controls.js +35 -0
  149. package/dist/service/cloudfront/sim-cloudfront-policies.d.ts +22 -5
  150. package/dist/service/cloudfront/sim-cloudfront-policies.js +27 -5
  151. package/dist/service/cloudfront/sim-cloudfront.d.ts +15 -31
  152. package/dist/service/cloudfront/sim-cloudfront.js +23 -41
  153. package/dist/service/iam/authorize/allow/sim-iam-allow-requirement.d.ts +6 -5
  154. package/dist/service/iam/authorize/allow/sim-iam-allow-requirement.js +6 -5
  155. package/dist/service/iam/authorize/context/sim-iam-auth-z-input.d.ts +6 -4
  156. package/dist/service/kms/command/sim-kms-request-options.d.ts +9 -5
  157. package/dist/service/logs/command/delivery/sim-logs-delivery-source-commands.d.ts +6 -4
  158. package/dist/service/logs/command/delivery/sim-logs-delivery-source-commands.js +13 -4
  159. package/dist/service/logs/delivery/cloudfront/sim-logs-vended-log-delivery.d.ts +23 -0
  160. package/dist/service/logs/delivery/cloudfront/sim-logs-vended-log-delivery.js +28 -0
  161. package/dist/service/ssm/parameter/sim-ssm-kms-crypto.d.ts +7 -10
  162. package/dist/service/ssm/parameter/sim-ssm-parameter-kms.d.ts +10 -11
  163. package/dist/service/ssm/parameter/sim-ssm-parameter-kms.js +11 -16
  164. package/docs/services/athena/README.md +7 -1
  165. package/docs/services/cloudformation/README.md +2 -1
  166. package/docs/services/cloudfront/README.md +903 -25
  167. package/docs/services/ecs/README.md +5 -2
  168. package/docs/services/kms/README.md +9 -5
  169. package/docs/services/logs/README.md +6 -0
  170. package/docs/services/ssm/README.md +26 -33
  171. package/package.json +1 -1
@@ -1,17 +1,19 @@
1
1
  import type { SimCloudFrontCacheBehaviorConfig, SimCloudFrontDefaultCacheBehaviorConfig, SimCloudFrontDistributionConfig } from "../../command/create-distribution/create-distribution.command.js";
2
2
  import type { SimCfBehaviorCachePolicy } from "./sim-cf-behavior-cache-policy.js";
3
+ import type { SimCfBehaviorOriginRequestPolicy } from "./sim-cf-behavior-origin-request-policy.js";
3
4
  import type { SimCfBehaviorResponseHeadersPolicy } from "./sim-cf-behavior-response-headers-policy.js";
4
5
  /**
5
6
  * The policies a Cache Behavior names, and whether this simulation holds them.
6
7
  *
7
- * A Behavior points at a response headers policy and a cache policy by ID, and
8
- * both live outside the Distribution. Each one is checked the same way and at
9
- * the same moment, so they are asked together.
8
+ * A Behavior points at a response headers policy, a cache policy and an origin
9
+ * request policy by ID, and all three live outside the Distribution. Each one
10
+ * is checked the same way and at the same moment, so they are asked together.
10
11
  */
11
12
  export declare class SimCfBehaviorPolicies {
12
13
  private readonly responseHeadersPolicy;
13
14
  private readonly cachePolicy;
14
- constructor(responseHeadersPolicy: SimCfBehaviorResponseHeadersPolicy, cachePolicy: SimCfBehaviorCachePolicy);
15
+ private readonly originRequestPolicy;
16
+ constructor(responseHeadersPolicy: SimCfBehaviorResponseHeadersPolicy, cachePolicy: SimCfBehaviorCachePolicy, originRequestPolicy: SimCfBehaviorOriginRequestPolicy);
15
17
  /**
16
18
  * Refuse every Behavior of a DistributionConfig that names a policy which is
17
19
  * not there, without touching the Distribution.
@@ -22,7 +24,7 @@ export declare class SimCfBehaviorPolicies {
22
24
  */
23
25
  assertAllExist(distributionConfig: SimCloudFrontDistributionConfig): void;
24
26
  /**
25
- * Refuse one Behavior naming a policy of either kind which is not there.
27
+ * Refuse one Behavior naming a policy of any kind which is not there.
26
28
  */
27
29
  assertExists(behavior: SimCloudFrontDefaultCacheBehaviorConfig | SimCloudFrontCacheBehaviorConfig): void;
28
30
  }
@@ -1,16 +1,18 @@
1
1
  /**
2
2
  * The policies a Cache Behavior names, and whether this simulation holds them.
3
3
  *
4
- * A Behavior points at a response headers policy and a cache policy by ID, and
5
- * both live outside the Distribution. Each one is checked the same way and at
6
- * the same moment, so they are asked together.
4
+ * A Behavior points at a response headers policy, a cache policy and an origin
5
+ * request policy by ID, and all three live outside the Distribution. Each one
6
+ * is checked the same way and at the same moment, so they are asked together.
7
7
  */
8
8
  export class SimCfBehaviorPolicies {
9
9
  responseHeadersPolicy;
10
10
  cachePolicy;
11
- constructor(responseHeadersPolicy, cachePolicy) {
11
+ originRequestPolicy;
12
+ constructor(responseHeadersPolicy, cachePolicy, originRequestPolicy) {
12
13
  this.responseHeadersPolicy = responseHeadersPolicy;
13
14
  this.cachePolicy = cachePolicy;
15
+ this.originRequestPolicy = originRequestPolicy;
14
16
  }
15
17
  /**
16
18
  * Refuse every Behavior of a DistributionConfig that names a policy which is
@@ -32,10 +34,11 @@ export class SimCfBehaviorPolicies {
32
34
  }
33
35
  }
34
36
  /**
35
- * Refuse one Behavior naming a policy of either kind which is not there.
37
+ * Refuse one Behavior naming a policy of any kind which is not there.
36
38
  */
37
39
  assertExists(behavior) {
38
40
  this.responseHeadersPolicy.assertExists(behavior.TargetOriginId, behavior.ResponseHeadersPolicyId);
39
41
  this.cachePolicy.assertExists(behavior.TargetOriginId, behavior.CachePolicyId);
42
+ this.originRequestPolicy.assertExists(behavior.TargetOriginId, behavior.OriginRequestPolicyId);
40
43
  }
41
44
  }
@@ -7,7 +7,7 @@ import { assertConsistentQuantity } from "../../command/sim-cf-list-quantity.js"
7
7
  * a named one. Callers add their own fields, such as the path pattern, on top.
8
8
  */
9
9
  export function simCfBehaviorProperties(cacheBehavior, policies) {
10
- const { TargetOriginId, ResponseHeadersPolicyId, CachePolicyId } = cacheBehavior;
10
+ const { TargetOriginId, ResponseHeadersPolicyId, CachePolicyId, OriginRequestPolicyId, } = cacheBehavior;
11
11
  assertDefined(TargetOriginId, "CloudFront CacheBehavior TargetOriginId");
12
12
  policies.assertExists(cacheBehavior);
13
13
  return {
@@ -26,6 +26,9 @@ export function simCfBehaviorProperties(cacheBehavior, policies) {
26
26
  ...(CachePolicyId !== undefined && {
27
27
  cachePolicyId: CachePolicyId,
28
28
  }),
29
+ ...(OriginRequestPolicyId !== undefined && {
30
+ originRequestPolicyId: OriginRequestPolicyId,
31
+ }),
29
32
  functionAssociations: configureCffAssociations(cacheBehavior),
30
33
  lambdaFunctionAssociations: configureEdgeAssociations(cacheBehavior),
31
34
  };
@@ -2,6 +2,7 @@ import type { SimCloudFrontCachePolicyRegistry } from "../../cache-policy/sim-cf
2
2
  import type { SimCfCustomOriginDispatcher } from "../../origin/custom/sim-cf-custom-origin-dispatcher.js";
3
3
  import type { SimCloudFrontS3OriginResolver } from "../../origin/s3/sim-cloudfront-s3-origin.js";
4
4
  import type { SimCloudFrontOriginAccessControlRegistry } from "../../origin-access-control/sim-cf-origin-access-control-registry.js";
5
+ import type { SimCloudFrontOriginRequestPolicyRegistry } from "../../origin-request-policy/sim-cf-origin-request-policy-registry.js";
5
6
  import type { SimCloudFrontResponseHeadersPolicyRegistry } from "../../response-headers-policy/sim-cf-response-headers-policy-registry.js";
6
7
  import type { SimCfWebAclResolver } from "../../web-acl/sim-cf-web-acl.js";
7
8
  import { SimCloudFrontDistributionConfigurator } from "./sim-cloud-front-distribution-configurator.js";
@@ -11,6 +12,7 @@ interface SimCloudFrontConfiguratorProperties {
11
12
  readonly originAccessControls: SimCloudFrontOriginAccessControlRegistry;
12
13
  readonly responseHeadersPolicies: SimCloudFrontResponseHeadersPolicyRegistry;
13
14
  readonly cachePolicies: SimCloudFrontCachePolicyRegistry;
15
+ readonly originRequestPolicies: SimCloudFrontOriginRequestPolicyRegistry;
14
16
  readonly webAclResolver?: SimCfWebAclResolver | undefined;
15
17
  }
16
18
  /**
@@ -1,5 +1,6 @@
1
1
  import { SimCfDistributionWebAcl } from "../../web-acl/sim-cf-distribution-web-acl.js";
2
2
  import { SimCfBehaviorCachePolicy } from "./sim-cf-behavior-cache-policy.js";
3
+ import { SimCfBehaviorOriginRequestPolicy } from "./sim-cf-behavior-origin-request-policy.js";
3
4
  import { SimCfBehaviorPolicies } from "./sim-cf-behavior-policies.js";
4
5
  import { SimCfBehaviorResponseHeadersPolicy } from "./sim-cf-behavior-response-headers-policy.js";
5
6
  import { SimCloudFrontBehaviorConfigurator } from "./sim-cloud-front-behavior-configurator.js";
@@ -12,6 +13,9 @@ import { SimCloudFrontOriginConfigurator } from "./sim-cloud-front-origin-config
12
13
  * same set of configurators.
13
14
  */
14
15
  export function makeSimCloudFrontDistributionConfigurator(properties) {
15
- const behaviorPolicies = new SimCfBehaviorPolicies(new SimCfBehaviorResponseHeadersPolicy(properties.responseHeadersPolicies), new SimCfBehaviorCachePolicy(properties.cachePolicies));
16
- return new SimCloudFrontDistributionConfigurator(new SimCloudFrontOriginConfigurator(properties.s3OriginResolver, properties.originAccessControls, properties.customOriginDispatcher), new SimCloudFrontBehaviorConfigurator(behaviorPolicies), behaviorPolicies, new SimCfDistributionWebAcl(properties.webAclResolver));
16
+ const behaviorPolicies = new SimCfBehaviorPolicies(new SimCfBehaviorResponseHeadersPolicy(properties.responseHeadersPolicies), new SimCfBehaviorCachePolicy(properties.cachePolicies), new SimCfBehaviorOriginRequestPolicy(properties.originRequestPolicies));
17
+ return new SimCloudFrontDistributionConfigurator(new SimCloudFrontOriginConfigurator(properties.s3OriginResolver, properties.originAccessControls, {
18
+ cachePolicies: properties.cachePolicies,
19
+ originRequestPolicies: properties.originRequestPolicies,
20
+ }, properties.customOriginDispatcher), new SimCloudFrontBehaviorConfigurator(behaviorPolicies), behaviorPolicies, new SimCfDistributionWebAcl(properties.webAclResolver));
17
21
  }
@@ -4,15 +4,25 @@ import type { SimCloudFrontDistribution } from "../sim-cloudfront-distribution.j
4
4
  * Applies custom error response configuration to a sim CloudFront
5
5
  * Distribution.
6
6
  *
7
- * CloudFront pairs `ResponsePagePath` and `ResponseCode`: a rule carrying one
7
+ * CloudFront pairs `ResponsePagePath` and `ResponseCode`. A rule carrying one
8
8
  * without the other is refused rather than half applied. A rule carrying
9
- * neither only configures error caching, which this simulator does not model,
10
- * so it is accepted and left out of the Distribution's request handling.
9
+ * neither configures error caching alone, and it reaches the Distribution with
10
+ * no page for the viewer to be sent.
11
11
  */
12
12
  export declare class SimCloudFrontCustomErrorConfigurator {
13
13
  /**
14
14
  * Configure one custom error response on a Distribution.
15
15
  */
16
16
  configure(distribution: SimCloudFrontDistribution, customErrorResponse: SimCloudFrontCustomErrorResponseConfig): void;
17
+ /**
18
+ * How long the rule holds its error for, which CloudFront defaults to ten
19
+ * seconds.
20
+ *
21
+ * A template can write a number as a string, and that one is read as the
22
+ * seconds it spells. Anything else falls back to the default. The
23
+ * alternative would be a stack that fails to deploy over the seconds an
24
+ * error is held for.
25
+ */
26
+ private errorCachingMinTtlSec;
17
27
  private responseCode;
18
28
  }
@@ -1,13 +1,13 @@
1
- import { simCloudFrontCustomErrorCodes, simCloudFrontCustomErrorResponseCodes, } from "../../custom-error/sim-cloudfront-custom-error-response.js";
1
+ import { simCloudFrontCustomErrorCodes, simCloudFrontCustomErrorResponseCodes, simCloudFrontDefaultErrorCachingMinTtlSec, } from "../../custom-error/sim-cloudfront-custom-error-response.js";
2
2
  import { SimCloudFrontInvalidArgument, SimCloudFrontInvalidErrorCode, SimCloudFrontInvalidResponseCode, } from "../../error/sim-cloudfront.error.js";
3
3
  /**
4
4
  * Applies custom error response configuration to a sim CloudFront
5
5
  * Distribution.
6
6
  *
7
- * CloudFront pairs `ResponsePagePath` and `ResponseCode`: a rule carrying one
7
+ * CloudFront pairs `ResponsePagePath` and `ResponseCode`. A rule carrying one
8
8
  * without the other is refused rather than half applied. A rule carrying
9
- * neither only configures error caching, which this simulator does not model,
10
- * so it is accepted and left out of the Distribution's request handling.
9
+ * neither configures error caching alone, and it reaches the Distribution with
10
+ * no page for the viewer to be sent.
11
11
  */
12
12
  export class SimCloudFrontCustomErrorConfigurator {
13
13
  /**
@@ -21,10 +21,12 @@ export class SimCloudFrontCustomErrorConfigurator {
21
21
  }
22
22
  const responsePagePath = customErrorResponse.ResponsePagePath;
23
23
  const responseCode = this.responseCode(customErrorResponse.ResponseCode);
24
+ const errorCachingMinTtlSec = this.errorCachingMinTtlSec(customErrorResponse.ErrorCachingMinTTL);
24
25
  if (responsePagePath === undefined || responsePagePath === "") {
25
26
  if (responseCode !== undefined) {
26
27
  throw new SimCloudFrontInvalidArgument(`CloudFront CustomErrorResponse for ${String(errorCode)} has a ResponseCode without a ResponsePagePath`);
27
28
  }
29
+ distribution.addCustomErrorResponse({ errorCode, errorCachingMinTtlSec });
28
30
  return;
29
31
  }
30
32
  if (responseCode === undefined) {
@@ -35,10 +37,29 @@ export class SimCloudFrontCustomErrorConfigurator {
35
37
  }
36
38
  distribution.addCustomErrorResponse({
37
39
  errorCode,
38
- responsePagePath,
39
- responseCode,
40
+ errorCachingMinTtlSec,
41
+ page: { responsePagePath, responseCode },
40
42
  });
41
43
  }
44
+ /**
45
+ * How long the rule holds its error for, which CloudFront defaults to ten
46
+ * seconds.
47
+ *
48
+ * A template can write a number as a string, and that one is read as the
49
+ * seconds it spells. Anything else falls back to the default. The
50
+ * alternative would be a stack that fails to deploy over the seconds an
51
+ * error is held for.
52
+ */
53
+ errorCachingMinTtlSec(errorCachingMinTtl) {
54
+ const seconds = typeof errorCachingMinTtl === "string" && errorCachingMinTtl.trim() !== ""
55
+ ? Number(errorCachingMinTtl)
56
+ : errorCachingMinTtl;
57
+ return typeof seconds === "number" &&
58
+ Number.isFinite(seconds) &&
59
+ seconds >= 0
60
+ ? seconds
61
+ : simCloudFrontDefaultErrorCachingMinTtlSec;
62
+ }
42
63
  responseCode(responseCode) {
43
64
  if (responseCode === undefined || responseCode === "") {
44
65
  return undefined;
@@ -3,6 +3,7 @@ import type { SimCloudFrontDistribution } from "../sim-cloudfront-distribution.j
3
3
  import { type SimCloudFrontS3OriginResolver } from "../../origin/s3/sim-cloudfront-s3-origin.js";
4
4
  import type { SimCfCustomOriginDispatcher } from "../../origin/custom/sim-cf-custom-origin-dispatcher.js";
5
5
  import type { SimCloudFrontOriginAccessControlRegistry } from "../../origin-access-control/sim-cf-origin-access-control-registry.js";
6
+ import type { SimCfBehaviorPolicyRegistries } from "../../origin-request-policy/sim-cf-behavior-forwarded.js";
6
7
  /**
7
8
  * Applies Origin configuration to a sim CloudFront Distribution.
8
9
  *
@@ -16,8 +17,9 @@ import type { SimCloudFrontOriginAccessControlRegistry } from "../../origin-acce
16
17
  export declare class SimCloudFrontOriginConfigurator {
17
18
  private readonly s3OriginResolver;
18
19
  private readonly originAccessControls;
20
+ private readonly policies;
19
21
  private readonly customOriginDispatcher?;
20
- constructor(s3OriginResolver: SimCloudFrontS3OriginResolver, originAccessControls: SimCloudFrontOriginAccessControlRegistry, customOriginDispatcher?: SimCfCustomOriginDispatcher | undefined);
22
+ constructor(s3OriginResolver: SimCloudFrontS3OriginResolver, originAccessControls: SimCloudFrontOriginAccessControlRegistry, policies: SimCfBehaviorPolicyRegistries, customOriginDispatcher?: SimCfCustomOriginDispatcher | undefined);
21
23
  /**
22
24
  * Configure an Origin on a Distribution.
23
25
  */
@@ -18,10 +18,12 @@ import { simCfOriginCustomHeaders } from "../../origin/sim-cf-origin-custom-head
18
18
  export class SimCloudFrontOriginConfigurator {
19
19
  s3OriginResolver;
20
20
  originAccessControls;
21
+ policies;
21
22
  customOriginDispatcher;
22
- constructor(s3OriginResolver, originAccessControls, customOriginDispatcher) {
23
+ constructor(s3OriginResolver, originAccessControls, policies, customOriginDispatcher) {
23
24
  this.s3OriginResolver = s3OriginResolver;
24
25
  this.originAccessControls = originAccessControls;
26
+ this.policies = policies;
25
27
  this.customOriginDispatcher = customOriginDispatcher;
26
28
  }
27
29
  /**
@@ -61,6 +63,7 @@ export class SimCloudFrontOriginConfigurator {
61
63
  originPath: origin.OriginPath,
62
64
  dispatcher: this.customOriginDispatcher,
63
65
  customHeaders,
66
+ policies: this.policies,
64
67
  ...(originAccessControl !== undefined && { originAccessControl }),
65
68
  }));
66
69
  return;
@@ -3,6 +3,7 @@ import type { SimCloudFrontCachePolicyRegistry } from "../cache-policy/sim-cf-ca
3
3
  import type { SimCfCustomOriginDispatcher } from "../origin/custom/sim-cf-custom-origin-dispatcher.js";
4
4
  import type { SimCloudFrontS3OriginResolver } from "../origin/s3/sim-cloudfront-s3-origin.js";
5
5
  import type { SimCloudFrontOriginAccessControlRegistry } from "../origin-access-control/sim-cf-origin-access-control-registry.js";
6
+ import type { SimCloudFrontOriginRequestPolicyRegistry } from "../origin-request-policy/sim-cf-origin-request-policy-registry.js";
6
7
  import type { SimCloudFrontResponseHeadersPolicyRegistry } from "../response-headers-policy/sim-cf-response-headers-policy-registry.js";
7
8
  import type { SimCfWebAclResolver } from "../web-acl/sim-cf-web-acl.js";
8
9
  import type { SimCfEdgeFunctions } from "../edge/sim-cf-edge-functions.js";
@@ -12,9 +13,9 @@ import type { SimCfEdgeFunctions } from "../edge/sim-cf-edge-functions.js";
12
13
  *
13
14
  * A DistributionConfig is mostly references: a Bucket or a hostname per
14
15
  * Origin, a certificate, an origin access control, a response headers policy,
15
- * a cache policy, a web ACL, a Lambda@Edge function version. None of them belongs to
16
- * CloudFront, and creation and update resolve every one of them the same way,
17
- * so they travel together.
16
+ * a cache policy, an origin request policy, a web ACL, a Lambda@Edge function
17
+ * version. None of them belongs to CloudFront, and creation and update resolve
18
+ * every one of them the same way, so they travel together.
18
19
  */
19
20
  export interface SimCfDistributionConfigurationState {
20
21
  readonly s3OriginResolver: SimCloudFrontS3OriginResolver;
@@ -23,6 +24,7 @@ export interface SimCfDistributionConfigurationState {
23
24
  readonly originAccessControls: SimCloudFrontOriginAccessControlRegistry;
24
25
  readonly responseHeadersPolicies: SimCloudFrontResponseHeadersPolicyRegistry;
25
26
  readonly cachePolicies: SimCloudFrontCachePolicyRegistry;
27
+ readonly originRequestPolicies: SimCloudFrontOriginRequestPolicyRegistry;
26
28
  readonly webAclResolver: SimCfWebAclResolver | undefined;
27
29
  readonly edgeFunctions: SimCfEdgeFunctions | undefined;
28
30
  }
@@ -3,6 +3,7 @@ import type { SimCloudFrontCachePolicyRegistry } from "../cache-policy/sim-cf-ca
3
3
  import type { SimCfCustomOriginDispatcher } from "../origin/custom/sim-cf-custom-origin-dispatcher.js";
4
4
  import type { SimCloudFrontS3OriginResolver } from "../origin/s3/sim-cloudfront-s3-origin.js";
5
5
  import type { SimCloudFrontOriginAccessControlRegistry } from "../origin-access-control/sim-cf-origin-access-control-registry.js";
6
+ import type { SimCloudFrontOriginRequestPolicyRegistry } from "../origin-request-policy/sim-cf-origin-request-policy-registry.js";
6
7
  import type { SimCloudFrontResponseHeadersPolicyRegistry } from "../response-headers-policy/sim-cf-response-headers-policy-registry.js";
7
8
  import type { SimCloudFrontRegistry } from "../registry/sim-cloud-front-registry.js";
8
9
  import type { SimCfWebAclResolver } from "../web-acl/sim-cf-web-acl.js";
@@ -14,6 +15,7 @@ interface SimCloudFrontDistributionReconfigurerProperties {
14
15
  readonly originAccessControls: SimCloudFrontOriginAccessControlRegistry;
15
16
  readonly responseHeadersPolicies: SimCloudFrontResponseHeadersPolicyRegistry;
16
17
  readonly cachePolicies: SimCloudFrontCachePolicyRegistry;
18
+ readonly originRequestPolicies: SimCloudFrontOriginRequestPolicyRegistry;
17
19
  readonly webAclResolver?: SimCfWebAclResolver | undefined;
18
20
  }
19
21
  /**
@@ -7,7 +7,7 @@ export function simCloudFrontDistributionView(distribution) {
7
7
  ARN: simCloudFrontDistributionArn(distribution),
8
8
  Status: distribution.status,
9
9
  LastModifiedTime: distribution.lastModifiedTime,
10
- InProgressInvalidationBatches: 0,
10
+ InProgressInvalidationBatches: distribution.invalidations.inProgressCount,
11
11
  DomainName: `${distribution.distributionId.toLowerCase()}.cloudfront.net`,
12
12
  DistributionConfig: distribution.distributionConfig,
13
13
  };
@@ -6,6 +6,8 @@ import type { SimCloudFrontCustomErrorResponse } from "../custom-error/sim-cloud
6
6
  import { type SimAwsAccountId } from "../../aws/sim-aws-account.js";
7
7
  import type { SimCloudFrontDistributionConfig } from "../command/create-distribution/create-distribution.command.js";
8
8
  import { type SimClock } from "../../../util/clock/sim-clock.js";
9
+ import { SimCfDistributionCache } from "../cache/sim-cf-distribution-cache.js";
10
+ import { SimCfInvalidations } from "../invalidation/sim-cf-invalidations.js";
9
11
  export type SimCloudFrontDistributionId = Brand<string, "SimCloudFrontDistributionId">;
10
12
  export type SimCloudFrontDistributionStatus = "Deploying" | "Deployed";
11
13
  interface SimCloudFrontDistributionProperties {
@@ -14,8 +16,9 @@ interface SimCloudFrontDistributionProperties {
14
16
  readonly accountId?: SimAwsAccountId;
15
17
  readonly distributionConfig?: SimCloudFrontDistributionConfig;
16
18
  /**
17
- * Clock stamping this Distribution's last modified time. A Distribution built
18
- * standalone, outside a SimAws instance, falls back to the real clock.
19
+ * Clock stamping this Distribution's last modified time and expiring what its
20
+ * cache holds. A Distribution built standalone, outside a SimAws instance,
21
+ * falls back to the real clock.
19
22
  */
20
23
  readonly clock?: SimClock;
21
24
  }
@@ -29,6 +32,26 @@ export declare class SimCloudFrontDistribution {
29
32
  readonly behaviors: SimCloudFrontBehavior[];
30
33
  readonly customErrorResponses: SimCloudFrontCustomErrorResponse[];
31
34
  readonly lastModifiedTime: Date;
35
+ /**
36
+ * The clock this Distribution reads, which its cache expires on.
37
+ */
38
+ readonly clock: SimClock;
39
+ /**
40
+ * What this Distribution has cached, keyed by cache key.
41
+ *
42
+ * A configuration update leaves it alone, as it leaves a real
43
+ * Distribution's cached objects alone: an object cached under the old
44
+ * configuration is served until it expires or something removes it.
45
+ */
46
+ readonly cache: SimCfDistributionCache;
47
+ /**
48
+ * The invalidations this Distribution has been asked for.
49
+ *
50
+ * They outlive a configuration update, as the cache does, since an
51
+ * invalidation is a record of what was cleared rather than part of the
52
+ * Distribution's configuration.
53
+ */
54
+ readonly invalidations: SimCfInvalidations;
32
55
  private readonly alternateDomainNames;
33
56
  private readonly origins;
34
57
  constructor(properties?: SimCloudFrontDistributionProperties);
@@ -2,6 +2,8 @@ import { faker } from "@faker-js/faker";
2
2
  import { makeSimAwsAccountId, } from "../../aws/sim-aws-account.js";
3
3
  import { SimRealClock } from "../../../util/clock/sim-clock.js";
4
4
  import { SimCloudFrontDistributionNotDisabled } from "../error/sim-cloudfront.error.js";
5
+ import { SimCfDistributionCache } from "../cache/sim-cf-distribution-cache.js";
6
+ import { SimCfInvalidations } from "../invalidation/sim-cf-invalidations.js";
5
7
  /**
6
8
  * Simulated CloudFront Distribution.
7
9
  */
@@ -11,6 +13,26 @@ export class SimCloudFrontDistribution {
11
13
  behaviors = [];
12
14
  customErrorResponses = [];
13
15
  lastModifiedTime;
16
+ /**
17
+ * The clock this Distribution reads, which its cache expires on.
18
+ */
19
+ clock;
20
+ /**
21
+ * What this Distribution has cached, keyed by cache key.
22
+ *
23
+ * A configuration update leaves it alone, as it leaves a real
24
+ * Distribution's cached objects alone: an object cached under the old
25
+ * configuration is served until it expires or something removes it.
26
+ */
27
+ cache;
28
+ /**
29
+ * The invalidations this Distribution has been asked for.
30
+ *
31
+ * They outlive a configuration update, as the cache does, since an
32
+ * invalidation is a record of what was cleared rather than part of the
33
+ * Distribution's configuration.
34
+ */
35
+ invalidations = new SimCfInvalidations();
14
36
  #status;
15
37
  #distributionConfig;
16
38
  #enabled;
@@ -21,6 +43,8 @@ export class SimCloudFrontDistribution {
21
43
  origins = new Map();
22
44
  constructor(properties = {}) {
23
45
  const { distributionId = makeDistributionId(), status = "Deployed", accountId = makeSimAwsAccountId(), distributionConfig, clock = new SimRealClock(), } = properties;
46
+ this.clock = clock;
47
+ this.cache = new SimCfDistributionCache(clock);
24
48
  this.lastModifiedTime = clock.now();
25
49
  this.distributionId = distributionId;
26
50
  this.#status = status;
@@ -0,0 +1,22 @@
1
+ import { SimCloudFrontError } from "./sim-cloudfront.error.js";
2
+ /**
3
+ * Simulated CloudFront NoSuchInvalidation error.
4
+ *
5
+ * What CloudFront answers when an invalidation ID names nothing on the
6
+ * Distribution it was asked for.
7
+ */
8
+ export declare class SimCloudFrontNoSuchInvalidation extends SimCloudFrontError {
9
+ readonly name = "NoSuchInvalidation";
10
+ constructor(message: string);
11
+ }
12
+ /**
13
+ * Simulated CloudFront InvalidationBatchAlreadyExists error.
14
+ *
15
+ * A `CallerReference` makes an invalidation batch idempotent. Repeating one
16
+ * with the paths it was created with answers with that invalidation, and
17
+ * repeating it with different paths is refused rather than clearing anything.
18
+ */
19
+ export declare class SimCloudFrontInvalidationBatchAlreadyExists extends SimCloudFrontError {
20
+ readonly name = "InvalidationBatchAlreadyExists";
21
+ constructor(message: string);
22
+ }
@@ -0,0 +1,26 @@
1
+ import { SimCloudFrontError } from "./sim-cloudfront.error.js";
2
+ /**
3
+ * Simulated CloudFront NoSuchInvalidation error.
4
+ *
5
+ * What CloudFront answers when an invalidation ID names nothing on the
6
+ * Distribution it was asked for.
7
+ */
8
+ export class SimCloudFrontNoSuchInvalidation extends SimCloudFrontError {
9
+ name = "NoSuchInvalidation";
10
+ constructor(message) {
11
+ super(message, { httpStatusCode: 404 });
12
+ }
13
+ }
14
+ /**
15
+ * Simulated CloudFront InvalidationBatchAlreadyExists error.
16
+ *
17
+ * A `CallerReference` makes an invalidation batch idempotent. Repeating one
18
+ * with the paths it was created with answers with that invalidation, and
19
+ * repeating it with different paths is refused rather than clearing anything.
20
+ */
21
+ export class SimCloudFrontInvalidationBatchAlreadyExists extends SimCloudFrontError {
22
+ name = "InvalidationBatchAlreadyExists";
23
+ constructor(message) {
24
+ super(message, { httpStatusCode: 409 });
25
+ }
26
+ }
@@ -0,0 +1,22 @@
1
+ import { SimCloudFrontError } from "./sim-cloudfront.error.js";
2
+ /**
3
+ * Simulated CloudFront NoSuchOriginRequestPolicy error.
4
+ *
5
+ * What CloudFront answers when a Behavior's `OriginRequestPolicyId` names no
6
+ * origin request policy the account holds, at Distribution create or update
7
+ * time rather than when a request first needs the policy.
8
+ */
9
+ export declare class SimCloudFrontNoSuchOriginRequestPolicy extends SimCloudFrontError {
10
+ readonly name = "NoSuchOriginRequestPolicy";
11
+ constructor(message: string);
12
+ }
13
+ /**
14
+ * Simulated CloudFront OriginRequestPolicyAlreadyExists error.
15
+ *
16
+ * CloudFront requires an origin request policy name to be unique within an
17
+ * account, so a second policy claiming a name is refused rather than created.
18
+ */
19
+ export declare class SimCloudFrontOriginRequestPolicyAlreadyExists extends SimCloudFrontError {
20
+ readonly name = "OriginRequestPolicyAlreadyExists";
21
+ constructor(message: string);
22
+ }
@@ -0,0 +1,26 @@
1
+ import { SimCloudFrontError } from "./sim-cloudfront.error.js";
2
+ /**
3
+ * Simulated CloudFront NoSuchOriginRequestPolicy error.
4
+ *
5
+ * What CloudFront answers when a Behavior's `OriginRequestPolicyId` names no
6
+ * origin request policy the account holds, at Distribution create or update
7
+ * time rather than when a request first needs the policy.
8
+ */
9
+ export class SimCloudFrontNoSuchOriginRequestPolicy extends SimCloudFrontError {
10
+ name = "NoSuchOriginRequestPolicy";
11
+ constructor(message) {
12
+ super(message, { httpStatusCode: 404 });
13
+ }
14
+ }
15
+ /**
16
+ * Simulated CloudFront OriginRequestPolicyAlreadyExists error.
17
+ *
18
+ * CloudFront requires an origin request policy name to be unique within an
19
+ * account, so a second policy claiming a name is refused rather than created.
20
+ */
21
+ export class SimCloudFrontOriginRequestPolicyAlreadyExists extends SimCloudFrontError {
22
+ name = "OriginRequestPolicyAlreadyExists";
23
+ constructor(message) {
24
+ super(message, { httpStatusCode: 409 });
25
+ }
26
+ }
@@ -4,6 +4,8 @@ export { cloudFrontFunctionSourceFromModule } from "./cff/function-code-module/c
4
4
  export type { CloudFrontFunction } from "./typings/cloudfront-functions.namespace.js";
5
5
  export type { LambdaAtEdge } from "./typings/lambda-at-edge.namespace.js";
6
6
  export type { SimCfRedundantOrigin } from "./origin/sim-cf-redundant-origins.js";
7
+ export { simCfDefaultEdgeId, simCfEdgeHeaderName, } from "./cache/sim-cf-edge.js";
8
+ export type { SimCfCachingConfiguration } from "./registry/sim-cloud-front-registry.js";
7
9
  export type { SimCloudFrontKeyValueStoreApi } from "./sim-cloudfront-key-value-store.js";
8
10
  export type { SimCfKeyValueStoreCommands } from "./key-value-store/sim-cf-key-value-store-commands.js";
9
11
  export type { SimCloudFrontKeyValueStore, SimCloudFrontKeyValueStoreId, SimCloudFrontKeyValueStoreStatus, } from "./key-value-store/sim-cf-key-value-store.js";
@@ -1,3 +1,4 @@
1
1
  export { makeCffFunctionCodeInput } from "./cff/function-code-input/cff-function-code-input.js";
2
2
  export { cloudFrontViewerRequestEventFactory, cloudFrontViewerResponseEventFactory, } from "./factory/cloudfront-functions.factory.js";
3
3
  export { cloudFrontFunctionSourceFromModule } from "./cff/function-code-module/cff-code-module-file.js";
4
+ export { simCfDefaultEdgeId, simCfEdgeHeaderName, } from "./cache/sim-cf-edge.js";
@@ -0,0 +1,22 @@
1
+ /**
2
+ * One path as an invalidation names it.
3
+ *
4
+ * CloudFront takes a path relative to the Distribution, beginning with a
5
+ * slash. One arriving without a leading slash is read as though it had one, so
6
+ * the bare `*` that clears everything is the same batch as `/*`.
7
+ */
8
+ export declare function simCfInvalidationPath(path: string): string;
9
+ /**
10
+ * Whether a path an invalidation names covers a path the Distribution has
11
+ * cached.
12
+ *
13
+ * A path on its own names one object. A path ending in a wildcard names
14
+ * everything below what comes before it, so `/images/*` covers
15
+ * `/images/logo.png` and leaves `/index.html` alone, and `/*` covers
16
+ * everything the Distribution holds.
17
+ */
18
+ export declare function simCfInvalidationCovers(invalidationPath: string, path: string): boolean;
19
+ /**
20
+ * Whether any path in a batch covers a path the Distribution has cached.
21
+ */
22
+ export declare function simCfInvalidationBatchCovers(invalidationPaths: readonly string[], path: string): boolean;
@@ -0,0 +1,32 @@
1
+ /**
2
+ * One path as an invalidation names it.
3
+ *
4
+ * CloudFront takes a path relative to the Distribution, beginning with a
5
+ * slash. One arriving without a leading slash is read as though it had one, so
6
+ * the bare `*` that clears everything is the same batch as `/*`.
7
+ */
8
+ export function simCfInvalidationPath(path) {
9
+ const named = path.trim();
10
+ return named.startsWith("/") ? named : `/${named}`;
11
+ }
12
+ /**
13
+ * Whether a path an invalidation names covers a path the Distribution has
14
+ * cached.
15
+ *
16
+ * A path on its own names one object. A path ending in a wildcard names
17
+ * everything below what comes before it, so `/images/*` covers
18
+ * `/images/logo.png` and leaves `/index.html` alone, and `/*` covers
19
+ * everything the Distribution holds.
20
+ */
21
+ export function simCfInvalidationCovers(invalidationPath, path) {
22
+ const named = simCfInvalidationPath(invalidationPath);
23
+ return named.endsWith("*")
24
+ ? path.startsWith(named.slice(0, -1))
25
+ : path === named;
26
+ }
27
+ /**
28
+ * Whether any path in a batch covers a path the Distribution has cached.
29
+ */
30
+ export function simCfInvalidationBatchCovers(invalidationPaths, path) {
31
+ return invalidationPaths.some((invalidationPath) => simCfInvalidationCovers(invalidationPath, path));
32
+ }
@@ -0,0 +1,43 @@
1
+ import type { SimCfInvalidation } from "./sim-cf-invalidation.js";
2
+ /**
3
+ * The batch of paths an invalidation was created from, as the API returns it.
4
+ */
5
+ export interface SimCfInvalidationBatchView {
6
+ readonly Paths: {
7
+ readonly Quantity: number;
8
+ readonly Items: readonly string[];
9
+ };
10
+ readonly CallerReference: string;
11
+ }
12
+ /**
13
+ * Minimal structural sim CloudFront invalidation, as the API returns it.
14
+ *
15
+ * CreateInvalidation and GetInvalidation both answer with this shape.
16
+ */
17
+ export interface SimCfInvalidationView {
18
+ readonly Id: string;
19
+ readonly Status: string;
20
+ readonly CreateTime: Date;
21
+ readonly InvalidationBatch: SimCfInvalidationBatchView;
22
+ }
23
+ /**
24
+ * One invalidation as ListInvalidations returns it, which leaves out the
25
+ * batch of paths.
26
+ */
27
+ export interface SimCfInvalidationSummaryView {
28
+ readonly Id: string;
29
+ readonly CreateTime: Date;
30
+ readonly Status: string;
31
+ }
32
+ /**
33
+ * Build the API view of a sim CloudFront invalidation.
34
+ */
35
+ export declare function simCfInvalidationView(invalidation: SimCfInvalidation): SimCfInvalidationView;
36
+ /**
37
+ * Build the listing view of a sim CloudFront invalidation.
38
+ */
39
+ export declare function simCfInvalidationSummary(invalidation: SimCfInvalidation): SimCfInvalidationSummaryView;
40
+ /**
41
+ * The URL CreateInvalidation reports the new invalidation at.
42
+ */
43
+ export declare function simCfInvalidationLocation(distributionId: string, invalidationId: string): string;