@kensio/yulin 0.2.0 → 0.4.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 +89 -1
- package/dist/serve/controller/sim-aws-service-controller-container.d.ts +17 -0
- package/dist/serve/controller/sim-aws-service-controller-container.d.ts.map +1 -0
- package/dist/serve/controller/sim-aws-service-controller-container.js +29 -0
- package/dist/serve/controller/sim-aws-service-controller-container.js.map +1 -0
- package/dist/serve/controller/sim-service-controller.d.ts +22 -0
- package/dist/serve/controller/sim-service-controller.d.ts.map +1 -0
- package/dist/serve/controller/sim-service-controller.js +2 -0
- package/dist/serve/controller/sim-service-controller.js.map +1 -0
- package/dist/serve/http/sim-aws-http.d.ts +20 -0
- package/dist/serve/http/sim-aws-http.d.ts.map +1 -0
- package/dist/serve/http/sim-aws-http.js +57 -0
- package/dist/serve/http/sim-aws-http.js.map +1 -0
- package/dist/serve/http/sim-aws-local-server.d.ts +37 -0
- package/dist/serve/http/sim-aws-local-server.d.ts.map +1 -0
- package/dist/serve/http/sim-aws-local-server.js +132 -0
- package/dist/serve/http/sim-aws-local-server.js.map +1 -0
- package/dist/serve/http/sim-aws-local.conf.d.ts +8 -0
- package/dist/serve/http/sim-aws-local.conf.d.ts.map +1 -0
- package/dist/serve/http/sim-aws-local.conf.js +8 -0
- package/dist/serve/http/sim-aws-local.conf.js.map +1 -0
- package/dist/serve/index.d.ts +3 -0
- package/dist/serve/index.d.ts.map +1 -0
- package/dist/serve/index.js +3 -0
- package/dist/serve/index.js.map +1 -0
- package/dist/serve/resolve/sim-aws-local-service-resolver.d.ts +13 -0
- package/dist/serve/resolve/sim-aws-local-service-resolver.d.ts.map +1 -0
- package/dist/serve/resolve/sim-aws-local-service-resolver.js +38 -0
- package/dist/serve/resolve/sim-aws-local-service-resolver.js.map +1 -0
- package/dist/service/aws/arn.d.ts +17 -0
- package/dist/service/aws/arn.d.ts.map +1 -0
- package/dist/service/aws/arn.js +21 -0
- package/dist/service/aws/arn.js.map +1 -0
- package/dist/service/aws/sim-aws-account-region-scope.d.ts +38 -0
- package/dist/service/aws/sim-aws-account-region-scope.d.ts.map +1 -0
- package/dist/service/aws/sim-aws-account-region-scope.js +52 -0
- package/dist/service/aws/sim-aws-account-region-scope.js.map +1 -0
- package/dist/service/aws/sim-aws-account.d.ts +33 -0
- package/dist/service/aws/sim-aws-account.d.ts.map +1 -0
- package/dist/service/aws/sim-aws-account.js +38 -0
- package/dist/service/aws/sim-aws-account.js.map +1 -0
- package/dist/service/aws/sim-aws-region.d.ts +33 -0
- package/dist/service/aws/sim-aws-region.d.ts.map +1 -0
- package/dist/service/aws/sim-aws-region.js +74 -0
- package/dist/service/aws/sim-aws-region.js.map +1 -0
- package/dist/service/aws/sim-aws-services.d.ts +21 -0
- package/dist/service/aws/sim-aws-services.d.ts.map +1 -0
- package/dist/service/aws/sim-aws-services.js +2 -0
- package/dist/service/aws/sim-aws-services.js.map +1 -0
- package/dist/service/aws/sim-aws.d.ts +50 -0
- package/dist/service/aws/sim-aws.d.ts.map +1 -0
- package/dist/service/aws/sim-aws.js +82 -0
- package/dist/service/aws/sim-aws.js.map +1 -0
- package/dist/service/dynamodb/command/create-table/create-table.handler.d.ts +3 -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 +7 -3
- package/dist/service/dynamodb/command/create-table/create-table.handler.js.map +1 -1
- package/dist/service/dynamodb/index.d.ts +1 -1
- package/dist/service/dynamodb/index.d.ts.map +1 -1
- package/dist/service/dynamodb/index.js +1 -1
- package/dist/service/dynamodb/index.js.map +1 -1
- package/dist/service/dynamodb/sim-dynamodb.d.ts +29 -0
- package/dist/service/dynamodb/sim-dynamodb.d.ts.map +1 -0
- package/dist/service/dynamodb/sim-dynamodb.js +47 -0
- package/dist/service/dynamodb/sim-dynamodb.js.map +1 -0
- package/dist/service/dynamodb/table/dynamodb-table.d.ts +7 -1
- package/dist/service/dynamodb/table/dynamodb-table.d.ts.map +1 -1
- package/dist/service/dynamodb/table/dynamodb-table.js +14 -1
- package/dist/service/dynamodb/table/dynamodb-table.js.map +1 -1
- package/dist/service/s3/bucket/s3-bucket.d.ts +18 -4
- package/dist/service/s3/bucket/s3-bucket.d.ts.map +1 -1
- package/dist/service/s3/bucket/s3-bucket.js +26 -11
- package/dist/service/s3/bucket/s3-bucket.js.map +1 -1
- package/dist/service/s3/bucket/website/s3-bucket-website.d.ts +39 -0
- package/dist/service/s3/bucket/website/s3-bucket-website.d.ts.map +1 -0
- package/dist/service/s3/bucket/website/s3-bucket-website.js +123 -0
- package/dist/service/s3/bucket/website/s3-bucket-website.js.map +1 -0
- package/dist/service/s3/command/create-bucket/create-bucket.handler.d.ts +5 -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 +26 -5
- package/dist/service/s3/command/create-bucket/create-bucket.handler.js.map +1 -1
- package/dist/service/s3/command/get-object/get-object.handler.d.ts +2 -2
- 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.map +1 -1
- package/dist/service/s3/command/list-buckets/list-buckets.handler.d.ts +2 -2
- 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.map +1 -1
- package/dist/service/s3/command/list-objects/list-objects.handler.d.ts +2 -2
- 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.map +1 -1
- package/dist/service/s3/command/put-bucket-website/put-bucket-website.handler.d.ts +17 -0
- package/dist/service/s3/command/put-bucket-website/put-bucket-website.handler.d.ts.map +1 -0
- package/dist/service/s3/command/put-bucket-website/put-bucket-website.handler.js +37 -0
- package/dist/service/s3/command/put-bucket-website/put-bucket-website.handler.js.map +1 -0
- package/dist/service/s3/command/put-object/put-object.handler.d.ts +3 -2
- 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 +9 -1
- package/dist/service/s3/command/put-object/put-object.handler.js.map +1 -1
- package/dist/service/s3/index.d.ts +1 -1
- package/dist/service/s3/index.d.ts.map +1 -1
- package/dist/service/s3/index.js +1 -1
- package/dist/service/s3/index.js.map +1 -1
- package/dist/service/s3/serve/sim-s3-controller.d.ts +15 -0
- package/dist/service/s3/serve/sim-s3-controller.d.ts.map +1 -0
- package/dist/service/s3/serve/sim-s3-controller.js +29 -0
- package/dist/service/s3/serve/sim-s3-controller.js.map +1 -0
- package/dist/service/s3/serve/sim-s3-get-obj-controller.d.ts +14 -0
- package/dist/service/s3/serve/sim-s3-get-obj-controller.d.ts.map +1 -0
- package/dist/service/s3/serve/sim-s3-get-obj-controller.js +66 -0
- package/dist/service/s3/serve/sim-s3-get-obj-controller.js.map +1 -0
- package/dist/service/s3/serve/sim-s3-req-router.d.ts +26 -0
- package/dist/service/s3/serve/sim-s3-req-router.d.ts.map +1 -0
- package/dist/service/s3/serve/sim-s3-req-router.js +72 -0
- package/dist/service/s3/serve/sim-s3-req-router.js.map +1 -0
- package/dist/service/s3/sim-s3-global-registry.d.ts +20 -0
- package/dist/service/s3/sim-s3-global-registry.d.ts.map +1 -0
- package/dist/service/s3/sim-s3-global-registry.js +22 -0
- package/dist/service/s3/sim-s3-global-registry.js.map +1 -0
- package/dist/service/s3/sim-s3.d.ts +42 -0
- package/dist/service/s3/sim-s3.d.ts.map +1 -0
- package/dist/service/s3/sim-s3.js +69 -0
- package/dist/service/s3/sim-s3.js.map +1 -0
- package/dist/service/s3/storage/s3-bucket-storage.d.ts +2 -16
- package/dist/service/s3/storage/s3-bucket-storage.d.ts.map +1 -1
- package/dist/service/s3/storage/s3-bucket-storage.js +1 -63
- package/dist/service/s3/storage/s3-bucket-storage.js.map +1 -1
- package/dist/service/s3/storage/s3-filesystem-storage.d.ts +59 -0
- package/dist/service/s3/storage/s3-filesystem-storage.d.ts.map +1 -0
- package/dist/service/s3/storage/s3-filesystem-storage.js +266 -0
- package/dist/service/s3/storage/s3-filesystem-storage.js.map +1 -0
- package/dist/service/s3/storage/s3-memory-storage.d.ts +27 -0
- package/dist/service/s3/storage/s3-memory-storage.d.ts.map +1 -0
- package/dist/service/s3/storage/s3-memory-storage.js +37 -0
- package/dist/service/s3/storage/s3-memory-storage.js.map +1 -0
- package/dist/util/filesystem/temp-dir.d.ts +5 -0
- package/dist/util/filesystem/temp-dir.d.ts.map +1 -0
- package/dist/util/filesystem/temp-dir.js +14 -0
- package/dist/util/filesystem/temp-dir.js.map +1 -0
- package/package.json +21 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-objects.handler.js","sourceRoot":"","sources":["../../../../../src/service/s3/command/list-objects/list-objects.handler.ts"],"names":[],"mappings":"AACA,OAAO,EACL,YAAY,GAGb,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAEnD;;;;GAIG;AACH,MAAM,OAAO,yBAAyB;IAIP;IAA7B,YAA6B,
|
|
1
|
+
{"version":3,"file":"list-objects.handler.js","sourceRoot":"","sources":["../../../../../src/service/s3/command/list-objects/list-objects.handler.ts"],"names":[],"mappings":"AACA,OAAO,EACL,YAAY,GAGb,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAEnD;;;;GAIG;AACH,MAAM,OAAO,yBAAyB;IAIP;IAA7B,YAA6B,OAA0C;QAA1C,YAAO,GAAP,OAAO,CAAmC;IAAG,CAAC;IAE3E;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,GAAuB;QAClC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,iCAAiC,CAAC,CAAC;QAEnE,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,MAAyB,CAAC;QACvD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC5C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,IAAI,YAAY,CAAC;gBACrB,OAAO,EAAE,sBAAsB,UAAU,EAAE;gBAC3C,SAAS,EAAE,EAAE;aACd,CAAC,CAAC;QACL,CAAC;QAED,MAAM,MAAM,EAAE,CAAC;QAEf,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;QAChC,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;QAChC,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC;QAE1C,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAEnD,MAAM,UAAU,GACd,MAAM,KAAK,SAAS;YAClB,CAAC,CAAC,CAAC;YACH,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAE5E,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,CAAC;QAC7D,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,WAAW,GAAG,UAAU,GAAG,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAE9D,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;gBAC9B,GAAG,EAAE,MAAM,CAAC,GAAG;gBACf,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM;aACzB,CAAC,CAAC;YACH,IAAI,EAAE,MAAM,CAAC,UAAU;YACvB,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,OAAO;YAChB,WAAW,EAAE,WAAW;YACxB,UAAU,EACR,WAAW,IAAI,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;YACtE,SAAS,EAAE,EAAE;SACd,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { CommandHandler } from "../../../../command/command-handler.js";
|
|
2
|
+
import { type PutBucketWebsiteCommand, type PutBucketWebsiteCommandOutput } from "@aws-sdk/client-s3";
|
|
3
|
+
import type { SimS3Bucket, SimS3BucketName } from "../../bucket/s3-bucket.js";
|
|
4
|
+
/**
|
|
5
|
+
* Simulated S3 PutBucketWebsiteCommand handler.
|
|
6
|
+
*
|
|
7
|
+
* https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/PutBucketWebsiteCommand/
|
|
8
|
+
*/
|
|
9
|
+
export declare class PutBucketWebsiteCommandHandler implements CommandHandler<PutBucketWebsiteCommand, PutBucketWebsiteCommandOutput> {
|
|
10
|
+
private readonly buckets;
|
|
11
|
+
constructor(buckets: Map<SimS3BucketName, SimS3Bucket>);
|
|
12
|
+
/**
|
|
13
|
+
* Configure static website hosting for an S3 Bucket.
|
|
14
|
+
*/
|
|
15
|
+
handle(cmd: PutBucketWebsiteCommand): Promise<PutBucketWebsiteCommandOutput>;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=put-bucket-website.handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"put-bucket-website.handler.d.ts","sourceRoot":"","sources":["../../../../../src/service/s3/command/put-bucket-website/put-bucket-website.handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,EAEL,KAAK,uBAAuB,EAC5B,KAAK,6BAA6B,EACnC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAM9E;;;;GAIG;AACH,qBAAa,8BAA+B,YAAW,cAAc,CACnE,uBAAuB,EACvB,6BAA6B,CAC9B;IACa,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,GAAG,CAAC,eAAe,EAAE,WAAW,CAAC;IAEvE;;OAEG;IACG,MAAM,CACV,GAAG,EAAE,uBAAuB,GAC3B,OAAO,CAAC,6BAA6B,CAAC;CA2B1C"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { NoSuchBucket, } from "@aws-sdk/client-s3";
|
|
2
|
+
import { S3BucketWebsite } from "../../bucket/website/s3-bucket-website.js";
|
|
3
|
+
import { assertDefined } from "../../../../util/defined.js";
|
|
4
|
+
import { jitter } from "../../../../util/sleep.js";
|
|
5
|
+
// eslint-disable-next-line no-secrets/no-secrets -- false positive on URL
|
|
6
|
+
/**
|
|
7
|
+
* Simulated S3 PutBucketWebsiteCommand handler.
|
|
8
|
+
*
|
|
9
|
+
* https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/PutBucketWebsiteCommand/
|
|
10
|
+
*/
|
|
11
|
+
export class PutBucketWebsiteCommandHandler {
|
|
12
|
+
buckets;
|
|
13
|
+
constructor(buckets) {
|
|
14
|
+
this.buckets = buckets;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Configure static website hosting for an S3 Bucket.
|
|
18
|
+
*/
|
|
19
|
+
async handle(cmd) {
|
|
20
|
+
assertDefined(cmd.input.Bucket, "PutBucketWebsiteCommand.input.Bucket");
|
|
21
|
+
assertDefined(cmd.input.WebsiteConfiguration, "PutBucketWebsiteCommand.input.WebsiteConfiguration");
|
|
22
|
+
const bucketName = cmd.input.Bucket;
|
|
23
|
+
const bucket = this.buckets.get(bucketName);
|
|
24
|
+
if (bucket === undefined) {
|
|
25
|
+
throw new NoSuchBucket({
|
|
26
|
+
message: `No S3 Bucket named ${bucketName}`,
|
|
27
|
+
$metadata: {},
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
await jitter();
|
|
31
|
+
bucket.configureWebsite(new S3BucketWebsite(cmd.input.WebsiteConfiguration));
|
|
32
|
+
return {
|
|
33
|
+
$metadata: {},
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=put-bucket-website.handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"put-bucket-website.handler.js","sourceRoot":"","sources":["../../../../../src/service/s3/command/put-bucket-website/put-bucket-website.handler.ts"],"names":[],"mappings":"AACA,OAAO,EACL,YAAY,GAGb,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAEnD,0EAA0E;AAC1E;;;;GAIG;AACH,MAAM,OAAO,8BAA8B;IAIZ;IAA7B,YAA6B,OAA0C;QAA1C,YAAO,GAAP,OAAO,CAAmC;IAAG,CAAC;IAE3E;;OAEG;IACH,KAAK,CAAC,MAAM,CACV,GAA4B;QAE5B,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,sCAAsC,CAAC,CAAC;QACxE,aAAa,CACX,GAAG,CAAC,KAAK,CAAC,oBAAoB,EAC9B,oDAAoD,CACrD,CAAC;QAEF,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,MAAyB,CAAC;QACvD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAE5C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,IAAI,YAAY,CAAC;gBACrB,OAAO,EAAE,sBAAsB,UAAU,EAAE;gBAC3C,SAAS,EAAE,EAAE;aACd,CAAC,CAAC;QACL,CAAC;QAED,MAAM,MAAM,EAAE,CAAC;QAEf,MAAM,CAAC,gBAAgB,CACrB,IAAI,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,oBAAoB,CAAC,CACpD,CAAC;QAEF,OAAO;YACL,SAAS,EAAE,EAAE;SACd,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { CommandHandler } from "../../../../command/command-handler.js";
|
|
2
2
|
import { type PutObjectCommand, type PutObjectCommandOutput } from "@aws-sdk/client-s3";
|
|
3
|
-
import type {
|
|
3
|
+
import type { SimS3BucketName, SimS3Bucket } from "../../bucket/s3-bucket.js";
|
|
4
4
|
/**
|
|
5
5
|
* Simulated S3 PutObjectCommand handler.
|
|
6
6
|
*
|
|
@@ -8,11 +8,12 @@ import type { S3BucketName, SimS3Bucket } from "../../bucket/s3-bucket.js";
|
|
|
8
8
|
*/
|
|
9
9
|
export declare class PutObjectCommandHandler implements CommandHandler<PutObjectCommand, PutObjectCommandOutput> {
|
|
10
10
|
private readonly buckets;
|
|
11
|
-
constructor(buckets: Map<
|
|
11
|
+
constructor(buckets: Map<SimS3BucketName, SimS3Bucket>);
|
|
12
12
|
/**
|
|
13
13
|
* Simulate putting an Object into an S3 Bucket.
|
|
14
14
|
*/
|
|
15
15
|
handle(cmd: PutObjectCommand): Promise<PutObjectCommandOutput>;
|
|
16
|
+
private static toMetadata;
|
|
16
17
|
private static toBuffer;
|
|
17
18
|
}
|
|
18
19
|
//# sourceMappingURL=put-object.handler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"put-object.handler.d.ts","sourceRoot":"","sources":["../../../../../src/service/s3/command/put-object/put-object.handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC5B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"put-object.handler.d.ts","sourceRoot":"","sources":["../../../../../src/service/s3/command/put-object/put-object.handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC5B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAK9E;;;;GAIG;AACH,qBAAa,uBAAwB,YAAW,cAAc,CAC5D,gBAAgB,EAChB,sBAAsB,CACvB;IACa,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,GAAG,CAAC,eAAe,EAAE,WAAW,CAAC;IAEvE;;OAEG;IACG,MAAM,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IA2BpE,OAAO,CAAC,MAAM,CAAC,UAAU;IASzB,OAAO,CAAC,MAAM,CAAC,QAAQ;CAiBxB"}
|
|
@@ -27,12 +27,20 @@ export class PutObjectCommandHandler {
|
|
|
27
27
|
});
|
|
28
28
|
}
|
|
29
29
|
await jitter();
|
|
30
|
-
const object = new SimS3Object(cmd.input.Key, PutObjectCommandHandler.toBuffer(cmd.input.Body), new SimS3ObjectMetadata(cmd
|
|
30
|
+
const object = new SimS3Object(cmd.input.Key, PutObjectCommandHandler.toBuffer(cmd.input.Body), new SimS3ObjectMetadata(PutObjectCommandHandler.toMetadata(cmd)));
|
|
31
31
|
await bucket.putObject(object);
|
|
32
32
|
return {
|
|
33
33
|
$metadata: {},
|
|
34
34
|
};
|
|
35
35
|
}
|
|
36
|
+
static toMetadata(cmd) {
|
|
37
|
+
return {
|
|
38
|
+
...cmd.input.Metadata,
|
|
39
|
+
...(cmd.input.ContentType === undefined
|
|
40
|
+
? {}
|
|
41
|
+
: { "content-type": cmd.input.ContentType }),
|
|
42
|
+
};
|
|
43
|
+
}
|
|
36
44
|
static toBuffer(body) {
|
|
37
45
|
if (body === undefined) {
|
|
38
46
|
return Buffer.alloc(0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"put-object.handler.js","sourceRoot":"","sources":["../../../../../src/service/s3/command/put-object/put-object.handler.ts"],"names":[],"mappings":"AACA,OAAO,EACL,YAAY,GAGb,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAEnD;;;;GAIG;AACH,MAAM,OAAO,uBAAuB;IAIL;IAA7B,YAA6B,
|
|
1
|
+
{"version":3,"file":"put-object.handler.js","sourceRoot":"","sources":["../../../../../src/service/s3/command/put-object/put-object.handler.ts"],"names":[],"mappings":"AACA,OAAO,EACL,YAAY,GAGb,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAEnD;;;;GAIG;AACH,MAAM,OAAO,uBAAuB;IAIL;IAA7B,YAA6B,OAA0C;QAA1C,YAAO,GAAP,OAAO,CAAmC;IAAG,CAAC;IAE3E;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,GAAqB;QAChC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,+BAA+B,CAAC,CAAC;QACjE,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,4BAA4B,CAAC,CAAC;QAE3D,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,MAAyB,CAAC;QACvD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC5C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,IAAI,YAAY,CAAC;gBACrB,OAAO,EAAE,sBAAsB,UAAU,EAAE;gBAC3C,SAAS,EAAE,EAAE;aACd,CAAC,CAAC;QACL,CAAC;QAED,MAAM,MAAM,EAAE,CAAC;QAEf,MAAM,MAAM,GAAG,IAAI,WAAW,CAC5B,GAAG,CAAC,KAAK,CAAC,GAAG,EACb,uBAAuB,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAChD,IAAI,mBAAmB,CAAC,uBAAuB,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CACjE,CAAC;QACF,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAE/B,OAAO;YACL,SAAS,EAAE,EAAE;SACd,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,UAAU,CAAC,GAAqB;QAC7C,OAAO;YACL,GAAG,GAAG,CAAC,KAAK,CAAC,QAAQ;YACrB,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,KAAK,SAAS;gBACrC,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,cAAc,EAAE,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;SAC/C,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,QAAQ,CAAC,IAAuC;QAC7D,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACzB,CAAC;QAED,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;QAED,IAAI,IAAI,YAAY,UAAU,EAAE,CAAC;YAC/B,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;QAED,MAAM,IAAI,KAAK,CACb,4DAA4D,CAC7D,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export {};
|
|
1
|
+
export { SimS3 } from "./sim-s3.js";
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/service/s3/index.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/service/s3/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/service/s3/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export {};
|
|
1
|
+
export { SimS3 } from "./sim-s3.js";
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/service/s3/index.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/service/s3/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { SimAws } from "../../aws/sim-aws.js";
|
|
2
|
+
import type { SimAwsServiceController, SimAwsServiceTarget } from "../../../serve/controller/sim-service-controller.js";
|
|
3
|
+
/**
|
|
4
|
+
* Localhost HTTP controller for simulated S3.
|
|
5
|
+
*/
|
|
6
|
+
export declare class SimS3ServiceController implements SimAwsServiceController {
|
|
7
|
+
private readonly router;
|
|
8
|
+
private readonly getObjectController;
|
|
9
|
+
constructor(simAws: SimAws);
|
|
10
|
+
/**
|
|
11
|
+
* Handle an HTTP request routed to a simulated S3 Bucket.
|
|
12
|
+
*/
|
|
13
|
+
handleRequest(target: SimAwsServiceTarget, request: Request): Promise<Response>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=sim-s3-controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-s3-controller.d.ts","sourceRoot":"","sources":["../../../../src/service/s3/serve/sim-s3-controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EACV,uBAAuB,EACvB,mBAAmB,EACpB,MAAM,qDAAqD,CAAC;AAI7D;;GAEG;AACH,qBAAa,sBAAuB,YAAW,uBAAuB;IACpE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAA2B;gBAEnD,MAAM,EAAE,MAAM;IAK1B;;OAEG;IACG,aAAa,CACjB,MAAM,EAAE,mBAAmB,EAC3B,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,QAAQ,CAAC;CAkBrB"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { SimS3RequestRouter } from "./sim-s3-req-router.js";
|
|
2
|
+
import { SimS3GetObjectController } from "./sim-s3-get-obj-controller.js";
|
|
3
|
+
/**
|
|
4
|
+
* Localhost HTTP controller for simulated S3.
|
|
5
|
+
*/
|
|
6
|
+
export class SimS3ServiceController {
|
|
7
|
+
router;
|
|
8
|
+
getObjectController;
|
|
9
|
+
constructor(simAws) {
|
|
10
|
+
this.router = new SimS3RequestRouter(simAws);
|
|
11
|
+
this.getObjectController = new SimS3GetObjectController();
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Handle an HTTP request routed to a simulated S3 Bucket.
|
|
15
|
+
*/
|
|
16
|
+
async handleRequest(target, request) {
|
|
17
|
+
const route = this.router.route(target, request);
|
|
18
|
+
if (route.action === "failure") {
|
|
19
|
+
return new Response(route.message, {
|
|
20
|
+
status: route.statusCode,
|
|
21
|
+
headers: {
|
|
22
|
+
"content-type": "text/plain; charset=utf-8",
|
|
23
|
+
},
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
return this.getObjectController.handleRequest(route.bucket, route.objectKey, request);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=sim-s3-controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-s3-controller.js","sourceRoot":"","sources":["../../../../src/service/s3/serve/sim-s3-controller.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAE1E;;GAEG;AACH,MAAM,OAAO,sBAAsB;IAChB,MAAM,CAAqB;IAC3B,mBAAmB,CAA2B;IAE/D,YAAY,MAAc;QACxB,IAAI,CAAC,MAAM,GAAG,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,CAAC,mBAAmB,GAAG,IAAI,wBAAwB,EAAE,CAAC;IAC5D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CACjB,MAA2B,EAC3B,OAAgB;QAEhB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAEjD,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC/B,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE;gBACjC,MAAM,EAAE,KAAK,CAAC,UAAU;gBACxB,OAAO,EAAE;oBACP,cAAc,EAAE,2BAA2B;iBAC5C;aACF,CAAC,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAC3C,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,SAAS,EACf,OAAO,CACR,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { SimS3Bucket } from "../bucket/s3-bucket.js";
|
|
2
|
+
/**
|
|
3
|
+
* Serves a simulated S3 Object over HTTP.
|
|
4
|
+
*/
|
|
5
|
+
export declare class SimS3GetObjectController {
|
|
6
|
+
/**
|
|
7
|
+
* Handle a GET request for an S3 Object via simulated S3.
|
|
8
|
+
*/
|
|
9
|
+
handleRequest(bucket: SimS3Bucket, objectKey: string, request: Request): Promise<Response>;
|
|
10
|
+
private websiteResponse;
|
|
11
|
+
private foundObjectResponse;
|
|
12
|
+
private notFoundResponse;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=sim-s3-get-obj-controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-s3-get-obj-controller.d.ts","sourceRoot":"","sources":["../../../../src/service/s3/serve/sim-s3-get-obj-controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAG1D;;GAEG;AACH,qBAAa,wBAAwB;IACnC;;OAEG;IACG,aAAa,CACjB,MAAM,EAAE,WAAW,EACnB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,QAAQ,CAAC;YA2BN,eAAe;IA0B7B,OAAO,CAAC,mBAAmB;IAyB3B,OAAO,CAAC,gBAAgB;CAWzB"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Serves a simulated S3 Object over HTTP.
|
|
3
|
+
*/
|
|
4
|
+
export class SimS3GetObjectController {
|
|
5
|
+
/**
|
|
6
|
+
* Handle a GET request for an S3 Object via simulated S3.
|
|
7
|
+
*/
|
|
8
|
+
async handleRequest(bucket, objectKey, request) {
|
|
9
|
+
const website = bucket.getWebsite();
|
|
10
|
+
if (!website.websiteEnabled()) {
|
|
11
|
+
return new Response(`Static website hosting is not enabled for bucket ${bucket.bucketName}\n`, {
|
|
12
|
+
status: 403,
|
|
13
|
+
headers: {
|
|
14
|
+
"content-type": "text/plain; charset=utf-8",
|
|
15
|
+
},
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
if (website.redirectsAllRequests()) {
|
|
19
|
+
return website.redirectForRequestResponse(request, new Response(undefined));
|
|
20
|
+
}
|
|
21
|
+
const response = await this.websiteResponse(bucket, objectKey, request);
|
|
22
|
+
return website.redirectForRequestResponse(request, response);
|
|
23
|
+
}
|
|
24
|
+
async websiteResponse(bucket, objectKey, request) {
|
|
25
|
+
const website = bucket.getWebsite();
|
|
26
|
+
const websiteObjectKey = website.objectKeyForRequest(objectKey);
|
|
27
|
+
const object = await bucket.getObject(websiteObjectKey);
|
|
28
|
+
if (object !== undefined) {
|
|
29
|
+
return this.foundObjectResponse(object, request);
|
|
30
|
+
}
|
|
31
|
+
const errorDocumentKey = website.errorDocumentKey();
|
|
32
|
+
if (errorDocumentKey !== undefined) {
|
|
33
|
+
const errorDocumentObject = await bucket.getObject(errorDocumentKey);
|
|
34
|
+
if (errorDocumentObject !== undefined) {
|
|
35
|
+
return this.foundObjectResponse(errorDocumentObject, request, 404);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return this.notFoundResponse(bucket, websiteObjectKey);
|
|
39
|
+
}
|
|
40
|
+
foundObjectResponse(object, request, status = 200) {
|
|
41
|
+
const contentType = object.metadata.values["content-type"];
|
|
42
|
+
const headers = {
|
|
43
|
+
"content-length": String(object.body.length),
|
|
44
|
+
...(contentType === undefined ? {} : { "content-type": contentType }),
|
|
45
|
+
};
|
|
46
|
+
if (request.method === "HEAD") {
|
|
47
|
+
return new Response(undefined, {
|
|
48
|
+
status,
|
|
49
|
+
headers,
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
return new Response(object.body, {
|
|
53
|
+
status,
|
|
54
|
+
headers,
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
notFoundResponse(bucket, objectKey) {
|
|
58
|
+
return new Response(`Object ${objectKey} not found in bucket ${bucket.bucketName}`, {
|
|
59
|
+
status: 404,
|
|
60
|
+
headers: {
|
|
61
|
+
"content-type": "text/plain; charset=utf-8",
|
|
62
|
+
},
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=sim-s3-get-obj-controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-s3-get-obj-controller.js","sourceRoot":"","sources":["../../../../src/service/s3/serve/sim-s3-get-obj-controller.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,OAAO,wBAAwB;IACnC;;OAEG;IACH,KAAK,CAAC,aAAa,CACjB,MAAmB,EACnB,SAAiB,EACjB,OAAgB;QAEhB,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QAEpC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;YAC9B,OAAO,IAAI,QAAQ,CACjB,oDAAoD,MAAM,CAAC,UAAU,IAAI,EACzE;gBACE,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE;oBACP,cAAc,EAAE,2BAA2B;iBAC5C;aACF,CACF,CAAC;QACJ,CAAC;QAED,IAAI,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC;YACnC,OAAO,OAAO,CAAC,0BAA0B,CACvC,OAAO,EACP,IAAI,QAAQ,CAAC,SAAS,CAAC,CACxB,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAExE,OAAO,OAAO,CAAC,0BAA0B,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC/D,CAAC;IAEO,KAAK,CAAC,eAAe,CAC3B,MAAmB,EACnB,SAAiB,EACjB,OAAgB;QAEhB,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QACpC,MAAM,gBAAgB,GAAG,OAAO,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;QAChE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QAExD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACnD,CAAC;QAED,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;QAEpD,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;YACnC,MAAM,mBAAmB,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;YAErE,IAAI,mBAAmB,KAAK,SAAS,EAAE,CAAC;gBACtC,OAAO,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;YACrE,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACzD,CAAC;IAEO,mBAAmB,CACzB,MAAmB,EACnB,OAAgB,EAChB,MAAM,GAAG,GAAG;QAEZ,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAE3D,MAAM,OAAO,GAAG;YACd,gBAAgB,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;YAC5C,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC;SACtE,CAAC;QAEF,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC9B,OAAO,IAAI,QAAQ,CAAC,SAAS,EAAE;gBAC7B,MAAM;gBACN,OAAO;aACR,CAAC,CAAC;QACL,CAAC;QAED,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE;YAC/B,MAAM;YACN,OAAO;SACR,CAAC,CAAC;IACL,CAAC;IAEO,gBAAgB,CAAC,MAAmB,EAAE,SAAiB;QAC7D,OAAO,IAAI,QAAQ,CACjB,UAAU,SAAS,wBAAwB,MAAM,CAAC,UAAU,EAAE,EAC9D;YACE,MAAM,EAAE,GAAG;YACX,OAAO,EAAE;gBACP,cAAc,EAAE,2BAA2B;aAC5C;SACF,CACF,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { SimAws } from "../../aws/sim-aws.js";
|
|
2
|
+
import type { SimS3Bucket } from "../bucket/s3-bucket.js";
|
|
3
|
+
import type { SimAwsServiceTarget } from "../../../serve/controller/sim-service-controller.js";
|
|
4
|
+
export interface SimS3GetObjectRoute {
|
|
5
|
+
readonly action: "getObject";
|
|
6
|
+
readonly bucket: SimS3Bucket;
|
|
7
|
+
readonly objectKey: string;
|
|
8
|
+
}
|
|
9
|
+
export interface SimS3RouteFailure {
|
|
10
|
+
readonly action: "failure";
|
|
11
|
+
readonly statusCode: number;
|
|
12
|
+
readonly message: string;
|
|
13
|
+
}
|
|
14
|
+
export type SimS3Route = SimS3GetObjectRoute | SimS3RouteFailure;
|
|
15
|
+
/**
|
|
16
|
+
* Resolves HTTP requests into simulated S3 actions.
|
|
17
|
+
*/
|
|
18
|
+
export declare class SimS3RequestRouter {
|
|
19
|
+
private readonly simAws;
|
|
20
|
+
constructor(simAws: SimAws);
|
|
21
|
+
/**
|
|
22
|
+
* Route an incoming service target and HTTP request to a simulated S3 action.
|
|
23
|
+
*/
|
|
24
|
+
route(target: SimAwsServiceTarget, request: Request): SimS3Route;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=sim-s3-req-router.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-s3-req-router.d.ts","sourceRoot":"","sources":["../../../../src/service/s3/serve/sim-s3-req-router.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qDAAqD,CAAC;AAE/F,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,UAAU,GAAG,mBAAmB,GAAG,iBAAiB,CAAC;AAEjE;;GAEG;AACH,qBAAa,kBAAkB;IACjB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,MAAM;IAE3C;;OAEG;IACH,KAAK,CAAC,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,OAAO,GAAG,UAAU;CAoEjE"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolves HTTP requests into simulated S3 actions.
|
|
3
|
+
*/
|
|
4
|
+
export class SimS3RequestRouter {
|
|
5
|
+
simAws;
|
|
6
|
+
constructor(simAws) {
|
|
7
|
+
this.simAws = simAws;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Route an incoming service target and HTTP request to a simulated S3 action.
|
|
11
|
+
*/
|
|
12
|
+
route(target, request) {
|
|
13
|
+
if (request.method !== "GET" && request.method !== "HEAD") {
|
|
14
|
+
return {
|
|
15
|
+
action: "failure",
|
|
16
|
+
statusCode: 405,
|
|
17
|
+
message: "Method not allowed\n",
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
if (target.resourceName.length === 0) {
|
|
21
|
+
return {
|
|
22
|
+
action: "failure",
|
|
23
|
+
statusCode: 400,
|
|
24
|
+
message: "Missing S3 Bucket name\n",
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
if (target.regionName === undefined) {
|
|
28
|
+
return {
|
|
29
|
+
action: "failure",
|
|
30
|
+
statusCode: 400,
|
|
31
|
+
message: "Missing S3 Bucket region\n",
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
const url = new URL(request.url);
|
|
35
|
+
const objectKey = decodeURIComponent(url.pathname.replace(/^\/+/u, ""));
|
|
36
|
+
const bucketName = target.resourceName;
|
|
37
|
+
const bucketScope = this.simAws
|
|
38
|
+
.s3GlobalRegistry()
|
|
39
|
+
.findBucketScope(bucketName);
|
|
40
|
+
if (bucketScope === undefined) {
|
|
41
|
+
return {
|
|
42
|
+
action: "failure",
|
|
43
|
+
statusCode: 404,
|
|
44
|
+
message: `S3 bucket named ${bucketName} not found`,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
if (bucketScope.regionName !== target.regionName) {
|
|
48
|
+
return {
|
|
49
|
+
action: "failure",
|
|
50
|
+
statusCode: 404,
|
|
51
|
+
message: `S3 bucket named ${bucketName} is in region ${bucketScope.regionName}, not requested ${target.regionName}`,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
const bucket = this.simAws
|
|
55
|
+
.accountRegionScope(bucketScope.accountId, bucketScope.regionName)
|
|
56
|
+
.s3()
|
|
57
|
+
.getSimBucketByName(bucketName);
|
|
58
|
+
if (bucket === undefined) {
|
|
59
|
+
return {
|
|
60
|
+
action: "failure",
|
|
61
|
+
statusCode: 404,
|
|
62
|
+
message: `S3 bucket named ${bucketName} not found`,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
return {
|
|
66
|
+
action: "getObject",
|
|
67
|
+
bucket,
|
|
68
|
+
objectKey,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=sim-s3-req-router.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-s3-req-router.js","sourceRoot":"","sources":["../../../../src/service/s3/serve/sim-s3-req-router.ts"],"names":[],"mappings":"AAmBA;;GAEG;AACH,MAAM,OAAO,kBAAkB;IACA;IAA7B,YAA6B,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAAG,CAAC;IAE/C;;OAEG;IACH,KAAK,CAAC,MAA2B,EAAE,OAAgB;QACjD,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC1D,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,UAAU,EAAE,GAAG;gBACf,OAAO,EAAE,sBAAsB;aAChC,CAAC;QACJ,CAAC;QAED,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrC,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,UAAU,EAAE,GAAG;gBACf,OAAO,EAAE,0BAA0B;aACpC,CAAC;QACJ,CAAC;QAED,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACpC,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,UAAU,EAAE,GAAG;gBACf,OAAO,EAAE,4BAA4B;aACtC,CAAC;QACJ,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,MAAM,SAAS,GAAG,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;QAExE,MAAM,UAAU,GAAG,MAAM,CAAC,YAA+B,CAAC;QAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM;aAC5B,gBAAgB,EAAE;aAClB,eAAe,CAAC,UAAU,CAAC,CAAC;QAE/B,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,UAAU,EAAE,GAAG;gBACf,OAAO,EAAE,mBAAmB,UAAU,YAAY;aACnD,CAAC;QACJ,CAAC;QAED,IAAI,WAAW,CAAC,UAAU,KAAK,MAAM,CAAC,UAAU,EAAE,CAAC;YACjD,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,UAAU,EAAE,GAAG;gBACf,OAAO,EAAE,mBAAmB,UAAU,iBAAiB,WAAW,CAAC,UAAU,mBAAmB,MAAM,CAAC,UAAU,EAAE;aACpH,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM;aACvB,kBAAkB,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,UAAU,CAAC;aACjE,EAAE,EAAE;aACJ,kBAAkB,CAAC,UAAU,CAAC,CAAC;QAElC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,UAAU,EAAE,GAAG;gBACf,OAAO,EAAE,mBAAmB,UAAU,YAAY;aACnD,CAAC;QACJ,CAAC;QAED,OAAO;YACL,MAAM,EAAE,WAAW;YACnB,MAAM;YACN,SAAS;SACV,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { SimS3BucketName } from "./bucket/s3-bucket.js";
|
|
2
|
+
import type { SimAwsAccountRegionScope } from "../aws/sim-aws-account-region-scope.js";
|
|
3
|
+
/**
|
|
4
|
+
* Simulate global existence of S3 Buckets across Account and Region scopes.
|
|
5
|
+
* Note that despite the label "global", this is still encapsulated.
|
|
6
|
+
* SimAws manages a singleton of this registry, but it can be freely
|
|
7
|
+
* instantiated for isolated state.
|
|
8
|
+
*/
|
|
9
|
+
export declare class SimS3GlobalRegistry {
|
|
10
|
+
private readonly bucketScopes;
|
|
11
|
+
/**
|
|
12
|
+
* Register a Bucket with its Account and Region scope.
|
|
13
|
+
*/
|
|
14
|
+
registerBucket(bucketName: SimS3BucketName, scope: SimAwsAccountRegionScope): void;
|
|
15
|
+
/**
|
|
16
|
+
* Look up the Account Region scope for a Bucket by Bucket name.
|
|
17
|
+
*/
|
|
18
|
+
findBucketScope(bucketName: SimS3BucketName): SimAwsAccountRegionScope | undefined;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=sim-s3-global-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-s3-global-registry.d.ts","sourceRoot":"","sources":["../../../src/service/s3/sim-s3-global-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAEvF;;;;;GAKG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAGzB;IAEJ;;OAEG;IACH,cAAc,CACZ,UAAU,EAAE,eAAe,EAC3B,KAAK,EAAE,wBAAwB,GAC9B,IAAI;IAIP;;OAEG;IACH,eAAe,CACb,UAAU,EAAE,eAAe,GAC1B,wBAAwB,GAAG,SAAS;CAGxC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Simulate global existence of S3 Buckets across Account and Region scopes.
|
|
3
|
+
* Note that despite the label "global", this is still encapsulated.
|
|
4
|
+
* SimAws manages a singleton of this registry, but it can be freely
|
|
5
|
+
* instantiated for isolated state.
|
|
6
|
+
*/
|
|
7
|
+
export class SimS3GlobalRegistry {
|
|
8
|
+
bucketScopes = new Map();
|
|
9
|
+
/**
|
|
10
|
+
* Register a Bucket with its Account and Region scope.
|
|
11
|
+
*/
|
|
12
|
+
registerBucket(bucketName, scope) {
|
|
13
|
+
this.bucketScopes.set(bucketName, scope);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Look up the Account Region scope for a Bucket by Bucket name.
|
|
17
|
+
*/
|
|
18
|
+
findBucketScope(bucketName) {
|
|
19
|
+
return this.bucketScopes.get(bucketName);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=sim-s3-global-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-s3-global-registry.js","sourceRoot":"","sources":["../../../src/service/s3/sim-s3-global-registry.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,MAAM,OAAO,mBAAmB;IACb,YAAY,GAAG,IAAI,GAAG,EAGpC,CAAC;IAEJ;;OAEG;IACH,cAAc,CACZ,UAA2B,EAC3B,KAA+B;QAE/B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,eAAe,CACb,UAA2B;QAE3B,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC3C,CAAC;CACF"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { SimS3Bucket, SimS3BucketName } from "./bucket/s3-bucket.js";
|
|
2
|
+
import type { CreateBucketCommand, CreateBucketCommandOutput, GetObjectCommand, GetObjectCommandOutput, ListBucketsCommand, ListBucketsCommandOutput, ListObjectsCommand, ListObjectsCommandOutput, PutBucketWebsiteCommand, PutBucketWebsiteCommandOutput, PutObjectCommand, PutObjectCommandOutput } from "@aws-sdk/client-s3";
|
|
3
|
+
import { SimS3GlobalRegistry } from "./sim-s3-global-registry.js";
|
|
4
|
+
import { type SimAwsAccountRegionScope } from "../aws/sim-aws-account-region-scope.js";
|
|
5
|
+
/**
|
|
6
|
+
* Simulated S3. Handles SDK commands. Emulates AWS behaviour and state.
|
|
7
|
+
*/
|
|
8
|
+
export declare class SimS3 {
|
|
9
|
+
private readonly accountRegionScope;
|
|
10
|
+
private readonly s3GlobalRegistry;
|
|
11
|
+
private readonly buckets;
|
|
12
|
+
constructor(accountRegionScope?: SimAwsAccountRegionScope, s3GlobalRegistry?: SimS3GlobalRegistry);
|
|
13
|
+
/**
|
|
14
|
+
* Handle a Create Bucket Command from the SDK.
|
|
15
|
+
*/
|
|
16
|
+
createBucket(cmd: CreateBucketCommand): Promise<CreateBucketCommandOutput>;
|
|
17
|
+
/**
|
|
18
|
+
* Handle a Put Bucket Website Command from the SDK.
|
|
19
|
+
*/
|
|
20
|
+
putBucketWebsite(cmd: PutBucketWebsiteCommand): Promise<PutBucketWebsiteCommandOutput>;
|
|
21
|
+
/**
|
|
22
|
+
* Handle a List Buckets Command from the SDK.
|
|
23
|
+
*/
|
|
24
|
+
listBuckets(cmd: ListBucketsCommand): Promise<ListBucketsCommandOutput>;
|
|
25
|
+
/**
|
|
26
|
+
* Handle a Put Object Command from the SDK.
|
|
27
|
+
*/
|
|
28
|
+
putObject(cmd: PutObjectCommand): Promise<PutObjectCommandOutput>;
|
|
29
|
+
/**
|
|
30
|
+
* Handle a Get Object Command from the SDK.
|
|
31
|
+
*/
|
|
32
|
+
getObject(cmd: GetObjectCommand): Promise<GetObjectCommandOutput>;
|
|
33
|
+
/**
|
|
34
|
+
* Handle a List Objects Command from the SDK.
|
|
35
|
+
*/
|
|
36
|
+
listObjects(cmd: ListObjectsCommand): Promise<ListObjectsCommandOutput>;
|
|
37
|
+
/**
|
|
38
|
+
* Get a simulated S3 Bucket instance by name.
|
|
39
|
+
*/
|
|
40
|
+
getSimBucketByName(bucketName: SimS3BucketName): SimS3Bucket | undefined;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=sim-s3.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-s3.d.ts","sourceRoot":"","sources":["../../../src/service/s3/sim-s3.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,KAAK,EACV,mBAAmB,EACnB,yBAAyB,EACzB,gBAAgB,EAChB,sBAAsB,EACtB,kBAAkB,EAClB,wBAAwB,EACxB,kBAAkB,EAClB,wBAAwB,EACxB,uBAAuB,EACvB,6BAA6B,EAC7B,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,oBAAoB,CAAC;AAM5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EACL,KAAK,wBAAwB,EAE9B,MAAM,wCAAwC,CAAC;AAGhD;;GAEG;AACH,qBAAa,KAAK;IAId,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IAJnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2C;gBAGhD,kBAAkB,GAAE,wBAAiE,EACrF,gBAAgB,GAAE,mBAA+C;IAGpF;;OAEG;IACG,YAAY,CAChB,GAAG,EAAE,mBAAmB,GACvB,OAAO,CAAC,yBAAyB,CAAC;IASrC;;OAEG;IACG,gBAAgB,CACpB,GAAG,EAAE,uBAAuB,GAC3B,OAAO,CAAC,6BAA6B,CAAC;IAKzC;;OAEG;IACG,WAAW,CACf,GAAG,EAAE,kBAAkB,GACtB,OAAO,CAAC,wBAAwB,CAAC;IAKpC;;OAEG;IACG,SAAS,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAKvE;;OAEG;IACG,SAAS,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAKvE;;OAEG;IACG,WAAW,CACf,GAAG,EAAE,kBAAkB,GACtB,OAAO,CAAC,wBAAwB,CAAC;IAKpC;;OAEG;IACH,kBAAkB,CAAC,UAAU,EAAE,eAAe,GAAG,WAAW,GAAG,SAAS;CAGzE"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { CreateBucketCommandHandler } from "./command/create-bucket/create-bucket.handler.js";
|
|
2
|
+
import { ListBucketsCommandHandler } from "./command/list-buckets/list-buckets.handler.js";
|
|
3
|
+
import { PutObjectCommandHandler } from "./command/put-object/put-object.handler.js";
|
|
4
|
+
import { GetObjectCommandHandler } from "./command/get-object/get-object.handler.js";
|
|
5
|
+
import { ListObjectsCommandHandler } from "./command/list-objects/list-objects.handler.js";
|
|
6
|
+
import { SimS3GlobalRegistry } from "./sim-s3-global-registry.js";
|
|
7
|
+
import { simAwsAccountRegionScopeFactory, } from "../aws/sim-aws-account-region-scope.js";
|
|
8
|
+
import { PutBucketWebsiteCommandHandler } from "./command/put-bucket-website/put-bucket-website.handler.js";
|
|
9
|
+
/**
|
|
10
|
+
* Simulated S3. Handles SDK commands. Emulates AWS behaviour and state.
|
|
11
|
+
*/
|
|
12
|
+
export class SimS3 {
|
|
13
|
+
accountRegionScope;
|
|
14
|
+
s3GlobalRegistry;
|
|
15
|
+
buckets = new Map();
|
|
16
|
+
constructor(accountRegionScope = simAwsAccountRegionScopeFactory.make(), s3GlobalRegistry = new SimS3GlobalRegistry()) {
|
|
17
|
+
this.accountRegionScope = accountRegionScope;
|
|
18
|
+
this.s3GlobalRegistry = s3GlobalRegistry;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Handle a Create Bucket Command from the SDK.
|
|
22
|
+
*/
|
|
23
|
+
async createBucket(cmd) {
|
|
24
|
+
const handler = new CreateBucketCommandHandler(this.accountRegionScope, this.buckets, this.s3GlobalRegistry);
|
|
25
|
+
return await handler.handle(cmd);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Handle a Put Bucket Website Command from the SDK.
|
|
29
|
+
*/
|
|
30
|
+
async putBucketWebsite(cmd) {
|
|
31
|
+
const handler = new PutBucketWebsiteCommandHandler(this.buckets);
|
|
32
|
+
return await handler.handle(cmd);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Handle a List Buckets Command from the SDK.
|
|
36
|
+
*/
|
|
37
|
+
async listBuckets(cmd) {
|
|
38
|
+
const handler = new ListBucketsCommandHandler(this.buckets);
|
|
39
|
+
return await handler.handle(cmd);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Handle a Put Object Command from the SDK.
|
|
43
|
+
*/
|
|
44
|
+
async putObject(cmd) {
|
|
45
|
+
const handler = new PutObjectCommandHandler(this.buckets);
|
|
46
|
+
return await handler.handle(cmd);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Handle a Get Object Command from the SDK.
|
|
50
|
+
*/
|
|
51
|
+
async getObject(cmd) {
|
|
52
|
+
const handler = new GetObjectCommandHandler(this.buckets);
|
|
53
|
+
return await handler.handle(cmd);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Handle a List Objects Command from the SDK.
|
|
57
|
+
*/
|
|
58
|
+
async listObjects(cmd) {
|
|
59
|
+
const handler = new ListObjectsCommandHandler(this.buckets);
|
|
60
|
+
return await handler.handle(cmd);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Get a simulated S3 Bucket instance by name.
|
|
64
|
+
*/
|
|
65
|
+
getSimBucketByName(bucketName) {
|
|
66
|
+
return this.buckets.get(bucketName);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=sim-s3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-s3.js","sourceRoot":"","sources":["../../../src/service/s3/sim-s3.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,0BAA0B,EAAE,MAAM,kDAAkD,CAAC;AAC9F,OAAO,EAAE,yBAAyB,EAAE,MAAM,gDAAgD,CAAC;AAC3F,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AACrF,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AACrF,OAAO,EAAE,yBAAyB,EAAE,MAAM,gDAAgD,CAAC;AAC3F,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAEL,+BAA+B,GAChC,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,8BAA8B,EAAE,MAAM,4DAA4D,CAAC;AAE5G;;GAEG;AACH,MAAM,OAAO,KAAK;IAIG;IACA;IAJF,OAAO,GAAG,IAAI,GAAG,EAAgC,CAAC;IAEnE,YACmB,qBAA+C,+BAA+B,CAAC,IAAI,EAAE,EACrF,mBAAwC,IAAI,mBAAmB,EAAE;QADjE,uBAAkB,GAAlB,kBAAkB,CAAmE;QACrF,qBAAgB,GAAhB,gBAAgB,CAAiD;IACjF,CAAC;IAEJ;;OAEG;IACH,KAAK,CAAC,YAAY,CAChB,GAAwB;QAExB,MAAM,OAAO,GAAG,IAAI,0BAA0B,CAC5C,IAAI,CAAC,kBAAkB,EACvB,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,gBAAgB,CACtB,CAAC;QACF,OAAO,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CACpB,GAA4B;QAE5B,MAAM,OAAO,GAAG,IAAI,8BAA8B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjE,OAAO,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CACf,GAAuB;QAEvB,MAAM,OAAO,GAAG,IAAI,yBAAyB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5D,OAAO,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,GAAqB;QACnC,MAAM,OAAO,GAAG,IAAI,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1D,OAAO,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,GAAqB;QACnC,MAAM,OAAO,GAAG,IAAI,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1D,OAAO,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CACf,GAAuB;QAEvB,MAAM,OAAO,GAAG,IAAI,yBAAyB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5D,OAAO,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,UAA2B;QAC5C,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACtC,CAAC;CACF"}
|
|
@@ -12,23 +12,9 @@ export interface SimS3BucketStorage {
|
|
|
12
12
|
* List simulated Objects in storage.
|
|
13
13
|
*/
|
|
14
14
|
listObjects(prefix?: string): Promise<SimS3Object[]>;
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Default in-memory simulated S3 Bucket storage.
|
|
18
|
-
*/
|
|
19
|
-
export declare class MemoryS3BucketStorage implements SimS3BucketStorage {
|
|
20
|
-
private readonly objects;
|
|
21
|
-
/**
|
|
22
|
-
* Get a simulated Object from in-memory storage.
|
|
23
|
-
*/
|
|
24
|
-
getObject(key: string): Promise<SimS3Object | undefined>;
|
|
25
15
|
/**
|
|
26
|
-
*
|
|
16
|
+
* Is it OK to change to a different storage implementation?
|
|
27
17
|
*/
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* Put a simulated Object into in-memory storage.
|
|
31
|
-
*/
|
|
32
|
-
putObject(object: SimS3Object): Promise<void>;
|
|
18
|
+
allowChangeStorage(): boolean;
|
|
33
19
|
}
|
|
34
20
|
//# sourceMappingURL=s3-bucket-storage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"s3-bucket-storage.d.ts","sourceRoot":"","sources":["../../../../src/service/s3/storage/s3-bucket-storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE1D,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9C;;OAEG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;IAEzD;;OAEG;IACH,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"s3-bucket-storage.d.ts","sourceRoot":"","sources":["../../../../src/service/s3/storage/s3-bucket-storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE1D,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9C;;OAEG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;IAEzD;;OAEG;IACH,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAErD;;OAEG;IACH,kBAAkB,IAAI,OAAO,CAAC;CAC/B"}
|