@kensio/yulin 1.20.5 → 1.20.7

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.
Files changed (129) hide show
  1. package/dist/service/aws/factory/sim-aws-logs-collaborators.d.ts +6 -0
  2. package/dist/service/aws/factory/sim-aws-logs-collaborators.d.ts.map +1 -1
  3. package/dist/service/aws/factory/sim-aws-logs-collaborators.js +9 -0
  4. package/dist/service/aws/factory/sim-aws-logs-collaborators.js.map +1 -1
  5. package/dist/service/cloudformation/resource/sim-cfn-resource-record.d.ts.map +1 -1
  6. package/dist/service/cloudformation/resource/sim-cfn-resource-record.js +9 -0
  7. package/dist/service/cloudformation/resource/sim-cfn-resource-record.js.map +1 -1
  8. package/dist/service/logs/command/delivery/sim-logs-delivery-source-commands.d.ts +5 -1
  9. package/dist/service/logs/command/delivery/sim-logs-delivery-source-commands.d.ts.map +1 -1
  10. package/dist/service/logs/command/delivery/sim-logs-delivery-source-commands.js +10 -1
  11. package/dist/service/logs/command/delivery/sim-logs-delivery-source-commands.js.map +1 -1
  12. package/dist/service/logs/delivery/cloudfront/sim-aws-logs-delivery-distributions.d.ts +34 -0
  13. package/dist/service/logs/delivery/cloudfront/sim-aws-logs-delivery-distributions.d.ts.map +1 -0
  14. package/dist/service/logs/delivery/cloudfront/sim-aws-logs-delivery-distributions.js +54 -0
  15. package/dist/service/logs/delivery/cloudfront/sim-aws-logs-delivery-distributions.js.map +1 -0
  16. package/dist/service/logs/delivery/sim-logs-delivery-source-resources.d.ts +28 -0
  17. package/dist/service/logs/delivery/sim-logs-delivery-source-resources.d.ts.map +1 -0
  18. package/dist/service/logs/delivery/sim-logs-delivery-source-resources.js +14 -0
  19. package/dist/service/logs/delivery/sim-logs-delivery-source-resources.js.map +1 -0
  20. package/dist/service/logs/sim-logs-commands.d.ts +7 -0
  21. package/dist/service/logs/sim-logs-commands.d.ts.map +1 -1
  22. package/dist/service/logs/sim-logs-commands.js +3 -1
  23. package/dist/service/logs/sim-logs-commands.js.map +1 -1
  24. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-configuration.d.ts +83 -0
  25. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-configuration.d.ts.map +1 -0
  26. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-configuration.js +87 -0
  27. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-configuration.js.map +1 -0
  28. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-expiry.d.ts +24 -0
  29. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-expiry.d.ts.map +1 -0
  30. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-expiry.js +42 -0
  31. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-expiry.js.map +1 -0
  32. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-selection.d.ts +24 -0
  33. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-selection.d.ts.map +1 -0
  34. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-selection.js +51 -0
  35. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-selection.js.map +1 -0
  36. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-sweep.d.ts +38 -0
  37. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-sweep.d.ts.map +1 -0
  38. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-sweep.js +66 -0
  39. package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-sweep.js.map +1 -0
  40. package/dist/service/s3/bucket/sim-s3-bucket.d.ts +34 -0
  41. package/dist/service/s3/bucket/sim-s3-bucket.d.ts.map +1 -1
  42. package/dist/service/s3/bucket/sim-s3-bucket.js +43 -4
  43. package/dist/service/s3/bucket/sim-s3-bucket.js.map +1 -1
  44. package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-configuration.d.ts +31 -0
  45. package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-configuration.d.ts.map +1 -0
  46. package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-configuration.js +69 -0
  47. package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-configuration.js.map +1 -0
  48. package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-fields.d.ts +31 -0
  49. package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-fields.d.ts.map +1 -0
  50. package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-fields.js +50 -0
  51. package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-fields.js.map +1 -0
  52. package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-transitions.d.ts +19 -0
  53. package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-transitions.d.ts.map +1 -0
  54. package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-transitions.js +28 -0
  55. package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-transitions.js.map +1 -0
  56. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-configurator.d.ts +1 -0
  57. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-configurator.d.ts.map +1 -1
  58. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-configurator.js +11 -0
  59. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-configurator.js.map +1 -1
  60. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-property-names.d.ts.map +1 -1
  61. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-property-names.js +1 -4
  62. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-property-names.js.map +1 -1
  63. package/dist/service/s3/command/create-bucket/create-bucket.handler.js +1 -1
  64. package/dist/service/s3/command/create-bucket/create-bucket.handler.js.map +1 -1
  65. package/dist/service/s3/command/delete-bucket-lifecycle/delete-bucket-lifecycle.command.d.ts +20 -0
  66. package/dist/service/s3/command/delete-bucket-lifecycle/delete-bucket-lifecycle.command.d.ts.map +1 -0
  67. package/dist/service/s3/command/delete-bucket-lifecycle/delete-bucket-lifecycle.command.js +2 -0
  68. package/dist/service/s3/command/delete-bucket-lifecycle/delete-bucket-lifecycle.command.js.map +1 -0
  69. package/dist/service/s3/command/delete-bucket-lifecycle/delete-bucket-lifecycle.handler.d.ts +29 -0
  70. package/dist/service/s3/command/delete-bucket-lifecycle/delete-bucket-lifecycle.handler.d.ts.map +1 -0
  71. package/dist/service/s3/command/delete-bucket-lifecycle/delete-bucket-lifecycle.handler.js +37 -0
  72. package/dist/service/s3/command/delete-bucket-lifecycle/delete-bucket-lifecycle.handler.js.map +1 -0
  73. package/dist/service/s3/command/get-bucket-lifecycle-configuration/get-bucket-lifecycle-configuration.command.d.ts +26 -0
  74. package/dist/service/s3/command/get-bucket-lifecycle-configuration/get-bucket-lifecycle-configuration.command.d.ts.map +1 -0
  75. package/dist/service/s3/command/get-bucket-lifecycle-configuration/get-bucket-lifecycle-configuration.command.js +2 -0
  76. package/dist/service/s3/command/get-bucket-lifecycle-configuration/get-bucket-lifecycle-configuration.command.js.map +1 -0
  77. package/dist/service/s3/command/get-bucket-lifecycle-configuration/get-bucket-lifecycle-configuration.handler.d.ts +30 -0
  78. package/dist/service/s3/command/get-bucket-lifecycle-configuration/get-bucket-lifecycle-configuration.handler.d.ts.map +1 -0
  79. package/dist/service/s3/command/get-bucket-lifecycle-configuration/get-bucket-lifecycle-configuration.handler.js +43 -0
  80. package/dist/service/s3/command/get-bucket-lifecycle-configuration/get-bucket-lifecycle-configuration.handler.js.map +1 -0
  81. package/dist/service/s3/command/lifecycle/sim-s3-lifecycle-authorizer.d.ts +32 -0
  82. package/dist/service/s3/command/lifecycle/sim-s3-lifecycle-authorizer.d.ts.map +1 -0
  83. package/dist/service/s3/command/lifecycle/sim-s3-lifecycle-authorizer.js +51 -0
  84. package/dist/service/s3/command/lifecycle/sim-s3-lifecycle-authorizer.js.map +1 -0
  85. package/dist/service/s3/command/lifecycle/sim-s3-lifecycle-commands.d.ts +23 -0
  86. package/dist/service/s3/command/lifecycle/sim-s3-lifecycle-commands.d.ts.map +1 -0
  87. package/dist/service/s3/command/lifecycle/sim-s3-lifecycle-commands.js +31 -0
  88. package/dist/service/s3/command/lifecycle/sim-s3-lifecycle-commands.js.map +1 -0
  89. package/dist/service/s3/command/lifecycle/sim-s3-lifecycle-rules-validation.d.ts +12 -0
  90. package/dist/service/s3/command/lifecycle/sim-s3-lifecycle-rules-validation.d.ts.map +1 -0
  91. package/dist/service/s3/command/lifecycle/sim-s3-lifecycle-rules-validation.js +53 -0
  92. package/dist/service/s3/command/lifecycle/sim-s3-lifecycle-rules-validation.js.map +1 -0
  93. package/dist/service/s3/command/put-bucket-lifecycle-configuration/put-bucket-lifecycle-configuration.command.d.ts +111 -0
  94. package/dist/service/s3/command/put-bucket-lifecycle-configuration/put-bucket-lifecycle-configuration.command.d.ts.map +1 -0
  95. package/dist/service/s3/command/put-bucket-lifecycle-configuration/put-bucket-lifecycle-configuration.command.js +2 -0
  96. package/dist/service/s3/command/put-bucket-lifecycle-configuration/put-bucket-lifecycle-configuration.command.js.map +1 -0
  97. package/dist/service/s3/command/put-bucket-lifecycle-configuration/put-bucket-lifecycle-configuration.handler.d.ts +30 -0
  98. package/dist/service/s3/command/put-bucket-lifecycle-configuration/put-bucket-lifecycle-configuration.handler.d.ts.map +1 -0
  99. package/dist/service/s3/command/put-bucket-lifecycle-configuration/put-bucket-lifecycle-configuration.handler.js +43 -0
  100. package/dist/service/s3/command/put-bucket-lifecycle-configuration/put-bucket-lifecycle-configuration.handler.js.map +1 -0
  101. package/dist/service/s3/command/sim-s3-command.types.d.ts +3 -0
  102. package/dist/service/s3/command/sim-s3-command.types.d.ts.map +1 -1
  103. package/dist/service/s3/error/sim-s3.error.d.ts +11 -0
  104. package/dist/service/s3/error/sim-s3.error.d.ts.map +1 -1
  105. package/dist/service/s3/error/sim-s3.error.js +13 -0
  106. package/dist/service/s3/error/sim-s3.error.js.map +1 -1
  107. package/dist/service/s3/sdk/sim-s3-sdk-command-router.d.ts.map +1 -1
  108. package/dist/service/s3/sdk/sim-s3-sdk-command-router.js +12 -0
  109. package/dist/service/s3/sdk/sim-s3-sdk-command-router.js.map +1 -1
  110. package/dist/service/s3/sim-s3-commands.d.ts +2 -0
  111. package/dist/service/s3/sim-s3-commands.d.ts.map +1 -1
  112. package/dist/service/s3/sim-s3-commands.js +3 -0
  113. package/dist/service/s3/sim-s3-commands.js.map +1 -1
  114. package/dist/service/s3/sim-s3-operations.d.ts +6 -0
  115. package/dist/service/s3/sim-s3-operations.d.ts.map +1 -1
  116. package/dist/service/s3/sim-s3-operations.js +12 -0
  117. package/dist/service/s3/sim-s3-operations.js.map +1 -1
  118. package/dist/service/s3/upload/sim-s3-multipart-uploads.d.ts +9 -0
  119. package/dist/service/s3/upload/sim-s3-multipart-uploads.d.ts.map +1 -1
  120. package/dist/service/s3/upload/sim-s3-multipart-uploads.js +15 -0
  121. package/dist/service/s3/upload/sim-s3-multipart-uploads.js.map +1 -1
  122. package/dist/terraform/map/sim-tf-map-s3-lifecycle.d.ts.map +1 -1
  123. package/dist/terraform/map/sim-tf-map-s3-lifecycle.js +4 -5
  124. package/dist/terraform/map/sim-tf-map-s3-lifecycle.js.map +1 -1
  125. package/dist/util/clock/sim-clock-control.d.ts +8 -0
  126. package/dist/util/clock/sim-clock-control.d.ts.map +1 -1
  127. package/dist/util/clock/sim-clock-control.js +10 -0
  128. package/dist/util/clock/sim-clock-control.js.map +1 -1
  129. package/package.json +1 -1
@@ -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"}
@@ -30,6 +30,7 @@ export declare class SimCfnS3BucketConfigurator {
30
30
  configure(): Promise<void>;
31
31
  private configureWebsite;
32
32
  private configurePublicAccess;
33
+ private configureLifecycle;
33
34
  private configureNotifications;
34
35
  }
35
36
  export {};
@@ -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;AAK7C,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,CAI/B;YAEa,gBAAgB;YAehB,qBAAqB;YAkBrB,sBAAsB;CAkBrC"}
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":"AAGA,OAAO,EAAE,oCAAoC,EAAE,MAAM,0DAA0D,CAAC;AAChH,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,kBAAkB,EAAE,CAAC;QAChC,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,kBAAkB;QAC9B,MAAM,MAAM,GAAG,IAAI,oCAAoC,CACrD,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,+BAA+B,CAAC;YAC/C,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,sBAAsB,EAAE,MAAM,EAAE;SACnE,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 +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,CAKrD,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,CA2CjE,CAAC"}
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;QACE,wBAAwB;QACxB,kEAAkE;KACnE;IACD,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"}
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
- creationDate: this.background.now(),
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":"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"}
1
+ {"version":3,"file":"create-bucket.handler.js","sourceRoot":"","sources":["../../../../../src/service/s3/command/create-bucket/create-bucket.handler.ts"],"names":[],"mappings":"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"}
@@ -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
@@ -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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=delete-bucket-lifecycle.command.js.map
@@ -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
@@ -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
@@ -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"}
@@ -0,0 +1,26 @@
1
+ import type { SimResponseMetadata } from "../../../aws/metadata/response-metadata.type.js";
2
+ import type { SimS3LifecycleRule } from "../put-bucket-lifecycle-configuration/put-bucket-lifecycle-configuration.command.js";
3
+ /**
4
+ * Minimal structural sim S3 GetBucketLifecycleConfiguration command.
5
+ */
6
+ export interface SimGetBucketLifecycleConfigurationCommand {
7
+ readonly input: SimGetBucketLifecycleConfigurationCommandInput;
8
+ }
9
+ /**
10
+ * Minimal structural sim S3 GetBucketLifecycleConfiguration input.
11
+ */
12
+ export interface SimGetBucketLifecycleConfigurationCommandInput {
13
+ readonly Bucket?: string | undefined;
14
+ }
15
+ /**
16
+ * Minimal structural sim S3 GetBucketLifecycleConfiguration output.
17
+ *
18
+ * The rules come back at the top level rather than under a
19
+ * `LifecycleConfiguration`, which is the asymmetry real S3 has between putting
20
+ * a configuration and reading one.
21
+ */
22
+ export interface SimGetBucketLifecycleConfigurationCommandOutput {
23
+ readonly Rules: readonly SimS3LifecycleRule[];
24
+ readonly $metadata: SimResponseMetadata;
25
+ }
26
+ //# sourceMappingURL=get-bucket-lifecycle-configuration.command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-bucket-lifecycle-configuration.command.d.ts","sourceRoot":"","sources":["../../../../../src/service/s3/command/get-bucket-lifecycle-configuration/get-bucket-lifecycle-configuration.command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iDAAiD,CAAC;AAC3F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qFAAqF,CAAC;AAE9H;;GAEG;AACH,MAAM,WAAW,yCAAyC;IACxD,QAAQ,CAAC,KAAK,EAAE,8CAA8C,CAAC;CAChE;AAED;;GAEG;AACH,MAAM,WAAW,8CAA8C;IAC7D,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,+CAA+C;IAC9D,QAAQ,CAAC,KAAK,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAC9C,QAAQ,CAAC,SAAS,EAAE,mBAAmB,CAAC;CACzC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=get-bucket-lifecycle-configuration.command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-bucket-lifecycle-configuration.command.js","sourceRoot":"","sources":["../../../../../src/service/s3/command/get-bucket-lifecycle-configuration/get-bucket-lifecycle-configuration.command.ts"],"names":[],"mappings":""}
@@ -0,0 +1,30 @@
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 { SimGetBucketLifecycleConfigurationCommand, SimGetBucketLifecycleConfigurationCommandOutput } from "./get-bucket-lifecycle-configuration.command.js";
7
+ interface GetBucketLifecycleConfigurationHandlerProperties {
8
+ readonly buckets: Map<SimS3BucketName, SimS3Bucket>;
9
+ readonly iam?: SimIamInterServiceAuthZ;
10
+ readonly background?: BackgroundScheduler;
11
+ }
12
+ /**
13
+ * Simulated S3 GetBucketLifecycleConfigurationCommand handler.
14
+ */
15
+ export declare class GetBucketLifecycleConfigurationCommandHandler implements CommandHandler<SimGetBucketLifecycleConfigurationCommand, SimGetBucketLifecycleConfigurationCommandOutput> {
16
+ private readonly buckets;
17
+ private readonly authorizer;
18
+ private readonly background;
19
+ constructor(properties: GetBucketLifecycleConfigurationHandlerProperties);
20
+ /**
21
+ * Authorize and return a Bucket's lifecycle rules.
22
+ *
23
+ * A Bucket carrying no rules is reported as NoSuchLifecycleConfiguration
24
+ * rather than an empty list, which is how real S3 separates a Bucket nobody
25
+ * configured from one configured to do nothing.
26
+ */
27
+ handle(command: SimGetBucketLifecycleConfigurationCommand, options?: SimS3RequestOptions): Promise<SimGetBucketLifecycleConfigurationCommandOutput>;
28
+ }
29
+ export {};
30
+ //# sourceMappingURL=get-bucket-lifecycle-configuration.handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-bucket-lifecycle-configuration.handler.d.ts","sourceRoot":"","sources":["../../../../../src/service/s3/command/get-bucket-lifecycle-configuration/get-bucket-lifecycle-configuration.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;AAIvC,OAAO,KAAK,EACV,yCAAyC,EACzC,+CAA+C,EAChD,MAAM,iDAAiD,CAAC;AAEzD,UAAU,gDAAgD;IACxD,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,6CAA8C,YAAW,cAAc,CAClF,yCAAyC,EACzC,+CAA+C,CAChD;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,gDAAgD,EAUvE;IAED;;;;;;OAMG;IACG,MAAM,CACV,OAAO,EAAE,yCAAyC,EAClD,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,+CAA+C,CAAC,CAwB1D;CACF"}
@@ -0,0 +1,43 @@
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 { SimS3NoSuchLifecycleConfiguration } from "../../error/sim-s3.error.js";
5
+ import { SimS3LifecycleAuthorizer } from "../lifecycle/sim-s3-lifecycle-authorizer.js";
6
+ import { requireSimS3Bucket } from "../require-sim-s3-bucket.js";
7
+ /**
8
+ * Simulated S3 GetBucketLifecycleConfigurationCommand handler.
9
+ */
10
+ export class GetBucketLifecycleConfigurationCommandHandler {
11
+ buckets;
12
+ authorizer;
13
+ background;
14
+ constructor(properties) {
15
+ const { buckets, iam = new SimIamAllowAllAuth(), background = new BackgroundTasks(), } = properties;
16
+ this.buckets = buckets;
17
+ this.authorizer = new SimS3LifecycleAuthorizer({ iam });
18
+ this.background = background;
19
+ }
20
+ /**
21
+ * Authorize and return a Bucket's lifecycle rules.
22
+ *
23
+ * A Bucket carrying no rules is reported as NoSuchLifecycleConfiguration
24
+ * rather than an empty list, which is how real S3 separates a Bucket nobody
25
+ * configured from one configured to do nothing.
26
+ */
27
+ async handle(command, options) {
28
+ assertDefined(command.input.Bucket, "GetBucketLifecycleConfigurationCommand.input.Bucket");
29
+ const bucketName = command.input.Bucket;
30
+ const bucket = requireSimS3Bucket(this.buckets, bucketName);
31
+ await this.background.sequence();
32
+ this.authorizer.authorizeRead(bucket, options);
33
+ const lifecycle = bucket.getLifecycle();
34
+ if (lifecycle.isEmpty) {
35
+ throw new SimS3NoSuchLifecycleConfiguration(`No lifecycle configuration on S3 Bucket ${bucketName}`);
36
+ }
37
+ return {
38
+ Rules: lifecycle.rules,
39
+ $metadata: {},
40
+ };
41
+ }
42
+ }
43
+ //# sourceMappingURL=get-bucket-lifecycle-configuration.handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-bucket-lifecycle-configuration.handler.js","sourceRoot":"","sources":["../../../../../src/service/s3/command/get-bucket-lifecycle-configuration/get-bucket-lifecycle-configuration.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,iCAAiC,EAAE,MAAM,6BAA6B,CAAC;AAChF,OAAO,EAAE,wBAAwB,EAAE,MAAM,6CAA6C,CAAC;AACvF,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAYjE;;GAEG;AACH,MAAM,OAAO,6CAA6C;IAIvC,OAAO,CAAoC;IAC3C,UAAU,CAA2B;IACrC,UAAU,CAAsB;IAEjD,YAAY,UAA4D;QACtE,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;;;;;;OAMG;IACH,KAAK,CAAC,MAAM,CACV,OAAkD,EAClD,OAA6B;QAE7B,aAAa,CACX,OAAO,CAAC,KAAK,CAAC,MAAM,EACpB,qDAAqD,CACtD,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,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAE/C,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;QACxC,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;YACtB,MAAM,IAAI,iCAAiC,CACzC,2CAA2C,UAAU,EAAE,CACxD,CAAC;QACJ,CAAC;QAED,OAAO;YACL,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,SAAS,EAAE,EAAE;SACd,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,32 @@
1
+ import type { SimIamInterServiceAuthZ } from "../../../iam/authorize/sim-iam-inter-service-auth-z.js";
2
+ import type { SimS3Bucket } from "../../bucket/sim-s3-bucket.js";
3
+ import type { SimS3RequestOptions } from "../sim-s3-request-options.js";
4
+ interface SimS3LifecycleAuthorizerProperties {
5
+ readonly iam: SimIamInterServiceAuthZ;
6
+ }
7
+ /**
8
+ * Applies IAM authorization to the S3 lifecycle configuration commands.
9
+ *
10
+ * Reading is governed by s3:GetLifecycleConfiguration. Both replacing and
11
+ * removing the configuration are governed by s3:PutLifecycleConfiguration:
12
+ * real S3 has no separate delete permission, so removing the rules needs
13
+ * exactly what setting them needs. Neither action name carries "Bucket", which
14
+ * is where they differ from the rest of the Bucket configuration actions.
15
+ */
16
+ export declare class SimS3LifecycleAuthorizer {
17
+ private static readonly readAction;
18
+ private static readonly writeAction;
19
+ private readonly iam;
20
+ constructor(properties: SimS3LifecycleAuthorizerProperties);
21
+ /**
22
+ * Ensure the caller may read the Bucket's lifecycle rules.
23
+ */
24
+ authorizeRead(bucket: SimS3Bucket, options?: SimS3RequestOptions): void;
25
+ /**
26
+ * Ensure the caller may replace or remove the Bucket's lifecycle rules.
27
+ */
28
+ authorizeWrite(bucket: SimS3Bucket, options?: SimS3RequestOptions): void;
29
+ private authorize;
30
+ }
31
+ export {};
32
+ //# sourceMappingURL=sim-s3-lifecycle-authorizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-s3-lifecycle-authorizer.d.ts","sourceRoot":"","sources":["../../../../../src/service/s3/command/lifecycle/sim-s3-lifecycle-authorizer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wDAAwD,CAAC;AAGtG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAGjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAExE,UAAU,kCAAkC;IAC1C,QAAQ,CAAC,GAAG,EAAE,uBAAuB,CAAC;CACvC;AAED;;;;;;;;GAQG;AACH,qBAAa,wBAAwB;IACnC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAkC;IACpE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAkC;IAErE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA0B;IAE9C,YAAY,UAAU,EAAE,kCAAkC,EAEzD;IAED;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAEtE;IAED;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAEvE;IAED,OAAO,CAAC,SAAS;CAsBlB"}
@@ -0,0 +1,51 @@
1
+ import { SimIamAccessDenied } from "../../../iam/error/sim-iam.error.js";
2
+ import { simS3BucketArn } from "../../bucket/sim-s3-bucket-arn.js";
3
+ import { simS3BucketResourcePolicies } from "../authorize/sim-s3-bucket-resource-policies.js";
4
+ import { simS3ConditionContext } from "../authorize/sim-s3-condition-context.js";
5
+ /**
6
+ * Applies IAM authorization to the S3 lifecycle configuration commands.
7
+ *
8
+ * Reading is governed by s3:GetLifecycleConfiguration. Both replacing and
9
+ * removing the configuration are governed by s3:PutLifecycleConfiguration:
10
+ * real S3 has no separate delete permission, so removing the rules needs
11
+ * exactly what setting them needs. Neither action name carries "Bucket", which
12
+ * is where they differ from the rest of the Bucket configuration actions.
13
+ */
14
+ export class SimS3LifecycleAuthorizer {
15
+ static readAction = "s3:GetLifecycleConfiguration";
16
+ static writeAction = "s3:PutLifecycleConfiguration";
17
+ iam;
18
+ constructor(properties) {
19
+ this.iam = properties.iam;
20
+ }
21
+ /**
22
+ * Ensure the caller may read the Bucket's lifecycle rules.
23
+ */
24
+ authorizeRead(bucket, options) {
25
+ this.authorize(SimS3LifecycleAuthorizer.readAction, bucket, options);
26
+ }
27
+ /**
28
+ * Ensure the caller may replace or remove the Bucket's lifecycle rules.
29
+ */
30
+ authorizeWrite(bucket, options) {
31
+ this.authorize(SimS3LifecycleAuthorizer.writeAction, bucket, options);
32
+ }
33
+ authorize(action, bucket, options) {
34
+ const resource = simS3BucketArn(bucket.bucketName);
35
+ const decision = this.iam.authorize({
36
+ action,
37
+ resource,
38
+ caller: options?.caller,
39
+ conditionContext: simS3ConditionContext(options),
40
+ resourcePolicies: simS3BucketResourcePolicies(bucket),
41
+ });
42
+ if (decision.isDenied) {
43
+ throw new SimIamAccessDenied({
44
+ principal: decision.caller.principal,
45
+ action,
46
+ resource,
47
+ });
48
+ }
49
+ }
50
+ }
51
+ //# sourceMappingURL=sim-s3-lifecycle-authorizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-s3-lifecycle-authorizer.js","sourceRoot":"","sources":["../../../../../src/service/s3/command/lifecycle/sim-s3-lifecycle-authorizer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAEnE,OAAO,EAAE,2BAA2B,EAAE,MAAM,iDAAiD,CAAC;AAC9F,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AAOjF;;;;;;;;GAQG;AACH,MAAM,OAAO,wBAAwB;IAC3B,MAAM,CAAU,UAAU,GAAG,8BAA8B,CAAC;IAC5D,MAAM,CAAU,WAAW,GAAG,8BAA8B,CAAC;IAEpD,GAAG,CAA0B;IAE9C,YAAY,UAA8C;QACxD,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,MAAmB,EAAE,OAA6B;QAC9D,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACvE,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,MAAmB,EAAE,OAA6B;QAC/D,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACxE,CAAC;IAEO,SAAS,CACf,MAAc,EACd,MAAmB,EACnB,OAA6B;QAE7B,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;YAClC,MAAM;YACN,QAAQ;YACR,MAAM,EAAE,OAAO,EAAE,MAAM;YACvB,gBAAgB,EAAE,qBAAqB,CAAC,OAAO,CAAC;YAChD,gBAAgB,EAAE,2BAA2B,CAAC,MAAM,CAAC;SACtD,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACtB,MAAM,IAAI,kBAAkB,CAAC;gBAC3B,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS;gBACpC,MAAM;gBACN,QAAQ;aACT,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF"}