@kensio/yulin 0.11.0 → 0.13.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 (167) hide show
  1. package/README.md +1 -5
  2. package/dist/index.d.ts +0 -1
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/service/aws/sim-aws-account-region-scope.d.ts +15 -14
  5. package/dist/service/aws/sim-aws-account-region-scope.d.ts.map +1 -1
  6. package/dist/service/aws/sim-aws-account-region-scope.js +12 -11
  7. package/dist/service/aws/sim-aws-account-region-scope.js.map +1 -1
  8. package/dist/service/aws/sim-aws-account.d.ts +18 -9
  9. package/dist/service/aws/sim-aws-account.d.ts.map +1 -1
  10. package/dist/service/aws/sim-aws-account.js +19 -9
  11. package/dist/service/aws/sim-aws-account.js.map +1 -1
  12. package/dist/service/aws/sim-aws-region.d.ts +17 -8
  13. package/dist/service/aws/sim-aws-region.d.ts.map +1 -1
  14. package/dist/service/aws/sim-aws-region.js +15 -5
  15. package/dist/service/aws/sim-aws-region.js.map +1 -1
  16. package/dist/service/aws/sim-aws.d.ts +30 -36
  17. package/dist/service/aws/sim-aws.d.ts.map +1 -1
  18. package/dist/service/aws/sim-aws.js +52 -52
  19. package/dist/service/aws/sim-aws.js.map +1 -1
  20. package/dist/service/cloudfront/command/create-distribution/create-distribution.cmd.d.ts +84 -0
  21. package/dist/service/cloudfront/command/create-distribution/create-distribution.cmd.d.ts.map +1 -0
  22. package/dist/service/cloudfront/command/create-distribution/create-distribution.cmd.js +2 -0
  23. package/dist/service/cloudfront/command/create-distribution/create-distribution.cmd.js.map +1 -0
  24. package/dist/service/cloudfront/command/create-distribution/create-distribution.handler.d.ts +3 -3
  25. package/dist/service/cloudfront/command/create-distribution/create-distribution.handler.d.ts.map +1 -1
  26. package/dist/service/cloudfront/command/create-distribution/create-distribution.handler.js +1 -1
  27. package/dist/service/cloudfront/command/create-distribution/create-distribution.handler.js.map +1 -1
  28. package/dist/service/cloudfront/install/install-sim-cloudfront.d.ts.map +1 -1
  29. package/dist/service/cloudfront/install/install-sim-cloudfront.js +3 -3
  30. package/dist/service/cloudfront/install/install-sim-cloudfront.js.map +1 -1
  31. package/dist/service/cloudfront/origin/sim-cloudfront-s3-origin.d.ts +2 -2
  32. package/dist/service/cloudfront/origin/sim-cloudfront-s3-origin.d.ts.map +1 -1
  33. package/dist/service/cloudfront/origin/sim-cloudfront-s3-origin.js +10 -3
  34. package/dist/service/cloudfront/origin/sim-cloudfront-s3-origin.js.map +1 -1
  35. package/dist/service/cloudfront/sim-cloudfront.d.ts +2 -2
  36. package/dist/service/cloudfront/sim-cloudfront.d.ts.map +1 -1
  37. package/dist/service/cloudfront/sim-cloudfront.js.map +1 -1
  38. package/dist/service/dynamodb/command/create-table/create-table.cmd.d.ts +61 -0
  39. package/dist/service/dynamodb/command/create-table/create-table.cmd.d.ts.map +1 -0
  40. package/dist/service/dynamodb/command/create-table/create-table.cmd.js +2 -0
  41. package/dist/service/dynamodb/command/create-table/create-table.cmd.js.map +1 -0
  42. package/dist/service/dynamodb/command/create-table/create-table.handler.d.ts +3 -3
  43. package/dist/service/dynamodb/command/create-table/create-table.handler.d.ts.map +1 -1
  44. package/dist/service/dynamodb/command/create-table/create-table.handler.js +2 -5
  45. package/dist/service/dynamodb/command/create-table/create-table.handler.js.map +1 -1
  46. package/dist/service/dynamodb/command/describe-table/describe-table.cmd.d.ts +21 -0
  47. package/dist/service/dynamodb/command/describe-table/describe-table.cmd.d.ts.map +1 -0
  48. package/dist/service/dynamodb/command/describe-table/describe-table.cmd.js +2 -0
  49. package/dist/service/dynamodb/command/describe-table/describe-table.cmd.js.map +1 -0
  50. package/dist/service/dynamodb/command/describe-table/describe-table.handler.d.ts +3 -3
  51. package/dist/service/dynamodb/command/describe-table/describe-table.handler.d.ts.map +1 -1
  52. package/dist/service/dynamodb/command/describe-table/describe-table.handler.js +3 -5
  53. package/dist/service/dynamodb/command/describe-table/describe-table.handler.js.map +1 -1
  54. package/dist/service/dynamodb/command/list-tables/list-tables.cmd.d.ts +22 -0
  55. package/dist/service/dynamodb/command/list-tables/list-tables.cmd.d.ts.map +1 -0
  56. package/dist/service/dynamodb/command/list-tables/list-tables.cmd.js +2 -0
  57. package/dist/service/dynamodb/command/list-tables/list-tables.cmd.js.map +1 -0
  58. package/dist/service/dynamodb/command/list-tables/list-tables.handler.d.ts +3 -3
  59. package/dist/service/dynamodb/command/list-tables/list-tables.handler.d.ts.map +1 -1
  60. package/dist/service/dynamodb/command/list-tables/list-tables.handler.js +1 -0
  61. package/dist/service/dynamodb/command/list-tables/list-tables.handler.js.map +1 -1
  62. package/dist/service/dynamodb/command/put-item/put-item.cmd.d.ts +45 -0
  63. package/dist/service/dynamodb/command/put-item/put-item.cmd.d.ts.map +1 -0
  64. package/dist/service/dynamodb/command/put-item/put-item.cmd.js +2 -0
  65. package/dist/service/dynamodb/command/put-item/put-item.cmd.js.map +1 -0
  66. package/dist/service/dynamodb/command/put-item/put-item.handler.d.ts +3 -3
  67. package/dist/service/dynamodb/command/put-item/put-item.handler.d.ts.map +1 -1
  68. package/dist/service/dynamodb/command/put-item/put-item.handler.js +2 -5
  69. package/dist/service/dynamodb/command/put-item/put-item.handler.js.map +1 -1
  70. package/dist/service/dynamodb/error/dynamodb.error.d.ts +28 -0
  71. package/dist/service/dynamodb/error/dynamodb.error.d.ts.map +1 -0
  72. package/dist/service/dynamodb/error/dynamodb.error.js +29 -0
  73. package/dist/service/dynamodb/error/dynamodb.error.js.map +1 -0
  74. package/dist/service/dynamodb/index.d.ts +0 -1
  75. package/dist/service/dynamodb/index.d.ts.map +1 -1
  76. package/dist/service/dynamodb/index.js +0 -1
  77. package/dist/service/dynamodb/index.js.map +1 -1
  78. package/dist/service/dynamodb/item/dynamodb-item-attribute.d.ts +3 -3
  79. package/dist/service/dynamodb/item/dynamodb-item-attribute.d.ts.map +1 -1
  80. package/dist/service/dynamodb/item/dynamodb-item-attribute.js +10 -10
  81. package/dist/service/dynamodb/item/dynamodb-item-attribute.js.map +1 -1
  82. package/dist/service/dynamodb/item/dynamodb-item.d.ts +3 -3
  83. package/dist/service/dynamodb/item/dynamodb-item.d.ts.map +1 -1
  84. package/dist/service/dynamodb/item/dynamodb-item.js.map +1 -1
  85. package/dist/service/dynamodb/sim-dynamodb.d.ts +8 -5
  86. package/dist/service/dynamodb/sim-dynamodb.d.ts.map +1 -1
  87. package/dist/service/dynamodb/sim-dynamodb.js.map +1 -1
  88. package/dist/service/dynamodb/table/dynamodb-key-schema.d.ts +9 -15
  89. package/dist/service/dynamodb/table/dynamodb-key-schema.d.ts.map +1 -1
  90. package/dist/service/dynamodb/table/dynamodb-key-schema.js +29 -35
  91. package/dist/service/dynamodb/table/dynamodb-key-schema.js.map +1 -1
  92. package/dist/service/dynamodb/table/dynamodb-table.d.ts +5 -5
  93. package/dist/service/dynamodb/table/dynamodb-table.d.ts.map +1 -1
  94. package/dist/service/dynamodb/table/dynamodb-table.js +3 -3
  95. package/dist/service/dynamodb/table/dynamodb-table.js.map +1 -1
  96. package/dist/service/s3/bucket/sim-s3-bucket.d.ts +1 -1
  97. package/dist/service/s3/bucket/sim-s3-bucket.d.ts.map +1 -1
  98. package/dist/service/s3/bucket/sim-s3-bucket.js.map +1 -1
  99. package/dist/service/s3/bucket/website/s3-bucket-website.d.ts +2 -2
  100. package/dist/service/s3/bucket/website/s3-bucket-website.d.ts.map +1 -1
  101. package/dist/service/s3/bucket/website/s3-bucket-website.js.map +1 -1
  102. package/dist/service/s3/command/create-bucket/create-bucket.cmd.d.ts +21 -0
  103. package/dist/service/s3/command/create-bucket/create-bucket.cmd.d.ts.map +1 -0
  104. package/dist/service/s3/command/create-bucket/create-bucket.cmd.js +2 -0
  105. package/dist/service/s3/command/create-bucket/create-bucket.cmd.js.map +1 -0
  106. package/dist/service/s3/command/create-bucket/create-bucket.handler.d.ts +3 -3
  107. package/dist/service/s3/command/create-bucket/create-bucket.handler.d.ts.map +1 -1
  108. package/dist/service/s3/command/create-bucket/create-bucket.handler.js +4 -13
  109. package/dist/service/s3/command/create-bucket/create-bucket.handler.js.map +1 -1
  110. package/dist/service/s3/command/get-object/get-object.cmd.d.ts +23 -0
  111. package/dist/service/s3/command/get-object/get-object.cmd.d.ts.map +1 -0
  112. package/dist/service/s3/command/get-object/get-object.cmd.js +2 -0
  113. package/dist/service/s3/command/get-object/get-object.cmd.js.map +1 -0
  114. package/dist/service/s3/command/get-object/get-object.handler.d.ts +3 -3
  115. package/dist/service/s3/command/get-object/get-object.handler.d.ts.map +1 -1
  116. package/dist/service/s3/command/get-object/get-object.handler.js +3 -9
  117. package/dist/service/s3/command/get-object/get-object.handler.js.map +1 -1
  118. package/dist/service/s3/command/list-buckets/list-buckets.cmd.d.ts +30 -0
  119. package/dist/service/s3/command/list-buckets/list-buckets.cmd.d.ts.map +1 -0
  120. package/dist/service/s3/command/list-buckets/list-buckets.cmd.js +2 -0
  121. package/dist/service/s3/command/list-buckets/list-buckets.cmd.js.map +1 -0
  122. package/dist/service/s3/command/list-buckets/list-buckets.handler.d.ts +3 -3
  123. package/dist/service/s3/command/list-buckets/list-buckets.handler.d.ts.map +1 -1
  124. package/dist/service/s3/command/list-buckets/list-buckets.handler.js.map +1 -1
  125. package/dist/service/s3/command/list-objects/list-objects.cmd.d.ts +36 -0
  126. package/dist/service/s3/command/list-objects/list-objects.cmd.d.ts.map +1 -0
  127. package/dist/service/s3/command/list-objects/list-objects.cmd.js +2 -0
  128. package/dist/service/s3/command/list-objects/list-objects.cmd.js.map +1 -0
  129. package/dist/service/s3/command/list-objects/list-objects.handler.d.ts +3 -3
  130. package/dist/service/s3/command/list-objects/list-objects.handler.d.ts.map +1 -1
  131. package/dist/service/s3/command/list-objects/list-objects.handler.js +2 -5
  132. package/dist/service/s3/command/list-objects/list-objects.handler.js.map +1 -1
  133. package/dist/service/s3/command/put-bucket-website/put-bucket-website.cmd.d.ts +72 -0
  134. package/dist/service/s3/command/put-bucket-website/put-bucket-website.cmd.d.ts.map +1 -0
  135. package/dist/service/s3/command/put-bucket-website/put-bucket-website.cmd.js +2 -0
  136. package/dist/service/s3/command/put-bucket-website/put-bucket-website.cmd.js.map +1 -0
  137. package/dist/service/s3/command/put-bucket-website/put-bucket-website.handler.d.ts +3 -3
  138. package/dist/service/s3/command/put-bucket-website/put-bucket-website.handler.d.ts.map +1 -1
  139. package/dist/service/s3/command/put-bucket-website/put-bucket-website.handler.js +2 -5
  140. package/dist/service/s3/command/put-bucket-website/put-bucket-website.handler.js.map +1 -1
  141. package/dist/service/s3/command/put-object/put-object.cmd.d.ts +27 -0
  142. package/dist/service/s3/command/put-object/put-object.cmd.d.ts.map +1 -0
  143. package/dist/service/s3/command/put-object/put-object.cmd.js +2 -0
  144. package/dist/service/s3/command/put-object/put-object.cmd.js.map +1 -0
  145. package/dist/service/s3/command/put-object/put-object.handler.d.ts +3 -3
  146. package/dist/service/s3/command/put-object/put-object.handler.d.ts.map +1 -1
  147. package/dist/service/s3/command/put-object/put-object.handler.js +2 -5
  148. package/dist/service/s3/command/put-object/put-object.handler.js.map +1 -1
  149. package/dist/service/s3/error/s3.error.d.ts +42 -0
  150. package/dist/service/s3/error/s3.error.d.ts.map +1 -0
  151. package/dist/service/s3/error/s3.error.js +47 -0
  152. package/dist/service/s3/error/s3.error.js.map +1 -0
  153. package/dist/service/s3/index.d.ts +0 -1
  154. package/dist/service/s3/index.d.ts.map +1 -1
  155. package/dist/service/s3/index.js +0 -1
  156. package/dist/service/s3/index.js.map +1 -1
  157. package/dist/service/s3/serve/sim-s3-controller.d.ts +1 -2
  158. package/dist/service/s3/serve/sim-s3-controller.d.ts.map +1 -1
  159. package/dist/service/s3/serve/sim-s3-controller.js.map +1 -1
  160. package/dist/service/s3/serve/sim-s3-req-router.d.ts +1 -2
  161. package/dist/service/s3/serve/sim-s3-req-router.d.ts.map +1 -1
  162. package/dist/service/s3/serve/sim-s3-req-router.js +2 -2
  163. package/dist/service/s3/serve/sim-s3-req-router.js.map +1 -1
  164. package/dist/service/s3/sim-s3.d.ts +12 -7
  165. package/dist/service/s3/sim-s3.d.ts.map +1 -1
  166. package/dist/service/s3/sim-s3.js.map +1 -1
  167. package/package.json +1 -1
package/README.md CHANGED
@@ -16,11 +16,9 @@ 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"
20
19
  import { CreateTableCommand } from "@aws-sdk/client-dynamodb";
21
20
 
22
21
  const simAws = new SimAws();
23
- installSimDynamoDb(simAws);
24
22
 
25
23
  // Default Account and Region.
26
24
  await simAws.service("dynamoDb").createTable(
@@ -65,7 +63,6 @@ You can listen on a port to serve your simulated AWS on localhost:
65
63
 
66
64
  ```typescript
67
65
  import { SimAws } from "@kensio/yulin";
68
- import { installSimS3 } from "@kensio/yulin/s3";
69
66
  import { serveSimAws } from "@kensio/yulin/serve";
70
67
  import {
71
68
  CreateBucketCommand,
@@ -74,10 +71,9 @@ import {
74
71
  } from "@aws-sdk/client-s3";
75
72
 
76
73
  const simAws = new SimAws();
77
- installSimS3(simAws);
78
74
  const srv = await serveSimAws(simAws); // Chooses available port on localhost.
79
75
 
80
- const simS3 = simAws.region("eu-west-2").service("s3");
76
+ const simS3 = simAws.region("eu-west-2").s3();
81
77
  await simS3.createBucket(new CreateBucketCommand({ Bucket: "foo-site" }));
82
78
  await simS3.putBucketWebsite(new PutBucketWebsiteCommand({
83
79
  Bucket: "foo-site",
package/dist/index.d.ts CHANGED
@@ -2,7 +2,6 @@ export { SimAws } from "./service/aws/sim-aws.js";
2
2
  export { SimAwsAccount } from "./service/aws/sim-aws-account.js";
3
3
  export { SimAwsRegion } from "./service/aws/sim-aws-region.js";
4
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
5
  export type { AwsRegionName } from "./service/aws/sim-aws-region.js";
7
6
  export type { SimAwsAccountId } from "./service/aws/sim-aws-account.js";
8
7
  export type { SimAwsAccountRegionScope } from "./service/aws/sim-aws-account-region-scope.js";
@@ -1 +1 @@
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"}
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,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AACrE,YAAY,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACxE,YAAY,EAAE,wBAAwB,EAAE,MAAM,+CAA+C,CAAC"}
@@ -1,33 +1,34 @@
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 { NoSimAwsServices, SimAwsServiceMap } from "./sim-aws-services.js";
4
3
  import { SimAws } from "./sim-aws.js";
5
4
  import { DynamicFactory } from "@kensio/part-factory";
5
+ import type { SimS3 } from "../s3/sim-s3.js";
6
+ import type { SimCloudFront } from "../cloudfront/sim-cloudfront.js";
7
+ import type { SimDynamoDb } from "../dynamodb/index.js";
6
8
  export type SimAccountRegionScopeKey = `${SimAwsAccountId}:${AwsRegionName}`;
7
9
  /**
8
10
  * Combined simulated AWS Account and Region scope.
9
11
  * This is the real Account/Region scope container for simulated services.
10
12
  */
11
- export declare class SimAwsAccountRegionContainer<TServices extends SimAwsServiceMap = NoSimAwsServices> {
13
+ export declare class SimAwsAccountRegionContainer {
12
14
  private readonly simAws;
13
- readonly account: SimAwsAccount<TServices>;
14
- readonly region: SimAwsRegion<TServices>;
15
+ readonly account: SimAwsAccount;
16
+ readonly region: SimAwsRegion;
15
17
  private readonly memo;
16
18
  readonly accountRegionScope: SimAwsAccountRegionScope;
17
- constructor(simAws?: SimAws<TServices>, account?: SimAwsAccount<TServices>, region?: SimAwsRegion<TServices>);
19
+ constructor(simAws?: SimAws, account?: SimAwsAccount, region?: SimAwsRegion);
18
20
  /**
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.
21
+ * Get simulated S3 for this account and region.
22
22
  */
23
- service<TKey extends keyof TServices>(serviceName: TKey): TServices[TKey];
23
+ s3(): SimS3;
24
24
  /**
25
- * Get an installed simulated AWS service by runtime service name.
26
- *
27
- * This is useful for optional cross-service dependencies, where one simulated
28
- * service can use another if it has been independently installed.
25
+ * Get simulated CloudFront for this account.
29
26
  */
30
- _requireService<TService>(serviceName: PropertyKey): TService;
27
+ cloudFront(): SimCloudFront;
28
+ /**
29
+ * Get simulated DynamoDB for this account and region.
30
+ */
31
+ dynamoDb(): SimDynamoDb;
31
32
  }
32
33
  export interface SimAwsAccountRegionScope {
33
34
  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,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;IAMzE;;;;;OAKG;IACH,eAAe,CAAC,QAAQ,EAAE,WAAW,EAAE,WAAW,GAAG,QAAQ;CAK9D;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;AAE7B,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,MAAM,MAAM,wBAAwB,GAAG,GAAG,eAAe,IAAI,aAAa,EAAE,CAAC;AAE7E;;;GAGG;AACH,qBAAa,4BAA4B;IAMrC,OAAO,CAAC,QAAQ,CAAC,MAAM;aACP,OAAO,EAAE,aAAa;aACtB,MAAM,EAAE,YAAY;IAPtC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAuB;IAE5C,SAAgB,kBAAkB,EAAE,wBAAwB,CAAC;gBAG1C,MAAM,GAAE,MAAqB,EAC9B,OAAO,GAAE,aAAqC,EAC9C,MAAM,GAAE,YAAmC;IAQ7D;;OAEG;IACH,EAAE,IAAI,KAAK;IAIX;;OAEG;IACH,UAAU,IAAI,aAAa;IAM3B;;OAEG;IACH,QAAQ,IAAI,WAAW;CAKxB;AAED,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,eAAe,CAAC;IAC3B,UAAU,EAAE,aAAa,CAAC;CAC3B;AAED;;GAEG;AACH,eAAO,MAAM,+BAA+B,0CAIvC,CAAC"}
@@ -23,21 +23,22 @@ export class SimAwsAccountRegionContainer {
23
23
  };
24
24
  }
25
25
  /**
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.
26
+ * Get simulated S3 for this account and region.
29
27
  */
30
- service(serviceName) {
31
- return this.memo.getOrCreate(String(serviceName), () => this.simAws.createService(serviceName, this));
28
+ s3() {
29
+ return this.memo.getOrCreate("s3", () => this.simAws.createS3(this));
32
30
  }
33
31
  /**
34
- * Get an installed simulated AWS service by runtime service name.
35
- *
36
- * This is useful for optional cross-service dependencies, where one simulated
37
- * service can use another if it has been independently installed.
32
+ * Get simulated CloudFront for this account.
38
33
  */
39
- _requireService(serviceName) {
40
- return this.memo.getOrCreate(String(serviceName), () => this.simAws._createRequiredService(serviceName, this));
34
+ cloudFront() {
35
+ return this.memo.getOrCreate("cloudFront", () => this.simAws.createCloudFront(this));
36
+ }
37
+ /**
38
+ * Get simulated DynamoDB for this account and region.
39
+ */
40
+ dynamoDb() {
41
+ return this.memo.getOrCreate("dynamoDb", () => this.simAws.createDynamoDb(this));
41
42
  }
42
43
  }
43
44
  /**
@@ -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,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;IAED;;;;;OAKG;IACH,eAAe,CAAW,WAAwB;QAChD,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,GAAG,EAAE,CACrD,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAW,WAAW,EAAE,IAAI,CAAC,CAChE,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
+ {"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;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAOtD;;;GAGG;AACH,MAAM,OAAO,4BAA4B;IAMpB;IACD;IACA;IAPD,IAAI,GAAG,IAAI,IAAI,EAAW,CAAC;IAE5B,kBAAkB,CAA2B;IAE7D,YACmB,SAAiB,IAAI,MAAM,EAAE,EAC9B,UAAyB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EAC9C,SAAuB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;QAF1C,WAAM,GAAN,MAAM,CAAuB;QAC9B,YAAO,GAAP,OAAO,CAAuC;QAC9C,WAAM,GAAN,MAAM,CAAqC;QAE3D,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,EAAE;QACA,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IACvE,CAAC;IAED;;OAEG;IACH,UAAU;QACR,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,GAAG,EAAE,CAC9C,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CACnC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,GAAG,EAAE,CAC5C,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CACjC,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,7 +1,10 @@
1
1
  import type { AwsRegionName } from "./sim-aws-region.js";
2
2
  import type { Brand } from "../../util/brand.type.js";
3
- import type { NoSimAwsServices, SimAwsAccountRegionScopes, SimAwsServiceMap } from "./sim-aws-services.js";
4
3
  import type { SimAwsAccountRegionContainer } from "./sim-aws-account-region-scope.js";
4
+ import type { SimS3 } from "../s3/sim-s3.js";
5
+ import type { SimCloudFront } from "../cloudfront/sim-cloudfront.js";
6
+ import type { SimDynamoDb } from "../dynamodb/sim-dynamodb.js";
7
+ import type { SimAws } from "./sim-aws.js";
5
8
  export type SimAwsAccountId = Brand<string, "SimAwsAccountId">;
6
9
  export declare const DEFAULT_SIM_AWS_ACCOUNT_ID: SimAwsAccountId;
7
10
  /**
@@ -10,20 +13,26 @@ export declare const DEFAULT_SIM_AWS_ACCOUNT_ID: SimAwsAccountId;
10
13
  * So SimAwsAccount is like an intermediate navigation handler on the way to a
11
14
  * full Account/Region scope.
12
15
  */
13
- export declare class SimAwsAccount<TServices extends SimAwsServiceMap = NoSimAwsServices> {
14
- private readonly accountRegionScopes;
16
+ export declare class SimAwsAccount {
17
+ private readonly simAws;
15
18
  readonly accountId: SimAwsAccountId;
16
- constructor(accountRegionScopes: SimAwsAccountRegionScopes<TServices>, accountId?: SimAwsAccountId);
19
+ constructor(simAws: Pick<SimAws, "accountRegionScope">, accountId?: SimAwsAccountId);
17
20
  /**
18
21
  * Get a simulated AWS Region scoped for this Account.
19
22
  */
20
- region(regionName?: AwsRegionName): SimAwsAccountRegionContainer<TServices>;
23
+ region(regionName?: AwsRegionName): SimAwsAccountRegionContainer;
21
24
  /**
22
- * Get an installed simulated AWS service for this Account's default Region.
23
- * The service must be installed with the appropriate installer function
24
- * first.
25
+ * Get simulated S3 for this Account's default Region.
25
26
  */
26
- service<TKey extends keyof TServices>(serviceName: TKey): TServices[TKey];
27
+ s3(): SimS3;
28
+ /**
29
+ * Get simulated CloudFront for this Account.
30
+ */
31
+ cloudFront(): SimCloudFront;
32
+ /**
33
+ * Get simulated DynamoDB for this Account's default Region.
34
+ */
35
+ dynamoDb(): SimDynamoDb;
27
36
  }
28
37
  /**
29
38
  * 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,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;;;;;GAKG;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"}
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,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AAEtF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;AAE/D,eAAO,MAAM,0BAA0B,EAAqB,eAAe,CAAC;AAE5E;;;;;GAKG;AACH,qBAAa,aAAa;IAEtB,OAAO,CAAC,QAAQ,CAAC,MAAM;aACP,SAAS,EAAE,eAAe;gBADzB,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,oBAAoB,CAAC,EAC3C,SAAS,GAAE,eAA4C;IAGzE;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,EAAE,aAAa,GAAG,4BAA4B;IAIhE;;OAEG;IACH,EAAE,IAAI,KAAK;IAIX;;OAEG;IACH,UAAU,IAAI,aAAa;IAI3B;;OAEG;IACH,QAAQ,IAAI,WAAW;CAGxB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,eAAe,CAErD"}
@@ -7,25 +7,35 @@ export const DEFAULT_SIM_AWS_ACCOUNT_ID = "888888888888";
7
7
  * full Account/Region scope.
8
8
  */
9
9
  export class SimAwsAccount {
10
- accountRegionScopes;
10
+ simAws;
11
11
  accountId;
12
- constructor(accountRegionScopes, accountId = DEFAULT_SIM_AWS_ACCOUNT_ID) {
13
- this.accountRegionScopes = accountRegionScopes;
12
+ constructor(simAws, accountId = DEFAULT_SIM_AWS_ACCOUNT_ID) {
13
+ this.simAws = simAws;
14
14
  this.accountId = accountId;
15
15
  }
16
16
  /**
17
17
  * Get a simulated AWS Region scoped for this Account.
18
18
  */
19
19
  region(regionName) {
20
- return this.accountRegionScopes.accountRegionScope(this.accountId, regionName);
20
+ return this.simAws.accountRegionScope(this.accountId, regionName);
21
21
  }
22
22
  /**
23
- * Get an installed simulated AWS service for this Account's default Region.
24
- * The service must be installed with the appropriate installer function
25
- * first.
23
+ * Get simulated S3 for this Account's default Region.
26
24
  */
27
- service(serviceName) {
28
- return this.region().service(serviceName);
25
+ s3() {
26
+ return this.region().s3();
27
+ }
28
+ /**
29
+ * Get simulated CloudFront for this Account.
30
+ */
31
+ cloudFront() {
32
+ return this.region().cloudFront();
33
+ }
34
+ /**
35
+ * Get simulated DynamoDB for this Account's default Region.
36
+ */
37
+ dynamoDb() {
38
+ return this.region().dynamoDb();
29
39
  }
30
40
  }
31
41
  /**
@@ -1 +1 @@
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;;;;;GAKG;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
+ {"version":3,"file":"sim-aws-account.js","sourceRoot":"","sources":["../../../src/service/aws/sim-aws-account.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAQxC,MAAM,CAAC,MAAM,0BAA0B,GAAG,cAAiC,CAAC;AAE5E;;;;;GAKG;AACH,MAAM,OAAO,aAAa;IAEL;IACD;IAFlB,YACmB,MAA0C,EAC3C,YAA6B,0BAA0B;QADtD,WAAM,GAAN,MAAM,CAAoC;QAC3C,cAAS,GAAT,SAAS,CAA8C;IACtE,CAAC;IAEJ;;OAEG;IACH,MAAM,CAAC,UAA0B;QAC/B,OAAO,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IACpE,CAAC;IAED;;OAEG;IACH,EAAE;QACA,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,UAAU;QACR,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;IAClC,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,6 +1,9 @@
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 { NoSimAwsServices, SimAwsAccountRegionScopes, SimAwsServiceMap } from "./sim-aws-services.js";
3
+ import type { SimS3 } from "../s3/sim-s3.js";
4
+ import type { SimCloudFront } from "../cloudfront/sim-cloudfront.js";
5
+ import type { SimDynamoDb } from "../dynamodb/index.js";
6
+ import type { SimAws } from "./sim-aws.js";
4
7
  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"];
5
8
  export type AwsRegionName = (typeof AWS_REGION_NAMES)[number];
6
9
  export declare const DEFAULT_SIM_AWS_REGION_NAME: "us-east-1";
@@ -10,20 +13,26 @@ export declare const DEFAULT_SIM_AWS_REGION_NAME: "us-east-1";
10
13
  * So SimAwsRegion is like an intermediate navigation handler on the way to a
11
14
  * full Account/Region scope.
12
15
  */
13
- export declare class SimAwsRegion<TServices extends SimAwsServiceMap = NoSimAwsServices> {
16
+ export declare class SimAwsRegion {
14
17
  private readonly accountRegionScopes;
15
18
  readonly regionName: AwsRegionName;
16
- constructor(accountRegionScopes: SimAwsAccountRegionScopes<TServices>, regionName?: AwsRegionName);
19
+ constructor(accountRegionScopes: Pick<SimAws, "accountRegionScope">, regionName?: AwsRegionName);
17
20
  /**
18
21
  * Get a simulated AWS Account scoped for this Region.
19
22
  */
20
- account(accountId?: SimAwsAccountId | string): SimAwsAccountRegionContainer<TServices>;
23
+ account(accountId?: SimAwsAccountId | string): SimAwsAccountRegionContainer;
21
24
  /**
22
- * Get an installed simulated AWS service for this Region's default Account.
23
- * The service must be installed with the appropriate installer function
24
- * first.
25
+ * Get simulated S3 for this Region's default Account.
25
26
  */
26
- service<TKey extends keyof TServices>(serviceName: TKey): TServices[TKey];
27
+ s3(): SimS3;
28
+ /**
29
+ * Get simulated CloudFront for this Region's default Account.
30
+ */
31
+ cloudFront(): SimCloudFront;
32
+ /**
33
+ * Get simulated DynamoDB for this Region's default Account.
34
+ */
35
+ dynamoDb(): SimDynamoDb;
27
36
  }
28
37
  /**
29
38
  * 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,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;;;;;GAKG;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"}
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;AAEtF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C,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;;;;;GAKG;AACH,qBAAa,YAAY;IAErB,OAAO,CAAC,QAAQ,CAAC,mBAAmB;aACpB,UAAU,EAAE,aAAa;gBADxB,mBAAmB,EAAE,IAAI,CAAC,MAAM,EAAE,oBAAoB,CAAC,EACxD,UAAU,GAAE,aAA2C;IAGzE;;OAEG;IACH,OAAO,CAAC,SAAS,CAAC,EAAE,eAAe,GAAG,MAAM,GAAG,4BAA4B;IAO3E;;OAEG;IACH,EAAE,IAAI,KAAK;IAIX;;OAEG;IACH,UAAU,IAAI,aAAa;IAI3B;;OAEG;IACH,QAAQ,IAAI,WAAW;CAGxB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,aAAa,CAEjD"}
@@ -56,12 +56,22 @@ export class SimAwsRegion {
56
56
  return this.accountRegionScopes.accountRegionScope(accountId, this.regionName);
57
57
  }
58
58
  /**
59
- * Get an installed simulated AWS service for this Region's default Account.
60
- * The service must be installed with the appropriate installer function
61
- * first.
59
+ * Get simulated S3 for this Region's default Account.
62
60
  */
63
- service(serviceName) {
64
- return this.account().service(serviceName);
61
+ s3() {
62
+ return this.account().s3();
63
+ }
64
+ /**
65
+ * Get simulated CloudFront for this Region's default Account.
66
+ */
67
+ cloudFront() {
68
+ return this.account().cloudFront();
69
+ }
70
+ /**
71
+ * Get simulated DynamoDB for this Region's default Account.
72
+ */
73
+ dynamoDb() {
74
+ return this.account().dynamoDb();
65
75
  }
66
76
  }
67
77
  /**
@@ -1 +1 @@
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;;;;;GAKG;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
+ {"version":3,"file":"sim-aws-region.js","sourceRoot":"","sources":["../../../src/service/aws/sim-aws-region.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAMxC,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;;;;;GAKG;AACH,MAAM,OAAO,YAAY;IAEJ;IACD;IAFlB,YACmB,mBAAuD,EACxD,aAA4B,2BAA2B;QADtD,wBAAmB,GAAnB,mBAAmB,CAAoC;QACxD,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,EAAE;QACA,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC;IACnC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;AACtD,CAAC"}
@@ -1,73 +1,67 @@
1
1
  import { SimAwsAccount, type SimAwsAccountId } from "./sim-aws-account.js";
2
2
  import { type BackgroundCompleter, type BackgroundScheduler } from "../../util/background/background.js";
3
- import { SimAwsRegion, type AwsRegionName } from "./sim-aws-region.js";
4
- import type { NoSimAwsServices, SimAwsAccountRegionScopes, SimAwsServiceFactory, SimAwsServiceMap } from "./sim-aws-services.js";
3
+ import { type AwsRegionName, SimAwsRegion } from "./sim-aws-region.js";
5
4
  import { SimAwsAccountRegionContainer } from "./sim-aws-account-region-scope.js";
6
- import type { SimAwsServiceController, SimAwsServiceControllerFactory } from "../../serve/controller/sim-service-controller.js";
5
+ import type { SimAwsServiceController } from "../../serve/controller/sim-service-controller.js";
6
+ import { SimS3 } from "../s3/sim-s3.js";
7
+ import { SimCloudFront } from "../cloudfront/sim-cloudfront.js";
8
+ import { SimDynamoDb } from "../dynamodb/index.js";
7
9
  /**
8
10
  * Top-level container for simulated AWS.
9
- * Contains Account scopes, Region scopes, Account/Region scopes.
10
- * Installers for each simulated service install services into the SimAws
11
- * container.
12
- * This allows for individual services to be installed as necessary, without
13
- * importing all of them from the root and requiring every AWS SDK to be
14
- * installed.
11
+ * Contains Account scopes, Region scopes, Account/Region scopes, and built-in
12
+ * simulated AWS services.
15
13
  */
16
- export declare class SimAws<TServices extends SimAwsServiceMap = NoSimAwsServices> implements SimAwsAccountRegionScopes<TServices> {
14
+ export declare class SimAws {
17
15
  readonly defaultAccountId: SimAwsAccountId;
18
16
  readonly defaultRegionName: "us-east-1";
19
17
  readonly background: BackgroundScheduler & BackgroundCompleter;
20
18
  private readonly accounts;
21
19
  private readonly regions;
22
20
  private readonly accountRegionScopes;
23
- private readonly serviceFactories;
24
- private readonly serviceControllerFactories;
21
+ private readonly s3GlobalRegistry;
22
+ private readonly cloudFrontRegistry;
23
+ private readonly cloudFrontServices;
25
24
  constructor(defaultAccountId?: SimAwsAccountId, defaultRegionName?: "us-east-1", background?: BackgroundScheduler & BackgroundCompleter);
26
25
  /**
27
26
  * Get a simulated AWS Account.
28
27
  */
29
- account(accountId?: string): SimAwsAccount<TServices>;
28
+ account(accountId?: string): SimAwsAccount;
30
29
  /**
31
30
  * Get a simulated AWS Account Region scope.
32
31
  */
33
- region(regionName?: AwsRegionName): SimAwsRegion<TServices>;
32
+ region(regionName?: AwsRegionName): SimAwsRegion;
34
33
  /**
35
34
  * Get an Account Region scope in this simulated AWS.
36
35
  */
37
- accountRegionScope(accountId?: SimAwsAccountId, regionName?: AwsRegionName): SimAwsAccountRegionContainer<TServices>;
36
+ accountRegionScope(accountId?: SimAwsAccountId, regionName?: AwsRegionName): SimAwsAccountRegionContainer;
38
37
  /**
39
- * Install a simulated AWS service factory.
38
+ * Get simulated S3 in the default Account Region scope.
40
39
  */
41
- installService(serviceName: PropertyKey, factory: SimAwsServiceFactory): void;
40
+ s3(): SimS3;
42
41
  /**
43
- * Install a simulated AWS HTTP service controller factory.
42
+ * Get simulated CloudFront in the default Account scope.
44
43
  */
45
- installServiceController(serviceName: string, factory: SimAwsServiceControllerFactory): void;
44
+ cloudFront(): SimCloudFront;
46
45
  /**
47
- * Create an installed simulated AWS service for an Account Region scope.
46
+ * Get simulated DynamoDB in the default Account Region scope.
48
47
  */
49
- createService<TKey extends keyof TServices>(serviceName: TKey, scope: SimAwsAccountRegionContainer<TServices>): TServices[TKey];
48
+ dynamoDb(): SimDynamoDb;
50
49
  /**
51
- * Create an installed simulated AWS service by runtime service name.
52
- *
53
- * This is intended for optional cross-service dependencies where TypeScript
54
- * cannot know that another independently installed service is available.
55
- *
56
- * E.g. sim CloudFront needs sim S3 for S3 Origins. This pattern throws a more
57
- * helpful error message when the user tries to do that without installing
58
- * both sim services.
50
+ * Create simulated S3 for an Account Region scope.
59
51
  */
60
- _createRequiredService<TService>(serviceName: PropertyKey, scope: SimAwsAccountRegionContainer<SimAwsServiceMap>): TService;
52
+ createS3(scope: SimAwsAccountRegionContainer): SimS3;
61
53
  /**
62
- * Create an installed simulated AWS HTTP service controller.
54
+ * Create or get simulated CloudFront for an Account scope.
63
55
  */
64
- createServiceController(serviceName: string): SimAwsServiceController;
56
+ createCloudFront(scope: SimAwsAccountRegionContainer): SimCloudFront;
57
+ /**
58
+ * Create simulated DynamoDB for an Account Region scope.
59
+ */
60
+ createDynamoDb(scope: SimAwsAccountRegionContainer): SimDynamoDb;
65
61
  /**
66
- * Get an installed simulated AWS service in the default Account Region scope.
67
- * The service must be installed with the appropriate installer function
68
- * first.
62
+ * Create a simulated AWS HTTP service controller.
69
63
  */
70
- service<TKey extends keyof TServices>(serviceName: TKey): TServices[TKey];
64
+ createServiceController(serviceName: string): SimAwsServiceController;
71
65
  /**
72
66
  * Wait for all outstanding background tasks to complete.
73
67
  */
@@ -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,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;;;;;;;;GAQG;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;IASP;;OAEG;IACH,wBAAwB,CACtB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,8BAA8B,GACtC,IAAI;IASP;;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;;;;;;;;;OASG;IACH,sBAAsB,CAAC,QAAQ,EAC7B,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,4BAA4B,CAAC,gBAAgB,CAAC,GACpD,QAAQ;IAYX;;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"}
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,EACL,KAAK,aAAa,EAElB,YAAY,EACb,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEL,4BAA4B,EAC7B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kDAAkD,CAAC;AAChG,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAGxC,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAIhE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD;;;;GAIG;AACH,qBAAa,MAAM;aAoBC,gBAAgB;aAChB,iBAAiB;aACjB,UAAU,EAAE,mBAAmB,GAC7C,mBAAmB;IAtBvB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6C;IAEtE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0C;IAElE,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAGhC;IAEJ,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA6B;IAE9D,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA+B;IAElE,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAG/B;gBAGc,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;IAgB/B;;OAEG;IACH,EAAE,IAAI,KAAK;IAIX;;OAEG;IACH,UAAU,IAAI,aAAa;IAI3B;;OAEG;IACH,QAAQ,IAAI,WAAW;IAIvB;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,4BAA4B,GAAG,KAAK;IAIpD;;OAEG;IACH,gBAAgB,CAAC,KAAK,EAAE,4BAA4B,GAAG,aAAa;IAiBpE;;OAEG;IACH,cAAc,CAAC,KAAK,EAAE,4BAA4B,GAAG,WAAW;IAIhE;;OAEG;IACH,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,uBAAuB;IAkBrE;;OAEG;IACG,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/C"}
@@ -2,14 +2,18 @@ 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 { SimS3 } from "../s3/sim-s3.js";
6
+ import { SimS3GlobalRegistry } from "../s3/sim-s3-global-registry.js";
7
+ import { SimS3ServiceController } from "../s3/serve/sim-s3-controller.js";
8
+ import { SimCloudFront } from "../cloudfront/sim-cloudfront.js";
9
+ import { SimCloudFrontRegistry } from "../cloudfront/sim-cloud-front-registry.js";
10
+ import { createSimCloudFrontS3OriginResolver } from "../cloudfront/origin/sim-cloudfront-s3-origin.js";
11
+ import { SimCloudFrontServiceController } from "../cloudfront/controller/sim-cloudfront-controller.js";
12
+ import { SimDynamoDb } from "../dynamodb/index.js";
5
13
  /**
6
14
  * Top-level container for simulated AWS.
7
- * Contains Account scopes, Region scopes, Account/Region scopes.
8
- * Installers for each simulated service install services into the SimAws
9
- * container.
10
- * This allows for individual services to be installed as necessary, without
11
- * importing all of them from the root and requiring every AWS SDK to be
12
- * installed.
15
+ * Contains Account scopes, Region scopes, Account/Region scopes, and built-in
16
+ * simulated AWS services.
13
17
  */
14
18
  export class SimAws {
15
19
  defaultAccountId;
@@ -18,8 +22,9 @@ export class SimAws {
18
22
  accounts = new Map();
19
23
  regions = new Map();
20
24
  accountRegionScopes = new Map();
21
- serviceFactories = new Map();
22
- serviceControllerFactories = new Map();
25
+ s3GlobalRegistry = new SimS3GlobalRegistry();
26
+ cloudFrontRegistry = new SimCloudFrontRegistry();
27
+ cloudFrontServices = new Map();
23
28
  constructor(defaultAccountId = DEFAULT_SIM_AWS_ACCOUNT_ID, defaultRegionName = DEFAULT_SIM_AWS_REGION_NAME, background = new BackgroundTasks()) {
24
29
  this.defaultAccountId = defaultAccountId;
25
30
  this.defaultRegionName = defaultRegionName;
@@ -60,67 +65,62 @@ export class SimAws {
60
65
  return accountRegionScope;
61
66
  }
62
67
  /**
63
- * Install a simulated AWS service factory.
68
+ * Get simulated S3 in the default Account Region scope.
64
69
  */
65
- installService(serviceName, factory) {
66
- if (this.serviceFactories.has(serviceName)) {
67
- throw new Error(`Sim AWS service is already installed: ${String(serviceName)}`);
68
- }
69
- this.serviceFactories.set(serviceName, factory);
70
+ s3() {
71
+ return this.accountRegionScope().s3();
70
72
  }
71
73
  /**
72
- * Install a simulated AWS HTTP service controller factory.
74
+ * Get simulated CloudFront in the default Account scope.
73
75
  */
74
- installServiceController(serviceName, factory) {
75
- if (this.serviceControllerFactories.has(serviceName)) {
76
- throw new Error(`Sim AWS service controller is already installed: ${serviceName}`);
77
- }
78
- this.serviceControllerFactories.set(serviceName, factory);
76
+ cloudFront() {
77
+ return this.accountRegionScope().cloudFront();
79
78
  }
80
79
  /**
81
- * Create an installed simulated AWS service for an Account Region scope.
80
+ * Get simulated DynamoDB in the default Account Region scope.
82
81
  */
83
- createService(serviceName, scope) {
84
- const factory = this.serviceFactories.get(serviceName);
85
- if (factory === undefined) {
86
- throw new Error(`Sim AWS service is not installed: ${String(serviceName)}. Call installer function to install it.`);
87
- }
88
- return factory(scope);
82
+ dynamoDb() {
83
+ return this.accountRegionScope().dynamoDb();
89
84
  }
90
85
  /**
91
- * Create an installed simulated AWS service by runtime service name.
92
- *
93
- * This is intended for optional cross-service dependencies where TypeScript
94
- * cannot know that another independently installed service is available.
95
- *
96
- * E.g. sim CloudFront needs sim S3 for S3 Origins. This pattern throws a more
97
- * helpful error message when the user tries to do that without installing
98
- * both sim services.
86
+ * Create simulated S3 for an Account Region scope.
99
87
  */
100
- _createRequiredService(serviceName, scope) {
101
- const factory = this.serviceFactories.get(serviceName);
102
- if (factory === undefined) {
103
- throw new Error(`Sim AWS service is not installed: ${String(serviceName)}. Call installer function to install it.`);
104
- }
105
- return factory(scope);
88
+ createS3(scope) {
89
+ return new SimS3(scope.accountRegionScope, this.s3GlobalRegistry);
106
90
  }
107
91
  /**
108
- * Create an installed simulated AWS HTTP service controller.
92
+ * Create or get simulated CloudFront for an Account scope.
109
93
  */
110
- createServiceController(serviceName) {
111
- const factory = this.serviceControllerFactories.get(serviceName);
112
- if (factory === undefined) {
113
- throw new Error(`No controller installed for simulated AWS service ${serviceName}`);
94
+ createCloudFront(scope) {
95
+ const { accountId } = scope.accountRegionScope;
96
+ let cloudFront = this.cloudFrontServices.get(accountId);
97
+ if (cloudFront === undefined) {
98
+ cloudFront = new SimCloudFront(scope.accountRegionScope, this.cloudFrontRegistry, createSimCloudFrontS3OriginResolver(this, scope));
99
+ this.cloudFrontServices.set(accountId, cloudFront);
114
100
  }
115
- return factory(this);
101
+ return cloudFront;
116
102
  }
117
103
  /**
118
- * Get an installed simulated AWS service in the default Account Region scope.
119
- * The service must be installed with the appropriate installer function
120
- * first.
104
+ * Create simulated DynamoDB for an Account Region scope.
121
105
  */
122
- service(serviceName) {
123
- return this.accountRegionScope().service(serviceName);
106
+ createDynamoDb(scope) {
107
+ return new SimDynamoDb(scope.accountRegionScope, this.background);
108
+ }
109
+ /**
110
+ * Create a simulated AWS HTTP service controller.
111
+ */
112
+ createServiceController(serviceName) {
113
+ switch (serviceName) {
114
+ case "s3": {
115
+ return new SimS3ServiceController(this);
116
+ }
117
+ case "cloudFront": {
118
+ return new SimCloudFrontServiceController(this.cloudFront());
119
+ }
120
+ default: {
121
+ throw new Error(`No controller for simulated AWS service ${serviceName}`);
122
+ }
123
+ }
124
124
  }
125
125
  /**
126
126
  * Wait for all outstanding background tasks to complete.