@kensio/yulin 0.10.0 → 0.11.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 (120) hide show
  1. package/dist/serve/controller/sim-service-controller.d.ts +1 -1
  2. package/dist/serve/controller/sim-service-controller.d.ts.map +1 -1
  3. package/dist/serve/http/sim-aws-local-server.js +1 -1
  4. package/dist/serve/http/sim-aws-local-server.js.map +1 -1
  5. package/dist/serve/http/sim-aws-local-url.d.ts +4 -0
  6. package/dist/serve/http/sim-aws-local-url.d.ts.map +1 -1
  7. package/dist/serve/http/sim-aws-local-url.js +9 -1
  8. package/dist/serve/http/sim-aws-local-url.js.map +1 -1
  9. package/dist/serve/resolve/sim-aws-local-service-resolver.d.ts +1 -0
  10. package/dist/serve/resolve/sim-aws-local-service-resolver.d.ts.map +1 -1
  11. package/dist/serve/resolve/sim-aws-local-service-resolver.js +27 -1
  12. package/dist/serve/resolve/sim-aws-local-service-resolver.js.map +1 -1
  13. package/dist/service/aws/sim-aws-account-region-scope.d.ts +8 -1
  14. package/dist/service/aws/sim-aws-account-region-scope.d.ts.map +1 -1
  15. package/dist/service/aws/sim-aws-account-region-scope.js +10 -1
  16. package/dist/service/aws/sim-aws-account-region-scope.js.map +1 -1
  17. package/dist/service/aws/sim-aws-account.d.ts +3 -0
  18. package/dist/service/aws/sim-aws-account.d.ts.map +1 -1
  19. package/dist/service/aws/sim-aws-account.js +3 -0
  20. package/dist/service/aws/sim-aws-account.js.map +1 -1
  21. package/dist/service/aws/sim-aws-region.d.ts +4 -1
  22. package/dist/service/aws/sim-aws-region.d.ts.map +1 -1
  23. package/dist/service/aws/sim-aws-region.js +4 -1
  24. package/dist/service/aws/sim-aws-region.js.map +1 -1
  25. package/dist/service/aws/sim-aws.d.ts +16 -0
  26. package/dist/service/aws/sim-aws.d.ts.map +1 -1
  27. package/dist/service/aws/sim-aws.js +28 -0
  28. package/dist/service/aws/sim-aws.js.map +1 -1
  29. package/dist/service/cloudfront/behaviour/sim-cloud-front-behavior.d.ts +14 -0
  30. package/dist/service/cloudfront/behaviour/sim-cloud-front-behavior.d.ts.map +1 -0
  31. package/dist/service/cloudfront/behaviour/sim-cloud-front-behavior.js +13 -0
  32. package/dist/service/cloudfront/behaviour/sim-cloud-front-behavior.js.map +1 -0
  33. package/dist/service/cloudfront/command/create-distribution/create-distribution.handler.d.ts +29 -0
  34. package/dist/service/cloudfront/command/create-distribution/create-distribution.handler.d.ts.map +1 -0
  35. package/dist/service/cloudfront/command/create-distribution/create-distribution.handler.js +114 -0
  36. package/dist/service/cloudfront/command/create-distribution/create-distribution.handler.js.map +1 -0
  37. package/dist/service/cloudfront/controller/sim-cloudfront-controller.d.ts +20 -0
  38. package/dist/service/cloudfront/controller/sim-cloudfront-controller.d.ts.map +1 -0
  39. package/dist/service/cloudfront/controller/sim-cloudfront-controller.js +41 -0
  40. package/dist/service/cloudfront/controller/sim-cloudfront-controller.js.map +1 -0
  41. package/dist/service/cloudfront/distribution/sim-cloudfront-distribution.d.ts +47 -0
  42. package/dist/service/cloudfront/distribution/sim-cloudfront-distribution.d.ts.map +1 -0
  43. package/dist/service/cloudfront/distribution/sim-cloudfront-distribution.js +64 -0
  44. package/dist/service/cloudfront/distribution/sim-cloudfront-distribution.js.map +1 -0
  45. package/dist/service/cloudfront/install/install-sim-cloudfront.d.ts +18 -0
  46. package/dist/service/cloudfront/install/install-sim-cloudfront.d.ts.map +1 -0
  47. package/dist/service/cloudfront/install/install-sim-cloudfront.js +43 -0
  48. package/dist/service/cloudfront/install/install-sim-cloudfront.js.map +1 -0
  49. package/dist/service/cloudfront/origin/sim-cloudfront-origin.d.ts +8 -0
  50. package/dist/service/cloudfront/origin/sim-cloudfront-origin.d.ts.map +1 -0
  51. package/dist/service/cloudfront/origin/sim-cloudfront-origin.js +2 -0
  52. package/dist/service/cloudfront/origin/sim-cloudfront-origin.js.map +1 -0
  53. package/dist/service/cloudfront/origin/sim-cloudfront-req-res.d.ts +8 -0
  54. package/dist/service/cloudfront/origin/sim-cloudfront-req-res.d.ts.map +1 -0
  55. package/dist/service/cloudfront/origin/sim-cloudfront-req-res.js +2 -0
  56. package/dist/service/cloudfront/origin/sim-cloudfront-req-res.js.map +1 -0
  57. package/dist/service/cloudfront/origin/sim-cloudfront-s3-origin.d.ts +38 -0
  58. package/dist/service/cloudfront/origin/sim-cloudfront-s3-origin.d.ts.map +1 -0
  59. package/dist/service/cloudfront/origin/sim-cloudfront-s3-origin.js +108 -0
  60. package/dist/service/cloudfront/origin/sim-cloudfront-s3-origin.js.map +1 -0
  61. package/dist/service/cloudfront/resolver/sim-cloud-front-behavior-resolver.d.ts +17 -0
  62. package/dist/service/cloudfront/resolver/sim-cloud-front-behavior-resolver.d.ts.map +1 -0
  63. package/dist/service/cloudfront/resolver/sim-cloud-front-behavior-resolver.js +44 -0
  64. package/dist/service/cloudfront/resolver/sim-cloud-front-behavior-resolver.js.map +1 -0
  65. package/dist/service/cloudfront/resolver/sim-cloudfront-path-pattern.d.ts +26 -0
  66. package/dist/service/cloudfront/resolver/sim-cloudfront-path-pattern.d.ts.map +1 -0
  67. package/dist/service/cloudfront/resolver/sim-cloudfront-path-pattern.js +61 -0
  68. package/dist/service/cloudfront/resolver/sim-cloudfront-path-pattern.js.map +1 -0
  69. package/dist/service/cloudfront/router/sim-cloud-front-distro-router.d.ts +26 -0
  70. package/dist/service/cloudfront/router/sim-cloud-front-distro-router.d.ts.map +1 -0
  71. package/dist/service/cloudfront/router/sim-cloud-front-distro-router.js +58 -0
  72. package/dist/service/cloudfront/router/sim-cloud-front-distro-router.js.map +1 -0
  73. package/dist/service/cloudfront/sim-cloud-front-registry.d.ts +22 -0
  74. package/dist/service/cloudfront/sim-cloud-front-registry.d.ts.map +1 -0
  75. package/dist/service/cloudfront/sim-cloud-front-registry.js +36 -0
  76. package/dist/service/cloudfront/sim-cloud-front-registry.js.map +1 -0
  77. package/dist/service/cloudfront/sim-cloudfront.d.ts +24 -0
  78. package/dist/service/cloudfront/sim-cloudfront.d.ts.map +1 -0
  79. package/dist/service/cloudfront/sim-cloudfront.js +32 -0
  80. package/dist/service/cloudfront/sim-cloudfront.js.map +1 -0
  81. package/dist/service/dynamodb/command/create-table/create-table.handler.js +1 -1
  82. package/dist/service/dynamodb/command/create-table/create-table.handler.js.map +1 -1
  83. package/dist/service/dynamodb/table/dynamodb-key-schema.js +1 -1
  84. package/dist/service/dynamodb/table/dynamodb-key-schema.js.map +1 -1
  85. package/dist/service/dynamodb/table/dynamodb-table.js +1 -1
  86. package/dist/service/dynamodb/table/dynamodb-table.js.map +1 -1
  87. package/dist/service/s3/bucket/sim-s3-bucket.d.ts +5 -2
  88. package/dist/service/s3/bucket/sim-s3-bucket.d.ts.map +1 -1
  89. package/dist/service/s3/bucket/sim-s3-bucket.js +1 -1
  90. package/dist/service/s3/bucket/sim-s3-bucket.js.map +1 -1
  91. package/dist/service/s3/command/create-bucket/create-bucket.handler.js +1 -1
  92. package/dist/service/s3/command/create-bucket/create-bucket.handler.js.map +1 -1
  93. package/dist/service/s3/command/get-object/get-object.handler.js +1 -1
  94. package/dist/service/s3/command/get-object/get-object.handler.js.map +1 -1
  95. package/dist/service/s3/command/list-objects/list-objects.handler.js +1 -1
  96. package/dist/service/s3/command/list-objects/list-objects.handler.js.map +1 -1
  97. package/dist/service/s3/command/put-bucket-website/put-bucket-website.handler.d.ts.map +1 -1
  98. package/dist/service/s3/command/put-bucket-website/put-bucket-website.handler.js +1 -2
  99. package/dist/service/s3/command/put-bucket-website/put-bucket-website.handler.js.map +1 -1
  100. package/dist/service/s3/command/put-object/put-object.handler.js +1 -1
  101. package/dist/service/s3/command/put-object/put-object.handler.js.map +1 -1
  102. package/dist/service/s3/install/install-sim-s3.d.ts +7 -0
  103. package/dist/service/s3/install/install-sim-s3.d.ts.map +1 -1
  104. package/dist/service/s3/install/install-sim-s3.js +22 -3
  105. package/dist/service/s3/install/install-sim-s3.js.map +1 -1
  106. package/dist/service/s3/serve/sim-s3-controller.d.ts +1 -1
  107. package/dist/service/s3/serve/sim-s3-controller.d.ts.map +1 -1
  108. package/dist/service/s3/serve/sim-s3-controller.js +3 -3
  109. package/dist/service/s3/serve/sim-s3-controller.js.map +1 -1
  110. package/dist/service/s3/sim-s3-global-registry.d.ts +1 -0
  111. package/dist/service/s3/sim-s3-global-registry.d.ts.map +1 -1
  112. package/dist/service/s3/sim-s3-global-registry.js +1 -0
  113. package/dist/service/s3/sim-s3-global-registry.js.map +1 -1
  114. package/dist/service/s3/sim-s3.js +1 -1
  115. package/dist/service/s3/sim-s3.js.map +1 -1
  116. package/dist/util/defined/defined.d.ts +9 -0
  117. package/dist/util/defined/defined.d.ts.map +1 -0
  118. package/dist/util/defined/defined.js +21 -0
  119. package/dist/util/defined/defined.js.map +1 -0
  120. package/package.json +9 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-distribution.handler.js","sourceRoot":"","sources":["../../../../../src/service/cloudfront/command/create-distribution/create-distribution.handler.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,EACL,yBAAyB,GAE1B,MAAM,mDAAmD,CAAC;AAG3D,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EACL,qBAAqB,GAEtB,MAAM,0CAA0C,CAAC;AAMlD;;;;GAIG;AACH,MAAM,OAAO,gCAAgC;IAKxB;IACA;IAIA;IACA;IAPnB,YACmB,SAA0B,EAC1B,aAGhB,EACgB,kBAAyC,EACzC,gBAA+C;QAN/C,cAAS,GAAT,SAAS,CAAiB;QAC1B,kBAAa,GAAb,aAAa,CAG7B;QACgB,uBAAkB,GAAlB,kBAAkB,CAAuB;QACzC,qBAAgB,GAAhB,gBAAgB,CAA+B;IAC/D,CAAC;IAEJ;;OAEG;IACH,KAAK,CAAC,MAAM,CACV,GAA8B;QAE9B,MAAM,MAAM,EAAE,CAAC;QAEf,MAAM,kBAAkB,GAAG,GAAG,CAAC,KAAK,CAAC,kBAAkB,CAAC;QACxD,aAAa,CACX,kBAAkB,EAClB,8CAA8C,CAC/C,CAAC;QAEF,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,CAAC;QACxE,MAAM,YAAY,GAAG,IAAI,yBAAyB,CAAC,cAAc,CAAC,CAAC;QAEnE,IAAI,CAAC,qBAAqB,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC;QAE7D,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;QAClE,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAC1C,YAAY,CAAC,cAAc,EAC3B,IAAI,CAAC,SAAS,CACf,CAAC;QAEF,OAAO;YACL,YAAY,EAAE;gBACZ,EAAE,EAAE,YAAY,CAAC,cAAc;gBAC/B,GAAG,EAAE,uBAAuB,IAAI,CAAC,SAAS,iBAAiB,YAAY,CAAC,cAAc,EAAE;gBACxF,MAAM,EAAE,UAAU;gBAClB,gBAAgB,EAAE,IAAI,IAAI,EAAE;gBAC5B,6BAA6B,EAAE,CAAC;gBAChC,UAAU,EAAE,GAAG,YAAY,CAAC,cAAc,CAAC,WAAW,EAAE,iBAAiB;gBACzE,kBAAkB,EAAE,GAAG,CAAC,KAAK,CAAC,kBAAkB;aACjD;YACD,QAAQ,EAAE,4DAA4D,YAAY,CAAC,cAAc,EAAE;YACnG,SAAS,EAAE,EAAE;SACd,CAAC;IACJ,CAAC;IAEO,qBAAqB,CAC3B,YAAuC,EACvC,kBAAsC;QAEtC,KAAK,MAAM,KAAK,IAAI,kBAAkB,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,EAAE,CAAC;YAC5D,YAAY,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAC7C,CAAC;QAED,KAAK,MAAM,MAAM,IAAI,kBAAkB,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,EAAE,CAAC;YAC7D,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QAC7C,CAAC;QAED,YAAY,CAAC,WAAW,CACtB,IAAI,CAAC,gCAAgC,CACnC,kBAAkB,CAAC,oBAAoB,CACxC,CACF,CAAC;QAEF,KAAK,MAAM,aAAa,IAAI,kBAAkB,CAAC,cAAc,EAAE,KAAK;YAClE,EAAE,EAAE,CAAC;YACL,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,yBAAyB,CAAC,aAAa,CAAC,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IAEO,eAAe,CACrB,YAAuC,EACvC,MAAc;QAEd,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE,sBAAsB,CAAC,CAAC;QACjD,aAAa,CAAC,MAAM,CAAC,UAAU,EAAE,8BAA8B,CAAC,CAAC;QAEjE,IAAI,MAAM,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;YACxC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAExD,aAAa,CACX,MAAM,EACN,uCAAuC,MAAM,CAAC,UAAU,EAAE,CAC3D,CAAC;YAEF,YAAY,CAAC,SAAS,CACpB,MAAM,CAAC,EAAE,EACT,IAAI,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,CACrD,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,IAAI,KAAK,CACb,qDAAqD,MAAM,CAAC,EAAE,EAAE,CACjE,CAAC;IACJ,CAAC;IAEO,gCAAgC,CACtC,aAA+C;QAE/C,aAAa,CAAC,aAAa,EAAE,iCAAiC,CAAC,CAAC;QAEhE,OAAO;YACL,gBAAgB,EAAE,IAAI,CAAC,sBAAsB,CAC3C,aAAa,CAAC,cAAc,CAC7B;YACD,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,cAAc,EAAE;gBACzD,KAAK;gBACL,MAAM;aACP,CAAC;YACF,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,cAAc,EAAE,aAAa,EAAE;gBACvE,KAAK;gBACL,MAAM;aACP,CAAC;YACF,GAAG,CAAC,aAAa,CAAC,oBAAoB,KAAK,SAAS;gBAClD,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,oBAAoB,EAAE,aAAa,CAAC,oBAAoB,EAAE,CAAC;SAClE,CAAC;IACJ,CAAC;IAEO,yBAAyB,CAC/B,aAA4B;QAE5B,aAAa,CACX,aAAa,CAAC,WAAW,EACzB,sCAAsC,CACvC,CAAC;QAEF,OAAO;YACL,WAAW,EAAE,aAAa,CAAC,WAAW;YACtC,gBAAgB,EAAE,IAAI,CAAC,sBAAsB,CAC3C,aAAa,CAAC,cAAc,CAC7B;YACD,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,cAAc,EAAE;gBACzD,KAAK;gBACL,MAAM;aACP,CAAC;YACF,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,cAAc,EAAE,aAAa,EAAE;gBACvE,KAAK;gBACL,MAAM;aACP,CAAC;YACF,GAAG,CAAC,aAAa,CAAC,oBAAoB,KAAK,SAAS;gBAClD,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,oBAAoB,EAAE,aAAa,CAAC,oBAAoB,EAAE,CAAC;SAClE,CAAC;IACJ,CAAC;IAEO,sBAAsB,CAAC,cAAkC;QAC/D,aAAa,CAAC,cAAc,EAAE,yCAAyC,CAAC,CAAC;QAEzE,OAAO,cAAc,CAAC;IACxB,CAAC;IAEO,OAAO,CACb,OAAyC,EACzC,QAAkB;QAElB,OAAO,IAAI,GAAG,CAAC,OAAO,EAAE,KAAK,IAAI,QAAQ,CAAC,CAAC;IAC7C,CAAC;CACF"}
@@ -0,0 +1,20 @@
1
+ import type { SimAwsServiceController, SimAwsServiceTarget } from "../../../serve/controller/sim-service-controller.js";
2
+ import type { SimCloudFrontDistroRouter } from "../router/sim-cloud-front-distro-router.js";
3
+ import type { SimCloudFrontBehaviorResolver } from "../resolver/sim-cloud-front-behavior-resolver.js";
4
+ import { SimCloudFront } from "../sim-cloudfront.js";
5
+ /**
6
+ * Root CloudFront request controller within an Account scope.
7
+ * Controls the request processing workflow across the other simulated
8
+ * CloudFront components.
9
+ */
10
+ export declare class SimCloudFrontServiceController implements SimAwsServiceController {
11
+ private readonly distroRouter;
12
+ private readonly behaviourResolver;
13
+ constructor(cloudFront?: SimCloudFront, distroRouter?: SimCloudFrontDistroRouter, behaviourResolver?: SimCloudFrontBehaviorResolver);
14
+ /**
15
+ * Handle a sim CloudFront request by coordinating across other sim CloudFront
16
+ * components.
17
+ */
18
+ handleRequest(_target: SimAwsServiceTarget, req: Request): Promise<Response>;
19
+ }
20
+ //# sourceMappingURL=sim-cloudfront-controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-cloudfront-controller.d.ts","sourceRoot":"","sources":["../../../../src/service/cloudfront/controller/sim-cloudfront-controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,uBAAuB,EACvB,mBAAmB,EACpB,MAAM,qDAAqD,CAAC;AAC7D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAC;AAE5F,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,kDAAkD,CAAC;AAEtG,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD;;;;GAIG;AACH,qBAAa,8BAA+B,YAAW,uBAAuB;IAC5E,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA4B;IACzD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAgC;gBAGhE,UAAU,GAAE,aAAmC,EAC/C,YAAY,GAAE,yBAEb,EACD,iBAAiB,GAAE,6BAA0E;IAM/F;;;OAGG;IACG,aAAa,CACjB,OAAO,EAAE,mBAAmB,EAC5B,GAAG,EAAE,OAAO,GACX,OAAO,CAAC,QAAQ,CAAC;CA2BrB"}
@@ -0,0 +1,41 @@
1
+ import { SimCloudFrontDistroRouter as DefaultSimCloudFrontDistroRouter } from "../router/sim-cloud-front-distro-router.js";
2
+ import { SimCloudFrontBehaviorResolver as DefaultSimCloudFrontBehaviorResolver } from "../resolver/sim-cloud-front-behavior-resolver.js";
3
+ import { SimCloudFront } from "../sim-cloudfront.js";
4
+ /**
5
+ * Root CloudFront request controller within an Account scope.
6
+ * Controls the request processing workflow across the other simulated
7
+ * CloudFront components.
8
+ */
9
+ export class SimCloudFrontServiceController {
10
+ distroRouter;
11
+ behaviourResolver;
12
+ constructor(cloudFront = new SimCloudFront(), distroRouter = new DefaultSimCloudFrontDistroRouter(cloudFront.getDistributions()), behaviourResolver = new DefaultSimCloudFrontBehaviorResolver()) {
13
+ this.distroRouter = distroRouter;
14
+ this.behaviourResolver = behaviourResolver;
15
+ }
16
+ /**
17
+ * Handle a sim CloudFront request by coordinating across other sim CloudFront
18
+ * components.
19
+ */
20
+ async handleRequest(_target, req) {
21
+ const distro = this.distroRouter.distroForRequest(req);
22
+ if (distro === undefined) {
23
+ return new Response("Suitable sim CloudFront Distribution not found", {
24
+ status: 404,
25
+ });
26
+ }
27
+ const behaviour = this.behaviourResolver.resolve(req, distro);
28
+ const origin = distro.getOrigin(behaviour.targetOriginName);
29
+ if (origin === undefined) {
30
+ return new Response(`Sim CloudFront Distribution misconfigured for Origin ${behaviour.targetOriginName}`, {
31
+ status: 501,
32
+ });
33
+ }
34
+ return await origin.fetch({
35
+ req,
36
+ distribution: distro,
37
+ behavior: behaviour,
38
+ });
39
+ }
40
+ }
41
+ //# sourceMappingURL=sim-cloudfront-controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-cloudfront-controller.js","sourceRoot":"","sources":["../../../../src/service/cloudfront/controller/sim-cloudfront-controller.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,yBAAyB,IAAI,gCAAgC,EAAE,MAAM,4CAA4C,CAAC;AAE3H,OAAO,EAAE,6BAA6B,IAAI,oCAAoC,EAAE,MAAM,kDAAkD,CAAC;AACzI,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD;;;;GAIG;AACH,MAAM,OAAO,8BAA8B;IACxB,YAAY,CAA4B;IACxC,iBAAiB,CAAgC;IAElE,YACE,aAA4B,IAAI,aAAa,EAAE,EAC/C,eAA0C,IAAI,gCAAgC,CAC5E,UAAU,CAAC,gBAAgB,EAAE,CAC9B,EACD,oBAAmD,IAAI,oCAAoC,EAAE;QAE7F,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;IAC7C,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,aAAa,CACjB,OAA4B,EAC5B,GAAY;QAEZ,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAEvD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,IAAI,QAAQ,CAAC,gDAAgD,EAAE;gBACpE,MAAM,EAAE,GAAG;aACZ,CAAC,CAAC;QACL,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAE9D,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QAC5D,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,IAAI,QAAQ,CACjB,wDAAwD,SAAS,CAAC,gBAAgB,EAAE,EACpF;gBACE,MAAM,EAAE,GAAG;aACZ,CACF,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,MAAM,CAAC,KAAK,CAAC;YACxB,GAAG;YACH,YAAY,EAAE,MAAM;YACpB,QAAQ,EAAE,SAAS;SACpB,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -0,0 +1,47 @@
1
+ import type { Brand } from "../../../util/brand.type.js";
2
+ import type { SimCloudFrontOrigin } from "../origin/sim-cloudfront-origin.js";
3
+ import type { SimCloudFrontBehavior } from "../behaviour/sim-cloud-front-behavior.js";
4
+ export type SimCloudFrontDistributionId = Brand<string, "SimCloudFrontDistributionId">;
5
+ /**
6
+ * Simulated CloudFront Distribution.
7
+ */
8
+ export declare class SimCloudFrontDistribution {
9
+ readonly distributionId: SimCloudFrontDistributionId;
10
+ private readonly alternateDomainNames;
11
+ readonly behaviors: SimCloudFrontBehavior[];
12
+ private readonly origins;
13
+ constructor(distributionId?: SimCloudFrontDistributionId);
14
+ /**
15
+ * Get the alternate domain names for this sim Distribution.
16
+ */
17
+ getAlternateDomainNames(): ReadonlySet<string>;
18
+ /**
19
+ * Get the sim Origins of this Distribution by Origin name.
20
+ */
21
+ getOrigins(): ReadonlyMap<string, SimCloudFrontOrigin>;
22
+ /**
23
+ * Add an alternate domain name for this sim Distribution.
24
+ */
25
+ addAlternateDomainName(alternateDomainName: string): void;
26
+ /**
27
+ * Add a Behavior to this sim Distribution.
28
+ */
29
+ addBehavior(behavior: SimCloudFrontBehavior): void;
30
+ /**
31
+ * Add an Origin to this sim Distribution.
32
+ */
33
+ addOrigin(originName: string, origin: SimCloudFrontOrigin): void;
34
+ /**
35
+ * Check whether this sim Distribution has a particular alternate domain name.
36
+ */
37
+ hasAlternateDomainName(alternateDomainName: string): boolean;
38
+ /**
39
+ * Get a sim Origin of this Distribution by Origin name.
40
+ */
41
+ getOrigin(originName: string): SimCloudFrontOrigin | undefined;
42
+ }
43
+ /**
44
+ * Generate a fake sim CloudFront Distribution ID.
45
+ */
46
+ export declare function makeDistributionId(): SimCloudFrontDistributionId;
47
+ //# sourceMappingURL=sim-cloudfront-distribution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-cloudfront-distribution.d.ts","sourceRoot":"","sources":["../../../../src/service/cloudfront/distribution/sim-cloudfront-distribution.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AAGtF,MAAM,MAAM,2BAA2B,GAAG,KAAK,CAC7C,MAAM,EACN,6BAA6B,CAC9B,CAAC;AAEF;;GAEG;AACH,qBAAa,yBAAyB;aAMlB,cAAc,EAAE,2BAA2B;IAL7D,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAqB;IAC1D,SAAgB,SAAS,EAAE,qBAAqB,EAAE,CAAM;IACxD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0C;gBAGhD,cAAc,GAAE,2BAAkD;IAGpF;;OAEG;IACH,uBAAuB,IAAI,WAAW,CAAC,MAAM,CAAC;IAI9C;;OAEG;IACH,UAAU,IAAI,WAAW,CAAC,MAAM,EAAE,mBAAmB,CAAC;IAItD;;OAEG;IACH,sBAAsB,CAAC,mBAAmB,EAAE,MAAM,GAAG,IAAI;IAIzD;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,qBAAqB,GAAG,IAAI;IAIlD;;OAEG;IACH,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,GAAG,IAAI;IAIhE;;OAEG;IACH,sBAAsB,CAAC,mBAAmB,EAAE,MAAM,GAAG,OAAO;IAI5D;;OAEG;IACH,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS;CAG/D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,2BAA2B,CAKhE"}
@@ -0,0 +1,64 @@
1
+ import { faker } from "@faker-js/faker";
2
+ /**
3
+ * Simulated CloudFront Distribution.
4
+ */
5
+ export class SimCloudFrontDistribution {
6
+ distributionId;
7
+ alternateDomainNames = new Set();
8
+ behaviors = [];
9
+ origins = new Map();
10
+ constructor(distributionId = makeDistributionId()) {
11
+ this.distributionId = distributionId;
12
+ }
13
+ /**
14
+ * Get the alternate domain names for this sim Distribution.
15
+ */
16
+ getAlternateDomainNames() {
17
+ return this.alternateDomainNames;
18
+ }
19
+ /**
20
+ * Get the sim Origins of this Distribution by Origin name.
21
+ */
22
+ getOrigins() {
23
+ return this.origins;
24
+ }
25
+ /**
26
+ * Add an alternate domain name for this sim Distribution.
27
+ */
28
+ addAlternateDomainName(alternateDomainName) {
29
+ this.alternateDomainNames.add(alternateDomainName);
30
+ }
31
+ /**
32
+ * Add a Behavior to this sim Distribution.
33
+ */
34
+ addBehavior(behavior) {
35
+ this.behaviors.push(behavior);
36
+ }
37
+ /**
38
+ * Add an Origin to this sim Distribution.
39
+ */
40
+ addOrigin(originName, origin) {
41
+ this.origins.set(originName, origin);
42
+ }
43
+ /**
44
+ * Check whether this sim Distribution has a particular alternate domain name.
45
+ */
46
+ hasAlternateDomainName(alternateDomainName) {
47
+ return this.alternateDomainNames.has(alternateDomainName);
48
+ }
49
+ /**
50
+ * Get a sim Origin of this Distribution by Origin name.
51
+ */
52
+ getOrigin(originName) {
53
+ return this.origins.get(originName);
54
+ }
55
+ }
56
+ /**
57
+ * Generate a fake sim CloudFront Distribution ID.
58
+ */
59
+ export function makeDistributionId() {
60
+ return faker.helpers.fromRegExp(
61
+ // eslint-disable-next-line unicorn/better-regex -- fromRegExp needs 0-9 not \d
62
+ /E[0-9A-Z]{13}/);
63
+ }
64
+ //# sourceMappingURL=sim-cloudfront-distribution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-cloudfront-distribution.js","sourceRoot":"","sources":["../../../../src/service/cloudfront/distribution/sim-cloudfront-distribution.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAOxC;;GAEG;AACH,MAAM,OAAO,yBAAyB;IAMlB;IALD,oBAAoB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC1C,SAAS,GAA4B,EAAE,CAAC;IACvC,OAAO,GAAG,IAAI,GAAG,EAA+B,CAAC;IAElE,YACkB,iBAA8C,kBAAkB,EAAE;QAAlE,mBAAc,GAAd,cAAc,CAAoD;IACjF,CAAC;IAEJ;;OAEG;IACH,uBAAuB;QACrB,OAAO,IAAI,CAAC,oBAAoB,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,sBAAsB,CAAC,mBAA2B;QAChD,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IACrD,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,QAA+B;QACzC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,UAAkB,EAAE,MAA2B;QACvD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,sBAAsB,CAAC,mBAA2B;QAChD,OAAO,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IAC5D,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,UAAkB;QAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACtC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,KAAK,CAAC,OAAO,CAAC,UAAU;IAC7B,+EAA+E;IAC/E,eAAe,CACe,CAAC;AACnC,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { SimAwsServiceMap } from "../../aws/sim-aws-services.js";
2
+ import type { SimAws } from "../../aws/sim-aws.js";
3
+ import { SimCloudFront } from "../sim-cloudfront.js";
4
+ export interface SimCloudFrontServices {
5
+ cloudFront: SimCloudFront;
6
+ }
7
+ /**
8
+ * Install simulated CloudFront into a simulated AWS environment.
9
+ *
10
+ * Simulated CloudFront is installed into SimAws with this installer pattern so
11
+ * that the root SimAws does not need to know about individual AWS SDKs like
12
+ * aws-sdk/client-cloudfront.
13
+ *
14
+ * Without this separation, the root SimAws module would try to import every
15
+ * AWS SDK, so users would be forced to install all of them.
16
+ */
17
+ export declare function installSimCloudFront<TServices extends SimAwsServiceMap>(simAws: SimAws<TServices>): asserts simAws is SimAws<TServices & SimCloudFrontServices>;
18
+ //# sourceMappingURL=install-sim-cloudfront.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install-sim-cloudfront.d.ts","sourceRoot":"","sources":["../../../../src/service/cloudfront/install/install-sim-cloudfront.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAGnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAKrD,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,aAAa,CAAC;CAC3B;AAuCD;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,SAAS,gBAAgB,EACrE,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,GACxB,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,SAAS,GAAG,qBAAqB,CAAC,CAY7D"}
@@ -0,0 +1,43 @@
1
+ import { SimCloudFront } from "../sim-cloudfront.js";
2
+ import { SimCloudFrontRegistry } from "../sim-cloud-front-registry.js";
3
+ import { createSimCloudFrontS3OriginResolver } from "../origin/sim-cloudfront-s3-origin.js";
4
+ import { SimCloudFrontServiceController } from "../controller/sim-cloudfront-controller.js";
5
+ /**
6
+ * State for one sim CloudFront installation into one sim AWS environment.
7
+ */
8
+ class SimCloudFrontInstallation {
9
+ cloudFrontRegistry = new SimCloudFrontRegistry();
10
+ cloudFrontServices = new Map();
11
+ createService(scope) {
12
+ const { accountId } = scope.accountRegionScope;
13
+ let simCloudFront = this.cloudFrontServices.get(accountId);
14
+ if (simCloudFront === undefined) {
15
+ simCloudFront = new SimCloudFront(scope.accountRegionScope, this.cloudFrontRegistry, createSimCloudFrontS3OriginResolver(scope));
16
+ this.cloudFrontServices.set(accountId, simCloudFront);
17
+ }
18
+ return simCloudFront;
19
+ }
20
+ createServiceController(simAws) {
21
+ return new SimCloudFrontServiceController(simAws.service("cloudFront"));
22
+ }
23
+ }
24
+ /**
25
+ * Install simulated CloudFront into a simulated AWS environment.
26
+ *
27
+ * Simulated CloudFront is installed into SimAws with this installer pattern so
28
+ * that the root SimAws does not need to know about individual AWS SDKs like
29
+ * aws-sdk/client-cloudfront.
30
+ *
31
+ * Without this separation, the root SimAws module would try to import every
32
+ * AWS SDK, so users would be forced to install all of them.
33
+ */
34
+ export function installSimCloudFront(simAws) {
35
+ const installation = new SimCloudFrontInstallation();
36
+ simAws.installService("cloudFront", (scope) => {
37
+ return installation.createService(scope);
38
+ });
39
+ simAws.installServiceController("cloudFront", (controllerSimAws) => {
40
+ return installation.createServiceController(controllerSimAws);
41
+ });
42
+ }
43
+ //# sourceMappingURL=install-sim-cloudfront.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install-sim-cloudfront.js","sourceRoot":"","sources":["../../../../src/service/cloudfront/install/install-sim-cloudfront.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,mCAAmC,EAAE,MAAM,uCAAuC,CAAC;AAC5F,OAAO,EAAE,8BAA8B,EAAE,MAAM,4CAA4C,CAAC;AAM5F;;GAEG;AACH,MAAM,yBAAyB;IACZ,kBAAkB,GAAG,IAAI,qBAAqB,EAAE,CAAC;IAEjD,kBAAkB,GAAG,IAAI,GAAG,EAG1C,CAAC;IAEJ,aAAa,CACX,KAAqD;QAErD,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC,kBAAkB,CAAC;QAE/C,IAAI,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAE3D,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YAChC,aAAa,GAAG,IAAI,aAAa,CAC/B,KAAK,CAAC,kBAAkB,EACxB,IAAI,CAAC,kBAAkB,EACvB,mCAAmC,CAAC,KAAK,CAAC,CAC3C,CAAC;YACF,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QACxD,CAAC;QAED,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,uBAAuB,CACrB,MAAqC;QAErC,OAAO,IAAI,8BAA8B,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;IAC1E,CAAC;CACF;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,oBAAoB,CAClC,MAAyB;IAEzB,MAAM,YAAY,GAAG,IAAI,yBAAyB,EAAE,CAAC;IAErD,MAAM,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,EAAE;QAC5C,OAAO,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,wBAAwB,CAAC,YAAY,EAAE,CAAC,gBAAgB,EAAE,EAAE;QACjE,OAAO,YAAY,CAAC,uBAAuB,CACzC,gBAAiD,CAClD,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { SimCloudFrontOriginRequest } from "./sim-cloudfront-req-res.js";
2
+ /**
3
+ * https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/DownloadDistS3AndCustomOrigins.html
4
+ */
5
+ export interface SimCloudFrontOrigin {
6
+ fetch(request: SimCloudFrontOriginRequest): Promise<Response>;
7
+ }
8
+ //# sourceMappingURL=sim-cloudfront-origin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-cloudfront-origin.d.ts","sourceRoot":"","sources":["../../../../src/service/cloudfront/origin/sim-cloudfront-origin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AAE9E;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,OAAO,EAAE,0BAA0B,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CAC/D"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=sim-cloudfront-origin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-cloudfront-origin.js","sourceRoot":"","sources":["../../../../src/service/cloudfront/origin/sim-cloudfront-origin.ts"],"names":[],"mappings":""}
@@ -0,0 +1,8 @@
1
+ import type { SimCloudFrontDistribution } from "../distribution/sim-cloudfront-distribution.js";
2
+ import type { SimCloudFrontBehavior } from "../behaviour/sim-cloud-front-behavior.js";
3
+ export interface SimCloudFrontOriginRequest {
4
+ distribution: SimCloudFrontDistribution;
5
+ behavior: SimCloudFrontBehavior;
6
+ req: Request;
7
+ }
8
+ //# sourceMappingURL=sim-cloudfront-req-res.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-cloudfront-req-res.d.ts","sourceRoot":"","sources":["../../../../src/service/cloudfront/origin/sim-cloudfront-req-res.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gDAAgD,CAAC;AAChG,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AAEtF,MAAM,WAAW,0BAA0B;IACzC,YAAY,EAAE,yBAAyB,CAAC;IACxC,QAAQ,EAAE,qBAAqB,CAAC;IAChC,GAAG,EAAE,OAAO,CAAC;CACd"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=sim-cloudfront-req-res.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-cloudfront-req-res.js","sourceRoot":"","sources":["../../../../src/service/cloudfront/origin/sim-cloudfront-req-res.ts"],"names":[],"mappings":""}
@@ -0,0 +1,38 @@
1
+ import type { SimAwsAccountRegionContainer } from "../../aws/sim-aws-account-region-scope.js";
2
+ import type { SimAwsServiceMap } from "../../aws/sim-aws-services.js";
3
+ import type { SimS3Bucket } from "../../s3/bucket/sim-s3-bucket.js";
4
+ import type { SimCloudFrontOriginRequest } from "./sim-cloudfront-req-res.js";
5
+ import type { SimCloudFrontOrigin } from "./sim-cloudfront-origin.js";
6
+ export type SimCloudFrontS3OriginResolver = (originDomainName: string) => SimS3Bucket | undefined;
7
+ /**
8
+ * Default S3 Origin Resolver that returns undefined for all origin domains.
9
+ */
10
+ export declare function emptyCloudFrontS3OriginResolver(): undefined;
11
+ /**
12
+ * Create an S3 Origin Resolver backed by a simulated AWS Account/Region scope.
13
+ */
14
+ export declare function createSimCloudFrontS3OriginResolver(scope: SimAwsAccountRegionContainer<SimAwsServiceMap>): SimCloudFrontS3OriginResolver;
15
+ /**
16
+ * Resolve a simulated S3 Bucket name from a CloudFront S3 Origin domain name.
17
+ */
18
+ export declare function bucketNameFromCloudFrontS3OriginDomainName(originDomainName: string): string;
19
+ /**
20
+ * Simulated CloudFront S3 Origin.
21
+ *
22
+ * This represents a basic S3 object origin, not an S3 static website endpoint.
23
+ */
24
+ export declare class SimCloudFrontS3Origin implements SimCloudFrontOrigin {
25
+ private readonly bucket;
26
+ private readonly originPath;
27
+ constructor(bucket: SimS3Bucket, originPath?: string);
28
+ /**
29
+ * Fetch an object from the backing simulated S3 Bucket.
30
+ */
31
+ fetch(request: SimCloudFrontOriginRequest): Promise<Response>;
32
+ private methodSupported;
33
+ private objectKeyForRequest;
34
+ private normalizeObjectKey;
35
+ private foundObjectResponse;
36
+ private notFoundResponse;
37
+ }
38
+ //# sourceMappingURL=sim-cloudfront-s3-origin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-cloudfront-s3-origin.d.ts","sourceRoot":"","sources":["../../../../src/service/cloudfront/origin/sim-cloudfront-s3-origin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,2CAA2C,CAAC;AAC9F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAEpE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AAC9E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,MAAM,MAAM,6BAA6B,GAAG,CAC1C,gBAAgB,EAAE,MAAM,KACrB,WAAW,GAAG,SAAS,CAAC;AAE7B;;GAEG;AACH,wBAAgB,+BAA+B,IAAI,SAAS,CAG3D;AAED;;GAEG;AACH,wBAAgB,mCAAmC,CACjD,KAAK,EAAE,4BAA4B,CAAC,gBAAgB,CAAC,GACpD,6BAA6B,CAQ/B;AAED;;GAEG;AACH,wBAAgB,0CAA0C,CACxD,gBAAgB,EAAE,MAAM,GACvB,MAAM,CAUR;AAqBD;;;;GAIG;AACH,qBAAa,qBAAsB,YAAW,mBAAmB;IAE7D,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,UAAU;gBADV,MAAM,EAAE,WAAW,EACnB,UAAU,SAAK;IAGlC;;OAEG;IACG,KAAK,CAAC,OAAO,EAAE,0BAA0B,GAAG,OAAO,CAAC,QAAQ,CAAC;IAqBnE,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,mBAAmB;IAM3B,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,mBAAmB;IAqB3B,OAAO,CAAC,gBAAgB;CAWzB"}
@@ -0,0 +1,108 @@
1
+ /**
2
+ * Default S3 Origin Resolver that returns undefined for all origin domains.
3
+ */
4
+ export function emptyCloudFrontS3OriginResolver() {
5
+ /* v8 ignore next */
6
+ return undefined;
7
+ }
8
+ /**
9
+ * Create an S3 Origin Resolver backed by a simulated AWS Account/Region scope.
10
+ */
11
+ export function createSimCloudFrontS3OriginResolver(scope) {
12
+ return (originDomainName) => {
13
+ const bucketName = bucketNameFromCloudFrontS3OriginDomainName(originDomainName);
14
+ const s3 = scope._requireService("s3");
15
+ return s3.getSimBucketByName(bucketName);
16
+ };
17
+ }
18
+ /**
19
+ * Resolve a simulated S3 Bucket name from a CloudFront S3 Origin domain name.
20
+ */
21
+ export function bucketNameFromCloudFrontS3OriginDomainName(originDomainName) {
22
+ const bucketName = s3BucketNameFromOriginDomainName(originDomainName);
23
+ if (bucketName === undefined || bucketName === "") {
24
+ throw new Error(`Unable to resolve S3 bucket name from CloudFront origin domain name: ${originDomainName}`);
25
+ }
26
+ return bucketName;
27
+ }
28
+ function s3BucketNameFromOriginDomainName(originDomainName) {
29
+ const s3DomainSuffixes = [".s3.amazonaws.com", ".s3.dualstack.amazonaws.com"];
30
+ for (const suffix of s3DomainSuffixes) {
31
+ if (originDomainName.endsWith(suffix)) {
32
+ return originDomainName.slice(0, -suffix.length);
33
+ }
34
+ }
35
+ const regionalS3DomainMatch = /^(?<bucketName>.+)\.s3[.-][a-z0-9-]+\.amazonaws\.com$/u.exec(originDomainName);
36
+ return regionalS3DomainMatch?.groups?.["bucketName"] ?? originDomainName;
37
+ }
38
+ /**
39
+ * Simulated CloudFront S3 Origin.
40
+ *
41
+ * This represents a basic S3 object origin, not an S3 static website endpoint.
42
+ */
43
+ export class SimCloudFrontS3Origin {
44
+ bucket;
45
+ originPath;
46
+ constructor(bucket, originPath = "") {
47
+ this.bucket = bucket;
48
+ this.originPath = originPath;
49
+ }
50
+ /**
51
+ * Fetch an object from the backing simulated S3 Bucket.
52
+ */
53
+ async fetch(request) {
54
+ if (!this.methodSupported(request.req.method)) {
55
+ return new Response(`Method ${request.req.method} not allowed`, {
56
+ status: 405,
57
+ headers: {
58
+ allow: "GET, HEAD",
59
+ "content-type": "text/plain; charset=utf-8",
60
+ },
61
+ });
62
+ }
63
+ const objectKey = this.objectKeyForRequest(request);
64
+ const object = await this.bucket.getObject(objectKey);
65
+ if (object === undefined) {
66
+ return this.notFoundResponse(objectKey);
67
+ }
68
+ return this.foundObjectResponse(object, request.req);
69
+ }
70
+ methodSupported(method) {
71
+ return method === "GET" || method === "HEAD";
72
+ }
73
+ objectKeyForRequest(request) {
74
+ const requestPath = new URL(request.req.url).pathname;
75
+ return this.normalizeObjectKey(`${this.originPath}/${requestPath}`);
76
+ }
77
+ normalizeObjectKey(path) {
78
+ return decodeURIComponent(path)
79
+ .replaceAll(/\/+/gu, "/")
80
+ .replace(/^\/+/u, "");
81
+ }
82
+ foundObjectResponse(object, request) {
83
+ const contentType = object.metadata.values["content-type"];
84
+ const headers = {
85
+ "content-length": String(object.body.length),
86
+ ...(contentType === undefined ? {} : { "content-type": contentType }),
87
+ };
88
+ if (request.method === "HEAD") {
89
+ return new Response(undefined, {
90
+ status: 200,
91
+ headers,
92
+ });
93
+ }
94
+ return new Response(object.body, {
95
+ status: 200,
96
+ headers,
97
+ });
98
+ }
99
+ notFoundResponse(objectKey) {
100
+ return new Response(`Object ${objectKey} not found in sim S3 Bucket ${this.bucket.bucketName}`, {
101
+ status: 404,
102
+ headers: {
103
+ "content-type": "text/plain; charset=utf-8",
104
+ },
105
+ });
106
+ }
107
+ }
108
+ //# sourceMappingURL=sim-cloudfront-s3-origin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-cloudfront-s3-origin.js","sourceRoot":"","sources":["../../../../src/service/cloudfront/origin/sim-cloudfront-s3-origin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { SimCloudFrontBehavior } from "../behaviour/sim-cloud-front-behavior.js";
2
+ import type { SimCloudFrontDistribution } from "../distribution/sim-cloudfront-distribution.js";
3
+ /**
4
+ * Selects the appropriate sim CloudFront Behavior within a sim CloudFront
5
+ * Distribution for a request.
6
+ */
7
+ export declare class SimCloudFrontBehaviorResolver {
8
+ /**
9
+ * Resolve the Behavior in the selected Distribution which best matches this
10
+ * request.
11
+ */
12
+ resolve(req: Request, simDistribution: SimCloudFrontDistribution): SimCloudFrontBehavior;
13
+ private behaviourMatchesPath;
14
+ private isDefaultBehaviour;
15
+ private pathPatternSpecificity;
16
+ }
17
+ //# sourceMappingURL=sim-cloud-front-behavior-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-cloud-front-behavior-resolver.d.ts","sourceRoot":"","sources":["../../../../src/service/cloudfront/resolver/sim-cloud-front-behavior-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AACtF,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gDAAgD,CAAC;AAIhG;;;GAGG;AACH,qBAAa,6BAA6B;IACxC;;;OAGG;IACH,OAAO,CACL,GAAG,EAAE,OAAO,EACZ,eAAe,EAAE,yBAAyB,GACzC,qBAAqB;IA2BxB,OAAO,CAAC,oBAAoB;IAc5B,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,sBAAsB;CAQ/B"}
@@ -0,0 +1,44 @@
1
+ import { assertDefined } from "../../../util/defined/defined.js";
2
+ import { SimCloudFrontPathPattern } from "./sim-cloudfront-path-pattern.js";
3
+ /**
4
+ * Selects the appropriate sim CloudFront Behavior within a sim CloudFront
5
+ * Distribution for a request.
6
+ */
7
+ export class SimCloudFrontBehaviorResolver {
8
+ /**
9
+ * Resolve the Behavior in the selected Distribution which best matches this
10
+ * request.
11
+ */
12
+ resolve(req, simDistribution) {
13
+ const requestPath = new URL(req.url).pathname;
14
+ const explicitMatch = simDistribution.behaviors
15
+ .filter((behaviour) => this.behaviourMatchesPath(behaviour, requestPath))
16
+ .toSorted((a, b) => this.pathPatternSpecificity(b.pathPattern) -
17
+ this.pathPatternSpecificity(a.pathPattern))[0];
18
+ if (explicitMatch !== undefined) {
19
+ return explicitMatch;
20
+ }
21
+ const defaultBehaviour = simDistribution.behaviors.find((behaviour) => this.isDefaultBehaviour(behaviour));
22
+ assertDefined(defaultBehaviour, `Default CloudFront Behavior for Distribution ${simDistribution.distributionId}`);
23
+ return defaultBehaviour;
24
+ }
25
+ behaviourMatchesPath(behaviour, requestPath) {
26
+ if (this.isDefaultBehaviour(behaviour)) {
27
+ return false;
28
+ }
29
+ const pathPattern = behaviour.pathPattern;
30
+ assertDefined(pathPattern, "CloudFront Behavior path pattern");
31
+ return new SimCloudFrontPathPattern(pathPattern).matches(requestPath);
32
+ }
33
+ isDefaultBehaviour(behaviour) {
34
+ return behaviour.pathPattern === undefined || behaviour.pathPattern === "*";
35
+ }
36
+ pathPatternSpecificity(pathPattern) {
37
+ /* v8 ignore if -- redundant fallback */
38
+ if (pathPattern === undefined || pathPattern === "*") {
39
+ return 0;
40
+ }
41
+ return new SimCloudFrontPathPattern(pathPattern).specificity();
42
+ }
43
+ }
44
+ //# sourceMappingURL=sim-cloud-front-behavior-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-cloud-front-behavior-resolver.js","sourceRoot":"","sources":["../../../../src/service/cloudfront/resolver/sim-cloud-front-behavior-resolver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAE5E;;;GAGG;AACH,MAAM,OAAO,6BAA6B;IACxC;;;OAGG;IACH,OAAO,CACL,GAAY,EACZ,eAA0C;QAE1C,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;QAE9C,MAAM,aAAa,GAAG,eAAe,CAAC,SAAS;aAC5C,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;aACxE,QAAQ,CACP,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACP,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,WAAW,CAAC;YAC1C,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,WAAW,CAAC,CAC7C,CAAC,CAAC,CAAC,CAAC;QAEP,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YAChC,OAAO,aAAa,CAAC;QACvB,CAAC;QAED,MAAM,gBAAgB,GAAG,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CACpE,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CACnC,CAAC;QAEF,aAAa,CACX,gBAAgB,EAChB,gDAAgD,eAAe,CAAC,cAAc,EAAE,CACjF,CAAC;QAEF,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAEO,oBAAoB,CAC1B,SAAgC,EAChC,WAAmB;QAEnB,IAAI,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC;YACvC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC;QAC1C,aAAa,CAAC,WAAW,EAAE,kCAAkC,CAAC,CAAC;QAE/D,OAAO,IAAI,wBAAwB,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACxE,CAAC;IAEO,kBAAkB,CAAC,SAAgC;QACzD,OAAO,SAAS,CAAC,WAAW,KAAK,SAAS,IAAI,SAAS,CAAC,WAAW,KAAK,GAAG,CAAC;IAC9E,CAAC;IAEO,sBAAsB,CAAC,WAA+B;QAC5D,wCAAwC;QACxC,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,GAAG,EAAE,CAAC;YACrD,OAAO,CAAC,CAAC;QACX,CAAC;QAED,OAAO,IAAI,wBAAwB,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,CAAC;IACjE,CAAC;CACF"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * CloudFront-style path pattern matcher.
3
+ *
4
+ * Supports the basic wildcard syntax:
5
+ * - "*" matches zero or more characters
6
+ * - "?" matches exactly one character
7
+ *
8
+ * All other characters are treated literally.
9
+ */
10
+ export declare class SimCloudFrontPathPattern {
11
+ private readonly pathPattern;
12
+ private readonly graphemeSegmenter;
13
+ constructor(pathPattern: string);
14
+ /**
15
+ * Does this path pattern match a request path?
16
+ */
17
+ matches(requestPath: string): boolean;
18
+ /**
19
+ * Estimate how specific this pattern is for choosing between multiple matches.
20
+ */
21
+ specificity(): number;
22
+ private regex;
23
+ private graphemes;
24
+ private escapeRegexChar;
25
+ }
26
+ //# sourceMappingURL=sim-cloudfront-path-pattern.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-cloudfront-path-pattern.d.ts","sourceRoot":"","sources":["../../../../src/service/cloudfront/resolver/sim-cloudfront-path-pattern.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,qBAAa,wBAAwB;IAKvB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAJxC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAE/B;gBAE0B,WAAW,EAAE,MAAM;IAEhD;;OAEG;IACH,OAAO,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO;IAIrC;;OAEG;IACH,WAAW,IAAI,MAAM;IAMrB,OAAO,CAAC,KAAK;IAwBb,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,eAAe;CAGxB"}