@kensio/yulin 1.10.2 → 1.10.3

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 (111) hide show
  1. package/dist/service/cloudfront/cfn/response-headers-policy/sim-cfn-cf-rh-policy-config.d.ts +8 -17
  2. package/dist/service/cloudfront/cfn/response-headers-policy/sim-cfn-cf-rh-policy-config.d.ts.map +1 -1
  3. package/dist/service/cloudfront/cfn/response-headers-policy/sim-cfn-cf-rh-policy-config.js +24 -102
  4. package/dist/service/cloudfront/cfn/response-headers-policy/sim-cfn-cf-rh-policy-config.js.map +1 -1
  5. package/dist/service/cloudfront/cfn/response-headers-policy/sim-cfn-cf-rh-policy-cors-config.d.ts +13 -0
  6. package/dist/service/cloudfront/cfn/response-headers-policy/sim-cfn-cf-rh-policy-cors-config.d.ts.map +1 -0
  7. package/dist/service/cloudfront/cfn/response-headers-policy/sim-cfn-cf-rh-policy-cors-config.js +76 -0
  8. package/dist/service/cloudfront/cfn/response-headers-policy/sim-cfn-cf-rh-policy-cors-config.js.map +1 -0
  9. package/dist/service/cloudfront/cfn/response-headers-policy/sim-cfn-cf-rh-policy-custom-headers.d.ts +17 -0
  10. package/dist/service/cloudfront/cfn/response-headers-policy/sim-cfn-cf-rh-policy-custom-headers.d.ts.map +1 -0
  11. package/dist/service/cloudfront/cfn/response-headers-policy/sim-cfn-cf-rh-policy-custom-headers.js +45 -0
  12. package/dist/service/cloudfront/cfn/response-headers-policy/sim-cfn-cf-rh-policy-custom-headers.js.map +1 -0
  13. package/dist/service/cloudfront/cfn/response-headers-policy/sim-cfn-cf-rh-policy-field-reader.d.ts +37 -0
  14. package/dist/service/cloudfront/cfn/response-headers-policy/sim-cfn-cf-rh-policy-field-reader.d.ts.map +1 -0
  15. package/dist/service/cloudfront/cfn/response-headers-policy/sim-cfn-cf-rh-policy-field-reader.js +75 -0
  16. package/dist/service/cloudfront/cfn/response-headers-policy/sim-cfn-cf-rh-policy-field-reader.js.map +1 -0
  17. package/dist/service/cloudfront/cfn/response-headers-policy/sim-cfn-cf-rh-policy-security-headers.d.ts +11 -0
  18. package/dist/service/cloudfront/cfn/response-headers-policy/sim-cfn-cf-rh-policy-security-headers.d.ts.map +1 -0
  19. package/dist/service/cloudfront/cfn/response-headers-policy/sim-cfn-cf-rh-policy-security-headers.js +30 -0
  20. package/dist/service/cloudfront/cfn/response-headers-policy/sim-cfn-cf-rh-policy-security-headers.js.map +1 -0
  21. package/dist/service/cloudfront/cfn/response-headers-policy/sim-cfn-cf-rh-policy-security-values.d.ts +19 -0
  22. package/dist/service/cloudfront/cfn/response-headers-policy/sim-cfn-cf-rh-policy-security-values.d.ts.map +1 -0
  23. package/dist/service/cloudfront/cfn/response-headers-policy/sim-cfn-cf-rh-policy-security-values.js +72 -0
  24. package/dist/service/cloudfront/cfn/response-headers-policy/sim-cfn-cf-rh-policy-security-values.js.map +1 -0
  25. package/dist/service/cloudfront/cfn/response-headers-policy/sim-cfn-cf-rh-policy-server-timing.d.ts +13 -0
  26. package/dist/service/cloudfront/cfn/response-headers-policy/sim-cfn-cf-rh-policy-server-timing.d.ts.map +1 -0
  27. package/dist/service/cloudfront/cfn/response-headers-policy/sim-cfn-cf-rh-policy-server-timing.js +24 -0
  28. package/dist/service/cloudfront/cfn/response-headers-policy/sim-cfn-cf-rh-policy-server-timing.js.map +1 -0
  29. package/dist/service/cloudfront/command/create-distribution/create-distribution.handler.d.ts +2 -0
  30. package/dist/service/cloudfront/command/create-distribution/create-distribution.handler.d.ts.map +1 -1
  31. package/dist/service/cloudfront/command/create-distribution/create-distribution.handler.js.map +1 -1
  32. package/dist/service/cloudfront/command/update-distribution/update-distribution.handler.d.ts +2 -0
  33. package/dist/service/cloudfront/command/update-distribution/update-distribution.handler.d.ts.map +1 -1
  34. package/dist/service/cloudfront/command/update-distribution/update-distribution.handler.js.map +1 -1
  35. package/dist/service/cloudfront/controller/response-headers/sim-cf-response-headers-applicator.d.ts +1 -1
  36. package/dist/service/cloudfront/controller/response-headers/sim-cf-response-headers-applicator.d.ts.map +1 -1
  37. package/dist/service/cloudfront/controller/response-headers/sim-cf-response-headers-applicator.js +2 -2
  38. package/dist/service/cloudfront/controller/response-headers/sim-cf-response-headers-applicator.js.map +1 -1
  39. package/dist/service/cloudfront/controller/sim-cloudfront-controller.d.ts +1 -0
  40. package/dist/service/cloudfront/controller/sim-cloudfront-controller.d.ts.map +1 -1
  41. package/dist/service/cloudfront/controller/sim-cloudfront-controller.js +8 -1
  42. package/dist/service/cloudfront/controller/sim-cloudfront-controller.js.map +1 -1
  43. package/dist/service/cloudfront/controller/sim-cloudfront-error-response.d.ts +22 -0
  44. package/dist/service/cloudfront/controller/sim-cloudfront-error-response.d.ts.map +1 -0
  45. package/dist/service/cloudfront/controller/sim-cloudfront-error-response.js +31 -0
  46. package/dist/service/cloudfront/controller/sim-cloudfront-error-response.js.map +1 -0
  47. package/dist/service/cloudfront/controller/sim-cloudfront-request-pipeline.d.ts.map +1 -1
  48. package/dist/service/cloudfront/controller/sim-cloudfront-request-pipeline.js +1 -1
  49. package/dist/service/cloudfront/controller/sim-cloudfront-request-pipeline.js.map +1 -1
  50. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-properties.d.ts +9 -0
  51. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-properties.d.ts.map +1 -0
  52. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-properties.js +34 -0
  53. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-properties.js.map +1 -0
  54. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-response-headers-policy.d.ts +29 -0
  55. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-response-headers-policy.d.ts.map +1 -0
  56. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-response-headers-policy.js +51 -0
  57. package/dist/service/cloudfront/distribution/configurator/sim-cf-behavior-response-headers-policy.js.map +1 -0
  58. package/dist/service/cloudfront/distribution/configurator/sim-cf-distribution-configurator.factory.d.ts +2 -0
  59. package/dist/service/cloudfront/distribution/configurator/sim-cf-distribution-configurator.factory.d.ts.map +1 -1
  60. package/dist/service/cloudfront/distribution/configurator/sim-cf-distribution-configurator.factory.js +3 -1
  61. package/dist/service/cloudfront/distribution/configurator/sim-cf-distribution-configurator.factory.js.map +1 -1
  62. package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-behavior-configurator.d.ts +3 -0
  63. package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-behavior-configurator.d.ts.map +1 -1
  64. package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-behavior-configurator.js +7 -32
  65. package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-behavior-configurator.js.map +1 -1
  66. package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-distribution-configurator.d.ts +14 -1
  67. package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-distribution-configurator.d.ts.map +1 -1
  68. package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-distribution-configurator.js +16 -1
  69. package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-distribution-configurator.js.map +1 -1
  70. package/dist/service/cloudfront/distribution/sim-cf-distribution-reconfigurer.d.ts +7 -3
  71. package/dist/service/cloudfront/distribution/sim-cf-distribution-reconfigurer.d.ts.map +1 -1
  72. package/dist/service/cloudfront/distribution/sim-cf-distribution-reconfigurer.js +6 -3
  73. package/dist/service/cloudfront/distribution/sim-cf-distribution-reconfigurer.js.map +1 -1
  74. package/dist/service/cloudfront/error/sim-cloudfront.error.d.ts +11 -0
  75. package/dist/service/cloudfront/error/sim-cloudfront.error.d.ts.map +1 -1
  76. package/dist/service/cloudfront/error/sim-cloudfront.error.js +13 -0
  77. package/dist/service/cloudfront/error/sim-cloudfront.error.js.map +1 -1
  78. package/dist/service/cloudfront/response-headers-policy/sim-cf-cors-origin-pattern.d.ts +27 -0
  79. package/dist/service/cloudfront/response-headers-policy/sim-cf-cors-origin-pattern.d.ts.map +1 -0
  80. package/dist/service/cloudfront/response-headers-policy/sim-cf-cors-origin-pattern.js +70 -0
  81. package/dist/service/cloudfront/response-headers-policy/sim-cf-cors-origin-pattern.js.map +1 -0
  82. package/dist/service/cloudfront/response-headers-policy/sim-cf-response-headers-policy-cors.d.ts +44 -0
  83. package/dist/service/cloudfront/response-headers-policy/sim-cf-response-headers-policy-cors.d.ts.map +1 -0
  84. package/dist/service/cloudfront/response-headers-policy/sim-cf-response-headers-policy-cors.js +111 -0
  85. package/dist/service/cloudfront/response-headers-policy/sim-cf-response-headers-policy-cors.js.map +1 -0
  86. package/dist/service/cloudfront/response-headers-policy/sim-cf-response-headers-policy.d.ts +10 -2
  87. package/dist/service/cloudfront/response-headers-policy/sim-cf-response-headers-policy.d.ts.map +1 -1
  88. package/dist/service/cloudfront/response-headers-policy/sim-cf-response-headers-policy.js +14 -2
  89. package/dist/service/cloudfront/response-headers-policy/sim-cf-response-headers-policy.js.map +1 -1
  90. package/dist/service/cloudfront/sim-cloudfront-commands.d.ts +3 -0
  91. package/dist/service/cloudfront/sim-cloudfront-commands.d.ts.map +1 -1
  92. package/dist/service/cloudfront/sim-cloudfront-commands.js +3 -0
  93. package/dist/service/cloudfront/sim-cloudfront-commands.js.map +1 -1
  94. package/dist/service/cloudfront/sim-cloudfront.d.ts.map +1 -1
  95. package/dist/service/cloudfront/sim-cloudfront.js +1 -0
  96. package/dist/service/cloudfront/sim-cloudfront.js.map +1 -1
  97. package/dist/service/rekognition/label/sim-rekognition-label-declaration.d.ts +1 -1
  98. package/dist/service/rekognition/moderation/sim-rekognition-moderation-taxonomy.d.ts +2 -2
  99. package/dist/service/rekognition/moderation/sim-rekognition-moderation-taxonomy.js +3 -3
  100. package/dist/service/rekognition/moderation/sim-rekognition-moderation-taxonomy.js.map +1 -1
  101. package/dist/service/rekognition/sim-rekognition.d.ts +4 -4
  102. package/dist/service/rekognition/sim-rekognition.js +4 -4
  103. package/dist/service/sns/signature/sim-sns-certificate.d.ts +9 -3
  104. package/dist/service/sns/signature/sim-sns-certificate.d.ts.map +1 -1
  105. package/dist/service/sns/signature/sim-sns-certificate.js +13 -8
  106. package/dist/service/sns/signature/sim-sns-certificate.js.map +1 -1
  107. package/dist/service/sns/signature/sim-sns-der.d.ts +16 -0
  108. package/dist/service/sns/signature/sim-sns-der.d.ts.map +1 -1
  109. package/dist/service/sns/signature/sim-sns-der.js +23 -0
  110. package/dist/service/sns/signature/sim-sns-der.js.map +1 -1
  111. package/package.json +1 -1
@@ -1,9 +1,12 @@
1
1
  import type { SimCloudFrontCacheBehaviorConfig, SimCloudFrontDefaultCacheBehaviorConfig } from "../../command/create-distribution/create-distribution.command.js";
2
2
  import type { SimCloudFrontDistribution } from "../sim-cloudfront-distribution.js";
3
+ import type { SimCfBehaviorResponseHeadersPolicy } from "./sim-cf-behavior-response-headers-policy.js";
3
4
  /**
4
5
  * Applies Cache Behavior configuration to a sim CloudFront Distribution.
5
6
  */
6
7
  export declare class SimCloudFrontBehaviorConfigurator {
8
+ private readonly responseHeadersPolicy;
9
+ constructor(responseHeadersPolicy: SimCfBehaviorResponseHeadersPolicy);
7
10
  /**
8
11
  * Configure the default Cache Behavior on a Distribution.
9
12
  */
@@ -1 +1 @@
1
- {"version":3,"file":"sim-cloud-front-behavior-configurator.d.ts","sourceRoot":"","sources":["../../../../../src/service/cloudfront/distribution/configurator/sim-cloud-front-behavior-configurator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gCAAgC,EAChC,uCAAuC,EAExC,MAAM,kEAAkE,CAAC;AAG1E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAGnF;;GAEG;AACH,qBAAa,iCAAiC;IAC5C;;OAEG;IACH,6BAA6B,CAC3B,YAAY,EAAE,yBAAyB,EACvC,aAAa,EAAE,uCAAuC,GAAG,SAAS,GACjE,IAAI,CAGN;IAED;;OAEG;IACH,sBAAsB,CACpB,YAAY,EAAE,yBAAyB,EACvC,aAAa,EAAE,gCAAgC,GAC9C,IAAI,CASN;CACF"}
1
+ {"version":3,"file":"sim-cloud-front-behavior-configurator.d.ts","sourceRoot":"","sources":["../../../../../src/service/cloudfront/distribution/configurator/sim-cloud-front-behavior-configurator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gCAAgC,EAChC,uCAAuC,EACxC,MAAM,kEAAkE,CAAC;AAE1E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAEnF,OAAO,KAAK,EAAE,kCAAkC,EAAE,MAAM,8CAA8C,CAAC;AAEvG;;GAEG;AACH,qBAAa,iCAAiC;IAE1C,OAAO,CAAC,QAAQ,CAAC,qBAAqB;IADxC,YACmB,qBAAqB,EAAE,kCAAkC,EACxE;IAEJ;;OAEG;IACH,6BAA6B,CAC3B,YAAY,EAAE,yBAAyB,EACvC,aAAa,EAAE,uCAAuC,GAAG,SAAS,GACjE,IAAI,CAKN;IAED;;OAEG;IACH,sBAAsB,CACpB,YAAY,EAAE,yBAAyB,EACvC,aAAa,EAAE,gCAAgC,GAC9C,IAAI,CASN;CACF"}
@@ -1,15 +1,19 @@
1
1
  import { assertDefined } from "../../../../util/type-guard/defined.js";
2
- import { configureCffAssociations } from "./sim-cff-associations-configure.js";
2
+ import { simCfBehaviorProperties } from "./sim-cf-behavior-properties.js";
3
3
  /**
4
4
  * Applies Cache Behavior configuration to a sim CloudFront Distribution.
5
5
  */
6
6
  export class SimCloudFrontBehaviorConfigurator {
7
+ responseHeadersPolicy;
8
+ constructor(responseHeadersPolicy) {
9
+ this.responseHeadersPolicy = responseHeadersPolicy;
10
+ }
7
11
  /**
8
12
  * Configure the default Cache Behavior on a Distribution.
9
13
  */
10
14
  configureDefaultCacheBehavior(distribution, cacheBehavior) {
11
15
  assertDefined(cacheBehavior, "CloudFront DefaultCacheBehavior");
12
- distribution.addBehavior(buildBaseBehaviorProperties(cacheBehavior));
16
+ distribution.addBehavior(simCfBehaviorProperties(cacheBehavior, this.responseHeadersPolicy));
13
17
  }
14
18
  /**
15
19
  * Configure a Cache Behavior on a Distribution.
@@ -18,37 +22,8 @@ export class SimCloudFrontBehaviorConfigurator {
18
22
  assertDefined(cacheBehavior.PathPattern, "CloudFront CacheBehavior PathPattern");
19
23
  distribution.addBehavior({
20
24
  pathPattern: cacheBehavior.PathPattern,
21
- ...buildBaseBehaviorProperties(cacheBehavior),
25
+ ...simCfBehaviorProperties(cacheBehavior, this.responseHeadersPolicy),
22
26
  });
23
27
  }
24
28
  }
25
- /**
26
- * Build the shared Behavior properties common to both default and named Cache
27
- * Behaviors. Callers add their own fields (e.g. pathPattern) on top.
28
- */
29
- function buildBaseBehaviorProperties(cacheBehavior) {
30
- assertDefined(cacheBehavior.TargetOriginId, "CloudFront CacheBehavior TargetOriginId");
31
- return {
32
- targetOriginName: cacheBehavior.TargetOriginId,
33
- allowedMethods: methodsSet(cacheBehavior.AllowedMethods, ["GET", "HEAD"]),
34
- cachedMethods: methodsSet(cacheBehavior.AllowedMethods?.CachedMethods, [
35
- "GET",
36
- "HEAD",
37
- ]),
38
- ...(cacheBehavior.ViewerProtocolPolicy !== undefined && {
39
- viewerProtocolPolicy: cacheBehavior.ViewerProtocolPolicy,
40
- }),
41
- ...(cacheBehavior.ResponseHeadersPolicyId !== undefined && {
42
- responseHeadersPolicyId: cacheBehavior.ResponseHeadersPolicyId,
43
- }),
44
- functionAssociations: configureCffAssociations(cacheBehavior),
45
- };
46
- }
47
- /**
48
- * Build a Set of HTTP methods from a method list config, falling back to the
49
- * provided defaults when no items are configured.
50
- */
51
- function methodsSet(methods, fallback) {
52
- return new Set(methods?.Items ?? fallback);
53
- }
54
29
  //# sourceMappingURL=sim-cloud-front-behavior-configurator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sim-cloud-front-behavior-configurator.js","sourceRoot":"","sources":["../../../../../src/service/cloudfront/distribution/configurator/sim-cloud-front-behavior-configurator.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AAEvE,OAAO,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AAE/E;;GAEG;AACH,MAAM,OAAO,iCAAiC;IAC5C;;OAEG;IACH,6BAA6B,CAC3B,YAAuC,EACvC,aAAkE;QAElE,aAAa,CAAC,aAAa,EAAE,iCAAiC,CAAC,CAAC;QAChE,YAAY,CAAC,WAAW,CAAC,2BAA2B,CAAC,aAAa,CAAC,CAAC,CAAC;IACvE,CAAC;IAED;;OAEG;IACH,sBAAsB,CACpB,YAAuC,EACvC,aAA+C;QAE/C,aAAa,CACX,aAAa,CAAC,WAAW,EACzB,sCAAsC,CACvC,CAAC;QACF,YAAY,CAAC,WAAW,CAAC;YACvB,WAAW,EAAE,aAAa,CAAC,WAAW;YACtC,GAAG,2BAA2B,CAAC,aAAa,CAAC;SAC9C,CAAC,CAAC;IACL,CAAC;CACF;AAED;;;GAGG;AACH,SAAS,2BAA2B,CAClC,aAEoC;IAEpC,aAAa,CACX,aAAa,CAAC,cAAc,EAC5B,yCAAyC,CAC1C,CAAC;IAEF,OAAO;QACL,gBAAgB,EAAE,aAAa,CAAC,cAAc;QAC9C,cAAc,EAAE,UAAU,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACzE,aAAa,EAAE,UAAU,CAAC,aAAa,CAAC,cAAc,EAAE,aAAa,EAAE;YACrE,KAAK;YACL,MAAM;SACP,CAAC;QACF,GAAG,CAAC,aAAa,CAAC,oBAAoB,KAAK,SAAS,IAAI;YACtD,oBAAoB,EAAE,aAAa,CAAC,oBAAoB;SACzD,CAAC;QACF,GAAG,CAAC,aAAa,CAAC,uBAAuB,KAAK,SAAS,IAAI;YACzD,uBAAuB,EAAE,aAAa,CAAC,uBAAuB;SAC/D,CAAC;QACF,oBAAoB,EAAE,wBAAwB,CAAC,aAAa,CAAC;KAC9D,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,UAAU,CACjB,OAA4C,EAC5C,QAAkB;IAElB,OAAO,IAAI,GAAG,CAAC,OAAO,EAAE,KAAK,IAAI,QAAQ,CAAC,CAAC;AAC7C,CAAC"}
1
+ {"version":3,"file":"sim-cloud-front-behavior-configurator.js","sourceRoot":"","sources":["../../../../../src/service/cloudfront/distribution/configurator/sim-cloud-front-behavior-configurator.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AAEvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAG1E;;GAEG;AACH,MAAM,OAAO,iCAAiC;IAEzB,qBAAqB;IADxC,YACmB,qBAAyD;qCAAzD,qBAAqB;IACrC,CAAC;IAEJ;;OAEG;IACH,6BAA6B,CAC3B,YAAuC,EACvC,aAAkE;QAElE,aAAa,CAAC,aAAa,EAAE,iCAAiC,CAAC,CAAC;QAChE,YAAY,CAAC,WAAW,CACtB,uBAAuB,CAAC,aAAa,EAAE,IAAI,CAAC,qBAAqB,CAAC,CACnE,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,sBAAsB,CACpB,YAAuC,EACvC,aAA+C;QAE/C,aAAa,CACX,aAAa,CAAC,WAAW,EACzB,sCAAsC,CACvC,CAAC;QACF,YAAY,CAAC,WAAW,CAAC;YACvB,WAAW,EAAE,aAAa,CAAC,WAAW;YACtC,GAAG,uBAAuB,CAAC,aAAa,EAAE,IAAI,CAAC,qBAAqB,CAAC;SACtE,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -2,6 +2,7 @@ import type { SimCloudFrontDistributionConfig } from "../../command/create-distr
2
2
  import type { SimCloudFrontDistribution } from "../sim-cloudfront-distribution.js";
3
3
  import type { SimCloudFrontOriginConfigurator } from "./sim-cloud-front-origin-configurator.js";
4
4
  import type { SimCloudFrontBehaviorConfigurator } from "./sim-cloud-front-behavior-configurator.js";
5
+ import type { SimCfBehaviorResponseHeadersPolicy } from "./sim-cf-behavior-response-headers-policy.js";
5
6
  /**
6
7
  * Applies top-level Distribution configuration to a sim CloudFront Distribution.
7
8
  *
@@ -18,8 +19,20 @@ import type { SimCloudFrontBehaviorConfigurator } from "./sim-cloud-front-behavi
18
19
  export declare class SimCloudFrontDistributionConfigurator {
19
20
  private readonly originConfigurator;
20
21
  private readonly behaviorConfigurator;
22
+ private readonly responseHeadersPolicy;
21
23
  private readonly customErrorConfigurator;
22
- constructor(originConfigurator: SimCloudFrontOriginConfigurator, behaviorConfigurator: SimCloudFrontBehaviorConfigurator);
24
+ constructor(originConfigurator: SimCloudFrontOriginConfigurator, behaviorConfigurator: SimCloudFrontBehaviorConfigurator, responseHeadersPolicy: SimCfBehaviorResponseHeadersPolicy);
25
+ /**
26
+ * Refuse a DistributionConfig this simulation cannot apply, before anything
27
+ * is applied.
28
+ *
29
+ * Only what a Behavior names outside itself is checked here, because that is
30
+ * what an update can find missing after the Distribution was already built
31
+ * against it. Everything else the configurators refuse is a property of the
32
+ * config itself, which `configure` reaches before it has changed anything
33
+ * worth undoing.
34
+ */
35
+ assertConfigurable(distributionConfig: SimCloudFrontDistributionConfig): void;
23
36
  /**
24
37
  * Configure a Distribution from its DistributionConfig.
25
38
  */
@@ -1 +1 @@
1
- {"version":3,"file":"sim-cloud-front-distribution-configurator.d.ts","sourceRoot":"","sources":["../../../../../src/service/cloudfront/distribution/configurator/sim-cloud-front-distribution-configurator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,kEAAkE,CAAC;AACxH,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AACnF,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,0CAA0C,CAAC;AAChG,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,4CAA4C,CAAC;AAIpG;;;;;;;;;;;;GAYG;AACH,qBAAa,qCAAqC;IAK9C,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IALvC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CACK;IAE7C,YACmB,kBAAkB,EAAE,+BAA+B,EACnD,oBAAoB,EAAE,iCAAiC,EACtE;IAEJ;;OAEG;IACH,SAAS,CACP,YAAY,EAAE,yBAAyB,EACvC,kBAAkB,EAAE,+BAA+B,GAClD,IAAI,CAiCN;IAED;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;CAe1B"}
1
+ {"version":3,"file":"sim-cloud-front-distribution-configurator.d.ts","sourceRoot":"","sources":["../../../../../src/service/cloudfront/distribution/configurator/sim-cloud-front-distribution-configurator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,kEAAkE,CAAC;AACxH,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AACnF,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,0CAA0C,CAAC;AAChG,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,4CAA4C,CAAC;AACpG,OAAO,KAAK,EAAE,kCAAkC,EAAE,MAAM,8CAA8C,CAAC;AAIvG;;;;;;;;;;;;GAYG;AACH,qBAAa,qCAAqC;IAK9C,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IACrC,OAAO,CAAC,QAAQ,CAAC,qBAAqB;IANxC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CACK;IAE7C,YACmB,kBAAkB,EAAE,+BAA+B,EACnD,oBAAoB,EAAE,iCAAiC,EACvD,qBAAqB,EAAE,kCAAkC,EACxE;IAEJ;;;;;;;;;OASG;IACH,kBAAkB,CAChB,kBAAkB,EAAE,+BAA+B,GAClD,IAAI,CAEN;IAED;;OAEG;IACH,SAAS,CACP,YAAY,EAAE,yBAAyB,EACvC,kBAAkB,EAAE,+BAA+B,GAClD,IAAI,CAiCN;IAED;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;CAe1B"}
@@ -16,10 +16,25 @@ import { SimCloudFrontInvalidDefaultRootObject } from "../../error/sim-cloudfron
16
16
  export class SimCloudFrontDistributionConfigurator {
17
17
  originConfigurator;
18
18
  behaviorConfigurator;
19
+ responseHeadersPolicy;
19
20
  customErrorConfigurator = new SimCloudFrontCustomErrorConfigurator();
20
- constructor(originConfigurator, behaviorConfigurator) {
21
+ constructor(originConfigurator, behaviorConfigurator, responseHeadersPolicy) {
21
22
  this.originConfigurator = originConfigurator;
22
23
  this.behaviorConfigurator = behaviorConfigurator;
24
+ this.responseHeadersPolicy = responseHeadersPolicy;
25
+ }
26
+ /**
27
+ * Refuse a DistributionConfig this simulation cannot apply, before anything
28
+ * is applied.
29
+ *
30
+ * Only what a Behavior names outside itself is checked here, because that is
31
+ * what an update can find missing after the Distribution was already built
32
+ * against it. Everything else the configurators refuse is a property of the
33
+ * config itself, which `configure` reaches before it has changed anything
34
+ * worth undoing.
35
+ */
36
+ assertConfigurable(distributionConfig) {
37
+ this.responseHeadersPolicy.assertAllExist(distributionConfig);
23
38
  }
24
39
  /**
25
40
  * Configure a Distribution from its DistributionConfig.
@@ -1 +1 @@
1
- {"version":3,"file":"sim-cloud-front-distribution-configurator.js","sourceRoot":"","sources":["../../../../../src/service/cloudfront/distribution/configurator/sim-cloud-front-distribution-configurator.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,oCAAoC,EAAE,MAAM,gDAAgD,CAAC;AACtG,OAAO,EAAE,qCAAqC,EAAE,MAAM,qCAAqC,CAAC;AAE5F;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,qCAAqC;IAK7B,kBAAkB;IAClB,oBAAoB;IALtB,uBAAuB,GACtC,IAAI,oCAAoC,EAAE,CAAC;IAE7C,YACmB,kBAAmD,EACnD,oBAAuD;kCADvD,kBAAkB;oCAClB,oBAAoB;IACpC,CAAC;IAEJ;;OAEG;IACH,SAAS,CACP,YAAuC,EACvC,kBAAmD;QAEnD,MAAM,UAAU,GAAG,kBAAkB,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC;QAC3D,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;YAC/B,YAAY,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAC7C,CAAC;QAED,MAAM,WAAW,GAAG,kBAAkB,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC;QAC5D,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE,CAAC;YACjC,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QAC1D,CAAC;QAED,IAAI,CAAC,oBAAoB,CAAC,6BAA6B,CACrD,YAAY,EACZ,kBAAkB,CAAC,oBAAoB,CACxC,CAAC;QAEF,MAAM,kBAAkB,GAAG,kBAAkB,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE,CAAC;QAC1E,KAAK,MAAM,aAAa,IAAI,kBAAkB,EAAE,CAAC;YAC/C,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,CAC9C,YAAY,EACZ,aAAa,CACd,CAAC;QACJ,CAAC;QAED,YAAY,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CACrD,kBAAkB,CAAC,iBAAiB,CACrC,CAAC;QAEF,MAAM,gBAAgB,GACpB,kBAAkB,CAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE,CAAC;QACvD,KAAK,MAAM,mBAAmB,IAAI,gBAAgB,EAAE,CAAC;YACnD,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,YAAY,EAAE,mBAAmB,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACK,iBAAiB,CACvB,iBAAqC;QAErC,IAAI,iBAAiB,KAAK,SAAS,IAAI,iBAAiB,KAAK,EAAE,EAAE,CAAC;YAChE,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,IAAI,iBAAiB,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,qCAAqC,CAC7C,gCAAgC,iBAAiB,sCAAsC,CACxF,CAAC;QACJ,CAAC;QAED,OAAO,iBAAiB,CAAC;IAC3B,CAAC;CACF"}
1
+ {"version":3,"file":"sim-cloud-front-distribution-configurator.js","sourceRoot":"","sources":["../../../../../src/service/cloudfront/distribution/configurator/sim-cloud-front-distribution-configurator.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,oCAAoC,EAAE,MAAM,gDAAgD,CAAC;AACtG,OAAO,EAAE,qCAAqC,EAAE,MAAM,qCAAqC,CAAC;AAE5F;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,qCAAqC;IAK7B,kBAAkB;IAClB,oBAAoB;IACpB,qBAAqB;IANvB,uBAAuB,GACtC,IAAI,oCAAoC,EAAE,CAAC;IAE7C,YACmB,kBAAmD,EACnD,oBAAuD,EACvD,qBAAyD;kCAFzD,kBAAkB;oCAClB,oBAAoB;qCACpB,qBAAqB;IACrC,CAAC;IAEJ;;;;;;;;;OASG;IACH,kBAAkB,CAChB,kBAAmD;QAEnD,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;IAChE,CAAC;IAED;;OAEG;IACH,SAAS,CACP,YAAuC,EACvC,kBAAmD;QAEnD,MAAM,UAAU,GAAG,kBAAkB,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC;QAC3D,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;YAC/B,YAAY,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAC7C,CAAC;QAED,MAAM,WAAW,GAAG,kBAAkB,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC;QAC5D,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE,CAAC;YACjC,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QAC1D,CAAC;QAED,IAAI,CAAC,oBAAoB,CAAC,6BAA6B,CACrD,YAAY,EACZ,kBAAkB,CAAC,oBAAoB,CACxC,CAAC;QAEF,MAAM,kBAAkB,GAAG,kBAAkB,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE,CAAC;QAC1E,KAAK,MAAM,aAAa,IAAI,kBAAkB,EAAE,CAAC;YAC/C,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,CAC9C,YAAY,EACZ,aAAa,CACd,CAAC;QACJ,CAAC;QAED,YAAY,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CACrD,kBAAkB,CAAC,iBAAiB,CACrC,CAAC;QAEF,MAAM,gBAAgB,GACpB,kBAAkB,CAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE,CAAC;QACvD,KAAK,MAAM,mBAAmB,IAAI,gBAAgB,EAAE,CAAC;YACnD,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,YAAY,EAAE,mBAAmB,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACK,iBAAiB,CACvB,iBAAqC;QAErC,IAAI,iBAAiB,KAAK,SAAS,IAAI,iBAAiB,KAAK,EAAE,EAAE,CAAC;YAChE,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,IAAI,iBAAiB,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,qCAAqC,CAC7C,gCAAgC,iBAAiB,sCAAsC,CACxF,CAAC;QACJ,CAAC;QAED,OAAO,iBAAiB,CAAC;IAC3B,CAAC;CACF"}
@@ -2,6 +2,7 @@ import type { SimCloudFrontDistributionConfig } from "../command/create-distribu
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 { SimCloudFrontResponseHeadersPolicyRegistry } from "../response-headers-policy/sim-cf-response-headers-policy-registry.js";
5
6
  import type { SimCloudFrontRegistry } from "../registry/sim-cloud-front-registry.js";
6
7
  import type { SimCloudFrontDistribution } from "./sim-cloudfront-distribution.js";
7
8
  interface SimCloudFrontDistributionReconfigurerProperties {
@@ -9,6 +10,7 @@ interface SimCloudFrontDistributionReconfigurerProperties {
9
10
  readonly s3OriginResolver: SimCloudFrontS3OriginResolver;
10
11
  readonly customOriginDispatcher?: SimCfCustomOriginDispatcher | undefined;
11
12
  readonly originAccessControls: SimCloudFrontOriginAccessControlRegistry;
13
+ readonly responseHeadersPolicies: SimCloudFrontResponseHeadersPolicyRegistry;
12
14
  }
13
15
  /**
14
16
  * Applies a replacement DistributionConfig to a Distribution already in place.
@@ -27,9 +29,11 @@ export declare class SimCloudFrontDistributionReconfigurer {
27
29
  * domain names the Distribution answers on so a name the update drops is
28
30
  * free for another Distribution.
29
31
  *
30
- * A name another Distribution already holds is refused before anything is
31
- * changed, so a rejected update leaves the Distribution as it was rather
32
- * than half replaced.
32
+ * Everything an update can be refused for that is not a property of the
33
+ * config itself a name another Distribution already holds, a response
34
+ * headers policy no longer there — is checked before anything is changed, so
35
+ * a rejected update leaves the Distribution as it was rather than half
36
+ * replaced.
33
37
  */
34
38
  reconfigure(distribution: SimCloudFrontDistribution, distributionConfig: SimCloudFrontDistributionConfig): void;
35
39
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sim-cf-distribution-reconfigurer.d.ts","sourceRoot":"","sources":["../../../../src/service/cloudfront/distribution/sim-cf-distribution-reconfigurer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,+DAA+D,CAAC;AACrH,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,qDAAqD,CAAC;AACvG,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,0CAA0C,CAAC;AAC9F,OAAO,KAAK,EAAE,wCAAwC,EAAE,MAAM,mEAAmE,CAAC;AAClI,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAGrF,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAElF,UAAU,+CAA+C;IACvD,QAAQ,CAAC,kBAAkB,EAAE,qBAAqB,CAAC;IACnD,QAAQ,CAAC,gBAAgB,EAAE,6BAA6B,CAAC;IACzD,QAAQ,CAAC,sBAAsB,CAAC,EAAE,2BAA2B,GAAG,SAAS,CAAC;IAC1E,QAAQ,CAAC,oBAAoB,EAAE,wCAAwC,CAAC;CACzE;AAED;;;;;;;GAOG;AACH,qBAAa,qCAAqC;IAChD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAwB;IAC3D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAwC;IAErE,YAAY,UAAU,EAAE,+CAA+C,EAGtE;IAED;;;;;;;;OAQG;IACH,WAAW,CACT,YAAY,EAAE,yBAAyB,EACvC,kBAAkB,EAAE,+BAA+B,GAClD,IAAI,CAmBN;CACF"}
1
+ {"version":3,"file":"sim-cf-distribution-reconfigurer.d.ts","sourceRoot":"","sources":["../../../../src/service/cloudfront/distribution/sim-cf-distribution-reconfigurer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,+DAA+D,CAAC;AACrH,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,qDAAqD,CAAC;AACvG,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,0CAA0C,CAAC;AAC9F,OAAO,KAAK,EAAE,wCAAwC,EAAE,MAAM,mEAAmE,CAAC;AAClI,OAAO,KAAK,EAAE,0CAA0C,EAAE,MAAM,uEAAuE,CAAC;AACxI,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAGrF,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAElF,UAAU,+CAA+C;IACvD,QAAQ,CAAC,kBAAkB,EAAE,qBAAqB,CAAC;IACnD,QAAQ,CAAC,gBAAgB,EAAE,6BAA6B,CAAC;IACzD,QAAQ,CAAC,sBAAsB,CAAC,EAAE,2BAA2B,GAAG,SAAS,CAAC;IAC1E,QAAQ,CAAC,oBAAoB,EAAE,wCAAwC,CAAC;IACxE,QAAQ,CAAC,uBAAuB,EAAE,0CAA0C,CAAC;CAC9E;AAED;;;;;;;GAOG;AACH,qBAAa,qCAAqC;IAChD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAwB;IAC3D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAwC;IAErE,YAAY,UAAU,EAAE,+CAA+C,EAGtE;IAED;;;;;;;;;;OAUG;IACH,WAAW,CACT,YAAY,EAAE,yBAAyB,EACvC,kBAAkB,EAAE,+BAA+B,GAClD,IAAI,CAoBN;CACF"}
@@ -19,13 +19,16 @@ export class SimCloudFrontDistributionReconfigurer {
19
19
  * domain names the Distribution answers on so a name the update drops is
20
20
  * free for another Distribution.
21
21
  *
22
- * A name another Distribution already holds is refused before anything is
23
- * changed, so a rejected update leaves the Distribution as it was rather
24
- * than half replaced.
22
+ * Everything an update can be refused for that is not a property of the
23
+ * config itself a name another Distribution already holds, a response
24
+ * headers policy no longer there — is checked before anything is changed, so
25
+ * a rejected update leaves the Distribution as it was rather than half
26
+ * replaced.
25
27
  */
26
28
  reconfigure(distribution, distributionConfig) {
27
29
  const { distributionId } = distribution;
28
30
  this.cloudFrontRegistry.assertAlternateDomainNamesAvailable(distributionConfig.Aliases?.Items ?? [], distributionId);
31
+ this.configurator.assertConfigurable(distributionConfig);
29
32
  this.cloudFrontRegistry.deregisterAlternateDomainNames(distributionId);
30
33
  distribution.replaceConfiguration(distributionConfig);
31
34
  this.configurator.configure(distribution, distributionConfig);
@@ -1 +1 @@
1
- {"version":3,"file":"sim-cf-distribution-reconfigurer.js","sourceRoot":"","sources":["../../../../src/service/cloudfront/distribution/sim-cf-distribution-reconfigurer.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,yCAAyC,EAAE,MAAM,4DAA4D,CAAC;AAWvH;;;;;;;GAOG;AACH,MAAM,OAAO,qCAAqC;IAC/B,kBAAkB,CAAwB;IAC1C,YAAY,CAAwC;IAErE,YAAY,UAA2D;QACrE,IAAI,CAAC,kBAAkB,GAAG,UAAU,CAAC,kBAAkB,CAAC;QACxD,IAAI,CAAC,YAAY,GAAG,yCAAyC,CAAC,UAAU,CAAC,CAAC;IAC5E,CAAC;IAED;;;;;;;;OAQG;IACH,WAAW,CACT,YAAuC,EACvC,kBAAmD;QAEnD,MAAM,EAAE,cAAc,EAAE,GAAG,YAAY,CAAC;QAExC,IAAI,CAAC,kBAAkB,CAAC,mCAAmC,CACzD,kBAAkB,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,EACvC,cAAc,CACf,CAAC;QAEF,IAAI,CAAC,kBAAkB,CAAC,8BAA8B,CAAC,cAAc,CAAC,CAAC;QAEvE,YAAY,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,CAAC;QACtD,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC;QAE9D,KAAK,MAAM,mBAAmB,IAAI,YAAY,CAAC,uBAAuB,EAAE,EAAE,CAAC;YACzE,IAAI,CAAC,kBAAkB,CAAC,2BAA2B,CACjD,mBAAmB,EACnB,cAAc,CACf,CAAC;QACJ,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"sim-cf-distribution-reconfigurer.js","sourceRoot":"","sources":["../../../../src/service/cloudfront/distribution/sim-cf-distribution-reconfigurer.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,yCAAyC,EAAE,MAAM,4DAA4D,CAAC;AAYvH;;;;;;;GAOG;AACH,MAAM,OAAO,qCAAqC;IAC/B,kBAAkB,CAAwB;IAC1C,YAAY,CAAwC;IAErE,YAAY,UAA2D;QACrE,IAAI,CAAC,kBAAkB,GAAG,UAAU,CAAC,kBAAkB,CAAC;QACxD,IAAI,CAAC,YAAY,GAAG,yCAAyC,CAAC,UAAU,CAAC,CAAC;IAC5E,CAAC;IAED;;;;;;;;;;OAUG;IACH,WAAW,CACT,YAAuC,EACvC,kBAAmD;QAEnD,MAAM,EAAE,cAAc,EAAE,GAAG,YAAY,CAAC;QAExC,IAAI,CAAC,kBAAkB,CAAC,mCAAmC,CACzD,kBAAkB,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,EACvC,cAAc,CACf,CAAC;QACF,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,CAAC;QAEzD,IAAI,CAAC,kBAAkB,CAAC,8BAA8B,CAAC,cAAc,CAAC,CAAC;QAEvE,YAAY,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,CAAC;QACtD,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC;QAE9D,KAAK,MAAM,mBAAmB,IAAI,YAAY,CAAC,uBAAuB,EAAE,EAAE,CAAC;YACzE,IAAI,CAAC,kBAAkB,CAAC,2BAA2B,CACjD,mBAAmB,EACnB,cAAc,CACf,CAAC;QACJ,CAAC;IACH,CAAC;CACF"}
@@ -80,6 +80,17 @@ export declare class SimCloudFrontNoSuchResponseHeadersPolicy extends SimCloudFr
80
80
  readonly name = "NoSuchResponseHeadersPolicy";
81
81
  constructor(message: string);
82
82
  }
83
+ /**
84
+ * Simulated CloudFront InvalidResponseHeadersPolicyId error.
85
+ *
86
+ * What CloudFront answers when a Behavior's `ResponseHeadersPolicyId` names no
87
+ * response headers policy the account holds, at Distribution create or update
88
+ * time rather than when a request first needs the policy.
89
+ */
90
+ export declare class SimCloudFrontInvalidResponseHeadersPolicyId extends SimCloudFrontError {
91
+ readonly name = "InvalidResponseHeadersPolicyId";
92
+ constructor(message: string);
93
+ }
83
94
  /**
84
95
  * Simulated CloudFront ResponseHeadersPolicyAlreadyExists error.
85
96
  *
@@ -1 +1 @@
1
- {"version":3,"file":"sim-cloudfront.error.d.ts","sourceRoot":"","sources":["../../../../src/service/cloudfront/error/sim-cloudfront.error.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CAClC;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;aAGzB,SAAS,EAAE,0BAA0B;IAFvD,YACE,OAAO,EAAE,MAAM,EACC,SAAS,GAAE,0BAA+B,EAG3D;CACF;AAED;;;;;;GAMG;AACH,qBAAa,qCAAsC,SAAQ,kBAAkB;IAC3E,SAAyB,IAAI,8BAA8B;IAE3D,YAAY,OAAO,EAAE,MAAM,EAE1B;CACF;AAED;;;;;GAKG;AACH,qBAAa,qCAAsC,SAAQ,kBAAkB;IAC3E,SAAyB,IAAI,8BAA8B;IAE3D,YAAY,OAAO,EAAE,MAAM,EAE1B;CACF;AAED;;GAEG;AACH,qBAAa,6BAA8B,SAAQ,kBAAkB;IACnE,SAAyB,IAAI,sBAAsB;IAEnD,YAAY,OAAO,EAAE,MAAM,EAE1B;CACF;AAED;;GAEG;AACH,qBAAa,gCAAiC,SAAQ,kBAAkB;IACtE,SAAyB,IAAI,yBAAyB;IAEtD,YAAY,OAAO,EAAE,MAAM,EAE1B;CACF;AAED;;GAEG;AACH,qBAAa,4BAA6B,SAAQ,kBAAkB;IAClE,SAAyB,IAAI,qBAAqB;IAElD,YAAY,OAAO,EAAE,MAAM,EAE1B;CACF;AAED;;;;GAIG;AACH,qBAAa,+BAAgC,SAAQ,kBAAkB;IACrE,SAAyB,IAAI,wBAAwB;IAErD,YAAY,OAAO,EAAE,MAAM,EAE1B;CACF;AAED;;;;GAIG;AACH,qBAAa,iCAAkC,SAAQ,kBAAkB;IACvE,SAAyB,IAAI,0BAA0B;IAEvD,YAAY,OAAO,EAAE,MAAM,EAE1B;CACF;AAED;;;;GAIG;AACH,qBAAa,wCAAyC,SAAQ,kBAAkB;IAC9E,SAAyB,IAAI,iCAAiC;IAE9D,YAAY,OAAO,EAAE,MAAM,EAE1B;CACF;AAED;;;;;GAKG;AACH,qBAAa,+CAAgD,SAAQ,kBAAkB;IACrF,SAAyB,IAAI,wCAAwC;IAErE,YAAY,OAAO,EAAE,MAAM,EAE1B;CACF;AAED;;;;;GAKG;AACH,qBAAa,uCAAwC,SAAQ,kBAAkB;IAC7E,SAAyB,IAAI,gCAAgC;IAE7D,YAAY,OAAO,EAAE,MAAM,EAE1B;CACF;AAED;;;;;GAKG;AACH,qBAAa,6CAA8C,SAAQ,kBAAkB;IACnF,SAAyB,IAAI,sCAAsC;IAEnE,YAAY,OAAO,EAAE,MAAM,EAE1B;CACF;AAED;;;;;GAKG;AACH,qBAAa,oCAAqC,SAAQ,kBAAkB;IAC1E,SAAyB,IAAI,6BAA6B;IAE1D,YAAY,OAAO,EAAE,MAAM,EAE1B;CACF"}
1
+ {"version":3,"file":"sim-cloudfront.error.d.ts","sourceRoot":"","sources":["../../../../src/service/cloudfront/error/sim-cloudfront.error.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CAClC;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;aAGzB,SAAS,EAAE,0BAA0B;IAFvD,YACE,OAAO,EAAE,MAAM,EACC,SAAS,GAAE,0BAA+B,EAG3D;CACF;AAED;;;;;;GAMG;AACH,qBAAa,qCAAsC,SAAQ,kBAAkB;IAC3E,SAAyB,IAAI,8BAA8B;IAE3D,YAAY,OAAO,EAAE,MAAM,EAE1B;CACF;AAED;;;;;GAKG;AACH,qBAAa,qCAAsC,SAAQ,kBAAkB;IAC3E,SAAyB,IAAI,8BAA8B;IAE3D,YAAY,OAAO,EAAE,MAAM,EAE1B;CACF;AAED;;GAEG;AACH,qBAAa,6BAA8B,SAAQ,kBAAkB;IACnE,SAAyB,IAAI,sBAAsB;IAEnD,YAAY,OAAO,EAAE,MAAM,EAE1B;CACF;AAED;;GAEG;AACH,qBAAa,gCAAiC,SAAQ,kBAAkB;IACtE,SAAyB,IAAI,yBAAyB;IAEtD,YAAY,OAAO,EAAE,MAAM,EAE1B;CACF;AAED;;GAEG;AACH,qBAAa,4BAA6B,SAAQ,kBAAkB;IAClE,SAAyB,IAAI,qBAAqB;IAElD,YAAY,OAAO,EAAE,MAAM,EAE1B;CACF;AAED;;;;GAIG;AACH,qBAAa,+BAAgC,SAAQ,kBAAkB;IACrE,SAAyB,IAAI,wBAAwB;IAErD,YAAY,OAAO,EAAE,MAAM,EAE1B;CACF;AAED;;;;GAIG;AACH,qBAAa,iCAAkC,SAAQ,kBAAkB;IACvE,SAAyB,IAAI,0BAA0B;IAEvD,YAAY,OAAO,EAAE,MAAM,EAE1B;CACF;AAED;;;;GAIG;AACH,qBAAa,wCAAyC,SAAQ,kBAAkB;IAC9E,SAAyB,IAAI,iCAAiC;IAE9D,YAAY,OAAO,EAAE,MAAM,EAE1B;CACF;AAED;;;;;;GAMG;AACH,qBAAa,2CAA4C,SAAQ,kBAAkB;IACjF,SAAyB,IAAI,oCAAoC;IAEjE,YAAY,OAAO,EAAE,MAAM,EAE1B;CACF;AAED;;;;;GAKG;AACH,qBAAa,+CAAgD,SAAQ,kBAAkB;IACrF,SAAyB,IAAI,wCAAwC;IAErE,YAAY,OAAO,EAAE,MAAM,EAE1B;CACF;AAED;;;;;GAKG;AACH,qBAAa,uCAAwC,SAAQ,kBAAkB;IAC7E,SAAyB,IAAI,gCAAgC;IAE7D,YAAY,OAAO,EAAE,MAAM,EAE1B;CACF;AAED;;;;;GAKG;AACH,qBAAa,6CAA8C,SAAQ,kBAAkB;IACnF,SAAyB,IAAI,sCAAsC;IAEnE,YAAY,OAAO,EAAE,MAAM,EAE1B;CACF;AAED;;;;;GAKG;AACH,qBAAa,oCAAqC,SAAQ,kBAAkB;IAC1E,SAAyB,IAAI,6BAA6B;IAE1D,YAAY,OAAO,EAAE,MAAM,EAE1B;CACF"}
@@ -93,6 +93,19 @@ export class SimCloudFrontNoSuchResponseHeadersPolicy extends SimCloudFrontError
93
93
  super(message, { httpStatusCode: 404 });
94
94
  }
95
95
  }
96
+ /**
97
+ * Simulated CloudFront InvalidResponseHeadersPolicyId error.
98
+ *
99
+ * What CloudFront answers when a Behavior's `ResponseHeadersPolicyId` names no
100
+ * response headers policy the account holds, at Distribution create or update
101
+ * time rather than when a request first needs the policy.
102
+ */
103
+ export class SimCloudFrontInvalidResponseHeadersPolicyId extends SimCloudFrontError {
104
+ name = "InvalidResponseHeadersPolicyId";
105
+ constructor(message) {
106
+ super(message, { httpStatusCode: 400 });
107
+ }
108
+ }
96
109
  /**
97
110
  * Simulated CloudFront ResponseHeadersPolicyAlreadyExists error.
98
111
  *
@@ -1 +1 @@
1
- {"version":3,"file":"sim-cloudfront.error.js","sourceRoot":"","sources":["../../../../src/service/cloudfront/error/sim-cloudfront.error.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sim-cloudfront.error.js","sourceRoot":"","sources":["../../../../src/service/cloudfront/error/sim-cloudfront.error.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * One entry of a CORS policy's `AccessControlAllowOrigins` list.
3
+ *
4
+ * CloudFront allows the wildcard on its own, meaning every Origin, and as the
5
+ * leftmost subdomain of a host, meaning any one subdomain of it. It allows the
6
+ * wildcard nowhere else: not as a top-level domain (`example.*`), to the right
7
+ * of a subdomain (`test.*.example.org`), within one (`*test.example.org`), or
8
+ * inside a term (`exa*mple.org`).
9
+ *
10
+ * https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/understanding-response-headers-policies.html
11
+ */
12
+ /**
13
+ * Whether an allow-list entry places its wildcard where CloudFront allows one.
14
+ *
15
+ * An entry with no wildcard is always well formed, and so is the bare wildcard.
16
+ */
17
+ export declare function simCfCorsOriginPatternIsValid(pattern: string): boolean;
18
+ /**
19
+ * Whether one allow-list entry matches the `Origin` a request carried.
20
+ *
21
+ * A wildcard entry stands for exactly one label, as a wildcard certificate
22
+ * does, so `*.example.org` matches `https://site.example.org` and does not
23
+ * match `https://deep.site.example.org`. An entry naming no scheme matches the
24
+ * host whichever scheme the request used.
25
+ */
26
+ export declare function simCfCorsOriginPatternMatches(pattern: string, requestOrigin: string): boolean;
27
+ //# sourceMappingURL=sim-cf-cors-origin-pattern.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-cf-cors-origin-pattern.d.ts","sourceRoot":"","sources":["../../../../src/service/cloudfront/response-headers-policy/sim-cf-cors-origin-pattern.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAOH;;;;GAIG;AACH,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAQtE;AAED;;;;;;;GAOG;AACH,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,GACpB,OAAO,CAoBT"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * One entry of a CORS policy's `AccessControlAllowOrigins` list.
3
+ *
4
+ * CloudFront allows the wildcard on its own, meaning every Origin, and as the
5
+ * leftmost subdomain of a host, meaning any one subdomain of it. It allows the
6
+ * wildcard nowhere else: not as a top-level domain (`example.*`), to the right
7
+ * of a subdomain (`test.*.example.org`), within one (`*test.example.org`), or
8
+ * inside a term (`exa*mple.org`).
9
+ *
10
+ * https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/understanding-response-headers-policies.html
11
+ */
12
+ /**
13
+ * Whether an allow-list entry places its wildcard where CloudFront allows one.
14
+ *
15
+ * An entry with no wildcard is always well formed, and so is the bare wildcard.
16
+ */
17
+ export function simCfCorsOriginPatternIsValid(pattern) {
18
+ if (!pattern.includes("*") || pattern === "*") {
19
+ return true;
20
+ }
21
+ const { host } = splitOrigin(pattern);
22
+ return host.startsWith("*.") && !host.slice(2).includes("*");
23
+ }
24
+ /**
25
+ * Whether one allow-list entry matches the `Origin` a request carried.
26
+ *
27
+ * A wildcard entry stands for exactly one label, as a wildcard certificate
28
+ * does, so `*.example.org` matches `https://site.example.org` and does not
29
+ * match `https://deep.site.example.org`. An entry naming no scheme matches the
30
+ * host whichever scheme the request used.
31
+ */
32
+ export function simCfCorsOriginPatternMatches(pattern, requestOrigin) {
33
+ if (pattern === requestOrigin) {
34
+ return true;
35
+ }
36
+ if (!pattern.includes("*")) {
37
+ return false;
38
+ }
39
+ const patternOrigin = splitOrigin(pattern);
40
+ const origin = splitOrigin(requestOrigin);
41
+ if (patternOrigin.scheme !== undefined &&
42
+ patternOrigin.scheme !== origin.scheme) {
43
+ return false;
44
+ }
45
+ return hostMatches(patternOrigin.host, origin.host);
46
+ }
47
+ /**
48
+ * Whether a `*.example.org` host pattern covers the host of a request Origin.
49
+ */
50
+ function hostMatches(patternHost, host) {
51
+ if (!patternHost.startsWith("*.")) {
52
+ return false;
53
+ }
54
+ const suffix = patternHost.slice(1);
55
+ if (!host.endsWith(suffix)) {
56
+ return false;
57
+ }
58
+ const label = host.slice(0, -suffix.length);
59
+ return label.length > 0 && !label.includes(".");
60
+ }
61
+ /**
62
+ * An Origin split into the scheme it names, if any, and the rest of it.
63
+ */
64
+ function splitOrigin(origin) {
65
+ const separator = origin.indexOf("://");
66
+ return separator === -1
67
+ ? { scheme: undefined, host: origin }
68
+ : { scheme: origin.slice(0, separator), host: origin.slice(separator + 3) };
69
+ }
70
+ //# sourceMappingURL=sim-cf-cors-origin-pattern.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-cf-cors-origin-pattern.js","sourceRoot":"","sources":["../../../../src/service/cloudfront/response-headers-policy/sim-cf-cors-origin-pattern.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAOH;;;;GAIG;AACH,MAAM,UAAU,6BAA6B,CAAC,OAAe;IAC3D,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,OAAO,KAAK,GAAG,EAAE,CAAC;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,EAAE,IAAI,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAEtC,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC/D,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,6BAA6B,CAC3C,OAAe,EACf,aAAqB;IAErB,IAAI,OAAO,KAAK,aAAa,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,WAAW,CAAC,aAAa,CAAC,CAAC;IAE1C,IACE,aAAa,CAAC,MAAM,KAAK,SAAS;QAClC,aAAa,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EACtC,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,WAAW,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;AACtD,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAAC,WAAmB,EAAE,IAAY;IACpD,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAClC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEpC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAE5C,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAClD,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAAC,MAAc;IACjC,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAExC,OAAO,SAAS,KAAK,CAAC,CAAC;QACrB,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE;QACrC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;AAChF,CAAC"}
@@ -0,0 +1,44 @@
1
+ interface SimCloudFrontResponseHeadersPolicyCorsProperties {
2
+ readonly allowCredentials: boolean;
3
+ readonly allowHeaders: readonly string[];
4
+ readonly allowMethods: readonly string[];
5
+ readonly allowOrigins: readonly string[];
6
+ readonly exposeHeaders?: readonly string[];
7
+ readonly maxAgeSec?: number;
8
+ readonly originOverride: boolean;
9
+ }
10
+ /**
11
+ * The CORS section of a response headers policy.
12
+ *
13
+ * CloudFront reflects the viewer request's `Origin` header against the
14
+ * configured allow list rather than sending the list itself, so the headers
15
+ * this adds depend on the request they answer: a request naming an Origin
16
+ * the list does not allow gets none of them, the same as CloudFront sending
17
+ * none rather than a mismatched one.
18
+ *
19
+ * https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/understanding-response-headers-policies.html#understanding-response-headers-policies-cors
20
+ */
21
+ export declare class SimCloudFrontResponseHeadersPolicyCors {
22
+ private readonly allowCredentials;
23
+ private readonly allowHeaders;
24
+ private readonly allowMethods;
25
+ private readonly allowOrigins;
26
+ private readonly exposeHeaders;
27
+ private readonly maxAgeSec;
28
+ private readonly originOverride;
29
+ constructor(properties: SimCloudFrontResponseHeadersPolicyCorsProperties);
30
+ /**
31
+ * Set this policy's CORS headers on a response, for the `Origin` header a
32
+ * viewer request carried.
33
+ *
34
+ * `OriginOverride` decides the whole section rather than one header at a
35
+ * time, unlike a custom or security header: without it, an Origin response
36
+ * carrying any CORS header at all keeps every header this section would have
37
+ * set off the response, whether or not the policy names that header.
38
+ */
39
+ apply(headers: Headers, requestOrigin: string | null): void;
40
+ private resolveAllowOrigin;
41
+ private resolvedAllowMethods;
42
+ }
43
+ export {};
44
+ //# sourceMappingURL=sim-cf-response-headers-policy-cors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-cf-response-headers-policy-cors.d.ts","sourceRoot":"","sources":["../../../../src/service/cloudfront/response-headers-policy/sim-cf-response-headers-policy-cors.ts"],"names":[],"mappings":"AA4BA,UAAU,gDAAgD;IACxD,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;CAClC;AAED;;;;;;;;;;GAUG;AACH,qBAAa,sCAAsC;IACjD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAU;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAoB;IACjD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAoB;IACjD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAoB;IACjD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAoB;IAClD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqB;IAC/C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAU;IAEzC,YAAY,UAAU,EAAE,gDAAgD,EAQvE;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CA8C1D;IAED,OAAO,CAAC,kBAAkB;IAgB1B,OAAO,CAAC,oBAAoB;CAK7B"}
@@ -0,0 +1,111 @@
1
+ import { simCfCorsOriginPatternMatches } from "./sim-cf-cors-origin-pattern.js";
2
+ const allAccessControlMethods = [
3
+ "GET",
4
+ "DELETE",
5
+ "HEAD",
6
+ "OPTIONS",
7
+ "PATCH",
8
+ "POST",
9
+ "PUT",
10
+ ];
11
+ /**
12
+ * The response headers a CORS section decides, whether or not it sets each.
13
+ *
14
+ * Without `OriginOverride`, an Origin response carrying any one of these keeps
15
+ * the whole section off, so the set matters rather than just the ones the
16
+ * policy would have added.
17
+ */
18
+ const corsResponseHeaders = [
19
+ "Access-Control-Allow-Origin",
20
+ "Access-Control-Allow-Methods",
21
+ "Access-Control-Allow-Headers",
22
+ "Access-Control-Allow-Credentials",
23
+ "Access-Control-Expose-Headers",
24
+ "Access-Control-Max-Age",
25
+ ];
26
+ /**
27
+ * The CORS section of a response headers policy.
28
+ *
29
+ * CloudFront reflects the viewer request's `Origin` header against the
30
+ * configured allow list rather than sending the list itself, so the headers
31
+ * this adds depend on the request they answer: a request naming an Origin
32
+ * the list does not allow gets none of them, the same as CloudFront sending
33
+ * none rather than a mismatched one.
34
+ *
35
+ * https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/understanding-response-headers-policies.html#understanding-response-headers-policies-cors
36
+ */
37
+ export class SimCloudFrontResponseHeadersPolicyCors {
38
+ allowCredentials;
39
+ allowHeaders;
40
+ allowMethods;
41
+ allowOrigins;
42
+ exposeHeaders;
43
+ maxAgeSec;
44
+ originOverride;
45
+ constructor(properties) {
46
+ this.allowCredentials = properties.allowCredentials;
47
+ this.allowHeaders = properties.allowHeaders;
48
+ this.allowMethods = properties.allowMethods;
49
+ this.allowOrigins = properties.allowOrigins;
50
+ this.exposeHeaders = properties.exposeHeaders ?? [];
51
+ this.maxAgeSec = properties.maxAgeSec;
52
+ this.originOverride = properties.originOverride;
53
+ }
54
+ /**
55
+ * Set this policy's CORS headers on a response, for the `Origin` header a
56
+ * viewer request carried.
57
+ *
58
+ * `OriginOverride` decides the whole section rather than one header at a
59
+ * time, unlike a custom or security header: without it, an Origin response
60
+ * carrying any CORS header at all keeps every header this section would have
61
+ * set off the response, whether or not the policy names that header.
62
+ */
63
+ apply(headers, requestOrigin) {
64
+ if (!this.originOverride &&
65
+ corsResponseHeaders.some((n) => headers.has(n))) {
66
+ return;
67
+ }
68
+ const allowOrigin = this.resolveAllowOrigin(requestOrigin);
69
+ if (allowOrigin === undefined) {
70
+ return;
71
+ }
72
+ headers.set("Access-Control-Allow-Origin", allowOrigin);
73
+ // CloudFront varies the cache on Origin whenever the header it sent back
74
+ // was chosen for this request rather than good for every request, so a
75
+ // cached response for one Origin is never served to a different one.
76
+ if (allowOrigin !== "*") {
77
+ headers.append("Vary", "Origin");
78
+ }
79
+ headers.set("Access-Control-Allow-Methods", this.resolvedAllowMethods().join(","));
80
+ headers.set("Access-Control-Allow-Headers", this.allowHeaders.join(","));
81
+ // A false Access-Control-Allow-Credentials is not a header value the
82
+ // fetch spec recognises, so CloudFront leaves it off rather than sending
83
+ // a value meaning the same as absence.
84
+ if (this.allowCredentials) {
85
+ headers.set("Access-Control-Allow-Credentials", "true");
86
+ }
87
+ if (this.exposeHeaders.length > 0) {
88
+ headers.set("Access-Control-Expose-Headers", this.exposeHeaders.join(","));
89
+ }
90
+ if (this.maxAgeSec !== undefined) {
91
+ headers.set("Access-Control-Max-Age", String(this.maxAgeSec));
92
+ }
93
+ }
94
+ resolveAllowOrigin(requestOrigin) {
95
+ if (this.allowOrigins.includes("*")) {
96
+ return "*";
97
+ }
98
+ if (requestOrigin === null) {
99
+ return undefined;
100
+ }
101
+ return this.allowOrigins.some((pattern) => simCfCorsOriginPatternMatches(pattern, requestOrigin))
102
+ ? requestOrigin
103
+ : undefined;
104
+ }
105
+ resolvedAllowMethods() {
106
+ return this.allowMethods.includes("ALL")
107
+ ? allAccessControlMethods
108
+ : this.allowMethods;
109
+ }
110
+ }
111
+ //# sourceMappingURL=sim-cf-response-headers-policy-cors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-cf-response-headers-policy-cors.js","sourceRoot":"","sources":["../../../../src/service/cloudfront/response-headers-policy/sim-cf-response-headers-policy-cors.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,15 @@
1
1
  import type { Brand } from "../../../util/brand.type.js";
2
2
  import type { SimCloudFrontResponseHeader } from "./sim-cf-response-header.js";
3
+ import type { SimCloudFrontResponseHeadersPolicyCors } from "./sim-cf-response-headers-policy-cors.js";
3
4
  export type SimCloudFrontResponseHeadersPolicyId = Brand<string, "SimCloudFrontResponseHeadersPolicyId">;
4
5
  interface SimCloudFrontResponseHeadersPolicyProperties {
5
6
  readonly id?: SimCloudFrontResponseHeadersPolicyId;
6
7
  readonly name: string;
7
8
  readonly customHeaders?: readonly SimCloudFrontResponseHeader[];
8
9
  readonly headersToRemove?: readonly string[];
10
+ readonly securityHeaders?: readonly SimCloudFrontResponseHeader[];
11
+ readonly serverTiming?: SimCloudFrontResponseHeader | undefined;
12
+ readonly cors?: SimCloudFrontResponseHeadersPolicyCors | undefined;
9
13
  }
10
14
  /**
11
15
  * Simulated CloudFront response headers policy.
@@ -21,14 +25,18 @@ export declare class SimCloudFrontResponseHeadersPolicy {
21
25
  readonly name: string;
22
26
  readonly customHeaders: readonly SimCloudFrontResponseHeader[];
23
27
  readonly headersToRemove: readonly string[];
28
+ readonly securityHeaders: readonly SimCloudFrontResponseHeader[];
29
+ readonly serverTiming: SimCloudFrontResponseHeader | undefined;
30
+ readonly cors: SimCloudFrontResponseHeadersPolicyCors | undefined;
24
31
  constructor(properties: SimCloudFrontResponseHeadersPolicyProperties);
25
32
  /**
26
- * Return the response this policy makes of one the Origin gave back.
33
+ * Return the response this policy makes of one the Origin gave back, for
34
+ * the `Origin` header the viewer request carried.
27
35
  *
28
36
  * The body is passed straight through. Only the headers change, so a response
29
37
  * whose body has already been read stays readable.
30
38
  */
31
- apply(response: Response): Response;
39
+ apply(response: Response, requestOrigin?: string | null): Response;
32
40
  }
33
41
  export type SimCloudFrontResponseHeadersPolicyMap = Map<SimCloudFrontResponseHeadersPolicyId, SimCloudFrontResponseHeadersPolicy>;
34
42
  export {};