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.
- package/README.md +160 -25
- package/dist/app.d.ts +3 -0
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +14 -4
- package/dist/app.js.map +1 -1
- package/dist/initConfig.d.ts +4 -0
- package/dist/initConfig.d.ts.map +1 -1
- package/dist/initConfig.js +18 -2
- package/dist/initConfig.js.map +1 -1
- package/dist/s3/actions/completeMultipartUpload.d.ts.map +1 -1
- package/dist/s3/actions/completeMultipartUpload.js +10 -4
- package/dist/s3/actions/completeMultipartUpload.js.map +1 -1
- package/dist/s3/actions/createMultipartUpload.d.ts.map +1 -1
- package/dist/s3/actions/createMultipartUpload.js +8 -3
- package/dist/s3/actions/createMultipartUpload.js.map +1 -1
- package/dist/s3/actions/deleteObjects.d.ts.map +1 -1
- package/dist/s3/actions/deleteObjects.js +3 -2
- package/dist/s3/actions/deleteObjects.js.map +1 -1
- package/dist/s3/actions/listBuckets.d.ts.map +1 -1
- package/dist/s3/actions/listBuckets.js +7 -5
- package/dist/s3/actions/listBuckets.js.map +1 -1
- package/dist/s3/actions/listObjects.d.ts.map +1 -1
- package/dist/s3/actions/listObjects.js +49 -21
- package/dist/s3/actions/listObjects.js.map +1 -1
- package/dist/s3/actions/putObject.d.ts.map +1 -1
- package/dist/s3/actions/putObject.js +13 -5
- package/dist/s3/actions/putObject.js.map +1 -1
- package/dist/s3/s3Store.d.ts.map +1 -1
- package/dist/s3/s3Store.js +3 -0
- package/dist/s3/s3Store.js.map +1 -1
- package/dist/sns/actions/confirmSubscription.d.ts.map +1 -1
- package/dist/sns/actions/confirmSubscription.js +10 -6
- package/dist/sns/actions/confirmSubscription.js.map +1 -1
- package/dist/sns/actions/createTopic.d.ts +3 -1
- package/dist/sns/actions/createTopic.d.ts.map +1 -1
- package/dist/sns/actions/createTopic.js +6 -3
- package/dist/sns/actions/createTopic.js.map +1 -1
- package/dist/sns/actions/getSubscriptionAttributes.d.ts.map +1 -1
- package/dist/sns/actions/getSubscriptionAttributes.js +2 -1
- package/dist/sns/actions/getSubscriptionAttributes.js.map +1 -1
- package/dist/sns/actions/getTopicAttributes.d.ts.map +1 -1
- package/dist/sns/actions/getTopicAttributes.js +33 -4
- package/dist/sns/actions/getTopicAttributes.js.map +1 -1
- package/dist/sns/actions/listSubscriptions.d.ts.map +1 -1
- package/dist/sns/actions/listSubscriptions.js +16 -7
- package/dist/sns/actions/listSubscriptions.js.map +1 -1
- package/dist/sns/actions/listTopics.d.ts.map +1 -1
- package/dist/sns/actions/listTopics.js +5 -2
- package/dist/sns/actions/listTopics.js.map +1 -1
- package/dist/sns/actions/publish.d.ts.map +1 -1
- package/dist/sns/actions/publish.js +2 -1
- package/dist/sns/actions/publish.js.map +1 -1
- package/dist/sns/actions/setTopicAttributes.d.ts.map +1 -1
- package/dist/sns/actions/setTopicAttributes.js +13 -0
- package/dist/sns/actions/setTopicAttributes.js.map +1 -1
- package/dist/sns/actions/subscribe.d.ts.map +1 -1
- package/dist/sns/actions/subscribe.js +16 -1
- package/dist/sns/actions/subscribe.js.map +1 -1
- package/dist/sns/actions/tagResource.d.ts.map +1 -1
- package/dist/sns/actions/tagResource.js +5 -2
- package/dist/sns/actions/tagResource.js.map +1 -1
- package/dist/sns/snsRouter.d.ts.map +1 -1
- package/dist/sns/snsRouter.js +0 -4
- package/dist/sns/snsRouter.js.map +1 -1
- package/dist/sns/snsStore.d.ts +1 -1
- package/dist/sns/snsStore.d.ts.map +1 -1
- package/dist/sns/snsStore.js +10 -7
- package/dist/sns/snsStore.js.map +1 -1
- package/dist/spy.d.ts.map +1 -1
- package/dist/spy.js +33 -49
- package/dist/spy.js.map +1 -1
- package/dist/sqs/actions/changeMessageVisibility.d.ts.map +1 -1
- package/dist/sqs/actions/changeMessageVisibility.js +3 -0
- package/dist/sqs/actions/changeMessageVisibility.js.map +1 -1
- package/dist/sqs/actions/changeMessageVisibilityBatch.d.ts +2 -1
- package/dist/sqs/actions/changeMessageVisibilityBatch.d.ts.map +1 -1
- package/dist/sqs/actions/changeMessageVisibilityBatch.js +12 -0
- package/dist/sqs/actions/changeMessageVisibilityBatch.js.map +1 -1
- package/dist/sqs/actions/createQueue.d.ts +2 -1
- package/dist/sqs/actions/createQueue.d.ts.map +1 -1
- package/dist/sqs/actions/createQueue.js +4 -4
- package/dist/sqs/actions/createQueue.js.map +1 -1
- package/dist/sqs/actions/deleteMessageBatch.d.ts +2 -1
- package/dist/sqs/actions/deleteMessageBatch.d.ts.map +1 -1
- package/dist/sqs/actions/deleteMessageBatch.js +12 -0
- package/dist/sqs/actions/deleteMessageBatch.js.map +1 -1
- package/dist/sqs/actions/getQueueAttributes.d.ts +2 -1
- package/dist/sqs/actions/getQueueAttributes.d.ts.map +1 -1
- package/dist/sqs/actions/getQueueAttributes.js.map +1 -1
- package/dist/sqs/actions/getQueueUrl.d.ts +3 -1
- package/dist/sqs/actions/getQueueUrl.d.ts.map +1 -1
- package/dist/sqs/actions/getQueueUrl.js +6 -2
- package/dist/sqs/actions/getQueueUrl.js.map +1 -1
- package/dist/sqs/actions/listQueueTags.d.ts +2 -1
- package/dist/sqs/actions/listQueueTags.d.ts.map +1 -1
- package/dist/sqs/actions/listQueueTags.js.map +1 -1
- package/dist/sqs/actions/listQueues.d.ts +2 -1
- package/dist/sqs/actions/listQueues.d.ts.map +1 -1
- package/dist/sqs/actions/listQueues.js.map +1 -1
- package/dist/sqs/actions/receiveMessage.d.ts +2 -1
- package/dist/sqs/actions/receiveMessage.d.ts.map +1 -1
- package/dist/sqs/actions/receiveMessage.js +38 -20
- package/dist/sqs/actions/receiveMessage.js.map +1 -1
- package/dist/sqs/actions/sendMessage.d.ts +2 -1
- package/dist/sqs/actions/sendMessage.d.ts.map +1 -1
- package/dist/sqs/actions/sendMessage.js +9 -18
- package/dist/sqs/actions/sendMessage.js.map +1 -1
- package/dist/sqs/actions/sendMessageBatch.d.ts +2 -1
- package/dist/sqs/actions/sendMessageBatch.d.ts.map +1 -1
- package/dist/sqs/actions/sendMessageBatch.js +3 -4
- package/dist/sqs/actions/sendMessageBatch.js.map +1 -1
- package/dist/sqs/sqsRouter.d.ts.map +1 -1
- package/dist/sqs/sqsRouter.js +0 -4
- package/dist/sqs/sqsRouter.js.map +1 -1
- package/dist/sqs/sqsStore.d.ts +8 -6
- package/dist/sqs/sqsStore.d.ts.map +1 -1
- package/dist/sqs/sqsStore.js +68 -63
- package/dist/sqs/sqsStore.js.map +1 -1
- package/dist/sqs/sqsTypes.d.ts +1 -0
- package/dist/sqs/sqsTypes.d.ts.map +1 -1
- package/dist/sqs/sqsTypes.js +1 -0
- package/dist/sqs/sqsTypes.js.map +1 -1
- 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 `
|
|
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:
|
|
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
|
-
|
|
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
|
|
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: `
|
|
912
|
+
#### Option 1: `fauxqs.dev` wildcard DNS (recommended for Docker image)
|
|
806
913
|
|
|
807
|
-
|
|
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
|
-
|
|
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: `
|
|
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-
|
|
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":"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;;
|
|
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
|
|
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
|
|
250
|
-
const
|
|
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":"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"}
|
package/dist/initConfig.d.ts
CHANGED
|
@@ -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>;
|
package/dist/initConfig.d.ts.map
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/initConfig.js
CHANGED
|
@@ -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
|
|
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
|
-
|
|
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);
|
package/dist/initConfig.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initConfig.js","sourceRoot":"","sources":["../src/initConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,KAAK,CAAC,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAMpD,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AAE5D,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IAC1C,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC;CACrC,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IAC1C,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC;CACrC,CAAC,CAAC;AAEH,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC;CAC3C,CAAC,CAAC;AAEH,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACxC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACxC,aAAa,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACtD,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;CACzC,CAAC,CAAC;AAIH,MAAM,UAAU,kBAAkB,CAAC,IAAa;IAC9C,OAAO,CAAC,CAAC,KAAK,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5C,OAAO,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,MAAwB,EACxB,QAAkB,EAClB,QAAkB,EAClB,OAAgB,EAChB,OAAyC;IAEzC,MAAM,EAAE,IAAI,EAAE,MAAM,
|
|
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;
|
|
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(
|
|
45
|
-
` <Bucket>${escapeXml(
|
|
46
|
-
` <Key>${escapeXml(
|
|
47
|
-
` <ETag>${escapeXml(
|
|
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":"
|
|
1
|
+
{"version":3,"file":"completeMultipartUpload.js","sourceRoot":"","sources":["../../../src/s3/actions/completeMultipartUpload.ts"],"names":[],"mappings":"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"}
|