@kensio/yulin 0.5.0 → 0.6.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 (63) hide show
  1. package/README.md +9 -5
  2. package/dist/index.d.ts +8 -1
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +4 -1
  5. package/dist/index.js.map +1 -1
  6. package/dist/serve/controller/sim-aws-service-controller-container.d.ts +1 -3
  7. package/dist/serve/controller/sim-aws-service-controller-container.d.ts.map +1 -1
  8. package/dist/serve/controller/sim-aws-service-controller-container.js +1 -12
  9. package/dist/serve/controller/sim-aws-service-controller-container.js.map +1 -1
  10. package/dist/serve/controller/sim-service-controller.d.ts +1 -2
  11. package/dist/serve/controller/sim-service-controller.d.ts.map +1 -1
  12. package/dist/service/aws/arn.d.ts +3 -3
  13. package/dist/service/aws/arn.d.ts.map +1 -1
  14. package/dist/service/aws/arn.js +2 -2
  15. package/dist/service/aws/arn.js.map +1 -1
  16. package/dist/service/aws/sim-aws-account-region-scope.d.ts +11 -16
  17. package/dist/service/aws/sim-aws-account-region-scope.d.ts.map +1 -1
  18. package/dist/service/aws/sim-aws-account-region-scope.js +7 -18
  19. package/dist/service/aws/sim-aws-account-region-scope.js.map +1 -1
  20. package/dist/service/aws/sim-aws-account.d.ts +8 -12
  21. package/dist/service/aws/sim-aws-account.d.ts.map +1 -1
  22. package/dist/service/aws/sim-aws-account.js +5 -9
  23. package/dist/service/aws/sim-aws-account.js.map +1 -1
  24. package/dist/service/aws/sim-aws-region.d.ts +8 -12
  25. package/dist/service/aws/sim-aws-region.d.ts.map +1 -1
  26. package/dist/service/aws/sim-aws-region.js +5 -9
  27. package/dist/service/aws/sim-aws-region.js.map +1 -1
  28. package/dist/service/aws/sim-aws-services.d.ts +12 -11
  29. package/dist/service/aws/sim-aws-services.d.ts.map +1 -1
  30. package/dist/service/aws/sim-aws-services.js +1 -1
  31. package/dist/service/aws/sim-aws-services.js.map +1 -1
  32. package/dist/service/aws/sim-aws.d.ts +25 -15
  33. package/dist/service/aws/sim-aws.d.ts.map +1 -1
  34. package/dist/service/aws/sim-aws.js +35 -13
  35. package/dist/service/aws/sim-aws.js.map +1 -1
  36. package/dist/service/dynamodb/index.d.ts +1 -0
  37. package/dist/service/dynamodb/index.d.ts.map +1 -1
  38. package/dist/service/dynamodb/index.js +1 -0
  39. package/dist/service/dynamodb/index.js.map +1 -1
  40. package/dist/service/dynamodb/install-sim-dynamodb.d.ts +12 -0
  41. package/dist/service/dynamodb/install-sim-dynamodb.d.ts.map +1 -0
  42. package/dist/service/dynamodb/install-sim-dynamodb.js +11 -0
  43. package/dist/service/dynamodb/install-sim-dynamodb.js.map +1 -0
  44. package/dist/service/s3/index.d.ts +1 -0
  45. package/dist/service/s3/index.d.ts.map +1 -1
  46. package/dist/service/s3/index.js +1 -0
  47. package/dist/service/s3/index.js.map +1 -1
  48. package/dist/service/s3/install-sim-s3.d.ts +12 -0
  49. package/dist/service/s3/install-sim-s3.d.ts.map +1 -0
  50. package/dist/service/s3/install-sim-s3.js +17 -0
  51. package/dist/service/s3/install-sim-s3.js.map +1 -0
  52. package/dist/service/s3/serve/sim-s3-controller.d.ts +2 -1
  53. package/dist/service/s3/serve/sim-s3-controller.d.ts.map +1 -1
  54. package/dist/service/s3/serve/sim-s3-controller.js.map +1 -1
  55. package/dist/service/s3/serve/sim-s3-req-router.d.ts +2 -1
  56. package/dist/service/s3/serve/sim-s3-req-router.d.ts.map +1 -1
  57. package/dist/service/s3/serve/sim-s3-req-router.js +2 -4
  58. package/dist/service/s3/serve/sim-s3-req-router.js.map +1 -1
  59. package/dist/service/s3/sim-s3.d.ts +6 -0
  60. package/dist/service/s3/sim-s3.d.ts.map +1 -1
  61. package/dist/service/s3/sim-s3.js +8 -0
  62. package/dist/service/s3/sim-s3.js.map +1 -1
  63. package/package.json +5 -3
package/README.md CHANGED
@@ -16,12 +16,14 @@ Create and interact directly with a simulated AWS:
16
16
 
17
17
  ```typescript
18
18
  import { SimAws } from "@kensio/yulin";
19
+ import { installSimDynamoDb } from "@kensio/yulin/dynamodb"
19
20
  import { CreateTableCommand } from "@aws-sdk/client-dynamodb";
20
21
 
21
22
  const simAws = new SimAws();
23
+ installSimDynamoDb(simAws);
22
24
 
23
25
  // Default Account and Region.
24
- await simAws.dynamoDb().createTable(
26
+ await simAws.service("dynamoDb").createTable(
25
27
  new CreateTableCommand({
26
28
  TableName: "FoobarTable",
27
29
  KeySchema: [{ AttributeName: "id", KeyType: "HASH" }],
@@ -29,13 +31,13 @@ await simAws.dynamoDb().createTable(
29
31
  );
30
32
 
31
33
  // Specify Account.
32
- await simAws.account("111111111111").dynamoDb().createTable({ ... });
34
+ await simAws.account("111111111111").service("dynamoDb").createTable({ ... });
33
35
 
34
36
  // Specify Region.
35
- await simAws.region("eu-west-2").dynamoDb().createTable({ ... });
37
+ await simAws.region("eu-west-2").service("dynamoDb").createTable({ ... });
36
38
 
37
39
  // Specify Account and Region.
38
- await simAws.account("111111111111").region("eu-west-2").dynamoDb().createTable({ ... });
40
+ await simAws.account("111111111111").region("eu-west-2").service("dynamoDb").createTable({ ... });
39
41
  ```
40
42
 
41
43
  AWS state is simulated internally, so you can test realistic interactions with multiple AWS
@@ -63,6 +65,7 @@ You can listen on a port to serve your simulated AWS on localhost:
63
65
 
64
66
  ```typescript
65
67
  import { SimAws } from "@kensio/yulin";
68
+ import { installSimS3 } from "@kensio/yulin/s3";
66
69
  import { serveSimAws } from "@kensio/yulin/serve";
67
70
  import {
68
71
  CreateBucketCommand,
@@ -71,9 +74,10 @@ import {
71
74
  } from "@aws-sdk/client-s3";
72
75
 
73
76
  const simAws = new SimAws();
77
+ installSimS3(simAws);
74
78
  const srv = await serveSimAws(simAws); // Chooses available port on localhost.
75
79
 
76
- const simS3 = srv.simAws.region("eu-west-2").s3();
80
+ const simS3 = srv.simAws.region("eu-west-2").service("s3");
77
81
  await simS3.createBucket(new CreateBucketCommand({ Bucket: "foo-site" }));
78
82
  await simS3.putBucketWebsite(new PutBucketWebsiteCommand({
79
83
  Bucket: "foo-site",
package/dist/index.d.ts CHANGED
@@ -1,2 +1,9 @@
1
- export {};
1
+ export { SimAws } from "./service/aws/sim-aws.js";
2
+ export { SimAwsAccount } from "./service/aws/sim-aws-account.js";
3
+ export { SimAwsRegion } from "./service/aws/sim-aws-region.js";
4
+ export { SimAwsAccountRegionContainer } from "./service/aws/sim-aws-account-region-scope.js";
5
+ export type { NoSimAwsServices, SimAwsAccountRegionScopes, SimAwsServiceMap, } from "./service/aws/sim-aws-services.js";
6
+ export type { AwsRegionName } from "./service/aws/sim-aws-region.js";
7
+ export type { SimAwsAccountId } from "./service/aws/sim-aws-account.js";
8
+ export type { SimAwsAccountRegionScope } from "./service/aws/sim-aws-account-region-scope.js";
2
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,4BAA4B,EAAE,MAAM,+CAA+C,CAAC;AAC7F,YAAY,EACV,gBAAgB,EAChB,yBAAyB,EACzB,gBAAgB,GACjB,MAAM,mCAAmC,CAAC;AAC3C,YAAY,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AACrE,YAAY,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACxE,YAAY,EAAE,wBAAwB,EAAE,MAAM,+CAA+C,CAAC"}
package/dist/index.js CHANGED
@@ -1,2 +1,5 @@
1
- export {};
1
+ export { SimAws } from "./service/aws/sim-aws.js";
2
+ export { SimAwsAccount } from "./service/aws/sim-aws-account.js";
3
+ export { SimAwsRegion } from "./service/aws/sim-aws-region.js";
4
+ export { SimAwsAccountRegionContainer } from "./service/aws/sim-aws-account-region-scope.js";
2
5
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,4BAA4B,EAAE,MAAM,+CAA+C,CAAC"}
@@ -1,5 +1,4 @@
1
1
  import type { SimAws } from "../../service/aws/sim-aws.js";
2
- import type { SimAwsServiceName } from "../../service/aws/sim-aws-services.js";
3
2
  import type { SimAwsServiceController } from "./sim-service-controller.js";
4
3
  /**
5
4
  * Registry for simulated AWS localhost service controllers.
@@ -7,11 +6,10 @@ import type { SimAwsServiceController } from "./sim-service-controller.js";
7
6
  export declare class SimAwsServiceControllerContainer {
8
7
  private readonly simAws;
9
8
  private readonly controllers;
10
- private readonly controllerFactories;
11
9
  constructor(simAws: SimAws);
12
10
  /**
13
11
  * Get the singleton controller for a simulated AWS service.
14
12
  */
15
- controllerForService(service: SimAwsServiceName): SimAwsServiceController;
13
+ controllerForService(service: string): SimAwsServiceController;
16
14
  }
17
15
  //# sourceMappingURL=sim-aws-service-controller-container.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sim-aws-service-controller-container.d.ts","sourceRoot":"","sources":["../../../src/serve/controller/sim-aws-service-controller-container.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAG/E,OAAO,KAAK,EACV,uBAAuB,EAExB,MAAM,6BAA6B,CAAC;AAErC;;GAEG;AACH,qBAAa,gCAAgC;IAc/B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAbnC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAuC;IAEnE,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CASjC;gBAE0B,MAAM,EAAE,MAAM;IAE3C;;OAEG;IACH,oBAAoB,CAAC,OAAO,EAAE,iBAAiB,GAAG,uBAAuB;CAW1E"}
1
+ {"version":3,"file":"sim-aws-service-controller-container.d.ts","sourceRoot":"","sources":["../../../src/serve/controller/sim-aws-service-controller-container.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAE3D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAE3E;;GAEG;AACH,qBAAa,gCAAgC;IAG/B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFnC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAuC;gBAEtC,MAAM,EAAE,MAAM;IAE3C;;OAEG;IACH,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,uBAAuB;CAK/D"}
@@ -1,4 +1,3 @@
1
- import { SimS3ServiceController } from "../../service/s3/serve/sim-s3-controller.js";
2
1
  import { Memo } from "../../util/memo/memo.js";
3
2
  /**
4
3
  * Registry for simulated AWS localhost service controllers.
@@ -6,12 +5,6 @@ import { Memo } from "../../util/memo/memo.js";
6
5
  export class SimAwsServiceControllerContainer {
7
6
  simAws;
8
7
  controllers = new Memo();
9
- controllerFactories = new Map([
10
- [
11
- "s3",
12
- (simAws) => new SimS3ServiceController(simAws),
13
- ],
14
- ]);
15
8
  constructor(simAws) {
16
9
  this.simAws = simAws;
17
10
  }
@@ -19,11 +12,7 @@ export class SimAwsServiceControllerContainer {
19
12
  * Get the singleton controller for a simulated AWS service.
20
13
  */
21
14
  controllerForService(service) {
22
- const factory = this.controllerFactories.get(service);
23
- if (factory === undefined) {
24
- throw new Error(`No controller implemented for simulated AWS service ${service}`);
25
- }
26
- return this.controllers.getOrCreate(service, () => factory(this.simAws));
15
+ return this.controllers.getOrCreate(service, () => this.simAws.createServiceController(service));
27
16
  }
28
17
  }
29
18
  //# sourceMappingURL=sim-aws-service-controller-container.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sim-aws-service-controller-container.js","sourceRoot":"","sources":["../../../src/serve/controller/sim-aws-service-controller-container.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AACrF,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAM/C;;GAEG;AACH,MAAM,OAAO,gCAAgC;IAcd;IAbZ,WAAW,GAAG,IAAI,IAAI,EAA2B,CAAC;IAElD,mBAAmB,GAAG,IAAI,GAAG,CAG5C;QACA;YACE,IAAI;YACJ,CAAC,MAAc,EAA0B,EAAE,CACzC,IAAI,sBAAsB,CAAC,MAAM,CAAC;SACrC;KACF,CAAC,CAAC;IAEH,YAA6B,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAAG,CAAC;IAE/C;;OAEG;IACH,oBAAoB,CAAC,OAA0B;QAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAEtD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CACb,uDAAuD,OAAO,EAAE,CACjE,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3E,CAAC;CACF"}
1
+ {"version":3,"file":"sim-aws-service-controller-container.js","sourceRoot":"","sources":["../../../src/serve/controller/sim-aws-service-controller-container.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAG/C;;GAEG;AACH,MAAM,OAAO,gCAAgC;IAGd;IAFZ,WAAW,GAAG,IAAI,IAAI,EAA2B,CAAC;IAEnE,YAA6B,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAAG,CAAC;IAE/C;;OAEG;IACH,oBAAoB,CAAC,OAAe;QAClC,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,EAAE,CAChD,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAC7C,CAAC;IACJ,CAAC;CACF"}
@@ -1,8 +1,7 @@
1
- import type { SimAwsServiceName } from "../../service/aws/sim-aws-services.js";
2
1
  import type { AwsRegionName } from "../../service/aws/sim-aws-region.js";
3
2
  import type { SimAws } from "../../service/aws/sim-aws.js";
4
3
  export interface SimAwsServiceTarget {
5
- readonly service: SimAwsServiceName;
4
+ readonly service: string;
6
5
  readonly resourceName: string;
7
6
  readonly regionName?: AwsRegionName;
8
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sim-service-controller.d.ts","sourceRoot":"","sources":["../../../src/serve/controller/sim-service-controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAE3D,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,aAAa,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,MAAM,8BAA8B,GAAG,CAC3C,MAAM,EAAE,MAAM,KACX,uBAAuB,CAAC;AAE7B;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,aAAa,CACX,MAAM,EAAE,mBAAmB,EAC3B,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,QAAQ,CAAC,CAAC;CACtB"}
1
+ {"version":3,"file":"sim-service-controller.d.ts","sourceRoot":"","sources":["../../../src/serve/controller/sim-service-controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAE3D,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,aAAa,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,MAAM,8BAA8B,GAAG,CAC3C,MAAM,EAAE,MAAM,KACX,uBAAuB,CAAC;AAE7B;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,aAAa,CACX,MAAM,EAAE,mBAAmB,EAC3B,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,QAAQ,CAAC,CAAC;CACtB"}
@@ -1,10 +1,10 @@
1
1
  import { type AwsRegionName } from "./sim-aws-region.js";
2
2
  import { type SimAwsAccountId } from "./sim-aws-account.js";
3
- import { type SimAwsServiceName } from "./sim-aws-services.js";
4
- export type SimArn = `arn:aws:${SimAwsServiceName}:${AwsRegionName}:${SimAwsAccountId}:${string}/${string}`;
3
+ export type SimArnServiceName = string;
4
+ export type SimArn = `arn:aws:${SimArnServiceName}:${AwsRegionName}:${SimAwsAccountId}:${string}/${string}`;
5
5
  export interface SimArnComponents {
6
6
  partition: "aws";
7
- service: SimAwsServiceName;
7
+ service: SimArnServiceName;
8
8
  region: AwsRegionName;
9
9
  accountId: SimAwsAccountId;
10
10
  resourceType: string;
@@ -1 +1 @@
1
- {"version":3,"file":"arn.d.ts","sourceRoot":"","sources":["../../../src/service/aws/arn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAqB,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,uBAAuB,CAAC;AAE/B,MAAM,MAAM,MAAM,GAChB,WAAW,iBAAiB,IAAI,aAAa,IAAI,eAAe,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;AAEzF,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,KAAK,CAAC;IACjB,OAAO,EAAE,iBAAiB,CAAC;IAC3B,MAAM,EAAE,aAAa,CAAC;IACtB,SAAS,EAAE,eAAe,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAWD;;GAEG;AACH,wBAAgB,UAAU,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAGxE"}
1
+ {"version":3,"file":"arn.d.ts","sourceRoot":"","sources":["../../../src/service/aws/arn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAqB,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,sBAAsB,CAAC;AAI9B,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC;AAEvC,MAAM,MAAM,MAAM,GAChB,WAAW,iBAAiB,IAAI,aAAa,IAAI,eAAe,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;AAEzF,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,KAAK,CAAC;IACjB,OAAO,EAAE,iBAAiB,CAAC;IAC3B,MAAM,EAAE,aAAa,CAAC;IACtB,SAAS,EAAE,eAAe,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAaD;;GAEG;AACH,wBAAgB,UAAU,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAGxE"}
@@ -2,10 +2,10 @@ import { makeAwsRegionName } from "./sim-aws-region.js";
2
2
  import { makeSimAwsAccountId, } from "./sim-aws-account.js";
3
3
  import { DynamicFactory } from "@kensio/part-factory";
4
4
  import { faker } from "@faker-js/faker";
5
- import { SIM_AWS_SERVICE_NAMES, } from "./sim-aws-services.js";
5
+ const defaultSimArnServiceNames = ["s3", "dynamodb"];
6
6
  const simArnComponentsFactory = new DynamicFactory(() => ({
7
7
  partition: "aws",
8
- service: faker.helpers.arrayElement(SIM_AWS_SERVICE_NAMES),
8
+ service: faker.helpers.arrayElement(defaultSimArnServiceNames),
9
9
  region: makeAwsRegionName(),
10
10
  accountId: makeSimAwsAccountId(),
11
11
  resourceType: "resource",
@@ -1 +1 @@
1
- {"version":3,"file":"arn.js","sourceRoot":"","sources":["../../../src/service/aws/arn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EACL,mBAAmB,GAEpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EACL,qBAAqB,GAEtB,MAAM,uBAAuB,CAAC;AAc/B,MAAM,uBAAuB,GAAG,IAAI,cAAc,CAAmB,GAAG,EAAE,CAAC,CAAC;IAC1E,SAAS,EAAE,KAAK;IAChB,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,qBAAqB,CAAC;IAC1D,MAAM,EAAE,iBAAiB,EAAE;IAC3B,SAAS,EAAE,mBAAmB,EAAE;IAChC,YAAY,EAAE,UAAU;IACxB,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;CACtD,CAAC,CAAC,CAAC;AAEJ;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,SAAqC;IAC9D,MAAM,UAAU,GAAG,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC3D,OAAO,OAAO,UAAU,CAAC,SAAS,IAAI,UAAU,CAAC,OAAO,IAAI,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,SAAS,IAAI,UAAU,CAAC,YAAY,IAAI,UAAU,CAAC,UAAU,EAAE,CAAC;AAC9J,CAAC"}
1
+ {"version":3,"file":"arn.js","sourceRoot":"","sources":["../../../src/service/aws/arn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EACL,mBAAmB,GAEpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAgBxC,MAAM,yBAAyB,GAAG,CAAC,IAAI,EAAE,UAAU,CAAU,CAAC;AAE9D,MAAM,uBAAuB,GAAG,IAAI,cAAc,CAAmB,GAAG,EAAE,CAAC,CAAC;IAC1E,SAAS,EAAE,KAAK;IAChB,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,yBAAyB,CAAC;IAC9D,MAAM,EAAE,iBAAiB,EAAE;IAC3B,SAAS,EAAE,mBAAmB,EAAE;IAChC,YAAY,EAAE,UAAU;IACxB,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;CACtD,CAAC,CAAC,CAAC;AAEJ;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,SAAqC;IAC9D,MAAM,UAAU,GAAG,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC3D,OAAO,OAAO,UAAU,CAAC,SAAS,IAAI,UAAU,CAAC,OAAO,IAAI,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,SAAS,IAAI,UAAU,CAAC,YAAY,IAAI,UAAU,CAAC,UAAU,EAAE,CAAC;AAC9J,CAAC"}
@@ -1,31 +1,26 @@
1
1
  import { type SimAwsAccount, type SimAwsAccountId } from "./sim-aws-account.js";
2
2
  import { type AwsRegionName, type SimAwsRegion } from "./sim-aws-region.js";
3
- import type { SimAwsServices } from "./sim-aws-services.js";
4
- import { SimDynamoDb } from "../dynamodb/sim-dynamodb.js";
5
- import { SimS3 } from "../s3/sim-s3.js";
3
+ import type { NoSimAwsServices, SimAwsServiceMap } from "./sim-aws-services.js";
6
4
  import { SimAws } from "./sim-aws.js";
7
5
  import { DynamicFactory } from "@kensio/part-factory";
8
- import type { SimS3GlobalRegistry } from "../s3/sim-s3-global-registry.js";
9
6
  export type SimAccountRegionScopeKey = `${SimAwsAccountId}:${AwsRegionName}`;
10
7
  /**
11
8
  * Combined simulated AWS Account and Region scope.
9
+ * This is the real container for simulated services.
12
10
  */
13
- export declare class SimAwsAccountRegionContainer implements SimAwsServices {
11
+ export declare class SimAwsAccountRegionContainer<TServices extends SimAwsServiceMap = NoSimAwsServices> {
14
12
  private readonly simAws;
15
- readonly account: SimAwsAccount;
16
- readonly region: SimAwsRegion;
17
- private readonly s3GlobalRegistry;
13
+ readonly account: SimAwsAccount<TServices>;
14
+ readonly region: SimAwsRegion<TServices>;
18
15
  private readonly memo;
19
- private readonly accountRegionScope;
20
- constructor(simAws?: SimAws, account?: SimAwsAccount, region?: SimAwsRegion, s3GlobalRegistry?: SimS3GlobalRegistry);
16
+ readonly accountRegionScope: SimAwsAccountRegionScope;
17
+ constructor(simAws?: SimAws<TServices>, account?: SimAwsAccount<TServices>, region?: SimAwsRegion<TServices>);
21
18
  /**
22
- * Get the simulated DynamoDB service for this account and region.
19
+ * Get an installed simulated AWS service for this account and region.
20
+ * The service must be installed with the appropriate installer function
21
+ * first.
23
22
  */
24
- dynamoDb(): SimDynamoDb;
25
- /**
26
- * Get the simulated S3 service for this account and region.
27
- */
28
- s3(): SimS3;
23
+ service<TKey extends keyof TServices>(serviceName: TKey): TServices[TKey];
29
24
  }
30
25
  export interface SimAwsAccountRegionScope {
31
26
  accountId: SimAwsAccountId;
@@ -1 +1 @@
1
- {"version":3,"file":"sim-aws-account-region-scope.d.ts","sourceRoot":"","sources":["../../../src/service/aws/sim-aws-account-region-scope.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,eAAe,EACrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,KAAK,aAAa,EAElB,KAAK,YAAY,EAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAExC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAE3E,MAAM,MAAM,wBAAwB,GAAG,GAAG,eAAe,IAAI,aAAa,EAAE,CAAC;AAE7E;;GAEG;AACH,qBAAa,4BAA6B,YAAW,cAAc;IAK/D,OAAO,CAAC,QAAQ,CAAC,MAAM;aACP,OAAO,EAAE,aAAa;aACtB,MAAM,EAAE,YAAY;IACpC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IAPnC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAsB;IAC3C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC;gBAGjB,MAAM,GAAE,MAAqB,EAC9B,OAAO,GAAE,aAAqC,EAC9C,MAAM,GAAE,YAAmC,EAC1C,gBAAgB,GAAE,mBAAoD;IAQzF;;OAEG;IACH,QAAQ,IAAI,WAAW;IAMvB;;OAEG;IACH,EAAE,IAAI,KAAK;CAKZ;AAED,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,eAAe,CAAC;IAC3B,UAAU,EAAE,aAAa,CAAC;CAC3B;AAED;;GAEG;AACH,eAAO,MAAM,+BAA+B,0CAIvC,CAAC"}
1
+ {"version":3,"file":"sim-aws-account-region-scope.d.ts","sourceRoot":"","sources":["../../../src/service/aws/sim-aws-account-region-scope.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,eAAe,EACrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,KAAK,aAAa,EAElB,KAAK,YAAY,EAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEhF,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,MAAM,MAAM,wBAAwB,GAAG,GAAG,eAAe,IAAI,aAAa,EAAE,CAAC;AAE7E;;;GAGG;AACH,qBAAa,4BAA4B,CACvC,SAAS,SAAS,gBAAgB,GAAG,gBAAgB;IAOnD,OAAO,CAAC,QAAQ,CAAC,MAAM;aACP,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC;aACjC,MAAM,EAAE,YAAY,CAAC,SAAS,CAAC;IAPjD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAuB;IAE5C,SAAgB,kBAAkB,EAAE,wBAAwB,CAAC;gBAG1C,MAAM,GAAE,MAAM,CAAC,SAAS,CAA2B,EACpD,OAAO,GAAE,aAAa,CAAC,SAAS,CAAyB,EACzD,MAAM,GAAE,YAAY,CAAC,SAAS,CAAwB;IAQxE;;;;OAIG;IACH,OAAO,CAAC,IAAI,SAAS,MAAM,SAAS,EAAE,WAAW,EAAE,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;CAK1E;AAED,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,eAAe,CAAC;IAC3B,UAAU,EAAE,aAAa,CAAC;CAC3B;AAED;;GAEG;AACH,eAAO,MAAM,+BAA+B,0CAIvC,CAAC"}
@@ -1,45 +1,34 @@
1
1
  import { makeSimAwsAccountId, } from "./sim-aws-account.js";
2
2
  import { makeAwsRegionName, } from "./sim-aws-region.js";
3
- import { SimDynamoDb } from "../dynamodb/sim-dynamodb.js";
4
- import { SimS3 } from "../s3/sim-s3.js";
5
3
  import { Memo } from "../../util/memo/memo.js";
6
4
  import { SimAws } from "./sim-aws.js";
7
5
  import { DynamicFactory } from "@kensio/part-factory";
8
6
  /**
9
7
  * Combined simulated AWS Account and Region scope.
8
+ * This is the real container for simulated services.
10
9
  */
11
10
  export class SimAwsAccountRegionContainer {
12
11
  simAws;
13
12
  account;
14
13
  region;
15
- s3GlobalRegistry;
16
14
  memo = new Memo();
17
15
  accountRegionScope;
18
- constructor(simAws = new SimAws(), account = this.simAws.account(), region = this.simAws.region(), s3GlobalRegistry = this.simAws.s3GlobalRegistry()) {
16
+ constructor(simAws = new SimAws(), account = this.simAws.account(), region = this.simAws.region()) {
19
17
  this.simAws = simAws;
20
18
  this.account = account;
21
19
  this.region = region;
22
- this.s3GlobalRegistry = s3GlobalRegistry;
23
20
  this.accountRegionScope = {
24
21
  accountId: this.account.accountId,
25
22
  regionName: this.region.regionName,
26
23
  };
27
24
  }
28
25
  /**
29
- * Get the simulated DynamoDB service for this account and region.
26
+ * Get an installed simulated AWS service for this account and region.
27
+ * The service must be installed with the appropriate installer function
28
+ * first.
30
29
  */
31
- dynamoDb() {
32
- return this.memo.getOrCreate("dynamoDb", () => {
33
- return new SimDynamoDb(this.accountRegionScope, this.simAws.background);
34
- });
35
- }
36
- /**
37
- * Get the simulated S3 service for this account and region.
38
- */
39
- s3() {
40
- return this.memo.getOrCreate("s3", () => {
41
- return new SimS3(this.accountRegionScope, this.s3GlobalRegistry);
42
- });
30
+ service(serviceName) {
31
+ return this.memo.getOrCreate(String(serviceName), () => this.simAws.createService(serviceName, this));
43
32
  }
44
33
  }
45
34
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"sim-aws-account-region-scope.js","sourceRoot":"","sources":["../../../src/service/aws/sim-aws-account-region-scope.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,GAGpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,iBAAiB,GAElB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAKtD;;GAEG;AACH,MAAM,OAAO,4BAA4B;IAKpB;IACD;IACA;IACC;IAPF,IAAI,GAAG,IAAI,IAAI,EAAU,CAAC;IAC1B,kBAAkB,CAAC;IAEpC,YACmB,SAAiB,IAAI,MAAM,EAAE,EAC9B,UAAyB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EAC9C,SAAuB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAC1C,mBAAwC,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE;QAHtE,WAAM,GAAN,MAAM,CAAuB;QAC9B,YAAO,GAAP,OAAO,CAAuC;QAC9C,WAAM,GAAN,MAAM,CAAqC;QAC1C,qBAAgB,GAAhB,gBAAgB,CAAsD;QAEvF,IAAI,CAAC,kBAAkB,GAAG;YACxB,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;YACjC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;SACnC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,GAAG,EAAE;YAC5C,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,EAAE;QACA,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE;YACtC,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAOD;;GAEG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAC1C,IAAI,cAAc,CAA2B,GAAG,EAAE,CAAC,CAAC;IAClD,SAAS,EAAE,mBAAmB,EAAE;IAChC,UAAU,EAAE,iBAAiB,EAAE;CAChC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"sim-aws-account-region-scope.js","sourceRoot":"","sources":["../../../src/service/aws/sim-aws-account-region-scope.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,GAGpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,iBAAiB,GAElB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAItD;;;GAGG;AACH,MAAM,OAAO,4BAA4B;IAQpB;IACD;IACA;IAPD,IAAI,GAAG,IAAI,IAAI,EAAW,CAAC;IAE5B,kBAAkB,CAA2B;IAE7D,YACmB,SAA4B,IAAI,MAAM,EAAa,EACpD,UAAoC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EACzD,SAAkC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;QAFrD,WAAM,GAAN,MAAM,CAA6C;QACpD,YAAO,GAAP,OAAO,CAAkD;QACzD,WAAM,GAAN,MAAM,CAAgD;QAEtE,IAAI,CAAC,kBAAkB,GAAG;YACxB,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;YACjC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;SACnC,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,OAAO,CAA+B,WAAiB;QACrD,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,GAAG,EAAE,CACrD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,CAC7C,CAAC;IACJ,CAAC;CACF;AAOD;;GAEG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAC1C,IAAI,cAAc,CAA2B,GAAG,EAAE,CAAC,CAAC;IAClD,SAAS,EAAE,mBAAmB,EAAE;IAChC,UAAU,EAAE,iBAAiB,EAAE;CAChC,CAAC,CAAC,CAAC"}
@@ -1,30 +1,26 @@
1
- import type { SimDynamoDb } from "../dynamodb/sim-dynamodb.js";
2
1
  import type { AwsRegionName } from "./sim-aws-region.js";
3
- import type { SimS3 } from "../s3/sim-s3.js";
4
2
  import type { Brand } from "../../util/brand.type.js";
5
- import type { SimAwsAccountRegionScopes, SimAwsServices } from "./sim-aws-services.js";
3
+ import type { NoSimAwsServices, SimAwsAccountRegionScopes, SimAwsServiceMap } from "./sim-aws-services.js";
6
4
  import type { SimAwsAccountRegionContainer } from "./sim-aws-account-region-scope.js";
7
5
  export type SimAwsAccountId = Brand<string, "SimAwsAccountId">;
8
6
  export declare const DEFAULT_SIM_AWS_ACCOUNT_ID: SimAwsAccountId;
9
7
  /**
10
8
  * Container for simulated AWS services in one AWS Account.
11
9
  */
12
- export declare class SimAwsAccount implements SimAwsServices {
10
+ export declare class SimAwsAccount<TServices extends SimAwsServiceMap = NoSimAwsServices> {
13
11
  private readonly accountRegionScopes;
14
12
  readonly accountId: SimAwsAccountId;
15
- constructor(accountRegionScopes: SimAwsAccountRegionScopes, accountId?: SimAwsAccountId);
13
+ constructor(accountRegionScopes: SimAwsAccountRegionScopes<TServices>, accountId?: SimAwsAccountId);
16
14
  /**
17
15
  * Get a simulated AWS Region scoped for this Account.
18
16
  */
19
- region(regionName?: AwsRegionName): SimAwsAccountRegionContainer;
17
+ region(regionName?: AwsRegionName): SimAwsAccountRegionContainer<TServices>;
20
18
  /**
21
- * Get the simulated DynamoDB service for this Account.
19
+ * Get an installed simulated AWS service for this Account's default Region.
20
+ * The service must be installed with the appropriate installer function
21
+ * first.
22
22
  */
23
- dynamoDb(): SimDynamoDb;
24
- /**
25
- * Get the simulated S3 service for this Account.
26
- */
27
- s3(): SimS3;
23
+ service<TKey extends keyof TServices>(serviceName: TKey): TServices[TKey];
28
24
  }
29
25
  /**
30
26
  * Generate a fake AWS Account ID.
@@ -1 +1 @@
1
- {"version":3,"file":"sim-aws-account.d.ts","sourceRoot":"","sources":["../../../src/service/aws/sim-aws-account.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,KAAK,EACV,yBAAyB,EACzB,cAAc,EACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AAGtF,MAAM,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;AAE/D,eAAO,MAAM,0BAA0B,EAAqB,eAAe,CAAC;AAE5E;;GAEG;AACH,qBAAa,aAAc,YAAW,cAAc;IAEhD,OAAO,CAAC,QAAQ,CAAC,mBAAmB;aACpB,SAAS,EAAE,eAAe;gBADzB,mBAAmB,EAAE,yBAAyB,EAC/C,SAAS,GAAE,eAA4C;IAGzE;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,EAAE,aAAa,GAAG,4BAA4B;IAOhE;;OAEG;IACH,QAAQ,IAAI,WAAW;IAIvB;;OAEG;IACH,EAAE,IAAI,KAAK;CAGZ;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,eAAe,CAErD"}
1
+ {"version":3,"file":"sim-aws-account.d.ts","sourceRoot":"","sources":["../../../src/service/aws/sim-aws-account.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,KAAK,EACV,gBAAgB,EAChB,yBAAyB,EACzB,gBAAgB,EACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AAGtF,MAAM,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;AAE/D,eAAO,MAAM,0BAA0B,EAAqB,eAAe,CAAC;AAE5E;;GAEG;AACH,qBAAa,aAAa,CACxB,SAAS,SAAS,gBAAgB,GAAG,gBAAgB;IAGnD,OAAO,CAAC,QAAQ,CAAC,mBAAmB;aACpB,SAAS,EAAE,eAAe;gBADzB,mBAAmB,EAAE,yBAAyB,CAAC,SAAS,CAAC,EAC1D,SAAS,GAAE,eAA4C;IAGzE;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,EAAE,aAAa,GAAG,4BAA4B,CAAC,SAAS,CAAC;IAO3E;;;;OAIG;IACH,OAAO,CAAC,IAAI,SAAS,MAAM,SAAS,EAAE,WAAW,EAAE,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;CAG1E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,eAAe,CAErD"}
@@ -17,16 +17,12 @@ export class SimAwsAccount {
17
17
  return this.accountRegionScopes.accountRegionScope(this.accountId, regionName);
18
18
  }
19
19
  /**
20
- * Get the simulated DynamoDB service for this Account.
20
+ * Get an installed simulated AWS service for this Account's default Region.
21
+ * The service must be installed with the appropriate installer function
22
+ * first.
21
23
  */
22
- dynamoDb() {
23
- return this.region().dynamoDb();
24
- }
25
- /**
26
- * Get the simulated S3 service for this Account.
27
- */
28
- s3() {
29
- return this.region().s3();
24
+ service(serviceName) {
25
+ return this.region().service(serviceName);
30
26
  }
31
27
  }
32
28
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"sim-aws-account.js","sourceRoot":"","sources":["../../../src/service/aws/sim-aws-account.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAIxC,MAAM,CAAC,MAAM,0BAA0B,GAAG,cAAiC,CAAC;AAE5E;;GAEG;AACH,MAAM,OAAO,aAAa;IAEL;IACD;IAFlB,YACmB,mBAA8C,EAC/C,YAA6B,0BAA0B;QADtD,wBAAmB,GAAnB,mBAAmB,CAA2B;QAC/C,cAAS,GAAT,SAAS,CAA8C;IACtE,CAAC;IAEJ;;OAEG;IACH,MAAM,CAAC,UAA0B;QAC/B,OAAO,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,CAChD,IAAI,CAAC,SAAS,EACd,UAAU,CACX,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,EAAE;QACA,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;IAC5B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB;IACjC,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAoB,CAAC;AACjE,CAAC"}
1
+ {"version":3,"file":"sim-aws-account.js","sourceRoot":"","sources":["../../../src/service/aws/sim-aws-account.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAIxC,MAAM,CAAC,MAAM,0BAA0B,GAAG,cAAiC,CAAC;AAE5E;;GAEG;AACH,MAAM,OAAO,aAAa;IAIL;IACD;IAFlB,YACmB,mBAAyD,EAC1D,YAA6B,0BAA0B;QADtD,wBAAmB,GAAnB,mBAAmB,CAAsC;QAC1D,cAAS,GAAT,SAAS,CAA8C;IACtE,CAAC;IAEJ;;OAEG;IACH,MAAM,CAAC,UAA0B;QAC/B,OAAO,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,CAChD,IAAI,CAAC,SAAS,EACd,UAAU,CACX,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,OAAO,CAA+B,WAAiB;QACrD,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC5C,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB;IACjC,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAoB,CAAC;AACjE,CAAC"}
@@ -1,30 +1,26 @@
1
1
  import type { SimAwsAccountId } from "./sim-aws-account.js";
2
2
  import type { SimAwsAccountRegionContainer } from "./sim-aws-account-region-scope.js";
3
- import type { SimAwsAccountRegionScopes, SimAwsServices } from "./sim-aws-services.js";
4
- import type { SimS3 } from "../s3/sim-s3.js";
5
- import type { SimDynamoDb } from "../dynamodb/sim-dynamodb.js";
3
+ import type { NoSimAwsServices, SimAwsAccountRegionScopes, SimAwsServiceMap } from "./sim-aws-services.js";
6
4
  export declare const AWS_REGION_NAMES: readonly ["us-east-1", "us-east-2", "us-west-1", "us-west-2", "af-south-1", "ap-east-1", "ap-south-2", "ap-southeast-3", "ap-southeast-5", "ap-southeast-4", "ap-south-1", "ap-southeast-6", "ap-northeast-3", "ap-northeast-2", "ap-southeast-1", "ap-southeast-2", "ap-east-2", "ap-southeast-7", "ap-northeast-1", "ca-central-1", "ca-west-1", "eu-central-1", "eu-west-1", "eu-west-2", "eu-south-1", "eu-west-3", "eu-south-2", "eu-north-1", "eu-central-2", "il-central-1", "mx-central-1", "me-south-1", "me-central-1", "sa-east-1"];
7
5
  export type AwsRegionName = (typeof AWS_REGION_NAMES)[number];
8
6
  export declare const DEFAULT_SIM_AWS_REGION_NAME: "us-east-1";
9
7
  /**
10
8
  * Simulated AWS Region.
11
9
  */
12
- export declare class SimAwsRegion implements SimAwsServices {
10
+ export declare class SimAwsRegion<TServices extends SimAwsServiceMap = NoSimAwsServices> {
13
11
  private readonly accountRegionScopes;
14
12
  readonly regionName: AwsRegionName;
15
- constructor(accountRegionScopes: SimAwsAccountRegionScopes, regionName?: AwsRegionName);
13
+ constructor(accountRegionScopes: SimAwsAccountRegionScopes<TServices>, regionName?: AwsRegionName);
16
14
  /**
17
15
  * Get a simulated AWS Account scoped for this Region.
18
16
  */
19
- account(accountId?: SimAwsAccountId | string): SimAwsAccountRegionContainer;
17
+ account(accountId?: SimAwsAccountId | string): SimAwsAccountRegionContainer<TServices>;
20
18
  /**
21
- * Get the simulated DynamoDB service scoped for this Region.
19
+ * Get an installed simulated AWS service for this Region's default Account.
20
+ * The service must be installed with the appropriate installer function
21
+ * first.
22
22
  */
23
- dynamoDb(): SimDynamoDb;
24
- /**
25
- * Get the simulated S3 service scoped for this Region.
26
- */
27
- s3(): SimS3;
23
+ service<TKey extends keyof TServices>(serviceName: TKey): TServices[TKey];
28
24
  }
29
25
  /**
30
26
  * Choose a random AWS Region name.
@@ -1 +1 @@
1
- {"version":3,"file":"sim-aws-region.d.ts","sourceRoot":"","sources":["../../../src/service/aws/sim-aws-region.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AACtF,OAAO,KAAK,EACV,yBAAyB,EACzB,cAAc,EACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAG/D,eAAO,MAAM,gBAAgB,ghBAmCnB,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE9D,eAAO,MAAM,2BAA2B,EAAG,WAAoB,CAAC;AAEhE;;GAEG;AACH,qBAAa,YAAa,YAAW,cAAc;IAE/C,OAAO,CAAC,QAAQ,CAAC,mBAAmB;aACpB,UAAU,EAAE,aAAa;gBADxB,mBAAmB,EAAE,yBAAyB,EAC/C,UAAU,GAAE,aAA2C;IAGzE;;OAEG;IACH,OAAO,CAAC,SAAS,CAAC,EAAE,eAAe,GAAG,MAAM,GAAG,4BAA4B;IAO3E;;OAEG;IACH,QAAQ,IAAI,WAAW;IAIvB;;OAEG;IACH,EAAE,IAAI,KAAK;CAGZ;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,aAAa,CAEjD"}
1
+ {"version":3,"file":"sim-aws-region.d.ts","sourceRoot":"","sources":["../../../src/service/aws/sim-aws-region.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AACtF,OAAO,KAAK,EACV,gBAAgB,EAChB,yBAAyB,EACzB,gBAAgB,EACjB,MAAM,uBAAuB,CAAC;AAG/B,eAAO,MAAM,gBAAgB,ghBAmCnB,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE9D,eAAO,MAAM,2BAA2B,EAAG,WAAoB,CAAC;AAEhE;;GAEG;AACH,qBAAa,YAAY,CACvB,SAAS,SAAS,gBAAgB,GAAG,gBAAgB;IAGnD,OAAO,CAAC,QAAQ,CAAC,mBAAmB;aACpB,UAAU,EAAE,aAAa;gBADxB,mBAAmB,EAAE,yBAAyB,CAAC,SAAS,CAAC,EAC1D,UAAU,GAAE,aAA2C;IAGzE;;OAEG;IACH,OAAO,CACL,SAAS,CAAC,EAAE,eAAe,GAAG,MAAM,GACnC,4BAA4B,CAAC,SAAS,CAAC;IAO1C;;;;OAIG;IACH,OAAO,CAAC,IAAI,SAAS,MAAM,SAAS,EAAE,WAAW,EAAE,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;CAG1E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,aAAa,CAEjD"}
@@ -53,16 +53,12 @@ export class SimAwsRegion {
53
53
  return this.accountRegionScopes.accountRegionScope(accountId, this.regionName);
54
54
  }
55
55
  /**
56
- * Get the simulated DynamoDB service scoped for this Region.
56
+ * Get an installed simulated AWS service for this Region's default Account.
57
+ * The service must be installed with the appropriate installer function
58
+ * first.
57
59
  */
58
- dynamoDb() {
59
- return this.account().dynamoDb();
60
- }
61
- /**
62
- * Get the simulated S3 service scoped for this Region.
63
- */
64
- s3() {
65
- return this.account().s3();
60
+ service(serviceName) {
61
+ return this.account().service(serviceName);
66
62
  }
67
63
  }
68
64
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"sim-aws-region.js","sourceRoot":"","sources":["../../../src/service/aws/sim-aws-region.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAExC,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,YAAY;IACZ,WAAW;IACX,YAAY;IACZ,gBAAgB;IAChB,gBAAgB;IAChB,gBAAgB;IAChB,YAAY;IACZ,gBAAgB;IAChB,gBAAgB;IAChB,gBAAgB;IAChB,gBAAgB;IAChB,gBAAgB;IAChB,WAAW;IACX,gBAAgB;IAChB,gBAAgB;IAChB,cAAc;IACd,WAAW;IACX,cAAc;IACd,WAAW;IACX,WAAW;IACX,YAAY;IACZ,WAAW;IACX,YAAY;IACZ,YAAY;IACZ,cAAc;IACd,cAAc;IACd,cAAc;IACd,YAAY;IACZ,cAAc;IACd,WAAW;CACH,CAAC;AAIX,MAAM,CAAC,MAAM,2BAA2B,GAAG,WAAoB,CAAC;AAEhE;;GAEG;AACH,MAAM,OAAO,YAAY;IAEJ;IACD;IAFlB,YACmB,mBAA8C,EAC/C,aAA4B,2BAA2B;QADtD,wBAAmB,GAAnB,mBAAmB,CAA2B;QAC/C,eAAU,GAAV,UAAU,CAA6C;IACtE,CAAC;IAEJ;;OAEG;IACH,OAAO,CAAC,SAAoC;QAC1C,OAAO,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,CAChD,SAA4B,EAC5B,IAAI,CAAC,UAAU,CAChB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,EAAE;QACA,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;IAC7B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;AACtD,CAAC"}
1
+ {"version":3,"file":"sim-aws-region.js","sourceRoot":"","sources":["../../../src/service/aws/sim-aws-region.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAExC,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,YAAY;IACZ,WAAW;IACX,YAAY;IACZ,gBAAgB;IAChB,gBAAgB;IAChB,gBAAgB;IAChB,YAAY;IACZ,gBAAgB;IAChB,gBAAgB;IAChB,gBAAgB;IAChB,gBAAgB;IAChB,gBAAgB;IAChB,WAAW;IACX,gBAAgB;IAChB,gBAAgB;IAChB,cAAc;IACd,WAAW;IACX,cAAc;IACd,WAAW;IACX,WAAW;IACX,YAAY;IACZ,WAAW;IACX,YAAY;IACZ,YAAY;IACZ,cAAc;IACd,cAAc;IACd,cAAc;IACd,YAAY;IACZ,cAAc;IACd,WAAW;CACH,CAAC;AAIX,MAAM,CAAC,MAAM,2BAA2B,GAAG,WAAoB,CAAC;AAEhE;;GAEG;AACH,MAAM,OAAO,YAAY;IAIJ;IACD;IAFlB,YACmB,mBAAyD,EAC1D,aAA4B,2BAA2B;QADtD,wBAAmB,GAAnB,mBAAmB,CAAsC;QAC1D,eAAU,GAAV,UAAU,CAA6C;IACtE,CAAC;IAEJ;;OAEG;IACH,OAAO,CACL,SAAoC;QAEpC,OAAO,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,CAChD,SAA4B,EAC5B,IAAI,CAAC,UAAU,CAChB,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,OAAO,CAA+B,WAAiB;QACrD,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC7C,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;AACtD,CAAC"}
@@ -1,21 +1,22 @@
1
- import type { SimDynamoDb } from "../dynamodb/index.js";
2
- import type { SimS3 } from "../s3/sim-s3.js";
3
1
  import type { SimAwsAccountId } from "./sim-aws-account.js";
4
2
  import type { AwsRegionName } from "./sim-aws-region.js";
5
3
  import type { SimAwsAccountRegionContainer } from "./sim-aws-account-region-scope.js";
6
4
  /**
7
- * Interface for accessing AWS services within a simulated AWS.
5
+ * Empty installed service map for a simulated AWS environment.
8
6
  */
9
- export interface SimAwsServices {
10
- dynamoDb(): SimDynamoDb;
11
- s3(): SimS3;
12
- }
7
+ export type NoSimAwsServices = Record<never, never>;
8
+ /**
9
+ * Installed service map for a simulated AWS environment.
10
+ */
11
+ export type SimAwsServiceMap = object;
12
+ /**
13
+ * Runtime factory for creating a simulated AWS service in an Account Region scope.
14
+ */
15
+ export type SimAwsServiceFactory = (scope: SimAwsAccountRegionContainer<SimAwsServiceMap>) => unknown;
13
16
  /**
14
17
  * Interface for accessing combined simulated AWS Account Region scopes.
15
18
  */
16
- export interface SimAwsAccountRegionScopes {
17
- accountRegionScope(accountId?: SimAwsAccountId, regionName?: AwsRegionName): SimAwsAccountRegionContainer;
19
+ export interface SimAwsAccountRegionScopes<TServices extends SimAwsServiceMap = NoSimAwsServices> {
20
+ accountRegionScope(accountId?: SimAwsAccountId, regionName?: AwsRegionName): SimAwsAccountRegionContainer<TServices>;
18
21
  }
19
- export declare const SIM_AWS_SERVICE_NAMES: readonly ["dynamodb", "s3"];
20
- export type SimAwsServiceName = (typeof SIM_AWS_SERVICE_NAMES)[number];
21
22
  //# sourceMappingURL=sim-aws-services.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sim-aws-services.d.ts","sourceRoot":"","sources":["../../../src/service/aws/sim-aws-services.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AAEtF;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,IAAI,WAAW,CAAC;IACxB,EAAE,IAAI,KAAK,CAAC;CACb;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,kBAAkB,CAChB,SAAS,CAAC,EAAE,eAAe,EAC3B,UAAU,CAAC,EAAE,aAAa,GACzB,4BAA4B,CAAC;CACjC;AAED,eAAO,MAAM,qBAAqB,6BAA8B,CAAC;AAEjE,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC"}
1
+ {"version":3,"file":"sim-aws-services.d.ts","sourceRoot":"","sources":["../../../src/service/aws/sim-aws-services.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AAEtF;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAEpD;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAEtC;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,CACjC,KAAK,EAAE,4BAA4B,CAAC,gBAAgB,CAAC,KAClD,OAAO,CAAC;AAEb;;GAEG;AACH,MAAM,WAAW,yBAAyB,CACxC,SAAS,SAAS,gBAAgB,GAAG,gBAAgB;IAErD,kBAAkB,CAChB,SAAS,CAAC,EAAE,eAAe,EAC3B,UAAU,CAAC,EAAE,aAAa,GACzB,4BAA4B,CAAC,SAAS,CAAC,CAAC;CAC5C"}
@@ -1,2 +1,2 @@
1
- export const SIM_AWS_SERVICE_NAMES = ["dynamodb", "s3"];
1
+ export {};
2
2
  //# sourceMappingURL=sim-aws-services.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sim-aws-services.js","sourceRoot":"","sources":["../../../src/service/aws/sim-aws-services.ts"],"names":[],"mappings":"AAwBA,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,UAAU,EAAE,IAAI,CAAU,CAAC"}
1
+ {"version":3,"file":"sim-aws-services.js","sourceRoot":"","sources":["../../../src/service/aws/sim-aws-services.ts"],"names":[],"mappings":""}
@@ -1,47 +1,57 @@
1
1
  import { SimAwsAccount, type SimAwsAccountId } from "./sim-aws-account.js";
2
2
  import { type BackgroundCompleter, type BackgroundScheduler } from "../../util/background/background.js";
3
3
  import { SimAwsRegion, type AwsRegionName } from "./sim-aws-region.js";
4
- import type { SimAwsAccountRegionScopes, SimAwsServices } from "./sim-aws-services.js";
5
- import type { SimS3 } from "../s3/sim-s3.js";
6
- import type { SimDynamoDb } from "../dynamodb/sim-dynamodb.js";
4
+ import type { NoSimAwsServices, SimAwsAccountRegionScopes, SimAwsServiceFactory, SimAwsServiceMap } from "./sim-aws-services.js";
7
5
  import { SimAwsAccountRegionContainer } from "./sim-aws-account-region-scope.js";
8
- import { SimS3GlobalRegistry } from "../s3/sim-s3-global-registry.js";
6
+ import type { SimAwsServiceController, SimAwsServiceControllerFactory } from "../../serve/controller/sim-service-controller.js";
9
7
  /**
10
8
  * Top-level container for simulated AWS.
9
+ * Contains Account scopes, Region scopes, Account/Region scopes.
11
10
  */
12
- export declare class SimAws implements SimAwsServices, SimAwsAccountRegionScopes {
11
+ export declare class SimAws<TServices extends SimAwsServiceMap = NoSimAwsServices> implements SimAwsAccountRegionScopes<TServices> {
13
12
  readonly defaultAccountId: SimAwsAccountId;
14
13
  readonly defaultRegionName: "us-east-1";
15
14
  readonly background: BackgroundScheduler & BackgroundCompleter;
16
15
  private readonly accounts;
17
16
  private readonly regions;
18
17
  private readonly accountRegionScopes;
19
- private readonly memo;
18
+ private readonly serviceFactories;
19
+ private readonly serviceControllerFactories;
20
20
  constructor(defaultAccountId?: SimAwsAccountId, defaultRegionName?: "us-east-1", background?: BackgroundScheduler & BackgroundCompleter);
21
21
  /**
22
22
  * Get a simulated AWS Account.
23
23
  */
24
- account(accountId?: string): SimAwsAccount;
24
+ account(accountId?: string): SimAwsAccount<TServices>;
25
25
  /**
26
26
  * Get a simulated AWS Account Region scope.
27
27
  */
28
- region(regionName?: AwsRegionName): SimAwsRegion;
28
+ region(regionName?: AwsRegionName): SimAwsRegion<TServices>;
29
29
  /**
30
30
  * Get an Account Region scope in this simulated AWS.
31
31
  */
32
- accountRegionScope(accountId?: SimAwsAccountId, regionName?: AwsRegionName): SimAwsAccountRegionContainer;
32
+ accountRegionScope(accountId?: SimAwsAccountId, regionName?: AwsRegionName): SimAwsAccountRegionContainer<TServices>;
33
33
  /**
34
- * Get the simulated global S3 registry for this AWS environment.
34
+ * Install a simulated AWS service factory.
35
35
  */
36
- s3GlobalRegistry(): SimS3GlobalRegistry;
36
+ installService(serviceName: PropertyKey, factory: SimAwsServiceFactory): void;
37
37
  /**
38
- * Get a simulated DynamoDB service in the default Account Region scope.
38
+ * Install a simulated AWS HTTP service controller factory.
39
39
  */
40
- dynamoDb(): SimDynamoDb;
40
+ installServiceController(serviceName: string, factory: SimAwsServiceControllerFactory): void;
41
41
  /**
42
- * Get a simulated S3 service in the default Account Region scope.
42
+ * Create an installed simulated AWS service for an Account Region scope.
43
43
  */
44
- s3(): SimS3;
44
+ createService<TKey extends keyof TServices>(serviceName: TKey, scope: SimAwsAccountRegionContainer<TServices>): TServices[TKey];
45
+ /**
46
+ * Create an installed simulated AWS HTTP service controller.
47
+ */
48
+ createServiceController(serviceName: string): SimAwsServiceController;
49
+ /**
50
+ * Get an installed simulated AWS service in the default Account Region scope.
51
+ * The service must be installed with the appropriate installer function
52
+ * first.
53
+ */
54
+ service<TKey extends keyof TServices>(serviceName: TKey): TServices[TKey];
45
55
  /**
46
56
  * Wait for all outstanding background tasks to complete.
47
57
  */
@@ -1 +1 @@
1
- {"version":3,"file":"sim-aws.d.ts","sourceRoot":"","sources":["../../../src/service/aws/sim-aws.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,aAAa,EACb,KAAK,eAAe,EACrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EAEzB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAEL,YAAY,EACZ,KAAK,aAAa,EACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EACV,yBAAyB,EACzB,cAAc,EACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAEL,4BAA4B,EAC7B,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAEtE;;GAEG;AACH,qBAAa,MAAO,YAAW,cAAc,EAAE,yBAAyB;aAWpD,gBAAgB;aAChB,iBAAiB;aACjB,UAAU,EAAE,mBAAmB,GAC7C,mBAAmB;IAbvB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6C;IACtE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0C;IAClE,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAGhC;IAEJ,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAsB;gBAGzB,gBAAgB,kBAA6B,EAC7C,iBAAiB,cAA8B,EAC/C,UAAU,GAAE,mBAAmB,GAC7C,mBAA2C;IAG/C;;OAEG;IACH,OAAO,CAAC,SAAS,GAAE,MAA8B,GAAG,aAAa;IAWjE;;OAEG;IACH,MAAM,CAAC,UAAU,GAAE,aAAsC,GAAG,YAAY;IAWxE;;OAEG;IACH,kBAAkB,CAChB,SAAS,GAAE,eAAuC,EAClD,UAAU,GAAE,aAAsC,GACjD,4BAA4B;IAiB/B;;OAEG;IACH,gBAAgB,IAAI,mBAAmB;IAOvC;;OAEG;IACH,QAAQ,IAAI,WAAW;IAIvB;;OAEG;IACH,EAAE,IAAI,KAAK;IAIX;;OAEG;IACG,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/C"}
1
+ {"version":3,"file":"sim-aws.d.ts","sourceRoot":"","sources":["../../../src/service/aws/sim-aws.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,aAAa,EACb,KAAK,eAAe,EACrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EAEzB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAEL,YAAY,EACZ,KAAK,aAAa,EACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EACV,gBAAgB,EAChB,yBAAyB,EACzB,oBAAoB,EACpB,gBAAgB,EACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAEL,4BAA4B,EAC7B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EACV,uBAAuB,EACvB,8BAA8B,EAC/B,MAAM,kDAAkD,CAAC;AAE1D;;;GAGG;AACH,qBAAa,MAAM,CACjB,SAAS,SAAS,gBAAgB,GAAG,gBAAgB,CACrD,YAAW,yBAAyB,CAAC,SAAS,CAAC;aA2B7B,gBAAgB;aAChB,iBAAiB;aACjB,UAAU,EAAE,mBAAmB,GAC7C,mBAAmB;IA7BvB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAGrB;IAEJ,OAAO,CAAC,QAAQ,CAAC,OAAO,CAGpB;IAEJ,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAGhC;IAEJ,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAG7B;IAEJ,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAGvC;gBAGc,gBAAgB,kBAA6B,EAC7C,iBAAiB,cAA8B,EAC/C,UAAU,GAAE,mBAAmB,GAC7C,mBAA2C;IAG/C;;OAEG;IACH,OAAO,CAAC,SAAS,GAAE,MAA8B,GAAG,aAAa,CAAC,SAAS,CAAC;IAc5E;;OAEG;IACH,MAAM,CACJ,UAAU,GAAE,aAAsC,GACjD,YAAY,CAAC,SAAS,CAAC;IAW1B;;OAEG;IACH,kBAAkB,CAChB,SAAS,GAAE,eAAuC,EAClD,UAAU,GAAE,aAAsC,GACjD,4BAA4B,CAAC,SAAS,CAAC;IAgB1C;;OAEG;IACH,cAAc,CACZ,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,oBAAoB,GAC5B,IAAI;IAIP;;OAEG;IACH,wBAAwB,CACtB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,8BAA8B,GACtC,IAAI;IAIP;;OAEG;IACH,aAAa,CAAC,IAAI,SAAS,MAAM,SAAS,EACxC,WAAW,EAAE,IAAI,EACjB,KAAK,EAAE,4BAA4B,CAAC,SAAS,CAAC,GAC7C,SAAS,CAAC,IAAI,CAAC;IAYlB;;OAEG;IACH,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,uBAAuB;IAYrE;;;;OAIG;IACH,OAAO,CAAC,IAAI,SAAS,MAAM,SAAS,EAAE,WAAW,EAAE,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;IAIzE;;OAEG;IACG,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/C"}
@@ -2,10 +2,9 @@ import { DEFAULT_SIM_AWS_ACCOUNT_ID, SimAwsAccount, } from "./sim-aws-account.js
2
2
  import { BackgroundTasks, } from "../../util/background/background.js";
3
3
  import { DEFAULT_SIM_AWS_REGION_NAME, SimAwsRegion, } from "./sim-aws-region.js";
4
4
  import { SimAwsAccountRegionContainer, } from "./sim-aws-account-region-scope.js";
5
- import { Memo } from "../../util/memo/memo.js";
6
- import { SimS3GlobalRegistry } from "../s3/sim-s3-global-registry.js";
7
5
  /**
8
6
  * Top-level container for simulated AWS.
7
+ * Contains Account scopes, Region scopes, Account/Region scopes.
9
8
  */
10
9
  export class SimAws {
11
10
  defaultAccountId;
@@ -14,7 +13,8 @@ export class SimAws {
14
13
  accounts = new Map();
15
14
  regions = new Map();
16
15
  accountRegionScopes = new Map();
17
- memo = new Memo();
16
+ serviceFactories = new Map();
17
+ serviceControllerFactories = new Map();
18
18
  constructor(defaultAccountId = DEFAULT_SIM_AWS_ACCOUNT_ID, defaultRegionName = DEFAULT_SIM_AWS_REGION_NAME, background = new BackgroundTasks()) {
19
19
  this.defaultAccountId = defaultAccountId;
20
20
  this.defaultRegionName = defaultRegionName;
@@ -49,28 +49,50 @@ export class SimAws {
49
49
  const scopeKey = `${accountId}:${regionName}`;
50
50
  let accountRegionScope = this.accountRegionScopes.get(scopeKey);
51
51
  if (accountRegionScope === undefined) {
52
- accountRegionScope = new SimAwsAccountRegionContainer(this, this.account(accountId), this.region(regionName), this.s3GlobalRegistry());
52
+ accountRegionScope = new SimAwsAccountRegionContainer(this, this.account(accountId), this.region(regionName));
53
53
  this.accountRegionScopes.set(scopeKey, accountRegionScope);
54
54
  }
55
55
  return accountRegionScope;
56
56
  }
57
57
  /**
58
- * Get the simulated global S3 registry for this AWS environment.
58
+ * Install a simulated AWS service factory.
59
59
  */
60
- s3GlobalRegistry() {
61
- return this.memo.getOrCreate("s3GlobalRegistry", () => new SimS3GlobalRegistry());
60
+ installService(serviceName, factory) {
61
+ this.serviceFactories.set(serviceName, factory);
62
62
  }
63
63
  /**
64
- * Get a simulated DynamoDB service in the default Account Region scope.
64
+ * Install a simulated AWS HTTP service controller factory.
65
65
  */
66
- dynamoDb() {
67
- return this.accountRegionScope().dynamoDb();
66
+ installServiceController(serviceName, factory) {
67
+ this.serviceControllerFactories.set(serviceName, factory);
68
68
  }
69
69
  /**
70
- * Get a simulated S3 service in the default Account Region scope.
70
+ * Create an installed simulated AWS service for an Account Region scope.
71
71
  */
72
- s3() {
73
- return this.accountRegionScope().s3();
72
+ createService(serviceName, scope) {
73
+ const factory = this.serviceFactories.get(serviceName);
74
+ if (factory === undefined) {
75
+ throw new Error(`Sim AWS service is not installed: ${String(serviceName)}. Call installer function to install it.`);
76
+ }
77
+ return factory(scope);
78
+ }
79
+ /**
80
+ * Create an installed simulated AWS HTTP service controller.
81
+ */
82
+ createServiceController(serviceName) {
83
+ const factory = this.serviceControllerFactories.get(serviceName);
84
+ if (factory === undefined) {
85
+ throw new Error(`No controller installed for simulated AWS service ${serviceName}`);
86
+ }
87
+ return factory(this);
88
+ }
89
+ /**
90
+ * Get an installed simulated AWS service in the default Account Region scope.
91
+ * The service must be installed with the appropriate installer function
92
+ * first.
93
+ */
94
+ service(serviceName) {
95
+ return this.accountRegionScope().service(serviceName);
74
96
  }
75
97
  /**
76
98
  * Wait for all outstanding background tasks to complete.
@@ -1 +1 @@
1
- {"version":3,"file":"sim-aws.js","sourceRoot":"","sources":["../../../src/service/aws/sim-aws.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,aAAa,GAEd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAGL,eAAe,GAChB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,2BAA2B,EAC3B,YAAY,GAEb,MAAM,qBAAqB,CAAC;AAO7B,OAAO,EAEL,4BAA4B,GAC7B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAEtE;;GAEG;AACH,MAAM,OAAO,MAAM;IAWC;IACA;IACA;IAZD,QAAQ,GAAG,IAAI,GAAG,EAAkC,CAAC;IACrD,OAAO,GAAG,IAAI,GAAG,EAA+B,CAAC;IACjD,mBAAmB,GAAG,IAAI,GAAG,EAG3C,CAAC;IAEa,IAAI,GAAG,IAAI,IAAI,EAAU,CAAC;IAE3C,YACkB,mBAAmB,0BAA0B,EAC7C,oBAAoB,2BAA2B,EAC/C,aACQ,IAAI,eAAe,EAAE;QAH7B,qBAAgB,GAAhB,gBAAgB,CAA6B;QAC7C,sBAAiB,GAAjB,iBAAiB,CAA8B;QAC/C,eAAU,GAAV,UAAU,CACmB;IAC5C,CAAC;IAEJ;;OAEG;IACH,OAAO,CAAC,YAAoB,IAAI,CAAC,gBAAgB;QAC/C,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAA4B,CAAC,CAAC;QAE9D,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,OAAO,GAAG,IAAI,aAAa,CAAC,IAAI,EAAE,SAA4B,CAAC,CAAC;YAChE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAA4B,EAAE,OAAO,CAAC,CAAC;QAC3D,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,aAA4B,IAAI,CAAC,iBAAiB;QACvD,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAE1C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,GAAG,IAAI,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YAC5C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QACvC,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,kBAAkB,CAChB,YAA6B,IAAI,CAAC,gBAAgB,EAClD,aAA4B,IAAI,CAAC,iBAAiB;QAElD,MAAM,QAAQ,GAAG,GAAG,SAAS,IAAI,UAAU,EAAW,CAAC;QACvD,IAAI,kBAAkB,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAEhE,IAAI,kBAAkB,KAAK,SAAS,EAAE,CAAC;YACrC,kBAAkB,GAAG,IAAI,4BAA4B,CACnD,IAAI,EACJ,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EACvB,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,EACvB,IAAI,CAAC,gBAAgB,EAAE,CACxB,CAAC;YACF,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;QAC7D,CAAC;QAED,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAC1B,kBAAkB,EAClB,GAAG,EAAE,CAAC,IAAI,mBAAmB,EAAE,CAChC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC,QAAQ,EAAE,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,EAAE;QACA,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC,EAAE,EAAE,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,uBAAuB;QAC3B,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;IACnC,CAAC;CACF"}
1
+ {"version":3,"file":"sim-aws.js","sourceRoot":"","sources":["../../../src/service/aws/sim-aws.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,3 @@
1
1
  export { SimDynamoDb } from "./sim-dynamodb.js";
2
+ export { installSimDynamoDb } from "./install-sim-dynamodb.js";
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/service/dynamodb/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/service/dynamodb/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC"}
@@ -1,2 +1,3 @@
1
1
  export { SimDynamoDb } from "./sim-dynamodb.js";
2
+ export { installSimDynamoDb } from "./install-sim-dynamodb.js";
2
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/service/dynamodb/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/service/dynamodb/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { SimAws } from "../aws/sim-aws.js";
2
+ import type { SimAwsServiceMap } from "../aws/sim-aws-services.js";
3
+ import { SimDynamoDb } from "./sim-dynamodb.js";
4
+ export { SimDynamoDb } from "./sim-dynamodb.js";
5
+ export interface SimDynamoDbServices {
6
+ dynamoDb: SimDynamoDb;
7
+ }
8
+ /**
9
+ * Install simulated DynamoDB into a simulated AWS environment.
10
+ */
11
+ export declare function installSimDynamoDb<TServices extends SimAwsServiceMap>(simAws: SimAws<TServices>): asserts simAws is SimAws<TServices & SimDynamoDbServices>;
12
+ //# sourceMappingURL=install-sim-dynamodb.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install-sim-dynamodb.d.ts","sourceRoot":"","sources":["../../../src/service/dynamodb/install-sim-dynamodb.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,WAAW,CAAC;CACvB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,SAAS,gBAAgB,EACnE,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,GACxB,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,SAAS,GAAG,mBAAmB,CAAC,CAI3D"}
@@ -0,0 +1,11 @@
1
+ import { SimDynamoDb } from "./sim-dynamodb.js";
2
+ export { SimDynamoDb } from "./sim-dynamodb.js";
3
+ /**
4
+ * Install simulated DynamoDB into a simulated AWS environment.
5
+ */
6
+ export function installSimDynamoDb(simAws) {
7
+ simAws.installService("dynamoDb", (scope) => {
8
+ return new SimDynamoDb(scope.accountRegionScope, simAws.background);
9
+ });
10
+ }
11
+ //# sourceMappingURL=install-sim-dynamodb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install-sim-dynamodb.js","sourceRoot":"","sources":["../../../src/service/dynamodb/install-sim-dynamodb.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAMhD;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAAyB;IAEzB,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE;QAC1C,OAAO,IAAI,WAAW,CAAC,KAAK,CAAC,kBAAkB,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,2 +1,3 @@
1
1
  export { SimS3 } from "./sim-s3.js";
2
+ export { installSimS3 } from "./install-sim-s3.js";
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/service/s3/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/service/s3/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC"}
@@ -1,2 +1,3 @@
1
1
  export { SimS3 } from "./sim-s3.js";
2
+ export { installSimS3 } from "./install-sim-s3.js";
2
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/service/s3/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/service/s3/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { SimAws } from "../aws/sim-aws.js";
2
+ import type { SimAwsServiceMap } from "../aws/sim-aws-services.js";
3
+ import { SimS3 } from "./sim-s3.js";
4
+ export { SimS3 } from "./sim-s3.js";
5
+ export interface SimS3Services {
6
+ s3: SimS3;
7
+ }
8
+ /**
9
+ * Install simulated S3 into a simulated AWS environment.
10
+ */
11
+ export declare function installSimS3<TServices extends SimAwsServiceMap>(simAws: SimAws<TServices>): asserts simAws is SimAws<TServices & SimS3Services>;
12
+ //# sourceMappingURL=install-sim-s3.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install-sim-s3.d.ts","sourceRoot":"","sources":["../../../src/service/s3/install-sim-s3.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAIpC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,KAAK,CAAC;CACX;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,SAAS,SAAS,gBAAgB,EAC7D,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,GACxB,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,SAAS,GAAG,aAAa,CAAC,CAYrD"}
@@ -0,0 +1,17 @@
1
+ import { SimS3 } from "./sim-s3.js";
2
+ import { SimS3GlobalRegistry } from "./sim-s3-global-registry.js";
3
+ import { SimS3ServiceController } from "./serve/sim-s3-controller.js";
4
+ export { SimS3 } from "./sim-s3.js";
5
+ /**
6
+ * Install simulated S3 into a simulated AWS environment.
7
+ */
8
+ export function installSimS3(simAws) {
9
+ const s3GlobalRegistry = new SimS3GlobalRegistry();
10
+ simAws.installService("s3", (scope) => {
11
+ return new SimS3(scope.accountRegionScope, s3GlobalRegistry);
12
+ });
13
+ simAws.installServiceController("s3", (controllerSimAws) => {
14
+ return new SimS3ServiceController(controllerSimAws);
15
+ });
16
+ }
17
+ //# sourceMappingURL=install-sim-s3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install-sim-s3.js","sourceRoot":"","sources":["../../../src/service/s3/install-sim-s3.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAEtE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAMpC;;GAEG;AACH,MAAM,UAAU,YAAY,CAC1B,MAAyB;IAEzB,MAAM,gBAAgB,GAAG,IAAI,mBAAmB,EAAE,CAAC;IAEnD,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE;QACpC,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,wBAAwB,CAAC,IAAI,EAAE,CAAC,gBAAgB,EAAE,EAAE;QACzD,OAAO,IAAI,sBAAsB,CAC/B,gBAAyC,CAC1C,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import type { SimAws } from "../../aws/sim-aws.js";
2
+ import type { SimS3Services } from "../install-sim-s3.js";
2
3
  import type { SimAwsServiceController, SimAwsServiceTarget } from "../../../serve/controller/sim-service-controller.js";
3
4
  /**
4
5
  * Localhost HTTP controller for simulated S3.
@@ -6,7 +7,7 @@ import type { SimAwsServiceController, SimAwsServiceTarget } from "../../../serv
6
7
  export declare class SimS3ServiceController implements SimAwsServiceController {
7
8
  private readonly router;
8
9
  private readonly getObjectController;
9
- constructor(simAws: SimAws);
10
+ constructor(simAws: SimAws<SimS3Services>);
10
11
  /**
11
12
  * Handle an HTTP request routed to a simulated S3 Bucket.
12
13
  */
@@ -1 +1 @@
1
- {"version":3,"file":"sim-s3-controller.d.ts","sourceRoot":"","sources":["../../../../src/service/s3/serve/sim-s3-controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EACV,uBAAuB,EACvB,mBAAmB,EACpB,MAAM,qDAAqD,CAAC;AAI7D;;GAEG;AACH,qBAAa,sBAAuB,YAAW,uBAAuB;IACpE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAA2B;gBAEnD,MAAM,EAAE,MAAM;IAK1B;;OAEG;IACG,aAAa,CACjB,MAAM,EAAE,mBAAmB,EAC3B,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,QAAQ,CAAC;CAkBrB"}
1
+ {"version":3,"file":"sim-s3-controller.d.ts","sourceRoot":"","sources":["../../../../src/service/s3/serve/sim-s3-controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EACV,uBAAuB,EACvB,mBAAmB,EACpB,MAAM,qDAAqD,CAAC;AAI7D;;GAEG;AACH,qBAAa,sBAAuB,YAAW,uBAAuB;IACpE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAA2B;gBAEnD,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC;IAKzC;;OAEG;IACG,aAAa,CACjB,MAAM,EAAE,mBAAmB,EAC3B,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,QAAQ,CAAC;CAkBrB"}
@@ -1 +1 @@
1
- {"version":3,"file":"sim-s3-controller.js","sourceRoot":"","sources":["../../../../src/service/s3/serve/sim-s3-controller.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAE1E;;GAEG;AACH,MAAM,OAAO,sBAAsB;IAChB,MAAM,CAAqB;IAC3B,mBAAmB,CAA2B;IAE/D,YAAY,MAAc;QACxB,IAAI,CAAC,MAAM,GAAG,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,CAAC,mBAAmB,GAAG,IAAI,wBAAwB,EAAE,CAAC;IAC5D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CACjB,MAA2B,EAC3B,OAAgB;QAEhB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAEjD,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC/B,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE;gBACjC,MAAM,EAAE,KAAK,CAAC,UAAU;gBACxB,OAAO,EAAE;oBACP,cAAc,EAAE,2BAA2B;iBAC5C;aACF,CAAC,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAC3C,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,SAAS,EACf,OAAO,CACR,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"sim-s3-controller.js","sourceRoot":"","sources":["../../../../src/service/s3/serve/sim-s3-controller.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAE1E;;GAEG;AACH,MAAM,OAAO,sBAAsB;IAChB,MAAM,CAAqB;IAC3B,mBAAmB,CAA2B;IAE/D,YAAY,MAA6B;QACvC,IAAI,CAAC,MAAM,GAAG,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,CAAC,mBAAmB,GAAG,IAAI,wBAAwB,EAAE,CAAC;IAC5D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CACjB,MAA2B,EAC3B,OAAgB;QAEhB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAEjD,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC/B,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE;gBACjC,MAAM,EAAE,KAAK,CAAC,UAAU;gBACxB,OAAO,EAAE;oBACP,cAAc,EAAE,2BAA2B;iBAC5C;aACF,CAAC,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAC3C,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,SAAS,EACf,OAAO,CACR,CAAC;IACJ,CAAC;CACF"}
@@ -1,6 +1,7 @@
1
1
  import type { SimAws } from "../../aws/sim-aws.js";
2
2
  import type { SimS3Bucket } from "../bucket/s3-bucket.js";
3
3
  import type { SimAwsServiceTarget } from "../../../serve/controller/sim-service-controller.js";
4
+ import type { SimS3Services } from "../install-sim-s3.js";
4
5
  export interface SimS3GetObjectRoute {
5
6
  readonly action: "getObject";
6
7
  readonly bucket: SimS3Bucket;
@@ -17,7 +18,7 @@ export type SimS3Route = SimS3GetObjectRoute | SimS3RouteFailure;
17
18
  */
18
19
  export declare class SimS3RequestRouter {
19
20
  private readonly simAws;
20
- constructor(simAws: SimAws);
21
+ constructor(simAws: SimAws<SimS3Services>);
21
22
  /**
22
23
  * Route an incoming service target and HTTP request to a simulated S3 action.
23
24
  */
@@ -1 +1 @@
1
- {"version":3,"file":"sim-s3-req-router.d.ts","sourceRoot":"","sources":["../../../../src/service/s3/serve/sim-s3-req-router.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qDAAqD,CAAC;AAE/F,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,UAAU,GAAG,mBAAmB,GAAG,iBAAiB,CAAC;AAEjE;;GAEG;AACH,qBAAa,kBAAkB;IACjB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,MAAM;IAE3C;;OAEG;IACH,KAAK,CAAC,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,OAAO,GAAG,UAAU;CAoEjE"}
1
+ {"version":3,"file":"sim-s3-req-router.d.ts","sourceRoot":"","sources":["../../../../src/service/s3/serve/sim-s3-req-router.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qDAAqD,CAAC;AAC/F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,UAAU,GAAG,mBAAmB,GAAG,iBAAiB,CAAC;AAEjE;;GAEG;AACH,qBAAa,kBAAkB;IACjB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC;IAE1D;;OAEG;IACH,KAAK,CAAC,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,OAAO,GAAG,UAAU;CAkEjE"}
@@ -34,9 +34,7 @@ export class SimS3RequestRouter {
34
34
  const url = new URL(request.url);
35
35
  const objectKey = decodeURIComponent(url.pathname.replace(/^\/+/u, ""));
36
36
  const bucketName = target.resourceName;
37
- const bucketScope = this.simAws
38
- .s3GlobalRegistry()
39
- .findBucketScope(bucketName);
37
+ const bucketScope = this.simAws.service("s3").findBucketScope(bucketName);
40
38
  if (bucketScope === undefined) {
41
39
  return {
42
40
  action: "failure",
@@ -53,7 +51,7 @@ export class SimS3RequestRouter {
53
51
  }
54
52
  const bucket = this.simAws
55
53
  .accountRegionScope(bucketScope.accountId, bucketScope.regionName)
56
- .s3()
54
+ .service("s3")
57
55
  .getSimBucketByName(bucketName);
58
56
  if (bucket === undefined) {
59
57
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"sim-s3-req-router.js","sourceRoot":"","sources":["../../../../src/service/s3/serve/sim-s3-req-router.ts"],"names":[],"mappings":"AAmBA;;GAEG;AACH,MAAM,OAAO,kBAAkB;IACA;IAA7B,YAA6B,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAAG,CAAC;IAE/C;;OAEG;IACH,KAAK,CAAC,MAA2B,EAAE,OAAgB;QACjD,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC1D,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,UAAU,EAAE,GAAG;gBACf,OAAO,EAAE,sBAAsB;aAChC,CAAC;QACJ,CAAC;QAED,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrC,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,UAAU,EAAE,GAAG;gBACf,OAAO,EAAE,0BAA0B;aACpC,CAAC;QACJ,CAAC;QAED,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACpC,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,UAAU,EAAE,GAAG;gBACf,OAAO,EAAE,4BAA4B;aACtC,CAAC;QACJ,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,MAAM,SAAS,GAAG,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;QAExE,MAAM,UAAU,GAAG,MAAM,CAAC,YAA+B,CAAC;QAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM;aAC5B,gBAAgB,EAAE;aAClB,eAAe,CAAC,UAAU,CAAC,CAAC;QAE/B,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,UAAU,EAAE,GAAG;gBACf,OAAO,EAAE,mBAAmB,UAAU,YAAY;aACnD,CAAC;QACJ,CAAC;QAED,IAAI,WAAW,CAAC,UAAU,KAAK,MAAM,CAAC,UAAU,EAAE,CAAC;YACjD,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,UAAU,EAAE,GAAG;gBACf,OAAO,EAAE,mBAAmB,UAAU,iBAAiB,WAAW,CAAC,UAAU,mBAAmB,MAAM,CAAC,UAAU,EAAE;aACpH,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM;aACvB,kBAAkB,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,UAAU,CAAC;aACjE,EAAE,EAAE;aACJ,kBAAkB,CAAC,UAAU,CAAC,CAAC;QAElC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,UAAU,EAAE,GAAG;gBACf,OAAO,EAAE,mBAAmB,UAAU,YAAY;aACnD,CAAC;QACJ,CAAC;QAED,OAAO;YACL,MAAM,EAAE,WAAW;YACnB,MAAM;YACN,SAAS;SACV,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"sim-s3-req-router.js","sourceRoot":"","sources":["../../../../src/service/s3/serve/sim-s3-req-router.ts"],"names":[],"mappings":"AAoBA;;GAEG;AACH,MAAM,OAAO,kBAAkB;IACA;IAA7B,YAA6B,MAA6B;QAA7B,WAAM,GAAN,MAAM,CAAuB;IAAG,CAAC;IAE9D;;OAEG;IACH,KAAK,CAAC,MAA2B,EAAE,OAAgB;QACjD,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC1D,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,UAAU,EAAE,GAAG;gBACf,OAAO,EAAE,sBAAsB;aAChC,CAAC;QACJ,CAAC;QAED,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrC,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,UAAU,EAAE,GAAG;gBACf,OAAO,EAAE,0BAA0B;aACpC,CAAC;QACJ,CAAC;QAED,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACpC,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,UAAU,EAAE,GAAG;gBACf,OAAO,EAAE,4BAA4B;aACtC,CAAC;QACJ,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,MAAM,SAAS,GAAG,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;QAExE,MAAM,UAAU,GAAG,MAAM,CAAC,YAA+B,CAAC;QAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QAE1E,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,UAAU,EAAE,GAAG;gBACf,OAAO,EAAE,mBAAmB,UAAU,YAAY;aACnD,CAAC;QACJ,CAAC;QAED,IAAI,WAAW,CAAC,UAAU,KAAK,MAAM,CAAC,UAAU,EAAE,CAAC;YACjD,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,UAAU,EAAE,GAAG;gBACf,OAAO,EAAE,mBAAmB,UAAU,iBAAiB,WAAW,CAAC,UAAU,mBAAmB,MAAM,CAAC,UAAU,EAAE;aACpH,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM;aACvB,kBAAkB,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,UAAU,CAAC;aACjE,OAAO,CAAC,IAAI,CAAC;aACb,kBAAkB,CAAC,UAAU,CAAC,CAAC;QAElC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,UAAU,EAAE,GAAG;gBACf,OAAO,EAAE,mBAAmB,UAAU,YAAY;aACnD,CAAC;QACJ,CAAC;QAED,OAAO;YACL,MAAM,EAAE,WAAW;YACnB,MAAM;YACN,SAAS;SACV,CAAC;IACJ,CAAC;CACF"}
@@ -4,6 +4,8 @@ import { SimS3GlobalRegistry } from "./sim-s3-global-registry.js";
4
4
  import { type SimAwsAccountRegionScope } from "../aws/sim-aws-account-region-scope.js";
5
5
  /**
6
6
  * Simulated S3. Handles SDK commands. Emulates AWS behaviour and state.
7
+ * Scoped to an Account and Region, but has access to a global (as in
8
+ * cross-region) registry of simulated S3 Buckets.
7
9
  */
8
10
  export declare class SimS3 {
9
11
  private readonly accountRegionScope;
@@ -38,6 +40,10 @@ export declare class SimS3 {
38
40
  * Get a simulated S3 Bucket instance by name.
39
41
  */
40
42
  getSimBucketByName(bucketName: SimS3BucketName | string): SimS3Bucket | undefined;
43
+ /**
44
+ * Find the Account Region scope for a globally registered simulated S3 Bucket.
45
+ */
46
+ findBucketScope(bucketName: SimS3BucketName | string): SimAwsAccountRegionScope | undefined;
41
47
  /**
42
48
  * Have a simulated S3 Bucket use a local filesystem directory for storage.
43
49
  */
@@ -1 +1 @@
1
- {"version":3,"file":"sim-s3.d.ts","sourceRoot":"","sources":["../../../src/service/s3/sim-s3.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,KAAK,EACV,mBAAmB,EACnB,yBAAyB,EACzB,gBAAgB,EAChB,sBAAsB,EACtB,kBAAkB,EAClB,wBAAwB,EACxB,kBAAkB,EAClB,wBAAwB,EACxB,uBAAuB,EACvB,6BAA6B,EAC7B,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,oBAAoB,CAAC;AAM5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EACL,KAAK,wBAAwB,EAE9B,MAAM,wCAAwC,CAAC;AAKhD;;GAEG;AACH,qBAAa,KAAK;IAId,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IAJnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2C;gBAGhD,kBAAkB,GAAE,wBAAiE,EACrF,gBAAgB,GAAE,mBAA+C;IAGpF;;OAEG;IACG,YAAY,CAChB,GAAG,EAAE,mBAAmB,GACvB,OAAO,CAAC,yBAAyB,CAAC;IASrC;;OAEG;IACG,gBAAgB,CACpB,GAAG,EAAE,uBAAuB,GAC3B,OAAO,CAAC,6BAA6B,CAAC;IAKzC;;OAEG;IACG,WAAW,CACf,GAAG,EAAE,kBAAkB,GACtB,OAAO,CAAC,wBAAwB,CAAC;IAKpC;;OAEG;IACG,SAAS,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAKvE;;OAEG;IACG,SAAS,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAKvE;;OAEG;IACG,WAAW,CACf,GAAG,EAAE,kBAAkB,GACtB,OAAO,CAAC,wBAAwB,CAAC;IAKpC;;OAEG;IACH,kBAAkB,CAChB,UAAU,EAAE,eAAe,GAAG,MAAM,GACnC,WAAW,GAAG,SAAS;IAI1B;;OAEG;IACH,qBAAqB,CACnB,UAAU,EAAE,eAAe,GAAG,MAAM,EACpC,aAAa,EAAE,MAAM,GACpB,IAAI;CAKR"}
1
+ {"version":3,"file":"sim-s3.d.ts","sourceRoot":"","sources":["../../../src/service/s3/sim-s3.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,KAAK,EACV,mBAAmB,EACnB,yBAAyB,EACzB,gBAAgB,EAChB,sBAAsB,EACtB,kBAAkB,EAClB,wBAAwB,EACxB,kBAAkB,EAClB,wBAAwB,EACxB,uBAAuB,EACvB,6BAA6B,EAC7B,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,oBAAoB,CAAC;AAM5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EACL,KAAK,wBAAwB,EAE9B,MAAM,wCAAwC,CAAC;AAKhD;;;;GAIG;AACH,qBAAa,KAAK;IAId,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IAJnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2C;gBAGhD,kBAAkB,GAAE,wBAAiE,EACrF,gBAAgB,GAAE,mBAA+C;IAGpF;;OAEG;IACG,YAAY,CAChB,GAAG,EAAE,mBAAmB,GACvB,OAAO,CAAC,yBAAyB,CAAC;IASrC;;OAEG;IACG,gBAAgB,CACpB,GAAG,EAAE,uBAAuB,GAC3B,OAAO,CAAC,6BAA6B,CAAC;IAKzC;;OAEG;IACG,WAAW,CACf,GAAG,EAAE,kBAAkB,GACtB,OAAO,CAAC,wBAAwB,CAAC;IAKpC;;OAEG;IACG,SAAS,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAKvE;;OAEG;IACG,SAAS,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAKvE;;OAEG;IACG,WAAW,CACf,GAAG,EAAE,kBAAkB,GACtB,OAAO,CAAC,wBAAwB,CAAC;IAKpC;;OAEG;IACH,kBAAkB,CAChB,UAAU,EAAE,eAAe,GAAG,MAAM,GACnC,WAAW,GAAG,SAAS;IAI1B;;OAEG;IACH,eAAe,CACb,UAAU,EAAE,eAAe,GAAG,MAAM,GACnC,wBAAwB,GAAG,SAAS;IAIvC;;OAEG;IACH,qBAAqB,CACnB,UAAU,EAAE,eAAe,GAAG,MAAM,EACpC,aAAa,EAAE,MAAM,GACpB,IAAI;CAKR"}
@@ -10,6 +10,8 @@ import { assertDefined } from "../../util/defined.js";
10
10
  import { FilesystemS3BucketStorage } from "./storage/s3-filesystem-storage.js";
11
11
  /**
12
12
  * Simulated S3. Handles SDK commands. Emulates AWS behaviour and state.
13
+ * Scoped to an Account and Region, but has access to a global (as in
14
+ * cross-region) registry of simulated S3 Buckets.
13
15
  */
14
16
  export class SimS3 {
15
17
  accountRegionScope;
@@ -67,6 +69,12 @@ export class SimS3 {
67
69
  getSimBucketByName(bucketName) {
68
70
  return this.buckets.get(bucketName);
69
71
  }
72
+ /**
73
+ * Find the Account Region scope for a globally registered simulated S3 Bucket.
74
+ */
75
+ findBucketScope(bucketName) {
76
+ return this.s3GlobalRegistry.findBucketScope(bucketName);
77
+ }
70
78
  /**
71
79
  * Have a simulated S3 Bucket use a local filesystem directory for storage.
72
80
  */
@@ -1 +1 @@
1
- {"version":3,"file":"sim-s3.js","sourceRoot":"","sources":["../../../src/service/s3/sim-s3.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sim-s3.js","sourceRoot":"","sources":["../../../src/service/s3/sim-s3.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,0BAA0B,EAAE,MAAM,kDAAkD,CAAC;AAC9F,OAAO,EAAE,yBAAyB,EAAE,MAAM,gDAAgD,CAAC;AAC3F,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AACrF,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AACrF,OAAO,EAAE,yBAAyB,EAAE,MAAM,gDAAgD,CAAC;AAC3F,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAEL,+BAA+B,GAChC,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,8BAA8B,EAAE,MAAM,4DAA4D,CAAC;AAC5G,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAE/E;;;;GAIG;AACH,MAAM,OAAO,KAAK;IAIG;IACA;IAJF,OAAO,GAAG,IAAI,GAAG,EAAgC,CAAC;IAEnE,YACmB,qBAA+C,+BAA+B,CAAC,IAAI,EAAE,EACrF,mBAAwC,IAAI,mBAAmB,EAAE;QADjE,uBAAkB,GAAlB,kBAAkB,CAAmE;QACrF,qBAAgB,GAAhB,gBAAgB,CAAiD;IACjF,CAAC;IAEJ;;OAEG;IACH,KAAK,CAAC,YAAY,CAChB,GAAwB;QAExB,MAAM,OAAO,GAAG,IAAI,0BAA0B,CAC5C,IAAI,CAAC,kBAAkB,EACvB,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,gBAAgB,CACtB,CAAC;QACF,OAAO,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CACpB,GAA4B;QAE5B,MAAM,OAAO,GAAG,IAAI,8BAA8B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjE,OAAO,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CACf,GAAuB;QAEvB,MAAM,OAAO,GAAG,IAAI,yBAAyB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5D,OAAO,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,GAAqB;QACnC,MAAM,OAAO,GAAG,IAAI,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1D,OAAO,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,GAAqB;QACnC,MAAM,OAAO,GAAG,IAAI,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1D,OAAO,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CACf,GAAuB;QAEvB,MAAM,OAAO,GAAG,IAAI,yBAAyB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5D,OAAO,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,kBAAkB,CAChB,UAAoC;QAEpC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAA6B,CAAC,CAAC;IACzD,CAAC;IAED;;OAEG;IACH,eAAe,CACb,UAAoC;QAEpC,OAAO,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,UAA6B,CAAC,CAAC;IAC9E,CAAC;IAED;;OAEG;IACH,qBAAqB,CACnB,UAAoC,EACpC,aAAqB;QAErB,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;QACnD,aAAa,CAAC,MAAM,EAAE,uBAAuB,UAAU,EAAE,CAAC,CAAC;QAC3D,MAAM,CAAC,mBAAmB,CAAC,IAAI,yBAAyB,CAAC,aAAa,CAAC,CAAC,CAAC;IAC3E,CAAC;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kensio/yulin",
3
- "version": "0.5.0",
3
+ "version": "0.6.0",
4
4
  "description": "AWS system behaviour simulation for isolated unit testing",
5
5
  "repository": "https://github.com/KensioSoftware/yulin",
6
6
  "type": "module",
@@ -52,7 +52,6 @@
52
52
  "@aws-sdk/client-dynamodb": "^3.1057.0",
53
53
  "@aws-sdk/client-s3": "^3.1057.0",
54
54
  "@eslint/js": "^10.0.1",
55
- "@faker-js/faker": "^10.4.0",
56
55
  "@kensio/smartass": "^1.1.0",
57
56
  "@smithy/smithy-client": "^4.13.5",
58
57
  "@smithy/types": "^4.14.2",
@@ -92,6 +91,7 @@
92
91
  }
93
92
  },
94
93
  "dependencies": {
94
+ "@faker-js/faker": "^10.4.0",
95
95
  "@kensio/part-factory": "^0.1.1",
96
96
  "lodash-es": "^4.18.1"
97
97
  },
@@ -100,6 +100,8 @@
100
100
  "fmt": "eslint --fix '{src,test}/**/*.{ts,js}' && prettier --write '{src,test}/**/*.{ts,js,json,md,css,html,yml,yaml}'",
101
101
  "lint": "eslint '{src,test}/**/*.{ts,js}' && prettier --check '{src,test}/**/*.{ts,js,json,md,css,html,yml,yaml}'",
102
102
  "test": "vitest run",
103
- "test:coverage": "vitest run --coverage"
103
+ "test:coverage": "vitest run --coverage",
104
+ "test:iso": "vitest run --project isolatedTests",
105
+ "test:local": "vitest run --project localTests"
104
106
  }
105
107
  }