@kensio/yulin 0.1.2 → 0.3.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 +76 -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 +9 -6
- 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 +8 -6
- package/dist/service/dynamodb/table/dynamodb-table.d.ts.map +1 -1
- package/dist/service/dynamodb/table/dynamodb-table.js +16 -9
- package/dist/service/dynamodb/table/dynamodb-table.js.map +1 -1
- package/dist/service/organizations/sim-aws-account.d.ts +12 -1
- package/dist/service/organizations/sim-aws-account.d.ts.map +1 -1
- package/dist/service/organizations/sim-aws-account.js +15 -2
- package/dist/service/organizations/sim-aws-account.js.map +1 -1
- package/dist/service/organizations/sim-aws-region.d.ts +23 -0
- package/dist/service/organizations/sim-aws-region.d.ts.map +1 -0
- package/dist/service/organizations/sim-aws-region.js +27 -0
- package/dist/service/organizations/sim-aws-region.js.map +1 -0
- package/dist/service/s3/bucket/s3-bucket.d.ts +30 -0
- package/dist/service/s3/bucket/s3-bucket.d.ts.map +1 -0
- package/dist/service/s3/bucket/s3-bucket.js +42 -0
- package/dist/service/s3/bucket/s3-bucket.js.map +1 -0
- package/dist/service/s3/command/create-bucket/create-bucket.handler.d.ts +21 -0
- package/dist/service/s3/command/create-bucket/create-bucket.handler.d.ts.map +1 -0
- package/dist/service/s3/command/create-bucket/create-bucket.handler.js +58 -0
- package/dist/service/s3/command/create-bucket/create-bucket.handler.js.map +1 -0
- package/dist/service/s3/command/get-object/get-object.handler.d.ts +17 -0
- package/dist/service/s3/command/get-object/get-object.handler.d.ts.map +1 -0
- package/dist/service/s3/command/get-object/get-object.handler.js +44 -0
- package/dist/service/s3/command/get-object/get-object.handler.js.map +1 -0
- package/dist/service/s3/command/list-buckets/list-buckets.handler.d.ts +19 -0
- package/dist/service/s3/command/list-buckets/list-buckets.handler.d.ts.map +1 -0
- package/dist/service/s3/command/list-buckets/list-buckets.handler.js +52 -0
- package/dist/service/s3/command/list-buckets/list-buckets.handler.js.map +1 -0
- package/dist/service/s3/command/list-objects/list-objects.handler.d.ts +17 -0
- package/dist/service/s3/command/list-objects/list-objects.handler.d.ts.map +1 -0
- package/dist/service/s3/command/list-objects/list-objects.handler.js +54 -0
- package/dist/service/s3/command/list-objects/list-objects.handler.js.map +1 -0
- package/dist/service/s3/command/put-object/put-object.handler.d.ts +19 -0
- package/dist/service/s3/command/put-object/put-object.handler.d.ts.map +1 -0
- package/dist/service/s3/command/put-object/put-object.handler.js +57 -0
- package/dist/service/s3/command/put-object/put-object.handler.js.map +1 -0
- 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 -2
- package/dist/service/s3/index.js.map +1 -1
- package/dist/service/s3/object/s3-object.d.ts +17 -0
- package/dist/service/s3/object/s3-object.d.ts.map +1 -0
- package/dist/service/s3/object/s3-object.js +23 -0
- package/dist/service/s3/object/s3-object.js.map +1 -0
- package/dist/service/s3/s3.d.ts +33 -0
- package/dist/service/s3/s3.d.ts.map +1 -0
- package/dist/service/s3/s3.js +56 -0
- package/dist/service/s3/s3.js.map +1 -0
- 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 +11 -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 +35 -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 +79 -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 +38 -0
- package/dist/service/s3/sim-s3.d.ts.map +1 -0
- package/dist/service/s3/sim-s3.js +61 -0
- package/dist/service/s3/sim-s3.js.map +1 -0
- package/dist/service/s3/storage/s3-body-buffer.d.ts +5 -0
- package/dist/service/s3/storage/s3-body-buffer.d.ts.map +1 -0
- package/dist/service/s3/storage/s3-body-buffer.js +11 -0
- package/dist/service/s3/storage/s3-body-buffer.js.map +1 -0
- package/dist/service/s3/storage/s3-bucket-storage.d.ts +20 -0
- package/dist/service/s3/storage/s3-bucket-storage.d.ts.map +1 -0
- package/dist/service/s3/storage/s3-bucket-storage.js +2 -0
- package/dist/service/s3/storage/s3-bucket-storage.js.map +1 -0
- 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/package.json +25 -12
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { NoSuchBucket, } from "@aws-sdk/client-s3";
|
|
2
|
+
import { assertDefined } from "../../../../util/defined.js";
|
|
3
|
+
import { jitter } from "../../../../util/sleep.js";
|
|
4
|
+
/**
|
|
5
|
+
* Simulated S3 ListObjectsCommand handler.
|
|
6
|
+
*
|
|
7
|
+
* https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/ListObjectsCommand/
|
|
8
|
+
*/
|
|
9
|
+
export class ListObjectsCommandHandler {
|
|
10
|
+
buckets;
|
|
11
|
+
constructor(buckets) {
|
|
12
|
+
this.buckets = buckets;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Simulate listing Objects in an S3 Bucket.
|
|
16
|
+
*/
|
|
17
|
+
async handle(cmd) {
|
|
18
|
+
assertDefined(cmd.input.Bucket, "ListObjectsCommand.input.Bucket");
|
|
19
|
+
const bucketName = cmd.input.Bucket;
|
|
20
|
+
const bucket = this.buckets.get(bucketName);
|
|
21
|
+
if (bucket === undefined) {
|
|
22
|
+
throw new NoSuchBucket({
|
|
23
|
+
message: `No S3 Bucket named ${bucketName}`,
|
|
24
|
+
$metadata: {},
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
await jitter();
|
|
28
|
+
const prefix = cmd.input.Prefix;
|
|
29
|
+
const marker = cmd.input.Marker;
|
|
30
|
+
const maxKeys = cmd.input.MaxKeys ?? 1000;
|
|
31
|
+
const objects = await bucket.listObjects(prefix);
|
|
32
|
+
objects.sort((a, b) => a.key.localeCompare(b.key));
|
|
33
|
+
const startIndex = marker === undefined
|
|
34
|
+
? 0
|
|
35
|
+
: Math.max(0, objects.findIndex((object) => object.key === marker) + 1);
|
|
36
|
+
const page = objects.slice(startIndex, startIndex + maxKeys);
|
|
37
|
+
const lastObject = page.at(-1);
|
|
38
|
+
const isTruncated = startIndex + page.length < objects.length;
|
|
39
|
+
return {
|
|
40
|
+
Contents: page.map((object) => ({
|
|
41
|
+
Key: object.key,
|
|
42
|
+
Size: object.body.length,
|
|
43
|
+
})),
|
|
44
|
+
Name: bucket.bucketName,
|
|
45
|
+
Prefix: prefix,
|
|
46
|
+
Marker: marker,
|
|
47
|
+
MaxKeys: maxKeys,
|
|
48
|
+
IsTruncated: isTruncated,
|
|
49
|
+
NextMarker: isTruncated && lastObject !== undefined ? lastObject.key : undefined,
|
|
50
|
+
$metadata: {},
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=list-objects.handler.js.map
|
|
@@ -0,0 +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,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,19 @@
|
|
|
1
|
+
import type { CommandHandler } from "../../../../command/command-handler.js";
|
|
2
|
+
import { type PutObjectCommand, type PutObjectCommandOutput } from "@aws-sdk/client-s3";
|
|
3
|
+
import type { SimS3BucketName, SimS3Bucket } from "../../bucket/s3-bucket.js";
|
|
4
|
+
/**
|
|
5
|
+
* Simulated S3 PutObjectCommand handler.
|
|
6
|
+
*
|
|
7
|
+
* https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/PutObjectCommand/
|
|
8
|
+
*/
|
|
9
|
+
export declare class PutObjectCommandHandler implements CommandHandler<PutObjectCommand, PutObjectCommandOutput> {
|
|
10
|
+
private readonly buckets;
|
|
11
|
+
constructor(buckets: Map<SimS3BucketName, SimS3Bucket>);
|
|
12
|
+
/**
|
|
13
|
+
* Simulate putting an Object into an S3 Bucket.
|
|
14
|
+
*/
|
|
15
|
+
handle(cmd: PutObjectCommand): Promise<PutObjectCommandOutput>;
|
|
16
|
+
private static toMetadata;
|
|
17
|
+
private static toBuffer;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=put-object.handler.d.ts.map
|
|
@@ -0,0 +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,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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { NoSuchBucket, } from "@aws-sdk/client-s3";
|
|
2
|
+
import { SimS3Object, SimS3ObjectMetadata } from "../../object/s3-object.js";
|
|
3
|
+
import { assertDefined } from "../../../../util/defined.js";
|
|
4
|
+
import { jitter } from "../../../../util/sleep.js";
|
|
5
|
+
/**
|
|
6
|
+
* Simulated S3 PutObjectCommand handler.
|
|
7
|
+
*
|
|
8
|
+
* https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/PutObjectCommand/
|
|
9
|
+
*/
|
|
10
|
+
export class PutObjectCommandHandler {
|
|
11
|
+
buckets;
|
|
12
|
+
constructor(buckets) {
|
|
13
|
+
this.buckets = buckets;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Simulate putting an Object into an S3 Bucket.
|
|
17
|
+
*/
|
|
18
|
+
async handle(cmd) {
|
|
19
|
+
assertDefined(cmd.input.Bucket, "PutObjectCommand.input.Bucket");
|
|
20
|
+
assertDefined(cmd.input.Key, "PutObjectCommand.input.Key");
|
|
21
|
+
const bucketName = cmd.input.Bucket;
|
|
22
|
+
const bucket = this.buckets.get(bucketName);
|
|
23
|
+
if (bucket === undefined) {
|
|
24
|
+
throw new NoSuchBucket({
|
|
25
|
+
message: `No S3 Bucket named ${bucketName}`,
|
|
26
|
+
$metadata: {},
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
await jitter();
|
|
30
|
+
const object = new SimS3Object(cmd.input.Key, PutObjectCommandHandler.toBuffer(cmd.input.Body), new SimS3ObjectMetadata(PutObjectCommandHandler.toMetadata(cmd)));
|
|
31
|
+
await bucket.putObject(object);
|
|
32
|
+
return {
|
|
33
|
+
$metadata: {},
|
|
34
|
+
};
|
|
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
|
+
}
|
|
44
|
+
static toBuffer(body) {
|
|
45
|
+
if (body === undefined) {
|
|
46
|
+
return Buffer.alloc(0);
|
|
47
|
+
}
|
|
48
|
+
if (typeof body === "string") {
|
|
49
|
+
return Buffer.from(body);
|
|
50
|
+
}
|
|
51
|
+
if (body instanceof Uint8Array) {
|
|
52
|
+
return Buffer.from(body);
|
|
53
|
+
}
|
|
54
|
+
throw new Error("PutObjectCommand.input.Body must be a string or Uint8Array");
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=put-object.handler.js.map
|
|
@@ -0,0 +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,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 +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,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Simulated S3 object metadata.
|
|
3
|
+
*/
|
|
4
|
+
export declare class SimS3ObjectMetadata {
|
|
5
|
+
readonly values: Record<string, string>;
|
|
6
|
+
constructor(values?: Record<string, string>);
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Simulated S3 object.
|
|
10
|
+
*/
|
|
11
|
+
export declare class SimS3Object {
|
|
12
|
+
readonly key: string;
|
|
13
|
+
readonly body: Buffer;
|
|
14
|
+
readonly metadata: SimS3ObjectMetadata;
|
|
15
|
+
constructor(key: string, body?: Buffer, metadata?: SimS3ObjectMetadata);
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=s3-object.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"s3-object.d.ts","sourceRoot":"","sources":["../../../../src/service/s3/object/s3-object.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,mBAAmB;aACF,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;gBAA9B,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM;CAChE;AAED;;GAEG;AACH,qBAAa,WAAW;aAEJ,GAAG,EAAE,MAAM;aACX,IAAI,EAAE,MAAM;aACZ,QAAQ,EAAE,mBAAmB;gBAF7B,GAAG,EAAE,MAAM,EACX,IAAI,GAAE,MAAwB,EAC9B,QAAQ,GAAE,mBAA+C;CAE5E"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Simulated S3 object metadata.
|
|
3
|
+
*/
|
|
4
|
+
export class SimS3ObjectMetadata {
|
|
5
|
+
values;
|
|
6
|
+
constructor(values = {}) {
|
|
7
|
+
this.values = values;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Simulated S3 object.
|
|
12
|
+
*/
|
|
13
|
+
export class SimS3Object {
|
|
14
|
+
key;
|
|
15
|
+
body;
|
|
16
|
+
metadata;
|
|
17
|
+
constructor(key, body = Buffer.alloc(0), metadata = new SimS3ObjectMetadata()) {
|
|
18
|
+
this.key = key;
|
|
19
|
+
this.body = body;
|
|
20
|
+
this.metadata = metadata;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=s3-object.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"s3-object.js","sourceRoot":"","sources":["../../../../src/service/s3/object/s3-object.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,OAAO,mBAAmB;IACF;IAA5B,YAA4B,SAAiC,EAAE;QAAnC,WAAM,GAAN,MAAM,CAA6B;IAAG,CAAC;CACpE;AAED;;GAEG;AACH,MAAM,OAAO,WAAW;IAEJ;IACA;IACA;IAHlB,YACkB,GAAW,EACX,OAAe,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAC9B,WAAgC,IAAI,mBAAmB,EAAE;QAFzD,QAAG,GAAH,GAAG,CAAQ;QACX,SAAI,GAAJ,IAAI,CAA0B;QAC9B,aAAQ,GAAR,QAAQ,CAAiD;IACxE,CAAC;CACL"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { S3BucketName, SimS3Bucket } from "./bucket/s3-bucket.js";
|
|
2
|
+
import type { CreateBucketCommand, CreateBucketCommandOutput, GetObjectCommand, GetObjectCommandOutput, ListBucketsCommand, ListBucketsCommandOutput, ListObjectsCommand, ListObjectsCommandOutput, PutObjectCommand, PutObjectCommandOutput } from "@aws-sdk/client-s3";
|
|
3
|
+
/**
|
|
4
|
+
* Simulated S3. Handles SDK commands. Emulates AWS behaviour and state.
|
|
5
|
+
*/
|
|
6
|
+
export declare class SimS3 {
|
|
7
|
+
private readonly buckets;
|
|
8
|
+
/**
|
|
9
|
+
* Handle a Create Bucket Command from the SDK.
|
|
10
|
+
*/
|
|
11
|
+
createBucket(cmd: CreateBucketCommand): Promise<CreateBucketCommandOutput>;
|
|
12
|
+
/**
|
|
13
|
+
* Handle a List Buckets Command from the SDK.
|
|
14
|
+
*/
|
|
15
|
+
listBuckets(cmd: ListBucketsCommand): Promise<ListBucketsCommandOutput>;
|
|
16
|
+
/**
|
|
17
|
+
* Handle a Put Object Command from the SDK.
|
|
18
|
+
*/
|
|
19
|
+
putObject(cmd: PutObjectCommand): Promise<PutObjectCommandOutput>;
|
|
20
|
+
/**
|
|
21
|
+
* Handle a Get Object Command from the SDK.
|
|
22
|
+
*/
|
|
23
|
+
getObject(cmd: GetObjectCommand): Promise<GetObjectCommandOutput>;
|
|
24
|
+
/**
|
|
25
|
+
* Handle a List Objects Command from the SDK.
|
|
26
|
+
*/
|
|
27
|
+
listObjects(cmd: ListObjectsCommand): Promise<ListObjectsCommandOutput>;
|
|
28
|
+
/**
|
|
29
|
+
* Get a simulated S3 Bucket instance by name.
|
|
30
|
+
*/
|
|
31
|
+
getSimBucketByName(bucketName: S3BucketName): SimS3Bucket;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=s3.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"s3.d.ts","sourceRoot":"","sources":["../../../src/service/s3/s3.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,KAAK,EACV,mBAAmB,EACnB,yBAAyB,EACzB,gBAAgB,EAChB,sBAAsB,EACtB,kBAAkB,EAClB,wBAAwB,EACxB,kBAAkB,EAClB,wBAAwB,EACxB,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,oBAAoB,CAAC;AAQ5B;;GAEG;AACH,qBAAa,KAAK;IAChB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwC;IAEhE;;OAEG;IACG,YAAY,CAChB,GAAG,EAAE,mBAAmB,GACvB,OAAO,CAAC,yBAAyB,CAAC;IAKrC;;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,YAAY,GAAG,WAAW;CAK1D"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { CreateBucketCommandHandler } from "./command/create-bucket/create-bucket.handler.js";
|
|
2
|
+
import { ListBucketsCommandHandler } from "./command/list-buckets/list-buckets.handler.js";
|
|
3
|
+
import { assertDefined } from "../../util/defined.js";
|
|
4
|
+
import { PutObjectCommandHandler } from "./command/put-object/put-object.handler.js";
|
|
5
|
+
import { GetObjectCommandHandler } from "./command/get-object/get-object.handler.js";
|
|
6
|
+
import { ListObjectsCommandHandler } from "./command/list-objects/list-objects.handler.js";
|
|
7
|
+
/**
|
|
8
|
+
* Simulated S3. Handles SDK commands. Emulates AWS behaviour and state.
|
|
9
|
+
*/
|
|
10
|
+
export class SimS3 {
|
|
11
|
+
buckets = new Map();
|
|
12
|
+
/**
|
|
13
|
+
* Handle a Create Bucket Command from the SDK.
|
|
14
|
+
*/
|
|
15
|
+
async createBucket(cmd) {
|
|
16
|
+
const handler = new CreateBucketCommandHandler(this.buckets);
|
|
17
|
+
return await handler.handle(cmd);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Handle a List Buckets Command from the SDK.
|
|
21
|
+
*/
|
|
22
|
+
async listBuckets(cmd) {
|
|
23
|
+
const handler = new ListBucketsCommandHandler(this.buckets);
|
|
24
|
+
return await handler.handle(cmd);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Handle a Put Object Command from the SDK.
|
|
28
|
+
*/
|
|
29
|
+
async putObject(cmd) {
|
|
30
|
+
const handler = new PutObjectCommandHandler(this.buckets);
|
|
31
|
+
return await handler.handle(cmd);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Handle a Get Object Command from the SDK.
|
|
35
|
+
*/
|
|
36
|
+
async getObject(cmd) {
|
|
37
|
+
const handler = new GetObjectCommandHandler(this.buckets);
|
|
38
|
+
return await handler.handle(cmd);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Handle a List Objects Command from the SDK.
|
|
42
|
+
*/
|
|
43
|
+
async listObjects(cmd) {
|
|
44
|
+
const handler = new ListObjectsCommandHandler(this.buckets);
|
|
45
|
+
return await handler.handle(cmd);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Get a simulated S3 Bucket instance by name.
|
|
49
|
+
*/
|
|
50
|
+
getSimBucketByName(bucketName) {
|
|
51
|
+
const simBucket = this.buckets.get(bucketName);
|
|
52
|
+
assertDefined(simBucket, `Simulated S3 Bucket named '${bucketName}'`);
|
|
53
|
+
return simBucket;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=s3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"s3.js","sourceRoot":"","sources":["../../../src/service/s3/s3.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,0BAA0B,EAAE,MAAM,kDAAkD,CAAC;AAC9F,OAAO,EAAE,yBAAyB,EAAE,MAAM,gDAAgD,CAAC;AAC3F,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AACrF,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AACrF,OAAO,EAAE,yBAAyB,EAAE,MAAM,gDAAgD,CAAC;AAE3F;;GAEG;AACH,MAAM,OAAO,KAAK;IACC,OAAO,GAAG,IAAI,GAAG,EAA6B,CAAC;IAEhE;;OAEG;IACH,KAAK,CAAC,YAAY,CAChB,GAAwB;QAExB,MAAM,OAAO,GAAG,IAAI,0BAA0B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7D,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,UAAwB;QACzC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC/C,aAAa,CAAC,SAAS,EAAE,8BAA8B,UAAU,GAAG,CAAC,CAAC;QACtE,OAAO,SAAS,CAAC;IACnB,CAAC;CACF"}
|
|
@@ -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,11 @@
|
|
|
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
|
+
}
|
|
11
|
+
//# 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;AAE1D;;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;CA+BrB"}
|
|
@@ -0,0 +1,35 @@
|
|
|
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 object = await bucket.getObject(objectKey);
|
|
10
|
+
if (object === undefined) {
|
|
11
|
+
return new Response("Object not found\n", {
|
|
12
|
+
status: 404,
|
|
13
|
+
headers: {
|
|
14
|
+
"content-type": "text/plain; charset=utf-8",
|
|
15
|
+
},
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
const contentType = object.metadata.values["content-type"];
|
|
19
|
+
const headers = {
|
|
20
|
+
"content-length": String(object.body.length),
|
|
21
|
+
...(contentType === undefined ? {} : { "content-type": contentType }),
|
|
22
|
+
};
|
|
23
|
+
if (request.method === "HEAD") {
|
|
24
|
+
return new Response(undefined, {
|
|
25
|
+
status: 200,
|
|
26
|
+
headers,
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
return new Response(object.body, {
|
|
30
|
+
status: 200,
|
|
31
|
+
headers,
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
//# 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":"AAEA;;GAEG;AACH,MAAM,OAAO,wBAAwB;IACnC;;OAEG;IACH,KAAK,CAAC,aAAa,CACjB,MAAmB,EACnB,SAAiB,EACjB,OAAgB;QAEhB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAEjD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,IAAI,QAAQ,CAAC,oBAAoB,EAAE;gBACxC,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE;oBACP,cAAc,EAAE,2BAA2B;iBAC5C;aACF,CAAC,CAAC;QACL,CAAC;QAED,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,EAAE,GAAG;gBACX,OAAO;aACR,CAAC,CAAC;QACL,CAAC;QAED,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE;YAC/B,MAAM,EAAE,GAAG;YACX,OAAO;SACR,CAAC,CAAC;IACL,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;CA4EjE"}
|
|
@@ -0,0 +1,79 @@
|
|
|
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
|
+
if (objectKey.length === 0) {
|
|
37
|
+
return {
|
|
38
|
+
action: "failure",
|
|
39
|
+
statusCode: 501,
|
|
40
|
+
message: "S3 Bucket indexes are not implemented\n",
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
const bucketName = target.resourceName;
|
|
44
|
+
const bucketScope = this.simAws
|
|
45
|
+
.s3GlobalRegistry()
|
|
46
|
+
.findBucketScope(bucketName);
|
|
47
|
+
if (bucketScope === undefined) {
|
|
48
|
+
return {
|
|
49
|
+
action: "failure",
|
|
50
|
+
statusCode: 404,
|
|
51
|
+
message: `S3 bucket named ${bucketName} not found`,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
if (bucketScope.regionName !== target.regionName) {
|
|
55
|
+
return {
|
|
56
|
+
action: "failure",
|
|
57
|
+
statusCode: 404,
|
|
58
|
+
message: `S3 bucket named ${bucketName} is in region ${bucketScope.regionName}, not requested ${target.regionName}`,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
const bucket = this.simAws
|
|
62
|
+
.accountRegionScope(bucketScope.accountId, bucketScope.regionName)
|
|
63
|
+
.s3()
|
|
64
|
+
.getSimBucketByName(bucketName);
|
|
65
|
+
if (bucket === undefined) {
|
|
66
|
+
return {
|
|
67
|
+
action: "failure",
|
|
68
|
+
statusCode: 404,
|
|
69
|
+
message: `S3 bucket named ${bucketName} not found`,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
return {
|
|
73
|
+
action: "getObject",
|
|
74
|
+
bucket,
|
|
75
|
+
objectKey,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
//# 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,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,UAAU,EAAE,GAAG;gBACf,OAAO,EAAE,yCAAyC;aACnD,CAAC;QACJ,CAAC;QAED,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,38 @@
|
|
|
1
|
+
import type { SimS3Bucket, SimS3BucketName } from "./bucket/s3-bucket.js";
|
|
2
|
+
import type { CreateBucketCommand, CreateBucketCommandOutput, GetObjectCommand, GetObjectCommandOutput, ListBucketsCommand, ListBucketsCommandOutput, ListObjectsCommand, ListObjectsCommandOutput, 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 List Buckets Command from the SDK.
|
|
19
|
+
*/
|
|
20
|
+
listBuckets(cmd: ListBucketsCommand): Promise<ListBucketsCommandOutput>;
|
|
21
|
+
/**
|
|
22
|
+
* Handle a Put Object Command from the SDK.
|
|
23
|
+
*/
|
|
24
|
+
putObject(cmd: PutObjectCommand): Promise<PutObjectCommandOutput>;
|
|
25
|
+
/**
|
|
26
|
+
* Handle a Get Object Command from the SDK.
|
|
27
|
+
*/
|
|
28
|
+
getObject(cmd: GetObjectCommand): Promise<GetObjectCommandOutput>;
|
|
29
|
+
/**
|
|
30
|
+
* Handle a List Objects Command from the SDK.
|
|
31
|
+
*/
|
|
32
|
+
listObjects(cmd: ListObjectsCommand): Promise<ListObjectsCommandOutput>;
|
|
33
|
+
/**
|
|
34
|
+
* Get a simulated S3 Bucket instance by name.
|
|
35
|
+
*/
|
|
36
|
+
getSimBucketByName(bucketName: SimS3BucketName): SimS3Bucket | undefined;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=sim-s3.d.ts.map
|