@kensio/yulin 0.1.2 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (150) hide show
  1. package/README.md +76 -1
  2. package/dist/serve/controller/sim-aws-service-controller-container.d.ts +17 -0
  3. package/dist/serve/controller/sim-aws-service-controller-container.d.ts.map +1 -0
  4. package/dist/serve/controller/sim-aws-service-controller-container.js +29 -0
  5. package/dist/serve/controller/sim-aws-service-controller-container.js.map +1 -0
  6. package/dist/serve/controller/sim-service-controller.d.ts +22 -0
  7. package/dist/serve/controller/sim-service-controller.d.ts.map +1 -0
  8. package/dist/serve/controller/sim-service-controller.js +2 -0
  9. package/dist/serve/controller/sim-service-controller.js.map +1 -0
  10. package/dist/serve/http/sim-aws-http.d.ts +20 -0
  11. package/dist/serve/http/sim-aws-http.d.ts.map +1 -0
  12. package/dist/serve/http/sim-aws-http.js +57 -0
  13. package/dist/serve/http/sim-aws-http.js.map +1 -0
  14. package/dist/serve/http/sim-aws-local-server.d.ts +37 -0
  15. package/dist/serve/http/sim-aws-local-server.d.ts.map +1 -0
  16. package/dist/serve/http/sim-aws-local-server.js +132 -0
  17. package/dist/serve/http/sim-aws-local-server.js.map +1 -0
  18. package/dist/serve/http/sim-aws-local.conf.d.ts +8 -0
  19. package/dist/serve/http/sim-aws-local.conf.d.ts.map +1 -0
  20. package/dist/serve/http/sim-aws-local.conf.js +8 -0
  21. package/dist/serve/http/sim-aws-local.conf.js.map +1 -0
  22. package/dist/serve/index.d.ts +3 -0
  23. package/dist/serve/index.d.ts.map +1 -0
  24. package/dist/serve/index.js +3 -0
  25. package/dist/serve/index.js.map +1 -0
  26. package/dist/serve/resolve/sim-aws-local-service-resolver.d.ts +13 -0
  27. package/dist/serve/resolve/sim-aws-local-service-resolver.d.ts.map +1 -0
  28. package/dist/serve/resolve/sim-aws-local-service-resolver.js +38 -0
  29. package/dist/serve/resolve/sim-aws-local-service-resolver.js.map +1 -0
  30. package/dist/service/aws/arn.d.ts +17 -0
  31. package/dist/service/aws/arn.d.ts.map +1 -0
  32. package/dist/service/aws/arn.js +21 -0
  33. package/dist/service/aws/arn.js.map +1 -0
  34. package/dist/service/aws/sim-aws-account-region-scope.d.ts +38 -0
  35. package/dist/service/aws/sim-aws-account-region-scope.d.ts.map +1 -0
  36. package/dist/service/aws/sim-aws-account-region-scope.js +52 -0
  37. package/dist/service/aws/sim-aws-account-region-scope.js.map +1 -0
  38. package/dist/service/aws/sim-aws-account.d.ts +33 -0
  39. package/dist/service/aws/sim-aws-account.d.ts.map +1 -0
  40. package/dist/service/aws/sim-aws-account.js +38 -0
  41. package/dist/service/aws/sim-aws-account.js.map +1 -0
  42. package/dist/service/aws/sim-aws-region.d.ts +33 -0
  43. package/dist/service/aws/sim-aws-region.d.ts.map +1 -0
  44. package/dist/service/aws/sim-aws-region.js +74 -0
  45. package/dist/service/aws/sim-aws-region.js.map +1 -0
  46. package/dist/service/aws/sim-aws-services.d.ts +21 -0
  47. package/dist/service/aws/sim-aws-services.d.ts.map +1 -0
  48. package/dist/service/aws/sim-aws-services.js +2 -0
  49. package/dist/service/aws/sim-aws-services.js.map +1 -0
  50. package/dist/service/aws/sim-aws.d.ts +50 -0
  51. package/dist/service/aws/sim-aws.d.ts.map +1 -0
  52. package/dist/service/aws/sim-aws.js +82 -0
  53. package/dist/service/aws/sim-aws.js.map +1 -0
  54. package/dist/service/dynamodb/command/create-table/create-table.handler.d.ts +3 -1
  55. package/dist/service/dynamodb/command/create-table/create-table.handler.d.ts.map +1 -1
  56. package/dist/service/dynamodb/command/create-table/create-table.handler.js +9 -6
  57. package/dist/service/dynamodb/command/create-table/create-table.handler.js.map +1 -1
  58. package/dist/service/dynamodb/index.d.ts +1 -1
  59. package/dist/service/dynamodb/index.d.ts.map +1 -1
  60. package/dist/service/dynamodb/index.js +1 -1
  61. package/dist/service/dynamodb/index.js.map +1 -1
  62. package/dist/service/dynamodb/sim-dynamodb.d.ts +29 -0
  63. package/dist/service/dynamodb/sim-dynamodb.d.ts.map +1 -0
  64. package/dist/service/dynamodb/sim-dynamodb.js +47 -0
  65. package/dist/service/dynamodb/sim-dynamodb.js.map +1 -0
  66. package/dist/service/dynamodb/table/dynamodb-table.d.ts +8 -6
  67. package/dist/service/dynamodb/table/dynamodb-table.d.ts.map +1 -1
  68. package/dist/service/dynamodb/table/dynamodb-table.js +16 -9
  69. package/dist/service/dynamodb/table/dynamodb-table.js.map +1 -1
  70. package/dist/service/organizations/sim-aws-account.d.ts +12 -1
  71. package/dist/service/organizations/sim-aws-account.d.ts.map +1 -1
  72. package/dist/service/organizations/sim-aws-account.js +15 -2
  73. package/dist/service/organizations/sim-aws-account.js.map +1 -1
  74. package/dist/service/organizations/sim-aws-region.d.ts +23 -0
  75. package/dist/service/organizations/sim-aws-region.d.ts.map +1 -0
  76. package/dist/service/organizations/sim-aws-region.js +27 -0
  77. package/dist/service/organizations/sim-aws-region.js.map +1 -0
  78. package/dist/service/s3/bucket/s3-bucket.d.ts +30 -0
  79. package/dist/service/s3/bucket/s3-bucket.d.ts.map +1 -0
  80. package/dist/service/s3/bucket/s3-bucket.js +42 -0
  81. package/dist/service/s3/bucket/s3-bucket.js.map +1 -0
  82. package/dist/service/s3/command/create-bucket/create-bucket.handler.d.ts +21 -0
  83. package/dist/service/s3/command/create-bucket/create-bucket.handler.d.ts.map +1 -0
  84. package/dist/service/s3/command/create-bucket/create-bucket.handler.js +58 -0
  85. package/dist/service/s3/command/create-bucket/create-bucket.handler.js.map +1 -0
  86. package/dist/service/s3/command/get-object/get-object.handler.d.ts +17 -0
  87. package/dist/service/s3/command/get-object/get-object.handler.d.ts.map +1 -0
  88. package/dist/service/s3/command/get-object/get-object.handler.js +44 -0
  89. package/dist/service/s3/command/get-object/get-object.handler.js.map +1 -0
  90. package/dist/service/s3/command/list-buckets/list-buckets.handler.d.ts +19 -0
  91. package/dist/service/s3/command/list-buckets/list-buckets.handler.d.ts.map +1 -0
  92. package/dist/service/s3/command/list-buckets/list-buckets.handler.js +52 -0
  93. package/dist/service/s3/command/list-buckets/list-buckets.handler.js.map +1 -0
  94. package/dist/service/s3/command/list-objects/list-objects.handler.d.ts +17 -0
  95. package/dist/service/s3/command/list-objects/list-objects.handler.d.ts.map +1 -0
  96. package/dist/service/s3/command/list-objects/list-objects.handler.js +54 -0
  97. package/dist/service/s3/command/list-objects/list-objects.handler.js.map +1 -0
  98. package/dist/service/s3/command/put-object/put-object.handler.d.ts +19 -0
  99. package/dist/service/s3/command/put-object/put-object.handler.d.ts.map +1 -0
  100. package/dist/service/s3/command/put-object/put-object.handler.js +57 -0
  101. package/dist/service/s3/command/put-object/put-object.handler.js.map +1 -0
  102. package/dist/service/s3/index.d.ts +1 -1
  103. package/dist/service/s3/index.d.ts.map +1 -1
  104. package/dist/service/s3/index.js +1 -2
  105. package/dist/service/s3/index.js.map +1 -1
  106. package/dist/service/s3/object/s3-object.d.ts +17 -0
  107. package/dist/service/s3/object/s3-object.d.ts.map +1 -0
  108. package/dist/service/s3/object/s3-object.js +23 -0
  109. package/dist/service/s3/object/s3-object.js.map +1 -0
  110. package/dist/service/s3/s3.d.ts +33 -0
  111. package/dist/service/s3/s3.d.ts.map +1 -0
  112. package/dist/service/s3/s3.js +56 -0
  113. package/dist/service/s3/s3.js.map +1 -0
  114. package/dist/service/s3/serve/sim-s3-controller.d.ts +15 -0
  115. package/dist/service/s3/serve/sim-s3-controller.d.ts.map +1 -0
  116. package/dist/service/s3/serve/sim-s3-controller.js +29 -0
  117. package/dist/service/s3/serve/sim-s3-controller.js.map +1 -0
  118. package/dist/service/s3/serve/sim-s3-get-obj-controller.d.ts +11 -0
  119. package/dist/service/s3/serve/sim-s3-get-obj-controller.d.ts.map +1 -0
  120. package/dist/service/s3/serve/sim-s3-get-obj-controller.js +35 -0
  121. package/dist/service/s3/serve/sim-s3-get-obj-controller.js.map +1 -0
  122. package/dist/service/s3/serve/sim-s3-req-router.d.ts +26 -0
  123. package/dist/service/s3/serve/sim-s3-req-router.d.ts.map +1 -0
  124. package/dist/service/s3/serve/sim-s3-req-router.js +79 -0
  125. package/dist/service/s3/serve/sim-s3-req-router.js.map +1 -0
  126. package/dist/service/s3/sim-s3-global-registry.d.ts +20 -0
  127. package/dist/service/s3/sim-s3-global-registry.d.ts.map +1 -0
  128. package/dist/service/s3/sim-s3-global-registry.js +22 -0
  129. package/dist/service/s3/sim-s3-global-registry.js.map +1 -0
  130. package/dist/service/s3/sim-s3.d.ts +38 -0
  131. package/dist/service/s3/sim-s3.d.ts.map +1 -0
  132. package/dist/service/s3/sim-s3.js +61 -0
  133. package/dist/service/s3/sim-s3.js.map +1 -0
  134. package/dist/service/s3/storage/s3-body-buffer.d.ts +5 -0
  135. package/dist/service/s3/storage/s3-body-buffer.d.ts.map +1 -0
  136. package/dist/service/s3/storage/s3-body-buffer.js +11 -0
  137. package/dist/service/s3/storage/s3-body-buffer.js.map +1 -0
  138. package/dist/service/s3/storage/s3-bucket-storage.d.ts +20 -0
  139. package/dist/service/s3/storage/s3-bucket-storage.d.ts.map +1 -0
  140. package/dist/service/s3/storage/s3-bucket-storage.js +2 -0
  141. package/dist/service/s3/storage/s3-bucket-storage.js.map +1 -0
  142. package/dist/service/s3/storage/s3-filesystem-storage.d.ts +59 -0
  143. package/dist/service/s3/storage/s3-filesystem-storage.d.ts.map +1 -0
  144. package/dist/service/s3/storage/s3-filesystem-storage.js +266 -0
  145. package/dist/service/s3/storage/s3-filesystem-storage.js.map +1 -0
  146. package/dist/service/s3/storage/s3-memory-storage.d.ts +27 -0
  147. package/dist/service/s3/storage/s3-memory-storage.d.ts.map +1 -0
  148. package/dist/service/s3/storage/s3-memory-storage.js +37 -0
  149. package/dist/service/s3/storage/s3-memory-storage.js.map +1 -0
  150. package/package.json +25 -12
@@ -2,26 +2,24 @@ import type { Brand } from "../../../util/brand.type.js";
2
2
  import type { CreateTableCommand, TableStatus } from "@aws-sdk/client-dynamodb";
3
3
  import type { DynamoDbItem } from "../item/dynamodb-item.js";
4
4
  import type { BackgroundScheduler } from "../../../util/background/background.js";
5
+ import { type SimArn, type SimArnComponents } from "../../aws/arn.js";
5
6
  export type DynamoDbTableName = Brand<string, "DynamoDbTableName">;
6
7
  /**
7
8
  * Simulated DynamoDB Table.
8
9
  */
9
10
  export declare class SimDynamoDbTable {
11
+ readonly simArn: SimArn;
10
12
  private readonly background;
11
13
  readonly creationDateTime: Date;
12
- private readonly _tableName;
14
+ readonly tableName: DynamoDbTableName;
13
15
  private readonly _keySchema;
14
16
  private _status;
15
17
  private readonly items;
16
- constructor(createCommand: CreateTableCommand, background: BackgroundScheduler);
18
+ constructor(createCommand: CreateTableCommand, simArn: SimArn, background: BackgroundScheduler);
17
19
  /**
18
20
  * Simulate the table entering ACTIVE status.
19
21
  */
20
22
  activate(): Promise<void>;
21
- /**
22
- * Get the DynamoDB table name.
23
- */
24
- get tableName(): DynamoDbTableName;
25
23
  /**
26
24
  * Get the current table status.
27
25
  */
@@ -31,4 +29,8 @@ export declare class SimDynamoDbTable {
31
29
  */
32
30
  putItem(item: DynamoDbItem): Promise<void>;
33
31
  }
32
+ /**
33
+ * Generate a fake ARN for a DynamoDB Table.
34
+ */
35
+ export declare function makeSimDynamoDbTableArn(overrides?: Exclude<Partial<SimArnComponents>, "service" | "resourceType">): SimArn;
34
36
  //# sourceMappingURL=dynamodb-table.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dynamodb-table.d.ts","sourceRoot":"","sources":["../../../../src/service/dynamodb/table/dynamodb-table.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGhF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAElF,MAAM,MAAM,iBAAiB,GAAG,KAAK,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;AAEnE;;GAEG;AACH,qBAAa,gBAAgB;IAWzB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAV7B,SAAgB,gBAAgB,EAAE,IAAI,CAAC;IAEvC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoB;IAC/C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoB;IAC/C,OAAO,CAAC,OAAO,CAA2B;IAE1C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAmC;gBAGvD,aAAa,EAAE,kBAAkB,EAChB,UAAU,EAAE,mBAAmB;IAkBlD;;OAEG;IACH,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAKzB;;OAEG;IACH,IAAW,SAAS,IAAI,iBAAiB,CAExC;IAED;;OAEG;IACH,IAAW,MAAM,IAAI,WAAW,CAE/B;IAED;;OAEG;IACI,OAAO,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;CAQlD"}
1
+ {"version":3,"file":"dynamodb-table.d.ts","sourceRoot":"","sources":["../../../../src/service/dynamodb/table/dynamodb-table.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGhF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAEL,KAAK,MAAM,EACX,KAAK,gBAAgB,EACtB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,MAAM,iBAAiB,GAAG,KAAK,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;AAEnE;;GAEG;AACH,qBAAa,gBAAgB;aAYT,MAAM,EAAE,MAAM;IAC9B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAZ7B,SAAgB,gBAAgB,EAAE,IAAI,CAAC;IAEvC,SAAgB,SAAS,EAAE,iBAAiB,CAAC;IAE7C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoB;IAC/C,OAAO,CAAC,OAAO,CAA2B;IAE1C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAmC;gBAGvD,aAAa,EAAE,kBAAkB,EACjB,MAAM,EAAE,MAAM,EACb,UAAU,EAAE,mBAAmB;IAkBlD;;OAEG;IACH,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAKzB;;OAEG;IACH,IAAW,MAAM,IAAI,WAAW,CAE/B;IAED;;OAEG;IACI,OAAO,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;CAQlD;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,SAAS,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,SAAS,GAAG,cAAc,CAAC,GACzE,MAAM,CAMR"}
@@ -1,19 +1,22 @@
1
1
  import { DynamoDbKeySchema } from "./dynamodb-key-schema.js";
2
2
  import { assertDefined } from "../../../util/defined.js";
3
+ import { makeSimArn, } from "../../aws/arn.js";
3
4
  /**
4
5
  * Simulated DynamoDB Table.
5
6
  */
6
7
  export class SimDynamoDbTable {
8
+ simArn;
7
9
  background;
8
10
  creationDateTime;
9
- _tableName;
11
+ tableName;
10
12
  _keySchema;
11
13
  _status = "CREATING";
12
14
  items = new Map();
13
- constructor(createCommand, background) {
15
+ constructor(createCommand, simArn, background) {
16
+ this.simArn = simArn;
14
17
  this.background = background;
15
18
  assertDefined(createCommand.input.TableName, "createCommand.input.TableName");
16
- this._tableName = createCommand.input.TableName;
19
+ this.tableName = createCommand.input.TableName;
17
20
  this.creationDateTime = new Date();
18
21
  if (createCommand.input.KeySchema === undefined ||
19
22
  createCommand.input.KeySchema.length === 0) {
@@ -28,12 +31,6 @@ export class SimDynamoDbTable {
28
31
  this._status = "ACTIVE";
29
32
  return Promise.resolve();
30
33
  }
31
- /**
32
- * Get the DynamoDB table name.
33
- */
34
- get tableName() {
35
- return this._tableName;
36
- }
37
34
  /**
38
35
  * Get the current table status.
39
36
  */
@@ -52,4 +49,14 @@ export class SimDynamoDbTable {
52
49
  return Promise.resolve();
53
50
  }
54
51
  }
52
+ /**
53
+ * Generate a fake ARN for a DynamoDB Table.
54
+ */
55
+ export function makeSimDynamoDbTableArn(overrides) {
56
+ return makeSimArn({
57
+ service: "dynamodb",
58
+ resourceType: "table",
59
+ ...overrides,
60
+ });
61
+ }
55
62
  //# sourceMappingURL=dynamodb-table.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dynamodb-table.js","sourceRoot":"","sources":["../../../../src/service/dynamodb/table/dynamodb-table.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAMzD;;GAEG;AACH,MAAM,OAAO,gBAAgB;IAWR;IAVH,gBAAgB,CAAO;IAEtB,UAAU,CAAoB;IAC9B,UAAU,CAAoB;IACvC,OAAO,GAAgB,UAAU,CAAC;IAEzB,KAAK,GAAG,IAAI,GAAG,EAAwB,CAAC;IAEzD,YACE,aAAiC,EAChB,UAA+B;QAA/B,eAAU,GAAV,UAAU,CAAqB;QAEhD,aAAa,CACX,aAAa,CAAC,KAAK,CAAC,SAAS,EAC7B,+BAA+B,CAChC,CAAC;QACF,IAAI,CAAC,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,SAA8B,CAAC;QACrE,IAAI,CAAC,gBAAgB,GAAG,IAAI,IAAI,EAAE,CAAC;QAEnC,IACE,aAAa,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS;YAC3C,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAC1C,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACpD,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,IAAI,iBAAiB,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC/D,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC;QACxB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;OAEG;IACI,OAAO,CAAC,IAAkB;QAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,EAAE;YAC5B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YAChC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC;QACH,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;CACF"}
1
+ {"version":3,"file":"dynamodb-table.js","sourceRoot":"","sources":["../../../../src/service/dynamodb/table/dynamodb-table.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAGzD,OAAO,EACL,UAAU,GAGX,MAAM,kBAAkB,CAAC;AAI1B;;GAEG;AACH,MAAM,OAAO,gBAAgB;IAYT;IACC;IAZH,gBAAgB,CAAO;IAEvB,SAAS,CAAoB;IAE5B,UAAU,CAAoB;IACvC,OAAO,GAAgB,UAAU,CAAC;IAEzB,KAAK,GAAG,IAAI,GAAG,EAAwB,CAAC;IAEzD,YACE,aAAiC,EACjB,MAAc,EACb,UAA+B;QADhC,WAAM,GAAN,MAAM,CAAQ;QACb,eAAU,GAAV,UAAU,CAAqB;QAEhD,aAAa,CACX,aAAa,CAAC,KAAK,CAAC,SAAS,EAC7B,+BAA+B,CAChC,CAAC;QACF,IAAI,CAAC,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,SAA8B,CAAC;QACpE,IAAI,CAAC,gBAAgB,GAAG,IAAI,IAAI,EAAE,CAAC;QAEnC,IACE,aAAa,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS;YAC3C,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAC1C,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACpD,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,IAAI,iBAAiB,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC/D,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC;QACxB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;OAEG;IACI,OAAO,CAAC,IAAkB;QAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,EAAE;YAC5B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YAChC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC;QACH,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CACrC,SAA0E;IAE1E,OAAO,UAAU,CAAC;QAChB,OAAO,EAAE,UAAU;QACnB,YAAY,EAAE,OAAO;QACrB,GAAG,SAAS;KACb,CAAC,CAAC;AACL,CAAC"}
@@ -1,19 +1,30 @@
1
1
  import { type BackgroundCompleter, type BackgroundScheduler } from "../../util/background/background.js";
2
- import { SimDynamoDb } from "../dynamodb/dynamodb.js";
2
+ import type { SimDynamoDb } from "../dynamodb/dynamodb.js";
3
+ import { type AwsRegionName, SimAwsRegion } from "./sim-aws-region.js";
4
+ import type { SimS3 } from "../s3/s3.js";
3
5
  /**
4
6
  * Container for simulated AWS services.
5
7
  */
6
8
  export declare class SimAwsAccount {
7
9
  private readonly background;
8
10
  private readonly memo;
11
+ private readonly defaultRegion;
9
12
  constructor(background?: BackgroundScheduler & BackgroundCompleter);
10
13
  /**
11
14
  * Wait for all outstanding background tasks in this Account to complete.
12
15
  */
13
16
  backgroundTasksComplete(): Promise<void>;
17
+ /**
18
+ * Get a simulated AWS Region in this simulated Account.
19
+ */
20
+ getRegion(region?: AwsRegionName): SimAwsRegion;
14
21
  /**
15
22
  * Get the simulated DynamoDB service in this simulated Account.
16
23
  */
17
24
  getDynamoDb(): SimDynamoDb;
25
+ /**
26
+ * Get the simulated S3 service in this simulated Account.
27
+ */
28
+ getS3(): SimS3;
18
29
  }
19
30
  //# sourceMappingURL=sim-aws-account.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sim-aws-account.d.ts","sourceRoot":"","sources":["../../../src/service/organizations/sim-aws-account.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EAEzB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAGtD;;GAEG;AACH,qBAAa,aAAa;IAItB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAH7B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAsB;gBAGxB,UAAU,GAAE,mBAAmB,GAC9C,mBAA2C;IAG/C;;OAEG;IACG,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9C;;OAEG;IACH,WAAW,IAAI,WAAW;CAM3B"}
1
+ {"version":3,"file":"sim-aws-account.d.ts","sourceRoot":"","sources":["../../../src/service/organizations/sim-aws-account.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EAEzB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D,OAAO,EACL,KAAK,aAAa,EAElB,YAAY,EACb,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC;;GAEG;AACH,qBAAa,aAAa;IAMtB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAL7B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAsB;IAE3C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA0B;gBAGrC,UAAU,GAAE,mBAAmB,GAC9C,mBAA2C;IAG/C;;OAEG;IACG,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9C;;OAEG;IACH,SAAS,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,YAAY;IAO/C;;OAEG;IACH,WAAW,IAAI,WAAW;IAI1B;;OAEG;IACH,KAAK,IAAI,KAAK;CAGf"}
@@ -1,12 +1,13 @@
1
1
  import { BackgroundTasks, } from "../../util/background/background.js";
2
- import { SimDynamoDb } from "../dynamodb/dynamodb.js";
3
2
  import { Memo } from "../../util/memo/memo.js";
3
+ import { DEFAULT_SIM_AWS_REGION, SimAwsRegion, } from "./sim-aws-region.js";
4
4
  /**
5
5
  * Container for simulated AWS services.
6
6
  */
7
7
  export class SimAwsAccount {
8
8
  background;
9
9
  memo = new Memo();
10
+ defaultRegion = DEFAULT_SIM_AWS_REGION;
10
11
  constructor(background = new BackgroundTasks()) {
11
12
  this.background = background;
12
13
  }
@@ -16,11 +17,23 @@ export class SimAwsAccount {
16
17
  async backgroundTasksComplete() {
17
18
  await this.background.complete();
18
19
  }
20
+ /**
21
+ * Get a simulated AWS Region in this simulated Account.
22
+ */
23
+ getRegion(region) {
24
+ return this.memo.getOrCreate(`Region:${region ?? this.defaultRegion}`, () => new SimAwsRegion(this.background));
25
+ }
19
26
  /**
20
27
  * Get the simulated DynamoDB service in this simulated Account.
21
28
  */
22
29
  getDynamoDb() {
23
- return this.memo.getOrCreate("DynamoDB", () => new SimDynamoDb(this.background));
30
+ return this.getRegion().getDynamoDb();
31
+ }
32
+ /**
33
+ * Get the simulated S3 service in this simulated Account.
34
+ */
35
+ getS3() {
36
+ return this.getRegion().getS3();
24
37
  }
25
38
  }
26
39
  //# sourceMappingURL=sim-aws-account.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sim-aws-account.js","sourceRoot":"","sources":["../../../src/service/organizations/sim-aws-account.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,eAAe,GAChB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAE/C;;GAEG;AACH,MAAM,OAAO,aAAa;IAIL;IAHF,IAAI,GAAG,IAAI,IAAI,EAAU,CAAC;IAE3C,YACmB,aACO,IAAI,eAAe,EAAE;QAD5B,eAAU,GAAV,UAAU,CACkB;IAC5C,CAAC;IAEJ;;OAEG;IACH,KAAK,CAAC,uBAAuB;QAC3B,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAC1B,UAAU,EACV,GAAG,EAAE,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CACvC,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"sim-aws-account.js","sourceRoot":"","sources":["../../../src/service/organizations/sim-aws-account.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,eAAe,GAChB,MAAM,qCAAqC,CAAC;AAE7C,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAEL,sBAAsB,EACtB,YAAY,GACb,MAAM,qBAAqB,CAAC;AAG7B;;GAEG;AACH,MAAM,OAAO,aAAa;IAML;IALF,IAAI,GAAG,IAAI,IAAI,EAAU,CAAC;IAE1B,aAAa,GAAG,sBAAsB,CAAC;IAExD,YACmB,aACO,IAAI,eAAe,EAAE;QAD5B,eAAU,GAAV,UAAU,CACkB;IAC5C,CAAC;IAEJ;;OAEG;IACH,KAAK,CAAC,uBAAuB;QAC3B,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,MAAsB;QAC9B,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAC1B,UAAU,MAAM,IAAI,IAAI,CAAC,aAAa,EAAE,EACxC,GAAG,EAAE,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CACxC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,WAAW,EAAE,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,KAAK;QACH,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC;IAClC,CAAC;CACF"}
@@ -0,0 +1,23 @@
1
+ import type { BackgroundScheduler } from "../../util/background/background.js";
2
+ import type { Brand } from "../../util/brand.type.js";
3
+ import { SimDynamoDb } from "../dynamodb/dynamodb.js";
4
+ import { SimS3 } from "../s3/s3.js";
5
+ export type AwsRegionName = Brand<string, "AwsRegionName">;
6
+ export declare const DEFAULT_SIM_AWS_REGION: AwsRegionName;
7
+ /**
8
+ * Container for simulated AWS services in one Region.
9
+ */
10
+ export declare class SimAwsRegion {
11
+ private readonly background;
12
+ private readonly memo;
13
+ constructor(background: BackgroundScheduler);
14
+ /**
15
+ * Get the simulated DynamoDB service in this simulated Region.
16
+ */
17
+ getDynamoDb(): SimDynamoDb;
18
+ /**
19
+ * Get the simulated S3 service in this simulated Region.
20
+ */
21
+ getS3(): SimS3;
22
+ }
23
+ //# sourceMappingURL=sim-aws-region.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-aws-region.d.ts","sourceRoot":"","sources":["../../../src/service/organizations/sim-aws-region.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAEtD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,MAAM,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;AAE3D,eAAO,MAAM,sBAAsB,EAAkB,aAAa,CAAC;AAEnE;;GAEG;AACH,qBAAa,YAAY;IAGX,OAAO,CAAC,QAAQ,CAAC,UAAU;IAFvC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAsB;gBAEd,UAAU,EAAE,mBAAmB;IAE5D;;OAEG;IACH,WAAW,IAAI,WAAW;IAO1B;;OAEG;IACH,KAAK,IAAI,KAAK;CAGf"}
@@ -0,0 +1,27 @@
1
+ import { Memo } from "../../util/memo/memo.js";
2
+ import { SimDynamoDb } from "../dynamodb/dynamodb.js";
3
+ import { SimS3 } from "../s3/s3.js";
4
+ export const DEFAULT_SIM_AWS_REGION = "us-east-1";
5
+ /**
6
+ * Container for simulated AWS services in one Region.
7
+ */
8
+ export class SimAwsRegion {
9
+ background;
10
+ memo = new Memo();
11
+ constructor(background) {
12
+ this.background = background;
13
+ }
14
+ /**
15
+ * Get the simulated DynamoDB service in this simulated Region.
16
+ */
17
+ getDynamoDb() {
18
+ return this.memo.getOrCreate("DynamoDB", () => new SimDynamoDb(this.background));
19
+ }
20
+ /**
21
+ * Get the simulated S3 service in this simulated Region.
22
+ */
23
+ getS3() {
24
+ return this.memo.getOrCreate("S3", () => new SimS3());
25
+ }
26
+ }
27
+ //# sourceMappingURL=sim-aws-region.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-aws-region.js","sourceRoot":"","sources":["../../../src/service/organizations/sim-aws-region.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAIpC,MAAM,CAAC,MAAM,sBAAsB,GAAG,WAA4B,CAAC;AAEnE;;GAEG;AACH,MAAM,OAAO,YAAY;IAGM;IAFZ,IAAI,GAAG,IAAI,IAAI,EAAU,CAAC;IAE3C,YAA6B,UAA+B;QAA/B,eAAU,GAAV,UAAU,CAAqB;IAAG,CAAC;IAEhE;;OAEG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAC1B,UAAU,EACV,GAAG,EAAE,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CACvC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK;QACH,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;IACxD,CAAC;CACF"}
@@ -0,0 +1,30 @@
1
+ import type { CreateBucketCommand } from "@aws-sdk/client-s3";
2
+ import type { Brand } from "../../../util/brand.type.js";
3
+ import type { SimS3BucketStorage } from "../storage/s3-bucket-storage.js";
4
+ import type { SimS3Object } from "../object/s3-object.js";
5
+ export type SimS3BucketName = Brand<string, "SimS3BucketName">;
6
+ /**
7
+ * Simulated S3 Bucket.
8
+ */
9
+ export declare class SimS3Bucket {
10
+ private storage;
11
+ readonly bucketName: string;
12
+ constructor(createCommand: CreateBucketCommand, storage?: SimS3BucketStorage);
13
+ /**
14
+ * Change the storage implementation for this simulated S3 Bucket.
15
+ */
16
+ configureSimStorage(storage: SimS3BucketStorage): void;
17
+ /**
18
+ * Put a simulated S3 Object into storage.
19
+ */
20
+ putObject(object: SimS3Object): Promise<void>;
21
+ /**
22
+ * Get a simulated S3 Object from storage.
23
+ */
24
+ getObject(key: string): Promise<SimS3Object | undefined>;
25
+ /**
26
+ * List simulated S3 Objects from storage.
27
+ */
28
+ listObjects(prefix?: string): Promise<SimS3Object[]>;
29
+ }
30
+ //# sourceMappingURL=s3-bucket.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"s3-bucket.d.ts","sourceRoot":"","sources":["../../../../src/service/s3/bucket/s3-bucket.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAG1D,MAAM,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;AAE/D;;GAEG;AACH,qBAAa,WAAW;IAKpB,OAAO,CAAC,OAAO;IAJjB,SAAgB,UAAU,EAAE,MAAM,CAAC;gBAGjC,aAAa,EAAE,mBAAmB,EAC1B,OAAO,GAAE,kBAAgD;IAMnE;;OAEG;IACH,mBAAmB,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI;IAOtD;;OAEG;IACG,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAInD;;OAEG;IACG,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAI9D;;OAEG;IACG,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;CAG3D"}
@@ -0,0 +1,42 @@
1
+ import { assertDefined } from "../../../util/defined.js";
2
+ import { MemoryS3BucketStorage } from "../storage/s3-memory-storage.js";
3
+ /**
4
+ * Simulated S3 Bucket.
5
+ */
6
+ export class SimS3Bucket {
7
+ storage;
8
+ bucketName;
9
+ constructor(createCommand, storage = new MemoryS3BucketStorage()) {
10
+ this.storage = storage;
11
+ assertDefined(createCommand.input.Bucket, "createCommand.input.Bucket");
12
+ this.bucketName = createCommand.input.Bucket;
13
+ }
14
+ /**
15
+ * Change the storage implementation for this simulated S3 Bucket.
16
+ */
17
+ configureSimStorage(storage) {
18
+ if (!this.storage.allowChangeStorage()) {
19
+ throw new Error("Cannot change simulated S3 storage implementation");
20
+ }
21
+ this.storage = storage;
22
+ }
23
+ /**
24
+ * Put a simulated S3 Object into storage.
25
+ */
26
+ async putObject(object) {
27
+ await this.storage.putObject(object);
28
+ }
29
+ /**
30
+ * Get a simulated S3 Object from storage.
31
+ */
32
+ async getObject(key) {
33
+ return await this.storage.getObject(key);
34
+ }
35
+ /**
36
+ * List simulated S3 Objects from storage.
37
+ */
38
+ async listObjects(prefix) {
39
+ return await this.storage.listObjects(prefix);
40
+ }
41
+ }
42
+ //# sourceMappingURL=s3-bucket.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"s3-bucket.js","sourceRoot":"","sources":["../../../../src/service/s3/bucket/s3-bucket.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAIzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAIxE;;GAEG;AACH,MAAM,OAAO,WAAW;IAKZ;IAJM,UAAU,CAAS;IAEnC,YACE,aAAkC,EAC1B,UAA8B,IAAI,qBAAqB,EAAE;QAAzD,YAAO,GAAP,OAAO,CAAkD;QAEjE,aAAa,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,EAAE,4BAA4B,CAAC,CAAC;QACxE,IAAI,CAAC,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,mBAAmB,CAAC,OAA2B;QAC7C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACvE,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,MAAmB;QACjC,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,GAAW;QACzB,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,MAAe;QAC/B,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAChD,CAAC;CACF"}
@@ -0,0 +1,21 @@
1
+ import type { CommandHandler } from "../../../../command/command-handler.js";
2
+ import { type CreateBucketCommand, type CreateBucketCommandOutput } from "@aws-sdk/client-s3";
3
+ import { SimS3Bucket } from "../../bucket/s3-bucket.js";
4
+ import type { SimS3GlobalRegistry } from "../../sim-s3-global-registry.js";
5
+ import type { SimAwsAccountRegionScope } from "../../../aws/sim-aws-account-region-scope.js";
6
+ /**
7
+ * S3 CreateBucketCommand handler.
8
+ *
9
+ * https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/CreateBucketCommand/
10
+ */
11
+ export declare class CreateBucketCommandHandler implements CommandHandler<CreateBucketCommand, CreateBucketCommandOutput> {
12
+ private readonly accountRegionScope;
13
+ private readonly buckets;
14
+ private readonly s3GlobalRegistry;
15
+ constructor(accountRegionScope: SimAwsAccountRegionScope, buckets: Map<string, SimS3Bucket>, s3GlobalRegistry: SimS3GlobalRegistry);
16
+ /**
17
+ * Handle creation of a new S3 Bucket.
18
+ */
19
+ handle(cmd: CreateBucketCommand): Promise<CreateBucketCommandOutput>;
20
+ }
21
+ //# sourceMappingURL=create-bucket.handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-bucket.handler.d.ts","sourceRoot":"","sources":["../../../../../src/service/s3/command/create-bucket/create-bucket.handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,yBAAyB,EAG/B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAwB,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAG9E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,8CAA8C,CAAC;AAE7F;;;;GAIG;AACH,qBAAa,0BAA2B,YAAW,cAAc,CAC/D,mBAAmB,EACnB,yBAAyB,CAC1B;IAEG,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,gBAAgB;gBAFhB,kBAAkB,EAAE,wBAAwB,EAC5C,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,EACjC,gBAAgB,EAAE,mBAAmB;IAGxD;;OAEG;IACG,MAAM,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,yBAAyB,CAAC;CA0C3E"}
@@ -0,0 +1,58 @@
1
+ import { BucketAlreadyExists, BucketAlreadyOwnedByYou, } from "@aws-sdk/client-s3";
2
+ import { SimS3Bucket } from "../../bucket/s3-bucket.js";
3
+ import { assertDefined } from "../../../../util/defined.js";
4
+ import { jitter } from "../../../../util/sleep.js";
5
+ /**
6
+ * S3 CreateBucketCommand handler.
7
+ *
8
+ * https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/CreateBucketCommand/
9
+ */
10
+ export class CreateBucketCommandHandler {
11
+ accountRegionScope;
12
+ buckets;
13
+ s3GlobalRegistry;
14
+ constructor(accountRegionScope, buckets, s3GlobalRegistry) {
15
+ this.accountRegionScope = accountRegionScope;
16
+ this.buckets = buckets;
17
+ this.s3GlobalRegistry = s3GlobalRegistry;
18
+ }
19
+ /**
20
+ * Handle creation of a new S3 Bucket.
21
+ */
22
+ async handle(cmd) {
23
+ assertDefined(cmd.input.Bucket, "CreateBucketCommand.input.Bucket");
24
+ await jitter();
25
+ const bucketName = cmd.input.Bucket;
26
+ const existingBucketScope = this.s3GlobalRegistry.findBucketScope(bucketName);
27
+ if (existingBucketScope !== undefined) {
28
+ if (existingBucketScope.accountId === this.accountRegionScope.accountId) {
29
+ throw new BucketAlreadyOwnedByYou({
30
+ message: `S3 Bucket ${bucketName} already exists in ${existingBucketScope.regionName} and is owned by ${existingBucketScope.accountId}`,
31
+ $metadata: {},
32
+ });
33
+ }
34
+ throw new BucketAlreadyExists({
35
+ message: `S3 Bucket ${bucketName} already exists in ${existingBucketScope.regionName} ${existingBucketScope.accountId}`,
36
+ $metadata: {},
37
+ });
38
+ }
39
+ /* v8 ignore if -- safety catch for situation that cannot happen in normal usage */
40
+ if (this.buckets.has(bucketName)) {
41
+ // Somehow the Bucket was absent from the global registry.
42
+ this.s3GlobalRegistry.registerBucket(bucketName, this.accountRegionScope);
43
+ throw new BucketAlreadyOwnedByYou({
44
+ message: `S3 Bucket ${bucketName} already exists in ${this.accountRegionScope.regionName} and is owned by ${this.accountRegionScope.accountId}`,
45
+ $metadata: {},
46
+ });
47
+ }
48
+ const bucket = new SimS3Bucket(cmd);
49
+ this.buckets.set(bucketName, bucket);
50
+ this.s3GlobalRegistry.registerBucket(bucketName, this.accountRegionScope);
51
+ return {
52
+ BucketArn: `arn:aws:s3:::${bucketName}`,
53
+ Location: `/${bucketName}`,
54
+ $metadata: {},
55
+ };
56
+ }
57
+ }
58
+ //# sourceMappingURL=create-bucket.handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-bucket.handler.js","sourceRoot":"","sources":["../../../../../src/service/s3/command/create-bucket/create-bucket.handler.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAwB,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAInD;;;;GAIG;AACH,MAAM,OAAO,0BAA0B;IAKlB;IACA;IACA;IAHnB,YACmB,kBAA4C,EAC5C,OAAiC,EACjC,gBAAqC;QAFrC,uBAAkB,GAAlB,kBAAkB,CAA0B;QAC5C,YAAO,GAAP,OAAO,CAA0B;QACjC,qBAAgB,GAAhB,gBAAgB,CAAqB;IACrD,CAAC;IAEJ;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,GAAwB;QACnC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,kCAAkC,CAAC,CAAC;QAEpE,MAAM,MAAM,EAAE,CAAC;QAEf,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,MAAyB,CAAC;QAEvD,MAAM,mBAAmB,GACvB,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QACpD,IAAI,mBAAmB,KAAK,SAAS,EAAE,CAAC;YACtC,IAAI,mBAAmB,CAAC,SAAS,KAAK,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,CAAC;gBACxE,MAAM,IAAI,uBAAuB,CAAC;oBAChC,OAAO,EAAE,aAAa,UAAU,sBAAsB,mBAAmB,CAAC,UAAU,oBAAoB,mBAAmB,CAAC,SAAS,EAAE;oBACvI,SAAS,EAAE,EAAE;iBACd,CAAC,CAAC;YACL,CAAC;YACD,MAAM,IAAI,mBAAmB,CAAC;gBAC5B,OAAO,EAAE,aAAa,UAAU,sBAAsB,mBAAmB,CAAC,UAAU,IAAI,mBAAmB,CAAC,SAAS,EAAE;gBACvH,SAAS,EAAE,EAAE;aACd,CAAC,CAAC;QACL,CAAC;QAED,mFAAmF;QACnF,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YACjC,0DAA0D;YAC1D,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAC1E,MAAM,IAAI,uBAAuB,CAAC;gBAChC,OAAO,EAAE,aAAa,UAAU,sBAAsB,IAAI,CAAC,kBAAkB,CAAC,UAAU,oBAAoB,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE;gBAC/I,SAAS,EAAE,EAAE;aACd,CAAC,CAAC;QACL,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC;QACpC,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,gBAAgB,UAAU,EAAE;YACvC,QAAQ,EAAE,IAAI,UAAU,EAAE;YAC1B,SAAS,EAAE,EAAE;SACd,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,17 @@
1
+ import type { CommandHandler } from "../../../../command/command-handler.js";
2
+ import { type GetObjectCommand, type GetObjectCommandOutput } from "@aws-sdk/client-s3";
3
+ import type { SimS3BucketName, SimS3Bucket } from "../../bucket/s3-bucket.js";
4
+ /**
5
+ * Simulated S3 GetObjectCommand handler.
6
+ *
7
+ * https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/GetObjectCommand/
8
+ */
9
+ export declare class GetObjectCommandHandler implements CommandHandler<GetObjectCommand, GetObjectCommandOutput> {
10
+ private readonly buckets;
11
+ constructor(buckets: Map<SimS3BucketName, SimS3Bucket>);
12
+ /**
13
+ * Simulate getting an Object from an S3 Bucket.
14
+ */
15
+ handle(cmd: GetObjectCommand): Promise<GetObjectCommandOutput>;
16
+ }
17
+ //# sourceMappingURL=get-object.handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-object.handler.d.ts","sourceRoot":"","sources":["../../../../../src/service/s3/command/get-object/get-object.handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,EAGL,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC5B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAI9E;;;;GAIG;AACH,qBAAa,uBAAwB,YAAW,cAAc,CAC5D,gBAAgB,EAChB,sBAAsB,CACvB;IACa,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,GAAG,CAAC,eAAe,EAAE,WAAW,CAAC;IAEvE;;OAEG;IACG,MAAM,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,sBAAsB,CAAC;CA+BrE"}
@@ -0,0 +1,44 @@
1
+ import { NoSuchBucket, NoSuchKey, } from "@aws-sdk/client-s3";
2
+ import { Readable } from "node:stream";
3
+ import { assertDefined } from "../../../../util/defined.js";
4
+ import { jitter } from "../../../../util/sleep.js";
5
+ /**
6
+ * Simulated S3 GetObjectCommand handler.
7
+ *
8
+ * https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/GetObjectCommand/
9
+ */
10
+ export class GetObjectCommandHandler {
11
+ buckets;
12
+ constructor(buckets) {
13
+ this.buckets = buckets;
14
+ }
15
+ /**
16
+ * Simulate getting an Object from an S3 Bucket.
17
+ */
18
+ async handle(cmd) {
19
+ assertDefined(cmd.input.Bucket, "GetObjectCommand.input.Bucket");
20
+ assertDefined(cmd.input.Key, "GetObjectCommand.input.Key");
21
+ const bucketName = cmd.input.Bucket;
22
+ const bucket = this.buckets.get(bucketName);
23
+ if (bucket === undefined) {
24
+ throw new NoSuchBucket({
25
+ message: `No S3 Bucket named ${bucketName}`,
26
+ $metadata: {},
27
+ });
28
+ }
29
+ await jitter();
30
+ const object = await bucket.getObject(cmd.input.Key);
31
+ if (object === undefined) {
32
+ throw new NoSuchKey({
33
+ message: `No S3 Object named ${cmd.input.Key}`,
34
+ $metadata: {},
35
+ });
36
+ }
37
+ return {
38
+ Body: Readable.from([object.body]),
39
+ Metadata: object.metadata.values,
40
+ $metadata: {},
41
+ };
42
+ }
43
+ }
44
+ //# sourceMappingURL=get-object.handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-object.handler.js","sourceRoot":"","sources":["../../../../../src/service/s3/command/get-object/get-object.handler.ts"],"names":[],"mappings":"AACA,OAAO,EACL,YAAY,EACZ,SAAS,GAGV,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAEnD;;;;GAIG;AACH,MAAM,OAAO,uBAAuB;IAIL;IAA7B,YAA6B,OAA0C;QAA1C,YAAO,GAAP,OAAO,CAAmC;IAAG,CAAC;IAE3E;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,GAAqB;QAChC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,+BAA+B,CAAC,CAAC;QACjE,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,4BAA4B,CAAC,CAAC;QAE3D,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,MAAyB,CAAC;QACvD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC5C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,IAAI,YAAY,CAAC;gBACrB,OAAO,EAAE,sBAAsB,UAAU,EAAE;gBAC3C,SAAS,EAAE,EAAE;aACd,CAAC,CAAC;QACL,CAAC;QAED,MAAM,MAAM,EAAE,CAAC;QAEf,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACrD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,IAAI,SAAS,CAAC;gBAClB,OAAO,EAAE,sBAAsB,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE;gBAC9C,SAAS,EAAE,EAAE;aACd,CAAC,CAAC;QACL,CAAC;QAED,OAAO;YACL,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAEhC;YACD,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM;YAChC,SAAS,EAAE,EAAE;SACd,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,19 @@
1
+ import type { CommandHandler } from "../../../../command/command-handler.js";
2
+ import type { ListBucketsCommand, ListBucketsCommandOutput } from "@aws-sdk/client-s3";
3
+ import type { SimS3BucketName, SimS3Bucket } from "../../bucket/s3-bucket.js";
4
+ /**
5
+ * Simulated S3 ListBucketsCommand handler.
6
+ *
7
+ * https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/ListBucketsCommand/
8
+ */
9
+ export declare class ListBucketsCommandHandler implements CommandHandler<ListBucketsCommand, ListBucketsCommandOutput> {
10
+ private readonly buckets;
11
+ constructor(buckets: Map<SimS3BucketName, SimS3Bucket>);
12
+ /**
13
+ * Simulate listing S3 Buckets.
14
+ */
15
+ handle(cmd: ListBucketsCommand): Promise<ListBucketsCommandOutput>;
16
+ private static makeContinuationToken;
17
+ private static parseContinuationToken;
18
+ }
19
+ //# sourceMappingURL=list-buckets.handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-buckets.handler.d.ts","sourceRoot":"","sources":["../../../../../src/service/s3/command/list-buckets/list-buckets.handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,KAAK,EACV,kBAAkB,EAClB,wBAAwB,EACzB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAG9E;;;;GAIG;AACH,qBAAa,yBAA0B,YAAW,cAAc,CAC9D,kBAAkB,EAClB,wBAAwB,CACzB;IACa,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,GAAG,CAAC,eAAe,EAAE,WAAW,CAAC;IAEvE;;OAEG;IACG,MAAM,CAAC,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAiDxE,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAIpC,OAAO,CAAC,MAAM,CAAC,sBAAsB;CAGtC"}
@@ -0,0 +1,52 @@
1
+ import { jitter } from "../../../../util/sleep.js";
2
+ /**
3
+ * Simulated S3 ListBucketsCommand handler.
4
+ *
5
+ * https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/ListBucketsCommand/
6
+ */
7
+ export class ListBucketsCommandHandler {
8
+ buckets;
9
+ constructor(buckets) {
10
+ this.buckets = buckets;
11
+ }
12
+ /**
13
+ * Simulate listing S3 Buckets.
14
+ */
15
+ async handle(cmd) {
16
+ await jitter();
17
+ const buckets = [...this.buckets.values()];
18
+ buckets.sort((a, b) => a.bucketName.localeCompare(b.bucketName));
19
+ const prefix = cmd.input.Prefix;
20
+ const continuationToken = cmd.input.ContinuationToken;
21
+ const maxBuckets = cmd.input.MaxBuckets ?? 10_000;
22
+ const matchingBuckets = prefix === undefined
23
+ ? buckets
24
+ : buckets.filter((bucket) => bucket.bucketName.startsWith(prefix));
25
+ const startBucketName = continuationToken === undefined
26
+ ? undefined
27
+ : ListBucketsCommandHandler.parseContinuationToken(continuationToken);
28
+ const startIndex = startBucketName === undefined
29
+ ? 0
30
+ : Math.max(0, matchingBuckets.findIndex((bucket) => bucket.bucketName === startBucketName) + 1);
31
+ const page = matchingBuckets.slice(startIndex, startIndex + maxBuckets);
32
+ const lastBucket = page.at(-1);
33
+ const hasMoreBuckets = startIndex + page.length < matchingBuckets.length;
34
+ return {
35
+ Buckets: page.map((bucket) => ({
36
+ Name: bucket.bucketName,
37
+ })),
38
+ ContinuationToken: hasMoreBuckets && lastBucket !== undefined
39
+ ? ListBucketsCommandHandler.makeContinuationToken(lastBucket.bucketName)
40
+ : undefined,
41
+ Prefix: prefix,
42
+ $metadata: {},
43
+ };
44
+ }
45
+ static makeContinuationToken(bucketName) {
46
+ return Buffer.from(bucketName, "utf8").toString("base64url");
47
+ }
48
+ static parseContinuationToken(token) {
49
+ return Buffer.from(token, "base64url").toString("utf8");
50
+ }
51
+ }
52
+ //# sourceMappingURL=list-buckets.handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-buckets.handler.js","sourceRoot":"","sources":["../../../../../src/service/s3/command/list-buckets/list-buckets.handler.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAEnD;;;;GAIG;AACH,MAAM,OAAO,yBAAyB;IAIP;IAA7B,YAA6B,OAA0C;QAA1C,YAAO,GAAP,OAAO,CAAmC;IAAG,CAAC;IAE3E;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,GAAuB;QAClC,MAAM,MAAM,EAAE,CAAC;QAEf,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;QAEjE,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;QAChC,MAAM,iBAAiB,GAAG,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC;QACtD,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,UAAU,IAAI,MAAM,CAAC;QAElD,MAAM,eAAe,GACnB,MAAM,KAAK,SAAS;YAClB,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;QAEvE,MAAM,eAAe,GACnB,iBAAiB,KAAK,SAAS;YAC7B,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,yBAAyB,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,CAAC;QAE1E,MAAM,UAAU,GACd,eAAe,KAAK,SAAS;YAC3B,CAAC,CAAC,CAAC;YACH,CAAC,CAAC,IAAI,CAAC,GAAG,CACN,CAAC,EACD,eAAe,CAAC,SAAS,CACvB,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,KAAK,eAAe,CAClD,GAAG,CAAC,CACN,CAAC;QAER,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,UAAU,EAAE,UAAU,GAAG,UAAU,CAAC,CAAC;QACxE,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,cAAc,GAAG,UAAU,GAAG,IAAI,CAAC,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC;QAEzE,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;gBAC7B,IAAI,EAAE,MAAM,CAAC,UAAU;aACxB,CAAC,CAAC;YACH,iBAAiB,EACf,cAAc,IAAI,UAAU,KAAK,SAAS;gBACxC,CAAC,CAAC,yBAAyB,CAAC,qBAAqB,CAC7C,UAAU,CAAC,UAAU,CACtB;gBACH,CAAC,CAAC,SAAS;YACf,MAAM,EAAE,MAAM;YACd,SAAS,EAAE,EAAE;SACd,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,qBAAqB,CAAC,UAAkB;QACrD,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC/D,CAAC;IAEO,MAAM,CAAC,sBAAsB,CAAC,KAAa;QACjD,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC1D,CAAC;CACF"}
@@ -0,0 +1,17 @@
1
+ import type { CommandHandler } from "../../../../command/command-handler.js";
2
+ import { type ListObjectsCommand, type ListObjectsCommandOutput } from "@aws-sdk/client-s3";
3
+ import type { SimS3BucketName, SimS3Bucket } from "../../bucket/s3-bucket.js";
4
+ /**
5
+ * Simulated S3 ListObjectsCommand handler.
6
+ *
7
+ * https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/ListObjectsCommand/
8
+ */
9
+ export declare class ListObjectsCommandHandler implements CommandHandler<ListObjectsCommand, ListObjectsCommandOutput> {
10
+ private readonly buckets;
11
+ constructor(buckets: Map<SimS3BucketName, SimS3Bucket>);
12
+ /**
13
+ * Simulate listing Objects in an S3 Bucket.
14
+ */
15
+ handle(cmd: ListObjectsCommand): Promise<ListObjectsCommandOutput>;
16
+ }
17
+ //# sourceMappingURL=list-objects.handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-objects.handler.d.ts","sourceRoot":"","sources":["../../../../../src/service/s3/command/list-objects/list-objects.handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,wBAAwB,EAC9B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAI9E;;;;GAIG;AACH,qBAAa,yBAA0B,YAAW,cAAc,CAC9D,kBAAkB,EAClB,wBAAwB,CACzB;IACa,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,GAAG,CAAC,eAAe,EAAE,WAAW,CAAC;IAEvE;;OAEG;IACG,MAAM,CAAC,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAAC,wBAAwB,CAAC;CA6CzE"}