@kensio/yulin 1.20.5 → 1.20.6
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/s3/bucket/lifecycle/sim-s3-lifecycle-configuration.d.ts +83 -0
- package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-configuration.d.ts.map +1 -0
- package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-configuration.js +87 -0
- package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-configuration.js.map +1 -0
- package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-expiry.d.ts +24 -0
- package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-expiry.d.ts.map +1 -0
- package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-expiry.js +42 -0
- package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-expiry.js.map +1 -0
- package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-selection.d.ts +24 -0
- package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-selection.d.ts.map +1 -0
- package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-selection.js +51 -0
- package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-selection.js.map +1 -0
- package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-sweep.d.ts +38 -0
- package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-sweep.d.ts.map +1 -0
- package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-sweep.js +66 -0
- package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-sweep.js.map +1 -0
- package/dist/service/s3/bucket/sim-s3-bucket.d.ts +34 -0
- package/dist/service/s3/bucket/sim-s3-bucket.d.ts.map +1 -1
- package/dist/service/s3/bucket/sim-s3-bucket.js +43 -4
- package/dist/service/s3/bucket/sim-s3-bucket.js.map +1 -1
- package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-configuration.d.ts +31 -0
- package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-configuration.d.ts.map +1 -0
- package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-configuration.js +69 -0
- package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-configuration.js.map +1 -0
- package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-fields.d.ts +31 -0
- package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-fields.d.ts.map +1 -0
- package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-fields.js +50 -0
- package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-fields.js.map +1 -0
- package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-transitions.d.ts +19 -0
- package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-transitions.d.ts.map +1 -0
- package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-transitions.js +28 -0
- package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-transitions.js.map +1 -0
- package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-configurator.d.ts +1 -0
- package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-configurator.d.ts.map +1 -1
- package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-configurator.js +11 -0
- package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-configurator.js.map +1 -1
- package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-property-names.d.ts.map +1 -1
- package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-property-names.js +1 -4
- package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-property-names.js.map +1 -1
- package/dist/service/s3/command/create-bucket/create-bucket.handler.js +1 -1
- package/dist/service/s3/command/create-bucket/create-bucket.handler.js.map +1 -1
- package/dist/service/s3/command/delete-bucket-lifecycle/delete-bucket-lifecycle.command.d.ts +20 -0
- package/dist/service/s3/command/delete-bucket-lifecycle/delete-bucket-lifecycle.command.d.ts.map +1 -0
- package/dist/service/s3/command/delete-bucket-lifecycle/delete-bucket-lifecycle.command.js +2 -0
- package/dist/service/s3/command/delete-bucket-lifecycle/delete-bucket-lifecycle.command.js.map +1 -0
- package/dist/service/s3/command/delete-bucket-lifecycle/delete-bucket-lifecycle.handler.d.ts +29 -0
- package/dist/service/s3/command/delete-bucket-lifecycle/delete-bucket-lifecycle.handler.d.ts.map +1 -0
- package/dist/service/s3/command/delete-bucket-lifecycle/delete-bucket-lifecycle.handler.js +37 -0
- package/dist/service/s3/command/delete-bucket-lifecycle/delete-bucket-lifecycle.handler.js.map +1 -0
- package/dist/service/s3/command/get-bucket-lifecycle-configuration/get-bucket-lifecycle-configuration.command.d.ts +26 -0
- package/dist/service/s3/command/get-bucket-lifecycle-configuration/get-bucket-lifecycle-configuration.command.d.ts.map +1 -0
- package/dist/service/s3/command/get-bucket-lifecycle-configuration/get-bucket-lifecycle-configuration.command.js +2 -0
- package/dist/service/s3/command/get-bucket-lifecycle-configuration/get-bucket-lifecycle-configuration.command.js.map +1 -0
- package/dist/service/s3/command/get-bucket-lifecycle-configuration/get-bucket-lifecycle-configuration.handler.d.ts +30 -0
- package/dist/service/s3/command/get-bucket-lifecycle-configuration/get-bucket-lifecycle-configuration.handler.d.ts.map +1 -0
- package/dist/service/s3/command/get-bucket-lifecycle-configuration/get-bucket-lifecycle-configuration.handler.js +43 -0
- package/dist/service/s3/command/get-bucket-lifecycle-configuration/get-bucket-lifecycle-configuration.handler.js.map +1 -0
- package/dist/service/s3/command/lifecycle/sim-s3-lifecycle-authorizer.d.ts +32 -0
- package/dist/service/s3/command/lifecycle/sim-s3-lifecycle-authorizer.d.ts.map +1 -0
- package/dist/service/s3/command/lifecycle/sim-s3-lifecycle-authorizer.js +51 -0
- package/dist/service/s3/command/lifecycle/sim-s3-lifecycle-authorizer.js.map +1 -0
- package/dist/service/s3/command/lifecycle/sim-s3-lifecycle-commands.d.ts +23 -0
- package/dist/service/s3/command/lifecycle/sim-s3-lifecycle-commands.d.ts.map +1 -0
- package/dist/service/s3/command/lifecycle/sim-s3-lifecycle-commands.js +31 -0
- package/dist/service/s3/command/lifecycle/sim-s3-lifecycle-commands.js.map +1 -0
- package/dist/service/s3/command/lifecycle/sim-s3-lifecycle-rules-validation.d.ts +12 -0
- package/dist/service/s3/command/lifecycle/sim-s3-lifecycle-rules-validation.d.ts.map +1 -0
- package/dist/service/s3/command/lifecycle/sim-s3-lifecycle-rules-validation.js +53 -0
- package/dist/service/s3/command/lifecycle/sim-s3-lifecycle-rules-validation.js.map +1 -0
- package/dist/service/s3/command/put-bucket-lifecycle-configuration/put-bucket-lifecycle-configuration.command.d.ts +111 -0
- package/dist/service/s3/command/put-bucket-lifecycle-configuration/put-bucket-lifecycle-configuration.command.d.ts.map +1 -0
- package/dist/service/s3/command/put-bucket-lifecycle-configuration/put-bucket-lifecycle-configuration.command.js +2 -0
- package/dist/service/s3/command/put-bucket-lifecycle-configuration/put-bucket-lifecycle-configuration.command.js.map +1 -0
- package/dist/service/s3/command/put-bucket-lifecycle-configuration/put-bucket-lifecycle-configuration.handler.d.ts +30 -0
- package/dist/service/s3/command/put-bucket-lifecycle-configuration/put-bucket-lifecycle-configuration.handler.d.ts.map +1 -0
- package/dist/service/s3/command/put-bucket-lifecycle-configuration/put-bucket-lifecycle-configuration.handler.js +43 -0
- package/dist/service/s3/command/put-bucket-lifecycle-configuration/put-bucket-lifecycle-configuration.handler.js.map +1 -0
- package/dist/service/s3/command/sim-s3-command.types.d.ts +3 -0
- package/dist/service/s3/command/sim-s3-command.types.d.ts.map +1 -1
- package/dist/service/s3/error/sim-s3.error.d.ts +11 -0
- package/dist/service/s3/error/sim-s3.error.d.ts.map +1 -1
- package/dist/service/s3/error/sim-s3.error.js +13 -0
- package/dist/service/s3/error/sim-s3.error.js.map +1 -1
- package/dist/service/s3/sdk/sim-s3-sdk-command-router.d.ts.map +1 -1
- package/dist/service/s3/sdk/sim-s3-sdk-command-router.js +12 -0
- package/dist/service/s3/sdk/sim-s3-sdk-command-router.js.map +1 -1
- package/dist/service/s3/sim-s3-commands.d.ts +2 -0
- package/dist/service/s3/sim-s3-commands.d.ts.map +1 -1
- package/dist/service/s3/sim-s3-commands.js +3 -0
- package/dist/service/s3/sim-s3-commands.js.map +1 -1
- package/dist/service/s3/sim-s3-operations.d.ts +6 -0
- package/dist/service/s3/sim-s3-operations.d.ts.map +1 -1
- package/dist/service/s3/sim-s3-operations.js +12 -0
- package/dist/service/s3/sim-s3-operations.js.map +1 -1
- package/dist/service/s3/upload/sim-s3-multipart-uploads.d.ts +9 -0
- package/dist/service/s3/upload/sim-s3-multipart-uploads.d.ts.map +1 -1
- package/dist/service/s3/upload/sim-s3-multipart-uploads.js +15 -0
- package/dist/service/s3/upload/sim-s3-multipart-uploads.js.map +1 -1
- package/dist/terraform/map/sim-tf-map-s3-lifecycle.d.ts.map +1 -1
- package/dist/terraform/map/sim-tf-map-s3-lifecycle.js +4 -5
- package/dist/terraform/map/sim-tf-map-s3-lifecycle.js.map +1 -1
- package/dist/util/clock/sim-clock-control.d.ts +8 -0
- package/dist/util/clock/sim-clock-control.d.ts.map +1 -1
- package/dist/util/clock/sim-clock-control.js +10 -0
- package/dist/util/clock/sim-clock-control.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { SimRealClock } from "../../../util/clock/sim-clock.js";
|
|
2
2
|
import { MemoryS3BucketStorage } from "../storage/s3-memory-storage.js";
|
|
3
3
|
import { SimS3BucketWebsite } from "./website/sim-s3-bucket-website.js";
|
|
4
4
|
import { SimS3PublicAccessBlock } from "./public-access/sim-s3-public-access-block.js";
|
|
5
5
|
import { SimS3NotificationConfiguration } from "./notification/sim-s3-notification-configuration.js";
|
|
6
|
+
import { SimS3LifecycleConfiguration } from "./lifecycle/sim-s3-lifecycle-configuration.js";
|
|
7
|
+
import { SimS3LifecycleSweep } from "./lifecycle/sim-s3-lifecycle-sweep.js";
|
|
6
8
|
import { simS3BucketWebsiteUrl } from "./website/sim-s3-bucket-website-url.js";
|
|
7
9
|
import { validateS3BucketName } from "./validate/validate-s3-bucket-name.js";
|
|
8
10
|
import { simAwsAccountRegionScopeFactory } from "../../aws/sim-aws-account-region-scope.factory.js";
|
|
@@ -15,6 +17,7 @@ export class SimS3Bucket {
|
|
|
15
17
|
bucketName;
|
|
16
18
|
creationDate;
|
|
17
19
|
accountRegionScope;
|
|
20
|
+
clock;
|
|
18
21
|
systemMetadata = new SimS3BucketSystemMetadata();
|
|
19
22
|
multipartUploads = new SimS3MultipartUploads();
|
|
20
23
|
storage;
|
|
@@ -22,16 +25,19 @@ export class SimS3Bucket {
|
|
|
22
25
|
policy;
|
|
23
26
|
publicAccessBlock;
|
|
24
27
|
notifications;
|
|
28
|
+
lifecycle;
|
|
25
29
|
constructor(properties) {
|
|
26
|
-
const { bucketName, accountRegionScope = simAwsAccountRegionScopeFactory.make(), storage = new MemoryS3BucketStorage(), website = new SimS3BucketWebsite(), policy, publicAccessBlock = SimS3PublicAccessBlock.blockingAll(), notifications = SimS3NotificationConfiguration.empty(),
|
|
30
|
+
const { bucketName, accountRegionScope = simAwsAccountRegionScopeFactory.make(), storage = new MemoryS3BucketStorage(), website = new SimS3BucketWebsite(), policy, publicAccessBlock = SimS3PublicAccessBlock.blockingAll(), notifications = SimS3NotificationConfiguration.empty(), lifecycle = SimS3LifecycleConfiguration.empty(), clock = new SimRealClock(), creationDate = clock.now(), } = properties;
|
|
27
31
|
validateS3BucketName(bucketName);
|
|
28
32
|
this.bucketName = bucketName;
|
|
29
33
|
this.accountRegionScope = accountRegionScope;
|
|
34
|
+
this.clock = clock;
|
|
30
35
|
this.storage = storage;
|
|
31
36
|
this.website = website;
|
|
32
37
|
this.policy = policy;
|
|
33
38
|
this.publicAccessBlock = publicAccessBlock;
|
|
34
39
|
this.notifications = notifications;
|
|
40
|
+
this.lifecycle = lifecycle;
|
|
35
41
|
this.creationDate = creationDate;
|
|
36
42
|
}
|
|
37
43
|
/**
|
|
@@ -42,15 +48,18 @@ export class SimS3Bucket {
|
|
|
42
48
|
}
|
|
43
49
|
/**
|
|
44
50
|
* Get a simulated S3 Object from storage.
|
|
51
|
+
*
|
|
52
|
+
* An Object a lifecycle rule has expired goes on the way past. Every read of
|
|
53
|
+
* it then finds the key empty.
|
|
45
54
|
*/
|
|
46
55
|
async getObject(key) {
|
|
47
|
-
return await this.storage.getObject(key);
|
|
56
|
+
return await this.sweep().object(await this.storage.getObject(key));
|
|
48
57
|
}
|
|
49
58
|
/**
|
|
50
59
|
* List simulated S3 Objects from storage.
|
|
51
60
|
*/
|
|
52
61
|
async listObjects(prefix) {
|
|
53
|
-
return await this.storage.listObjects(prefix);
|
|
62
|
+
return await this.sweep().objects(await this.storage.listObjects(prefix));
|
|
54
63
|
}
|
|
55
64
|
/**
|
|
56
65
|
* Remove a simulated S3 Object from storage.
|
|
@@ -72,6 +81,8 @@ export class SimS3Bucket {
|
|
|
72
81
|
* completing the upload puts anything under a key.
|
|
73
82
|
*/
|
|
74
83
|
getMultipartUploads() {
|
|
84
|
+
const now = this.clock.now();
|
|
85
|
+
this.multipartUploads.discardAbandoned((upload) => this.lifecycle.abandons(upload, now));
|
|
75
86
|
return this.multipartUploads;
|
|
76
87
|
}
|
|
77
88
|
/**
|
|
@@ -160,6 +171,30 @@ export class SimS3Bucket {
|
|
|
160
171
|
getNotifications() {
|
|
161
172
|
return this.notifications;
|
|
162
173
|
}
|
|
174
|
+
/**
|
|
175
|
+
* Replace this Bucket's lifecycle configuration.
|
|
176
|
+
*
|
|
177
|
+
* Real S3 holds one configuration per Bucket rather than a list of them, so
|
|
178
|
+
* this replaces what was there instead of adding to it.
|
|
179
|
+
*/
|
|
180
|
+
configureLifecycle(lifecycle) {
|
|
181
|
+
this.lifecycle = lifecycle;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Get this Bucket's lifecycle configuration.
|
|
185
|
+
*/
|
|
186
|
+
getLifecycle() {
|
|
187
|
+
return this.lifecycle;
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Remove this Bucket's lifecycle configuration.
|
|
191
|
+
*
|
|
192
|
+
* Real S3 DeleteBucketLifecycle is idempotent, so this reports nothing about
|
|
193
|
+
* whether there were rules to remove.
|
|
194
|
+
*/
|
|
195
|
+
deleteLifecycle() {
|
|
196
|
+
this.lifecycle = SimS3LifecycleConfiguration.empty();
|
|
197
|
+
}
|
|
163
198
|
/**
|
|
164
199
|
* Get the simulated AWS account Region scope for this Bucket.
|
|
165
200
|
*/
|
|
@@ -172,5 +207,9 @@ export class SimS3Bucket {
|
|
|
172
207
|
getWebsiteUrl() {
|
|
173
208
|
return simS3BucketWebsiteUrl(this.bucketName, this.accountRegionScope, this.website);
|
|
174
209
|
}
|
|
210
|
+
/** What this Bucket's rules have expired, as they stand at this moment. */
|
|
211
|
+
sweep() {
|
|
212
|
+
return new SimS3LifecycleSweep(this.storage, this.lifecycle, this.clock.now());
|
|
213
|
+
}
|
|
175
214
|
}
|
|
176
215
|
//# sourceMappingURL=sim-s3-bucket.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sim-s3-bucket.js","sourceRoot":"","sources":["../../../../src/service/s3/bucket/sim-s3-bucket.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sim-s3-bucket.js","sourceRoot":"","sources":["../../../../src/service/s3/bucket/sim-s3-bucket.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { SimCfnTemplateValueRecord } from "../../../../cloudformation/template/value/sim-cfn-template-value.js";
|
|
2
|
+
import type { SimS3LifecycleConfiguration } from "../../../command/put-bucket-lifecycle-configuration/put-bucket-lifecycle-configuration.command.js";
|
|
3
|
+
/**
|
|
4
|
+
* Reads the `LifecycleConfiguration` property of an AWS::S3::Bucket Resource
|
|
5
|
+
* into a PutBucketLifecycleConfiguration request.
|
|
6
|
+
*
|
|
7
|
+
* A rule field this reader has no translation for is carried across unchanged
|
|
8
|
+
* rather than dropped or refused. Dropping it would deploy a Bucket whose
|
|
9
|
+
* rules read back shorter than the template asked for, and refusing it would
|
|
10
|
+
* fail a Stack over a field nothing in the simulation acts on anyway.
|
|
11
|
+
*/
|
|
12
|
+
export declare class SimCfnS3BucketLifecycleConfiguration {
|
|
13
|
+
private readonly properties;
|
|
14
|
+
private readonly shape;
|
|
15
|
+
constructor(logicalId: string, properties: SimCfnTemplateValueRecord);
|
|
16
|
+
/**
|
|
17
|
+
* The configuration to apply, or nothing when the Resource declares none.
|
|
18
|
+
*
|
|
19
|
+
* A configuration that is there but is not the shape it should be fails the
|
|
20
|
+
* Resource. Read as nothing, it would deploy a Bucket whose rules a test
|
|
21
|
+
* then finds missing without being told why.
|
|
22
|
+
*/
|
|
23
|
+
read(): SimS3LifecycleConfiguration | undefined;
|
|
24
|
+
private readRule;
|
|
25
|
+
/**
|
|
26
|
+
* The three flattened expiry fields, gathered under the one the request
|
|
27
|
+
* carries. A rule stating none of them keeps no `Expiration` at all.
|
|
28
|
+
*/
|
|
29
|
+
private expiration;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=sim-cfn-s3-bucket-lifecycle-configuration.d.ts.map
|
package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-configuration.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-cfn-s3-bucket-lifecycle-configuration.d.ts","sourceRoot":"","sources":["../../../../../../src/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-configuration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,yBAAyB,EAC1B,MAAM,qEAAqE,CAAC;AAE7E,OAAO,KAAK,EACV,2BAA2B,EAE5B,MAAM,mGAAmG,CAAC;AAS3G;;;;;;;;GAQG;AACH,qBAAa,oCAAoC;IAC/C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA4B;IACvD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAmB;IAEzC,YAAY,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,yBAAyB,EAKnE;IAED;;;;;;OAMG;IACH,IAAI,IAAI,2BAA2B,GAAG,SAAS,CAgB9C;IAED,OAAO,CAAC,QAAQ;IAsBhB;;;OAGG;IACH,OAAO,CAAC,UAAU;CAWnB"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { SimCfnValueShape } from "../../../../cloudformation/template/value/sim-cfn-value-shape.js";
|
|
2
|
+
import { s3BucketResourceError } from "../error/sim-cfn-s3-bucket-error.js";
|
|
3
|
+
import { simCfnS3CarriedRuleFields, simCfnS3LifecycleDate, simCfnS3StatedFields, } from "./sim-cfn-s3-bucket-lifecycle-fields.js";
|
|
4
|
+
import { readSimCfnS3LifecycleTransitions } from "./sim-cfn-s3-bucket-lifecycle-transitions.js";
|
|
5
|
+
/**
|
|
6
|
+
* Reads the `LifecycleConfiguration` property of an AWS::S3::Bucket Resource
|
|
7
|
+
* into a PutBucketLifecycleConfiguration request.
|
|
8
|
+
*
|
|
9
|
+
* A rule field this reader has no translation for is carried across unchanged
|
|
10
|
+
* rather than dropped or refused. Dropping it would deploy a Bucket whose
|
|
11
|
+
* rules read back shorter than the template asked for, and refusing it would
|
|
12
|
+
* fail a Stack over a field nothing in the simulation acts on anyway.
|
|
13
|
+
*/
|
|
14
|
+
export class SimCfnS3BucketLifecycleConfiguration {
|
|
15
|
+
properties;
|
|
16
|
+
shape;
|
|
17
|
+
constructor(logicalId, properties) {
|
|
18
|
+
this.properties = properties;
|
|
19
|
+
this.shape = new SimCfnValueShape((reason) => s3BucketResourceError(logicalId, reason));
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* The configuration to apply, or nothing when the Resource declares none.
|
|
23
|
+
*
|
|
24
|
+
* A configuration that is there but is not the shape it should be fails the
|
|
25
|
+
* Resource. Read as nothing, it would deploy a Bucket whose rules a test
|
|
26
|
+
* then finds missing without being told why.
|
|
27
|
+
*/
|
|
28
|
+
read() {
|
|
29
|
+
const declared = this.properties["LifecycleConfiguration"];
|
|
30
|
+
if (declared === undefined) {
|
|
31
|
+
return undefined;
|
|
32
|
+
}
|
|
33
|
+
const configuration = this.shape.record(declared, "LifecycleConfiguration");
|
|
34
|
+
const rules = this.shape.list(configuration["Rules"] ?? [], "LifecycleConfiguration Rules");
|
|
35
|
+
return {
|
|
36
|
+
Rules: rules.map((rule, index) => this.readRule(rule, index)),
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
readRule(declared, index) {
|
|
40
|
+
const path = `LifecycleConfiguration Rules[${index}]`;
|
|
41
|
+
const rule = this.shape.record(declared, path);
|
|
42
|
+
return {
|
|
43
|
+
...simCfnS3CarriedRuleFields(rule),
|
|
44
|
+
...simCfnS3StatedFields({
|
|
45
|
+
ID: rule["Id"],
|
|
46
|
+
Expiration: this.expiration(rule),
|
|
47
|
+
Transitions: readSimCfnS3LifecycleTransitions({
|
|
48
|
+
shape: this.shape,
|
|
49
|
+
listed: rule["Transitions"],
|
|
50
|
+
singular: rule["Transition"],
|
|
51
|
+
path,
|
|
52
|
+
}),
|
|
53
|
+
}),
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* The three flattened expiry fields, gathered under the one the request
|
|
58
|
+
* carries. A rule stating none of them keeps no `Expiration` at all.
|
|
59
|
+
*/
|
|
60
|
+
expiration(rule) {
|
|
61
|
+
const expiration = {
|
|
62
|
+
Date: simCfnS3LifecycleDate(rule["ExpirationDate"]),
|
|
63
|
+
Days: rule["ExpirationInDays"],
|
|
64
|
+
ExpiredObjectDeleteMarker: rule["ExpiredObjectDeleteMarker"],
|
|
65
|
+
};
|
|
66
|
+
return simCfnS3StatedFields(expiration);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=sim-cfn-s3-bucket-lifecycle-configuration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-cfn-s3-bucket-lifecycle-configuration.js","sourceRoot":"","sources":["../../../../../../src/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-configuration.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kEAAkE,CAAC;AAKpG,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EACL,yBAAyB,EACzB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,gCAAgC,EAAE,MAAM,8CAA8C,CAAC;AAEhG;;;;;;;;GAQG;AACH,MAAM,OAAO,oCAAoC;IAC9B,UAAU,CAA4B;IACtC,KAAK,CAAmB;IAEzC,YAAY,SAAiB,EAAE,UAAqC;QAClE,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,IAAI,gBAAgB,CAAC,CAAC,MAAM,EAAE,EAAE,CAC3C,qBAAqB,CAAC,SAAS,EAAE,MAAM,CAAC,CACzC,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,IAAI;QACF,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,wBAAwB,CAAC,CAAC;QAE3D,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,wBAAwB,CAAC,CAAC;QAC5E,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAC3B,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,EAC5B,8BAA8B,CAC/B,CAAC;QAEF,OAAO;YACL,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;SAC9D,CAAC;IACJ,CAAC;IAEO,QAAQ,CACd,QAA6B,EAC7B,KAAa;QAEb,MAAM,IAAI,GAAG,gCAAgC,KAAK,GAAG,CAAC;QACtD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAE/C,OAAO;YACL,GAAG,yBAAyB,CAAC,IAAI,CAAC;YAClC,GAAG,oBAAoB,CAAC;gBACtB,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC;gBACd,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;gBACjC,WAAW,EAAE,gCAAgC,CAAC;oBAC5C,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC;oBAC3B,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC;oBAC5B,IAAI;iBACL,CAAC;aACH,CAAC;SACH,CAAC;IACJ,CAAC;IAED;;;OAGG;IACK,UAAU,CAChB,IAA+B;QAE/B,MAAM,UAAU,GAAG;YACjB,IAAI,EAAE,qBAAqB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACnD,IAAI,EAAE,IAAI,CAAC,kBAAkB,CAAC;YAC9B,yBAAyB,EAAE,IAAI,CAAC,2BAA2B,CAAC;SAC7D,CAAC;QAEF,OAAO,oBAAoB,CAAC,UAAU,CAAC,CAAC;IAC1C,CAAC;CACF"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { SimCfnTemplateValue, SimCfnTemplateValueRecord } from "../../../../cloudformation/template/value/sim-cfn-template-value.js";
|
|
2
|
+
/**
|
|
3
|
+
* The rule fields CloudFormation and the SDK spell differently.
|
|
4
|
+
*
|
|
5
|
+
* CloudFormation flattens an expiry onto the rule and names a transition's
|
|
6
|
+
* timing after it, where the request nests both. Everything absent from here,
|
|
7
|
+
* `Status`, `Prefix`, `AbortIncompleteMultipartUpload`, `TagFilters` and the
|
|
8
|
+
* object size bounds among them, is spelled the same way in both and goes
|
|
9
|
+
* through untouched.
|
|
10
|
+
*/
|
|
11
|
+
export declare const simCfnS3TranslatedLifecycleFields: ReadonlySet<string>;
|
|
12
|
+
/**
|
|
13
|
+
* A timestamp as the request wants it. CloudFormation states one as a string,
|
|
14
|
+
* and anything else is left as it came so the shape check that follows sees
|
|
15
|
+
* what the template actually said.
|
|
16
|
+
*/
|
|
17
|
+
export declare function simCfnS3LifecycleDate(value: SimCfnTemplateValue | undefined): SimCfnTemplateValue | undefined;
|
|
18
|
+
/**
|
|
19
|
+
* The fields that were stated, or nothing at all when none of them were.
|
|
20
|
+
*/
|
|
21
|
+
export declare function simCfnS3StatedFields(fields: Record<string, SimCfnTemplateValue | undefined>): SimCfnTemplateValueRecord | undefined;
|
|
22
|
+
/**
|
|
23
|
+
* The fields of a rule this reader has no translation for.
|
|
24
|
+
*
|
|
25
|
+
* Carried across unchanged rather than dropped or refused. Dropping one would
|
|
26
|
+
* deploy a Bucket whose rules read back shorter than the template asked for,
|
|
27
|
+
* and refusing one would fail a Stack over a field nothing in the simulation
|
|
28
|
+
* acts on anyway.
|
|
29
|
+
*/
|
|
30
|
+
export declare function simCfnS3CarriedRuleFields(rule: SimCfnTemplateValueRecord): SimCfnTemplateValueRecord;
|
|
31
|
+
//# sourceMappingURL=sim-cfn-s3-bucket-lifecycle-fields.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-cfn-s3-bucket-lifecycle-fields.d.ts","sourceRoot":"","sources":["../../../../../../src/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-fields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,yBAAyB,EAC1B,MAAM,qEAAqE,CAAC;AAE7E;;;;;;;;GAQG;AACH,eAAO,MAAM,iCAAiC,EAAE,WAAW,CAAC,MAAM,CAOhE,CAAC;AAEH;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,mBAAmB,GAAG,SAAS,GACrC,mBAAmB,GAAG,SAAS,CAMjC;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,GAAG,SAAS,CAAC,GACtD,yBAAyB,GAAG,SAAS,CAUvC;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,yBAAyB,GAC9B,yBAAyB,CAM3B"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The rule fields CloudFormation and the SDK spell differently.
|
|
3
|
+
*
|
|
4
|
+
* CloudFormation flattens an expiry onto the rule and names a transition's
|
|
5
|
+
* timing after it, where the request nests both. Everything absent from here,
|
|
6
|
+
* `Status`, `Prefix`, `AbortIncompleteMultipartUpload`, `TagFilters` and the
|
|
7
|
+
* object size bounds among them, is spelled the same way in both and goes
|
|
8
|
+
* through untouched.
|
|
9
|
+
*/
|
|
10
|
+
export const simCfnS3TranslatedLifecycleFields = new Set([
|
|
11
|
+
"Id",
|
|
12
|
+
"ExpirationDate",
|
|
13
|
+
"ExpirationInDays",
|
|
14
|
+
"ExpiredObjectDeleteMarker",
|
|
15
|
+
"Transition",
|
|
16
|
+
"Transitions",
|
|
17
|
+
]);
|
|
18
|
+
/**
|
|
19
|
+
* A timestamp as the request wants it. CloudFormation states one as a string,
|
|
20
|
+
* and anything else is left as it came so the shape check that follows sees
|
|
21
|
+
* what the template actually said.
|
|
22
|
+
*/
|
|
23
|
+
export function simCfnS3LifecycleDate(value) {
|
|
24
|
+
if (typeof value !== "string") {
|
|
25
|
+
return value;
|
|
26
|
+
}
|
|
27
|
+
return new Date(value);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* The fields that were stated, or nothing at all when none of them were.
|
|
31
|
+
*/
|
|
32
|
+
export function simCfnS3StatedFields(fields) {
|
|
33
|
+
const stated = Object.entries(fields).filter(([, value]) => value !== undefined);
|
|
34
|
+
if (stated.length === 0) {
|
|
35
|
+
return undefined;
|
|
36
|
+
}
|
|
37
|
+
return Object.fromEntries(stated);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* The fields of a rule this reader has no translation for.
|
|
41
|
+
*
|
|
42
|
+
* Carried across unchanged rather than dropped or refused. Dropping one would
|
|
43
|
+
* deploy a Bucket whose rules read back shorter than the template asked for,
|
|
44
|
+
* and refusing one would fail a Stack over a field nothing in the simulation
|
|
45
|
+
* acts on anyway.
|
|
46
|
+
*/
|
|
47
|
+
export function simCfnS3CarriedRuleFields(rule) {
|
|
48
|
+
return Object.fromEntries(Object.entries(rule).filter(([name]) => !simCfnS3TranslatedLifecycleFields.has(name)));
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=sim-cfn-s3-bucket-lifecycle-fields.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-cfn-s3-bucket-lifecycle-fields.js","sourceRoot":"","sources":["../../../../../../src/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-fields.ts"],"names":[],"mappings":"AAKA;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAwB,IAAI,GAAG,CAAC;IAC5E,IAAI;IACJ,gBAAgB;IAChB,kBAAkB;IAClB,2BAA2B;IAC3B,YAAY;IACZ,aAAa;CACd,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CACnC,KAAsC;IAEtC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,IAAI,CAAC,KAAK,CAAmC,CAAC;AAC3D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAClC,MAAuD;IAEvD,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAC1C,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CACnC,CAAC;IAEF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAA8B,CAAC;AACjE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,yBAAyB,CACvC,IAA+B;IAE/B,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CACzB,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,iCAAiC,CAAC,GAAG,CAAC,IAAI,CAAC,CACzD,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { SimCfnTemplateValue } from "../../../../cloudformation/template/value/sim-cfn-template-value.js";
|
|
2
|
+
import type { SimCfnValueShape } from "../../../../cloudformation/template/value/sim-cfn-value-shape.js";
|
|
3
|
+
interface SimCfnS3LifecycleTransitionsProperties {
|
|
4
|
+
readonly shape: SimCfnValueShape;
|
|
5
|
+
readonly listed: SimCfnTemplateValue | undefined;
|
|
6
|
+
readonly singular: SimCfnTemplateValue | undefined;
|
|
7
|
+
readonly path: string;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Reads the storage class transitions of one AWS::S3::Bucket lifecycle rule.
|
|
11
|
+
*
|
|
12
|
+
* A template may state them as a `Transitions` list, as a singular
|
|
13
|
+
* `Transition`, or as both, and CloudFormation accepts all three. They arrive
|
|
14
|
+
* as the one list the request carries. Each one is timed by `Days` or `Date`
|
|
15
|
+
* where the template says `TransitionInDays` or `TransitionDate`.
|
|
16
|
+
*/
|
|
17
|
+
export declare function readSimCfnS3LifecycleTransitions(properties: SimCfnS3LifecycleTransitionsProperties): SimCfnTemplateValue[] | undefined;
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=sim-cfn-s3-bucket-lifecycle-transitions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-cfn-s3-bucket-lifecycle-transitions.d.ts","sourceRoot":"","sources":["../../../../../../src/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-transitions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qEAAqE,CAAC;AAC/G,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kEAAkE,CAAC;AAMzG,UAAU,sCAAsC;IAC9C,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,mBAAmB,GAAG,SAAS,CAAC;IACjD,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,GAAG,SAAS,CAAC;IACnD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;GAOG;AACH,wBAAgB,gCAAgC,CAC9C,UAAU,EAAE,sCAAsC,GACjD,mBAAmB,EAAE,GAAG,SAAS,CAwBnC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { simCfnS3LifecycleDate, simCfnS3StatedFields, } from "./sim-cfn-s3-bucket-lifecycle-fields.js";
|
|
2
|
+
/**
|
|
3
|
+
* Reads the storage class transitions of one AWS::S3::Bucket lifecycle rule.
|
|
4
|
+
*
|
|
5
|
+
* A template may state them as a `Transitions` list, as a singular
|
|
6
|
+
* `Transition`, or as both, and CloudFormation accepts all three. They arrive
|
|
7
|
+
* as the one list the request carries. Each one is timed by `Days` or `Date`
|
|
8
|
+
* where the template says `TransitionInDays` or `TransitionDate`.
|
|
9
|
+
*/
|
|
10
|
+
export function readSimCfnS3LifecycleTransitions(properties) {
|
|
11
|
+
const { shape, listed, singular, path } = properties;
|
|
12
|
+
const declared = listed === undefined ? [] : shape.list(listed, `${path} Transitions`);
|
|
13
|
+
const all = singular === undefined ? declared : [...declared, singular];
|
|
14
|
+
if (all.length === 0) {
|
|
15
|
+
return undefined;
|
|
16
|
+
}
|
|
17
|
+
return all.map((transition, position) => {
|
|
18
|
+
const { TransitionDate, TransitionInDays, ...carried } = shape.record(transition, `${path} Transitions[${position}]`);
|
|
19
|
+
return {
|
|
20
|
+
...carried,
|
|
21
|
+
...simCfnS3StatedFields({
|
|
22
|
+
Date: simCfnS3LifecycleDate(TransitionDate),
|
|
23
|
+
Days: TransitionInDays,
|
|
24
|
+
}),
|
|
25
|
+
};
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=sim-cfn-s3-bucket-lifecycle-transitions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-cfn-s3-bucket-lifecycle-transitions.js","sourceRoot":"","sources":["../../../../../../src/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-transitions.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,yCAAyC,CAAC;AASjD;;;;;;;GAOG;AACH,MAAM,UAAU,gCAAgC,CAC9C,UAAkD;IAElD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC;IACrD,MAAM,QAAQ,GACZ,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,cAAc,CAAC,CAAC;IACxE,MAAM,GAAG,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAExE,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,EAAE;QACtC,MAAM,EAAE,cAAc,EAAE,gBAAgB,EAAE,GAAG,OAAO,EAAE,GAAG,KAAK,CAAC,MAAM,CACnE,UAAU,EACV,GAAG,IAAI,gBAAgB,QAAQ,GAAG,CACnC,CAAC;QAEF,OAAO;YACL,GAAG,OAAO;YACV,GAAG,oBAAoB,CAAC;gBACtB,IAAI,EAAE,qBAAqB,CAAC,cAAc,CAAC;gBAC3C,IAAI,EAAE,gBAAgB;aACvB,CAAC;SACH,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sim-cfn-s3-bucket-configurator.d.ts","sourceRoot":"","sources":["../../../../../src/service/s3/cfn/bucket/sim-cfn-s3-bucket-configurator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sDAAsD,CAAC;AAC3F,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,kEAAkE,CAAC;AAClH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"sim-cfn-s3-bucket-configurator.d.ts","sourceRoot":"","sources":["../../../../../src/service/s3/cfn/bucket/sim-cfn-s3-bucket-configurator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sDAAsD,CAAC;AAC3F,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,kEAAkE,CAAC;AAClH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAM7C,UAAU,oCAAoC;IAC5C,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,QAAQ,CAAC,UAAU,EAAE,yBAAyB,CAAC;IAC/C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;GAMG;AACH,qBAAa,0BAA0B;IACrC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiB;IAC1C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA4B;IACvD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IAEpC,YAAY,UAAU,EAAE,oCAAoC,EAK3D;IAED;;;;;;OAMG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAK/B;YAEa,gBAAgB;YAehB,qBAAqB;YAkBrB,kBAAkB;YAelB,sBAAsB;CAkBrC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { SimCfnS3BucketLifecycleConfiguration } from "./lifecycle/sim-cfn-s3-bucket-lifecycle-configuration.js";
|
|
1
2
|
import { SimCfnS3BucketNotificationConfiguration } from "./notification/sim-cfn-s3-bucket-notification-configuration.js";
|
|
2
3
|
import { SimCfnS3BucketPublicAccessConfiguration } from "./public-access/sim-cfn-s3-bucket-public-access-configuration.js";
|
|
3
4
|
import { SimCfnS3BucketWebsiteConfiguration } from "./website/sim-cfn-s3-bucket-website-configuration.js";
|
|
@@ -29,6 +30,7 @@ export class SimCfnS3BucketConfigurator {
|
|
|
29
30
|
async configure() {
|
|
30
31
|
await this.configureWebsite();
|
|
31
32
|
await this.configurePublicAccess();
|
|
33
|
+
await this.configureLifecycle();
|
|
32
34
|
await this.configureNotifications();
|
|
33
35
|
}
|
|
34
36
|
async configureWebsite() {
|
|
@@ -52,6 +54,15 @@ export class SimCfnS3BucketConfigurator {
|
|
|
52
54
|
},
|
|
53
55
|
});
|
|
54
56
|
}
|
|
57
|
+
async configureLifecycle() {
|
|
58
|
+
const config = new SimCfnS3BucketLifecycleConfiguration(this.resource.logicalId, this.properties).read();
|
|
59
|
+
if (config === undefined) {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
await this.simS3.putBucketLifecycleConfiguration({
|
|
63
|
+
input: { Bucket: this.bucketName, LifecycleConfiguration: config },
|
|
64
|
+
});
|
|
65
|
+
}
|
|
55
66
|
async configureNotifications() {
|
|
56
67
|
const declared = this.properties["NotificationConfiguration"];
|
|
57
68
|
if (declared === undefined) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sim-cfn-s3-bucket-configurator.js","sourceRoot":"","sources":["../../../../../src/service/s3/cfn/bucket/sim-cfn-s3-bucket-configurator.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,uCAAuC,EAAE,MAAM,gEAAgE,CAAC;AACzH,OAAO,EAAE,uCAAuC,EAAE,MAAM,kEAAkE,CAAC;AAC3H,OAAO,EAAE,kCAAkC,EAAE,MAAM,sDAAsD,CAAC;AAS1G;;;;;;GAMG;AACH,MAAM,OAAO,0BAA0B;IACpB,KAAK,CAAQ;IACb,QAAQ,CAAiB;IACzB,UAAU,CAA4B;IACtC,UAAU,CAAS;IAEpC,YAAY,UAAgD;QAC1D,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;QAC9B,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;QACpC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;QACxC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;IAC1C,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,SAAS;QACb,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC9B,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;QACnC,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC;IACtC,CAAC;IAEO,KAAK,CAAC,gBAAgB;QAC5B,MAAM,MAAM,GAAG,IAAI,kCAAkC,CACnD,IAAI,CAAC,QAAQ,CAAC,SAAS,EACvB,IAAI,CAAC,UAAU,CAChB,CAAC,IAAI,EAAE,CAAC;QAET,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO;QACT,CAAC;QAED,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC;YAChC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,oBAAoB,EAAE,MAAM,EAAE;SACjE,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,qBAAqB;QACjC,MAAM,MAAM,GAAG,IAAI,uCAAuC,CACxD,IAAI,CAAC,QAAQ,CAAC,SAAS,EACvB,IAAI,CAAC,UAAU,CAChB,CAAC,IAAI,EAAE,CAAC;QAET,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO;QACT,CAAC;QAED,MAAM,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC;YACpC,KAAK,EAAE;gBACL,MAAM,EAAE,IAAI,CAAC,UAAU;gBACvB,8BAA8B,EAAE,MAAM;aACvC;SACF,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,sBAAsB;QAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,2BAA2B,CAAC,CAAC;QAE9D,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,uCAAuC,CACxD,IAAI,CAAC,QAAQ,CAAC,SAAS,CACxB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEjB,MAAM,IAAI,CAAC,KAAK,CAAC,kCAAkC,CAAC;YAClD,KAAK,EAAE;gBACL,MAAM,EAAE,IAAI,CAAC,UAAU;gBACvB,yBAAyB,EAAE,MAAM;aAClC;SACF,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"sim-cfn-s3-bucket-configurator.js","sourceRoot":"","sources":["../../../../../src/service/s3/cfn/bucket/sim-cfn-s3-bucket-configurator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sim-cfn-s3-bucket-property-names.d.ts","sourceRoot":"","sources":["../../../../../src/service/s3/cfn/bucket/sim-cfn-s3-bucket-property-names.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,sBAAsB,EAAE,WAAW,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"sim-cfn-s3-bucket-property-names.d.ts","sourceRoot":"","sources":["../../../../../src/service/s3/cfn/bucket/sim-cfn-s3-bucket-property-names.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,sBAAsB,EAAE,WAAW,CAAC,MAAM,CAMrD,CAAC;AAEH;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,EAAE,WAAW,CAAC,MAAM,CAGjD,CAAC;AAEH;;;;;;;;;GASG;AACH,eAAO,MAAM,0BAA0B,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAuCjE,CAAC"}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const simulatedPropertyNames = new Set([
|
|
5
5
|
"BucketName",
|
|
6
|
+
"LifecycleConfiguration",
|
|
6
7
|
"NotificationConfiguration",
|
|
7
8
|
"PublicAccessBlockConfiguration",
|
|
8
9
|
"WebsiteConfiguration",
|
|
@@ -50,10 +51,6 @@ export const unsimulatedPropertyReasons = new Map([
|
|
|
50
51
|
"storage classes are not simulated, so nothing transitions between them",
|
|
51
52
|
],
|
|
52
53
|
["InventoryConfigurations", "Bucket inventory reports are not simulated"],
|
|
53
|
-
[
|
|
54
|
-
"LifecycleConfiguration",
|
|
55
|
-
"simulated S3 does not expire or transition Objects on a schedule",
|
|
56
|
-
],
|
|
57
54
|
["LoggingConfiguration", "server access logging is not simulated"],
|
|
58
55
|
["MetadataConfiguration", "Bucket metadata tables are not simulated"],
|
|
59
56
|
["MetadataTableConfiguration", "Bucket metadata tables are not simulated"],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sim-cfn-s3-bucket-property-names.js","sourceRoot":"","sources":["../../../../../src/service/s3/cfn/bucket/sim-cfn-s3-bucket-property-names.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAwB,IAAI,GAAG,CAAC;IACjE,YAAY;IACZ,2BAA2B;IAC3B,gCAAgC;IAChC,sBAAsB;CACvB,CAAC,CAAC;AAEH;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAwB,IAAI,GAAG,CAAC;IAC7D,kBAAkB;IAClB,MAAM;CACP,CAAC,CAAC;AAEH;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAgC,IAAI,GAAG,CAAC;IAC7E,CAAC,YAAY,EAAE,iDAAiD,CAAC;IACjE,CAAC,yBAAyB,EAAE,wCAAwC,CAAC;IACrE;QACE,eAAe;QACf,oEAAoE;YAClE,2CAA2C;KAC9C;IACD,CAAC,yBAAyB,EAAE,0CAA0C,CAAC;IACvE,CAAC,kBAAkB,EAAE,0CAA0C,CAAC;IAChE,CAAC,iBAAiB,EAAE,qCAAqC,CAAC;IAC1D;QACE,mBAAmB;QACnB,wEAAwE;KACzE;IACD;QACE,kCAAkC;QAClC,wEAAwE;KACzE;IACD,CAAC,yBAAyB,EAAE,4CAA4C,CAAC;IACzE
|
|
1
|
+
{"version":3,"file":"sim-cfn-s3-bucket-property-names.js","sourceRoot":"","sources":["../../../../../src/service/s3/cfn/bucket/sim-cfn-s3-bucket-property-names.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAwB,IAAI,GAAG,CAAC;IACjE,YAAY;IACZ,wBAAwB;IACxB,2BAA2B;IAC3B,gCAAgC;IAChC,sBAAsB;CACvB,CAAC,CAAC;AAEH;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAwB,IAAI,GAAG,CAAC;IAC7D,kBAAkB;IAClB,MAAM;CACP,CAAC,CAAC;AAEH;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAgC,IAAI,GAAG,CAAC;IAC7E,CAAC,YAAY,EAAE,iDAAiD,CAAC;IACjE,CAAC,yBAAyB,EAAE,wCAAwC,CAAC;IACrE;QACE,eAAe;QACf,oEAAoE;YAClE,2CAA2C;KAC9C;IACD,CAAC,yBAAyB,EAAE,0CAA0C,CAAC;IACvE,CAAC,kBAAkB,EAAE,0CAA0C,CAAC;IAChE,CAAC,iBAAiB,EAAE,qCAAqC,CAAC;IAC1D;QACE,mBAAmB;QACnB,wEAAwE;KACzE;IACD;QACE,kCAAkC;QAClC,wEAAwE;KACzE;IACD,CAAC,yBAAyB,EAAE,4CAA4C,CAAC;IACzE,CAAC,sBAAsB,EAAE,wCAAwC,CAAC;IAClE,CAAC,uBAAuB,EAAE,0CAA0C,CAAC;IACrE,CAAC,4BAA4B,EAAE,0CAA0C,CAAC;IAC1E,CAAC,uBAAuB,EAAE,8CAA8C,CAAC;IACzE;QACE,yBAAyB;QACzB,yEAAyE;KAC1E;IACD;QACE,mBAAmB;QACnB,yEAAyE;KAC1E;IACD,CAAC,mBAAmB,EAAE,6CAA6C,CAAC;IACpE,CAAC,0BAA0B,EAAE,qCAAqC,CAAC;IACnE;QACE,yBAAyB;QACzB,wEAAwE;YACtE,kEAAkE;KACrE;CACF,CAAC,CAAC"}
|
|
@@ -57,7 +57,7 @@ export class CreateBucketCommandHandler {
|
|
|
57
57
|
const bucket = new SimS3Bucket({
|
|
58
58
|
bucketName,
|
|
59
59
|
accountRegionScope: this.accountRegionScope,
|
|
60
|
-
|
|
60
|
+
clock: this.background,
|
|
61
61
|
});
|
|
62
62
|
this.buckets.set(bucketName, bucket);
|
|
63
63
|
this.s3GlobalRegistry.registerBucket(bucketName, this.accountRegionScope);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-bucket.handler.js","sourceRoot":"","sources":["../../../../../src/service/s3/command/create-bucket/create-bucket.handler.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AAGvE,OAAO,EAEL,eAAe,GAChB,MAAM,2CAA2C,CAAC;AACnD,OAAO,EAAE,2BAA2B,EAAE,MAAM,mEAAmE,CAAC;AAChH,OAAO,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAC;AACxF,OAAO,EACL,kBAAkB,GAEnB,MAAM,wDAAwD,CAAC;AAEhE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AAUjF;;;;GAIG;AACH,MAAM,OAAO,0BAA0B;IAIpB,kBAAkB,CAA2B;IAC7C,OAAO,CAA2B;IAClC,gBAAgB,CAAsB;IACtC,GAAG,CAA0B;IAC7B,UAAU,CAAsB;IAEjD,YAAY,UAAgD;QAC1D,MAAM,EACJ,kBAAkB,EAClB,OAAO,EACP,gBAAgB,EAChB,GAAG,GAAG,IAAI,kBAAkB,EAAE,EAC9B,UAAU,GAAG,IAAI,eAAe,EAAE,GACnC,GAAG,UAAU,CAAC;QACf,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;QAC7C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACzC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CACV,OAA+B,EAC/B,OAA6B;QAE7B,aAAa,CACX,OAAO,CAAC,KAAK,CAAC,MAAM,EACpB,2CAA2C,CAC5C,CAAC;QAEF,oEAAoE;QACpE,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;QAEjC,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC;QACxC,oBAAoB,CAAC,UAAU,CAAC,CAAC;QAEjC,MAAM,QAAQ,GAAG,gBAAgB,UAAU,EAAE,CAAC;QAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;YAClC,MAAM,EAAE,iBAAiB;YACzB,QAAQ;YACR,MAAM,EAAE,OAAO,EAAE,MAAM;YACvB,gBAAgB,EAAE,qBAAqB,CAAC,OAAO,CAAC;SACjD,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACtB,MAAM,IAAI,kBAAkB,CAAC;gBAC3B,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS;gBACpC,MAAM,EAAE,iBAAiB;gBACzB,QAAQ;aACT,CAAC,CAAC;QACL,CAAC;QAED,MAAM,2BAA2B,GAAG,IAAI,2BAA2B,CAAC;YAClE,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;SACxC,CAAC,CAAC;QACH,2BAA2B,CAAC,0BAA0B,CAAC,UAAU,CAAC,CAAC;QAEnE,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC;YAC7B,UAAU;YACV,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,
|
|
1
|
+
{"version":3,"file":"create-bucket.handler.js","sourceRoot":"","sources":["../../../../../src/service/s3/command/create-bucket/create-bucket.handler.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AAGvE,OAAO,EAEL,eAAe,GAChB,MAAM,2CAA2C,CAAC;AACnD,OAAO,EAAE,2BAA2B,EAAE,MAAM,mEAAmE,CAAC;AAChH,OAAO,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAC;AACxF,OAAO,EACL,kBAAkB,GAEnB,MAAM,wDAAwD,CAAC;AAEhE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AAUjF;;;;GAIG;AACH,MAAM,OAAO,0BAA0B;IAIpB,kBAAkB,CAA2B;IAC7C,OAAO,CAA2B;IAClC,gBAAgB,CAAsB;IACtC,GAAG,CAA0B;IAC7B,UAAU,CAAsB;IAEjD,YAAY,UAAgD;QAC1D,MAAM,EACJ,kBAAkB,EAClB,OAAO,EACP,gBAAgB,EAChB,GAAG,GAAG,IAAI,kBAAkB,EAAE,EAC9B,UAAU,GAAG,IAAI,eAAe,EAAE,GACnC,GAAG,UAAU,CAAC;QACf,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;QAC7C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACzC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CACV,OAA+B,EAC/B,OAA6B;QAE7B,aAAa,CACX,OAAO,CAAC,KAAK,CAAC,MAAM,EACpB,2CAA2C,CAC5C,CAAC;QAEF,oEAAoE;QACpE,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;QAEjC,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC;QACxC,oBAAoB,CAAC,UAAU,CAAC,CAAC;QAEjC,MAAM,QAAQ,GAAG,gBAAgB,UAAU,EAAE,CAAC;QAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;YAClC,MAAM,EAAE,iBAAiB;YACzB,QAAQ;YACR,MAAM,EAAE,OAAO,EAAE,MAAM;YACvB,gBAAgB,EAAE,qBAAqB,CAAC,OAAO,CAAC;SACjD,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACtB,MAAM,IAAI,kBAAkB,CAAC;gBAC3B,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS;gBACpC,MAAM,EAAE,iBAAiB;gBACzB,QAAQ;aACT,CAAC,CAAC;QACL,CAAC;QAED,MAAM,2BAA2B,GAAG,IAAI,2BAA2B,CAAC;YAClE,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;SACxC,CAAC,CAAC;QACH,2BAA2B,CAAC,0BAA0B,CAAC,UAAU,CAAC,CAAC;QAEnE,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC;YAC7B,UAAU;YACV,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,KAAK,EAAE,IAAI,CAAC,UAAU;SACvB,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QACrC,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAE1E,OAAO;YACL,SAAS,EAAE,QAAQ;YACnB,QAAQ,EAAE,IAAI,UAAU,EAAE;YAC1B,SAAS,EAAE,EAAE;SACd,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { SimResponseMetadata } from "../../../aws/metadata/response-metadata.type.js";
|
|
2
|
+
/**
|
|
3
|
+
* Minimal structural sim S3 DeleteBucketLifecycle command.
|
|
4
|
+
*/
|
|
5
|
+
export interface SimDeleteBucketLifecycleCommand {
|
|
6
|
+
readonly input: SimDeleteBucketLifecycleCommandInput;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Minimal structural sim S3 DeleteBucketLifecycle input.
|
|
10
|
+
*/
|
|
11
|
+
export interface SimDeleteBucketLifecycleCommandInput {
|
|
12
|
+
readonly Bucket?: string | undefined;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Minimal structural sim S3 DeleteBucketLifecycle output.
|
|
16
|
+
*/
|
|
17
|
+
export interface SimDeleteBucketLifecycleCommandOutput {
|
|
18
|
+
readonly $metadata: SimResponseMetadata;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=delete-bucket-lifecycle.command.d.ts.map
|
package/dist/service/s3/command/delete-bucket-lifecycle/delete-bucket-lifecycle.command.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete-bucket-lifecycle.command.d.ts","sourceRoot":"","sources":["../../../../../src/service/s3/command/delete-bucket-lifecycle/delete-bucket-lifecycle.command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iDAAiD,CAAC;AAE3F;;GAEG;AACH,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,KAAK,EAAE,oCAAoC,CAAC;CACtD;AAED;;GAEG;AACH,MAAM,WAAW,oCAAoC;IACnD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,qCAAqC;IACpD,QAAQ,CAAC,SAAS,EAAE,mBAAmB,CAAC;CACzC"}
|
package/dist/service/s3/command/delete-bucket-lifecycle/delete-bucket-lifecycle.command.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete-bucket-lifecycle.command.js","sourceRoot":"","sources":["../../../../../src/service/s3/command/delete-bucket-lifecycle/delete-bucket-lifecycle.command.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { CommandHandler } from "../../../../command/command-handler.js";
|
|
2
|
+
import { type BackgroundScheduler } from "../../../../util/background/background.js";
|
|
3
|
+
import type { SimS3RequestOptions } from "../sim-s3-request-options.js";
|
|
4
|
+
import type { SimIamInterServiceAuthZ } from "../../../iam/authorize/sim-iam-inter-service-auth-z.js";
|
|
5
|
+
import type { SimS3Bucket, SimS3BucketName } from "../../bucket/sim-s3-bucket.js";
|
|
6
|
+
import type { SimDeleteBucketLifecycleCommand, SimDeleteBucketLifecycleCommandOutput } from "./delete-bucket-lifecycle.command.js";
|
|
7
|
+
interface DeleteBucketLifecycleHandlerProperties {
|
|
8
|
+
readonly buckets: Map<SimS3BucketName, SimS3Bucket>;
|
|
9
|
+
readonly iam?: SimIamInterServiceAuthZ;
|
|
10
|
+
readonly background?: BackgroundScheduler;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Simulated S3 DeleteBucketLifecycleCommand handler.
|
|
14
|
+
*/
|
|
15
|
+
export declare class DeleteBucketLifecycleCommandHandler implements CommandHandler<SimDeleteBucketLifecycleCommand, SimDeleteBucketLifecycleCommandOutput> {
|
|
16
|
+
private readonly buckets;
|
|
17
|
+
private readonly authorizer;
|
|
18
|
+
private readonly background;
|
|
19
|
+
constructor(properties: DeleteBucketLifecycleHandlerProperties);
|
|
20
|
+
/**
|
|
21
|
+
* Authorize and remove a Bucket's lifecycle rules.
|
|
22
|
+
*
|
|
23
|
+
* Real S3 DeleteBucketLifecycle is idempotent, so a Bucket that had no rules
|
|
24
|
+
* to remove is answered the same way as one that did.
|
|
25
|
+
*/
|
|
26
|
+
handle(command: SimDeleteBucketLifecycleCommand, options?: SimS3RequestOptions): Promise<SimDeleteBucketLifecycleCommandOutput>;
|
|
27
|
+
}
|
|
28
|
+
export {};
|
|
29
|
+
//# sourceMappingURL=delete-bucket-lifecycle.handler.d.ts.map
|
package/dist/service/s3/command/delete-bucket-lifecycle/delete-bucket-lifecycle.handler.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete-bucket-lifecycle.handler.d.ts","sourceRoot":"","sources":["../../../../../src/service/s3/command/delete-bucket-lifecycle/delete-bucket-lifecycle.handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,EACL,KAAK,mBAAmB,EAEzB,MAAM,2CAA2C,CAAC;AAEnD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wDAAwD,CAAC;AAEtG,OAAO,KAAK,EACV,WAAW,EACX,eAAe,EAChB,MAAM,+BAA+B,CAAC;AAGvC,OAAO,KAAK,EACV,+BAA+B,EAC/B,qCAAqC,EACtC,MAAM,sCAAsC,CAAC;AAE9C,UAAU,sCAAsC;IAC9C,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;IACpD,QAAQ,CAAC,GAAG,CAAC,EAAE,uBAAuB,CAAC;IACvC,QAAQ,CAAC,UAAU,CAAC,EAAE,mBAAmB,CAAC;CAC3C;AAED;;GAEG;AACH,qBAAa,mCAAoC,YAAW,cAAc,CACxE,+BAA+B,EAC/B,qCAAqC,CACtC;IACC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoC;IAC5D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA2B;IACtD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAsB;IAEjD,YAAY,UAAU,EAAE,sCAAsC,EAU7D;IAED;;;;;OAKG;IACG,MAAM,CACV,OAAO,EAAE,+BAA+B,EACxC,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,qCAAqC,CAAC,CAkBhD;CACF"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { BackgroundTasks, } from "../../../../util/background/background.js";
|
|
2
|
+
import { assertDefined } from "../../../../util/type-guard/defined.js";
|
|
3
|
+
import { SimIamAllowAllAuth } from "../../../iam/authorize/sim-iam-inter-service-auth-z.js";
|
|
4
|
+
import { SimS3LifecycleAuthorizer } from "../lifecycle/sim-s3-lifecycle-authorizer.js";
|
|
5
|
+
import { requireSimS3Bucket } from "../require-sim-s3-bucket.js";
|
|
6
|
+
/**
|
|
7
|
+
* Simulated S3 DeleteBucketLifecycleCommand handler.
|
|
8
|
+
*/
|
|
9
|
+
export class DeleteBucketLifecycleCommandHandler {
|
|
10
|
+
buckets;
|
|
11
|
+
authorizer;
|
|
12
|
+
background;
|
|
13
|
+
constructor(properties) {
|
|
14
|
+
const { buckets, iam = new SimIamAllowAllAuth(), background = new BackgroundTasks(), } = properties;
|
|
15
|
+
this.buckets = buckets;
|
|
16
|
+
this.authorizer = new SimS3LifecycleAuthorizer({ iam });
|
|
17
|
+
this.background = background;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Authorize and remove a Bucket's lifecycle rules.
|
|
21
|
+
*
|
|
22
|
+
* Real S3 DeleteBucketLifecycle is idempotent, so a Bucket that had no rules
|
|
23
|
+
* to remove is answered the same way as one that did.
|
|
24
|
+
*/
|
|
25
|
+
async handle(command, options) {
|
|
26
|
+
assertDefined(command.input.Bucket, "DeleteBucketLifecycleCommand.input.Bucket");
|
|
27
|
+
const bucketName = command.input.Bucket;
|
|
28
|
+
const bucket = requireSimS3Bucket(this.buckets, bucketName);
|
|
29
|
+
await this.background.sequence();
|
|
30
|
+
this.authorizer.authorizeWrite(bucket, options);
|
|
31
|
+
bucket.deleteLifecycle();
|
|
32
|
+
return {
|
|
33
|
+
$metadata: {},
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=delete-bucket-lifecycle.handler.js.map
|
package/dist/service/s3/command/delete-bucket-lifecycle/delete-bucket-lifecycle.handler.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete-bucket-lifecycle.handler.js","sourceRoot":"","sources":["../../../../../src/service/s3/command/delete-bucket-lifecycle/delete-bucket-lifecycle.handler.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,eAAe,GAChB,MAAM,2CAA2C,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AAGvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wDAAwD,CAAC;AAK5F,OAAO,EAAE,wBAAwB,EAAE,MAAM,6CAA6C,CAAC;AACvF,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAYjE;;GAEG;AACH,MAAM,OAAO,mCAAmC;IAI7B,OAAO,CAAoC;IAC3C,UAAU,CAA2B;IACrC,UAAU,CAAsB;IAEjD,YAAY,UAAkD;QAC5D,MAAM,EACJ,OAAO,EACP,GAAG,GAAG,IAAI,kBAAkB,EAAE,EAC9B,UAAU,GAAG,IAAI,eAAe,EAAE,GACnC,GAAG,UAAU,CAAC;QAEf,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,IAAI,wBAAwB,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,MAAM,CACV,OAAwC,EACxC,OAA6B;QAE7B,aAAa,CACX,OAAO,CAAC,KAAK,CAAC,MAAM,EACpB,2CAA2C,CAC5C,CAAC;QAEF,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,MAAyB,CAAC;QAC3D,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAE5D,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;QAEjC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAEhD,MAAM,CAAC,eAAe,EAAE,CAAC;QAEzB,OAAO;YACL,SAAS,EAAE,EAAE;SACd,CAAC;IACJ,CAAC;CACF"}
|