fauxqs 1.5.0 → 1.6.4

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 (123) hide show
  1. package/README.md +160 -25
  2. package/dist/app.d.ts +3 -0
  3. package/dist/app.d.ts.map +1 -1
  4. package/dist/app.js +14 -4
  5. package/dist/app.js.map +1 -1
  6. package/dist/initConfig.d.ts +4 -0
  7. package/dist/initConfig.d.ts.map +1 -1
  8. package/dist/initConfig.js +18 -2
  9. package/dist/initConfig.js.map +1 -1
  10. package/dist/s3/actions/completeMultipartUpload.d.ts.map +1 -1
  11. package/dist/s3/actions/completeMultipartUpload.js +10 -4
  12. package/dist/s3/actions/completeMultipartUpload.js.map +1 -1
  13. package/dist/s3/actions/createMultipartUpload.d.ts.map +1 -1
  14. package/dist/s3/actions/createMultipartUpload.js +8 -3
  15. package/dist/s3/actions/createMultipartUpload.js.map +1 -1
  16. package/dist/s3/actions/deleteObjects.d.ts.map +1 -1
  17. package/dist/s3/actions/deleteObjects.js +3 -2
  18. package/dist/s3/actions/deleteObjects.js.map +1 -1
  19. package/dist/s3/actions/listBuckets.d.ts.map +1 -1
  20. package/dist/s3/actions/listBuckets.js +7 -5
  21. package/dist/s3/actions/listBuckets.js.map +1 -1
  22. package/dist/s3/actions/listObjects.d.ts.map +1 -1
  23. package/dist/s3/actions/listObjects.js +49 -21
  24. package/dist/s3/actions/listObjects.js.map +1 -1
  25. package/dist/s3/actions/putObject.d.ts.map +1 -1
  26. package/dist/s3/actions/putObject.js +13 -5
  27. package/dist/s3/actions/putObject.js.map +1 -1
  28. package/dist/s3/s3Store.d.ts.map +1 -1
  29. package/dist/s3/s3Store.js +3 -0
  30. package/dist/s3/s3Store.js.map +1 -1
  31. package/dist/sns/actions/confirmSubscription.d.ts.map +1 -1
  32. package/dist/sns/actions/confirmSubscription.js +10 -6
  33. package/dist/sns/actions/confirmSubscription.js.map +1 -1
  34. package/dist/sns/actions/createTopic.d.ts +3 -1
  35. package/dist/sns/actions/createTopic.d.ts.map +1 -1
  36. package/dist/sns/actions/createTopic.js +6 -3
  37. package/dist/sns/actions/createTopic.js.map +1 -1
  38. package/dist/sns/actions/getSubscriptionAttributes.d.ts.map +1 -1
  39. package/dist/sns/actions/getSubscriptionAttributes.js +2 -1
  40. package/dist/sns/actions/getSubscriptionAttributes.js.map +1 -1
  41. package/dist/sns/actions/getTopicAttributes.d.ts.map +1 -1
  42. package/dist/sns/actions/getTopicAttributes.js +33 -4
  43. package/dist/sns/actions/getTopicAttributes.js.map +1 -1
  44. package/dist/sns/actions/listSubscriptions.d.ts.map +1 -1
  45. package/dist/sns/actions/listSubscriptions.js +16 -7
  46. package/dist/sns/actions/listSubscriptions.js.map +1 -1
  47. package/dist/sns/actions/listTopics.d.ts.map +1 -1
  48. package/dist/sns/actions/listTopics.js +5 -2
  49. package/dist/sns/actions/listTopics.js.map +1 -1
  50. package/dist/sns/actions/publish.d.ts.map +1 -1
  51. package/dist/sns/actions/publish.js +2 -1
  52. package/dist/sns/actions/publish.js.map +1 -1
  53. package/dist/sns/actions/setTopicAttributes.d.ts.map +1 -1
  54. package/dist/sns/actions/setTopicAttributes.js +13 -0
  55. package/dist/sns/actions/setTopicAttributes.js.map +1 -1
  56. package/dist/sns/actions/subscribe.d.ts.map +1 -1
  57. package/dist/sns/actions/subscribe.js +16 -1
  58. package/dist/sns/actions/subscribe.js.map +1 -1
  59. package/dist/sns/actions/tagResource.d.ts.map +1 -1
  60. package/dist/sns/actions/tagResource.js +5 -2
  61. package/dist/sns/actions/tagResource.js.map +1 -1
  62. package/dist/sns/snsRouter.d.ts.map +1 -1
  63. package/dist/sns/snsRouter.js +0 -4
  64. package/dist/sns/snsRouter.js.map +1 -1
  65. package/dist/sns/snsStore.d.ts +1 -1
  66. package/dist/sns/snsStore.d.ts.map +1 -1
  67. package/dist/sns/snsStore.js +10 -7
  68. package/dist/sns/snsStore.js.map +1 -1
  69. package/dist/spy.d.ts.map +1 -1
  70. package/dist/spy.js +33 -49
  71. package/dist/spy.js.map +1 -1
  72. package/dist/sqs/actions/changeMessageVisibility.d.ts.map +1 -1
  73. package/dist/sqs/actions/changeMessageVisibility.js +3 -0
  74. package/dist/sqs/actions/changeMessageVisibility.js.map +1 -1
  75. package/dist/sqs/actions/changeMessageVisibilityBatch.d.ts +2 -1
  76. package/dist/sqs/actions/changeMessageVisibilityBatch.d.ts.map +1 -1
  77. package/dist/sqs/actions/changeMessageVisibilityBatch.js +12 -0
  78. package/dist/sqs/actions/changeMessageVisibilityBatch.js.map +1 -1
  79. package/dist/sqs/actions/createQueue.d.ts +2 -1
  80. package/dist/sqs/actions/createQueue.d.ts.map +1 -1
  81. package/dist/sqs/actions/createQueue.js +4 -4
  82. package/dist/sqs/actions/createQueue.js.map +1 -1
  83. package/dist/sqs/actions/deleteMessageBatch.d.ts +2 -1
  84. package/dist/sqs/actions/deleteMessageBatch.d.ts.map +1 -1
  85. package/dist/sqs/actions/deleteMessageBatch.js +12 -0
  86. package/dist/sqs/actions/deleteMessageBatch.js.map +1 -1
  87. package/dist/sqs/actions/getQueueAttributes.d.ts +2 -1
  88. package/dist/sqs/actions/getQueueAttributes.d.ts.map +1 -1
  89. package/dist/sqs/actions/getQueueAttributes.js.map +1 -1
  90. package/dist/sqs/actions/getQueueUrl.d.ts +3 -1
  91. package/dist/sqs/actions/getQueueUrl.d.ts.map +1 -1
  92. package/dist/sqs/actions/getQueueUrl.js +6 -2
  93. package/dist/sqs/actions/getQueueUrl.js.map +1 -1
  94. package/dist/sqs/actions/listQueueTags.d.ts +2 -1
  95. package/dist/sqs/actions/listQueueTags.d.ts.map +1 -1
  96. package/dist/sqs/actions/listQueueTags.js.map +1 -1
  97. package/dist/sqs/actions/listQueues.d.ts +2 -1
  98. package/dist/sqs/actions/listQueues.d.ts.map +1 -1
  99. package/dist/sqs/actions/listQueues.js.map +1 -1
  100. package/dist/sqs/actions/receiveMessage.d.ts +2 -1
  101. package/dist/sqs/actions/receiveMessage.d.ts.map +1 -1
  102. package/dist/sqs/actions/receiveMessage.js +38 -20
  103. package/dist/sqs/actions/receiveMessage.js.map +1 -1
  104. package/dist/sqs/actions/sendMessage.d.ts +2 -1
  105. package/dist/sqs/actions/sendMessage.d.ts.map +1 -1
  106. package/dist/sqs/actions/sendMessage.js +9 -18
  107. package/dist/sqs/actions/sendMessage.js.map +1 -1
  108. package/dist/sqs/actions/sendMessageBatch.d.ts +2 -1
  109. package/dist/sqs/actions/sendMessageBatch.d.ts.map +1 -1
  110. package/dist/sqs/actions/sendMessageBatch.js +3 -4
  111. package/dist/sqs/actions/sendMessageBatch.js.map +1 -1
  112. package/dist/sqs/sqsRouter.d.ts.map +1 -1
  113. package/dist/sqs/sqsRouter.js +0 -4
  114. package/dist/sqs/sqsRouter.js.map +1 -1
  115. package/dist/sqs/sqsStore.d.ts +8 -6
  116. package/dist/sqs/sqsStore.d.ts.map +1 -1
  117. package/dist/sqs/sqsStore.js +68 -63
  118. package/dist/sqs/sqsStore.js.map +1 -1
  119. package/dist/sqs/sqsTypes.d.ts +1 -0
  120. package/dist/sqs/sqsTypes.d.ts.map +1 -1
  121. package/dist/sqs/sqsTypes.js +1 -0
  122. package/dist/sqs/sqsTypes.js.map +1 -1
  123. package/package.json +7 -1
package/README.md CHANGED
@@ -10,7 +10,9 @@ All state is in-memory. No persistence, no external storage dependencies.
10
10
  - [Usage](#usage)
11
11
  - [Running the server](#running-the-server)
12
12
  - [Running in the background](#running-in-the-background)
13
+ - [Running with Docker](#running-with-docker)
13
14
  - [Running in Docker Compose](#running-in-docker-compose)
15
+ - [Container-to-container S3 virtual-hosted-style](#container-to-container-s3-virtual-hosted-style)
14
16
  - [Configuring AWS SDK clients](#configuring-aws-sdk-clients)
15
17
  - [Programmatic usage](#programmatic-usage)
16
18
  - [Programmatic state setup](#programmatic-state-setup)
@@ -36,6 +38,14 @@ All state is in-memory. No persistence, no external storage dependencies.
36
38
 
37
39
  ## Installation
38
40
 
41
+ **Docker** (recommended for standalone usage) — [Docker Hub](https://hub.docker.com/r/kibertoad/fauxqs):
42
+
43
+ ```bash
44
+ docker run -p 4566:4566 kibertoad/fauxqs
45
+ ```
46
+
47
+ **npm** (for embedded library usage or CLI):
48
+
39
49
  ```bash
40
50
  npm install fauxqs
41
51
  ```
@@ -59,6 +69,8 @@ The server starts on port `4566` and handles SQS, SNS, and S3 on a single endpoi
59
69
  | `FAUXQS_DEFAULT_REGION` | Fallback region for ARNs and URLs | `us-east-1` |
60
70
  | `FAUXQS_LOGGER` | Enable request logging (`true`/`false`) | `true` |
61
71
  | `FAUXQS_INIT` | Path to a JSON init config file (see [Init config file](#init-config-file)) | (none) |
72
+ | `FAUXQS_DNS_NAME` | Domain that dnsmasq resolves (including all subdomains) to the container IP. Only needed when the container hostname doesn't match the docker-compose service name — e.g., when using `container_name` or running with plain `docker run`. In docker-compose the hostname is set to the service name automatically, so this is rarely needed. (Docker only) | container hostname |
73
+ | `FAUXQS_DNS_UPSTREAM` | Where dnsmasq forwards non-fauxqs DNS queries (e.g., `registry.npmjs.org`). Change this if you're in a corporate network with an internal DNS server, or if you prefer a different public resolver like `1.1.1.1`. (Docker only) | `8.8.8.8` |
62
74
 
63
75
  ```bash
64
76
  FAUXQS_PORT=3000 FAUXQS_INIT=init.json npx fauxqs
@@ -92,9 +104,26 @@ kill %1
92
104
  npx cross-port-killer 4566
93
105
  ```
94
106
 
107
+ ### Running with Docker
108
+
109
+ The official Docker image is available on Docker Hub:
110
+
111
+ ```bash
112
+ docker run -p 4566:4566 kibertoad/fauxqs
113
+ ```
114
+
115
+ With an init config file:
116
+
117
+ ```bash
118
+ docker run -p 4566:4566 \
119
+ -v ./init.json:/app/init.json \
120
+ -e FAUXQS_INIT=/app/init.json \
121
+ kibertoad/fauxqs
122
+ ```
123
+
95
124
  ### Running in Docker Compose
96
125
 
97
- Use the `node:24-alpine` image and mount a JSON init config to pre-create resources on startup:
126
+ Use the `kibertoad/fauxqs` image and mount a JSON init config to pre-create resources on startup:
98
127
 
99
128
  ```json
100
129
  // scripts/fauxqs/init.json
@@ -116,19 +145,11 @@ Use the `node:24-alpine` image and mount a JSON init config to pre-create resour
116
145
  # docker-compose.yml
117
146
  services:
118
147
  fauxqs:
119
- image: node:24-alpine
120
- working_dir: /app
121
- command: npx --yes fauxqs@1.3.5
148
+ image: kibertoad/fauxqs:latest
122
149
  ports:
123
150
  - "4566:4566"
124
151
  environment:
125
- - FAUXQS_HOST=localhost
126
152
  - FAUXQS_INIT=/app/init.json
127
- healthcheck:
128
- test: ["CMD-SHELL", "wget -q -O /dev/null http://127.0.0.1:4566/health || exit 1"]
129
- interval: 2s
130
- timeout: 5s
131
- retries: 10
132
153
  volumes:
133
154
  - ./scripts/fauxqs/init.json:/app/init.json
134
155
 
@@ -139,7 +160,57 @@ services:
139
160
  condition: service_healthy
140
161
  ```
141
162
 
142
- Other containers reference fauxqs using the Docker service name (`http://fauxqs:4566`). The init config file creates all queues, topics, subscriptions, and buckets before the healthcheck passes, so dependent services start only after resources are ready.
163
+ The image has a built-in `HEALTHCHECK`, so `service_healthy` works without extra configuration in your compose file. Other containers reference fauxqs using the Docker service name (`http://fauxqs:4566`). The init config file creates all queues, topics, subscriptions, and buckets before the healthcheck passes, so dependent services start only after resources are ready.
164
+
165
+ #### Container-to-container S3 virtual-hosted-style
166
+
167
+ The Docker image includes a built-in DNS server ([dnsmasq](https://thekelleys.org.uk/dnsmasq/doc.html)) that resolves the container hostname and all its subdomains (e.g., `fauxqs`, `s3.fauxqs`, `my-bucket.s3.fauxqs`) to the container's own IP. This enables virtual-hosted-style S3 from other containers without `forcePathStyle`.
168
+
169
+ To use it, assign fauxqs a static IP and point other containers' DNS to it:
170
+
171
+ ```yaml
172
+ # docker-compose.yml
173
+ services:
174
+ fauxqs:
175
+ image: kibertoad/fauxqs:latest
176
+ networks:
177
+ default:
178
+ ipv4_address: 10.0.0.2
179
+ ports:
180
+ - "4566:4566"
181
+ environment:
182
+ - FAUXQS_INIT=/app/init.json
183
+ - FAUXQS_HOST=fauxqs
184
+ volumes:
185
+ - ./scripts/fauxqs/init.json:/app/init.json
186
+
187
+ app:
188
+ dns: 10.0.0.2
189
+ depends_on:
190
+ fauxqs:
191
+ condition: service_healthy
192
+ environment:
193
+ - AWS_ENDPOINT=http://s3.fauxqs:4566
194
+
195
+ networks:
196
+ default:
197
+ ipam:
198
+ config:
199
+ - subnet: 10.0.0.0/24
200
+ ```
201
+
202
+ From the `app` container, `my-bucket.s3.fauxqs` resolves to `10.0.0.2` (the fauxqs container), so virtual-hosted-style S3 works:
203
+
204
+ ```typescript
205
+ const s3 = new S3Client({
206
+ endpoint: "http://s3.fauxqs:4566",
207
+ region: "us-east-1",
208
+ credentials: { accessKeyId: "test", secretAccessKey: "test" },
209
+ // No forcePathStyle needed!
210
+ });
211
+ ```
212
+
213
+ The DNS server is configured automatically using the container hostname (which docker-compose sets to the service name), so in most setups no extra configuration is needed. See the [environment variables table](#environment-variables) for `FAUXQS_DNS_NAME` and `FAUXQS_DNS_UPSTREAM` if you need to override the defaults.
143
214
 
144
215
  ### Configuring AWS SDK clients
145
216
 
@@ -149,7 +220,6 @@ Point your SDK clients at the local server:
149
220
  import { SQSClient } from "@aws-sdk/client-sqs";
150
221
  import { SNSClient } from "@aws-sdk/client-sns";
151
222
  import { S3Client } from "@aws-sdk/client-s3";
152
- import { createLocalhostHandler } from "fauxqs";
153
223
 
154
224
  const sqsClient = new SQSClient({
155
225
  endpoint: "http://localhost:4566",
@@ -163,16 +233,18 @@ const snsClient = new SNSClient({
163
233
  credentials: { accessKeyId: "test", secretAccessKey: "test" },
164
234
  });
165
235
 
236
+ // Using fauxqs.dev wildcard DNS — no helpers or forcePathStyle needed
166
237
  const s3Client = new S3Client({
167
- endpoint: "http://s3.localhost:4566",
238
+ endpoint: "http://s3.localhost.fauxqs.dev:4566",
168
239
  region: "us-east-1",
169
240
  credentials: { accessKeyId: "test", secretAccessKey: "test" },
170
- requestHandler: createLocalhostHandler(),
171
241
  });
172
242
  ```
173
243
 
174
244
  Any credentials are accepted and never validated.
175
245
 
246
+ > **Note:** The `fauxqs.dev` wildcard DNS (`*.localhost.fauxqs.dev` → `127.0.0.1`) replicates the approach [pioneered by LocalStack](https://hashnode.localstack.cloud/efficient-localstack-s3-endpoint-configuration) with `localhost.localstack.cloud`. A public DNS entry resolves all subdomains to localhost, so virtual-hosted-style S3 requests work without `/etc/hosts` changes, custom request handlers, or `forcePathStyle`. See [S3 URL styles](#s3-url-styles) for alternative approaches.
247
+
176
248
  ### Programmatic usage
177
249
 
178
250
  You can also embed fauxqs directly in your test suite:
@@ -210,11 +282,17 @@ server.createTopic("my-topic");
210
282
  server.subscribe({ topic: "my-topic", queue: "my-queue" });
211
283
  server.createBucket("my-bucket");
212
284
 
285
+ // Create resources in a specific region
286
+ server.createQueue("eu-queue", { region: "eu-west-1" });
287
+ server.createTopic("eu-topic", { region: "eu-west-1" });
288
+ server.subscribe({ topic: "eu-topic", queue: "eu-queue", region: "eu-west-1" });
289
+
213
290
  // Or create everything at once
214
291
  server.setup({
215
292
  queues: [
216
293
  { name: "orders" },
217
294
  { name: "notifications", attributes: { DelaySeconds: "5" } },
295
+ { name: "eu-orders", region: "eu-west-1" },
218
296
  ],
219
297
  topics: [{ name: "events" }],
220
298
  subscriptions: [
@@ -274,6 +352,7 @@ Array of queue objects.
274
352
  | Field | Type | Required | Description |
275
353
  |-------|------|----------|-------------|
276
354
  | `name` | `string` | Yes | Queue name. Use `.fifo` suffix for FIFO queues. |
355
+ | `region` | `string` | No | Override the default region for this queue. The queue's ARN and URL will use this region. |
277
356
  | `attributes` | `Record<string, string>` | No | Queue attributes (see table below). |
278
357
  | `tags` | `Record<string, string>` | No | Key-value tags for the queue. |
279
358
 
@@ -318,6 +397,10 @@ Example:
318
397
  "attributes": {
319
398
  "RedrivePolicy": "{\"deadLetterTargetArn\":\"arn:aws:sqs:us-east-1:000000000000:orders-dlq\",\"maxReceiveCount\":\"3\"}"
320
399
  }
400
+ },
401
+ {
402
+ "name": "eu-orders",
403
+ "region": "eu-west-1"
321
404
  }
322
405
  ]
323
406
  }
@@ -330,6 +413,7 @@ Array of topic objects.
330
413
  | Field | Type | Required | Description |
331
414
  |-------|------|----------|-------------|
332
415
  | `name` | `string` | Yes | Topic name. Use `.fifo` suffix for FIFO topics. |
416
+ | `region` | `string` | No | Override the default region for this topic. The topic's ARN will use this region. |
333
417
  | `attributes` | `Record<string, string>` | No | Topic attributes (e.g., `DisplayName`). |
334
418
  | `tags` | `Record<string, string>` | No | Key-value tags for the topic. |
335
419
 
@@ -359,6 +443,7 @@ Array of subscription objects. Referenced topics and queues must be defined in t
359
443
  |-------|------|----------|-------------|
360
444
  | `topic` | `string` | Yes | Topic name (not ARN) to subscribe to. |
361
445
  | `queue` | `string` | Yes | Queue name (not ARN) to deliver messages to. |
446
+ | `region` | `string` | No | Override the default region. The topic and queue ARNs will be resolved in this region. |
362
447
  | `attributes` | `Record<string, string>` | No | Subscription attributes (see table below). |
363
448
 
364
449
  Supported subscription attributes:
@@ -655,7 +740,18 @@ The configured host ensures queue URLs are consistent across all creation paths
655
740
 
656
741
  ### Region
657
742
 
658
- The region used in ARNs and queue URLs is automatically detected from the SDK client's `Authorization` header. If your SDK client is configured with `region: "eu-west-1"`, fauxqs will use that region in all generated ARNs and URLs.
743
+ Region is part of an entity's identity a queue named `my-queue` in `us-east-1` is a completely different entity from `my-queue` in `eu-west-1`, just like in real AWS.
744
+
745
+ The region used in ARNs and queue URLs is automatically detected from the SDK client's `Authorization` header (AWS SigV4 credential scope). If your SDK client is configured with `region: "eu-west-1"`, all entities created or looked up through that client will use `eu-west-1` in their ARNs and URLs.
746
+
747
+ ```typescript
748
+ const sqsEU = new SQSClient({ region: "eu-west-1", endpoint: "http://localhost:4566", ... });
749
+ const sqsUS = new SQSClient({ region: "us-east-1", endpoint: "http://localhost:4566", ... });
750
+
751
+ // These are two independent queues with different ARNs
752
+ await sqsEU.send(new CreateQueueCommand({ QueueName: "orders" }));
753
+ await sqsUS.send(new CreateQueueCommand({ QueueName: "orders" }));
754
+ ```
659
755
 
660
756
  If the region cannot be resolved from request headers (e.g., requests without AWS SigV4 signing), the `defaultRegion` option is used as a fallback (defaults to `"us-east-1"`):
661
757
 
@@ -663,6 +759,17 @@ If the region cannot be resolved from request headers (e.g., requests without AW
663
759
  const server = await startFauxqs({ defaultRegion: "eu-west-1" });
664
760
  ```
665
761
 
762
+ Resources created via init config or programmatic API use the `defaultRegion` unless overridden with an explicit `region` field:
763
+
764
+ ```json
765
+ {
766
+ "queues": [
767
+ { "name": "us-queue" },
768
+ { "name": "eu-queue", "region": "eu-west-1" }
769
+ ]
770
+ }
771
+ ```
772
+
666
773
  ## Supported API Actions
667
774
 
668
775
  ### SQS
@@ -800,25 +907,37 @@ Returns a mock identity with account `000000000000` and ARN `arn:aws:iam::000000
800
907
 
801
908
  ### S3 URL styles
802
909
 
803
- The AWS SDK sends S3 requests using virtual-hosted-style URLs by default (e.g., `my-bucket.s3.localhost:4566`). This requires `*.localhost` to resolve to `127.0.0.1`. fauxqs provides helpers for this, plus a simple fallback.
910
+ The AWS SDK sends S3 requests using virtual-hosted-style URLs by default (e.g., `my-bucket.s3.localhost:4566`). This requires `*.localhost` to resolve to `127.0.0.1`. fauxqs supports several approaches.
804
911
 
805
- #### Option 1: `createLocalhostHandler()` (recommended)
912
+ #### Option 1: `fauxqs.dev` wildcard DNS (recommended for Docker image)
806
913
 
807
- Creates an HTTP request handler that resolves all hostnames to `127.0.0.1`. Scoped to a single client instance no side effects.
914
+ Works out of the box when running the [official Docker image](#running-with-docker) — nothing to configure. The `fauxqs.dev` domain provides wildcard DNS — `*.localhost.fauxqs.dev` resolves to `127.0.0.1` via a public DNS entry. Just use `s3.localhost.fauxqs.dev` as your endpoint. This replicates the approach [pioneered by LocalStack](https://docs.localstack.cloud/aws/services/s3/) with `localhost.localstack.cloud`: a public DNS record maps all subdomains to localhost, so virtual-hosted-style requests work without `/etc/hosts` changes, custom request handlers, or `forcePathStyle`. Works from any language, `fetch()`, or CLI tool.
808
915
 
809
916
  ```typescript
810
917
  import { S3Client } from "@aws-sdk/client-s3";
811
- import { createLocalhostHandler } from "fauxqs";
812
918
 
813
919
  const s3 = new S3Client({
814
- endpoint: "http://s3.localhost:4566",
920
+ endpoint: "http://s3.localhost.fauxqs.dev:4566",
815
921
  region: "us-east-1",
816
922
  credentials: { accessKeyId: "test", secretAccessKey: "test" },
817
- requestHandler: createLocalhostHandler(),
818
923
  });
819
924
  ```
820
925
 
821
- #### Option 2: `interceptLocalhostDns()` (global, for test suites)
926
+ You can also use raw HTTP requests:
927
+
928
+ ```bash
929
+ # Upload
930
+ curl -X PUT --data-binary @file.txt http://my-bucket.s3.localhost.fauxqs.dev:4566/file.txt
931
+
932
+ # Download
933
+ curl http://my-bucket.s3.localhost.fauxqs.dev:4566/file.txt
934
+ ```
935
+
936
+ This is the recommended approach for host-to-Docker setups. If you are using fauxqs as an [embedded library](#programmatic-usage) in Node.js tests, prefer Option 2 (`interceptLocalhostDns`) instead — it patches DNS globally so all clients work without modification, and requires no external DNS.
937
+
938
+ For **container-to-container** S3 virtual-hosted-style in docker-compose, use the [built-in DNS server](#container-to-container-s3-virtual-hosted-style) instead — it resolves `*.s3.fauxqs` to the fauxqs container IP so other containers can use virtual-hosted-style S3 without `forcePathStyle`.
939
+
940
+ #### Option 2: `interceptLocalhostDns()` (recommended for embedded library)
822
941
 
823
942
  Patches Node.js `dns.lookup` so that any hostname ending in `.localhost` resolves to `127.0.0.1`. No client changes needed.
824
943
 
@@ -841,7 +960,23 @@ The suffix is configurable: `interceptLocalhostDns("myhost.test")` matches `*.my
841
960
 
842
961
  **Tradeoffs:** Affects all DNS lookups in the process. Best suited for test suites (`beforeAll` / `afterAll`).
843
962
 
844
- #### Option 3: `forcePathStyle` (simplest fallback)
963
+ #### Option 3: `createLocalhostHandler()` (per-client)
964
+
965
+ Creates an HTTP request handler that resolves all hostnames to `127.0.0.1`. Scoped to a single client instance — no side effects, no external DNS dependency.
966
+
967
+ ```typescript
968
+ import { S3Client } from "@aws-sdk/client-s3";
969
+ import { createLocalhostHandler } from "fauxqs";
970
+
971
+ const s3 = new S3Client({
972
+ endpoint: "http://s3.localhost:4566",
973
+ region: "us-east-1",
974
+ credentials: { accessKeyId: "test", secretAccessKey: "test" },
975
+ requestHandler: createLocalhostHandler(),
976
+ });
977
+ ```
978
+
979
+ #### Option 4: `forcePathStyle` (simplest fallback)
845
980
 
846
981
  Forces the SDK to use path-style URLs (`http://localhost:4566/my-bucket/key`) instead of virtual-hosted-style. No DNS or handler changes needed, but affects how the SDK resolves S3 URLs at runtime.
847
982
 
@@ -896,7 +1031,7 @@ aws configure set default.s3.addressing_style path
896
1031
  ## Conventions
897
1032
 
898
1033
  - Account ID: `000000000000`
899
- - Region: auto-detected from SDK `Authorization` header (defaults to `us-east-1`)
1034
+ - Region: auto-detected from SDK `Authorization` header; falls back to `defaultRegion` (defaults to `us-east-1`). Region is part of entity identity — same-name entities in different regions are independent.
900
1035
  - Queue URL format: `http://sqs.{region}.{host}:{port}/000000000000/{queueName}` (host defaults to `localhost`)
901
1036
  - Queue ARN format: `arn:aws:sqs:{region}:000000000000:{queueName}`
902
1037
  - Topic ARN format: `arn:aws:sns:{region}:000000000000:{topicName}`
@@ -908,7 +1043,7 @@ fauxqs is designed for development and testing. It does not support:
908
1043
  - Non-SQS SNS delivery protocols (HTTP/S, Lambda, email, SMS)
909
1044
  - Persistence across restarts
910
1045
  - Authentication or authorization
911
- - Cross-region or cross-account operations
1046
+ - Cross-account operations
912
1047
 
913
1048
  ## License
914
1049
 
package/dist/app.d.ts CHANGED
@@ -25,6 +25,7 @@ export interface FauxqsServer {
25
25
  readonly spy: MessageSpyReader;
26
26
  stop(): Promise<void>;
27
27
  createQueue(name: string, options?: {
28
+ region?: string;
28
29
  attributes?: Record<string, string>;
29
30
  tags?: Record<string, string>;
30
31
  }): void;
@@ -45,12 +46,14 @@ export interface FauxqsServer {
45
46
  };
46
47
  } | undefined;
47
48
  createTopic(name: string, options?: {
49
+ region?: string;
48
50
  attributes?: Record<string, string>;
49
51
  tags?: Record<string, string>;
50
52
  }): void;
51
53
  subscribe(options: {
52
54
  topic: string;
53
55
  queue: string;
56
+ region?: string;
54
57
  attributes?: Record<string, string>;
55
58
  }): void;
56
59
  createBucket(name: string): void;
package/dist/app.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAgC7C,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAM1C,OAAO,EAAc,KAAK,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC7D,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC/E,YAAY,EACV,gBAAgB,EAChB,UAAU,EACV,aAAa,EACb,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,UAAU,CAAC;AAElB,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE;QAAE,QAAQ,EAAE,QAAQ,CAAC;QAAC,QAAQ,EAAE,QAAQ,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;CACvE;AAED,wBAAgB,QAAQ,CAAC,OAAO,CAAC,EAAE,eAAe;;EAiLjD;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,GAAG,EAAE,gBAAgB,CAAC;IAC/B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtB,WAAW,CACT,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QACR,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACpC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC/B,GACA,IAAI,CAAC;IACR,uGAAuG;IACvG,YAAY,CAAC,IAAI,EAAE,MAAM,GACrB;QACE,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;QACZ,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACnC,QAAQ,EAAE;YACR,KAAK,EAAE,OAAO,mBAAmB,EAAE,UAAU,EAAE,CAAC;YAChD,OAAO,EAAE,OAAO,mBAAmB,EAAE,UAAU,EAAE,CAAC;YAClD,QAAQ,EAAE,KAAK,CAAC;gBACd,OAAO,EAAE,OAAO,mBAAmB,EAAE,UAAU,CAAC;gBAChD,aAAa,EAAE,MAAM,CAAC;gBACtB,kBAAkB,EAAE,MAAM,CAAC;aAC5B,CAAC,CAAC;SACJ,CAAC;KACH,GACD,SAAS,CAAC;IACd,WAAW,CACT,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QACR,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACpC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC/B,GACA,IAAI,CAAC;IACR,SAAS,CAAC,OAAO,EAAE;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACrC,GAAG,IAAI,CAAC;IACT,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,KAAK,CAAC,MAAM,EAAE,OAAO,iBAAiB,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAChE,QAAQ,IAAI,IAAI,CAAC;CAClB;AAED,wBAAsB,WAAW,CAAC,OAAO,CAAC,EAAE;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gIAAgI;IAChI,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kHAAkH;IAClH,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,iBAAiB,EAAE,gBAAgB,CAAC;IAC3D,sGAAsG;IACtG,YAAY,CAAC,EAAE,OAAO,GAAG,OAAO,UAAU,EAAE,gBAAgB,CAAC;CAC9D,GAAG,OAAO,CAAC,YAAY,CAAC,CAkGxB"}
package/dist/app.js CHANGED
@@ -55,6 +55,14 @@ export function buildApp(options) {
55
55
  if (!hostname.includes(".") || /^\d+\.\d+\.\d+\.\d+$/.test(hostname)) {
56
56
  return req.url ?? "/";
57
57
  }
58
+ // SNS uses x-www-form-urlencoded, SQS uses x-amz-json-1.0 — these are
59
+ // never S3 requests, so skip the virtual-hosted-style bucket rewrite.
60
+ // This avoids misrouting when the endpoint hostname itself contains dots
61
+ // (e.g. localhost.fauxqs.dev).
62
+ const ct = req.headers["content-type"] ?? "";
63
+ if (ct.includes("x-www-form-urlencoded") || ct.includes("x-amz-json-1.0")) {
64
+ return req.url ?? "/";
65
+ }
58
66
  const dotIndex = hostname.indexOf(".");
59
67
  const bucket = hostname.substring(0, dotIndex);
60
68
  return `/${bucket}${req.url ?? "/"}`;
@@ -235,7 +243,8 @@ export async function startFauxqs(options) {
235
243
  return app.close();
236
244
  },
237
245
  createQueue(name, opts) {
238
- const arn = sqsQueueArn(name, region);
246
+ const r = opts?.region ?? region;
247
+ const arn = sqsQueueArn(name, r);
239
248
  const queueUrl = makeQueueUrl(name);
240
249
  sqsStore.createQueue(name, queueUrl, arn, opts?.attributes, opts?.tags);
241
250
  },
@@ -243,11 +252,12 @@ export async function startFauxqs(options) {
243
252
  return sqsStore.inspectQueue(name);
244
253
  },
245
254
  createTopic(name, opts) {
246
- snsStore.createTopic(name, opts?.attributes, opts?.tags);
255
+ snsStore.createTopic(name, opts?.attributes, opts?.tags, opts?.region);
247
256
  },
248
257
  subscribe(opts) {
249
- const topicArn = snsTopicArn(opts.topic, region);
250
- const queueArn = sqsQueueArn(opts.queue, region);
258
+ const r = opts.region ?? region;
259
+ const topicArn = snsTopicArn(opts.topic, r);
260
+ const queueArn = sqsQueueArn(opts.queue, r);
251
261
  snsStore.subscribe(topicArn, "sqs", queueArn, opts.attributes);
252
262
  },
253
263
  createBucket(name) {
package/dist/app.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,0CAA0C,CAAC;AACnF,OAAO,EAAE,4BAA4B,EAAE,MAAM,+CAA+C,CAAC;AAC7F,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AACjG,OAAO,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAC;AACvF,OAAO,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAC;AACvF,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAC/F,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClE,OAAO,EAAE,UAAU,EAAyB,MAAM,UAAU,CAAC;AAE7D,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAwB/E,MAAM,UAAU,QAAQ,CAAC,OAAyB;IAChD,MAAM,GAAG,GAAG,OAAO,CAAC;QAClB,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,IAAI;QAC/B,SAAS,EAAE,CAAC,GAAG,SAAS,EAAE,sDAAsD;QAChF,qBAAqB,EAAE,IAAI;QAC3B,oGAAoG;QACpG,4DAA4D;QAC5D,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE;YAClB,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;YACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACpC,6DAA6D;YAC7D,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,sBAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACrE,OAAO,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC;YACxB,CAAC;YACD,sEAAsE;YACtE,sEAAsE;YACtE,yEAAyE;YACzE,+BAA+B;YAC/B,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;YAC7C,IAAI,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBAC1E,OAAO,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC;YACxB,CAAC;YACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACvC,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;YAC/C,OAAO,IAAI,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;QACvC,CAAC;KACF,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,OAAO,EAAE,MAAM,EAAE,QAAQ,IAAI,IAAI,QAAQ,EAAE,CAAC;IAC7D,IAAI,OAAO,EAAE,IAAI,EAAE,CAAC;QAClB,QAAQ,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC/B,CAAC;IACD,IAAI,OAAO,EAAE,aAAa,EAAE,CAAC;QAC3B,QAAQ,CAAC,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAC1C,CAAC;IACD,MAAM,QAAQ,GAAG,OAAO,EAAE,MAAM,EAAE,QAAQ,IAAI,IAAI,QAAQ,EAAE,CAAC;IAC7D,IAAI,OAAO,EAAE,aAAa,EAAE,CAAC;QAC3B,QAAQ,CAAC,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAC1C,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC1C,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IAC/C,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IAC/C,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IAC/C,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;IAC7C,SAAS,CAAC,QAAQ,CAAC,oBAAoB,EAAE,kBAAkB,CAAC,CAAC;IAC7D,SAAS,CAAC,QAAQ,CAAC,oBAAoB,EAAE,kBAAkB,CAAC,CAAC;IAC7D,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;IAC7C,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IAC/C,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;IACrD,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;IACnD,SAAS,CAAC,QAAQ,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,CAAC;IACzD,SAAS,CAAC,QAAQ,CAAC,oBAAoB,EAAE,kBAAkB,CAAC,CAAC;IAC7D,SAAS,CAAC,QAAQ,CAAC,yBAAyB,EAAE,uBAAuB,CAAC,CAAC;IACvE,SAAS,CAAC,QAAQ,CAAC,8BAA8B,EAAE,4BAA4B,CAAC,CAAC;IACjF,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IACzC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;IAC7C,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;IAEnD,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACpD,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IAC/C,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IAC/C,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;IAC7C,SAAS,CAAC,QAAQ,CAAC,oBAAoB,EAAE,kBAAkB,CAAC,CAAC;IAC7D,SAAS,CAAC,QAAQ,CAAC,oBAAoB,EAAE,kBAAkB,CAAC,CAAC;IAC7D,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAC3C,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IAC/C,SAAS,CAAC,QAAQ,CAAC,qBAAqB,EAAE,mBAAmB,CAAC,CAAC;IAC/D,SAAS,CAAC,QAAQ,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,CAAC;IAC3D,SAAS,CAAC,QAAQ,CAAC,0BAA0B,EAAE,wBAAwB,CAAC,CAAC;IACzE,SAAS,CAAC,QAAQ,CAAC,2BAA2B,EAAE,yBAAyB,CAAC,CAAC;IAC3E,SAAS,CAAC,QAAQ,CAAC,2BAA2B,EAAE,yBAAyB,CAAC,CAAC;IAC3E,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACvC,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;IACjD,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IAC/C,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;IACnD,SAAS,CAAC,QAAQ,CAAC,qBAAqB,EAAE,mBAAmB,CAAC,CAAC;IAE/D,gCAAgC;IAChC,GAAG,CAAC,oBAAoB,CACtB,4BAA4B,EAC5B,EAAE,OAAO,EAAE,QAAQ,EAAE,EACrB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;QACnB,IAAI,CAAC;YACH,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAc,CAAC,CAAC,CAAC;QACzC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAY,CAAC,CAAC;QACrB,CAAC;IACH,CAAC,CACF,CAAC;IAEF,6BAA6B;IAC7B,GAAG,CAAC,oBAAoB,CACtB,mCAAmC,EACnC,EAAE,OAAO,EAAE,QAAQ,EAAE,EACrB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;QACnB,IAAI,CAAC;YACH,MAAM,MAAM,GAA2B,EAAE,CAAC;YAC1C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,eAAe,CAAC,IAAc,CAAC,EAAE,CAAC;gBAC/D,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACtB,CAAC;YACD,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACrB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAY,CAAC,CAAC;QACrB,CAAC;IACH,CAAC,CACF,CAAC;IAEF,wEAAwE;IACxE,oEAAoE;IACpE,0EAA0E;IAC1E,wEAAwE;IACxE,iDAAiD;IACjD,GAAG,CAAC,uBAAuB,CAAC,kBAAkB,CAAC,CAAC;IAChD,GAAG,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAC;IAE1C,yCAAyC;IACzC,GAAG,CAAC,oBAAoB,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;QACxE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACnB,CAAC,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,OAAO,EAAE,MAAM,EAAE,OAAO,IAAI,IAAI,OAAO,EAAE,CAAC;IAC1D,gBAAgB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAE/B,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,EAAE;QAC3B,QAAQ,CAAC,QAAQ,EAAE,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;QAC5B,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,6CAA6C;IAC7C,GAAG,CAAC,GAAG,CAAC,iBAAiB,EAAE,KAAK,IAAI,EAAE;QACpC,OAAO,QAAQ,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACvC,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,GAAG,EAAE,CAAC,CAAC,GAAG;YACV,GAAG,EAAE,CAAC,CAAC,GAAG;YACV,uBAAuB,EAAE,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,6BAA6B,CAAC,CAAC;YAC9E,wBAAwB,EAAE,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,uCAAuC,CAAC,CAAC;YACzF,uBAAuB,EAAE,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,oCAAoC,CAAC,CAAC;SACtF,CAAC,CAAC,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CACL,4BAA4B,EAC5B,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACvB,MAAM,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC/D,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAClB,OAAO,EAAE,KAAK,EAAE,UAAU,OAAO,CAAC,MAAM,CAAC,SAAS,aAAa,EAAE,CAAC;QACpE,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CACF,CAAC;IAEF,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACrC,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;QAE1D,IAAI,WAAW,CAAC,QAAQ,CAAC,4BAA4B,CAAC,EAAE,CAAC;YACvD,OAAO,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,WAAW,CAAC,QAAQ,CAAC,mCAAmC,CAAC,EAAE,CAAC;YAC9D,MAAM,IAAI,GAAG,OAAO,CAAC,IAA8B,CAAC;YACpD,IAAI,IAAI,CAAC,MAAM,KAAK,mBAAmB,EAAE,CAAC;gBACxC,KAAK,CAAC,MAAM,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;gBACzC,OAAO,iBAAiB,EAAE,CAAC;YAC7B,CAAC;YACD,OAAO,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC1C,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAClB,OAAO,EAAE,KAAK,EAAE,0BAA0B,EAAE,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACb,CAAC;AAqDD,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAUjC;IACC,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,MAAM,CAAC,CAAC;IAC1E,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;IACtD,MAAM,aAAa,GAAG,OAAO,EAAE,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;IAClF,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;IAC5C,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3F,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;IAEtD,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;IAChC,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;IAChC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAE9B,MAAM,SAAS,GAAG,OAAO,EAAE,YAAY,CAAC;IACxC,MAAM,UAAU,GAAG,SAAS;QAC1B,CAAC,CAAC,IAAI,UAAU,CAAC,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;QACvE,CAAC,CAAC,SAAS,CAAC;IACd,IAAI,UAAU,EAAE,CAAC;QACf,QAAQ,CAAC,GAAG,GAAG,UAAU,CAAC;QAC1B,QAAQ,CAAC,GAAG,GAAG,UAAU,CAAC;QAC1B,OAAO,CAAC,GAAG,GAAG,UAAU,CAAC;IAC3B,CAAC;IAED,MAAM,GAAG,GAAG,QAAQ,CAAC;QACnB,MAAM;QACN,IAAI;QACJ,aAAa;QACb,MAAM,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE;KACxC,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;IAClE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC;IACnC,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,aAAa,IAAI,cAAc,CAAC;IAE/C,MAAM,WAAW,GAAG,aAAa,UAAU,EAAE,CAAC;IAC9C,SAAS,YAAY,CAAC,IAAY;QAChC,OAAO,QAAQ,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;IAC/E,CAAC;IAED,MAAM,MAAM,GAAiB;QAC3B,IAAI,IAAI;YACN,OAAO,UAAU,CAAC;QACpB,CAAC;QACD,IAAI,OAAO;YACT,OAAO,aAAa,CAAC;QACvB,CAAC;QACD,IAAI,GAAG;YACL,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,MAAM,IAAI,KAAK,CACb,oFAAoF,CACrF,CAAC;YACJ,CAAC;YACD,OAAO,UAAU,CAAC;QACpB,CAAC;QACD,IAAI;YACF,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC;QACD,WAAW,CAAC,IAAI,EAAE,IAAI;YACpB,MAAM,CAAC,GAAG,IAAI,EAAE,MAAM,IAAI,MAAM,CAAC;YACjC,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YACjC,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;YACpC,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1E,CAAC;QACD,YAAY,CAAC,IAAI;YACf,OAAO,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC;QACD,WAAW,CAAC,IAAI,EAAE,IAAI;YACpB,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QACzE,CAAC;QACD,SAAS,CAAC,IAAI;YACZ,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC;YAChC,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC5C,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC5C,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACjE,CAAC;QACD,YAAY,CAAC,IAAI;YACf,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;QACD,KAAK,CAAC,MAAM;YACV,eAAe,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE;gBACnD,IAAI,EAAE,UAAU;gBAChB,MAAM;aACP,CAAC,CAAC;QACL,CAAC;QACD,QAAQ;YACN,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACpB,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACpB,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,CAAC;KACF,CAAC;IAEF,gCAAgC;IAChC,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,MAAM,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACtE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -3,19 +3,23 @@ import type { SqsStore } from "./sqs/sqsStore.ts";
3
3
  import type { SnsStore } from "./sns/snsStore.ts";
4
4
  import type { S3Store } from "./s3/s3Store.ts";
5
5
  declare const InitConfigSchema: v.ObjectSchema<{
6
+ readonly region: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
6
7
  readonly queues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
7
8
  readonly name: v.StringSchema<undefined>;
9
+ readonly region: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
8
10
  readonly attributes: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.StringSchema<undefined>, undefined>, undefined>;
9
11
  readonly tags: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.StringSchema<undefined>, undefined>, undefined>;
10
12
  }, undefined>, undefined>, undefined>;
11
13
  readonly topics: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
12
14
  readonly name: v.StringSchema<undefined>;
15
+ readonly region: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
13
16
  readonly attributes: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.StringSchema<undefined>, undefined>, undefined>;
14
17
  readonly tags: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.StringSchema<undefined>, undefined>, undefined>;
15
18
  }, undefined>, undefined>, undefined>;
16
19
  readonly subscriptions: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
17
20
  readonly topic: v.StringSchema<undefined>;
18
21
  readonly queue: v.StringSchema<undefined>;
22
+ readonly region: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
19
23
  readonly attributes: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.StringSchema<undefined>, undefined>, undefined>;
20
24
  }, undefined>, undefined>, undefined>;
21
25
  readonly buckets: v.OptionalSchema<v.ArraySchema<v.StringSchema<undefined>, undefined>, undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"initConfig.d.ts","sourceRoot":"","sources":["../src/initConfig.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAC;AAI7B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAsB/C,QAAA,MAAM,gBAAgB;;;;;;;;;;;;;;;;;aAKpB,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAEtE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG,gBAAgB,CAElE;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAG7D;AAED,wBAAgB,eAAe,CAC7B,MAAM,EAAE,gBAAgB,EACxB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACxC,IAAI,CAmCN"}
1
+ {"version":3,"file":"initConfig.d.ts","sourceRoot":"","sources":["../src/initConfig.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAC;AAI7B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAyB/C,QAAA,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;aAMpB,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAEtE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG,gBAAgB,CAElE;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAG7D;AAED,wBAAgB,eAAe,CAC7B,MAAM,EAAE,gBAAgB,EACxB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACxC,IAAI,CA+CN"}
@@ -5,20 +5,24 @@ import { snsTopicArn } from "./common/arnHelper.js";
5
5
  const StringRecordSchema = v.record(v.string(), v.string());
6
6
  const QueueSchema = v.object({
7
7
  name: v.string(),
8
+ region: v.optional(v.string()),
8
9
  attributes: v.optional(StringRecordSchema),
9
10
  tags: v.optional(StringRecordSchema),
10
11
  });
11
12
  const TopicSchema = v.object({
12
13
  name: v.string(),
14
+ region: v.optional(v.string()),
13
15
  attributes: v.optional(StringRecordSchema),
14
16
  tags: v.optional(StringRecordSchema),
15
17
  });
16
18
  const SubscriptionSchema = v.object({
17
19
  topic: v.string(),
18
20
  queue: v.string(),
21
+ region: v.optional(v.string()),
19
22
  attributes: v.optional(StringRecordSchema),
20
23
  });
21
24
  const InitConfigSchema = v.object({
25
+ region: v.optional(v.string()),
22
26
  queues: v.optional(v.array(QueueSchema)),
23
27
  topics: v.optional(v.array(TopicSchema)),
24
28
  subscriptions: v.optional(v.array(SubscriptionSchema)),
@@ -32,11 +36,21 @@ export function loadInitConfig(path) {
32
36
  return validateInitConfig(JSON.parse(content));
33
37
  }
34
38
  export function applyInitConfig(config, sqsStore, snsStore, s3Store, context) {
35
- const { port, region } = context;
39
+ const { port } = context;
40
+ // Top-level init.json region overrides the context default, but individual
41
+ // resources can further override with their own region field.
42
+ const defaultRegion = config.region ?? context.region;
43
+ // Set store default regions. Used as fallback when the request's
44
+ // Authorization header does not contain a region (e.g. unsigned requests).
45
+ sqsStore.region = defaultRegion;
46
+ snsStore.region = defaultRegion;
36
47
  // Create queues first (subscriptions depend on queue ARNs)
37
48
  if (config.queues) {
38
49
  const defaultHost = `127.0.0.1:${port}`;
39
50
  for (const q of config.queues) {
51
+ if (sqsStore.getQueueByName(q.name))
52
+ continue; // already exists, skip
53
+ const region = q.region ?? defaultRegion;
40
54
  const arn = sqsQueueArn(q.name, region);
41
55
  const url = sqsStore.buildQueueUrl(q.name, String(port), defaultHost, region);
42
56
  sqsStore.createQueue(q.name, url, arn, q.attributes, q.tags);
@@ -45,12 +59,14 @@ export function applyInitConfig(config, sqsStore, snsStore, s3Store, context) {
45
59
  // Create topics next
46
60
  if (config.topics) {
47
61
  for (const t of config.topics) {
48
- snsStore.createTopic(t.name, t.attributes, t.tags);
62
+ const region = t.region ?? defaultRegion;
63
+ snsStore.createTopic(t.name, t.attributes, t.tags, region);
49
64
  }
50
65
  }
51
66
  // Create subscriptions last (depends on both topic ARN and queue ARN)
52
67
  if (config.subscriptions) {
53
68
  for (const s of config.subscriptions) {
69
+ const region = s.region ?? defaultRegion;
54
70
  const topicArn = snsTopicArn(s.topic, region);
55
71
  const queueArn = sqsQueueArn(s.queue, region);
56
72
  snsStore.subscribe(topicArn, "sqs", queueArn, s.attributes);
@@ -1 +1 @@
1
- {"version":3,"file":"initConfig.js","sourceRoot":"","sources":["../src/initConfig.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"initConfig.js","sourceRoot":"","sources":["../src/initConfig.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"completeMultipartUpload.d.ts","sourceRoot":"","sources":["../../../src/s3/actions/completeMultipartUpload.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAW7C,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,cAAc,CAAC;IAAE,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC,EACpE,KAAK,EAAE,YAAY,EACnB,KAAK,EAAE,OAAO,GACb,IAAI,CAmDN"}
1
+ {"version":3,"file":"completeMultipartUpload.d.ts","sourceRoot":"","sources":["../../../src/s3/actions/completeMultipartUpload.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAG5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAW7C,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,cAAc,CAAC;IAAE,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC,EACpE,KAAK,EAAE,YAAY,EACnB,KAAK,EAAE,OAAO,GACb,IAAI,CA0DN"}
@@ -38,13 +38,19 @@ export function completeMultipartUpload(request, reply, store) {
38
38
  const obj = store.completeMultipartUpload(uploadId, parts);
39
39
  const host = request.headers.host ?? "localhost";
40
40
  const location = `http://${host}/${bucket}/${key}`;
41
+ const result = {
42
+ Location: location,
43
+ Bucket: bucket,
44
+ Key: key,
45
+ ETag: obj.etag,
46
+ };
41
47
  const xml = [
42
48
  `<?xml version="1.0" encoding="UTF-8"?>`,
43
49
  `<CompleteMultipartUploadResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">`,
44
- ` <Location>${escapeXml(location)}</Location>`,
45
- ` <Bucket>${escapeXml(bucket)}</Bucket>`,
46
- ` <Key>${escapeXml(key)}</Key>`,
47
- ` <ETag>${escapeXml(obj.etag)}</ETag>`,
50
+ ` <Location>${escapeXml(result.Location)}</Location>`,
51
+ ` <Bucket>${escapeXml(result.Bucket)}</Bucket>`,
52
+ ` <Key>${escapeXml(result.Key)}</Key>`,
53
+ ` <ETag>${escapeXml(result.ETag)}</ETag>`,
48
54
  `</CompleteMultipartUploadResult>`,
49
55
  ].join("\n");
50
56
  reply.header("content-type", "application/xml");
@@ -1 +1 @@
1
- {"version":3,"file":"completeMultipartUpload.js","sourceRoot":"","sources":["../../../src/s3/actions/completeMultipartUpload.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGhD,SAAS,WAAW,CAAC,GAAW;IAC9B,OAAO,GAAG;SACP,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;SACtB,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;SACrB,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;SACrB,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;SACvB,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,OAAoE,EACpE,KAAmB,EACnB,KAAc;IAEd,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;IACrC,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAA2B,CAAC;IAC9D,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC;IAEnC,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;QACxC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QAChC,CAAC,CAAE,OAAO,CAAC,IAAe,CAAC;IAE7B,sCAAsC;IACtC,MAAM,KAAK,GAA2C,EAAE,CAAC;IACzD,MAAM,SAAS,GACb,iFAAiF,CAAC;IACpF,IAAI,KAA6B,CAAC;IAClC,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC/C,KAAK,CAAC,IAAI,CAAC;YACT,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YAClC,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAC5B,CAAC,CAAC;IACL,CAAC;IAED,sDAAsD;IACtD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,QAAQ,GACZ,iFAAiF,CAAC;QACpF,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAC9C,KAAK,CAAC,IAAI,CAAC;gBACT,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;gBAClC,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;aAC5B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,MAAM,GAAG,GAAG,KAAK,CAAC,uBAAuB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAE3D,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,WAAW,CAAC;IACjD,MAAM,QAAQ,GAAG,UAAU,IAAI,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;IAEnD,MAAM,GAAG,GAAG;QACV,wCAAwC;QACxC,iFAAiF;QACjF,eAAe,SAAS,CAAC,QAAQ,CAAC,aAAa;QAC/C,aAAa,SAAS,CAAC,MAAM,CAAC,WAAW;QACzC,UAAU,SAAS,CAAC,GAAG,CAAC,QAAQ;QAChC,WAAW,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS;QACvC,kCAAkC;KACnC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,KAAK,CAAC,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC;IAChD,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC9B,CAAC"}
1
+ {"version":3,"file":"completeMultipartUpload.js","sourceRoot":"","sources":["../../../src/s3/actions/completeMultipartUpload.ts"],"names":[],"mappings":"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"}