@kensio/yulin 0.13.0 → 0.14.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.
- package/README.md +21 -19
- package/dist/serve/controller/sim-aws-service-controller-container.d.ts +6 -2
- package/dist/serve/controller/sim-aws-service-controller-container.d.ts.map +1 -1
- package/dist/serve/controller/sim-aws-service-controller-container.js +4 -2
- package/dist/serve/controller/sim-aws-service-controller-container.js.map +1 -1
- package/dist/serve/http/sim-aws-http.d.ts +5 -2
- package/dist/serve/http/sim-aws-http.d.ts.map +1 -1
- package/dist/serve/http/sim-aws-http.js +3 -4
- package/dist/serve/http/sim-aws-http.js.map +1 -1
- package/dist/serve/http/sim-aws-local-server.d.ts +10 -3
- package/dist/serve/http/sim-aws-local-server.d.ts.map +1 -1
- package/dist/serve/http/sim-aws-local-server.js +7 -7
- package/dist/serve/http/sim-aws-local-server.js.map +1 -1
- package/dist/serve/http/sim-aws-local-url.d.ts +6 -1
- package/dist/serve/http/sim-aws-local-url.d.ts.map +1 -1
- package/dist/serve/http/sim-aws-local-url.js +4 -4
- package/dist/serve/http/sim-aws-local-url.js.map +1 -1
- package/dist/service/aws/arn.d.ts +1 -1
- package/dist/service/aws/arn.d.ts.map +1 -1
- package/dist/service/aws/arn.js +1 -1
- package/dist/service/aws/arn.js.map +1 -1
- package/dist/service/aws/sim-aws-account-region-scope.d.ts +7 -1
- package/dist/service/aws/sim-aws-account-region-scope.d.ts.map +1 -1
- package/dist/service/aws/sim-aws-account-region-scope.js +11 -6
- package/dist/service/aws/sim-aws-account-region-scope.js.map +1 -1
- package/dist/service/aws/sim-aws-account.d.ts +8 -3
- package/dist/service/aws/sim-aws-account.d.ts.map +1 -1
- package/dist/service/aws/sim-aws-account.js +3 -1
- package/dist/service/aws/sim-aws-account.js.map +1 -1
- package/dist/service/aws/sim-aws-region.d.ts +8 -3
- package/dist/service/aws/sim-aws-region.d.ts.map +1 -1
- package/dist/service/aws/sim-aws-region.js +6 -4
- package/dist/service/aws/sim-aws-region.js.map +1 -1
- package/dist/service/aws/sim-aws.d.ts +21 -7
- package/dist/service/aws/sim-aws.d.ts.map +1 -1
- package/dist/service/aws/sim-aws.js +46 -13
- package/dist/service/aws/sim-aws.js.map +1 -1
- package/dist/service/cloudfront/behaviour/sim-cloud-front-behavior.d.ts +5 -0
- package/dist/service/cloudfront/behaviour/sim-cloud-front-behavior.d.ts.map +1 -1
- package/dist/service/cloudfront/behaviour/sim-cloud-front-behavior.js.map +1 -1
- package/dist/service/cloudfront/cff/adapter/sim-cff-event-adapter.d.ts +36 -0
- package/dist/service/cloudfront/cff/adapter/sim-cff-event-adapter.d.ts.map +1 -0
- package/dist/service/cloudfront/cff/adapter/sim-cff-event-adapter.js +177 -0
- package/dist/service/cloudfront/cff/adapter/sim-cff-event-adapter.js.map +1 -0
- package/dist/service/cloudfront/cff/function-code-input/cff-function-code-input.d.ts +38 -0
- package/dist/service/cloudfront/cff/function-code-input/cff-function-code-input.d.ts.map +1 -0
- package/dist/service/cloudfront/cff/function-code-input/cff-function-code-input.js +69 -0
- package/dist/service/cloudfront/cff/function-code-input/cff-function-code-input.js.map +1 -0
- package/dist/service/cloudfront/cff/sim-cloudfront-function.d.ts +48 -0
- package/dist/service/cloudfront/cff/sim-cloudfront-function.d.ts.map +1 -0
- package/dist/service/cloudfront/cff/sim-cloudfront-function.js +66 -0
- package/dist/service/cloudfront/cff/sim-cloudfront-function.js.map +1 -0
- package/dist/service/cloudfront/command/create-distribution/create-distribution.cmd.d.ts +44 -28
- package/dist/service/cloudfront/command/create-distribution/create-distribution.cmd.d.ts.map +1 -1
- package/dist/service/cloudfront/command/create-distribution/create-distribution.handler.d.ts +13 -9
- package/dist/service/cloudfront/command/create-distribution/create-distribution.handler.d.ts.map +1 -1
- package/dist/service/cloudfront/command/create-distribution/create-distribution.handler.js +23 -78
- package/dist/service/cloudfront/command/create-distribution/create-distribution.handler.js.map +1 -1
- package/dist/service/cloudfront/command/create-function/create-function.cmd.d.ts +43 -0
- package/dist/service/cloudfront/command/create-function/create-function.cmd.d.ts.map +1 -0
- package/dist/service/cloudfront/command/create-function/create-function.cmd.js +5 -0
- package/dist/service/cloudfront/command/create-function/create-function.cmd.js.map +1 -0
- package/dist/service/cloudfront/command/create-function/create-function.handler.d.ts +28 -0
- package/dist/service/cloudfront/command/create-function/create-function.handler.d.ts.map +1 -0
- package/dist/service/cloudfront/command/create-function/create-function.handler.js +49 -0
- package/dist/service/cloudfront/command/create-function/create-function.handler.js.map +1 -0
- package/dist/service/cloudfront/command/get-distribution/get-distribution.cmd.d.ts +29 -0
- package/dist/service/cloudfront/command/get-distribution/get-distribution.cmd.d.ts.map +1 -0
- package/dist/service/cloudfront/command/get-distribution/get-distribution.cmd.js +2 -0
- package/dist/service/cloudfront/command/get-distribution/get-distribution.cmd.js.map +1 -0
- package/dist/service/cloudfront/command/get-distribution/get-distribution.handler.d.ts +21 -0
- package/dist/service/cloudfront/command/get-distribution/get-distribution.handler.d.ts.map +1 -0
- package/dist/service/cloudfront/command/get-distribution/get-distribution.handler.js +40 -0
- package/dist/service/cloudfront/command/get-distribution/get-distribution.handler.js.map +1 -0
- package/dist/service/cloudfront/controller/sim-cloudfront-controller.d.ts +20 -4
- package/dist/service/cloudfront/controller/sim-cloudfront-controller.d.ts.map +1 -1
- package/dist/service/cloudfront/controller/sim-cloudfront-controller.js +52 -7
- package/dist/service/cloudfront/controller/sim-cloudfront-controller.js.map +1 -1
- package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-behavior-configurator.d.ts +21 -0
- package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-behavior-configurator.d.ts.map +1 -0
- package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-behavior-configurator.js +90 -0
- package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-behavior-configurator.js.map +1 -0
- package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-distribution-configurator.d.ts +17 -0
- package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-distribution-configurator.d.ts.map +1 -0
- package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-distribution-configurator.js +28 -0
- package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-distribution-configurator.js.map +1 -0
- package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-origin-configurator.d.ts +15 -0
- package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-origin-configurator.d.ts.map +1 -0
- package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-origin-configurator.js +26 -0
- package/dist/service/cloudfront/distribution/configurator/sim-cloud-front-origin-configurator.js.map +1 -0
- package/dist/service/cloudfront/distribution/sim-cloudfront-distribution.d.ts +23 -1
- package/dist/service/cloudfront/distribution/sim-cloudfront-distribution.d.ts.map +1 -1
- package/dist/service/cloudfront/distribution/sim-cloudfront-distribution.js +23 -1
- package/dist/service/cloudfront/distribution/sim-cloudfront-distribution.js.map +1 -1
- package/dist/service/cloudfront/error/sim-cloudfront.error.d.ts +21 -0
- package/dist/service/cloudfront/error/sim-cloudfront.error.d.ts.map +1 -0
- package/dist/service/cloudfront/error/sim-cloudfront.error.js +20 -0
- package/dist/service/cloudfront/error/sim-cloudfront.error.js.map +1 -0
- package/dist/service/cloudfront/factory/cloudfront-functions.factory.d.ts +15 -2
- package/dist/service/cloudfront/factory/cloudfront-functions.factory.d.ts.map +1 -1
- package/dist/service/cloudfront/factory/cloudfront-functions.factory.js +22 -12
- package/dist/service/cloudfront/factory/cloudfront-functions.factory.js.map +1 -1
- package/dist/service/cloudfront/index.d.ts +1 -0
- package/dist/service/cloudfront/index.d.ts.map +1 -1
- package/dist/service/cloudfront/index.js +1 -0
- package/dist/service/cloudfront/index.js.map +1 -1
- package/dist/service/cloudfront/origin/sim-cloudfront-s3-origin.d.ts +6 -1
- package/dist/service/cloudfront/origin/sim-cloudfront-s3-origin.d.ts.map +1 -1
- package/dist/service/cloudfront/origin/sim-cloudfront-s3-origin.js +3 -3
- package/dist/service/cloudfront/origin/sim-cloudfront-s3-origin.js.map +1 -1
- package/dist/service/cloudfront/resolver/sim-cloud-front-behavior-resolver.js +2 -2
- package/dist/service/cloudfront/resolver/sim-cloud-front-behavior-resolver.js.map +1 -1
- package/dist/service/cloudfront/resolver/sim-cloudfront-path-pattern.d.ts +6 -2
- package/dist/service/cloudfront/resolver/sim-cloudfront-path-pattern.d.ts.map +1 -1
- package/dist/service/cloudfront/resolver/sim-cloudfront-path-pattern.js +3 -3
- package/dist/service/cloudfront/resolver/sim-cloudfront-path-pattern.js.map +1 -1
- package/dist/service/cloudfront/router/sim-cloud-front-distro-router.d.ts +24 -2
- package/dist/service/cloudfront/router/sim-cloud-front-distro-router.d.ts.map +1 -1
- package/dist/service/cloudfront/router/sim-cloud-front-distro-router.js +61 -10
- package/dist/service/cloudfront/router/sim-cloud-front-distro-router.js.map +1 -1
- package/dist/service/cloudfront/sim-cloud-front-registry.d.ts +8 -0
- package/dist/service/cloudfront/sim-cloud-front-registry.d.ts.map +1 -1
- package/dist/service/cloudfront/sim-cloud-front-registry.js +12 -0
- package/dist/service/cloudfront/sim-cloud-front-registry.js.map +1 -1
- package/dist/service/cloudfront/sim-cloudfront.d.ts +32 -2
- package/dist/service/cloudfront/sim-cloudfront.d.ts.map +1 -1
- package/dist/service/cloudfront/sim-cloudfront.js +55 -3
- package/dist/service/cloudfront/sim-cloudfront.js.map +1 -1
- package/dist/service/cloudfront/typings/cloudfront-functions.namespace.d.ts +22 -3
- package/dist/service/cloudfront/typings/cloudfront-functions.namespace.d.ts.map +1 -1
- package/dist/service/dynamodb/command/create-table/create-table.handler.d.ts +7 -1
- package/dist/service/dynamodb/command/create-table/create-table.handler.d.ts.map +1 -1
- package/dist/service/dynamodb/command/create-table/create-table.handler.js +10 -6
- package/dist/service/dynamodb/command/create-table/create-table.handler.js.map +1 -1
- package/dist/service/dynamodb/command/describe-table/describe-table.handler.d.ts +5 -1
- package/dist/service/dynamodb/command/describe-table/describe-table.handler.d.ts.map +1 -1
- package/dist/service/dynamodb/command/describe-table/describe-table.handler.js +2 -2
- package/dist/service/dynamodb/command/describe-table/describe-table.handler.js.map +1 -1
- package/dist/service/dynamodb/command/list-tables/list-tables.handler.d.ts +5 -1
- package/dist/service/dynamodb/command/list-tables/list-tables.handler.d.ts.map +1 -1
- package/dist/service/dynamodb/command/list-tables/list-tables.handler.js +2 -2
- package/dist/service/dynamodb/command/list-tables/list-tables.handler.js.map +1 -1
- package/dist/service/dynamodb/command/put-item/put-item.cmd.d.ts +93 -3
- package/dist/service/dynamodb/command/put-item/put-item.cmd.d.ts.map +1 -1
- package/dist/service/dynamodb/command/put-item/put-item.handler.d.ts +5 -1
- package/dist/service/dynamodb/command/put-item/put-item.handler.d.ts.map +1 -1
- package/dist/service/dynamodb/command/put-item/put-item.handler.js +2 -2
- package/dist/service/dynamodb/command/put-item/put-item.handler.js.map +1 -1
- package/dist/service/dynamodb/sim-dynamodb.d.ts +7 -2
- package/dist/service/dynamodb/sim-dynamodb.d.ts.map +1 -1
- package/dist/service/dynamodb/sim-dynamodb.js +11 -6
- package/dist/service/dynamodb/sim-dynamodb.js.map +1 -1
- package/dist/service/dynamodb/table/dynamodb-table.d.ts +10 -4
- package/dist/service/dynamodb/table/dynamodb-table.d.ts.map +1 -1
- package/dist/service/dynamodb/table/dynamodb-table.js +6 -4
- package/dist/service/dynamodb/table/dynamodb-table.js.map +1 -1
- package/dist/service/s3/bucket/sim-s3-bucket.d.ts +9 -6
- package/dist/service/s3/bucket/sim-s3-bucket.d.ts.map +1 -1
- package/dist/service/s3/bucket/sim-s3-bucket.js +4 -5
- package/dist/service/s3/bucket/sim-s3-bucket.js.map +1 -1
- package/dist/service/s3/command/create-bucket/create-bucket.handler.d.ts +7 -1
- package/dist/service/s3/command/create-bucket/create-bucket.handler.d.ts.map +1 -1
- package/dist/service/s3/command/create-bucket/create-bucket.handler.js +8 -5
- package/dist/service/s3/command/create-bucket/create-bucket.handler.js.map +1 -1
- package/dist/service/s3/command/get-object/get-object.cmd.d.ts +2 -2
- package/dist/service/s3/command/get-object/get-object.cmd.d.ts.map +1 -1
- package/dist/service/s3/command/get-object/get-object.handler.d.ts +5 -1
- package/dist/service/s3/command/get-object/get-object.handler.d.ts.map +1 -1
- package/dist/service/s3/command/get-object/get-object.handler.js +2 -2
- package/dist/service/s3/command/get-object/get-object.handler.js.map +1 -1
- package/dist/service/s3/command/list-buckets/list-buckets.handler.d.ts +5 -1
- package/dist/service/s3/command/list-buckets/list-buckets.handler.d.ts.map +1 -1
- package/dist/service/s3/command/list-buckets/list-buckets.handler.js +2 -2
- package/dist/service/s3/command/list-buckets/list-buckets.handler.js.map +1 -1
- package/dist/service/s3/command/list-objects/list-objects.cmd.d.ts +4 -4
- package/dist/service/s3/command/list-objects/list-objects.cmd.d.ts.map +1 -1
- package/dist/service/s3/command/list-objects/list-objects.handler.d.ts +5 -1
- package/dist/service/s3/command/list-objects/list-objects.handler.d.ts.map +1 -1
- package/dist/service/s3/command/list-objects/list-objects.handler.js +2 -2
- package/dist/service/s3/command/list-objects/list-objects.handler.js.map +1 -1
- package/dist/service/s3/command/put-bucket-website/put-bucket-website.handler.d.ts +5 -1
- package/dist/service/s3/command/put-bucket-website/put-bucket-website.handler.d.ts.map +1 -1
- package/dist/service/s3/command/put-bucket-website/put-bucket-website.handler.js +2 -2
- package/dist/service/s3/command/put-bucket-website/put-bucket-website.handler.js.map +1 -1
- package/dist/service/s3/command/put-object/put-object.cmd.d.ts +8 -5
- package/dist/service/s3/command/put-object/put-object.cmd.d.ts.map +1 -1
- package/dist/service/s3/command/put-object/put-object.handler.d.ts +5 -1
- package/dist/service/s3/command/put-object/put-object.handler.d.ts.map +1 -1
- package/dist/service/s3/command/put-object/put-object.handler.js +7 -3
- package/dist/service/s3/command/put-object/put-object.handler.js.map +1 -1
- package/dist/service/s3/object/s3-object.d.ts +7 -1
- package/dist/service/s3/object/s3-object.d.ts.map +1 -1
- package/dist/service/s3/object/s3-object.js +2 -1
- package/dist/service/s3/object/s3-object.js.map +1 -1
- package/dist/service/s3/serve/sim-s3-controller.d.ts +6 -2
- package/dist/service/s3/serve/sim-s3-controller.d.ts.map +1 -1
- package/dist/service/s3/serve/sim-s3-controller.js +4 -2
- package/dist/service/s3/serve/sim-s3-controller.js.map +1 -1
- package/dist/service/s3/serve/sim-s3-req-router.d.ts +6 -2
- package/dist/service/s3/serve/sim-s3-req-router.d.ts.map +1 -1
- package/dist/service/s3/serve/sim-s3-req-router.js +3 -1
- package/dist/service/s3/serve/sim-s3-req-router.js.map +1 -1
- package/dist/service/s3/sim-s3.d.ts +7 -2
- package/dist/service/s3/sim-s3.d.ts.map +1 -1
- package/dist/service/s3/sim-s3.js +16 -9
- package/dist/service/s3/sim-s3.js.map +1 -1
- package/dist/service/s3/storage/s3-filesystem-storage.d.ts +6 -1
- package/dist/service/s3/storage/s3-filesystem-storage.d.ts.map +1 -1
- package/dist/service/s3/storage/s3-filesystem-storage.js +10 -6
- package/dist/service/s3/storage/s3-filesystem-storage.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +11 -26
|
@@ -5,7 +5,13 @@ import { SimAwsAccountRegionContainer } from "./sim-aws-account-region-scope.js"
|
|
|
5
5
|
import type { SimAwsServiceController } from "../../serve/controller/sim-service-controller.js";
|
|
6
6
|
import { SimS3 } from "../s3/sim-s3.js";
|
|
7
7
|
import { SimCloudFront } from "../cloudfront/sim-cloudfront.js";
|
|
8
|
+
import { SimCloudFrontRegistry } from "../cloudfront/sim-cloud-front-registry.js";
|
|
8
9
|
import { SimDynamoDb } from "../dynamodb/index.js";
|
|
10
|
+
interface SimAwsProps {
|
|
11
|
+
readonly defaultAccountId?: SimAwsAccountId;
|
|
12
|
+
readonly defaultRegionName?: AwsRegionName;
|
|
13
|
+
readonly background?: BackgroundScheduler & BackgroundCompleter;
|
|
14
|
+
}
|
|
9
15
|
/**
|
|
10
16
|
* Top-level container for simulated AWS.
|
|
11
17
|
* Contains Account scopes, Region scopes, Account/Region scopes, and built-in
|
|
@@ -13,15 +19,15 @@ import { SimDynamoDb } from "../dynamodb/index.js";
|
|
|
13
19
|
*/
|
|
14
20
|
export declare class SimAws {
|
|
15
21
|
readonly defaultAccountId: SimAwsAccountId;
|
|
16
|
-
readonly defaultRegionName:
|
|
17
|
-
readonly background
|
|
22
|
+
readonly defaultRegionName: AwsRegionName;
|
|
23
|
+
private readonly background;
|
|
18
24
|
private readonly accounts;
|
|
19
25
|
private readonly regions;
|
|
20
26
|
private readonly accountRegionScopes;
|
|
21
27
|
private readonly s3GlobalRegistry;
|
|
22
28
|
private readonly cloudFrontRegistry;
|
|
23
29
|
private readonly cloudFrontServices;
|
|
24
|
-
constructor(
|
|
30
|
+
constructor(props?: SimAwsProps);
|
|
25
31
|
/**
|
|
26
32
|
* Get a simulated AWS Account.
|
|
27
33
|
*/
|
|
@@ -49,22 +55,30 @@ export declare class SimAws {
|
|
|
49
55
|
/**
|
|
50
56
|
* Create simulated S3 for an Account Region scope.
|
|
51
57
|
*/
|
|
52
|
-
|
|
58
|
+
_createS3(scope: SimAwsAccountRegionContainer): SimS3;
|
|
53
59
|
/**
|
|
54
60
|
* Create or get simulated CloudFront for an Account scope.
|
|
55
61
|
*/
|
|
56
|
-
|
|
62
|
+
_createCloudFront(scope: SimAwsAccountRegionContainer): SimCloudFront;
|
|
63
|
+
/**
|
|
64
|
+
* Get the shared simulated CloudFront registry.
|
|
65
|
+
*
|
|
66
|
+
* This is intended for CloudFront service/controller wiring so request routing
|
|
67
|
+
* uses the same registry as CloudFront SDK command handling.
|
|
68
|
+
*/
|
|
69
|
+
_cloudFrontRegistry(): SimCloudFrontRegistry;
|
|
57
70
|
/**
|
|
58
71
|
* Create simulated DynamoDB for an Account Region scope.
|
|
59
72
|
*/
|
|
60
|
-
|
|
73
|
+
_createDynamoDb(scope: SimAwsAccountRegionContainer): SimDynamoDb;
|
|
61
74
|
/**
|
|
62
75
|
* Create a simulated AWS HTTP service controller.
|
|
63
76
|
*/
|
|
64
|
-
|
|
77
|
+
_createServiceController(serviceName: string): SimAwsServiceController;
|
|
65
78
|
/**
|
|
66
79
|
* Wait for all outstanding background tasks to complete.
|
|
67
80
|
*/
|
|
68
81
|
backgroundTasksComplete(): Promise<void>;
|
|
69
82
|
}
|
|
83
|
+
export {};
|
|
70
84
|
//# sourceMappingURL=sim-aws.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sim-aws.d.ts","sourceRoot":"","sources":["../../../src/service/aws/sim-aws.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,aAAa,EACb,KAAK,eAAe,EACrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EAEzB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,KAAK,aAAa,EAElB,YAAY,EACb,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEL,4BAA4B,EAC7B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kDAAkD,CAAC;AAChG,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAGxC,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"sim-aws.d.ts","sourceRoot":"","sources":["../../../src/service/aws/sim-aws.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,aAAa,EACb,KAAK,eAAe,EACrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EAEzB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,KAAK,aAAa,EAElB,YAAY,EACb,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEL,4BAA4B,EAC7B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kDAAkD,CAAC;AAChG,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAGxC,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAC;AAGlF,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,UAAU,WAAW;IACnB,QAAQ,CAAC,gBAAgB,CAAC,EAAE,eAAe,CAAC;IAC5C,QAAQ,CAAC,iBAAiB,CAAC,EAAE,aAAa,CAAC;IAC3C,QAAQ,CAAC,UAAU,CAAC,EAAE,mBAAmB,GAAG,mBAAmB,CAAC;CACjE;AAED;;;;GAIG;AACH,qBAAa,MAAM;IACjB,SAAgB,gBAAgB,EAAE,eAAe,CAAC;IAClD,SAAgB,iBAAiB,EAAE,aAAa,CAAC;IACjD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA4C;IAEvE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6C;IAEtE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0C;IAElE,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAGhC;IAEJ,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA6B;IAE9D,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA+B;IAElE,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAG/B;gBAEQ,KAAK,GAAE,WAAgB;IAYnC;;OAEG;IACH,OAAO,CAAC,SAAS,GAAE,MAA8B,GAAG,aAAa;IAcjE;;OAEG;IACH,MAAM,CAAC,UAAU,GAAE,aAAsC,GAAG,YAAY;IAcxE;;OAEG;IACH,kBAAkB,CAChB,SAAS,GAAE,eAAuC,EAClD,UAAU,GAAE,aAAsC,GACjD,4BAA4B;IAgB/B;;OAEG;IACH,EAAE,IAAI,KAAK;IAIX;;OAEG;IACH,UAAU,IAAI,aAAa;IAI3B;;OAEG;IACH,QAAQ,IAAI,WAAW;IAIvB;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,4BAA4B,GAAG,KAAK;IAOrD;;OAEG;IACH,iBAAiB,CAAC,KAAK,EAAE,4BAA4B,GAAG,aAAa;IAkBrE;;;;;OAKG;IACH,mBAAmB,IAAI,qBAAqB;IAI5C;;OAEG;IACH,eAAe,CAAC,KAAK,EAAE,4BAA4B,GAAG,WAAW;IAOjE;;OAEG;IACH,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG,uBAAuB;IAkBtE;;OAEG;IACG,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/C"}
|
|
@@ -25,7 +25,8 @@ export class SimAws {
|
|
|
25
25
|
s3GlobalRegistry = new SimS3GlobalRegistry();
|
|
26
26
|
cloudFrontRegistry = new SimCloudFrontRegistry();
|
|
27
27
|
cloudFrontServices = new Map();
|
|
28
|
-
constructor(
|
|
28
|
+
constructor(props = {}) {
|
|
29
|
+
const { defaultAccountId = DEFAULT_SIM_AWS_ACCOUNT_ID, defaultRegionName = DEFAULT_SIM_AWS_REGION_NAME, background = new BackgroundTasks(), } = props;
|
|
29
30
|
this.defaultAccountId = defaultAccountId;
|
|
30
31
|
this.defaultRegionName = defaultRegionName;
|
|
31
32
|
this.background = background;
|
|
@@ -36,7 +37,10 @@ export class SimAws {
|
|
|
36
37
|
account(accountId = this.defaultAccountId) {
|
|
37
38
|
let account = this.accounts.get(accountId);
|
|
38
39
|
if (account === undefined) {
|
|
39
|
-
account = new SimAwsAccount(
|
|
40
|
+
account = new SimAwsAccount({
|
|
41
|
+
simAws: this,
|
|
42
|
+
accountId: accountId,
|
|
43
|
+
});
|
|
40
44
|
this.accounts.set(accountId, account);
|
|
41
45
|
}
|
|
42
46
|
return account;
|
|
@@ -47,7 +51,10 @@ export class SimAws {
|
|
|
47
51
|
region(regionName = this.defaultRegionName) {
|
|
48
52
|
let region = this.regions.get(regionName);
|
|
49
53
|
if (region === undefined) {
|
|
50
|
-
region = new SimAwsRegion(
|
|
54
|
+
region = new SimAwsRegion({
|
|
55
|
+
simAws: this,
|
|
56
|
+
regionName,
|
|
57
|
+
});
|
|
51
58
|
this.regions.set(regionName, region);
|
|
52
59
|
}
|
|
53
60
|
return region;
|
|
@@ -59,7 +66,11 @@ export class SimAws {
|
|
|
59
66
|
const scopeKey = `${accountId}:${regionName}`;
|
|
60
67
|
let accountRegionScope = this.accountRegionScopes.get(scopeKey);
|
|
61
68
|
if (accountRegionScope === undefined) {
|
|
62
|
-
accountRegionScope = new SimAwsAccountRegionContainer(
|
|
69
|
+
accountRegionScope = new SimAwsAccountRegionContainer({
|
|
70
|
+
simAws: this,
|
|
71
|
+
account: this.account(accountId),
|
|
72
|
+
region: this.region(regionName),
|
|
73
|
+
});
|
|
63
74
|
this.accountRegionScopes.set(scopeKey, accountRegionScope);
|
|
64
75
|
}
|
|
65
76
|
return accountRegionScope;
|
|
@@ -85,37 +96,59 @@ export class SimAws {
|
|
|
85
96
|
/**
|
|
86
97
|
* Create simulated S3 for an Account Region scope.
|
|
87
98
|
*/
|
|
88
|
-
|
|
89
|
-
return new SimS3(
|
|
99
|
+
_createS3(scope) {
|
|
100
|
+
return new SimS3({
|
|
101
|
+
accountRegionScope: scope.accountRegionScope,
|
|
102
|
+
s3GlobalRegistry: this.s3GlobalRegistry,
|
|
103
|
+
});
|
|
90
104
|
}
|
|
91
105
|
/**
|
|
92
106
|
* Create or get simulated CloudFront for an Account scope.
|
|
93
107
|
*/
|
|
94
|
-
|
|
108
|
+
_createCloudFront(scope) {
|
|
95
109
|
const { accountId } = scope.accountRegionScope;
|
|
96
110
|
let cloudFront = this.cloudFrontServices.get(accountId);
|
|
97
111
|
if (cloudFront === undefined) {
|
|
98
|
-
cloudFront = new SimCloudFront(
|
|
112
|
+
cloudFront = new SimCloudFront({
|
|
113
|
+
accountRegionScope: scope.accountRegionScope,
|
|
114
|
+
cloudFrontRegistry: this.cloudFrontRegistry,
|
|
115
|
+
s3OriginResolver: createSimCloudFrontS3OriginResolver(this, scope),
|
|
116
|
+
background: this.background,
|
|
117
|
+
});
|
|
99
118
|
this.cloudFrontServices.set(accountId, cloudFront);
|
|
100
119
|
}
|
|
101
120
|
return cloudFront;
|
|
102
121
|
}
|
|
122
|
+
/**
|
|
123
|
+
* Get the shared simulated CloudFront registry.
|
|
124
|
+
*
|
|
125
|
+
* This is intended for CloudFront service/controller wiring so request routing
|
|
126
|
+
* uses the same registry as CloudFront SDK command handling.
|
|
127
|
+
*/
|
|
128
|
+
_cloudFrontRegistry() {
|
|
129
|
+
return this.cloudFrontRegistry;
|
|
130
|
+
}
|
|
103
131
|
/**
|
|
104
132
|
* Create simulated DynamoDB for an Account Region scope.
|
|
105
133
|
*/
|
|
106
|
-
|
|
107
|
-
return new SimDynamoDb(
|
|
134
|
+
_createDynamoDb(scope) {
|
|
135
|
+
return new SimDynamoDb({
|
|
136
|
+
accountRegionScope: scope.accountRegionScope,
|
|
137
|
+
background: this.background,
|
|
138
|
+
});
|
|
108
139
|
}
|
|
109
140
|
/**
|
|
110
141
|
* Create a simulated AWS HTTP service controller.
|
|
111
142
|
*/
|
|
112
|
-
|
|
143
|
+
_createServiceController(serviceName) {
|
|
113
144
|
switch (serviceName) {
|
|
114
145
|
case "s3": {
|
|
115
|
-
return new SimS3ServiceController(this);
|
|
146
|
+
return new SimS3ServiceController({ simAws: this });
|
|
116
147
|
}
|
|
117
148
|
case "cloudFront": {
|
|
118
|
-
return new SimCloudFrontServiceController(
|
|
149
|
+
return new SimCloudFrontServiceController({
|
|
150
|
+
simAws: this,
|
|
151
|
+
});
|
|
119
152
|
}
|
|
120
153
|
default: {
|
|
121
154
|
throw new Error(`No controller for simulated AWS service ${serviceName}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sim-aws.js","sourceRoot":"","sources":["../../../src/service/aws/sim-aws.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,aAAa,GAEd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAGL,eAAe,GAChB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAEL,2BAA2B,EAC3B,YAAY,GACb,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEL,4BAA4B,GAC7B,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAC;AAClF,OAAO,EAAE,mCAAmC,EAAE,MAAM,kDAAkD,CAAC;AACvG,OAAO,EAAE,8BAA8B,EAAE,MAAM,uDAAuD,CAAC;AACvG,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"sim-aws.js","sourceRoot":"","sources":["../../../src/service/aws/sim-aws.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,aAAa,GAEd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAGL,eAAe,GAChB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAEL,2BAA2B,EAC3B,YAAY,GACb,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEL,4BAA4B,GAC7B,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAC;AAClF,OAAO,EAAE,mCAAmC,EAAE,MAAM,kDAAkD,CAAC;AACvG,OAAO,EAAE,8BAA8B,EAAE,MAAM,uDAAuD,CAAC;AACvG,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAQnD;;;;GAIG;AACH,MAAM,OAAO,MAAM;IACD,gBAAgB,CAAkB;IAClC,iBAAiB,CAAgB;IAChC,UAAU,CAA4C;IAEtD,QAAQ,GAAG,IAAI,GAAG,EAAkC,CAAC;IAErD,OAAO,GAAG,IAAI,GAAG,EAA+B,CAAC;IAEjD,mBAAmB,GAAG,IAAI,GAAG,EAG3C,CAAC;IAEa,gBAAgB,GAAG,IAAI,mBAAmB,EAAE,CAAC;IAE7C,kBAAkB,GAAG,IAAI,qBAAqB,EAAE,CAAC;IAEjD,kBAAkB,GAAG,IAAI,GAAG,EAG1C,CAAC;IAEJ,YAAY,QAAqB,EAAE;QACjC,MAAM,EACJ,gBAAgB,GAAG,0BAA0B,EAC7C,iBAAiB,GAAG,2BAA2B,EAC/C,UAAU,GAAG,IAAI,eAAe,EAAE,GACnC,GAAG,KAAK,CAAC;QAEV,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACzC,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAC3C,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,YAAoB,IAAI,CAAC,gBAAgB;QAC/C,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAA4B,CAAC,CAAC;QAE9D,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,OAAO,GAAG,IAAI,aAAa,CAAC;gBAC1B,MAAM,EAAE,IAAI;gBACZ,SAAS,EAAE,SAA4B;aACxC,CAAC,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAA4B,EAAE,OAAO,CAAC,CAAC;QAC3D,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,aAA4B,IAAI,CAAC,iBAAiB;QACvD,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAE1C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,GAAG,IAAI,YAAY,CAAC;gBACxB,MAAM,EAAE,IAAI;gBACZ,UAAU;aACX,CAAC,CAAC;YACH,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QACvC,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,kBAAkB,CAChB,YAA6B,IAAI,CAAC,gBAAgB,EAClD,aAA4B,IAAI,CAAC,iBAAiB;QAElD,MAAM,QAAQ,GAAG,GAAG,SAAS,IAAI,UAAU,EAAW,CAAC;QACvD,IAAI,kBAAkB,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAEhE,IAAI,kBAAkB,KAAK,SAAS,EAAE,CAAC;YACrC,kBAAkB,GAAG,IAAI,4BAA4B,CAAC;gBACpD,MAAM,EAAE,IAAI;gBACZ,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;gBAChC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;aAChC,CAAC,CAAC;YACH,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;QAC7D,CAAC;QAED,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,EAAE;QACA,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC,EAAE,EAAE,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,UAAU;QACR,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC,UAAU,EAAE,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC,QAAQ,EAAE,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,KAAmC;QAC3C,OAAO,IAAI,KAAK,CAAC;YACf,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;YAC5C,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;SACxC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,KAAmC;QACnD,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC,kBAAkB,CAAC;QAE/C,IAAI,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAExD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,UAAU,GAAG,IAAI,aAAa,CAAC;gBAC7B,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;gBAC5C,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;gBAC3C,gBAAgB,EAAE,mCAAmC,CAAC,IAAI,EAAE,KAAK,CAAC;gBAClE,UAAU,EAAE,IAAI,CAAC,UAAU;aAC5B,CAAC,CAAC;YACH,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QACrD,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;;;;OAKG;IACH,mBAAmB;QACjB,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,KAAmC;QACjD,OAAO,IAAI,WAAW,CAAC;YACrB,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;YAC5C,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,wBAAwB,CAAC,WAAmB;QAC1C,QAAQ,WAAW,EAAE,CAAC;YACpB,KAAK,IAAI,CAAC,CAAC,CAAC;gBACV,OAAO,IAAI,sBAAsB,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YACtD,CAAC;YACD,KAAK,YAAY,CAAC,CAAC,CAAC;gBAClB,OAAO,IAAI,8BAA8B,CAAC;oBACxC,MAAM,EAAE,IAAI;iBACb,CAAC,CAAC;YACL,CAAC;YACD,OAAO,CAAC,CAAC,CAAC;gBACR,MAAM,IAAI,KAAK,CACb,2CAA2C,WAAW,EAAE,CACzD,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,uBAAuB;QAC3B,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;IACnC,CAAC;CACF"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { StaticFactory } from "@kensio/part-factory";
|
|
2
|
+
import type { SimArn } from "../../aws/arn.js";
|
|
2
3
|
export interface SimCloudFrontBehavior {
|
|
3
4
|
pathPattern?: string;
|
|
4
5
|
targetOriginName: string;
|
|
@@ -6,6 +7,10 @@ export interface SimCloudFrontBehavior {
|
|
|
6
7
|
cachedMethods: Set<string>;
|
|
7
8
|
viewerProtocolPolicy?: "allow-all" | "redirect-to-https" | "https-only";
|
|
8
9
|
originPath?: string;
|
|
10
|
+
functionAssociations?: {
|
|
11
|
+
viewerRequest?: SimArn;
|
|
12
|
+
viewerResponse?: SimArn;
|
|
13
|
+
} | undefined;
|
|
9
14
|
}
|
|
10
15
|
/**
|
|
11
16
|
* Generate a fake SimCloudFrontBehavior.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sim-cloud-front-behavior.d.ts","sourceRoot":"","sources":["../../../../src/service/cloudfront/behaviour/sim-cloud-front-behavior.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"sim-cloud-front-behavior.d.ts","sourceRoot":"","sources":["../../../../src/service/cloudfront/behaviour/sim-cloud-front-behavior.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE/C,MAAM,WAAW,qBAAqB;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5B,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3B,oBAAoB,CAAC,EAAE,WAAW,GAAG,mBAAmB,GAAG,YAAY,CAAC;IACxE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oBAAoB,CAAC,EACjB;QACE,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,GACD,SAAS,CAAC;CACf;AAED;;GAEG;AACH,eAAO,MAAM,4BAA4B,sCAQrC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sim-cloud-front-behavior.js","sourceRoot":"","sources":["../../../../src/service/cloudfront/behaviour/sim-cloud-front-behavior.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"sim-cloud-front-behavior.js","sourceRoot":"","sources":["../../../../src/service/cloudfront/behaviour/sim-cloud-front-behavior.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAkBrD;;GAEG;AACH,MAAM,CAAC,MAAM,4BAA4B,GACvC,IAAI,aAAa,CAAwB;IACvC,WAAW,EAAE,GAAG;IAChB,gBAAgB,EAAE,eAAe;IACjC,cAAc,EAAE,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACxC,aAAa,EAAE,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACvC,oBAAoB,EAAE,WAAW;IACjC,UAAU,EAAE,cAAc;CAC3B,CAAC,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { CloudFrontFunction } from "../../typings/cloudfront-functions.namespace.js";
|
|
2
|
+
/**
|
|
3
|
+
* Converts between native Fetch API Request/Response objects and the
|
|
4
|
+
* CloudFront Function event/request/response shapes.
|
|
5
|
+
*/
|
|
6
|
+
export declare class SimCffEventAdapter {
|
|
7
|
+
/**
|
|
8
|
+
* Adapt a Request into a ViewerRequestEvent.
|
|
9
|
+
*/
|
|
10
|
+
toViewerRequestEvent(req: Request): CloudFrontFunction.ViewerRequestEvent;
|
|
11
|
+
/**
|
|
12
|
+
* Adapt a Request and Response into a ViewerResponseEvent.
|
|
13
|
+
*/
|
|
14
|
+
toViewerResponseEvent(req: Request, res: Response): CloudFrontFunction.ViewerResponseEvent;
|
|
15
|
+
/**
|
|
16
|
+
* Adapt a viewer-request CFF result into a Request or Response.
|
|
17
|
+
*/
|
|
18
|
+
fromViewerRequestResult(result: CloudFrontFunction.Request | CloudFrontFunction.Response, originalReq: Request): Request | Response;
|
|
19
|
+
/**
|
|
20
|
+
* Adapt a viewer-response CFF result into a Response.
|
|
21
|
+
*/
|
|
22
|
+
fromViewerResponseResult(result: CloudFrontFunction.Response): Response;
|
|
23
|
+
private toCffRequest;
|
|
24
|
+
private toCffResponse;
|
|
25
|
+
private fromCffRequest;
|
|
26
|
+
private fromCffResponse;
|
|
27
|
+
private cffResponseBody;
|
|
28
|
+
private toCffHeaders;
|
|
29
|
+
private fromCffHeaders;
|
|
30
|
+
private toCffQueryString;
|
|
31
|
+
private fromCffQueryString;
|
|
32
|
+
private toCffCookies;
|
|
33
|
+
private fromCffCookies;
|
|
34
|
+
private isCffResponse;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=sim-cff-event-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-cff-event-adapter.d.ts","sourceRoot":"","sources":["../../../../../src/service/cloudfront/cff/adapter/sim-cff-event-adapter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iDAAiD,CAAC;AAE1F;;;GAGG;AACH,qBAAa,kBAAkB;IAC7B;;OAEG;IACH,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,kBAAkB,CAAC,kBAAkB;IAazE;;OAEG;IACH,qBAAqB,CACnB,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,GACZ,kBAAkB,CAAC,mBAAmB;IAczC;;OAEG;IACH,uBAAuB,CACrB,MAAM,EAAE,kBAAkB,CAAC,OAAO,GAAG,kBAAkB,CAAC,QAAQ,EAChE,WAAW,EAAE,OAAO,GACnB,OAAO,GAAG,QAAQ;IAQrB;;OAEG;IACH,wBAAwB,CAAC,MAAM,EAAE,kBAAkB,CAAC,QAAQ,GAAG,QAAQ;IAIvE,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,cAAc;IAkBtB,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,cAAc;IAkBtB,OAAO,CAAC,gBAAgB;IAyBxB,OAAO,CAAC,kBAAkB;IAkB1B,OAAO,CAAC,YAAY;IAwBpB,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,aAAa;CAKtB"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
/**
|
|
3
|
+
* Converts between native Fetch API Request/Response objects and the
|
|
4
|
+
* CloudFront Function event/request/response shapes.
|
|
5
|
+
*/
|
|
6
|
+
export class SimCffEventAdapter {
|
|
7
|
+
/**
|
|
8
|
+
* Adapt a Request into a ViewerRequestEvent.
|
|
9
|
+
*/
|
|
10
|
+
toViewerRequestEvent(req) {
|
|
11
|
+
return {
|
|
12
|
+
context: {
|
|
13
|
+
eventType: "viewer-request",
|
|
14
|
+
requestId: randomUUID(),
|
|
15
|
+
},
|
|
16
|
+
viewer: {
|
|
17
|
+
ip: "127.0.0.1",
|
|
18
|
+
},
|
|
19
|
+
request: this.toCffRequest(req),
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Adapt a Request and Response into a ViewerResponseEvent.
|
|
24
|
+
*/
|
|
25
|
+
toViewerResponseEvent(req, res) {
|
|
26
|
+
return {
|
|
27
|
+
context: {
|
|
28
|
+
eventType: "viewer-response",
|
|
29
|
+
requestId: randomUUID(),
|
|
30
|
+
},
|
|
31
|
+
viewer: {
|
|
32
|
+
ip: "127.0.0.1",
|
|
33
|
+
},
|
|
34
|
+
request: this.toCffRequest(req),
|
|
35
|
+
response: this.toCffResponse(res),
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Adapt a viewer-request CFF result into a Request or Response.
|
|
40
|
+
*/
|
|
41
|
+
fromViewerRequestResult(result, originalReq) {
|
|
42
|
+
if (this.isCffResponse(result)) {
|
|
43
|
+
return this.fromCffResponse(result);
|
|
44
|
+
}
|
|
45
|
+
return this.fromCffRequest(result, originalReq);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Adapt a viewer-response CFF result into a Response.
|
|
49
|
+
*/
|
|
50
|
+
fromViewerResponseResult(result) {
|
|
51
|
+
return this.fromCffResponse(result);
|
|
52
|
+
}
|
|
53
|
+
toCffRequest(req) {
|
|
54
|
+
const url = new URL(req.url);
|
|
55
|
+
return {
|
|
56
|
+
method: req.method,
|
|
57
|
+
uri: url.pathname,
|
|
58
|
+
headers: this.toCffHeaders(req.headers),
|
|
59
|
+
querystring: this.toCffQueryString(url.searchParams),
|
|
60
|
+
cookies: this.toCffCookies(req.headers),
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
toCffResponse(res) {
|
|
64
|
+
return {
|
|
65
|
+
statusCode: res.status,
|
|
66
|
+
statusDescription: res.statusText,
|
|
67
|
+
headers: this.toCffHeaders(res.headers),
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
fromCffRequest(cffReq, originalReq) {
|
|
71
|
+
const url = new URL(originalReq.url);
|
|
72
|
+
url.pathname = cffReq.uri;
|
|
73
|
+
url.search = this.fromCffQueryString(cffReq.querystring);
|
|
74
|
+
const allowsBody = !/^(get|head)$/i.test(cffReq.method);
|
|
75
|
+
return new Request(url, {
|
|
76
|
+
method: cffReq.method,
|
|
77
|
+
headers: this.fromCffHeaders(cffReq.headers, cffReq.cookies),
|
|
78
|
+
body: allowsBody ? originalReq.clone().body : null,
|
|
79
|
+
redirect: originalReq.redirect,
|
|
80
|
+
signal: originalReq.signal,
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
fromCffResponse(cffRes) {
|
|
84
|
+
return new Response(this.cffResponseBody(cffRes), {
|
|
85
|
+
status: cffRes.statusCode,
|
|
86
|
+
statusText: cffRes.statusDescription ?? "",
|
|
87
|
+
headers: this.fromCffHeaders(cffRes.headers, {}),
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
cffResponseBody(cffRes) {
|
|
91
|
+
if (cffRes.body === undefined) {
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
94
|
+
if (cffRes.bodyEncoding === "base64") {
|
|
95
|
+
return Buffer.from(cffRes.body, "base64");
|
|
96
|
+
}
|
|
97
|
+
return cffRes.body;
|
|
98
|
+
}
|
|
99
|
+
toCffHeaders(headers) {
|
|
100
|
+
const cffHeaders = {};
|
|
101
|
+
for (const [name, value] of headers.entries()) {
|
|
102
|
+
cffHeaders[name.toLowerCase()] = { value };
|
|
103
|
+
}
|
|
104
|
+
return cffHeaders;
|
|
105
|
+
}
|
|
106
|
+
fromCffHeaders(headers, cookies) {
|
|
107
|
+
const nativeHeaders = new Headers();
|
|
108
|
+
for (const [name, { value }] of Object.entries(headers)) {
|
|
109
|
+
nativeHeaders.set(name, value);
|
|
110
|
+
}
|
|
111
|
+
const cookieHeader = this.fromCffCookies(cookies);
|
|
112
|
+
if (cookieHeader !== undefined) {
|
|
113
|
+
nativeHeaders.set("cookie", cookieHeader);
|
|
114
|
+
}
|
|
115
|
+
return nativeHeaders;
|
|
116
|
+
}
|
|
117
|
+
toCffQueryString(searchParams) {
|
|
118
|
+
const queryString = {};
|
|
119
|
+
for (const key of new Set(searchParams.keys())) {
|
|
120
|
+
const values = searchParams.getAll(key).map((value) => ({ value }));
|
|
121
|
+
if (values[0] !== undefined) {
|
|
122
|
+
// eslint-disable-next-line security/detect-object-injection
|
|
123
|
+
queryString[key] = values[0];
|
|
124
|
+
if (values.length > 1) {
|
|
125
|
+
// Multi-value: first value as `value`, all values in `multiValue`
|
|
126
|
+
// eslint-disable-next-line security/detect-object-injection
|
|
127
|
+
queryString[key] = {
|
|
128
|
+
value: values[0].value,
|
|
129
|
+
multiValue: values,
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
return queryString;
|
|
135
|
+
}
|
|
136
|
+
fromCffQueryString(querystring) {
|
|
137
|
+
const searchParams = new URLSearchParams();
|
|
138
|
+
for (const [key, valueOrMultiValue] of Object.entries(querystring)) {
|
|
139
|
+
if ("multiValue" in valueOrMultiValue) {
|
|
140
|
+
for (const { value } of valueOrMultiValue.multiValue) {
|
|
141
|
+
searchParams.append(key, value);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
searchParams.append(key, valueOrMultiValue.value);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return searchParams.toString();
|
|
149
|
+
}
|
|
150
|
+
toCffCookies(headers) {
|
|
151
|
+
const cookieHeader = headers.get("cookie");
|
|
152
|
+
if (cookieHeader === null) {
|
|
153
|
+
return {};
|
|
154
|
+
}
|
|
155
|
+
const cookies = {};
|
|
156
|
+
for (const cookiePair of cookieHeader.split(";")) {
|
|
157
|
+
const [rawName, ...rawValueParts] = cookiePair.trim().split("=");
|
|
158
|
+
const name = rawName?.trim();
|
|
159
|
+
if (name === undefined || name === "") {
|
|
160
|
+
continue;
|
|
161
|
+
}
|
|
162
|
+
// eslint-disable-next-line security/detect-object-injection
|
|
163
|
+
cookies[name] = {
|
|
164
|
+
value: rawValueParts.join("=").trim(),
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
return cookies;
|
|
168
|
+
}
|
|
169
|
+
fromCffCookies(cookies) {
|
|
170
|
+
const cookiePairs = Object.entries(cookies).map(([name, { value }]) => `${name}=${value}`);
|
|
171
|
+
return cookiePairs.length === 0 ? undefined : cookiePairs.join("; ");
|
|
172
|
+
}
|
|
173
|
+
isCffResponse(result) {
|
|
174
|
+
return "statusCode" in result;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
//# sourceMappingURL=sim-cff-event-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-cff-event-adapter.js","sourceRoot":"","sources":["../../../../../src/service/cloudfront/cff/adapter/sim-cff-event-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { CloudFrontFunction } from "../../typings/cloudfront-functions.namespace.js";
|
|
2
|
+
import type { SimCreateFunctionCommand } from "../../command/create-function/create-function.cmd.js";
|
|
3
|
+
type FunctionCodeInput = SimCreateFunctionCommand["input"]["FunctionCode"];
|
|
4
|
+
/**
|
|
5
|
+
* Convert a handler function reference into a Uint8Array for input in the
|
|
6
|
+
* CloudFront CreateFunction Command input FunctionCode.
|
|
7
|
+
*/
|
|
8
|
+
export declare function makeCffFunctionCodeInput(handlerFunction: CloudFrontFunction.Handler): FunctionCodeInput;
|
|
9
|
+
/**
|
|
10
|
+
* A little trick to allow passing a handler function into CreateFunctionCommand
|
|
11
|
+
* input as if it were a Uint8Array without TypeScript complaining.
|
|
12
|
+
*/
|
|
13
|
+
export declare class CffUint8ArrayStowaway extends Uint8Array {
|
|
14
|
+
private _handlerFunction;
|
|
15
|
+
/**
|
|
16
|
+
* Stowaway the real handler function in this Uint8Array disguise.
|
|
17
|
+
*/
|
|
18
|
+
stowawayHandlerFunction(handlerFunction: CloudFrontFunction.Handler): this;
|
|
19
|
+
/**
|
|
20
|
+
* Get the handler function stowed away in this Uint8Array disguise.
|
|
21
|
+
*/
|
|
22
|
+
get handlerFunction(): CloudFrontFunction.Handler;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Extracts a handler function as a function reference, either from source
|
|
26
|
+
* code in a Uint8Array or from a function-code-input.
|
|
27
|
+
*/
|
|
28
|
+
export declare class CffUint8ArrayFunctionCodeExtractor<H extends CloudFrontFunction.Handler = CloudFrontFunction.ViewerRequestHandler> {
|
|
29
|
+
private readonly functionCodeInput;
|
|
30
|
+
constructor(functionCodeInput: FunctionCodeInput);
|
|
31
|
+
/**
|
|
32
|
+
* Extract the handler function.
|
|
33
|
+
*/
|
|
34
|
+
extractHandlerFunction(): H;
|
|
35
|
+
private extractUint8ArraySourceCode;
|
|
36
|
+
}
|
|
37
|
+
export {};
|
|
38
|
+
//# sourceMappingURL=cff-function-code-input.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cff-function-code-input.d.ts","sourceRoot":"","sources":["../../../../../src/service/cloudfront/cff/function-code-input/cff-function-code-input.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iDAAiD,CAAC;AAE1F,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sDAAsD,CAAC;AAGrG,KAAK,iBAAiB,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,CAAC;AAE3E;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,eAAe,EAAE,kBAAkB,CAAC,OAAO,GAC1C,iBAAiB,CAInB;AAED;;;GAGG;AACH,qBAAa,qBAAsB,SAAQ,UAAU;IACnD,OAAO,CAAC,gBAAgB,CAAiD;IAEzE;;OAEG;IACH,uBAAuB,CAAC,eAAe,EAAE,kBAAkB,CAAC,OAAO,GAAG,IAAI;IAK1E;;OAEG;IACH,IAAI,eAAe,IAAI,kBAAkB,CAAC,OAAO,CAEhD;CACF;AAED;;;GAGG;AACH,qBAAa,kCAAkC,CAC7C,CAAC,SAAS,kBAAkB,CAAC,OAAO,GAClC,kBAAkB,CAAC,oBAAoB;IAE7B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;gBAAjB,iBAAiB,EAAE,iBAAiB;IAEjE;;OAEG;IACH,sBAAsB,IAAI,CAAC;IAQ3B,OAAO,CAAC,2BAA2B;CAsBpC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { defaultCffHandler } from "../sim-cloudfront-function.js";
|
|
2
|
+
import vm from "node:vm";
|
|
3
|
+
/**
|
|
4
|
+
* Convert a handler function reference into a Uint8Array for input in the
|
|
5
|
+
* CloudFront CreateFunction Command input FunctionCode.
|
|
6
|
+
*/
|
|
7
|
+
export function makeCffFunctionCodeInput(handlerFunction) {
|
|
8
|
+
const stowaway = new CffUint8ArrayStowaway();
|
|
9
|
+
stowaway.stowawayHandlerFunction(handlerFunction);
|
|
10
|
+
return stowaway;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* A little trick to allow passing a handler function into CreateFunctionCommand
|
|
14
|
+
* input as if it were a Uint8Array without TypeScript complaining.
|
|
15
|
+
*/
|
|
16
|
+
export class CffUint8ArrayStowaway extends Uint8Array {
|
|
17
|
+
_handlerFunction = defaultCffHandler;
|
|
18
|
+
/**
|
|
19
|
+
* Stowaway the real handler function in this Uint8Array disguise.
|
|
20
|
+
*/
|
|
21
|
+
stowawayHandlerFunction(handlerFunction) {
|
|
22
|
+
this._handlerFunction = handlerFunction;
|
|
23
|
+
return this;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Get the handler function stowed away in this Uint8Array disguise.
|
|
27
|
+
*/
|
|
28
|
+
get handlerFunction() {
|
|
29
|
+
return this._handlerFunction;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Extracts a handler function as a function reference, either from source
|
|
34
|
+
* code in a Uint8Array or from a function-code-input.
|
|
35
|
+
*/
|
|
36
|
+
export class CffUint8ArrayFunctionCodeExtractor {
|
|
37
|
+
functionCodeInput;
|
|
38
|
+
constructor(functionCodeInput) {
|
|
39
|
+
this.functionCodeInput = functionCodeInput;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Extract the handler function.
|
|
43
|
+
*/
|
|
44
|
+
extractHandlerFunction() {
|
|
45
|
+
if (this.functionCodeInput instanceof CffUint8ArrayStowaway) {
|
|
46
|
+
return this.functionCodeInput.handlerFunction;
|
|
47
|
+
}
|
|
48
|
+
return this.extractUint8ArraySourceCode();
|
|
49
|
+
}
|
|
50
|
+
extractUint8ArraySourceCode() {
|
|
51
|
+
const source = Buffer.from(this.functionCodeInput ?? "").toString();
|
|
52
|
+
const context = vm.createContext({
|
|
53
|
+
console,
|
|
54
|
+
});
|
|
55
|
+
const script = new vm.Script(`
|
|
56
|
+
${source}
|
|
57
|
+
handler;
|
|
58
|
+
`);
|
|
59
|
+
const handler = script.runInContext(context, {
|
|
60
|
+
timeout: 10, // Real CloudFront Functions have a short timeout.
|
|
61
|
+
breakOnSigint: true,
|
|
62
|
+
});
|
|
63
|
+
if (typeof handler !== "function") {
|
|
64
|
+
throw new TypeError("CloudFront Function code did not define a handler function");
|
|
65
|
+
}
|
|
66
|
+
return handler;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=cff-function-code-input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cff-function-code-input.js","sourceRoot":"","sources":["../../../../../src/service/cloudfront/cff/function-code-input/cff-function-code-input.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAElE,OAAO,EAAE,MAAM,SAAS,CAAC;AAIzB;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CACtC,eAA2C;IAE3C,MAAM,QAAQ,GAAG,IAAI,qBAAqB,EAAE,CAAC;IAC7C,QAAQ,CAAC,uBAAuB,CAAC,eAAe,CAAC,CAAC;IAClD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,MAAM,OAAO,qBAAsB,SAAQ,UAAU;IAC3C,gBAAgB,GAA+B,iBAAiB,CAAC;IAEzE;;OAEG;IACH,uBAAuB,CAAC,eAA2C;QACjE,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,kCAAkC;IAIhB;IAA7B,YAA6B,iBAAoC;QAApC,sBAAiB,GAAjB,iBAAiB,CAAmB;IAAG,CAAC;IAErE;;OAEG;IACH,sBAAsB;QACpB,IAAI,IAAI,CAAC,iBAAiB,YAAY,qBAAqB,EAAE,CAAC;YAC5D,OAAO,IAAI,CAAC,iBAAiB,CAAC,eAAoB,CAAC;QACrD,CAAC;QAED,OAAO,IAAI,CAAC,2BAA2B,EAAE,CAAC;IAC5C,CAAC;IAEO,2BAA2B;QACjC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;QACpE,MAAM,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC;YAC/B,OAAO;SACR,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC;MAC3B,MAAM;;KAEP,CAAC,CAAC;QACH,MAAM,OAAO,GAAY,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE;YACpD,OAAO,EAAE,EAAE,EAAE,kDAAkD;YAC/D,aAAa,EAAE,IAAI;SACpB,CAAC,CAAC;QAEH,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;YAClC,MAAM,IAAI,SAAS,CACjB,4DAA4D,CAC7D,CAAC;QACJ,CAAC;QAED,OAAO,OAAY,CAAC;IACtB,CAAC;CACF"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { CloudFrontFunction } from "../typings/cloudfront-functions.namespace.js";
|
|
2
|
+
import { SimCffEventAdapter } from "./adapter/sim-cff-event-adapter.js";
|
|
3
|
+
import type { Brand } from "../../../util/brand.type.js";
|
|
4
|
+
import type { SimArn } from "../../aws/arn.js";
|
|
5
|
+
import { type SimAwsAccountId } from "../../aws/sim-aws-account.js";
|
|
6
|
+
export type SimCloudFrontFunctionName = Brand<string, "SimCloudFrontFunctionName">;
|
|
7
|
+
export type CloudFrontFunctionStatus = "UNPUBLISHED" | "UNASSOCIATED" | "ASSOCIATED";
|
|
8
|
+
interface SimCloudFrontFunctionProps {
|
|
9
|
+
name: SimCloudFrontFunctionName | string;
|
|
10
|
+
status?: CloudFrontFunctionStatus;
|
|
11
|
+
readonly accountId?: SimAwsAccountId;
|
|
12
|
+
handlerFunction?: CloudFrontFunction.Handler;
|
|
13
|
+
eventAdapter?: SimCffEventAdapter;
|
|
14
|
+
}
|
|
15
|
+
export declare const defaultCffHandler: CloudFrontFunction.Handler;
|
|
16
|
+
/**
|
|
17
|
+
* Simulated CloudFront Function resource.
|
|
18
|
+
*/
|
|
19
|
+
export declare class SimCloudFrontFunction {
|
|
20
|
+
readonly name: SimCloudFrontFunctionName;
|
|
21
|
+
private _status;
|
|
22
|
+
readonly accountId: SimAwsAccountId;
|
|
23
|
+
private readonly handlerFunction;
|
|
24
|
+
private readonly eventAdapter;
|
|
25
|
+
constructor(props: SimCloudFrontFunctionProps);
|
|
26
|
+
/**
|
|
27
|
+
* Get the current status of this sim CloudFront Function.
|
|
28
|
+
*/
|
|
29
|
+
get status(): CloudFrontFunctionStatus;
|
|
30
|
+
/**
|
|
31
|
+
* Get the ARN for this sim CloudFront Function.
|
|
32
|
+
*/
|
|
33
|
+
get arn(): SimArn;
|
|
34
|
+
/**
|
|
35
|
+
* Move this sim CloudFront Function to the PUBLISHED status.
|
|
36
|
+
*/
|
|
37
|
+
publish(): Promise<void>;
|
|
38
|
+
/**
|
|
39
|
+
* Run the viewer-request CFF handler on a native Request.
|
|
40
|
+
*/
|
|
41
|
+
handleViewerRequest(req: Request): Request | Response;
|
|
42
|
+
/**
|
|
43
|
+
* Run the viewer-response CFF handler on a native Request and Response.
|
|
44
|
+
*/
|
|
45
|
+
handleViewerResponse(req: Request, res: Response): Response;
|
|
46
|
+
}
|
|
47
|
+
export {};
|
|
48
|
+
//# sourceMappingURL=sim-cloudfront-function.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-cloudfront-function.d.ts","sourceRoot":"","sources":["../../../../src/service/cloudfront/cff/sim-cloudfront-function.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8CAA8C,CAAC;AACvF,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,8BAA8B,CAAC;AAEtC,MAAM,MAAM,yBAAyB,GAAG,KAAK,CAC3C,MAAM,EACN,2BAA2B,CAC5B,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAChC,aAAa,GACb,cAAc,GACd,YAAY,CAAC;AAEjB,UAAU,0BAA0B;IAClC,IAAI,EAAE,yBAAyB,GAAG,MAAM,CAAC;IACzC,MAAM,CAAC,EAAE,wBAAwB,CAAC;IAClC,QAAQ,CAAC,SAAS,CAAC,EAAE,eAAe,CAAC;IACrC,eAAe,CAAC,EAAE,kBAAkB,CAAC,OAAO,CAAC;IAC7C,YAAY,CAAC,EAAE,kBAAkB,CAAC;CACnC;AAED,eAAO,MAAM,iBAAiB,EAAE,kBAAkB,CAAC,OAOlD,CAAC;AAEF;;GAEG;AACH,qBAAa,qBAAqB;IAChC,SAAgB,IAAI,EAAE,yBAAyB,CAAC;IAChD,OAAO,CAAC,OAAO,CAA2B;IAC1C,SAAgB,SAAS,EAAE,eAAe,CAAC;IAE3C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA6B;IAC7D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqB;gBAEtC,KAAK,EAAE,0BAA0B;IAe7C;;OAEG;IACH,IAAI,MAAM,IAAI,wBAAwB,CAErC;IAED;;OAEG;IACH,IAAI,GAAG,IAAI,MAAM,CAEhB;IAED;;OAEG;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAKxB;;OAEG;IACH,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,GAAG,QAAQ;IAUrD;;OAEG;IACH,oBAAoB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,QAAQ;CAS5D"}
|