@kensio/yulin 0.1.1 → 0.2.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/dist/service/cloudfront/factory/cloudfront-functions.factory.d.ts +1 -2
- package/dist/service/cloudfront/factory/cloudfront-functions.factory.d.ts.map +1 -1
- package/dist/service/cloudfront/factory/cloudfront-functions.factory.js.map +1 -1
- package/dist/service/cloudfront/globals.d.ts +22 -0
- package/dist/service/cloudfront/globals.d.ts.map +1 -0
- package/dist/service/cloudfront/globals.js +7 -0
- package/dist/service/cloudfront/globals.js.map +1 -0
- package/dist/service/cloudfront/index.d.ts +1 -1
- package/dist/service/cloudfront/index.d.ts.map +1 -1
- package/dist/service/cloudfront/typings/cloudfront-functions.namespace.d.ts +39 -0
- package/dist/service/cloudfront/typings/cloudfront-functions.namespace.d.ts.map +1 -0
- package/dist/service/cloudfront/typings/cloudfront-functions.namespace.js +2 -0
- package/dist/service/cloudfront/typings/cloudfront-functions.namespace.js.map +1 -0
- 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 +2 -3
- package/dist/service/dynamodb/command/create-table/create-table.handler.js.map +1 -1
- package/dist/service/dynamodb/table/dynamodb-table.d.ts +1 -5
- package/dist/service/dynamodb/table/dynamodb-table.d.ts.map +1 -1
- package/dist/service/dynamodb/table/dynamodb-table.js +2 -8
- 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 +26 -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 +17 -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 +37 -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 +18 -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 +49 -0
- package/dist/service/s3/command/put-object/put-object.handler.js.map +1 -0
- package/dist/service/s3/index.js +0 -1
- 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/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 +34 -0
- package/dist/service/s3/storage/s3-bucket-storage.d.ts.map +1 -0
- package/dist/service/s3/storage/s3-bucket-storage.js +64 -0
- package/dist/service/s3/storage/s3-bucket-storage.js.map +1 -0
- package/package.json +10 -5
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-buckets.handler.d.ts","sourceRoot":"","sources":["../../../../../src/service/s3/command/list-buckets/list-buckets.handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,KAAK,EACV,kBAAkB,EAClB,wBAAwB,EACzB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAG3E;;;;GAIG;AACH,qBAAa,yBAA0B,YAAW,cAAc,CAC9D,kBAAkB,EAClB,wBAAwB,CACzB;IACa,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,GAAG,CAAC,YAAY,EAAE,WAAW,CAAC;IAEpE;;OAEG;IACG,MAAM,CAAC,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAiDxE,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAIpC,OAAO,CAAC,MAAM,CAAC,sBAAsB;CAGtC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { jitter } from "../../../../util/sleep.js";
|
|
2
|
+
/**
|
|
3
|
+
* Simulated S3 ListBucketsCommand handler.
|
|
4
|
+
*
|
|
5
|
+
* https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/ListBucketsCommand/
|
|
6
|
+
*/
|
|
7
|
+
export class ListBucketsCommandHandler {
|
|
8
|
+
buckets;
|
|
9
|
+
constructor(buckets) {
|
|
10
|
+
this.buckets = buckets;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Simulate listing S3 Buckets.
|
|
14
|
+
*/
|
|
15
|
+
async handle(cmd) {
|
|
16
|
+
await jitter();
|
|
17
|
+
const buckets = [...this.buckets.values()];
|
|
18
|
+
buckets.sort((a, b) => a.bucketName.localeCompare(b.bucketName));
|
|
19
|
+
const prefix = cmd.input.Prefix;
|
|
20
|
+
const continuationToken = cmd.input.ContinuationToken;
|
|
21
|
+
const maxBuckets = cmd.input.MaxBuckets ?? 10_000;
|
|
22
|
+
const matchingBuckets = prefix === undefined
|
|
23
|
+
? buckets
|
|
24
|
+
: buckets.filter((bucket) => bucket.bucketName.startsWith(prefix));
|
|
25
|
+
const startBucketName = continuationToken === undefined
|
|
26
|
+
? undefined
|
|
27
|
+
: ListBucketsCommandHandler.parseContinuationToken(continuationToken);
|
|
28
|
+
const startIndex = startBucketName === undefined
|
|
29
|
+
? 0
|
|
30
|
+
: Math.max(0, matchingBuckets.findIndex((bucket) => bucket.bucketName === startBucketName) + 1);
|
|
31
|
+
const page = matchingBuckets.slice(startIndex, startIndex + maxBuckets);
|
|
32
|
+
const lastBucket = page.at(-1);
|
|
33
|
+
const hasMoreBuckets = startIndex + page.length < matchingBuckets.length;
|
|
34
|
+
return {
|
|
35
|
+
Buckets: page.map((bucket) => ({
|
|
36
|
+
Name: bucket.bucketName,
|
|
37
|
+
})),
|
|
38
|
+
ContinuationToken: hasMoreBuckets && lastBucket !== undefined
|
|
39
|
+
? ListBucketsCommandHandler.makeContinuationToken(lastBucket.bucketName)
|
|
40
|
+
: undefined,
|
|
41
|
+
Prefix: prefix,
|
|
42
|
+
$metadata: {},
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
static makeContinuationToken(bucketName) {
|
|
46
|
+
return Buffer.from(bucketName, "utf8").toString("base64url");
|
|
47
|
+
}
|
|
48
|
+
static parseContinuationToken(token) {
|
|
49
|
+
return Buffer.from(token, "base64url").toString("utf8");
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=list-buckets.handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-buckets.handler.js","sourceRoot":"","sources":["../../../../../src/service/s3/command/list-buckets/list-buckets.handler.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAEnD;;;;GAIG;AACH,MAAM,OAAO,yBAAyB;IAIP;IAA7B,YAA6B,OAAuC;QAAvC,YAAO,GAAP,OAAO,CAAgC;IAAG,CAAC;IAExE;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,GAAuB;QAClC,MAAM,MAAM,EAAE,CAAC;QAEf,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;QAEjE,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;QAChC,MAAM,iBAAiB,GAAG,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC;QACtD,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,UAAU,IAAI,MAAM,CAAC;QAElD,MAAM,eAAe,GACnB,MAAM,KAAK,SAAS;YAClB,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;QAEvE,MAAM,eAAe,GACnB,iBAAiB,KAAK,SAAS;YAC7B,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,yBAAyB,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,CAAC;QAE1E,MAAM,UAAU,GACd,eAAe,KAAK,SAAS;YAC3B,CAAC,CAAC,CAAC;YACH,CAAC,CAAC,IAAI,CAAC,GAAG,CACN,CAAC,EACD,eAAe,CAAC,SAAS,CACvB,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,KAAK,eAAe,CAClD,GAAG,CAAC,CACN,CAAC;QAER,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,UAAU,EAAE,UAAU,GAAG,UAAU,CAAC,CAAC;QACxE,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,cAAc,GAAG,UAAU,GAAG,IAAI,CAAC,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC;QAEzE,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;gBAC7B,IAAI,EAAE,MAAM,CAAC,UAAU;aACxB,CAAC,CAAC;YACH,iBAAiB,EACf,cAAc,IAAI,UAAU,KAAK,SAAS;gBACxC,CAAC,CAAC,yBAAyB,CAAC,qBAAqB,CAC7C,UAAU,CAAC,UAAU,CACtB;gBACH,CAAC,CAAC,SAAS;YACf,MAAM,EAAE,MAAM;YACd,SAAS,EAAE,EAAE;SACd,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,qBAAqB,CAAC,UAAkB;QACrD,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC/D,CAAC;IAEO,MAAM,CAAC,sBAAsB,CAAC,KAAa;QACjD,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC1D,CAAC;CACF"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { CommandHandler } from "../../../../command/command-handler.js";
|
|
2
|
+
import { type ListObjectsCommand, type ListObjectsCommandOutput } from "@aws-sdk/client-s3";
|
|
3
|
+
import type { S3BucketName, SimS3Bucket } from "../../bucket/s3-bucket.js";
|
|
4
|
+
/**
|
|
5
|
+
* Simulated S3 ListObjectsCommand handler.
|
|
6
|
+
*
|
|
7
|
+
* https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/ListObjectsCommand/
|
|
8
|
+
*/
|
|
9
|
+
export declare class ListObjectsCommandHandler implements CommandHandler<ListObjectsCommand, ListObjectsCommandOutput> {
|
|
10
|
+
private readonly buckets;
|
|
11
|
+
constructor(buckets: Map<S3BucketName, SimS3Bucket>);
|
|
12
|
+
/**
|
|
13
|
+
* Simulate listing Objects in an S3 Bucket.
|
|
14
|
+
*/
|
|
15
|
+
handle(cmd: ListObjectsCommand): Promise<ListObjectsCommandOutput>;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=list-objects.handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-objects.handler.d.ts","sourceRoot":"","sources":["../../../../../src/service/s3/command/list-objects/list-objects.handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,wBAAwB,EAC9B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAI3E;;;;GAIG;AACH,qBAAa,yBAA0B,YAAW,cAAc,CAC9D,kBAAkB,EAClB,wBAAwB,CACzB;IACa,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,GAAG,CAAC,YAAY,EAAE,WAAW,CAAC;IAEpE;;OAEG;IACG,MAAM,CAAC,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAAC,wBAAwB,CAAC;CA6CzE"}
|
|
@@ -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,OAAuC;QAAvC,YAAO,GAAP,OAAO,CAAgC;IAAG,CAAC;IAExE;;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,MAAsB,CAAC;QACpD,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,18 @@
|
|
|
1
|
+
import type { CommandHandler } from "../../../../command/command-handler.js";
|
|
2
|
+
import { type PutObjectCommand, type PutObjectCommandOutput } from "@aws-sdk/client-s3";
|
|
3
|
+
import type { S3BucketName, 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<S3BucketName, SimS3Bucket>);
|
|
12
|
+
/**
|
|
13
|
+
* Simulate putting an Object into an S3 Bucket.
|
|
14
|
+
*/
|
|
15
|
+
handle(cmd: PutObjectCommand): Promise<PutObjectCommandOutput>;
|
|
16
|
+
private static toBuffer;
|
|
17
|
+
}
|
|
18
|
+
//# 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,YAAY,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAK3E;;;;GAIG;AACH,qBAAa,uBAAwB,YAAW,cAAc,CAC5D,gBAAgB,EAChB,sBAAsB,CACvB;IACa,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,GAAG,CAAC,YAAY,EAAE,WAAW,CAAC;IAEpE;;OAEG;IACG,MAAM,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IA2BpE,OAAO,CAAC,MAAM,CAAC,QAAQ;CAiBxB"}
|
|
@@ -0,0 +1,49 @@
|
|
|
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(cmd.input.Metadata));
|
|
31
|
+
await bucket.putObject(object);
|
|
32
|
+
return {
|
|
33
|
+
$metadata: {},
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
static toBuffer(body) {
|
|
37
|
+
if (body === undefined) {
|
|
38
|
+
return Buffer.alloc(0);
|
|
39
|
+
}
|
|
40
|
+
if (typeof body === "string") {
|
|
41
|
+
return Buffer.from(body);
|
|
42
|
+
}
|
|
43
|
+
if (body instanceof Uint8Array) {
|
|
44
|
+
return Buffer.from(body);
|
|
45
|
+
}
|
|
46
|
+
throw new Error("PutObjectCommand.input.Body must be a string or Uint8Array");
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
//# 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,OAAuC;QAAvC,YAAO,GAAP,OAAO,CAAgC;IAAG,CAAC;IAExE;;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,MAAsB,CAAC;QACpD,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,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAC5C,CAAC;QACF,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAE/B,OAAO;YACL,SAAS,EAAE,EAAE;SACd,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"}
|
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":""}
|
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"file":"s3-body-buffer.d.ts","sourceRoot":"","sources":["../../../../src/service/s3/storage/s3-body-buffer.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,GAC1B,OAAO,CAAC,MAAM,CAAC,CAQjB"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert an AsyncIterable<Buffer> simulated S3 Object body to a Buffer.
|
|
3
|
+
*/
|
|
4
|
+
export async function simS3BodyToBuffer(body) {
|
|
5
|
+
const chunks = [];
|
|
6
|
+
for await (const chunk of body) {
|
|
7
|
+
chunks.push(chunk);
|
|
8
|
+
}
|
|
9
|
+
return Buffer.concat(chunks);
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=s3-body-buffer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"s3-body-buffer.js","sourceRoot":"","sources":["../../../../src/service/s3/storage/s3-body-buffer.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,IAA2B;IAE3B,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;QAC/B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { SimS3Object } from "../object/s3-object.js";
|
|
2
|
+
export interface SimS3BucketStorage {
|
|
3
|
+
/**
|
|
4
|
+
* Put a simulated Object into storage.
|
|
5
|
+
*/
|
|
6
|
+
putObject(object: SimS3Object): Promise<void>;
|
|
7
|
+
/**
|
|
8
|
+
* Get a simulated Object from storage.
|
|
9
|
+
*/
|
|
10
|
+
getObject(key: string): Promise<SimS3Object | undefined>;
|
|
11
|
+
/**
|
|
12
|
+
* List simulated Objects in storage.
|
|
13
|
+
*/
|
|
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
|
+
/**
|
|
26
|
+
* List simulated Objects in in-memory storage.
|
|
27
|
+
*/
|
|
28
|
+
listObjects(prefix?: string): Promise<SimS3Object[]>;
|
|
29
|
+
/**
|
|
30
|
+
* Put a simulated Object into in-memory storage.
|
|
31
|
+
*/
|
|
32
|
+
putObject(object: SimS3Object): Promise<void>;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=s3-bucket-storage.d.ts.map
|
|
@@ -0,0 +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;CAMtD;AAED;;GAEG;AACH,qBAAa,qBAAsB,YAAW,kBAAkB;IAC9D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkC;IAE1D;;OAEG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAIxD;;OAEG;IACH,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAQpD;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CAa9C"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default in-memory simulated S3 Bucket storage.
|
|
3
|
+
*/
|
|
4
|
+
export class MemoryS3BucketStorage {
|
|
5
|
+
objects = new Map();
|
|
6
|
+
/**
|
|
7
|
+
* Get a simulated Object from in-memory storage.
|
|
8
|
+
*/
|
|
9
|
+
getObject(key) {
|
|
10
|
+
return Promise.resolve(this.objects.get(key));
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* List simulated Objects in in-memory storage.
|
|
14
|
+
*/
|
|
15
|
+
listObjects(prefix) {
|
|
16
|
+
const objects = [...this.objects.entries()]
|
|
17
|
+
.filter(([key]) => prefix === undefined || key.startsWith(prefix))
|
|
18
|
+
.map(([, object]) => object);
|
|
19
|
+
return Promise.resolve(objects);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Put a simulated Object into in-memory storage.
|
|
23
|
+
*/
|
|
24
|
+
putObject(object) {
|
|
25
|
+
this.objects.set(object.key, object);
|
|
26
|
+
return Promise.resolve();
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
// /**
|
|
30
|
+
// * Maps simulated S3 Objects to files under a directory.
|
|
31
|
+
// */
|
|
32
|
+
// export class FilesystemS3BucketStorage implements SimS3BucketStorage {
|
|
33
|
+
// /**
|
|
34
|
+
// * Get a simulated Object from a file in the directory.
|
|
35
|
+
// */
|
|
36
|
+
// getObject(key: string): Promise<SimS3Object | undefined> {
|
|
37
|
+
// return Promise.resolve();
|
|
38
|
+
// }
|
|
39
|
+
//
|
|
40
|
+
// /**
|
|
41
|
+
// * List simulated Objects based on files in the directory.
|
|
42
|
+
// */
|
|
43
|
+
// listObjects(prefix?: string): Promise<SimS3Object[]> {
|
|
44
|
+
// return Promise.resolve([]);
|
|
45
|
+
// }
|
|
46
|
+
//
|
|
47
|
+
// /**
|
|
48
|
+
// * Store a simulated Object as a file in the directory.
|
|
49
|
+
// * TODO: Keep some kind of manifest for object metadata.
|
|
50
|
+
// */
|
|
51
|
+
// putObject(object: SimS3Object): Promise<void> {
|
|
52
|
+
// return Promise.resolve();
|
|
53
|
+
// }
|
|
54
|
+
//
|
|
55
|
+
// /**
|
|
56
|
+
// * Is it OK to change to a different storage implementation?
|
|
57
|
+
// * For now, we're assuming that a user should not need to change from a
|
|
58
|
+
// * filesystem storage at runtime, so this is always false.
|
|
59
|
+
// */
|
|
60
|
+
// allowChangeStorage(): boolean {
|
|
61
|
+
// return false;
|
|
62
|
+
// }
|
|
63
|
+
// }
|
|
64
|
+
//# sourceMappingURL=s3-bucket-storage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"s3-bucket-storage.js","sourceRoot":"","sources":["../../../../src/service/s3/storage/s3-bucket-storage.ts"],"names":[],"mappings":"AAwBA;;GAEG;AACH,MAAM,OAAO,qBAAqB;IACf,OAAO,GAAG,IAAI,GAAG,EAAuB,CAAC;IAE1D;;OAEG;IACH,SAAS,CAAC,GAAW;QACnB,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,MAAe;QACzB,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;aACxC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,MAAM,KAAK,SAAS,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;aACjE,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;QAE/B,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,MAAmB;QAC3B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACrC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;CAUF;AAED,MAAM;AACN,2DAA2D;AAC3D,MAAM;AACN,yEAAyE;AACzE,QAAQ;AACR,4DAA4D;AAC5D,QAAQ;AACR,+DAA+D;AAC/D,gCAAgC;AAChC,MAAM;AACN,EAAE;AACF,QAAQ;AACR,+DAA+D;AAC/D,QAAQ;AACR,2DAA2D;AAC3D,kCAAkC;AAClC,MAAM;AACN,EAAE;AACF,QAAQ;AACR,4DAA4D;AAC5D,6DAA6D;AAC7D,QAAQ;AACR,oDAAoD;AACpD,gCAAgC;AAChC,MAAM;AACN,EAAE;AACF,QAAQ;AACR,iEAAiE;AACjE,4EAA4E;AAC5E,+DAA+D;AAC/D,QAAQ;AACR,oCAAoC;AACpC,oBAAoB;AACpB,MAAM;AACN,IAAI"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kensio/yulin",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "AWS system behaviour simulation for isolated unit testing",
|
|
5
5
|
"repository": "https://github.com/KensioSoftware/yulin",
|
|
6
6
|
"type": "module",
|
|
@@ -23,6 +23,10 @@
|
|
|
23
23
|
"types": "./dist/service/cloudfront/index.d.ts",
|
|
24
24
|
"import": "./dist/service/cloudfront/index.js"
|
|
25
25
|
},
|
|
26
|
+
"./cloudfront/globals": {
|
|
27
|
+
"types": "./dist/service/cloudfront/globals.d.ts",
|
|
28
|
+
"import": "./dist/service/cloudfront/globals.js"
|
|
29
|
+
},
|
|
26
30
|
"./package.json": "./package.json"
|
|
27
31
|
},
|
|
28
32
|
"files": [
|
|
@@ -33,11 +37,11 @@
|
|
|
33
37
|
"author": "Kensio Software",
|
|
34
38
|
"license": "AGPL-3.0",
|
|
35
39
|
"devDependencies": {
|
|
36
|
-
"@aws-sdk/client-dynamodb": "^3.
|
|
37
|
-
"@aws-sdk/client-s3": "^3.
|
|
40
|
+
"@aws-sdk/client-dynamodb": "^3.1057.0",
|
|
41
|
+
"@aws-sdk/client-s3": "^3.1057.0",
|
|
38
42
|
"@eslint/js": "^10.0.1",
|
|
39
43
|
"@faker-js/faker": "^10.4.0",
|
|
40
|
-
"@kensio/smartass": "^1.0.
|
|
44
|
+
"@kensio/smartass": "^1.0.2",
|
|
41
45
|
"@smithy/smithy-client": "^4.13.5",
|
|
42
46
|
"@smithy/types": "^4.14.2",
|
|
43
47
|
"@types/eslint-plugin-security": "^3.0.1",
|
|
@@ -46,7 +50,7 @@
|
|
|
46
50
|
"@vitest/coverage-v8": "^4.1.7",
|
|
47
51
|
"@vitest/eslint-plugin": "^1.6.18",
|
|
48
52
|
"aws-sdk-client-mock": "^4.1.0",
|
|
49
|
-
"eslint": "^10.4.
|
|
53
|
+
"eslint": "^10.4.1",
|
|
50
54
|
"eslint-config-prettier": "^10.1.8",
|
|
51
55
|
"eslint-plugin-jsdoc": "^62.9.0",
|
|
52
56
|
"eslint-plugin-no-secrets": "^2.3.3",
|
|
@@ -61,6 +65,7 @@
|
|
|
61
65
|
"peerDependencies": {
|
|
62
66
|
"@aws-sdk/client-dynamodb": "^3.1001.0",
|
|
63
67
|
"@aws-sdk/client-s3": "^3.1001.0",
|
|
68
|
+
"@faker-js/faker": "^10.4.0",
|
|
64
69
|
"@smithy/smithy-client": "^4.12.1"
|
|
65
70
|
},
|
|
66
71
|
"peerDependenciesMeta": {
|